{"version":3,"sources":["Lib/variables.js","Lib/utils.js","Lib/axios.js","Pages/Home/Section/renew/Popup.js","theme.js","Components/User/Mate/reserve.js","Components/Common/input.js","Components/Common/button.js","Components/modal.js","Pages/Home/Section/reserve.js","Pages/Home/Section/renew/MainNumber.js","Pages/Home/Section/renew/main.js","Pages/Home/Section/renew/video.js","Pages/Home/Section/renew/guide.js","Pages/Home/Section/renew/banner.js","Pages/Home/home.styled.js","Pages/Home/Section/renew/siteBanner.js","Pages/Home/Section/renew/numberCount.js","Pages/Home/Section/partners.js","Pages/Home/home.js","Lib/Api/app.js","Lib/Api/auth.js","Lib/middleware.js","Reducer/Modules/app.js","Reducer/Modules/auth.js","Pages/Home/home.container.js","Pages/NotFound.js","Pages/Auth/AuthPages/Login/login.styled.js","Components/Common/tab.js","Components/Common/text.js","Components/Common/container.js","Lib/regex.js","Components/Reserve/step.js","Components/Reserve/editStep.js","Components/newModal.js","Pages/Auth/AuthPages/Login/KakaoLogin.js","Pages/Auth/AuthPages/Login/login.js","Pages/Auth/AuthPages/Login/login.container.js","Pages/Auth/AuthPages/MainRegister/main.js","Pages/Auth/AuthPages/MainRegister/main.styled.js","Pages/Auth/AuthPages/MainRegister/main.container.js","Pages/Auth/AuthPages/Register/register.styled.js","Pages/Policy/Terms/terms.styled.js","Pages/Policy/Terms/terms.js","Pages/Policy/Terms/terms.container.js","Pages/Policy/Privacy/privacy.styled.js","Pages/Policy/Privacy/privacy.js","Pages/Policy/Privacy/privacy.container.js","Pages/Policy/Marketing/marketing.styled.js","Pages/Policy/Marketing/marketing.js","Pages/Policy/Marketing/marketing.container.js","Pages/Policy/Essential/Normal/normal.styled.js","Pages/Policy/Essential/Normal/normal.js","Pages/Policy/Essential/Normal/normal.container.js","Pages/Policy/Essential/Sensitive/sensitive.styled.js","Pages/Policy/Essential/Sensitive/sensitive.js","Pages/Policy/Essential/Sensitive/sensitive.container.js","Pages/Policy/Selective/Normal/normal.styled.js","Pages/Policy/Selective/Normal/normal.js","Pages/Policy/Selective/Normal/normal.container.js","Pages/Policy/Selective/Sensitive/sensitive.styled.js","Pages/Policy/Selective/Sensitive/sensitive.js","Pages/Policy/Selective/Sensitive/sensitive.container.js","Pages/Policy/Advertisement/advertisement.styled.js","Pages/Policy/Advertisement/advertisement.js","Pages/Policy/Advertisement/advertisement.container.js","Pages/Auth/AuthPages/Register/register.js","Pages/Auth/AuthPages/Register/register.container.js","Pages/Auth/AuthPages/Logout/index.js","Pages/Auth/AuthPages/Find/find.styled.js","Pages/Auth/AuthPages/Find/find.js","Pages/Auth/AuthPages/Find/find.container.js","Pages/Auth/AuthPages/Mate/mate.styled.js","Components/User/Mate/auth.js","Pages/Auth/AuthPages/Mate/mate.js","Pages/Auth/AuthPages/Mate/mate.container.js","Pages/Auth/AuthPages/Normal/normal.styled.js","Components/User/Normal/auth.js","Components/User/Normal/statistics.js","Components/User/Normal/navi.js","Pages/Auth/AuthPages/Profile/profile.styled.js","Pages/Guide/guide.styled.js","Pages/Auth/AuthPages/Profile/profile.js","Pages/Auth/AuthPages/Card/card.styled.js","Pages/Auth/AuthPages/Card/card.js","Pages/Auth/AuthPages/Card/cardInfoCheck.js","Pages/Auth/AuthPages/Profile/profileInfoCheck.js","Components/Columns/normal.js","Pages/Auth/AuthPages/Normal/normal.js","Pages/Auth/AuthPages/Normal/normal.container.js","Pages/Auth/AuthPages/Pending/pending.styled.js","Pages/Auth/AuthPages/Pending/pending.js","Pages/Auth/AuthPages/Pending/pending.container.js","Pages/Auth/auth.js","Pages/Auth/auth.styled.js","Pages/Auth/auth.container.js","Pages/Company/company.styled.js","Pages/Company/Section/fst.js","Pages/Company/Section/snd.js","Pages/Company/Section/trd.js","Pages/Company/Section/fth.js","Pages/Company/Section/fifth.js","Pages/Company/Section/sth.js","Pages/Company/company.js","Pages/Company/company.container.js","Pages/Faq/faq.styled.js","Pages/Faq/faq.js","Pages/Faq/faq.container.js","Pages/Product/ProductPages/Buy/buy.styled.js","Pages/Product/ProductPages/Buy/buy.js","Pages/Product/ProductPages/Buy/buy.container.js","Pages/Product/product.js","Pages/Product/product.container.js","Pages/Reserve/reserve.styled.js","Pages/Apply/Ready/ready.styled.js","Pages/LongtermCare/longTermCare.js","Pages/Success/success.js","Pages/Manual/Service/servicePDF.js","Pages/Manual/Service/service.js","Pages/Manual/Platform/platformPDF.js","Pages/Manual/Platform/platform.js","Pages/Manual/MateEduVideo/VideoList/Video1.js","Pages/Manual/MateEduVideo/VideoList/Video2.js","Pages/Manual/MateEduVideo/VideoList/Video3.js","Pages/Manual/MateEduVideo/VideoList/Video4.js","Pages/Manual/MateEduVideo/eduVideo.js","Pages/NewsEvent/List/list.styled.js","Pages/Review/List/list.styled.js","Components/Columns/user.js","Pages/NewsEvent/List/list.js","Lib/Api/newsEvent.js","Reducer/Modules/newsEvent.js","Pages/NewsEvent/List/list.container.js","Pages/NewsEvent/Info/info.styled.js","Components/Common/block.js","Pages/NewsEvent/Info/info.js","Pages/NewsEvent/Info/info.container.js","Pages/NewsEvent/index.js","Reducer/Modules/review.js","Lib/Api/review.js","Pages/Review/Add/add.styled.js","Components/Templates/Review/header.js","Pages/Review/Add/add.js","Pages/Review/Add/add.container.js","Pages/Review/List/list.js","Pages/Review/List/list.container.js","Pages/Review/MyList/mylist.styled.js","Pages/Review/MyList/mylist.js","Pages/Review/MyList/mylist.container.js","Pages/Apply/Ready/ready.js","Pages/Apply/Form/form.styled.js","Pages/Apply/Form/form.js","Pages/Apply/MateApplyForm/mateApply.styled.js","Pages/Apply/MateApplyForm/mateApply.js","Pages/Guide/Section/nav.js","Pages/Guide/Section/concept.js","Pages/Guide/Section/detail.js","Pages/Guide/Section/usage.js","Pages/Guide/Section/merit.js","Pages/Guide/Section/withmate.js","Pages/Guide/Section/banner.js","Pages/Guide/guide.js","Pages/Guide/guide.container.js","Pages/Nemt/nemt.styled.js","Pages/Nemt/nemt.js","Pages/Nemt/nemt.container.js","Pages/Reserve/patientListModal.js","Pages/Reserve/mateListModal.js","Pages/Reserve/cardListModal.js","Pages/Reserve/reserve.js","Pages/MetLife/MetLifeLanding/Section/reserve.js","Pages/MetLife/MetLifeLanding/Section/renew/main.js","Pages/MetLife/MetLifeLanding/Section/renew/guide.js","Pages/MetLife/MetLifeLanding/home.styled.js","Pages/MetLife/MetLifeLanding/Section/renew/numberCount.js","Pages/MetLife/MetLifeLanding/Section/partners.js","Pages/MetLife/MetLifeLanding/home.js","Pages/MetLife/MetLifeLanding/home.container.js","Pages/MetLife/MetLifeGuide/guide.styled.js","Pages/MetLife/MetLifeGuide/Section/nav.js","Pages/MetLife/MetLifeGuide/Section/concept.js","Pages/MetLife/MetLifeGuide/Section/detail.js","Pages/MetLife/MetLifeGuide/Section/usage.js","Pages/MetLife/MetLifeGuide/Section/merit.js","Pages/MetLife/MetLifeGuide/Section/withmate.js","Pages/MetLife/MetLifeGuide/Section/banner.js","Pages/MetLife/MetLifeGuide/guide.js","Pages/MetLife/MetLifeGuide/guide.container.js","Pages/MetLife/Review/review.styled.js","Pages/MetLife/Review/review.js","Pages/MetLife/Review/review.container.js","Pages/MetLife/NewsEvent/List/list.styled.js","Pages/MetLife/NewsEvent/List/list.js","Pages/MetLife/NewsEvent/List/list.container.js","Pages/MetLife/NewsEvent/Info/info.styled.js","Pages/MetLife/NewsEvent/Info/info.js","Pages/MetLife/NewsEvent/Info/info.container.js","Pages/MetLife/NewsEvent/index.js","Pages/MetLife/Faq/faq.styled.js","Pages/MetLife/Faq/faq.js","Pages/MetLife/Faq/faq.container.js","Pages/MetLife/MetLifePolicy/Privacy/privacy.styled.js","Pages/MetLife/MetLifePolicy/Privacy/privacy.js","Pages/MetLife/MetLifePolicy/Privacy/privacy.container.js","Pages/MetLife/MetLifePolicy/Terms/terms.styled.js","Pages/MetLife/MetLifePolicy/Terms/terms.js","Pages/MetLife/MetLifePolicy/Terms/terms.container.js","Pages/Big5Department/department.js","Components/Templates/Nav/nav.js","Components/Templates/Nav/nav.styled.js","Components/Templates/Nav/nav.container.js","Components/Templates/MetLifeNav/nav.js","Components/Templates/MetLifeNav/nav.styled.js","Components/Templates/MetLifeNav/nav.container.js","Components/Templates/Footer/footer.js","Components/Templates/Footer/footer.styled.js","Components/Templates/Footer/footer.container.js","App.js","serviceWorker.js","Reducer/index.js","index.js","Pages/Home/Section/renew/img/new-gov-care.png","Pages/Auth/AuthPages/Login/o2.png","Pages/Auth/AuthPages/Login/o.png","Pages/Success/login_bg.png","Pages/Success/checkpoint.png","Styles/index.js","Styles sync //.scss$"],"names":["USER","MATE","LOCAL","KAKAO","ASSIST","UNEMER","ScrollTop","prevProps","this","props","location","window","scrollTo","children","React","PureComponent","withRouter","currencyFormatter","currency","reg","n","test","replace","combineDateAndTime","date","time","minute","length","moment","format","toDate","colorParserByStatus","status","axios","defaults","withCredentials","client","create","headers","post","paramsSerializer","params","qs","stringify","indices","baseURL","interceptors","request","use","config","error","Promise","reject","response","localStorage","clear","reload","Popup","useState","popupData","setPopupData","isOpen","setIsOpen","setLoading","setError","VISITED_BEFORE_DATE","Number","getItem","VISITED_NOW_DATE","Date","getDate","useEffect","get","then","now","validPopups","data","filter","popup","startDate","endDate","isPublic","console","log","catch","handleClose","onRequestClose","style","modalStyles","PopupContainer","PopupImage","src","photo","alt","CloseStyle","Close","onClick","setItem","String","styled","div","img","span","overlay","backgroundColor","content","width","height","margin","padding","borderRadius","top","left","transform","fontSize","sizeHandler","size","ColorPallete","blue50","blue100","green100","dark100","dark80","dark70","dark60","dark50","dark30","dark20","dark10","NoCatchedList","list","detailHandler","onRefresh","FullContainer","Inner","NoCatchTitle","RefreshButton","ListConatiner","Array","isArray","map","item","serviceType","productInfo","usePro","useBasic","service","serviceName","name","key","_id","toString","patient","reserveDate","destination","shortStarting","call","onDetail","ReserveItem","usageTime","ItemContainer","TitleSection","ItemColumn","ItemTitle","ItemContents","color","ContentSection","DetailButton","EmptyList","p","hiddenMobile","DivisionLine","big","x_small","small","BorderDivisionLine","Pallete","WithmateLabelText","WithmateLabel","required","rest","WithmateInput","InputTextButton","WithamteInputWithButton","withValue","inputConfig","buttonName","onButton","BorderFlexWrapper","WithmateTextarea","TextArea","middle","WithmateSelect","FlexWrapper","withHalf","StyledHotFix","WithmateDatePicker","WithmateValue","WithmateValueTip","FullWidthButton","a","border","bg","HalfWidthButton","RadiusFullWidthButton","RadiusHalfWidthButton","ButtonWrapper","half","MateReserveInfoModal","visibleHandler","info","onCatch","Container","ModalBlock","ModalTitle","ModalCloseButtons","ModalLabel","ModalInfo","transport","proPrice","basicPrice","WhiteButton","ModalFlexbox","paddingLeft","sex","marginBottom","comment","MateCallStatusModal","onNext","starting","contact","type","getNextStatus","BlueButton","ShareCarRequestModal","inputHandler","onSave","ModalLargeBlock","FlexBox","className","placeholder","value","corp","onChange","ev","target","address","manager","FlexFullBox","message","EmergencyCorpSearchModal","keyword","TableWrapper","TableHeaderWrapper","FlexColumn","addr1","includes","addr2","index","TableRowWrapper","EmptyTable","CardModal","state","modal","componentDidMount","modalValidation","lastTime","JSON","parse","subtract","setState","onClose","onCloseToday","id","Top","Title","Bottom","display","justifyContent","paddingTop","marginTop","MessageRow","history","push","EndBottom","CloseToday","CloseNow","ManagerModal","pathname","EventModal","NoticeModal","onCloseToday2","ContentRow","textAlign","MetlifeModal","MetlifePopup","BottomImage","WarningRow","WarningContentRow","Reserve","reserveModal","reserveInfo","refreshing","fetchList","debounce","mateId","resolve","onCatchCall","auth","warning","put","callId","result","success","SpinWrapper","MainNumber","SwiperCore","Navigation","Pagination","Autoplay","UserMain","UserMainContainer","UserMainInnerContainer","TitleSticker","WithmateSpecRow","GooglePlayButton","open","marginRight","BottomSection","ReserveButton","CallButton","swal","fire","title","text","icon","confirmButtonText","cancelButtonText","showCancelButton","isConfirmed","document","href","HighLight","ButtonCommon","GPButtonCommon","br","UserVideoSection","VideoSectionContainer","VideoSectionInnerContainer","VideoArea","controls","loop","autoplay","muted","playsinline","h4","UserGuideSection","UserGuideContainer","UserGuideInnerContainer","UserGuideTitle","UserGuideStepWrapper","TextStep","ImgStep","MainStepRow","webArrow","mArrow","source","description","num","MainStep","MainStepWrapper","MainStepImageSection","MainStepTextSection","StepIndex","StepTitle","StepDescription","split","word","KeepBr","UserMainBanner","goPage","BannerContainer","Description","LinkButton","HomeStyledContainer","UserMainTitleDeco","PartnerContainer","PartnerInnerContainer","PartnerTitle","PartnerListRow","PartnerItem","IntroduceSection","MobileBr","Withmate","UserNumberCount","RollingContainer","NumberLabel","faHospitalUser","paddingRight","end","suffix","fontWeight","faUsers","faRectangleList","SatisfactionContainer","SatisfactionLabel","ReviewContainer","direction","spaceBetween","slidesPerView","breakpoints","768","pagination","clickable","navigation","modules","allowTouchMove","threshold","delay","speed","ReviewMainContainer","ReviewMainInnerContainer","ImgStyle","alignItems","e","label","WithmatePartners","baseUrl","fstRow","sndRow","trdRow","fthRow","ftfRow","paddingBottom","HomePage","searchModal","emergencyList","emergencyKeyword","requestModal","requestInfo","onShareRequest","userType","prevState","modifyUserInfo","imageUpload","file","formData","FormData","append","register","termsOfUse","privacyPolicy","essentialGeneral","essentialSensitive","selectiveGeneral","selectiveSensitive","selectiveAdvertise","password","code","identify","reason","marketing","connection","recommenderName","longtermCare","birth","email","urlSource","search","addPatient","relate","age","environment","caution","addCard","userName","cardName","cardNum","year","month","getCardInfo","cardId","fetchCard","deleteCard","modifyCard","getMateInfo","fetchMate","getPatientInfo","patientId","fetchPatient","deletePatient","modifyPatient","checkAuth","onAddLongTermCare","userId","createReduxThunk","SUCCESS","FAILURE","dispatch","refreshToken","decoded","jwt","decode","authAPI","accessToken","payload","meta","getUserInfo","appAPI","getServiceInfo","buyTicket","serviceReserve","getReserveList","getReserveInfo","page","reserveId","getContractPartners","acceptCall","cancelCall","completeCall","modifyReserve","cancelReserve","editViewType","createAction","input","editResrveForm","editContractForm","editBuyForm","editUserForm","editReserveDetailView","editReserveLatestView","editCallPage","appReducer","handleActions","action","produce","draft","loading","addTime","payMethod","_","isEmpty","l","count","userInfo","serviceInfo","reserveForm","report","reserve","unemergency","assist","contractForm","buyForm","mateCallPage","mateCallList","reserveList","mateReserveList","mateViewType","mateReserveLatest","mateReserveDetail","payHistory","partners","contractServices","login","logout","checkUserId","findPassword","modifyPassword","newPassword","withdrawlUser","withdrawlKakao","confirmEmailAuth","verificationCode","editAuth","editLoginForm","editRegisterForm","editAddPatientForm","editAddCardForm","editFindPasswordForm","editPasswordForm","initialState","allowed","ticket","loginForm","registerForm","agree","longTermCare","longTermCareInfo","patientList","patientInfo","addPatientForm","cardList","cardInfo","addCardForm","findForm","passwordForm","reNewPassword","infoForm","mateInfo","authReducer","region","gradePresence","gradeLevel","HomeContainer","prevList","fetchPartners","connect","app","editForm","editLatest","editDetail","NotFoundPage","verticalAlign","LoginStyledContainer","TabContainer","Tab","active","H1","h1","bold","h2","h3","h5","h6","isNotNumber","celluarValidate","phone","result2","lang","weekdays","weekdaysShort","EditStep1","inputDeepHandler","setDestination","setStarting","onTab","tab","deepType","onSex","disabled","undefined","Option","reserveHotFix","some","r","parseFloat","nativeEvent","preventDefault","fix","EditStep2","onModify","sick","onCalendar","meetDate","locale","inputReadOnly","disabledDate","current","add","holidayKR","isSolarHoliday","meetTime","numValue","meetMinute","usingPoint","RelativeWrapper","SigleButtonWrapper","SigleButton","AlertMessage","customStyles","zIndex","boxShadow","right","bottom","CustomModal","addEventListener","onCheckSize","visible","body","overflow","componentWillUnmount","removeEventListener","windowWidth","innerWidth","windowHeight","innerHeight","innerContent","getElementById","childrenId","clientHeight","maxWidth","onAfterOpen","CommonWithmateModal","onCancel","onOk","ModalInnerContainer","noClose","CloseButton","CommonModalTitle","CommonModalSubtitle","wordBreak","cancelText","confirmText","NoramlReserveEditModal","step","NewHandleReportModal","WideModalTitle","AlertText","care","medicine","nextSchedule","mateComment","doctorComment","NoReportModal","ReportMoal","timeline","selectedServiceName","ReportInfoBlock","createdAt","ReportDescription","complete","diff","receipt","mode","Item","start","arrived","careStart","careDone","treatmentStart","treatmentDone","careStart_second","careDone_second","treatmentStart_second","treatmentDone_second","careStart_third","careDone_third","treatmentStart_third","treatmentDone_third","backStart","onlyMobile","withSub","Kakao","KakaoLogin","onEdit","checkUser","gender","modalTitle","modalInfo","loginWithKakao","that","Auth","scope","setAccessToken","access_token","API","url","kakao_account","fail","viewToShow","ButtonWrap","ButtonWrap2","Component","Styled","KakaoLoginImg","KakaoLoginImgM","LoginComponent","onPressEnter","LoginPage","goBack","MainComponent","MainRegisterStyledContainer","MainRegisterPage","RegisterStyledContainer","TermsStyledContainer","component","TermsComponent","TermsContainer","isComponent","PrivacyStyledContainer","PrivacyComponent","PrivacyContainer","MarketingStyledContainer","MarketingComponent","class","MarketingContainer","NromalStyledContainer","EssentialComponent","NormalContainer","SensitiveComponent","SensitiveContainer","NormalComponent","SensitiveStyledContainer","AdvertisementStyledContainer","AdvertisementComponent","AdvertisementContainer","RegisterComponent","createdAuthCode","authCodeCheck","vaildated","handleCheckAllChange","checkAll","onSendMailHandler","event","alert","onCheckHandler","notification","pageOneValidator","pageSndValidator","onRegister","repassword","validator","isEmail","setPhoto","originFileObj","formCompleteStatus","valid","Agree","checked","AgreeLinkText","cursor","maxLength","marginLeft","borderColor","outline","Alert","RegisterPage","LogoutPage","StyledFindContainer","Find","editFindForm","onFind","setTimeout","FindPage","StyledMateContainer","UserPhoto","GuideRowWrapper","GuideRowWrapper2","GuideContainer","GuideDescriptionSectionTitle","GuideDescriptionSection","GuideDescriptionSectionContent","StudyButton","InputFilter","keywordHandler","FilterWrapper","CalleList","onRow","reserveCode","Mate","reservedFilter","onRowModal","rowDetail","handleReportModal","callList","syncStep","componentDidUpdate","match","d","reportId","noReportModal","updateBasicInfo","newPhoto","modify","editPassword","withdrawl","temp","tabHandler","onNextProcess","startOf","valueOf","unemergencyService","doReceipt","doStart","doArrive","doCare","doCareDone","doBackStart","doComplete","openReportForm","assistService","err","onAddReport","filteredList","toLowerCase","m","hidden","accept","files","click","URL","createObjectURL","doProducts","link","footer","flex","GuideBlock","GuideBlock2","Filter","MatePage","StyledNormalContainer","PointBoxRow","PointBox","PointBox2","PointBox3","PointContent","PointBoxTitle","PointTotal","PointHistoryRow","PointHistoryNameRow","PointHistoryValueRow","NoHistory","ReserveList","onDetailModal","onMateModal","onReport","onMate","mate","confirm","UserStatistics","pro","basic","UserContainer","UserNavigation","onPatientModal","NaviWrapper","ProfileStyledContainer","StyledContainer","GuideNavContainer","InnerContainer","GuideNavWrapper","NavTab","GuideConceptContainer","GuideConceptTitle","DesktopBr","MeritContainer","MeritHeaderWrapper","MeritCardList","MeritCardWrapper","MeritCardNumber","MeritCardTitleRow","MeritCardDesc","GuideDetailContainer","GuideDetailServiceCardWrapper","GuideDetailServiceCard","GuideCardImage","GuideCardSpecTitle","GuideCardSpecRow","GuideCardName","GuideCardType","GuideCardDescription","GuideDetailSubFlexWrapper","GuideDetailSubFlexbox","GuideUsingContainer","GuideUsingSubFlexWrapper","GuideUsageFlexbox","WithmateContainer","FlexDivWrapper","HiddenType","mHidden","BigSideBox","SmallSideBox","WithmateBg","WithmateTitle","position","background","WebkitOverflowScrolling","NewProfileComponent","onStarting","daum","Postcode","oncomplete","sido","sigungu","bname","roadAddress","buildingName","onProfile","ariaHideApp","trim","CardStyledContainer","onCard","YMWrapper","ModifyProfileComponent","stopPropagation","patientColumn","onDelete","dataIndex","align","render","EditOutlined","DeleteOutlined","cardColumn","slice","NormalUser","paidFilter","kakaoModal","selected","cancelModal","modifyModal","detailModalPage","reserveDetailModal","mateModal","serviceStatus","serviceModal","addHalfTime","totalPro","totalBasic","pointUsingHistory","pointAddHistory","couponAddHistory","patientModal","patientModifyModal","cardModal","cardModifyModal","appointedCode","patientModalOff","patientModifyModalOff","cardModalOff","cardModifyModalOff","fetchUserInfo","reserves","actionType","callStatus","onRematch","warn","confirmReserve","onViewReport","onReportMoal","onPatientModifyModal","onCardModal","onCardModifyModal","row","html","onFetchPatientInfo","onPatientModify","onPatientDelete","onCardModify","onCardDelete","kakaoUnlink","onAddCoupon","couponName","couponValue","handleChange","dataSource","columns","pageSize","Password","point","addedAt","leftValue","usedAt","CouponInput","review","starCount","score","renderStarIcon","onStarClick","NormalPage","StyledPendingContainer","Pending","PendingPage","dsipatch","AuthPage","exact","path","Login","Logout","Register","Main","Normal","NotFound","AuthStyledContainer","AuthPages","StyledCompanyContainer","FstBlock","SndBlock","TrdBlock","FthBlock","data-aos","data-aos-anchor-placement","data-aos-duration","CoCompany","StyledCoCompany","SthSection","Company","CompanyPage","StyledFaqContainer","Panel","FAQ","hash","to","scroll","el","scrollIntoView","behavior","block","expandIconPosition","bordered","expandIcon","isActive","rotate","header","rowIndex","PanelHeader","PanelContent","FAQContainer","StyledBuyContainer","BuyTicket","edit","payment","defaultPrice","totalPrice","IMP","init","request_pay","pg","pay_method","merchant_uid","amount","buyer_email","buyer_name","buyer_tel","m_redirect_url","rsp","productCode","paid_amount","productId","merchantUid","impUid","imp_uid","unit","paidStatus","paid","card_name","bankName","bank_name","cardQuota","card_quota","buyerEmail","discount","min","max","val","formatter","BuyTicketPage","ProductRenderPages","Buy","ProductPages","ReservePageContainer","ResrevePageInnerContainer","smallPadding","mobileBg","mobieBg","ReserveTopCover","isMain","TopBannerSubDescription","TopBannerSection","TopBannerText","TopBannerDescription","StepSectionContainer","StepButtonWrapper","StepButton","button","UnderLineText","StepArrow","NextStepGudieContainer","useBg","NextStepEmoj","NextStepTitle","NextStepArrowDown","ServiceSectionContainer","ServiceSectionTitle","ServiceSectionDescription","ServiceCardList","ServiceCardWrapper","on","ServiceCardButton","ServiceTypeSectionContainer","gap","ServiceTypeWrapper","ServiceTypeCardWrapper","ServiceTypeCardImg","ServiceTypeName","ServiceTypeDescription","NextStepButton","LastStepButton","FormContainer","FormWrapper","FormMainTitle","FormMainAlert","ServiceName","Sexes","LabelDescription","FlexFormWrapper","ResultFormWrapper","LabelAndValueRow","LabelValue","PriceValue","PriceDetailLabel","PriceDetailValue","DashAndText","CongraturateLogo","DoneResultWrapper","MobileStepImage","TopWrapper","BottomWrapper","MediumText","Noti","ApplyButton","FlexTitle","Contact","ContactTime","Link","LongTermCareComponent","onLongTermCare","SuccessComponent","backgroundImage","Background","Checkpoint","textAlgn","ServicePDF","iFrameHeight","frameBorder","ManualComponent","PlatformPDF","EduVideo1","allow","allowFullScreen","EduVideo2","EduVideo3","EduVideo4","StyledListContainer","HeaderButton","CountDisplay","CollapseContainer","CollapseHeader","CollapseTab","CollapseTabOnlyDesktop","PanelField","onlyDesktop","Star","ReviewTextWrapper","ReviewText","MyReview","ReviewMobileInfo","ReviewerName","newsEvent","Event","rowKey","newsEventList","addNewsEvent","url2","urlSource2","getNewsEventInfo","newsEventId","newsEventAPI","fetchNewsEvent","newsEventInfo","InfoContainer","StyledInfoContainer","InfoBlock","borderBottom","fetchInfo","Label","objectFit","whiteSpace","float","ValueBox","NewsEvent","List","Info","addReview","editReview","reviewId","reviewList","reviewPage","StyledAddContainer","WritePaper","FormHeader","FormTitle","FormSubtitle","FormTypeWrapper","FormTypeBlock","FormTypeDesc","FormDescription","StarImg","FormButtonWrapper","FormButton","FormTitleRowWrapper","FormRowTitle","CheckboxGroup","HeaderContainer","HeaderWrapper","HeaderBlock","HeaderTitle","HeaderDescription","MainImageWrapper","MainImage","CommentPageHeader","desc","AddComment","star","useAgain","corpSatisfied","corpSatisfiedReason","doctorSatisfied","doctorSatisfiedReason","hope","checkReserveValidation","reviewStatus","starHandler","nextValue","prevValue","onAddReview","PaddingDiv","AddCommentPageContainer","getReserve","PerPage","CommentList","total","pageCnt","renderStar","fill","getAutoTitle","rate","user","parseInt","reply","CommentListPage","TableContainer","TableHeader","TableTitle","TableSubTitle","TableBody","TableRow","TableField","desktopOnly","TableButton","EmptyWrapper","EmptyImage","EmptyText","MyReviewList","onReserve","done_list","substr","MyCommentListPage","fetchReserveList","ReadyApplyPage","LargeText","InputWrapper","InputLabel","StyledInput","FormImgWrapper","photoFst","photoSnd","fileFst","fileSnd","photoFstValue","photoSndValue","fileFstValue","fileSndValue","onSpin","MateFormPage","fetchForm","form","sendForm","careCareer","question","_info","MateApplyPage","handleTrimChange","onAddress","editApply","onSendApply","connection_etc","activity_area","drive","care_experience","insurance","privacy","license_photo","image","join","si","GuideNav","activeTab","GuideConcept","GuideDetail","spec1","spec2","spec3","spec4","GuideCard","GuideUsage","Merit","number","MeritCard","Block","bigMargin","noMargin","GuideBanner","GuideBannerContainer","GuidePage","reserveType","mobile_menu","onRoute","popoverVisible","NemtTitleWrapper","NemtTitle","NemtServiceWrapper","NemtServiceFlexWrapper","NemtBox","NemtColumnBox","NemtBoxTitle","NemtServiceImageWrapper","NemtInfobox","NemtDescription","NemtPage","NemtContainer","onCheck","PatientProfileListComponent","onChoose","reservedStarting","walk","onChangeCheckbox","onUpdatePatient","hideOnSinglePage","mateListColumn","sorter","b","localeCompare","photoURL","mateList","getList","onUpdateMate","CardListComponent","onUpdateCard","ReservationPage","big5","local","corpBy","zzz","alzhe","chooseMate","fetchItemList","prevParams","usePoint","onPrevSetting","patientProfileListModal","onPrevSetting2","mateListModal","onPrevSetting3","cardListModal","isOption","onSelectService","isZzz","isAlzhe","reservedDestination","reservedShortStarting","shortDestination","reservedShortDestination","goSecondStep","querySelector","getClientRects","scrollY","goNextButton","onDestination","stepHandler","currentStep","recommender","recommenderContact","guardContact","mateGender","reserveTime","reserveMinute","mateName","installment","totalFee","proDiscount","basicDiscount","product","stepHandler2","prevStep","patientProfileListModalOff","mateListModalOff","cardListModalOff","mateContact","emoj","logo","onSelect","CustomButtonWrapper","BannerSection","StepSection","NextGuider","ServiceSection","mBg","Card","ServiceTypeSection","ServiceTypeCard","BasicForm","MainForm","allowClear","readonly","hour","ConfirmForm","_transport","_service","_point","DoneForm","DepartmentComponent","isChecked","setIsChecked","Set","checkedItems","setCheckedItems","checkedItemHandler","box","has","delete","parentNode","checkHandler","NavComponent","menu","onMobileMenuHandler","activeClassName","NavStyledContainer","NavContainer","FooterComponent","darkMode","indexOf","startsWith","rel","FooterStyledContainer","FooterContainer","Modal","setAppElement","App","AOS","Home","Product","Privacy","Terms","Marketing","EssentialNormal","EssentialSensitive","SelectiveNormal","SelectiveSensitive","Advertisement","MateReady","MateApplyForm_v2","MateApplyForm","ReviewList","ReviewMylist","ReviewAdd","LongTermCare","Success","SManual","PManual","EduVideo","MetLife","MetLifeNemt","MetLifeReviewList","MetLifeNewsEvent","MetLifeFAQ","MetLifePrivacy","MetLifeTerms","Department","Nemt","Boolean","hostname","reducers","combineReducers","store","createStore","applyMiddleware","thunk","ReactDOM","navigator","serviceWorker","ready","registration","unregister","module","exports","req","require","keys","forEach","webpackContext","webpackContextResolve","__webpack_require__","o","Error","Object"],"mappings":"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","file":"static/js/main.7c1942a8.chunk.js","sourcesContent":["export const BASE_URL = 'https://server.withmate.kr';\nexport const DEV = false;\n\n// info\nexport const COMPANY_NANE = 'WITHMATE';\nexport const COMPANY_NANE_EN = 'withmate';\nexport const CONTACT_TEL = '010-xxxx-xxxx';\nexport const CONTACT_EMAIL = 'withmate@mail.com';\nexport const CUSTOMER_SERVICE = 'customer@withmate.com';\nexport const USER = 'user';\nexport const MATE = 'mate';\nexport const LOCAL = 'local';\nexport const KAKAO = 'kakao';\nexport const ASSIST = 'assist';\nexport const UNEMER = 'unemergency';\nexport const HAPPYCARE = 'happycare';\n","import React from 'react';\nimport { withRouter } from 'react-router-dom';\nimport moment from 'moment';\nimport { UNEMER } from '../Lib/variables';\n\nclass ScrollTop extends React.PureComponent {\n    componentDidUpdate(prevProps) {\n        if (this.props.location !== prevProps.location) {\n            window.scrollTo(0, 0);\n        }\n    }\n    render() {\n        return <>{this.props.children}</>;\n    }\n}\nexport default withRouter(ScrollTop);\n\nexport const currencyFormatter = currency => {\n    if (currency === 0) return 0;\n\n    var reg = /(^[+-]?\\d+)(\\d{3})/;\n    var n = currency + '';\n\n    while (reg.test(n)) n = n.replace(reg, '$1' + ',' + '$2');\n\n    return n;\n};\n\nexport const timeFormatter = ({ hour, minute = '00' }) => {\n    const year = moment().format('YYYY').toString();\n    const month = moment().format('MM').toString();\n    const date = moment().format('DD').toString();\n\n    if (hour && hour.length <= 1) hour = '0' + hour;\n    if (minute && minute.length <= 1) minute = '0' + minute;\n    return year + month + date + ' ' + hour + minute + '00';\n};\n\nexport const datetimeFormatter = ({ date, hour, minute = '00' }) => {\n    const year = moment(date).format('YYYY').toString();\n    const month = moment(date).format('MM').toString();\n    const _date = moment(date).format('DD').toString();\n\n    if (hour && hour.length <= 1) hour = '0' + hour;\n    if (minute && minute.length <= 1) minute = '0' + minute;\n    return year + month + _date + ' ' + hour + minute + '00';\n};\n\nexport const combineDateAndTime = ({ date, time, minute }) => {\n    if (time && time.length === 1) time = '0' + time;\n    if (minute && minute.length === 1) minute = '0' + minute;\n\n    return moment(moment(date).format('YYYYMMDD') + ' ' + time + minute + '00').toDate();\n};\n\nexport const serviceParser = service => {\n    switch (service) {\n        case 'assist':\n            return '병원 동행 Basic';\n        case 'unemergency':\n            return '병원 동행 Pro';\n        case 'happycare':\n            return '해피케어';\n    }\n};\n\nexport const getNextStatus = (type, status) => {\n    if (type === 'unemergency') {\n        switch (status) {\n            case '예약접수':\n                return '';\n            case '예약완료':\n                return '접선';\n            case '접선':\n                return '병원 출발';\n            case '병원 출발':\n                return '병원 도착';\n            case '병원 도착':\n                return '진료 시작';\n            case '진료 시작':\n                return '진료 종료';\n            case '진료 종료':\n                return '귀가 시작';\n            case '자택 출발':\n                return '서비스 종료';\n            case '서비스 종료':\n                return '종료된 서비스';\n        }\n    }\n\n    if (type === 'assist') {\n        switch (status) {\n            case '예약접수':\n                return '';\n            case '예약완료':\n                return '접선';\n            case '접선':\n                return '진료 시작';\n            case '진료 시작':\n                return '진료 종료';\n            case '진료 종료':\n                return '서비스 종료';\n            case '서비스 종료':\n                return '종료된 서비스';\n        }\n    }\n\n    if (type === 'happycare') {\n        switch (status) {\n            case '예약완료':\n                return '접선';\n            case '접선':\n                return '진료 시작';\n            case '진료 시작':\n                return '진료 종료';\n            case '진료 종료':\n                return '서비스 종료';\n            case '서비스 종료':\n                return '종료된 서비스';\n        }\n    }\n};\n\nexport const getTotal = (service, addTime, transport) => {\n    if (transport === 'withcar' && service === UNEMER) {\n        return getWithcarPrice(addTime);\n    } else if (service === UNEMER) {\n        return 20000 * addTime + (transport === 'own' ? 20000 : 0);\n    } else {\n        return 15000 * addTime;\n    }\n};\n\nexport const colorParserByStatus = status => {\n    switch (status) {\n        case '접수대기':\n            return '#161616';\n        case '예약접수':\n            return '#43b30c';\n        case '예약완료':\n            return '#3bc1ff';\n        case '서비스 종료':\n            return '#ff5500';\n        default:\n            return '#606060';\n    }\n};\n\nexport const getWithcarPrice = time => {\n    switch (time) {\n        case 1:\n            return 93500;\n        case 1.5:\n            return 93500 + 93500 / 2;\n        case 2:\n            return 143000;\n        case 2.5:\n            return 143000 + 93500 / 2;\n        case 3:\n            return 181500;\n        case 3.5:\n            return 181500 + 93500 / 2;\n        case 4:\n            return 220000;\n        case 4.5:\n            return 220000 + 93500 / 2;\n        case 5:\n            return 264000;\n        case 5.5:\n            return 264000 + 93500 / 2;\n        case 6:\n            return 308000;\n        case 6.5:\n            return 308000 + 93500 / 2;\n        case 7:\n            return 352000;\n        case 7.5:\n            return 352000 + 93500 / 2;\n        case 8:\n            return 396000;\n    }\n};\n","import axios from 'axios';\nimport qs from 'qs';\nimport { BASE_URL, DEV } from './variables';\naxios.defaults.withCredentials = true;\nconst client = axios.create({\n    headers: {\n        post: {\n            'Content-Type': 'application/x-www-form-urlencoded',\n        },\n        // withCredentials: true,\n    },\n    paramsSerializer: function (params) {\n        return qs.stringify(params, { indices: false });\n    },\n    baseURL: DEV === 'beta' ? `https://beta.server.withmate.kr` : DEV ? '/' : BASE_URL,\n});\n\nclient.interceptors.request.use(\n    config => {\n        // const token = localStorage.getItem('accessToken');\n        // config.headers = {\n        //     Authorization: `Bearer ${token}`,\n        // };\n        return config;\n    },\n    error => {\n        return Promise.reject(error);\n    },\n);\n// 인터셉터 설정\nclient.interceptors.response.use(\n    response => {\n        return response;\n    },\n    error => {\n        if (error && error.request && error.request.status === 403) {\n            localStorage.clear();\n            window.location.reload();\n        }\n        return error;\n    },\n);\n\nexport default client;\n","import React, { useEffect, useState } from 'react';\nimport Modal from 'react-modal';\nimport styled from 'styled-components';\nimport axios from '../../../../Lib/axios';\n\nconst Popup = () => {\n    const [popupData, setPopupData] = useState(null);\n    const [isOpen, setIsOpen] = useState(false);\n    const [loading, setLoading] = useState(true);\n    const [error, setError] = useState(null);\n\n    // 이전 방문 날짜 (로컬스토리지에서 가져오기, 숫자로 변환)\n    const VISITED_BEFORE_DATE = Number(localStorage.getItem('VisitCookie'));\n    // 현재 날짜 (일 단위)\n    const VISITED_NOW_DATE = new Date().getDate();\n\n    useEffect(() => {\n        // 팝업 오늘 하루 닫기 체크\n        if (VISITED_BEFORE_DATE === VISITED_NOW_DATE) {\n            setIsOpen(false);\n            setLoading(false);\n            return;\n        }\n\n        setLoading(true);\n        axios\n            .get('/v1/popup/list')\n            .then(response => {\n                const now = new Date();\n\n                // startDate와 endDate를 비교하여 유효한 팝업 필터링\n                const validPopups = response.data.data.filter(popup => {\n                    const startDate = new Date(popup.startDate);\n                    const endDate = new Date(popup.endDate);\n\n                    return popup.isPublic && now >= startDate && now <= endDate;\n                });\n\n                if (validPopups.length > 0) {\n                    setPopupData(validPopups[0]);\n                    setIsOpen(true);\n                } else {\n                    console.log('유효한 팝업이 없습니다.');\n                }\n                setLoading(false);\n            })\n            .catch(error => {\n                console.error('팝업 데이터를 불러오는 중 오류 발생:', error);\n                setError(error);\n                setLoading(false);\n            });\n    }, [VISITED_BEFORE_DATE, VISITED_NOW_DATE]);\n\n    // 오늘 하루 닫기\n    const handleDayClose = () => {\n        localStorage.setItem('VisitCookie', String(VISITED_NOW_DATE)); // 숫자 -> 문자열로 변환하여 저장\n        setIsOpen(false);\n    };\n\n    const handleClose = () => {\n        setIsOpen(false);\n    };\n\n    return (\n        <Modal isOpen={isOpen} onRequestClose={handleClose} style={modalStyles}>\n            {popupData && (\n                <PopupContainer>\n                    <PopupImage src={popupData.photo} alt='팝업 이미지' />\n                    <CloseStyle>\n                        <Close onClick={handleDayClose}>오늘 하루 닫기</Close>\n                        <Close onClick={handleClose}>닫기</Close>\n                    </CloseStyle>\n                </PopupContainer>\n            )}\n        </Modal>\n    );\n};\n\nexport default Popup;\n\nconst PopupContainer = styled.div`\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    padding: 5px;\n    background: #282828;\n    border-radius: 10px;\n    text-align: center;\n\n    @media (max-width: 768px) {\n        width: auto;\n        height: 400px;\n    }\n`;\n\nconst PopupImage = styled.img`\n    max-width: 100%;\n    height: 400px;\n    border-radius: 8px;\n\n    @media (max-width: 768px) {\n        width: auto;\n        height: 350px;\n    }\n`;\n\nconst CloseStyle = styled.div`\n    display: flex;\n    justify-content: space-between;\n    background-color: #282828;\n    width: 100%;\n    margin-top: 10px;\n    padding: 5px;\n    border-radius: 0 0 15px 15px;\n    color: #ffffff;\n    font-size: 13px;\n`;\n\nconst Close = styled.span`\n    cursor: pointer;\n`;\n\nconst modalStyles = {\n    overlay: {\n        backgroundColor: 'rgba(0, 0, 0, 0.5)',\n    },\n    content: {\n        width: '350px',\n        height: 'fit-content',\n        margin: 'auto',\n        padding: '0',\n        borderRadius: '10px',\n        top: '50%',\n        left: '50%',\n        transform: 'translate(-50%, -50%)',\n    },\n};\n","export const gray = ['#f8f9fa', '#f1f3f5', '#e9ecef', '#dee2e6', '#ced4da', '#adb5bd', '#868e96', '#495057', '#343a40', '#212529'];\nexport const cyan = ['#e3fafc', '#c5f6fa', '#99e9f2', '#66d9e8', '#3bc9db', '#22b8cf', '#15aabf', '#1098ad', '#0c8599', '#0b7285'];\nexport const red = ['#fff5f5', '#ffe3e3', '#ffc9c9', '#ffa8a8', '#ff8787', '#ff6b6b', '#fa5252', '#f03e3e', '#e03131', '#c92a2a'];\nexport const yellow = ['#fff9db', '#fff3bf', '#ffec99', '#ffe066', '#ffd43b', '#fcc419', '#fab005', '#f59f00', '#f08c00', '#e67700'];\nexport const blue = ['#e7f5ff', '#d0ebff', '#a5d8ff', '#74c0fc', '#4dabf7', '#339af0', '#228be6', '#1c7ed6', '#1971c2', '#1864ab'];\nexport const grape = ['#f8f0fc', '#f3d9fa', '#eebefa', '#e599f7', '#da77f2', '#cc5de8', '#be4bdb', '#ae3ec9', '#9c36b5', '#862e9c'];\nexport const borderColor = '#e8e8e8';\n\nexport const fontSize = {\n    b8: '8px',\n    b10: '10px',\n    b12: '12px',\n    b14: '14px',\n    b16: '16px',\n    b18: '18px',\n    b20: '20px',\n    b22: '22px',\n    b24: '24px',\n    b26: '26px',\n    b28: '28px',\n    b30: '30px',\n    b32: '32px',\n    b34: '34px',\n};\n\nexport const sizeHandler = size => {\n    return size + 'px';\n};\nexport const mainColor = '#3bc1ff';\nexport const mainBoldColor = '#4dabf7';\nexport const bgDarkColor = '#212529';\n\nconst ColorPallete = {\n    blue50: '#3bc1ff',\n    blue100: '#4dabf7',\n    green100: '#49a938',\n    dark100: '#161616',\n    dark80: 'rgba(0,0,0,0.8)',\n    dark70: 'rgba(0,0,0,0.7)',\n    dark60: '#a6a6a6',\n    dark50: '#e9e9e9',\n    dark30: '#ececec',\n    dark20: '#dddddd',\n    dark10: '#f5f5f5',\n};\n\nexport default ColorPallete;\n","import React from 'react';\nimport styled from 'styled-components';\nimport moment from 'moment';\nimport Popup from '../../../Pages/Home/Section/renew/Popup';\n\n// utils\nimport { sizeHandler, mainColor } from '../../../theme';\nimport { UNEMER } from '../../../Lib/variables';\n\nexport const NoCatchedList = ({ list, detailHandler, data, onRefresh }) => {\n    return (\n        <FullContainer>\n            {/* <Popup /> */}\n            <Inner>\n                <NoCatchTitle>\n                    실시간 예약 내역\n                    <RefreshButton onClick={onRefresh}>새로고침</RefreshButton>\n                </NoCatchTitle>\n                <ListConatiner>\n                    {list && Array.isArray(list) && list.length > 0 ? (\n                        list.map(item => {\n                            const serviceType =\n                                !item.productInfo || !item.productInfo.usePro || !item.productInfo.useBasic ? '' : item.service === UNEMER ? 'Pro' : 'Basic';\n                            const serviceName = (item.productInfo && item.productInfo.name && item.service && item.productInfo.name + serviceType) || '-';\n                            return (\n                                <ReserveItem\n                                    key={item._id.toString()}\n                                    serviceType={item.service}\n                                    service={serviceName}\n                                    name={item.patient}\n                                    reserveDate={moment(item.reserveDate).format('MM월 DD일 HH시mm분')}\n                                    destination={item.destination || '-'}\n                                    shortStarting={item.shortStarting || '-'}\n                                    status={item.call.status}\n                                    onDetail={() => {\n                                        detailHandler(item);\n                                    }}\n                                />\n                            );\n                        })\n                    ) : (\n                        <EmptyList>현재 예약내역이 없습니다.</EmptyList>\n                    )}\n                </ListConatiner>\n            </Inner>\n        </FullContainer>\n    );\n};\n\nconst ReserveItem = ({ service, name, reserveDate, shortStarting, destination, serviceType, status, onDetail, usageTime }) => (\n    <ItemContainer>\n        <TitleSection>\n            <ItemColumn>\n                <ItemTitle>서비스 명</ItemTitle>\n                <ItemContents style={{ color: mainColor }}>{service}</ItemContents>\n            </ItemColumn>\n        </TitleSection>\n\n        <ContentSection>\n            <ItemColumn>\n                <ItemTitle>환자 성함</ItemTitle>\n                <ItemContents>{name}</ItemContents>\n            </ItemColumn>\n            <ItemColumn>\n                <ItemTitle>병원 진료 예약 시간</ItemTitle>\n                <ItemContents>{reserveDate}</ItemContents>\n            </ItemColumn>\n            {serviceType === UNEMER && (\n                <ItemColumn>\n                    <ItemTitle>자택 주소</ItemTitle>\n                    <ItemContents>{shortStarting}</ItemContents>\n                </ItemColumn>\n            )}\n            <ItemColumn>\n                <ItemTitle>병원 주소</ItemTitle>\n                <ItemContents>{destination}</ItemContents>\n            </ItemColumn>\n        </ContentSection>\n\n        <ItemColumn>\n            <DetailButton onClick={onDetail}>\n                <span>자세히보기</span>\n            </DetailButton>\n        </ItemColumn>\n    </ItemContainer>\n);\n\nconst TitleSection = styled.div``;\n\nconst ContentSection = styled.div`\n    flex: 1;\n\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: flex-start;\n\n    width: 300px;\n    height: 316px;\n    overflow-y: scroll;\n\n    -ms-overflow-style: none; /* IE and Edge */\n    scrollbar-width: none; /* Firefox */\n    &::-webkit-scrollbar {\n        display: none; /* Chrome, Safari, Opera*/\n    }\n`;\n\nconst EmptyList = styled.p`\n    font-size: 20px;\n    letter-spacing: -1px;\n    color: rgba(0, 0, 0, 0.8);\n\n    margin-bottom: 16px;\n    position: relative;\n`;\n\nconst FullContainer = styled.div`\n    width: 100%;\n    height: 100vh;\n    background: linear-gradient(to top, #3bc1ff, #5b62f5);\n`;\n\nconst Inner = styled.div`\n    max-width: 1024px;\n    height: 100%;\n    max-height: 628px;\n\n    margin: 0 auto;\n    background-image: url('/assets/images/w_main.png');\n    background-size: cover;\n    background-repeat: no-repeat;\n    background-position: center;\n\n    padding-top: 120px;\n    padding-bottom: 120px;\n\n    @media (max-width: 1080px) {\n        padding-left: 16px;\n        padding-right: 16px;\n    }\n\n    @media (max-width: 768px) {\n        padding-top: 40px;\n        background: transparent;\n    }\n`;\n\nconst NoCatchTitle = styled.p`\n    font-size: 28px;\n    font-weight: bold;\n    letter-spacing: -1px;\n    color: rgba(0, 0, 0, 0.8);\n\n    margin-bottom: 24px;\n    position: relative;\n\n    @media (max-width: 480px) {\n        margin-bottom: 16px;\n    }\n`;\n\nconst RefreshButton = styled.span`\n    position: absolute;\n    margin-left: 8px;\n    top: 16px;\n\n    font-size: 14px;\n    color: #161616;\n    text-decoration: underline;\n    cursor: pointer;\n`;\n\nconst ListConatiner = styled.div`\n    display: flex;\n    align-items: flex-start;\n    justify-content: flex-start;\n    flex-wrap: wrap;\n\n    > div:nth-child(3n) {\n        margin-right: 0px;\n    }\n\n    @media (max-width: 768px) {\n        > div:nth-child(3n) {\n            margin-right: 16px;\n        }\n\n        > div:nth-child(2n) {\n            margin-right: 0px;\n        }\n    }\n\n    @media (max-width: 480px) {\n        > div:nth-child(3n) {\n            margin-right: 0px;\n        }\n\n        flex-direction: column;\n        justify-content: center;\n    }\n`;\n\nconst ItemContainer = styled.div`\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: center;\n\n    width: 340px;\n    height: 340px;\n    overflow: scroll;\n\n    -ms-overflow-style: none; /* IE and Edge */\n    scrollbar-width: none; /* Firefox */\n    &::-webkit-scrollbar {\n        display: none; /* Chrome, Safari, Opera*/\n    }\n\n    padding: 20px;\n    margin-bottom: 16px;\n    margin-right: 16px;\n\n    border-radius: 4px;\n    box-shadow: 2px 2px 10px 3px rgba(0, 0, 0, 0.1);\n    background-color: #ffffff;\n\n    @media (max-width: 768px) {\n        margin-bottom: 16px;\n    }\n\n    @media (max-width: 480px) {\n        width: 100%;\n        max-width: initial;\n        margin-right: 0px;\n    }\n`;\n\nconst ItemTitle = styled.p`\n    color: #a7a7a7;\n    font-size: ${sizeHandler(12)};\n    font-weight: bold;\n    margin: 0px;\n    padding: 0px;\n\n    @media (max-width: 430px) {\n        font-size: ${sizeHandler(11)};\n    }\n`;\n\nconst ItemContents = styled.p`\n    font-size: ${sizeHandler(14)};\n    font-weight: bold;\n    color: #606060;\n    margin: 0px;\n    padding: 0px;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n\n    @media (max-width: 430px) {\n        font-size: ${sizeHandler(12)};\n        margin-bottom: 4px;\n    }\n`;\n\nconst ItemColumn = styled.div`\n    width: 100%;\n    margin-bottom: 6px;\n\n    @media (max-width: 768px) {\n        display: ${props => (props.hiddenMobile ? 'none' : 'block')};\n        width: 100%;\n    }\n`;\n\nconst DetailButton = styled.div`\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    width: 100%;\n    height: 44px;\n\n    border-radius: 4px;\n    border: 1px solid ${mainColor};\n    cursor: pointer;\n    transition: all 0.3s;\n    text-align: center;\n\n    span {\n        font-size: ${sizeHandler(14)};\n        font-weight: bold;\n        color: ${mainColor};\n        text-align: center;\n\n        @media (max-width: 430px) {\n            font-size: ${sizeHandler(12)};\n        }\n    }\n\n    &:hover {\n        background-color: ${mainColor};\n        span {\n            color: white;\n        }\n    }\n\n    @media (max-width: 768px) {\n        width: 100%;\n        height: 34px;\n        font-size: ${sizeHandler(12)};\n    }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\nimport PropTypes from 'prop-types';\nimport { Input, Select, DatePicker, TimePicker } from 'antd';\n\nimport Pallete from '../../theme';\n\nconst DivisionLine = styled.div`\n    width: 100%;\n    height: ${props => (props.big ? '32px' : props.x_small ? '8px' : props.small ? '16px' : '24px')};\n\n    @media (max-width: 480px) {\n        height: ${props => (props.big ? '24px' : props.x_small ? '4px' : props.small ? '8px' : '16px')};\n    }\n`;\n\nconst BorderDivisionLine = styled.div`\n    width: 100%;\n    height: 1px;\n    background-color: ${Pallete.dark50};\n\n    margin-top: ${props => (props.x_small ? '4px' : props.small ? '8px' : '12px')};\n    margin-bottom: ${props => (props.x_small ? '4px' : props.small ? '8px' : '12px')};\n`;\n\nconst WithmateLabelText = styled.div`\n    font-size: 14px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.54;\n    letter-spacing: -0.1px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    margin-bottom: 4px;\n\n    > span {\n        color: ${Pallete.blue50};\n    }\n\n    @media (max-width: 480px) {\n        font-size: 12px;\n    }\n`;\n\nconst WithmateLabel = ({ children, required, ...rest }) => {\n    return (\n        <WithmateLabelText {...rest}>\n            {required && <span>* </span>}\n            {children}\n        </WithmateLabelText>\n    );\n};\n\nWithmateLabel.propTypes = {\n    required: PropTypes.bool,\n};\n\nconst WithmateInput = styled(Input)`\n    width: 100%;\n    height: 46px;\n    line-height: 44px;\n    ${props => props.small && `max-width: 102px; height: 32px; line-height: 29px;`}\n\n    margin-bottom: 0px;\n\n    color: ${Pallete.dark100};\n    font-size: 14px;\n    font-weight: normal;\n\n    border-radius: 4px;\n    border: 1px solid ${Pallete.dark50} !important;\n    background-color: #ffffff;\n\n    @media (max-width: 480px) {\n        font-size: 12px;\n        border: 1px solid ${Pallete.dark50} !important;\n    }\n\n    &.ant-input {\n        width: 100%;\n        height: 46px;\n        line-height: 44px;\n\n        margin-bottom: 0px;\n\n        color: ${Pallete.dark100};\n        font-size: 14px;\n        font-weight: normal;\n\n        border-radius: 4px;\n        border: 1px solid ${Pallete.dark50} !important;\n        background-color: #ffffff;\n\n        &::placeholder {\n            color: ${Pallete.dark60};\n            font-size: 14px;\n            font-weight: normal;\n        }\n\n        @media (max-width: 480px) {\n            font-size: 12px;\n            border: 1px solid ${Pallete.dark50} !important;\n\n            &::placeholder {\n                font-size: 12px;\n            }\n        }\n    }\n\n    &:focus {\n        border: 1px solid ${Pallete.blue100} !important;\n        transition: all 0.3s;\n        box-shadow: none;\n        outline: 0;\n    }\n\n    &:disabled {\n        background-color: ${Pallete.dark10};\n    }\n\n    &.ant-input-affix-wrapper-disabled {\n        background-color: #f5f5f5;\n    }\n\n    &.ant-input-affix-wrapper {\n        height: 46px;\n        line-height: 43px;\n        padding: 0px 11px;\n\n        ${props => props.small && `max-width: 102px; height: 32px; line-height: 29px;`}\n\n        .ant-input {\n            width: 100% !important;\n            height: 100%;\n            line-height: 43px;\n\n            color: ${Pallete.dark100};\n            font-size: 14px;\n            font-weight: normal;\n\n            border: 0px !important;\n            &::placeholder {\n                color: ${Pallete.dark60};\n                font-size: 14px;\n                font-weight: normal;\n            }\n\n            &:focus {\n                border: 1px solid ${Pallete.blue100} !important;\n                transition: all 0.3s;\n                box-shadow: none;\n                outline: 0;\n            }\n\n            @media (max-width: 480px) {\n                font-size: 12px;\n                line-height: 43px;\n\n                &:focus {\n                    border: 1px solid ${Pallete.dark50} !important;\n                }\n\n                &::placeholder {\n                    font-size: 12px;\n                }\n            }\n            &:disabled {\n                background-color: ${Pallete.dark10};\n            }\n        }\n\n        .ant-input-suffix {\n            font-size: 14px;\n            font-weight: normal;\n            font-stretch: normal;\n            text-align: right;\n            color: ${Pallete.dark100};\n\n            @media (max-width: 480px) {\n                font-size: 12px;\n            }\n        }\n    }\n`;\n\nconst InputTextButton = styled.span`\n    display: inline-block;\n    min-width: 50px;\n\n    height: 46px;\n    line-height: 44px;\n\n    padding-left: 6px;\n    padding-right: 6px;\n\n    font-size: 11px;\n    font-weight: normal;\n    color: ${Pallete.dark60};\n    text-align: center;\n    cursor: pointer;\n\n    transition: all 0.3s;\n\n    &:hover {\n        color: ${Pallete.dark100};\n    }\n`;\n\nconst InputValue = styled.div`\n    flex: 1;\n    height: 46px;\n    line-height: 44px;\n\n    padding-left: 11px;\n    padding-right: 11px;\n\n    font-size: 14px;\n    font-weight: normal;\n    color: ${props => (props.withValue ? Pallete.dark100 : Pallete.dark60)};\n`;\n\nconst WithamteInputWithButton = ({ inputConfig, buttonName, onButton }) => {\n    return (\n        <BorderFlexWrapper>\n            <WithmateInput {...inputConfig} />\n            {onButton && typeof onButton === 'function' && <InputTextButton onClick={onButton}>{buttonName}</InputTextButton>}\n        </BorderFlexWrapper>\n    );\n};\n\nWithamteInputWithButton.propTypes = {\n    inputConfig: PropTypes.object,\n    buttonName: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n    onButton: PropTypes.func,\n};\n\nconst HalfWithmateInput = styled(WithmateInput)`\n    width: calc(50% - 4px);\n`;\n\nconst WithmateTextarea = styled(Input.TextArea)`\n    &.ant-input {\n        width: 100%;\n        height: 240px;\n        ${props => props.middle && `min-height: 110px; max-height: 110px;`}\n        ${props => props.small && `min-height: 88px; max-height: 88px;`}\n\n        color: ${Pallete.dark100};\n        font-size: 14px;\n        font-weight: normal;\n\n        border-radius: 4px;\n        border: 1px solid ${Pallete.dark50} !important;\n        background-color: #ffffff;\n\n        margin-bottom: 8px;\n        padding: 8px;\n\n        &::placeholder {\n            color: ${Pallete.dark60};\n            font-size: 14px;\n            font-weight: normal;\n        }\n\n        @media (max-width: 480px) {\n            font-size: 12px;\n            &::placeholder {\n                font-size: 12px;\n            }\n        }\n\n        &:focus {\n            border: 1px solid ${Pallete.blue100} !important;\n            transition: all 0.3s;\n            box-shadow: none;\n            outline: 0;\n        }\n\n        &:disabled {\n            background-color: ${Pallete.dark10};\n        }\n\n        @media (max-width: 480px) {\n            min-height: 140px;\n            ${props => props.middle && `min-height: 110px; max-height: 110px;`}\n            ${props => props.small && `min-height: 88px; max-height: 88px;`}\n\n            padding: 4px 11px;\n            border: 1px solid ${Pallete.dark50} !important;\n\n            &:focus {\n                border: 1px solid ${Pallete.dark50} !important;\n            }\n        }\n    }\n`;\n\nconst WithmateSelect = styled(Select)`\n    &.ant-select {\n        // margin-bottom: 8px;\n        width: 100%;\n        height: 46px;\n        border-radius: 4px;\n\n        .ant-select-selector {\n            height: 100%;\n        }\n    }\n\n    &.ant-select .ant-select-selector {\n        height: 100% !important;\n        line-height: 43px;\n    }\n\n    &.ant-select-single .ant-select-selector .ant-select-selection-item,\n    &.ant-select-single .ant-select-selector .ant-select-selection-placeholder {\n        line-height: 43px;\n    }\n\n    &.ant-select-single .ant-select-selector .ant-select-selection-item,\n    &.ant-select-single .ant-select-selector .ant-select-selection-placeholder {\n        line-height: 43px;\n    }\n\n    &.ant-select:not(.ant-select-customize-input) .ant-select-selector {\n        border: 1px solid #e9e9e9;\n        border-radius: 4px;\n    }\n\n    .ant-select-selector .ant-select-selection-search-input {\n        height: 100%;\n        line-height: 43px;\n    }\n\n    &.ant-select.ant-select-enabled {\n        width: 100%;\n    }\n\n    .ant-select-selection.ant-select-selection--single {\n        border: 1px solid ${Pallete.dark50} !important;\n        width: 100%;\n        height: 46px;\n        border-radius: 4px;\n    }\n\n    .ant-select-selection__rendered {\n        height: 100%;\n        width: 100%;\n        display: flex;\n        align-items: center;\n\n        .ant-select-selection__placeholder {\n            font-size: 14px;\n            font-weight: normal;\n            font-stretch: normal;\n            text-align: left;\n            color: ${Pallete.dark60};\n\n            @media (max-width: 480px) {\n                font-size: 12px;\n            }\n        }\n    }\n\n    .ant-select-selection-selected-value {\n        min-width: 50%;\n        font-size: 14px;\n        font-weight: normal;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.46;\n        text-align: left;\n        color: ${Pallete.dark100};\n\n        @media (max-width: 480px) {\n            font-size: 12px;\n        }\n    }\n\n    &.ant-select-disabled {\n        width: 100%;\n    }\n`;\n\nconst HalfWithmateSelect = styled(WithmateSelect)`\n    width: calc(50% - 4px);\n`;\n\nconst FlexWrapper = styled.div`\n    display: flex;\n    align-items: center;\n\n    ${props =>\n        props.withHalf\n            ? `\n        > div, p {\n            width: calc(50% - 4px) !important;\n            margin-right: 8px;\n        }\n    `\n            : ''}\n\n    > div:last-child {\n        margin-right: 0px;\n    }\n`;\n\nconst BorderFlexWrapper = styled(FlexWrapper)`\n    border: 1px solid ${Pallete.dark50};\n    border-radius: 4px;\n    overflow: hidden;\n\n    input.ant-input {\n        margin-bottom: 0px !important;\n        border: 0px !important;\n    }\n`;\n\nconst FlexDiv = styled.div`\n    width: calc(50% - 4px);\n`;\n\nconst StyledHotFix = styled.p`\n    font-size: 11px;\n    color: ${Pallete.blue100};\n    font-weight: normal;\n\n    margin-bottom: 4px;\n`;\n\nconst WithmateDatePicker = styled(DatePicker)`\n    &.ant-picker {\n        width: 100%;\n        height: 46px;\n        line-height: 43px;\n        border: 1px solid #e9e9e9;\n        padding: 0px;\n        padding-left: 11px;\n        padding-right: 11px;\n        border-radius: 4px;\n\n        > div {\n            height: 100%;\n        }\n\n        > div > input {\n            height: 100%;\n            font-size: 14px;\n            font-weight: normal;\n            font-stretch: normal;\n            font-style: normal;\n            line-height: 1.46;\n            text-align: left;\n            color: rgba(0, 0, 0, 0.7);\n\n            @media (max-width: 480px) {\n                font-size: 12px;\n            }\n        }\n    }\n`;\n\nconst WithmateTimepicker = styled(TimePicker)`\n    &.ant-picker {\n        width: 100%;\n        height: 46px;\n        line-height: 43px;\n        border: 1px solid #e9e9e9;\n        padding: 0px;\n        padding-left: 11px;\n        padding-right: 11px;\n        border-radius: 4px;\n\n        > div {\n            height: 100%;\n        }\n\n        > div > input {\n            height: 100%;\n            font-size: 14px;\n            font-weight: normal;\n            font-stretch: normal;\n            font-style: normal;\n            line-height: 1.46;\n            text-align: left;\n            color: rgba(0, 0, 0, 0.7);\n\n            @media (max-width: 480px) {\n                font-size: 12px;\n            }\n        }\n    }\n`;\n\nconst WithmateValue = styled.p`\n    margin-bottom: 4px;\n\n    font-size: 13px;\n    color: ${Pallete.blue50};\n    font-weight: bold;\n`;\n\nconst WithmateValueTip = styled.p`\n    margin-bottom: 0px;\n\n    font-size: 11px;\n    color: ${Pallete.dark60};\n    font-weight: normal;\n`;\n\nexport {\n    BorderDivisionLine,\n    WithamteInputWithButton,\n    DivisionLine,\n    WithmateLabel,\n    WithmateInput,\n    HalfWithmateInput,\n    WithmateTextarea,\n    WithmateSelect,\n    FlexWrapper,\n    FlexDiv,\n    HalfWithmateSelect,\n    StyledHotFix,\n    WithmateDatePicker,\n    WithmateValue,\n    WithmateValueTip,\n    WithmateTimepicker,\n};\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport Pallete from '../../theme';\n\nconst FullWidthButton = styled.a`\n    display: block;\n    width: 100%;\n    height: 40px;\n    line-height: 40px;\n    border-radius: 4px;\n\n    cursor: pointer;\n\n    font-size: 13px;\n    font-weight: normal;\n    text-align: center;\n    font-weight: bold;\n\n    ${props =>\n        props.border\n            ? `\n        border: 1px solid ${Pallete.dark50};\n        color: ${Pallete.blue50}\n    `\n            : ''}\n\n    background-color: ${props => (props.bg ? props.bg : Pallete.blue50)};\n    color: #ffffff;\n`;\n\nconst HalfWidthButton = styled(FullWidthButton)`\n    width: calc(50% - 4px);\n`;\n\nconst RadiusFullWidthButton = styled(FullWidthButton)`\n    max-width: 280px;\n    height: 72px;\n    line-height: 72px;\n    border-radius: 50vh;\n\n    font-size: 22px;\n    font-weight: bold;\n    letter-spacing: -0.5px;\n`;\n\nconst RadiusHalfWidthButton = styled(RadiusFullWidthButton)`\n    max-width: calc(50% - 4px);\n    margin-right: 8px;\n\n    @media (max-width: 480px) {\n        width: 100%;\n        max-width: 280px;\n\n        height: 55px;\n        line-height: 55px;\n        font-size: 16px;\n        letter-spacing: -0.1px;\n\n        margin-right: 0px;\n        margin-bottom: 8px;\n    }\n`;\n\nconst ButtonWrapper = styled.div`\n    width: 100%;\n\n    display: flex;\n    align-items: center;\n\n    ${props =>\n        props.half\n            ? `\n        > a {\n            width: calc(50% - 4px);\n        }\n        > a:nth-child(1) {\n            margin-right: 8px;\n        }\n    `\n            : ''}\n`;\n\nexport { FullWidthButton, HalfWidthButton, ButtonWrapper, RadiusFullWidthButton, RadiusHalfWidthButton };\n","import React from 'react';\nimport { withRouter } from 'react-router';\nimport moment from 'moment';\nimport styled from 'styled-components';\nimport { Input } from 'antd';\n\nimport { DivisionLine } from '../Components/Common/input';\nimport { FullWidthButton } from '../Components/Common/button';\n\n// theme\nimport Pallete, { mainColor } from '../theme';\n\n// utils\nimport { serviceParser, getNextStatus, getTotal, currencyFormatter } from '../Lib/utils';\n\nexport default class Modal extends React.PureComponent {\n    state = {\n        modal: false,\n    };\n\n    componentDidMount = () => {\n        const now = moment().valueOf();\n        const begin = moment('20220923 180000').valueOf(); // 02. 24 ~\n        const end = moment('20220925 180000').valueOf(); // ~ 03. 31\n\n        if (now > begin && now < end) {\n            this.modalValidation();\n        }\n    };\n\n    modalValidation = () => {\n        const { lastTime } =\n            localStorage.getItem('modal') && typeof JSON.parse(localStorage.getItem('modal')) === 'object' && JSON.parse(localStorage.getItem('modal')) !== null\n                ? JSON.parse(localStorage.getItem('modal'))\n                : {\n                      lastTime: moment().subtract('day', 1).toDate(),\n                  };\n\n        if (!lastTime || moment(lastTime).format('YYYY-MM-DD') !== moment().format('YYYY-MM-DD')) {\n            this.setState({ modal: true });\n        }\n    };\n\n    onClose = () => {\n        localStorage.setItem('modal', null);\n        this.setState({ modal: false });\n    };\n\n    onCloseToday = () => {\n        localStorage.setItem('modal', JSON.stringify({ lastTime: moment().toDate() }));\n        this.setState({ modal: false });\n    };\n\n    render() {\n        if (this.state.modal) {\n            return (\n                <Container\n                    id='event-popup'\n                    onClick={e => {\n                        if (e.target.id === 'event-popup') {\n                            this.onClose();\n                        }\n                    }}\n                >\n                    <ModalBlock\n                        onClick={e => {\n                            e.preventDefault();\n                        }}\n                    >\n                        <Top style={{ marginBottom: '16px' }}>\n                            <Title>서버 업데이트 대비 서버점검 안내</Title>\n                        </Top>\n                        <Bottom>\n                            <ContentRow>2022. 09. 23 더 편리한 서비스</ContentRow>\n                            <ContentRow>제공을 위헤 업데이트를 진행할 예정입니다.</ContentRow>\n                            <ContentRow>아래 명시한 기간동안 정상적인 서비스 이용에 어려움이</ContentRow>\n                            <ContentRow>있을수 있습니다. 성원에 보답하는 위드메이트가 되겠습니다.</ContentRow>\n\n                            <WarningRow>※ 서버점검 기간</WarningRow>\n                            <WarningContentRow>22. 09. 23 18:00 ~ 22. 09. 25 18:00</WarningContentRow>\n\n                            <div style={{ height: '8px' }} />\n                            <MessageRow>국민 모두 힘을 합치면 코로나 사태 극복 가능합니다.</MessageRow>\n                            <MessageRow>코로나19 극복, 위드메이트가 앞장서겠습니다.</MessageRow>\n                            {/* <BottomImage /> */}\n                        </Bottom>\n                        <EndBottom>\n                            <CloseToday>\n                                <span onClick={this.onCloseToday}>\n                                    <i className='fas fa-check' />\n                                </span>\n                                <span onClick={this.onCloseToday}>오늘은 그만보기</span>\n                            </CloseToday>\n                            <CloseNow onClick={this.onClose}>닫기</CloseNow>\n                        </EndBottom>\n                    </ModalBlock>\n                </Container>\n            );\n        } else {\n            return <></>;\n        }\n    }\n}\n\nexport class RadiationModal extends React.PureComponent {\n    state = {\n        modal: false,\n    };\n\n    componentDidMount = () => {\n        // localStorage.clear();\n        // const now = moment().valueOf();\n        // const begin = moment('20200223 235959').valueOf(); // 02. 24 ~\n        // const end = moment('20200331 190000').valueOf(); // ~ 03. 31\n\n        // if (now > begin && now < end) {\n        //     this.modalValidation();\n        // }\n        this.modalValidation();\n    };\n\n    modalValidation = () => {\n        const { lastTime } =\n            localStorage.getItem('radiation-modal') &&\n            typeof JSON.parse(localStorage.getItem('radiation-modal')) === 'object' &&\n            JSON.parse(localStorage.getItem('radiation-modal')) !== null\n                ? JSON.parse(localStorage.getItem('radiation-modal'))\n                : {\n                      lastTime: moment().subtract('day', 1).toDate(),\n                  };\n\n        if (!lastTime || moment(lastTime).format('YYYY-MM-DD') !== moment().format('YYYY-MM-DD')) {\n            this.setState({ modal: true });\n        }\n    };\n\n    onClose = () => {\n        localStorage.setItem('radiation-modal', null);\n        this.setState({ modal: false });\n    };\n\n    onCloseToday = () => {\n        localStorage.setItem('radiation-modal', JSON.stringify({ lastTime: moment().toDate() }));\n        this.setState({ modal: false });\n    };\n\n    render() {\n        if (this.state.modal) {\n            return (\n                <Container id='event-popup'>\n                    <ModalBlock>\n                        <Top>\n                            <Title>투석 & 방사선 치료 동행 서비스 안내</Title>\n                        </Top>\n                        <Bottom>\n                            <BottomImage />\n                            <ContentRow style={{ textAlign: 'center' }}>투석 & 방사선 치료 병원 동행 서비스가 필요하신 분들은</ContentRow>\n                            <ContentRow style={{ textAlign: 'center' }}>고객센터 전화를 통해 서비스 상담을 받으실 수 있습니다.</ContentRow>\n                            <MessageRow style={{ textAlign: 'center', cursor: 'pointer' }}>\n                                <a href='tel:070-4300-9075'>고객센터 번호 ☞ 070-4300-9075</a>\n                            </MessageRow>\n                        </Bottom>\n                        <EndBottom>\n                            <CloseToday>\n                                <span onClick={this.onCloseToday}>\n                                    <i className='fas fa-check' />\n                                </span>\n                                <span onClick={this.onCloseToday}>오늘은 그만보기</span>\n                            </CloseToday>\n                            <CloseNow onClick={this.onClose}>닫기</CloseNow>\n                        </EndBottom>\n                    </ModalBlock>\n                </Container>\n            );\n        } else {\n            return <></>;\n        }\n    }\n}\n\n// class EventModal extends React.PureComponent {\n//     state = {\n//         modal: false,\n//     };\n\n//     componentDidMount = () => {\n//         this.modalValidation();\n//     };\n\n//     modalValidation = () => {\n//         const { lastTime } =\n//             localStorage.getItem('radiation-modal') &&\n//             typeof JSON.parse(localStorage.getItem('radiation-modal')) === 'object' &&\n//             JSON.parse(localStorage.getItem('radiation-modal')) !== null\n//                 ? JSON.parse(localStorage.getItem('radiation-modal'))\n//                 : {\n//                       lastTime: moment().subtract('day', 1).toDate(),\n//                   };\n\n//         if (!lastTime || moment(lastTime).format('YYYY-MM-DD') !== moment().format('YYYY-MM-DD')) {\n//             this.setState({ modal: true });\n//         }\n//     };\n\n//     onClose = () => {\n//         localStorage.setItem('radiation-modal', null);\n//         this.setState({ modal: false });\n//     };\n\n//     onCloseToday = () => {\n//         localStorage.setItem('radiation-modal', JSON.stringify({ lastTime: moment().toDate() }));\n//         this.setState({ modal: false });\n//     };\n\n//     render() {\n//         if (this.state.modal) {\n//             return (\n//                 <Container id='event-popup'>\n//                     <ModalBlock>\n//                         <Top>\n//                             <Title>위드메이트, 이제 포항에서 만나보세요!</Title>\n//                         </Top>\n//                         <Bottom>\n//                             <BottomImage />\n//                             <ContentRow>\n//                                 위드메이트가 <span>한동대학교 ICT 창업팀</span>과 협력하여 포항시를 시작으로 경상권 정식 서비스를 시작합니다. 경상권 서비스 시작\n//                                 전, <span>포항시 대상 시범 서비스</span>와 <span>사전 수요 조사</span>가 진행됩니다. (회원 가입 완료 고객님 대상)\n//                             </ContentRow>\n//                             <br />\n//                             <ContentRow>\n//                                 서비스 신청 시 '자택 주소' 또는 '병원 주소'가 <span>'포항시'에 해당하는 모든 고객님께 30% 할인 혜택</span>이 적용되며, 설문에\n//                                 참여해주시는 모든 경상권 거주 고객님께 <span>20% 할인 쿠폰</span>과 추첨을 통한 <span>스타벅스 기프티콘</span>을 드립니다.{' '}\n//                             </ContentRow>\n\n//                             <div style={{ marginTop: '16px', marginBottom: '16px' }}>\n//                                 <MessageRow>\n//                                     <a\n//                                         onClick={() => {\n//                                             this.onClose();\n//                                             this.props.history.push('/user/register');\n//                                         }}\n//                                     >\n//                                         설문 전 회원가입 먼저 하기 {'>'}\n//                                     </a>\n//                                 </MessageRow>\n//                                 <MessageRow>\n//                                     <a\n//                                         href='https://docs.google.com/forms/d/e/1FAIpQLSfX6N8E0-fPVHXDFQN0iKUCjpZNP_cHl4e1kDRwEORk9NmtCw/viewform'\n//                                         target='_blank'\n//                                     >\n//                                         쿠폰(설문 조사) 링크 {'>'}\n//                                     </a>\n//                                 </MessageRow>\n//                             </div>\n\n//                             <ContentRow style={{ textIndent: '0px' }}>여러분의 소중한 지인에게 병원 동행 서비스를 알려주세요!</ContentRow>\n//                         </Bottom>\n//                         <EndBottom>\n//                             <CloseToday>\n//                                 <span onClick={this.onCloseToday}>\n//                                     <i className='fas fa-check' />\n//                                 </span>\n//                                 <span onClick={this.onCloseToday}>오늘은 그만보기</span>\n//                             </CloseToday>\n//                             <CloseNow onClick={this.onClose}>닫기</CloseNow>\n//                         </EndBottom>\n//                     </ModalBlock>\n//                 </Container>\n//             );\n//         } else {\n//             return <></>;\n//         }\n//     }\n// }\n\nexport const MateReserveInfoModal = ({ visibleHandler, info, onCatch }) => {\n    const serviceType = !info.productInfo || !info.productInfo.usePro || !info.productInfo.useBasic ? '' : info.service === 'unemergency' ? 'Pro' : 'Basic';\n    const serviceName = (info.productInfo && info.productInfo.name && info.service && info.productInfo.name + serviceType) || '-';\n\n    return (\n        <Container>\n            <ModalBlock>\n                <ModalTitle>\n                    예약 상세내용\n                    <ModalCloseButtons onClick={visibleHandler} src='/assets/images/close.png' alt='close-button' />\n                </ModalTitle>\n                <ModalLabel>서비스명</ModalLabel>\n                <ModalInfo>{serviceName}</ModalInfo>\n                <ModalLabel>병원 진료 예약 시간</ModalLabel>\n                <ModalInfo>{moment(info.reserveDate).format('YYYY년 MM월 DD일, HH시 mm분')}</ModalInfo>\n                <ModalLabel>총 예상 소요 시간</ModalLabel>\n                <ModalInfo>{info.usageTime || 0}시간</ModalInfo>\n                {info && info.shortStarting ? (\n                    <>\n                        <ModalLabel>자택 주소</ModalLabel>\n                        <ModalInfo>{info.shortStarting}</ModalInfo>\n                    </>\n                ) : null}\n                <ModalLabel>병원 주소</ModalLabel>\n                <ModalInfo>{info.destination}</ModalInfo>\n                <ModalLabel>이동수단</ModalLabel>\n                <ModalInfo>\n                    {info.transport && info.transport === 'withcar'\n                        ? '차량 호출'\n                        : info.transport && info.transport === 'own'\n                        ? '본인소유 자차 이용'\n                        : '대중교통(택시 등) 이용'}\n                </ModalInfo>\n                <ModalLabel>예상 비용</ModalLabel>\n                <ModalInfo>\n                    {(info.transport && info.transport === 'own' ? 20000 : 0) +\n                        (info.productInfo &&\n                            info.service &&\n                            (info.service === 'unemergency' ? info.productInfo.proPrice : info.productInfo.basicPrice ? info.productInfo.basicPrice : 0) *\n                                info.usageTime)}\n                    원\n                </ModalInfo>\n\n                <WhiteButton onClick={onCatch}>예약 접수하기</WhiteButton>\n                <ModalFlexbox>\n                    <div>\n                        <ModalLabel>이용자 성함</ModalLabel>\n                        <ModalInfo>{info.patient}</ModalInfo>\n                    </div>\n                    <div>\n                        <ModalLabel style={{ paddingLeft: '0px' }}>이용자 성별</ModalLabel>\n                        <ModalInfo style={{ paddingLeft: '0px' }}>{info.sex}</ModalInfo>\n                    </div>\n                </ModalFlexbox>\n                <ModalFlexbox>\n                    <div>\n                        <ModalLabel>추가 요청 사항</ModalLabel>\n                        <ModalInfo style={{ marginBottom: '24px' }}>{info.comment || '-'}</ModalInfo>\n                    </div>\n                </ModalFlexbox>\n            </ModalBlock>\n        </Container>\n    );\n};\n\nexport const MateCallStatusModal = ({ visibleHandler, info, onNext }) => {\n    const serviceType = !info.productInfo || !info.productInfo.usePro || !info.productInfo.useBasic ? '' : info.service === 'unemergency' ? 'Pro' : 'Basic';\n    const serviceName = (info.productInfo && info.productInfo.name && info.service && info.productInfo.name + serviceType) || '-';\n\n    return (\n        <Container>\n            <ModalBlock>\n                <ModalTitle>\n                    예약 상세내용 및 관리\n                    <ModalCloseButtons onClick={visibleHandler} src='/assets/images/close.png' alt='close-button' />\n                </ModalTitle>\n                <ModalLabel>서비스 명</ModalLabel>\n                <ModalInfo>{serviceName}</ModalInfo>\n                <ModalLabel>병원 진료 예약 시간</ModalLabel>\n                <ModalInfo>{moment(info.reserveDate).format('YYYY년 MM월 DD일, HH시 mm분')}</ModalInfo>\n                <ModalLabel>총 예상 소요 시간</ModalLabel>\n                <ModalInfo>{info.usageTime || 0}시간</ModalInfo>\n                <ModalLabel>병원 주소</ModalLabel>\n                <ModalInfo>{info.destination}</ModalInfo>\n                {info.service === 'unemergency' && (\n                    <>\n                        <ModalLabel>이동 수단</ModalLabel>\n                        <ModalInfo>{info.transport === 'own' ? '자차 이용' : info.transport === 'common' ? '대중교통' : '-'}</ModalInfo>\n                    </>\n                )}\n                {info && info.starting && (\n                    <>\n                        <ModalLabel>자택 주소</ModalLabel>\n                        <ModalInfo>{info.starting}</ModalInfo>\n                    </>\n                )}\n                {info.call && info.call.status !== '예약접수' && (\n                    <>\n                        <ModalFlexbox>\n                            <div>\n                                <ModalLabel>이용자 성함</ModalLabel>\n                                <ModalInfo>{info.patient}</ModalInfo>\n                            </div>\n                            <div>\n                                <ModalLabel style={{ paddingLeft: '0px' }}>이용자 성별</ModalLabel>\n                                <ModalInfo style={{ paddingLeft: '0px' }}>{info.sex}</ModalInfo>\n                            </div>\n                        </ModalFlexbox>\n                        <ModalLabel>이용자 연락처</ModalLabel>\n                        <ModalInfo>{info.contact}</ModalInfo>\n\n                        {/* <ModalLabel>보호자 연락처</ModalLabel>\n                        <ModalInfo>{(info.buyer && info.buyer.contact) || '-'}</ModalInfo> */}\n                    </>\n                )}\n\n                <ModalLabel>추가 요청 사항</ModalLabel>\n                <ModalInfo style={{ marginBottom: '24px' }}>{info.comment || '-'}</ModalInfo>\n\n                {info.call && info.call.status !== '서비스 종료' && info.call.status !== '예약접수' && (\n                    <WhiteButton onClick={onNext}>{getNextStatus(info.service, info.call.status)}</WhiteButton>\n                )}\n                {info.call && info.call.status === '서비스 종료' && <WhiteButton onClick={onNext}>서비스 리포트 작성</WhiteButton>}\n\n                <BlueButton style={{ marginBottom: '24px' }} onClick={visibleHandler}>\n                    닫기\n                </BlueButton>\n            </ModalBlock>\n        </Container>\n    );\n};\n\nexport const UserServiceReportModal = ({ visibleHandler, info, service, onMateInfo }) => {\n    const { timeline } = info;\n\n    return (\n        <Container>\n            <ModalBlock>\n                <ModalTitle>\n                    서비스 리포트\n                    <ModalCloseButtons onClick={visibleHandler} src='/assets/images/close.png' alt='close-button' />\n                </ModalTitle>\n                <ModalLabel>타임라인</ModalLabel>\n                {service === 'happycare' ? (\n                    <ModalInfo>\n                        {timeline.receipt ? <p>{`고객님과 메이트가 ${moment(timeline.receipt.time).format('HH시 mm분')}에 만났습니다.`}</p> : ''}\n                        {timeline.careStart ? <p>{`${moment(timeline.careStart.time).format('HH시 mm분')}에 진료를 시작하였고,`}</p> : ''}\n                        {timeline.careDone ? (\n                            <p>{`${moment(timeline.careDone.time).diff(moment(timeline.careStart.time), 'minute')}분 동안 진료를 봤습니다.`}</p>\n                        ) : (\n                            ''\n                        )}\n                        {timeline.complete ? <p>{`${moment(timeline.complete.time).format('HH시 mm분')}에 고객님과의 동행 서비스가 종료되었습니다.`}</p> : ''}\n                    </ModalInfo>\n                ) : null}\n                {service === 'assist' ? (\n                    <ModalInfo>\n                        {timeline.arrived ? <p>{`메이트가 ${moment(timeline.arrived.time).format('MM월 DD일, HH시 mm분')}에 병원에 도착하였습니다.`}</p> : ''}\n                        {timeline.receipt ? <p>{`고객님과는 ${moment(timeline.receipt.time).format('HH시 mm분')}에 만났습니다.`}</p> : ''}\n                        {timeline.careStart ? <p>{`${moment(timeline.careStart.time).format('HH시 mm분')}에 진료를 시작하였고,`}</p> : ''}\n                        {timeline.careDone ? (\n                            <p>{`${moment(timeline.careDone.time).diff(moment(timeline.careStart.time), 'minute')}분 동안 진료를 봤습니다.`}</p>\n                        ) : (\n                            ''\n                        )}\n                        {timeline.complete ? <p>{`${moment(timeline.complete.time).format('HH시 mm분')}에 고객님과의 동행 서비스가 종료되었습니다.`}</p> : ''}\n                    </ModalInfo>\n                ) : null}\n                {service === 'unemergency' ? (\n                    <ModalInfo>\n                        {timeline.receipt ? <p>{`메이트가 고객님과 ${moment(timeline.receipt.time).format('MM월 DD일, HH시 mm분')}에 만났습니다.`}</p> : ''}\n                        {timeline.start ? <p>{`병원으로 ${moment(timeline.start.time).format('HH시 mm분')}에 출발하였습니다.`}</p> : ''}\n                        {timeline.arrived ? <p>{`그리고 ${moment(timeline.arrived.time).format('HH시 mm분')}에 병원에 도착하였습니다.`}</p> : ''}\n                        {timeline.careStart ? <p>{`${moment(timeline.careStart.time).format('HH시 mm분')}에 진료를 시작하였고,`}</p> : ''}\n                        {timeline.careDone ? (\n                            <p>{`${moment(timeline.careDone.time).diff(moment(timeline.careStart.time), 'minute')}분 동안 진료를 봤습니다.`}</p>\n                        ) : (\n                            ''\n                        )}\n                        {timeline.backStart ? <p>{`진료 후 ${moment(timeline.backStart.time).format('HH시 mm분')}에 자택으로 출발했습니다.`}</p> : ''}\n                        {timeline.complete ? <p>{`${moment(timeline.complete.time).format('HH시 mm분')}에 고객님과의 동행 서비스가 종료되었습니다.`}</p> : ''}\n                    </ModalInfo>\n                ) : null}\n                <ModalLabel>{info.mate[0].name} 메이트 리포트</ModalLabel>\n\n                <ModalInfo style={{ overflow: 'hidden' }}>{info.report || '담당 메이트가 아직 리포트를 작성중입니다.'}</ModalInfo>\n\n                <FullWidthButton bg={Pallete.dark70} onClick={onMateInfo} style={{ marginBottom: '24px', width: '90%', margin: '0 auto' }}>\n                    담당 메이트 정보\n                </FullWidthButton>\n                <DivisionLine small />\n                <FullWidthButton bg={Pallete.blue50} onClick={visibleHandler} style={{ marginBottom: '24px', width: '90%', margin: '0 auto' }}>\n                    닫기\n                </FullWidthButton>\n                <DivisionLine small />\n            </ModalBlock>\n        </Container>\n    );\n};\n\nexport const HandleReportModal = ({ visibleHandler, onHandleReport, inputHandler, desc }) => {\n    return (\n        <Container>\n            <ModalBlock>\n                <ModalTitle>\n                    서비스 리포트 작성\n                    <ModalCloseButtons onClick={visibleHandler} src='/assets/images/close.png' alt='close-button' />\n                </ModalTitle>\n\n                <ModalLabel>서비스 수행 및 진료내용 {desc && desc.length > 0 ? `(글자수 - ${desc.length}자)` : ''}</ModalLabel>\n                <ModalPaddingBlock>\n                    <Input.TextArea\n                        rows={6}\n                        placleholder='서비스 수행중 있었던 특이사항이나 진료내용 등을 입력해주세요.'\n                        maxLength={600}\n                        onChange={ev => {\n                            inputHandler({ type: 'report', value: ev.target.value });\n                        }}\n                    />\n                </ModalPaddingBlock>\n                <WhiteButton onClick={onHandleReport}>리포트 등록</WhiteButton>\n                <BlueButton onClick={visibleHandler} style={{ marginBottom: '24px' }}>\n                    닫기\n                </BlueButton>\n            </ModalBlock>\n        </Container>\n    );\n};\n\nexport const ShareCarRequestModal = ({ visibleHandler, inputHandler, onSave, data }) => {\n    return (\n        <Container>\n            <ModalLargeBlock>\n                <ModalTitle>\n                    셔틀 셰어링 신청\n                    <ModalCloseButtons onClick={visibleHandler} src='/assets/images/close.png' alt='close-button' />\n                </ModalTitle>\n\n                <FlexWrapper>\n                    <FlexBox>\n                        <p className='label'>기관명</p>\n                        <Input\n                            type='text'\n                            placeholder='ex. 한빛 요양원'\n                            value={data.corp}\n                            onChange={ev => {\n                                if (ev.target.value.length >= 20) return null;\n\n                                inputHandler({ type: 'corp', value: ev.target.value });\n                            }}\n                        />\n                    </FlexBox>\n                    <FlexBox>\n                        <p className='label'>지역</p>\n                        <Input\n                            type='text'\n                            placeholder='ex. 경기도 수원시'\n                            value={data.address}\n                            onChange={ev => {\n                                if (ev.target.value.length >= 20) return null;\n\n                                inputHandler({ type: 'address', value: ev.target.value });\n                            }}\n                        />\n                    </FlexBox>\n                </FlexWrapper>\n\n                <FlexWrapper>\n                    <FlexBox>\n                        <p className='label'>담당자</p>\n                        <Input\n                            type='text'\n                            placeholder='ex. 홍길동'\n                            value={data.manager}\n                            onChange={ev => {\n                                if (ev.target.value.length >= 20) return null;\n\n                                inputHandler({ type: 'manager', value: ev.target.value });\n                            }}\n                        />\n                    </FlexBox>\n                    <FlexBox>\n                        <p className='label'>전화번호</p>\n                        <Input\n                            type='number'\n                            placeholder='ex. 01012349876'\n                            value={data.contact}\n                            onChange={ev => {\n                                if (ev.target.value.length >= 13) return null;\n\n                                inputHandler({ type: 'contact', value: ev.target.value });\n                            }}\n                        />\n                    </FlexBox>\n                </FlexWrapper>\n\n                <FlexWrapper>\n                    <FlexFullBox>\n                        <p className='label'>기타 문의 및 전달사항</p>\n                        <Input.TextArea\n                            type='text'\n                            placeholder='위드메이트 관리자에게 전달할 메시지를 입력해주세요.'\n                            value={data.message}\n                            onChange={ev => {\n                                if (ev.target.value.length > 150) return null;\n\n                                inputHandler({ type: 'message', value: ev.target.value });\n                            }}\n                        />\n                    </FlexFullBox>\n                </FlexWrapper>\n\n                <BlueButton onClick={onSave} style={{ marginBottom: '24px' }}>\n                    접수하기\n                </BlueButton>\n            </ModalLargeBlock>\n        </Container>\n    );\n};\n\nexport const EmergencyCorpSearchModal = ({ visibleHandler, inputHandler, keyword = '', data = [] }) => {\n    return (\n        <Container>\n            <ModalLargeBlock>\n                <ModalTitle>\n                    사설 구급업체 검색\n                    <ModalCloseButtons onClick={visibleHandler} src='/assets/images/close.png' alt='close-button' />\n                </ModalTitle>\n\n                <FlexWrapper>\n                    <FlexFullBox>\n                        <p className='label'>지역 검색</p>\n                        <Input\n                            placeholder='ex. 경기, 대구, 부산'\n                            value={keyword}\n                            onChange={ev => {\n                                if (ev.target.value.length > 10) return null;\n\n                                inputHandler(ev.target.value);\n                            }}\n                        />\n                    </FlexFullBox>\n                </FlexWrapper>\n\n                <FlexWrapper>\n                    <FlexFullBox>\n                        <p className='label'>검색결과</p>\n                        <TableWrapper>\n                            <TableHeaderWrapper>\n                                <FlexColumn>\n                                    <span className='title'>시도 / 시군구</span>\n                                </FlexColumn>\n                                <FlexColumn>\n                                    <span className='title'>기관명</span>\n                                </FlexColumn>\n                                <FlexColumn>\n                                    <span className='title'>대표번호</span>\n                                </FlexColumn>\n                            </TableHeaderWrapper>\n                            {data && data.length > 0 ? (\n                                data\n                                    .filter(\n                                        item =>\n                                            (item.addr1 && item.addr1.includes(keyword)) ||\n                                            (item.addr2 && item.addr2.includes(keyword)) ||\n                                            (item.name && item.name.includes(keyword)) ||\n                                            (item.contact && item.contact.includes(keyword)),\n                                    )\n                                    .map((item, index) => (\n                                        <TableRowWrapper key={'emergency-corporation-item-' + index.toString()}>\n                                            <FlexColumn>\n                                                <span className='value'>{item.addr1 + ' ' + item.addr2}</span>\n                                            </FlexColumn>\n                                            <FlexColumn>\n                                                <span className='value'>{item.name}</span>\n                                            </FlexColumn>\n                                            <FlexColumn>\n                                                <span className='value'>{item.contact}</span>\n                                            </FlexColumn>\n                                        </TableRowWrapper>\n                                    ))\n                            ) : (\n                                <EmptyTable />\n                            )}\n                        </TableWrapper>\n                    </FlexFullBox>\n                </FlexWrapper>\n\n                <BlueButton onClick={visibleHandler} style={{ marginBottom: '24px' }}>\n                    확인\n                </BlueButton>\n            </ModalLargeBlock>\n        </Container>\n    );\n};\n\nclass CardModal extends React.PureComponent {\n    state = {\n        modal: false,\n    };\n\n    componentDidMount = () => {\n        this.modalValidation();\n    };\n\n    modalValidation = () => {\n        const { lastTime } =\n            localStorage.getItem('radiation-modal') &&\n            typeof JSON.parse(localStorage.getItem('radiation-modal')) === 'object' &&\n            JSON.parse(localStorage.getItem('radiation-modal')) !== null\n                ? JSON.parse(localStorage.getItem('radiation-modal'))\n                : {\n                      lastTime: moment().subtract('day', 1).toDate(),\n                  };\n\n        if (!lastTime || moment(lastTime).format('YYYY-MM-DD') !== moment().format('YYYY-MM-DD')) {\n            this.setState({ modal: true });\n        }\n    };\n\n    onClose = () => {\n        localStorage.setItem('radiation-modal', null);\n        this.setState({ modal: false });\n    };\n\n    onCloseToday = () => {\n        localStorage.setItem('radiation-modal', JSON.stringify({ lastTime: moment().toDate() }));\n        this.setState({ modal: false });\n    };\n\n    render() {\n        if (this.state.modal) {\n            return (\n                <Container id='event-popup'>\n                    <ModalBlock>\n                        <Top>\n                            <Title>카드결제 안내</Title>\n                        </Top>\n                        <Bottom>\n                            <div style={{ display: 'flex', justifyContent: 'center', paddingTop: '10px' }}>\n                                <img src='/assets/images/popup_img/withmate_card.png' style={{ width: '400px', height: 'auto' }} />\n                                {/* <PopupImage /> */}\n                            </div>\n                            <div style={{ marginTop: '15px' }}>\n                                <MessageRow>\n                                    <a\n                                        onClick={() => {\n                                            this.onClose();\n                                            this.props.history.push('/user/mypage/info');\n                                        }}\n                                    >\n                                        결제카드 등록하기 {'>'}\n                                    </a>\n                                </MessageRow>\n                                {/* <MessageRow>\n                                    <a\n                                        href='https://docs.google.com/forms/d/e/1FAIpQLSfX6N8E0-fPVHXDFQN0iKUCjpZNP_cHl4e1kDRwEORk9NmtCw/viewform'\n                                        target='_blank'\n                                    >\n                                        쿠폰(설문 조사) 링크 {'>'}\n                                    </a>\n                                </MessageRow> */}\n                            </div>\n                        </Bottom>\n                        <EndBottom>\n                            <CloseToday>\n                                <span onClick={this.onCloseToday}>\n                                    <i className='fas fa-check' />\n                                </span>\n                                <span onClick={this.onCloseToday}>오늘은 그만보기</span>\n                            </CloseToday>\n                            <CloseNow onClick={this.onClose}>닫기</CloseNow>\n                        </EndBottom>\n                    </ModalBlock>\n                </Container>\n            );\n        } else {\n            return <></>;\n        }\n    }\n}\n\nclass ManagerModal extends React.PureComponent {\n    state = {\n        modal: false,\n    };\n\n    componentDidMount = () => {\n        this.modalValidation();\n    };\n\n    modalValidation = () => {\n        const { lastTime } =\n            localStorage.getItem('radiation-modal') &&\n            typeof JSON.parse(localStorage.getItem('radiation-modal')) === 'object' &&\n            JSON.parse(localStorage.getItem('radiation-modal')) !== null\n                ? JSON.parse(localStorage.getItem('radiation-modal'))\n                : {\n                      lastTime: moment().subtract('day', 1).toDate(),\n                  };\n\n        if (!lastTime || moment(lastTime).format('YYYY-MM-DD') !== moment().format('YYYY-MM-DD')) {\n            this.setState({ modal: true });\n        }\n    };\n\n    onClose = () => {\n        localStorage.setItem('radiation-modal', null);\n        this.setState({ modal: false });\n    };\n\n    onCloseToday = () => {\n        localStorage.setItem('radiation-modal', JSON.stringify({ lastTime: moment().toDate() }));\n        this.setState({ modal: false });\n    };\n\n    render() {\n        if (this.state.modal) {\n            return (\n                <Container id='event-popup'>\n                    <ModalBlock>\n                        {/* <Top>\n                            <Title>위드메이트 X 국립암센터 암특화 병원동행 매니저 자격과정 모집</Title>\n                        </Top> */}\n                        <Bottom>\n                            <div style={{ display: 'flex', justifyContent: 'center', paddingTop: '10px' }}>\n                                <img src='/assets/images/popup_img/withmate_manager.png' style={{ width: '300px', height: 'auto' }} />\n                                {/* <PopupImage /> */}\n                            </div>\n                            <div style={{ marginTop: '10px' }}>\n                                <MessageRow>\n                                    <a\n                                        onClick={() => {\n                                            this.onClose();\n                                            this.props.history.push({\n                                                pathname: `/newsEvent/info/63d9f951397216d7ff7672a8`,\n                                                state: { id: '63d9f951397216d7ff7672a8' },\n                                            });\n                                        }}\n                                    >\n                                        자세히 보기 {'>'}\n                                    </a>\n                                </MessageRow>\n                                {/* <MessageRow>\n                                    <a\n                                        href='https://docs.google.com/forms/d/e/1FAIpQLSfX6N8E0-fPVHXDFQN0iKUCjpZNP_cHl4e1kDRwEORk9NmtCw/viewform'\n                                        target='_blank'\n                                    >\n                                        쿠폰(설문 조사) 링크 {'>'}\n                                    </a>\n                                </MessageRow> */}\n                            </div>\n                        </Bottom>\n                        <EndBottom>\n                            <CloseToday>\n                                <span onClick={this.onCloseToday}>\n                                    <i className='fas fa-check' />\n                                </span>\n                                <span onClick={this.onCloseToday}>오늘은 그만보기</span>\n                            </CloseToday>\n                            <CloseNow onClick={this.onClose}>닫기</CloseNow>\n                        </EndBottom>\n                    </ModalBlock>\n                </Container>\n            );\n        } else {\n            return <></>;\n        }\n    }\n}\n\nclass EventModal extends React.PureComponent {\n    state = {\n        modal: false,\n    };\n\n    componentDidMount = () => {\n        this.modalValidation();\n    };\n\n    modalValidation = () => {\n        const { lastTime } =\n            localStorage.getItem('radiation-modal') &&\n            typeof JSON.parse(localStorage.getItem('radiation-modal')) === 'object' &&\n            JSON.parse(localStorage.getItem('radiation-modal')) !== null\n                ? JSON.parse(localStorage.getItem('radiation-modal'))\n                : {\n                      lastTime: moment().subtract('day', 1).toDate(),\n                  };\n\n        if (!lastTime || moment(lastTime).format('YYYY-MM-DD') !== moment().format('YYYY-MM-DD')) {\n            this.setState({ modal: true });\n        }\n    };\n\n    onClose = () => {\n        localStorage.setItem('radiation-modal', null);\n        this.setState({ modal: false });\n    };\n\n    onCloseToday = () => {\n        localStorage.setItem('radiation-modal', JSON.stringify({ lastTime: moment().toDate() }));\n        this.setState({ modal: false });\n    };\n\n    render() {\n        if (this.state.modal) {\n            return (\n                <Container id='event-popup'>\n                    <ModalBlock>\n                        {/* <Top>\n                            <Title>위드메이트 X 국립암센터 암특화 병원동행 매니저 자격과정 모집</Title>\n                        </Top> */}\n                        <Bottom>\n                            <div style={{ display: 'flex', justifyContent: 'center', paddingTop: '20px' }}>\n                                <img src='/assets/images/popup_img/event_img.png' style={{ width: '400px', height: 'auto' }} />\n                                {/* <PopupImage /> */}\n                            </div>\n                            <div style={{ marginTop: '10px' }}>\n                                <MessageRow>\n                                    <a\n                                        onClick={() => {\n                                            this.onClose();\n                                            this.props.history.push({\n                                                pathname: `/newsEvent/info/645dc777f0316a44d06a1fdb`,\n                                                state: { id: '645dc777f0316a44d06a1fdb' },\n                                            });\n                                        }}\n                                    >\n                                        자세히 보기 {'>'}\n                                    </a>\n                                </MessageRow>\n                            </div>\n                        </Bottom>\n                        <EndBottom>\n                            <CloseToday>\n                                <span onClick={this.onCloseToday}>\n                                    <i className='fas fa-check' />\n                                </span>\n                                <span onClick={this.onCloseToday}>오늘은 그만보기</span>\n                            </CloseToday>\n                            <CloseNow onClick={this.onClose}>닫기</CloseNow>\n                        </EndBottom>\n                    </ModalBlock>\n                </Container>\n            );\n        } else {\n            return <></>;\n        }\n    }\n}\n\nclass NoticeModal extends React.PureComponent {\n    state = {\n        modal: false,\n    };\n\n    componentDidMount = () => {\n        this.modalValidation();\n    };\n\n    modalValidation = () => {\n        const { lastTime } =\n            localStorage.getItem('radiation-modal') &&\n            typeof JSON.parse(localStorage.getItem('radiation-modal')) === 'object' &&\n            JSON.parse(localStorage.getItem('radiation-modal')) !== null\n                ? JSON.parse(localStorage.getItem('radiation-modal'))\n                : {\n                      lastTime: moment().subtract('day', 1).toDate(),\n                  };\n\n        if (!lastTime || moment(lastTime).format('YYYY-MM-DD') !== moment().format('YYYY-MM-DD')) {\n            this.setState({ modal: true });\n        }\n    };\n\n    onClose = () => {\n        localStorage.setItem('radiation-modal', null);\n        this.setState({ modal: false });\n    };\n\n    onCloseToday = () => {\n        localStorage.setItem('radiation-modal', JSON.stringify({ lastTime: moment().toDate() }));\n        this.setState({ modal: false });\n    };\n\n    onCloseToday2 = () => {\n        localStorage.setItem('radiation-modal', JSON.stringify({ lastTime: moment().toDate() }));\n        this.setState({ modal: false });\n    };\n\n    render() {\n        if (this.state.modal) {\n            return (\n                <Container id='event-popup'>\n                    <ModalBlock>\n                        <Top>\n                            <Title>서버오류로 인한 데이터 복구작업 안내</Title>\n                        </Top>\n                        <Bottom>\n                            <ContentRow>\n                                <br />\n                                <div style={{ fontSize: '16px', textAlign: 'center' }}>\n                                    서버 오류가 발생하여 손실된 데이터 복구작업 진행중입니다.\n                                    <br />\n                                    이에 관련하여 문의사항은 고객센터로 연락을 주시면 <br />\n                                    빠르게 해결해드리겠습니다.\n                                    <br />\n                                    위드메이트를 이용하시는데 불편을 드려 죄송합니다.\n                                    <br />\n                                    <br />\n                                    <br />\n                                    <b>\n                                        ⏰ 운영시간 : 오전 9시 - 오후 6시 (토·일 제외)\n                                        <br />\n                                        👩🏻‍💻 문의방법 : 채널톡 및 카카오톡 혹은 전화(070-4300-9075)\n                                    </b>\n                                </div>\n                            </ContentRow>\n                            <div style={{ marginTop: '15px' }}>\n                                <MessageRow>\n                                    {/* <a\n                                        onClick={() => {\n                                            this.onClose();\n                                            this.props.history.push(\n                                                {\n                                                    pathname: `/newsEvent/info/63c0ec49fe7889400f150b97`,\n                                                    state: { id: '63c0ec49fe7889400f150b97' },\n                                                });\n                                        }}\n                                    >\n                                        자세히 보기 {'>'}\n                                    </a> */}\n                                </MessageRow>\n                            </div>\n                        </Bottom>\n                        <EndBottom>\n                            <CloseToday>\n                                <span onClick={this.onCloseToday2}>\n                                    <i className='fas fa-check' />\n                                </span>\n                                <span onClick={this.onCloseToday2}>오늘은 그만보기</span>\n                            </CloseToday>\n                            <CloseNow onClick={this.onClose}>닫기</CloseNow>\n                        </EndBottom>\n                    </ModalBlock>\n                </Container>\n            );\n        } else {\n            return <></>;\n        }\n    }\n}\n\nclass MetlifeModal extends React.PureComponent {\n    state = {\n        modal: false,\n    };\n\n    componentDidMount = () => {\n        this.modalValidation();\n    };\n\n    modalValidation = () => {\n        const { lastTime } =\n            localStorage.getItem('radiation-modal') &&\n            typeof JSON.parse(localStorage.getItem('radiation-modal')) === 'object' &&\n            JSON.parse(localStorage.getItem('radiation-modal')) !== null\n                ? JSON.parse(localStorage.getItem('radiation-modal'))\n                : {\n                      lastTime: moment().subtract('day', 1).toDate(),\n                  };\n\n        if (!lastTime || moment(lastTime).format('YYYY-MM-DD') !== moment().format('YYYY-MM-DD')) {\n            this.setState({ modal: true });\n        }\n    };\n\n    onClose = () => {\n        localStorage.setItem('radiation-modal', null);\n        this.setState({ modal: false });\n    };\n\n    onCloseToday = () => {\n        localStorage.setItem('radiation-modal', JSON.stringify({ lastTime: moment().toDate() }));\n        this.setState({ modal: false });\n    };\n\n    render() {\n        if (this.state.modal) {\n            return (\n                <Container id='event-popup'>\n                    <ModalBlock>\n                        {/* <Top>\n                            <Title>위드메이트 X 국립암센터 암특화 병원동행 매니저 자격과정 모집</Title>\n                        </Top> */}\n                        <Bottom>\n                            <div style={{ display: 'flex', justifyContent: 'center', paddingTop: '20px' }}>\n                                <img src='/assets/images/popup_img/metlife_popup.png' style={{ width: '400px', height: 'auto' }} />\n                                {/* <PopupImage /> */}\n                            </div>\n                            <div style={{ marginTop: '10px' }}>\n                                <MessageRow>\n                                    <a\n                                        onClick={() => {\n                                            this.onClose();\n                                            this.props.history.push('/360F/nemt/service/#types');\n                                        }}\n                                    >\n                                        서비스 종류 보기 {'>'}\n                                    </a>\n                                </MessageRow>\n                            </div>\n                        </Bottom>\n                        <EndBottom>\n                            <CloseToday>\n                                <span onClick={this.onCloseToday}>\n                                    <i className='fas fa-check' />\n                                </span>\n                                <span onClick={this.onCloseToday}>오늘은 그만보기</span>\n                            </CloseToday>\n                            <CloseNow onClick={this.onClose}>닫기</CloseNow>\n                        </EndBottom>\n                    </ModalBlock>\n                </Container>\n            );\n        } else {\n            return <></>;\n        }\n    }\n}\n\nexport const CustomModal = ({ children }) => {\n    return <CustomContaienr>{children}</CustomContaienr>;\n};\n\nconst TableWrapper = styled.div`\n    border: 1px solid #e6e6e6;\n    border-radius: 4px;\n\n    overflow-x: hidden;\n    overflow-y: scroll;\n\n    margin-bottom: 30px;\n`;\n\nconst TableHeaderWrapper = styled.div`\n    border-bottom: 1px solid #e6e6e6;\n    padding: 6px 22px;\n\n    display: flex;\n`;\n\nconst TableRowWrapper = styled.div`\n    border-bottom: 1px solid #e6e6e6;\n    padding: 9.5px 22px;\n\n    display: flex;\n`;\n\nconst EmptyTable = styled.div`\n    height: 100px;\n`;\n\nconst FlexColumn = styled.div`\n    flex: 1;\n\n    text-align: left;\n\n    > span.title {\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: normal;\n        font-size: 10px;\n        line-height: 18px;\n\n        letter-spacing: -0.2px;\n        color: rgba(0, 0, 0, 0.4);\n    }\n\n    > span.value {\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: normal;\n        font-size: 14px;\n        line-height: 28px;\n\n        letter-spacing: -0.2625px;\n        color: rgba(0, 0, 0, 0.8);\n    }\n`;\n\nconst FlexWrapper = styled.div`\n    display: flex;\n    align-items: flex-start;\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n        width: 100%;\n    }\n`;\n\nconst FlexBox = styled.div`\n    flex: 1;\n\n    width: calc(50% - 10px);\n\n    &:first-child {\n        margin-right: 20px;\n    }\n\n    > p.label {\n        margin-bottom: 4px;\n\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: bold;\n        font-size: 11px;\n        line-height: 18px;\n\n        color: #a7a7a7;\n    }\n\n    > input {\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: normal;\n        font-size: 14px;\n\n        letter-spacing: -0.3px;\n        color: rgba(0, 0, 0, 0.8);\n\n        margin-bottom: 20px;\n\n        height: 40px;\n        line-height: 40px;\n\n        color: rgba(0, 0, 0, 0.8);\n    }\n\n    @media (max-width: 768px) {\n        width: 100%;\n\n        &:first-child {\n            margin-right: 0px;\n        }\n    }\n`;\n\nconst FlexFullBox = styled(FlexBox)`\n    width: 100%;\n\n    &:first-child {\n        margin-right: 0px;\n    }\n\n    > input {\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: normal;\n        font-size: 14px;\n\n        letter-spacing: -0.3px;\n        color: rgba(0, 0, 0, 0.8);\n\n        margin-bottom: 20px;\n\n        height: 40px;\n        line-height: 40px;\n\n        color: rgba(0, 0, 0, 0.8);\n    }\n\n    > textarea.ant-input {\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: normal;\n        font-size: 14px;\n\n        letter-spacing: -0.3px;\n        color: rgba(0, 0, 0, 0.8);\n\n        margin-bottom: 20px;\n\n        height: 100px;\n        line-height: 20px;\n\n        color: rgba(0, 0, 0, 0.8);\n    }\n`;\n\nexport const EventPopup = withRouter(EventModal);\nexport const ManagerPopup = withRouter(ManagerModal);\nexport const CardPopup = withRouter(CardModal);\nexport const NoticePopup = withRouter(NoticeModal);\nexport const MetlifePopup = withRouter(MetlifeModal);\n\nconst Container = styled.div`\n    position: fixed;\n    left: 0px;\n    top: 0px;\n    z-index: 100;\n    display: flex;\n    width: 100vw;\n    height: 100vh;\n    align-items: center;\n    justify-content: center;\n    background-color: rgba(0, 0, 0, 0.6);\n\n    @media (max-width: 768px) {\n        padding-left: 16px;\n        padding-right: 16px;\n        overflow: hidden;\n    }\n`;\n\nconst CustomContaienr = styled(Container)`\n    @media (max-width: 768px) {\n        padding-left: 0px;\n        padding-right: 0px;\n    }\n`;\n\nconst ModalBlock = styled.div`\n    margin-top: -46px;\n    // margin-right: 400px;\n    width: 100%;\n    min-width: 430px;\n    max-width: 450px;\n    max-height: 90%;\n    overflow-y: scroll;\n    ::-webkit-scrollbar {\n        display: none;\n    }\n\n    background-color: #fdfdfd;\n    border-radius: 4px;\n\n    @media (max-width: 768px) {\n        min-width: auto;\n        max-width: 380px;\n        margin-right: 0px;\n    }\n`;\n\nconst ModalBlock2 = styled.div`\n    margin-top: -46px;\n    margin-left: 600px;\n    width: 100%;\n    min-width: 430px;\n    max-width: 450px;\n    max-height: 90%;\n    overflow-y: scroll;\n    ::-webkit-scrollbar {\n        display: none;\n    }\n\n    background-color: #fdfdfd;\n    border-radius: 4px;\n\n    @media (max-width: 768px) {\n        min-width: auto;\n        max-width: 380px;\n        margin-left: 0px;\n    }\n`;\n\nconst ModalLargeBlock = styled(ModalBlock)`\n    max-width: 740px;\n    padding: 32px;\n\n    @media (max-width: 1120px) {\n        max-width: 540px;\n    }\n\n    @media (max-width: 768px) {\n        max-width: 440px;\n    }\n\n    @media (max-width: 430px) {\n        max-width: 380;\n    }\n`;\n\nconst ModalTitle = styled.div`\n    font-size: 18px;\n    font-weight: bold;\n    text-align: center;\n    letter-spacing: 0.03px;\n    color: rgba(0, 0, 0, 0.87);\n\n    position: relative;\n\n    margin-top: 24px;\n    margin-bottom: 24px;\n`;\n\nconst ModalFlexbox = styled.div`\n    display: flex;\n    align-items: flex-start;\n\n    > div {\n        flex: 1;\n    }\n`;\n\nconst ModalCloseButtons = styled.img`\n    position: absolute;\n    top: 0px;\n    right: 24px;\n\n    display: inline-block;\n    width: 18px;\n    height: 18px;\n\n    cursor: pointer;\n`;\n\nconst ModalLabel = styled.p`\n    font-size: 12px;\n    color: #b6b6b6;\n    margin-bottom: 4px;\n    font-weight: bold;\n\n    padding-left: 32px;\n    padding-right: 32px;\n`;\n\nconst ModalPaddingBlock = styled.div`\n    padding-left: 32px;\n    padding-right: 32px;\n\n    margin-bottom: 24px;\n`;\n\nconst ModalInfo = styled.p`\n    font-size: 13px;\n    color: #565656;\n    margin-bottom: 12px;\n    font-weight: bold;\n\n    padding-left: 32px;\n    padding-right: 32px;\n`;\n\nconst WhiteButton = styled.div`\n    width: 100%;\n    max-width: calc(100% - 64px);\n    height: 40px;\n    line-height: 40px;\n\n    border-radius: 16px;\n\n    border: 1px solid ${mainColor};\n    color: ${mainColor}\n\n    font-size: 13px;\n    text-align: center;\n\n    margin: 0 auto;\n    margin-bottom: 24px;\n\n    cursor: pointer;\n    &:hover {\n        transition: all 0.5s;\n        background-color: ${mainColor};\n        color: white;\n    }\n`;\n\nconst BlueButton = styled.div`\n    \n    width: calc(100% - 64px);\n    max-width: 360px;\n    height: 40px;\n    line-height: 40px;\n\n    border-radius: 16px;\n\n    background-color: ${mainColor};\n    color: #ffffff\n\n    font-size: 13px;\n    text-align: center;\n\n    margin: 0 auto;\n\n    cursor: pointer;\n    &:hover {\n        transition: all 0.5s;\n        opacity: 0.85;\n    }\n`;\n\nconst Top = styled.div`\n    // border-bottom: 3px solid ${mainColor};\n\n    height: 42px;\n    line-height: 42px;\n    border-bottom: 2px solid #e9e9e9;\n`;\n\nconst Title = styled.p`\n    font-size: 18px;\n    font-weight: bold;\n    text-align: center;\n    letter-spacing: 0.03px;\n    color: rgba(0, 0, 0, 0.87);\n    margin: 0px;\n`;\n\nconst Bottom = styled.div`\n    position: relative;\n    // padding-top: 20px;\n    padding-bottom: 20px;\n`;\n\nconst BottomImage = styled.div`\n    // position: absolute;\n    // width: 100%;\n    // height: 100%;\n    // top: 0px;\n    // left: 0px;\n\n    width: 100%;\n    height: 170px;\n    opacity: 0.86;\n\n    margin-bottom: 10px;\n\n    background-image: url('/assets/images/main_logo.png');\n    background-size: contain;\n    background-repeat: no-repeat;\n    background-position: center;\n`;\n\nconst PopupImage = styled.div`\n    // position: absolute;\n    // width: 100%;\n    // height: 100%;\n    // top: 0px;\n    // left: 0px;\n\n    width: 100%;\n    height: 170px;\n    opacity: 0.86;\n\n    margin-bottom: 10px;\n\n    background-image: url('/assets/images/icons/manager.png');\n    background-size: contain;\n    background-repeat: no-repeat;\n    background-position: center;\n`;\n\nconst ContentRow = styled.p`\n    // font-weight: 600;\n    margin: 0px;\n    font-size: 12px;\n    color: rgba(0, 0, 0, 0.7);\n    margin-bottom: 2px;\n    padding: 0px 16px;\n    text-indent: 4px;\n\n    word-break: keep-all;\n\n    > span {\n        color: ${Pallete.blue100};\n        font-weight: bold;\n    }\n`;\n\nconst WarningRow = styled.p`\n    font-size: 13px;\n    font-weight: 600;\n    color: red;\n    padding: 0px 16px;\n    margin-top: 8px;\n`;\n\nconst WarningContentRow = styled.p`\n    font-size: 13px;\n    color: rgba(0, 0, 0, 0.7);\n    // font-weight: bold;\n    padding: 0px 16px;\n`;\n\nconst EndBottom = styled.div`\n    padding: 6px 16px;\n    display: flex;\n    align-items: center;\n    border-top: 1px solid #e6e6e6;\n    background-color: #f5f5f5;\n`;\n\nconst CloseToday = styled.p`\n    flex: 1;\n\n    > span {\n        font-size: 13px;\n        margin-right: 4px;\n        cursor: pointer;\n    }\n\n    > span:last-child {\n        font-size: 13px;\n        color: rgba(0, 0, 0, 0.4);\n        cursor: pointer;\n    }\n`;\n\nconst CloseNow = styled.p`\n    font-size: 13px;\n    color: rgba(0, 0, 0, 0.4);\n    cursor: pointer;\n`;\n\nconst MessageRow = styled.p`\n    font-size: 13px;\n    font-weight: bold;\n    color: #6e82d6;\n    padding: 0px 16px;\n\n    word-break: keep-all;\n\n    a,\n    span {\n        text-decoration: none;\n        font-size: 12px;\n        font-weight: bold;\n        color: #6e82d6;\n    }\n\n    // color: ${mainColor};\n`;\n\nconst Info = styled.p`\n    font-size: 12px;\n    fong-weight: bold;\n    // margin-top: 16px;\n    color: rgba(0, 0, 0, 0.6);\n    padding: 0px 16px;\n`;\n","import React from 'react';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport { debounce } from 'lodash';\nimport styled from 'styled-components';\nimport { Button, message, Spin } from 'antd';\nimport _ from 'lodash';\n\n// components\nimport { NoCatchedList } from '../../../Components/User/Mate/reserve';\nimport { MateReserveInfoModal } from '../../../Components/modal';\n\n// utils\nimport { UNEMER } from '../../../Lib/variables';\nimport axios from '../../../Lib/axios';\n\nclass Reserve extends React.PureComponent {\n    state = {\n        reserveModal: false,\n        reserveInfo: null,\n        refreshing: false,\n        list: [],\n    };\n\n    componentDidMount = () => {\n        this.fetchList();\n    };\n\n    fetchList = debounce(() => {\n        const mateId = localStorage.getItem('id');\n\n        this.setState(\n            {\n                refreshing: true,\n            },\n            () => {\n                axios\n                    .get('/v2/service/mate/reserve/list', {\n                        params: {\n                            mateId,\n                        },\n                    })\n                    .then(resolve => {\n                        const { data: list } = resolve;\n                        if (list && Array.isArray(list)) {\n                            this.setState({ list, refreshing: false });\n                        }\n                    })\n                    .catch(error => {\n                        this.setState({ refreshing: false });\n                    });\n            },\n        );\n    }, 300);\n\n    onCatchCall = () => {\n        const { reserveInfo } = this.state;\n        const { id } = this.props.auth;\n\n        if (!reserveInfo || !reserveInfo.call || !reserveInfo.call._id) {\n            this.setState({ reserveInfo: null, reserveModal: false });\n            message.warning('유효하지않은 예약내역입니다. 다른 예약내역을 확인해주세요.');\n            return null;\n        }\n\n        axios\n            .put('/v2/service/catch/call', {\n                callId: reserveInfo.call._id,\n                mateId: id,\n            })\n            .then(resolve => {\n                const { data: result } = resolve;\n                if (!result) return message.warning('요청에 실패했습니다.');\n                if (result === 'invalid call') return message.warning('잘못된 요청입니다.');\n                if (result === 'already catched') return message.warning('이미 접수된 요청입니다.');\n                if (result === 'denied') return message.warning('예약자에 의해 거절 당하셨거나 혹은 메이트님이 직접 해당 내역을 수신거부 하셨습니다.');\n                if (result === 'success') {\n                    message.success('예약 접수 요청완료');\n                    this.setState({ reserveModal: false, reserveInfo: null }, () => {\n                        this.fetchList();\n                    });\n                }\n            })\n            .catch(error => {\n                message.warning('요청에 실패했습니다.');\n            });\n    };\n\n    render() {\n        const { list } = this.state;\n\n        return (\n            <>\n                <NoCatchedList\n                    data={this.state}\n                    list={list}\n                    onRefresh={this.fetchList}\n                    detailHandler={info => {\n                        this.setState({ reserveModal: true, reserveInfo: info });\n                    }}\n                />\n\n                {this.state.reserveModal ? (\n                    <MateReserveInfoModal\n                        info={this.state.reserveInfo}\n                        visibleHandler={() => {\n                            this.setState({\n                                reserveModal: false,\n                                reserveInfo: null,\n                            });\n                        }}\n                        onCatch={this.onCatchCall}\n                    />\n                ) : null}\n\n                {this.state.refreshing ? (\n                    <SpinWrapper>\n                        <Spin size='large' />\n                    </SpinWrapper>\n                ) : null}\n            </>\n        );\n    }\n}\n\nconst SpinWrapper = styled.div`\n    position: fixed;\n    top: 0px;\n    left: 0px;\n    width: 100vw;\n    height: 100vh;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n\n    z-index: 9999\n    background-color: rgba(0, 0, 0, 0.6);\n`;\n\nexport default Reserve;\n","import React from \"react\";\nimport AnimatedNumbers from \"react-animated-numbers\";\nimport styled from 'styled-components';\nimport { BsPeopleFill, BsNewspaper, BsClockFill } from \"react-icons/bs\";\n\nfunction MainNumber() {\n  const [num, setNum] = React.useState(3021);\n  const [num2, setNum2] = React.useState(289);\n  const [num3, setNum3] = React.useState(16700);\n\n  return (\n    <div className=\"container\" style={{ height: '70px', display: 'flex', flexDirection: 'initial' }}>\n      <div style={{ textAlign: 'center' }}>\n        <label>총 이용자 수</label>\n        <HighLight>\n          <b>\n            <AnimatedNumbers\n              includeComma // 숫자에 쉼표 여부\n              easing\n              animateToNumber={num}\n              animationType={\"calm\"}\n              fontStyle={{ fontSize: 30 }}\n              configs={(number, index) => {\n              return { mass: 1, tension: 430 * (index + 1), friction: 140 };\n            }} />\n          </b>\n        </HighLight>\n      </div>&emsp;&emsp;\n\n      <div style={{ textAlign: 'center' }}>\n        <label>메이트 수</label>\n        <HighLight>\n          <b><AnimatedNumbers\n            includeComma\n            easing\n            animateToNumber={num2}\n            animationType={\"calm\"}\n            fontStyle={{ fontSize: 30 }}\n            configs={(number, index) => {\n              return { mass: 1, tension: 430 * (index + 1), friction: 140 };\n            }}\n          /></b>\n        </HighLight>\n      </div>&emsp;&emsp;\n\n      <div style={{ textAlign: 'center' }}>\n        <label>총 이용 건수</label>\n        <HighLight>\n          <b><AnimatedNumbers\n            includeComma\n            easing\n            animateToNumber={num3}\n            animationType={\"calm\"}\n            fontStyle={{ fontSize: 30 }}\n            configs={(number, index) => {\n              return { mass: 1, tension: 430 * (index + 1), friction: 140 };\n            }}\n            suffix=\"건\"\n          /></b>\n        </HighLight>\n      </div>\n    </div>\n  );\n}\n\nexport default MainNumber;\n\nconst HighLight = styled.p`\n    font-size: 16px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.75;\n    letter-spacing: -0.2px;\n    text-align: center;\n    color: #ffffff;\n\n    margin-bottom: 64px;\n\n    @media (max-width: 768px) {\n        text-align: center;\n    }\n`;","import { message } from 'antd';\nimport React from 'react';\nimport styled from 'styled-components';\nimport swal from 'sweetalert2';\nimport MainNumber from './MainNumber';\nimport Popup from './Popup';\nimport { ManagerPopup } from '../../../../Components/modal';\n\nimport { Swiper, SwiperSlide } from 'swiper/react';\nimport SwiperCore, { Pagination, Navigation, Autoplay } from 'swiper';\nimport 'swiper/swiper-bundle.min.css';\nimport 'swiper/swiper.min.css';\nimport 'swiper/components/navigation/navigation.min.css';\nimport 'swiper/components/pagination/pagination.min.css';\nimport { DivisionLine } from '../../../../Components/Common/input';\n\nSwiperCore.use([Navigation, Pagination, Autoplay]);\n\nexport const UserMain = ({ history }) => {\n    return (\n        // <Swiper\n        //     direction={'horizontal'} // 슬라이드의 방향을 수직으로 설정합니다.\n        //     spaceBetween={50}\n        //     slidesPerView={1}\n        //     pagination={{ clickable: true }} // 우측의 점을 클릭했을 때, 클릭한 슬라이드로 이동하게 됩니다.\n        //     navigation\n        //     modules={[Pagination]} // 페이지네이션, 마우스휠등을 사용하려면 모듈을 import해줘야 합니다.\n        //     allowTouchMove // 터치 동작을 허용합니다.\n        //     className=\"main_slider\"\n        //     threshold={20} // 터치 감도를 조정합니다. 숫자가 클수록 터치에 반응하지 않습니다.\n        //     autoplay={{ delay: 4000 }}\n        //     loop={true}\n        //     speed={1000} // 슬라이드가 넘어가는 속도를 조정합니다. 단위는 ms입니다.\n        // >\n        //     <SwiperSlide>\n        <UserMainContainer>\n            <UserMainInnerContainer>\n                {/* <TitleSticker>위드메이트를 사용하는 것, 일상을 돌려받는 것</TitleSticker> */}\n                <TitleSticker>\n                    병원동행매니저가 <span>케어</span>부터 <span>이동</span>까지 다 해드립니다\n                </TitleSticker>\n                <WithmateSpecRow>\n                    {/* 전국민 통원치료 <span>해결사</span> */}\n                    환우 가족들이 <span>직접 추천</span>하는\n                </WithmateSpecRow>\n                <WithmateSpecRow>\n                    <span>병원동행서비스</span>\n                </WithmateSpecRow>\n                <br />\n                <WithmateSpecRow>\n                    <ButtonWrapper>\n                        <GooglePlayButton\n                            onClick={() => {\n                                window.open('https://play.google.com/store/apps/details?id=com.bluecamel.withmate');\n                            }}\n                        >\n                            <img src='/assets/images/icons/google_play_logo.png' alt='구글플레이' style={{ marginRight: '12px' }} />\n                            Google Play\n                        </GooglePlayButton>\n                    </ButtonWrapper>\n                </WithmateSpecRow>\n\n                <BottomSection>\n                    <HighLight>\n                        {/* <MainNumber /> */}\n                        <Popup />\n                    </HighLight>\n\n                    <HighLight>\n                        병원동행매니저가 케어부터 이동까지 <br />\n                        위드메이트가 함께합니다.\n                    </HighLight>\n                    <ButtonWrapper>\n                        <ReserveButton\n                            onClick={() => {\n                                if (!localStorage.getItem('id')) {\n                                    message.warning('병원 동행서비스 예약을 이용하시려면 로그인 후 이용해주세요.');\n                                    return history.push('/user/login');\n                                }\n\n                                history.push('/reserve/items');\n                            }}\n                        >\n                            온라인 예약하기\n                            <img src='/assets/images/main_right_blue.png' alt='방향표' />\n                        </ReserveButton>\n                        <CallButton\n                            onClick={() => {\n                                swal.fire({\n                                    title: '위드메이트 고객센터',\n                                    text: '☎ 070-4300-9075',\n                                    icon: 'info',\n                                    confirmButtonText: '전화걸기',\n                                    cancelButtonText: '확인',\n                                    showCancelButton: true,\n                                }).then(result => {\n                                    if (result.isConfirmed) {\n                                        document.location.href = 'tel:070-4300-9075';\n                                    }\n                                });\n                            }}\n                        >\n                            전화 상담하기\n                            <img src='/assets/images/main_right_white.png' alt='방향표' />\n                        </CallButton>\n                    </ButtonWrapper>\n                </BottomSection>\n            </UserMainInnerContainer>\n        </UserMainContainer>\n        //     </SwiperSlide>\n        // </Swiper>\n    );\n};\n\nconst UserMainContainer = styled.div`\n    width: 100%;\n    height: 628px;\n\n    background: linear-gradient(to top, #3bc1ff, #5b62f5);\n\n    @media (max-width: 768px) {\n        // height: 598px;\n        height: 650px;\n    }\n`;\n\nconst UserMainContainer2 = styled.div`\n    width: 100%;\n    height: 628px;\n\n    background: #f8f8fa;\n\n    @media (max-width: 768px) {\n        height: 598px;\n    }\n`;\n\nconst UserMainInnerContainer = styled.div`\n    width: 100%;\n    max-width: 1120px;\n    height: 100%;\n    margin: 0 auto;\n\n    background-image: url('/assets/images/w_main.png');\n    background-size: cover;\n    background-repeat: no-repeat;\n    background-position: center;\n\n    padding-top: 72px;\n\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n\n    @media (max-width: 768px) {\n        padding-top: 52px;\n        align-items: center;\n        background: transparent;\n    }\n`;\n\nconst UserMainInnerContainer2 = styled.div`\n    width: 100%;\n    max-width: 1120px;\n    height: 100%;\n    margin: 0 auto;\n\n    background-image: url('/assets/images/collaboration/withmate_dlive.png');\n    background-size: 90%;\n    background-repeat: no-repeat;\n    background-position: center;\n\n    padding-top: 72px;\n\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n\n    @media (max-width: 768px) {\n        padding-top: 52px;\n        align-items: center;\n        background: transparent;\n    }\n`;\n\nconst TitleSticker = styled.span`\n    height: 36px;\n\n    padding: 8px 24px;\n    font-size: 14px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    letter-spacing: normal;\n    text-align: left;\n    color: #ffffff;\n\n    border-radius: 50vh;\n    background-color: #3bc1ff;\n\n    margin-bottom: 34px;\n\n    @media (max-width: 768px) {\n        margin-bottom: 34px;\n    }\n`;\n\nconst WithmateSpecRow = styled.div`\n    display: flex;\n    align-items: flex-end;\n\n    font-size: 32px;\n    font-stretch: normal;\n    font-style: normal;\n    font-weight: 300;\n    line-height: 1.48;\n    letter-spacing: -0.7px;\n    text-align: left;\n    color: #ffffff;\n\n    > span {\n        font-size: 32px;\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.5;\n        letter-spacing: -0.7px;\n        text-align: left;\n        color: #ffffff;\n\n        margin-left: 4px;\n    }\n\n    > span.big {\n        font-size: 64px;\n        line-height: 1.2;\n        position: relative;\n        margin-right: 6px;\n\n        > d {\n            font-size: 28px;\n            position: absolute;\n            top: -16px;\n            left: calc(50% - 12px);\n        }\n    }\n\n    > span.normal {\n        font-size: 40px;\n        line-height: 1.2;\n        position: relative;\n        margin-right: 6px;\n\n        > d {\n            font-size: 18px;\n            position: absolute;\n            top: -16px;\n            left: calc(50% - 12px);\n        }\n    }\n\n    margin-bottom: 4px;\n\n    @media (max-width: 768px) {\n        margin-bottom: 8px;\n\n        font-size: 22px;\n\n        > span {\n            font-size: 22px;\n        }\n\n        > span.big {\n            font-size: 48px;\n            line-height: 1.2;\n            position: relative;\n            margin-right: 4px;\n\n            > d {\n                font-size: 20px;\n                position: absolute;\n                top: -16px;\n                left: calc(50% - 8px);\n            }\n        }\n    }\n`;\n\nconst BottomSection = styled.div`\n    margin-top: 32px;\n\n    @media (max-width: 768px) {\n        margin-top: 43px;\n    }\n`;\n\nconst HighLight = styled.p`\n    font-size: 16px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.75;\n    letter-spacing: -0.2px;\n    text-align: left;\n    color: #ffffff;\n\n    margin-bottom: 64px;\n\n    @media (max-width: 768px) {\n        text-align: center;\n    }\n`;\n\nconst ButtonWrapper = styled.div`\n    display: flex;\n    align-items: flex-start;\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n        align-items: center;\n\n        > div:first-child {\n            margin-bottom: 8px;\n        }\n    }\n`;\n\nconst ButtonCommon = styled.div`\n    display: flex;\n    padding: 20px 24px;\n    width: 210px;\n    align-items: center;\n    justify-content: space-between;\n\n    border-radius: 4px;\n    margin-right: 8px;\n    cursor: pointer;\n\n    > img {\n        width: 24px;\n        height: 24px;\n        object-fit: contain;\n    }\n\n    box-shadow: 2px 4px 16px -4px rgba(0, 0, 0, 0.1);\n\n    &:hover {\n        box-shadow: 4px 10px 24px -4px rgba(0, 0, 0, 0.1);\n        transition: all 0.3s;\n    }\n\n    @media (max-width: 768px) {\n    }\n`;\n\nconst GPButtonCommon = styled.div`\n    display: flex;\n    padding: 20px 24px;\n    width: 210px;\n    align-items: center;\n    // justify-content: space-between;\n\n    border-radius: 4px;\n    margin-right: 8px;\n    cursor: pointer;\n\n    > img {\n        width: 24px;\n        height: 24px;\n        object-fit: contain;\n    }\n\n    box-shadow: 2px 4px 16px -4px rgba(0, 0, 0, 0.1);\n\n    &:hover {\n        box-shadow: 4px 10px 24px -4px rgba(0, 0, 0, 0.1);\n        transition: all 0.3s;\n    }\n\n    @media (max-width: 768px) {\n    }\n`;\n\nconst ReserveButton = styled(ButtonCommon)`\n    background-color: #ffffff;\n    font-size: 18px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.42;\n    letter-spacing: -0.1px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    @media (max-width: 768px) {\n    }\n`;\n\nconst CallButton = styled(ButtonCommon)`\n    border: 1px solid #ffffff;\n\n    font-size: 18px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.42;\n    letter-spacing: -0.1px;\n    text-align: left;\n    color: #ffffff;\n\n    @media (max-width: 768px) {\n    }\n`;\n\nconst GooglePlayButton = styled(GPButtonCommon)`\n    background-color: #ffffff;\n    background-color: rgba(255, 255, 255, 0.1);\n    border-color: #ffffff;\n    border-style: solid;\n    font-size: 20px;\n    // font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.42;\n    letter-spacing: -0.1px;\n    text-align: left;\n    // color: rgba(0, 0, 0, 0.7);\n    color: #ffffff;\n    height: 60px;\n\n    @media (max-width: 768px) {\n    }\n`;\n\nconst MobileBr = styled.br`\n    display: none;\n    @media (max-width: 768px) {\n        display: block;\n    }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\n\nexport const UserVideoSection = () => {\n    return (\n        <VideoSectionContainer>\n            <VideoSectionInnerContainer>\n                {/* <VideoSectionTitle>\n                    위드메이트를 사용하는 것,\n                    <MobileBr /> 일상을 돌려받는 것\n                </VideoSectionTitle> */}\n                <VideoArea>\n                    {/* <iframe\n                        width='100%'\n                        height='100%'\n                        src='/assets/videos/withmate_video.mp4'\n                        title='withmate YouTube video player'\n                        frameborder='0'\n                        allow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture'\n                        allowFullScreen\n                        autoplay='autoplay'\n                        loop='loop'\n                    ></iframe> */}\n                    <video controls loop='loop' autoplay='autoplay' muted playsinline width='800px' height='auto'>\n                        <source src='/assets/videos/withmate_video.mp4' />\n                    </video>\n                </VideoArea>\n            </VideoSectionInnerContainer>\n        </VideoSectionContainer>\n    );\n};\n\nconst VideoSectionContainer = styled.div`\n    // padding-top: 105px;\n    // padding-bottom: 208px;\n    padding-top: 55px;\n    padding-bottom: 55px;\n\n    width: 100%;\n    background-color: #f9f9f9;\n\n    @media (max-width: 768px) {\n        // padding-top: 62px;\n        padding-top: 10px;\n        // padding-bottom: 0px;\n        padding-bottom: 10px;\n    }\n`;\n\nconst VideoSectionInnerContainer = styled.div`\n    width: 100%;\n    max-width: 1120px;\n    margin: 0 auto;\n`;\n\nconst VideoSectionTitle = styled.h4`\n    font-size: 22px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.42;\n    letter-spacing: -0.5px;\n    text-align: center;\n    color: rgba(0, 0, 0, 0.6);\n\n    margin-top: 0px;\n    margin-bottom: 105px;\n\n    @media (max-width: 768px) {\n        font-size: 14px;\n        margin-bottom: 68px;\n    }\n`;\n\nconst VideoArea = styled.div`\n    width: 100%;\n    height: calc(1120px / 16 * 9);\n    background-color: #000000;\n\n    > iframe,\n    video {\n        width: 100%;\n        height: 100%;\n    }\n\n    @media (max-width: 1120px) {\n        height: calc(100vw / 16 * 9);\n    }\n\n    @media (max-width: 768px) {\n        width: 100%;\n        height: calc(100vw / 16 * 9);\n        background-color: #000000;\n\n        display: flex;\n        align-items: center;\n        justify-content: center;\n\n        > iframe,\n        video {\n            width: 100%;\n            height: 100%;\n        }\n    }\n`;\n\nconst MobileBr = styled.br`\n    display: none;\n    @media (max-width: 768px) {\n        display: block;\n    }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\n\nexport const UserGuideSection = () => {\n    return (\n        <UserGuideContainer>\n            <UserGuideInnerContainer>\n                <UserGuideTitle>서비스 이용 방법</UserGuideTitle>\n                <UserGuideStepWrapper>\n                    <TextStep>서비스 신청</TextStep>\n                    <ImgStep src='/assets/images/main_right_gray.png' alt='방향표' />\n                    <TextStep>동행 인력 매칭</TextStep>\n                    <ImgStep src='/assets/images/main_right_gray.png' alt='방향표' />\n                    <TextStep>병원 방문</TextStep>\n                    <ImgStep src='/assets/images/main_right_gray.png' alt='방향표' />\n                    <TextStep>서비스 결과 확인</TextStep>\n                    <ImgStep src='/assets/images/main_right_gray.png' alt='방향표' />\n                    <TextStep>후불 결제</TextStep>\n                    <ImgStep src='/assets/images/main_right_gray.png' alt='방향표' />\n                    <TextStep>혜택 적립</TextStep>\n                </UserGuideStepWrapper>\n\n                <MainStepRow>\n                    <MainStep\n                        webArrow\n                        mArrow\n                        source='/assets/images/main_step_1.png'\n                        description={`위드메이트 플랫폼에 회원 가입 후\\n병원 동행 서비스 종류를 선택하고\\n신청해주세요!`}\n                        num='01'\n                        name='신청하세요!'\n                    />\n                    <MainStep\n                        webArrow\n                        mArrow\n                        source='/assets/images/main_step_2.png'\n                        description={`접수하신 서비스는 24시간 내에\\n매칭 가능 여부가 결정됩니다. 동행 인력이\\n매칭을 시도하면 고객님께서 매칭 수락\\n여부를 결정하시면 됩니다!`}\n                        num='02'\n                        name='매칭되세요!'\n                    />\n                    <MainStep\n                        className='uniq'\n                        mArrow\n                        source='/assets/images/main_step_3.png'\n                        description={`동행 인력 매칭 성공 후 예정된 진료일에\\n병원에 다녀오세요! 병원에서 하실 일은\\n진료를 받는 것 밖에 없습니다.\\n진료 동행, 보호자 대행, 병원 행정 보조 등\\n 나머지는 위드메이트가 해드립니다.`}\n                        num='03'\n                        name='다녀오세요!'\n                    />\n                </MainStepRow>\n\n                <MainStepRow>\n                    <MainStep\n                        webArrow\n                        mArrow\n                        source='/assets/images/main_step_4.png'\n                        description={`위드메이트는 동행 서비스 진행 과정을\\n실시간 카카오 알림톡으로 알려드리고,\\n서비스 종료 후 진료 결과와 특이사항 등의\\n내용이 정리된 서비스 리포트를 제공합니다`}\n                        num='04'\n                        name='확인하세요!'\n                    />\n                    <MainStep\n                        webArrow\n                        mArrow\n                        source='/assets/images/main_step_5.png'\n                        description={`위드메이트는 정확한 시간 계산이 불가능한\\n병원 진료 특성상, 서비스 요금의 투명성을\\n위해 후불 결제를 진행하고 있습니다.\\n서비스 시간은 초 단위로 자동 계산되니,\\n안심하고 서비스를 받으세요!`}\n                        num='05'\n                        name='후불이에요!'\n                    />\n                    <MainStep\n                        source='/assets/images/main_step_6.png'\n                        description={`회원 가입만 해도 2,000 포인트를\\n지급해드리며, 매번 서비스 후기 작성을\\n할 때마다 최대 3,000 포인트를 지급해드려요!\\n적립된 포인트로 더 저렴하게 서비스를\\n이용해보세요!`}\n                        num='06'\n                        name='받아가세요!'\n                    />\n                </MainStepRow>\n            </UserGuideInnerContainer>\n        </UserGuideContainer>\n    );\n};\n\nconst MainStep = ({ webArrow, mArrow, source, num, name, description, className }) => {\n    return (\n        <MainStepWrapper className={className || ''}>\n            <MainStepImageSection>\n                <img className='bg' src={source} alt='thumbnail' />\n            </MainStepImageSection>\n\n            <MainStepTextSection>\n                <StepIndex>{num}</StepIndex>\n                <StepTitle>{name}</StepTitle>\n                <StepDescription>\n                    {description.split('\\n').map((word, index) => (\n                        <span key={'word-break-down-' + index.toString() + num}>\n                            {word}\n                            <KeepBr />\n                        </span>\n                    ))}\n                </StepDescription>\n            </MainStepTextSection>\n            <img className={`arrow ${webArrow && 'web'} ${mArrow && 'mobile'}`} src='/assets/images/w_main_stepper.png' />\n        </MainStepWrapper>\n    );\n};\n\nconst UserGuideContainer = styled.div`\n    width: 100%;\n\n    background-color: #ffffff;\n\n    padding-top: 103px;\n    padding-bottom: 162px;\n\n    @media (max-width: 768px) {\n        padding-top: 90px;\n        padding-bottom: 130px;\n    }\n`;\n\nconst UserGuideInnerContainer = styled.div`\n    width: 100%;\n    max-width: 1120px;\n    margin: 0 auto;\n`;\n\nconst UserGuideTitle = styled.h4`\n    font-size: 24px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.3;\n    letter-spacing: -0.5px;\n    text-align: center;\n    color: rgba(0, 0, 0, 0.7);\n\n    margin-top: 0px;\n    margin-bottom: 32px;\n\n    @media (max-width: 768px) {\n        font-size: 16px;\n        line-height: 1.42;\n        letter-spacing: -0.1px;\n        margin-bottom: 24px;\n    }\n`;\n\nconst UserGuideStepWrapper = styled.div`\n    width: 100%;\n\n    display: flex;\n    justify-content: center;\n    align-items: center;\n\n    margin-bottom: 90px;\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n        margin-bottom: 77px;\n    }\n`;\n\nconst TextStep = styled.span`\n    font-size: 15px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.33;\n    letter-spacing: normal;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.6);\n`;\n\nconst ImgStep = styled.img`\n    margin-left: 16px;\n    margin-right: 16px;\n\n    width: 24px;\n    height: 24px;\n    object-fit: contain;\n\n    @media (max-width: 768px) {\n        transform: rotate(90deg);\n\n        width: 16px;\n        height: 16px;\n\n        margin-left: 0px;\n        margin-right: 0px;\n\n        margin-top: 8px;\n        margin-bottom: 8px;\n    }\n`;\n\nconst MainStepRow = styled.div`\n    display: flex;\n    align-items: flex-start;\n\n    > div:first-child {\n        border-left: 0px;\n    }\n\n    > div:last-child {\n        border-right: 0px;\n    }\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n        align-items: center;\n\n        > div:last-child {\n            border-bottom: 0px;\n        }\n\n        > div.uniq {\n            border-bottom: 1px solid #f2f2f2;\n        }\n    }\n`;\n\nconst MainStepWrapper = styled.div`\n    padding-left: 47px;\n    padding-right: 52px;\n    border-right: 1px solid #f2f2f2;\n\n    position: relative;\n\n    > img.arrow {\n        width: 24px;\n        height: 24px;\n\n        position: absolute;\n        top: calc(90px - 12px);\n        right: -11.5px;\n\n        display: none;\n    }\n\n    > img.mobile {\n        display: none;\n    }\n\n    > img.web {\n        display: block;\n    }\n\n    @media (max-width: 768px) {\n        border-right: 0px;\n        border-bottom: 1px solid #f2f2f2;\n\n        > img.arrow {\n            width: 24px;\n            height: 24px;\n\n            top: unset;\n            right: unset;\n            bottom: -10px;\n            left: calc(50% - 12px);\n\n            transform: rotate(90deg);\n        }\n\n        > img.web {\n            display: none;\n        }\n\n        > img.mobile {\n            display: block;\n        }\n    }\n\n    @media (max-width: 768px) {\n        padding-right: 0px;\n        padding-left: 0px;\n        padding-bottom: 44px;\n    }\n`;\n\nconst MainStepImageSection = styled.div`\n    width: 288px;\n    height: 180px;\n\n    margin-bottom: 24px;\n\n    > img.bg {\n        width: 100%;\n        height: 100%;\n        object-fit: contain;\n    }\n\n    @media (max-width: 768px) {\n        width: 100%;\n        text-align: center;\n    }\n`;\n\nconst MainStepTextSection = styled.div`\n    display: flex;\n    align-items: center;\n    flex-direction: column;\n`;\n\nconst StepIndex = styled.span`\n    font-size: 14px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.43;\n    letter-spacing: normal;\n    text-align: center;\n    color: #afb0b2;\n    margin-bottom: 8px;\n\n    @media (max-width: 768px) {\n    }\n`;\n\nconst StepTitle = styled.span`\n    font-size: 18px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.26;\n    letter-spacing: -0.1px;\n    text-align: left;\n    margin-bottom: 24px;\n    color: rgba(0, 0, 0, 0.7);\n\n    @media (max-width: 768px) {\n    }\n`;\n\nconst StepDescription = styled.span`\n    font-size: 15px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.57;\n    letter-spacing: -0.3px;\n    text-align: center;\n    color: rgba(0, 0, 0, 0.7);\n\n    > span {\n        font-size: 15px;\n        font-weight: normal;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.57;\n        letter-spacing: -0.3px;\n        text-align: center;\n        color: rgba(0, 0, 0, 0.7);\n    }\n    word-break: keep-all;\n\n    @media (max-width: 768px) {\n    }\n`;\n\nconst KeepBr = styled.br`\n    display: block;\n    @media (max-width: 768px) {\n        display: block;\n    }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\n\nexport const UserMainBanner = ({ goPage }) => (\n    <BannerContainer>\n        <Description>\n            위드메이트에 대해 더 알고 싶으시죠? <br />\n            위드메이트를 소개해드릴게요!\n        </Description>\n        <LinkButton onClick={goPage}>\n            위드메이트 소개\n            <img src='/assets/images/main_right_white.png' />\n        </LinkButton>\n    </BannerContainer>\n);\n\nconst BannerContainer = styled.div`\n    width: 100%;\n    background-color: #3bc1ff;\n\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    flex-direction: column;\n\n    padding: 48px 0px;\n\n    @media (max-width: 480px) {\n        padding-top: 67px;\n        padding-bottom: 51px;\n    }\n`;\n\nconst Description = styled.p`\n    font-size: 15px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.57;\n    letter-spacing: -0.3px;\n    text-align: center;\n    color: #ffffff;\n\n    margin-bottom: 24px;\n\n    > br {\n        display: none;\n        @media (max-width: 480px) {\n            display: block;\n        }\n    }\n`;\n\nconst LinkButton = styled.a`\n    box-shadow: 2px 4px 16px -4px rgba(0, 0, 0, 0.1);\n    border: 1px solid #ffffff;\n    border-radius: 50vh;\n\n    padding: 20px 24px;\n\n    font-size: 18px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.42;\n    letter-spacing: -0.1px;\n    text-align: left;\n    color: #ffffff;\n\n    cursor: pointer;\n\n    > img {\n        width: 24px;\n        height: 24px;\n        object-fit: contain;\n\n        margin-left: 18px;\n    }\n    &:hover {\n        background-color: transparent;\n        color: #ffffff;\n    }\n`;\n","import styled from 'styled-components';\nimport { mainColor, sizeHandler } from '../../theme';\n\nconst HomeStyledContainer = styled.div`\n    padding-top: 55px;\n\n    .center-title {\n        text-align: center;\n        margin-bottom: 28px;\n\n        > p {\n            height: 52px;\n            line-height: 52px;\n            margin-bottom: 0px;\n            font-size: 28px;\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n        }\n    }\n\n    .ant-collapse > .ant-collapse-item > .ant-collapse-header {\n        padding: 0px;\n    }\n\n    .ant-collapse-borderless > .ant-collapse-item {\n        border: 0px;\n    }\n\n    .ant-collapse-content > .ant-collapse-content-box {\n        padding: 0px;\n        padding-top: 4px;\n        padding-bottom: 12px;\n    }\n\n    .fake-input {\n        width: 100%;\n        height: 36px;\n        border-radius: 4px;\n        border: 1px solid #e6e6e6;\n    }\n\n    .main-section {\n        position: relative;\n        width: 100%;\n        height: 100vh;\n        max-height: 628px;\n        // min-height: calc(100vh - 55px);\n\n        // background-color: #ebf9ff;\n        // background-image: url('/assets/images/new_mainbg.png');\n        background-color: linear-gradient(to top, #3bc1ff, #5b62f5);\n        background-image: url('/assets/images/w_main.png');\n        background-size: cover;\n        background-repeat: no-repeat;\n        background-position: center;\n\n        @media (max-width: 768px) {\n            background-image: url('/assets/images/new_mainbg-mobile.png');\n            min-height: 86vh;\n\n            .inner-container {\n                padding: 0px;\n                padding-bottom: 30px;\n                min-height: 86vh;\n\n                display: flex;\n                align-items: flex-end;\n                justify-content: flex-end;\n            }\n        }\n\n        .ant-input[disabled] {\n            color: rgba(0, 0, 0, 0.7);\n        }\n        .ant-input {\n            font-size: 12px;\n        }\n\n        .order-menu-wrapper {\n            width: 50%;\n            position: relative;\n            max-width: 440px;\n            min-width: 370px;\n            background-color: white;\n            border-radius: 8px;\n            box-shadow: 1px 2px 3.5px #e6e6e6;\n            padding: 32px;\n\n            .mobile-close-button {\n                display: none;\n            }\n\n            @media (max-width: 768px) {\n                display: none;\n\n                &.active {\n                    display: block;\n                }\n\n                margin: 0px auto;\n                position: fixed;\n                z-index: 99;\n                top: 55px;\n                left: 0px;\n                width: 100%;\n                max-width: 100%;\n                height: calc(100vh - 55px);\n                overflow: scroll;\n                border-radius: 0px;\n\n                .mobile-close-button {\n                    display: block;\n                    position: absolute;\n                    top: 16px;\n                    right: 24px;\n                    padding: 6px;\n                    cursor: pointer;\n\n                    img {\n                        width: 18px;\n                        height: 18px;\n                    }\n                }\n\n                &.blocked {\n                    z-index: 0;\n                    position: relative;\n                    height: auto;\n                    overflow: auto;\n                }\n            }\n\n            .order-title {\n                margin-bottom: 20px;\n\n                p {\n                    margin: 0px;\n                    padding: 0px;\n                    font-size: ${sizeHandler(28)};\n                    font-weight: bold;\n                    letter-spacing: -0.7px;\n                    color: rgba(0, 0, 0, 0.7);\n                }\n            }\n\n            .service {\n                margin-bottom: 20px;\n\n                .time-checker {\n                    width: calc(50% - 4px);\n                }\n\n                .time-checker.margin {\n                    margin-right: 8px;\n                }\n\n                .search-button {\n                    position: absolute;\n                    top: 1px;\n                    right: 1px;\n                    background-color: #ececec;\n                    height: 34px;\n                    width: 50px;\n                    border-top-right-radius: 4px;\n                    border-bottom-right-radius: 4px;\n\n                    font-size: 12px;\n                    line-height: 34px;\n                    text-align: center;\n                    cursor: pointer;\n                    color: rgba(0, 0, 0, 0.4);\n                }\n\n                .service-tab {\n                    display: flex;\n                    align-items: center;\n                    justify-content: center;\n                    border: 1px solid #ddd;\n                    border-radius: 6px;\n\n                    .tab {\n                        flex: 1;\n                        height: 48px;\n                        border-right: 1px solid #ddd;\n                        cursor: pointer;\n                        display: flex;\n                        justify-content: center;\n                        align-items: center;\n\n                        &:last-child {\n                            border: 0px;\n                        }\n\n                        span {\n                            font-size: ${sizeHandler(14)};\n                            letter-spacing: -0.2px;\n                            font-weight: bold;\n                            color: ${mainColor};\n                        }\n                    }\n\n                    .tab.active {\n                        background-color: ${mainColor};\n\n                        span {\n                            color: white;\n                        }\n                    }\n                }\n\n                .info-tab {\n                    display: flex;\n                    align-items: center;\n                    justify-content: center;\n\n                    p {\n                        flex: 1;\n                        margin: 0px;\n                        padding: 0px;\n                        text-align: left;\n\n                        &:first-child {\n                            margin-right: 8px;\n                        }\n                    }\n                }\n\n                .info-input-tab {\n                    display: flex;\n                    align-items: center;\n\n                    > div {\n                        flex: 1;\n\n                        &:first-child {\n                            margin-right: 8px;\n                        }\n                    }\n\n                    .name-wrapper {\n                        position: relative;\n\n                        .sex-type-wrapper {\n                            position: absolute;\n                            top: 1px;\n                            right: 1px;\n                            z-index: 3;\n                            background-color: white;\n\n                            .sex-type {\n                                display: inline-block;\n                                width: 34px;\n                                height: 34px;\n                                line-height: 36px;\n                                text-align: center;\n                                border-left: 1px solid #e6e6e6;\n\n                                font-size: ${sizeHandler(14)};\n                                font-weight: normal;\n                                letter-spacing: -0.2px;\n                                color: rgba(0, 0, 0, 0.2);\n                                cursor: pointer;\n\n                                &:hover {\n                                    color: rgba(0, 0, 0, 0.3);\n                                    transition: all 0.3s;\n                                }\n\n                                &.active {\n                                    color: ${mainColor};\n                                }\n                            }\n                        }\n                    }\n\n                    .input {\n                        flex-grow: 1;\n                        display: flex;\n                        min-width: 0;\n                        align-items: center;\n\n                        border-radius: 4px;\n                        border: solid 1px #e6e6e6;\n                        min-height: 36px;\n                        line-height: 36px;\n                        text-indent: 12px;\n                        font-size: ${sizeHandler(12)};\n                        letter-spacing: -0.3px;\n                        color: rgba(0, 0, 0, 0.8);\n                        background-color: #f5f5f5;\n                        cursor: not-allowed;\n\n                        p {\n                            white-space: nowrap;\n                            text-overflow: ellipsis;\n                            overflow: hidden;\n                        }\n\n                        // .ant-input {\n                        //     color: rgba(0, 0, 0, 0.8);\n                        // }\n\n                        &.phone {\n                            flex: 0.5;\n\n                            @media (max-width: 768px) {\n                                flex: 1;\n                            }\n                        }\n\n                        &.input-with-icon {\n                            p {\n                                height: 100%;\n                                flex: 1;\n                                text-overflow: ellipsis;\n                                overflow: hidden;\n                                white-space: nowrap;\n                            }\n\n                            div {\n                                height: 100%;\n                                width: 36px;\n                                border-left: 1px solid #e6e6e6;\n                                display: flex;\n                                justify-content: center;\n                                align-items: center;\n\n                                span {\n                                    text-align: center;\n                                    text-indent: 0px;\n                                    // opacity: 0.3;\n                                    font-size: ${sizeHandler(12)};\n                                    letter-spacing: -0.3px;\n                                    color: rgba(0, 0, 0, 0.8);\n\n                                    img {\n                                        width: 18px;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .service-fee-wrapper {\n                    margin-bottom: 32px;\n\n                    .service {\n                        display: flex;\n                        align-items: center;\n                        padding-top: 12px;\n                        margin-bottom: 0px;\n\n                        .name {\n                            flex: 1;\n                            font-size: ${sizeHandler(14)};\n                            letter-spacing: -0.3px;\n                            color: rgba(0, 0, 0, 0.7);\n                        }\n\n                        .fee {\n                            font-size: ${sizeHandler(14)};\n                            font-weight: bold;\n                            text-align: right;\n                            color: rgba(0, 0, 0, 0.7);\n                        }\n                    }\n                }\n\n                input {\n                    height: 36px;\n                    display: inline-block;\n                    width: 100%;\n                    overflow: hidden;\n                    text-overflow: ellipsis;\n                    white-space: nowrap;\n                }\n\n                .ant-input-number-input-wrap {\n                    height: 100%;\n\n                    .ant-input-number-input {\n                        height: 100%;\n                    }\n\n                    input {\n                        height: 100%;\n                    }\n                }\n\n                .select {\n                    display: inline-block;\n                    height: 36px;\n                    width: 100%;\n\n                    .ant-select-selection--single {\n                        height: 100%;\n                    }\n\n                    .ant-select-selection__rendered {\n                        line-height: 36px;\n                    }\n                }\n\n                .info {\n                    font-size: ${sizeHandler(12)};\n                    color: rgba(0, 0, 0, 0.7);\n                    margin-bottom: 4px;\n                    letter-spacing: -0.15px;\n                }\n\n                .ant-select-selection__rendered {\n                    margin-right: 34px;\n                    border-right: 1px solid #e6e6e6;\n                }\n\n                .ant-select-arrow {\n                    color: ${mainColor};\n                }\n\n                .image-with-text {\n                    display: flex;\n                    align-items: center;\n                    img {\n                        height: 18px;\n                        border: 0px;\n                    }\n\n                    p {\n                        flex: 1;\n                        margin: 0px;\n                        padding: 0px;\n                        margin-left: 12px;\n                        font-size: ${sizeHandler(18)};\n                        font-weight: bold;\n                        color: #3bc1ff;\n                    }\n                }\n            }\n\n            .side-summary-tab {\n                position: absolute;\n                top: 0px;\n                right: -380px;\n                width: 360px;\n                height: 100%;\n                background-color: white;\n                border-radius: 8px;\n                box-shadow: 1px 2px 3.5px #e6e6e6;\n                padding: 32px;\n                overflow: hidden;\n                display: flex;\n                flex-direction: column;\n\n                @media (max-width: 768px) {\n                    width: 100%;\n                    height: auto;\n                    border-radius: 0px;\n                    box-shadow: none;\n                    padding: 0px;\n                    position: relative;\n                    top: 55px;\n                    left: 0px;\n                    background-color: transparent;\n                }\n\n                .refund-info-wrapper {\n                    flex: 1;\n                    display: flex;\n                    align-items: flex-end;\n\n                    .info-wrapper {\n                        width: 100%;\n\n                        .title {\n                            font-size: ${sizeHandler(12)};\n                            font-weight: bold;\n                            color: #a7a7a7;\n                            margin-bottom: 8px;\n                        }\n\n                        .info {\n                            font-size: ${sizeHandler(10)};\n                            line-height: ${sizeHandler(16)};\n                            color: rgba(0, 0, 0, 0.7);\n                        }\n\n                        @media (max-width: 768px) {\n                            margin-top: 36px;\n                            padding-bottom: 20px;\n\n                            .info {\n                                margin-bottom: 60px;\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    .additional-fee {\n        p {\n            margin: 0px;\n            padding: 0px;\n            margin-top: 8px;\n            font-size: ${sizeHandler(10)};\n            color: rgba(0, 0, 0, 0.7);\n        }\n    }\n\n    .ant-input-number {\n        width: 100%;\n        height: 48px;\n\n        .ant-input-number-input-wrap {\n            height: 100%;\n\n            .ant-input-number-input {\n                height: 100%;\n            }\n\n            input {\n                height: 100%;\n            }\n        }\n\n        .ant-input-number-handler-wrap {\n            opacity: 1;\n            width: 48px;\n\n            span {\n                display: flex;\n                align-items: center;\n                justify-content: center;\n\n                i {\n                    position: relative;\n                    margin-top: 0px;\n                    left: 0px;\n                    top: 0px;\n                    bottom: 0px;\n                    right: 0px;\n                    font-size: 16px;\n                }\n            }\n            .anticon.anticon-up.ant-input-number-handler-up-inner {\n                color: ${mainColor};\n            }\n            .anticon.anticon-down.ant-input-number-handler-down-inner {\n                color: ${mainColor};\n            }\n        }\n    }\n\n    .total-fee-wrapper {\n        padding: 18px 0px;\n        border-top: 1px solid #e6e6e6;\n        border-bottom: 1px solid #e6e6e6;\n\n        .total-fee {\n            display: flex;\n            align-items: center;\n\n            .total-min {\n                flex: 1;\n                font-size: ${sizeHandler(14)};\n                // font-weight: bold;\n                letter-spacing: -0.5px;\n                color: rgba(0, 0, 0, 0.7);\n            }\n\n            .fee-min {\n                font-size: ${sizeHandler(14)};\n                letter-spacing: -0.5px;\n                text-align: right;\n                // font-weight: bold;\n                // color: #3bc1ff;\n\n                color: rgba(0, 0, 0, 0.7);\n            }\n\n            span.vat {\n                font-size: ${sizeHandler(11)};\n                color: #565656;\n            }\n        }\n\n        .total {\n            flex: 1;\n            font-size: ${sizeHandler(16)};\n            font-weight: bold;\n            letter-spacing: -0.5px;\n            color: rgba(0, 0, 0, 0.7);\n        }\n\n        .fee {\n            font-size: ${sizeHandler(16)};\n            font-weight: bold;\n            letter-spacing: -0.5px;\n            text-align: right;\n            color: #3bc1ff;\n        }\n    }\n\n    // 여기\n    .service-section {\n        .concept-container {\n            margin-bottom: 68px;\n\n            .concept-title {\n                font-size: 24px;\n                font-weight: bold;\n                line-height: 2.17;\n                letter-spacing: -0.67px;\n                color: rgba(0, 0, 0, 0.8);\n                margin-bottom: 12px;\n            }\n\n            .concept-body {\n                font-size: 18px;\n                font-weight: normal;\n                line-height: 1.78;\n                letter-spacing: -0.3px;\n                color: rgba(0, 0, 0, 0.8);\n\n                @media (max-width: 768px) {\n                    font-size: 16px;\n                }\n            }\n        }\n\n        .service-item:last-child {\n            border-top: 1px solid #e6e6e6;\n            margin-top: 96px;\n            padding-top: 96px;\n        }\n\n        .service-item {\n            .service-name {\n                p {\n                    font-size: ${sizeHandler(36)};\n                    font-weight: bold;\n                    letter-spacing: -1px;\n                    color: rgba(0, 0, 0, 0.8);\n\n                    position: relative;\n\n                    .stamp {\n                        margin-left: 20px;\n                        padding: 8px 12px;\n                        border-radius: 4px;\n                        background-color: #ff0052;\n                        font-size: 10px;\n                        font-weight: bold;\n                        text-align: center;\n                        color: #ffffff;\n\n                        position: absolute;\n                        bottom: 6px;\n                    }\n                }\n\n                margin-bottom: 12px;\n            }\n\n            .mobile {\n                display: none;\n            }\n\n            .desktop {\n                display: block;\n            }\n\n            .service-info {\n                display: flex;\n                align-items: center;\n\n                .service-photo {\n                    flex: 1;\n                    display: flex;\n                    align-items: center;\n                    justify-content: flex-start;\n                    padding-left: 60px;\n\n                    img {\n                        // height: 100%;\n                        width: 100%;\n                    }\n                }\n\n                .info-wrapper {\n                    flex: 2;\n\n                    .main-description {\n                        font-size: ${sizeHandler(18)};\n                        color: rgba(0, 0, 0, 0.8);\n                        letter-spacing: -0.3px;\n                        margin-bottom: 32px;\n\n                        @media (max-width: 768px) {\n                            font-size: 16px;\n                        }\n                    }\n\n                    .service-detail {\n                        display: flex;\n                        align-item: center;\n\n                        .target-price {\n                            // flex: ;\n                            min-width: 240px;\n\n                            .target {\n                                margin-bottom: 36px;\n                            }\n                        }\n\n                        .scheme {\n                            flex: 1;\n                            margin-left: 20px;\n\n                            .scheme-items {\n                                p {\n                                    font-size: ${sizeHandler(14)};\n                                    letter-spacing: -0.3px;\n                                    color: rgba(0, 0, 0, 0.7);\n                                    height: 38px;\n                                    line-height: 38px;\n                                    margin: 0px;\n                                    padding: 0px;\n                                    overflow: hidden;\n                                    text-overflow: ellipsis;\n                                    white-space: nowrap;\n                                }\n                                border-bottom: 1px solid #e6e6e6;\n                            }\n\n                            .ps {\n                                font-size: ${sizeHandler(14)};\n                                color: ${mainColor};\n                                // font-weight: bold;\n                                height: 28px;\n                                line-height: 28px;\n\n                                &:nth-child(2n-1) {\n                                    color: #ff5500;\n                                }\n                            }\n                        }\n                    }\n\n                    .detail-button-wrapper {\n                        min-width: 240px;\n                        margin-top: 40px;\n                        background-color: #606060;\n                        border-radius: 4px;\n                        height: 48px;\n                        cursor: pointer;\n\n                        p {\n                            width: 100%;\n                            height: 100%;\n                            text-align: center;\n                            line-height: 48px;\n                            font-size: ${sizeHandler(14)};\n                            color: white;\n                            font-weight: bold;\n                        }\n                    }\n\n                    .reserve-button-wrapper {\n                        flex: 1;\n\n                        margin-top: 40px;\n                        background-color: ${mainColor};\n                        border-radius: 4px;\n                        height: 48px;\n                        cursor: pointer;\n\n                        p {\n                            width: 100%;\n                            height: 100%;\n                            text-align: center;\n                            line-height: 48px;\n                            font-size: ${sizeHandler(14)};\n                            color: white;\n                            font-weight: bold;\n                        }\n                    }\n\n                    .title {\n                        font-size: ${sizeHandler(18)};\n                        font-weight: bold;\n                        color: rgba(0, 0, 0, 0.8);\n                        margin-top: 36px;\n                        margin-bottom: 8px;\n                    }\n\n                    .content {\n                        font-size: ${sizeHandler(14)};\n                        font-weight: bold;\n                        color: rgba(0, 0, 0, 0.7);\n                    }\n\n                    .price-content {\n                        font-size: ${sizeHandler(16)};\n                        font-weight: bold;\n                        color: #606060;\n                        letter-spacing: -0.3px;\n                    }\n\n                    .info-container {\n                        .spec-title {\n                            font-size: 18px;\n                            font-weight: bold;\n                            line-height: 1.56;\n                            letter-spacing: normal;\n                            color: rgba(0, 0, 0, 0.8);\n                        }\n\n                        .spec-wrapper {\n                            padding: 8px 0px;\n                            border-bottom: 1px solid #e6e6e6;\n\n                            .spec-row {\n                                font-size: 14px;\n                                letter-spacing: -0.3px;\n                                color: rgba(0, 0, 0, 0.7);\n                                margin: 0px;\n                            }\n\n                            .spec-sub {\n                                font-size: 12px;\n                                letter-spacing: -0.26px;\n                                color: #a7a7a7;\n                                margin: 0px;\n                                margin-top: 4px;\n                            }\n                        }\n                    }\n\n                    .button-container {\n                        display: flex;\n                        align-items: center;\n                        margin-top: 32px;\n\n                        .button {\n                            border-radius: 4px;\n                            height: 48px;\n                            line-height: 48px;\n                            text-align: center;\n                            cursor: pointer;\n\n                            &.video-button {\n                                width: 285px;\n                                background-color: #606060;\n                                margin-right: 20px;\n\n                                &:hover {\n                                    transition: all 0.3s;\n                                    background-color: #707070;\n                                }\n                            }\n\n                            &.reserve-button {\n                                background-color: #3bc1ff;\n                                flex: 1;\n\n                                &:hover {\n                                    transition: all 0.3s;\n                                    background-color: #54c9ff;\n                                }\n                            }\n\n                            span {\n                                font-size: 14px;\n                                font-weight: bold;\n                                text-align: center;\n                                color: #ffffff;\n                            }\n                        }\n\n                        @media (max-width: 768px) {\n                            flex-direction: column;\n\n                            .button {\n                                width: 100% !important;\n                                margin-right: 0px !important;\n                                height: 40px;\n                                line-height: 40px;\n\n                                &:last-child {\n                                    margin-top: 16px;\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        @media (max-width: 768px) {\n            .service-item {\n                .service-name {\n                    p {\n                        font-size: ${sizeHandler(30)};\n\n                        .stamp {\n                            padding: 4px 8px;\n                            bottom: 8px;\n                        }\n                    }\n                }\n\n                .service-info {\n                    display: block;\n\n                    .service-photo {\n                        margin-top: 40px;\n                        padding-left: 0px;\n\n                        img {\n                            width: 100%;\n                        }\n                    }\n\n                    .info-wrapper {\n                        width: 100%;\n\n                        > p {\n                            font-size: ${sizeHandler(16)};\n                        }\n\n                        .service-detail {\n                            flex-direction: column;\n\n                            .service-photo {\n                                display: none;\n                            }\n\n                            .scheme {\n                                margin: 0px;\n                            }\n                        }\n\n                        .detail-button-wrapper {\n                            display: block;\n                            width: 100%;\n                            height: 40px;\n\n                            p {\n                                line-height: 40px;\n                            }\n                        }\n\n                        .reserve-button-wrapper {\n                            display: block;\n                            width: 100%;\n                            height: 40px;\n\n                            p {\n                                line-height: 40px;\n                            }\n                        }\n                        .mobile {\n                            display: block;\n                        }\n\n                        .desktop {\n                            display: none;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    .reserve-section {\n        .menu-top {\n            display: flex;\n            align-items: flex-end;\n            margin-bottom: 16px;\n\n            .main-title {\n                flex: 1;\n                font-size: 28px;\n                font-weight: bold;\n                letter-spacing: -1px;\n                color: rgba(0, 0, 0, 0.8);\n            }\n\n            .sub-button {\n                color: ${mainColor};\n                font-weight: bold;\n                font-size: 14px;\n                cursor: pointer;\n            }\n        }\n\n        .menu-bottom {\n            .reserve-menu {\n                display: flex;\n                align-items: center;\n                justify-content: center;\n                padding: 20px;\n                margin-bottom: 12px;\n                border-radius: 4px;\n                box-shadow: 2px 2px 10px 3px rgba(0, 0, 0, 0.1);\n                background-color: #ffffff;\n\n                .title {\n                    color: #a7a7a7;\n                    font-size: ${sizeHandler(12)};\n                    font-weight: bold;\n                    margin: 0px;\n                    padding: 0px;\n                }\n\n                .contents {\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    color: #606060;\n                    margin: 0px;\n                    padding: 0px;\n                    white-space: nowrap;\n                    overflow: hidden;\n                    text-overflow: ellipsis;\n                }\n\n                .service-name {\n                    flex: 0.7;\n                    .contents {\n                        color: ${mainColor};\n                    }\n                }\n\n                .user {\n                    flex: 0.5;\n                }\n\n                .date {\n                    flex: 0.7;\n                }\n\n                .hospital {\n                    flex: 1;\n                }\n\n                .status {\n                    flex: 0.4;\n                }\n\n                .button {\n                    flex: 0.5;\n                    > div {\n                        display: flex;\n                        height: 48px;\n                        border-radius: 4px;\n                        align-items: center;\n                        justify-content: center;\n                        border: 1px solid ${mainColor};\n                        cursor: pointer;\n                        transition: all 0.3s;\n\n                        span {\n                            font-size: ${sizeHandler(14)};\n                            font-weight: bold;\n                            color: ${mainColor};\n                        }\n\n                        &:hover {\n                            background-color: ${mainColor};\n                            span {\n                                color: white;\n                            }\n                        }\n                    }\n                }\n\n                .content.service {\n                    color: ${mainColor};\n                }\n            }\n            @media (max-width: 768px) {\n                .reserve-menu {\n                    flex-direction: column;\n                    align-items: flex-start;\n                    justify-content: flex-start;\n\n                    .contents {\n                        margin-bottom: 20px;\n                    }\n\n                    .button {\n                        width: 100%;\n                        > div {\n                            height: 40px;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    .section-title {\n        padding-bottom: 16px;\n        border-bottom: 1px solid #ececec;\n        margin-bottom: 48px;\n\n        p {\n            font-size: ${sizeHandler(18)};\n            color: #a7a7a7;\n            font-weight: bold;\n            margin: 0px;\n            padding: 0px;\n            opacity: 1;\n        }\n    }\n\n    .order-menu-mobile-wrapper {\n        // position: absolute;\n        // bottom: 68px;\n        // left: 0;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        flex-direction: column;\n        width: 100%;\n        padding: 10px;\n\n        p {\n            text-align: center;\n            font-size: ${sizeHandler(24)};\n            font-weight: bold;\n            color: white;\n        }\n\n        p:nth-child(1) {\n            font-size: ${sizeHandler(14)};\n            font-weight: normal;\n            letter-spacing: -0.3px;\n            text-align: center;\n            color: white;\n            lineheight: ${sizeHandler(20)};\n        }\n\n        button {\n            width: 100%;\n            height: 56px;\n            font-size: ${sizeHandler(16)};\n            font-weight: bold;\n            text-align: center;\n            color: #ffffff;\n            margin-top: 28px;\n        }\n\n        @media (min-width: 768px) {\n            display: none;\n        }\n    }\n`;\n\nexport default HomeStyledContainer;\n\nexport const UserMainContainer = styled.div`\n    width: 100%;\n    // min-height: calc(100vh - 55px);\n    // background-image: url('/assets/images/');\n\n    height: 100vh;\n    max-height: 628px;\n\n    background-color: linear-gradient(to top, #3bc1ff, #5b62f5);\n    background-image: url('/assets/images/w_main.png');\n\n    background-size: cover;\n    background-repeat: no-repeat;\n    background-position: center;\n\n    padding-top: calc((100vh - 55px) * 0.2);\n\n    @media (max-width: 768px) {\n        background-size: cover;\n        background-image: url('/assets/images/new_mainbg-mobile.png');\n\n        min-height: initial;\n        height: 600px;\n\n        padding-top: 354px;\n    }\n`;\n\nexport const InnerContainer = styled.div`\n    width: 100%;\n    max-width: 1120px;\n    margin: 0 auto;\n\n    @media (max-width: 1120px) {\n        padding-left: 32px;\n        padding-right: 32px;\n    }\n\n    @media (max-width: 768px) {\n        padding-left: 0px;\n        padding-right: 0px;\n    }\n`;\n\nexport const UserMainTitle = styled.div`\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: bold;\n    font-size: 50px;\n    line-height: 66px;\n\n    letter-spacing: -1.44444px;\n\n    color: #ffffff;\n\n    position: relative;\n    margin-bottom: 16px;\n\n    @media (max-width: 768px) {\n        > br {\n            display: block;\n        }\n\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: bold;\n        font-size: 22px;\n        line-height: 30px;\n\n        text-align: center;\n        color: #ffffff;\n\n        margin-bottom: 4px;\n    }\n`;\n\nexport const UserMainTitleDeco = styled.img`\n    position: absolute;\n\n    object-fit: contain;\n\n    @media (max-width: 768px) {\n        display: none;\n    }\n`;\n\nexport const DecoRight = styled(UserMainTitleDeco)`\n    top: 0px;\n    left: 240px;\n\n    width: 32px;\n    height: 32px;\n`;\n\nexport const DecoLeft = styled(UserMainTitleDeco)`\n    top: 36px;\n    left: -60px;\n\n    width: 22px;\n    height: 22px;\n`;\n\nexport const DecoLeftTop = styled(UserMainTitleDeco)`\n    top: -52px;\n    left: -62px;\n\n    width: 62px;\n    height: 62px;\n`;\n\nexport const UserMainSubtitle = styled.p`\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: normal;\n    font-size: 22px;\n    line-height: 30px;\n    color: rgba(255, 255, 255, 0.8);\n    letter-spacing: -0.4px;\n\n    margin-bottom: 44px;\n\n    @media (max-width: 768px) {\n        font-weight: normal;\n        font-size: 12px;\n        line-height: 22px;\n        letter-spacing: -0.3px;\n        text-align: center;\n\n        margin-bottom: 24px;\n    }\n`;\n\nexport const UserMainRoute = styled.div`\n    width: 100%;\n\n    @media (max-width: 768px) {\n        text-align: center;\n    }\n`;\n\nexport const UserMainRouteButton = styled.a`\n    display: inline-block;\n    width: 100%;\n    max-width: 360px;\n    height: 64px;\n    line-height: 64px;\n\n    background: #3bc1ff;\n    border: 1px solid #3bc1ff;\n    box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.1);\n    border-radius: 4px;\n\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: bold;\n    font-size: 19px;\n    letter-spacing: 0.2;\n\n    text-align: center;\n\n    color: #ffffff;\n    cursor: pointer;\n\n    &:hover {\n        transition: 0.5s;\n        opacity: 0.85;\n    }\n\n    @media (max-width: 768px) {\n        width: calc(100vw - 20px);\n        max-width: 360px;\n\n        height: 56px;\n        line-height: 56px;\n        font-size: 16px;\n\n        margin: 0 auto;\n    }\n`;\n\nexport const PartnerContainer = styled.div`\n    width: 100%;\n\n    padding-top: 60px;\n    padding-bottom: 60px;\n\n    @media (max-width: 768px) {\n        margin-top: 40px;\n    }\n`;\n\nexport const PartnerInnerContainer = styled.div`\n    width: 100%;\n    max-width: 1120px;\n\n    margin: 0 auto;\n\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    flex-direction: column;\n\n    position: relative;\n\n    -ms-overflow-style: none; /* IE and Edge */\n    scrollbar-width: none; /* Firefox */\n    &::-webkit-scrollbar {\n        display: none;\n    }\n\n    @media (max-width: 768px) {\n        padding-left: 24px;\n        padding-right: 24px;\n    }\n`;\n\nexport const PartnerTitle = styled.div`\n    display: flex;\n    flex-direction: column;\n    width: auto;\n\n    align-items: center;\n    margin-top: 10px;\n    margin-bottom: 46px;\n\n    > img {\n        width: 24px;\n        height: 24px;\n        object-fit: contain;\n\n        margin-bottom: 16px;\n    }\n\n    > span {\n        font-size: 24px;\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.3;\n        letter-spacing: -0.5px;\n        text-align: center;\n        // color: #3bc1ff;\n    }\n\n    @media (max-width: 1120px) {\n        width: 100%;\n        text-align: left;\n    }\n`;\n\nexport const PartnerListRow = styled.div`\n    display: flex;\n    width: 100%;\n\n    justify-content: space-between;\n    align-items: center;\n    text-align: center;\n    flex-wrap: wrap;\n\n    @media (max-width: 768px) {\n        justify-content: flex-start;\n    }\n\n    @media (max-width: 480px) {\n        justify-content: space-between;\n\n        > div:nth-child(2n) {\n            margin-right: 0px;\n        }\n    }\n`;\n\nexport const PartnerItem = styled.div`\n    margin-bottom: 10px;\n\n    width: 215px;\n    height: 76px;\n\n    border-radius: 4px;\n    // box-shadow: 2px 4px 16px -4px rgba(0, 0, 0, 0.1);\n    // border: 1px solid rgba(0, 0, 0, 0.1);\n\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    > img {\n        height: 100%;\n        width: 100%;\n        object-fit: cover;\n        transform: scale(1.1);\n    }\n\n    @media (max-width: 768px) {\n        margin-right: 8px;\n        margin-bottom: 8px;\n    }\n\n    @media (max-width: 480px) {\n        width: calc(50% - 4px);\n        height: calc((50vw - 24px) * 0.35);\n    }\n`;\n\nexport const SectionHeader = styled.div`\n    padding-bottom: 10px;\n    margin-bottom: 66px;\n\n    border-bottom: 1px solid #e9e9e9;\n\n    display: flex;\n    align-items: flex-end;\n\n    > img {\n        width: 58px;\n        height: 76px;\n        object-fit: contain;\n\n        margin-right: 16px;\n    }\n\n    > span {\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: bold;\n        font-size: 26px;\n        line-height: 50px;\n\n        text-align: center;\n        letter-spacing: -0.777778px;\n\n        color: rgba(0, 0, 0, 0.8);\n    }\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n        align-items: center;\n        justify-content: center;\n        > img {\n            width: 48px;\n            height: 48px;\n\n            margin-bottom: 10px;\n        }\n\n        > span {\n            font-size: 20px;\n            line-height: 32px;\n            text-align: center;\n            letter-spacing: -0.555556px;\n        }\n    }\n`;\n\nexport const ServiceListContainer = styled.div`\n    margin-bottom: 102px;\n\n    @media (max-width: 1120px) {\n        padding-left: 20px;\n        padding-right: 20px;\n    }\n`;\n\nexport const ServiceListInnerContainer = styled.div`\n    width: 100%;\n    max-width: 1120px;\n\n    margin: 0 auto;\n`;\n\nexport const ServiceBoxWrapper = styled.div`\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n    }\n`;\n\nexport const ServiceBoxContainer = styled.div`\n    margin-right: 20px;\n\n    &:last-child {\n        margin-right: 0px;\n    }\n\n    @media (max-width: 768px) {\n        margin-right: 0px;\n    }\n\n    margin-bottom: 46px;\n`;\n\nexport const ServiceBoxHeader = styled.div`\n    > p:first-child {\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: bold;\n        font-size: 12px;\n        line-height: 26px;\n\n        letter-spacing: -0.3px;\n    }\n\n    > p:last-child {\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: bold;\n        font-size: 20px;\n        line-height: 32px;\n\n        letter-spacing: -0.6px;\n    }\n`;\n\nexport const ServiceBoxImageWrapper = styled.div`\n    border-radius: 6px;\n    overflow: hidden;\n`;\n\nexport const ServiceBoxImg = styled.img`\n    width: calc((1120px / 3) - (40px / 3));\n    max-width: 360px;\n    object-fit: contain;\n\n    @media (max-width: 1120px) {\n        max-width: 280px;\n    }\n\n    @media (max-width: 900px) {\n        max-width: 240px;\n    }\n\n    @media (max-width: 768px) {\n        max-width: 300px;\n    }\n`;\n\nexport const ServiceBoxButtons = styled.div`\n    width: 100%;\n    display: flex;\n\n    margin-top: -12px;\n`;\n\nexport const MoreButton = styled.a`\n    width: 132px;\n    height: 48px;\n\n    text-align: center;\n    line-height: 48px;\n\n    background: #606060;\n\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: bold;\n    font-size: 13px;\n\n    color: #ffffff;\n\n    cursor: pointer;\n`;\n\nexport const ActionButton = styled.span`\n    flex: 1;\n\n    height: 48px;\n    line-height: 48px;\n\n    text-align: center;\n\n    background: #3bc1ff;\n\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: bold;\n    font-size: 13px;\n\n    color: #ffffff;\n\n    > img {\n        margin-right: 6px;\n\n        width: 18px;\n        height: 18px;\n        object-fit: contain;\n    }\n\n    cursor: pointer;\n`;\n\nexport const IntroduceSection = styled.div`\n    display: flex;\n    align-items: center;\n\n    margin-bottom: 40px;\n\n    > div {\n        width: 50%;\n        flex: 1;\n    }\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n    }\n`;\n\nexport const IntroduceSectionFst = styled(IntroduceSection)`\n    div.text-block {\n        @media (max-width: 768px) {\n            order: 2;\n            width: 100%;\n\n            p {\n                text-align: center;\n            }\n        }\n    }\n\n    div.img-block {\n        position: relative;\n        text-align: center;\n\n        display: flex;\n        align-items: center;\n        height: 100px;\n\n        img {\n            position: absolute;\n            bottom: -50px;\n\n            left: 5%;\n\n            width: 50%;\n            object-fit: contain;\n        }\n\n        @media (max-width: 768px) {\n            order: 1;\n            width: 100%;\n            justify-content: center;\n\n            margin-bottom: 14px;\n\n            > img {\n                position: initial;\n            }\n        }\n    }\n`;\n\nexport const IntroduceSectionSnd = styled(IntroduceSection)`\n    div.text-block {\n        @media (max-width: 768px) {\n            width: 100%;\n        }\n    }\n\n    div.img-block {\n        text-align: center;\n        width: 100%;\n\n        img {\n            width: 50%;\n            object-fit: cover;\n\n            @media (max-width: 768px) {\n                object-fit: contain;\n                margin-bottom: 14px;\n            }\n        }\n    }\n`;\n\nexport const IntroduceSectionTrd = styled(IntroduceSection)`\n    div.text-block {\n        @media (max-width: 768px) {\n            width: 100%;\n        }\n    }\n\n    div.img-block {\n        text-align: center;\n        width: 100%;\n\n        img {\n            width: 50%;\n            object-fit: cover;\n\n            @media (max-width: 768px) {\n                width: 65%;\n                object-fit: contain;\n                margin-bottom: 14px;\n            }\n        }\n    }\n`;\n\nexport const IntroduceTitle = styled.p`\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: bold;\n    font-size: 22px;\n    line-height: 48px;\n\n    letter-spacing: -0.666667px;\n\n    color: rgba(0, 0, 0, 0.8);\n\n    @media (max-width: 768px) {\n        font-size: 18px;\n        line-height: 28px;\n        letter-spacing: -0.5px;\n    }\n`;\n\nexport const IntroduceContent = styled.p`\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: normal;\n    font-size: ${props => (props.small ? '13px' : '16px')};\n    line-height: ${props => (props.small ? '22px' : '30px')};\n\n    letter-spacing: -0.3px;\n    color: rgba(0, 0, 0, 0.7);\n\n    > span {\n        font-weight: bold;\n    }\n\n    @media (max-width: 768px) {\n        word-break: keep-all;\n        font-size: ${props => (props.small ? '12px' : '14px')};\n        line-height: ${props => (props.small ? '20px' : '23px')};\n    }\n`;\n\nexport const MobileBr = styled.br`\n    display: none;\n    @media (max-width: 768px) {\n        display: block;\n    }\n`;\n\nexport const DesktopBr = styled.br`\n    display: block;\n    @media (max-width: 768px) {\n        display: none;\n    }\n`;\n\nexport const SpecListRow = styled.div`\n    display: flex;\n    align-items: flex-start;\n\n    width: 100%;\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n    }\n`;\n\nexport const SpecWrapper = styled.div`\n    margin-bottom: 28px;\n    margin-right: 20px;\n\n    &:last-child {\n        margin-right: 0px;\n    }\n\n    width: calc((100% / 3) - (40px / 3));\n\n    @media (max-width: 768px) {\n        width: 100%;\n        margin-right: 0px;\n    }\n`;\n\nexport const SpecIndex = styled.p`\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: bold;\n    font-size: 12px;\n    line-height: 16px;\n\n    letter-spacing: -0.333333px;\n    color: rgba(0, 0, 0, 0.2);\n\n    margin-bottom: 4px;\n`;\n\nexport const SpecTitleWrapper = styled.div`\n    display: flex;\n    align-items: center;\n\n    text-align: left;\n\n    > img {\n        width: 24px;\n        height: 24px;\n\n        margin-right: 8px;\n        object-fit: contain;\n    }\n\n    > span {\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: bold;\n        font-size: 20px;\n        line-height: 44px;\n\n        letter-spacing: -0.666667px;\n\n        color: rgba(0, 0, 0, 0.8);\n    }\n`;\n\nexport const SpecContent = styled.p`\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: normal;\n    font-size: 13px;\n    line-height: 22px;\n\n    color: rgba(0, 0, 0, 0.7);\n\n    margin-bottom: 0px;\n\n    > span {\n        font-weight: bold;\n    }\n\n    @media (max-width: 768px) {\n        br {\n            display: block;\n        }\n    }\n`;\n\nexport const ButtonWrapper = styled.div`\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n\n    width: 360px;\n\n    > div,\n    span,\n    a {\n        width: calc(50% - 4px);\n    }\n\n    @media (max-width: 768px) {\n        margin: 0 auto;\n    }\n`;\n","import { message } from 'antd';\nimport React from 'react';\nimport styled from 'styled-components';\nimport swal from 'sweetalert2';\nimport Withmate from '../renew/img/new-gov-care.png';\n\nimport { PartnerListRow } from '../../home.styled';\n\nexport const UserSiteBanner = ({ }) => {\n    \n    // const baseUrl = '/assets/images/partners/';\n    // const fstRow = [\n    //     baseUrl + 'new-goyang.png',\n    //     baseUrl + 'ajuuniv.png',\n    //     baseUrl + 'new-gov-care.png',\n    //     baseUrl + 'new-goyang-happy.png',\n    //     baseUrl + 'new-goyang-society.png',\n    // ];\n    // const sndRow = [\n    //     baseUrl + 'new-junglang-woman.png',\n    //     baseUrl + 'new-paju_woman.png',\n    //     baseUrl + 'new-beatus.png',\n    //     baseUrl + 'new-cheongdam.png',\n    //     baseUrl + 'new-hyo-hospital.png',\n    // ];\n\n    return (\n        <UserMainContainer>\n            <UserMainInnerContainer>\n                <PartnerTitle>\n                    <span>위드메이트 파트너</span>\n                </PartnerTitle>\n\n                <PartnerListRow>\n                    <BannerButton type=\"button\" onClick={() => {\n                            //window.location.href = \"http://www.naver.com\" // 현재 페이지에서 열기\n                            window.open(\"http://www.naver.com\") //새로운 창에서 열기\n                    }}/>\n                    <BannerButton type=\"button\" onClick={() => {\n                        window.location.href = \"http://www.daum.net\"\n                    }}/>\n                    <BannerButton type=\"button\" onClick={() => {\n                        window.location.href = \"http://www.google.com\"\n                    }}/>\n                    <BannerButton type=\"button\" onClick={() => {\n                        window.location.href = \"http://www.nate.com\"\n                    }}/>\n                </PartnerListRow>\n                <br/><br/>\n                <PartnerListRow>\n                    <BannerButton type=\"button\" onClick={() => {\n                            window.location.href = \"http://www.naver.com\"\n                    }}/>\n                    <BannerButton type=\"button\" onClick={() => {\n                        window.location.href = \"http://www.naver.com\"\n                    }}/>\n                    <BannerButton type=\"button\" onClick={() => {\n                        window.location.href = \"http://www.naver.com\"\n                    }}/>\n                    <BannerButton type=\"button\" onClick={() => {\n                        window.location.href = \"http://www.naver.com\"\n                    }}/>\n                </PartnerListRow>\n            </UserMainInnerContainer>\n        </UserMainContainer>\n    );\n};\n\nconst UserMainContainer = styled.div`\n    width: 100%;\n    height: 350px;\n\n    background: #fff;\n\n    @media (max-width: 768px) {\n        height: 598px;\n    }\n`;\n\nconst UserMainInnerContainer = styled.div`\n    width: 100%;\n    max-width: 1120px;\n    height: 100%;\n    margin: 0 auto;\n\n    background-size: cover;\n    background-repeat: no-repeat;\n    background-position: center;\n\n    padding-top: 22px;\n\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n\n    @media (max-width: 768px) {\n        padding-top: 52px;\n        align-items: center;\n        background: transparent;\n    }\n`;\n\nconst ButtonCommon = styled.div`\n    display: flex;\n    padding: 20px 24px;\n    width: 210px;\n    align-items: center;\n    justify-content: space-between;\n\n    border-radius: 4px;\n    margin-right: 70px;\n    cursor: pointer;\n\n    box-shadow: 2px 4px 16px -4px rgba(0, 0, 0, 0.1);\n\n    &:hover {\n        box-shadow: 4px 10px 24px -4px rgba(0, 0, 0, 0.1);\n        transition: all 0.3s;\n    }\n\n    @media (max-width: 768px) {\n    }\n`;\n\nconst BannerButton = styled(ButtonCommon)`\n    background-image: url(${Withmate});\n    width: 210px;\n    height: 65px;\n    font-size: 18px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.42;\n    letter-spacing: -0.1px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    @media (max-width: 768px) {\n    }\n`;\n\nexport const PartnerTitle = styled.div`\n    display: flex;\n    flex-direction: column;\n    width: auto;\n\n    align-items: center;\n    margin-top: 10px;\n    margin-bottom: 46px;\n\n    > span {\n        font-size: 24px;\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.3;\n        letter-spacing: -0.5px;\n        text-align: center;\n        color: #3bc1ff;\n    }\n\n    @media (max-width: 1120px) {\n        width: 100%;\n        text-align: left;\n    }\n`;\n\n","import React from 'react';\nimport CountUp from 'react-countup';\nimport styled from 'styled-components';\n\nimport { DivisionLine, WithmateLabel } from '../../../../Components/Common/input';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faUsers, faHospitalUser } from '@fortawesome/free-solid-svg-icons';\nimport { faRectangleList } from '@fortawesome/free-regular-svg-icons';\n\nimport { Swiper, SwiperSlide } from 'swiper/react';\nimport SwiperCore, { Pagination, Navigation, Autoplay } from 'swiper';\nimport 'swiper/swiper-bundle.min.css';\nimport 'swiper/swiper.min.css';\nimport 'swiper/components/navigation/navigation.min.css';\nimport 'swiper/components/pagination/pagination.min.css';\nimport { MobileBr } from '../../home.styled';\nimport { Button } from 'antd';\n\nSwiperCore.use([Navigation, Pagination, Autoplay]);\n\nexport const UserNumberCount = () => {\n    function handleClick(e) {\n        window.location.href = '/review/list';\n    }\n\n    return (\n        <div className='container' style={{ height: '700px' }}>\n            <RollingContainer>\n                <div className='numberCount' style={{ textAlign: 'center' }}>\n                    <NumberLabel>\n                        <FontAwesomeIcon icon={faHospitalUser} style={{ paddingRight: '6px' }} />총 가입자 수\n                    </NumberLabel>\n                    <br />\n                    <CountUp className='numberCount' end={1557} suffix=' 명' style={{ fontWeight: 'bold' }} />\n                </div>\n\n                <div className='numberCount' style={{ textAlign: 'center', paddingLeft: '7%' }}>\n                    <NumberLabel>\n                        <FontAwesomeIcon icon={faUsers} style={{ paddingRight: '6px' }} />\n                        메이트 수\n                    </NumberLabel>\n                    <br />\n                    <CountUp end={612} suffix=' 명' style={{ fontWeight: 'bold' }} />\n                </div>\n\n                <div className='numberCount' style={{ textAlign: 'center', paddingLeft: '7%' }}>\n                    <NumberLabel>\n                        <FontAwesomeIcon icon={faRectangleList} style={{ paddingRight: '6px' }} />총 이용 건수\n                    </NumberLabel>\n                    <br />\n                    <CountUp end={5000} suffix=' 건 <i class=\"fa-solid fa-arrow-up\" style=\"color: #3bc1ff\"></i>' style={{ fontWeight: 'bold' }} />\n                </div>\n            </RollingContainer>\n            <SatisfactionContainer>\n                <SatisfactionLabel>\n                    만족도 200% 이용 후기와 서비스 만족도 98% <MobileBr />\n                    \"위드메이트\" 에게 맡겨주세요\n                </SatisfactionLabel>\n            </SatisfactionContainer>\n\n            <DivisionLine />\n\n            <ReviewContainer>\n                <Swiper\n                    direction={'horizontal'} // 슬라이드의 방향을 수직으로 설정합니다.\n                    spaceBetween={10}\n                    slidesPerView={1}\n                    breakpoints={{\n                        768: {\n                            slidesPerView: 1,\n                            spaceBetween: -50,\n                        },\n                    }}\n                    pagination={{ clickable: true }} // 우측의 점을 클릭했을 때, 클릭한 슬라이드로 이동하게 됩니다.\n                    navigation\n                    modules={[Pagination]} // 페이지네이션, 마우스휠등을 사용하려면 모듈을 import해줘야 합니다.\n                    allowTouchMove // 터치 동작을 허용합니다.\n                    className='main_slider'\n                    threshold={20} // 터치 감도를 조정합니다. 숫자가 클수록 터치에 반응하지 않습니다.\n                    autoplay={{ delay: 1500 }}\n                    loop={true}\n                    speed={1000} // 슬라이드가 넘어가는 속도를 조정합니다. 단위는 ms입니다.\n                >\n                    <SwiperSlide>\n                        <ReviewMainContainer>\n                            <ReviewMainInnerContainer>\n                                <ImgStyle>\n                                    <img src={'/assets/images/review/review1.png'} style={{ width: '100%', height: '100%' }} alt='' />\n                                </ImgStyle>\n                            </ReviewMainInnerContainer>\n                        </ReviewMainContainer>\n                    </SwiperSlide>\n\n                    <SwiperSlide>\n                        <ReviewMainInnerContainer>\n                            <ImgStyle>\n                                <img src={'/assets/images/review/review2.png'} style={{ width: '100%', height: '100%' }} alt='' />\n                            </ImgStyle>\n                        </ReviewMainInnerContainer>\n                    </SwiperSlide>\n\n                    <SwiperSlide>\n                        <ReviewMainInnerContainer>\n                            <ImgStyle>\n                                <img src={'/assets/images/review/review3.png'} style={{ width: '100%', height: '100%' }} alt='' />\n                            </ImgStyle>\n                        </ReviewMainInnerContainer>\n                    </SwiperSlide>\n\n                    <SwiperSlide>\n                        <ReviewMainInnerContainer>\n                            <ImgStyle>\n                                <img src={'/assets/images/review/review4.png'} style={{ width: '100%', height: '100%' }} alt='' />\n                            </ImgStyle>\n                        </ReviewMainInnerContainer>\n                    </SwiperSlide>\n\n                    <SwiperSlide>\n                        <ReviewMainInnerContainer>\n                            <ImgStyle>\n                                <img src={'/assets/images/review/review5.png'} style={{ width: '100%', height: '100%' }} alt='' />\n                            </ImgStyle>\n                        </ReviewMainInnerContainer>\n                    </SwiperSlide>\n\n                    <SwiperSlide>\n                        <ReviewMainInnerContainer>\n                            <ImgStyle>\n                                <img src={'/assets/images/review/review6.png'} style={{ width: '100%', height: '100%' }} alt='' />\n                            </ImgStyle>\n                        </ReviewMainInnerContainer>\n                    </SwiperSlide>\n                </Swiper>\n            </ReviewContainer>\n            <DivisionLine />\n\n            <Button\n                type='primary'\n                style={{\n                    justifyContent: 'center',\n                    alignItems: 'center',\n                    display: 'flex',\n                    margin: '0 auto',\n                    width: '200px',\n                    height: '46px',\n                    borderRadius: '10px',\n                    fontSize: '20px',\n                }}\n                onClick={handleClick}\n            >\n                이용후기 더보기\n            </Button>\n        </div>\n    );\n};\n\nconst ReviewContainer = styled.div`\n    width: 42%;\n    margin-top: 10px;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    margin: 0 auto;\n\n    @media (max-width: 768px) {\n        width: 100%;\n    }\n`;\n\nconst ReviewMainContainer = styled.div`\n    width: 100%;\n    height: 330px;\n\n    @media (max-width: 768px) {\n        height: 330px;\n    }\n`;\n\nconst ReviewMainInnerContainer = styled.div`\n    max-width: 500px;\n    height: 100%;\n    margin: 0 auto;\n\n    padding-top: 10px;\n\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n\n    @media (max-width: 768px) {\n    }\n`;\n\nconst RollingContainer = styled.div`\n    padding-top: 10px;\n    padding-bottom: 20px;\n    justify-content: center;\n    display: flex;\n    flex-direction: initial;\n    background-color: #f9f9f9;\n\n    .numberCount {\n        font-size: 35px;\n    }\n\n    @media (max-width: 768px) {\n        justify-content: center;\n\n        .numberCount {\n            font-size: 20px;\n        }\n    }\n`;\n\nconst ImgStyle = styled.div`\n    width: 330px;\n    height: auto;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    margin: 0 auto;\n\n    @media (max-width: 768px) {\n        width: 280px;\n        height: auto;\n    }\n`;\n\nconst SatisfactionContainer = styled.label`\n    padding-top: 20px;\n    justify-content: center;\n    display: flex;\n    flex-direction: initial;\n\n    @media (max-width: 768px) {\n    }\n`;\n\nconst SatisfactionLabel = styled.label`\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: normal;\n    font-size: 20px;\n    font-weight: bold;\n    text-align: center;\n\n    @media (max-width: 768px) {\n        font-size: 15px;\n    }\n`;\n\nconst NumberLabel = styled.label`\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: normal;\n    font-size: 20px;\n\n    @media (max-width: 768px) {\n        font-size: 12px;\n    }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { fontSize } from '../../../theme';\n\n// components\nimport { PartnerContainer, PartnerInnerContainer, PartnerTitle, PartnerListRow, PartnerItem } from '../home.styled';\n\nexport const WithmatePartners = ({}) => {\n    const baseUrl = '/assets/images/partners/';\n    const fstRow = [\n        baseUrl + 'new-gov-care.png',\n        baseUrl + 'new-goyang.png',\n        baseUrl + 'new-cancel.png',\n        baseUrl + 'aju.png',\n        baseUrl + 'new-goyang-happy.png',\n    ];\n    const sndRow = [\n        baseUrl + 'new-junglang-woman.png',\n        baseUrl + 'new-paju_woman.png',\n        baseUrl + 'new-beatus.png',\n        baseUrl + 'new-cheongdam.png',\n        baseUrl + 'new-hyo-hospital.png',\n    ];\n\n    const trdRow = [baseUrl + 'ssn.png', baseUrl + 'limo-korea.png', baseUrl + 'help-you.png', baseUrl + 'errichi.png', baseUrl + 'new-imagine-us.png'];\n\n    const fthRow = [baseUrl + 'iu-hosp.png', baseUrl + 'new-gpcop.png', baseUrl + 'goyohanM.png', baseUrl + 'carehouse.jpeg', baseUrl + 'bravo.png'];\n\n    const ftfRow = [baseUrl + 'dlive.png', baseUrl + 'sungmo.png', baseUrl + 'metlife.png', baseUrl + 'aju_nursing_hospital.png', baseUrl + 'yongin.png'];\n\n    return (\n        <PartnerContainer id='partners'>\n            <PartnerInnerContainer>\n                <PartnerTitle>\n                    <span>\n                        <img src='/assets/images/partners_map.png' style={{ width: '32px', height: 'auto', paddingBottom: '10px' }} /> 파트너사\n                    </span>\n                    <p style={{ color: '#a9a9a9', fontSize: '18px' }}>위드메이트와 함께하는 협력 파트너사입니다.</p>\n                </PartnerTitle>\n                <PartnerListRow>\n                    <PartnerItem>\n                        <img src={fstRow[0]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={fstRow[1]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={fstRow[2]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={fstRow[3]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={fstRow[4]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={sndRow[0]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={sndRow[1]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={sndRow[2]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={sndRow[3]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={sndRow[4]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={trdRow[0]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={trdRow[1]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={trdRow[2]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={trdRow[3]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={trdRow[4]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={fthRow[0]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={fthRow[1]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={fthRow[2]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={fthRow[3]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={fthRow[4]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={ftfRow[0]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={ftfRow[1]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={ftfRow[2]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={ftfRow[3]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={ftfRow[4]} />\n                    </PartnerItem>\n                </PartnerListRow>\n            </PartnerInnerContainer>\n        </PartnerContainer>\n    );\n};\n","import React from 'react';\nimport { message as Message } from 'antd';\n\nimport { MATE } from '../../Lib/variables';\nimport axios from '../../Lib/axios';\nimport Slider from 'react-slick';\nimport \"slick-carousel/slick/slick.css\";\nimport \"slick-carousel/slick/slick-theme.css\";\n\n// section\nimport Reserve from './Section/reserve';\nimport { UserMain as RenewMain } from './Section/renew/main';\nimport { UserVideoSection } from './Section/renew/video';\nimport { UserGuideSection } from './Section/renew/guide';\nimport { UserMainBanner } from './Section/renew/banner';\nimport { UserSiteBanner } from './Section/renew/siteBanner';\nimport { UserNumberCount } from './Section/renew/numberCount';\n\n// import Main from './Section/userMain';\nimport { WithmatePartners } from './Section/partners';\n// import { Services } from './Section/services';\n// import { Introduce } from './Section/introduce';\n// import { WithmateSpecs } from './Section/spec';\n\n// modal\nimport { EmergencyCorpSearchModal, ShareCarRequestModal } from '../../Components/modal';\nimport { ManagerPopup } from '../../Components/modal';\n\n// import MateMain from './Section/mateMain';\n// import Review from './Section/review';\n// import { CoCompany } from '../Company/Section/fifth';\n\nconst settings = {\n    dots: true,\n    arrows: true,\n    infinite: true,\n    speed: 800,\n    slidesToShow: 1,\n    slidesToScroll: 1,\n    autoplay: true,\n    autoplaySpeed: 5000,\n    pauseOnHover: true,\n};\n\nexport default class HomePage extends React.PureComponent {\n    state = {\n        searchModal: false,\n        emergencyList: [],\n        emergencyKeyword: '',\n        requestModal: false,\n        requestInfo: {\n            corp: '',\n            address: '',\n            manager: '',\n            contact: '',\n            message: '',\n        },\n    };\n\n    componentDidMount = async () => {\n        const { data } = await axios.get(`/v1/corp/list`);\n        if (!data) return null;\n\n        if (data && Array.isArray(data)) {\n            this.setState({\n                emergencyList: data,\n            });\n        }\n    };\n\n    onShareRequest = async () => {\n        const {\n            requestInfo: { corp, address, manager, contact, message },\n        } = this.state;\n        if (!corp || !address || !manager || !contact || !message) return Message.info('정보를 기입해주세요.');\n\n        const { data } = await axios.post('/v1/share/add', {\n            corp,\n            address,\n            manager,\n            contact,\n            message,\n        });\n\n        if (!data) {\n            return Message.error('일시적인 서버장애가 발생했습니다. 다시 시도해주세요.');\n        }\n\n        if (data === 'check parameters') {\n            return Message.warning('정보를 모두 기입해주세요.');\n        }\n\n        if (data === 'success') {\n            Message.success('셔틀 셰어링 서비스를 요청하였습니다.');\n\n            this.setState({\n                requestModal: false,\n                requestInfo: {\n                    corp: '',\n                    address: '',\n                    manager: '',\n                    contact: '',\n                    message: '',\n                },\n            });\n        }\n    };\n\n    render() {\n        const { requestInfo, emergencyKeyword, emergencyList } = this.state;\n        const { userType } = this.props.auth;\n\n        return (\n            <div id='#main'>\n                {/* <Slider {...settings}>\n                    <div>\n                        <UserSiteBanner />\n                    </div>\n                    <div>\n                        <RenewMain {...this.props} />\n                    </div>\n                </Slider> */}\n                {userType === MATE ? (\n                    <>\n                        <Reserve {...this.props} />\n                    </>\n                ) : (\n                    <>\n                        {/* <ManagerPopup /> */}\n                        <RenewMain {...this.props} />\n                        <UserNumberCount />\n                        {/* <UserSiteBanner /> */}\n                        <UserVideoSection />\n                        <UserGuideSection />\n                        <WithmatePartners />\n                        <UserMainBanner\n                            goPage={() => {\n                                this.props.history.push('/nemt/service');\n                            }}\n                        />\n                        {/* <Main {...this.props} /> */}\n                        {/* <Introduce /> */}\n                        {/* <WithmateSpecs /> */}\n                    </>\n                )}\n\n                {this.state.searchModal ? (\n                    <EmergencyCorpSearchModal\n                        data={emergencyList}\n                        keyword={emergencyKeyword}\n                        inputHandler={value => {\n                            this.setState({ emergencyKeyword: value });\n                        }}\n                        visibleHandler={() => {\n                            this.setState({ searchModal: false });\n                        }}\n                    />\n                ) : null}\n\n                {this.state.requestModal ? (\n                    <ShareCarRequestModal\n                        data={requestInfo}\n                        visibleHandler={() => {\n                            this.setState({ requestModal: false });\n                        }}\n                        inputHandler={({ type, value }) => {\n                            this.setState(prevState => ({\n                                requestInfo: {\n                                    ...prevState.requestInfo,\n                                    [type]: value,\n                                },\n                            }));\n                        }}\n                        onSave={this.onShareRequest}\n                    />\n                ) : null}\n            </div>\n        );\n    }\n}\n","import axios from '../axios';\n\nexport const getUserInfo = ({ id, userType }) => {\n    return axios.get(`/v1/user/${id}/${userType}`);\n};\n\nexport const modifyUserInfo = async ({ id, userType, info }) => {\n    if (info.photo) {\n        const { data } = await imageUpload(info.photo);\n        info.photo = data;\n    }\n\n    return axios.post('/v1/user/modify/info', { id, userType, info });\n};\n\nexport const serviceInfo = ({ code }) => {\n    return axios.get('/v1/service/product/list', { params: { code } });\n};\n\nexport const buyTicket = ({ userId, info }) => {\n    return axios.post('/v1/service/buy/ticket', { userId, info });\n};\n\nexport const serviceReserve = ({ userId, info }) => {\n    return axios.post('/v1/service/reserve', { userId, info });\n};\n\nexport const reserveList = ({ userId }) => {\n    return axios.get('/v1/service/user/reserve/history', { params: { userId } });\n};\n\nexport const getReserve = ({ reserveId, userId }) => {\n    return axios.get('/v1/service/user/reserve', { params: { reserveId, userId } });\n};\n\nexport const getReserveList = ({ userId }) => {\n    return axios.get('/v1/service/user/reserve/list', { params: { userId } });\n};\n\nexport const serviceRequest = ({ impUid, buyerId, info }) => {\n    // return axios.post('/v1/service/request', { impUid, buyerId, info });\n};\n\nexport const payHistory = ({ userId }) => {\n    return axios.get('/v1/service/user/pay/history', { params: { userId } });\n};\n\nexport const mateReserveList = ({ mateId }) => {\n    return axios.get('/v1/service/mate/call/list', { params: { mateId } });\n};\n\nexport const mateCallReserveList = ({ mateId, page }) => {\n    return axios.get('/v1/service/mate/reserve/list', { params: { mateId, page } });\n};\n\nexport const acceptCall = ({ callId, mateId }) => {\n    return axios.put('/v1/service/mate/accept/call', { callId, mateId });\n};\n\nexport const completeCall = ({ callId }) => {\n    return axios.put('/v1/service/mate/complete/call', { callId });\n};\n\nexport const modifyReserve = ({ reserveId, info }) => {\n    return axios.put('/v1/service/user/reserve/modify', { reserveId, info });\n};\n\nexport const cancelReserve = ({ callId }) => {\n    return axios.put('/v1/service/user/reserve/cancel', { callId });\n};\n\nexport const cancelCall = ({ callId }) => {\n    return axios.put('/v1/service/mate/reserve/cancel', { callId });\n};\n\nexport const imageUpload = file => {\n    const formData = new FormData();\n    formData.append('photo', file);\n    const header = { headers: { 'Content-Type': 'multipart/form-data' } };\n    return axios.post('/v1/common/image/upload', formData, header);\n};\n\nexport const getPartnerServices = () => {\n    return axios.get('/v1/partner/service/list');\n};\n\nexport const getContractServices = ({ service, mateId }) => {\n    return axios.get(`/v1/partner/${service}/reserve/list`, {\n        params: {\n            mateId,\n        },\n    });\n};\n","import axios from '../axios';\nimport { MATE } from '../variables';\n\n//type: 로그인방식\nexport const register = async ({\n    termsOfUse,\n    privacyPolicy,\n    essentialGeneral,\n    essentialSensitive,\n    selectiveGeneral,\n    selectiveSensitive,\n    selectiveAdvertise,\n    id,\n    password,\n    userType,\n    name,\n    code,\n    identify,\n    reason,\n    type,\n    photo,\n    contact,\n    marketing,\n    connection,\n    recommenderName,\n    longtermCare,\n    birth,\n    email,\n}) => {\n    const config = {\n        termsOfUse,\n        privacyPolicy,\n        essentialGeneral,\n        essentialSensitive,\n        selectiveGeneral,\n        selectiveSensitive,\n        selectiveAdvertise,\n        id,\n        password,\n        userType,\n        name,\n        type,\n        photo,\n        contact,\n        marketing,\n        connection,\n        recommenderName,\n        longtermCare,\n        birth,\n        email,\n        code,\n        identify,\n        reason,\n        urlSource: window.location.search === '?url_source=dlive' ? 'dlive' : window.location.search === '?url_source=metlife' ? 'metlife' : 'withmate',\n    };\n\n    if (userType === MATE && photo) {\n        const result = await imageUpload(photo);\n        config.photo = result.data;\n    }\n\n    return axios.post('/v1/auth/register', config);\n};\n\nexport const addPatient = async ({ id, relate, name, sex, age, contact, starting, environment, caution }) => {\n    const config = {\n        id,\n        relate,\n        name,\n        sex,\n        age,\n        contact,\n        starting,\n        environment,\n        caution,\n    };\n\n    return axios.post('/v1/auth/patient/profile', config);\n};\n\nexport const addCard = async ({ id, userName, cardName, cardNum, year, month }) => {\n    const config = {\n        id,\n        userName,\n        cardName,\n        cardNum,\n        year,\n        month,\n    };\n\n    return axios.post('/v1/auth/card/add', config);\n};\n\nexport const getCardInfo = async ({ cardId, info }) => {\n    return axios.get('/v1/auth/card/list/info', { cardId, info });\n};\n\nexport const fetchCard = async ({ id }) => {\n    return axios.get('/v1/auth/card/list', { params: { id } });\n};\n\nexport const deleteCard = async ({ cardId }) => {\n    return axios.post('/v1/auth/card/info/delete', { cardId });\n};\n\nexport const modifyCard = async ({ cardId, info }) => {\n    return axios.post('/v1/auth/card/info/modify', { cardId, info });\n};\n\nexport const getMateInfo = async ({ mateId, info }) => {\n    return axios.get('/v1/auth/mate/list/info', { mateId, info });\n};\n\nexport const fetchMate = async ({ id }) => {\n    return axios.get('/v1/auth/mate/list', { params: { id } });\n};\n\nexport const getPatientInfo = async ({ patientId, info }) => {\n    return axios.get('/v1/auth/patient/list/info', { patientId, info });\n};\n\nexport const fetchPatient = async ({ id }) => {\n    return axios.get('/v1/auth/patient/list', { params: { id } });\n};\n\nexport const deletePatient = async ({ patientId }) => {\n    return axios.post('/v1/auth/patient/info/delete', { patientId });\n};\n\nexport const modifyPatient = async ({ patientId, info }) => {\n    return axios.post('/v1/auth/patient/info/modify', { patientId, info });\n};\n\nexport const login = ({ id, password, userType, type }) => {\n    return axios.post('/v1/auth/login', { id, password, userType, type });\n};\n\nexport const logout = ({ id, userType }) => {\n    return axios.get('/v1/auth/logout', { params: { id, userType } });\n};\n\nexport const checkUserId = ({ id, userType, type }) => {\n    return axios.get('/v1/auth/validate/user', { params: { id, userType, type } });\n};\n\nexport const checkAuth = ({ id, userType }) => {\n    return axios.get('/v1/auth/authorized', { params: { id, userType } });\n};\n\nexport const findPassword = ({ id, userType }) => {\n    return axios.post('/v1/auth/find/password', { id, userType });\n};\n\nexport const confirmEmailAuth = ({ verificationCode }) => {\n    return axios.post('/v1/auth/register', { verificationCode });\n};\n\nexport const modifyPassword = ({ id, userType, password, newPassword }) => {\n    return axios.post('/v1/auth/modify/password', { id, userType, password, newPassword });\n};\n\nexport const withdrawl = ({ id, userType, password }) => {\n    return axios.post('/v1/auth/withdrawl', { id, userType, password });\n};\n\nexport const withdrawlKakao = ({ id, userType }) => {\n    return axios.post('/v1/auth/withdrawl/kakao', { id, userType });\n};\n\nexport const imageUpload = photo => {\n    const formData = new FormData();\n    formData.append('photo', photo);\n    const header = { headers: { 'Content-Type': 'multipart/form-data' } };\n    return axios.post('/v1/common/image/upload', formData, header);\n};\n\nexport const onAddLongTermCare = async ({ userId, info }) => {\n    return axios.post('/v1/longTermCare/add', { userId, info });\n};\n","import jwt from 'jsonwebtoken';\nimport * as authAPI from './Api/auth';\n\nexport function createReduxThunk(type, request) {\n    const SUCCESS = `${type}_SUCCESS`;\n    const FAILURE = `${type}_FAILURE`;\n\n    return params => async dispatch => {\n        dispatch({ type: 'app/LOADING_ON' });\n        if (!request) {\n            return dispatch({ type });\n        }\n\n        try {\n            const response = await request(params);\n\n            if (response.data === 'expired token' || response.data === 'invalid token') {\n                const refreshToken = localStorage.getItem('refreshToken');\n                const decoded = jwt.decode(refreshToken);\n                if (decoded && decoded.id) {\n                    try {\n                        const result = await authAPI.checkAuth({ id: decoded.id, refreshToken });\n                        if (result.data === 'invalid') {\n                            localStorage.clear();\n                            window.location.href = '/';\n                            return null;\n                        }\n\n                        localStorage.setItem('accessToken', result.data.accessToken);\n                        // 재요청\n                        try {\n                            const response = await request(params);\n                            dispatch({\n                                type: SUCCESS,\n                                payload: response.data,\n                                meta: params,\n                            });\n                            dispatch({ type: 'app/LOADING_OFF' });\n                            return response.data;\n                        } catch (e) {\n                            dispatch({\n                                type: FAILURE,\n                                payload: e,\n                                error: true,\n                            });\n                            dispatch({ type: 'app/LOADING_OFF' });\n                            throw e;\n                        }\n                    } catch (error) {\n                        console.log('error: ', error);\n                    }\n                }\n            }\n\n            dispatch({\n                type: SUCCESS,\n                payload: response.data,\n                meta: params,\n            });\n            dispatch({ type: 'app/LOADING_OFF' });\n            return response.data;\n        } catch (e) {\n            dispatch({\n                type: FAILURE,\n                payload: e,\n                error: true,\n            });\n            dispatch({ type: 'app/LOADING_OFF' });\n            throw e;\n        }\n    };\n}\n","import { createAction, handleActions } from 'redux-actions';\nimport produce from 'immer';\nimport * as appAPI from '../../Lib/Api/app';\nimport _ from 'lodash';\n\n// middleware\nimport { createReduxThunk } from '../../Lib/middleware';\n\nconst USER_INFO = 'app/USER_INFO';\nconst USER_INFO_SUCCESS = 'app/USER_INFO_SUCCESS';\n\nconst MODIFY_USER_INFO = 'app/MODIFY_USER_INFO';\nconst MODIFY_USER_INFO_SUCCESS = 'app/MODIFY_USER_INFO_SUCCESS';\n\nconst SERVICE_INFO = 'app/SERVICE_INFO';\nconst SERVICE_INFO_SUCCESS = 'app/SERVICE_INFO_SUCCESS';\n\nconst SERVICE_RESERVE = 'app/SERVICE_RESERVE';\nconst SERVICE_RESERVE_SUCCESS = 'app/SERVICE_RESERVE_SUCCESS';\nconst SERVICE_RESERVE_USAGE = 'app/SERVICE_RESERVE_USAGE';\nconst SERVICE_RESERVE_USAGE_SUCCESS = 'app/SERVICE_RESERVE_USAGE_SUCCESS';\nconst SERVICE_RESERVE_LIST = 'app/SERVICE_RESERVE_LIST';\nconst SERVICE_RESERVE_LIST_SUCCESS = 'app/SERVICE_RESERVE_LIST_SUCCESS';\n\nconst RESERVE_INFO = 'app/RESERVE_INFO';\nconst RESERVE_INFO_SUCCESS = 'app/RESERVE_INFO_SUCCESS';\n\nconst CANCEL_CALL = 'app/CANCEL_CALL';\nconst CANCEL_CALL_SUCCESS = 'app/CANCEL_CALL_SUCCESS';\n\nconst CANCEL_RESERVE = 'app/CANCEL_RESERVE';\nconst CANCEL_RESERVE_SUCCESS = 'app/CANCEL_RESERVE_SUCCESS';\n\nconst MODIFY_RESERVE = 'app/MODIFY_RESERVE';\nconst MODIFY_RESERVE_SUCCESS = 'app/MODIFY_RESERVE_SUCCESS';\n\nconst MATE_CALL_RESERVE_LIST = 'app/MATE_CALL_RESERVE_LIST';\nconst MATE_CALL_RESERVE_LIST_SUCCESS = 'app/MATE_CALL_RESERVE_LIST_SUCCESS';\nconst MATE_SERVICE_RESERVE_LIST = 'app/MATE_SERVICE_RESERVE_LIST';\nconst MATE_SERVICE_RESERVE_LIST_SUCCESS = 'app/MATE_SERVICE_RESERVE_LIST_SUCCESS';\nconst MATE_ACCEPT_CALL = 'app/MATE_ACCEPT_CALL';\nconst MATE_ACCEPT_CALL_SUCCESS = 'app/MATE_ACCEPT_CALL_SUCCESS';\nconst MATE_COMPLETE_CALL = 'app/MATE_COMPLETE_CALL';\nconst MATE_COMPLETE_CALL_SUCCESS = 'app/MATE_COMPLETE_CALL_SUCCESS';\n\nconst PAY_HISTORY = 'app/PAY_HISTORY';\nconst PAY_HISTORY_SUCCESS = 'app/PAY_HISTORY_SUCCESS';\n\nconst BUY_TICKET = 'app/BUY_TICKET';\nconst BUY_TICKET_SUCCESS = 'app/BUY_TICKET_SUCCESS';\n\nconst GET_CONTRACT_PARTNERS = 'app/GET_CONTRACT_PARTNERS';\nconst GET_CONTRACT_PARTNERS_SUCCESS = 'app/GET_CONTRACT_PARTNERS_SUCCESS';\n\nconst GET_CONTRACT_SERVICE_LIST = 'app/GET_CONTRACT_SERVICE_LIST';\nconst GET_CONTRACT_SERVICE_LIST_SUCCESS = 'app/GET_CONTRACT_SERVICE_LIST_SUCCESS';\n\nconst EDIT_USER_FORM = 'app/EDIT_USER_FORM';\nconst EDIT_BUY_FORM = 'app/EDIT_BUY_FORM';\nconst EDIT_RESERVE_FORM = 'app/EDIT_RESERVE_FORM';\nconst EDIT_DETAIL_VIEW = 'app/EDIT_DETAIL_VIEW';\nconst EDIT_LATEST_VIEW = 'app/EDIT_LATEST_VIEW';\nconst EDIT_VIEW_TYPE = 'app/EDIT_VIEW_TYPE';\nconst EDIT_CALL_PAGE = 'app/EDIT_CALL_PAGE';\nconst EDIT_CONTRACT_FORM = 'app/EDIT_CONTRACT_FORM';\n\nconst LOADING_ON = 'app/LOADING_ON';\nconst LOADING_OFF = 'app/LOADING_OFF';\n\n// initalState\nconst initialState = {\n    userInfo: {},\n    serviceInfo: {},\n    reserveForm: {\n        page: 1,\n        service: 'assist',\n        addTime: 1,\n        payMethod: 'transfer',\n        sex: '남',\n        transport: 'common', // common, own\n        report: false,\n    },\n    reserve: {\n        unemergency: 0,\n        assist: 0,\n    },\n    contractForm: {\n        page: 1,\n        service: '',\n        addTime: 1,\n        payMethod: 'transfer',\n        sex: '남',\n        transport: 'common', // common, own\n        report: false,\n    },\n    buyForm: {\n        service: 'unemergency',\n        count: 1,\n    },\n    mateCallPage: 0,\n    mateCallList: [],\n    reserveList: [],\n    reserveInfo: {},\n    mateReserveList: [],\n    mateViewType: 'latest',\n    mateReserveLatest: {},\n    mateReserveDetail: {},\n    payHistory: [],\n    partners: [],\n    loading: false,\n    contractServices: [],\n};\n\nexport const getUserInfo = createReduxThunk(USER_INFO, appAPI.getUserInfo);\nexport const modifyUserInfo = createReduxThunk(MODIFY_USER_INFO, appAPI.modifyUserInfo);\n\nexport const getServiceInfo = createReduxThunk(SERVICE_INFO, appAPI.serviceInfo);\n\nexport const buyTicket = createReduxThunk(BUY_TICKET, appAPI.buyTicket);\nexport const getPayHistory = createReduxThunk(PAY_HISTORY, appAPI.payHistory);\n\nexport const serviceReserve = createReduxThunk(SERVICE_RESERVE, appAPI.serviceReserve);\nexport const getReserveUsage = createReduxThunk(SERVICE_RESERVE_USAGE, appAPI.reserveList);\nexport const getReserveList = createReduxThunk(SERVICE_RESERVE_LIST, appAPI.getReserveList);\nexport const getMateReserveList = createReduxThunk(MATE_SERVICE_RESERVE_LIST, appAPI.mateReserveList);\nexport const getMateCallReserveList = createReduxThunk(MATE_CALL_RESERVE_LIST, appAPI.mateCallReserveList);\nexport const getReserveInfo = createReduxThunk(RESERVE_INFO, appAPI.getReserve);\nexport const getContractPartners = createReduxThunk(GET_CONTRACT_PARTNERS, appAPI.getPartnerServices);\nexport const getContractList = createReduxThunk(GET_CONTRACT_SERVICE_LIST, appAPI.getContractServices);\n\nexport const acceptCall = createReduxThunk(MATE_ACCEPT_CALL, appAPI.acceptCall);\nexport const cancelCall = createReduxThunk(CANCEL_CALL, appAPI.cancelCall);\nexport const completeCall = createReduxThunk(MATE_COMPLETE_CALL, appAPI.completeCall);\nexport const modifyReserve = createReduxThunk(MODIFY_RESERVE, appAPI.modifyReserve);\nexport const cancelReserve = createReduxThunk(CANCEL_RESERVE, appAPI.cancelReserve);\n\nexport const editViewType = createAction(EDIT_VIEW_TYPE, input => input);\nexport const editResrveForm = createAction(EDIT_RESERVE_FORM, input => input);\nexport const editContractForm = createAction(EDIT_CONTRACT_FORM, input => input);\nexport const editBuyForm = createAction(EDIT_BUY_FORM, input => input);\nexport const editUserForm = createAction(EDIT_USER_FORM, input => input);\nexport const editReserveDetailView = createAction(EDIT_DETAIL_VIEW, input => input);\nexport const editReserveLatestView = createAction(EDIT_LATEST_VIEW, input => input);\nexport const editCallPage = createAction(EDIT_CALL_PAGE, input => input);\n\n// reducer\nconst appReducer = handleActions(\n    {\n        [LOADING_ON]: (state, action) =>\n            produce(state, draft => {\n                draft.loading = true;\n            }),\n        [LOADING_OFF]: (state, action) =>\n            produce(state, draft => {\n                draft.loading = false;\n            }),\n        [USER_INFO_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload._id) {\n                    draft['userInfo'] = payload;\n                }\n            }),\n        [MODIFY_USER_INFO_SUCCESS]: (state, { payload, meta }) =>\n            produce(state, draft => {\n                if (payload && payload === 'success') {\n                    const { photo, name, contact } = meta.info;\n                    draft['userInfo']['name'] = name;\n                    draft['userInfo']['contact'] = contact;\n                    if (photo) {\n                        draft['userInfo']['photo'] = photo;\n                    }\n                }\n            }),\n        [SERVICE_INFO_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && Array.isArray(payload) && payload.length > 0) {\n                    draft['serviceInfo'] = payload[0];\n                }\n            }),\n        [SERVICE_RESERVE_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload === 'success') {\n                    draft['reserveForm'] = {\n                        page: 1,\n                        service: 'unemergency',\n                        addTime: 1,\n                        payMethod: 'transfer',\n                        sex: '남',\n                    };\n                }\n            }),\n        [RESERVE_INFO_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                draft['reserveInfo'] = payload;\n            }),\n        [SERVICE_RESERVE_USAGE_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && !_.isEmpty(payload)) {\n                    draft['reserve'] = payload;\n                }\n            }),\n        [SERVICE_RESERVE_LIST_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && !_.isEmpty(payload) && Array.isArray(payload)) {\n                    draft['reserveList'] = payload;\n                }\n            }),\n        [GET_CONTRACT_PARTNERS_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                draft['partners'] = payload;\n                if (payload && Array.isArray(payload)) {\n                    localStorage.setItem('partners', JSON.stringify(payload));\n                }\n            }),\n        [GET_CONTRACT_SERVICE_LIST_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && !_.isEmpty(payload) && Array.isArray(payload)) {\n                    draft['contractServices'] = payload;\n                }\n            }),\n        [MATE_SERVICE_RESERVE_LIST_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && !_.isEmpty(payload) && Array.isArray(payload)) {\n                    draft['mateReserveList'] = payload;\n                }\n            }),\n        [MATE_CALL_RESERVE_LIST_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && !_.isEmpty(payload) && Array.isArray(payload)) {\n                    draft['mateCallList'] = payload;\n                }\n            }),\n        [MATE_ACCEPT_CALL_SUCCESS]: (state, { payload, meta }) =>\n            produce(state, draft => {\n                if (payload && payload === 'success') {\n                    const list = draft['mateReserveList'];\n                    draft['mateReserveList'] = list.map(l => {\n                        if (l._id === meta.callId) {\n                            l.status = '예약완료';\n                        }\n\n                        return l;\n                    });\n\n                    draft['mateReserveDetail']['status'] = '예약완료';\n                }\n            }),\n        [MATE_COMPLETE_CALL_SUCCESS]: (state, { payload, meta }) =>\n            produce(state, draft => {\n                if (payload && payload === 'success') {\n                    if (payload && payload === 'success') {\n                        const list = draft['mateReserveList'];\n                        draft['mateReserveList'] = list.map(l => {\n                            if (l._id === meta.callId) {\n                                l.status = '서비스 종료';\n                            }\n\n                            return l;\n                        });\n                    }\n                }\n            }),\n        [PAY_HISTORY_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                draft['payHistory'] = payload;\n            }),\n        [BUY_TICKET_SUCCESS]: (state, { payload }) => produce(state, draft => {}),\n        [CANCEL_CALL_SUCCESS]: (state, { payload, meta }) =>\n            produce(state, draft => {\n                if (payload && payload === 'success') {\n                    const list = draft['mateReserveList'];\n                    draft['mateReserveList'] = list.map(l => {\n                        if (l._id === meta.callId) {\n                            l.status = '접수대기';\n                        }\n\n                        return l;\n                    });\n                }\n            }),\n        [CANCEL_RESERVE_SUCCESS]: (state, { payload, meta }) =>\n            produce(state, draft => {\n                const list = draft['reserveList'];\n                draft['reserveList'] = list.map(l => {\n                    if (l.callId === meta.callId) l.call[0].status = '접수취소';\n                    return l;\n                });\n            }),\n        [MODIFY_RESERVE_SUCCESS]: (state, { payload, meta }) =>\n            produce(state, draft => {\n                if (payload && payload === 'success') {\n                    const list = draft['reserveList'];\n                    draft['reserveList'] = list.map(l => {\n                        if (l._id === meta.reserveId) {\n                            const { patient, relate, contact, comment, sex } = meta.info;\n                            l['patient'] = patient;\n                            l['relate'] = relate;\n                            l['contact'] = contact;\n                            l['comment'] = comment;\n                            l['sex'] = sex;\n\n                            if (meta.info && meta.info.starting) {\n                                const { starting, destination, reserveDate, usageTime } = meta.info;\n                                l['starting'] = starting;\n                                l['destination'] = destination;\n                                l['reserveDate'] = reserveDate;\n                                l['usageTime'] = usageTime;\n                            }\n\n                            return l;\n                        }\n\n                        return l;\n                    });\n                }\n            }),\n        [EDIT_RESERVE_FORM]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload.type === 'clear') {\n                    draft['reserveForm'] = {};\n                } else {\n                    draft['reserveForm'][payload.type] = payload.value;\n                }\n            }),\n        [EDIT_CONTRACT_FORM]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload.type === 'clear') {\n                    draft['contractForm'] = {};\n                } else {\n                    draft['contractForm'][payload.type] = payload.value;\n                }\n            }),\n        [EDIT_BUY_FORM]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload.type === 'clear') {\n                    draft['buyForm'] = {\n                        service: 'unemergency',\n                        count: 1,\n                    };\n                } else {\n                    draft['buyForm'][payload.type] = payload.value;\n                }\n            }),\n        [EDIT_USER_FORM]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload.type === 'clear') {\n                    draft['userInfo'] = {};\n                } else {\n                    draft['userInfo'][payload.type] = payload.value;\n                }\n            }),\n        [EDIT_DETAIL_VIEW]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload.type === 'clear') {\n                    draft['mateReserveDetail'] = {};\n                } else {\n                    draft['mateReserveDetail'] = payload.value;\n                }\n            }),\n        [EDIT_LATEST_VIEW]: (state, { payload }) =>\n            produce(state, draft => {\n                draft['mateReserveLatest'] = payload.value;\n            }),\n        [EDIT_VIEW_TYPE]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload.type === 'clear') {\n                    draft['mateViewType'] = 'latest';\n                } else {\n                    draft['mateViewType'] = payload.value;\n                }\n            }),\n        [EDIT_CALL_PAGE]: (state, { payload }) =>\n            produce(state, draft => {\n                if (typeof payload === 'number') {\n                    draft['mateCallPage'] = payload;\n                }\n            }),\n    },\n    initialState,\n);\n\nexport default appReducer;\n","import { createAction, handleActions } from 'redux-actions';\nimport produce from 'immer';\nimport * as authAPI from '../../Lib/Api/auth';\nimport { USER, MATE } from '../../Lib/variables';\n\n// middleware\nimport { createReduxThunk } from '../../Lib/middleware';\n\nconst EDIT_LOGIN_FORM = 'auth/EDIT_LOGIN_FORM';\nconst EDIT_REGISTER_FORM = 'auth/EDIT_REGISTER_FORM';\n\nconst ADD_LONGTERMCARE = 'auth/ADD_LONGTERMCARE';\nconst ADD_LONGTERMCARE_SUCCESS = 'auth/ADD_LONGTERMCARE_SUCCESS';\n\n// 환자 프로필\nconst ADD_PATIENT = 'auth/ADD_PATIENT';\nconst ADD_PATIENT_SUCCESS = 'auth/ADD_PATIENT_SUCCESS';\nconst GET_PATIENT = 'auth/GET_PATIENT';\nconst GET_PATIENT_SUCCESS = 'auth/GET_PATIENT_SUCCESS';\nconst EDIT_ADD_PATIENT_FORM = 'auth/EDIT_ADD_PATIENT_FORM';\nconst DELETE_PATIENT = 'auth/DELETE_PATIENT';\nconst DELETE_PATIENT_SUCCESS = 'auth/DELETE_PATIENT_SUCCESS';\nconst MODIFY_PATIENT = 'auth/MODIFY_PATIENT';\nconst MODIFY_PATIENT_SUCCESS = 'auth/MODIFY_PATIENT_SUCCESS';\nconst PATIENT_INFO = 'auth/PATIENT_INFO';\nconst PATIENT_INFO_SUCCESS = 'auth/PATIENT_INFO_SUCCESS';\n\n// 카드 정보\nconst ADD_CARD = 'auth/ADD_CARD';\nconst ADD_CARD_SUCCESS = 'auth/ADD_CARD_SUCCESS';\nconst GET_CARD = 'auth/GET_CARD';\nconst GET_CARD_SUCCESS = 'auth/GET_CARD_SUCCESS';\nconst EDIT_ADD_CARD_FORM = 'auth/EDIT_ADD_CARD_FORM';\nconst DELETE_CARD = 'auth/DELETE_CARD';\nconst DELETE_CARD_SUCCESS = 'auth/DELETE_CARD_SUCCESS';\nconst MODIFY_CARD = 'auth/MODIFY_CARD';\nconst MODIFY_CARD_SUCCESS = 'auth/MODIFY_CARD_SUCCESS';\nconst CARD_INFO = 'auth/CARD_INFO';\nconst CARD_INFO_SUCCESS = 'auth/CARD_INFO_SUCCESS';\n\nconst MATE_INFO = 'auth/MATE_INFO';\nconst MATE_INFO_SUCCESS = 'auth/MATE_INFO_SUCCESS';\nconst GET_MATE = 'auth/GET_MATE';\nconst GET_MATE_SUCCESS = 'auth/GET_MATE_SUCCESS';\n\nconst EDIT_FINDPASSWORD_FORM = 'auth/EDIT_FINDPASSWORD_FORM';\nconst EDIT_PASSWORD_FORM = 'auth/EDIT_PASSWORD_FORM';\nconst EDIT_INFO = 'auth/EDIT_INFO';\nconst EDIT_AUTH = 'auth/EDIT_AUTH';\n\nconst LOGIN = 'auth/LOGIN';\nconst LOGIN_SUCCESS = 'auth/LOGIN_SUCCESS';\nconst LOGOUT = 'auth/LOGOUT';\nconst LOGOUT_SUCCESS = 'auth/LOGOUT_SUCCESS';\nconst VALIDATE_USER_ID = 'auth/VALIDATE_USER_ID';\nconst VALIDATE_USER_ID_SUCCESS = 'auth/VALIDATE_USER_ID_SUCCESS';\nconst REGISTER = 'auth/REGISTER';\nconst REGISTER_SUCCESS = 'auth/REGISTER_SUCCESS';\nconst CHECK_AUTH = 'auth/CHECK_AUTH';\nconst CHECK_AUTH_SUCCESS = 'auth/CHECK_AUTH_SUCCESS';\nconst FIND_PASSWORD = 'auth/FIND_PASSWORD';\nconst FIND_PASSWORD_SUCCESS = 'auth/FIND_PASSWORD_SUCCESS';\nconst MODIFY_PASSWORD = 'auth/MODIFY_PASSWORD';\nconst MODIFY_PASSWORD_SUCCESS = 'auth/MODIFY_PASSWORD_SUCCESS';\n\nconst USER_WITHDRAWL = 'auth/USER_WITHDRAWL';\nconst USER_WITHDRAWL_SUCCESS = 'auth/USER_WITHDRAWL_SUCCESS';\nconst KAKAO_WITHDRAWL = 'auth/KAKAO_WITHDRAWL';\nconst KAKAO_WITHDRAWL_SUCCESS = 'auth/KAKAO_WITHDRAWL_SUCCESS';\n\nconst CONFIRM_EMAILAUTH = 'auth/CONFIRM_EMAILAUTH';\nconst CONFIRM_EMAILAUTH_SUCCESS = 'auth/CONFIRM_EMAILAUTH_SUCCESS';\n\nexport const login = createReduxThunk(LOGIN, authAPI.login);\nexport const logout = createReduxThunk(LOGOUT, authAPI.logout);\nexport const register = createReduxThunk(REGISTER, authAPI.register);\n\nexport const checkUserId = createReduxThunk(VALIDATE_USER_ID, authAPI.checkUserId);\nexport const checkAuth = createReduxThunk(CHECK_AUTH, authAPI.checkAuth);\nexport const findPassword = createReduxThunk(FIND_PASSWORD, authAPI.findPassword);\nexport const modifyPassword = createReduxThunk(MODIFY_PASSWORD, authAPI.modifyPassword);\n\nexport const withdrawlUser = createReduxThunk(USER_WITHDRAWL, authAPI.withdrawl);\nexport const withdrawlKakao = createReduxThunk(KAKAO_WITHDRAWL, authAPI.withdrawlKakao);\n\nexport const confirmEmailAuth = createReduxThunk(CONFIRM_EMAILAUTH, authAPI.confirmEmailAuth);\n\nexport const editAuth = createAction(EDIT_AUTH, input => input);\nexport const editLoginForm = createAction(EDIT_LOGIN_FORM, input => input);\nexport const editRegisterForm = createAction(EDIT_REGISTER_FORM, input => input);\n\nexport const onEditLongTermCare = createAction(ADD_LONGTERMCARE, authAPI.onAddLongTermCare);\n\nexport const fetchPatient = createReduxThunk(GET_PATIENT, authAPI.fetchPatient);\nexport const addPatient = createReduxThunk(ADD_PATIENT, authAPI.addPatient);\nexport const editAddPatientForm = createAction(EDIT_ADD_PATIENT_FORM, input => input);\nexport const deletePatient = createReduxThunk(DELETE_PATIENT, authAPI.deletePatient);\nexport const modifyPatient = createReduxThunk(MODIFY_PATIENT, authAPI.modifyPatient);\nexport const getPatientInfo = createReduxThunk(PATIENT_INFO, authAPI.getPatientInfo);\n\nexport const fetchCard = createReduxThunk(GET_CARD, authAPI.fetchCard);\nexport const addCard = createReduxThunk(ADD_CARD, authAPI.addCard);\nexport const editAddCardForm = createAction(EDIT_ADD_CARD_FORM, input => input);\nexport const deleteCard = createReduxThunk(DELETE_CARD, authAPI.deleteCard);\nexport const modifyCard = createReduxThunk(MODIFY_CARD, authAPI.modifyCard);\nexport const getCardInfo = createReduxThunk(CARD_INFO, authAPI.getCardInfo);\n\nexport const getMateInfo = createReduxThunk(MATE_INFO, authAPI.getMateInfo);\nexport const fetchMate = createReduxThunk(GET_MATE, authAPI.fetchMate);\n\nexport const editFindPasswordForm = createAction(EDIT_FINDPASSWORD_FORM, input => input);\nexport const editPasswordForm = createAction(EDIT_PASSWORD_FORM, input => input);\nexport const editInfo = createAction(EDIT_INFO, input => input);\n\n// initalState\nconst initialState = {\n    id: '',\n    name: '',\n    photo: '',\n    userType: '',\n    allowed: null,\n    ticket: {\n        assist: 0,\n        unemergency: 0,\n    },\n\n    loginForm: {\n        userType: '',\n    },\n    registerForm: {\n        userType: USER,\n        page: 1,\n        sex: '남',\n        identify: '본인',\n        agree: false,\n    },\n\n    longTermCare: [],\n    longTermCareInfo: {},\n\n    patientList: [],\n    patientInfo: {},\n    addPatientForm: {\n        sex: '남'\n    },\n\n    cardList: [],\n    cardInfo: {},\n    addCardForm: {\n        cardName: '',\n        cardNum: '',\n        year: '',\n        month: ''\n    },\n\n    findForm: {\n        userType: USER,\n    },\n    passwordForm: {\n        password: '',\n        newPassword: '',\n        reNewPassword: '',\n    },\n    infoForm: {},\n\n    mateInfo: {},\n};\n\n// reducer\nconst authReducer = handleActions(\n    {\n        [EDIT_LOGIN_FORM]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload.type === 'clear') {\n                    draft['loginForm'] = {\n                        userType: USER,\n                    };\n                } else {\n                    draft['loginForm'][payload.type] = payload.value;\n                }\n            }),\n        [EDIT_REGISTER_FORM]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload.type === 'clear') {\n                    draft['registerForm'] = {\n                        userType: USER,\n                        page: 1,\n                        sex: '남',\n                        identify: '본인',\n                        agree: false,\n                    };\n                } else {\n                    draft['registerForm'][payload.type] = payload.value;\n                }\n            }),\n\n        [EDIT_ADD_PATIENT_FORM]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload.type === 'clear') {\n                    draft['addPatientForm'] = {\n                        sex: '남',\n                    };\n                } else {\n                    draft['addPatientForm'][payload.type] = payload.value;\n                }\n            }),\n\n        [EDIT_FINDPASSWORD_FORM]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload.type === 'clear') {\n                    draft['findForm'] = {\n                        userType: USER,\n                    };\n                } else {\n                    draft['findForm'][payload.type] = payload.value;\n                }\n            }),\n        [EDIT_PASSWORD_FORM]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload.type === 'clear') {\n                    draft['passwordForm'] = {};\n                } else {\n                    draft['passwordForm'][payload.type] = payload.value;\n                }\n            }),\n        [EDIT_INFO]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload.type === 'clear') {\n                    draft['infoForm'] = {};\n                } else {\n                    draft['infoForm'][payload.type] = payload.value;\n                }\n            }),\n        [EDIT_AUTH]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload.type === 'clear') {\n                    draft['id'] = '';\n                    draft['userType'] = '';\n                    draft['type'] = '';\n                    draft['photo'] = '';\n                    draft['name'] = '';\n                } else {\n                    draft[payload.type] = payload.value;\n                }\n            }),\n        [LOGIN_SUCCESS]: (state, { payload, meta }) =>\n            produce(state, draft => {\n                if (payload && payload._id) {\n                    draft['id'] = payload._id;\n                    draft['photo'] = payload.photo;\n                    draft['name'] = payload.name;\n                    draft['type'] = payload.type;\n                    draft['userType'] = meta.userType;\n                    // if (payload.ticket) {\n                    //     draft['ticket'] = payload.ticket;\n                    // }\n\n                    localStorage.setItem('id', payload._id);\n                    localStorage.setItem('photo', payload.photo);\n                    localStorage.setItem('name', payload.name);\n                    localStorage.setItem('contact', payload.contact);\n                    localStorage.setItem('userType', meta.userType);\n\n                    window.location.href = '/';\n                }\n            }),\n        [USER_WITHDRAWL_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload === 'success') {\n                    draft['id'] = '';\n                    draft['userType'] = '';\n                    draft['photo'] = '';\n                    draft['name'] = '';\n                    draft['password'] = '';\n                    draft['allowed'] = false;\n                    localStorage.clear();\n                    window.location.href = '/';\n                }\n            }),\n        [KAKAO_WITHDRAWL_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload === 'success') {\n                    draft['id'] = '';\n                    draft['userType'] = '';\n                    draft['photo'] = '';\n                    draft['name'] = '';\n                    draft['allowed'] = false;\n                    localStorage.clear();\n                    window.location.href = '/';\n                }\n            }),\n        [LOGOUT_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload === 'success') {\n                    draft['id'] = '';\n                    draft['userType'] = '';\n                    draft['photo'] = '';\n                    draft['name'] = '';\n                    draft['allowed'] = false;\n                    localStorage.clear();\n                    window.location.href = '/';\n                }\n            }),\n        [VALIDATE_USER_ID_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                // console.log('VALIDATE_USER_ID_SUCCESS: ', payload);\n            }),\n            \n        [REGISTER_SUCCESS]: (state, { payload, meta }) =>\n            produce(state, draft => {\n                if (payload && payload.message === 'success') {\n                    const { data } = payload;\n                    draft['id'] = data._id;\n                    draft['photo'] = data.photo;\n                    draft['name'] = data.name;\n                    draft['userType'] = meta.userType;\n                    draft['allowed'] = data.allowed;\n                    if (payload.ticket) {\n                        draft['ticket'] = payload.ticket;\n                    }\n\n                    localStorage.setItem('id', data._id);\n                    localStorage.setItem('photo', data.photo);\n                    localStorage.setItem('name', data.name);\n                    localStorage.setItem('allowed', data.allowed);\n                    localStorage.setItem('userType', meta.userType);\n\n                    // window.location.href = '/success';\n                }\n            }),\n\n        [ADD_LONGTERMCARE_SUCCESS]: (state, { payload, meta }) =>\n            produce(state, draft => {\n                if (payload && payload === 'success') {\n                    const list = draft['longTermCare'];\n                    draft['longTermCare'] = list.map(info => {\n                        const { name, age, contact, sex, region, gradePresence, gradeLevel } = meta.info;\n                        info['name'] = name;\n                        info['age'] = age;\n                        info['contact'] = contact;\n                        info['sex'] = sex;\n                        info['region'] = region;\n                        info['gradePresence'] = gradePresence;\n                        info['gradeLevel'] = gradeLevel;\n\n                        return info;\n                    })\n                }\n            }),\n\n        [CHECK_AUTH_SUCCESS]: (state, { payload, meta }) =>\n            produce(state, draft => {\n                if (payload && payload._id) {\n                    draft['id'] = payload._id;\n                    draft['photo'] = payload.photo;\n                    draft['name'] = payload.name;\n                    draft['allowed'] = payload.allowed;\n                    draft['type'] = payload.type;\n                    draft['userType'] = meta.userType;\n                    if (payload.ticket) {\n                        draft['ticket'] = payload.ticket;\n                    }\n                } else {\n                    localStorage.clear();\n                    window.location.href = '/';\n                    return null;\n                }\n            }),\n        [FIND_PASSWORD_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                // console.log();\n            }),\n        [MODIFY_PASSWORD_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                // console.log();\n            }),\n\n        [CONFIRM_EMAILAUTH_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                // console.log();\n            }),\n\n        [ADD_PATIENT_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload.message === 'success') {\n                    draft['patientList'].push(payload.data);\n                }\n            }),\n\n        [GET_PATIENT_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload.message === 'success') {\n                    draft['patientList'] = payload.data;\n                }\n            }),\n\n        [PATIENT_INFO_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                draft['patientInfo'] = payload.data;\n            }),\n\n        [MODIFY_PATIENT_SUCCESS]: (state, { payload, meta }) =>\n            produce(state, draft => {\n                if (payload && payload === 'success') {\n                    const list = draft['patientList'];\n                    draft['patientList'] = list.map(info => {\n                        if (info._id === meta.patientId) {\n                            const { name, relate, sex, age, contact, starting, environment, caution } = meta.info;\n                            info['name'] = name;\n                            info['relate'] = relate;\n                            info['sex'] = sex;\n                            info['age'] = age;\n                            info['contact'] = contact;\n                            info['starting'] = starting;\n                            info['environment'] = environment;\n                            info['caution'] = caution;\n\n                            return info;\n                        }\n                    })\n                }\n            }),\n\n        [DELETE_PATIENT_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload === 'success') {\n                    // draft['patientList'] = '';\n                    // window.location.href = '/user/mypage/profile';\n                }\n            }),\n\n        // 결제 카드 등록\n        [ADD_CARD_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload.message === 'success') {\n                    draft['cardList'].push(payload.data);\n                }\n            }),\n        \n        [EDIT_ADD_CARD_FORM]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload.type === 'clear') {\n                    draft['addCardForm'] = {\n                        cardName: '',\n                        cardNum: '',\n                        year: '',\n                        month: ''\n                    };\n                } else {\n                    draft['addCardForm'][payload.type] = payload.value;\n                }\n            }),\n\n        [GET_CARD_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload.message === 'success') {\n                    draft['cardList'] = payload.data;\n                }\n            }),\n\n        [CARD_INFO_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                draft['cardInfo'] = payload.data;\n            }),\n\n        [MODIFY_CARD_SUCCESS]: (state, { payload, meta }) =>\n            produce(state, draft => {\n                if (payload && payload === 'success') {\n                    const list = draft['cardList'];\n                    draft['cardList'] = list.map(info => {\n                        if (info._id === meta.cardId) {\n                            const { cardName, cardNum, year, month } = meta.info;\n                            info['cardName'] = cardName;\n                            info['cardNum'] = cardNum;\n                            info['year'] = year;\n                            info['month'] = month;\n\n                            return info;\n                        }\n                    })\n                }\n            }),\n\n        [DELETE_CARD_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload === 'success') {\n                    // draft['patientList'] = '';\n                    // window.location.href = '/user/mypage/profile';\n                }\n            }),\n\n        [GET_MATE_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload.message === 'success') {\n                    draft['mateList'] = payload.data;\n                }\n            }),\n\n        [MATE_INFO_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                draft['mateInfo'] = payload.data;\n            }),\n    },\n    initialState,\n);\n\nexport default authReducer;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport { message } from 'antd';\n\n// component\nimport Home from './home';\nimport { MATE } from '../../Lib/variables';\n\n// styles\nimport HomeStyledContainer from './home.styled';\n\n// actions\nimport {\n    editResrveForm,\n    getServiceInfo,\n    serviceReserve,\n    getUserInfo,\n    // getMateReserveList,\n    // getMateCallReserveList,\n    getContractPartners,\n    acceptCall,\n    editReserveDetailView,\n    editReserveLatestView,\n    editViewType,\n    editCallPage,\n    editContractForm,\n} from '../../Reducer/Modules/app';\nimport { editAuth } from '../../Reducer/Modules/auth';\n\nclass HomeContainer extends React.PureComponent {\n    componentDidMount = () => {\n        const id = localStorage.getItem('id');\n        const userType = localStorage.getItem('userType');\n\n        if (id && userType === MATE) {\n        } else {\n            const prevList = localStorage.getItem('partners');\n            if (prevList) {\n                const list = JSON.parse(prevList);\n                this.props.editContractForm({ type: 'partners', value: list });\n            }\n\n            this.props.fetchPartners();\n        }\n    };\n\n    render() {\n        return (\n            <HomeStyledContainer>\n                <Home {...this.props} />\n            </HomeStyledContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({ app, auth }) => ({\n    app,\n    auth,\n});\n\nconst mapStateToDispatch = dispatch => ({\n    editAuth: ({ type, value }) => dispatch(editAuth({ type, value })),\n    editForm: ({ type, value }) => dispatch(editResrveForm({ type, value })),\n    editLatest: ({ value }) => dispatch(editReserveLatestView({ value })),\n    editDetail: ({ value }) => dispatch(editReserveDetailView({ value })),\n    editViewType: ({ value }) => dispatch(editViewType({ value })),\n    editCallPage: value => dispatch(editCallPage(value)),\n    editContractForm: ({ type, value }) => dispatch(editContractForm({ type, value })),\n\n    getServiceInfo: ({ code }) => dispatch(getServiceInfo({ code })),\n    getUserInfo: ({ id, userType }) => dispatch(getUserInfo({ id, userType })),\n    fetchPartners: () => dispatch(getContractPartners()),\n    serviceReserve: ({ userId, info }) => dispatch(serviceReserve({ userId, info })),\n    // mateReserveList: ({ mateId }) => dispatch(getMateReserveList({ mateId })),\n    // mateCallList: ({ mateId, page }) => dispatch(getMateCallReserveList({ mateId, page })),\n    acceptCall: ({ mateId, callId }) => dispatch(acceptCall({ mateId, callId })),\n});\n\nexport default connect(mapStateToProps, mapStateToDispatch)(HomeContainer);\n","import React from 'react';\n\nconst NotFoundPage = () => (\n    <div style={{ height: '100vh', padding: '100px' }}>\n        <img src='/assets/images/new_logo_img.png' alt='위드메이트 로고' style={{ width: '55px', height: 'auto' }} />\n        <p style={{ display: 'inline-block', verticalAlign: '-10px', paddingLeft: '10px', paddingBottom: '35px', color: 'skyblue', fontSize: '40px' }}>해당 페이지를 찾을 수 없습니다.</p>\n\n        <h3 style={{ paddingBottom: '5px' }}>원하시는 결과를 찾을 수 없습니다.</h3>\n        <h3>올바른 URL을 입력하였는지 확인하세요. 자세한 내용은 사이트 관리자에게 문의하시기 바랍니다.</h3>\n    </div>\n);\nexport default NotFoundPage;\n","import styled from 'styled-components';\nimport { mainColor, sizeHandler } from '../../../../theme';\nconst LoginStyledContainer = styled.div`\n    margin-top: 55px;\n    min-height: 100vh;\n    background-image: url('/assets/images/login_bg.png');\n    background-size: cover;\n    background-repeat: no-repeat;\n    background-position: 80% 50%;\n\n    @media (max-width: 480px) {\n        min-height: initial;\n        height: 100%;\n    }\n\n    .inner-container {\n        padding: 0px;\n        padding-top: 144px;\n        padding-bottom: 100px;\n\n        @media (max-width: 480px) {\n            padding: 0px;\n        }\n\n        .login-form {\n            background-color: white;\n            border-radius: 8px;\n            box-shadow: 2px 2px 10px 3px rgba(0, 0, 0, 0.1);\n            width: 100%;\n            max-width: 340px;\n            margin: 0 auto;\n            padding: 24px;\n\n            @media (max-width: 480px) {\n                max-width: initial;\n                width: 100%;\n                border-radius: 0px;\n                box-shadow: none;\n            }\n\n            .login-title {\n                margin-bottom: 24px;\n\n                p {\n                    font-size: ${sizeHandler(32)};\n                    font-weight: bold;\n                    letter-spacing: -0.7px;\n                    color: rgba(0, 0, 0, 0.7);\n                }\n            }\n\n            .form {\n                label {\n                    font-size: ${sizeHandler(12)};\n                    letter-spacing: -0.15px;\n                    color: rgba(0, 0, 0, 0.7);\n                }\n\n                input {\n                    height: 40px;\n                    border: solid 1px #e6e6e6;\n                    // margin-bottom: 20px;\n                }\n\n                button {\n                    width: 100%;\n                    height: 46px;\n                    margin-top: 4px;\n                    margin-bottom: 16px;\n\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    letter-spacing: -0.2px;\n                    text-align: center;\n                    color: #ffffff;\n                }\n\n                .link-wrapper {\n                    display: flex;\n                    justify-content: center;\n\n                    .link {\n                        cursor: pointer;\n                        font-size: ${sizeHandler(12)};\n                        letter-spacing: -0.3px;\n                        text-align: center;\n                        color: rgba(0, 0, 0, 0.5);\n\n                        &:first-child {\n                            // border-right: 1px solid #e6e6e6;\n                            padding-right: 16px;\n                        }\n\n                        &:last-child {\n                            margin-left: 16px;\n                            color: ${mainColor};\n                        }\n                    }\n                }\n            }\n\n            .form-user-type {\n                height: 76px;\n                margin-bottom: 20px;\n                border-radius: 4px;\n                border: 1px solid #e6e6e6;\n                display: flex;\n                align-items: center;\n                overflow: hidden;\n\n                .type {\n                    flex: 1;\n                    height: 100%;\n                    line-height: 30px;\n                    background-color: #ffffff;\n                    cursor: pointer;\n\n                    &:first-child {\n                        border-right: 1px solid #e6e6e6;\n                    }\n\n                    p {\n                        font-size: ${sizeHandler(18)};\n                        font-weight: bold;\n                        line-height: 40px;\n                        text-align: left;\n                        padding-left: 10px;\n                        color: #606060;\n                    }\n\n                    h5 {\n                        font-size: ${sizeHandler(12)};\n                        text-align: left;\n                        padding-left: 10px;\n                        color: #606060;\n                    }\n\n                    &.active {\n                        background-color: #606060;\n\n                        p {\n                            color: #ffffff;\n                        }\n\n                        h5 {\n                            color: white;\n                        }\n                    }\n                }\n            }\n        }\n    }\n`;\nexport default LoginStyledContainer;\n","import React from 'react';\nimport styled from 'styled-components';\n\nconst TabContainer = styled.div`\n    width: 100%;\n    height: 48px;\n\n    border: 1px solid #dddddd;\n    border-radius: 6px;\n    overflow: hidden;\n\n    display: flex;\n    align-items: center;\n`;\n\nconst Tab = styled.div`\n    flex: 1;\n    height: 100%;\n\n    cursor: pointer;\n\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    background-color: ${props => (props.active ? '#3bc1ff' : '#ffffff')};\n\n    color: ${props => (props.active ? '#ffffff' : '#3bc1ff')};\n    font-size: 14px;\n    font-weight: bold;\n\n    transition: all 0.5s;\n`;\n\nexport { TabContainer, Tab };\n","import styled from 'styled-components';\n\nimport Pallete from '../../theme';\n\nconst H1 = styled.h1`\n    margin: 0px;\n    margin-bottom: 16px;\n\n    font-size: 26px;\n    font-weight: ${props => (props.bold ? 'bold' : 'normal')};\n    line-height: 1.5;\n\n    > span {\n        font-size: 26px;\n        font-weight: ${props => (props.bold ? 'bold' : 'normal')};\n        line-height: 1.5;\n    }\n`;\n\nconst H2 = styled.h2`\n    margin: 0px;\n    margin-bottom: 16px;\n\n    font-size: 23px;\n    font-weight: ${props => (props.bold ? 'bold' : 'normal')};\n    line-height: 1.5;\n`;\n\nconst H3 = styled.h3`\n    margin: 0px;\n    margin-bottom: 12px;\n\n    font-size: 18px;\n    font-weight: ${props => (props.bold ? 'bold' : 'normal')};\n    line-height: 1.5;\n`;\n\nconst H4 = styled.h4`\n    margin: 0px;\n    margin-bottom: 8px;\n\n    font-size: 16px;\n    font-weight: ${props => (props.bold ? 'bold' : 'normal')};\n    line-height: 1.4;\n`;\n\nconst H5 = styled.h5`\n    margin: 0px;\n    margin-bottom: 8px;\n\n    font-size: 13px;\n    font-weight: ${props => (props.bold ? 'bold' : 'normal')};\n    line-height: 1.4;\n`;\n\nconst H6 = styled.h6`\n    margin: 0px;\n    margin-bottom: 4px;\n\n    font-size: 12px;\n    font-weight: ${props => (props.bold ? 'bold' : 'normal')};\n    line-height: 1.4;\n`;\n\nconst Text = styled.p`\n    margin: 0px;\n    margin-bottom: 0px;\n\n    font-size: 11px;\n    font-weight: ${props => (props.bold ? 'bold' : 'normal')};\n    line-height: 1.4;\n`;\n\nexport { H1, H2, H3, H4, H5, H6, Text };\n","import styled from 'styled-components';\nimport Pallete from '../../theme';\n\nconst Container = styled.div`\n    width: 100%;\n`;\n\nconst InnerContainer = styled.div`\n    width: 100%;\n    max-width: 1120px;\n    margin: 0 auto;\n`;\n\nexport { Container, InnerContainer };\n","export const isNotNumber = value => {\n    const regExp = /[a-z|ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/g;\n    return regExp.test(value);\n};\n\nexport const celluarValidate = phone => {\n    const regExp = /^01(?:0|1|[6-9])[0-9]{4}[0-9]{4}$/;\n    const regExp2 = /^1(?:0|1|[6-9])[0-9]{4}[0-9]{4}$/;\n\n    const result = regExp.test(phone);\n    const result2 = regExp2.test(phone);\n\n    return result === true || result2 === true ? true : false;\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport { Select, ConfigProvider, DatePicker, message } from 'antd';\nimport holidayKR from 'holiday-kr';\nimport moment from 'moment';\nimport swal from 'sweetalert2';\nimport 'moment/locale/zh-cn';\nimport locale from 'antd/es/locale/ko_KR';\n\n// components\nimport {\n    DivisionLine,\n    WithmateLabel,\n    WithmateInput,\n    WithamteInputWithButton,\n    HalfWithmateInput,\n    WithmateTextarea,\n    WithmateSelect,\n    FlexWrapper,\n    HalfWithmateSelect,\n    WithmateDatePicker,\n    BorderDivisionLine,\n    StyledHotFix,\n    WithmateValue,\n    WithmateValueTip,\n} from '../Common/input';\nimport { H1, H2, H3, H4, H5, H6, Text } from '../Common/text';\nimport { Container } from '../Common/container';\nimport { TabContainer, Tab } from '../Common/tab';\nimport { FullWidthButton } from '../Common/button';\n\n// utils\nimport Pallete from '../../theme';\nimport { isNotNumber, celluarValidate } from '../../Lib/regex';\n\n// imgs\n\nmoment.lang('ko', {\n    weekdays: ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'],\n    weekdaysShort: ['일', '월', '화', '수', '목', '금', '토'],\n});\n\nexport const Step1 = ({ data, inputDeepHandler, setDestination, setStarting }) => {\n    const { service, sex, relate, patient, contact, destination, starting } = data;\n\n    const onTab = tab => {\n        inputDeepHandler({ type: 'temp', deepType: 'service', value: tab });\n    };\n\n    const onSex = sex => {\n        inputDeepHandler({ type: 'temp', deepType: 'sex', value: sex });\n    };\n\n    const onRelation = relate => {\n        inputDeepHandler({ type: 'temp', deepType: 'relate', value: relate });\n    };\n\n    const destinationHandler = ev => {\n        inputDeepHandler({ type: 'temp', deepType: 'destination', value: ev.target.value });\n    };\n\n    const startingHandler = ev => {\n        inputDeepHandler({ type: 'temp', deepType: 'starting', value: ev.target.value });\n    };\n\n    const onEditShielder = () => {\n        const id = localStorage.getItem('id');\n        if (!id) return null;\n\n        inputDeepHandler({ type: '_temp', deepType: 'shielder', value: (data && data.shielder) || '' });\n        inputDeepHandler({ type: '_temp', deepType: 'onShieldModal', value: true });\n    };\n\n    const onNextStep = () => {\n        if (!localStorage.getItem('id')) {\n            return message.warning('로그인 후 이용해주세요');\n        }\n\n        const fix = [];\n        if (!relate) fix.push('relate');\n        if (!contact || !celluarValidate(contact)) fix.push('contact');\n        if (!patient) fix.push('patient');\n        if (!starting) fix.push('starting');\n        if (service === 'unemergency' && !destination) fix.push('destination');\n\n        inputDeepHandler({ type: 'temp', deepType: 'reserveHotFix', value: fix });\n        if (fix.length > 0) return null;\n\n        inputDeepHandler({ type: 'temp', deepType: 'step', value: 2 });\n    };\n\n    return (\n        <Container>\n            <H1 bold style={{ color: Pallete.dark80 }}>\n                위드메이트와의\n                <br className='mobile-exist' />\n                병원 동행을 예약하세요\n            </H1>\n\n            <DivisionLine small />\n\n            <WithmateLabel required>서비스 선택</WithmateLabel>\n            <TabContainer>\n                <Tab\n                    active={data && data.service === 'unemergency'}\n                    onClick={() => {\n                        onTab('unemergency');\n                    }}\n                >\n                    Pro\n                </Tab>\n                <Tab\n                    active={data && data.service === 'assist'}\n                    onClick={() => {\n                        onTab('assist');\n                    }}\n                >\n                    Basic\n                </Tab>\n            </TabContainer>\n\n            <DivisionLine small />\n\n            <FlexWrapper withHalf>\n                <WithmateLabel required>이용자 성함 / 성별</WithmateLabel>\n                <WithmateLabel required>관계</WithmateLabel>\n            </FlexWrapper>\n            <FlexWrapper withHalf>\n                <RelativeWrapper>\n                    <WithmateInput\n                        type='text'\n                        placeholder='ex) 홍길동'\n                        value={(data && data.patient) || undefined}\n                        onChange={ev => {\n                            if (ev.target.value && ev.target.value.length > 10) return null;\n\n                            inputDeepHandler({ type: 'temp', deepType: 'patient', value: ev.target.value });\n                        }}\n                    />\n\n                    <SigleButtonWrapper>\n                        <SigleButton\n                            active={data && data.sex === '남'}\n                            onClick={() => {\n                                onSex('남');\n                            }}\n                        >\n                            남\n                        </SigleButton>\n                        <SigleButton\n                            active={data && data.sex === '녀'}\n                            onClick={() => {\n                                onSex('녀');\n                            }}\n                        >\n                            녀\n                        </SigleButton>\n                    </SigleButtonWrapper>\n                </RelativeWrapper>\n                <WithmateSelect placeholder='-' value={(data && data.relate) || undefined} onChange={onRelation}>\n                    <Select.Option value='본인'>본인</Select.Option>\n                    <Select.Option value='부모'>부모</Select.Option>\n                    <Select.Option value='자매'>자매</Select.Option>\n                    <Select.Option value='친구'>친구</Select.Option>\n                    <Select.Option value='지인'>지인</Select.Option>\n                    <Select.Option value='기타'>기타</Select.Option>\n                </WithmateSelect>\n            </FlexWrapper>\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'patient') && (\n                <StyledHotFix>이용자 성함을 입력해주세요.</StyledHotFix>\n            )}\n\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'relate') && (\n                <StyledHotFix>환자와의 관계를 선택해주세요.</StyledHotFix>\n            )}\n            <DivisionLine small />\n\n            <WithmateLabel required>보호자(서비스를 신청한 사람) 연락처</WithmateLabel>\n            <WithamteInputWithButton\n                inputConfig={{\n                    type: 'text',\n                    disabled: true,\n                    placeholder: 'ex) 01029101234 (\"-\" 없이 입력해주세요)',\n                    value: data && data.shielder,\n                }}\n                buttonName='수정'\n                onButton={onEditShielder}\n                // value={(data && data.contact) || undefined}\n            />\n            <DivisionLine small />\n\n            <WithmateLabel required>환자(서비스를 받는 사람) 연락처</WithmateLabel>\n            <WithmateInput\n                type='text'\n                placeholder='ex) 01029101234 (\"-\" 없이 입력해주세요)'\n                value={(data && data.contact) || undefined}\n                onChange={ev => {\n                    const numValue = parseFloat(ev.target.value);\n                    if (typeof numValue !== 'number') return null;\n                    if (ev.nativeEvent.data && isNotNumber(ev.nativeEvent.data)) {\n                        ev.preventDefault();\n                        return null;\n                    }\n                    if (ev.target.value.length > 11) return null;\n\n                    inputDeepHandler({ type: 'temp', deepType: 'contact', value: ev.target.value });\n                }}\n            />\n\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'contact') && (\n                <StyledHotFix>올바른 휴대전화번호를 입력해주세요.</StyledHotFix>\n            )}\n\n            <DivisionLine small />\n\n            <WithmateLabel required>병원 위치</WithmateLabel>\n            <WithamteInputWithButton\n                buttonName='검색'\n                onButton={setStarting}\n                inputConfig={{\n                    type: 'text',\n                    value: (data && data.starting) || undefined,\n                    placeholder: 'ex) 서울특별시 강남 을지병원',\n                    onChange: startingHandler,\n                }}\n            />\n\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'starting') && (\n                <StyledHotFix>병원 위치를 입력해주세요.</StyledHotFix>\n            )}\n\n            <DivisionLine small />\n\n            <WithmateLabel required={data && data.service === 'unemergency'}>자택 주소</WithmateLabel>\n            <WithamteInputWithButton\n                buttonName='검색'\n                onButton={setDestination}\n                inputConfig={{\n                    type: 'text',\n                    value: (data && data.destination) || undefined,\n                    placeholder: 'ex) 서울특별시 서초대로 30, ABC 아파트',\n                    onChange: destinationHandler,\n                }}\n            />\n\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'destination') && (\n                <StyledHotFix>귀가시 자택 주소를 입력해주세요.</StyledHotFix>\n            )}\n\n            <DivisionLine />\n\n            <FullWidthButton bg={Pallete.blue100} onClick={onNextStep}>\n                신청하기\n            </FullWidthButton>\n\n            <BorderDivisionLine small />\n\n            <FullWidthButton\n                bg={Pallete.dark60}\n                href='tel:070-4300-9075'\n                onClick={e => {\n                    if (window.innerWidth > 480) {\n                        e.preventDefault();\n                        e.stopPropagation();\n\n                        swal.fire({\n                            title: '고객 센터 연결 번호',\n                            text: '☎ 070-4300-9075',\n                            icon: 'info',\n                            confirmButtonText: '확인',\n                        });\n                    }\n                }}\n            >\n                전화 예약하기\n            </FullWidthButton>\n        </Container>\n    );\n};\n\nexport const Step2 = ({ data, inputDeepHandler }) => {\n    const { date, time, minute, sick, comment } = data;\n    const onNextStep = () => {\n        const fix = [];\n        if (!date) fix.push('date');\n        if (!sick) fix.push('sick');\n        if (!comment) fix.push('comment');\n        if (!time) fix.push('time');\n        if (time && time >= 18) fix.push('overtime');\n        if (!minute) fix.push('minute');\n\n        inputDeepHandler({ type: 'temp', deepType: 'reserveHotFix', value: fix });\n        if (fix.length > 0) return null;\n\n        inputDeepHandler({ type: 'temp', deepType: 'step', value: 3 });\n    };\n\n    const onPrevStep = () => {\n        inputDeepHandler({ type: 'temp', deepType: 'step', value: 1 });\n    };\n\n    const onCalendar = value => {\n        inputDeepHandler({ type: 'temp', deepType: 'date', value });\n    };\n\n    const sickHandler = value => {\n        inputDeepHandler({ type: 'temp', deepType: 'sick', value });\n    };\n\n    const commentHandler = value => {\n        inputDeepHandler({ type: 'temp', deepType: 'comment', value });\n    };\n\n    return (\n        <Container>\n            <H1 bold style={{ color: Pallete.dark80 }}>\n                병원 동행 예약을\n                <br className='mobile-exist' />\n                마무리 해주세요\n            </H1>\n\n            <WithmateLabel required>예약일자</WithmateLabel>\n            <ConfigProvider locale={locale}>\n                <WithmateDatePicker\n                    inputReadOnly\n                    style={{ width: '100%', height: '36px' }}\n                    value={(data && data.date) || undefined}\n                    placeholder='예약일자를 설정해주세요.'\n                    format='YYYY-MM-DD'\n                    onChange={onCalendar}\n                    disabledDate={current =>\n                        current < moment().add(0, 'day') ||\n                        current.get('day') === 0 ||\n                        current.get('day') === 6 ||\n                        holidayKR.isSolarHoliday(moment(current).toDate())\n                    }\n                />\n            </ConfigProvider>\n\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'date') && (\n                <StyledHotFix>예약일자를 선택해주세요.</StyledHotFix>\n            )}\n\n            <DivisionLine />\n\n            <WithmateLabel required>예약 시간</WithmateLabel>\n            <FlexWrapper withHalf>\n                <WithmateInput\n                    type='text'\n                    placeholder='ex) 16'\n                    value={(data && data.time) || undefined}\n                    style={{ marginRight: '4px' }}\n                    onChange={ev => {\n                        if (ev.target.value && ev.target.value.length > 10) return null;\n                        const numValue = parseFloat(ev.target.value);\n                        if (typeof numValue !== 'number') return null;\n                        if (ev.nativeEvent.data && isNotNumber(ev.nativeEvent.data)) {\n                            ev.preventDefault();\n                            return null;\n                        }\n                        if (ev.target.value.length > 2 || numValue > 23) return null;\n\n                        inputDeepHandler({ type: 'temp', deepType: 'time', value: ev.target.value });\n                    }}\n                    suffix='시'\n                />\n                <WithmateInput\n                    type='text'\n                    placeholder='ex) 30'\n                    value={(data && data.minute) || undefined}\n                    onChange={ev => {\n                        if (ev.target.value && ev.target.value.length > 10) return null;\n                        const numValue = parseFloat(ev.target.value);\n                        if (typeof numValue !== 'number') return null;\n                        if (ev.nativeEvent.data && isNotNumber(ev.nativeEvent.data)) {\n                            ev.preventDefault();\n                            return null;\n                        }\n                        if (ev.target.value.length > 2 || numValue > 60) return null;\n\n                        inputDeepHandler({ type: 'temp', deepType: 'minute', value: ev.target.value });\n                    }}\n                    suffix='분'\n                />\n            </FlexWrapper>\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'time' || r === 'minute') && (\n                <StyledHotFix>서비스 이용을 위한 예약 시간을 정확히 입력해주세요.</StyledHotFix>\n            )}\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'overtime') && (\n                <StyledHotFix>18시 이후의 서비스 예약은 불가능합니다.</StyledHotFix>\n            )}\n\n            <DivisionLine />\n\n            <WithmateLabel required>병명</WithmateLabel>\n            <WithmateInput\n                type='text'\n                placeholder='ex) 위암, 대장암, 팔 골절 등'\n                value={(data && data.sick) || undefined}\n                onChange={ev => {\n                    sickHandler(ev.target.value);\n                }}\n            />\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'sick') && (\n                <StyledHotFix>환자분의 병명을 입력해주세요.</StyledHotFix>\n            )}\n\n            <DivisionLine />\n\n            <WithmateLabel required>병원 이름 및 상세내용</WithmateLabel>\n            <WithmateTextarea\n                type='text'\n                placeholder='병원 이름 및 상세 내용을 입력해주세요. 특히, 병원 이름을 반드시 기재해주세요 (ex. 서울대학교 병원)'\n                value={(data && data.comment) || undefined}\n                onChange={ev => {\n                    commentHandler(ev.target.value);\n                }}\n            />\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'comment') && (\n                <StyledHotFix>병원 이름 및 상세내용을 입력해주세요.</StyledHotFix>\n            )}\n\n            <DivisionLine />\n\n            <FullWidthButton bg={Pallete.blue100} onClick={onNextStep}>\n                신청하기\n            </FullWidthButton>\n\n            <BorderDivisionLine small />\n\n            <FullWidthButton bg={Pallete.dark80} onClick={onPrevStep}>\n                이전으로\n            </FullWidthButton>\n        </Container>\n    );\n};\n\nexport const Step3 = ({ data, inputDeepHandler, onReserve }) => {\n    const addTimeSelector = value => {\n        inputDeepHandler({ type: 'temp', deepType: 'addTime', value });\n    };\n    const transportHandler = value => {\n        inputDeepHandler({ type: 'temp', deepType: 'transport', value });\n    };\n\n    const getFee = () => {\n        const { addTime = '60', service } = data;\n        const minute = parseInt(addTime, 10);\n\n        const time = minute / 60;\n        let total = 0;\n        if (service === 'unemergency') {\n            total = time * 20000 + time * 20000 * 0.1;\n        } else {\n            total = time * 15000 + time * 15000 * 0.1;\n        }\n\n        if (data.transport === 'own' && data.service === 'unemergency') {\n            total += 20000;\n        }\n\n        return total;\n    };\n\n    const onSaveAndNext = () => {\n        const fix = [];\n        onReserve();\n    };\n\n    return (\n        <Container>\n            <H1 bold style={{ color: Pallete.dark80 }}>\n                서비스 신청내용 확인\n            </H1>\n\n            <WithmateLabel>선택된 서비스</WithmateLabel>\n            <WithmateValue>{data && data.service === 'unemergency' ? '병원 동행 Pro' : '병원 동행 Basic'}</WithmateValue>\n\n            <DivisionLine small />\n\n            <FlexWrapper withHalf>\n                <WithmateLabel>이용자 성함</WithmateLabel>\n                <WithmateLabel>이용자와의 관계</WithmateLabel>\n            </FlexWrapper>\n            <FlexWrapper withHalf>\n                <WithmateInput disabled value={(data && data.patient) || undefined} />\n                <WithmateInput disabled value={(data && data.relate) || undefined} />\n            </FlexWrapper>\n\n            <DivisionLine small />\n\n            <FlexWrapper withHalf>\n                <WithmateLabel>전화번호</WithmateLabel>\n                <WithmateLabel>병명</WithmateLabel>\n            </FlexWrapper>\n            <FlexWrapper withHalf>\n                <WithmateInput disabled value={(data && data.contact) || undefined} />\n                <WithmateInput disabled value={(data && data.sick) || undefined} />\n            </FlexWrapper>\n\n            <DivisionLine small />\n\n            <FlexWrapper withHalf>\n                <WithmateLabel>병원 위치</WithmateLabel>\n                <WithmateLabel>자택 주소</WithmateLabel>\n            </FlexWrapper>\n            <FlexWrapper withHalf>\n                <WithmateInput disabled value={(data && data.destination) || undefined} />\n                <WithmateInput disabled value={(data && data.starting) || undefined} />\n            </FlexWrapper>\n\n            <DivisionLine small />\n\n            <FlexWrapper withHalf>\n                <WithmateLabel>예약 일자</WithmateLabel>\n                <WithmateLabel>예약 시간</WithmateLabel>\n            </FlexWrapper>\n            <FlexWrapper withHalf>\n                <WithmateInput disabled value={(data && data.date && moment(data.date).format('YY. MM. DD')) || undefined} />\n                <WithmateInput disabled value={((data && data.time) || '00') + '시 ' + ((data && data.minute) || '00') + '분'} />\n            </FlexWrapper>\n\n            <DivisionLine small />\n\n            <WithmateLabel>병원 이름 및 상세내용</WithmateLabel>\n            <WithmateTextarea disabled value={(data && data.comment) || undefined} />\n\n            <DivisionLine small />\n\n            <FullWidthButton\n                bg={Pallete.dark80}\n                onClick={() => {\n                    inputDeepHandler({ type: 'temp', deepType: 'step', value: 2 });\n                }}\n            >\n                이전으로\n            </FullWidthButton>\n\n            <DivisionLine />\n\n            <H1 bold style={{ color: Pallete.dark80 }}>\n                예약 접수하기\n            </H1>\n\n            <WithmateLabel required bg={Pallete.blue50}>\n                예상 소요 시간\n            </WithmateLabel>\n            <WithmateSelect value={(data && data.addTime) || undefined} placeholder='예상 소요시간을 선택해주세요' onChange={addTimeSelector}>\n                <Select.Option value='60'>1시간</Select.Option>\n                <Select.Option value='90'>1시간 30분</Select.Option>\n                <Select.Option value='120'>2시간</Select.Option>\n                <Select.Option value='150'>2시간 30분</Select.Option>\n                <Select.Option value='180'>3시간</Select.Option>\n                <Select.Option value='210'>3시간 30분</Select.Option>\n                <Select.Option value='240'>4시간</Select.Option>\n                <Select.Option value='270'>4시간 30분</Select.Option>\n                <Select.Option value='300'>5시간</Select.Option>\n                <Select.Option value='330'>5시간 30분</Select.Option>\n                <Select.Option value='360'>6시간</Select.Option>\n                <Select.Option value='390'>6시간 30분</Select.Option>\n                <Select.Option value='420'>7시간</Select.Option>\n                <Select.Option value='450'>7시간 30분</Select.Option>\n                <Select.Option value='480'>8시간</Select.Option>\n            </WithmateSelect>\n\n            {data && data.service === 'unemergency' && (\n                <>\n                    <DivisionLine small />\n\n                    <WithmateLabel required>이동 수단 선택</WithmateLabel>\n                    <WithmateSelect\n                        value={(data && data.transport) || undefined}\n                        placeholder='서비스 이용간 이동 수단을 선택해주세요'\n                        onChange={transportHandler}\n                    >\n                        <Select.Option value='common'>대중교통 이용 (택시・버스 등)</Select.Option>\n                        <Select.Option value='own'>본인소유 자차 이용</Select.Option>\n                        {/* <Select.Option value='withcar'>위드메이트 차량 호출</Select.Option> */}\n                    </WithmateSelect>\n                    {data.transport && data.transport === 'own' && <AlertMessage>* 자차 이용시, 운전자 보험 변경 필수</AlertMessage>}\n                </>\n            )}\n\n            <DivisionLine small />\n\n            <WithmateLabel>총 예상비용</WithmateLabel>\n            <WithmateValue>₩ {getFee()}</WithmateValue>\n            <WithmateValueTip>(VAT 10% 포함된 가격입니다)</WithmateValueTip>\n\n            <DivisionLine small />\n\n            <WithmateLabel>결제수단</WithmateLabel>\n            <WithmateValue>계좌이체</WithmateValue>\n\n            <DivisionLine x_small />\n\n            <WithmateValueTip>- 입금계좌는 서비스 종료 후 안내됩니다.</WithmateValueTip>\n            <WithmateValueTip>- 카드 결제는 예약접수 후, 고객센터에 문의바랍니다.</WithmateValueTip>\n            <WithmateValueTip>- 환불 및 접수 취소에 대한 자세한 안내 사항은 FAQ에서 확인 가능합니다.</WithmateValueTip>\n            <WithmateValueTip>- 위드메이트는 후불제 서비스입니다.</WithmateValueTip>\n\n            <DivisionLine small />\n\n            <FullWidthButton bg={Pallete.blue50} onClick={onSaveAndNext}>\n                예약 접수하기\n            </FullWidthButton>\n            <WithmateValueTip style={{ color: 'red' }}>\n                * 위드메이트는 자율형 매칭 플랫폼으로, 예약접수 시 서비스 매칭 인력 배정이 보장되지 않음을 알려드립니다.\n            </WithmateValueTip>\n        </Container>\n    );\n};\n\nexport const ContractdStep_1 = ({ data, inputDeepHandler, setDestination, onDropoReserve }) => {\n    const { service, sex, relate, patient, contact, destination, starting } = data;\n\n    const onTab = tab => {\n        inputDeepHandler({ type: 'temp', deepType: 'service', value: tab });\n    };\n\n    const onSex = sex => {\n        inputDeepHandler({ type: 'temp', deepType: 'sex', value: sex });\n    };\n\n    const onRelation = relate => {\n        inputDeepHandler({ type: 'temp', deepType: 'relate', value: relate });\n    };\n\n    const destinationHandler = ev => {\n        inputDeepHandler({ type: 'temp', deepType: 'destination', value: ev.target.value });\n    };\n\n    const onNextStep = () => {\n        if (!localStorage.getItem('id')) {\n            return message.warning('로그인 후 이용해주세요');\n        }\n\n        const fix = [];\n        if (!relate) fix.push('relate');\n        if (!contact || !celluarValidate(contact)) fix.push('contact');\n        if (!patient) fix.push('patient');\n        if (!destination) fix.push('destination');\n\n        inputDeepHandler({ type: 'temp', deepType: 'reserveHotFix', value: fix });\n        if (fix.length > 0) return null;\n\n        inputDeepHandler({ type: 'temp', deepType: 'step', value: 2 });\n    };\n\n    return (\n        <Container>\n            <H1 bold style={{ color: Pallete.dark80 }}>\n                {data.info &&\n                    data.info.description &&\n                    data.info.description.split('\\n').map((word, index) => (\n                        <span key={'title-word-' + index.toString()}>\n                            {word}\n                            <br className='mobile-exist' />\n                        </span>\n                    ))}\n            </H1>\n\n            <DivisionLine small />\n\n            <WithmateLabel required>서비스 선택</WithmateLabel>\n            {data && data.services && data.services.length > 0 && (\n                <TabContainer>\n                    {data.services.map((s, index) => (\n                        <Tab\n                            key={'service-item-key' + index.toString()}\n                            active={data && data.service === s.code}\n                            onClick={() => {\n                                onTab(s.code);\n                            }}\n                        >\n                            {s.serviceName}\n                        </Tab>\n                    ))}\n                </TabContainer>\n            )}\n            <DivisionLine small />\n\n            <FlexWrapper withHalf>\n                <WithmateLabel required>이용자 성함 / 성별</WithmateLabel>\n                <WithmateLabel required>관계</WithmateLabel>\n            </FlexWrapper>\n            <FlexWrapper withHalf>\n                <RelativeWrapper>\n                    <WithmateInput\n                        type='text'\n                        placeholder='ex) 홍길동'\n                        value={(data && data.patient) || undefined}\n                        onChange={ev => {\n                            if (ev.target.value && ev.target.value.length > 10) return null;\n\n                            inputDeepHandler({ type: 'temp', deepType: 'patient', value: ev.target.value });\n                        }}\n                    />\n\n                    <SigleButtonWrapper>\n                        <SigleButton\n                            active={data && data.sex === '남'}\n                            onClick={() => {\n                                onSex('남');\n                            }}\n                        >\n                            남\n                        </SigleButton>\n                        <SigleButton\n                            active={data && data.sex === '녀'}\n                            onClick={() => {\n                                onSex('녀');\n                            }}\n                        >\n                            녀\n                        </SigleButton>\n                    </SigleButtonWrapper>\n                </RelativeWrapper>\n                <WithmateSelect placeholder='-' value={(data && data.relate) || undefined} onChange={onRelation}>\n                    <Select.Option value='본인'>본인</Select.Option>\n                    <Select.Option value='부모'>부모</Select.Option>\n                    <Select.Option value='자매'>자매</Select.Option>\n                    <Select.Option value='친구'>친구</Select.Option>\n                    <Select.Option value='지인'>지인</Select.Option>\n                    <Select.Option value='기타'>기타</Select.Option>\n                </WithmateSelect>\n            </FlexWrapper>\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'patient') && (\n                <StyledHotFix>이용자 성함을 입력해주세요.</StyledHotFix>\n            )}\n\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'relate') && (\n                <StyledHotFix>환자와의 관계를 선택해주세요.</StyledHotFix>\n            )}\n            <DivisionLine small />\n\n            <WithmateLabel required>연락처(휴대전화번호)</WithmateLabel>\n            <WithmateInput\n                type='text'\n                placeholder='ex) 01029101234 (\"-\" 없이 입력해주세요)'\n                value={(data && data.contact) || undefined}\n                onChange={ev => {\n                    const numValue = parseFloat(ev.target.value);\n                    if (typeof numValue !== 'number') return null;\n                    if (ev.nativeEvent.data && isNotNumber(ev.nativeEvent.data)) {\n                        ev.preventDefault();\n                        return null;\n                    }\n                    if (ev.target.value.length > 11) return null;\n\n                    inputDeepHandler({ type: 'temp', deepType: 'contact', value: ev.target.value });\n                }}\n            />\n\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'contact') && (\n                <StyledHotFix>올바른 휴대전화번호를 입력해주세요.</StyledHotFix>\n            )}\n\n            <DivisionLine small />\n\n            <WithmateLabel required>병원 위치</WithmateLabel>\n            <WithamteInputWithButton\n                buttonName='검색'\n                inputConfig={{\n                    type: 'text',\n                    disabled: true,\n                    value: (data && data.starting) || undefined,\n                }}\n            />\n\n            <DivisionLine small />\n\n            <WithmateLabel required={data && data.service === 'unemergency'}>자택 주소 (고향시 내 주소지만 서비스 진행 가능)</WithmateLabel>\n            <WithamteInputWithButton\n                buttonName='검색'\n                onButton={setDestination}\n                inputConfig={{\n                    type: 'text',\n                    value: (data && data.destination) || undefined,\n                    placeholder: 'ex) 경기 고양시 덕양구 고양시청로',\n                    onChange: destinationHandler,\n                }}\n            />\n\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'starting') && (\n                <StyledHotFix>귀가시 자택 주소를 입력해주세요.</StyledHotFix>\n            )}\n\n            {data && data.service === 'dropcare' && (\n                <>\n                    <DivisionLine small />\n\n                    <FlexWrapper withHalf>\n                        <WithmateLabel required>거주 유형</WithmateLabel>\n                        <WithmateLabel required>주택 유형</WithmateLabel>\n                    </FlexWrapper>\n                    <FlexWrapper withHalf>\n                        <WithmateSelect placeholder='-'>\n                            <Select.Option value='아파트'>아파트</Select.Option>\n                            <Select.Option value='단독'>단독</Select.Option>\n                            <Select.Option value='다가구'>다가구</Select.Option>\n                        </WithmateSelect>\n                        <WithmateSelect placeholder='-'>\n                            <Select.Option value='자가'>자가</Select.Option>\n                            <Select.Option value='전.월세'>전.월세</Select.Option>\n                            <Select.Option value='기타'>기타</Select.Option>\n                        </WithmateSelect>\n                    </FlexWrapper>\n\n                    <DivisionLine small />\n                    <FlexWrapper withHalf>\n                        <WithmateLabel required>장기 요양 등급</WithmateLabel>\n                        <WithmateLabel required>확정</WithmateLabel>\n                    </FlexWrapper>\n                    <FlexWrapper withHalf>\n                        <WithmateSelect placeholder='-'>\n                            <Select.Option value='1등급'>1등급</Select.Option>\n                            <Select.Option value='2등급'>2등급</Select.Option>\n                            <Select.Option value='3등급'>3등급</Select.Option>\n                            <Select.Option value='4등급'>4등급</Select.Option>\n                            <Select.Option value='5등급'>5등급</Select.Option>\n                        </WithmateSelect>\n                        <WithmateSelect placeholder='-'>\n                            <Select.Option value='해피케어'>해피케어</Select.Option>\n                            <Select.Option value='장기요양'>장기요양</Select.Option>\n                            <Select.Option value='렌탈'>렌탈</Select.Option>\n                        </WithmateSelect>\n                    </FlexWrapper>\n                </>\n            )}\n\n            <DivisionLine />\n\n            <FullWidthButton bg={Pallete.blue100} onClick={onNextStep}>\n                신청하기\n            </FullWidthButton>\n        </Container>\n    );\n};\n\nexport const ContractStep_2 = ({ data, inputDeepHandler }) => {\n    const { date, time, minute, sick, comment } = data;\n    const onNextStep = () => {\n        const fix = [];\n        if (!date) fix.push('date');\n        if (!sick) fix.push('sick');\n        if (!comment) fix.push('comment');\n        if (!time) fix.push('time');\n        if (time && time >= 18) fix.push('overtime');\n        if (!minute) fix.push('minute');\n\n        inputDeepHandler({ type: 'temp', deepType: 'reserveHotFix', value: fix });\n        if (fix.length > 0) return null;\n\n        inputDeepHandler({ type: 'temp', deepType: 'step', value: 3 });\n    };\n\n    const onPrevStep = () => {\n        inputDeepHandler({ type: 'temp', deepType: 'step', value: 1 });\n    };\n\n    const onCalendar = value => {\n        inputDeepHandler({ type: 'temp', deepType: 'date', value });\n    };\n\n    const sickHandler = value => {\n        inputDeepHandler({ type: 'temp', deepType: 'sick', value });\n    };\n\n    const commentHandler = value => {\n        inputDeepHandler({ type: 'temp', deepType: 'comment', value });\n    };\n\n    return (\n        <Container>\n            <H1 bold style={{ color: Pallete.dark80 }}>\n                예약 신청을\n                <br className='mobile-exist' />\n                마무리 해주세요\n            </H1>\n\n            <WithmateLabel required>예약일자</WithmateLabel>\n            <ConfigProvider locale={locale}>\n                <WithmateDatePicker\n                    inputReadOnly\n                    style={{ width: '100%', height: '36px' }}\n                    value={(data && data.date) || undefined}\n                    placeholder='예약일자를 설정해주세요.'\n                    format='YYYY-MM-DD'\n                    onChange={onCalendar}\n                    disabledDate={current =>\n                        current < moment().add(0, 'day') ||\n                        current.get('day') === 0 ||\n                        current.get('day') === 6 ||\n                        holidayKR.isSolarHoliday(moment(current).toDate())\n                    }\n                />\n            </ConfigProvider>\n\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'date') && (\n                <StyledHotFix>예약일자를 선택해주세요.</StyledHotFix>\n            )}\n\n            <DivisionLine />\n\n            <WithmateLabel required>예약 시간</WithmateLabel>\n            <FlexWrapper withHalf>\n                <WithmateInput\n                    type='text'\n                    placeholder='ex) 16'\n                    value={(data && data.time) || undefined}\n                    style={{ marginRight: '4px' }}\n                    onChange={ev => {\n                        if (ev.target.value && ev.target.value.length > 10) return null;\n                        const numValue = parseFloat(ev.target.value);\n                        if (typeof numValue !== 'number') return null;\n                        if (ev.nativeEvent.data && isNotNumber(ev.nativeEvent.data)) {\n                            ev.preventDefault();\n                            return null;\n                        }\n                        if (ev.target.value.length > 2 || numValue > 23) return null;\n\n                        inputDeepHandler({ type: 'temp', deepType: 'time', value: ev.target.value });\n                    }}\n                    suffix='시'\n                />\n                <WithmateInput\n                    type='text'\n                    placeholder='ex) 30'\n                    value={(data && data.minute) || undefined}\n                    onChange={ev => {\n                        if (ev.target.value && ev.target.value.length > 10) return null;\n                        const numValue = parseFloat(ev.target.value);\n                        if (typeof numValue !== 'number') return null;\n                        if (ev.nativeEvent.data && isNotNumber(ev.nativeEvent.data)) {\n                            ev.preventDefault();\n                            return null;\n                        }\n                        if (ev.target.value.length > 2 || numValue > 60) return null;\n\n                        inputDeepHandler({ type: 'temp', deepType: 'minute', value: ev.target.value });\n                    }}\n                    suffix='분'\n                />\n            </FlexWrapper>\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'time' || r === 'minute') && (\n                <StyledHotFix>서비스 이용을 위한 예약 시간을 정확히 입력해주세요.</StyledHotFix>\n            )}\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'overtime') && (\n                <StyledHotFix>18시 이후의 서비스 예약은 불가능합니다.</StyledHotFix>\n            )}\n\n            <DivisionLine />\n\n            <WithmateLabel required>병명</WithmateLabel>\n            <WithmateInput\n                type='text'\n                placeholder='ex) 위암, 대장암, 팔 골절 등'\n                value={(data && data.sick) || undefined}\n                onChange={ev => {\n                    sickHandler(ev.target.value);\n                }}\n            />\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'sick') && (\n                <StyledHotFix>환자분의 병명을 입력해주세요.</StyledHotFix>\n            )}\n\n            <DivisionLine />\n\n            <WithmateLabel required>추가 요청 사항</WithmateLabel>\n            <WithmateTextarea\n                type='text'\n                placeholder={`서비스 진행자에게 추가적으로 요청할 사항을 적어주세요.\n                ex) 이동 간 낙상 방지에 각별히 신경써주세요.`}\n                value={(data && data.comment) || undefined}\n                onChange={ev => {\n                    commentHandler(ev.target.value);\n                }}\n            />\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'comment') && (\n                <StyledHotFix>추가 요청 사항을 입력해주세요.</StyledHotFix>\n            )}\n\n            <DivisionLine />\n\n            <FullWidthButton bg={Pallete.blue100} onClick={onNextStep}>\n                신청하기\n            </FullWidthButton>\n\n            <BorderDivisionLine small />\n\n            <FullWidthButton bg={Pallete.dark80} onClick={onPrevStep}>\n                이전으로\n            </FullWidthButton>\n        </Container>\n    );\n};\n\nexport const ContractStep_3 = ({ data, inputDeepHandler, onReserve }) => {\n    const addTimeSelector = value => {\n        inputDeepHandler({ type: 'temp', deepType: 'addTime', value });\n    };\n\n    const onSaveAndNext = () => {\n        const fix = [];\n\n        onReserve();\n    };\n\n    let selectedService = '';\n    if (data && data.service && data.services && data.services.length > 0 && data.services.some(s => s.code === data.service)) {\n        const s = data.services.filter(s => s.code === data.service)[0];\n        selectedService = s.serviceName;\n    }\n\n    return (\n        <Container>\n            <H1 bold style={{ color: Pallete.dark80 }}>\n                서비스 신청내용 확인\n            </H1>\n\n            <WithmateLabel>선택된 서비스</WithmateLabel>\n            <WithmateValue>{selectedService}</WithmateValue>\n\n            <DivisionLine small />\n\n            <FlexWrapper withHalf>\n                <WithmateLabel>이용자 성함</WithmateLabel>\n                <WithmateLabel>이용자와의 관계</WithmateLabel>\n            </FlexWrapper>\n            <FlexWrapper withHalf>\n                <WithmateInput disabled value={(data && data.patient) || undefined} />\n                <WithmateInput disabled value={(data && data.relate) || undefined} />\n            </FlexWrapper>\n\n            <DivisionLine small />\n\n            <FlexWrapper withHalf>\n                <WithmateLabel>전화번호</WithmateLabel>\n                <WithmateLabel>병명</WithmateLabel>\n            </FlexWrapper>\n            <FlexWrapper withHalf>\n                <WithmateInput disabled value={(data && data.contact) || undefined} />\n                <WithmateInput disabled value={(data && data.sick) || undefined} />\n            </FlexWrapper>\n\n            <DivisionLine small />\n\n            <FlexWrapper withHalf>\n                <WithmateLabel>병원 위치</WithmateLabel>\n                <WithmateLabel>자택 주소</WithmateLabel>\n            </FlexWrapper>\n            <FlexWrapper withHalf>\n                <WithmateInput disabled value={(data && data.destination) || undefined} />\n                <WithmateInput disabled value={(data && data.starting) || undefined} />\n            </FlexWrapper>\n\n            <DivisionLine small />\n\n            <FlexWrapper withHalf>\n                <WithmateLabel>예약 일자</WithmateLabel>\n                <WithmateLabel>예약 시간</WithmateLabel>\n            </FlexWrapper>\n            <FlexWrapper withHalf>\n                <WithmateInput disabled value={(data && data.date && moment(data.date).format('YY. MM. DD')) || undefined} />\n                <WithmateInput disabled value={((data && data.time) || '00') + '시 ' + ((data && data.minute) || '00') + '분'} />\n            </FlexWrapper>\n\n            <DivisionLine small />\n\n            <WithmateLabel>병원 이름 및 상세내용</WithmateLabel>\n            <WithmateTextarea disabled value={(data && data.comment) || undefined} />\n\n            <DivisionLine small />\n\n            <FullWidthButton\n                bg={Pallete.dark80}\n                onClick={() => {\n                    inputDeepHandler({ type: 'temp', deepType: 'step', value: 2 });\n                }}\n            >\n                이전으로\n            </FullWidthButton>\n\n            <DivisionLine />\n\n            <H1 bold style={{ color: Pallete.dark80 }}>\n                예약 접수하기\n            </H1>\n\n            <WithmateLabel required bg={Pallete.blue50}>\n                예상 소요 시간\n            </WithmateLabel>\n            <WithmateSelect value={(data && data.addTime) || undefined} placeholder='예상 소요시간을 선택해주세요' onChange={addTimeSelector}>\n                <Select.Option value='60'>1시간</Select.Option>\n                <Select.Option value='90'>1시간 30분</Select.Option>\n                <Select.Option value='120'>2시간</Select.Option>\n                <Select.Option value='150'>2시간 30분</Select.Option>\n                <Select.Option value='180'>3시간</Select.Option>\n                <Select.Option value='210'>3시간 30분</Select.Option>\n                <Select.Option value='240'>4시간</Select.Option>\n                <Select.Option value='270'>4시간 30분</Select.Option>\n                <Select.Option value='300'>5시간</Select.Option>\n                <Select.Option value='330'>5시간 30분</Select.Option>\n                <Select.Option value='360'>6시간</Select.Option>\n                <Select.Option value='390'>6시간 30분</Select.Option>\n                <Select.Option value='420'>7시간</Select.Option>\n                <Select.Option value='450'>7시간 30분</Select.Option>\n                <Select.Option value='480'>8시간</Select.Option>\n            </WithmateSelect>\n\n            <DivisionLine small />\n\n            <FullWidthButton bg={Pallete.blue50} onClick={onSaveAndNext}>\n                예약 접수하기\n            </FullWidthButton>\n        </Container>\n    );\n};\n\nconst RelativeWrapper = styled.div`\n    position: relative;\n\n    > input {\n        width: 100% !important;\n    }\n`;\n\nconst SigleButtonWrapper = styled.div`\n    position: absolute;\n    top: 1px;\n    right: 1px;\n`;\n\nconst SigleButton = styled.span`\n    display: inline-block;\n    width: 43px;\n    height: 100%;\n    line-height: 43px;\n\n    cursor: pointer;\n    font-size: 11px;\n    color: ${props => (props.active ? '#ffffff' : Pallete.dark60)};\n    text-align: center;\n\n    background-color: ${props => (props.active ? Pallete.blue50 : '#ffffff')};\n`;\n\nconst AlertMessage = styled.p`\n    margin-bottom: 0px;\n    margin-top: 4px;\n\n    font-size: 11px;\n    color: red;\n`;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { Select, ConfigProvider, DatePicker } from 'antd';\nimport holidayKR from 'holiday-kr';\nimport moment from 'moment';\n\nimport 'moment/locale/zh-cn';\nimport locale from 'antd/es/locale/ko_KR';\n\n// components\nimport {\n    DivisionLine,\n    WithmateLabel,\n    WithmateInput,\n    WithamteInputWithButton,\n    HalfWithmateInput,\n    WithmateTextarea,\n    WithmateSelect,\n    FlexWrapper,\n    HalfWithmateSelect,\n    WithmateDatePicker,\n    BorderDivisionLine,\n    StyledHotFix,\n    WithmateValue,\n    WithmateValueTip,\n} from '../Common/input';\nimport { H1, H2, H3, H4, H5, H6, Text } from '../Common/text';\nimport { Container } from '../Common/container';\nimport { TabContainer, Tab } from '../Common/tab';\nimport { FullWidthButton } from '../Common/button';\n\n// utils\nimport Pallete from '../../theme';\nimport { isNotNumber, celluarValidate } from '../../Lib/regex';\nimport { ASSIST } from '../../Lib/variables';\n\nexport const EditStep1 = ({ data, inputDeepHandler, setDestination, setStarting }) => {\n    const { service, sex, relate, patient, contact, destination, starting, status } = data;\n\n    const onTab = tab => {\n        inputDeepHandler({ type: 'temp', deepType: 'service', value: tab });\n    };\n\n    const onSex = sex => {\n        inputDeepHandler({ type: 'temp', deepType: 'sex', value: sex });\n    };\n\n    const onRelation = relate => {\n        inputDeepHandler({ type: 'temp', deepType: 'relate', value: relate });\n    };\n\n    const destinationHandler = ev => {\n        inputDeepHandler({ type: 'temp', deepType: 'destination', value: ev.target.value });\n    };\n\n    const startingHandler = ev => {\n        inputDeepHandler({ type: 'temp', deepType: 'starting', value: ev.target.value });\n    };\n\n    const onNextStep = () => {\n        const fix = [];\n        if (!relate) fix.push('relate');\n        if (!contact || !celluarValidate(contact)) fix.push('contact');\n        if (!patient) fix.push('patient');\n        if (!starting) fix.push('starting');\n        if (service === 'unemergency' && !destination) fix.push('destination');\n\n        if (!data.disabled) {\n            inputDeepHandler({ type: 'temp', deepType: 'reserveHotFix', value: fix });\n            if (fix.length > 0) return null;\n        }\n\n        inputDeepHandler({ type: 'temp', deepType: 'step', value: 2 });\n    };\n\n    return (\n        <Container>\n            <H1 bold style={{ color: Pallete.dark80 }}>\n                병원 동행 예약을\n                <br className='mobile-exist' />\n                확인해주세요\n            </H1>\n\n            <DivisionLine small />\n\n            <WithmateLabel required>서비스 선택</WithmateLabel>\n            <TabContainer>\n                <Tab\n                    active={data && data.service === 'unemergency'}\n                    onClick={() => {\n                        if (data && !data.disabled) onTab('unemergency');\n                    }}\n                >\n                    Pro\n                </Tab>\n                <Tab\n                    active={data && data.service === 'assist'}\n                    onClick={() => {\n                        if (data && !data.disabled) onTab('assist');\n                    }}\n                >\n                    Basic\n                </Tab>\n            </TabContainer>\n\n            <DivisionLine small />\n\n            <FlexWrapper withHalf>\n                <WithmateLabel required>이용자 성함 / 성별</WithmateLabel>\n                <WithmateLabel required>관계</WithmateLabel>\n            </FlexWrapper>\n            <FlexWrapper withHalf>\n                <RelativeWrapper>\n                    <WithmateInput\n                        disabled={data.disabled}\n                        type='text'\n                        placeholder='ex) 홍길동'\n                        value={(data && data.patient) || undefined}\n                        onChange={ev => {\n                            if (ev.target.value && ev.target.value.length > 10) return null;\n\n                            inputDeepHandler({ type: 'temp', deepType: 'patient', value: ev.target.value });\n                        }}\n                    />\n\n                    <SigleButtonWrapper>\n                        <SigleButton\n                            active={data && data.sex === '남'}\n                            onClick={() => {\n                                if (data && !data.disabled) onSex('남');\n                            }}\n                        >\n                            남\n                        </SigleButton>\n                        <SigleButton\n                            active={data && data.sex === '녀'}\n                            onClick={() => {\n                                if (data && !data.disabled) onSex('녀');\n                            }}\n                        >\n                            녀\n                        </SigleButton>\n                    </SigleButtonWrapper>\n                </RelativeWrapper>\n                <WithmateSelect placeholder='-' value={(data && data.relate) || undefined} onChange={onRelation}>\n                    <Select.Option value='본인'>본인</Select.Option>\n                    <Select.Option value='부모'>부모</Select.Option>\n                    <Select.Option value='자매'>자매</Select.Option>\n                    <Select.Option value='친구'>친구</Select.Option>\n                    <Select.Option value='지인'>지인</Select.Option>\n                    <Select.Option value='기타'>기타</Select.Option>\n                </WithmateSelect>\n            </FlexWrapper>\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'patient') && (\n                <StyledHotFix>이용자 성함을 입력해주세요.</StyledHotFix>\n            )}\n\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'relate') && (\n                <StyledHotFix>환자와의 관계를 선택해주세요.</StyledHotFix>\n            )}\n            <DivisionLine small />\n\n            <WithmateLabel required>연락처(휴대전화번호)</WithmateLabel>\n            <WithmateInput\n                type='text'\n                disabled={data.disabled}\n                placeholder='ex) 01029101234 (\"-\" 없이 입력해주세요)'\n                value={(data && data.contact) || undefined}\n                onChange={ev => {\n                    const numValue = parseFloat(ev.target.value);\n                    if (typeof numValue !== 'number') return null;\n                    if (ev.nativeEvent.data && isNotNumber(ev.nativeEvent.data)) {\n                        ev.preventDefault();\n                        return null;\n                    }\n                    if (ev.target.value.length > 11) return null;\n\n                    inputDeepHandler({ type: 'temp', deepType: 'contact', value: ev.target.value });\n                }}\n            />\n\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'contact') && (\n                <StyledHotFix>올바른 휴대전화번호를 입력해주세요.</StyledHotFix>\n            )}\n\n            <DivisionLine small />\n\n            <WithmateLabel required>병원 위치</WithmateLabel>\n            <WithamteInputWithButton\n                buttonName='검색'\n                inputConfig={{\n                    type: 'text',\n                    value: (data && data.destination) || undefined,\n                    placeholder: 'ex) 서울특별시 강남 을지병원',\n                    onChange: () => {},\n                    disabled: true,\n                }}\n            />\n\n            <DivisionLine small />\n\n            <WithmateLabel required={data && data.service === 'unemergency'}>자택 주소</WithmateLabel>\n            <WithamteInputWithButton\n                buttonName='검색'\n                inputConfig={{\n                    type: 'text',\n                    value: (data && data.starting) || undefined,\n                    placeholder: 'ex) 서울특별시 강남 을지병원',\n                    onChange: () => {},\n                    disabled: true,\n                }}\n            />\n\n            <DivisionLine />\n\n            <FullWidthButton bg={Pallete.blue100} onClick={onNextStep}>\n                다음으로\n            </FullWidthButton>\n        </Container>\n    );\n};\n\nexport const EditStep2 = ({ data, inputDeepHandler, onClose, onModify }) => {\n    const { date, time, minute, sick, comment } = data;\n    const onNextStep = () => {\n        const fix = [];\n        if (!date) fix.push('date');\n        if (!sick) fix.push('sick');\n        if (!comment) fix.push('comment');\n        if (!time) fix.push('time');\n        if (time && time >= 18) fix.push('overtime');\n        if (!minute) fix.push('minute');\n\n        if (!data.disabled) {\n            inputDeepHandler({ type: 'temp', deepType: 'reserveHotFix', value: fix });\n            if (fix.length > 0) return null;\n        }\n\n        // onModify();\n    };\n\n    const onCancelReserve = () => {};\n\n    const onPrevStep = () => {\n        inputDeepHandler({ type: 'temp', deepType: 'step', value: 1 });\n    };\n\n    const onCalendar = value => {\n        inputDeepHandler({ type: 'temp', deepType: 'date', value });\n    };\n\n    const sickHandler = value => {\n        inputDeepHandler({ type: 'temp', deepType: 'sick', value });\n    };\n\n    const commentHandler = value => {\n        inputDeepHandler({ type: 'temp', deepType: 'comment', value });\n    };\n\n    const getFee = () => {\n        const _transport = data.transport && data.transport === 'own' ? 20000 : 0;\n        const _service =\n            data.productInfo &&\n            data.service &&\n            (data.service === 'unemergency' ? data.productInfo.proPrice : data.productInfo.basicPrice ? data.productInfo.basicPrice : 0) * data.usageTime;\n\n        const _point = (data.usingPoint || 0) * -1;\n\n        return _transport + _service + _point;\n    };\n\n    const addTimeSelector = value => {\n        inputDeepHandler({ type: 'temp', deepType: 'addTime', value });\n    };\n\n    const transportHandler = value => {\n        inputDeepHandler({ type: 'temp', deepType: 'transport', value });\n    };\n\n    return (\n        <Container>\n            <H1 bold style={{ color: Pallete.dark80 }}>\n                병원 동행 예약을\n                <br className='mobile-exist' />\n                확인해주세요\n            </H1>\n\n            {data.meetDate && (\n                <>\n                    <WithmateLabel required>{data.service === ASSIST ? '병원 도착 요청 일자' : '자택 도착 희망 일자'}</WithmateLabel>\n                    <ConfigProvider locale={locale}>\n                        <WithmateDatePicker\n                            inputReadOnly\n                            disabled={data.disabled}\n                            style={{ width: '100%', height: '36px' }}\n                            value={(data && data.meetDate) || undefined}\n                            placeholder='예약일자를 설정해주세요.'\n                            format='YYYY-MM-DD'\n                            onChange={onCalendar}\n                            disabledDate={current =>\n                                current < moment().add(0, 'day') ||\n                                current.get('day') === 0 ||\n                                current.get('day') === 6 ||\n                                holidayKR.isSolarHoliday(moment(current).toDate())\n                            }\n                        />\n                    </ConfigProvider>\n                    <DivisionLine />\n                    <WithmateLabel required>{data.service === ASSIST ? '병원 도착 요청 시간' : '자택 도착 희망 시간'}</WithmateLabel>\n                    <FlexWrapper withHalf>\n                        <WithmateInput\n                            disabled={data.disabled}\n                            type='text'\n                            placeholder='ex) 16'\n                            value={(data && data.meetTime) || undefined}\n                            style={{ marginRight: '4px' }}\n                            onChange={ev => {\n                                if (ev.target.value && ev.target.value.length > 10) return null;\n                                const numValue = parseFloat(ev.target.value);\n                                if (typeof numValue !== 'number') return null;\n                                if (ev.nativeEvent.data && isNotNumber(ev.nativeEvent.data)) {\n                                    ev.preventDefault();\n                                    return null;\n                                }\n                                if (ev.target.value.length > 2 || numValue > 23) return null;\n\n                                inputDeepHandler({ type: 'temp', deepType: 'meetTime', value: ev.target.value });\n                            }}\n                            suffix='시'\n                        />\n                        <WithmateInput\n                            disabled={data.disabled}\n                            type='text'\n                            placeholder='ex) 30'\n                            value={(data && data.meetMinute) || undefined}\n                            onChange={ev => {\n                                if (ev.target.value && ev.target.value.length > 10) return null;\n                                const numValue = parseFloat(ev.target.value);\n                                if (typeof numValue !== 'number') return null;\n                                if (ev.nativeEvent.data && isNotNumber(ev.nativeEvent.data)) {\n                                    ev.preventDefault();\n                                    return null;\n                                }\n                                if (ev.target.value.length > 2 || numValue > 60) return null;\n\n                                inputDeepHandler({ type: 'temp', deepType: 'meetMinute', value: ev.target.value });\n                            }}\n                            suffix='분'\n                        />\n                    </FlexWrapper>\n                    <DivisionLine />\n                </>\n            )}\n\n            <WithmateLabel required>예약일자</WithmateLabel>\n            <ConfigProvider locale={locale}>\n                <WithmateDatePicker\n                    inputReadOnly\n                    disabled={data.disabled}\n                    style={{ width: '100%', height: '36px' }}\n                    value={(data && data.date) || undefined}\n                    placeholder='예약일자를 설정해주세요.'\n                    format='YYYY-MM-DD'\n                    onChange={onCalendar}\n                    disabledDate={current =>\n                        current < moment().add(0, 'day') ||\n                        current.get('day') === 0 ||\n                        current.get('day') === 6 ||\n                        holidayKR.isSolarHoliday(moment(current).toDate())\n                    }\n                />\n            </ConfigProvider>\n\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'date') && (\n                <StyledHotFix>예약일자를 선택해주세요.</StyledHotFix>\n            )}\n\n            <DivisionLine />\n            <WithmateLabel required>병원 진료 예약 시간</WithmateLabel>\n            <FlexWrapper withHalf>\n                <WithmateInput\n                    disabled={data.disabled}\n                    type='text'\n                    placeholder='ex) 16'\n                    value={(data && data.time) || undefined}\n                    style={{ marginRight: '4px' }}\n                    onChange={ev => {\n                        if (ev.target.value && ev.target.value.length > 10) return null;\n                        const numValue = parseFloat(ev.target.value);\n                        if (typeof numValue !== 'number') return null;\n                        if (ev.nativeEvent.data && isNotNumber(ev.nativeEvent.data)) {\n                            ev.preventDefault();\n                            return null;\n                        }\n                        if (ev.target.value.length > 2 || numValue > 23) return null;\n\n                        inputDeepHandler({ type: 'temp', deepType: 'time', value: ev.target.value });\n                    }}\n                    suffix='시'\n                />\n                <WithmateInput\n                    disabled={data.disabled}\n                    type='text'\n                    placeholder='ex) 30'\n                    value={(data && data.minute) || undefined}\n                    onChange={ev => {\n                        if (ev.target.value && ev.target.value.length > 10) return null;\n                        const numValue = parseFloat(ev.target.value);\n                        if (typeof numValue !== 'number') return null;\n                        if (ev.nativeEvent.data && isNotNumber(ev.nativeEvent.data)) {\n                            ev.preventDefault();\n                            return null;\n                        }\n                        if (ev.target.value.length > 2 || numValue > 60) return null;\n\n                        inputDeepHandler({ type: 'temp', deepType: 'minute', value: ev.target.value });\n                    }}\n                    suffix='분'\n                />\n            </FlexWrapper>\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'time' || r === 'minute') && (\n                <StyledHotFix>서비스 이용을 위한 예약 시간을 정확히 입력해주세요.</StyledHotFix>\n            )}\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'overtime') && (\n                <StyledHotFix>18시 이후의 서비스 예약은 불가능합니다.</StyledHotFix>\n            )}\n\n            <DivisionLine />\n\n            <WithmateLabel required>추가 요청 사항</WithmateLabel>\n            <WithmateTextarea\n                type='text'\n                disabled={data.disabled}\n                placeholder='병원 이름 및 상세 내용을 입력해주세요. 특히, 병원 이름을 반드시 기재해주세요 (ex. 서울대학교 병원)'\n                value={(data && data.comment) || undefined}\n                onChange={ev => {\n                    commentHandler(ev.target.value);\n                }}\n            />\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'comment') && (\n                <StyledHotFix>병원 이름 및 상세내용을 입력해주세요.</StyledHotFix>\n            )}\n\n            {data && data.service === 'unemergency' && (\n                <>\n                    <DivisionLine small />\n\n                    <WithmateLabel required>이동 수단 선택</WithmateLabel>\n                    <WithmateSelect\n                        disabled={data.disabled}\n                        value={(data && data.transport) || undefined}\n                        placeholder='서비스 이용간 이동 수단을 선택해주세요'\n                        onChange={transportHandler}\n                    >\n                        <Select.Option value='common'>대중교통 이용 (택시・버스 등)</Select.Option>\n                        <Select.Option value='own'>본인소유 자차 이용</Select.Option>\n                        {data.disabled && <Select.Option value='withcar'>위드메이트 차량 호출</Select.Option>}\n                        {data.transport && data.transport === 'own' && <AlertMessage>* 자차 이용시, 운전자 보험 변경 필수</AlertMessage>}\n                    </WithmateSelect>\n                </>\n            )}\n\n            <DivisionLine />\n\n            <WithmateLabel required bg={Pallete.blue50}>\n                예상 소요 시간\n            </WithmateLabel>\n            <WithmateSelect\n                disabled={data.disabled}\n                value={(data && data.addTime) || undefined}\n                placeholder='예상 소요시간을 선택해주세요'\n                onChange={addTimeSelector}\n            >\n                <Select.Option value='60'>1시간</Select.Option>\n                <Select.Option value='90'>1시간 30분</Select.Option>\n                <Select.Option value='120'>2시간</Select.Option>\n                <Select.Option value='150'>2시간 30분</Select.Option>\n                <Select.Option value='180'>3시간</Select.Option>\n                <Select.Option value='210'>3시간 30분</Select.Option>\n                <Select.Option value='240'>4시간</Select.Option>\n                <Select.Option value='270'>4시간 30분</Select.Option>\n                <Select.Option value='300'>5시간</Select.Option>\n                <Select.Option value='330'>5시간 30분</Select.Option>\n                <Select.Option value='360'>6시간</Select.Option>\n                <Select.Option value='390'>6시간 30분</Select.Option>\n                <Select.Option value='420'>7시간</Select.Option>\n                <Select.Option value='450'>7시간 30분</Select.Option>\n                <Select.Option value='480'>8시간</Select.Option>\n            </WithmateSelect>\n\n            <DivisionLine />\n\n            <WithmateLabel>총 예상 비용 (실제 비용과 다를 수 있습니다)</WithmateLabel>\n            <WithmateValue>₩ {getFee()}</WithmateValue>\n            <WithmateValueTip>(VAT 10% 포함된 가격입니다)</WithmateValueTip>\n\n            <DivisionLine />\n\n            {/* {data && !data.disabled && ( */}\n            {data && (\n                <>\n                    <FullWidthButton bg={Pallete.blue100} onClick={onNextStep}>\n                        예약 변경\n                    </FullWidthButton>\n                    <BorderDivisionLine small />\n                </>\n            )}\n\n            <FullWidthButton bg={Pallete.dark80} onClick={onClose}>\n                확인완료\n            </FullWidthButton>\n        </Container>\n    );\n};\n\nexport const ContractEditStep_1 = ({ data, inputDeepHandler, setDestination, onDropoReserve }) => {\n    const { service, sex, relate, patient, contact, destination, starting } = data;\n\n    const onTab = tab => {\n        inputDeepHandler({ type: 'temp', deepType: 'service', value: tab });\n    };\n\n    const onSex = sex => {\n        inputDeepHandler({ type: 'temp', deepType: 'sex', value: sex });\n    };\n\n    const onRelation = relate => {\n        inputDeepHandler({ type: 'temp', deepType: 'relate', value: relate });\n    };\n\n    const onNextStep = () => {\n        const fix = [];\n        if (!relate) fix.push('relate');\n        if (!contact || !celluarValidate(contact)) fix.push('contact');\n        if (!patient) fix.push('patient');\n        if (!destination) fix.push('destination');\n\n        inputDeepHandler({ type: 'temp', deepType: 'reserveHotFix', value: fix });\n        if (fix.length > 0) return null;\n\n        inputDeepHandler({ type: 'temp', deepType: 'step', value: 2 });\n    };\n\n    return (\n        <Container>\n            <H1 bold style={{ color: Pallete.dark80 }}>\n                예약을\n                <br className='mobile-exist' />\n                확인해주세요\n            </H1>\n\n            <DivisionLine small />\n\n            <FlexWrapper withHalf>\n                <WithmateLabel required>이용자 성함 / 성별</WithmateLabel>\n                <WithmateLabel required>관계</WithmateLabel>\n            </FlexWrapper>\n            <FlexWrapper withHalf>\n                <RelativeWrapper>\n                    <WithmateInput\n                        type='text'\n                        disabled\n                        placeholder='ex) 홍길동'\n                        value={(data && data.patient) || undefined}\n                        onChange={ev => {\n                            if (ev.target.value && ev.target.value.length > 10) return null;\n\n                            inputDeepHandler({ type: 'temp', deepType: 'patient', value: ev.target.value });\n                        }}\n                    />\n\n                    <SigleButtonWrapper>\n                        <SigleButton\n                            disabled\n                            active={data && data.sex === '남'}\n                            onClick={() => {\n                                onSex('남');\n                            }}\n                        >\n                            남\n                        </SigleButton>\n                        <SigleButton\n                            disabled\n                            active={data && data.sex === '녀'}\n                            onClick={() => {\n                                onSex('녀');\n                            }}\n                        >\n                            녀\n                        </SigleButton>\n                    </SigleButtonWrapper>\n                </RelativeWrapper>\n                <WithmateSelect disabled placeholder='-' value={(data && data.relate) || undefined} onChange={onRelation}>\n                    <Select.Option value='본인'>본인</Select.Option>\n                    <Select.Option value='부모'>부모</Select.Option>\n                    <Select.Option value='자매'>자매</Select.Option>\n                    <Select.Option value='친구'>친구</Select.Option>\n                    <Select.Option value='지인'>지인</Select.Option>\n                    <Select.Option value='기타'>기타</Select.Option>\n                </WithmateSelect>\n            </FlexWrapper>\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'patient') && (\n                <StyledHotFix>이용자 성함을 입력해주세요.</StyledHotFix>\n            )}\n\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'relate') && (\n                <StyledHotFix>환자와의 관계를 선택해주세요.</StyledHotFix>\n            )}\n            <DivisionLine small />\n\n            <WithmateLabel required>연락처(휴대전화번호)</WithmateLabel>\n            <WithmateInput\n                type='text'\n                disabled\n                placeholder='ex) 01029101234 (\"-\" 없이 입력해주세요)'\n                value={(data && data.contact) || undefined}\n                onChange={ev => {\n                    const numValue = parseFloat(ev.target.value);\n                    if (typeof numValue !== 'number') return null;\n                    if (ev.nativeEvent.data && isNotNumber(ev.nativeEvent.data)) {\n                        ev.preventDefault();\n                        return null;\n                    }\n                    if (ev.target.value.length > 11) return null;\n\n                    inputDeepHandler({ type: 'temp', deepType: 'contact', value: ev.target.value });\n                }}\n            />\n\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'contact') && (\n                <StyledHotFix>올바른 휴대전화번호를 입력해주세요.</StyledHotFix>\n            )}\n\n            <DivisionLine small />\n\n            <WithmateLabel required>병원 위치</WithmateLabel>\n            <WithamteInputWithButton\n                buttonName='검색'\n                inputConfig={{\n                    type: 'text',\n                    disabled: true,\n                    value: (data && data.starting) || undefined,\n                }}\n            />\n\n            <DivisionLine small />\n\n            <WithmateLabel required={data && data.service === 'unemergency'}>자택 주소 (고향시 내 주소지만 서비스 진행 가능)</WithmateLabel>\n            <WithamteInputWithButton\n                buttonName='검색'\n                inputConfig={{\n                    type: 'text',\n                    disabled: true,\n                    value: (data && data.destination) || undefined,\n                    placeholder: 'ex) 경기 고양시 덕양구 고양시청로',\n                }}\n            />\n\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'starting') && (\n                <StyledHotFix>귀가시 자택 주소를 입력해주세요.</StyledHotFix>\n            )}\n\n            {data && data.service === 'dropcare' && (\n                <>\n                    <DivisionLine small />\n\n                    <FlexWrapper withHalf>\n                        <WithmateLabel required>거주 유형</WithmateLabel>\n                        <WithmateLabel required>주택 유형</WithmateLabel>\n                    </FlexWrapper>\n                    <FlexWrapper withHalf>\n                        <WithmateSelect placeholder='-' disabled>\n                            <Select.Option value='아파트'>아파트</Select.Option>\n                            <Select.Option value='단독'>단독</Select.Option>\n                            <Select.Option value='다가구'>다가구</Select.Option>\n                        </WithmateSelect>\n                        <WithmateSelect placeholder='-' disabled>\n                            <Select.Option value='자가'>자가</Select.Option>\n                            <Select.Option value='전.월세'>전.월세</Select.Option>\n                            <Select.Option value='기타'>기타</Select.Option>\n                        </WithmateSelect>\n                    </FlexWrapper>\n\n                    <DivisionLine small />\n                    <FlexWrapper withHalf>\n                        <WithmateLabel required>장기 요양 등급</WithmateLabel>\n                        <WithmateLabel required>확정</WithmateLabel>\n                    </FlexWrapper>\n                    <FlexWrapper withHalf>\n                        <WithmateSelect placeholder='-' disabled>\n                            <Select.Option value='1등급'>1등급</Select.Option>\n                            <Select.Option value='2등급'>2등급</Select.Option>\n                            <Select.Option value='3등급'>3등급</Select.Option>\n                            <Select.Option value='4등급'>4등급</Select.Option>\n                            <Select.Option value='5등급'>5등급</Select.Option>\n                        </WithmateSelect>\n                        <WithmateSelect placeholder='-' disabled>\n                            <Select.Option value='해피케어'>해피케어</Select.Option>\n                            <Select.Option value='장기요양'>장기요양</Select.Option>\n                            <Select.Option value='렌탈'>렌탈</Select.Option>\n                        </WithmateSelect>\n                    </FlexWrapper>\n                </>\n            )}\n\n            <DivisionLine />\n\n            <FullWidthButton bg={Pallete.blue100} onClick={onNextStep}>\n                다음으로\n            </FullWidthButton>\n        </Container>\n    );\n};\n\nexport const ContractEditStep_2 = ({ data, inputDeepHandler, onClose }) => {\n    const onCalendar = value => {\n        inputDeepHandler({ type: 'temp', deepType: 'date', value });\n    };\n\n    const sickHandler = value => {\n        inputDeepHandler({ type: 'temp', deepType: 'sick', value });\n    };\n\n    const commentHandler = value => {\n        inputDeepHandler({ type: 'temp', deepType: 'comment', value });\n    };\n\n    const getFee = () => {\n        const _transport = data.transport && data.transport === 'own' ? 20000 : 0;\n        const _service =\n            data.productInfo &&\n            data.service &&\n            (data.service === 'unemergency' ? data.productInfo.proPrice : data.productInfo.basicPrice ? data.productInfo.basicPrice : 0) * data.usageTime;\n\n        const _point = (data.usingPoint || 0) * -1;\n\n        return _transport + _service + _point;\n    };\n\n    return (\n        <Container>\n            <H1 bold style={{ color: Pallete.dark80 }}>\n                예약을\n                <br className='mobile-exist' />\n                확인해주세요\n            </H1>\n\n            <WithmateLabel required>예약일자</WithmateLabel>\n            <ConfigProvider locale={locale}>\n                <WithmateDatePicker\n                    inputReadOnly\n                    disabled\n                    style={{ width: '100%', height: '36px' }}\n                    value={(data && data.date) || undefined}\n                    placeholder='예약일자를 설정해주세요.'\n                    format='YYYY-MM-DD'\n                    onChange={onCalendar}\n                    disabledDate={current =>\n                        current < moment().add(0, 'day') ||\n                        current.get('day') === 0 ||\n                        current.get('day') === 6 ||\n                        holidayKR.isSolarHoliday(moment(current).toDate())\n                    }\n                />\n            </ConfigProvider>\n\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'date') && (\n                <StyledHotFix>예약일자를 선택해주세요.</StyledHotFix>\n            )}\n\n            <DivisionLine />\n\n            <WithmateLabel required>예약 시간</WithmateLabel>\n            <FlexWrapper withHalf>\n                <WithmateInput\n                    type='text'\n                    disabled\n                    placeholder='ex) 16'\n                    value={(data && data.time) || undefined}\n                    style={{ marginRight: '4px' }}\n                    onChange={ev => {\n                        if (ev.target.value && ev.target.value.length > 10) return null;\n                        const numValue = parseFloat(ev.target.value);\n                        if (typeof numValue !== 'number') return null;\n                        if (ev.nativeEvent.data && isNotNumber(ev.nativeEvent.data)) {\n                            ev.preventDefault();\n                            return null;\n                        }\n                        if (ev.target.value.length > 2 || numValue > 23) return null;\n\n                        inputDeepHandler({ type: 'temp', deepType: 'time', value: ev.target.value });\n                    }}\n                    suffix='시'\n                />\n                <WithmateInput\n                    type='text'\n                    disabled\n                    placeholder='ex) 30'\n                    value={(data && data.minute) || undefined}\n                    onChange={ev => {\n                        if (ev.target.value && ev.target.value.length > 10) return null;\n                        const numValue = parseFloat(ev.target.value);\n                        if (typeof numValue !== 'number') return null;\n                        if (ev.nativeEvent.data && isNotNumber(ev.nativeEvent.data)) {\n                            ev.preventDefault();\n                            return null;\n                        }\n                        if (ev.target.value.length > 2 || numValue > 60) return null;\n\n                        inputDeepHandler({ type: 'temp', deepType: 'minute', value: ev.target.value });\n                    }}\n                    suffix='분'\n                />\n            </FlexWrapper>\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'time' || r === 'minute') && (\n                <StyledHotFix>서비스 이용을 위한 예약 시간을 정확히 입력해주세요.</StyledHotFix>\n            )}\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'overtime') && (\n                <StyledHotFix>18시 이후의 서비스 예약은 불가능합니다.</StyledHotFix>\n            )}\n\n            <DivisionLine />\n\n            <WithmateLabel required>추가 요청 사항</WithmateLabel>\n            <WithmateTextarea\n                type='text'\n                disabled\n                placeholder={`서비스 진행자에게 추가적으로 요청할 사항을 적어주세요.\n                ex) 이동 간 낙상 방지에 각별히 신경써주세요.`}\n                value={(data && data.comment) || undefined}\n                onChange={ev => {\n                    commentHandler(ev.target.value);\n                }}\n            />\n            {data && data.reserveHotFix && data.reserveHotFix.length > 0 && data.reserveHotFix.some(r => r === 'comment') && (\n                <StyledHotFix>추가 요청 사항을 입력해주세요.</StyledHotFix>\n            )}\n\n            <DivisionLine />\n\n            <WithmateLabel required>이동 수단 선택</WithmateLabel>\n            <WithmateValue>\n                {data.transport === 'own'\n                    ? '본인소유 자차 이용'\n                    : data.transport === 'common'\n                    ? '대중교통 이용 (택시・버스 등)'\n                    : data.transport === 'withcar'\n                    ? '위드메이트 차량 호출'\n                    : '-'}\n            </WithmateValue>\n\n            <DivisionLine />\n\n            <WithmateLabel required bg={Pallete.blue50}>\n                예상 소요 시간\n            </WithmateLabel>\n            <WithmateValue>{parseInt(data.addTime || 0, 10) / 60} 시간</WithmateValue>\n\n            <DivisionLine />\n\n            <WithmateLabel>총 예상비용</WithmateLabel>\n            <WithmateValue>₩ {getFee()}</WithmateValue>\n            <WithmateValueTip>(VAT 10% 포함된 가격입니다)</WithmateValueTip>\n\n            <DivisionLine />\n\n            <FullWidthButton bg={Pallete.dark80} onClick={onClose}>\n                확인완료\n            </FullWidthButton>\n        </Container>\n    );\n};\nconst RelativeWrapper = styled.div`\n    position: relative;\n\n    > input {\n        width: 100% !important;\n    }\n`;\n\nconst SigleButtonWrapper = styled.div`\n    position: absolute;\n    top: 1px;\n    right: 1px;\n`;\n\nconst SigleButton = styled.span`\n    display: inline-block;\n    width: 43px;\n    height: 100%;\n    line-height: 43px;\n    // border-radius: 4px;\n\n    cursor: ${props => (props.disabled ? 'not-allowed' : 'pointer')};\n    font-size: 11px;\n    color: ${props => (props.active ? '#ffffff' : Pallete.dark60)};\n    text-align: center;\n\n    background-color: ${props => (props.active ? Pallete.blue50 : '#ffffff')};\n`;\n\nconst AlertMessage = styled.p`\n    margin-bottom: 0px;\n    margin-top: 4px;\n\n    font-size: 11px;\n    color: #565656;\n`;\n","import React from 'react';\nimport styled from 'styled-components';\nimport Modal from 'react-modal';\nimport { Timeline } from 'antd';\nimport moment from 'moment';\n\n// components\nimport { TabContainer, Tab } from '../Components/Common/tab';\nimport { FullWidthButton, HalfWidthButton, ButtonWrapper } from '../Components/Common/button';\nimport {\n    DivisionLine,\n    WithmateLabel,\n    WithmateInput,\n    HalfWithmateInput,\n    WithmateTextarea,\n    WithmateSelect,\n    FlexWrapper,\n    FlexDiv,\n    HalfWithmateSelect,\n} from '../Components/Common/input';\n\nimport { Step1, Step2, Step3, ContractdStep_1, ContractStep_2, ContractStep_3 } from './Reserve/step';\nimport { EditStep1, EditStep2, ContractEditStep_1, ContractEditStep_2 } from './Reserve/editStep';\nimport ColorPallete from '../theme';\n\nconst customStyles = {\n    overlay: {\n        display: 'flex',\n\n        backgroundColor: 'rgba(0, 0, 0, 0.4)',\n        alignItems: 'center',\n        justifyContent: 'center',\n\n        zIndex: '99999999999999 !important',\n    },\n    content: {\n        width: '100%',\n        height: '100%',\n        boxShadow: 'initial',\n        border: '0px',\n        top: '0px',\n        left: '0px',\n        right: '0px',\n        bottom: '0px',\n        backgroundColor: 'transparent',\n        padding: '0px',\n\n        display: 'flex',\n        alignItems: 'center',\n    },\n};\n\nclass CustomModal extends React.PureComponent {\n    state = {};\n\n    componentDidMount = () => {\n        window.addEventListener('resize', this.onCheckSize, false);\n        if (this.props.visible) {\n            document.body.style.overflow = 'hidden';\n        }\n    };\n\n    componentWillUnmount = () => {\n        window.removeEventListener('resize', this.onCheckSize, false);\n        document.body.style.overflow = 'unset';\n    };\n\n    onCheckSize = () => {\n        const windowWidth = window.innerWidth;\n        const windowHeight = window.innerHeight;\n        const innerContent = document.getElementById(this.props.childrenId);\n\n        if (windowWidth <= 480) {\n            let top = innerContent.clientHeight / windowHeight >= 0.8 ? '100px' : 'initial';\n            let bottom = innerContent.clientHeight / windowHeight >= 0.8 ? 'initial' : '0px';\n\n            if (this.props.childrenId && this.props.childrenId.includes('full-header')) {\n                top = '0px';\n                bottom = '0px';\n            }\n\n            innerContent.style.maxWidth = '424px';\n            innerContent.style.top = top;\n            innerContent.style.bottom = bottom;\n\n            this.setState({\n                top,\n                bottom,\n            });\n        } else {\n            innerContent.style.maxWidth = this.props.childrenId && this.props.childrenId.includes('wide') ? '720px' : '424px';\n            innerContent.style.top = windowHeight * 0.15 + 'px';\n            innerContent.style.marginBottom = windowHeight * 0.15 + 'px';\n        }\n    };\n\n    render() {\n        return (\n            <Modal style={{ ...customStyles }} isOpen={this.props.visible} onAfterOpen={this.onCheckSize}>\n                {this.props.children}\n            </Modal>\n        );\n    }\n}\n\nexport const CommonWithmateModal = ({ visible, config = {}, onCancel, onOk }) => {\n    return (\n        <CustomModal visible={visible} childrenId='common-withmate-modal'>\n            <ModalInnerContainer id='common-withmate-modal'>\n                {!config.noClose && <CloseButton src={'/assets/images/close.png'} onClick={onCancel} />}\n\n                <TitleSection style={{ textAlign: 'center' }}>\n                    <CommonModalTitle style={{ textAlign: 'center' }}>{config && config.title ? config.title : ''}</CommonModalTitle>\n                    <CommonModalSubtitle style={{ marginTop: 0, wordBreak: 'keep-all' }}>\n                        {config && config.description ? config.description : ''}\n                    </CommonModalSubtitle>\n                </TitleSection>\n\n                <ContentSection style={{ textAlign: 'center' }}>\n                    {/* contents */}\n                    {config && config.content ? config.content : null}\n                    <ButtonWrapper half={config && config.cancelText && onCancel && typeof onCancel === 'function'}>\n                        {/* cancel */}\n                        {config && config.cancelText && onCancel && typeof onCancel === 'function' ? (\n                            <FullWidthButton bg={ColorPallete.dark70} onClick={onCancel}>\n                                {config && config.cancelText ? config.cancelText : '취소'}\n                            </FullWidthButton>\n                        ) : null}\n                        {/* confirm */}\n                        <FullWidthButton bg={ColorPallete.blue50} small onClick={onOk && typeof onOk === 'function' ? onOk : onCancel}>\n                            {config && config.confirmText ? config.confirmText : '확인 및 저장'}\n                        </FullWidthButton>\n                    </ButtonWrapper>\n                </ContentSection>\n            </ModalInnerContainer>\n        </CustomModal>\n    );\n};\n\nexport const SampleModal = ({ visible, visibleHandler, inputHandler, inputDeepHandler, data, onSave }) => {\n    return (\n        <CustomModal visible={visible} childrenId='sample-new-modal'>\n            <ModalInnerContainer id='sample-new-modal'>\n                <CloseButton src={'/assets/images/close.png'} onClick={visibleHandler} />\n                <TitleSection>\n                    <CommonModalTitle></CommonModalTitle>\n                </TitleSection>\n\n                <ContentSection></ContentSection>\n            </ModalInnerContainer>\n        </CustomModal>\n    );\n};\n\nexport const NoramlReserveModal = ({ visible, visibleHandler, inputHandler, inputDeepHandler, data, setDestination, setStarting, onSave }) => {\n    const { step = 1 } = data;\n\n    return (\n        <CustomModal visible={visible} childrenId='normal-reserve-modal'>\n            <ModalInnerContainer id='normal-reserve-modal'>\n                <CloseButton src={'/assets/images/close.png'} onClick={visibleHandler} />\n\n                <ContentSection>\n                    {step === 1 && <Step1 data={data} inputDeepHandler={inputDeepHandler} setDestination={setDestination} setStarting={setStarting} />}\n\n                    {step === 2 && <Step2 data={data} inputDeepHandler={inputDeepHandler} />}\n\n                    {step === 3 ? <Step3 data={data} inputDeepHandler={inputDeepHandler} onReserve={onSave} /> : null}\n                </ContentSection>\n            </ModalInnerContainer>\n        </CustomModal>\n    );\n};\n\nexport const HappyReserveModal = ({ visible, visibleHandler, inputHandler, inputDeepHandler, data, setDestination, setStarting, onSave, onDropSave }) => {\n    const { step = 1 } = data;\n\n    return (\n        <CustomModal visible={visible} childrenId='normal-reserve-modal'>\n            <ModalInnerContainer id='normal-reserve-modal'>\n                <CloseButton src={'/assets/images/close.png'} onClick={visibleHandler} />\n\n                <ContentSection>\n                    {step === 1 && (\n                        <ContractdStep_1\n                            data={data}\n                            inputDeepHandler={inputDeepHandler}\n                            setDestination={setDestination}\n                            setStarting={setStarting}\n                            onDropoReserve={onDropSave}\n                        />\n                    )}\n\n                    {step === 2 && <ContractStep_2 data={data} inputDeepHandler={inputDeepHandler} />}\n\n                    {step === 3 ? <ContractStep_3 data={data} inputDeepHandler={inputDeepHandler} onReserve={onSave} /> : null}\n                </ContentSection>\n            </ModalInnerContainer>\n        </CustomModal>\n    );\n};\n\nexport const NoramlReserveEditModal = ({ visible, visibleHandler, data, inputDeepHandler, onModify }) => {\n    const { step = 1 } = data;\n    return (\n        <CustomModal visible={visible} childrenId='normal-edit-reserve-modal'>\n            <ModalInnerContainer id='normal-edit-reserve-modal'>\n                <CloseButton src={'/assets/images/close.png'} onClick={visibleHandler} />\n                <ContentSection>\n                    {step === 1 && <EditStep1 data={data} inputDeepHandler={inputDeepHandler} />}\n\n                    {step === 2 && <EditStep2 data={data} inputDeepHandler={inputDeepHandler} onModify={onModify} onClose={visibleHandler} />}\n                </ContentSection>\n            </ModalInnerContainer>\n        </CustomModal>\n    );\n};\n\nexport const HappyReserveEditModal = ({ visible, visibleHandler, data, inputDeepHandler, onModify }) => {\n    const { step = 1 } = data;\n    return (\n        <CustomModal visible={visible} childrenId='normal-edit-reserve-modal'>\n            <ModalInnerContainer id='normal-edit-reserve-modal'>\n                <CloseButton src={'/assets/images/close.png'} onClick={visibleHandler} />\n                <ContentSection>\n                    {step === 1 && <ContractEditStep_1 data={data} inputDeepHandler={inputDeepHandler} />}\n\n                    {step === 2 && <ContractEditStep_2 data={data} inputDeepHandler={inputDeepHandler} onClose={visibleHandler} />}\n                </ContentSection>\n            </ModalInnerContainer>\n        </CustomModal>\n    );\n};\n\nexport const NewHandleReportModal = ({ visible, visibleHandler, data, inputHandler, onSave }) => {\n    return (\n        <CustomModal visible={visible} childrenId='wide-edit-report-modal'>\n            <ModalInnerContainer id='wide-edit-report-modal'>\n                <CloseButton src={'/assets/images/close.png'} onClick={visibleHandler} />\n                <TitleSection>\n                    <WideModalTitle>서비스 리포트 작성</WideModalTitle>\n                    <AlertText>\n                        *서비스 리포트를 작성하지 않을 경우 서비스 종료로 인정되지 않습니다.\n                        <br />\n                        환자와 헤어진 후 1시간 내에 꼭 리포트를 작성해주세요. 리포트 작성 완료 후 정산이 진행됩니다*\n                    </AlertText>\n                </TitleSection>\n                <ContentSection>\n                    <DivisionLine />\n\n                    <WithmateLabel required>서비스 진행 중 특이사항</WithmateLabel>\n                    <WithmateTextarea\n                        small\n                        placeholder='ex) 금일 이동 중 차가 많이 막혀 서비스 시간이 늘어났습니다.\n                                    금일 진료와는 상관없이 환자분의 잔기침이  많았습니다.\n                                    금일 내시경 검사가 밀려 예약된 시간보다 늦게 진료가 시작되었습니다.'\n                        value={data.description || null}\n                        onChange={ev => {\n                            inputHandler({ type: 'description', value: ev.target.value });\n                        }}\n                    />\n\n                    <DivisionLine />\n\n                    <WithmateLabel required>진료 및 치료 내용</WithmateLabel>\n                    <WithmateTextarea\n                        small\n                        placeholder='ex) 환자분의 증상은 점차 호전되고 있으며, 다음 진료 간 최종 완치 유무를 결정한다고 합니다. \n                                        또, 따로 물어보셨던 안마의자 사용은 삼가라는 답변을 들었습니다.'\n                        value={data.care || null}\n                        onChange={ev => {\n                            inputHandler({ type: 'care', value: ev.target.value });\n                        }}\n                    />\n\n                    <DivisionLine />\n\n                    <WithmateLabel>복약지도 사항</WithmateLabel>\n                    <WithmateTextarea\n                        small\n                        placeholder='ex) (약이름) : 1일 3회 식 후 복용, 해당 약 복용 중 매운 음식 자제'\n                        value={data.medicine || null}\n                        onChange={ev => {\n                            inputHandler({ type: 'medicine', value: ev.target.value });\n                        }}\n                    />\n\n                    <DivisionLine />\n\n                    <WithmateLabel>다음 진료 일정 정리</WithmateLabel>\n                    <WithmateTextarea\n                        small\n                        placeholder='ex) 다음 진료일 > 서울대병원 2021년 6월 15일 (화) 14시 20분 / CT 촬영 및 혈액 검사 예정'\n                        value={data.nextSchedule || null}\n                        onChange={ev => {\n                            inputHandler({ type: 'nextSchedule', value: ev.target.value });\n                        }}\n                    />\n\n                    <DivisionLine />\n\n                    <WithmateLabel>메이트 전달 사항</WithmateLabel>\n                    <WithmateTextarea\n                        small\n                        placeholder='ex) 오늘 병원 동행 서비스를 진행하며 어머님이 참 밝고 용감한 분이라는 생각이 많이 들었습니다. \n                                    시종일관 웃음으로 저를 대해주셨고, 치료와 진료 또한 긍정적인 마음으로 받으셨습니다. \n                                    어머님의 건강을 기원하며, 오늘 서비스를 마무리하겠습니다. 감사합니다.'\n                        value={data.mateComment || null}\n                        onChange={ev => {\n                            inputHandler({ type: 'mateComment', value: ev.target.value });\n                        }}\n                    />\n\n                    <DivisionLine />\n\n                    <WithmateLabel required>의료 기관 및 의사 평가</WithmateLabel>\n                    <WithmateTextarea\n                        small\n                        placeholder='ex) 서비스에 만족했습니다. \n                                        의사 성함 : 만족스러웠던 이유'\n                        value={data.doctorComment || null}\n                        onChange={ev => {\n                            inputHandler({ type: 'doctorComment', value: ev.target.value });\n                        }}\n                    />\n\n                    <DivisionLine big />\n\n                    <ButtonWrapper>\n                        <HalfWidthButton style={{ marginRight: '8px', color: '#afb0b2' }} bg='#e6e6e6' onClick={visibleHandler}>\n                            닫기\n                        </HalfWidthButton>\n                        <HalfWidthButton bg='#3bc1ff' onClick={onSave}>\n                            리포트 등록하기\n                        </HalfWidthButton>\n                    </ButtonWrapper>\n                </ContentSection>\n            </ModalInnerContainer>\n        </CustomModal>\n    );\n};\n\nexport const NoReportModal = ({ visible, visibleHandler, onNext }) => {\n    return (\n        <CustomModal visible={visible} childrenId='viewer-report-modal'>\n            <ModalInnerContainer id='viewer-report-modal'>\n                <CloseButton src={'/assets/images/close.png'} onClick={visibleHandler} />\n                <TitleSection>\n                    <WideModalTitle>서비스 리포트 미완료 예약 알림</WideModalTitle>\n                </TitleSection>\n                <ContentSection>\n                    <DivisionLine big />\n\n                    <p>서비스 리포트 작성을 완료하지않은 수행 이력이 있습니다. </p>\n                    <p>서비스 리포트 등록을 완료하고 서비스 수행 대금을 수령해보세요.</p>\n\n                    <DivisionLine big />\n\n                    <ButtonWrapper>\n                        <HalfWidthButton style={{ margin: '0 auto' }} bg='#3bc1ff' onClick={visibleHandler}>\n                            리포트 작성하러 가기\n                        </HalfWidthButton>\n                    </ButtonWrapper>\n                </ContentSection>\n            </ModalInnerContainer>\n        </CustomModal>\n    );\n};\nexport const ReportMoal = ({ visible, visibleHandler, data }) => {\n    const { report, timeline, selectedServiceName } = data;\n\n    return (\n        <CustomModal visible={visible} childrenId='wide-viewer-report-modal'>\n            <ModalInnerContainer id='wide-viewer-report-modal'>\n                <CloseButton src={'/assets/images/close.png'} onClick={visibleHandler} />\n                <TitleSection>\n                    <WideModalTitle>서비스 리포트</WideModalTitle>\n                </TitleSection>\n                <ContentSection>\n                    <DivisionLine big />\n\n                    <ReportInfoBlock style={{ border: '0px' }}>\n                        <p className='title'>{moment(report.createdAt).format('YYYY년 MM월 DD일')}</p>\n                        <ReportDescription>\n                            금일 {selectedServiceName} 서비스는\n                            <span style={{ color: '#3bc1ff', fontWeight: 'bold' }}>\n                                총 {moment(timeline.complete.time).diff(timeline.receipt.time, 'minutes')}분\n                            </span>\n                            동안 진행됐습니다.\n                        </ReportDescription>\n                    </ReportInfoBlock>\n\n                    <Timeline mode={'left'}>\n                        {timeline && timeline.receipt && timeline.receipt.time && (\n                            <Timeline.Item label={moment(timeline.receipt.time).format('HH:mm').toString()}>고객님과 메이트가 만났습니다.</Timeline.Item>\n                        )}\n                        {timeline && timeline.start && timeline.start.time && (\n                            <Timeline.Item label={moment(timeline.start.time).format('HH:mm').toString()}>병원으로 출발했습니다.</Timeline.Item>\n                        )}\n                        {timeline && timeline.arrived && timeline.arrived.time && (\n                            <Timeline.Item label={moment(timeline.arrived.time).format('HH:mm').toString()}>병원에 도착했습니다.</Timeline.Item>\n                        )}\n                        {timeline && timeline.careStart && timeline.careStart.time && (\n                            <Timeline.Item label={moment(timeline.careStart.time).format('HH:mm').toString()}>진료를 시작했습니다.</Timeline.Item>\n                        )}\n                        {timeline && timeline.careDone && timeline.careDone.time && (\n                            <Timeline.Item label={moment(timeline.careDone.time).format('HH:mm').toString()}>\n                                진료가 종료됐습니다. {moment(timeline.careDone.time).diff(moment(timeline.careStart.time).toDate(), 'minutes')}분 동안\n                                진료했습니다.\n                            </Timeline.Item>\n                        )}\n\n                        {timeline && timeline.treatmentStart && timeline.treatmentStart.time && (\n                            <Timeline.Item label={moment(timeline.treatmentStart.time).format('HH:mm').toString()}>치료를 시작했습니다.</Timeline.Item>\n                        )}\n                        {timeline && timeline.treatmentDone && timeline.treatmentDone.time && (\n                            <Timeline.Item label={moment(timeline.treatmentDone.time).format('HH:mm').toString()}>\n                                치료가 종료됐습니다. {moment(timeline.treatmentDone.time).diff(moment(timeline.treatmentStart.time).toDate(), 'minutes')}분 동안\n                                치료했습니다.\n                            </Timeline.Item>\n                        )}\n\n                        {/* 진료 시작/종료(두 번째) */}\n                        {timeline && timeline.careStart_second && timeline.careStart_second.time && (\n                            <Timeline.Item label={moment(timeline.careStart_second.time).format('HH:mm').toString()}>\n                                진료(두 번째)를 시작했습니다.\n                            </Timeline.Item>\n                        )}\n                        {timeline && timeline.careDone_second && timeline.careDone_second.time && (\n                            <Timeline.Item label={moment(timeline.careDone_second.time).format('HH:mm').toString()}>\n                                진료(두 번째)가 종료됐습니다.{' '}\n                                {moment(timeline.careDone_second.time).diff(moment(timeline.careStart_second.time).toDate(), 'minutes')}분 동안 진료했습니다.\n                            </Timeline.Item>\n                        )}\n                        {/* 치료 시작/종료(두 번째) */}\n                        {timeline && timeline.treatmentStart_second && timeline.treatmentStart_second.time && (\n                            <Timeline.Item label={moment(timeline.treatmentStart_second.time).format('HH:mm').toString()}>\n                                치료(두 번째)를 시작했습니다.\n                            </Timeline.Item>\n                        )}\n                        {timeline && timeline.treatmentDone_second && timeline.treatmentDone_second.time && (\n                            <Timeline.Item label={moment(timeline.treatmentDone_second.time).format('HH:mm').toString()}>\n                                치료(두 번째)가 종료됐습니다.{' '}\n                                {moment(timeline.treatmentDone_second.time).diff(moment(timeline.treatmentStart_second.time).toDate(), 'minutes')}분 동안\n                                치료했습니다.\n                            </Timeline.Item>\n                        )}\n\n                        {/* 진료 시작/종료(세 번째) */}\n                        {timeline && timeline.careStart_third && timeline.careStart_third.time && (\n                            <Timeline.Item label={moment(timeline.careStart_third.time).format('HH:mm').toString()}>\n                                진료(세 번째)를 시작했습니다.\n                            </Timeline.Item>\n                        )}\n                        {timeline && timeline.careDone_third && timeline.careDone_third.time && (\n                            <Timeline.Item label={moment(timeline.careDone_third.time).format('HH:mm').toString()}>\n                                진료(세 번째)가 종료됐습니다.{' '}\n                                {moment(timeline.careDone_third.time).diff(moment(timeline.careStart_third.time).toDate(), 'minutes')}분 동안 진료했습니다.\n                            </Timeline.Item>\n                        )}\n                        {/* 치료 시작/종료(세 번째) */}\n                        {timeline && timeline.treatmentStart_third && timeline.treatmentStart_third.time && (\n                            <Timeline.Item label={moment(timeline.treatmentStart_third.time).format('HH:mm').toString()}>\n                                치료(세 번째)를 시작했습니다.\n                            </Timeline.Item>\n                        )}\n                        {timeline && timeline.treatmentDone_third && timeline.treatmentDone_third.time && (\n                            <Timeline.Item label={moment(timeline.treatmentDone_third.time).format('HH:mm').toString()}>\n                                치료(세 번째)가 종료됐습니다.{' '}\n                                {moment(timeline.treatmentDone_third.time).diff(moment(timeline.treatmentStart_third.time).toDate(), 'minutes')}분 동안\n                                치료했습니다.\n                            </Timeline.Item>\n                        )}\n\n                        {timeline && timeline.backStart && timeline.backStart.time && (\n                            <Timeline.Item label={moment(timeline.backStart.time).format('HH:mm').toString()}>귀가를 시작했습니다.</Timeline.Item>\n                        )}\n                        {timeline && timeline.complete && timeline.complete.time && (\n                            <Timeline.Item label={moment(timeline.complete.time).format('HH:mm').toString()}>\n                                귀가 완료하였으며, 서비스가 종료됐습니다.\n                            </Timeline.Item>\n                        )}\n                    </Timeline>\n                    {report.description && (\n                        <>\n                            <ReportInfoBlock>\n                                <p className='title'>서비스 진행 중 특이사항</p>\n                                <ReportDescription>\n                                    {(report.description &&\n                                        report.description.split('\\n').map((word, index) => (\n                                            <span key={'report-desc-word' + index.toString()}>\n                                                {word}\n                                                <br />\n                                            </span>\n                                        ))) ||\n                                        '-'}\n                                </ReportDescription>\n                            </ReportInfoBlock>\n\n                            <DivisionLine small />\n                        </>\n                    )}\n\n                    {report.care && (\n                        <>\n                            <ReportInfoBlock>\n                                <p className='title'>진료 및 치료 내용</p>\n                                <ReportDescription>\n                                    {(report.care &&\n                                        report.care.split('\\n').map((word, index) => (\n                                            <span key={'report-care-word' + index.toString()}>\n                                                {word}\n                                                <br />\n                                            </span>\n                                        ))) ||\n                                        '-'}\n                                </ReportDescription>\n                            </ReportInfoBlock>\n                            <DivisionLine small />\n                        </>\n                    )}\n\n                    {report.medicine && (\n                        <>\n                            <ReportInfoBlock>\n                                <p className='title'>복약지도 내용</p>\n                                <ReportDescription>\n                                    {(report.medicine &&\n                                        report.medicine.split('\\n').map((word, index) => (\n                                            <span key={'report-medicine-word' + index.toString()}>\n                                                {word}\n                                                <br />\n                                            </span>\n                                        ))) ||\n                                        '-'}\n                                </ReportDescription>\n                            </ReportInfoBlock>\n\n                            <DivisionLine small />\n                        </>\n                    )}\n                    {report.nextSchedule && (\n                        <>\n                            <ReportInfoBlock>\n                                <p className='title'>다음 진료 일정 정리</p>\n                                <ReportDescription>\n                                    {(report.nextSchedule &&\n                                        report.nextSchedule.split('\\n').map((word, index) => (\n                                            <span key={'report-nextSchedule-word' + index.toString()}>\n                                                {word}\n                                                <br />\n                                            </span>\n                                        ))) ||\n                                        '-'}\n                                </ReportDescription>\n                            </ReportInfoBlock>\n\n                            <DivisionLine small />\n                        </>\n                    )}\n                    {report.mateComment && (\n                        <>\n                            <ReportInfoBlock>\n                                <p className='title'>메이트 전달 사항</p>\n                                <ReportDescription>\n                                    {(report.mateComment &&\n                                        report.mateComment.split('\\n').map((word, index) => (\n                                            <span key={'report-mateComment-word' + index.toString()}>\n                                                {word}\n                                                <br />\n                                            </span>\n                                        ))) ||\n                                        '-'}\n                                </ReportDescription>\n                            </ReportInfoBlock>\n\n                            <DivisionLine small />\n                        </>\n                    )}\n\n                    {selectedServiceName.includes('은평 성모병원') && (\n                        <>\n                            <ReportInfoBlock>\n                                <p className='title'>가톨릭대학교 은평성모병원 안내 말</p>\n                                <ReportDescription>\n                                    {(report.mateComment &&\n                                        report.mateComment.split('\\n').map((word, index) => (\n                                            <span key={'report-mateComment-word' + index.toString()}>\n                                                가톨릭대학교 은평성모병원을 이용해 주셔서 감사드립니다. <br />\n                                                최고의 환자경험이 되도록 항상 최선을 다하겠습니다.\n                                                <br />\n                                            </span>\n                                        ))) ||\n                                        '-'}\n                                </ReportDescription>\n                            </ReportInfoBlock>\n\n                            <DivisionLine small />\n                        </>\n                    )}\n\n                    <ButtonWrapper>\n                        <HalfWidthButton style={{ margin: '0 auto' }} bg='#3bc1ff' onClick={visibleHandler}>\n                            닫기\n                        </HalfWidthButton>\n                    </ButtonWrapper>\n                </ContentSection>\n            </ModalInnerContainer>\n        </CustomModal>\n    );\n};\n\nconst ModalInnerContainer = styled.div`\n    position: absolute;\n    left: 0px;\n    right: 0px;\n\n    box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1);\n    border: 1px solid #e6e6e6;\n    background-color: #ffffff;\n    border-radius: 8px;\n\n    width: 100%;\n    max-width: 424px;\n    overflow: hidden;\n    display: flex;\n    flex-direction: column;\n\n    -ms-overflow-style: none; /* IE and Edge */\n    scrollbar-width: none; /* Firefox */\n    &::-webkit-scrollbar {\n        display: none;\n    }\n\n    margin: 0 auto;\n    height: auto;\n    padding: 24px;\n\n    ${props =>\n        props.onlyMobile\n            ? `\n        display: none;\n    `\n            : ''}\n    @media (max-width: 480px) {\n        border-bottom-left-radius: 0px;\n        border-bottom-right-radius: 0px;\n        bottom: 0px;\n        padding: 16px;\n\n        ${props =>\n            props.onlyMobile\n                ? `\n        display: flex;\n        border-radius: 0px;\n        padding: 0px;\n    `\n                : ''}\n    }\n`;\n\nconst TitleSection = styled.div``;\n\nconst HeaderTitleSection = styled.div`\n    height: 44px;\n    line-height: 44px;\n    font-size: 15px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    letter-spacing: -0.45px;\n    text-align: center;\n    color: #161616;\n    border-bottom: 1px solid #e9e9e9;\n    > span.mobile-only {\n        font-size: 15px;\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        letter-spacing: -0.45px;\n        text-align: center;\n        color: #161616;\n    }\n    position: relative;\n    > img {\n        position: absolute;\n        top: 6px;\n        left: 10px;\n        width: 32px;\n        height: 32px;\n        object-fit: contain;\n        cursor: pointer;\n    }\n    > img.close {\n        left: unset;\n        right: 10px;\n    }\n    @media (min-width: 480px) {\n        height: unset;\n        line-height: unset;\n        border-bottom: 0px;\n        > span.mobile-only {\n            display: none;\n        }\n        > img.mobile-only {\n            display: none;\n        }\n    }\n`;\n\nconst ContentSection = styled.div`\n    flex: 1;\n    -ms-overflow-style: none; /* IE and Edge */\n    scrollbar-width: none; /* Firefox */\n    &::-webkit-scrollbar {\n        display: none;\n    }\n`;\n\nconst MobileContentSection = styled(ContentSection)`\n    padding: 16px;\n    @media (min-width: 480px) {\n        padding: 0px;\n    }\n`;\n\nconst CloseButton = styled.img`\n    position: absolute;\n    top: 16px;\n    right: 24px;\n\n    width: 18px;\n    height: 18px;\n\n    object-fit: cover;\n    cursor: pointer;\n\n    @media (max-width: 480px) {\n        width: 16px;\n        height: 16px;\n\n        &.desktop-only {\n            display: none;\n        }\n    }\n`;\n\nconst WideModalTitle = styled.p`\n    font-size: 24px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.3;\n    letter-spacing: -0.5px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    margin-bottom: 4px;\n`;\n\nconst AlertText = styled.div`\n    font-size: 14px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.52;\n    letter-spacing: -0.3px;\n    text-align: left;\n    color: #ff5500;\n`;\nconst CommonModalTitle = styled.p`\n    font-size: 28px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.5;\n    text-align: left;\n    color: #161616;\n\n    margin-bottom: ${props => (props.withSub ? '8px' : '16px')};\n`;\n\nconst CommonModalSubtitle = styled.p`\n    font-size: 14px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.43;\n    letter-spacing: -0.7px;\n    text-align: center;\n    color: #565656;\n\n    margin-bottom: 40px;\n\n    @media (max-width: 480px) {\n        font-size: 13px;\n        font-weight: normal;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.46;\n        letter-spacing: -0.65px;\n        text-align: center;\n        margin-bottom: 32px;\n    }\n`;\n\nconst CommonModalDescription = styled.p`\n    font-size: 12px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.5;\n    text-align: center;\n    color: #a6a6a6;\n    margin-top: -32px;\n    margin-bottom: 40px;\n\n    @media (max-width: 480px) {\n        font-size: 11px;\n        font-weight: normal;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.55;\n        letter-spacing: -0.55px;\n        text-align: center;\n    }\n`;\n\nconst ReportInfoBlock = styled.div`\n    padding-bottom: 24px;\n    border-bottom: 1px solid #e9e9e9;\n\n    > p.title {\n        font-size: 14px;\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.43;\n        letter-spacing: normal;\n        text-align: left;\n        color: #afb0b2;\n        margin-bottom: 8px;\n    }\n`;\n\nconst ReportDescription = styled.div`\n    font-size: 15px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.57;\n    letter-spacing: -0.3px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    > span {\n        font-size: 15px;\n        font-weight: normal;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.57;\n        letter-spacing: -0.3px;\n        text-align: left;\n        color: rgba(0, 0, 0, 0.7);\n    }\n`;\n","import React, { Component } from 'react';\nimport Styled from 'styled-components';\nimport { withRouter } from 'react-router-dom';\nimport KakaoLoginImg from './o2.png';\nimport KakaoLoginImgM from './o.png';\nimport { KAKAO, USER } from '../../../../Lib/variables';\nimport { notification } from 'antd';\n\nconst { Kakao } = window;\n\nclass KakaoLogin extends Component {\n    onEdit = ({ type, value }) => {\n        this.props.editRegisterForm({ type, value });\n    };\n\n    checkUser = async ({ email }) => {\n        const { userType, type } = this.props.auth.registerForm;\n        const resolve = await this.props.checkUserId({ id: email, userType: USER, type: KAKAO });\n        console.log(resolve);\n        return resolve;\n    };\n\n    register = async ({ email, gender }) => {\n        const { photo, contact, marketing, connection, birth, message, userType, type, name } = this.props.auth.registerForm;\n        this.onEdit({ type: 'type', value: KAKAO });\n        this.onEdit({ type: 'email', value: email });\n        this.onEdit({ type: 'sex', value: gender === 'male' ? '남' : '녀' });\n        this.props.history.push('/user/register');\n        // const resolve = await this.props.register({ id: email, userType: USER, name, type: KAKAO, photo, contact, marketing, connection, birth, sex: gender });\n        // if (resolve && resolve.message === 'success') {\n        // }\n\n        // if (resolve === 'check parameters') {\n        //   notification.open({\n        //     message: '회원가입에 실패하였습니다.',\n        //     description: '누락된 정보가 없는지 확인해주세요.',\n        //     type: 'success',\n        //   });\n        // }\n    };\n\n    login = async ({ email }) => {\n        const { userType, type } = this.props.auth.registerForm;\n        const resolve = await this.props.login({ id: email, userType: USER, type: KAKAO });\n        if (resolve === 'not exist') {\n            return this.setState({\n                modal: true,\n                modalTitle: '이메일 로그인',\n                modalInfo: '존재하지 않는 사용자의 아이디입니다. 아이디를 확인해주세요.',\n            });\n        }\n\n        if (resolve === 'not allowed') {\n            return this.setState({\n                modal: true,\n                modalTitle: '이메일 로그인',\n                modalInfo: '관리자로부터의 가입 승인을 대기중입니다. ',\n            });\n        }\n\n        if (resolve === 'wrong password') {\n            return this.setState({\n                modal: true,\n                modalTitle: '이메일 로그인',\n                modalInfo: '잘못된 비밀번호입니다. 확인 후 다시 시도해주세요. ',\n            });\n        }\n    };\n\n    loginWithKakao = () => {\n        // scope : 수집할 사용자 정보 명시(동의항목)\n        const scope = 'profile_nickname, gender, account_email';\n\n        const that = this;\n        // const { photo, contact, marketing, connection, birth, message } = this.props.auth.registerForm;\n\n        Kakao.Auth.login({\n            scope,\n            // success는 인증 정보를 응답(response) 받는다.\n            success: function (response) {\n                //카카오 SDK에 사용자 토큰을 설정한다.\n                window.Kakao.Auth.setAccessToken(response.access_token);\n                // console.log(`AccessToken 정보 : ${window.Kakao.Auth.getAccessToken()}`);\n\n                window.Kakao.API.request({\n                    url: '/v2/user/me',\n                    success: async function ({ kakao_account }) {\n                        //어떤 정보 넘어오는지 확인\n                        // console.log(kakao_account);\n                        const { email, gender } = kakao_account;\n\n                        // console.log(email)\n                        const resolve = await that.checkUser({ email });\n                        console.log(resolve);\n                        if (resolve === true) {\n                            that.login({ email });\n                        } else {\n                            that.register({ email, gender });\n                        }\n                    },\n                    fail: function (error) {\n                        console.log(error);\n                    },\n                });\n            },\n            fail: function (error) {\n                console.log(error);\n            },\n        });\n    };\n    render() {\n        const { location } = this.props.history;\n\n        let viewToShow;\n        if (location.pathname.includes('/login')) {\n            viewToShow = <ButtonWrap onClick={this.loginWithKakao}>카카오 로그인</ButtonWrap>;\n        } else if (location.pathname.includes('/mainRegister')) {\n            viewToShow = (\n                <ButtonWrap2 onClick={this.loginWithKakao}>\n                    <span className='visually-hidden'>카카오</span>\n                </ButtonWrap2>\n            );\n        }\n\n        return <div className='KakaoIdLogin'>{viewToShow}</div>;\n    }\n}\n\nexport default withRouter(KakaoLogin);\n\nconst ButtonWrap = Styled.div`\n  background-image: url(${KakaoLoginImg});\n  background-repeat: no-repeat;\n  margin: -10px auto;\n  padding-top: 12px;\n  text-align: center;\n  font-weight: bold;\n  width: 100%;\n  height: 45px;\n  border-radius: 12px;\n\n    @media (max-width: 768px) {\n      background-image: url(${KakaoLoginImgM});\n      width: 100%;\n      height: 45px;\n    }\n`;\n\nconst ButtonWrap2 = Styled.div`\n  background-image: url(${'/assets/images/icons/kakaotalk.png'});\n  background-repeat: no-repeat;\n  margin: -10px auto;\n  text-align: center;\n  width: 50px;\n  height: 50px;\n  overflow: hidden;\n\n  @media (max-width: 768px) {\n    background-image: url(${'/assets/images/icons/kakaotalk.png'});\n    width: 100%;\n    height: 45px;\n  }\n\n  span.visually-hidden {\n    position: absolute;\n    width: 1px;\n    height: 1px;\n    margin: -1px;\n    padding: 0;\n    border: 0;\n    clip: rect(0, 0, 0, 0);\n    overflow: hidden;\n  }\n`;\n","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { notification, message, Input, Button } from 'antd';\nimport { LOCAL, MATE, USER } from '../../../../Lib/variables';\nimport { CommonWithmateModal } from '../../../../Components/newModal';\nimport { DivisionLine, WithmateInput } from '../../../../Components/Common/input';\n\nimport KakaoLogin from './KakaoLogin';\n\nclass LoginComponent extends React.PureComponent {\n    state = {\n        modal: false,\n        modalTitle: '',\n        modalInfo: '',\n    };\n\n    onEdit = ({ type, value }) => {\n        this.props.editLoginForm({ type, value });\n    };\n\n    login = () => {\n        const { email, password, userType } = this.props.auth.loginForm;\n        const type = LOCAL;\n\n        this.props\n            .login({ id: email, password, userType, type })\n            .then(resolve => {\n                if (resolve === 'not exist') {\n                    return this.setState({\n                        modal: true,\n                        modalTitle: '이메일 로그인',\n                        modalInfo: '존재하지 않는 사용자의 아이디입니다. 아이디를 확인해주세요.',\n                    });\n                }\n\n                if (resolve === 'not allowed') {\n                    return this.setState({\n                        modal: true,\n                        modalTitle: '이메일 로그인',\n                        modalInfo: '관리자로부터의 가입 승인을 대기중입니다. ',\n                    });\n                }\n\n                if (resolve === 'wrong password') {\n                    return this.setState({\n                        modal: true,\n                        modalTitle: '이메일 로그인',\n                        modalInfo: '잘못된 비밀번호입니다. 확인 후 다시 시도해주세요. ',\n                    });\n                }\n            })\n            .catch(error => {\n                message.error('서버장애가 발생하였습니다. 관리자에게 문의해주세요.');\n                // return notification.open({\n                //     message: '로그인 에러',\n                //     description: '로그인 처리중 에러가 발생하였습니다. 새로고침 후 다시 시도해주세요.',\n                //     type: 'error',\n                // });\n            });\n    };\n\n    render() {\n        const { loginForm } = this.props.auth;\n\n        return (\n            <div className='login-container'>\n                <div className='inner-container'>\n                    <div className='login-form'>\n                        <div className='login-title'>\n                            <img src='/assets/images/new_logo_img.png' alt='위드메이트 로고' style={{ width: '45px', height: 'auto' }} /><p style={{ display: 'inline-block', verticalAlign: '-10px', paddingLeft: '10px' }}>로그인</p>\n                            <br/>\n                            <h5 style={{color: 'gray'}}>위드메이트의 서비스를 이용하기 위해 로그인을 해주세요.</h5>\n                        </div>\n                        <div>\n                            <div className='form-user-type'>\n                                <div\n                                    onClick={() => {\n                                        this.onEdit({ type: 'userType', value: USER });\n                                    }}\n                                    className={`type ${loginForm && loginForm.userType === USER ? 'active' : undefined}`}\n                                >\n                                    <p>일반 고객 로그인</p>\n                                    <h5>병원 동행서비스를 이용하고 싶어요!</h5>\n                                </div>\n                            </div>\n                            <div className='form-user-type'>\n                                <div\n                                    onClick={() => {\n                                        this.onEdit({ type: 'userType', value: MATE });\n                                    }}\n                                    className={`type ${loginForm && loginForm.userType === MATE ? 'active' : undefined}`}\n                                >\n                                    <p>메이트 로그인</p>\n                                    <h5>병원 동행서비스를 수행하는 메이트로 활동하고 싶어요!</h5>\n                                </div>\n                            </div>\n                        </div>\n                        {loginForm.userType === USER ? <>\n                            <div className='form'>\n                                <label>이메일</label>\n                                <WithmateInput\n                                    type='email'\n                                    value={loginForm.email}\n                                    onChange={ev => {\n                                        this.onEdit({ type: 'email', value: ev.target.value });\n                                    }}\n                                    placeholder='ex) korea@mail.com'\n                                />\n                                <DivisionLine />\n                                <WithmateInput\n                                    type='password'\n                                    value={loginForm.password}\n                                    onChange={ev => {\n                                        this.onEdit({ type: 'password', value: ev.target.value });\n                                    }}\n                                    onPressEnter={this.login}\n                                    placeholder='비밀번호를 입력해주세요'\n                                />\n\n                                <Button type='primary' style={{ borderRadius: '4px', marginTop: '20px', borderRadius: '12px' }} onClick={this.login}>\n                                    로그인 하기\n                                </Button>\n                                {loginForm.userType === USER ?\n                                    <KakaoLogin {...this.props} /> : null\n                                }\n\n                                <DivisionLine />\n\n                                <div className='link-wrapper'>\n                                    <span\n                                        className='link'\n                                        onClick={() => {\n                                            this.props.history.push('/user/register');\n                                        }}\n                                    >\n                                        회원가입\n                                    </span>\n                                    <span\n                                        className='link'\n                                        onClick={() => {\n                                            this.props.history.push('/user/find/password');\n                                        }}\n                                    >\n                                        비밀번호 찾기\n                                    </span>\n                                    <span\n                                        className='link'\n                                        onClick={() => {\n                                            this.props.history.push('/mate/apply');\n                                        }}\n                                    >\n                                        메이트 지원하기\n                                    </span>\n                                </div>\n                            </div>\n                        </> : null}\n\n                        {loginForm.userType === MATE ? <>\n                            <div className='form'>\n                                <label>이메일</label>\n                                <WithmateInput\n                                    type='email'\n                                    value={loginForm.email}\n                                    onChange={ev => {\n                                        this.onEdit({ type: 'email', value: ev.target.value });\n                                    }}\n                                    placeholder='ex) korea@mail.com'\n                                />\n                                <DivisionLine />\n                                <WithmateInput\n                                    type='password'\n                                    value={loginForm.password}\n                                    onChange={ev => {\n                                        this.onEdit({ type: 'password', value: ev.target.value });\n                                    }}\n                                    onPressEnter={this.login}\n                                    placeholder='비밀번호를 입력해주세요'\n                                />\n\n                                <Button type='primary' style={{ borderRadius: '4px', marginTop: '20px', borderRadius: '12px' }} onClick={this.login}>\n                                    로그인 하기\n                                </Button>\n\n                                <DivisionLine />\n\n                                <div className='link-wrapper'>\n                                    <span\n                                        className='link'\n                                        onClick={() => {\n                                            this.props.history.push('/user/register');\n                                        }}\n                                    >\n                                        회원가입\n                                    </span>\n                                    <span\n                                        className='link'\n                                        onClick={() => {\n                                            this.props.history.push('/user/find/password');\n                                        }}\n                                    >\n                                        비밀번호 찾기\n                                    </span>\n                                    <span\n                                        className='link'\n                                        onClick={() => {\n                                            this.props.history.push('/mate/apply');\n                                        }}\n                                    >\n                                        메이트 지원하기\n                                    </span>\n                                </div>\n                            </div>\n                        </> : null}\n                    </div>\n                </div>\n\n                {this.state.modal && (\n                    <CommonWithmateModal\n                        visible={this.state.modal}\n                        config={{\n                            title: this.state.modalTitle,\n                            description: this.state.modalInfo,\n                            confirmText: '확인 및 닫기',\n                            noClose: true,\n                        }}\n                        onOk={() => {\n                            this.setState({ modal: false, modalTitle: '', modalInfo: '' });\n                        }}\n                    />\n                )}\n            </div>\n        );\n    }\n}\nexport default LoginComponent;\n","import React from 'react';\nimport { connect } from 'react-redux';\n\n// component\nimport LoginStyledContainer from './login.styled';\nimport Login from './login';\nimport { login, editLoginForm, editRegisterForm, checkUserId } from '../../../../Reducer/Modules/auth';\n\nclass LoginPage extends React.PureComponent {\n    componentDidMount = () => {\n        const { auth } = this.props;\n        const userId = localStorage.getItem('id');\n        if ((auth && auth.id) || userId) return this.props.history.goBack('/');\n    };\n    render() {\n        return (\n            <LoginStyledContainer>\n                <Login {...this.props} />\n            </LoginStyledContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({ auth }) => ({\n    auth,\n});\n\nconst mapDispatchToProps = dispatch => ({\n    editRegisterForm: ({ type, value }) => dispatch(editRegisterForm({ type, value })),\n    login: ({ id, password, userType, type }) => dispatch(login({ id, password, userType, type })),\n    checkUserId: ({ id, userType, type }) => dispatch(checkUserId({ id, userType, type })),\n    editLoginForm: ({ type, value }) => dispatch(editLoginForm({ type, value })),\n});\nexport default connect(mapStateToProps, mapDispatchToProps)(LoginPage);\n","import React from 'react';\nimport { MATE, USER } from '../../../../Lib/variables';\nimport KakaoLogin from '../Login/KakaoLogin';\n\nclass MainComponent extends React.PureComponent {\n    render() {\n        const { userType } = this.props.auth;\n\n        return (\n            <div className='login-container'>\n                <div className='inner-container'>\n                    <div className='register-form'>\n                        <div className='register-title'>\n                            <img src='/assets/images/new_logo_img.png' alt='위드메이트 로고' style={{ width: '45px', height: 'auto' }} />\n                            <p style={{ display: 'inline-block', verticalAlign: '-10px', paddingLeft: '10px' }}>회원가입</p>\n                            <br />\n                            <h5 style={{ color: 'gray' }}>위드메이트의 서비스를 이용하기 위해 회원가입을 해주세요.</h5>\n                        </div>\n\n                        <div>\n                            <div className='form-user-type'>\n                                <div\n                                    onClick={() => {\n                                        this.props.history.push('/user/register');\n                                    }}\n                                    className={`type ${userType === USER ? 'active' : undefined}`}\n                                >\n                                    <p>일반 고객으로 가입하기</p>\n                                    <h5>병원 동행서비스를 이용하고 싶어요!</h5>\n                                </div>\n                            </div>\n                            <div className='form-user-type'>\n                                <div\n                                    onClick={() => {\n                                        this.props.history.push('/mate/apply');\n                                    }}\n                                    className={`type ${userType === MATE ? 'active' : undefined}`}\n                                >\n                                    <p>메이트 지원하기</p>\n                                    <h5>병원 동행서비스를 수행하는 메이트로 활동하고 싶어요!</h5>\n                                </div>\n                            </div>\n                        </div>\n\n                        {/* <div className='link-wrapper'>\n                            <span className='text'>SNS계정으로 간편하게 회원가입 </span>\n                            <div style={{ paddingLeft: '15px', paddingBottom: '15px', borderRadius: '20px', width: 'auto', height: 'auto' }}>\n                                <KakaoLogin {...this.props} checkUserId={this.props.checkUserId} />\n                            </div>\n                        </div> */}\n                        <div className='link-wrapper'>\n                            <span className='text'>이미 계정이 있으신가요? </span>\n                            <span\n                                onClick={() => {\n                                    this.props.history.push('/user/login');\n                                }}\n                                className='link'\n                            >\n                                로그인\n                            </span>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\nexport default MainComponent;\n","import styled from 'styled-components';\nimport { mainColor, sizeHandler } from '../../../../theme';\n\nconst MainRegisterStyledContainer = styled.div`\n    margin-top: 55px;\n    min-height: 100vh;\n    background-image: url('/assets/images/login_bg.png');\n    background-size: cover;\n    background-repeat: no-repeat;\n    background-position: 80% 50%;\n\n    @media (max-width: 480px) {\n        min-height: initial;\n        height: 100%;\n    }\n\n    .inner-container {\n        padding: 0px;\n        padding-top: 144px;\n        padding-bottom: 100px;\n\n        @media (max-width: 480px) {\n            padding: 0px;\n        }\n\n        .register-form {\n            background-color: white;\n            border-radius: 8px;\n            box-shadow: 2px 2px 10px 3px rgba(0, 0, 0, 0.1);\n            width: 100%;\n            max-width: 340px;\n            margin: 0 auto;\n            padding: 24px;\n\n            @media (max-width: 480px) {\n                max-width: initial;\n                width: 100%;\n                border-radius: 0px;\n                box-shadow: none;\n            }\n\n            .register-title {\n                margin-bottom: 24px;\n\n                p {\n                    font-size: ${sizeHandler(32)};\n                    font-weight: bold;\n                    letter-spacing: -0.7px;\n                    color: rgba(0, 0, 0, 0.7);\n                }\n            }\n\n            .link-wrapper {\n                display: flex;\n                justify-content: center;\n                .text {\n                    font-size: ${sizeHandler(14)};\n                    letter-spacing: -0.3px;\n                    text-align: center;\n                    color: rgba(0, 0, 0, 0.7);\n                    line-height: 21px;\n                }\n\n                .link {\n                    cursor: pointer;\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    letter-spacing: -0.3px;\n                    text-align: center;\n                    color: ${mainColor};\n\n                    margin-left: 8px;\n                }\n            }\n\n            .form {\n                label {\n                    font-size: ${sizeHandler(12)};\n                    letter-spacing: -0.15px;\n                    color: rgba(0, 0, 0, 0.7);\n                }\n\n                input {\n                    height: 40px;\n                    border: solid 1px #e6e6e6;\n                    // margin-bottom: 20px;\n                }\n\n                button {\n                    width: 100%;\n                    height: 46px;\n                    margin-top: 4px;\n                    margin-bottom: 16px;\n\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    letter-spacing: -0.2px;\n                    text-align: center;\n                    color: #ffffff;\n                }\n            }\n\n            .form-user-type {\n                height: 76px;\n                margin-bottom: 20px;\n                border-radius: 4px;\n                border: 1px solid #e6e6e6;\n                display: flex;\n                align-items: center;\n                overflow: hidden;\n\n                .type {\n                    flex: 1;\n                    height: 100%;\n                    line-height: 30px;\n                    background-color: #ffffff;\n                    cursor: pointer;\n\n                    &:first-child {\n                        border-right: 1px solid #e6e6e6;\n                    }\n\n                    p {\n                        font-size: ${sizeHandler(18)};\n                        font-weight: bold;\n                        line-height: 40px;\n                        text-align: left;\n                        padding-left: 10px;\n                        color: #606060;\n                    }\n\n                    h5 {\n                        font-size: ${sizeHandler(12)};\n                        text-align: left;\n                        padding-left: 10px;\n                        color: #606060;\n                    }\n\n                    &.active {\n                        background-color: #606060;\n\n                        p {\n                            color: #ffffff;\n                        }\n\n                        h5 {\n                            color: white;\n                        }\n                    }\n                }\n            }\n        }\n    }\n`;\nexport default MainRegisterStyledContainer;\n","import React from 'react';\nimport { connect } from 'react-redux';\n\n// component\nimport MainRegister from './main';\nimport MainRegisterStyledContainer from './main.styled';\n\nclass MainRegisterPage extends React.PureComponent {\n    render() {\n        return (\n            <MainRegisterStyledContainer>\n                <MainRegister {...this.props} />\n            </MainRegisterStyledContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({ auth }) => ({\n    auth,\n});\n\nconst mapDispatchToProps = dispatch => ({\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(MainRegisterPage);","import styled from 'styled-components';\nimport { mainColor, sizeHandler } from '../../../../theme';\n\nconst RegisterStyledContainer = styled.div`\n    padding-top: 110px;\n    padding-bottom: 55px;\n\n    background-image: url('/assets/images/login_bg.png');\n    background-size: cover;\n    background-repeat: no-repeat;\n    background-position: 80% 50%;\n\n    @media (max-width: 480px) {\n        min-height: initial;\n        height: 100%;\n        padding-bottom: 0px;\n        padding-top: 55px;\n    }\n\n    .inner-container {\n        padding-bottom: 0px;\n        padding-top: 0px;\n\n        @media (max-width: 480px) {\n            padding: 0px;\n        }\n\n        .register-form {\n            background-color: white;\n            border-radius: 8px;\n            box-shadow: 2px 2px 10px 3px rgba(0, 0, 0, 0.1);\n            width: 100%;\n            max-width: 360px;\n            margin: 0 auto;\n            padding: 32px;\n\n            @media (max-width: 480px) {\n                max-width: initial;\n                width: 100%;\n                border-radius: 0px;\n                box-shadow: none;\n                padding: 24px;\n            }\n\n            .title-wrapper {\n                display: flex;\n                justify-content: flex-start;\n                margin-bottom: 16px;\n\n                p {\n                    flex: 1;\n                    font-size: ${sizeHandler(32)};\n                    font-weight: bold;\n                    letter-spacing: -0.7px;\n                    line-height: 48px;\n                    color: rgba(0, 0, 0, 0.7);\n                    margin: 0px;\n                    padding: 0px;\n                }\n\n                span {\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    text-align: right;\n                    color: ${mainColor};\n                }\n            }\n\n            .form {\n                label {\n                    font-size: ${sizeHandler(12)};\n                    letter-spacing: -0.15px;\n                    line-height: 20px;\n                    color: rgba(0, 0, 0, 0.7);\n                    margin-bottom: 4px;\n                }\n\n                input {\n                    height: 44px;\n                    border: solid 1px #e6e6e6;\n                    padding: 10px;\n\n                    &.ant-input {\n                        font-size: 16px;\n                        line-height: 28px;\n                        letter-spacing: -0.2px;\n                        color: rgba(0, 0, 0, 0.7);\n\n                        &::placeholder {\n                            font-size: 14px;\n                        }\n                    }\n                }\n\n                .type-button-wrapper {\n                    width: 100%;\n                    height: 48px;\n\n                    background-color: white;\n                    border: 1px solid #e6e6e6;\n                    border-radius: 4px;\n\n                    display: flex;\n                    align-items: center;\n\n                    > .type-button {\n                        width: 50%;\n                        height: 100%;\n                        line-height: 48px;\n\n                        text-align: center;\n                        cursor: pointer;\n\n                        font-size: 16px;\n                        letter-spacing: -0.2px;\n                        color: rgba(0, 0, 0, 0.2);\n                    }\n\n                    > .type-button.active {\n                        background: rgba(0, 0, 0, 0.7);\n                        border-radius: 4px;\n                        color: #f9f9f9;\n                    }\n                }\n\n                button {\n                    width: 100%;\n                    height: 46px;\n                    margin-top: 4px;\n                    margin-bottom: 16px;\n\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    letter-spacing: -0.2px;\n                    text-align: center;\n                    color: #ffffff;\n                }\n\n                .link-wrapper {\n                    display: flex;\n                    justify-content: center;\n                    margin-bottom: 8px;\n                    .text {\n                        font-size: ${sizeHandler(14)};\n                        letter-spacing: -0.3px;\n                        text-align: center;\n                        color: rgba(0, 0, 0, 0.7);\n                        line-height: 21px;\n                    }\n\n                    .link {\n                        cursor: pointer;\n                        font-size: ${sizeHandler(14)};\n                        font-weight: bold;\n                        letter-spacing: -0.3px;\n                        text-align: center;\n                        color: ${mainColor};\n\n                        margin-left: 8px;\n                    }\n                }\n            }\n\n            .form-user-type {\n                height: 36px;\n                margin-bottom: 20px;\n                border-radius: 4px;\n                border: 1px solid #e6e6e6;\n                display: flex;\n                align-items: center;\n                overflow: hidden;\n\n                .type {\n                    flex: 1;\n                    height: 100%;\n                    line-height: 36px;\n                    background-color: #ffffff;\n                    cursor: pointer;\n\n                    &:first-child {\n                        border-right: 1px solid #e6e6e6;\n                    }\n\n                    p {\n                        font-size: ${sizeHandler(12)};\n                        font-weight: bold;\n                        text-align: center;\n                        color: #606060;\n                    }\n\n                    &.active {\n                        background-color: #606060;\n\n                        p {\n                            color: #ffffff;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    .ant-upload-drag-container {\n        .title {\n            margin-top: 12px;\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            text-align: center;\n            color: rgba(0, 0, 0, 0.8);\n        }\n\n        .reco {\n            font-size: ${sizeHandler(12)};\n            letter-spacing: -0.3px;\n            text-align: center;\n            color: #a7a7a7;\n        }\n    }\n`;\nexport default RegisterStyledContainer;\n","import styled from 'styled-components';\nimport { sizeHandler, mainColor } from '../../../theme';\nconst TermsStyledContainer = styled.div`\n    .inner-container {\n        ${props => props.component && `padding: 0px !important;`}\n    }\n    .main-context {\n        width: ${props => (props.component ? '100%' : '60%')};\n\n        h2 {\n            ${props => props.component && `display: none;`}\n            font-size: ${sizeHandler(44)};\n            font-weight: bold;\n            letter-spacing: -0.6px;\n            color: #000000;\n            margin-bottom: 24px;\n        }\n\n        p {\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.8);\n            padding: 0px;\n            margin: 0px;\n        }\n    }\n\n    .context-block {\n        margin-top: ${props => (props.component ? '24px' : '100px')};\n        padding-top: 24px;\n        border-top: 1px solid #e6e6e6;\n        width: ${props => (props.component ? '100%' : '60%')};\n\n        > h3 {\n            font-size: ${sizeHandler(24)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n            margin-bottom: 16px;\n        }\n\n        > h6 {\n            font-size: ${sizeHandler(16)};\n            font-weight: normal;\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.8);\n            margin-bottom: 24px;\n        }\n\n        > h5 {\n            font-size: ${sizeHandler(18)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n            margin-top: 20px;\n            margin-bottom: 12px;\n        }\n\n        > p {\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.7);\n        }\n\n        > .privacy-justify {\n            display: flex;\n            align-items: center;\n            ${props => props.component && `display: block;`}\n\n            p {\n                flex: 1;\n                font-size: ${sizeHandler(14)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.7);\n\n                &:first-child {\n                    text-align: left;\n                }\n\n                &:last-child {\n                    text-align: right;\n                    ${props => props.component && `text-align: left;`}\n                }\n            }\n        }\n\n        > .info {\n            margin-top: 8px;\n            .title {\n                border-bottom: 1px solid #e6e6e6;\n                padding: 24px 0px;\n                font-size: ${sizeHandler(14)};\n                letter-spacing: -0.3px;\n                color: rgba(0, 0, 0, 0.7);\n                margin: 0px;\n\n                .bold {\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    color: rgba(0, 0, 0, 0.7);\n                    margin: 0px;\n                    padding: 0px;\n                    margin-bottom: 4px;\n                    display: block;\n                }\n            }\n\n            .content {\n                font-size: ${sizeHandler(14)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.7);\n                padding: 20px 0px;\n                border-bottom: 1px solid #e6e6e6;\n            }\n        }\n\n        > .info-block {\n            margin-top: 68px;\n\n            .title {\n                font-size: ${sizeHandler(18)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.8);\n                margin-bottom: 8px;\n            }\n\n            .content {\n                font-size: ${sizeHandler(14)};\n                line-height: ${sizeHandler(24)};\n                letter-spacing: -0.3px;\n                color: rgba(0, 0, 0, 0.7);\n            }\n        }\n    }\n\n    @media (max-width: 1120px) {\n        .inner-container {\n            padding-left: 16px;\n            padding-right: 16px;\n        }\n    }\n\n    @media (max-width: 768px) {\n        .main-context {\n            width: 100%;\n\n            h2 {\n                font-size: ${sizeHandler(38)};\n            }\n        }\n\n        .context-block {\n            width: 100%;\n        }\n\n        .privacy-justify {\n            flex-direction: column;\n\n            p {\n                &:first-child {\n                    text-align: center;\n                }\n                &:last-child {\n                    text-align: center;\n                }\n            }\n        }\n    }\n`;\nexport default TermsStyledContainer;\n","import React from 'react';\n\nclass TermsComponent extends React.PureComponent {\n    render() {\n        return (\n            <div className='terms-container'>\n                <div className='inner-container'>\n                    <div className='main-context'>\n                        <h2>위드메이트 서비스 이용약관</h2>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 1조(목적)</h3>\n                        <p>\n                            본 약관은 ㈜블루카멜(이하 “회사”라 한다)가 제공하는 위드메이트 병원 동행 서비스와 관련하여 회사와 회원과의 권리,\n                            <br />\n                            의무 및 책임 사항, 그리고 기타 필요한 사항을 규정함을 목적으로 합니다.\n                        </p>\n                        <br />\n                        <p>본 서비스 이용약관은 2021년 12월 20일부터 시행됩니다.</p>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 2조(정의)</h3>\n                        <h5>1. 본 약관에서 사용하는 용어의 정의는 다음과 같습니다.</h5>\n\n                        <div className='info'>\n                            <p className='title'>“위드메이트 서비스” 혹은 “서비스”라 함은 당사가 제공하는 ‘병원 동행 서비스’를 의미합니다.</p>\n                            <p className='title'>\n                                “회원”이라 함은 회사가 제공하는 서비스를 이용하기 위하여 본 약관에 동의하고 회사의 회원으로 가입하는 자를 말합니다. (단,\n                                메이트와 관련된 사실 관계에 한하여, 메이트도 본 약관에서 “회원”에 포함될 수 있습니다)\n                            </p>\n                            <p className='title'>\n                                “메이트”라 함은 회사가 회원에게 서비스를 제공하기 위해 직접 선별하고 교육하여 ‘프리랜서’의 형태로 간접 고용한 인원을 말합니다.\n                            </p>\n                            <p className='title'>\n                                “운송사업자\"라 함은 여객자동차 운수사업법 제4조에 따른 면허를 받은 여객자동차 운송사업자로서, 회사(메이트 인력)의 중개 또는 회원\n                                스스로를 통해 택시 등 그 면허를 받은 운송 수단을 이용하여 운송서비스를 제공하는 자를 의미합니다.\n                            </p>\n                            <p className='title'>\n                                “중개”라 함은 회사가 직접 서비스를 제공하지 않고, 이용자 또는 회원의 요청에 따라 적격 메이트를 연결하여 알선하는 것을\n                                의미합니다.\n                            </p>\n                            <p className='title'>\n                                “매칭”이라 함은 회원이 플랫폼(웹사이트 포함)에서 출발지와 목적지를 입력하고, “예약하기\" 버튼을 통해 서비스 이용을 요청(이하\n                                “이용 요청”이라고 합니다)하면, 요청 시점에 서비스 제공이 가능한 메이트가 플랫폼(웹사이트 포함)을 통하여\n                                수락함으로써(매칭됨으로써), 회원과 회사 사이의 메이트 알선 계약이 각 체결된 상태를 의미합니다.\n                            </p>\n                            <p className='title'>\n                                “플랫폼(웹사이트 포함)”이라 함은 회사가 회원에게 서비스를 제공하기 위하여 개발한 위드메이트 애플리케이션과 웹사이트를\n                                의미합니다.\n                            </p>\n                            <p className='title'>\n                                “이용요금”이라 함은\n                                <br />\n                                (i) 메이트가 제공하는 의료 동행 서비스에 대한 비용\n                                <br />\n                                (ii) 회원이 택시 등 운송사업자의 운송 수단을 예약하거나 호출하여 이동하는 비용,\n                                <br />\n                                (iii) 기타 비용(고객 소유 자가용 대리 운전 비용, 예약 취소 및 변경 수수료 등)을 총칭하여 의미합니다.\n                            </p>\n                        </div>\n\n                        <h5 style={{ marginTop: '56px' }}>\n                            2. 본 약관에서 사용하는 용어의 정의는 본 조제 1항에서 정하는 것을 제외하고는 관계 법령에서 정하는 바에 의합니다. 관계 법령에서\n                            정하지 않는 것은 일반적인 상 관례에 의합니다.\n                        </h5>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 3조(약관의 효력 및 변경)</h3>\n                        <h5>1.</h5>\n                        <h6>\n                            약관은 애플리케이션 소프트웨어 및 해당 애플리케이션과 웹사이트의 모든 패치, 업데이트, 업그레이드 또는 새로운 버전에 적용되며, 가장\n                            최신 버전이 모든 기존 버전에 우선합니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            본 약관은 서비스 이용계약의 성격상 회사의 웹사이트 또는 서비스 이용을 위한 애플리케이션 내에 본 약관을 명시하고, 이용자가\n                            애플리케이션을 설치 및 실행 혹은 웹사이트 열람과 동시에 효력이 발생합니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>회사는 관계 법령 또는 상관습에 위배되지 않는 범위에서 본 약관을 개정할 수 있습니다.</h6>\n                        <h5 style={{ marginTop: '48px' }}>4.</h5>\n                        <h6>\n                            회사는 관련 법령의 변경이나 이용자의 권리 및 의무사항, 서비스 등을 개선하기 위해 본 약관을 변경할 수 있으며, 변경된 경우에 약관의\n                            내용과 적용일을 정하여, 적용일 7일 전 회사 공식 홈페이지나 공식 블로그, 제공하는 애플리케이션 등을 통해 이용자에게 고지하고\n                            적용일부터 효력이 발생합니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>5.</h5>\n                        <h6>\n                            이용자는 변경된 약관에 대해 거부할 권리가 있습니다. 본 약관의 변경에 대해 이의가 있는 이용자는 서비스 이용을 중단하고 이용을\n                            해지(탈퇴 및 삭제)할 수 있습니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>6.</h5>\n                        <h6>\n                            회사가 본 조 4항에 따라 변경된 약관을 공시 또는 고지하면서 이용자가 기간 내의 의사표시를 하지 않으면 변경된 약관에 동의한 것으로\n                            간주합니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 4조(약관 외 준칙)</h3>\n                        <h5>1.</h5>\n                        <h6>\n                            회사는 필요한 경우 특정 서비스에 관하여 적용될 사항을 위해 개별 약관이나 이용 정책을 정하여 운영할 수 있으며, 해당 내용은 홈페이지\n                            등을 통해 공지합니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            본 약관에 규정되지 않은 사항에 대해서는 관련 법령 또는 개별 약관, 이용 정책, 서비스 이용 화면을 통하여 제시된 개별 이용 조건(이용\n                            요금 등, 이하 “개별계약“이라고 합니다)에서 정한 바에 따릅니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>\n                            본 약관과 개별 약관, 개별 계약의 내용이 충돌할 경우 본 약관에 별도의 규정이 없는 한 개별 계약 또는 개별 약관에서 정한 바에 따릅니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>4.</h5>\n                        <h6>\n                            회원은 서비스 이용 시 개별 계약 또는 개별 약관의 내용을 확인하여야 하며, 이를 확인하지 않아 발생한 손해에 대해 회사는 책임을\n                            부담하지 않습니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 5조(이용 계약의 성립)</h3>\n                        <h5>1.</h5>\n                        <h6>\n                            이용 계약은 이용자가 본 이용 약관에 대한 동의 또는 회사의 애플리케이션을 다운로드 받거나 실행하여 이용하는 경우, 그리고 웹사이트\n                            회원 가입을 완료한 경우 이 약관에 동의한 것으로 간주합니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>이용자는 동의하지 않는 경우 애플리케이션이나 웹사이트 계정 로그아웃 및 삭제와 함께 이를 철회할 수 있습니다.</h6>\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>\n                            회사는 제 1항에 따른 회원 가입 신청에 대해 승낙함을 원칙으로 합니다. 다만, 다음 각 호의 경우 회사는 회원 가입 신청을 승낙하지 않거나\n                            사후에 회원 계약을 해지할 수 있습니다.\n                        </h6>\n\n                        <div className='info'>\n                            <p className='title'>신청자가 본 약관 위반 등의 사유로 이전에 회원 자격이 상실 또는 회원 계약이 해지되었던 경우</p>\n                            <p className='title'>자신의 귀책으로 이용 정지를 당한 회원이 그 이용 정지 기간 중에 이용 계약을 임의 해지하고 재신청을 하는 경우</p>\n                            <p className='title'>본 약관에 위배되거나 위법 또는 사회상규상 부당한 가입 신청임이 확인된 경우</p>\n                            <p className='title'>허위의 정보를 기재한 경우, 회사가 제시하는 내용을 기재하지 않은 경우 또는 오기 등이 있는 경우</p>\n                            <p className='title'>미성년자 등 법령상 행위 무능력자인 경우</p>\n                            <p className='title'>기타 신청자의 귀책 사유로 인하여 승낙이 불가능하거나 기타 회사가 정한 제반 사항을 위반한 자의 신청</p>\n                        </div>\n\n                        <h5 style={{ marginTop: '48px' }}>4.</h5>\n                        <h6>\n                            서비스 신청자가 대리인일 경우, 해당 서비스 수혜자에 대한 모든 정보는 사실에 근거하여 제공되어야 하며, 허위 사실 기재 시 발생하는\n                            모든 민형사상 책임은 신청자에게 있습니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 6조(회원 계약의 해제 및 해지 등)</h3>\n                        <h5>1.</h5>\n                        <h6>\n                            회원은 언제든지 회원 계약의 해지를 신청할 수 있으며, 회사는 관련 법령에서 정하는 바에 따라 이를 즉시 처리하여야 합니다. 다만,\n                            회원에게 미수금이 있을 경우에는 미수금에 대한 결제를 완료한 이후에 해지 신청이 가능합니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            회원이 회원 계약을 해지할 경우, 회사는 관련 법령 개인정보처리방침 또는 내부관리 계획 등에 따라 회원 정보를 보유하는 경우를\n                            제외하고는 해지 즉시 회원의 모든 정보를 삭제합니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>\n                            회원 계약 해지로 인해 발생한 불이익에 대한 책임은 회원 본인이 부담해야 하며, 회사는 회원에게 부가적으로 제공한 각종 무상 혜택을\n                            회수할 수 있습니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>4.</h5>\n                        <h6>\n                            회사가 회원 계약을 해지하는 경우 회사는 회원에게 해지 사유를 밝혀 해지 의사를 통지합니다. 이 경우 회사는 해지를 하기 전에 상당한\n                            기간을 정하여 회원에게 이의 신청의 기회를 부여합니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>5.</h5>\n                        <h6>회원 계약이 회사에 의해 해지되는 경우 회원의 재이용 신청에 대해 회사는 승낙을 거절할 수 있습니다.</h6>\n                        <h5 style={{ marginTop: '48px' }}>6.</h5>\n                        <h6>\n                            회원의 귀책 사유로 인해 회원 계약이 해지됨으로써 발생한 손해는 당해 회원이 부담하여야 하며, 회사는 관련 법령에 규정이 없는 한 책임을\n                            부담하지 않습니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 7조(서비스 내용)</h3>\n                        <h5>1.</h5>\n                        <h6>회사가 제공하는 병원 동행 서비스의 내용은 다음과 같습니다.</h6>\n                        <div className='info'>\n                            <p className='title'>\n                                <span className='bold'>병원 동행 Pro 서비스 : </span>응급 상황에 처하지는 않았으나 정기적, 혹은 비정기적으로 의료 기관에 방문해\n                                적절한 조치를 받아야 하는 고객을 위한 서비스.\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>병원 동행 Basic 서비스 & 수면내시경 보호자 서비스 :</span>보호자 동행이 법적 의무는 아니나 보호자가 없을\n                                경우 시술이 어려운 수면 내시경 등과 같은 의료 조치를 받아야 하는 고객을 위한 보호자 대행 서비스.\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>병원 동행 서비스 제공을 위한 메이트 알선(중개) 서비스 : </span>회원의 서비스 이용 요청 시 적격 자격을\n                                갖춘 인원을 회사가 직접 선별하고 교육한 후, 프리랜서로 등록된 인력이 병원 동행 서비스를 위한 동행자를 알선 받을 수 있도록\n                                중개해주는 서비스.\n                            </p>\n\n                            <p className='title'>\n                                <span className='bold'>고객 소유 자가용 대리 운전 서비스 : </span>회원의 요청에 따라 알선된 메이트가 고객 소유의 자가용을 운행해\n                                병원과 자택을 이동하는 서비스\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>택시 등 여객자동차 운송 중개 서비스 :</span>회원의 요청에 따라 알선된 메이트가 택시 등 여객자동차\n                                운송사업자의 운송 수단을 호출하여 동행할 수 있도록 중개해주는 서비스.\n                            </p>\n                        </div>\n\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>회사는 제1항의 각 호의 서비스 이외에도 추가적인 서비스를 개발하여 회원에게 제공할 수 있습니다.</h6>\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>\n                            회사가 제공하는 서비스와 플랫폼(웹사이트 포함)의 사용은 무료입니다. 단, 회사가 제공한 서비스를 통해 메이트 알선을 포함한 병원 동행\n                            서비스가 제공되는 경우 사용자는 해당 서비스에 대한 이용 요금을 지불할 의무를 가집니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>4.</h5>\n                        <h6>\n                            회사는 회원과 메이트 사이의 병원 동행 서비스 혹은 메이트 알선 계약 및 회원과 여객자동차 운송사업자 사이의 운송 계약 체결을 중개하고\n                            제 8조 1항에 명시된 ‘병원 동행 서비스 비용’을 수취하는 회사입니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>5.</h5>\n                        <h6>회사의 메이트는 고객에게 어떠한 형태의 의료 서비스나 치료, 구급차 등의 의료 운송 서비스를 제공하지 않습니다.</h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 8조(이용 요금 등)</h3>\n                        <h5>1.</h5>\n                        <h6>\n                            위드메이트 서비스 이용 요금은 ‘병원 동행 서비스 비용’으로 구성되어 있습니다. 단, 상황에 따라 이동 중에 발생하는 운송 교통 비용이\n                            고객 본인 부담으로 발생할 수 있습니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            회사는 이용 요금을 애플리케이션 혹은 웹사이트 내의 예약하기 페이지에 게시하거나, 예약 완료 시에 별도로 회원에게 안내합니다. 다만\n                            최종 이용 요금은 다양한 변수에 따라서 서비스 종료 후 추가 부과가 될 수 있습니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>\n                            메이트가 회원이 지정한 출발지에 도착하여 회원에게 도착을 안내하였음에도 회원이 사전 연락 없이 일정 시간(20분) 이내에 나타나지\n                            아니하거나 계약을 취소하는 경우 회사는 제 9조에 명시된 취소 수수료를 회원에게 부과할 수 있습니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>4.</h5>\n                        <h6>\n                            [병원 동행 Pro] 서비스 이용 옵션 중 ‘고객 소유의 자차 운행’을 선택한 경우 예약일에 맞춰 본인의 차량 보험사가 제공하는 ‘임시 운전자\n                            특약’에 가입을 해야 합니다. 이때 발생하는 보험 비용은 고객 본인 부담이며, 임시 운전자 특약에 가입을 하지 않고 메이트에게 운전을\n                            위임하여 사고가 발생한 경우 모든 책임은 고객 본인에게 있습니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>5.</h5>\n                        <h6>\n                            서비스와 관련하여 발생한 미납경비, 손해배상 등 회원의 회사에 대한 채무가 모두 정산될 때까지 해당 회원의 서비스 사용이 중지되며, 그\n                            채무가 일정기간 계속하여 변제되지 않을 경우에는 해당 회원의 회원자격이 박탈될 수 있습니다. 서비스 사용 중지 또는 회원자격 박탈에\n                            대한 판단 기준은 회사의 약관 및 이용정책에 근거합니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>6.</h5>\n                        <h6>\n                            회원이 본 약관 및 위 각 조항을 준수하지 않았을 경우, 회사는 본 약관 및 이용 정책에 따라 손해배상 금액 등 각종 수수료를 부과하는 것\n                            외에 계약을 해지할 수 있는 권리를 가집니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>7.</h5>\n                        <h6>\n                            회사는 본 서비스와 관련하여 발생한 미납경비, 손해배상 등 회원의 회사에 대한 채무가 정산되지 않을 경우 회원을 상대로 보전처분,\n                            본안소송제기, 강제집행절차의 착수 등 채무 변제를 위한 법적 조치에 들어갈 수 있습니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 9조(계약 등의 취소)</h3>\n                        <h5>1. 회원이 정상적으로 매칭된 병원 동행 서비스 계약을 취소 및 변경하는 경우에는 아래와 같이 수수료가 발생합니다.</h5>\n\n                        <div className='info'>\n                            <p className='title'>\n                                <span className='bold'>서비스 예약 날짜 기준 48시간 이내 변경 및 취소</span>수수료 없이 변경 & 취소 가능\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>서비스 예약 전날 18:00 이전 변경 및 취소</span>취소 시 수수료 10,000원 발생. 단, 메이트와 변경 협의 성공\n                                시에는 수수료 부과 X 수수료 부과 X\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>당일 예약 변경 및 취소</span>취소 시 수수료 15,000원 발생. 단, 메이트와 변경 협의 성공 시에는 수수료 부과\n                                X\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>서비스 시작 2시간 전 이내 변경 및 취소</span>서비스 수수료 20,000원 발생. 단, 메이트와 변경 협의 성공\n                                시에는 수수료 부과 X 수수료 부과 X\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>노쇼(No-Show)의 경우</span>회원 자격 정지 및 민/형사상 책임 소지를 물을 수 있음\n                            </p>\n                        </div>\n\n                        <h5 style={{ marginTop: '48px' }}>\n                            2. 회사가 서비스 계약을 취소하는 경우 회원에게 사유를 설명하고 이용요금 전액을 청구하지 아니하며, 회원이 입은 피해에 대한 보상을\n                            협의하고 지급합니다.\n                        </h5>\n\n                        <h5 style={{ marginTop: '48px' }}>\n                            3. 서비스 수혜자의 상태(건강 이상, 인지능력 저하 등)에 따른 현장 판단으로 서비스가 수행되지 못한 경우에도, 이용자는 당일 취소\n                            수수료를 부담할 수 있습니다.\n                        </h5>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 10조(서비스 제공 밎 중단)</h3>\n\n                        <h5>1.</h5>\n                        <h6>\n                            회사는 서비스를 주 5일 (월~금), 1일 10시간 (오전 9시~오후 7시) 제공함을 원칙으로 합니다. 특수 예약에 대해서는 검토 후 해당 시간\n                            외에도 서비스를 제공할 수 있습니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            회사는 서비스의 제공에 필요한 경우 정기 점검을 실시할 수 있으며, 정기 점검 시간은 플랫폼(웹사이트 포함)의 서비스 제공 화면에 공지한\n                            바에 따릅니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>\n                            회사는 파산 또는 회생 절차 개시 등 정상적인 영업 활동이 곤란한 경우 또는 회사의 영업상 필요한 경우 서비스 내용을 변경하거나 서비스를\n                            종료할 수 있습니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>4.</h5>\n                        <h6>회사는 다음 각 호의 경우 당해 서비스의 전부 또는 일부의 제공을 중단하거나 제한할 수 있습니다.</h6>\n\n                        <div className='info'>\n                            <p className='title'>\n                                천재지변, 전쟁, 폭동, 화재, 파업 등 쟁의행위, 정부기관의 통제, 테러, 해킹, DDOS, 기타 회사의 합리적인 노력으로 제어할 수 없는\n                                사유가 발생하거나 발생할 우려가 있는 경우\n                            </p>\n                            <p className='title'>기간통신사업자로부터 전기통신서비스가 제공되지 않은 경우</p>\n                            <p className='title'>서비스용 설비의 장애 및 정기 점검, 보수점검, 교체 또는 고장, 통신의 두절 등의 사유가 발생한 경우</p>\n                            <p className='title'>서비스가 제3자와의 제휴를 통하여 제공되는 경우에 당해 제휴사업자의 사정에 따라 변경되거나 중지되는 경우</p>\n                            <p className='title'>기타 서비스의 원활한 운영을 현저히 저해하는 사유가 발생한 경우</p>\n                        </div>\n\n                        <h5 style={{ marginTop: '48px' }}>5.</h5>\n                        <h6>\n                            본 조 제3항, 제4항의 사유로 서비스 내용이 변경 또는 중단되는 경우, 회사는 그로 인해 회원이 입은 손해에 대하여 고의 또는 중과실이\n                            없는 한 배상하지 않습니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>6.</h5>\n                        <h6>회사는 본 조 상기된 사유가 발생한 경우 최대한 빠른 시간 내에 서비스를 재개하도록 최선의 노력을 다합니다.</h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 11조(서비스의 변경)</h3>\n\n                        <h5>1.</h5>\n                        <h6>\n                            회사는 상당한 이유가 있는 경우에 운영상, 기술상의 필요에 따라 제공하고 있는 전부 또는 일부의 서비스를 변경할 수 있습니다. 다만,\n                            변경된 내용이 중대하거나 회원에게 불리한 경우에는 회사가 해당 서비스를 제공받는 회원에게 통지합니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            회사는 전항에 따른 서비스 변경에 대한 동의를 거절한 회원에 대하여는 해당 서비스의 제공을 중지하거나 회원 이용 계약을 해지할 수\n                            있습니다. 이 때 회원 역시 회원 계약을 종료할 권한을 가집니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 12조(회원에 대한 서비스 이용 제한 등)</h3>\n\n                        <h5>1.</h5>\n                        <h6>회사는 다음 각 호에 해당하는 경우 회원에 대하여 서비스 제공을 제한하거나 중지할 수 있습니다.</h6>\n                        <div className='info'>\n                            <p className='title'>\n                                폭언, 폭행, 그 밖에 적정 범위를 벗어난 신체적ㆍ정신적 고통을 유발하는 행위를 통해, 회원이 서비스의 정상적인 운영을 방해한 경우\n                            </p>\n                            <p className='title'>\n                                법정 감염병 환자, 법정 감염병 의사 환자, 감염병 병원체보유자 등, 환자가 각종 매개체를 통해 메이트에게 질병을 전염 및 유발할\n                                것으로 우려되는 경우\n                            </p>\n                            <p className='title'>회원이 타인의 명의를 도용하여 회원가입을 한 경우</p>\n                            <p className='title'>\n                                이용 요금을 지급하지 아니하거나 이용 요금을 결제함에 있어서 타인 명의 결제 도용, 전화번호 도용 등 불법적인 방법을 사용한 경우\n                            </p>\n                            <p className='title'>\n                                불법프로그램의 제공 및 운영 방해, 정보통신망법을 위반한 불법 통신 및 해킹, 악성프로그램의 배포, 접속 권한 초과 행위 등과 같이\n                                회원이 관련 법령을 위반한 경우\n                            </p>\n                            <p className='title'>회원이 계속해서 1년 이상 로그인하지 않는 경우</p>\n                            <p className='title'>\n                                서비스 수혜자의 상태가 다음에 해당하는 경우:\n                                <br />\n                                <p style={{ paddingLeft: '20px' }}>· 거동이 불가능하거나 현저히 떨어지는 경우</p>\n                                <p style={{ paddingLeft: '20px' }}>· 인지장애가 의심 또는 확인된 경우 (경중 불문, 서비스 제공 불가)</p>\n                                <p style={{ paddingLeft: '20px' }}>\n                                    · 위 사실을 은폐하거나 허위로 신청한 경우: 서비스 즉시 중단 및 법적 조치 대상이 될 수 있음\n                                </p>\n                            </p>\n                        </div>\n\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            회사는 사안에 따라 사전 또는 사후 통지하며, 보호자의 진술, 병원 소견, 메이트의 현장 판단 등을 토대로 제한 여부를 결정할 수 있습니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>\n                            회사는 서비스 수혜자 또는 보호자의 사전 고지 의무 위반 여부를 확인하기 위해 필요한 경우 의학적 소견서나 병원 진료 정보를 요청할 수\n                            있으며, 협조하지 않을 경우 서비스 제공이 제한될 수 있습니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 13조(개인정보의 관리 및 변경)</h3>\n\n                        <h6>\n                            이용자는 본 서비스의 이용을 위해 자신의 개인 정보를 성실히 관리해야 하며, 개인정보에 변동사항이 있을 경우 이를 변경해야 합니다. 본\n                            서비스를 이용하면서 이용자의 개인정보 변경이 지연되거나 누락, 이용자에 의해 유출되어 발생하는 손해는 이용자의 책임으로 합니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 14조(정보의 제공 및 광고의 게재)</h3>\n\n                        <h5>1.</h5>\n                        <h6>\n                            회사는 회원이 서비스 이용 중 필요하다고 인정되는 다양한 정보를 서비스 내 공지사항 또는 서비스 화면, 메시지, 전자우편 등의 방법으로\n                            회원에게 제공할 수 있습니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>회사는 서비스의 운영과 관련하여 서비스 화면 등에 광고를 게재할 수 있습니다.</h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 15조(회사의 의무)</h3>\n\n                        <h5>1.</h5>\n                        <h6>회사는 관련법과 본 약관의 금지하는 행위를 하지 않으며, 계속적이고 안정적인 서비스를 제공하기 위하여 최선을 다하여 노력합니다.</h6>\n\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>회사는 이용자의 개인정보 보호를 위한 보안 의무에 최선을 다합니다.</h6>\n\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>\n                            회사는 이용자로부터 제기되는 의견이나 불만이 정당하고 객관적으로 인정될 경우에는 적절한 절차를 거쳐 즉시 처리하여야 합니다. 다만,\n                            즉시 처리가 불가한 경우에는 이용자에게 그 사유와 처리 일정을 통보하여야 합니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>4.</h5>\n                        <h6>\n                            회사가 제공하는 서비스로 인하여 회원에게 손해가 발생한 경우 그러한 손해가 회사의 고의나 과실에 기해 발생한 경우에 한하여 회사에서\n                            책임을 부담합니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>5.</h5>\n                        <h6>회사는 정보통신망법, 통신비밀보호법, 전기통신사업법 등 서비스의 운영, 유지와 관련 있는 법령을 준수합니다.</h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 16조(회원의 의무)</h3>\n\n                        <h5>1.</h5>\n                        <h6>\n                            회원은 최종 요금 등의 서비스 조건을 확인한 후 이용 요청을 하여야 하고, 제 8조 2항에 따라 서비스 종료 이후 추가 요금이 발생할 수\n                            있다는 사실을 인지해야 합니다. 서비스 조건을 확인하지 않고 이용 요청을 하여 발생한 손실, 손해에 대한 책임은 회원 본인이 부담하여야\n                            합니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            회원은 본 약관 및 회사가 서비스와 관련하여 고지하는 내용을 준수하여야 하며, 약관 및 고지 내용을 위반하거나 이행하지 아니하여\n                            발생하는 모든 손실, 손해에 대하여 책임을 부담합니다. 이용 요청과 관련하여 회원이 입력한 정보 및 그 정보와 관련하여 발생한 책임과\n                            불이익은 전적으로 회원이 부담하여야 합니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>\n                            회원은 택시 혹은 승합자동차의 대여 및 이동 서비스 이용 시 반드시 본인 명의의 결제수단을 사용하여야 하며, 타인의 결제 수단을 임의로\n                            사용해서는 안 됩니다. 타인의 결제수단을 임의로 사용함으로써 발생하는 회사, 결제 수단의 적법한 소유자, 전자결제대행 또는 이동서비스\n                            제공자 등의 손실과 손해에 대한 모든 책임은 회원에게 있습니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>4.</h5>\n                        <h6>\n                            회원은 회사가 서비스를 안전하게 제공할 수 있도록 회사에 협조하여야 하며, 회사가 회원의 본 약관 위반행위를 발견하여 회원에게 해당\n                            위반행위에 대하여 소명을 요청할 경우 회원은 회사의 요청에 적극 응하여야 합니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>5.</h5>\n                        <h6>\n                            회원은 분쟁이 발생한 경우 분쟁의 해결을 위하여 성실히 임하여야 하며, 분쟁 해결에 대한 회원의 불성실로 인하여 이동 서비스 제공자 또는\n                            회사에 손해가 발생한 경우 회원은 이에 대한 책임을 부담하여야 합니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 17조(회원의 금지 행위)</h3>\n\n                        <h5>1.</h5>\n                        <h6>\n                            회사는 서비스의 신뢰성을 제고하고 안전한 거래가 이뤄질 수 있도록 회원에게 특정한 행위를 금지하며 이를 금지 행위로 규정하고 있습니다.\n                            금지 행위의 항목은 수시로 갱신될 수 있으며 항목 추가 및 변경 시 별도로 고지하지 않습니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            회원이 위드메이트 서비스로 중개 받은 메이트 또는 기타 운송 수단 탑승 중 메이트, 차량, 혹은 제 3자에 대하여 손해를 입혔을 경우 회원은\n                            이를 배상하여야 하며 구체적인 금액은 아래와 같습니다. 이에 관하여 제휴사의 기사 알선 포함 승합자동차 대여 서비스 이용약관에서 정한\n                            사항이 있다면 그에 따릅니다.\n                        </h6>\n                        <div className='info'>\n                            <p className='title'>\n                                <span className='bold'>메이트를 폭행하거나 정신적인 피해를 끼친 경우 :</span>치료비 전액 배상 및 영업손실비\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>차량을 오염시킨 경우: </span>30만원 이내에서 세차 실비 및 영업손실비\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>차량 및 차내 기물 파손 비용:</span> 원상 복구 비용 및 영업손실비\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>목적지 도착 후 하차 거부:</span>경찰서 등의 인계 시까지의 운임 및 영업손실비\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>분실물 발견 후 배달 요청 :</span>배차 중지 후 분실물 배달을 위한 영업손실비\n                            </p>\n                        </div>\n\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>\n                            회사는 회원이 본 조의 금지행위를 하는 경우 서비스 이용을 제한할 수 있으며, 이 경우 발생하는 모든 책임은 회원이 부담합니다. 회사는\n                            필요한 경우 회원의 금지 행위 사실을 관련 정부기관 또는 사법기관에 통지할 수 있습니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 18조(책임 제한)</h3>\n\n                        <h5>1.</h5>\n                        <h6>\n                            회사는 회원과 메이트 간, 회원과 운송사업자 간 거래를 중개하는 시스템의 운영 관리를 제공하며, 회원, 메이트, 운송사업자를 대리하지\n                            않습니다. 회원과 메이트, 그리고 운송사업자 사이에 성립된 거래에 따라 회원 또는 메이트, 혹은 운송사업자가 제공한 정보에 대한 책임은\n                            회원과 메이트, 그리고 운송사업자가 부담합니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            회원이 자신의 개인 정보 및 계정 등을 타인에게 제공하거나, 회원의 관리 소홀로 유출됨으로써 발생하는 피해에 대해서 책임을 부담하지\n                            않습니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>회사는 회원의 귀책 사유로 인한 서비스 이용의 장애에 대하여는 책임을 지지 않습니다.</h6>\n\n                        <h5 style={{ marginTop: '48px' }}>4.</h5>\n                        <h6>회사는 회원이 서비스와 관련하여 게재한 정보, 자료, 사실의 신뢰도, 정확성 등의 내용에 관하여는 책임을 부담하지 않습니다.</h6>\n\n                        <h5 style={{ marginTop: '48px' }}>5.</h5>\n                        <h6>\n                            회사는 서비스간 회원의 귀책 사유로 발생한 메이트와의 갈등(물리적 폭행, 언어 폭력, 부적절한 신체 접촉 등)으로 인해 발생한 피해에\n                            대해서 책임을 부담하지 않습니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>6.</h5>\n                        <h6>\n                            회사는 관계 법령의 변경, 천재지변, 디도스(DDOS)공격, IDC 장애, 기간통신사업자의 회선 장애 또는 이에 준하는 불가항력으로 인하여\n                            서비스를 제공할 수 없는 경우에는 서비스 제공에 관한 책임이 면제됩니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>7.</h5>\n                        <h6>\n                            회사는 회원의 서비스 이용과 직접적으로 관련이 없는 분쟁에 관여하지 않으며, 회원과 운전용역 제공자 및 운송사업자 또는 회원과 제3자\n                            간의 분쟁을 포함하여 도난, 폭행, 성범죄 등에 대해서는 회사의 과실이 없는 한 책임을 부담하지 않습니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>8.</h5>\n                        <h6>\n                            회사는 스마트기기 환경으로 인하여 발생하는 제반 문제 또는 회사의 귀책 사유가 없는 네트워크 환경으로 인하여 발생하는 문제에 대해서\n                            책임을 지지 않습니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>9.</h5>\n                        <h6>\n                            회사는 메이트의 현장 상황 판단(서비스 거부 포함)에 따라 불가피하게 서비스가 중단된 경우, 고의 또는 중대한 과실이 없는 한 책임을\n                            부담하지 않습니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block' style={{ marginBottom: '100px' }}>\n                        <h3>제 19조(분쟁의 해결)</h3>\n\n                        <h5>1.</h5>\n                        <h6>본 약관에 명시되지 않은 사항이 관계 법령에 규정되어 있을 경우에는 해당 규정에 따릅니다.</h6>\n\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>서비스 이용으로 발생한 분쟁에 대해 소송이 제기되는 경우 법령에 정한 절차에 따른 법원을 관할 법원으로 합니다.</h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <div className='privacy-justify'>\n                            <p className='version'>개인정보 처리방법 버전 번호 : v.1.2</p>\n                            <p className='date'>제정일자 : 2021년 12월 20일</p>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\nexport default TermsComponent;\n","import React from 'react';\nimport { connect } from 'react-redux';\n\n// component\nimport TermsStyledContainer from './terms.styled';\nimport Terms from './terms';\n\nclass TermsContainer extends React.PureComponent {\n    render() {\n        return (\n            <TermsStyledContainer component={this.props.isComponent || undefined}>\n                <Terms {...this.props} />\n            </TermsStyledContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({}) => ({});\nconst mapDispatchToProps = dispatch => ({});\nexport default connect(mapStateToProps, mapDispatchToProps)(TermsContainer);\n","import styled from 'styled-components';\nimport { sizeHandler, mainColor } from '../../../theme';\nconst PrivacyStyledContainer = styled.div`\n    .inner-container {\n        ${props => props.component && `padding: 0px !important;`}\n    }\n\n    .main-context {\n        width: ${props => (props.component ? '100%' : '60%')};\n\n        h2 {\n            ${props => props.component && `display: none;`}\n            font-size: ${sizeHandler(44)};\n            font-weight: bold;\n            letter-spacing: -0.6px;\n            color: #000000;\n            margin-bottom: 24px;\n        }\n\n        p {\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.8);\n            padding: 0px;\n            margin: 0px;\n        }\n    }\n\n    .context-block {\n        margin-top: ${props => (props.component ? '24px' : '100px')};\n        padding-top: 24px;\n        border-top: 1px solid #e6e6e6;\n        width: ${props => (props.component ? '100%' : '60%')};\n\n        > h3 {\n            font-size: ${sizeHandler(24)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n            margin-bottom: 16px;\n        }\n\n        > h6 {\n            font-size: ${sizeHandler(16)};\n            font-weight: normal;\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.8);\n            margin-bottom: 24px;\n        }\n\n        > h5 {\n            font-size: ${sizeHandler(18)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n            margin-top: 20px;\n            margin-bottom: 12px;\n        }\n\n        > p {\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.7);\n        }\n\n        > .medium-bold {\n            font-size: ${sizeHandler(18)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n        }\n\n        > .privacy-justify {\n            display: flex;\n            align-items: center;\n            ${props => props.component && `display: block;`}\n\n            p {\n                flex: 1;\n                font-size: ${sizeHandler(14)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.7);\n\n                &:first-child {\n                    text-align: left;\n                }\n\n                &:last-child {\n                    text-align: right;\n                    ${props => props.component && `text-align: left;`}\n                }\n            }\n        }\n\n        > .info {\n            margin-top: 8px;\n            .title {\n                border-bottom: 1px solid #e6e6e6;\n                padding: 24px 0px;\n                font-size: ${sizeHandler(14)};\n                letter-spacing: -0.3px;\n                color: rgba(0, 0, 0, 0.7);\n                margin: 0px;\n\n                .bold {\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    color: rgba(0, 0, 0, 0.7);\n                    margin: 0px;\n                    padding: 0px;\n                    margin-bottom: 4px;\n                    display: block;\n                }\n\n                \n                .in {\n                    font-size: ${sizeHandler(13)};\n                    color: rgba(0, 0, 0, 0.7);\n                    margin: 0px;\n                    padding: 0px;\n                    margin-bottom: 4px;\n                    display: block;\n                    text-indent: -20px;\n                    padding-left: 40px;\n                }\n            }\n\n            .content {\n                font-size: ${sizeHandler(14)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.7);\n                padding: 20px 0px;\n                border-bottom: 1px solid #e6e6e6;\n            }\n        }\n\n        > .info-block {\n            margin-top: 68px;\n\n            .title {\n                font-size: ${sizeHandler(18)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.8);\n                margin-bottom: 8px;\n            }\n\n            .content {\n                font-size: ${sizeHandler(14)};\n                line-height: ${sizeHandler(24)};\n                letter-spacing: -0.3px;\n                color: rgba(0, 0, 0, 0.7);\n            }\n        }\n    }\n\n    @media (max-width: 1120px) {\n        .inner-container {\n            padding-left: 16px;\n            padding-right: 16px;\n        }\n    }\n\n    @media (max-width: 768px) {\n        .main-context {\n            width: 100%;\n\n            h2 {\n                font-size: ${sizeHandler(38)};\n            }\n        }\n\n        .context-block {\n            width: 100%;\n        }\n\n        .privacy-justify {\n            flex-direction: column;\n\n            p {\n                &:first-child {\n                    text-align: center;\n                }\n                &:last-child {\n                    text-align: center;\n                }\n            }\n        }\n    }\n`;\nexport default PrivacyStyledContainer;\n","import React from 'react';\n\nclass PrivacyComponent extends React.PureComponent {\n    render() {\n        return (\n            <div className='privacy-container'>\n                <div className='inner-container'>\n                    <div className='main-context'>\n                        <h2>㈜ 블루카멜 개인정보처리방침</h2>\n                        <p>\n                            병원동행서비스 위드메이트(www.withmate.kr, 이하 “서비스\")를 운영하는 (주)블루카멜(이하 “회사”)은 「개인정보보호법」 제30조에 따라\n                            정보주체의 개인정보를 보호하고 이와 관련한 고충을 신속하고 원활하게 처리할 수 있도록 다음과 같이 개인정보처리방침(이하 \"방침\")을\n                            수립 및 공개합니다. 개인정보처리방침은 관련 법령 또는 지침, 회사의 약관 또는 정책에 따라 변경될 수 있습니다. 회사는 해당 변경 사항을\n                            온라인 게시 등의 방법으로 이용자에게 알립니다.\n                            <br />\n                            <br />이 개인정보처리방침은 2023년 7월 25일부터 적용됩니다.\n                        </p>\n                        <br />\n                        <br />\n                        <br />\n\n                        <p style={{ fontSize: '20px' }}>\n                            <a\n                                href='https://docs.google.com/document/d/e/2PACX-1vTQ3CepPqUO6BqEg8va9_5e0zZg7V1nMuK7xiibF1Nxa2RQAX1C5xv3p4mnIVmkeeh_ClORu1P3Fs0p/pub'\n                                target='_blank'\n                                style={{ color: 'gray' }}\n                            >\n                                ✅ 개인정보처리방침 2차(2023.07.22)\n                            </a>\n                        </p>\n                        <p style={{ fontSize: '20px' }}>\n                            <a\n                                href='https://docs.google.com/document/d/e/2PACX-1vQTjHkJBb2VK4gofoPrHZVYbgCOvOgDDvClVJjwYpx7ikkLFW37GUlFS5Hwa8osGb7a7mNbg55qlEMu/pub'\n                                target='_blank'\n                                style={{ color: 'gray' }}\n                            >\n                                ✅ 개인정보처리방침 1차(2021.12.20)\n                            </a>\n                        </p>\n                    </div>\n                    {/* <div className='context-block'>\n                        <h3>제 1조 (수집하는 개인정보의 항목 및 수집 방법)</h3>\n                        <h5>1. 수집하는 개인정보의 항목</h5>\n                        <p>\n                            회사는 회원가입(또는 서비스 가입), 원활한 고객 상담, 의료 시설 관계자와 메이트 지원자의 신분 확인, 그리고 각종 서비스의 제공을 위해\n                            위드메이트 서비스 최초 이용 시 다음과 같은 개인정보를 수집하고 있습니다.\n                            <br />\n                            <br />\n                            일반개인정보: 회원의 이름, 이메일 주소(아이디) 및 패스워드, 전화번호, 단말기 정보, 프로필 사진(메이트 지원자에 한함), 블랙박스로\n                            인하여 수집되는 영상 (회사는 음성을 수집하지 않으나, 회사가 직접 관리하지 않는 일반 택시와 같은 여객운송 서비스 차량에 설치된\n                            블랙박스 기종에 따라 음성이 녹음될 수 있습니다), 민원/사고 발생 관련 정보, 집이나 회사 등의 주소 정보, 기타 아래 서비스 이용\n                            과정에서 수집되는 정보 및 회원이 서비스 이용을 위해 자발적으로 입력하는 정보 등.\n                        </p>\n                        <div className='info'>\n                            <p className='title'>또한, 서비스 이용과정이나 사업처리 과정에서 아래와 같은 정보들이 자동으로 생성되어 수집될 수 있습니다.</p>\n                            <p className='content'>\n                                - IP Address, 방문 일시, 서비스 이용 기록, 쿠키, 접속 로그, 불량 이용 기록, 앱 설치정보, 네트워크 위치정보 등{' '}\n                            </p>\n                        </div>\n                        <div className='info'>\n                            <p className='title'>나아가 서비스 이용과정에서 다음과 같은 정보들이 수집될 수 있습니다.</p>\n                            <p className='content'>- 계좌 이체 시: 은행명, 계좌번호 등</p>\n                            <p className='content'>- 신용카드 결제 시 : 카드사명, 카드번호 등</p>\n                            <p className='content'>- 휴대전화 결제 시 : 전화 번호, 통신사, 결제 승인 번호 등</p>\n                        </div>\n\n                        <h5 style={{ marginTop: '80px' }}>2. 개인정보 수집방법</h5>\n                        <p>회사는 다음과 같은 방법으로 개인정보를 수집합니다.</p>\n                        <div className='info'>\n                            <p className='content'>- 위드메이트 플랫폼(애플리케이션 & 웹사이트)의 실행 또는 사용 과정에서 수집</p>\n                            <p className='content'>- 협력 회사로부터의 제공</p>\n                            <p className='content'>- 생성 정보 수집 툴(쿠키를 포함)을 통한 수집</p>\n                            <p className='content'>- 사용 중 회원의 자발적 제공을 통한 수집</p>\n                        </div>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 2조 (개인정보의 수집 및 이용 목적)</h3>\n                        <p>\n                            회사는 회원의 동의가 있거나 법령의 규정에 의한 경우를 제외하고는 본 조에서 고지한 범위를 넘어 회원의 개인정보를 활용하지 않습니다.\n                            회사는 수집한 개인정보를 다음과 같은 목적으로 이용합니다.\n                        </p>\n\n                        <div className='info-block'>\n                            <p className='title'>1. 위드메이트 서비스 제공 및 운영</p>\n                            <p className='content'>\n                                회원이 가입한 위드메이트 서비스 내 상호 식별, 서비스 제공에 관한 계약 이행 및 서비스 제공에 따른 요금정산, 이용 및 경비 결제,\n                                콘텐츠 제공, 물품 배송 또는 청구서 등 발송, 금융거래 본인 인증 및 금융 서비스(추후 기능 추가 예정), 미수금 추심, 서비스 이용 중\n                                사고 발생 시 사고처리, 회사의 약관 또는 이용 정책의 위반 행위 적발을 위한 기록 조회\n                            </p>\n                        </div>\n\n                        <div className='info-block'>\n                            <p className='title'>2. 회원관리</p>\n                            <p className='content'>\n                                서비스 제공, 회원 식별, 본인 확인, 개인 식별, 이용이 제한된 회원 - 위드메이트 이용약관에 따라 이용이 제한된 회원 - 의 부정 이용\n                                방지와 비인가 사용 방지, 가입 의사 확인 및 가입 횟수 제한, 분쟁 조정을 위한 기록 보존, 불만 처리 등 민원 처리, 고지 사항 전달,\n                                추후 법정 대리인 본인 확인, 최신 정보 전달, 서비스의 유효성 확인, 접속 빈도 파악, 회원의 서비스 이용에 대한 통계 확인 및 파악\n                            </p>\n                        </div>\n\n                        <div className='info-block'>\n                            <p className='title'>3. (선택적) 신규 서비스 개발 및 마케팅 · 광고에 활용</p>\n                            <p className='content'>\n                                신규 서비스 개발 및 맞춤 서비스 제공, 통계학적 특성에 따른 서비스 제공 및 광고 게재, 이벤트 참여 기회 제공 또는 광고성 정보 제공\n                            </p>\n                        </div>\n\n                        <div className='info-block'>\n                            <p className='title'>4. 사고 발생시 원인 규명 및 처리를 위한 수집 및 이용</p>\n                        </div>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 3조 (개인정보의 제한적 공개 및 제 3자 제공)</h3>\n                        <h6>\n                        회사는 회원의 개인정보를 “제2조 (개인정보의 수집 및 이용목적)”에서 고지한 범위 내에서 처리하며, 회원의 사전 동의가 있거나 법령에 규정된 \n                        경우를 제외하고는 회원의 개인정보를 동의 범위를 초과하여 이용하거나 외부에 공개 또는 제3자에게 제공하지 않는 것을 원칙으로 합니다. \n                        다만, 다음의 경우 주의를 기울여 회원의 개인정보를 제한적으로 공개할 수 있습니다.\n                        </h6>\n                        <div className='info'>\n                            <p className='title'>\n                                <span className='bold'>- 제휴관계 :</span>회사는 제 3자와 제휴 관계를 맺을 경우 반드시 사전에 제휴사명, 제휴사의 개인정보 이용목적, \n                                공유하는 개인정보의 항목, 제휴기간에 관하여 알릴 것이며 반드시 이용자의 동의에 의해서만 정보를 제공하거나 공유합니다. 제휴 관계에 있어서 \n                                위 고지할 사항에 변화가 있을 때도 같은 절차에 의하여 이용자에게 알리고 동의를 구합니다.\n                            </p>\n                        </div>\n                        <div className='info'>\n                            <p className='title'>\n                                <span className='bold'>- 취급위탁 :</span>원활한 업무 처리를 위해 이용자의 개인정보를 위탁 처리할 경우 반드시 사전에 위탁 처리 업체명과 \n                                개인정보 취급 위탁을 하는 업무의 내용을 이용자에게 알리고 동의를 받아야 합니다.\n                            </p>\n                        </div>\n                        <div className='info'>\n                            <p className='title'>\n                                <span className='bold'>- 매각, 인수합병 등 :</span>회사의 영업의 전부 또는 일부의 양도 합병 등으로 이용자의 개인정보를 제3자에게 이전하는 \n                                경우에는 회사는 해당 이용자에게 개인정보를 이전하려는 사실, 개인정보를 이전받는 자의 명칭, 이용자가 개인정보의 이전을 원하지 아니하는 경우 \n                                그 동의를 철회할 수 있는 방법과 절차에 관하여 사전에 전자우편ㆍ서면ㆍ전화 또는 이와 유사한 방법 중 어느 하나의 방법으로(회사가 과실 없이 \n                                이용자의 연락처를 알 수 없어 이러한 방법에 따라 통지할 수 없는 경우에는 회사의 어플리케이션 또는 플랫폼 첫 화면에 30일 이상 게시하는 방법으로\n                                 한다) 알릴 것이며 이용자의 개인정보에 대한 동의 철회의 선택권을 부여합니다.\n                            </p>\n                        </div>\n                        <div className='info'>\n                            <p className='title'>\n                                <span className='bold'>- 고지 및 동의 방법 :</span>위 제휴 관계 또는 취급 위탁의 경우 회사가 이용자의 동의를 얻는 방법은 다음 열거된 방법들 중 \n                                어느 하나와 같습니다. 다만, 개인정보 수집 매체의 특성상 동의 내용을 전부 표시하기 어려운 경우에는 이용자에게 동의 내용을 확인할 수 있는 \n                                아래의 방법(인터넷주소ㆍ사업장 전화번호 등)을 안내하고 동의를 얻을 수 있습니다.\n                                <br/><br/>\n                                <span className='in'><b> 가. </b>인터넷 사이트(어플리케이션 또는 플랫폼)에 동의 내용을 게재하고 이용자가 동의 여부를 표시하도록 하는 방법</span><br/>\n                                <span className='in'><b> 나. </b>동의 내용이 기재된 서면을 이용자에게 직접 교부하거나, 우편을 통하여 전달하고 이용자가 동의 내용에 대하여 \n                                                                서명 날인 후 제출하도록 하는 방법</span><br/>\n                                <span className='in'><b> 다. </b>동의 내용이 적힌 전자우편을 발송하여 이용자로부터 동의의 의사표시가 적힌 전자우편을 전송 받는 방법</span><br/>\n                                <span className='in'><b> 라. </b>전화를 통하여 동의 내용을 이용자에게 알리고 동의를 얻거나 인터넷 주소 등 동의 내용을 확인할 수 있는 방법을 \n                                                                 안내하고 <br/>재차 전화 통화를 통하여 동의를 얻는 방법</span>\n                            </p>\n                        </div>\n                        <div className='info'>\n                            <p className='title'>\n                                <span className='bold'>- 예외 사항 :</span>다음 예외의 경우에는 회사는 이용자의 동의를 받지 아니하고 또한 이용자에게 고지하지 아니하고도 이용자의 \n                                개인정보를 제공할 수 있습니다.\n                                <br/><br/>\n                                <span className='in'><b> 가. </b>법관이 발부한 영장에 의하여 이용자의 개인정보의 제공 요구가 있을 경우</span><br/>\n                                <span className='in'><b> 나. </b>통계 작성, 학술 연구나 시장 조사를 위하여 특정 개인을 식별할 수 없는 형태로 광고주, 협력사 또는 연구 단체 등에 \n                                                                제공하는 경우</span><br/>\n                                <span className='in'><b> 다. </b>기타 관계 법령에 따라 회사에게 이용자의 개인정보를 제공할 의무가 인정되는 경우</span>\n                                <br/>\n                                그러나 위 예외에 해당하여 이용자의 동의를 받지 아니하고 정보를 제공하는 경우에도 정보를 제공하는 경우에도 본래의 수집 목적 및 이용 목적에 반하여 무분별하게 \n                                정보가 제공되지 않도록 최대한 노력하겠습니다.\n                            </p>\n                        </div>\n                        <div className='info'>\n                            <p className='title'>\n                                <span className='bold'>- 병원 동행 서비스 매칭 서비스 및 온라인 플랫폼 특성에 의한 예외 사항 :</span>위드메이트 서비스 이용 도중 매칭된 회원과 메이트 상호간\n                                식별을 위해 이름, 프로필 사진, 전화 번호, 주소, 병명, 나이 등이 위드메이트 서비스 내의 매칭된 회원에게 공개됩니다. 이는 공개 범위 특정이 불가능하여 별도로 고지하여 \n                                동의 받지 못함을 양해바랍니다.\n                            </p>\n                        </div>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 4조 (개인정보의 취급 위탁)</h3>\n                        <h6>\n                            회사는 원활한 개인정보 업무 처리를 위하여 추후 개인정보 처리 업무를 외부에 위탁할 예정이며, 해당 업체의 명단은 확정 후 공지될\n                            예정입니다.\n                            <br />\n                            <br />\n                            또, 회사는 위탁 계약 체결 시 개인정보보호법 제25조에 따라 위탁 업무 수행 목적 외 개인정보 처리 금지, 재위탁 제한, 수탁자에 대한 관리\n                            및 감독, 책임에 관한 사항을 명시하고, 수탁자가 개인정보를 안전하게 처리하는지 감독할 의무가 있으며, 해당 의무를 책임지고 준수할\n                            것입니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 5조 (동의의 거부권 및 거부 시의 불이익 고지)</h3>\n                        <h6>\n                            회원은 개인정보 수집ㆍ이용에 관한 동의를 거부할 권리가 있습니다. 다만, 계약 체결 및 이행 등을 위해 필요한 최소한의 개인정보\n                            수집ㆍ이용에 관한 동의를 거부하는 경우에는 서비스 이용이 불가능하거나 처리 업무가 지연되는 등의 불이익이 있을 수 있습니다.\n                            <br />\n                            <br />\n                            또한 마케팅 활동 및 홍보를 위한 개인정보 수집ㆍ이용 및/또는 선택적 수집ㆍ이용에 관한 동의를 거부하는 경우에는 이벤트, 혜택에 대한\n                            정보를 제공받지 못하거나 사은품ㆍ판촉물 제공, 제휴서비스 이용, 할인 혜택 적용 및 포인트 적립 불가 등의 불이익이 있을 수 있습니다.\n                        </h6>\n                        <p>\n                            ※ 본 제공 동의 이외에도 회사는 회원이 별도로 동의한 경우, 회원이 동의한 바에 따라 개인정보를 수집ㆍ이용하거나 제3자에게 개인정보를\n                            제공할 수 있습니다.\n                        </p>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 6조 (개인정보의 보유 및 이용 기간)</h3>\n                        <h5>1.</h5>\n                        <h6>회사는 회원이 회원의 자격을 유지하고 있는 동안 수집된 회원의 개인정보를 보유 및 이용할 수 있습니다.</h6>\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            하지만 회원이 탈퇴하거나 자격을 상실한 경우, 회사는 회원의 별도 요청이 없더라도 수집된 회원 정보를 삭제 및 파기합니다. 회사는 다음의\n                            방법으로 개인정보를 파기합니다.\n                        </h6>\n                        <div className='info'>\n                            <p className='content'>- 전자적 파일 : 파일 삭제 및 디스크 등의 저장 매체 포맷</p>\n                            <p className='content'>- 수기(手記) 문서 : 분쇄하거나 소각</p>\n                        </div>\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>단, 회원의 탈퇴 또는 자격 상실에도 불구하고 다음의 정보는 아래의 이유로 명시 기간 동안 보존 후 삭제 및 파기됩니다.</h6>\n                        <div className='info'>\n                            <p className='title'>3-1) 회사 내부 방침에 의한 정보 보유</p>\n                            <p className='content'>- 회원 간의 분쟁 및 문제해결을 위한 회원정보 기록 : 분쟁의 소멸 시효 등 도과시까지</p>\n                            <p className='content'>- 탈퇴 회원의 재가입 제한을 위한 회원정보 기록: 3개월</p>\n                            <p className='content'>- 이용 제한 회원 및 부정 회원의 재가입 제한을 위한 회원 정보 기록: 제한 기간에 따름(별도저장)</p>\n                        </div>\n                        <div className='info' style={{ marginTop: '32px' }}>\n                            <p className='title'>3-2) 관계 법령에 의한 정보 보유</p>\n                            <p className='content'>- 표시/광고에 관한 기록 : 6개월 (「전자상거래 등에서의 소비자보호에 관한 법률」)</p>\n                            <p className='content'>- 계약 또는 청약철회 등에 관한 기록 : 5년 (「전자상거래 등에서의 소비자보호에 관한 법률」)</p>\n                            <p className='content'>- 대금결제 및 재화 등의 공급에 관한 기록 : 5년 (「전자상거래 등에서의 소비자보호에 관한 법률」)</p>\n                            <p className='content'>- 소비자의 불만 또는 분쟁 처리에 관한 기록 : 3년 (「전자상거래 등에서의 소비자보호에 관한 법률」)</p>\n                            <p className='content'>- 로그인 기록 : 3개월 (「통신비밀보호법」)</p>\n                        </div>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 7조 (회원 및 법정대리인의 권리, 의무와 그 행사 방법)</h3>\n                        <h5>1.</h5>\n                        <h6>\n                            회원은 언제든지 등록되어 있는 자신의 개인 정보를 열람하거나 수정할 수 있으며, 회사의 개인정보 처리에 동의하지 않는 경우 동의를\n                            거부하거나 가입 해지(회원탈퇴)를 요청할 수 있습니다. 단, 개인 정보에서 서비스 운영을 위해 확인이 필요한 정보를 변경할 경우에는\n                            회사의 승인이 이루어질 때까지 서비스 이용이 제한될 수 있습니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            회원의 개인정보 조회 및 수정을 위해서는 \"개인정보변경\"(또는 \"회원정보수정\" 등)을, 가입해지(동의철회)를 위해서는 \"회원탈퇴\"를, 각\n                            클릭하여 본인 확인 절차를 거치신 후 직접 열람, 정정 또는 탈퇴가 가능합니다. 혹은 개인정보 관리책임자에게 서면 또는 이메일로\n                            연락하시면 지체 없이 조치하겠습니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>\n                            회원이 개인정보의 오류에 대한 정정을 요청하신 경우에 회사는 당해 정정을 완료하기 전까지 당해 개인정보를 이용하거나 제3자에게\n                            제공하지 않습니다. 또한 잘못된 개인정보를 제3자에게 이미 제공한 경우에는 정정 처리 결과를 제3자에게 지체 없이 통지하여 정정이\n                            이루어지도록 하겠습니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>4.</h5>\n                        <h6>\n                            회사는 회원의 요청에 의해 해지 또는 삭제된 개인정보는 \"제6조 개인정보의 보유 및 이용기간\"에 명시된 바에 따라 처리하고 그 외의 용도로\n                            열람 또는 이용할 수 없도록 처리하고 있습니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>5.</h5>\n                        <h6>\n                            서비스에 가입할 수 있는 자는 만 19세 이상이며, 개인정보의 수집∙이용에 법정 대리인의 동의가 필요한 만 14세 미만 아동의 개인정보는\n                            원칙적으로 수집하지 않습니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 8조 (개인정보 자동 수집 장치의 설치와 운영 및 거부에 관한 사항)</h3>\n                        <h5>1.</h5>\n                        <h6>\n                            회원은 언제든지 등록되어 있는 자신의 개인 정보를 열람하거나 수정할 수 있으며, 회사의 개인정보 처리에 동의하지 않는 경우 동의를\n                            거부하거나 가입 해지(회원탈퇴)를 요청할 수 있습니다. 단, 개인 정보에서 서비스 운영을 위해 확인이 필요한 정보를 변경할 경우에는\n                            회사의 승인이 이루어질 때까지 서비스 이용이 제한될 수 있습니다.\n                        </h6>\n                        <div className='info'>\n                            <p className='title'>\n                                <span className='bold'>쿠키의 사용목적 :</span>이용자가 방문한 각 서비스와 웹 사이트들에 대한 방문 및 이용 형태, 인기 검색어,\n                                보안 접속 여부, 등을 파악하여 이용자에게 최적화된 정보 제공을 위해 사용됩니다.\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>쿠키의 설치∙운영 및 거부 :</span>웹브라우저 상단의 도구>인터넷 옵션>개인정보 메뉴의 옵션 설정을 통해 쿠키\n                                저장을 거부 할 수 있습니다.\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>쿠키 저장을 거부할 경우 맞춤형 서비스 이용에 어려움이 발생할 수 있습니다.</span>\n                            </p>\n                        </div>\n\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>회사는 이용자에게 개별적인 맞춤 서비스를 제공하기 위해 온라인 맞춤형 광고 서비스를 사용합니다.</h6>\n                        <div className='info'>\n                            <p className='title'>\n                                <span className='bold'>행태 정보 수집 방법 :</span>이용자가 당사 애플리케이션을 실행할 때 자동 수집 및 전송합니다.\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>모바일 애플리케이션 사용 시 광고 식별자 수집 :</span>회사는 이용자의 ADID/IDFA를 수집할 수 있습니다.\n                                ADID/IDFA란 모바일 앱 이용자의 광고 식별 값으로써, 사용자의 맞춤 서비스 제공이나 더 나은 환경의 광고를 제공하기 위한 측정을 위해\n                                수집할 수 있습니다.\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>거부 방법 :</span>- Android: 설정 → 구글(구글설정) → 광고 → 광고 맞춤설정 선택 해제\n                            </p>\n                        </div>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 9조 (개인정보의 안전성 확보 조치)</h3>\n                        <h6>\n                            회원은 언제든지 등록되어 있는 자신의 개인 정보를 열람하거나 수정할 수 있으며, 회사의 개인정보 처리에 동의하지 않는 경우 동의를\n                            거부하거나 가입 해지(회원탈퇴)를 요청할 수 있습니다. 단, 개인 정보에서 서비스 운영을 위해 확인이 필요한 정보를 변경할 경우에는\n                            회사의 승인이 이루어질 때까지 서비스 이용이 제한될 수 있습니다.\n                        </h6>\n\n                        <div className='info'>\n                            <p className='title'>\n                                <span className='bold'>- 관리적 조치 :</span>내부 관리 계획 수립 및 시행, 직원과 종업원 등에 대한 정기적 교육\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>- 기술적 조치 : </span>개인정보 처리시스템(또는 개인정보가 저장된 컴퓨터)의 비밀번호 설정 등 접근권한\n                                관리, 백신소프트웨어 등 보안프로그램 설치, 개인정보가 저장된 파일의 암호화\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>- 물리적 조치 :</span>개인정보가 저장․보관된 장소의 시건, 출입통제 등\n                            </p>\n                        </div>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 10조 (개인정보 관리책임자 및 담당자의 연락처)</h3>\n                        <h6>\n                            회사는 개인정보 처리에 관한 업무를 총괄해서 책임지고, 개인정보 처리와 관련한 정보 주체의 불만 및 피해 구제를 처리하기 위하여 아래와\n                            같이 개인정보 보호책임자를 지정하고 있습니다.\n                        </h6>\n\n                        <p className='medium-bold'>개인정보 보호 및 관리 책임자 (사업주 또는 대표자)</p>\n                        <div className='info'>\n                            <p className='title' style={{ borderTop: '1px solid #e6e6e6' }}>\n                                <span className='bold'>성명 및 직책 :</span>지승배 / 대표이사\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>연락처 :</span>ceo@withmate.kr\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>고객센터 :</span>070-4300-9075\n                            </p>\n                        </div>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 11조 (고지의 의무)</h3>\n                        <h6>\n                            현 개인정보처리방침 내용 추가, 삭제 및 수정이 있을 시에는 개정 최소 7일전부터 회사 애플리케이션, 서비스 내의 '공지사항' 또는 기타\n                            알기 쉬운 방법을 통해 고지할 것입니다. 다만, 개인정보의 수집 및 활용, 제3자 제공 등과 같이 회원 권리의 중요한 변경이 있을 경우에는\n                            최소 30일 전에 고지합니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <div className='privacy-justify'>\n                            <p className='version'>개인정보 처리방법 버전 번호 : v.1.2</p>\n                            <p className='date'>제정일자 : 2021년 12월 20일</p>\n                        </div>\n                    </div> */}\n                </div>\n            </div>\n        );\n    }\n}\nexport default PrivacyComponent;\n","import React from 'react';\n\n// component\nimport PrivacyStyledContainer from './privacy.styled';\nimport Privacy from './privacy';\n\nclass PrivacyContainer extends React.PureComponent {\n    render() {\n        return (\n            <PrivacyStyledContainer component={this.props.isComponent || undefined}>\n                <Privacy {...this.props} />\n            </PrivacyStyledContainer>\n        );\n    }\n}\n\nexport default PrivacyContainer;\n","import styled from 'styled-components';\nimport { sizeHandler, mainColor } from '../../../theme';\nconst MarketingStyledContainer = styled.div`\n    .inner-container {\n        ${props => props.component && `padding: 0px !important;`}\n    }\n    .main-context {\n        width: ${props => (props.component ? '100%' : '60%')};\n\n        h2 {\n            ${props => props.component && `display: none;`}\n            font-size: ${sizeHandler(44)};\n            font-weight: bold;\n            letter-spacing: -0.6px;\n            color: #000000;\n            margin-bottom: 24px;\n        }\n\n        p {\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.8);\n            padding: 0px;\n            margin: 0px;\n        }\n    }\n\n    .context-block {\n        margin-top: ${props => (props.component ? '24px' : '100px')};\n        padding-top: 24px;\n        border-top: 1px solid #e6e6e6;\n        width: ${props => (props.component ? '100%' : '60%')};\n\n        > p {\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.7);\n        }\n\n        > table {\n            border-spacing: 0px;\n            width: 100%;\n            height: 100px;\n            border: 1px solid #e2e2e2;\n\n            > tr, th, td {\n                width: 200px;\n                border: 1px solid #e2e2e2;\n                text-align: left;\n                padding-left: 10px;\n            }\n\n            > td {\n                line-height: 2rem;\n                border: 1px solid #e2e2e2;\n            }\n\n            > thead {\n                height: 35px;    \n            }\n\n            > tbody {\n                background-color: #f9f9f9;\n            }\n\n            @media (max-width: 832px) {\n                width: 100%;\n            }\n        }\n\n        > .info-block {\n            margin-top: 68px;\n\n            .title {\n                font-size: ${sizeHandler(18)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.8);\n                margin-bottom: 8px;\n            }\n\n            .content {\n                font-size: ${sizeHandler(14)};\n                line-height: ${sizeHandler(24)};\n                letter-spacing: -0.3px;\n                color: rgba(0, 0, 0, 0.7);\n            }\n        }\n    }\n\n    @media (max-width: 1120px) {\n        .inner-container {\n            padding-left: 16px;\n            padding-right: 16px;\n        }\n    }\n\n    @media (max-width: 768px) {\n        .main-context {\n            width: 100%;\n\n            h2 {\n                font-size: ${sizeHandler(38)};\n            }\n        }\n\n        .context-block {\n            width: 100%;\n        }\n\n        .privacy-justify {\n            flex-direction: column;\n\n            p {\n                &:first-child {\n                    text-align: center;\n                }\n                &:last-child {\n                    text-align: center;\n                }\n            }\n        }\n    }\n`;\nexport default MarketingStyledContainer;","import React from 'react';\n\nclass MarketingComponent extends React.PureComponent {\n    render() {\n        return (\n            <div className='marketing-container'>\n                <div className='inner-container'>\n                    <div className='main-context'>\n                        <h2>위드메이트 마케팅 정보 활용 동의</h2>\n                    </div>\n\n                    <div className='context-block'>\n                        <p>\n                            마케팅 정보 수신 여부 및 마케팅을 위한 개인정보 수집이용을 거부하실 수 있으며, <br />\n                            거부 시에도 위드메이트 서비스를 이용하실 수 있으나, 동의를 거부한 경우 각종 소식 및 이벤트 참여에 제한이 있을 수 있습니다.\n                        </p>\n                        <br/>\n                        <table class=\"table\">\n                            <thead>\n                                <tr>\n                                    <th>개인정보 수집 항목</th>\n                                    <th>개인정보 수집 이용 목적</th>\n                                    <th>보유 및 이용기간</th>\n                                </tr>\n                            </thead>\n                            <tbody>\n                                <tr>\n                                    <td>이름, 연락처, 이메일</td>\n                                    <td>• 이벤트 운영 및 광고성 정보 전송\n                                        <br/>\n                                        • 서비스 관련 정보 전송\n                                    </td>\n                                    <td>이용자가 동의를 철회하거나, 회원 탈퇴시 즉시 삭제</td>\n                                </tr>\n                            </tbody>\n                        </table>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\nexport default MarketingComponent;\n","import React from 'react';\nimport { connect } from 'react-redux';\n\n// component\nimport MarketingStyledContainer from './marketing.styled';\nimport Marketing from './marketing';\n\nclass MarketingContainer extends React.PureComponent {\n    render() {\n        return (\n            <MarketingStyledContainer component={this.props.isComponent || undefined}>\n                <Marketing {...this.props} />\n            </MarketingStyledContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({}) => ({});\nconst mapDispatchToProps = dispatch => ({});\nexport default connect(mapStateToProps, mapDispatchToProps)(MarketingContainer);\n","import styled from 'styled-components';\nimport { sizeHandler } from '../../../../theme';\nconst NromalStyledContainer = styled.div`\n    * {\n        thead {\n            border: 1px solid gray;\n            text-align: center;\n\n            tr {\n                font-weight: bold;\n            }\n        }\n\n        tbody {\n            td:nth-child(2),\n            td:nth-child(3) {\n                text-align: center;\n            }\n        }\n\n        tr {\n            border: 1px solid gray;\n        }\n\n        td {\n            padding: 0.5rem;\n            border: 1px solid gray;\n        }\n    }\n\n    .inner-container {\n        ${props => props.component && `padding: 0px !important;`}\n    }\n    .main-context {\n        width: ${props => (props.component ? '100%' : '60%')};\n\n        h2 {\n            ${props => props.component && `display: none;`}\n            font-size: ${sizeHandler(44)};\n            font-weight: bold;\n            letter-spacing: -0.6px;\n            color: #000000;\n            margin-bottom: 24px;\n        }\n\n        p {\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.8);\n            padding: 0px;\n            margin: 0px;\n        }\n    }\n\n    .context-block {\n        margin-top: ${props => (props.component ? '24px' : '100px')};\n        padding-top: 24px;\n        border-top: 1px solid #e6e6e6;\n        width: ${props => (props.component ? '100%' : '60%')};\n\n        > h3 {\n            font-size: ${sizeHandler(24)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n            margin-bottom: 16px;\n        }\n\n        > h6 {\n            font-size: ${sizeHandler(16)};\n            font-weight: normal;\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.8);\n            margin-bottom: 24px;\n        }\n\n        > h5 {\n            font-size: ${sizeHandler(18)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n            margin-top: 20px;\n            margin-bottom: 12px;\n        }\n\n        > p {\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.7);\n        }\n\n        > .privacy-justify {\n            display: flex;\n            align-items: center;\n            ${props => props.component && `display: block;`}\n\n            p {\n                flex: 1;\n                font-size: ${sizeHandler(14)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.7);\n\n                &:first-child {\n                    text-align: left;\n                }\n\n                &:last-child {\n                    text-align: right;\n                    ${props => props.component && `text-align: left;`}\n                }\n            }\n        }\n\n        > .info {\n            margin-top: 8px;\n            .title {\n                border-bottom: 1px solid #e6e6e6;\n                padding: 24px 0px;\n                font-size: ${sizeHandler(14)};\n                letter-spacing: -0.3px;\n                color: rgba(0, 0, 0, 0.7);\n                margin: 0px;\n\n                .bold {\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    color: rgba(0, 0, 0, 0.7);\n                    margin: 0px;\n                    padding: 0px;\n                    margin-bottom: 4px;\n                    display: block;\n                }\n            }\n\n            .content {\n                font-size: ${sizeHandler(14)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.7);\n                padding: 20px 0px;\n                border-bottom: 1px solid #e6e6e6;\n            }\n        }\n\n        > .info-block {\n            margin-top: 68px;\n\n            .title {\n                font-size: ${sizeHandler(18)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.8);\n                margin-bottom: 8px;\n            }\n\n            .content {\n                font-size: ${sizeHandler(14)};\n                line-height: ${sizeHandler(24)};\n                letter-spacing: -0.3px;\n                color: rgba(0, 0, 0, 0.7);\n            }\n        }\n    }\n\n    @media (max-width: 1120px) {\n        .inner-container {\n            padding-left: 16px;\n            padding-right: 16px;\n        }\n    }\n\n    @media (max-width: 768px) {\n        .main-context {\n            width: 100%;\n\n            h2 {\n                font-size: ${sizeHandler(38)};\n            }\n        }\n\n        .context-block {\n            width: 100%;\n        }\n\n        .privacy-justify {\n            flex-direction: column;\n\n            p {\n                &:first-child {\n                    text-align: center;\n                }\n                &:last-child {\n                    text-align: center;\n                }\n            }\n        }\n    }\n`;\nexport default NromalStyledContainer;\n","import React from 'react';\n\nclass EssentialComponent extends React.PureComponent {\n    render() {\n        return (\n            <div className='terms-container'>\n                <div className='inner-container'>\n                    <div className='main-context'>\n                        <h2>[필수/일반] (주)블루카멜 개인정보 수집 및 이용 동의 확인서</h2>\n                    </div>\n\n                    <div className='context-block'>\n                        <table>\n                            <thead>\n                                <tr>\n                                    <td style={{ width: '55%' }}>처리 항목</td>\n                                    <td>처리 목적</td>\n                                    <td>처리 목적</td>\n                                </tr>\n                            </thead>\n                            <tbody style={{ border: '1px solid gray' }}>\n                                <tr>\n                                    <td>\n                                        공통(가입경로, 가입자 생년월일, 가입자 성별, 가입자 이름, 가입자 휴대전화번호, 보호자/환자 여부), 이메일주소 가입\n                                        시(이메일 주소, 비밀번호, 인증번호), 카카오계정 가입 시(카카오계정)\n                                    </td>\n                                    <td>회원 가입 및 관리</td>\n                                </tr>\n                                <tr>\n                                    <td>민원인 이름, 민원인 휴대전화번호</td>\n                                    <td>회원 가입 및 관리</td>\n                                </tr>\n                                <tr>\n                                    <td>\n                                        거주환경(계단이용여부), 동행인 선택 여부, 동행인 성별 선택, 동행인 이름, 예상 소요시간, 예약자 휴대전화번호, 이동 수단,\n                                        환자 나이, 환자 성별, 환자 이름, 환자 휴대전화번호, 환자와의 관계, 희망 접선 일시\n                                    </td>\n                                    <td>서비스 제공 및 관리</td>\n                                    <td>온라인 예약하기</td>\n                                </tr>\n                                <tr>\n                                    <td>\n                                        서비스 종류, 작성 일시, 작성자 이름, 평점, 방문병원 주소, 서비스 진행 현황, 예약 신청 일자, 진료 예약 일시, 환자 이름\n                                    </td>\n                                    <td>서비스 제공 및 관리</td>\n                                    <td>후기 작성하기</td>\n                                </tr>\n                                <tr>\n                                    <td>\n                                        동행인 사진, 동행인 서비스 이력, 동행인 이름, 동행인 평점, 동행인 휴대전화번호, 보호자 휴대전화번호, 서비스 종류, 예상\n                                        소요시간, 예약 신청 일시, 이동 수단, 환자 성별, 환자 이름, 환자 휴대전화번호, 환자와의 관계, 희망 접선 시간, 희망 접선\n                                        일자\n                                    </td>\n                                    <td>서비스 제공 및 관리</td>\n                                    <td>마이페이지(예약내역)</td>\n                                </tr>\n                                <tr>\n                                    <td>가입자 이름, 가입자 휴대전화번호, 비밀번호, 카드 유효기간, 카드번호, 카드사</td>\n                                    <td>서비스 제공 및 관리</td>\n                                    <td>마이페이지(개인정보 관리)</td>\n                                </tr>\n                                <tr>\n                                    <td>쿠폰 번호, 쿠폰 사용 내역, 포인트 적립 내역, 포인트 사용 내역, 현재 잔여 포인트</td>\n                                    <td>서비스 제공 및 관리</td>\n                                    <td>마이페이지(내 포인트)</td>\n                                </tr>\n                                <tr>\n                                    <td>거주환경(계단이용여부), 환자 나이, 환자 성별, 환자 이름, 환자 휴대전화번호, 환자와의 관계</td>\n                                    <td>서비스 제공 및 관리</td>\n                                    <td>마이페이지(환자 프로필 관리)</td>\n                                </tr>\n                                <tr>\n                                    <td>\n                                        거주환경(계단이용여부), 동행인 성별 선택, 동행인 의료 기관 평가, 동행인 의사 평가, 동행인 이름, 동행인 휴대전화번호,\n                                        보호자 휴대전화번호, 서비스 종류, 예상 소요시간, 예약번호, 예약자 이름, 이동 수단, 환자 나이, 환자 성별, 환자 이름, 환자\n                                        휴대전화번호, 희망 접선 일시\n                                    </td>\n                                    <td>서비스 제공 및 관리</td>\n                                    <td>관리자페이지(예약/수행이력)</td>\n                                </tr>\n                                <tr>\n                                    <td>\n                                        가입자 생년월일, 가입자 성별, 거주환경(계단이용여부), 병원동행서비스 개선점, 의료 기관 만족 여부, 동행인 서비스 이력,\n                                        동행인 선택 여부, 동행인 성별 선택, 동행인 의료 기관 평가, 동행인 의사 평가, 동행인 평점, 의료 기관 만족 이유, 의료진\n                                        만족 여부, 의료진 만족 이유, 서비스 종류, 예상 소요시간, 이벤트 참여 여부, 이용 후기, 향후 재신청 의향, 이동 수단,\n                                        포인트 사용 내역, 환불 정보, 결제수단, 이용금액(결산), 이용금액(예상), 쿠폰 사용 내역, 평점, 총 이용시간, 포인트 적립\n                                        내역, 현재 잔여 포인트, 환자 나이, 환자 성별, 환자와의 관계\n                                    </td>\n                                    <td>서비스 품질 개선 및 신규 서비스 개발</td>\n                                    <td>서비스 품질 개선 및 신규 서비스 개발</td>\n                                </tr>\n                            </tbody>\n                        </table>\n\n                        <div className='info'>\n                            <p className='title' />\n                            <p className='title'>\n                                <b>[ 개인정보의 수집 및 이용 동의 거부 시 불이익 ]</b> <br />\n                                정보주체는 개인정보 수집 및 이용에 동의를 거부할 권리가 있습니다. 단, 필수항목에 대해 거부할 경우,\n                                ‘(주)블루카멜(개인정보처리자)’이 제공하는 서비스의 일부 또는 전부를 이용할 수 없습니다.\n                            </p>\n                            <p className='title'>\n                                <b>[ 개인정보의 보유 및 이용 기간 ]</b> <br />\n                                ① 위에서 제시한 처리 목적과 관련한 개인정보는 수집 및 이용에 대한 동의일부터 회원 탈퇴 후 2년까지\n                                ‘(주)블루카멜(개인정보처리자)’이 보유 및 처리합니다. <br />\n                                ② 다음과 같은 경우에는 ‘(주)블루카멜(개인정보처리자)’이 개인정보를 제1항에서 정한 기간과 달리 보유 및 처리할 수 있습니다. <br />\n                                &ensp; 1. 다음과 같이 관련 법령에 의하여 보존할 필요성이 있는 경우 <br />\n                                &emsp; 1) 신용정보의 수집/처리 및 이용 등에 관한 기록 : 3년 <br />\n                                &emsp; 2) 소비자의 불만 또는 분쟁처리에 관한 기록 : 3년 <br />\n                                &emsp; 3) 대금결제 및 재화 등의 공급에 관한 기록 : 5년 <br />\n                                &emsp; 4) 계약 또는 청약철회 등에 관한 기록 : 5년 <br />\n                                &emsp; 5) 표시/광고에 관한 기록 : 6개월 <br />\n                                &ensp; 2. 정보주체로부터 사전에 동의를 받은 경우 : 정보주체가 사전 동의한 기간\n                            </p>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\nexport default EssentialComponent;\n","import React from 'react';\nimport { connect } from 'react-redux';\n\n// component\nimport NormalStyledContainer from './normal.styled';\nimport Normal from './normal';\n\nclass NormalContainer extends React.PureComponent {\n    render() {\n        return (\n            <NormalStyledContainer component={this.props.isComponent || undefined}>\n                <Normal {...this.props} />\n            </NormalStyledContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({}) => ({});\nconst mapDispatchToProps = dispatch => ({});\nexport default connect(mapStateToProps, mapDispatchToProps)(NormalContainer);\n","import styled from 'styled-components';\nimport { sizeHandler } from '../../../../theme';\nconst TermsStyledContainer = styled.div`\n    * {\n        thead {\n            border: 1px solid gray;\n            text-align: center;\n\n            tr {\n                font-weight: bold;\n            }\n        }\n\n        tbody {\n            td:nth-child(2),\n            td:nth-child(3) {\n                text-align: center;\n            }\n        }\n\n        tr {\n            border: 1px solid gray;\n        }\n\n        td {\n            padding: 0.5rem;\n            border: 1px solid gray;\n        }\n    }\n\n    .inner-container {\n        ${props => props.component && `padding: 0px !important;`}\n    }\n    .main-context {\n        width: ${props => (props.component ? '100%' : '60%')};\n\n        h2 {\n            ${props => props.component && `display: none;`}\n            font-size: ${sizeHandler(44)};\n            font-weight: bold;\n            letter-spacing: -0.6px;\n            color: #000000;\n            margin-bottom: 24px;\n        }\n\n        p {\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.8);\n            padding: 0px;\n            margin: 0px;\n        }\n    }\n\n    .context-block {\n        margin-top: ${props => (props.component ? '24px' : '100px')};\n        padding-top: 24px;\n        border-top: 1px solid #e6e6e6;\n        width: ${props => (props.component ? '100%' : '60%')};\n\n        > h3 {\n            font-size: ${sizeHandler(24)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n            margin-bottom: 16px;\n        }\n\n        > h6 {\n            font-size: ${sizeHandler(16)};\n            font-weight: normal;\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.8);\n            margin-bottom: 24px;\n        }\n\n        > h5 {\n            font-size: ${sizeHandler(18)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n            margin-top: 20px;\n            margin-bottom: 12px;\n        }\n\n        > p {\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.7);\n        }\n\n        > .privacy-justify {\n            display: flex;\n            align-items: center;\n            ${props => props.component && `display: block;`}\n\n            p {\n                flex: 1;\n                font-size: ${sizeHandler(14)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.7);\n\n                &:first-child {\n                    text-align: left;\n                }\n\n                &:last-child {\n                    text-align: right;\n                    ${props => props.component && `text-align: left;`}\n                }\n            }\n        }\n\n        > .info {\n            margin-top: 8px;\n            .title {\n                border-bottom: 1px solid #e6e6e6;\n                padding: 24px 0px;\n                font-size: ${sizeHandler(14)};\n                letter-spacing: -0.3px;\n                color: rgba(0, 0, 0, 0.7);\n                margin: 0px;\n\n                .bold {\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    color: rgba(0, 0, 0, 0.7);\n                    margin: 0px;\n                    padding: 0px;\n                    margin-bottom: 4px;\n                    display: block;\n                }\n            }\n\n            .content {\n                font-size: ${sizeHandler(14)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.7);\n                padding: 20px 0px;\n                border-bottom: 1px solid #e6e6e6;\n            }\n        }\n\n        > .info-block {\n            margin-top: 68px;\n\n            .title {\n                font-size: ${sizeHandler(18)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.8);\n                margin-bottom: 8px;\n            }\n\n            .content {\n                font-size: ${sizeHandler(14)};\n                line-height: ${sizeHandler(24)};\n                letter-spacing: -0.3px;\n                color: rgba(0, 0, 0, 0.7);\n            }\n        }\n    }\n\n    @media (max-width: 1120px) {\n        .inner-container {\n            padding-left: 16px;\n            padding-right: 16px;\n        }\n    }\n\n    @media (max-width: 768px) {\n        .main-context {\n            width: 100%;\n\n            h2 {\n                font-size: ${sizeHandler(38)};\n            }\n        }\n\n        .context-block {\n            width: 100%;\n        }\n\n        .privacy-justify {\n            flex-direction: column;\n\n            p {\n                &:first-child {\n                    text-align: center;\n                }\n                &:last-child {\n                    text-align: center;\n                }\n            }\n        }\n    }\n`;\nexport default TermsStyledContainer;\n","import React from 'react';\n\nclass SensitiveComponent extends React.PureComponent {\n    render() {\n        return (\n            <div className='terms-container'>\n                <div className='inner-container'>\n                    <div className='main-context'>\n                        <h2>[필수/민감] (주)블루카멜 개인정보 수집 및 이용 동의 확인서</h2>\n                    </div>\n\n                    <div className='context-block'>\n                        <table>\n                            <thead>\n                                <tr>\n                                    <td style={{ width: '55%' }}>수집 및 이용 항목</td>\n                                    <td>수집 및 이용 목적</td>\n                                    <td>수집 및 이용 목적</td>\n                                </tr>\n                            </thead>\n                            <tbody style={{ border: '1px solid gray' }}>\n                                <tr>\n                                    <td>동행 시 주의사항, 진료 예약 시간, 진료 예약 일자, 방문병원 주소, 출발지 주소(자택, 터미널, 입원 병원 등)</td>\n                                    <td>서비스 제공 및 관리</td>\n                                    <td>온라인 예약하기</td>\n                                </tr>\n                                <tr>\n                                    <td>방문병원 주소, 서비스 진행 현황, 예약 신청 일자, 진료 예약 일시</td>\n                                    <td>서비스 제공 및 관리</td>\n                                    <td>후기 작성하기</td>\n                                </tr>\n                                <tr>\n                                    <td>\n                                        다음 진료 일정 정리, 동행인 전달사항, 방문병원 주소, 복약 지도사항, 서비스 진행 중 특이사항, 진료 및 치료 내용, 진료\n                                        예약 시간, 진료 예약 일자, 출발지 주소(자택, 터미널, 입원 병원 등), 환자 통원 타임라인\n                                    </td>\n                                    <td>서비스 제공 및 관리</td>\n                                    <td>마이페이지(예약내역)</td>\n                                </tr>\n                                <tr>\n                                    <td>동행 시 주의사항, 출발지 주소(자택, 터미널, 입원 병원 등)</td>\n                                    <td>서비스 제공 및 관리</td>\n                                    <td>마이페이지(환자 프로필 관리)</td>\n                                </tr>\n                                <tr>\n                                    <td>\n                                        다음 진료 일정 정리, 동행 시 주의사항, 동행인 전달사항, 방문병원 주소, 복약 지도사항, 서비스 진행 중 특이사항, 서비스\n                                        진행 현황, 진료 및 치료 내용, 진료 예약 일시, 출발지 주소(자택, 터미널, 입원 병원 등), 환자 통원 타임라인\n                                    </td>\n                                    <td>서비스 제공 및 관리</td>\n                                    <td>관리자페이지(예약/수행이력)</td>\n                                </tr>\n                                <tr>\n                                    <td>\n                                        동행 시 주의사항, 동행인 전달사항, 방문병원 주소, 서비스 진행 중 특이사항, 진료 및 치료 내용, 출발지 주소(자택, 터미널,\n                                        입원 병원 등), 환자 통원 타임라인\n                                    </td>\n                                    <td>서비스 품질 개선 및 신규 서비스 개발</td>\n                                    <td>서비스 품질 개선 및 신규 서비스 개발</td>\n                                </tr>\n                            </tbody>\n                        </table>\n\n                        <div className='info'>\n                            <p className='title' />\n                            <p className='title'>\n                                <b>[ 개인정보의 수집 및 이용 동의 거부 시 불이익 ]</b> <br />\n                                정보주체는 개인정보 수집 및 이용에 동의를 거부할 권리가 있습니다. 단, 필수항목에 대해 거부할 경우,\n                                ‘(주)블루카멜(개인정보처리자)’이 제공하는 서비스의 일부 또는 전부를 이용할 수 없습니다.\n                            </p>\n                            <p className='title'>\n                                <b>[ 개인정보의 보유 및 이용 기간 ]</b> <br />\n                                ① 위에서 제시한 처리 목적과 관련한 개인정보는 수집 및 이용에 대한 동의일부터 회원 탈퇴 후 2년까지\n                                ‘(주)블루카멜(개인정보처리자)’이 보유 및 처리합니다. <br />\n                                ② 다음과 같은 경우에는 ‘(주)블루카멜(개인정보처리자)’이 개인정보를 제1항에서 정한 기간과 달리 보유 및 처리할 수 있습니다. <br />\n                                &ensp; 1. 다음과 같이 관련 법령에 의하여 보존할 필요성이 있는 경우 <br />\n                                &emsp; 1) 신용정보의 수집/처리 및 이용 등에 관한 기록 : 3년 <br />\n                                &emsp; 2) 소비자의 불만 또는 분쟁처리에 관한 기록 : 3년 <br />\n                                &emsp; 3) 대금결제 및 재화 등의 공급에 관한 기록 : 5년 <br />\n                                &emsp; 4) 계약 또는 청약철회 등에 관한 기록 : 5년 <br />\n                                &emsp; 5) 표시/광고에 관한 기록 : 6개월 <br />\n                                &ensp; 2. 정보주체로부터 사전에 동의를 받은 경우 : 정보주체가 사전 동의한 기간\n                            </p>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\nexport default SensitiveComponent;\n","import React from 'react';\nimport { connect } from 'react-redux';\n\n// component\nimport SensitiveStyledContainer from './sensitive.styled';\nimport Sensitive from './sensitive';\n\nclass SensitiveContainer extends React.PureComponent {\n    render() {\n        return (\n            <SensitiveStyledContainer component={this.props.isComponent || undefined}>\n                <Sensitive {...this.props} />\n            </SensitiveStyledContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({}) => ({});\nconst mapDispatchToProps = dispatch => ({});\nexport default connect(mapStateToProps, mapDispatchToProps)(SensitiveContainer);\n","import styled from 'styled-components';\nimport { sizeHandler } from '../../../../theme';\nconst NromalStyledContainer = styled.div`\n    * {\n        thead {\n            border: 1px solid gray;\n            text-align: center;\n\n            tr {\n                font-weight: bold;\n            }\n        }\n\n        tbody {\n            td:nth-child(2),\n            td:nth-child(3) {\n                text-align: center;\n            }\n        }\n\n        tr {\n            border: 1px solid gray;\n        }\n\n        td {\n            padding: 0.5rem;\n            border: 1px solid gray;\n        }\n    }\n\n    .inner-container {\n        ${props => props.component && `padding: 0px !important;`}\n    }\n    .main-context {\n        width: ${props => (props.component ? '100%' : '60%')};\n\n        h2 {\n            ${props => props.component && `display: none;`}\n            font-size: ${sizeHandler(44)};\n            font-weight: bold;\n            letter-spacing: -0.6px;\n            color: #000000;\n            margin-bottom: 24px;\n        }\n\n        p {\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.8);\n            padding: 0px;\n            margin: 0px;\n        }\n    }\n\n    .context-block {\n        margin-top: ${props => (props.component ? '24px' : '100px')};\n        padding-top: 24px;\n        border-top: 1px solid #e6e6e6;\n        width: ${props => (props.component ? '100%' : '60%')};\n\n        > h3 {\n            font-size: ${sizeHandler(24)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n            margin-bottom: 16px;\n        }\n\n        > h6 {\n            font-size: ${sizeHandler(16)};\n            font-weight: normal;\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.8);\n            margin-bottom: 24px;\n        }\n\n        > h5 {\n            font-size: ${sizeHandler(18)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n            margin-top: 20px;\n            margin-bottom: 12px;\n        }\n\n        > p {\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.7);\n        }\n\n        > .privacy-justify {\n            display: flex;\n            align-items: center;\n            ${props => props.component && `display: block;`}\n\n            p {\n                flex: 1;\n                font-size: ${sizeHandler(14)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.7);\n\n                &:first-child {\n                    text-align: left;\n                }\n\n                &:last-child {\n                    text-align: right;\n                    ${props => props.component && `text-align: left;`}\n                }\n            }\n        }\n\n        > .info {\n            margin-top: 8px;\n            .title {\n                border-bottom: 1px solid #e6e6e6;\n                padding: 24px 0px;\n                font-size: ${sizeHandler(14)};\n                letter-spacing: -0.3px;\n                color: rgba(0, 0, 0, 0.7);\n                margin: 0px;\n\n                .bold {\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    color: rgba(0, 0, 0, 0.7);\n                    margin: 0px;\n                    padding: 0px;\n                    margin-bottom: 4px;\n                    display: block;\n                }\n            }\n\n            .content {\n                font-size: ${sizeHandler(14)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.7);\n                padding: 20px 0px;\n                border-bottom: 1px solid #e6e6e6;\n            }\n        }\n\n        > .info-block {\n            margin-top: 68px;\n\n            .title {\n                font-size: ${sizeHandler(18)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.8);\n                margin-bottom: 8px;\n            }\n\n            .content {\n                font-size: ${sizeHandler(14)};\n                line-height: ${sizeHandler(24)};\n                letter-spacing: -0.3px;\n                color: rgba(0, 0, 0, 0.7);\n            }\n        }\n    }\n\n    @media (max-width: 1120px) {\n        .inner-container {\n            padding-left: 16px;\n            padding-right: 16px;\n        }\n    }\n\n    @media (max-width: 768px) {\n        .main-context {\n            width: 100%;\n\n            h2 {\n                font-size: ${sizeHandler(38)};\n            }\n        }\n\n        .context-block {\n            width: 100%;\n        }\n\n        .privacy-justify {\n            flex-direction: column;\n\n            p {\n                &:first-child {\n                    text-align: center;\n                }\n                &:last-child {\n                    text-align: center;\n                }\n            }\n        }\n    }\n`;\nexport default NromalStyledContainer;\n","import React from 'react';\n\nclass NormalComponent extends React.PureComponent {\n    render() {\n        return (\n            <div className='terms-container'>\n                <div className='inner-container'>\n                    <div className='main-context'>\n                        <h2>[선택/일반] (주)블루카멜 개인정보 수집 및 이용 동의 확인서</h2>\n                    </div>\n\n                    <div className='context-block'>\n                        <table>\n                            <thead>\n                                <tr>\n                                    <td style={{ width: '55%' }}>수집 및 이용 항목</td>\n                                    <td>수집 및 이용 목적</td>\n                                    <td>수집 및 이용 목적</td>\n                                </tr>\n                            </thead>\n                            <tbody style={{ border: '1px solid gray' }}>\n                                <tr>\n                                    <td>추천인 이름, 추천인 휴대전화번호, 이벤트 참여 정보(이벤트 참여 여부, 받는 사람, 받는 주소)</td>\n                                    <td>서비스 제공 및 관리</td>\n                                    <td>온라인 예약하기</td>\n                                </tr>\n                                <tr>\n                                    <td>\n                                        병원동행서비스 개선점, 의료 기관 만족 여부, 의료 기관 만족 이유, 의료진 만족 여부, 의료진 만족 이유, 이용 후기, 제목,\n                                        향후 재신청 의향\n                                    </td>\n                                    <td>서비스 제공 및 관리</td>\n                                    <td>후기 작성하기</td>\n                                </tr>\n                                <tr>\n                                    <td>추천인 이름</td>\n                                    <td>서비스 제공 및 관리</td>\n                                    <td>관리자페이지(예약/수행이력)</td>\n                                </tr>\n                                <tr>\n                                    <td>이벤트 참여 여부, 병원동행서비스 개선점, 의료 기관 만족 여부, 의료 기관 만족 이유, 이용 후기, 향후 재신청 의향</td>\n                                    <td>서비스 품질 개선 및 신규 서비스 개발</td>\n                                    <td>서비스 품질 개선 및 신규 서비스 개발</td>\n                                </tr>\n                            </tbody>\n                        </table>\n\n                        <div className='info'>\n                            <p className='title' />\n                            <p className='title'>\n                                <b>[ 개인정보의 수집 및 이용 동의 거부 시 불이익 ]</b> <br />\n                                정보주체는 개인정보 수집 및 이용에 동의를 거부할 권리가 있습니다. 단, 필수항목에 대해 거부할 경우,\n                                ‘(주)블루카멜(개인정보처리자)’이 제공하는 서비스의 일부 또는 전부를 이용할 수 없습니다.\n                            </p>\n                            <p className='title'>\n                                <b>[ 선택항목 입력 시 처리 동의로 간주 ]</b> <br />\n                                ‘(주)블루카멜(개인정보처리자)’이 정한 선택항목은 정보주체가 서비스 이용 과정에서 해당 항목을 입력하지 않는다면 수집되지\n                                않습니다. 선택항목 처리에 동의를 거부하더라도, 서비스 이용 중 정보주체가 해당 항목을 입력한다면 처리에 대해 동의한 것으로\n                                간주합니다.\n                            </p>\n                            <p className='title'>\n                                <b>[ 개인정보의 보유 및 이용 기간 ]</b> <br />\n                                ① 위에서 제시한 처리 목적과 관련한 개인정보는 수집 및 이용에 대한 동의일부터 회원 탈퇴 후 2년까지\n                                ‘(주)블루카멜(개인정보처리자)’이 보유 및 처리합니다. <br />\n                                ② 다음과 같은 경우에는 ‘(주)블루카멜(개인정보처리자)’이 개인정보를 제1항에서 정한 기간과 달리 보유 및 처리할 수 있습니다. <br />\n                                &ensp; 1. 다음과 같이 관련 법령에 의하여 보존할 필요성이 있는 경우 <br />\n                                &emsp; 1) 신용정보의 수집/처리 및 이용 등에 관한 기록 : 3년 <br />\n                                &emsp; 2) 소비자의 불만 또는 분쟁처리에 관한 기록 : 3년 <br />\n                                &emsp; 3) 대금결제 및 재화 등의 공급에 관한 기록 : 5년 <br />\n                                &emsp; 4) 계약 또는 청약철회 등에 관한 기록 : 5년 <br />\n                                &emsp; 5) 표시/광고에 관한 기록 : 6개월 <br />\n                                &ensp; 2. 정보주체로부터 사전에 동의를 받은 경우 : 정보주체가 사전 동의한 기간\n                            </p>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\nexport default NormalComponent;\n","import React from 'react';\nimport { connect } from 'react-redux';\n\n// component\nimport NormalStyledContainer from './normal.styled';\nimport Normal from './normal';\n\nclass NormalContainer extends React.PureComponent {\n    render() {\n        return (\n            <NormalStyledContainer component={this.props.isComponent || undefined}>\n                <Normal {...this.props} />\n            </NormalStyledContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({}) => ({});\nconst mapDispatchToProps = dispatch => ({});\nexport default connect(mapStateToProps, mapDispatchToProps)(NormalContainer);\n","import styled from 'styled-components';\nimport { sizeHandler } from '../../../../theme';\nconst SensitiveStyledContainer = styled.div`\n    * {\n        thead {\n            border: 1px solid gray;\n            text-align: center;\n\n            tr {\n                font-weight: bold;\n            }\n        }\n\n        tbody {\n            td:nth-child(2),\n            td:nth-child(3) {\n                text-align: center;\n            }\n        }\n\n        tr {\n            border: 1px solid gray;\n        }\n\n        td {\n            padding: 0.5rem;\n            border: 1px solid gray;\n        }\n    }\n\n    .inner-container {\n        ${props => props.component && `padding: 0px !important;`}\n    }\n    .main-context {\n        width: ${props => (props.component ? '100%' : '60%')};\n\n        h2 {\n            ${props => props.component && `display: none;`}\n            font-size: ${sizeHandler(44)};\n            font-weight: bold;\n            letter-spacing: -0.6px;\n            color: #000000;\n            margin-bottom: 24px;\n        }\n\n        p {\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.8);\n            padding: 0px;\n            margin: 0px;\n        }\n    }\n\n    .context-block {\n        margin-top: ${props => (props.component ? '24px' : '100px')};\n        padding-top: 24px;\n        border-top: 1px solid #e6e6e6;\n        width: ${props => (props.component ? '100%' : '60%')};\n\n        > h3 {\n            font-size: ${sizeHandler(24)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n            margin-bottom: 16px;\n        }\n\n        > h6 {\n            font-size: ${sizeHandler(16)};\n            font-weight: normal;\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.8);\n            margin-bottom: 24px;\n        }\n\n        > h5 {\n            font-size: ${sizeHandler(18)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n            margin-top: 20px;\n            margin-bottom: 12px;\n        }\n\n        > p {\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.7);\n        }\n\n        > .privacy-justify {\n            display: flex;\n            align-items: center;\n            ${props => props.component && `display: block;`}\n\n            p {\n                flex: 1;\n                font-size: ${sizeHandler(14)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.7);\n\n                &:first-child {\n                    text-align: left;\n                }\n\n                &:last-child {\n                    text-align: right;\n                    ${props => props.component && `text-align: left;`}\n                }\n            }\n        }\n\n        > .info {\n            margin-top: 8px;\n            .title {\n                border-bottom: 1px solid #e6e6e6;\n                padding: 24px 0px;\n                font-size: ${sizeHandler(14)};\n                letter-spacing: -0.3px;\n                color: rgba(0, 0, 0, 0.7);\n                margin: 0px;\n\n                .bold {\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    color: rgba(0, 0, 0, 0.7);\n                    margin: 0px;\n                    padding: 0px;\n                    margin-bottom: 4px;\n                    display: block;\n                }\n            }\n\n            .content {\n                font-size: ${sizeHandler(14)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.7);\n                padding: 20px 0px;\n                border-bottom: 1px solid #e6e6e6;\n            }\n        }\n\n        > .info-block {\n            margin-top: 68px;\n\n            .title {\n                font-size: ${sizeHandler(18)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.8);\n                margin-bottom: 8px;\n            }\n\n            .content {\n                font-size: ${sizeHandler(14)};\n                line-height: ${sizeHandler(24)};\n                letter-spacing: -0.3px;\n                color: rgba(0, 0, 0, 0.7);\n            }\n        }\n    }\n\n    @media (max-width: 1120px) {\n        .inner-container {\n            padding-left: 16px;\n            padding-right: 16px;\n        }\n    }\n\n    @media (max-width: 768px) {\n        .main-context {\n            width: 100%;\n\n            h2 {\n                font-size: ${sizeHandler(38)};\n            }\n        }\n\n        .context-block {\n            width: 100%;\n        }\n\n        .privacy-justify {\n            flex-direction: column;\n\n            p {\n                &:first-child {\n                    text-align: center;\n                }\n                &:last-child {\n                    text-align: center;\n                }\n            }\n        }\n    }\n`;\nexport default SensitiveStyledContainer;\n","import React from 'react';\n\nclass SensitiveComponent extends React.PureComponent {\n    render() {\n        return (\n            <div className='terms-container'>\n                <div className='inner-container'>\n                    <div className='main-context'>\n                        <h2>[선택/민감] (주)블루카멜 개인정보 수집 및 이용 동의 확인서</h2>\n                    </div>\n\n                    <div className='context-block'>\n                        <table>\n                            <thead>\n                                <tr>\n                                    <td style={{ width: '55%' }}>수집 및 이용 항목</td>\n                                    <td>수집 및 이용 목적</td>\n                                    <td>수집 및 이용 목적</td>\n                                </tr>\n                            </thead>\n                            <tbody style={{ border: '1px solid gray' }}>\n                                <tr>\n                                    <td>기타 요청 및 전달사항</td>\n                                    <td>서비스 제공 및 관리</td>\n                                    <td>온라인 예약하기</td>\n                                </tr>\n                                <tr>\n                                    <td>의료진 이름</td>\n                                    <td>서비스 제공 및 관리</td>\n                                    <td>후기 작성하기</td>\n                                </tr>\n                                <tr>\n                                    <td>기타 요청 및 전달사항</td>\n                                    <td>서비스 제공 및 관리</td>\n                                    <td>마이페이지(예약내역)</td>\n                                </tr>\n                                <tr>\n                                    <td>기타 요청 및 전달사항</td>\n                                    <td>서비스 제공 및 관리</td>\n                                    <td>관리자페이지(예약/수행이력)</td>\n                                </tr>\n                                <tr>\n                                    <td>기타 요청 및 전달사항</td>\n                                    <td>서비스 품질 개선 및 신규 서비스 개발</td>\n                                    <td>서비스 품질 개선 및 신규 서비스 개발</td>\n                                </tr>\n                            </tbody>\n                        </table>\n\n                        <div className='info'>\n                            <p className='title' />\n                            <p className='title'>\n                                <b>[ 개인정보의 수집 및 이용 동의 거부 시 불이익 ]</b> <br />\n                                정보주체는 개인정보 수집 및 이용에 동의를 거부할 권리가 있습니다. 단, 필수항목에 대해 거부할 경우,\n                                ‘(주)블루카멜(개인정보처리자)’이 제공하는 서비스의 일부 또는 전부를 이용할 수 없습니다.\n                            </p>\n                            <p className='title'>\n                                <b>[ 선택항목 입력 시 처리 동의로 간주 ]</b> <br />\n                                ‘(주)블루카멜(개인정보처리자)’이 정한 선택항목은 정보주체가 서비스 이용 과정에서 해당 항목을 입력하지 않는다면 수집되지\n                                않습니다. 선택항목 처리에 동의를 거부하더라도, 서비스 이용 중 정보주체가 해당 항목을 입력한다면 처리에 대해 동의한 것으로\n                                간주합니다.\n                            </p>\n                            <p className='title'>\n                                <b>[ 개인정보의 보유 및 이용 기간 ]</b> <br />\n                                ① 위에서 제시한 처리 목적과 관련한 개인정보는 수집 및 이용에 대한 동의일부터 회원 탈퇴 후 2년까지\n                                ‘(주)블루카멜(개인정보처리자)’이 보유 및 처리합니다. <br />\n                                ② 다음과 같은 경우에는 ‘(주)블루카멜(개인정보처리자)’이 개인정보를 제1항에서 정한 기간과 달리 보유 및 처리할 수 있습니다. <br />\n                                &ensp; 1. 다음과 같이 관련 법령에 의하여 보존할 필요성이 있는 경우 <br />\n                                &emsp; 1) 신용정보의 수집/처리 및 이용 등에 관한 기록 : 3년 <br />\n                                &emsp; 2) 소비자의 불만 또는 분쟁처리에 관한 기록 : 3년 <br />\n                                &emsp; 3) 대금결제 및 재화 등의 공급에 관한 기록 : 5년 <br />\n                                &emsp; 4) 계약 또는 청약철회 등에 관한 기록 : 5년 <br />\n                                &emsp; 5) 표시/광고에 관한 기록 : 6개월 <br />\n                                &ensp; 2. 정보주체로부터 사전에 동의를 받은 경우 : 정보주체가 사전 동의한 기간\n                            </p>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\nexport default SensitiveComponent;\n","import React from 'react';\nimport { connect } from 'react-redux';\n\n// component\nimport SensitiveStyledContainer from './sensitive.styled';\nimport Sensitive from './sensitive';\n\nclass SensitiveContainer extends React.PureComponent {\n    render() {\n        return (\n            <SensitiveStyledContainer component={this.props.isComponent || undefined}>\n                <Sensitive {...this.props} />\n            </SensitiveStyledContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({}) => ({});\nconst mapDispatchToProps = dispatch => ({});\nexport default connect(mapStateToProps, mapDispatchToProps)(SensitiveContainer);\n","import styled from 'styled-components';\nimport { sizeHandler } from '../../../theme';\nconst AdvertisementStyledContainer = styled.div`\n    * {\n        thead {\n            border: 1px solid gray;\n            text-align: center;\n\n            tr {\n                font-weight: bold;\n            }\n        }\n\n        tbody {\n            td:nth-child(2),\n            td:nth-child(3) {\n                text-align: center;\n            }\n        }\n\n        tr {\n            border: 1px solid gray;\n        }\n\n        td {\n            padding: 0.5rem;\n            border: 1px solid gray;\n        }\n    }\n\n    .inner-container {\n        ${props => props.component && `padding: 0px !important;`}\n    }\n    .main-context {\n        width: ${props => (props.component ? '100%' : '60%')};\n\n        h2 {\n            ${props => props.component && `display: none;`}\n            font-size: ${sizeHandler(44)};\n            font-weight: bold;\n            letter-spacing: -0.6px;\n            color: #000000;\n            margin-bottom: 24px;\n        }\n\n        p {\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.8);\n            padding: 0px;\n            margin: 0px;\n        }\n    }\n\n    .context-block {\n        margin-top: ${props => (props.component ? '24px' : '100px')};\n        padding-top: 24px;\n        border-top: 1px solid #e6e6e6;\n        width: ${props => (props.component ? '100%' : '60%')};\n\n        > h3 {\n            font-size: ${sizeHandler(24)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n            margin-bottom: 16px;\n        }\n\n        > h6 {\n            font-size: ${sizeHandler(16)};\n            font-weight: normal;\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.8);\n            margin-bottom: 24px;\n        }\n\n        > h5 {\n            font-size: ${sizeHandler(18)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n            margin-top: 20px;\n            margin-bottom: 12px;\n        }\n\n        > p {\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.7);\n        }\n\n        > .privacy-justify {\n            display: flex;\n            align-items: center;\n            ${props => props.component && `display: block;`}\n\n            p {\n                flex: 1;\n                font-size: ${sizeHandler(14)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.7);\n\n                &:first-child {\n                    text-align: left;\n                }\n\n                &:last-child {\n                    text-align: right;\n                    ${props => props.component && `text-align: left;`}\n                }\n            }\n        }\n\n        > .info {\n            margin-top: 8px;\n            .title {\n                border-bottom: 1px solid #e6e6e6;\n                padding: 24px 0px;\n                font-size: ${sizeHandler(14)};\n                letter-spacing: -0.3px;\n                color: rgba(0, 0, 0, 0.7);\n                margin: 0px;\n\n                .bold {\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    color: rgba(0, 0, 0, 0.7);\n                    margin: 0px;\n                    padding: 0px;\n                    margin-bottom: 4px;\n                    display: block;\n                }\n            }\n\n            .content {\n                font-size: ${sizeHandler(14)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.7);\n                padding: 20px 0px;\n                border-bottom: 1px solid #e6e6e6;\n            }\n        }\n\n        > .info-block {\n            margin-top: 68px;\n\n            .title {\n                font-size: ${sizeHandler(18)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.8);\n                margin-bottom: 8px;\n            }\n\n            .content {\n                font-size: ${sizeHandler(14)};\n                line-height: ${sizeHandler(24)};\n                letter-spacing: -0.3px;\n                color: rgba(0, 0, 0, 0.7);\n            }\n        }\n    }\n\n    @media (max-width: 1120px) {\n        .inner-container {\n            padding-left: 16px;\n            padding-right: 16px;\n        }\n    }\n\n    @media (max-width: 768px) {\n        .main-context {\n            width: 100%;\n\n            h2 {\n                font-size: ${sizeHandler(38)};\n            }\n        }\n\n        .context-block {\n            width: 100%;\n        }\n\n        .privacy-justify {\n            flex-direction: column;\n\n            p {\n                &:first-child {\n                    text-align: center;\n                }\n                &:last-child {\n                    text-align: center;\n                }\n            }\n        }\n    }\n`;\nexport default AdvertisementStyledContainer;\n","import React from 'react';\n\nclass AdvertisementComponent extends React.PureComponent {\n    render() {\n        return (\n            <div className='terms-container'>\n                <div className='inner-container'>\n                    <div className='main-context'>\n                        <h2>[맞춤 광고] (주)블루카멜 개인정보 수집 및 이용 동의 확인서</h2>\n                    </div>\n\n                    <div className='context-block'>\n                        <div className='info'>\n                            <p className='title'>\n                                <b>[ 개인정보 처리 항목 ]</b> <br />\n                                가입경로, 가입자 생년월일, 가입자 성별, 가입자 휴대전화번호, 서비스 종류, 이동 수단, 이메일 주소, 결제 카드사, 카드사, 환자\n                                나이, 환자 성별, 환자 휴대전화번호, <b>다음 진료 일정 정리</b> <br />* ‘<b>다음 진료 일정 정리</b>’는 민감 정보에 해당\n                            </p>\n                            <p className='title'>\n                                <b>[ 개인정보의 수집 및 이용 동의 거부 시 불이익 ]</b> <br />\n                                정보주체는 개인정보 수집 및 이용에 동의를 거부할 권리가 있습니다. 맞춤 광고 목적의 항목에 대해 거부하더라도,\n                                ‘(주)블루카멜(개인정보처리자)’이 제공하는 서비스를 전부 또는 일부를 이용하실 수 있습니다.\n                            </p>\n                            <p className='title'>\n                                <b>[ 개인정보의 보유 및 이용 기간 ]</b> <br />\n                                ① 위에서 제시한 처리 목적과 관련한 개인정보는 수집 및 이용에 대한 동의일부터 회원 탈퇴 후 2년까지\n                                ‘(주)블루카멜(개인정보처리자)’이 보유 및 처리합니다. <br />\n                                ② 다음과 같은 경우에는 ‘(주)블루카멜(개인정보처리자)’이 개인정보를 제1항에서 정한 기간과 달리 보유 및 처리할 수 있습니다. <br />\n                                &ensp; 1. 다음과 같이 관련 법령에 의하여 보존할 필요성이 있는 경우 <br />\n                                &emsp; 1) 신용정보의 수집/처리 및 이용 등에 관한 기록 : 3년 <br />\n                                &emsp; 2) 소비자의 불만 또는 분쟁처리에 관한 기록 : 3년 <br />\n                                &emsp; 3) 대금결제 및 재화 등의 공급에 관한 기록 : 5년 <br />\n                                &emsp; 4) 계약 또는 청약철회 등에 관한 기록 : 5년 <br />\n                                &emsp; 5) 표시/광고에 관한 기록 : 6개월 <br />\n                                &ensp; 2. 정보주체로부터 사전에 동의를 받은 경우 : 정보주체가 사전 동의한 기간\n                            </p>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\nexport default AdvertisementComponent;\n","import React from 'react';\nimport { connect } from 'react-redux';\n\n// component\nimport AdvertisementStyledContainer from './advertisement.styled';\nimport Advertisement from './advertisement';\n\nclass AdvertisementContainer extends React.PureComponent {\n    render() {\n        return (\n            <AdvertisementStyledContainer component={this.props.isComponent || undefined}>\n                <Advertisement {...this.props} />\n            </AdvertisementStyledContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({}) => ({});\nconst mapDispatchToProps = dispatch => ({});\nexport default connect(mapStateToProps, mapDispatchToProps)(AdvertisementContainer);\n","import React from 'react';\nimport { notification, message, Button, Checkbox, Select } from 'antd';\nimport validator from 'validator';\nimport styled from 'styled-components';\n\nimport { LOCAL, MATE, USER, KAKAO } from '../../../../Lib/variables';\nimport axios from '../../../../Lib/axios';\nimport { CommonWithmateModal } from '../../../../Components/newModal';\nimport { DivisionLine, WithmateSelect, WithmateInput } from '../../../../Components/Common/input';\n\nimport Terms from '../../../Policy/Terms';\nimport Privacy from '../../../Policy/Privacy';\nimport Marketing from '../../../Policy/Marketing';\nimport EssentialNormal from '../../../Policy/Essential/Normal';\nimport EssentialSensitive from '../../../Policy/Essential/Sensitive';\nimport SelectiveNormal from '../../../Policy/Selective/Normal';\nimport SelectiveSensitive from '../../../Policy/Selective/Sensitive';\nimport Advertisement from '../../../Policy/Advertisement';\n\nclass RegisterComponent extends React.PureComponent {\n    state = {\n        modal: false,\n        modalInfo: '',\n        modalTitle: '',\n        createdAuthCode: '',\n        authCodeCheck: false,\n        vaildated: false,\n    };\n\n    componentWillUnmount = () => {\n        this.onEdit({ type: 'clear', value: '' });\n    };\n\n    onEdit = ({ type, value }) => {\n        this.props.editRegisterForm({ type, value });\n    };\n\n    handleCheckAllChange = () => {\n        const { registerForm } = this.props.auth;\n\n        this.onEdit({ type: 'checkAll', value: !registerForm.checkAll });\n\n        this.onEdit({ type: 'termsOfUse', value: !registerForm.checkAll });\n        this.onEdit({ type: 'privacyPolicy', value: !registerForm.checkAll });\n        this.onEdit({ type: 'essentialGeneral', value: !registerForm.checkAll });\n        this.onEdit({ type: 'essentialSensitive', value: !registerForm.checkAll });\n        this.onEdit({ type: 'selectiveGeneral', value: !registerForm.checkAll });\n        this.onEdit({ type: 'selectiveSensitive', value: !registerForm.checkAll });\n        this.onEdit({ type: 'selectiveAdvertise', value: !registerForm.checkAll });\n    };\n\n    onSendMailHandler = event => {\n        event.preventDefault();\n\n        const { email } = this.props.auth.registerForm;\n\n        if (!email) {\n            this.setState({\n                modal: true,\n                modalTitle: '이메일 미입력',\n                modalInfo: '이메일이 입력되지 않았습니다. 사용하실 이메일을 입력해주세요.',\n            });\n            return;\n        }\n\n        axios.post('/v1/auth/create/code', { email: this.props.auth.registerForm.email }).then(response => {\n            console.log('>> 인증코드가 발송되었습니다.');\n            alert('인증코드가 발송되었습니다.', response);\n        });\n    };\n\n    onCheckHandler = event => {\n        event.preventDefault();\n        const { email, code } = this.props.auth.registerForm;\n        axios.get('/v1/auth/vaildate/code', { params: { email, code } }).then(resolve => {\n            const { data } = resolve;\n            if (data === 'success') {\n                notification.open({\n                    message: '이메일 인증완료',\n                    description: '이메일 인증이 완료되었습니다.',\n                    type: 'success',\n                });\n            } else {\n                notification.open({\n                    message: '이메일 인증실패',\n                    description: '이메일 인증에 실패하였습니다. 다시 입력하세요.',\n                    type: 'warning',\n                });\n            }\n\n            this.setState({ vaildated: true });\n        });\n    };\n\n    pageOneValidator = () => {\n        const { termsOfUse, privacyPolicy, essentialGeneral, essentialSensitive } = this.props.auth.registerForm;\n\n        if (!termsOfUse) {\n            return this.setState({\n                modal: true,\n                modalTitle: '서비스 이용 약관에 동의해주세요.',\n                modalInfo: '원활한 서비스 이용을 위해 위드메이트 서비스 이용약관에 동의해주세요.',\n            });\n        }\n\n        if (!privacyPolicy) {\n            return this.setState({\n                modal: true,\n                modalTitle: '개인 정보 처리 방침에 동의해주세요.',\n                modalInfo: '원활한 서비스 이용을 위해 위드메이트 개인 정보 처리 방침에 동의해주세요.',\n            });\n        }\n\n        if (!essentialGeneral) {\n            return this.setState({\n                modal: true,\n                modalTitle: '[필수/일반] 개인정보 수집 및 이용 동의에 동의해주세요.',\n                modalInfo: '원활한 서비스 이용을 위해 위드메이트 [필수/일반] 개인정보 수집 및 이용 동의에 동의해주세요.',\n            });\n        }\n\n        if (!essentialSensitive) {\n            return this.setState({\n                modal: true,\n                modalTitle: '[필수/민감] 개인정보 수집 및 이용 동의에 동의해주세요.',\n                modalInfo: '원활한 서비스 이용을 위해 위드메이트 [필수/일반] 개인정보 수집 및 이용 동의에 동의해주세요.',\n            });\n        }\n\n        this.onEdit({ type: 'page', value: 2 });\n    };\n\n    pageSndValidator = () => {\n        const { userType, name, photo = '', contact, sex, birth } = this.props.auth.registerForm;\n\n        if (!name)\n            return this.setState({\n                modal: true,\n                modalTitle: '성함을 입력해주세요.',\n                modalInfo: '보다 원활한 서비스 이용을 위해 고객님의 성함을 입력해주세요.',\n            });\n\n        if (!sex) {\n            return this.setState({\n                modal: true,\n                modalTitle: '성별을 선택해주세요.',\n                modalInfo: '보다 원활한 서비스 이용을 위해 고객님의 성별을 선택해주세요.',\n            });\n        }\n\n        if (!birth || birth.length < 8) {\n            return this.setState({\n                modal: true,\n                modalTitle: '생년월일을 입력해주세요.',\n                modalInfo: '보다 원활한 서비스 이용을 위해 고객님의 생년월일을 입력해주세요.',\n            });\n        }\n\n        if (userType === USER) {\n            if (!contact || contact.length < 11) {\n                return this.setState({\n                    modal: true,\n                    modalTitle: '연락처를 입력해주세요.',\n                    modalInfo: '원활한 위드메이트 서비스를 이용을 위해 고객님의 연락처를 입력해주세요.',\n                });\n            }\n        }\n\n        if (userType === MATE) {\n            if (!photo) {\n                return this.setState({\n                    modal: true,\n                    modalTitle: '메이트님의 프로필 사진을 설정해주세요.',\n                    modalInfo: '실물 사진(ex. 증명사진)으로 프로필 사진을 설정하시면 고객과의 원활한 소통에 도움이 됩니다.',\n                });\n            }\n\n            if (!contact) {\n                return this.setState({\n                    modal: true,\n                    modalTitle: '메이트님의 연락처를 입력해주세요.',\n                    modalInfo: '메이트님의 신원 확인을 위해 위드메이트에서 연락이 갈 예정입니다. 올바른 연락처를 입력해주세요.',\n                });\n            }\n        }\n\n        this.onEdit({ type: 'page', value: 3 });\n    };\n\n    onRegister = () => {\n        const {\n            termsOfUse, // 서비스 이용약관\n            privacyPolicy, // 개인정보처리방침 동의\n            essentialGeneral, // 필수_일반\n            essentialSensitive, // 필수_민감\n            selectiveGeneral = false, // 선택_일반\n            selectiveSensitive = false, // 선택_민감\n            selectiveAdvertise = false, // 선택_광고\n            email,\n            password,\n            repassword,\n            connection,\n            recommenderName,\n            longtermCare = false,\n            marketing = false,\n            userType,\n            type = LOCAL,\n            name,\n            photo,\n            contact,\n            birth,\n            code,\n            identify,\n            reason,\n        } = this.props.auth.registerForm;\n\n        const urlSource = window.location.search === '?source=dlive' ? 'dlive' : 'withmate';\n\n        if (type === LOCAL) {\n            if (!email || !validator.isEmail(email)) {\n                return this.setState({\n                    modal: true,\n                    modalTitle: '올바른 이메일을 입력해주세요',\n                    modalInfo: '잘못된 이메일을 입력하시면 예약 알림을 받지 못하는 등의 불이익을 받으실 수 있습니다',\n                });\n            }\n\n            if (!password || password.length < 10) {\n                return this.setState({\n                    modal: true,\n                    modalTitle: '비밀번호를 확인해주세요.',\n                    modalInfo: '고객님의 개인정보 보호를 위해 비밀번호는 최소 10자리 이상으로 설정해주세요.',\n                });\n            }\n\n            if (!repassword || password !== repassword) {\n                return this.setState({\n                    modal: true,\n                    modalTitle: '비밀번호가 일치하지 않습니다.',\n                    modalInfo: '입력하신 비밀번호와 비밀번호 확인란의 정보가 일치하지 않습니다.',\n                });\n            }\n\n            if (!this.state.vaildated || !code) {\n                return this.setState({\n                    modal: true,\n                    modalTitle: '이메일 인증을 먼저 진행해주세요.',\n                    modalInfo: '이메일을 입력 후 인증을 먼저 진행해주세요.',\n                });\n            }\n        }\n\n        if (!connection) {\n            return this.setState({\n                modal: true,\n                modalTitle: '유입 경로를 선택해주세요.',\n                modalInfo: '위드메이트를 알게된 경로를 선택해주세요.',\n            });\n        }\n\n        if (!identify) {\n            return this.setState({\n                modal: true,\n                modalTitle: '보호자인지 본인인지 선택해주세요.',\n                modalInfo: '보다 원활한 서비스 이용을 위해 보호자인지 본인인지 선택해주세요.',\n            });\n        }\n\n        if (identify === '보호자') {\n            if (!reason) {\n                return this.setState({\n                    modal: true,\n                    modalTitle: '이용하는 이유를 입력하세요.',\n                    modalInfo: '위드메이트를 이용하는 이유를 입력해주세요.',\n                });\n            }\n        }\n\n        this.props\n            .checkUserId({ id: email, userType, type })\n            .then(resolve => {\n                if (!resolve) {\n                    this.props\n                        .register({\n                            termsOfUse,\n                            privacyPolicy,\n                            essentialGeneral,\n                            essentialSensitive,\n                            selectiveGeneral,\n                            selectiveSensitive,\n                            selectiveAdvertise,\n\n                            id: email,\n                            password,\n                            userType,\n                            name,\n                            code,\n                            identify,\n                            reason,\n                            type,\n                            photo,\n                            contact,\n                            marketing,\n                            connection,\n                            recommenderName,\n                            birth,\n                            longtermCare,\n                            urlSource:\n                                window.location.search === '?source=dlive' ? 'dlive' : window.location.search === '?source=metlife' ? 'metlife' : 'withmate',\n                        })\n                        .then(resolve => {\n                            // 메이트 회원가입 처리\n                            if (userType === MATE && resolve && resolve.message === 'success') {\n                                this.props.editRegisterForm({ type: 'clear', value: '' });\n\n                                notification.open({\n                                    message: '회원가입을 완료하였습니다.',\n                                    description: '관리자의 회원가입 승인 후 활동가능합니다.',\n                                    type: 'success',\n                                });\n                            }\n\n                            if (userType === USER && resolve === 'check parameters') {\n                                notification.open({\n                                    message: '회원가입에 실패하였습니다.',\n                                    description: '누락된 정보가 없는지 확인해주세요.',\n                                    type: 'success',\n                                });\n                            }\n\n                            if (userType === USER && resolve && resolve.message === 'success') {\n                                this.props.history.push(`/success`);\n                            }\n                        })\n                        .catch(error => {\n                            message.error('서버장애가 발생하였습니다. 관리자에게 문의해주세요.');\n                        });\n                } else {\n                    return this.setState({\n                        modal: true,\n                        modalTitle: '이미 존재하는 사용자의 이메일입니다.',\n                        modalInfo: '아이디를 확인해주세요. 비밀번호를 분실하신 경우 비밀번호 찾기를 이용해주세요.',\n                    });\n                }\n            })\n            .catch(error => {\n                message.error('서버장애가 발생하였습니다. 관리자에게 문의해주세요.');\n            });\n    };\n\n    setPhoto = ({ file }) => {\n        this.onEdit({ type: 'photo', value: file.originFileObj });\n    };\n\n    formCompleteStatus = () => {\n        let valid = true;\n        if (!this.props.auth || !this.props.auth.registerForm) return false;\n\n        const { page } = this.props.auth.registerForm;\n        if (page === 1) {\n            const { termsOfUse, privacyPolicy, essentialGeneral, essentialSensitive, selectiveGeneral, selectiveSensitive, selectiveAdvertise } =\n                this.props.auth.registerForm;\n            if (!termsOfUse) valid = false;\n            if (!privacyPolicy) valid = false;\n            if (!essentialGeneral) valid = false;\n            if (!essentialSensitive) valid = false;\n        }\n\n        if (page === 2) {\n            const { name, contact, sex, birth } = this.props.auth.registerForm;\n            if (!name) valid = false;\n            if (!contact || contact.length < 11) valid = false;\n            if (!sex) valid = false;\n            if (!birth || birth.length < 8) valid = false;\n        }\n\n        if (page === 3) {\n            const { email, password, repassword, connection, recommenderName, code, type, identify, reason, longtermCare } = this.props.auth.registerForm;\n            if (type === LOCAL) {\n                if (!email) valid = false;\n                if (!password) valid = false;\n                if (!repassword) valid = false;\n                if (!code) valid = false;\n                if (!this.state.vaildated) valid = false;\n            }\n            if (!connection) valid = false;\n            if (!identify) valid = false;\n\n            if (identify === '보호자') {\n                if (!reason) valid = false;\n            }\n        }\n\n        return valid;\n    };\n\n    render() {\n        const { registerForm } = this.props.auth;\n        // console.log(registerForm)\n        const status = this.formCompleteStatus();\n\n        return (\n            <div className='register-container'>\n                <div className='inner-container'>\n                    <div className='register-form'>\n                        <div className='title-wrapper'>\n                            <p>회원가입</p>\n                            <span>{registerForm.page}/3</span>\n                        </div>\n                        {registerForm.page === 1 ? (\n                            <div className='form snd'>\n                                <Agree>\n                                    <Checkbox onChange={this.handleCheckAllChange} value={registerForm.checkAll || false}>\n                                        전체 동의하기\n                                    </Checkbox>\n                                </Agree>\n                                <p style={{ fontSize: '12px', color: 'gray' }}>\n                                    [선택/일반] 개인정보 수집 및 이용 동의, [선택/민감] 개인정보 수집 및 이용 동의, [맞춤 광고] 개인정보 수집 및 이용 동의를\n                                    포함합니다.\n                                </p>\n                                <br />\n\n                                <Agree>\n                                    <Checkbox\n                                        onChange={() => {\n                                            this.onEdit({ type: 'termsOfUse', value: !registerForm.termsOfUse });\n                                        }}\n                                        checked={registerForm.termsOfUse || false}\n                                    >\n                                        [필수] 서비스 이용 약관\n                                    </Checkbox>\n                                    <AgreeLinkText\n                                        onClick={() => {\n                                            this.setState({ modal: true, modalTitle: '이용약관 확인', modalInfo: <Terms isComponent /> });\n                                        }}\n                                    >\n                                        <p style={{ color: '#A5A5A5' }}>내용보기</p>\n                                    </AgreeLinkText>\n                                </Agree>\n\n                                <Agree>\n                                    <Checkbox\n                                        onChange={() => {\n                                            this.onEdit({ type: 'privacyPolicy', value: !registerForm.privacyPolicy });\n                                        }}\n                                        checked={registerForm.privacyPolicy || false}\n                                    >\n                                        [필수] 개인 정보 처리 방침 동의\n                                    </Checkbox>\n\n                                    <AgreeLinkText\n                                        onClick={() => {\n                                            this.setState({ modal: true, modalTitle: '개인정보 처리방침 확인', modalInfo: <Privacy isComponent /> });\n                                        }}\n                                    >\n                                        <p style={{ color: '#A5A5A5' }}>내용보기</p>\n                                    </AgreeLinkText>\n                                </Agree>\n\n                                <Agree>\n                                    <Checkbox\n                                        onChange={() => {\n                                            this.onEdit({ type: 'essentialGeneral', value: !registerForm.essentialGeneral });\n                                        }}\n                                        checked={registerForm.essentialGeneral || false}\n                                    >\n                                        [필수/<span style={{ color: '#3399ff' }}>일반</span>] 개인정보 수집 및 이용 동의\n                                    </Checkbox>\n                                    <AgreeLinkText\n                                        onClick={() => {\n                                            this.setState({\n                                                modal: true,\n                                                modalTitle: '[필수/일반] 개인정보 수집 및 이용 동의',\n                                                modalInfo: <EssentialNormal isComponent />,\n                                            });\n                                        }}\n                                    >\n                                        <p style={{ color: '#A5A5A5' }}>내용보기</p>\n                                    </AgreeLinkText>\n                                </Agree>\n                                <Agree>\n                                    <Checkbox\n                                        onChange={() => {\n                                            this.onEdit({ type: 'essentialSensitive', value: !registerForm.essentialSensitive });\n                                        }}\n                                        checked={registerForm.essentialSensitive || false}\n                                    >\n                                        [필수/<span style={{ color: '#ff4040' }}>민감</span>] 개인정보 수집 및 이용 동의\n                                    </Checkbox>\n                                    <AgreeLinkText\n                                        onClick={() => {\n                                            this.setState({\n                                                modal: true,\n                                                modalTitle: '[필수/민감] 개인정보 수집 및 이용 동의',\n                                                modalInfo: <EssentialSensitive isComponent />,\n                                            });\n                                        }}\n                                    >\n                                        <p style={{ color: '#A5A5A5' }}>내용보기</p>\n                                    </AgreeLinkText>\n                                </Agree>\n                                <Agree>\n                                    <Checkbox\n                                        onChange={() => {\n                                            this.onEdit({ type: 'selectiveGeneral', value: !registerForm.selectiveGeneral });\n                                        }}\n                                        checked={registerForm.selectiveGeneral || false}\n                                    >\n                                        [<span style={{ color: '#03c75a' }}>선택</span>/<span style={{ color: '#3399ff' }}>일반</span>] 개인정보 수집 및 이용\n                                        동의\n                                    </Checkbox>\n                                    <AgreeLinkText\n                                        onClick={() => {\n                                            this.setState({\n                                                modal: true,\n                                                modalTitle: '[선택/일반] 개인정보 수집 및 이용 동의',\n                                                modalInfo: <SelectiveNormal isComponent />,\n                                            });\n                                        }}\n                                    >\n                                        <p style={{ color: '#A5A5A5' }}>내용보기</p>\n                                    </AgreeLinkText>\n                                </Agree>\n                                <Agree>\n                                    <Checkbox\n                                        onChange={() => {\n                                            this.onEdit({ type: 'selectiveSensitive', value: !registerForm.selectiveSensitive });\n                                        }}\n                                        checked={registerForm.selectiveSensitive || false}\n                                    >\n                                        [<span style={{ color: '#03c75a' }}>선택</span>/<span style={{ color: '#ff4040' }}>민감</span>] 개인정보 수집 및 이용\n                                        동의\n                                    </Checkbox>\n                                    <AgreeLinkText\n                                        onClick={() => {\n                                            this.setState({\n                                                modal: true,\n                                                modalTitle: '[선택/민감] 개인정보 수집 및 이용 동의',\n                                                modalInfo: <SelectiveSensitive isComponent />,\n                                            });\n                                        }}\n                                    >\n                                        <p style={{ color: '#A5A5A5' }}>내용보기</p>\n                                    </AgreeLinkText>\n                                </Agree>\n                                <Agree>\n                                    <Checkbox\n                                        onChange={() => {\n                                            this.onEdit({ type: 'selectiveAdvertise', value: !registerForm.selectiveAdvertise });\n                                        }}\n                                        checked={registerForm.selectiveAdvertise || false}\n                                    >\n                                        [<span style={{ color: '#03c75a' }}>선택</span>/<span style={{ color: '#FF6666' }}>광고</span>] 개인정보 수집 및 이용\n                                        동의\n                                    </Checkbox>\n                                    <AgreeLinkText\n                                        onClick={() => {\n                                            this.setState({\n                                                modal: true,\n                                                modalTitle: '[맞춤 광고] 개인정보 수집 및 이용 동의',\n                                                modalInfo: <Advertisement isComponent />,\n                                            });\n                                        }}\n                                    >\n                                        <p style={{ color: '#A5A5A5' }}>내용보기</p>\n                                    </AgreeLinkText>\n                                </Agree>\n\n                                <DivisionLine />\n\n                                <Button\n                                    onClick={() => {\n                                        if (!status) return null;\n\n                                        this.pageOneValidator();\n                                    }}\n                                    type='primary'\n                                    style={!status ? { backgroundColor: '#E6E6E6', border: 0, cursor: 'not-allowed' } : {}}\n                                >\n                                    계속하기\n                                </Button>\n                            </div>\n                        ) : registerForm.page === 2 ? (\n                            <div className='form snd'>\n                                <label>이름</label>\n                                <WithmateInput\n                                    type='text'\n                                    placeholder='ex. 홍길동'\n                                    value={registerForm.name || ''}\n                                    onChange={ev => {\n                                        this.onEdit({ type: 'name', value: ev.target.value });\n                                    }}\n                                />\n\n                                <DivisionLine small />\n\n                                <label>성별</label>\n                                <div className='type-button-wrapper'>\n                                    <div\n                                        className={`type-button ${registerForm.sex && registerForm.sex === '남' ? 'active' : ''}`}\n                                        onClick={() => {\n                                            this.onEdit({ type: 'sex', value: '남' });\n                                        }}\n                                    >\n                                        남자\n                                    </div>\n                                    <div\n                                        className={`type-button ${registerForm.sex && registerForm.sex === '녀' ? 'active' : ''}`}\n                                        onClick={() => {\n                                            this.onEdit({ type: 'sex', value: '녀' });\n                                        }}\n                                    >\n                                        여자\n                                    </div>\n                                </div>\n\n                                <DivisionLine small />\n\n                                <label>생년월일</label>\n                                <WithmateInput\n                                    type='text'\n                                    maxLength={8}\n                                    placeholder='숫자만 입력해주세요 (ex. 19880320)'\n                                    value={registerForm.birth || ''}\n                                    onChange={ev => {\n                                        this.onEdit({ type: 'birth', value: ev.target.value });\n                                    }}\n                                />\n\n                                <DivisionLine />\n\n                                <label>연락처</label>\n                                <WithmateInput\n                                    type='text'\n                                    maxLength={11}\n                                    placeholder='숫자만 입력해주세요.(ex. 01014231324)'\n                                    value={registerForm.contact || ''}\n                                    onChange={ev => {\n                                        this.onEdit({ type: 'contact', value: ev.target.value });\n                                    }}\n                                />\n\n                                <DivisionLine />\n\n                                <Button\n                                    onClick={() => {\n                                        if (!status) return null;\n\n                                        this.pageSndValidator();\n                                    }}\n                                    type='primary'\n                                    style={!status ? { backgroundColor: '#E6E6E6', border: 0, cursor: 'not-allowed' } : {}}\n                                >\n                                    계속하기\n                                </Button>\n\n                                <div className='link-wrapper'>\n                                    <span className='text'>메이트 신청을 희망하시나요? </span>\n                                    <span\n                                        onClick={() => {\n                                            this.props.history.push('/mate/apply');\n                                        }}\n                                        className='link'\n                                    >\n                                        메이트 신청하기\n                                    </span>\n                                </div>\n\n                                <div className='link-wrapper'>\n                                    <span className='text'>이미 계정이 있으신가요? </span>\n                                    <span\n                                        onClick={() => {\n                                            this.props.history.push('/user/login');\n                                        }}\n                                        className='link'\n                                    >\n                                        로그인\n                                    </span>\n                                </div>\n                            </div>\n                        ) : (\n                            <>\n                                <div className='form fst'>\n                                    {registerForm.type === KAKAO ? null : (\n                                        <>\n                                            <label>이메일</label>\n                                            <div>\n                                                <WithmateInput\n                                                    type='email'\n                                                    value={registerForm.email || ''}\n                                                    onChange={ev => {\n                                                        this.onEdit({ type: 'email', value: ev.target.value });\n                                                    }}\n                                                    required\n                                                    style={{ width: '180px' }}\n                                                    placeholder='이메일을 입력해주세요.'\n                                                />\n                                                <button\n                                                    onClick={this.onSendMailHandler}\n                                                    style={{\n                                                        width: '90px',\n                                                        height: '44px',\n                                                        marginLeft: '10px',\n                                                        backgroundColor: '#3bc1ff',\n                                                        borderColor: '#3bc1ff',\n                                                        border: '0',\n                                                        outline: '0',\n                                                        borderRadius: '3px',\n                                                    }}\n                                                >\n                                                    인증하기\n                                                </button>\n                                            </div>\n\n                                            <div>\n                                                <WithmateInput\n                                                    type='password'\n                                                    value={registerForm.code || ''}\n                                                    onChange={ev => {\n                                                        this.onEdit({ type: 'code', value: ev.target.value });\n                                                    }}\n                                                    required\n                                                    style={{ width: '180px' }}\n                                                    placeholder='인증번호를 입력해주세요.'\n                                                />\n                                                <button\n                                                    onClick={this.onCheckHandler}\n                                                    style={{\n                                                        width: '90px',\n                                                        height: '44px',\n                                                        marginLeft: '10px',\n                                                        backgroundColor: '#3bc1ff',\n                                                        borderColor: '#3bc1ff',\n                                                        border: '0',\n                                                        outline: '0',\n                                                        borderRadius: '3px',\n                                                    }}\n                                                >\n                                                    확인\n                                                </button>\n                                            </div>\n\n                                            <DivisionLine small />\n\n                                            <label style={{ display: 'block' }}>비밀번호</label>\n                                            <WithmateInput\n                                                password='true'\n                                                type='password'\n                                                onChange={ev => {\n                                                    this.onEdit({ type: 'password', value: ev.target.value });\n                                                }}\n                                                placeholder='10자리 이상 비밀번호를 입력해주세요.'\n                                                value={registerForm.password || ''}\n                                            />\n\n                                            <DivisionLine small />\n\n                                            <label style={{ display: 'block' }}>비밀번호 확인</label>\n                                            <WithmateInput\n                                                type='password'\n                                                password='true'\n                                                onChange={ev => {\n                                                    this.onEdit({ type: 'repassword', value: ev.target.value });\n                                                }}\n                                                placeholder='비밀번호를 확인해주세요.'\n                                                value={registerForm.repassword || ''}\n                                            />\n\n                                            <DivisionLine small />\n                                        </>\n                                    )}\n\n                                    <label style={{ display: 'block' }}>위드메이트를 어떻게 알고 오셨나요?</label>\n                                    <WithmateSelect\n                                        style={{ height: '48px', width: '100%' }}\n                                        placeholder='유입 경로를 선택해주세요.'\n                                        value={registerForm.connection || undefined}\n                                        onChange={value => {\n                                            this.onEdit({ type: 'connection', value });\n                                        }}\n                                    >\n                                        <Select.Option value='메트라이프'>메트라이프(360Future)</Select.Option>\n                                        <Select.Option value='딜라이브'>딜라이브</Select.Option>\n                                        <Select.Option value='검색'>검색</Select.Option>\n                                        <Select.Option value='언론기사'>언론기사</Select.Option>\n                                        <Select.Option value='광고'>광고</Select.Option>\n                                        <Select.Option value='지인 추천'>지인 추천</Select.Option>\n                                    </WithmateSelect>\n\n                                    <DivisionLine small />\n\n                                    {registerForm.connection === '지인 추천' ? (\n                                        <>\n                                            <label style={{ display: 'block' }}>추천인 성함을 입력하세요.</label>\n                                            <WithmateInput\n                                                type='text'\n                                                onChange={ev => {\n                                                    this.onEdit({ type: 'recommenderName', value: ev.target.value });\n                                                }}\n                                                value={registerForm.recommenderName || ''}\n                                            />\n                                        </>\n                                    ) : null}\n\n                                    <DivisionLine small />\n\n                                    <label>본인인가요 ? 보호자인가요 ?</label>\n                                    <div className='type-button-wrapper'>\n                                        <div\n                                            className={`type-button ${registerForm.identify && registerForm.identify === '본인' ? 'active' : ''}`}\n                                            onClick={() => {\n                                                this.onEdit({ type: 'identify', value: '본인' });\n                                            }}\n                                        >\n                                            본인\n                                        </div>\n                                        <div\n                                            className={`type-button ${registerForm.identify && registerForm.identify === '보호자' ? 'active' : ''}`}\n                                            onClick={() => {\n                                                this.onEdit({ type: 'identify', value: '보호자' });\n                                            }}\n                                        >\n                                            보호자\n                                        </div>\n                                    </div>\n\n                                    <DivisionLine small />\n\n                                    {registerForm.identify === '본인' ? null : (\n                                        <>\n                                            <label style={{ display: 'block' }}>이용하는 이유 (보호자 선택시)</label>\n                                            <WithmateInput\n                                                type='text'\n                                                onChange={ev => {\n                                                    this.onEdit({ type: 'reason', value: ev.target.value });\n                                                }}\n                                                placeholder='육아, 직장등'\n                                                value={registerForm.reason || ''}\n                                            />\n\n                                            <DivisionLine small />\n                                        </>\n                                    )}\n\n                                    {/* <Agree>\n                                        <Checkbox\n                                            onChange={() => {\n                                                this.onEdit({ type: 'longtermCare', value: !registerForm.longtermCare });\n                                            }}\n                                            value={registerForm.agree || false}\n                                        >\n                                            장기요양등급 상담 신청하기 (선택)\n                                        </Checkbox>\n                                    </Agree>\n                                    <Alert>*장기요양등급 상담 신청을 원하시면 체크해주세요.</Alert> */}\n\n                                    <DivisionLine small />\n\n                                    <Agree>\n                                        <Checkbox\n                                            onClick={() => {\n                                                this.onEdit({ type: 'marketing', value: !registerForm.marketing });\n                                            }}\n                                        >\n                                            개인정보 마케팅 활용 동의 (선택)\n                                        </Checkbox>\n                                        <a\n                                            className='point'\n                                            onClick={() => {\n                                                this.setState({ modal: true, modalTitle: '개인정보 마케팅 활용 동의', modalInfo: <Marketing isComponent /> });\n                                            }}\n                                        >\n                                            더보기 {'>'}\n                                        </a>\n                                    </Agree>\n\n                                    <Alert>*개인 정보 활용에 동의할 경우, 2000 포인트를 지급합니다.</Alert>\n\n                                    <DivisionLine small />\n\n                                    <Button\n                                        type='primary'\n                                        onClick={() => {\n                                            this.onRegister();\n                                        }}\n                                        style={{ display: 'block' }}\n                                        style={!status ? { backgroundColor: '#E6E6E6', border: 0, cursor: 'not-allowed' } : {}}\n                                    >\n                                        가입하기\n                                    </Button>\n\n                                    <div className='link-wrapper'>\n                                        <span className='text'>이미 계정이 있으신가요? </span>\n                                        <a\n                                            className='link'\n                                            onClick={() => {\n                                                this.props.history.push('/user/login');\n                                            }}\n                                        >\n                                            로그인\n                                        </a>\n                                    </div>\n                                </div>\n                            </>\n                        )}\n                    </div>\n                </div>\n\n                {this.state.modal && (\n                    <CommonWithmateModal\n                        visible={this.state.modal}\n                        config={{\n                            title: this.state.modalTitle,\n                            description: this.state.modalInfo,\n                            confirmText: '확인 및 닫기',\n                            noClose: false,\n                        }}\n                        onOk={() => {\n                            this.setState({ modal: false, modalTitle: '', modalInfo: '' });\n                        }}\n                        onCancel={() => {\n                            this.setState({ modal: false, modalTitle: '', modalInfo: '' });\n                        }}\n                    />\n                )}\n            </div>\n        );\n    }\n}\nexport default RegisterComponent;\n\nconst Agree = styled.div`\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n\n    margin-bottom: 8px;\n\n    span {\n        font-size: 14px;\n        line-height: 21px;\n        letter-spacing: -0.3px;\n        color: rgba(0, 0, 0, 0.7);\n    }\n\n    span.point {\n        color: #3bc1ff;\n    }\n\n    a.point {\n        color: #3bc1ff;\n        cursor: pointer;\n        text-decoration: none;\n    }\n\n    .ant-checkbox-wrapper {\n        margin-bottom: 0px !important;\n    }\n`;\n\nconst Alert = styled.p`\n    margin-bottom: 0px;\n    font-style: normal;\n    font-weight: normal;\n    font-size: 12px;\n    line-height: 20px;\n    letter-spacing: -0.15px;\n    color: #ff5500;\n`;\n\nconst AgreeLinkText = styled.p`\n    margin-bottom: 4px;\n    font-size: 13px;\n    color: rgba(0, 0, 0, 0.7);s\n\n    cursor: pointer;\n    &:hover {\n        color: #3bc1ff;\n        transition: all 0.3s;\n    }\n`;\n","import React from 'react';\nimport { connect } from 'react-redux';\n\n// component\nimport RegisterStyledContainer from './register.styled';\nimport Register from './register';\nimport { register, editRegisterForm, checkUserId, confirmEmailAuth } from '../../../../Reducer/Modules/auth';\n\nclass RegisterPage extends React.PureComponent {\n    render() {\n        return (\n            <RegisterStyledContainer>\n                <Register {...this.props} />\n            </RegisterStyledContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({ auth }) => ({\n    auth,\n});\n\nconst mapDispatchToProps = dispatch => ({\n    editRegisterForm: ({ type, value }) => dispatch(editRegisterForm({ type, value })),\n    register: info => dispatch(register(info)),\n    checkUserId: ({ id, userType, type }) => dispatch(checkUserId({ id, userType, type })),\n    confirmEmailAuth: verificationCode => dispatch(confirmEmailAuth(verificationCode))\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(RegisterPage);","import React from 'react';\nimport { connect } from 'react-redux';\nimport { KAKAO } from '../../../../Lib/variables';\nimport { logout } from '../../../../Reducer/Modules/auth';\n\nclass LogoutPage extends React.PureComponent {\n    componentDidMount = () => {\n        const { id, userType, type } = this.props.auth;\n        if (!id || !userType) {\n            localStorage.clear();\n            return (window.location.href = '/');\n        }\n        if( type === KAKAO && window.Kakao) {\n            window.Kakao.Auth.logout()\n        }\n        this.props.logout({ id, userType });\n    };\n\n    render() {\n        return <div></div>;\n    }\n}\n\nconst mapStateToProps = ({ auth }) => ({\n    auth,\n});\nconst mapDispatchToProps = dispatch => ({\n    logout: ({ id, userType }) => dispatch(logout({ id, userType })),\n});\nexport default connect(mapStateToProps, mapDispatchToProps)(LogoutPage);\n","import styled from 'styled-components';\nimport { mainColor, sizeHandler } from '../../../../theme';\n\nconst StyledFindContainer = styled.div`\n    margin-top: 55px;\n    min-height: 100vh;\n    background-image: url('/assets/images/main-background.png');\n    background-size: cover;\n    background-repeat: no-repeat;\n    background-position: center;\n\n    .find-container {\n        .inner-container {\n            padding: 0px;\n            padding-top: 144px;\n            padding-bottom: 100px;\n\n            .login-form {\n                background-color: white;\n                border-radius: 8px;\n                box-shadow: 2px 2px 10px 3px rgba(0, 0, 0, 0.1);\n                width: 100%;\n                max-width: 340px;\n                margin: 0 auto;\n                padding: 24px;\n\n                .login-title {\n                    margin-bottom: 24px;\n\n                    p {\n                        font-size: ${sizeHandler(32)};\n                        font-weight: bold;\n                        letter-spacing: -0.7px;\n                        color: rgba(0, 0, 0, 0.7);\n                    }\n                }\n\n                .form {\n                    label {\n                        font-size: ${sizeHandler(12)};\n                        letter-spacing: -0.15px;\n                        color: rgba(0, 0, 0, 0.7);\n                    }\n\n                    input {\n                        height: 40px;\n                        border: solid 1px #e6e6e6;\n                        margin-bottom: 20px;\n                    }\n\n                    button {\n                        width: 100%;\n                        height: 46px;\n                        margin-top: 4px;\n                        margin-bottom: 16px;\n\n                        font-size: ${sizeHandler(14)};\n                        font-weight: bold;\n                        letter-spacing: -0.2px;\n                        text-align: center;\n                        color: #ffffff;\n                    }\n\n                    .link-wrapper {\n                        display: flex;\n                        justify-content: center;\n\n                        .link {\n                            cursor: pointer;\n                            font-size: ${sizeHandler(12)};\n                            letter-spacing: -0.3px;\n                            text-align: center;\n                            color: rgba(0, 0, 0, 0.5);\n\n                            &:first-child {\n                                border-right: 1px solid #e6e6e6;\n                                padding-right: 16px;\n                            }\n\n                            &:last-child {\n                                margin-left: 16px;\n                            }\n                        }\n                    }\n                }\n\n                .form-user-type {\n                    height: 36px;\n                    margin-bottom: 20px;\n                    border-radius: 4px;\n                    border: 1px solid #e6e6e6;\n                    display: flex;\n                    align-items: center;\n                    overflow: hidden;\n\n                    .type {\n                        flex: 1;\n                        height: 100%;\n                        line-height: 36px;\n                        background-color: #ffffff;\n                        cursor: pointer;\n\n                        &:first-child {\n                            border-right: 1px solid #e6e6e6;\n                        }\n\n                        p {\n                            font-size: ${sizeHandler(12)};\n                            font-weight: bold;\n                            text-align: center;\n                            color: #606060;\n                        }\n\n                        &.active {\n                            background-color: #606060;\n\n                            p {\n                                color: #ffffff;\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n`;\nexport default StyledFindContainer;\n","import React from 'react';\nimport { notification, Input, Button, message } from 'antd';\nimport { USER, MATE } from '../../../../Lib/variables';\n\nclass Find extends React.PureComponent {\n    state = {\n        alert: '',\n    };\n\n    onEdit = ({ type, value }) => {\n        this.props.editFindForm({ type, value });\n    };\n\n    onFind = () => {\n        const { email, userType } = this.props.auth.findForm;\n\n        this.props\n            .findPassword({ id: email, userType })\n            .then(resolve => {\n                if (resolve === 'not exist') {\n                    return message.info('존재하지 않는 사용자 아이디입니다.');\n                }\n\n                if (resolve === 'success') {\n                    message.info('이메일로 임시 비밀번호가 전송되었습니다.');\n                    setTimeout(() => {\n                        this.props.history.push('/user/login');\n                    }, 1200);\n                }\n            })\n            .catch(error => {\n                message.error('서버장애가 발생하였습니다. 관리자에게 문의해주세요.');\n            });\n    };\n\n    render() {\n        const { findForm } = this.props.auth;\n        return (\n            <div className='find-container'>\n                <div className='inner-container'>\n                    <div className='login-form'>\n                        <div className='login-title'>\n                            <p>비밀번호 찾기</p>\n                        </div>\n                        <div className='form-user-type'>\n                            <div\n                                onClick={() => {\n                                    this.onEdit({ type: 'userType', value: USER });\n                                }}\n                                className={`type ${findForm && findForm.userType === USER ? 'active' : undefined}`}\n                            >\n                                <p>일반</p>\n                            </div>\n                            <div\n                                onClick={() => {\n                                    this.onEdit({ type: 'userType', value: MATE });\n                                }}\n                                className={`type ${findForm && findForm.userType === MATE ? 'active' : undefined}`}\n                            >\n                                <p>메이트</p>\n                            </div>\n                        </div>\n                        <div className='form'>\n                            <label>이메일</label>\n                            <Input\n                                type='email'\n                                placeholder='ex) korea@mail.com'\n                                value={findForm.email}\n                                onChange={ev => {\n                                    this.onEdit({ type: 'email', value: ev.target.value });\n                                }}\n                            />\n                            <Button type='primary' onClick={this.onFind}>\n                                이메일 전송하기\n                            </Button>\n\n                            <div className='link-wrapper'>\n                                <span\n                                    className='link'\n                                    onClick={() => {\n                                        this.props.history.push('/user/login');\n                                    }}\n                                >\n                                    로그인\n                                </span>\n                                <span\n                                    className='link'\n                                    onClick={() => {\n                                        this.props.history.push('/user/register');\n                                    }}\n                                >\n                                    회원가입\n                                </span>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\nexport default Find;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport StyledFindContainer from './find.styled';\nimport Find from './find';\nimport { editFindPasswordForm, findPassword } from './../../../../Reducer/Modules/auth';\n\nclass FindPage extends React.PureComponent {\n    render() {\n        return (\n            <StyledFindContainer>\n                <Find {...this.props} />\n            </StyledFindContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({ auth }) => ({\n    auth,\n});\n\nconst mapDispatchToProps = dispatch => ({\n    editFindForm: ({ type, value }) => dispatch(editFindPasswordForm({ type, value })),\n    findPassword: ({ id, userType }) => dispatch(findPassword({ id, userType })),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(FindPage);\n","import styled from 'styled-components';\nimport { sizeHandler, mainColor } from '../../../../theme';\n\nconst StyledMateContainer = styled.div`\n    margin-top: 55px;\n\n    .auth-container {\n        // min-height: 100vh;\n        // display: flex;\n        flex-direction: column;\n        background-color: rgba(0, 0, 0, 0.02);\n    }\n\n    .navigation-container {\n        border-bottom: 1px solid #e6e6e6;\n        background-color: white;\n\n        .inner-container {\n            padding: 0px;\n        }\n\n        .user-info-container {\n            display: flex;\n            align-items: center;\n            padding: 82px 30px;\n\n            .default-info {\n                flex: 1;\n                display: flex;\n                align-items: center;\n\n                div {\n                    width: 110px;\n                    height: 110px;\n                    border-radius: 55px;\n                    margin-right: 20px;\n                    background-color: #e6e6e6;\n                    position: relative;\n                    overflow: hidden;\n\n                    img {\n                        width: 100%;\n                        height: 110px;\n                        object-fit: cover;\n                        position: absolute;\n                        margin: auto;\n                        top: 0px;\n                        left: 0px;\n                        right: 0px;\n                        bottom: 0px;\n                    }\n\n                    span {\n                        display: inline-block;\n                        position: absolute;\n                        margin: auto;\n                        top: 0px;\n                        left: 0px;\n                        right: 0px;\n                        bottom: 0px;\n                        line-height: 110px;\n                        text-align: center;\n                        color: #ada5a5;\n                    }\n                }\n\n                p {\n                    flex: 1;\n                    font-size: ${sizeHandler(38)};\n                    font-weight: bold;\n                    letter-spacing: -0.6px;\n                    color: rgba(0, 0, 0, 0.8);\n\n                    > span {\n                        font-size: ${sizeHandler(38)};\n                        font-weight: bold;\n                        letter-spacing: -0.6px;\n                        color: rgba(0, 0, 0, 0.8);\n                    }\n\n                    br {\n                        display: block;\n                    }\n\n                    @media (max-width: 768px) {\n                        font-size: ${sizeHandler(26)};\n                        \n                        > span {\n                            font-size: ${sizeHandler(26)};\n                        }\n                    }\n                }\n            }\n\n            .reserve-info {\n                flex: 1;\n\n                .title {\n                    margin-bottom: 12px;\n\n                    p {\n                        font-size: ${sizeHandler(12)};\n                        font-weight: bold;\n                        color: rgba(145, 145, 145, 0.8);\n                    }\n                }\n\n                .value-wrapper {\n                    display: flex;\n                    align-items; center;\n\n                    .value-block {\n                        flex: 1;\n\n                        .title {\n                            img {\n                                height: 14px;\n                                margin-right: 4px;\n                            }\n    \n                            span {\n                                font-size: ${sizeHandler(14)};\n                                font-weight: bold;\n                                color: rgba(0, 0, 0, 0.8);\n                            }\n                        }\n    \n                        .value {\n                            font-size: ${sizeHandler(16)};\n                            font-weight: bold;\n                            color: #3bc1ff;\n                            overflow: hidden;\n                            text-overflow: ellipsis;\n                            white-space: nowrap;\n                        }\n                    }\n                }\n            }\n        }\n\n        .navigator {\n            display: flex;\n            align-items: center;\n            padding: 0px 30px;\n\n            @media (max-width: 768px) {\n                padding: 0px 16px;\n            }\n\n            .nav-tab {\n                margin-right: 32px;\n                padding-bottom: 12px;\n                position: relative;\n\n                @media (max-width: 768px) {\n                    margin-right: 16px;\n                }\n\n                .name {\n                    font-size: ${sizeHandler(14)};\n                    text-align: center;\n                    cursor: pointer;\n\n                    &.active { \n                        font-weight: bold;\n                        color: #3bc1ff;\n                    }\n                }\n\n                span.underline {\n                    background-color: #3bc1ff;\n                    position: absolute;\n                    bottom: 0px;\n                    left: 0px;\n\n                    &.active {\n                        width: 100%;\n                        height: 3px;\n                        display: inline-block;\n                    }\n                }\n            }\n        }\n\n        @media (max-width: 768px) {\n            .user-info-container {\n                padding: 42px 16px;\n                flex-direction: column;\n                align-items: flex-start;\n\n                .reserve-info {\n                    margin-top: 40px;\n                }\n\n                .value-wrapper {\n                    flex-direction: column;\n\n                    .value-block:last-child {\n                        margin-top: 20px;\n                    }\n                }\n            }\n        }\n    }\n\n    .usage-info-container {\n        flex: 1;\n        // background-color: rgba(0, 0, 0, 0.02);\n\n        .inner-container {\n            height: 100%;\n            padding: 56px 30px;\n\n            @media (max-width: 768px) {\n                padding: 40px 16px;\n            }\n        }\n\n        .filter-wrapper {\n            margin-bottom: 20px;\n\n            .filter {\n                font-size: 14px;\n                font-weight: bold;\n                text-align: center;\n                color: rgba(0, 0, 0, 0.4);\n                margin-right: 32px;\n                cursor: pointer;\n            }\n\n            .filter.active {\n                color: ${mainColor};\n            }\n        }\n    }\n\n    .user-info-wrapper {\n        .wrapper {\n            padding: 36px;\n            background-color: white;\n            border-radius: 4px;\n            border: solid 1px #e6e6e6;\n            float: left;\n            width: calc(50% - 10px);\n            \n            @media (max-width: 768px) {\n                width: 100%;\n            }\n        }\n        \n        .title-wrapper {\n            font-size: ${sizeHandler(20)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n            margin-bottom: 28px;\n        }\n\n        .service {\n            margin-bottom: 20px;\n\n            p.info {\n                font-size: ${sizeHandler(12)};\n                font-weight: normal;\n                letter-spacing: -0.15px;\n                color: rgba(0, 0, 0, 0.7);\n            }\n\n            input {\n                height: 36px;\n                display: inline-block;\n                width: 100%;\n            }\n\n            button {\n                width: 100%;\n                height: 48px;\n                border-radius: 2px;\n                color: white;\n            }\n\n            .ant-upload-drag-container {\n                .title {\n                    margin-top: 12px;\n                    font-size: ${sizeHandler(14)};\n                    letter-spacing: -0.3px;\n                    text-align: center;\n                    color: rgba(0, 0, 0, 0.8);\n                }\n        \n                .reco {\n                    font-size: ${sizeHandler(12)};\n                    letter-spacing: -0.3px;\n                    text-align: center;\n                    color: #a7a7a7;\n                }\n            }\n\n            .flex-wrapper {\n                display: flex;\n\n                p {\n                    flex: 1;\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    color: #606060;\n                    cursor: pointer;\n                }\n            }\n        }\n\n        .default-info {\n            margin-right: 20px;\n        }\n\n        .privacy-info {\n\n            @media (max-width: 768px) {\n                margin-top: 20px;\n            }\n        }\n\n        .etc-info {\n            margin-top: 20px;\n        }\n    }\n`;\n\nexport const UserPhoto = styled.div`\n    width: 100%;\n    height: 200px;\n\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    border-radius: 4px;\n    border: 2px dotted #e9e9e9;\n    // background-color: #e6e6e6;\n\n    > img {\n        width: 120px;\n        height: 120px;\n        object-fit: cover;\n        border-radius: 50%;\n    }\n`;\n\nexport const GuideRowWrapper = styled.div`\n    width: 100%;\n    height: 293px;\n\n    max-width: 372px;\n\n    box-shadow: 2px 4px 16px -4px rgba(0, 0, 0, 0.1);\n    border: solid 1px #f2f2f2;\n    background-color: #ffffff;\n\n    margin-right: 12px;\n\n    @media (max-width: 768px) {\n        > div:last-child {\n            margin-right: 0px;\n        }\n    }\n`;\n\nexport const GuideRowWrapper2 = styled.div`\n    width: 100%;\n    height: 293px;\n\n    max-width: 750px;\n\n    box-shadow: 2px 4px 16px -4px rgba(0, 0, 0, 0.1);\n    border: solid 1px #f2f2f2;\n    background-color: #ffffff;\n\n    margin-right: 12px;\n\n    @media (max-width: 768px) {\n        > div:last-child {\n            margin-right: 0px;\n        }\n    }\n`;\n\nexport const GuideContainer = styled.div`\n    display: flex;\n    align-items: flex-start;\n    justify-content: center;\n\n    margin-bottom: 56px;\n\n    > div:last-child {\n        margin-right: 0px;\n    }\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n        align-items: center;\n\n        > div:last-child {\n            margin-top: 12px;\n        }\n    }\n`;\n\nexport const GuideDescriptionSectionTitle = styled.div`\n    margin-top: 0px;\n    margin-bottom: 16pxs;\n\n    border-bottom: 1px solid #f2f2f2;\n    padding: 32px;\n    padding-bottom: 24px;\n\n    font-size: 20px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.56;\n    letter-spacing: -0.5px;\n    text-align: center;\n    color: rgba(0, 0, 0, 0.7);\n    text-decoration: underline;\n    cursor: pointer;\n\n    > img {\n        text-decoration: none;\n        width: 24px;\n        height: 24px;\n        object-fit: contain;\n\n        margin-left: 4px;\n    }\n`;\n\nexport const GuideDescriptionSection = styled.div`\n    padding: 32px;\n    padding-top: 24px;\n`;\n\nexport const GuideDescriptionSectionContent = styled.div`\n    font-size: 16px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.86;\n    letter-spacing: -0.2px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n    word-break: keep-all;\n`;\n\nexport const StudyButton = styled.div`\n    margin: 32px auto;\n\n    height: 76px;\n    width: fit-content;\n\n    padding: 22px 30px;\n    border-radius: 4px;\n    box-shadow: 2px 4px 16px -4px rgba(0, 0, 0, 0.1);\n    border: solid 2px #3bc1ff;\n    background-color: #ffffff;\n\n    font-size: 22px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.42;\n    letter-spacing: -0.5px;\n    text-align: center;\n    color: #3bc1ff;\n\n    cursor: pointer;\n\n    img {\n        width: 24px;\n        height: 24px;\n        object-fit: contain;\n\n        margin-left: 8px;\n    }\n\n    @media (max-width: 768px) {\n        font-size: 18px;\n        height: 52px;\n        padding: 12px 24px;\n    }\n`;\n\nexport const AlertMessage = styled.div`\n    font-size: 18px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.64;\n    letter-spacing: -0.2px;\n    text-align: center;\n    color: #ff5500;\n\n    max-width: 682px;\n    margin: 0 auto;\n\n    word-break: keep-all;\n\n    @media (max-width: 768px) {\n        font-size: 14px;\n    }\n`;\n\nexport default StyledMateContainer;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { Input, message } from 'antd';\n\nimport { sizeHandler, mainColor } from '../../../theme';\nimport { colorParserByStatus } from '../../../Lib/utils';\nimport { ASSIST, UNEMER, HAPPYCARE } from '../../../Lib/variables';\n\nimport moment from 'moment';\n\nexport const InputFilter = ({ keyword, keywordHandler }) => (\n    <FilterWrapper>\n        <Input\n            value={keyword}\n            onChange={ev => {\n                keywordHandler(ev.target.value);\n            }}\n            placeholder='예약번호, 이용자 성함 등을 검색해보세요.'\n        />\n    </FilterWrapper>\n);\n\nconst FilterWrapper = styled.div`\n    margin-bottom: 12px;\n`;\n\nexport const CalleList = ({ list, onRow }) => {\n    if (!list || list.length === 0) {\n        return (\n            <FullContainer>\n                <Inner>\n                    <EmptyList>서비스 수행 내역이 없습니다.</EmptyList>\n                </Inner>\n            </FullContainer>\n        );\n    }\n\n    return (\n        <ListConatiner>\n            {list.map((item, index) => {\n                const serviceType =\n                    !item.productInfo || !item.productInfo.usePro || !item.productInfo.useBasic ? '' : item.service === 'unemergency' ? 'Pro' : 'Basic';\n                const serviceName = (item.productInfo && item.productInfo.name && item.service && item.productInfo.name + serviceType) || '-';\n\n                return (\n                    <ReserveItem\n                        key={item._id + index + 'call-list'}\n                        reserveCode={item.reserveCode}\n                        name={item.patient}\n                        serviceType={item.service}\n                        service={serviceName}\n                        reserveDate={moment(item.reserveDate).format('MM월 DD일 HH시mm분')}\n                        starting={item.call && item.call.status === '예약접수' ? item.shortStarting || '' : item.starting || ''}\n                        destination={item.destination}\n                        status={(item.call && item.call.status) || ''}\n                        onRow={() => {\n                            onRow(item);\n                        }}\n                    />\n                );\n            })}\n        </ListConatiner>\n    );\n};\n\nconst ReserveItem = ({ service, name, reserveDate, starting, destination, serviceType, status, onDetail, reserveCode, onRow }) => (\n    <ItemContainer>\n        <TitleSection>\n            <ItemColumn>\n                <ItemTitle>서비스 명</ItemTitle>\n                <ItemContents style={{ color: mainColor }}>{service}</ItemContents>\n            </ItemColumn>\n        </TitleSection>\n\n        <ContentSection>\n            <ItemColumn>\n                <ItemTitle>예약 상태</ItemTitle>\n                <ItemContents>{status}</ItemContents>\n            </ItemColumn>\n            <ItemColumn>\n                <ItemTitle>예약 코드</ItemTitle>\n                <ItemContents>{reserveCode}</ItemContents>\n            </ItemColumn>\n            <ItemColumn>\n                <ItemTitle>이용자 성함</ItemTitle>\n                <ItemContents>{name}</ItemContents>\n            </ItemColumn>\n            <ItemColumn>\n                <ItemTitle>병원 진료 예약 시간</ItemTitle>\n                <ItemContents>{reserveDate}</ItemContents>\n            </ItemColumn>\n            {serviceType === 'unemergency' && (\n                <ItemColumn>\n                    <ItemTitle>자택 주소</ItemTitle>\n                    <ItemContents>{starting}</ItemContents>\n                </ItemColumn>\n            )}\n            <ItemColumn>\n                <ItemTitle>병원 주소</ItemTitle>\n                <ItemContents>{destination}</ItemContents>\n            </ItemColumn>\n        </ContentSection>\n\n        <ItemColumn>\n            <DetailButton onClick={onRow}>\n                <span>상세정보 및 관리</span>\n            </DetailButton>\n        </ItemColumn>\n    </ItemContainer>\n);\n\nconst EmptyList = styled.p`\n    font-size: 20px;\n    letter-spacing: -1px;\n    color: rgba(0, 0, 0, 0.8);\n\n    margin-bottom: 16px;\n    position: relative;\n`;\n\nconst FullContainer = styled.div`\n    width: 100%;\n    min-height: 300px;\n`;\n\nconst Inner = styled.div`\n    max-width: 1024px;\n    margin: 0 auto;\n    padding-top: 40px;\n\n    @media (max-width: 1080px) {\n        padding-left: 16px;\n        padding-right: 16px;\n    }\n\n    @media (max-width: 768px) {\n        padding-top: 40px;\n    }\n`;\nconst TitleSection = styled.div``;\n\nconst ContentSection = styled.div`\n    flex: 1;\n\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: flex-start;\n\n    overflow-y: scroll;\n\n    -ms-overflow-style: none; /* IE and Edge */\n    scrollbar-width: none; /* Firefox */\n    &::-webkit-scrollbar {\n        display: none; /* Chrome, Safari, Opera*/\n    }\n`;\n\nconst ListConatiner = styled.div`\n    display: flex;\n    align-items: flex-start;\n    justify-content: flex-start;\n    flex-wrap: wrap;\n\n    > div:nth-child(3n) {\n        margin-right: 0px;\n    }\n\n    @media (max-width: 768px) {\n        > div:nth-child(3n) {\n            margin-right: 16px;\n        }\n\n        > div:nth-child(2n) {\n            margin-right: 0px;\n        }\n    }\n\n    @media (max-width: 480px) {\n        > div:nth-child(3n) {\n            margin-right: 0px;\n        }\n\n        flex-direction: column;\n        justify-content: center;\n    }\n`;\n\nconst ItemContainer = styled.div`\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: center;\n\n    width: 340px;\n    height: 410px;\n    overflow: scroll;\n\n    -ms-overflow-style: none; /* IE and Edge */\n    scrollbar-width: none; /* Firefox */\n    &::-webkit-scrollbar {\n        display: none; /* Chrome, Safari, Opera*/\n    }\n\n    padding: 20px;\n    margin-bottom: 16px;\n    margin-right: 16px;\n\n    border-radius: 4px;\n    box-shadow: 2px 2px 10px 3px rgba(0, 0, 0, 0.1);\n    background-color: #ffffff;\n\n    @media (max-width: 768px) {\n        margin-bottom: 16px;\n    }\n\n    @media (max-width: 480px) {\n        width: 100%;\n        max-width: initial;\n        margin-right: 0px;\n    }\n`;\n\nconst ItemTitle = styled.p`\n    color: #a7a7a7;\n    font-size: ${sizeHandler(12)};\n    font-weight: bold;\n    margin: 0px;\n    padding: 0px;\n\n    @media (max-width: 430px) {\n        font-size: ${sizeHandler(11)};\n    }\n`;\n\nconst ItemContents = styled.p`\n    font-size: ${sizeHandler(14)};\n    font-weight: bold;\n    color: #606060;\n    margin: 0px;\n    padding: 0px;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n\n    @media (max-width: 430px) {\n        font-size: ${sizeHandler(12)};\n        margin-bottom: 4px;\n    }\n`;\n\nconst ItemColumn = styled.div`\n    width: 100%;\n    margin-bottom: 6px;\n\n    @media (max-width: 768px) {\n        display: ${props => (props.hiddenMobile ? 'none' : 'block')};\n        width: 100%;\n    }\n`;\n\nconst DetailButton = styled.div`\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    width: 100%;\n    height: 44px;\n\n    border-radius: 4px;\n    border: 1px solid ${mainColor};\n    cursor: pointer;\n    transition: all 0.3s;\n    text-align: center;\n\n    span {\n        font-size: ${sizeHandler(14)};\n        font-weight: bold;\n        color: ${mainColor};\n        text-align: center;\n\n        @media (max-width: 430px) {\n            font-size: ${sizeHandler(12)};\n        }\n    }\n\n    &:hover {\n        background-color: ${mainColor};\n        span {\n            color: white;\n        }\n    }\n\n    @media (max-width: 768px) {\n        width: 100%;\n        height: 34px;\n        font-size: ${sizeHandler(12)};\n    }\n`;\n","import React from 'react';\nimport { Table, Input, Button, message, Modal, Select } from 'antd';\nimport axios from '../../../../Lib/axios';\n\n// components\nimport { MateCallStatusModal } from '../../../../Components/modal';\nimport { NewHandleReportModal } from '../../../../Components/newModal';\nimport { InputFilter, CalleList } from '../../../../Components/User/Mate/auth';\n\n// styled\nimport { GuideRowWrapper2, UserPhoto } from './mate.styled';\nimport {\n    GuideRowWrapper,\n    GuideDescriptionSection,\n    StudyButton,\n    GuideDescriptionSectionTitle,\n    GuideDescriptionSectionContent,\n    AlertMessage,\n    GuideContainer,\n} from './mate.styled';\n// utils\nimport moment from 'moment';\nimport { ASSIST, MATE, UNEMER } from '../../../../Lib/variables';\nimport { WithmateLabel, WithmateInput, WithmateSelect, DivisionLine } from '../../../../Components/Common/input';\nimport { NoReportModal } from '../../../../Components/newModal';\n\nclass Mate extends React.PureComponent {\n    state = {\n        active: 'list', // list, info, guide\n        reservedFilter: 'none', // none, reserved, matched, complete\n        modal: false,\n\n        onRowModal: false,\n        rowDetail: null,\n        handleReportModal: false,\n        report: '',\n        keyword: '',\n        callList: [],\n    };\n\n    componentDidMount = () => {\n        this.syncStep();\n        this.fetchList();\n    };\n\n    componentDidUpdate = (prevProps, prevState) => {\n        if (prevState.active !== this.state.active) {\n            this.props.history.push(`/user/mate/mypage/${this.state.active}`);\n        }\n    };\n\n    syncStep = () => {\n        const { params } = this.props.match;\n        const { active } = this.state;\n\n        if (params.tab && active !== params.tab) {\n            this.setState({ active: params.tab });\n        } else if (!params.tab) {\n            this.props.history.push(`/user/mate/mypage/list`);\n        }\n    };\n\n    fetchList = () => {\n        const { userType, id } = this.props.auth;\n        if (id && userType === MATE) {\n            axios.get('/v2/service/mate/call/list', { params: { mateId: id } }).then(resolve => {\n                const { data: callList } = resolve;\n                if (callList && Array.isArray(callList)) {\n                    this.setState({ callList }, () => {\n                        const noReports = callList.filter(d => d.call && !d.call.reportId && d.call.status === '서비스 종료').length;\n                        if (noReports > 0) {\n                            this.setState({\n                                noReportModal: true,\n                            });\n                        }\n                    });\n                }\n            });\n        }\n    };\n\n    updateBasicInfo = () => {\n        const { id, userType } = this.props.auth;\n        const { userInfo } = this.props.app;\n        const { newPhoto, name, contact } = userInfo;\n\n        if (!name || !contact) return message.info('필수정보인 이름과 연락처를 입력해주세요.');\n        if (name.length > 15) return message.info('이름이 너무 깁니다. 이름은 15자 이내로 설정해주세요.');\n\n        const info = { name, contact };\n        if (newPhoto) info.photo = newPhoto;\n\n        this.props.modify({ id, userType, info }).then(resolve => {\n            if (resolve && resolve.name) {\n                message.success('정보를 업데이트 하였습니다.');\n\n                localStorage.setItem('name', resolve.name);\n                localStorage.setItem('photo', resolve.photo);\n\n                this.props.editAuth({ type: 'photo', value: resolve.photo });\n                this.props.editAuth({ type: 'name', value: resolve.name });\n                this.props.editAuth({ type: 'contact', value: resolve.contact });\n                this.props.onEdit({ type: 'photo', value: resolve.photo });\n                this.props.onEdit({ type: 'newPhoto', value: '' });\n            }\n        });\n    };\n\n    modifyPassword = () => {\n        const { passwordForm, id, userType } = this.props.auth;\n        const { password, newPassword, reNewPassword } = passwordForm;\n\n        if (password === newPassword) return message.info('새 비밀번호는 기존 비밀번호와 달라야합니다.');\n        if (reNewPassword !== newPassword) return message.info('새 비밀번호를 확인해주세요.');\n\n        this.props.modifyPassword({ id, userType, password, newPassword }).then(resolve => {\n            if (resolve && resolve === 'wrong password') {\n                return message.error('비밀번호가 일치하지 않습니다.');\n            }\n\n            if (resolve && resolve === 'not exist') {\n                message.error('유효하지 않은 계정입니다. 다시 로그인해주세요.');\n                return this.props.history.push('/user/logout');\n            }\n\n            if (resolve && resolve === 'success') {\n                message.success('비밀번호를 변경하였습니다.');\n                this.props.editPassword({ type: 'clear', value: '' });\n            }\n        });\n    };\n\n    withdrawl = () => {\n        const { id, userType } = this.props.auth;\n        const { password } = this.state.temp;\n\n        if (!password) return message.info('비밀번호를 입력해주세요.');\n\n        this.props.withdrawlUser({ id, userType, password }).then(resolve => {\n            if (resolve && resolve === 'wrong password') {\n                return message.info('잘못된 비밀번호입니다.');\n            }\n\n            if (resolve && resolve === 'success') {\n                message.info('회원탈퇴를 완료하였습니다. 이용해주셔서 감사합니다.');\n                this.setState({ modal: false, temp: null }, () => {\n                    setTimeout(() => {\n                        this.props.history.push('/user/logout');\n                    }, 500);\n                });\n            }\n        });\n    };\n\n    tabHandler = type => {\n        this.setState({ active: type });\n    };\n\n    onNextProcess = async () => {\n        const { rowDetail } = this.state;\n\n        const {\n            _id,\n            callId,\n            service,\n            call: { status, reportId },\n            reserveDate,\n        } = rowDetail;\n\n        if (moment(reserveDate).startOf('day').valueOf() > moment().startOf('day').valueOf()) {\n            message.warning('진료 예약일 전에는 예약을 진행할 수 없습니다.');\n            return null;\n        }\n\n        if (!_id || !callId || !service) {\n            return message.error('해당 예약정보는 유효하지 않습니다. 새로고침 후 다시 시도해주세요.');\n        }\n\n        if (status && status === '예약접수') {\n            return message.warning('아직 고객님이 예약을 확정짓지 않아 진행이 불가능합니다.');\n        }\n\n        if (service === UNEMER) {\n            if (status === '예약완료') return this.unemergencyService().doReceipt();\n            else if (status === '접선') return this.unemergencyService().doStart();\n            else if (status === '병원 출발') return this.unemergencyService().doArrive();\n            else if (status === '병원 도착') return this.unemergencyService().doCare();\n            else if (status === '진료 시작') return this.unemergencyService().doCareDone();\n            else if (status === '진료 종료') return this.unemergencyService().doBackStart();\n            else if (status === '자택 출발') return this.unemergencyService().doComplete();\n            else if (status === '서비스 종료') {\n                if (reportId) return message.warning('이미 종료된 서비스입니다.');\n                else this.openReportForm();\n            }\n        }\n\n        if (service === ASSIST) {\n            if (status === '예약완료') return this.assistService().doReceipt();\n            else if (status === '접선') return this.assistService().doCare();\n            else if (status === '진료 시작') return this.assistService().doCareDone();\n            else if (status === '진료 종료') return this.assistService().doComplete();\n            else if (status === '서비스 종료') {\n                if (reportId) return message.warning('이미 종료된 서비스입니다.');\n                else this.openReportForm();\n            }\n        }\n    };\n\n    unemergencyService = () => {\n        const { id } = localStorage.getItem('id');\n        const { rowDetail } = this.state;\n        const { _id, callId } = rowDetail;\n\n        const doReceipt = async () => {\n            axios.put('/v2/service/receipt/mate/call', { reserveId: _id, callId }).then(resolve => {\n                const { data } = resolve;\n                if (!data) return message.error('죄송합니다. 요청에 실패하였습니다.');\n                if (data === 'check parameters') return message.warning('죄송합니다. 요청에 실패하였습니다.');\n                if (data === 'not yet') return message.warning('진료 예약일 전에는 예약을 진행할 수 없습니다.');\n                if (data === 'invalid call') return message.warning('잘못된 요청입니다. 새로고침 후 다시 시도해주세요.');\n                if (data === 'wrong request') return message.warning('잘못된 요청입니다.');\n                if (data === 'already done') return message.warning('이미 \"접선\" 처리 하였습니다.');\n                if (data === 'success') {\n                    message.success('접선 처리 완료');\n                    this.setState({ onRowModal: false });\n                    this.fetchList();\n                }\n            });\n        };\n\n        const doStart = async () => {\n            axios.put('/v2/service/start/mate/call', { reserveId: _id, callId }).then(resolve => {\n                const { data } = resolve;\n                if (!data) return message.error('죄송합니다. 요청에 실패하였습니다.');\n                if (data === 'check parameters') return message.warning('죄송합니다. 요청에 실패하였습니다.');\n                if (data === 'not yet') return message.warning('진료 예약일 전에는 예약을 진행할 수 없습니다.');\n                if (data === 'invalid call') return message.warning('잘못된 요청입니다. 새로고침 후 다시 시도해주세요.');\n                if (data === 'wrong request') return message.warning('잘못된 요청입니다.');\n                if (data === 'already done') return message.warning('이미 \"병원 출발\" 처리 하였습니다.');\n                if (data === 'success') {\n                    message.success('병원 출발 처리 완료');\n                    this.setState({ onRowModal: false });\n                    this.fetchList();\n                }\n            });\n        };\n\n        const doArrive = async () => {\n            axios.put('/v2/service/arrive/mate/call', { reserveId: _id, callId }).then(resolve => {\n                const { data } = resolve;\n                if (!data) return message.error('죄송합니다. 요청에 실패하였습니다.');\n                if (data === 'check parameters') return message.warning('죄송합니다. 요청에 실패하였습니다.');\n                if (data === 'not yet') return message.warning('진료 예약일 전에는 예약을 진행할 수 없습니다.');\n                if (data === 'invalid call') return message.warning('잘못된 요청입니다. 새로고침 후 다시 시도해주세요.');\n                if (data === 'wrong request') return message.warning('잘못된 요청입니다.');\n                if (data === 'already done') return message.warning('이미 \"병원 도착\" 처리 하였습니다.');\n                if (data === 'success') {\n                    message.success('병원 도착 처리 완료');\n                    this.setState({ onRowModal: false });\n                    this.fetchList();\n                }\n            });\n        };\n\n        const doCare = async () => {\n            axios.put('/v2/service/care/mate/call', { reserveId: _id, callId }).then(resolve => {\n                const { data } = resolve;\n                if (!data) return message.error('죄송합니다. 요청에 실패하였습니다.');\n                if (data === 'check parameters') return message.warning('죄송합니다. 요청에 실패하였습니다.');\n                if (data === 'not yet') return message.warning('진료 예약일 전에는 예약을 진행할 수 없습니다.');\n                if (data === 'invalid call') return message.warning('잘못된 요청입니다. 새로고침 후 다시 시도해주세요.');\n                if (data === 'wrong request') return message.warning('잘못된 요청입니다.');\n                if (data === 'already done') return message.warning('이미 \"진료 시작\" 처리 하였습니다.');\n                if (data === 'success') {\n                    message.success('진료 시작 처리 완료');\n                    this.setState({ onRowModal: false });\n                    this.fetchList();\n                }\n            });\n        };\n\n        const doCareDone = async () => {\n            axios.put('/v2/service/caredone/mate/call', { reserveId: _id, callId }).then(resolve => {\n                const { data } = resolve;\n                if (!data) return message.error('죄송합니다. 요청에 실패하였습니다.');\n                if (data === 'check parameters') return message.warning('죄송합니다. 요청에 실패하였습니다.');\n                if (data === 'not yet') return message.warning('진료 예약일 전에는 예약을 진행할 수 없습니다.');\n                if (data === 'invalid call') return message.warning('잘못된 요청입니다. 새로고침 후 다시 시도해주세요.');\n                if (data === 'wrong request') return message.warning('잘못된 요청입니다.');\n                if (data === 'already done') return message.warning('이미 \"진료 종료\" 처리 하였습니다.');\n                if (data === 'success') {\n                    message.success('진료 종료 처리 완료');\n                    this.setState({ onRowModal: false });\n                    this.fetchList();\n                }\n            });\n        };\n\n        const doBackStart = async () => {\n            axios\n                .put('/v2/service/goback/mate/call', { reserveId: _id, callId })\n                .then(resolve => {\n                    const { data } = resolve;\n                    if (!data) return message.error('죄송합니다. 요청에 실패하였습니다.');\n                    if (data === 'check parameters') return message.warning('죄송합니다. 요청에 실패하였습니다.');\n                    if (data === 'not yet') return message.warning('진료 예약일 전에는 예약을 진행할 수 없습니다.');\n                    if (data === 'invalid call') return message.warning('잘못된 요청입니다. 새로고침 후 다시 시도해주세요.');\n                    if (data === 'wrong request') return message.warning('잘못된 요청입니다.');\n                    if (data === 'already done') return message.warning('이미 \"자택 출발\" 처리 하였습니다.');\n                    if (data === 'success') {\n                        message.success('자택 출발 처리 완료');\n                        this.setState({ onRowModal: false });\n                        this.fetchList();\n                    }\n                })\n                .catch(err => {\n                    console.log(err);\n                });\n        };\n\n        const doComplete = async () => {\n            axios.put('/v2/service/complete/mate/call', { reserveId: _id, callId }).then(resolve => {\n                const { data } = resolve;\n                if (!data) return message.error('죄송합니다. 요청에 실패하였습니다.');\n                if (data === 'check parameters') return message.warning('죄송합니다. 요청에 실패하였습니다.');\n                if (data === 'not yet') return message.warning('진료 예약일 전에는 예약을 진행할 수 없습니다.');\n                if (data === 'invalid call') return message.warning('잘못된 요청입니다. 새로고침 후 다시 시도해주세요.');\n                if (data === 'wrong request') return message.warning('잘못된 요청입니다.');\n                if (data === 'already done') return message.warning('이미 \"서비스 종료\" 처리 하였습니다.');\n                if (data === 'success') {\n                    message.success('서비스 종료 처리 완료');\n                    this.setState({ onRowModal: false });\n                    this.fetchList();\n                }\n            });\n        };\n\n        return {\n            doReceipt,\n            doStart,\n            doArrive,\n            doCare,\n            doCareDone,\n            doBackStart,\n            doComplete,\n        };\n    };\n\n    assistService = () => {\n        const { id } = localStorage.getItem('id');\n        const { rowDetail } = this.state;\n        const { _id, callId } = rowDetail;\n\n        const doReceipt = async () => {\n            axios.put('/v2/service/receipt/normal/mate/call', { reserveId: _id, callId }).then(resolve => {\n                const { data } = resolve;\n                if (!data) return message.error('죄송합니다. 요청에 실패하였습니다.');\n                if (data === 'check parameters') return message.warning('죄송합니다. 요청에 실패하였습니다.');\n                if (data === 'not yet') return message.warning('진료 예약일 전에는 예약을 진행할 수 없습니다.');\n                if (data === 'invalid call') return message.warning('잘못된 요청입니다. 새로고침 후 다시 시도해주세요.');\n                if (data === 'wrong request') return message.warning('잘못된 요청입니다.');\n                if (data === 'already done') return message.warning('이미 \"접선\" 처리 하였습니다.');\n                if (data === 'success') {\n                    message.success('접선 처리 완료');\n                    this.setState({ onRowModal: false });\n                    this.fetchList();\n                }\n            });\n        };\n\n        const doCare = async () => {\n            axios.put('/v2/service/care/normal/mate/call', { reserveId: _id, callId }).then(resolve => {\n                const { data } = resolve;\n                if (!data) return message.error('죄송합니다. 요청에 실패하였습니다.');\n                if (data === 'check parameters') return message.warning('죄송합니다. 요청에 실패하였습니다.');\n                if (data === 'not yet') return message.warning('진료 예약일 전에는 예약을 진행할 수 없습니다.');\n                if (data === 'invalid call') return message.warning('잘못된 요청입니다. 새로고침 후 다시 시도해주세요.');\n                if (data === 'wrong request') return message.warning('잘못된 요청입니다.');\n                if (data === 'already done') return message.warning('이미 \"진료 시작\" 처리 하였습니다.');\n                if (data === 'success') {\n                    message.success('진료 시작 처리 완료');\n                    this.setState({ onRowModal: false });\n                    this.fetchList();\n                }\n            });\n        };\n\n        const doCareDone = async () => {\n            axios.put('/v2/service/caredone/normal/mate/call', { reserveId: _id, callId }).then(resolve => {\n                const { data } = resolve;\n                if (!data) return message.error('죄송합니다. 요청에 실패하였습니다.');\n                if (data === 'check parameters') return message.warning('죄송합니다. 요청에 실패하였습니다.');\n                if (data === 'not yet') return message.warning('진료 예약일 전에는 예약을 진행할 수 없습니다.');\n                if (data === 'invalid call') return message.warning('잘못된 요청입니다. 새로고침 후 다시 시도해주세요.');\n                if (data === 'wrong request') return message.warning('잘못된 요청입니다.');\n                if (data === 'already done') return message.warning('이미 \"진료 종료\" 처리 하였습니다.');\n                if (data === 'success') {\n                    message.success('진료 종료 처리 완료');\n                    this.setState({ onRowModal: false });\n                    this.fetchList();\n                }\n            });\n        };\n\n        const doComplete = async () => {\n            axios.put('/v2/service/complete/normal/mate/call', { reserveId: _id, callId }).then(resolve => {\n                const { data } = resolve;\n                if (!data) return message.error('죄송합니다. 요청에 실패하였습니다.');\n                if (data === 'check parameters') return message.warning('죄송합니다. 요청에 실패하였습니다.');\n                if (data === 'not yet') return message.warning('진료 예약일 전에는 예약을 진행할 수 없습니다.');\n                if (data === 'invalid call') return message.warning('잘못된 요청입니다. 새로고침 후 다시 시도해주세요.');\n                if (data === 'wrong request') return message.warning('잘못된 요청입니다.');\n                if (data === 'already done') return message.warning('이미 \"서비스 종료\" 처리 하였습니다.');\n                if (data === 'success') {\n                    message.success('서비스 종료 처리 완료');\n                    this.setState({ onRowModal: false });\n                    this.fetchList();\n                }\n            });\n        };\n\n        return { doReceipt, doCare, doCareDone, doComplete };\n    };\n\n    onAddReport = () => {\n        const { report } = this.state;\n        const { description, care, doctorComment } = report;\n\n        if (!description) message.warning('서비스 진행 중 특이사항을 작성해주세요.');\n        if (!care) message.warning('진료 및 치료 내용을 작성해주세요.');\n        if (!doctorComment) message.warning('의료 기관 및 의사 평가을 작성해주세요.');\n\n        axios\n            .post('/v2/review/add/report', { ...report, mateId: localStorage.getItem('id') })\n            .then(resolve => {\n                const { data } = resolve;\n                if (!data) return message.error('요청에 실패하였습니다. 잠시 후 다시 시도해주세요.');\n                if (data === 'check parameters') return message.warning('입력하지 않은 내용이 있는지 확인해주세요.');\n                if (data === 'already done') return message.warning('이미 리포트 등록을 완료하였습니다. 새로고침하여 확인해주세요.');\n                if (data === 'invalid call') return message.warning('유효하지 않은 수행이력입니다. 새로고침 후 다시 시도해주세요.');\n                if (data === 'unmatched mate') return message.warning('잘못된 시도입니다. 다른 메이트에게 배정된 예약입니다.');\n\n                message.success('사후리포트 등록 완료');\n                this.setState({ report: null, handleReportModal: false });\n                this.fetchList();\n            })\n            .catch(error => {\n                return message.error('요청에 실패하였습니다. 잠시 후 다시 시도해주세요.');\n            });\n    };\n\n    inputHandler = ({ type, value }) => {\n        this.setState(prevState => ({\n            report: {\n                ...prevState['report'],\n                [type]: value,\n            },\n        }));\n    };\n\n    openReportForm = () => {\n        const { rowDetail } = this.state;\n\n        this.setState({\n            onRowModal: false,\n            rowDetail: null,\n            handleReportModal: true,\n            report: {\n                description: '',\n                care: '',\n                medicine: '',\n                nextSchedule: '',\n                mateComment: '',\n                doctorComment: '',\n                callId: rowDetail.callId,\n            },\n        });\n    };\n\n    render() {\n        const { auth } = this.props;\n        const { active, reservedFilter, callList, keyword } = this.state;\n\n        const { password, newPassword, reNewPassword } = auth.passwordForm;\n        const { list, userInfo } = this.props.app;\n\n        const filteredList = keyword\n            ? callList.filter(reserve => {\n                  return (\n                      (reserve && reserve.reserveCode && reserve.reserveCode.toLowerCase().includes(keyword.toLowerCase())) ||\n                      (reserve && reserve.patient && reserve.patient.toLowerCase().includes(keyword.toLowerCase()))\n                  );\n              })\n            : callList;\n\n        return (\n            <div className='auth-container'>\n                <div className='navigation-container'>\n                    <div className='inner-container'>\n                        <div className='user-info-container'>\n                            <div className='default-info'>\n                                <div>{auth.photo ? <img src={auth.photo} alt='user-profile' /> : <span>no image</span>}</div>\n                                <p>\n                                    <span>{auth.name}님,</span>\n                                    <br />\n                                    <span>안녕하세요</span>\n                                </p>\n                            </div>\n                            <div className='reserve-info'>\n                                <div className='title'>\n                                    <p>\n                                        수행 통계{' '}\n                                        {/* <a href='https://www.notion.so/FAQ-cfe01db37c67472086b414a044ed6370' target='_blank' style={{ fontSize: '12px' }}>\n                                            (메이트 교육 자료 바로가기)\n                                        </a> */}\n                                    </p>\n                                </div>\n                                <div className='value-wrapper'>\n                                    <div className='value-block'>\n                                        <div className='title'>\n                                            <img src='/assets/images/unemergency-small.png' alt='small-icon' />\n                                            <span>병원 동행 Pro</span>\n                                        </div>\n                                        <div className='value'>\n                                            <p>\n                                                {callList && callList.length > 0\n                                                    ? callList.filter(m => m.service === UNEMER && m.call.status === '서비스 종료').length\n                                                    : '0'}\n                                                회 수행\n                                            </p>\n                                        </div>\n                                    </div>\n\n                                    <div className='value-block'>\n                                        <div className='title'>\n                                            <img src='/assets/images/withassist-small.png' alt='small-icon' />\n                                            <span>병원 동행 Basic</span>\n                                        </div>\n                                        <div className='value'>\n                                            <p>\n                                                {callList && callList.length > 0\n                                                    ? callList.filter(m => m.service !== UNEMER && m.call.status === '서비스 종료').length\n                                                    : '0'}\n                                                회 수행\n                                            </p>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n\n                        <div className='navigator'>\n                            <div className='nav-tab'>\n                                <span\n                                    onClick={() => {\n                                        this.tabHandler('list');\n                                    }}\n                                    className={`name ${active === 'list' ? 'active' : ''}`}\n                                >\n                                    예약 및 접수내역\n                                </span>\n                                <span className={`underline ${active === 'list' ? 'active' : ''}`}></span>\n                            </div>\n\n                            <div className='nav-tab'>\n                                <span\n                                    onClick={() => {\n                                        this.tabHandler('info');\n                                    }}\n                                    className={`name ${active === 'info' ? 'active' : ''}`}\n                                >\n                                    개인정보 관리\n                                </span>\n                                <span className={`underline ${active === 'info' ? 'active' : ''}`}></span>\n                            </div>\n\n                            <div className='nav-tab'>\n                                <span\n                                    onClick={() => {\n                                        this.tabHandler('guide');\n                                    }}\n                                    className={`name ${active === 'guide' ? 'active' : ''}`}\n                                >\n                                    메이트 온라인 학습\n                                </span>\n                                <span className={`underline ${active === 'guide' ? 'active' : ''}`}></span>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n\n                <div className='usage-info-container'>\n                    <div className='inner-container'>\n                        {active === 'list' && (\n                            <>\n                                <div className='filter-wrapper'>\n                                    <Filter\n                                        filter={reservedFilter}\n                                        value='none'\n                                        name='전체'\n                                        onClick={() => {\n                                            this.setState({ reservedFilter: 'none' });\n                                        }}\n                                    />\n                                    <Filter\n                                        filter={reservedFilter}\n                                        value='reserved'\n                                        name='예약접수'\n                                        onClick={() => {\n                                            this.setState({ reservedFilter: 'reserved' });\n                                        }}\n                                    />\n\n                                    <Filter\n                                        filter={reservedFilter}\n                                        value='matched'\n                                        name='예약완료 (진행중)'\n                                        onClick={() => {\n                                            this.setState({ reservedFilter: 'matched' });\n                                        }}\n                                    />\n                                    <Filter\n                                        filter={reservedFilter}\n                                        value='complete'\n                                        name='서비스 종료'\n                                        onClick={() => {\n                                            this.setState({ reservedFilter: 'complete' });\n                                        }}\n                                    />\n                                </div>\n\n                                <InputFilter\n                                    keyword={this.state.keyword}\n                                    keywordHandler={value => {\n                                        this.setState({ keyword: value });\n                                    }}\n                                />\n\n                                <CalleList\n                                    list={\n                                        reservedFilter === 'none'\n                                            ? filteredList\n                                            : reservedFilter === 'reserved'\n                                            ? filteredList.filter(p => p.call && p.call.status === '예약접수')\n                                            : reservedFilter === 'matched'\n                                            ? filteredList.filter(\n                                                  p =>\n                                                      p.call &&\n                                                      (p.call.status === '예약완료' ||\n                                                          p.call.status === '접선' ||\n                                                          p.call.status === '병원 출발' ||\n                                                          p.call.status === '병원 도착' ||\n                                                          p.call.status === '진료 시작' ||\n                                                          p.call.status === '진료 종료' ||\n                                                          p.call.status === '자택 출발'),\n                                              )\n                                            : reservedFilter === 'complete'\n                                            ? filteredList.filter(p => p.call && p.call.status === '서비스 종료')\n                                            : []\n                                    }\n                                    onRow={info => {\n                                        this.setState({ rowDetail: info, onRowModal: true });\n                                    }}\n                                />\n                            </>\n                        )}\n\n                        {active === 'info' && (\n                            <>\n                                <div className='user-info-wrapper'>\n                                    <div className='default-info wrapper'>\n                                        <div className='title-wrapper'>\n                                            <p>프로필 수정</p>\n                                        </div>\n                                        <div className='service' style={{ marginBottom: '40px' }}>\n                                            <WithmateLabel>프로필 사진</WithmateLabel>\n                                            <div>\n                                                <input\n                                                    id='mate-profile'\n                                                    hidden\n                                                    type='file'\n                                                    accept='image/x-png,image/gif,image/jpeg'\n                                                    onChange={ev => {\n                                                        this.props.onEdit({ type: 'newPhoto', value: ev.target.files[0] });\n                                                    }}\n                                                />\n                                                <UserPhoto\n                                                    onClick={e => {\n                                                        e.preventDefault();\n                                                        document.getElementById('mate-profile').click();\n                                                    }}\n                                                >\n                                                    <img src={userInfo.newPhoto ? URL.createObjectURL(userInfo.newPhoto) : userInfo.photo} alt='user-profile' />\n                                                </UserPhoto>\n                                            </div>\n                                        </div>\n\n                                        <div className='service'>\n                                            <WithmateLabel>이름</WithmateLabel>\n                                            <WithmateInput\n                                                placeholder='성함을 입력해주세요.'\n                                                value={userInfo.name}\n                                                onChange={ev => {\n                                                    this.props.onEdit({ type: 'name', value: ev.target.value });\n                                                }}\n                                            />\n                                        </div>\n\n                                        <div className='service'>\n                                            <WithmateLabel>연락처</WithmateLabel>\n                                            <WithmateInput\n                                                placeholder='연락처를 입력해주세요.'\n                                                value={userInfo.contact}\n                                                onChange={ev => {\n                                                    this.props.onEdit({ type: 'contact', value: ev.target.value });\n                                                }}\n                                            />\n                                        </div>\n\n                                        <div className='service'>\n                                            <WithmateLabel>\n                                                성별 <span style={{ fontSize: '11px' }}>(변경은 1:1 문의로 인증 후 가능)</span>\n                                            </WithmateLabel>\n                                            <WithmateInput placeholder='성별을 입력해주세요.' value={userInfo.sex} disabled />\n                                        </div>\n\n                                        <div className='service' style={{ marginBottom: '0px' }}>\n                                            <Button onClick={this.updateBasicInfo} style={{ backgroundColor: '#484848' }}>\n                                                수정된 프로필 저장\n                                            </Button>\n                                        </div>\n                                    </div>\n                                    <div className='privacy-info wrapper'>\n                                        <div className='title-wrapper'>\n                                            <p>비밀번호 변경</p>\n                                        </div>\n\n                                        <div className='service'>\n                                            <WithmateLabel>현재 비밀번호</WithmateLabel>\n                                            <div>\n                                                <WithmateInput\n                                                    type='password'\n                                                    placeholder='현재 비밀번호를 입력해주세요.'\n                                                    value={password}\n                                                    onChange={ev => {\n                                                        this.props.editPassword({ type: 'password', value: ev.target.value });\n                                                    }}\n                                                />\n                                            </div>\n                                        </div>\n\n                                        <div className='service'>\n                                            <WithmateLabel>새 비밀번호</WithmateLabel>\n                                            <div>\n                                                <WithmateInput\n                                                    type='password'\n                                                    placeholder='새 비밀번호를 입력해주세요.'\n                                                    value={newPassword}\n                                                    onChange={ev => {\n                                                        this.props.editPassword({ type: 'newPassword', value: ev.target.value });\n                                                    }}\n                                                />\n                                            </div>\n                                        </div>\n\n                                        <div className='service'>\n                                            <WithmateLabel>새 비밀번호 확인</WithmateLabel>\n                                            <div>\n                                                <WithmateInput\n                                                    type='password'\n                                                    placeholder='새 비밀번호를 확인해주세요.'\n                                                    value={reNewPassword}\n                                                    onChange={ev => {\n                                                        this.props.editPassword({ type: 'reNewPassword', value: ev.target.value });\n                                                    }}\n                                                />\n                                            </div>\n                                        </div>\n\n                                        <div className='service'>\n                                            <Button onClick={this.modifyPassword} style={{ backgroundColor: '#ffffff', color: '#606060', marginBottom: '0px' }}>\n                                                비밀번호 변경\n                                            </Button>\n                                        </div>\n                                    </div>\n                                    <div className='etc-info wrapper'>\n                                        <div className='title-wrapper'>\n                                            <p>기타</p>\n                                        </div>\n\n                                        <div className='service'>\n                                            <div className='flex-wrapper'>\n                                                <p\n                                                    onClick={() => {\n                                                        this.props.history.push('/policy/privacy');\n                                                    }}\n                                                >\n                                                    개인정보 처리방침 <b>{'>'}</b>\n                                                </p>\n                                                <p\n                                                    onClick={() => {\n                                                        this.props.history.push('/policy/terms');\n                                                    }}\n                                                >\n                                                    서비스 이용약관 <b>{'>'}</b>\n                                                </p>\n                                            </div>\n                                        </div>\n\n                                        <div className='service'>\n                                            <Button\n                                                style={{ backgroundColor: '#b7b7b7' }}\n                                                onClick={() => {\n                                                    this.props.history.push('/user/logout');\n                                                }}\n                                            >\n                                                로그아웃\n                                            </Button>\n                                        </div>\n\n                                        <div className='service' style={{ marginBottom: '0px' }}>\n                                            <Button\n                                                onClick={() => {\n                                                    this.setState({ modal: true, temp: { password: '' } });\n                                                }}\n                                                style={{ color: '#a7a7a7', height: '30px' }}\n                                            >\n                                                회원탈퇴\n                                            </Button>\n                                        </div>\n                                    </div>\n                                    <div className='clearfix' />\n                                </div>\n                            </>\n                        )}\n\n                        {active === 'guide' && (\n                            <>\n                                {userInfo.doProducts.includes('ITEM_mIagil546753836') ? (\n                                    <GuideContainer>\n                                        <GuideBlock2\n                                            title='메이트 교육영상 시청'\n                                            content='메이트 서비스를 활동하기 위한 온라인 영상 교육입니다. 서비스 수행 시 필요한 지침과 규칙을 준수하고 책임을 질 수 있는 서비스 건수를 매칭하기 위해 병원동행서비스의 개념과 수행 방법을 동영상 교육 자료를 통해 학습할 수 있습니다 '\n                                            link='/mateEducation/manual'\n                                        />\n                                    </GuideContainer>\n                                ) : null}\n                                <GuideContainer>\n                                    <GuideBlock\n                                        title='서비스 매뉴얼 보기'\n                                        content='메이트 서비스를 수행하기 위한 교육 자료입니다. 위드메이트가 제공하는 종류 및 타입별 병원 동행 서비스의 개념과 수행방법, 그리고 주의사항에 대해 학습할 수 있습니다.'\n                                        // link='https://s3.ap-northeast-2.amazonaws.com/withmate.photo/withmate_service_manual.pdf'\n                                        link='/service/manual'\n                                    />\n                                    <GuideBlock\n                                        title='플랫폼 이용 방법 보기'\n                                        content='위드메이트 온라인 플랫폼 이용 방법을 설명하는 교육 자료입니다. 플랫폼의 효율적인 사용 방법과 정상적인 병원 동행 서비스 제공을 위한 필수 기능들에 대해 학습할 수 있습니다.'\n                                        // link='https://s3.ap-northeast-2.amazonaws.com/withmate.photo/withmate_platform_manual.pdf'\n                                        link='/platform/manual'\n                                    />\n                                </GuideContainer>\n                                <StudyButton\n                                    onClick={() => {\n                                        window.open('https://www.notion.so/FAQ-cfe01db37c67472086b414a044ed6370', '_blank');\n                                    }}\n                                >\n                                    메이트 FAQ 바로가기\n                                    <img src='/assets/images/w_copy.png' />\n                                </StudyButton>\n\n                                <AlertMessage>\n                                    *해당 페이지에서 제공되는 모든 교육 자료를 학습하고 숙지한 뒤 서비스 수행이 가능합니다. 서비스 매뉴얼 및 플랫폼 이용 방법\n                                    미숙지로 인해 발생하는 피해에 대한\n                                    <br />\n                                    모든 책임은 메이트 본인에게 있습니다*\n                                </AlertMessage>\n                            </>\n                        )}\n                    </div>\n                </div>\n\n                {this.state.modal && (\n                    <Modal\n                        visible={this.state.modal}\n                        title='회원탈퇴'\n                        footer={null}\n                        onCancel={() => {\n                            this.setState({ modal: false, temp: null });\n                        }}\n                    >\n                        <WithmateInput\n                            type='password'\n                            placeholder='회원탈퇴를 위해 비밀번호를 입력해주세요.'\n                            value={this.state.temp.password}\n                            onChange={ev => {\n                                const value = ev.target.value;\n                                this.setState(prevState => ({ temp: { password: value } }));\n                            }}\n                        />\n                        <DivisionLine />\n                        <div style={{ display: 'flex' }}>\n                            <Button\n                                style={{ flex: 1, marginRight: '8px', height: '40px' }}\n                                type='danger'\n                                onClick={() => {\n                                    this.setState({ modal: false, temp: null });\n                                }}\n                            >\n                                취소\n                            </Button>\n                            <Button style={{ flex: 1, height: '40px' }} type='primary' onClick={this.withdrawl}>\n                                확인\n                            </Button>\n                        </div>\n                    </Modal>\n                )}\n\n                {this.state.noReportModal && (\n                    <NoReportModal\n                        visible={this.state.noReportModal}\n                        visibleHandler={() => {\n                            this.setState({ noReportModal: false, reservedFilter: 'complete' });\n                        }}\n                    />\n                )}\n\n                {this.state.onRowModal ? (\n                    <MateCallStatusModal\n                        visibleHandler={() => {\n                            this.setState({ onRowModal: false, rowDetail: null });\n                        }}\n                        info={this.state.rowDetail}\n                        onNext={this.onNextProcess}\n                    />\n                ) : null}\n\n                {this.state.handleReportModal ? (\n                    <NewHandleReportModal\n                        data={this.state.report}\n                        visible={this.state.handleReportModal}\n                        visibleHandler={() => {\n                            this.setState({ handleReportModal: false, report: null });\n                        }}\n                        onSave={this.onAddReport}\n                        inputHandler={this.inputHandler}\n                    />\n                ) : null}\n            </div>\n        );\n    }\n}\nexport default Mate;\n\nconst GuideBlock = ({ title, content, link }) => (\n    <GuideRowWrapper>\n        <GuideDescriptionSectionTitle\n            onClick={() => {\n                window.open(link, '_blank');\n            }}\n        >\n            {title} <img src={'/assets/images/w_right_arrow.png'} alt='링크' />\n        </GuideDescriptionSectionTitle>\n        <GuideDescriptionSection>\n            <GuideDescriptionSectionContent>{content}</GuideDescriptionSectionContent>\n        </GuideDescriptionSection>\n    </GuideRowWrapper>\n);\n\nconst GuideBlock2 = ({ title, content, link, history }) => (\n    <GuideRowWrapper2>\n        <GuideDescriptionSectionTitle\n            onClick={() => {\n                window.open(link, '_blank');\n            }}\n        >\n            {title} <img src={'/assets/images/w_right_arrow.png'} alt='링크' />\n        </GuideDescriptionSectionTitle>\n        <GuideDescriptionSection>\n            <GuideDescriptionSectionContent>{content}</GuideDescriptionSectionContent>\n        </GuideDescriptionSection>\n    </GuideRowWrapper2>\n);\n\nconst Filter = ({ filter, value, onClick, name }) => {\n    return (\n        <span className={`filter ${filter === value ? 'active' : ''}`} onClick={onClick}>\n            {name}\n        </span>\n    );\n};\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\n\nimport StyledMateContainer from './mate.styled';\nimport Mate from './mate';\nimport { MATE } from '../../../../Lib/variables';\n\nimport {\n    acceptCall,\n    cancelCall,\n    getUserInfo,\n    editUserForm,\n    modifyUserInfo,\n    completeCall,\n    // getMateReserveList,\n    // getContractList,\n} from '../../../../Reducer/Modules/app';\nimport { editAuth, editPasswordForm, modifyPassword, withdrawlUser } from '../../../../Reducer/Modules/auth';\n\nclass MatePage extends React.PureComponent {\n    componentDidMount = () => {\n        const mateId = localStorage.getItem('id');\n        const userType = localStorage.getItem('userType');\n\n        if (mateId) {\n            if (userType !== MATE) {\n                window.location.href = '/';\n            } else {\n                this.props.getUserInfo({ id: mateId, userType });\n            }\n        } else {\n            this.props.history.push('/user/login');\n        }\n    };\n\n    render() {\n        if (this.props.auth.userType !== MATE) {\n            return <div></div>;\n        }\n\n        return (\n            <StyledMateContainer>\n                <Mate {...this.props} />\n            </StyledMateContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({ app, auth }) => ({\n    app,\n    auth,\n});\nconst mapDispatchToProps = dispatch => ({\n    getUserInfo: ({ id, userType }) => dispatch(getUserInfo({ id, userType })),\n    onEdit: ({ type, value }) => dispatch(editUserForm({ type, value })),\n    modify: ({ id, userType, info }) => dispatch(modifyUserInfo({ id, userType, info })),\n    modifyPassword: ({ id, userType, password, newPassword }) => dispatch(modifyPassword({ id, userType, password, newPassword })),\n    editAuth: ({ type, value }) => dispatch(editAuth({ type, value })),\n    editPassword: ({ type, value }) => dispatch(editPasswordForm({ type, value })),\n\n    withdrawlUser: ({ id, userType, password }) => dispatch(withdrawlUser({ id, userType, password })),\n    cancelCall: ({ callId }) => dispatch(cancelCall({ callId })),\n    completeCall: ({ callId }) => dispatch(completeCall({ callId })),\n    acceptCall: ({ callId, mateId }) => dispatch(acceptCall({ callId, mateId })),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(MatePage);\n","import styled from 'styled-components';\nimport { sizeHandler, mainColor } from '../../../../theme';\n\nconst StyledNormalContainer = styled.div`\n    margin-top: 55px;\n\n    .auth-container {\n        // display: flex;\n        // flex-direction: column;\n        min-height: 100vh;\n        background-color: rgba(0, 0, 0, 0.02);\n    }\n\n    .navigation-container {\n        flex-shrink: 0;\n        border-bottom: 1px solid #e6e6e6;\n        background-color: white;\n\n        .inner-container {\n            padding: 0px;\n        }\n\n        .user-info-container {\n            display: flex;\n            align-items: center;\n            padding: 82px 30px;\n\n            .default-info {\n                flex: 1;\n                display: flex;\n                align-items: center;\n\n                div {\n                    width: 110px;\n                    height: 110px;\n                    border-radius: 55px;\n                    margin-right: 20px;\n                    background-color: #e6e6e6;\n                    position: relative;\n                    overflow: hidden;\n\n                    img {\n                        height: 110px;\n                        position: absolute;\n                        margin: auto;\n                        top: 0px;\n                        left: 0px;\n                        right: 0px;\n                        bottom: 0px;\n                    }\n\n                    span {\n                        display: inline-block;\n                        position: absolute;\n                        margin: auto;\n                        top: 0px;\n                        left: 0px;\n                        right: 0px;\n                        bottom: 0px;\n                        line-height: 110px;\n                        text-align: center;\n                        color: #ada5a5;\n                    }\n                }\n\n                p {\n                    flex: 1;\n                    font-size: ${sizeHandler(38)};\n                    font-weight: bold;\n                    letter-spacing: -0.6px;\n                    color: rgba(0, 0, 0, 0.8);\n                }\n            }\n\n            .reserve-info {\n                flex: 1;\n\n                .title {\n                    margin-bottom: 12px;\n\n                    p {\n                        font-size: ${sizeHandler(12)};\n                        font-weight: bold;\n                        color: rgba(145, 145, 145, 0.8);\n                    }\n                }\n\n                .value-wrapper {\n                    display: flex;\n                    align-items; center;\n\n                    .value-block {\n                        flex: 1;\n\n                        .title {\n                            img {\n                                height: 14px;\n                                margin-right: 4px;\n                            }\n    \n                            span {\n                                font-size: ${sizeHandler(14)};\n                                font-weight: bold;\n                                color: rgba(0, 0, 0, 0.8);\n                            }\n                        }\n    \n                        .value {\n                            font-size: ${sizeHandler(16)};\n                            font-weight: bold;\n                            color: #3bc1ff;\n                            text-overflow: ellipsis;\n                            overflow: hidden;\n                            white-space: nowrap;\n                        }\n                    }\n                }\n            }\n        }\n\n        .navigator {\n            display: flex;\n            align-items: center;\n            padding: 0px 30px;\n\n            .nav-tab {\n                margin-right: 32px;\n                padding-bottom: 12px;\n                position: relative;\n\n                .name {\n                    font-size: ${sizeHandler(14)};\n                    text-align: center;\n                    cursor: pointer;\n\n                    &.active { \n                        font-weight: bold;\n                        color: #3bc1ff;\n                    }\n                }\n\n                span.underline {\n                    background-color: #3bc1ff;\n                    position: absolute;\n                    bottom: 0px;\n                    left: 0px;\n\n                    &.active {\n                        width: 100%;\n                        height: 3px;\n                        display: inline-block;\n                    }\n                }\n            }\n        }\n\n        @media (max-width: 768px) {\n            .user-info-container {\n                flex-direction: column;\n                align-items: flex-start;\n\n                .reserve-info {\n                    margin-top: 40px;\n                }\n\n                .value-wrapper {\n                    flex-direction: column;\n\n                    .value-block:last-child {\n                        margin-top: 20px;\n                    }\n                }\n            }\n        }\n    }\n\n    .usage-info-container {\n        flex: 1;\n        // background-color: rgba(0, 0, 0, 0.02);\n\n        .inner-container {\n            height: 100%;\n            padding: 56px 30px;\n\n            @media (max-width: 768px) {\n                padding: 40px 16px;\n            }\n        }\n\n        .filter-wrapper {\n            margin-bottom: 20px;\n\n            .filter {\n                font-size: 14px;\n                font-weight: bold;\n                text-align: center;\n                color: rgba(0, 0, 0, 0.4);\n                margin-right: 32px;\n                cursor: pointer;\n            }\n\n            .filter.active {\n                color: ${mainColor};\n            }\n        }\n    }\n\n    .user-info-wrapper {\n        .wrapper {\n            padding: 36px;\n            background-color: white;\n            border-radius: 4px;\n            border: solid 1px #e6e6e6;\n            float: left;\n            width: calc(50% - 10px);\n            \n            @media (max-width: 768px) {\n                width: 100%;\n            }\n        }\n\n        .wrapper.etc-info {\n            float: right;\n        }\n        \n        .title-wrapper {\n            font-size: ${sizeHandler(20)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n            margin-bottom: 28px;\n        }\n\n        .service {\n            margin-bottom: 20px;\n\n            p.info {\n                font-size: ${sizeHandler(12)};\n                font-weight: normal;\n                letter-spacing: -0.15px;\n                color: rgba(0, 0, 0, 0.7);\n            }\n\n            input {\n                height: 36px;\n                display: inline-block;\n                width: 100%;\n            }\n\n            button {\n                width: 100%;\n                height: 48px;\n                border-radius: 2px;\n                color: white;\n            }\n\n            .ant-upload-drag-container {\n                .title {\n                    margin-top: 12px;\n                    font-size: ${sizeHandler(14)};\n                    letter-spacing: -0.3px;\n                    text-align: center;\n                    color: rgba(0, 0, 0, 0.8);\n                }\n        \n                .reco {\n                    font-size: ${sizeHandler(12)};\n                    letter-spacing: -0.3px;\n                    text-align: center;\n                    color: #a7a7a7;\n                }\n            }\n\n            .flex-wrapper {\n                display: flex;\n\n                p {\n                    flex: 1;\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    color: #606060;\n                    cursor: pointer;\n                }\n            }\n        }\n\n        .default-info {\n            margin-right: 20px;\n        }\n\n        .card-info {\n            margin-right: 20px;\n            margin-top: 20px;\n        }\n\n        .privacy-info {\n            margin-top: -352px;\n            @media (max-width: 768px) {\n                margin-top: 20px;\n            }\n        }\n\n        .etc-info {\n            margin-top: -290px;\n            @media (max-width: 768px) {\n                margin-top: 20px;\n            }\n        }\n    }\n\n    .user-profile-wrapper {\n        .wrapper {\n            padding: 36px;\n            background-color: white;\n            border-radius: 4px;\n            border: solid 1px #e6e6e6;\n            float: left;\n            width: calc(100% - 10px);\n            \n            @media (max-width: 768px) {\n                width: 100%;\n            }\n        }\n\n        .wrapper.etc-info {\n            float: right;\n        }\n        \n        .title-wrapper {\n            font-size: ${sizeHandler(20)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n            margin-bottom: 28px;\n        }\n\n        .service {\n            margin-bottom: 20px;\n\n            p.info {\n                font-size: ${sizeHandler(12)};\n                font-weight: normal;\n                letter-spacing: -0.15px;\n                color: rgba(0, 0, 0, 0.7);\n            }\n\n            input {\n                height: 36px;\n                display: inline-block;\n                width: 100%;\n            }\n\n            button {\n                width: 110px;\n                height: 48px;\n                border-radius: 2px;\n                color: white;\n            }\n\n            .ant-upload-drag-container {\n                .title {\n                    margin-top: 12px;\n                    font-size: ${sizeHandler(14)};\n                    letter-spacing: -0.3px;\n                    text-align: center;\n                    color: rgba(0, 0, 0, 0.8);\n                }\n        \n                .reco {\n                    font-size: ${sizeHandler(12)};\n                    letter-spacing: -0.3px;\n                    text-align: center;\n                    color: #a7a7a7;\n                }\n            }\n\n            .flex-wrapper {\n                display: flex;\n\n                p {\n                    flex: 1;\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    color: #606060;\n                    cursor: pointer;\n                }\n            }\n        }\n\n        .default-info {\n            margin-right: 20px;\n        }\n\n        .privacy-info {\n\n            @media (max-width: 768px) {\n                margin-top: 20px;\n            }\n        }\n\n        .etc-info {\n            margin-top: 20px;\n        }\n    }\n\n    input {\n        height: 36px;\n        display: inline-block;\n        width: 100%;\n    }\n\n    .ant-input-number-input-wrap {\n        height: 100%;\n\n        .ant-input-number-input {\n            height: 100%;\n        }\n\n        input {\n            height: 100%;\n        }\n    } \n`;\n\nexport const PointBoxRow = styled.div`\n    display: flex;\n    align-items: flex-start;\n    margin-bottom: 20px;\n\n    > div:last-child {\n        margin-right: 0px;\n    }\n\n    @media (max-width: 480px) {\n        margin-bottom: 0px;\n        flex-direction: column;\n    }\n`;\n\nexport const PointBox = styled.div`\n    width: calc(50% - 10px);\n    margin-right: 20px;\n\n    padding: 32px;\n    background-color: #ffffff;\n    border-radius: 4px;\n    box-shadow: 2px 4px 16px -4px rgba(0, 0, 0, 0.1);\n    border: solid 1px #f2f2f2;\n\n    @media (max-width: 480px) {\n        margin-right: 0px;\n        margin-bottom: 10px;\n\n        max-height: 320px;\n        padding: 16px;\n\n        width: 100%;\n    }\n`;\n\nexport const PointBox2 = styled.div`\n    width: 100%;\n    margin-right: 20px;\n\n    padding: 32px;\n    background-color: #ffffff;\n    border-radius: 4px;\n    box-shadow: 2px 4px 16px -4px rgba(0, 0, 0, 0.1);\n    border: solid 1px #f2f2f2;\n\n    @media (max-width: 480px) {\n        margin-right: 0px;\n        margin-bottom: 10px;\n\n        max-height: 320px;\n        padding: 16px;\n\n        width: 100%;\n    }\n`;\n\nexport const PointBox3 = styled.div`\n    width: 100%;\n    margin-right: 20px;\n\n    padding: 32px;\n    background-color: #ffffff;\n    border-radius: 4px;\n    box-shadow: 2px 4px 16px -4px rgba(0, 0, 0, 0.1);\n    border: solid 1px #f2f2f2;\n\n    @media (max-width: 480px) {\n        margin-right: 0px;\n        margin-bottom: 10px;\n\n        max-height: 370px;\n        padding: 16px;\n\n        width: 100%;\n    }\n`;\n\nexport const PointContent = styled.div`\n    max-height: 400px;\n    padding-right: 10px;\n    overflow-y: scroll;\n\n    @media (max-width: 480px) {\n        max-height: 320px;\n    }\n`;\n\nexport const PointBoxTitle = styled.h4`\n    margin-top: 0px;\n    margin-bottom: 10px;\n\n    font-size: 24px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.3;\n    letter-spacing: -0.5px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    @media (max-width: 480px) {\n        font-size: 18px;\n    }\n`;\n\nexport const PointTotal = styled.h5`\n    font-size: 32px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.5;\n    letter-spacing: -0.7px;\n    text-align: left;\n    color: #3bc1ff;\n\n    @media (max-width: 480px) {\n        font-size: 26px;\n    }\n`;\n\nexport const PointHistoryRow = styled.div`\n    padding-top: 16px;\n    padding-bottom: 16px;\n    border-bottom: 1px solid #e6e6e6;\n`;\n\nexport const PointHistoryNameRow = styled.div`\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n\n    margin-bottom: 4px;\n\n    > .title {\n        font-size: 18px;\n        font-weight: normal;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.65;\n        letter-spacing: -0.2px;\n        text-align: left;\n        color: rgba(0, 0, 0, 0.7);\n\n        @media (max-width: 480px) {\n            font-size: 12px;\n        }\n    }\n\n    > .value {\n        font-size: 18px;\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.26;\n        letter-spacing: -0.1px;\n        text-align: right;\n        color: ${props => (props.add ? '#3bc1ff' : '#ff5500')};\n\n        @media (max-width: 480px) {\n            font-size: 12px;\n        }\n    }\n`;\n\nexport const PointHistoryValueRow = styled(PointHistoryNameRow)`\n    margin-bottom: 0px;\n\n    > .title {\n        font-size: 13px;\n        font-weight: normal;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.75;\n        letter-spacing: -0.1px;\n        text-align: left;\n        color: #afb0b2;\n\n        @media (max-width: 480px) {\n            font-size: 10px;\n        }\n    }\n\n    > .value {\n        font-size: 13px;\n        font-weight: normal;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.54;\n        letter-spacing: -0.15px;\n        text-align: left;\n        color: #afb0b2;\n\n        @media (max-width: 480px) {\n            font-size: 10px;\n        }\n    }\n`;\n\nexport const NoHistory = styled.div`\n    padding: 12px;\n    text-align: center;\n\n    font-size: 20px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.65;\n    letter-spacing: -0.2px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n`;\n\nexport default StyledNormalContainer;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { Input, message, notification } from 'antd';\nimport axios from '../../../Lib/axios';\n\nimport { sizeHandler, mainColor } from '../../../theme';\nimport { colorParserByStatus } from '../../../Lib/utils';\nimport { ASSIST, UNEMER, HAPPYCARE } from '../../../Lib/variables';\n\nimport moment from 'moment';\nexport const InputFilter = ({ keyword, keywordHandler }) => (\n    <FilterWrapper>\n        <Input\n            value={keyword}\n            onChange={ev => {\n                keywordHandler(ev.target.value);\n            }}\n            placeholder='예약번호, 담당자 성함 등을 검색해보세요.'\n        />\n    </FilterWrapper>\n);\n\nconst FilterWrapper = styled.div`\n    margin-bottom: 12px;\n`;\n\nexport const ReserveList = ({ list, onDetailModal, onMateModal, onReport, onCancel }) => {\n    if (!list || list.length === 0) {\n        return (\n            <FullContainer>\n                <Inner>\n                    <EmptyList>이용내역이 없습니다.</EmptyList>\n                </Inner>\n            </FullContainer>\n        );\n    }\n\n    return (\n        <ListConatiner>\n            {list.map((item, index) => {\n                const serviceType =\n                    !item.productInfo || !item.productInfo.usePro || !item.productInfo.useBasic ? '' : item.service === 'unemergency' ? 'Pro' : 'Basic';\n                const serviceName = (item.productInfo && item.productInfo.name && item.service && item.productInfo.name + serviceType) || '-';\n\n                return (\n                    <ReserveItem\n                        key={item._id + index + 'service-list'}\n                        reserveCode={item.reserveCode}\n                        service={serviceName}\n                        serviceType={item.service}\n                        reserveDate={moment(item.reserveDate).format('MM월 DD일 dddd HH시mm분')}\n                        destination={item.destination}\n                        starting={item.starting}\n                        status={item.call.status}\n                        onReport={() => {\n                            onReport(item);\n                        }}\n                        onDetail={() => {\n                            onDetailModal(item._id);\n                        }}\n                        onMate={() => {\n                            if (item.call.status === '접수취소') {\n                                return message.info('접수취소된 서비스입니다.');\n                            }\n\n                            if (!item.call.mate || !item.call.mate) {\n                                return message.info('아직 담당자가 배정되지 않았습니다.');\n                            }\n\n                            onMateModal({\n                                ...item.call.mate,\n                                service: item.service,\n                                status: item.call.status,\n                                callId: item.call._id,\n                                reserveId: item._id,\n                                mateId: item.call.mateId,\n                            });\n                        }}\n                        onCancel={() => {\n                            const confirmCancel = window.confirm('예약을 취소하시겠습니까?');\n                            if (confirmCancel) {\n                                axios\n                                    .put('/v2/service/cancel/reserve/by/user', {\n                                        reserveId: item._id,\n                                        callId: item.callId,\n                                    })\n                                    .then(resolve => {\n                                        const { data } = resolve;\n                                        if (!data) return message.error('요청 실패');\n                                        else if (data === 'wrong request') return message.warning('잘못된 요청입니다.');\n                                        else if (data === 'already cancel') return message.warning('접수 취소된 요청입니다.');\n                                        else if (data === 'already done') return message.warning('서비스 종료된 요청입니다.');\n                                        else if (data === 'success') {\n                                            notification.success({\n                                                message: '예약 취소',\n                                                description: '예약 취소가 완료 되었습니다.',\n                                            });\n                                            // setTimeout(() => {\n                                            //     window.location.reload();\n                                            // }, 3000);\n                                            return null;\n                                        }\n                                    });\n                            }\n                        }}\n                    />\n                );\n            })}\n        </ListConatiner>\n    );\n};\n\nconst ReserveItem = ({ reserveCode, service, serviceType, reserveDate, destination, starting, status, onReport, onDetail, onMate, onCancel }) => (\n    <ItemContainer>\n        <TitleSection>\n            <ItemColumn>\n                <ItemTitle>서비스 명</ItemTitle>\n                <ItemContents style={{ color: mainColor }}>{service}</ItemContents>\n            </ItemColumn>\n        </TitleSection>\n\n        <ContentSection>\n            <ItemColumn>\n                <ItemTitle>예약 번호</ItemTitle>\n                <ItemContents>{reserveCode}</ItemContents>\n            </ItemColumn>\n            <ItemColumn>\n                <ItemTitle>진행 상황</ItemTitle>\n                <ItemContents style={{ color: colorParserByStatus(status) }}>{status}</ItemContents>\n            </ItemColumn>\n            <ItemColumn>\n                <ItemTitle>예약 날짜</ItemTitle>\n                <ItemContents>{reserveDate}</ItemContents>\n            </ItemColumn>\n            {serviceType === 'unemergency' && (\n                <ItemColumn>\n                    <ItemTitle>자택 주소</ItemTitle>\n                    <ItemContents>{starting}</ItemContents>\n                </ItemColumn>\n            )}\n            <ItemColumn>\n                <ItemTitle>병원 위치</ItemTitle>\n                <ItemContents>{destination}</ItemContents>\n            </ItemColumn>\n        </ContentSection>\n        <ItemColumn>\n            <DetailButton\n                onClick={() => {\n                    if (status === '서비스 종료') {\n                        onReport();\n                    } else {\n                        onMate();\n                    }\n                }}\n            >\n                <span>{status === '서비스 종료' ? '서비스 리포트' : '담당자 확인'}</span>\n            </DetailButton>\n        </ItemColumn>\n        <ItemColumn>\n            {status === '접수취소' ? null : (\n                <ReserveButton\n                    onClick={() => {\n                        if (status === '서비스 종료') {\n                            return null;\n                        } else {\n                            onCancel();\n                        }\n                    }}\n                >\n                    <span>예약 취소</span>\n                </ReserveButton>\n            )}\n        </ItemColumn>\n        <ItemColumn>\n            <ReserveButton\n                onClick={() => {\n                    onDetail();\n                }}\n            >\n                <span>예약 확인</span>\n            </ReserveButton>\n        </ItemColumn>\n    </ItemContainer>\n);\nconst TitleSection = styled.div``;\n\nconst EmptyList = styled.p`\n    font-size: 20px;\n    letter-spacing: -1px;\n    color: rgba(0, 0, 0, 0.8);\n\n    margin-bottom: 16px;\n    position: relative;\n    text-align: center;\n`;\n\nconst FullContainer = styled.div`\n    width: 100%;\n    min-height: 300px;\n`;\n\nconst Inner = styled.div`\n    max-width: 1024px;\n    margin: 0 auto;\n    padding-top: 40px;\n\n    @media (max-width: 1080px) {\n        padding-left: 16px;\n        padding-right: 16px;\n    }\n\n    @media (max-width: 768px) {\n        padding-top: 40px;\n    }\n`;\nconst ContentSection = styled.div`\n    flex: 1;\n\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: flex-start;\n\n    overflow-y: scroll;\n\n    -ms-overflow-style: none; /* IE and Edge */\n    scrollbar-width: none; /* Firefox */\n    &::-webkit-scrollbar {\n        display: none; /* Chrome, Safari, Opera*/\n    }\n`;\n\nconst ListConatiner = styled.div`\n    display: flex;\n    align-items: flex-start;\n    justify-content: flex-start;\n    flex-wrap: wrap;\n\n    > div:nth-child(3n) {\n        margin-right: 0px;\n    }\n\n    @media (max-width: 768px) {\n        > div:nth-child(3n) {\n            margin-right: 16px;\n        }\n\n        > div:nth-child(2n) {\n            margin-right: 0px;\n        }\n    }\n\n    @media (max-width: 480px) {\n        > div:nth-child(3n) {\n            margin-right: 0px;\n        }\n\n        flex-direction: column;\n        justify-content: center;\n    }\n`;\n\nconst ItemContainer = styled.div`\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: center;\n\n    width: 340px;\n    height: 430px;\n    overflow: scroll;\n\n    -ms-overflow-style: none; /* IE and Edge */\n    scrollbar-width: none; /* Firefox */\n    &::-webkit-scrollbar {\n        display: none; /* Chrome, Safari, Opera*/\n    }\n\n    padding: 20px;\n    margin-bottom: 16px;\n    margin-right: 16px;\n\n    border-radius: 4px;\n    box-shadow: 2px 2px 10px 3px rgba(0, 0, 0, 0.1);\n    background-color: #ffffff;\n\n    @media (max-width: 768px) {\n        margin-bottom: 16px;\n    }\n\n    @media (max-width: 480px) {\n        width: 100%;\n        max-width: initial;\n        margin-right: 0px;\n    }\n`;\n\nconst ItemTitle = styled.p`\n    color: #a7a7a7;\n    font-size: ${sizeHandler(12)};\n    font-weight: bold;\n    margin: 0px;\n    padding: 0px;\n\n    @media (max-width: 430px) {\n        font-size: ${sizeHandler(11)};\n    }\n`;\nconst ItemContents = styled.p`\n    font-size: ${sizeHandler(14)};\n    font-weight: bold;\n    color: #606060;\n    margin: 0px;\n    padding: 0px;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n\n    @media (max-width: 430px) {\n        font-size: ${sizeHandler(12)};\n        margin-bottom: 4px;\n    }\n`;\n\nconst ItemColumn = styled.div`\n    width: 100%;\n    margin-bottom: 6px;\n\n    @media (max-width: 768px) {\n        display: ${props => (props.hiddenMobile ? 'none' : 'block')};\n        width: 100%;\n    }\n`;\n\nconst DetailButton = styled.div`\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    width: 100%;\n    height: 44px;\n\n    border-radius: 4px;\n    border: 1px solid ${mainColor};\n    cursor: pointer;\n    transition: all 0.3s;\n    text-align: center;\n\n    span {\n        font-size: ${sizeHandler(14)};\n        font-weight: bold;\n        color: ${mainColor};\n        text-align: center;\n\n        @media (max-width: 430px) {\n            font-size: ${sizeHandler(12)};\n        }\n    }\n\n    &:hover {\n        background-color: ${mainColor};\n        span {\n            color: white;\n        }\n    }\n\n    @media (max-width: 768px) {\n        width: 100%;\n        height: 34px;\n        font-size: ${sizeHandler(12)};\n    }\n`;\n\nconst ReserveButton = styled(DetailButton)`\n    border: 1px solid #e9e9e9;\n    color: #565656;\n\n    > span {\n        color: #565656;\n    }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport { sizeHandler, mainColor } from '../../../theme';\n\nexport const UserStatistics = ({ auth, pro, basic }) => (\n    <UserContainer>\n        <div className='default-info'>\n            <p>\n                {auth.name},\n                <br />\n                안녕하세요\n            </p>\n        </div>\n\n        <div className='reserve-info'>\n            <div className='title'>\n                <p>이용 통계</p>\n            </div>\n            <div className='value-wrapper'>\n                <div className='value-block'>\n                    <div className='title'>\n                        <img src='/assets/images/unemergency-small.png' alt='small-icon' />\n                        <span>병원 동행 Pro</span>\n                    </div>\n                    <div className='value'>\n                        <p>{pro}회 이용</p>\n                    </div>\n                </div>\n\n                <div className='value-block'>\n                    <div className='title'>\n                        <img src='/assets/images/withassist-small.png' alt='small-icon' />\n                        <span>병원 동행 Basic</span>\n                    </div>\n                    <div className='value'>\n                        <p>{basic}회 이용</p>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </UserContainer>\n);\n\nconst UserContainer = styled.div`\n    display: flex;\n    align-items: center;\n    padding: 82px 30px;\n\n    .default-info {\n        flex: 1;\n        display: flex;\n        align-items: center;\n\n        div {\n            width: 110px;\n            height: 110px;\n            border-radius: 55px;\n            margin-right: 20px;\n            background-color: #e6e6e6;\n            position: relative;\n            overflow: hidden;\n\n            img {\n                height: 110px;\n                position: absolute;\n                margin: auto;\n                top: 0px;\n                left: 0px;\n                right: 0px;\n                bottom: 0px;\n            }\n\n            span {\n                display: inline-block;\n                position: absolute;\n                margin: auto;\n                top: 0px;\n                left: 0px;\n                right: 0px;\n                bottom: 0px;\n                line-height: 110px;\n                text-align: center;\n                color: #ada5a5;\n            }\n        }\n\n        p {\n            flex: 1;\n            font-size: ${sizeHandler(38)};\n            font-weight: bold;\n            letter-spacing: -0.6px;\n            color: rgba(0, 0, 0, 0.8);\n        }\n    }\n\n    .reserve-info {\n        flex: 1;\n\n        .title {\n            margin-bottom: 12px;\n\n            p {\n                font-size: ${sizeHandler(12)};\n                font-weight: bold;\n                color: rgba(145, 145, 145, 0.8);\n            }\n        }\n\n        .value-wrapper {\n            display: flex;\n            align-items; center;\n\n            .value-block {\n                flex: 1;\n\n                .title {\n                    img {\n                        height: 14px;\n                        margin-right: 4px;\n                    }\n\n                    span {\n                        font-size: ${sizeHandler(14)};\n                        font-weight: bold;\n                        color: rgba(0, 0, 0, 0.8);\n                    }\n                }\n\n                .value {\n                    font-size: ${sizeHandler(16)};\n                    font-weight: bold;\n                    color: #3bc1ff;\n                    text-overflow: ellipsis;\n                    overflow: hidden;\n                    white-space: nowrap;\n                }\n            }\n        }\n    }\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n        align-items: flex-start;\n\n        .reserve-info {\n            margin-top: 40px;\n        }\n\n        .value-wrapper {\n            flex-direction: column;\n\n            .value-block:last-child {\n                margin-top: 20px;\n            }\n        }\n    }\n        \n`;\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport { sizeHandler, mainColor } from '../../../theme';\n\nexport const UserNavigation = ({ active, tabHandler, onPatientModal }) => (\n    <NaviWrapper>\n        <div className='nav-tab'>\n            <span\n                onClick={() => {\n                    tabHandler('list');\n                }}\n                className={`name ${active === 'list' ? 'active' : ''}`}\n            >\n                예약내역\n            </span>\n            <span className={`underline ${active === 'list' ? 'active' : ''}`}></span>\n        </div>\n\n        <div className='nav-tab'>\n            <span\n                onClick={() => {\n                    tabHandler('info');\n                }}\n                className={`name ${active === 'info' ? 'active' : ''}`}\n            >\n                개인정보 관리\n            </span>\n            <span className={`underline ${active === 'info' ? 'active' : ''}`}></span>\n        </div>\n\n        <div className='nav-tab'>\n            <span\n                onClick={() => {\n                    tabHandler('point');\n                }}\n                className={`name ${active === 'point' ? 'active' : ''}`}\n            >\n                내 포인트\n            </span>\n            <span className={`underline ${active === 'point' ? 'active' : ''}`}></span>\n        </div>\n\n        <div className='nav-tab'>\n            <span\n                onClick={() => {\n                    // onPatientModal();\n                    tabHandler('profile');\n                }}\n                className={`name ${active === 'profile' ? 'active' : ''}`}\n            >\n                환자 프로필 관리\n            </span>\n            <span className={`underline ${active === 'profile' ? 'active' : ''}`}></span>\n        </div>\n    </NaviWrapper>\n);\n\nconst NaviWrapper = styled.div`\n    display: flex;\n    align-items: center;\n    padding: 0px 30px;\n\n    .nav-tab {\n        margin-right: 32px;\n        padding-bottom: 12px;\n        position: relative;\n\n        .name {\n            font-size: ${sizeHandler(14)};\n            text-align: center;\n            cursor: pointer;\n\n            &.active {\n                font-weight: bold;\n                color: #3bc1ff;\n            }\n        }\n\n        span.underline {\n            background-color: #3bc1ff;\n            position: absolute;\n            bottom: 0px;\n            left: 0px;\n\n            &.active {\n                width: 100%;\n                height: 3px;\n                display: inline-block;\n            }\n        }\n    }\n`;\n","import styled from 'styled-components';\nimport { mainColor, sizeHandler } from '../../../../theme';\n\nconst ProfileStyledContainer = styled.div`\n\n    @media (max-width: 480px) {\n        min-height: initial;\n        height: 100%;\n        padding-bottom: 0px;\n        padding-top: 5px;\n    }\n\n    .inner-container {\n        padding-bottom: 0px;\n        padding-top: 0px;\n\n        @media (max-width: 480px) {\n            padding: 0px;\n        }\n\n        .profile-form {\n\n            .title-wrapper {\n                display: flex;\n                justify-content: flex-start;\n                margin-bottom: 16px;\n\n                p {\n                    flex: 1;\n                    font-size: ${sizeHandler(32)};\n                    font-weight: bold;\n                    letter-spacing: -0.7px;\n                    line-height: 48px;\n                    color: rgba(0, 0, 0, 0.7);\n                    margin: 0px;\n                    padding: 0px;\n                }\n\n                span {\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    text-align: right;\n                    color: ${mainColor};\n                }\n            }\n\n            .form {\n                label {\n                    font-size: ${sizeHandler(12)};\n                    letter-spacing: -0.15px;\n                    line-height: 20px;\n                    color: rgba(0, 0, 0, 0.7);\n                    margin-bottom: 4px;\n                }\n\n                input {\n                    height: 44px;\n                    border: solid 1px #e6e6e6;\n                    padding: 10px;\n\n                    &.ant-input {\n                        font-size: 16px;\n                        line-height: 28px;\n                        letter-spacing: -0.2px;\n                        color: rgba(0, 0, 0, 0.7);\n\n                        &::placeholder {\n                            font-size: 14px;\n                        }\n                    }\n                }\n\n                .type-button-wrapper {\n                    width: 100%;\n                    height: 48px;\n\n                    background-color: white;\n                    border: 1px solid #e6e6e6;\n                    border-radius: 4px;\n\n                    display: flex;\n                    align-items: center;\n\n                    > .type-button {\n                        width: 50%;\n                        height: 100%;\n                        line-height: 48px;\n\n                        text-align: center;\n                        cursor: pointer;\n\n                        font-size: 16px;\n                        letter-spacing: -0.2px;\n                        color: rgba(0, 0, 0, 0.2);\n                    }\n\n                    > .type-button.active {\n                        background: rgba(0, 0, 0, 0.7);\n                        border-radius: 4px;\n                        color: #f9f9f9;\n                    }\n                }\n\n                button {\n                    width: 100%;\n                    height: 46px;\n                    margin-top: 4px;\n                    margin-bottom: 16px;\n\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    letter-spacing: -0.2px;\n                    text-align: center;\n                    color: #ffffff;\n                }\n\n                .link-wrapper {\n                    display: flex;\n                    justify-content: center;\n                    margin-bottom: 8px;\n                    .text {\n                        font-size: ${sizeHandler(14)};\n                        letter-spacing: -0.3px;\n                        text-align: center;\n                        color: rgba(0, 0, 0, 0.7);\n                        line-height: 21px;\n                    }\n\n                    .link {\n                        cursor: pointer;\n                        font-size: ${sizeHandler(14)};\n                        font-weight: bold;\n                        letter-spacing: -0.3px;\n                        text-align: center;\n                        color: ${mainColor};\n\n                        margin-left: 8px;\n                    }\n                }\n            }\n\n            .form-user-type {\n                height: 36px;\n                margin-bottom: 20px;\n                border-radius: 4px;\n                border: 1px solid #e6e6e6;\n                display: flex;\n                align-items: center;\n                overflow: hidden;\n\n                .type {\n                    flex: 1;\n                    height: 100%;\n                    line-height: 36px;\n                    background-color: #ffffff;\n                    cursor: pointer;\n\n                    &:first-child {\n                        border-right: 1px solid #e6e6e6;\n                    }\n\n                    p {\n                        font-size: ${sizeHandler(12)};\n                        font-weight: bold;\n                        text-align: center;\n                        color: #606060;\n                    }\n\n                    &.active {\n                        background-color: #606060;\n\n                        p {\n                            color: #ffffff;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    .ant-upload-drag-container {\n        .title {\n            margin-top: 12px;\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            text-align: center;\n            color: rgba(0, 0, 0, 0.8);\n        }\n\n        .reco {\n            font-size: ${sizeHandler(12)};\n            letter-spacing: -0.3px;\n            text-align: center;\n            color: #a7a7a7;\n        }\n    }\n`;\n\nexport default ProfileStyledContainer;","import styled from 'styled-components';\n\nconst StyledContainer = styled.div``;\n\nexport default StyledContainer;\n\nexport const Container = styled.div`\n    padding-top: 55px;\n`;\n\nexport const GuideNavContainer = styled.div`\n    width: 100%;\n    background-color: #ffffff;\n\n    border-bottom: 4px solid #f2f2f2;\n`;\n\nexport const InnerContainer = styled.div`\n    width: 100%;\n\n    max-width: 1120px;\n    margin: 0 auto;\n\n    // @media (max-width: 1120px) {\n    //     padding-left: 32px;\n    //     padding-right: 32px;\n    // }\n\n    @media (max-width: 768px) {\n        padding-left: 20px;\n        padding-right: 20px;\n    }\n`;\n\nexport const GuideNavWrapper = styled.div`\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n\n    padding-top: 16px;\n    padding-bottom: 16px;\n\n    @media (max-width: 768px) {\n        overflow-x: scroll;\n    }\n`;\n\nexport const NavTab = styled.div`\n    > a {\n        cursor: pointer;\n        font-size: 22px;\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.42;\n        letter-spacing: -0.5px;\n        text-align: left;\n\n        white-space: nowrap;\n\n        color: ${props => (props.active ? '#3BC1FF' : 'rgba(0,0,0,0.6)')};\n\n        display: inline-block;\n    }\n\n    @media (max-width: 768px) {\n        margin-right: 40px;\n\n        > a {\n            font-size: 16px;\n        }\n    }\n`;\n\nexport const GuideConceptContainer = styled.div`\n    margin-top: 102px;\n`;\n\nexport const GuideConceptTitle = styled.p`\n    font-size: 24px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.3;\n    letter-spacing: -0.5px;\n    text-align: center;\n    color: rgba(0, 0, 0, 0.8);\n\n    margin-bottom: 50px;\n`;\n\nexport const GuideConceptImageWrapper = styled.div`\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    width: 100%;\n\n    margin-bottom: 40px;\n`;\n\nexport const GuideConceptImage = styled.img`\n    height: 200px;\n    object-fit: contain;\n\n    @media (max-width: 768px) {\n        display: none;\n    }\n`;\n\nexport const GuideConceptImageMobile = styled.img`\n    display: none;\n\n    height: 300px;\n    object-fit: contain;\n\n    @media (max-width: 768px) {\n        display: block;\n    }\n`;\n\nexport const GuideConceptTextWrapper = styled.div`\n    display: flex;\n    align-items: flex-start;\n    justify-content: center;\n\n    margin-bottom: 122px;\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n    }\n`;\n\nexport const GuideConceptTextBlock = styled.div`\n    &:first-child {\n        margin-right: 20px;\n\n        @media (max-width: 768px) {\n            margin-right: 0px;\n\n            margin-bottom: 16px;\n        }\n    }\n\n    font-size: 18px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.67;\n    letter-spacing: -0.2px;\n    text-align: left;\n    word-break: keep-all;\n\n    letter-spacing: -0.3px;\n    color: rgba(0, 0, 0, 0.7);\n\n    @media (max-width: 768px) {\n        font-size: 16px;\n        font-weight: normal;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.75;\n        letter-spacing: -0.2px;\n        text-align: left;\n    }\n\n    > span {\n        font-weight: bold;\n    }\n`;\n\nexport const MobileBr = styled.br`\n    display: none;\n\n    @media (max-width: 768px) {\n        display: block;\n    }\n\n    @media (max-width: 320px) {\n        display: none;\n    }\n`;\n\nexport const DesktopBr = styled.br`\n    display: block;\n\n    @media (max-width: 768px) {\n        display: none;\n    }\n`;\n\nexport const MeritContainer = styled.div`\n    background-color: #ffffff;\n\n    padding-top: 100px;\n    padding-bottom: 80px;\n`;\n\nexport const MeritHeaderWrapper = styled.div`\n    width: 100%;\n    padding-bottom: 10px;\n    border-bottom: 2px solid #f2f2f2;\n\n    div.wrap {\n        display: flex;\n        align-items: flex-end;\n        justify-content: flex-start;\n    }\n\n    img {\n        width: 72px;\n        height: 72px;\n        object-fit: contain;\n\n        margin-right: 10px;\n    }\n\n    h3 {\n        font-size: 24px;\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.3;\n        letter-spacing: -0.5px;\n        text-align: left;\n        color: rgba(0, 0, 0, 0.7);\n        margin-bottom: 0px;\n    }\n`;\n\nexport const MeritCardList = styled.div`\n    display: flex;\n    flex-wrap: wrap;\n\n    padding-top: 64px;\n`;\n\nexport const MeritCardWrapper = styled.div`\n    height: 260px;\n    width: 33.333%;\n\n    @media (max-width: 768px) {\n        width: 100%;\n        height: auto;\n        margin-bottom: 24px;\n    }\n`;\n\nexport const MeritCardNumber = styled.p`\n    font-size: 14px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.43;\n    letter-spacing: normal;\n    text-align: left;\n    color: #afb0b2;\n    margin-bottom: 16px;\n`;\n\nexport const MeritCardTitleRow = styled.div`\n    display: flex;\n    align-items: center;\n\n    > img {\n        width: 20px;\n        height: 20px;\n        object-fit: contain;\n        margin-right: 10px;\n    }\n\n    > span {\n        font-size: 20px;\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.54;\n        letter-spacing: -0.1px;\n        text-align: left;\n        color: rgba(0, 0, 0, 0.7);\n    }\n`;\n\nexport const MeritCardDesc = styled.div`\n    font-size: 18px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.65;\n    letter-spacing: -0.2px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    > span {\n        font-weight: bold;\n    }\n\n    @media (max-width: 768px) {\n        font-size: 15px;\n    }\n`;\n\nexport const GuideDetailContainer = styled.div`\n    background-color: #f9f9f9;\n\n    padding-top: 56px;\n    padding-bottom: 100px;\n`;\n\nexport const GuideDetailServiceCardWrapper = styled.div`\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n    }\n`;\n\nexport const GuideDetailServiceCard = styled.div`\n    width: 360px;\n    padding: 34px 32px;\n\n    background: #ffffff;\n    box-shadow: 2px 4px 16px -4px rgba(0, 0, 0, 0.1);\n    border: 1px solid rgba(0, 0, 0, 0.1);\n    border-radius: 4px;\n\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n\n    @media (max-width: 768px) {\n        margin-bottom: 24px;\n        width: 100%;\n\n        padding: 34px 16px;\n    }\n`;\n\nexport const GuideCardImage = styled.img`\n    width: 124px;\n    height: 124px;\n    border-radius: 50%;\n\n    margin-bottom: 40px;\n`;\n\nexport const GuideCardSpecTitle = styled.p`\n    width: 100%;\n    font-size: 18px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.26;\n    letter-spacing: -0.1px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n    margin-bottom: 24px;\n`;\n\nexport const GuideCardSpecRow = styled.div`\n    display: flex;\n    width: 100%;\n    align-items: flex-start;\n\n    margin-bottom: 24px;\n\n    > span {\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        // line-height: 1.43;\n        letter-spacing: normal;\n        text-align: left;\n        color: #3bc1ff;\n        margin-right: 10px;\n    }\n\n    > p {\n        width: 100%;\n        flex: 1;\n        font-size: 17px;\n        font-weight: normal;\n        font-stretch: normal;\n        font-style: normal;\n        // line-height: 1.65;\n        letter-spacing: -0.3px;\n        text-align: left;\n        color: rgba(0, 0, 0, 0.7);\n    }\n`;\n\nexport const GuideCardName = styled.p`\n    width: 100%;\n    font-size: 16px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.42;\n    letter-spacing: -0.1px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n    margin-bottom: 2px;\n`;\n\nexport const GuideCardType = styled.h3`\n    width: 100%;\n    font-size: 26px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.2;\n    letter-spacing: -0.5px;\n    text-align: left;\n    color: #3bc1ff;\n    margin-bottom: 24px;\n`;\n\nexport const GuideCardDescription = styled.p`\n    width: 100%;\n    font-size: 16px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.5;\n    letter-spacing: -0.3px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    > span {\n        font-weight: bold;\n    }\n\n    margin-bottom: 60px;\n`;\n\nexport const GuideDetailSubFlexWrapper = styled.div`\n    display: flex;\n    justify-content: content;\n    align-items: flex-start;\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n    }\n`;\n\nexport const GuideDetailButtonWrapper = styled(GuideDetailSubFlexWrapper)`\n    border-radius: 4px;\n    overflow: hidden;\n\n    > span.button {\n        cursor: pointer;\n        display: inline-block;\n\n        flex: 1;\n        height: 44px;\n        line-height: 44px;\n\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: bold;\n        font-size: 12px;\n        text-align: center;\n        color: #ffffff;\n\n        @media (max-width: 768px) {\n            width: 100%;\n        }\n    }\n\n    > span.gray {\n        background-color: #606060;\n\n        @media (max-width: 768px) {\n            margin-bottom: 8px;\n        }\n    }\n\n    > span.blue {\n        background-color: #3bc1ff;\n    }\n`;\n\nexport const GuideDetailSubFlexbox = styled.div`\n    flex: 1;\n\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n\n    > p {\n        margin-bottom: 20px;\n\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: normal;\n        font-size: 12px;\n        line-height: 18px;\n\n        text-align: left;\n\n        letter-spacing: -0.3px;\n        color: rgba(0, 0, 0, 0.7);\n    }\n\n    @media (max-width: 768px) {\n        width: 100%;\n    }\n`;\n\nexport const GuideUsingContainer = styled.div`\n    padding-top: 62px;\n    padding-bottom: 78px;\n    background-color: #f9f9f9;\n`;\n\nexport const GuideUsingSubFlexWrapper = styled(GuideDetailSubFlexWrapper)`\n    align-items: center;\n    justify-content: center;\n\n    @media (max-width: 768px) {\n        align-items: flex-start;\n        padding-left: 40px;\n    }\n`;\n\nexport const GuideUsingFlexbox = styled(GuideDetailSubFlexbox)`\n    align-items: center;\n    flex: initial;\n    min-width: 320px;\n\n    > p.index {\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: bold;\n        font-size: 10px;\n        line-height: 14px;\n\n        letter-spacing: -0.333333px;\n        color: rgba(0, 0, 0, 0.2);\n\n        margin-bottom: 16px;\n    }\n\n    > p {\n        width: auto;\n        text-align: center;\n    }\n\n    > p.title {\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: bold;\n        font-size: 16px;\n        line-height: 22px;\n\n        text-align: center;\n        letter-spacing: -0.6px;\n    }\n\n    > div {\n        display: flex;\n        justify-content: center;\n\n        margin-bottom: 16px;\n\n        img {\n            height: 90px;\n            object-fit: contain;\n        }\n    }\n\n    margin-bottom: 44px;\n`;\n\nexport const GuideUsageFlexbox = styled.div`\n    flex: 1;\n\n    display: flex;\n    align-items: center;\n    justify-content: flex-start;\n\n    margin-bottom: 68px;\n\n    @media (max-width: 768px) {\n        margin-bottom: 32px;\n        // width: 230px;\n        align-items: ;\n    }\n\n    div {\n        // width: 120px;\n\n        img {\n            width: 64px;\n            height: 64px;\n            margin-right: 34px;\n            object-fit: contain;\n        }\n\n        // @media (max-width: 768px) {\n        //     width: 70px;\n\n        //     img {\n        //         height: 32px;\n        //     }\n        // }\n    }\n\n    span {\n        font-size: 18px;\n        font-weight: normal;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.65;\n        letter-spacing: -0.2px;\n        text-align: left;\n        color: rgba(0, 0, 0, 0.7);\n\n        // @media (max-width: 768px) {\n        //     font-size: 13px;\n        //     line-height: 19px;\n        // }\n    }\n`;\n\nexport const WithmateContainer = styled.div`\n    padding-top: 56px;\n    // padding-bottom: 120px;\n`;\n\nexport const FlexDivWrapper = styled.div`\n    display: flex;\n    width: 100%;\n\n    ${props => props.top && `margin-bottom: 72px;`}\n`;\n\nexport const HiddenType = styled.div`\n    @media (max-width: 768px) {\n        ${props => props.mHidden && `display: none;`}\n    }\n`;\n\nexport const BigSideBox = styled(HiddenType)`\n    width: 58%;\n\n    @media (max-width: 768px) {\n        width: 100%;\n    }\n`;\n\nexport const SmallSideBox = styled(HiddenType)`\n    width: 42%;\n\n    @media (max-width: 768px) {\n        width: 100%;\n    }\n`;\n\nexport const WithmateBg = styled.div`\n    width: 100%;\n    height: 100%;\n\n    background-image: url(${props => props.bg});\n    background-size: 80% auto;\n    background-position: center;\n    background-repeat: no-repeat;\n`;\n\nexport const WithmateTitle = styled.div`\n    > img {\n        width: 72.5px;\n        height: 48px;\n        object-fit: contain;\n        margin-right: 8px;\n    }\n\n    > span {\n        font-size: 28px;\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.11;\n        letter-spacing: -0.5px;\n        text-align: left;\n        color: rgba(0, 0, 0, 0.7);\n    }\n\n    display: flex;\n    align-items: flex-end;\n    margin-bottom: 24px;\n`;\n","import React from \"react\";\nimport Modal from \"react-modal\";\nimport styled from 'styled-components';\nimport { Button, Checkbox, notification, Select, message, Radio } from 'antd';\n\nimport { DivisionLine, WithmateSelect, WithmateInput, WithamteInputWithButton, WithmateLabel, WithmateTextarea } from \"../../../../Components/Common/input\";\nimport { HalfWidthButton } from '../../../../Components/Common/button';\nimport ProfileStyledContainer from \"./profile.styled\";\nimport { MobileBr } from \"../../../Guide/guide.styled\";\nimport { addPatient } from \"../../../../Lib/Api/auth\";\n\nconst customStyles = {\n    overlay: {\n        position: \"fixed\",\n        top: 0,\n        left: 0,\n        right: 0,\n        bottom: 0,\n        backgroundColor: \"rgba(15, 15, 15, 0.79)\",\n    },\n    content: {\n        position: \"absolute\",\n        top: \"30px\",\n        height: \"90%\",\n        border: \"1px solid #ccc\",\n        background: \"#ffffff\",\n        overflow: \"auto\",\n        WebkitOverflowScrolling: \"touch\",\n        borderRadius: \"4px\",\n        outline: \"none\",\n        padding: \"20px\",\n    },\n};\n\nclass NewProfileComponent extends React.PureComponent {\n    state = {\n        modalInfo: '',\n        modalTitle: '',\n    };\n\n    onEdit = ({ type, value }) => {\n        this.props.editAddPatientForm({ type, value });\n    };\n\n    onStarting = () => {\n        new window.daum.Postcode({\n            oncomplete: data => {\n                const { sido, sigungu, bname, roadAddress, buildingName } = data;\n                this.onEdit({ type: 'shortStarting', value: `${sido} ${sigungu} ${bname}` });\n                this.onEdit({ type: 'starting', value: `${roadAddress} (${ buildingName })` });\n            },\n        }).open();\n    };\n\n    onProfile = () => {\n        const {\n            name,\n            relate,\n            sex,\n            age,\n            contact,\n            starting,\n            environment,\n            caution\n        } = this.props.auth.addPatientForm;\n\n        if (!name) {\n            return message.warning('성함을 입력해주세요.');\n        }\n\n        if (!relate) {\n            return message.warning('관계를 선택해주세요.');\n        }\n\n        if (!sex) {\n            return message.warning('성별을 선택해주세요.');\n        }\n\n        if (!age || age.length > 3) {\n            return message.warning('나이를 입력해주세요.');\n        }\n\n        if (!contact) {\n            return message.warning('연락처를 입력해주세요.');\n        }\n\n        if (!starting) {\n            return message.warning('주소(자택, 출발지)를 입력해주세요.');\n        }\n\n        if (!environment) {\n            return message.warning('거주환경을 입력해주세요.');\n        }\n\n        if (!caution) {\n            return message.warning('메이트와 동행할 때 주의해야할 점을 선택해주세요.');\n        }\n\n        this.props\n            .addPatient({\n                id: this.props.auth.id, name, relate, sex, age, contact, starting, environment, caution\n            })\n            .then(resolve => {\n                // console.log(resolve)\n                if (resolve.message === 'success') {\n                    this.props.onClose();\n                    this.onEdit({ type: 'clear', value: '' });\n                    notification.open({\n                        message: '환자 프로필 등록이 완료되었습니다.',\n                        description: '등록된 환자 프로필을 서비스 예약시 편리하게 이용하실 수 있습니다.',\n                        type: 'success'\n                    });\n                }\n            })\n            .catch(error => {\n                message.error('서버장애가 발생하였습니다. 관리자에게 문의해주세요.');\n            });\n    }\n\n    formCompleteStatus = () => {\n        let valid = true;\n        if (!this.props.auth || !this.props.auth.addPatientForm) return false;\n\n        const { name, relate, sex, age, contact, starting, environment, caution } = this.props.auth.addPatientForm;\n        if (!name) valid = false;\n        if (!relate) valid = false;\n        if (!sex) valid = false;\n        if (!age) valid = false;\n        if (!contact) valid = false;\n        if (!starting) valid = false;\n        if (!environment) valid = false;\n        if (!caution) valid = false;\n\n        return valid;\n    };\n\n    render() {\n        const { addPatientForm } = this.props.auth;\n        const status = this.formCompleteStatus();\n        return (\n            <Modal\n                isOpen={this.props.visible}\n                ariaHideApp={false}\n                // onRequestClose={modalOff} // esc키 또는 background 클릭 시 모달창 닫힘\n                style={{ ...customStyles }}\n            >\n                <ProfileStyledContainer>\n                    <div className='inner-container'>\n                        <div className='profile-form'>\n                            <div className='form'>\n                                <div>\n                                    <CloseButton src={'/assets/images/close.png'} onClick={this.props.onClose} style={{ width: '22px', height: '22px' }} />\n                                </div>\n                                <TitleSection>\n                                    <WideModalTitle>환자 프로필 등록</WideModalTitle>\n                                    <AlertText>\n                                        *위드메이트 서비스를 사용하실 프로필을 등록할 수 있습니다.\n                                    </AlertText>\n                                </TitleSection>\n\n                                <br />\n\n                                <WithmateLabel required>환자 이름</WithmateLabel>\n                                <WithmateInput\n                                    type='text'\n                                    placeholder='ex. 홍길동'\n                                    value={addPatientForm.name || ''}\n                                    onChange={ev => {\n                                        this.onEdit({ type: 'name', value: ev.target.value.trim() });\n                                    }}\n                                />\n\n                                <DivisionLine />\n\n                                <WithmateLabel required>본인-{addPatientForm.name}님 간 관계</WithmateLabel>\n                                <WithmateSelect\n                                    style={{ height: '48px', width: '100%' }}\n                                    placeholder='환자 프로필을 등록하는 대상의 관계를 선택해주세요.'\n                                    value={addPatientForm.relate || undefined}\n                                    onChange={value => {\n                                        this.onEdit({ type: 'relate', value });\n                                    }}\n                                >\n                                    <Select.Option value='본인'>본인</Select.Option>\n                                    <Select.Option value='부모'>부모</Select.Option>\n                                    <Select.Option value='자매'>자매</Select.Option>\n                                    <Select.Option value='친구'>친구</Select.Option>\n                                    <Select.Option value='지인'>지인</Select.Option>\n                                    <Select.Option value='기타'>기타</Select.Option>\n                                </WithmateSelect>\n\n                                <DivisionLine />\n\n                                <WithmateLabel required>{addPatientForm.name}님 성별</WithmateLabel>\n                                <div className='type-button-wrapper'>\n                                    <div\n                                        className={`type-button ${addPatientForm.sex && addPatientForm.sex === '남자' ? 'active' : ''}`}\n                                        onClick={() => {\n                                            this.onEdit({ type: 'sex', value: '남자' });\n                                        }}\n                                    >\n                                        남자\n                                    </div>\n                                    <div\n                                        className={`type-button ${addPatientForm.sex && addPatientForm.sex === '여자' ? 'active' : ''}`}\n                                        onClick={() => {\n                                            this.onEdit({ type: 'sex', value: '여자' });\n                                        }}\n                                    >\n                                        여자\n                                    </div>\n                                </div>\n\n                                <DivisionLine />\n\n                                <WithmateLabel required>{addPatientForm.name}님 나이</WithmateLabel>\n                                <WithmateInput\n                                    type='text'\n                                    maxLength='2'\n                                    placeholder=''\n                                    name='age'\n                                    suffix='세'\n                                    value={addPatientForm.age || ''}\n                                    onChange={ev => {\n                                        this.onEdit({ type: 'age', value: ev.target.value.trim() });\n                                    }}\n                                />\n\n                                <DivisionLine />\n\n                                <WithmateLabel required>{addPatientForm.name}님 연락처</WithmateLabel>\n                                <WithmateInput\n                                    type='text'\n                                    maxLength={11}\n                                    placeholder='숫자만 입력해주세요.(ex. 01012345678)'\n                                    value={addPatientForm.contact || ''}\n                                    onChange={ev => {\n                                        this.onEdit({ type: 'contact', value: ev.target.value.trim() });\n                                    }}\n                                />\n\n                                <DivisionLine />\n\n                                <WithmateLabel required>{addPatientForm.name}님의 주소(자택 혹은 출발지)를 입력해주세요.</WithmateLabel>\n                                <WithamteInputWithButton\n                                    inputConfig={{\n                                        type: 'text',\n                                        placeholder: 'ex) 서울특별시 도산대로  40, OO 아파트',\n                                        name: 'starting',\n                                        disabled: true,\n                                        value: addPatientForm.starting || ''\n                                    }}\n                                    buttonName='검색'\n                                    onButton={() => { this.onStarting() }}\n                                />\n                                <DivisionLine />\n\n                                <WithmateLabel required>{addPatientForm.name}님은 외출하실 때 '꼭' 계단을 이용하셔야 하나요?</WithmateLabel>\n                                <Radio\n                                    checked={addPatientForm.environment === '네'}\n                                    onClick={() => {\n                                        this.onEdit({ type: 'environment', value: '네' });\n                                    }}\n                                >\n                                    네\n                                </Radio>\n                                <Radio checked={addPatientForm.environment === '아니요, 엘레베이터가 있어요'}\n                                    onClick={() => {\n                                        this.onEdit({ type: 'environment', value: '아니요, 엘레베이터가 있어요' })\n                                    }}\n                                >\n                                    아니요, 엘레베이터가 있어요\n                                </Radio>\n                                <Radio checked={addPatientForm.environment === '1층이라 괜찮아요'}\n                                    onClick={() => {\n                                        this.onEdit({ type: 'environment', value: '1층이라 괜찮아요' })\n                                    }}\n                                >\n                                    1층이라 괜찮아요\n                                </Radio>\n                                <DivisionLine />\n\n                                <WithmateLabel required>메이트가 {addPatientForm.name}님과 동행할 때 주의해야 할 점이 있을까요?</WithmateLabel>\n                                <WithmateInput\n                                    type='text'\n                                    placeholder='메이트 도움 필요 소요(승하차 어려움, 보행 어려움, 의료진 설명 이해 어려움 등) 및 메이트 주의 사항'\n                                    value={addPatientForm.caution || ''}\n                                    onChange={ev => {\n                                        this.onEdit({ type: 'caution', value: ev.target.value });\n                                    }}\n                                />\n                                <Checkbox checked={addPatientForm.caution === '없어요'}\n                                    onClick={() => {\n                                        this.onEdit({ type: 'caution', value: '없어요' })\n                                    }}\n                                >\n                                    없어요\n                                </Checkbox>\n\n                                <DivisionLine />\n\n                                <ButtonWrap>\n                                    <HalfWidthButton style={{ marginRight: '8px', color: '#afb0b2' }} bg='#e6e6e6'\n                                        onClick={this.props.onClose}\n                                    >\n                                        닫기\n                                    </HalfWidthButton>\n                                    <HalfWidthButton style={{ margin: '0 auto' }} bg='#3bc1ff'\n                                        onClick={() => {\n                                            this.onProfile()\n                                        }}\n                                        style={!status ? { backgroundColor: '#E6E6E6', border: 0, cursor: 'not-allowed' } : {}}\n                                    >\n                                        프로필 등록\n                                    </HalfWidthButton>\n                                </ButtonWrap>\n\n                                <MobileBr />\n                            </div>\n                        </div>\n                    </div>\n                </ProfileStyledContainer >\n            </Modal >\n        );\n    }\n};\n\nexport default NewProfileComponent;\n\nconst CloseButton = styled.img`\n    position: absolute;\n    top: 16px;\n    right: 12px;\n\n    width: 18px;\n    height: 18px;\n\n    object-fit: cover;\n    cursor: pointer;\n\n    @media (max-width: 480px) {\n        width: 16px;\n        height: 16px;\n\n        &.desktop-only {\n            display: none;\n        }\n    }\n`;\n\nconst ButtonWrap = styled.div`\n    width: 100%;\n    display: flex;\n    align-items: center;\n`;\n\nconst TitleSection = styled.div``;\n\nconst WideModalTitle = styled.p`\n    font-size: 24px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.3;\n    letter-spacing: -0.5px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    margin-bottom: 4px;\n`;\n\nconst AlertText = styled.div`\n    font-size: 14px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.52;\n    letter-spacing: -0.3px;\n    text-align: left;\n    color: #ff5500;\n`;\n\nconst Agree = styled.div`\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n\n    margin-bottom: 8px;\n\n    span {\n        font-size: 14px;\n        line-height: 21px;\n        letter-spacing: -0.3px;\n        color: rgba(0, 0, 0, 0.7);\n    }\n\n    span.point {\n        color: #3bc1ff;\n    }\n\n    a.point {\n        color: #3bc1ff;\n        cursor: pointer;\n        text-decoration: none;\n    }\n\n    .ant-checkbox-wrapper {\n        margin-bottom: 0px !important;\n    }\n`;\n\nconst Alert = styled.p`\n    margin-bottom: 0px;\n    font-style: normal;\n    font-weight: normal;\n    font-size: 12px;\n    line-height: 20px;\n    letter-spacing: -0.15px;\n    color: #ff5500;\n`;","import styled from 'styled-components';\nimport { mainColor, sizeHandler } from '../../../../theme';\n\nconst CardStyledContainer = styled.div`\n\n    @media (max-width: 480px) {\n        min-height: initial;\n        height: 100%;\n        padding-bottom: 0px;\n        padding-top: 5px;\n    }\n\n    .inner-container {\n        padding-bottom: 0px;\n        padding-top: 0px;\n\n        @media (max-width: 480px) {\n            padding: 0px;\n        }\n\n        .profile-form {\n\n            .title-wrapper {\n                display: flex;\n                justify-content: flex-start;\n                margin-bottom: 16px;\n\n                p {\n                    flex: 1;\n                    font-size: ${sizeHandler(32)};\n                    font-weight: bold;\n                    letter-spacing: -0.7px;\n                    line-height: 48px;\n                    color: rgba(0, 0, 0, 0.7);\n                    margin: 0px;\n                    padding: 0px;\n                }\n\n                span {\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    text-align: right;\n                    color: ${mainColor};\n                }\n            }\n\n            .form {\n                label {\n                    font-size: ${sizeHandler(12)};\n                    letter-spacing: -0.15px;\n                    line-height: 20px;\n                    color: rgba(0, 0, 0, 0.7);\n                    margin-bottom: 4px;\n                }\n\n                input {\n                    height: 44px;\n                    border: solid 1px #e6e6e6;\n                    padding: 10px;\n\n                    &.ant-input {\n                        font-size: 16px;\n                        line-height: 28px;\n                        letter-spacing: -0.2px;\n                        color: rgba(0, 0, 0, 0.7);\n\n                        &::placeholder {\n                            font-size: 14px;\n                        }\n                    }\n                }\n\n                .type-button-wrapper {\n                    width: 100%;\n                    height: 48px;\n\n                    background-color: white;\n                    border: 1px solid #e6e6e6;\n                    border-radius: 4px;\n\n                    display: flex;\n                    align-items: center;\n\n                    > .type-button {\n                        width: 50%;\n                        height: 100%;\n                        line-height: 48px;\n\n                        text-align: center;\n                        cursor: pointer;\n\n                        font-size: 16px;\n                        letter-spacing: -0.2px;\n                        color: rgba(0, 0, 0, 0.2);\n                    }\n\n                    > .type-button.active {\n                        background: rgba(0, 0, 0, 0.7);\n                        border-radius: 4px;\n                        color: #f9f9f9;\n                    }\n                }\n\n                button {\n                    width: 100%;\n                    height: 46px;\n                    margin-top: 4px;\n                    margin-bottom: 16px;\n\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    letter-spacing: -0.2px;\n                    text-align: center;\n                    color: #ffffff;\n                }\n\n                .link-wrapper {\n                    display: flex;\n                    justify-content: center;\n                    margin-bottom: 8px;\n                    .text {\n                        font-size: ${sizeHandler(14)};\n                        letter-spacing: -0.3px;\n                        text-align: center;\n                        color: rgba(0, 0, 0, 0.7);\n                        line-height: 21px;\n                    }\n\n                    .link {\n                        cursor: pointer;\n                        font-size: ${sizeHandler(14)};\n                        font-weight: bold;\n                        letter-spacing: -0.3px;\n                        text-align: center;\n                        color: ${mainColor};\n\n                        margin-left: 8px;\n                    }\n                }\n            }\n\n            .form-user-type {\n                height: 36px;\n                margin-bottom: 20px;\n                border-radius: 4px;\n                border: 1px solid #e6e6e6;\n                display: flex;\n                align-items: center;\n                overflow: hidden;\n\n                .type {\n                    flex: 1;\n                    height: 100%;\n                    line-height: 36px;\n                    background-color: #ffffff;\n                    cursor: pointer;\n\n                    &:first-child {\n                        border-right: 1px solid #e6e6e6;\n                    }\n\n                    p {\n                        font-size: ${sizeHandler(12)};\n                        font-weight: bold;\n                        text-align: center;\n                        color: #606060;\n                    }\n\n                    &.active {\n                        background-color: #606060;\n\n                        p {\n                            color: #ffffff;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    .ant-upload-drag-container {\n        .title {\n            margin-top: 12px;\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            text-align: center;\n            color: rgba(0, 0, 0, 0.8);\n        }\n\n        .reco {\n            font-size: ${sizeHandler(12)};\n            letter-spacing: -0.3px;\n            text-align: center;\n            color: #a7a7a7;\n        }\n    }\n`;\n\nexport default CardStyledContainer;","import React from 'react';\nimport Modal from 'react-modal';\nimport styled from 'styled-components';\nimport { notification, Select, message } from 'antd';\n\nimport { DivisionLine, WithmateSelect, WithmateInput, WithmateLabel } from '../../../../Components/Common/input';\nimport { HalfWidthButton } from '../../../../Components/Common/button';\nimport CardStyledContainer from './card.styled';\n\nconst customStyles = {\n    overlay: {\n        position: 'fixed',\n        top: 0,\n        left: 0,\n        right: 0,\n        bottom: 0,\n        backgroundColor: 'rgba(15, 15, 15, 0.79)',\n    },\n    content: {\n        position: 'absolute',\n        top: '30px',\n        width: '350px',\n        height: '37%',\n        border: '1px solid #ccc',\n        background: '#ffffff',\n        overflow: 'auto',\n        WebkitOverflowScrolling: 'touch',\n        borderRadius: '4px',\n        outline: 'none',\n        padding: '20px',\n    },\n};\n\nclass NewProfileComponent extends React.PureComponent {\n    state = {\n        modalInfo: '',\n        modalTitle: '',\n    };\n\n    onEdit = ({ type, value }) => {\n        this.props.editAddCardForm({ type, value });\n    };\n\n    onCard = () => {\n        const { cardName, cardNum, year, month } = this.props.auth.addCardForm;\n\n        if (!cardName) {\n            return message.warning('카드명을 입력하세요');\n        }\n\n        if (!cardNum) {\n            return message.warning('카드번호를 입력하세요');\n        }\n\n        if (!year) {\n            return message.warning('유효 연도를 선택하세요');\n        }\n\n        if (!month) {\n            return message.warning('유효 월을 선택하세요');\n        }\n\n        this.props\n            .addCard({\n                id: this.props.auth.id,\n                userName: this.props.auth.name,\n                cardName,\n                cardNum,\n                year,\n                month,\n            })\n            .then(resolve => {\n                // console.log(resolve)\n                if (resolve.message === 'success') {\n                    this.props.onClose();\n                    this.onEdit({ type: 'clear', value: '' });\n                    notification.open({\n                        message: '결제카드 등록이 완료되었습니다.',\n                        description: '등록된 결제카드정보로 서비스 이용결제시 편리하게 이용하실 수 있습니다.',\n                        type: 'success',\n                    });\n                }\n            })\n            .catch(error => {\n                message.error('서버장애가 발생하였습니다. 관리자에게 문의해주세요.');\n            });\n    };\n\n    formCompleteStatus = () => {\n        let valid = true;\n        if (!this.props.auth || !this.props.auth.addCardForm) return false;\n\n        const { cardName, cardNum, year, month } = this.props.auth.addCardForm;\n        if (!cardName) valid = false;\n        if (!cardNum) valid = false;\n        if (!year) valid = false;\n        if (!month) valid = false;\n\n        return valid;\n    };\n\n    render() {\n        // console.log(this.props.auth);\n        const { addCardForm } = this.props.auth;\n        const status = this.formCompleteStatus();\n        return (\n            <Modal\n                isOpen={this.props.visible}\n                ariaHideApp={false}\n                // onRequestClose={modalOff} // esc키 또는 background 클릭 시 모달창 닫힘\n                style={{ ...customStyles }}\n            >\n                <CardStyledContainer>\n                    <div className='inner-container'>\n                        <div className='profile-form'>\n                            <div className='form'>\n                                <div>\n                                    <CloseButton src={'/assets/images/close.png'} onClick={this.props.onClose} style={{ width: '22px', height: '22px' }} />\n                                </div>\n                                <TitleSection>\n                                    <WideModalTitle>결제카드정보 등록</WideModalTitle>\n                                </TitleSection>\n\n                                <br />\n\n                                <WithmateLabel required>결제 카드사</WithmateLabel>\n                                <WithmateSelect\n                                    name='cardName'\n                                    placeholder='카드사를 선택하세요'\n                                    value={addCardForm.cardName || undefined}\n                                    onChange={value => {\n                                        this.onEdit({ type: 'cardName', value });\n                                    }}\n                                >\n                                    <Select.Option value='KB국민카드'>KB국민카드</Select.Option>\n                                    <Select.Option value='삼성카드'>삼성카드</Select.Option>\n                                    <Select.Option value='현대카드'>현대카드</Select.Option>\n                                    <Select.Option value='우리카드'>우리카드</Select.Option>\n                                    <Select.Option value='BC카드'>BC카드</Select.Option>\n                                    <Select.Option value='신한카드'>신한카드</Select.Option>\n                                    <Select.Option value='롯데카드'>롯데카드</Select.Option>\n                                    <Select.Option value='NH농협카드'>NH농협카드</Select.Option>\n                                </WithmateSelect>\n\n                                <DivisionLine />\n\n                                <WithmateLabel required>카드번호</WithmateLabel>\n                                <WithmateInput\n                                    type='phone'\n                                    placeholder='11자리 또는 12자리의 카드번호를 입력하세요'\n                                    value={addCardForm.cardNum || ''}\n                                    maxLength='19'\n                                    onChange={ev => {\n                                        this.onEdit({\n                                            type: 'cardNum',\n                                            value: ev.target.value\n                                                .replace(/[^0-9]/g, '')\n                                                .replace(/^(\\d{0,4})(\\d{0,4})(\\d{0,4})(\\d{0,4})$/g, '$1-$2-$3-$4')\n                                                .replace(/(\\-{1,2})$/g, ''),\n                                        });\n                                    }}\n                                />\n                                <DivisionLine />\n\n                                <WithmateLabel required>유효기간(MM/YY)</WithmateLabel>\n                                <YMWrapper withHalf>\n                                    <div style={{ flex: 1 }}>\n                                        <WithmateSelect\n                                            style={{ width: '150px' }}\n                                            placeholder='MM'\n                                            value={addCardForm.month || undefined}\n                                            onChange={value => {\n                                                this.onEdit({ type: 'month', value });\n                                            }}\n                                        >\n                                            <Select.Option value='1'>1</Select.Option>\n                                            <Select.Option value='2'>2</Select.Option>\n                                            <Select.Option value='3'>3</Select.Option>\n                                            <Select.Option value='4'>4</Select.Option>\n                                            <Select.Option value='5'>5</Select.Option>\n                                            <Select.Option value='6'>6</Select.Option>\n                                            <Select.Option value='7'>7</Select.Option>\n                                            <Select.Option value='8'>8</Select.Option>\n                                            <Select.Option value='9'>9</Select.Option>\n                                            <Select.Option value='10'>10</Select.Option>\n                                            <Select.Option value='11'>11</Select.Option>\n                                            <Select.Option value='12'>12</Select.Option>\n                                        </WithmateSelect>\n                                    </div>\n                                    <div style={{ flex: 1 }}>\n                                        <WithmateInput\n                                            style={{ width: '150px' }}\n                                            type='text'\n                                            placeholder='YY'\n                                            maxLength='2'\n                                            value={addCardForm.year || ''}\n                                            onChange={ev => {\n                                                this.onEdit({ type: 'year', value: ev.target.value });\n                                            }}\n                                        />\n                                    </div>\n                                </YMWrapper>\n                                <DivisionLine />\n\n                                <ButtonWrap>\n                                    <HalfWidthButton style={{ marginRight: '8px', color: '#afb0b2' }} bg='#e6e6e6' onClick={this.props.onClose}>\n                                        닫기\n                                    </HalfWidthButton>\n                                    <HalfWidthButton\n                                        style={{ margin: '0 auto' }}\n                                        bg='#3bc1ff'\n                                        onClick={() => {\n                                            this.onCard();\n                                        }}\n                                        style={!status ? { backgroundColor: '#E6E6E6', border: 0, cursor: 'not-allowed' } : {}}\n                                    >\n                                        카드정보 등록\n                                    </HalfWidthButton>\n                                </ButtonWrap>\n                            </div>\n                        </div>\n                    </div>\n                </CardStyledContainer>\n            </Modal>\n        );\n    }\n}\n\nexport default NewProfileComponent;\n\nconst CloseButton = styled.img`\n    position: absolute;\n    top: 16px;\n    right: 12px;\n\n    width: 18px;\n    height: 18px;\n\n    object-fit: cover;\n    cursor: pointer;\n\n    @media (max-width: 480px) {\n        width: 16px;\n        height: 16px;\n\n        &.desktop-only {\n            display: none;\n        }\n    }\n`;\n\nconst ButtonWrap = styled.div`\n    width: 100%;\n    display: flex;\n    align-items: center;\n`;\n\nconst TitleSection = styled.div``;\n\nconst WideModalTitle = styled.p`\n    font-size: 24px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.3;\n    letter-spacing: -0.5px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    margin-bottom: 4px;\n`;\n\nconst YMWrapper = styled.div`\n    display: flex;\n    align-items: center;\n\n    ${props =>\n        props.withHalf\n            ? `\n        > div, p {\n            width: calc(50% - 4px) !important;\n            margin-right: 8px;\n        }\n    `\n            : ''}\n\n    > div:last-child {\n        margin-right: 0px;\n    }\n`;\n","import React from 'react';\nimport Modal from 'react-modal';\nimport styled from 'styled-components';\nimport { Select, message } from 'antd';\n\nimport { DivisionLine, WithmateSelect, WithmateInput, WithmateLabel } from '../../../../Components/Common/input';\nimport { HalfWidthButton } from '../../../../Components/Common/button';\nimport CardStyledContainer from './card.styled';\nimport { modifyCard } from '../../../../Lib/Api/auth';\n\nconst customStyles = {\n    overlay: {\n        position: 'fixed',\n        top: 0,\n        left: 0,\n        right: 0,\n        bottom: 0,\n        backgroundColor: 'rgba(15, 15, 15, 0.79)',\n    },\n    content: {\n        position: 'absolute',\n        top: '30px',\n        width: '350px',\n        height: '37%',\n        border: '1px solid #ccc',\n        background: '#ffffff',\n        overflow: 'auto',\n        WebkitOverflowScrolling: 'touch',\n        borderRadius: '4px',\n        outline: 'none',\n        padding: '20px',\n    },\n};\n\nclass ModifyProfileComponent extends React.PureComponent {\n    state = {\n        modalInfo: '',\n        modalTitle: '',\n        cardId: '',\n        cardInfo: null,\n    };\n\n    componentWillUnmount = () => {\n        this.setState({ cardInfo: null });\n    };\n\n    componentDidUpdate = (prevState, prevProps) => {\n        if (!this.state.cardInfo && JSON.stringify(prevProps) !== JSON.stringify(this.props)) {\n            this.setState({ cardInfo: this.props });\n        }\n        if (JSON.stringify(prevProps) !== JSON.stringify(this.props) && !this.props._id) {\n            this.setState({ cardInfo: null });\n        }\n    };\n\n    onEdit = ({ type, value }) => {\n        this.setState(prevState => ({\n            cardInfo: {\n                ...prevState.cardInfo,\n                [type]: value,\n            },\n        }));\n    };\n\n    onCard = () => {\n        const { cardInfo } = this.state;\n        const { cardName, cardNum, year, month } = cardInfo;\n\n        if (!cardName) {\n            return message.warning('카드명을 입력하세요');\n        }\n\n        if (!cardNum) {\n            return message.warning('카드번호를 입력하세요');\n        }\n\n        if (!year) {\n            return message.warning('유효 연도를 선택하세요');\n        }\n\n        if (!month) {\n            return message.warning('유효 월을 선택하세요');\n        }\n\n        const info = { cardName, cardNum, year, month };\n\n        modifyCard({ cardId: cardInfo._id, info })\n            .then(resolve => {\n                if (resolve && resolve.data === 'success') {\n                    message.success('등록된 카드정보를 변경하였습니다.');\n                    this.props.onClose();\n                }\n            })\n            .catch(error => {\n                message.error('서버장애가 발생하였습니다. 관리자에게 문의해주세요.');\n            });\n    };\n\n    render() {\n        if (!this.state.cardInfo) {\n            return <div></div>;\n        }\n\n        const { cardInfo } = this.state;\n\n        return (\n            <Modal\n                isOpen={this.props.visible}\n                ariaHideApp={false}\n                // onRequestClose={modalOff} // esc키 또는 background 클릭 시 모달창 닫힘\n                style={{ ...customStyles }}\n            >\n                <CardStyledContainer>\n                    <div className='inner-container'>\n                        <div className='profile-form'>\n                            <div className='form'>\n                                <div>\n                                    <CloseButton src={'/assets/images/close.png'} onClick={this.props.onClose} style={{ width: '22px', height: '22px' }} />\n                                </div>\n                                <TitleSection>\n                                    <WideModalTitle>결제카드정보 수정</WideModalTitle>\n                                </TitleSection>\n\n                                <br />\n\n                                <WithmateLabel required>결제 카드사</WithmateLabel>\n                                <WithmateSelect\n                                    name='cardName'\n                                    placeholder='카드사를 선택하세요'\n                                    value={cardInfo.cardName || undefined}\n                                    onChange={value => {\n                                        this.onEdit({ type: 'cardName', value });\n                                    }}\n                                >\n                                    <Select.Option value='KB국민카드'>KB국민카드</Select.Option>\n                                    <Select.Option value='삼성카드'>삼성카드</Select.Option>\n                                    <Select.Option value='현대카드'>현대카드</Select.Option>\n                                    <Select.Option value='우리카드'>우리카드</Select.Option>\n                                    <Select.Option value='BC카드'>BC카드</Select.Option>\n                                    <Select.Option value='신한카드'>신한카드</Select.Option>\n                                    <Select.Option value='롯데카드'>롯데카드</Select.Option>\n                                    <Select.Option value='NH농협카드'>NH농협카드</Select.Option>\n                                </WithmateSelect>\n\n                                <DivisionLine />\n\n                                <WithmateLabel required>카드번호</WithmateLabel>\n                                <WithmateInput\n                                    type='phone'\n                                    placeholder='11자리 또는 12자리의 카드번호를 입력하세요'\n                                    value={cardInfo.cardNum || ''}\n                                    maxLength='19'\n                                    onChange={ev => {\n                                        this.onEdit({\n                                            type: 'cardNum',\n                                            value: ev.target.value\n                                                .replace(/[^0-9]/g, '')\n                                                .replace(/^(\\d{0,4})(\\d{0,4})(\\d{0,4})(\\d{0,4})$/g, '$1-$2-$3-$4')\n                                                .replace(/(\\-{1,2})$/g, ''),\n                                        });\n                                    }}\n                                />\n                                <DivisionLine />\n\n                                <WithmateLabel required>유효기간(MM/YY)</WithmateLabel>\n                                <YMWrapper withHalf>\n                                    <div style={{ flex: 1 }}>\n                                        <WithmateSelect\n                                            style={{ width: '150px' }}\n                                            placeholder='MM'\n                                            value={cardInfo.month || ''}\n                                            onChange={value => {\n                                                this.onEdit({ type: 'month', value });\n                                            }}\n                                        >\n                                            <Select.Option value='1'>1</Select.Option>\n                                            <Select.Option value='2'>2</Select.Option>\n                                            <Select.Option value='3'>3</Select.Option>\n                                            <Select.Option value='4'>4</Select.Option>\n                                            <Select.Option value='5'>5</Select.Option>\n                                            <Select.Option value='6'>6</Select.Option>\n                                            <Select.Option value='7'>7</Select.Option>\n                                            <Select.Option value='8'>8</Select.Option>\n                                            <Select.Option value='9'>9</Select.Option>\n                                            <Select.Option value='10'>10</Select.Option>\n                                            <Select.Option value='11'>11</Select.Option>\n                                            <Select.Option value='12'>12</Select.Option>\n                                        </WithmateSelect>\n                                    </div>\n                                    <div style={{ flex: 1 }}>\n                                        <WithmateInput\n                                            style={{ width: '150px' }}\n                                            type='text'\n                                            placeholder='YY'\n                                            maxLength='2'\n                                            value={cardInfo.year || ''}\n                                            onChange={ev => {\n                                                this.onEdit({ type: 'year', value: ev.target.value });\n                                            }}\n                                        />\n                                    </div>\n                                </YMWrapper>\n                                <DivisionLine />\n\n                                <ButtonWrap>\n                                    <HalfWidthButton style={{ marginRight: '8px', color: '#afb0b2' }} bg='#e6e6e6' onClick={this.props.onClose}>\n                                        닫기\n                                    </HalfWidthButton>\n                                    <HalfWidthButton\n                                        style={{ margin: '0 auto' }}\n                                        bg='#3bc1ff'\n                                        onClick={() => {\n                                            this.onCard();\n                                        }}\n                                    >\n                                        카드정보 수정\n                                    </HalfWidthButton>\n                                </ButtonWrap>\n                            </div>\n                        </div>\n                    </div>\n                </CardStyledContainer>\n            </Modal>\n        );\n    }\n}\n\nexport default ModifyProfileComponent;\n\nconst CloseButton = styled.img`\n    position: absolute;\n    top: 16px;\n    right: 12px;\n\n    width: 18px;\n    height: 18px;\n\n    object-fit: cover;\n    cursor: pointer;\n\n    @media (max-width: 480px) {\n        width: 16px;\n        height: 16px;\n\n        &.desktop-only {\n            display: none;\n        }\n    }\n`;\n\nconst ButtonWrap = styled.div`\n    width: 100%;\n    display: flex;\n    align-items: center;\n`;\n\nconst TitleSection = styled.div``;\n\nconst WideModalTitle = styled.p`\n    font-size: 24px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.3;\n    letter-spacing: -0.5px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    margin-bottom: 4px;\n`;\n\nconst YMWrapper = styled.div`\n    display: flex;\n    align-items: center;\n\n    ${props =>\n        props.withHalf\n            ? `\n        > div, p {\n            width: calc(50% - 4px) !important;\n            margin-right: 8px;\n        }\n    `\n            : ''}\n\n    > div:last-child {\n        margin-right: 0px;\n    }\n`;\n","import React from \"react\";\nimport Modal from \"react-modal\";\nimport styled from 'styled-components';\nimport { Button, Checkbox, notification, Select, message, Radio } from 'antd';\n\nimport { DivisionLine, WithmateSelect, WithmateInput, WithamteInputWithButton, WithmateLabel } from \"../../../../Components/Common/input\";\nimport { HalfWidthButton } from '../../../../Components/Common/button';\nimport ProfileStyledContainer from \"./profile.styled\";\nimport { modifyPatient } from \"../../../../Lib/Api/auth\";\nimport { MobileBr } from \"../../../Guide/guide.styled\";\n\nconst customStyles = {\n\n    overlay: {\n        position: \"fixed\",\n        top: 0,\n        left: 0,\n        right: 0,\n        bottom: 0,\n        backgroundColor: \"rgba(15, 15, 15, 0.79)\",\n    },\n    content: {\n        position: \"absolute\",\n        top: \"30px\",\n        height: \"90%\",\n        border: \"1px solid #ccc\",\n        background: \"#ffffff\",\n        overflow: \"auto\",\n        WebkitOverflowScrolling: \"touch\",\n        borderRadius: \"4px\",\n        outline: \"none\",\n        padding: \"20px\",\n    },\n}\n\nclass ModifyProfileComponent extends React.PureComponent {\n    state = {\n        modalInfo: '',\n        modalTitle: '',\n        patientId: '',\n        patientInfo: null\n    };\n\n    componentWillUnmount = () => {\n        this.setState({ patientInfo: null });\n    };\n\n    componentDidUpdate = (prevState, prevProps) => {\n        if (!this.state.patientInfo && JSON.stringify(prevProps) !== JSON.stringify(this.props)) {\n            this.setState({ patientInfo: this.props })\n        }\n        if (JSON.stringify(prevProps) !== JSON.stringify(this.props) && !this.props._id) {\n            this.setState({ patientInfo: null })\n        }\n    }\n\n    onEdit = ({ type, value }) => {\n        this.setState(prevState => ({\n            patientInfo: {\n                ...prevState.patientInfo,\n                [type]: value,\n            }\n        }));\n    };\n\n    onStarting = () => {\n        new window.daum.Postcode({\n            oncomplete: data => {\n                const { sido, sigungu, bname, roadAddress, buildingName } = data;\n                this.onEdit({ type: 'shortStarting', value: `${sido} ${sigungu} ${bname}` });\n                this.onEdit({ type: 'starting', value: `${roadAddress} (${ buildingName })` });\n            },\n        }).open();\n    };\n\n    onProfile = () => {\n        const { patientInfo } = this.state;\n        const {\n            name,\n            relate,\n            sex,\n            age,\n            contact,\n            starting,\n            environment,\n            caution\n        } = patientInfo;\n\n        if (!name) {\n            return message.warning('성함을 입력해주세요.');\n        }\n\n        if (!relate) {\n            return message.warning('관계를 선택해주세요.');\n        }\n\n        if (!sex) {\n            return message.warning('성별을 선택해주세요.');\n        }\n\n        if (!age || age.length > 3) {\n            return message.warning('나이를 입력해주세요.');\n        }\n\n        if (!contact) {\n            return message.warning('연락처를 입력해주세요.');\n        }\n\n        if (!starting) {\n            return message.warning('주소(자택, 출발지)를 입력해주세요.');\n        }\n\n        if (!environment) {\n            return message.warning('거주환경을 입력해주세요.');\n        }\n\n        if (!caution) {\n            return message.warning('기타 불편한 사항(시력)을 입력해주세요.');\n        }\n\n        if (name.length > 15) return message.info('이름이 너무 깁니다. 이름은 15자 이내로 설정해주세요.');\n\n        const info = {\n            name, relate, sex, age, contact, starting, environment, caution\n        }\n\n        modifyPatient({ patientId: patientInfo._id, info })\n            .then(resolve => {\n                // console.log(resolve)\n                if (resolve && resolve.data === 'success') {\n                    message.success('환자 프로필 정보를 변경하였습니다.')\n                    this.props.onClose();\n                }\n            })\n            .catch(error => {\n                message.error('서버장애가 발생하였습니다. 관리자에게 문의해주세요.');\n            });\n    }\n\n    render() {\n        if (!this.state.patientInfo) {\n            return <div></div>;\n        }\n\n        const { patientInfo } = this.state;\n\n        return (\n            <Modal\n                isOpen={this.props.visible}\n                ariaHideApp={false}\n                // onRequestClose={modalOff} // esc키 또는 background 클릭 시 모달창 닫힘\n                style={{ ...customStyles }}\n            >\n                <ProfileStyledContainer>\n                    <div className='inner-container'>\n                        <div className='profile-form'>\n                            <div className='form'>\n                                <div>\n                                    <CloseButton src={'/assets/images/close.png'} onClick={this.props.onClose} style={{ width: '22px', height: '22px' }} />\n                                </div>\n                                <TitleSection>\n                                    <WideModalTitle>환자 프로필 수정</WideModalTitle>\n                                    <AlertText>\n                                        * 환자 프로필 정보를 수정할 수 있습니다.\n                                    </AlertText>\n                                </TitleSection>\n\n                                <br />\n\n                                <WithmateLabel required>환자 이름</WithmateLabel>\n                                <WithmateInput\n                                    type='email'\n                                    placeholder='ex. 홍길동'\n                                    value={patientInfo.name}\n                                    onChange={ev => {\n                                        this.onEdit({ type: 'name', value: ev.target.value.trim() });\n                                    }}\n                                />\n\n                                <DivisionLine small />\n\n                                <WithmateLabel required>본인-환자 간 관계</WithmateLabel>\n                                <WithmateSelect\n                                    name='relate'\n                                    style={{ height: '48px', width: '100%' }}\n                                    placeholder='환자 프로필을 등록하는 대상의 관계를 선택해주세요.'\n                                    value={patientInfo.relate || undefined}\n                                    onChange={value => {\n                                        this.onEdit({ type: 'relate', value });\n                                    }}\n                                >\n                                    <Select.Option value='본인'>본인</Select.Option>\n                                    <Select.Option value='부모'>부모</Select.Option>\n                                    <Select.Option value='자매'>자매</Select.Option>\n                                    <Select.Option value='친구'>친구</Select.Option>\n                                    <Select.Option value='지인'>지인</Select.Option>\n                                    <Select.Option value='기타'>기타</Select.Option>\n                                </WithmateSelect>\n\n                                <DivisionLine small />\n\n                                <WithmateLabel required>{patientInfo.name}님 성별</WithmateLabel>\n                                <div className='type-button-wrapper'>\n                                    <div\n                                        className={`type-button ${patientInfo.sex && patientInfo.sex === '남자' ? 'active' : ''}`}\n                                        onClick={() => {\n                                            this.onEdit({ type: 'sex', value: '남자' });\n                                        }}\n                                    >\n                                        남자\n                                    </div>\n                                    <div\n                                        className={`type-button ${patientInfo.sex && patientInfo.sex === '여자' ? 'active' : ''}`}\n                                        onClick={() => {\n                                            this.onEdit({ type: 'sex', value: '여자' });\n                                        }}\n                                    >\n                                        여자\n                                    </div>\n                                </div>\n\n                                <DivisionLine small />\n\n                                <WithmateLabel required>{patientInfo.name}님 나이</WithmateLabel>\n                                <WithmateInput\n                                    type='number'\n                                    maxLength='2'\n                                    placeholder=''\n                                    name='age'\n                                    suffix='세'\n                                    value={patientInfo.age}\n                                    onChange={ev => {\n                                        this.onEdit({ type: 'age', value: ev.target.value.trim() });\n                                    }}\n                                />\n\n                                <DivisionLine />\n\n                                <WithmateLabel required>{patientInfo.name}님 연락처</WithmateLabel>\n                                <WithmateInput\n                                    name='contact'\n                                    type='text'\n                                    maxLength={11}\n                                    placeholder='숫자만 입력해주세요.(ex. 01012345678)'\n                                    value={patientInfo.contact}\n                                    onChange={ev => {\n                                        this.onEdit({ type: 'contact', value: ev.target.value.trim() });\n                                    }}\n                                />\n\n                                <DivisionLine />\n\n                                <WithmateLabel required>{patientInfo.name}님의 주소(자택 혹은 출발지)를 입력해주세요.</WithmateLabel>\n                                <WithamteInputWithButton\n                                    inputConfig={{\n                                        type: 'text',\n                                        placeholder: 'ex) 서울특별시 도산대로  40, OO 아파트',\n                                        name: 'starting',\n                                        disabled: true,\n                                        value: patientInfo.starting\n                                    }}\n                                    buttonName='검색'\n                                    onButton={() => { this.onStarting() }}\n                                />\n                                <DivisionLine />\n\n                                <WithmateLabel required>메이트가 {patientInfo.name}님은 외출하실 때 '꼭' 계단을 이용하셔야 하나요?</WithmateLabel>\n                                <Radio\n                                    checked={patientInfo.environment === '네'}\n                                    onClick={() => {\n                                        this.onEdit({ type: 'environment', value: '네' });\n                                    }}\n                                >\n                                    네\n                                </Radio>\n                                <Radio checked={patientInfo.environment === '아니요, 엘레베이터가 있어요'}\n                                    onClick={() => {\n                                        this.onEdit({ type: 'environment', value: '아니요, 엘레베이터가 있어요' })\n                                    }}\n                                >\n                                    아니요, 엘레베이터가 있어요\n                                </Radio>\n                                <Radio checked={patientInfo.environment === '1층이라 괜찮아요'}\n                                    onClick={() => {\n                                        this.onEdit({ type: 'environment', value: '1층이라 괜찮아요' })\n                                    }}\n                                >\n                                    1층이라 괜찮아요\n                                </Radio>\n                                <DivisionLine />\n                            \n                                <WithmateLabel required>메이트가 {patientInfo.name}님과 동행할 때 주의해야 할 점이 있을까요?</WithmateLabel>\n                                <WithmateInput\n                                    type='text'\n                                    placeholder='동행시 주의사항을 입력하세요.'\n                                    value={patientInfo.caution || ''}\n                                    onChange={ev => {\n                                        this.onEdit({ type: 'caution', value: ev.target.value });\n                                    }}\n                                />\n                                <Checkbox checked={patientInfo.caution === '없어요'}\n                                    onClick={() => {\n                                        this.onEdit({ type: 'caution', value: '없어요' })\n                                    }}\n                                >\n                                    없어요\n                                </Checkbox>\n\n                                <DivisionLine />\n\n                                <ButtonWrap>\n                                    <HalfWidthButton style={{ marginRight: '8px', color: '#afb0b2' }} bg='#e6e6e6'\n                                        onClick={this.props.onClose}\n                                    >\n                                        닫기\n                                    </HalfWidthButton>\n                                    <HalfWidthButton style={{ margin: '0 auto' }} bg='#3bc1ff'\n                                        onClick={(e) => {\n                                            e.preventDefault();\n                                            e.stopPropagation();\n                                            this.onProfile()\n                                        }}\n                                    >\n                                        프로필 수정\n                                    </HalfWidthButton>\n                                </ButtonWrap>\n\n                                <MobileBr />\n                            </div>\n                        </div>\n                    </div>\n                </ProfileStyledContainer >\n            </Modal >\n        );\n    }\n};\n\nexport default ModifyProfileComponent;\n\nconst CloseButton = styled.img`\n    position: absolute;\n    top: 16px;\n    right: 12px;\n\n    width: 18px;\n    height: 18px;\n\n    object-fit: cover;\n    cursor: pointer;\n\n    @media (max-width: 480px) {\n        width: 16px;\n        height: 16px;\n\n        &.desktop-only {\n            display: none;\n        }\n    }\n`;\n\nconst ButtonWrap = styled.div`\n    width: 100%;\n    display: flex;\n    align-items: center;\n`;\n\nconst TitleSection = styled.div``;\n\nconst WideModalTitle = styled.p`\n    font-size: 24px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.3;\n    letter-spacing: -0.5px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    margin-bottom: 4px;\n`;\n\nconst AlertText = styled.div`\n    font-size: 14px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.52;\n    letter-spacing: -0.3px;\n    text-align: left;\n    color: #ff5500;\n`;","import React from 'react';\nimport { DeleteOutlined, EditOutlined } from \"@ant-design/icons\"\n\n\nexport const patientColumn = ({ onModify, onDelete }) => {\n    return [\n        {\n            title: '번호',\n            dataIndex: 'index',\n            align: 'center',\n            width: '58px',\n        },\n        {\n            title: '이름',\n            dataIndex: 'name',\n            align: 'center'\n        },\n        {\n            title: '나이',\n            dataIndex: 'age',\n            align: 'center'\n        },\n        {\n            title: '수정',\n            dataIndex: 'valid',\n            align: 'center',\n            width: '58px',\n            render: (valid, info) =>\n                <EditOutlined\n                    onClick={(e) => {\n                        e.preventDefault();\n                        e.stopPropagation();\n\n                        onModify(info);\n                    }}\n                />\n        },\n        {\n            title: '삭제',\n            dataIndex: 'createdAt',\n            align: 'center',\n            width: '58px',\n            render: (createdAt, { _id }) =>\n                <DeleteOutlined\n                    onClick={(e) => {\n                        console.log('_id: ', _id)\n                        e.preventDefault();\n                        e.stopPropagation();\n\n                        onDelete({ _id });\n                    }}\n                />\n        },\n    ]\n}\n\nexport const cardColumn = ({ onModify, onDelete }) => {\n    return [\n        {\n            title: '번호',\n            dataIndex: 'index',\n            align: 'center',\n            width: '58px',\n        },\n        {\n            title: '카드명',\n            dataIndex: 'cardName',\n            align: 'center'\n        },\n        {\n            title: '카드번호',\n            dataIndex: 'cardNum',\n            align: 'center',\n            render: cardNum => <span>**** - **** - **** - {cardNum.slice(15, 19)}</span>\n        },\n        {\n            title: '수정',\n            dataIndex: 'valid',\n            align: 'center',\n            width: '58px',\n            render: (valid, info) =>\n                <EditOutlined\n                    onClick={(e) => {\n                        e.preventDefault();\n                        e.stopPropagation();\n\n                        onModify(info);\n                    }}\n                />\n        },\n        {\n            title: '삭제',\n            dataIndex: 'createdAt',\n            align: 'center',\n            width: '58px',\n            render: (createdAt, { _id }) =>\n                <DeleteOutlined\n                    onClick={(e) => {\n                        console.log('_id: ', _id)\n                        e.preventDefault();\n                        e.stopPropagation();\n\n                        onDelete({ _id });\n                    }}\n                />\n        },\n    ]\n};","import React from 'react';\nimport styled from 'styled-components';\nimport { Table, Input, notification, Upload, Button, message, Modal, Select, DatePicker, Collapse, InputNumber, Radio } from 'antd';\nimport moment from 'moment';\nimport _ from 'lodash';\nimport StarRatingComponent from 'react-star-rating-component';\nimport swal from 'sweetalert2';\nimport { DeleteOutlined, EditOutlined } from '@ant-design/icons';\nimport Pallete from '../../../../theme';\n\n// components\nimport { InputFilter, ReserveList } from '../../../../Components/User/Normal/auth';\nimport { UserStatistics } from '../../../../Components/User/Normal/statistics';\nimport { UserNavigation } from '../../../../Components/User/Normal/navi';\nimport { NoramlReserveEditModal, ReportMoal, NoReportModal } from '../../../../Components/newModal';\nimport {\n    PointBoxRow,\n    PointBox,\n    PointBox2,\n    PointBox3,\n    NoHistory,\n    PointBoxTitle,\n    PointTotal,\n    PointHistoryRow,\n    PointHistoryNameRow,\n    PointContent,\n    PointHistoryValueRow,\n} from './normal.styled';\n\n// utils\nimport axios from '../../../../Lib/axios';\nimport { UNEMER, ASSIST, LOCAL } from '../../../../Lib/variables';\nimport { datetimeFormatter, timeFormatter, currencyFormatter, getWithcarPrice } from '../../../../Lib/utils';\nimport Profile from '../Profile/profile';\nimport Card from '../Card/card';\nimport ModifyCard from '../Card/cardInfoCheck';\nimport ModifyProfile from '../Profile/profileInfoCheck';\nimport { DivisionLine, WithmateInput, WithmateLabel } from '../../../../Components/Common/input';\nimport { patientColumn, cardColumn } from '../../../../Components/Columns/normal';\nimport { HalfWidthButton } from '../../../../Components/Common/button';\n\nconst { Kakao } = window;\n\nmoment.lang('ko', {\n    weekdays: ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'],\n    weekdaysShort: ['일', '월', '화', '수', '목', '금', '토'],\n});\n\nclass NormalUser extends React.PureComponent {\n    state = {\n        active: 'list', // list, info, point\n        reservedFilter: 'none', // none, reserved, matched, complete\n        paidFilter: 'none', // none, paid, refund\n        modal: false,\n        kakaoModal: false,\n        selected: null,\n        cancelModal: false,\n        modifyModal: false,\n        detailModalPage: 1,\n        reserveDetailModal: false,\n        mateModal: false,\n        mateInfo: {},\n        serviceInfo: null,\n        serviceStatus: null,\n        serviceModal: false,\n        keyword: '',\n        addHalfTime: false,\n        totalPro: 0,\n        totalBasic: 0,\n        pointUsingHistory: [],\n        pointAddHistory: [],\n        couponAddHistory: [],\n\n        patientModal: false,\n        patientModifyModal: false,\n        patientInfo: {},\n        patientId: '',\n\n        cardModal: false,\n        cardModifyModal: false,\n        cardInfo: {},\n        cardId: '',\n\n        appointedCode: '',\n    };\n\n    patientModalOff = () => {\n        const userId = localStorage.getItem('id');\n        this.props.fetchPatient({ id: userId });\n        this.setState({\n            patientModal: false,\n            patientInfo: {},\n        });\n    };\n\n    patientModifyModalOff = () => {\n        const userId = localStorage.getItem('id');\n        this.props.fetchPatient({ id: userId });\n        this.setState({\n            patientModifyModal: false,\n            patientInfo: {},\n        });\n    };\n\n    cardModalOff = () => {\n        const userId = localStorage.getItem('id');\n        this.props.fetchCard({ id: userId });\n        this.setState({\n            cardModal: false,\n            cardInfo: {},\n        });\n    };\n\n    cardModifyModalOff = () => {\n        const userId = localStorage.getItem('id');\n        this.props.fetchCard({ id: userId });\n        this.setState({\n            cardModifyModal: false,\n            cardInfo: {},\n        });\n    };\n\n    componentDidMount = () => {\n        this.syncStep();\n        this.fetchUserInfo();\n    };\n\n    componentDidUpdate = (prevProps, prevState) => {\n        if (prevState.active !== this.state.active) {\n            this.props.history.push(`/user/mypage/${this.state.active}`);\n        }\n    };\n\n    syncStep = () => {\n        const { params } = this.props.match;\n        const { active } = this.state;\n\n        if (params.tab && active !== params.tab) {\n            this.setState({ active: params.tab });\n        } else if (!params.tab) {\n            this.props.history.push(`/user/mypage/list`);\n        }\n    };\n\n    fetchUserInfo = () => {\n        const { userType, id } = this.props.auth;\n        // 예약이력\n        axios.get('/v2/service/user/reserve/list', { params: { userId: id } }).then(resolve => {\n            const { data } = resolve;\n            if (data && Array.isArray(data)) {\n                this.setState({\n                    reserves: data,\n                    totalPro: data.filter(d => d && d.service === UNEMER).length,\n                    totalBasic: data.filter(d => d && d.service === ASSIST).length,\n                });\n            }\n        });\n        // 사용자 포인트\n        axios.get('/v2/user/point/history', { params: { userId: id } }).then(resolve => {\n            const { data } = resolve;\n            if (data && Array.isArray(data)) {\n                this.setState({\n                    pointUsingHistory: data.filter(d => d && d.actionType === 'use'),\n                    pointAddHistory: data.filter(d => d && d.actionType === 'add'),\n                });\n            }\n        });\n        // 사용자 쿠폰\n        axios.get('/v2/user/coupon/history', { params: { userId: id } }).then(resolve => {\n            const { data } = resolve;\n            if (data && Array.isArray(data)) {\n                this.setState({\n                    couponAddHistory: data.filter(d => d && d.actionType === 'add'),\n                });\n            }\n        });\n    };\n\n    updateBasicInfo = () => {\n        const { id, userType } = this.props.auth;\n        const { userInfo } = this.props.app;\n        const { name, contact } = userInfo;\n\n        if (!name || !contact) return message.info('필수정보인 이름과 연락처를 입력해주세요.');\n        if (name.length > 15) return message.info('이름이 너무 깁니다. 이름은 15자 이내로 설정해주세요.');\n\n        const info = { name, contact };\n\n        this.props.modify({ id, userType, info }).then(resolve => {\n            if (resolve && resolve.name) {\n                message.success('정보를 업데이트 하였습니다.');\n                localStorage.setItem('name', resolve.name);\n                this.props.editAuth({ type: 'name', value: resolve.name });\n                this.props.editAuth({ type: 'contact', value: resolve.contact });\n            }\n        });\n    };\n\n    modifyPassword = () => {\n        const { passwordForm, id, userType } = this.props.auth;\n        const { password, newPassword, reNewPassword } = passwordForm;\n\n        if (password === newPassword) return message.info('새 비밀번호는 기존 비밀번호와 달라야합니다.');\n        if (reNewPassword !== newPassword) return message.info('새 비밀번호를 확인해주세요.');\n\n        this.props\n            .modifyPassword({ id, userType, password, newPassword })\n            .then(resolve => {\n                if (resolve && resolve === 'wrong password') {\n                    return message.error('비밀번호가 일치하지 않습니다.');\n                }\n\n                if (resolve && resolve === 'not exist') {\n                    message.error('유효하지 않은 계정입니다. 다시 로그인해주세요.');\n                    return this.props.history.push('/user/logout');\n                }\n\n                if (resolve && resolve === 'success') {\n                    message.success('비밀번호를 변경하였습니다.');\n                    this.props.editPassword({ type: 'clear', value: '' });\n                }\n            })\n            .catch(error => {\n                message.error('서버장애가 발생하였습니다. 관리자에게 문의해주세요.');\n            });\n    };\n\n    withdrawl = () => {\n        const { id, userType, password } = this.props.auth;\n\n        if (!password) return message.info('비밀번호를 입력해주세요.');\n\n        this.props\n            .withdrawlUser({ id, userType, password })\n            .then(resolve => {\n                if (resolve && resolve === 'wrong password') {\n                    return message.info('잘못된 비밀번호입니다.');\n                }\n\n                if (resolve && resolve === 'success') {\n                    message.info('회원탈퇴를 완료하였습니다. 이용해주셔서 감사합니다.');\n                    this.setState({ modal: false });\n                    setTimeout(() => {\n                        this.props.history.push('/user/logout');\n                    }, 500);\n                }\n            })\n            .catch(error => {\n                message.error('서버장애가 발생하였습니다. 관리자에게 문의해주세요.');\n            });\n    };\n\n    tabHandler = type => {\n        this.setState({ active: type });\n    };\n\n    onMateModal = async info => {\n        const { data } = await axios.get('/v2/user/mate/info/detail', {\n            params: {\n                mateId: info.mateId,\n            },\n        });\n\n        this.setState({\n            mateInfo: data,\n            callStatus: info.status,\n            callId: info.callId,\n            reserveId: info.reserveId,\n            mateModal: true,\n            modifyModal: false,\n            reserveDetailModal: false,\n            cancelModal: false,\n        });\n    };\n\n    // 요거 진행해야함\n    onRematch = async () => {\n        const { reserveId, callId } = this.state;\n\n        const { data } = await axios.put('/v2/service/deny/mate/call', {\n            callId,\n            reserveId,\n        });\n\n        if (data === 'check parameters') {\n            return message.warning('요청하신 정보가 올바르지 않습니다. 새로고침 후 다시 시도해주세요.');\n        }\n\n        if (data === 'no mate') {\n            return console.warn('현재 예약 신청항 메이트가 없습니다.');\n        }\n\n        if (data === 'invalid call') {\n            return message.warning('접수내역에 문제가 발생하였습니다. 새로고침 후 다시 시도해주세요.');\n        }\n\n        if (data === 'already matched') {\n            return message.warning('이미 메이트 매칭이 완료되었습니다.');\n        }\n\n        if (data === 'do not') {\n            return message.warning('해당 예약은 메이트 거절 불가한 상태입니다.');\n        }\n\n        if (data === 'success') {\n            message.success('요청완료하였습니다.');\n            setTimeout(() => {\n                window.location.reload();\n            }, 1000);\n        }\n    };\n\n    confirmReserve = () => {\n        const { callId, reserveId } = this.state;\n        const { id } = this.props.auth;\n\n        axios\n            .put('/v2/service/allow/mate/call', {\n                callId,\n                reserveId,\n            })\n            .then(resolve => {\n                const { data } = resolve;\n                if (data === 'check parameters') {\n                    return message.warning('요청하신 정보가 올바르지 않습니다. 새로고침 후 다시 시도해주세요.');\n                }\n                if (data === 'invalid call') {\n                    return message.warning('유효하지않은 접수내역입니다. 새로고침 후 다시 시도해주세요.');\n                }\n                if (data === 'no mate') {\n                    return console.warn('아직 접수 요청중인 메이트가 없습니다. 문제가 계속되면 고객센터로 문의해주세요.');\n                }\n                if (data === 'wrong status') {\n                    return message.warning('해당 예약이 메이트 확정가능한 상태가 아닙니다.');\n                }\n                if (data === 'issue call') {\n                    return message.warning('예약에 문제가 발생했습니다. 고객센터로 문의해주세요.');\n                }\n                if (data === 'success') {\n                    message.success('메이트 확정 완료');\n                    setTimeout(() => {\n                        window.location.reload();\n                    }, 250);\n                }\n            });\n    };\n\n    onDetailModal = reserveId => {\n        const { userType, id } = this.props.auth;\n\n        axios.get('/v2/service/user/reserve/info', { params: { userId: id, reserveId } }).then(resolve => {\n            const { data } = resolve;\n            if (!data) return message.error('죄송합니다. 요청에 실패하였습니다. 잠시 후 다시 시도해주세요.');\n            if (data === 'invalid reserve') return message.warning('유효하지않은 예약입니다.');\n\n            this.setState({\n                reserveDetailModal: true,\n                temp: {\n                    ...data,\n                    disabled: true,\n                    addTime: data.usageTime * 60 + '분',\n                    date: moment(data.reserveDate),\n                    time: moment(data.reserveDate).format('HH').toString(),\n                    minute: moment(data.reserveDate).format('mm').toString(),\n                    meetDate: data.meetDate ? moment(data.meetDate) : '',\n                    meetTime: data.meetDate ? moment(data.meetDate).format('HH').toString() : '',\n                    meetMinute: data.meetDate ? moment(data.meetDate).format('mm').toString() : '',\n                },\n            });\n        });\n    };\n\n    inputHandler = ({ type, value }) => {\n        this.setState({ [type]: value });\n    };\n\n    inputDeepHandler = ({ type, deepType, value }) => {\n        this.setState(prevState => ({\n            [type]: {\n                ...prevState[type],\n                [deepType]: value,\n            },\n        }));\n    };\n\n    onViewReport = item => {\n        const { call } = item;\n        if (!call.reportId) {\n            message.warning('죄송합니다. 아직 담당 메이트가 리포트를 등록하지 않았습니다.');\n            return null;\n        }\n        axios.get('/v2/review/report/viewer', { params: { reportId: call.reportId, callId: call._id } }).then(resolve => {\n            const { data } = resolve;\n\n            this.setState({\n                report: data.report,\n                timeline: data.timeline,\n                selectedServiceName:\n                    item.productInfo.name + (item.productInfo.name.includes('내시경') ? '' : item.service === 'unemergency' ? ' Pro' : ' Basic'),\n                onReportMoal: true,\n            });\n        });\n    };\n\n    onPatientModal = () => {\n        this.setState({ patientModal: true });\n    };\n\n    onPatientModifyModal = () => {\n        this.setState({ patientModifyModal: true });\n    };\n\n    onCardModal = () => {\n        this.setState({ cardModal: true });\n    };\n\n    onCardModifyModal = () => {\n        this.setState({ cardModifyModal: true });\n    };\n\n    onRow = row => {\n        return {\n            onClick: async () => {\n                // const info = await this.onFetchPatientInfo(row);\n                // console.log(row)\n                swal.fire({\n                    title: '환자 프로필 정보',\n                    icon: 'info',\n                    width: '550px',\n                    html: `\n                    <br/>\n                    <div align=\"left\">\n                        <p><b>ㆍ이름 : </b>&nbsp;&nbsp;&nbsp;&nbsp;${row.name}</p>\n                        <p><b>ㆍ관계 : </b>&nbsp;&nbsp;&nbsp;&nbsp;${row.relate}</p>\n                        <p><b>ㆍ성별 : </b>&nbsp;&nbsp;&nbsp;&nbsp;${row.sex}</p>\n                        <p><b>ㆍ나이 : </b>&nbsp;&nbsp;&nbsp;&nbsp;${row.age} 세</p>\n                        <p><b>ㆍ연락처 : </b>&nbsp;&nbsp;&nbsp;&nbsp;${row.contact}</p>\n                        <p><b>ㆍ주소 : </b>&nbsp;&nbsp;&nbsp;&nbsp;${row.starting}</p>\n                        <p><b>ㆍ계단 이용 : </b>&nbsp;&nbsp;&nbsp;&nbsp;${row.environment}</p>\n                        <p><b>ㆍ메이트 주의사항 : </b>&nbsp;&nbsp;&nbsp;&nbsp;${row.caution}</p>\n                    </div>\n                    `,\n                });\n            },\n        };\n    };\n\n    onFetchPatientInfo = async row => {\n        console.log(row);\n        return axios.get('/v1/auth/patient/list/info', { params: { userId: row.userId, patientId: row._id } });\n    };\n\n    onPatientModify = info => {\n        this.setState({ patientModifyModal: true, patientInfo: info });\n        // console.log(info)\n    };\n\n    onPatientDelete = ({ _id }) => {\n        const { id } = this.props.auth;\n        console.log('_id: ', _id);\n\n        const confirmed = window.confirm('해당 환자 프로필을 삭제하시겠습니까?');\n        if (!confirmed) return null;\n\n        this.props\n            .deletePatient({ patientId: _id })\n            .then(resolve => {\n                if (resolve && resolve === 'success') {\n                    const userId = localStorage.getItem('id');\n                    this.props.fetchPatient({ id: userId });\n                    notification.open({\n                        message: '환자 프로필을 삭제하였습니다.',\n                        description: '환자 프로필을 삭제하였습니다.',\n                        type: 'success',\n                    });\n                }\n            })\n            .catch(error => {\n                message.error('서버장애가 발생하였습니다. 관리자에게 문의해주세요.');\n            });\n    };\n\n    onCardModify = info => {\n        this.setState({ cardModifyModal: true, cardInfo: info });\n        // console.log(info)\n    };\n\n    onCardDelete = ({ _id }) => {\n        const { id } = this.props.auth;\n        console.log('_id: ', _id);\n\n        const confirmed = window.confirm('해당 카드정보를 삭제하시겠습니까?');\n        if (!confirmed) return null;\n\n        this.props\n            .deleteCard({ cardId: _id })\n            .then(resolve => {\n                if (resolve && resolve === 'success') {\n                    const userId = localStorage.getItem('id');\n                    this.props.fetchCard({ id: userId });\n                    notification.open({\n                        message: '카드정보를 삭제하였습니다.',\n                        description: '카드정보를 삭제하였습니다.',\n                        type: 'success',\n                    });\n                }\n            })\n            .catch(error => {\n                message.error('서버장애가 발생하였습니다. 관리자에게 문의해주세요.');\n            });\n    };\n\n    // kakao api unlink\n    kakaoUnlink = () => {\n        const { id, userType } = this.props.auth;\n\n        window.Kakao.API.request({\n            url: '/v1/user/unlink',\n            success: function (response) {\n                console.log(response, 'kakao api unlink!');\n                // window.location.href = '/user/logout'\n            },\n            fail: function (error) {\n                console.log(error, 'kakao api unlink error');\n            },\n        });\n\n        this.props\n            .withdrawlKakao({ id, userType })\n            .then(resolve => {\n                if (resolve && resolve === 'success') {\n                    notification.open({\n                        message: '회원탈퇴를 완료하였습니다.',\n                        description: '그동안 위드메이트의 서비스를 이용해주셔서 감사합니다.',\n                        type: 'success',\n                    });\n                    this.setState({ kakaoModal: false });\n                    setTimeout(() => {\n                        this.props.history.push('/user/logout');\n                    }, 500);\n                }\n            })\n            .catch(error => {\n                message.error('서버장애가 발생하였습니다. 관리자에게 문의해주세요.');\n            });\n    };\n\n    onAddCoupon = async () => {\n        const { appointedCode } = this.state;\n        if (!appointedCode) {\n            // notification.open({\n            //     message: '쿠폰 코드가 입력되지 않았습니다',\n            //     description: '쿠폰 코드를 입력해주세요',\n            //     type: 'warning',\n            // });\n        }\n\n        if (appointedCode) {\n            const { data } = await axios.post('/v2/user/add/coupon', {\n                userId: this.props.auth.id,\n                userName: this.props.auth.name,\n                appointedCode,\n                info: {\n                    couponName: '',\n                    couponValue: '',\n                },\n            });\n\n            if (!data || data === 'check parameters') {\n                notification.open({\n                    message: '쿠폰 코드 등록에 실패하였습니다',\n                    description: '다시 한번 쿠폰 코드를 입력해주세요',\n                    type: 'warning',\n                });\n            }\n\n            if (data === 'wrong access') {\n                notification.open({\n                    message: '쿠폰 코드가 일치하지 않습니다',\n                    description: '입력하신 쿠폰 코드를 다시한번 확인하세요',\n                    type: 'warning',\n                });\n            }\n\n            if (data === 'duplicate') {\n                notification.open({\n                    message: '이미 등록된 쿠폰 코드입니다',\n                    description: '다른 쿠폰 코드를 입력해주세요',\n                    type: 'warning',\n                });\n            }\n\n            if (data === 'success') {\n                notification.open({\n                    message: '쿠폰 코드가 등록되었습니다',\n                    description: '포인트가 정상적으로 지급되었습니다',\n                    type: 'success',\n                });\n                setTimeout(() => {\n                    window.location.reload();\n                }, 250);\n            }\n        }\n    };\n\n    handleChange = e => {\n        this.setState({ [e.target.title]: e.target.value });\n    };\n\n    render() {\n        // console.log(this.props.auth)\n        const { auth } = this.props;\n        const { password, newPassword, reNewPassword } = auth.passwordForm;\n        const { userInfo } = this.props.app;\n        // console.log(userInfo)\n        const { pointUsingHistory, pointAddHistory, couponAddHistory, active, reservedFilter, reserves, mateInfo, keyword, totalPro, totalBasic } = this.state;\n\n        // console.log(auth);\n        const list = keyword\n            ? reserves.filter(reserve => {\n                  const { call } = reserve;\n\n                  return (\n                      (reserve && reserve.reserveCode && reserve.reserveCode.toLowerCase().includes(keyword.toLowerCase())) ||\n                      (call && call.mate && call.mate.toLowerCase().includes(keyword.toLowerCase()))\n                  );\n              })\n            : reserves;\n\n        return (\n            <div className='auth-container'>\n                <div className='navigation-container'>\n                    <div className='inner-container'>\n                        <UserStatistics auth={auth} pro={totalPro || 0} basic={totalBasic || 0} />\n                        <UserNavigation\n                            active={active}\n                            tabHandler={this.tabHandler}\n                            onPatientModal={this.onPatientModal}\n                            onPatientModifyModal={this.onPatientModifyModal}\n                            onCardModal={this.onCardModal}\n                            onCardModifyModal={this.onCardModifyModal}\n                        />\n                    </div>\n                </div>\n\n                <div className='usage-info-container'>\n                    <div className='inner-container'>\n                        {active === 'list' ? (\n                            <>\n                                <div className='filter-wrapper'>\n                                    <Filter\n                                        filter={reservedFilter}\n                                        value='none'\n                                        name='전체'\n                                        onClick={() => {\n                                            this.setState({ reservedFilter: 'none' });\n                                        }}\n                                    />\n                                    <Filter\n                                        filter={reservedFilter}\n                                        value='reserved'\n                                        name='접수대기'\n                                        onClick={() => {\n                                            this.setState({ reservedFilter: 'reserved' });\n                                        }}\n                                    />\n\n                                    <Filter\n                                        filter={reservedFilter}\n                                        value='matched'\n                                        name='예약완료 (진행중)'\n                                        onClick={() => {\n                                            this.setState({ reservedFilter: 'matched' });\n                                        }}\n                                    />\n                                    <Filter\n                                        filter={reservedFilter}\n                                        value='complete'\n                                        name='서비스 종료'\n                                        onClick={() => {\n                                            this.setState({ reservedFilter: 'complete' });\n                                        }}\n                                    />\n                                </div>\n\n                                <InputFilter\n                                    keyword={this.state.keyword}\n                                    keywordHandler={value => {\n                                        this.setState({ keyword: value });\n                                    }}\n                                />\n                                <ReserveList\n                                    list={\n                                        reservedFilter === 'none'\n                                            ? list\n                                            : reservedFilter === 'reserved'\n                                            ? list.filter(p => p.call.status === '접수대기' || p.call.status === '예약접수')\n                                            : reservedFilter === 'matched'\n                                            ? list.filter(\n                                                  p =>\n                                                      p.call.status === '예약완료' ||\n                                                      p.call.status === '접선' ||\n                                                      p.call.status === '병원 출발' ||\n                                                      p.call.status === '병원 도착' ||\n                                                      p.call.status === '진료 시작' ||\n                                                      p.call.status === '진료 종료' ||\n                                                      p.call.status === '자택 출발',\n                                              )\n                                            : reservedFilter === 'complete'\n                                            ? list.filter(p => p.call.status === '서비스 종료')\n                                            : []\n                                    }\n                                    onReport={this.onViewReport}\n                                    onDetailModal={_id => {\n                                        this.onDetailModal(_id);\n                                    }}\n                                    onMateModal={info => {\n                                        this.onMateModal(info);\n                                    }}\n                                />\n                            </>\n                        ) : null}\n\n                        {active === 'info' ? (\n                            <div className='user-info-wrapper'>\n                                <div>\n                                    <div className='default-info wrapper'>\n                                        <div className='title-wrapper'>\n                                            <p>프로필 수정</p>\n                                            <p style={{ fontSize: '7px', fontWeight: 'normal', color: 'gray', marginTop: '5px' }}>\n                                                위드메이트의 이름과 연락처를 수정 하실 수 있습니다.\n                                            </p>\n                                        </div>\n\n                                        <div className='service'>\n                                            <p className='info'>이름</p>\n                                            <div>\n                                                <Input\n                                                    placeholder='성함을 입력해주세요.'\n                                                    value={userInfo.name}\n                                                    onChange={ev => {\n                                                        this.props.onEdit({ type: 'name', value: ev.target.value });\n                                                    }}\n                                                />\n                                            </div>\n                                        </div>\n\n                                        <div className='service'>\n                                            <p className='info'>연락처</p>\n                                            <div>\n                                                <Input\n                                                    placeholder='연락처를 입력해주세요.'\n                                                    value={userInfo.contact}\n                                                    onChange={ev => {\n                                                        this.props.onEdit({ type: 'contact', value: ev.target.value });\n                                                    }}\n                                                />\n                                            </div>\n                                        </div>\n\n                                        <div className='service' style={{ marginBottom: '0px' }}>\n                                            <Button onClick={this.updateBasicInfo} style={{ backgroundColor: '#484848' }}>\n                                                수정된 프로필 저장\n                                            </Button>\n                                        </div>\n                                    </div>\n\n                                    <div className='card-info wrapper'>\n                                        <div className='title-wrapper'>\n                                            <p>결제 카드 정보</p>\n                                            <p style={{ fontSize: '7px', fontWeight: 'normal', color: 'gray', marginTop: '5px' }}>\n                                                등록된 카드정보를 통해 서비스 결제를 하실 수 있습니다.\n                                            </p>\n                                        </div>\n\n                                        <Card {...this.props} visible={this.state.cardModal} onClose={this.cardModalOff} />\n                                        <ModifyCard {...this.state.cardInfo} visible={this.state.cardModifyModal} onClose={this.cardModifyModalOff} />\n\n                                        <Table\n                                            dataSource={this.props.auth.cardList}\n                                            columns={cardColumn({ onDelete: this.onCardDelete, onModify: this.onCardModify })}\n                                            pagination={{ pageSize: 3 }}\n                                        />\n\n                                        <div className='service' style={{ marginBottom: '0px' }}>\n                                            <Button onClick={this.onCardModal} style={{ backgroundColor: '#484848' }}>\n                                                카드 정보 추가\n                                            </Button>\n                                        </div>\n                                    </div>\n\n                                    {/* 수정해야할 부분 - KAKAO 로그인인 경우 안보이게*/}\n                                    {this.props.auth.type === LOCAL ? (\n                                        <div className='privacy-info wrapper'>\n                                            <div className='title-wrapper'>\n                                                <p>비밀번호 변경</p>\n                                            </div>\n\n                                            <div className='service'>\n                                                <p className='info'>현재 비밀번호</p>\n                                                <div>\n                                                    <Input.Password\n                                                        password='true'\n                                                        placeholder='현재 비밀번호를 입력해주세요.'\n                                                        value={password}\n                                                        onChange={ev => {\n                                                            this.props.editPassword({ type: 'password', value: ev.target.value });\n                                                        }}\n                                                    />\n                                                </div>\n                                            </div>\n\n                                            <div className='service'>\n                                                <p className='info'>새 비밀번호</p>\n                                                <div>\n                                                    <Input.Password\n                                                        password='true'\n                                                        placeholder='새 비밀번호를 입력해주세요.'\n                                                        value={newPassword}\n                                                        onChange={ev => {\n                                                            this.props.editPassword({ type: 'newPassword', value: ev.target.value });\n                                                        }}\n                                                    />\n                                                </div>\n                                            </div>\n\n                                            <div className='service'>\n                                                <p className='info'>새 비밀번호 확인</p>\n                                                <div>\n                                                    <Input.Password\n                                                        password='true'\n                                                        placeholder='새 비밀번호를 확인해주세요.'\n                                                        value={reNewPassword}\n                                                        onChange={ev => {\n                                                            this.props.editPassword({ type: 'reNewPassword', value: ev.target.value });\n                                                        }}\n                                                    />\n                                                </div>\n                                            </div>\n\n                                            <div className='service'>\n                                                <Button\n                                                    onClick={this.modifyPassword}\n                                                    style={{ backgroundColor: '#ffffff', color: '#606060', marginBottom: '0px' }}\n                                                >\n                                                    비밀번호 변경\n                                                </Button>\n                                            </div>\n                                        </div>\n                                    ) : (\n                                        <div className='etc-info wrapper' style={{ marginTop: '0px' }}>\n                                            <div className='title-wrapper'>\n                                                <p>기타</p>\n                                            </div>\n\n                                            <div className='service'>\n                                                <div className='flex-wrapper'>\n                                                    <p\n                                                        onClick={() => {\n                                                            this.props.history.push('/policy/privacy');\n                                                        }}\n                                                    >\n                                                        개인정보 처리방침 <b>{'>'}</b>\n                                                    </p>\n                                                    <p\n                                                        onClick={() => {\n                                                            this.props.history.push('/policy/terms');\n                                                        }}\n                                                    >\n                                                        서비스 이용약관 <b>{'>'}</b>\n                                                    </p>\n                                                </div>\n                                            </div>\n\n                                            <div className='service'>\n                                                <Button\n                                                    style={{ backgroundColor: '#b7b7b7' }}\n                                                    onClick={() => {\n                                                        this.props.history.push('/user/logout');\n                                                    }}\n                                                >\n                                                    로그아웃\n                                                </Button>\n                                            </div>\n\n                                            <div className='service' style={{ marginBottom: '0px' }}>\n                                                {this.props.auth.type === LOCAL ? (\n                                                    <Button\n                                                        onClick={() => {\n                                                            this.setState({ modal: true });\n                                                        }}\n                                                        style={{ color: '#a7a7a7', height: '30px' }}\n                                                    >\n                                                        회원탈퇴\n                                                    </Button>\n                                                ) : (\n                                                    <Button\n                                                        onClick={() => {\n                                                            this.setState({ kakaoModal: true });\n                                                        }}\n                                                        style={{ color: '#a7a7a7', height: '30px' }}\n                                                    >\n                                                        카카오 회원탈퇴\n                                                    </Button>\n                                                )}\n                                            </div>\n                                        </div>\n                                    )}\n                                    <div className='clearfix' />\n                                </div>\n                                {this.props.auth.type === LOCAL ? (\n                                    <div>\n                                        <div className='etc-info wrapper'>\n                                            <div className='title-wrapper'>\n                                                <p>기타</p>\n                                            </div>\n\n                                            <div className='service'>\n                                                <div className='flex-wrapper'>\n                                                    <p\n                                                        onClick={() => {\n                                                            this.props.history.push('/policy/privacy');\n                                                        }}\n                                                    >\n                                                        개인정보 처리방침 <b>{'>'}</b>\n                                                    </p>\n                                                    <p\n                                                        onClick={() => {\n                                                            this.props.history.push('/policy/terms');\n                                                        }}\n                                                    >\n                                                        서비스 이용약관 <b>{'>'}</b>\n                                                    </p>\n                                                </div>\n                                            </div>\n\n                                            <div className='service'>\n                                                <Button\n                                                    style={{ backgroundColor: '#b7b7b7' }}\n                                                    onClick={() => {\n                                                        this.props.history.push('/user/logout');\n                                                    }}\n                                                >\n                                                    로그아웃\n                                                </Button>\n                                            </div>\n\n                                            <div className='service' style={{ marginBottom: '0px' }}>\n                                                {this.props.auth.type === LOCAL ? (\n                                                    <Button\n                                                        onClick={() => {\n                                                            this.setState({ modal: true });\n                                                        }}\n                                                        style={{ color: '#a7a7a7', height: '30px' }}\n                                                    >\n                                                        회원탈퇴\n                                                    </Button>\n                                                ) : (\n                                                    <Button\n                                                        onClick={() => {\n                                                            this.setState({ kakaoModal: true });\n                                                        }}\n                                                        style={{ color: '#a7a7a7', height: '30px' }}\n                                                    >\n                                                        카카오 회원탈퇴\n                                                    </Button>\n                                                )}\n                                            </div>\n                                        </div>\n                                        <div className='clearfix' />\n                                    </div>\n                                ) : null}\n                            </div>\n                        ) : null}\n\n                        {active === 'point' && (\n                            <>\n                                <PointBoxRow>\n                                    <PointBox>\n                                        <PointBoxTitle>현재 잔여 포인트</PointBoxTitle>\n                                        <PointTotal>{userInfo.point ? currencyFormatter(userInfo.point) : 0} 원</PointTotal>\n                                    </PointBox>\n                                </PointBoxRow>\n                                <PointBoxRow>\n                                    <PointBox3>\n                                        <PointBoxTitle>포인트 적립 내역</PointBoxTitle>\n                                        {pointAddHistory && pointAddHistory.length > 0 ? (\n                                            <PointContent>\n                                                {pointAddHistory.map((item, index) => (\n                                                    <PointHistoryRow key={'add-point-' + index.toString()}>\n                                                        <PointHistoryNameRow add>\n                                                            <span className='title'>{item.name}</span>\n                                                            <span className='value'>+ {currencyFormatter(item.value)} 원</span>\n                                                        </PointHistoryNameRow>\n                                                        <PointHistoryValueRow>\n                                                            <span className='title'>{moment(item.addedAt).format('YY년 M월 D일 HH:mm')}</span>\n                                                            <span className='value'>잔여 포인트 {currencyFormatter(item.leftValue)} 원</span>\n                                                        </PointHistoryValueRow>\n                                                    </PointHistoryRow>\n                                                ))}\n                                            </PointContent>\n                                        ) : (\n                                            <NoHistory>내역 없음</NoHistory>\n                                        )}\n                                    </PointBox3>\n                                    <PointBox3>\n                                        <PointBoxTitle>포인트 사용 내역</PointBoxTitle>\n                                        {pointUsingHistory && pointUsingHistory.length > 0 ? (\n                                            <PointContent style={{ paddingRight: '10px' }}>\n                                                {pointUsingHistory.map((item, index) => (\n                                                    <PointHistoryRow key={'using-point-' + index.toString()}>\n                                                        <PointHistoryNameRow>\n                                                            <span className='title'>{item.name}</span>\n                                                            <span className='value'>- {currencyFormatter(item.value)} 원</span>\n                                                        </PointHistoryNameRow>\n                                                        <PointHistoryValueRow>\n                                                            <span className='title'>{moment(item.usedAt).format('YY년 M월 D일 HH:mm')}</span>\n                                                            <span className='value'>잔여 포인트 {currencyFormatter(item.leftValue)} 원</span>\n                                                        </PointHistoryValueRow>\n                                                    </PointHistoryRow>\n                                                ))}\n                                            </PointContent>\n                                        ) : (\n                                            <NoHistory>내역 없음</NoHistory>\n                                        )}\n                                    </PointBox3>\n                                </PointBoxRow>\n                                <PointBoxRow>\n                                    <PointBox2>\n                                        <PointBoxTitle>쿠폰 등록</PointBoxTitle>\n                                        <CouponInput\n                                            placeholder='쿠폰 번호를 입력하세요'\n                                            title='appointedCode'\n                                            value={this.state.appointedCode}\n                                            onChange={this.handleChange}\n                                        />\n                                        <Button\n                                            style={{\n                                                margin: '0 auto',\n                                                width: '100px',\n                                                height: '45px',\n                                                backgroundColor: '#3bc1ff',\n                                                color: 'white',\n                                                fontWeight: 'bold',\n                                            }}\n                                            onClick={() => {\n                                                this.onAddCoupon();\n                                            }}\n                                        >\n                                            등록\n                                        </Button>\n\n                                        <DivisionLine />\n                                        <DivisionLine />\n                                        <DivisionLine />\n\n                                        <PointBoxTitle>쿠폰 사용 내역</PointBoxTitle>\n                                        {couponAddHistory && couponAddHistory.length > 0 ? (\n                                            <PointContent style={{ paddingRight: '10px' }}>\n                                                {couponAddHistory.map((item, index) => (\n                                                    <PointHistoryRow key={'add-coupon-' + index.toString()}>\n                                                        <PointHistoryNameRow add>\n                                                            <span className='title'>{item.couponName}</span>\n                                                            <span className='value'>+ {currencyFormatter(item.couponValue)} P</span>\n                                                        </PointHistoryNameRow>\n                                                        <PointHistoryValueRow>\n                                                            <span className='title'>{moment(item.addedAt).format('YY년 M월 D일 HH:mm')}</span>\n                                                        </PointHistoryValueRow>\n                                                    </PointHistoryRow>\n                                                ))}\n                                            </PointContent>\n                                        ) : (\n                                            <NoHistory>사용 내역 없음</NoHistory>\n                                        )}\n                                    </PointBox2>\n                                </PointBoxRow>\n                            </>\n                        )}\n\n                        {active === 'profile' ? (\n                            <div className='user-profile-wrapper'>\n                                <div>\n                                    <div className='default-profile wrapper'>\n                                        <div className='title-wrapper'>\n                                            <p>환자 프로필 목록</p>\n                                            <p style={{ fontSize: '12px', fontWeight: 'normal', color: 'gray', marginTop: '5px' }}>\n                                                위드메이트 서비스를 사용하시는 프로필을 관리할 수 있습니다.\n                                            </p>\n                                            <div className='service' style={{ display: 'flex', justifyContent: 'right' }}>\n                                                <Button onClick={this.onPatientModal} style={{ backgroundColor: '#3bc1ff', borderRadius: '5px' }}>\n                                                    프로필 등록\n                                                </Button>\n\n                                                <Profile {...this.props} visible={this.state.patientModal} onClose={this.patientModalOff} />\n                                                <ModifyProfile\n                                                    {...this.state.patientInfo}\n                                                    visible={this.state.patientModifyModal}\n                                                    onClose={this.patientModifyModalOff}\n                                                />\n                                            </div>\n                                        </div>\n\n                                        <div className='profileList'>\n                                            <Table\n                                                dataSource={this.props.auth.patientList}\n                                                columns={patientColumn({ onDelete: this.onPatientDelete, onModify: this.onPatientModify })}\n                                                onRow={this.onRow}\n                                                pagination={{\n                                                    pageSize: 5,\n                                                }}\n                                            />\n                                        </div>\n                                    </div>\n\n                                    <div className='clearfix' />\n                                </div>\n                            </div>\n                        ) : null}\n                    </div>\n                </div>\n\n                {this.state.reserveDetailModal && (\n                    <NoramlReserveEditModal\n                        visible={this.state.reserveDetailModal}\n                        visibleHandler={() => {\n                            this.setState({ temp: null, reserveDetailModal: false });\n                        }}\n                        data={this.state.temp}\n                        inputDeepHandler={this.inputDeepHandler}\n                    />\n                )}\n\n                {this.state.onReportMoal && (\n                    <ReportMoal\n                        visible={this.state.onReportMoal}\n                        visibleHandler={() => {\n                            this.setState({\n                                report: null,\n                                timeline: null,\n                                onReportMoal: false,\n                                selectedServiceName: '',\n                            });\n                        }}\n                        data={{\n                            report: this.state.report,\n                            timeline: this.state.timeline,\n                            selectedServiceName: this.state.selectedServiceName,\n                        }}\n                    />\n                )}\n\n                <Modal\n                    visible={this.state.modal}\n                    title='회원탈퇴'\n                    footer={null}\n                    onCancel={() => {\n                        this.setState({ modal: false });\n                    }}\n                >\n                    <DivisionLine />\n\n                    <p>\n                        <b>* 회원탈퇴 전, 유의사항을 확인해 주시기 바랍니다.</b> <DivisionLine />\n                        - 회원탈퇴 시 위드메이트 서비스 이용이 불가합니다. <br />\n                        - 회원탈퇴 후 회원 정보 및 이용 기록은 모두 삭제되며, <br /> &nbsp;&nbsp;복구 가능하지 않습니다.\n                    </p>\n\n                    <DivisionLine />\n\n                    <label>\n                        <b>* 비밀번호</b>\n                    </label>\n                    <Input.Password\n                        style={{ height: '36px', marginBottom: '20px' }}\n                        password='true'\n                        placeholder='회원탈퇴를 위해 비밀번호를 입력해주세요.'\n                        value={auth.password}\n                        onChange={ev => {\n                            this.props.editAuth({ type: 'password', value: ev.target.value });\n                        }}\n                    />\n                    <br />\n\n                    <div style={{ display: 'flex' }}>\n                        <Button\n                            style={{ flex: 1, marginRight: '8px', height: '40px' }}\n                            type='danger'\n                            onClick={() => {\n                                this.setState({ modal: false });\n                            }}\n                        >\n                            취소\n                        </Button>\n                        <Button style={{ flex: 1, height: '40px' }} type='primary' onClick={this.withdrawl}>\n                            확인\n                        </Button>\n                    </div>\n                </Modal>\n\n                <Modal\n                    visible={this.state.kakaoModal}\n                    title='카카오 회원탈퇴'\n                    footer={null}\n                    onCancel={() => {\n                        this.setState({ modal: false });\n                    }}\n                >\n                    <DivisionLine />\n\n                    <p>\n                        <b>* 회원탈퇴 전, 유의사항을 확인해 주시기 바랍니다.</b> <DivisionLine />\n                        - 회원탈퇴 시 위드메이트 서비스 이용이 불가합니다. <br />\n                        - 회원탈퇴 후 회원 정보 및 이용 기록은 모두 삭제되며, <br /> &nbsp;&nbsp;복구 가능하지 않습니다.\n                    </p>\n                    <DivisionLine />\n                    <label>\n                        <b>카카오 계정 회원 탈퇴를 하시겠습니까 ?</b>\n                    </label>\n                    <DivisionLine />\n                    <div style={{ display: 'flex' }}>\n                        <Button\n                            style={{ flex: 1, marginRight: '8px', height: '40px' }}\n                            type='danger'\n                            onClick={() => {\n                                this.setState({ kakaoModal: false });\n                            }}\n                        >\n                            취소\n                        </Button>\n                        <Button style={{ flex: 1, height: '40px' }} type='primary' onClick={this.kakaoUnlink}>\n                            확인\n                        </Button>\n                    </div>\n                </Modal>\n\n                <Modal\n                    visible={this.state.mateModal}\n                    title='담당 메이트 정보'\n                    footer={null}\n                    onCancel={() => {\n                        this.setState({ mateModal: false });\n                    }}\n                >\n                    <div className='mate-img-wrapper'>\n                        <img src={mateInfo && mateInfo.mate ? mateInfo.mate.photo : '사진이 제공되지 않았습니다.'} alt='mate' />\n                    </div>\n                    <div className='mate-info-wrapper'>\n                        <div>\n                            <p className='label'>이름</p>\n                            <div className='input'>\n                                <p className='value'>{mateInfo && mateInfo.mate ? mateInfo.mate.name : ''}</p>\n                            </div>\n                        </div>\n                        <div>\n                            <p className='label'>연락처</p>\n                            <div className='input'>\n                                <p className='value'>{mateInfo && mateInfo.mate ? mateInfo.mate.contact : ''}</p>\n                            </div>\n                        </div>\n                        <div>\n                            <p className='label'>Pro 서비스 이력</p>\n                            <div className='input'>\n                                <p className='value'>{(mateInfo && mateInfo.review && mateInfo.review.unemergency) || 0}건</p>\n                            </div>\n                        </div>\n                        <div>\n                            <p className='label'>Basic 서비스 이력</p>\n                            <div className='input'>\n                                <p className='value'>{(mateInfo && mateInfo.review && mateInfo.review.assist) || 0}건</p>\n                            </div>\n                        </div>\n                        {mateInfo && mateInfo.review ? (\n                            <div>\n                                <p className='label'>동행 서비스 이행 평점</p>\n                                <StarRatingComponent\n                                    starCount={5}\n                                    value={(mateInfo.review && mateInfo.review.score) || 4}\n                                    renderStarIcon={(index, value) => {\n                                        return (\n                                            <img\n                                                style={{ width: '24px', height: '23px', marginRight: '8px' }}\n                                                src={`/assets/images/icon_${index <= value ? 'active_star' : 'star'}.png`}\n                                            />\n                                        );\n                                    }}\n                                    onStarClick={() => {}}\n                                />\n                            </div>\n                        ) : null}\n                        <Button\n                            type='primary'\n                            onClick={() => {\n                                if (mateInfo && this.state.callStatus === '예약접수') {\n                                    this.confirmReserve();\n                                } else {\n                                    this.setState({ mateModal: false });\n                                }\n                            }}\n                        >\n                            {mateInfo && this.state.callStatus === '예약접수' ? '예약 및 메이트 확정하기' : '확인'}\n                        </Button>\n                        {mateInfo && this.state.callStatus === '예약접수' ? (\n                            <Button style={{ marginTop: '12px' }} onClick={this.onRematch}>\n                                메이트 거절 및 재배정\n                            </Button>\n                        ) : null}\n                    </div>\n                </Modal>\n            </div>\n        );\n    }\n}\nexport default NormalUser;\n\nconst Filter = ({ filter, value, onClick, name }) => {\n    return (\n        <span className={`filter ${filter === value ? 'active' : ''}`} onClick={onClick}>\n            {name}\n        </span>\n    );\n};\n\nconst PanelHead = styled.p`\n    font-size: 14px;\n    font-weight: 600;\n    line-height: 24px;\n    height: 24px;\n    color: rgba(0, 0, 0, 0.7);\n    margin: 0px;\n    padding: 0px;\n`;\n\nconst AddTimeSelector = styled.div`\n    display: flex;\n    flex-wrap: wrap;\n\n    min-height: 60px;\n\n    > span {\n        margin-right: 8px;\n        margin-bottom: 6px;\n\n        display: inline-block;\n\n        padding-left: 12px;\n        padding-right: 12px;\n        height: 24px;\n        line-height: 24px;\n\n        font-size: 12px;\n        text-align: center;\n\n        background-color: #dedede;\n        color: #ffffff;\n\n        border-radius: 10px;\n        white-space: nowrap;\n        cursor: pointer;\n\n        @media (min-width: 768px) {\n            &:hover {\n                transition: all 0.5s;\n                background-color: #3bc1ff;\n            }\n        }\n\n        &.active {\n            background-color: #3bc1ff;\n        }\n    }\n`;\n\nconst CouponInput = styled(Input)`\n    width: 100%;\n    height: 46px;\n    line-height: 44px;\n    ${props => props.small && `max-width: 102px; height: 32px; line-height: 29px;`}\n\n    margin-bottom: 0px;\n\n    color: ${Pallete.dark100};\n    font-size: 14px;\n    font-weight: normal;\n\n    border-radius: 4px;\n    border: 1px solid ${Pallete.dark50} !important;\n    background-color: #ffffff;\n\n    @media (max-width: 480px) {\n        font-size: 12px;\n        border: 1px solid ${Pallete.dark50} !important;\n    }\n\n    &.ant-input {\n        width: 65%;\n        height: 45px;\n        line-height: 44px;\n\n        margin-bottom: 0px;\n\n        color: ${Pallete.dark100};\n        font-size: 14px;\n        font-weight: normal;\n\n        border-radius: 4px;\n        border: 1px solid ${Pallete.dark50} !important;\n        background-color: #ffffff;\n\n        &::placeholder {\n            color: ${Pallete.dark60};\n            font-size: 14px;\n            font-weight: normal;\n        }\n\n        @media (max-width: 480px) {\n            font-size: 12px;\n            border: 1px solid ${Pallete.dark50} !important;\n\n            &::placeholder {\n                font-size: 12px;\n            }\n        }\n    }\n\n    &:focus {\n        border: 1px solid ${Pallete.blue100} !important;\n        transition: all 0.3s;\n        box-shadow: none;\n        outline: 0;\n    }\n\n    &:disabled {\n        background-color: ${Pallete.dark10};\n    }\n\n    &.ant-input-affix-wrapper-disabled {\n        background-color: #f5f5f5;\n    }\n\n    &.ant-input-affix-wrapper {\n        height: 46px;\n        line-height: 43px;\n        padding: 0px 11px;\n\n        ${props => props.small && `max-width: 102px; height: 32px; line-height: 29px;`}\n\n        .ant-input {\n            width: 100% !important;\n            height: 100%;\n            line-height: 43px;\n\n            color: ${Pallete.dark100};\n            font-size: 14px;\n            font-weight: normal;\n\n            border: 0px !important;\n            &::placeholder {\n                color: ${Pallete.dark60};\n                font-size: 14px;\n                font-weight: normal;\n            }\n\n            &:focus {\n                border: 1px solid ${Pallete.blue100} !important;\n                transition: all 0.3s;\n                box-shadow: none;\n                outline: 0;\n            }\n\n            @media (max-width: 480px) {\n                font-size: 12px;\n                line-height: 43px;\n\n                &:focus {\n                    border: 1px solid ${Pallete.dark50} !important;\n                }\n\n                &::placeholder {\n                    font-size: 12px;\n                }\n            }\n            &:disabled {\n                background-color: ${Pallete.dark10};\n            }\n        }\n\n        .ant-input-suffix {\n            font-size: 14px;\n            font-weight: normal;\n            font-stretch: normal;\n            text-align: right;\n            color: ${Pallete.dark100};\n\n            @media (max-width: 480px) {\n                font-size: 12px;\n            }\n        }\n    }\n`;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport StyledNormalContainer from './normal.styled';\nimport Normal from './normal';\nimport { USER } from '../../../../Lib/variables';\nimport {\n    // getPayHistory,\n    // getReserveUsage,\n    // getReserveList,\n    getUserInfo,\n    editUserForm,\n    modifyUserInfo,\n    cancelReserve,\n    modifyReserve,\n} from '../../../../Reducer/Modules/app';\nimport { editAuth, editPasswordForm, modifyPassword, withdrawlUser, withdrawlKakao,\n    editAddPatientForm, addPatient, fetchPatient, deletePatient, modifyPatient, getPatientInfo, \n    fetchCard, editAddCardForm, addCard, getCardInfo, modifyCard, deleteCard, checkCouponCode } from '../../../../Reducer/Modules/auth';\n\nclass NormalPage extends React.PureComponent {\n    componentDidMount = () => {\n        const userId = localStorage.getItem('id');\n        const userType = localStorage.getItem('userType');\n        const type = localStorage.getItem('type');\n\n        if (userId) {\n            if (userType !== USER) {\n                window.location.href = '/';\n            } else {\n                this.props.getUserInfo({ id: userId, userType, type });\n                this.props.fetchPatient({ id: userId });\n                this.props.fetchCard({ id: userId });\n            }\n        } else {\n            this.props.history.push('/user/login');\n        }\n    };\n\n    render() {\n        if (this.props.auth.userType !== USER) {\n            return <div></div>;\n        }\n\n        return (\n            <StyledNormalContainer>\n                <Normal {...this.props} />\n            </StyledNormalContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({ app, auth }) => ({\n    app,\n    auth,\n});\n\nconst mapDispatchToProps = dispatch => ({\n    fetchPatient: ({ id }) => dispatch(fetchPatient({ id })),\n    fetchCard: ({ id }) => dispatch(fetchCard({ id })),\n\n    getUserInfo: ({ id, userType, type }) => dispatch(getUserInfo({ id, userType, type })),\n    onEdit: ({ type, value }) => dispatch(editUserForm({ type, value })),\n    modify: ({ id, userType, info }) => dispatch(modifyUserInfo({ id, userType, info })),\n    modifyPassword: ({ id, userType, password, newPassword }) => dispatch(modifyPassword({ id, userType, password, newPassword })),\n    editAuth: ({ type, value }) => dispatch(editAuth({ type, value })),\n    editPassword: ({ type, value }) => dispatch(editPasswordForm({ type, value })),\n    \n    withdrawlUser: ({ id, userType, password }) => dispatch(withdrawlUser({ id, userType, password })),\n    withdrawlKakao: ({ id, userType }) => dispatch(withdrawlKakao({ id, userType })),\n\n    cancelReserve: ({ callId }) => dispatch(cancelReserve({ callId })),\n    modifyReserve: ({ reserveId, info }) => dispatch(modifyReserve({ reserveId, info })),\n    \n    editAddPatientForm: ({ type, value }) => dispatch(editAddPatientForm({ type, value })),\n    addPatient: (info) => dispatch(addPatient(info)),\n    deletePatient: ({ patientId }) => dispatch(deletePatient({ patientId })),\n    modifyPatient: ({ id, patientId, info }) => dispatch(modifyPatient({ id, patientId, info })),\n    getPatientInfo: ({ id, patientId }) => dispatch(getPatientInfo({ id, patientId })),\n\n    editAddCardForm: ({ type, value }) => dispatch(editAddCardForm({ type, value })),\n    addCard: (info) => dispatch(addCard(info)),\n    getCardInfo: ({ id, cardId }) => dispatch(getCardInfo({ id, cardId })),\n    modifyCard: ({ id, cardId, info }) => dispatch(modifyCard({ id, cardId, info })),\n    deleteCard: ({ cardId }) => dispatch(deleteCard({ cardId })),\n});\n \nexport default connect(mapStateToProps, mapDispatchToProps)(NormalPage);\n","import styled from 'styled-components';\nimport { sizeHandler, mainColor } from '../../../../theme';\n\nconst StyledPendingContainer = styled.div`\n    margin-top: 55px;\n    min-height: 100vh;\n    background-color: rgba(0, 0, 0, 0.02);\n    // background-size: cover;\n    // background-repeat: no-repeat;\n    // background-position: center;\n\n    .inner-container {\n        padding: 0px;\n        padding-top: 144px;\n        padding-bottom: 100px;\n\n        .pending-form {\n            background-color: white;\n            border-radius: 8px;\n            box-shadow: 2px 2px 10px 3px rgba(0, 0, 0, 0.1);\n            width: 100%;\n            max-width: 340px;\n            margin: 0 auto;\n            padding: 24px;\n\n            .login-title {\n                margin-bottom: 24px;\n\n                p {\n                    font-size: ${sizeHandler(32)};\n                    font-weight: bold;\n                    letter-spacing: -0.7px;\n                    color: rgba(0, 0, 0, 0.7);\n                }\n            }\n\n            .form {\n                .img-wrapper {\n                    display: flex;\n                    align-items: center;\n                    justify-content: center;\n                    height: 124px;\n                    padding: 20px 0px;\n\n                    img {\n                        height: 100%;\n                    }\n                }\n\n                .info-title {\n                    p {\n                        margin: 0px;\n                        padding: 0px;\n                        font-size: ${sizeHandler(24)};\n                        font-weight: bold;\n                        text-align: center;\n                        color: rgba(0, 0, 0, 0.8);\n                    }\n\n                    margin-bottom: 4px;\n                }\n\n                .info-body {\n                    margin-bottom: 32px;\n\n                    p {\n                        margin: 0px;\n                        padding: 0px;\n                        font-size: ${sizeHandler(14)};\n                        letter-spacing: -0.3px;\n                        text-align: center;\n                        color: rgba(0, 0, 0, 0.7);\n                    }\n                }\n            }\n        }\n    }\n`;\nexport default StyledPendingContainer;\n","import React from 'react';\nimport {} from 'antd';\n\nexport default class Pending extends React.PureComponent {\n    render() {\n        return (\n            <div className='pending-container'>\n                <div className='inner-container'>\n                    <div className='pending-form'>\n                        <div className='login-title'>\n                            <p>회원가입</p>\n                        </div>\n                        <div className='form'>\n                            <div className='img-wrapper'>\n                                <img src='/assets/images/checkpoint.png' alt='check-circle' />\n                            </div>\n                            <div className='info-title'>\n                                <p>메이트 가입신청 완료</p>\n                            </div>\n                            <div className='info-body'>\n                                <p>\n                                    약 7일 이내에 메이트 가입신청 결과를 <br />\n                                    가입하신 이메일로 보내드리겠습니다.\n                                </p>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport StyledPendingContainer from './pending.styled';\nimport Pending from './pending';\n\nclass PendingPage extends React.PureComponent {\n    render() {\n        return (\n            <StyledPendingContainer>\n                <Pending {...this.props} />\n            </StyledPendingContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({ auth }) => ({\n    auth,\n});\n\nconst mapDispatchToProps = dsipatch => ({});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PendingPage);\n","import React from 'react';\nimport { Switch, Route } from 'react-router-dom';\n\n// pages\nimport NotFound from '../NotFound';\nimport Login from './AuthPages/Login';\nimport Main from './AuthPages/MainRegister';\nimport Register from './AuthPages/Register';\nimport Logout from './AuthPages/Logout';\nimport Find from './AuthPages/Find';\nimport Mate from './AuthPages/Mate';\nimport Normal from './AuthPages/Normal';\nimport Pending from './AuthPages/Pending';\n\n// import Example from './AuthPages/Example';\n\n// component\nexport default class AuthPage extends React.PureComponent {\n    render() {\n        const { url } = this.props.match;\n        // console.log(url);\n        return (\n            <Switch>\n                <Route exact path={`${url}/login`} component={Login} />\n                <Route exact path={`${url}/logout`} component={Logout} />\n\n                <Route exact path={`${url}/register?url_source=dlive`} component={Register} />\n                <Route exact path={`${url}/register?url_source=metlife`} component={Register} />\n\n                <Route exact path={`${url}/register`} component={Register} />\n                <Route exact path={`${url}/mainRegister`} component={Main} />\n\n                {/* <Route exact path={`${url}/example`} component={Example} />  경로 입력 시 /user/example로 해야 화면출력*/}\n\n                <Route exact path={`${url}/find/password`} component={Find} />\n                <Route exact path={`${url}/mypage`} component={Normal} />\n                <Route exact path={`${url}/mypage/:tab`} component={Normal} />\n                <Route exact path={`${url}/mate/pending`} component={Pending} />\n                <Route exact path={`${url}/mate/mypage`} component={Mate} />\n                <Route exact path={`${url}/mate/mypage/:tab`} component={Mate} />\n                {/* <Route exact path={`${url}/withdrawl`} component={Register} /> */}\n                <Route component={NotFound} />\n            </Switch>\n        );\n    }\n}\n","import styled from 'styled-components';\n\nconst AuthStyledContainer = styled.div``;\n\nexport default AuthStyledContainer;\n","import React from 'react';\nimport { connect } from 'react-redux';\n\n// component\nimport Auth from './auth';\n\n// styles\nimport AuthStyledContainer from './auth.styled';\n\nclass AuthPages extends React.PureComponent {\n    render() {\n        return (\n            <AuthStyledContainer>\n                <Auth {...this.props} />\n            </AuthStyledContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({}) => ({});\n\nconst mapStateToDispatch = dispatch => ({});\n\nexport default connect(mapStateToProps, mapStateToDispatch)(AuthPages);\n","import styled from 'styled-components';\nimport { mainColor, sizeHandler } from '../../theme';\n\nconst StyledCompanyContainer = styled.div`\n    padding-top: 55px;\n\n    .snd-section .inner-container .block:nth-child(2) {\n        align-items: flex-end;\n    }\n\n    .block {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n\n        .img-block {\n            flex: 1;\n            margin-bottom: 30px;\n            position: relative;\n            display: flex;\n            align-items: flex-start;\n\n            img {\n                width: 65%;\n            }\n\n            &.right {\n                // justify-content: flex-end;\n            }\n        }\n\n        .text-block {\n            flex: 1;\n            margin-bottom: 30px;\n\n            .title {\n                p {\n                    padding: 0px;\n                    margin: 0px;\n                    font-size: ${sizeHandler(36)};\n                    font-weight: bold;\n                    margin-bottom: 20px;\n                    color: rgba(0, 0, 0, 0.8);\n                    letter-spacing: -1px;\n                }\n            }\n\n            .content {\n                p {\n                    padding: 0px;\n                    margin: 0px;\n                    font-size: ${sizeHandler(14)};\n                    line-height: ${sizeHandler(24)};\n                    letter-spacing: -0.3px;\n                    color: rgba(0, 0, 0, 0.7);\n                    margin-bottom: 20px;\n                }\n            }\n        }\n    }\n\n    .fst-section {\n        background-image: url('/assets/images/company-main.png');\n        background-size: cover;\n        background-repeat: no-repeat;\n        background-position: center;\n\n        .inner-container {\n            padding-top: 166px;\n            padding-bottom: 166px;\n        }\n\n        .text-block {\n            p {\n                margin: 0px;\n                padding: 0px;\n                text-align: center;\n                color: white;\n\n                &.title {\n                    color: #161616;\n                    font-size: ${sizeHandler(28)};\n                    font-weight: bold;\n                    margin-bottom: 8px;\n                    letter-spacing: -0.6px;\n                }\n\n                &.content {\n                    font-size: ${sizeHandler(32)};\n                    font-weight: bold;\n                    letter-spacing: -0.38px;\n                }\n            }\n        }\n    }\n\n    .trd-section {\n        background-image: url('/assets/images/hug.png');\n        background-size: cover;\n        background-repeat: no-repeat;\n        background-position: center;\n\n\n        .inner-container {\n            padding-top: 144px;\n            padding-bottom: 88px;\n        }\n\n        .text-block {\n            p {\n                text-align: center;\n                margin: 0px;\n                padding: 0px;\n                color: white;\n\n                &.title {\n                    font-size: ${sizeHandler(34)};\n                    font-weight: bold;\n                    letter-spacing: -1px\n                    margin-bottom: 12px;\n                }\n\n                &.content {\n                    font-size: ${sizeHandler(14)};\n                    line-height: ${sizeHandler(22)};\n                    letter-spacing: -0.3px;\n                }\n            }\n        }\n    }\n\n    .fth-section {\n        margin-bottom: 40px;\n        border-bottom: 1px solid #e6e6e6;\n        \n        .title-block {\n            margin-bottom: 20px;\n\n            p {\n                text-align: center;\n                font-size: ${sizeHandler(36)};\n                font-weight: bold;\n                margin-bottom: 20px;\n                color: rgba(0, 0, 0, 0.8);\n                letter-spacing: -1px;\n            }\n        }\n\n        .items-block {\n            .item {\n                float: left;\n                display: flex;\n                align-items: center;\n                justify-content: center;\n                width: 33.3333%;\n                height: 124px;\n\n                @media(max-width: 768px) {\n                    width: 100%;\n                    padding: 0px 20px;\n                }\n\n                .img-wrapper {\n                    width: 30%;\n                    float: left;\n\n                    img {\n                        width: 70%;\n                    }\n                }\n\n                .text-wrapper {\n                    width: 70%;\n                    float: left;\n\n                    .name {\n                        font-size: ${sizeHandler(20)};\n                        font-weight: bold;\n                        color: rgba(0, 0, 0, 0.8);\n                      \n                    }\n\n                    .value {\n                        font-size: ${sizeHandler(16)};\n                        font-weight: normal;\n                        letter-spacing: -0.3px;\n                        color: rgba(0, 0, 0, 0.8);\n                    }\n                }\n            }\n        }\n    }\n\n    .fifth-section {\n\n        .inner-container {\n            padding-top: 200px;\n            padding-bottom: 65px;\n\n            .text-block {\n                .title {\n                    text-align: center;\n                    font-size: ${sizeHandler(36)};\n                    font-weight: bold;\n                    margin-bottom: 20px;\n                    color: rgba(0, 0, 0, 0.8);\n                    letter-spacing: -1px;\n                }\n\n                .content {\n                    text-align: center;\n                    font-size: ${sizeHandler(14)};\n                    line-height: ${sizeHandler(24)};\n                    letter-spacing: -0.3px;\n                    color: rgba(0, 0, 0, 0.7);\n                    margin-bottom: 20px;\n                }\n\n                .news {\n                    text-align: center;\n                    margin-bottom: 80px;\n                }\n            }\n\n            // .logo-block {\n                \n            //     .three {\n                    \n            //         .logo-wrapper {\n            //             float: left;\n            //             width: 20%;\n\n            //             display: flex;\n            //             align-items: center;\n            //             justify-content: center;\n                        \n            //             margin-bottom: 16px;\n\n            //             img {\n            //                 height: 76px;\n            //             }\n            //         }\n            //     }\n            // }\n        }\n    }\n\n    @media (max-width: 768px) {\n        .block {\n            flex-direction: column;\n\n            &.fst {\n                order: 1;\n                \n                .img-block {\n                    align-items: center;\n                    justify-content: center;\n                }\n            }\n\n            .snd {\n                order: 2;\n            }\n\n            .trd {\n                order: 4;\n            }\n\n            .fth {\n                order: 3;\n                margin-top: 20px;\n            }\n            \n            .img-block {\n                // display: none;\n                // margin-bottom: 20px;\n                // justify-content: center;\n\n                // &.right {\n                //     justify-content: center;\n                // }\n\n                // img {\n                //     width: 25%;\n                // }\n            }\n        }\n\n        .fth-section {            \n            .items-block {\n                flex-direction: column;\n\n                .row {\n                    flex-direction: row;\n\n                    .item {\n                        flex: 1;\n                        justify-content: flex-start;\n\n                        .text-block {\n                            flex: 1;\n                        }\n                    }\n                }\n            }\n        }\n\n    }\n\n\n    .sth-container {\n        .img-wrapper {\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            height: 156px;\n            margin-bottom: 34px;\n\n            img {\n                height: 100%;\n            }\n        }\n\n        .text-wrapper {\n            .title {\n                font-size: ${sizeHandler(36)};\n                font-weight: bold;\n                letter-spacing: -1px;\n                text-align: center;\n                color: rgba(0, 0, 0, 0.8);\n                margin-bottom: 16px;\n            }\n\n            .content {\n                font-size: ${sizeHandler(14)};\n                font-weight: normal;\n                letter-spacing: -0.3px;\n                text-align: center;\n                color: rgba(0, 0, 0, 0.7);\n            }\n        }\n    }\n`;\nexport default StyledCompanyContainer;\n","import React from 'react';\n\nimport { mainColor } from '../../../theme';\n\nclass FstBlock extends React.PureComponent {\n    render() {\n        return (\n            <div className='fst-section'>\n                <div className='inner-container'>\n                    <div className='text-block'>\n                        <p className='title'>Built for Healthcare, Designed for NEMT</p>\n                        <p className='content'>병원으로 향하는 새로운 길,</p>\n                        <p className='content'>위드메이트가 열어갑니다.</p>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\nexport default FstBlock;\n","import React from 'react';\n\nclass SndBlock extends React.PureComponent {\n    render() {\n        return (\n            <div className='snd-section'>\n                <div className='inner-container'>\n                    <div className='block fst'>\n                        <div className='img-block'>\n                            <img alt='something img' src='/assets/images/why.png' />\n                        </div>\n                        <div className='text-block snd'>\n                            <div className='title'>\n                                <p>등장배경</p>\n                            </div>\n                            <div className='content'>\n                                <p>\n                                    날로 분주해지는 현대 사회 속에서, 우리는 매일 직장과 육아라는 전투를 치릅니다. <br />\n                                    살아남기 위한 발버둥을 치기에도 버거운 순간, 떨어져 있는 가족들에 대한 걱정과 <br />\n                                    자기 자신을 돌보기 위한 시간을 내는 것이 힘겹기만 합니다.\n                                </p>\n                                <p>\n                                    과연 그 누가 물리적인 거리와 시간적인 제약, 그리고 직장과 육아가 주는 압박감을 <br />\n                                    떨쳐내고 가족과 자신을 위해 선뜻 움직일 수 있을까요? 그렇다면 우리는 언제까지 <br />\n                                    이런 막막한 상황을 견디기만 해야 할까요?\n                                </p>\n                                <p>이를 해결하기 위한 믿을 수 있는 서비스를 합리적인 가격으로 제공받을 수는 없는 걸까요?</p>\n                            </div>\n                        </div>\n                    </div>\n                    <div className='block'>\n                        <div className='text-block trd'>\n                            <div className='title'>\n                                <p>위드메이트의 시작</p>\n                            </div>\n                            <div className='content'>\n                                <p>\n                                    2015년 설립된 위드메이트는 고령화 및 1인 가구 시대에 접어든 <br />\n                                    대한민국의 현 상황에 적합한 의료 동행 서비스는 무엇인지 연구했습니다.\n                                </p>\n                                <p>\n                                    이후 위드메이트는 탄탄한 신뢰와 안정된 서비스 시스템을 기반으로 <br />\n                                    유수의 병원 동행 서비스를 수행하며 축적된 데이터와 <br />\n                                    실전 경험을 바탕으로 차별화된 병원 동행 Pro/Basic 서비스를 <br />\n                                    런칭하게 되었습니다.\n                                </p>\n                            </div>\n                        </div>\n                        <div className='img-block right fth'>\n                            <img alt='something img' src='/assets/images/withtaxi.png' style={{ width: '100%' }} />\n                        </div>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\nexport default SndBlock;\n","import React from 'react';\n\nclass TrdBlock extends React.PureComponent {\n    render() {\n        return (\n            <div className='trd-section'>\n                <div className='inner-container'>\n                    <div className='text-block'>\n                        <p className='title'>암 치료 동행 전문 기업</p>\n                        <p className='content'>\n                            위드메이트는 자타공인 국내 최고 수준의 암 치료 동행 서비스를 제공합니다. 위드메이트는 청담동과 하남에 위치한 암 전문 요양 병원과\n                            <br />\n                            국립 암센터와의 협업 시스템 구축을 통해 항암 치료 동행과 관련된 다양한 경험과 데이터를 축적했습니다.\n                            <br />\n                            이를 통해 위드메이트는 단순한 동행이 아닌, 전문적인 수준의 암 치료 동행 서비스를 제공합니다.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\nexport default TrdBlock;\n","import React from 'react';\n\nclass FthBlock extends React.PureComponent {\n    render() {\n        return (\n            <div className='fth-section' data-aos='fade-up' data-aos-anchor-placement='top-bottom' data-aos-duration='2000'>\n                <div className='inner-container'>\n                    <div className='title-block'>\n                        <p>통계로 보는 위드메이트</p>\n                    </div>\n                    <div className='items-block'>\n                        <Item name='5,000건 ↑' value='총 서비스 수행 건수' img='/assets/images/daily-count.png' />\n                        <Item name='3,500건 ↑' value='암 치료 병원 동행 건수' img='/assets/images/satisfied.png' />\n                        <Item name='50건 ↑' value='일일 서비스 수행 건수' img='/assets/images/daily-count.png' />\n                        <Item name='12 곳' value='협력 기관' img='/assets/images/services.png' />\n                        <Item name='81%' value='서비스 재사용률' img='/assets/images/unsatisfied.png' />\n                        <Item name='1억 2천만원' value='책임 보험' img='/assets/images/shield.png' />\n                        <div className='clearfix' />\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\n\nconst Item = ({ name, value, img }) => {\n    return (\n        <div className='item'>\n            <div className='img-wrapper'>\n                <img src={img} alt='value-icon' />\n            </div>\n            <div className='text-wrapper'>\n                <p className='name'>{name}</p>\n                <p className='value'>{value}</p>\n            </div>\n            <div className='clearfix' />\n        </div>\n    );\n};\nexport default FthBlock;\n","import React from 'react';\nimport styled from 'styled-components';\n\nclass FstBlock extends React.PureComponent {\n    render() {\n        return (\n            <div className='fifth-section'>\n                <div className='inner-container'>\n                    <div className='text-block' data-aos='fade-up' data-aos-anchor-placement='top-bottom' data-aos-duration='2000'>\n                        <p className='title'>믿을 수 있는 기업</p>\n                        <p className='content'>\n                            위드메이트는 국가 기관과 지자체에게 검증 받은 서비스로, 현재 <b>보건복지부</b>와 <b>고양시</b>, 그리고 <br />\n                            <b>국립 암센터</b>가 주관하는 <b>‘고양 해피 케어’</b> 컨소시엄의 일원으로 소속되어 국립 암센터를 이용하는 <br />\n                            고양 시민에게 병원 동행 서비스를 제공하고 있습니다. 위드메이트와 함께할 <br />\n                            협력 단체 및 기업은 추후 확장될 예정이니 많은 관심 부탁드립니다.\n                            <br />\n                        </p>\n                        <p className='news'>\n                            <a href='https://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=103&oid=025&aid=0002919541#' target='_blank'>\n                                기사링크 >\n                            </a>\n                        </p>\n                    </div>\n                    <CoCompany />\n                </div>\n            </div>\n        );\n    }\n}\n\nexport const CoCompany = ({ style }) => {\n    return (\n        <StyledCoCompany data-aos='fade-up' data-aos-anchor-placement='top-bottom' data-aos-duration='2000' style={style || {}}>\n            <div className='logo-block'>\n                <div className='three'>\n                    <div className='logo-wrapper'>\n                        <img src='/assets/images/gov-care.png' alt='logo' />\n                    </div>\n                    <div className='logo-wrapper'>\n                        <img src='/assets/images/goyang.png' alt='logo' />\n                    </div>\n                    <div className='logo-wrapper'>\n                        <img src='/assets/images/cancel.png' alt='logo' />\n                    </div>\n                    <div className='logo-wrapper'>\n                        <img src='/assets/images/goyang-society.png' alt='logo' />\n                    </div>\n                    <div className='logo-wrapper'>\n                        <img src='/assets/images/ericchi.png' alt='logo' />\n                    </div>\n                    <div className='logo-wrapper'>\n                        <img src='/assets/images/beatus.png' alt='logo' />\n                    </div>\n\n                    <div className='logo-wrapper'>\n                        <img src='/assets/images/juga.png' alt='logo' />\n                    </div>\n\n                    <div className='logo-wrapper'>\n                        <img src='/assets/images/goyang-happy.png' alt='logo' />\n                    </div>\n                    <div className='logo-wrapper'>\n                        <img src='/assets/images/gpcop.png' alt='logo' />\n                    </div>\n\n                    <div className='logo-wrapper'>\n                        <img src='/assets/images/paju_woman.png' alt='logo' />\n                    </div>\n\n                    <div className='logo-wrapper'>\n                        <img src='/assets/images/cheongdam.png' alt='logo' />\n                    </div>\n                    <div className='logo-wrapper'>\n                        <img src='/assets/images/hyo-hospital.png' alt='logo' />\n                    </div>\n                    <div className='clearfix' />\n                </div>\n            </div>\n        </StyledCoCompany>\n    );\n};\n\nconst StyledCoCompany = styled.div`\n    .logo-block {\n        .three {\n            .logo-wrapper {\n                float: left;\n                width: calc(100% / 6);\n\n                display: flex;\n                align-items: center;\n                justify-content: center;\n\n                margin-bottom: 16px;\n\n                img {\n                    height: 76px;\n                }\n            }\n        }\n    }\n\n    @media (max-width: 768px) {\n        .logo-block {\n            .three {\n                // flex-direction: column;\n                display: block;\n\n                .logo-wrapper {\n                    width: 50%;\n                    float: left;\n\n                    display: flex;\n                    align-items: center;\n                    justify-content: center;\n                }\n            }\n        }\n    }\n`;\nexport default FstBlock;\n","import React from 'react';\n\nexport default class SthSection extends React.PureComponent {\n    render() {\n        return (\n            <div className='sth-container' data-aos='fade-up' data-aos-anchor-placement='top-bottom' data-aos-duration='2000'>\n                <div className='inner-container'>\n                    <div className='img-wrapper'>\n                        <img src='/assets/images/safetyservice.png' alt='smile' />\n                    </div>\n                    <div className='text-wrapper'>\n                        <p className='title'>안전한 병원 동행의 시작</p>\n                        <p className='content'>\n                            위드메이트는 병원 동행 서비스의 본질을 ‘안전’이라고 생각합니다. 이에 위드메이트는 전직원의 <br />\n                            정기적인 교육 및 검열, 전문 자격증 취득 및 보유 여부 상시 점검, 영업배상책임 보험 가입 등 안전한\n                            <br />\n                            병원 동행 서비스의 제공을 위해 최선을 다하고 있습니다.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\n","import React from 'react';\n\n// section\nimport FstBlock from './Section/fst';\nimport SndBlock from './Section/snd';\nimport TrdBlock from './Section/trd';\nimport FthBlock from './Section/fth';\nimport FifBlock from './Section/fifth';\nimport SthBlock from './Section/sth';\n\nclass Company extends React.PureComponent {\n    render() {\n        return (\n            <div className='company-container'>\n                <FstBlock />\n                <FthBlock />\n                <SndBlock />\n                <TrdBlock />\n                <FifBlock />\n                <SthBlock />\n            </div>\n        );\n    }\n}\nexport default Company;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport StyledCompanyContainer from './company.styled';\nimport Company from './company';\n\nclass CompanyPage extends React.PureComponent {\n    render() {\n        return (\n            <StyledCompanyContainer>\n                <Company {...this.props} />\n            </StyledCompanyContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({}) => ({});\nconst mapDispatchToProps = dispatch => ({});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CompanyPage);\n","import styled from 'styled-components';\nimport { sizeHandler, mainColor } from '../../theme';\n\nconst StyledFaqContainer = styled.div`\n    padding-top: 55px;\n\n    .faq-header {\n        border-bottom: 1px solid #e6e6e6;\n\n        .inner-container {\n            padding: 0px;\n            padding-top: 82px;\n\n            @media (max-width: 768px) {\n                padding-top: 42px;\n            }\n\n            > .flex-wrapper {\n                position: relative;\n\n                .faq-main-title {\n                    flex: 1;\n                    .title {\n                        font-size: ${sizeHandler(44)};\n                        font-weight: bold;\n                        letter-spacing: -0.6px;\n                        color: #000000;\n                        margin-bottom: 8px;\n                    }\n\n                    .description {\n                        font-size: ${sizeHandler(14)};\n                        letter-spacing: -0.3px;\n                        color: rgba(0, 0, 0, 0.8);\n                        margin-bottom: 82px;\n                    }\n                }\n\n                .img-section {\n                    position: absolute;\n                    bottom: 0px;\n                    right: 0px;\n\n                    > img {\n                        width: 100%;\n                        max-width: 549px;\n                        height: auto;\n                        object-fit: cover;\n                    }\n\n                    @media (max-width: 768px) {\n                        display: none;\n                    }\n                }\n            }\n\n            .faq-nav {\n                display: flex;\n                align-items: center;\n\n                .nav-tab {\n                    margin-right: 32px;\n                    padding-bottom: 12px;\n                    position: relative;\n\n                    a {\n                        font-size: ${sizeHandler(14)};\n                        font-weight: bold;\n                        text-align: center;\n                        color: #3bc1ff;\n                    }\n\n                    span.underline {\n                        background-color: #3bc1ff;\n                        position: absolute;\n                        bottom: 0px;\n                        left: 0px;\n\n                        &.active {\n                            width: 100%;\n                            height: 3px;\n                            display: inline-block;\n                        }\n                    }\n\n                    @media (max-width: 768px) {\n                        margin-right: 16px;\n                    }\n                }\n            }\n        }\n    }\n\n    .faq-contents {\n        .inner-container {\n            padding-top: 0px;\n\n            @media (max-width: 768px) {\n                h1 {\n                    font-size: 30px;\n                    margin-top: 60px;\n                }\n            }\n        }\n    }\n\n    .panel-header {\n        display: flex;\n        align-items: center;\n\n        .row-index {\n            width: 80px;\n            color: ${mainColor};\n            font-size: ${sizeHandler(14)};\n            font-weight: bold;\n        }\n\n        .title {\n            flex: 1;\n            font-size: ${sizeHandler(16)};\n            font-weight: normal;\n            color: rgba(0, 0, 0, 0.7);\n        }\n\n        @media (max-width: 768px) {\n            .title {\n                font-size: ${sizeHandler(14)};\n            }\n        }\n    }\n\n    .panel-content {\n        padding-left: 80px;\n\n        > p {\n            width: 60%;\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.7);\n        }\n\n        > .panel-contents-wrapper {\n            margin-top: 20px;\n            margin-bottom: 20px;\n\n            .panel-contents {\n                padding: 12px 0px;\n                border-bottom: 1px solid #e6e6e6;\n\n                &:first-child {\n                    border-top: 1px solid #e6e6e6;\n                }\n\n                .panel-content-subtitle {\n                    float: left;\n                    width: 40%;\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    text-align: left;\n                    color: ${mainColor};\n                }\n\n                .panel-content-subcontents {\n                    float: left;\n                    width: 50%;\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    color: rgba(0, 0, 0, 0.7);\n                }\n\n                @media (max-width: 768px) {\n                    .panel-content-subtitle {\n                        width: 100%;\n                    }\n\n                    .panel-content-subcontents {\n                        width: 100%;\n                    }\n                }\n            }\n        }\n    }\n\n    h1 {\n        font-size: ${sizeHandler(34)};\n        font-weight: bold;\n        color: rgba(0, 0, 0, 0.8);\n        letter-spacing: -1px;\n\n        margin-bottom: 26px;\n        margin-top: 50px;\n    }\n\n    @media (max-width: 1120px) {\n        .faq-header {\n            .inner-container {\n                padding-left: 16px;\n                padding-right: 16px;\n            }\n        }\n        .inner-container {\n            padding-left: 16px;\n            padding-right: 16px;\n        }\n    }\n\n    @media (max-width: 768px) {\n        .panel-header {\n            .row-index {\n                width: 70px;\n            }\n        }\n\n        .panel-content {\n            padding-left: 70px;\n\n            > p {\n                width: 90%;\n            }\n        }\n    }\n`;\nexport default StyledFaqContainer;\n","import React from 'react';\nimport { HashLink } from 'react-router-hash-link';\nimport { Collapse, Icon } from 'antd';\nimport { mainColor } from '../../theme';\nconst { Panel } = Collapse;\n\nexport default class FAQ extends React.PureComponent {\n    render() {\n        const { hash } = this.props.location;\n        return (\n            <div className='faq-container'>\n                <div className='faq-header'>\n                    <div className='inner-container'>\n                        <div className='flex-wrapper'>\n                            <div className='faq-main-title'>\n                                <p className='title'>위드메이트 FAQ</p>\n                                <p className='description'>고객님의 궁금증을 해소하세요!</p>\n                            </div>\n                            <div className='img-section'>\n                                <img src={'/assets/images/faq_bg2.png'} alt='faq-img' />\n                            </div>\n                            <div className='faq-nav'>\n                                <div className='nav-tab'>\n                                    <HashLink className='name' to='/faq/#common' scroll={el => el.scrollIntoView({ behavior: 'smooth', block: 'start' })}>\n                                        공통 FAQ\n                                    </HashLink>\n                                    <span className={`underline ${hash === '#common' ? 'active' : undefined}`}></span>\n                                </div>\n                                <div className='nav-tab'>\n                                    <HashLink className='name' to='/faq/#emergency' scroll={el => el.scrollIntoView({ behavior: 'smooth', block: 'start' })}>\n                                        병원 동행 Pro FAQ\n                                    </HashLink>\n                                    <span className={`underline ${hash === '#emergency' ? 'active' : undefined}`}></span>\n                                </div>\n                                <div className='nav-tab'>\n                                    <HashLink className='name' to='/faq/#assist' scroll={el => el.scrollIntoView({ behavior: 'smooth', block: 'start' })}>\n                                        병원 동행 Basic FAQ\n                                    </HashLink>\n                                    <span className={`underline ${hash === '#assist' ? 'active' : undefined}`}></span>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div className='faq-contents'>\n                    <div className='inner-container'>\n                        <h1 id='common'>공통 FAQ</h1>\n                        <div>\n                            <Collapse\n                                expandIconPosition='right'\n                                bordered={false}\n                                expandIcon={({ isActive }) => (\n                                    <Icon type='right' rotate={isActive ? 90 : -90} style={{ color: isActive ? mainColor : '#a7a7a7' }} />\n                                )}\n                            >\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='1-1' title='동행인의 신원은 확실한가요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            현재 위드메이트는 적격 자격을 갖춘 인원들을 선별하고 세밀한 채용 단계를 거친 후, 영업 배상 책임 보험 가입과 함께\n                                            엄격한 자체 교육을 실시하며 서비스 인력을 모집하고 있습니다.\n                                            <br />\n                                            이와 동시에 위드메이트가 진행하는 주기적인 교육과 점검을 통해 서비스를 제공하는 인력 모두가 건강한 긴장감을 놓치지\n                                            않도록 철저하게 관리하고 있습니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='1-2' title='서비스 신청 방법에 대해 알려주세요.' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            위드메이트 서비스는 웹사이트를 통해 신청이 가능합니다. 웹사이트 내 서비스 신청 모듈을 통해 서비스 신청을 해주시면\n                                            됩니다. 회원 가입 진행을 완료하신 분이라면 전화 상담을 통한 예약 신청 또한 가능합니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='1-3' title='서비스 신청 후 절차가 어떻게 되나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            예약 접수가 완료되면, 위드메이트 소속의 전문 동행인들은 예약 발생 알림을 받고 검토를 진행하게 됩니다. 이후 동행인이\n                                            예약을 접수하면 고객님께 ‘예약 완료’ 알림이 가고, 고객님께서 해당 동행인의 접수를 수락하시면 최종 ‘매칭’이\n                                            이루어집니다. 이후 예약 일정에 맞춰 동행인과 함께 병원에 방문하시면 됩니다. 고객님께서 동행인의 접수를 거절하시면\n                                            처음 단계로 돌아가 다른 동행인의 접수를 대기하게 됩니다.\n                                            <br />\n                                            만약 동행인 접수가 불가한 경우 고객님께 예약 불가 알림이 가고, 추후 서비스 재신청을 통해 서비스를 받을 수 있습니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='1-4' title='위드메이트 서비스 이용 가능 지역은 어떻게 되나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            위드메이트의 서비스는 현재 수도권 내에서 이용 가능합니다. 빠른 시일 내 경기도를 포함한 타 지역 서비스 확장을 계획\n                                            중에 있습니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='1-5' title='예약 변경 및 취소 수수료는 어떻게 되나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>고객님께서 정상적으로 매칭된 병원 동행 서비스 계약을 취소 및 변경하는 경우에는 아래와 같이 수수료가 발생합니다.</p>\n                                        <div className='panel-contents-wrapper'>\n                                            <div className='panel-contents'>\n                                                <p className='panel-content-subtitle'>서비스 예약 날짜 기준 48시간 이내 변경 및 취소</p>\n                                                <p className='panel-content-subcontents'>수수료 없이 변경 & 취소 가능</p>\n                                                <div className='clearfix' />\n                                            </div>\n                                            <div className='panel-contents'>\n                                                <p className='panel-content-subtitle'>서비스 예약 전날 18:00 이전 변경 및 취소</p>\n                                                <p className='panel-content-subcontents'>\n                                                    취소 시 수수료 10,000원 발생. 단, 메이트와 변경 협의 성공 시에는 수수료 부과 X\n                                                </p>\n                                                <div className='clearfix' />\n                                            </div>\n                                            <div className='panel-contents'>\n                                                <p className='panel-content-subtitle'>당일 예약 변경 및 취소</p>\n                                                <p className='panel-content-subcontents'>\n                                                    취소 시 수수료 15,000원 발생. 단, 메이트와 변경 협의 성공 시에는 수수료 부과 X\n                                                </p>\n                                                <div className='clearfix' />\n                                            </div>\n                                            <div className='panel-contents'>\n                                                <p className='panel-content-subtitle'>서비스 시작 2시간 전 이내 변경 및 취소</p>\n                                                <p className='panel-content-subcontents'>\n                                                    취소 시 수수료 20,000원 발생. 단, 메이트와 변경 협의 성공 시에는 수수료 부과 X\n                                                </p>\n                                                <div className='clearfix' />\n                                            </div>\n                                            <div className='panel-contents'>\n                                                <p className='panel-content-subtitle'>노쇼(No-Show)의 경우</p>\n                                                <p className='panel-content-subcontents'>회원 자격 정지 및 민/형사상 책임 소지를 물을 수 있음</p>\n                                                <div className='clearfix' />\n                                            </div>\n                                        </div>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='1-6' title='회사측의 과실로 예약일정을 소화 못하면 어떻게 되나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            회사측의 과실로 예약된 서비스를 이용하지 못한 경우 서비스 요금을 전액 배상해드리며, 상황에 따라 서비스 무료 이용권\n                                            등의 추가 배상을 진행합니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='1-7' title='예약 장소에서 담당 동행인을 어떻게 찾나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            예약 접수 후 동행인 매칭이 완료되면 ‘마이페이지’ 내에서 동행인의 정보를 확인하실 수 있으며, 해당 정보를 통해\n                                            동행인과 서비스 관련 소통을 진행하시면 됩니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='1-8' title='예약한 시간보다 진료나 귀가가 늦어져 서비스 시간이 추가되면 어떻게 되나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            위드메이트 서비스는 후불제이기 때문에 예약한 서비스 시간을 넘어 추가 서비스가 이루어지는 경우, 해당 시간만큼의 추가\n                                            비용이 발생합니다. 서비스 종료 후 추가된 금액이 포함된 최종 요금을 결제하시면 됩니다. 추가 비용은 서비스 시간 15분\n                                            미만 초과 시 발생하지 않으며, 15분을 초과할 시 30분 단위의 요금이 발생합니다.\n                                            <br />\n                                            (Ex. 2시간 예약 서비스가 최종 2시간 14분으로 종료 > 추가 요금 발생 X)\n                                            <br />\n                                            (Ex. 2시간 예약 서비스가 최종 2시간 16분으로 종료 > 추가 요금 발생 O)\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='1-9' title='위드메이트 서비스는 사용 가능 시간이 어떻게 되나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            위드메이트의 모든 서비스는 주 5일 (월~금), 1일 10시간 (오전 9시 ~ 오후 7시) 동안 이용 가능합니다. 주말 및 공휴일에는\n                                            서비스 제공을 하지 않습니다. 하지만 특수 예약에 대해서는 해당 시간 외에도 서비스를 제공할 수 있습니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                            </Collapse>\n                        </div>\n                        <h1 id='emergency'>병원 동행 Pro FAQ</h1>\n                        <div>\n                            <Collapse\n                                expandIconPosition='right'\n                                bordered={false}\n                                expandIcon={({ isActive }) => (\n                                    <Icon type='right' rotate={isActive ? 90 : -90} style={{ color: isActive ? mainColor : '#a7a7a7' }} />\n                                )}\n                            >\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='2-1' title='병원 동행 Pro는 정확히 어떤 경우에 신청할 수 있나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            병원 동행 Pro는 응급 상황에 처하지는 않았으나 정기적, 혹은 비정기적으로 의료 기관에 방문해 의료 조치를 받아야 하는\n                                            경우에 신청 가능합니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='2-2' title='서비스 요금은 어떻게 되나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            병원 동행 Pro 서비스 요금은 시간 당 25,000원입니다. 또, 고객 소유의 차량을 메이트가 운행하여 동행할 경우 20,000원이\n                                            추가됩니다 (택시 등 대중 교통을 이용할 경우 추가 요금은 없으나 해당 교통비 개별 부담). 모든 서비스 비용은 VAT 포함\n                                            가격입니다.\n                                            <br />\n                                            (Ex. 2시간 예약 + 고객 소유 차량 운행 선택 시 > 기본 요금 50,000원 + 차량 운행비 20,000원 = 70,000원)\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='2-3' title='동행인의 성별은 어떻게 되나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>남성과 여성 인력이 모두 대기 중입니다.</p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='2-4' title='서비스는 어떤 형식으로 이루어지나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            예약일과 시간에 맞춰 위드메이트 소속의 동행인이 병원 출발지(고객님 자택 등)로 도착합니다. 이후 서비스 신청에 따라\n                                            고객 소유의 차량을 통해 이동할 경우 동행인이 차량을 운행하고 병원까지 이동하며(택시 등의 대중 교통 이용 시 해당 비용\n                                            자가 부담), 병원 내에서 이루어지는 모든 활동에 동행합니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='2-5' title='동행인은 어떤 사람들인가요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            동행인은 철저하게 선별되고 영업배상책임보험에 가입되어 있으며, 위드메이트가 자체적으로 실시하는 엄격한 서비스 교육을\n                                            모두 이수하고 통과한 전문가입니다. 또, 위드메이트의 동행인은 국립 암센터에서 실시하는 주기적인 암 환자 관리 교육 및\n                                            세미나에 지속적으로 참여해 서비스 품질과 전문성이 보장된 인력들입니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='2-6' title='중증 또는 휠체어 등의 의료 기구 대동이 필요한 환자도 이용 가능한가요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            중증 또는 휠체어 등의 의료 기구 대동이 필요한 환자에 대한 비응급 의료 동행 서비스는 준비 중에 있습니다. 현\n                                            서비스로는 해당 인원과의 동행은 불가하며, 예약이 접수된 경우 개별적인 연락을 통해 예약 불가를 알려드립니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={\n                                        <PanelHeader\n                                            rowIndex='2-7'\n                                            title='단발성이 아니라 수회에 걸쳐서 정기적으로 위드메이트 서비스를 이용하고 싶은데 이 같은 경우 예약을 어떻게 하나요?'\n                                        />\n                                    }\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            방사선이나 암 치료와 같이 주기적으로 내원이 필요한 경우 개별 상담을 통해 예약이 가능합니다. 위드메이트 서비스를 장기\n                                            예약할 경우 특별 할인 혜택 또한 제공되고 있습니다. 서비스 센터로 문의 주실 경우 위드메이트의 전문 상담원이\n                                            안내해드립니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                            </Collapse>\n                        </div>\n                        <h1 id='assist'>병원 동행 Basic FAQ</h1>\n                        <div>\n                            <Collapse\n                                expandIconPosition='right'\n                                bordered={false}\n                                expandIcon={({ isActive }) => (\n                                    <Icon type='right' rotate={isActive ? 90 : -90} style={{ color: isActive ? mainColor : '#a7a7a7' }} />\n                                )}\n                            >\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='3-1' title='병원 동행 Basic은 정확히 어떤 경우에 신청할 수 있나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            병원 동행 Basic은 주로 수술의 범주에는 속하지 않지만 마취 혹은 단순 보호자가 필요한 수면 내시경 등을 포함한 모든\n                                            종류의 시술을 해야 할 경우에 신청합니다. 물론 Pro 서비스를 받아야 하지만 자택에서 병원, 다시 병원에서 자택까지의\n                                            동행 과정을 필요로 하지 않는 상황에서도 신청이 가능합니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='3-2' title='서비스 요금은 어떻게 되나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            병원 동행 Basic 요금은 시간 당 15,000원입니다. (Ex. 2시간 예약 시 30,000원)\n                                            <br /> 모든 서비스 비용은 VAT 포함 가격입니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='3-3' title='동행인은 어떤 사람들인가요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>병원 동행 Basic 서비스 동행인은 Pro 서비스와 동일한 인력으로 구성되어 있습니다.</p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='3-4' title='동행인의 성별은 어떻게 되나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>남성과 여성 인력이 모두 대기 중입니다.</p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='3-5' title='서비스는 어떤 형식으로 이루어지나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            고객님께서 지정하신 병원에서 동행자와 접선 후, 동행자는 예약자의 진료 접수부터 종료 시점까지 병원 내부에서\n                                            대기합니다. 진료 종료 후, 동행자는 예약자의 의사를 확인한 후 업무를 마치고 복귀합니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                            </Collapse>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\n\nconst PanelHeader = ({ rowIndex, title }) => {\n    return (\n        <div className='panel-header'>\n            <p className='row-index'>{rowIndex}</p>\n            <p className='title'>{title}</p>\n        </div>\n    );\n};\n\nconst PanelContent = ({ children }) => {\n    return <div className='panel-content'>{children}</div>;\n};\n","import React from 'react';\nimport StyledFaqContainer from './faq.styled';\nimport FAQ from './faq';\n\nclass FAQContainer extends React.PureComponent {\n    render() {\n        return (\n            <StyledFaqContainer>\n                <FAQ {...this.props} />\n            </StyledFaqContainer>\n        );\n    }\n}\nexport default FAQContainer;\n","import styled from 'styled-components';\nimport { mainColor, sizeHandler } from '../../../../theme';\nconst StyledBuyContainer = styled.div`\n    margin-top: 55px;\n\n    .buy-container {\n        min-height: 100vh;\n        position: relative;\n        width: 100%;\n        background-color: #ebf9ff;\n        background-image: url('/assets/images/main-bg.png');\n        background-size: cover;\n        background-repeat: no-repeat;\n        background-position: center;\n\n        @media (max-width: 768px) {\n            background-image: none;\n        }\n\n        .order-menu-wrapper {\n            width: 50%;\n            position: relative;\n            max-width: 440px;\n            min-width: 370px;\n            background-color: white;\n            border-radius: 8px;\n            box-shadow: 1px 2px 3.5px #e6e6e6;\n            padding: 32px;\n            // overflow: hidden;\n\n            .mobile-close-button {\n                display: none;\n            }\n\n            .ant-input-number {\n                width: 100%;\n                height: 48px;\n\n                .ant-input-number-input-wrap {\n                    height: 100%;\n\n                    input {\n                        height: 100%;\n                    }\n                }\n\n                .ant-input-number-handler-wrap {\n                    opacity: 1;\n                    width: 48px;\n\n                    span {\n                        display: flex;\n                        align-items: center;\n                        justify-content: center;\n\n                        i {\n                            position: relative;\n                            margin-top: 0px;\n                            left: 0px;\n                            top: 0px;\n                            bottom: 0px;\n                            right: 0px;\n                            font-size: 16px;\n                        }\n                    }\n                    .anticon.anticon-up.ant-input-number-handler-up-inner {\n                        color: ${mainColor};\n                    }\n                    .anticon.anticon-down.ant-input-number-handler-down-inner {\n                        color: ${mainColor};\n                    }\n                }\n            }\n\n            @media (max-width: 768px) {\n                margin: 0px auto;\n                width: 100%;\n            }\n\n            .order-title {\n                margin-bottom: 20px;\n\n                p {\n                    margin: 0px;\n                    padding: 0px;\n                    font-size: ${sizeHandler(28)};\n                    font-weight: bold;\n                    letter-spacing: -0.7px;\n                    color: rgba(0, 0, 0, 0.7);\n                }\n            }\n\n            .fee-wrapper {\n                margin-bottom: 8px;\n                display: flex;\n                align-items: center;\n\n                p {\n                    margin: 0px;\n                    padding: 0px;\n\n                    &.info {\n                        flex: 1;\n                        font-size: 14px;\n                        letter-spacing: -0.3px;\n                        color: rgba(0, 0, 0, 0.7);\n                    }\n\n                    &.fee {\n                        font-size: ${sizeHandler(14)};\n                        font-weight: bold;\n                        text-align: right;\n                        color: rgba(0, 0, 0, 0.7);\n                    }\n                }\n            }\n\n            .total-wrapper {\n                display: flex;\n                align-items: center;\n                padding: 20px 0px;\n                margin-top: 16px;\n                margin-bottom: 32px;\n                border-top: 1px solid #e6e6e6;\n                border-bottom: 1px solid #e6e6e6;\n\n                p {\n                    margin: 0px;\n                    padding: 0px;\n\n                    &.info {\n                        flex: 1;\n                        font-size: ${sizeHandler(16)};\n                        font-weight: bold;\n                        letter-spacing: -0.5px;\n                        color: rgba(0, 0, 0, 0.7);\n                    }\n\n                    &.fee {\n                        font-size: ${sizeHandler(16)};\n                        font-weight: bold;\n                        letter-spacing: -0.5px;\n                        text-align: right;\n                        color: #3bc1ff;\n                    }\n                }\n            }\n\n            .service {\n                margin-bottom: 20px;\n\n                .service-tab {\n                    display: flex;\n                    align-items: center;\n                    justify-content: center;\n                    border: 1px solid #ddd;\n                    border-radius: 6px;\n\n                    .tab {\n                        flex: 1;\n                        height: 48px;\n                        border-right: 1px solid #ddd;\n                        cursor: pointer;\n                        display: flex;\n                        justify-content: center;\n                        align-items: center;\n\n                        &:last-child {\n                            border: 0px;\n                        }\n\n                        span {\n                            font-size: ${sizeHandler(14)};\n                            letter-spacing: -0.2px;\n                            font-weight: bold;\n                            color: ${mainColor};\n                        }\n                    }\n\n                    .tab.active {\n                        background-color: ${mainColor};\n\n                        span {\n                            color: white;\n                        }\n                    }\n                }\n\n                .info-tab {\n                    display: flex;\n                    align-items: center;\n                    justify-content: center;\n\n                    p {\n                        flex: 1;\n                        margin: 0px;\n                        padding: 0px;\n                        text-align: left;\n\n                        &:first-child {\n                            margin-right: 8px;\n                        }\n                    }\n                }\n\n                .info-input-tab {\n                    display: flex;\n                    align-items: center;\n                    // justify-content: center;\n\n                    > div {\n                        flex: 1;\n\n                        &:first-child {\n                            margin-right: 8px;\n                        }\n                    }\n\n                    .input {\n                        display: flex;\n                        border-radius: 4px;\n                        border: solid 1px #e6e6e6;\n                        height: 36px;\n                        line-height: 36px;\n                        text-indent: 12px;\n                        align-items: center;\n                        font-size: ${sizeHandler(12)};\n                        letter-spacing: -0.3px;\n                        color: rgba(0, 0, 0, 0.8);\n                        overflow: hidden;\n                        text-overflow: ellipsis;\n                        white-space: nowrap;\n                        background-color: #f5f5f5;\n                        cursor: not-allowed;\n\n                        // .ant-input {\n                        //     color: rgba(0, 0, 0, 0.8);\n                        // }\n\n                        &.phone {\n                            flex: 0.5;\n\n                            @media (max-width: 768px) {\n                                flex: 1;\n                            }\n                        }\n\n                        &.input-with-icon {\n                            p {\n                                height: 100%;\n                                flex: 1;\n                            }\n\n                            div {\n                                height: 100%;\n                                width: 36px;\n                                border-left: 1px solid #e6e6e6;\n                                display: flex;\n                                justify-content: center;\n                                align-items: center;\n\n                                span {\n                                    text-align: center;\n                                    text-indent: 0px;\n                                    opacity: 0.3;\n                                    font-size: ${sizeHandler(12)};\n                                    letter-spacing: -0.3px;\n                                    color: rgba(0, 0, 0, 0.8);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .service-fee-wrapper {\n                    margin-bottom: 32px;\n\n                    .service {\n                        display: flex;\n                        align-items: center;\n                        padding-top: 12px;\n                        margin-bottom: 0px;\n\n                        .name {\n                            flex: 1;\n                            font-size: ${sizeHandler(14)};\n                            letter-spacing: -0.3px;\n                            color: rgba(0, 0, 0, 0.7);\n                        }\n\n                        .fee {\n                            font-size: ${sizeHandler(14)};\n                            font-weight: bold;\n                            text-align: right;\n                            color: rgba(0, 0, 0, 0.7);\n                        }\n                    }\n                }\n\n                input {\n                    height: 36px;\n                    display: inline-block;\n                    width: 100%;\n                }\n\n                .select {\n                    display: inline-block;\n                    height: 36px;\n                    width: 100%;\n\n                    .ant-select-selection--single {\n                        height: 100%;\n                    }\n\n                    .ant-select-selection__rendered {\n                        line-height: 36px;\n                    }\n                }\n\n                .info {\n                    font-size: ${sizeHandler(12)};\n                    color: rgba(0, 0, 0, 0.7);\n                    margin-bottom: 4px;\n                    letter-spacing: -0.15px;\n                }\n\n                .ant-select-selection__rendered {\n                    margin-right: 34px;\n                    border-right: 1px solid #e6e6e6;\n                }\n\n                .ant-select-arrow {\n                    color: ${mainColor};\n                }\n\n                .image-with-text {\n                    display: flex;\n                    align-items: center;\n                    img {\n                        height: 18px;\n                        border: 0px;\n                    }\n\n                    p {\n                        flex: 1;\n                        margin: 0px;\n                        padding: 0px;\n                        margin-left: 12px;\n                        font-size: ${sizeHandler(18)};\n                        font-weight: bold;\n                        color: #3bc1ff;\n                    }\n                }\n            }\n\n            .side-summary-tab {\n                position: absolute;\n                top: 0px;\n                right: -380px;\n                width: 360px;\n                height: 100%;\n                background-color: white;\n                border-radius: 8px;\n                box-shadow: 1px 2px 3.5px #e6e6e6;\n                padding: 32px;\n                overflow: hidden;\n                display: flex;\n                flex-direction: column;\n\n                @media (max-width: 768px) {\n                    width: 100%;\n                    height: auto;\n                    border-radius: 0px;\n                    box-shadow: none;\n                    padding: 0px;\n                    position: relative;\n                    top: 55px;\n                    left: 0px;\n                    background-color: transparent;\n                }\n\n                .refund-info-wrapper {\n                    flex: 1;\n                    display: flex;\n                    align-items: flex-end;\n\n                    .info-wrapper {\n                        width: 100%;\n\n                        .title {\n                            font-size: ${sizeHandler(12)};\n                            font-weight: bold;\n                            color: #a7a7a7;\n                            margin-bottom: 8px;\n                        }\n\n                        .info {\n                            font-size: ${sizeHandler(10)};\n                            line-height: ${sizeHandler(16)};\n                            color: rgba(0, 0, 0, 0.7);\n                        }\n\n                        @media (max-width: 768px) {\n                            margin-top: 36px;\n                            padding-bottom: 20px;\n\n                            .info {\n                                margin-bottom: 60px;\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n`;\nexport default StyledBuyContainer;\n","import React from 'react';\nimport { Input, Button, InputNumber, message } from 'antd';\nimport { mainColor } from '../../../../theme';\nimport { UNEMER, ASSIST, MATE, DEV } from '../../../../Lib/variables';\nimport { currencyFormatter } from '../../../../Lib/utils';\nimport moment from 'moment';\n\nexport default class BuyTicket extends React.PureComponent {\n    onEdit = ({ type, value }) => {\n        this.props.edit({ type, value });\n    };\n\n    componentWillUnmount = () => {\n        this.onEdit({ type: 'clear', value: '' });\n    };\n\n    payment = () => {\n        const { id, name, userType } = this.props.auth;\n        const { service, count } = this.props.app.buyForm;\n\n        if (userType === MATE) return message.info('해당 서비스는 일반 사용자만 이용가능합니다.');\n        if (!id) return this.props.history.push('/logout');\n\n        this.props\n            .getServiceInfo({ code: service })\n            .then(resolve => {\n                if (resolve && Array.isArray(resolve) && resolve.length > 0) {\n                    const { _id, defaultPrice } = resolve[0];\n                    const discount = count >= 10 ? count * defaultPrice * 0.1 : count >= 4 ? count * defaultPrice * 0.05 : 0;\n\n                    const totalPrice = defaultPrice * count - discount;\n\n                    const IMP = window.IMP; // 생략해도 괜찮습니다.\n                    IMP.init('imp47625929'); // \"imp00000000\" 대신 발급받은 \"가맹점 식별코드\"를 사용합니다.\n\n                    // IMP.request_pay(param, callback) 호출\n                    IMP.request_pay(\n                        {\n                            // param\n                            pg: 'inicis',\n                            pay_method: 'card',\n                            merchant_uid: _id + '-' + moment().valueOf(),\n                            name: service === UNEMER ? '병원 동행 Pro 이용권' : '병원 동행 Basic 이용권',\n                            amount: totalPrice,\n                            buyer_email: '',\n                            buyer_name: name,\n                            buyer_tel: '',\n                            m_redirect_url: `https://server.withmate.kr/v1/service/buy/ticket/${count}/${id}/${service}/mobile`,\n                        },\n                        function(rsp) {\n                            // callback\n                            if (rsp.success === true) {\n                                const productInfo = {\n                                    productCode: service,\n                                    totalPrice: rsp.paid_amount,\n                                    productId: _id,\n                                    name: rsp.name,\n                                    merchantUid: rsp.merchant_uid,\n                                    count,\n                                    impUid: rsp.imp_uid,\n                                    payMethod: rsp.pay_method,\n                                    unit: rsp.currency,\n                                    paidStatus: rsp.paid === 'paid' ? true : false,\n                                    cardName: rsp.card_name,\n                                    bankName: rsp.bank_name,\n                                    cardQuota: rsp.card_quota, // 할부 월수\n                                    buyerEmail: rsp.buyer_email,\n                                };\n\n                                this.props\n                                    .buyTicket({ userId: id, info: productInfo })\n                                    .then(resolve => {\n                                        if (resolve && resolve !== 'success') {\n                                            return message.error('결제가 정상적으로 수행되지 않았습니다. 새로고침 후 다시 시도해주세요.');\n                                        }\n\n                                        if (resolve && resolve === 'success') {\n                                            message.success('상품 구매를 완료하였습니다. 서비스를 예약해보세요.');\n                                            return this.props.history.push('/');\n                                        }\n                                    })\n                                    .catch(error => {\n                                        message.error('상품 결제이력 등록 중 오류가 발생하였습니다. 관리자에게 문의하여 주시기 바랍니다.');\n                                    });\n                            } else {\n                                return message.error('결제 시도 중 오류가 발생하였습니다. 다시 시도해주세요.');\n                            }\n                        },\n                    );\n                } else {\n                    return message.info('현재 판매 마감된 상품입니다. 다른 상품을 고매해주세요.');\n                }\n            })\n            .catch(error => {\n                return message.error('결제 시도 중 오류가 발생하였습니다. 다시 시도해주세요.');\n            });\n    };\n\n    render() {\n        const { service, count } = this.props.app.buyForm;\n        const discount =\n            count >= 10 ? count * (service === UNEMER ? 120000 : 18000) * 0.1 : count >= 4 ? count * (service === UNEMER ? 120000 : 18000) * 0.05 : 0;\n        return (\n            <div className='buy-container'>\n                <div className='inner-container'>\n                    <div className='order-menu-wrapper'>\n                        <div className='order-title'>\n                            <p>서비스 이용을 위해</p>\n                            <p>이용권을 구매해주세요</p>\n                        </div>\n                        <div className='service'>\n                            <p className='info'>\n                                <img\n                                    src='/assets/images/info-icon.png'\n                                    alt='info'\n                                    style={{ width: '12px', height: '12px', marginRight: '4px', color: mainColor }}\n                                />\n                                서비스 선택\n                            </p>\n                            <div className='service-tab'>\n                                <div\n                                    className={`tab ${service === UNEMER ? 'active' : ''}`}\n                                    onClick={() => {\n                                        this.onEdit({ type: 'service', value: UNEMER });\n                                        this.onEdit({ type: 'count', value: 1 });\n                                    }}\n                                >\n                                    <span>비응급 동행</span>\n                                </div>\n                                <div\n                                    className={`tab ${service === 'assist' ? 'active' : ''}`}\n                                    onClick={() => {\n                                        this.onEdit({ type: 'service', value: ASSIST });\n                                        this.onEdit({ type: 'count', value: 1 });\n                                    }}\n                                >\n                                    <span>위드 어시스트</span>\n                                </div>\n                            </div>\n                        </div>\n\n                        <div className='service'>\n                            <p className='info'>이용권 구매 수량</p>\n                            <div>\n                                <InputNumber\n                                    min={1}\n                                    max={30}\n                                    value={count}\n                                    onChange={val => {\n                                        if (typeof val !== 'number') return null;\n\n                                        this.onEdit({ type: 'count', value: val });\n                                    }}\n                                    formatter={() => {\n                                        return `${service === UNEMER ? '병원 동행 Pro x ' : '병원 동행 Basic x '}${count}`;\n                                    }}\n                                />\n                            </div>\n                        </div>\n\n                        <div className='fee-wrapper'>\n                            <p className='info'>{service === UNEMER ? '병원 동행 Pro' : '병원 동행 Basic'} 이용권 비용</p>\n                            <p className='fee'>{service === UNEMER ? '120,000 KRW' : '18,000 KRW'}</p>\n                        </div>\n\n                        <div className='fee-wrapper'>\n                            <p className='info'>구매 수량</p>\n                            <p className='fee'>x {count}</p>\n                        </div>\n\n                        {count >= 4 ? (\n                            <div className='fee-wrapper'>\n                                <p className='info'>할인액</p>\n                                <p className='fee'>\n                                    {currencyFormatter(discount)}\n                                    KRW ({count >= 10 ? 10 : count >= 4 ? 5 : 0}%)\n                                </p>\n                            </div>\n                        ) : null}\n\n                        <div className='total-wrapper'>\n                            <p className='info'>Total</p>\n                            <p className='fee'>{currencyFormatter(count * (service === UNEMER ? 120000 : 18000) - discount)} KRW</p>\n                        </div>\n\n                        <div className='button-wrapper'>\n                            <Button style={{ width: '100%', height: '40px' }} type='primary' onClick={this.payment}>\n                                구매하기\n                            </Button>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport StyledBuyContaeinr from './buy.styled';\nimport Buy from './buy';\n\nimport { MATE } from '../../../../Lib/variables';\nimport { editBuyForm, getServiceInfo, buyTicket } from '../../../../Reducer/Modules/app';\n\nclass BuyTicketPage extends React.PureComponent {\n    componentDidMount = () => {\n        const { id, userType } = this.props.auth;\n        if (!id || userType === MATE) this.props.history.goBack();\n    };\n\n    render() {\n        return (\n            <StyledBuyContaeinr>\n                <Buy {...this.props} />\n            </StyledBuyContaeinr>\n        );\n    }\n}\n\nconst mapStateToProps = ({ app, auth }) => ({\n    app,\n    auth,\n});\n\nconst mapDispatchToProps = dispatch => ({\n    edit: ({ value, type }) => dispatch(editBuyForm({ type, value })),\n    getServiceInfo: ({ code }) => dispatch(getServiceInfo({ code })),\n    buyTicket: ({ userId, info }) => dispatch(buyTicket({ userId, info })),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(BuyTicketPage);\n","import React from 'react';\nimport { Switch, Route } from 'react-router-dom';\n\nimport Buy from './ProductPages/Buy';\n\nexport default class ProductRenderPages extends React.PureComponent {\n    render() {\n        const { url } = this.props.match;\n        return (\n            <Switch>\n                <Route path={`${url}/buy/ticket`} component={Buy} />\n            </Switch>\n        );\n    }\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\n\nimport Products from './product';\n\nclass ProductPages extends React.PureComponent {\n    render() {\n        return <Products {...this.props} />;\n    }\n}\n\nconst mapStateToProps = ({}) => ({});\n\nconst mapStateToDispatch = dispatch => ({});\n\nexport default connect(mapStateToProps, mapStateToDispatch)(ProductPages);\n","import styled from 'styled-components';\n\nexport const ValueBox = styled.div`\n  margin-bottom: 16px;\n\n  .switch {\n    margin-right: 10px;\n  }\n\n  .slide-img-div {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    height: 300px;\n    border: 2px dashed #ccc;\n    border-radius: 5px;\n    margin-bottom: 10px;\n\n    .slide-img-desc {\n      bottom-margin: 20px;\n    }\n\n    .slide-img-preview {\n        position: relative;\n  \n        .upload-img {\n          max-width: 200px;\n          max-height: auto;\n          margin-top: 10px;\n          pointer-evnets: none;\n        }\n  \n        .icon-div {\n          position: absolute;\n          padding-bottom: 30px;\n          right: 0;\n  \n          .delete-btn {\n            border: none;\n            font-size: 18px;\n          }\n        }\n      }\n    }\n  }\n`;\n\nconst ReservePageContainer = styled.div`\n    width: 100%;\n    min-height: 100vh;\n\n    padding-top: 54px;\n    // padding-bottom: 54px;\n`;\n\nconst ResrevePageInnerContainer = styled.div`\n    width: 1120px;\n    margin: 0 auto;\n\n    ${props => props.bg && `background-image: url(${props.bg}); background-size: contain; background-position: 50% 80%; background-repeat: no-repeat;`}\n\n    padding-top: ${props => (props.smallPadding ? '0px' : '48px')};\n    padding-bottom: ${props => (props.smallPadding ? '0px' : '188px')};\n\n    @media (max-width: 768px) {\n        width: 100%;\n        padding-top: 24px;\n        padding-bottom: 30px;\n        ${props => props.bg && `background-image: transparent; background-color: ${props.mobileBg ? props.mobieBg : '#ffffff'};`}\n    }\n`;\n\nconst ResrevePageHalfInnerContainer = styled.div`\n    margin: 0 auto;\n    width: 1120px;\n    margin-right: auto;\n    margin-left: auto;\n    padding: 15px;\n\n    ${props => props.bg && `background-image: url(${props.bg}); background-size: cover; background-position: 50% 80%; background-repeat: no-repeat;`}\n\n    padding-top: ${props => (props.smallPadding ? '0px' : '10px')};\n    padding-bottom: ${props => (props.smallPadding ? '0px' : '30px')};\n\n    @media (max-width: 768px) {\n        width: 100%;\n        padding-top: 24px;\n        padding-bottom: 48px;\n        ${props => props.bg && `background-image: transparent; background-color: ${props.mobileBg ? props.mobieBg : '#ffffff'};`}\n    }\n`;\n\nconst ReserveTopCover = styled.div`\n    background: ${props =>\n        props.isMain ? `url('/assets/images/w_reserve_web.png') no-repeat top center` : `url('/assets/images/w_reserve_m.png') no-repeat top center`};\n    background-size: cover;\n\n    @media (max-width: 768px) {\n        ${props => !props.isMain && `display: none;`}\n    }\n`;\nexport { ReserveTopCover, ReservePageContainer, ResrevePageInnerContainer, ResrevePageHalfInnerContainer };\n\nconst TopBannerSubDescription = styled.div`\n    font-size: 15px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.57;\n    letter-spacing: -0.3px;\n    text-align: left;\n    color: #ffffff;\n    margin-top: 8px;\n`;\n\nconst TopBannerSection = styled.div`\n    width: 100%;\n\n    padding-top: ${props => (props.isMain ? '110px' : '86px')};\n    padding-bottom: ${props => (props.isMain ? '0px' : '67px')};\n\n    text-align: center;\n\n    @media (max-width: 768px) {\n        text-align: center;\n        ${props => props.bg === '#f9f9f9' && `display: none;`}\n        padding-top: 56px;\n    }\n`;\n\nconst TopBannerText = styled.h3`\n    margin-top: 0px;\n    margin-bottom: 2px;\n\n    font-size: 32px;\n    font-weight: 300;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.5;\n    letter-spacing: -0.7px;\n    text-align: center;\n    color: #ffffff;\n\n    > span {\n        font-size: 32px;\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.5;\n        letter-spacing: -0.7px;\n        text-align: left;\n        color: #ffffff;\n    }\n\n    @media (max-width: 768px) {\n        font-size: 24px;\n\n        > span {\n            font-size: 24px;\n        }\n    }\n`;\n\nconst TopBannerDescription = styled.div`\n    padding: 8px 24px;\n    width: fit-content;\n\n    font-size: 16px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.42;\n    letter-spacing: -0.1px;\n    text-align: center;\n    background-color: #3bc1ff;\n    color: #ffffff;\n\n    border-radius: 50vh;\n    margin: 0 auto;\n    margin-bottom: 16px;\n`;\n\nexport { TopBannerSection, TopBannerText, TopBannerDescription };\n\nconst StepSectionContainer = styled.div`\n    padding-top: 32px;\n    padding-bottom: 32px;\n\n    background-color: #ffffff;\n\n    @media (max-width: 768px) {\n        display: none;\n    }\n`;\n\nconst StepButtonWrapper = styled.div`\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n    }\n`;\n\nconst StepButton = styled.button`\n    width: 200px;\n    height: 64px;\n    line-height: 64px;\n    border: 0px;\n    outline: none;\n\n    border-radius: 50vh;\n    cursor: not-allowed;\n\n    text-align: center;\n    font-size: 18px;\n    letter-spacing: -0.1px;\n\n    ${props =>\n        props.active\n            ? `\n    background-color: #3bc1ff;\n    color: #ffffff;\n    `\n            : `\n    background-color: #e6e6e6;\n    color:#afb0b2;`}\n\n    @media (max-width: 768px) {\n        width: 192px;\n        height: 52px;\n        line-height: 52px;\n        font-size: 14px;\n        letter-spacing: normal;\n    }\n`;\n\nconst UnderLineText = styled.span`\n    cursor: pointer;\n\n    font-size: 16px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.42;\n    letter-spacing: -0.1px;\n    text-align: left;\n    color: #3bc1ff;\n\n    text-decoration: underline;\n`;\n\nconst StepArrow = styled.img`\n    width: 16px;\n    height: 16px;\n    object-fit: contain;\n\n    margin-left: 8px;\n    margin-right: 8px;\n\n    @media (max-width: 768px) {\n        transform: rotate(90deg);\n        widteh: 24px;\n        height: 24px;\n        margin-left: 0px;\n        margin-right: 0px;\n        margin-top: 8px;\n        margin-bottom: 8px;\n    }\n`;\n\nexport { UnderLineText, TopBannerSubDescription, StepSectionContainer, StepButtonWrapper, StepButton, StepArrow };\n\nconst NextStepGudieContainer = styled.div`\n    width: 100%;\n\n    padding-top: 56px;\n    padding-bottom: 42px;\n\n    ${props => props.useBg && `background-color: rgba(242,242,242,0.3);`}\n    text-align: center;\n\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n\n    // margin-bottom: 48px;\n\n    @media (max-width: 768px) {\n        padding-top: 24px;\n        padding-bottom: 24px;\n\n        // margin-bottom: 24px;\n    }\n`;\n\nconst NextStepEmoj = styled.img`\n    width: 64px;\n    height: 64px;\n    object-fit: contain;\n\n    @media (max-width: 768px) {\n        width: 32px;\n        height: 32px;\n    }\n`;\n\nconst NextStepTitle = styled.h4`\n    margin-top: 24px;\n    margin-bottom: 16px;\n\n    font-size: 36px;\n    line-height: 48px;\n    color: ${props => props.color};\n    letter-spacing: -0.7px;\n    text-align: center;\n    font-weight: bold;\n\n    @media (max-width: 768px) {\n        margin-top: 16px;\n\n        font-size: 22px;\n        line-height: 30px;\n        letter-spacing: -0.5px;\n    }\n`;\n\nconst MobileBr = styled.br`\n    display: none;\n    @media (max-width: 768px) {\n        display: block;\n    }\n`;\n\nconst DesktopBr = styled.br`\n    display: block;\n    @media (max-width: 768px) {\n        display: none;\n    }\n`;\n\nconst NextStepArrowDown = styled.img`\n    width: 48px;\n    height: 48px;\n    object-fit: contain;\n\n    @media (max-width: 768px) {\n        width: 24px;\n        height: 24px;\n    }\n`;\n\nexport { NextStepGudieContainer, NextStepEmoj, NextStepTitle, NextStepArrowDown };\n\nconst ServiceSectionContainer = styled.div`\n    position: relative;\n`;\n\nconst ServiceSectionTitle = styled.h5`\n    font-size: 28px;\n    text-align: center;\n    color: rgba(0, 0, 0, 0.7);\n    font-weight: bold;\n    margin-bottom: 16px;\n\n    @media (max-width: 768px) {\n        font-size: 22px;\n    }\n`;\n\nconst ServiceSectionDescription = styled.p`\n    margin-bottom: 52px;\n\n    font-size: 16px;\n    text-align: center;\n    color: rgba(0, 0, 0, 0.7);\n    letter-spacing: -0.2px;\n    line-height: 28px;\n\n    @media (max-width: 768px) {\n        font-size: 15px;\n        line-height: 23px;\n        letter-spacing: -0.3px;\n\n        margin-bottom: 48px;\n    }\n`;\n\nexport { ServiceSectionContainer, ServiceSectionTitle, ServiceSectionDescription };\n\nconst ServiceCardList = styled.div`\n    display: flex;\n    flex-wrap: wrap;\n    align-items: flex-start;\n    justify-content: center;\n    padding-bottom: 80px;\n\n    > div:nth-child(5n) {\n        margin-right: 0px;\n    }\n\n    @media (max-width: 768px) {\n        justify-content: flex-start;\n        padding-left: 16px;\n        padding-right: 16px;\n\n        > div:nth-child(5n) {\n            margin-right: 12px;\n        }\n\n        > div:nth-child(2n) {\n            margin-right: 0px;\n        }\n    }\n`;\n\nconst ServiceCardWrapper = styled.div`\n    width: 216px;\n    height: 234px;\n\n    border-radius: 4px;\n    box-shadow: 2px 4px 16px -4px rgba(0, 0, 0, 0.1);\n    border: ${props => (props.on ? '4px solid #3bc1ff' : '1px solid #e6e6e6')};\n    padding: ${props => (props.on ? '13px' : '16px')};\n    background-color: #ffffff;\n\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: space-between;\n\n    margin-right: 10px;\n    margin-bottom: 10px;\n\n    > img {\n        width: 144px;\n        height: 144px;\n        object-fit: contain;\n\n        margin-bottom: 4px;\n    }\n\n    @media (max-width: 768px) {\n        width: calc(50% - 6px);\n        height: 195px;\n\n        margin-right: 12px;\n        margin-bottom: 10px;\n\n        padding: 4px;\n\n        padding-top: ${props => (props.on ? '12px' : '15px')};\n        padding-bottom: ${props => (props.on ? '12px' : '15px')};\n\n        > img {\n            // width: 100%;\n            // max-height: 120px\n            width: 120px;\n            height: 120px;\n\n            margin-bottom: 2px;\n        }\n    }\n`;\n\nconst ServiceCardButton = styled.div`\n    display: inline-block;\n\n    width: 100%;\n    max-width: 184px;\n    height: 48px;\n    line-height: 48px;\n\n    cursor: pointer;\n\n    font-size: 18px;\n    letter-spacing: -0.1px;\n    color: #3bc1ff;\n    background-color: #ffffff;\n    border-radius: 50vh;\n    text-align: center;\n    border: 1px solid #afb0b2;\n\n    &:hover {\n        transition: all 0.25s;\n        color: #ffffff;\n        background-color: #3bc1ff;\n    }\n\n    &.selected {\n        color: #ffffff;\n        background-color: #3bc1ff;\n    }\n\n    @media (max-width: 768px) {\n        font-size: 16px;\n        max-width: 130px;\n\n        height: 40px;\n        line-height: 40px;\n\n        &:hover {\n            transition: none;\n            color: #3bc1ff;\n            background-color: #ffffff;\n        }\n\n        &.selected {\n            color: #ffffff;\n            background-color: #3bc1ff;\n        }\n    }\n`;\n\nexport { ServiceCardList, ServiceCardWrapper, ServiceCardButton };\n\nconst ZzzServiceWrapper = styled.div`\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n\n    padding: 32px;\n    border-radius: 4px;\n    box-shadow: 2px 4px 16px -4px rgba(0, 0, 0, 0.1);\n    border: 1px solid #e6e6e6;\n\n    @media (max-width: 768px) {\n        width: calc(100% - 32px);\n        margin: 0 auto;\n    }\n`;\n\nconst ZzzArt = styled.img`\n    width: 200px;\n    height: 160px;\n    object-fit: contain;\n\n    @media (max-width: 768px) {\n        width: 175px;\n        height: 140px;\n\n        margin-bottom: 16px;\n    }\n`;\n\nconst ZzzDescription = styled.div`\n    margin-bottom: 8px;\n\n    font-weight: bold;\n    font-size: 20px;\n    letter-spacing: -0.1px;\n    color: rgba(0, 0, 0, 0.7);\n\n    @media (max-width: 768px) {\n        font-size: 16px;\n        margin-bottom: 16px;\n        text-align: center;\n    }\n`;\n\nexport { ZzzServiceWrapper, ZzzArt, ZzzDescription };\n\nconst AlzheServiceWrapper = styled.div`\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n\n    padding: 32px;\n    border-radius: 4px;\n    box-shadow: 2px 4px 16px -4px rgba(0, 0, 0, 0.1);\n    border: 1px solid #e6e6e6;\n\n    @media (max-width: 768px) {\n        width: calc(100% - 32px);\n        margin: 0 auto;\n    }\n`;\n\nconst AlzheArt = styled.img`\n    width: 200px;\n    height: 160px;\n    object-fit: contain;\n\n    @media (max-width: 768px) {\n        width: 175px;\n        height: 140px;\n\n        margin-bottom: 16px;\n    }\n`;\n\nconst AlzheDescription = styled.div`\n    margin-bottom: 8px;\n\n    font-weight: bold;\n    font-size: 20px;\n    letter-spacing: -0.1px;\n    color: rgba(0, 0, 0, 0.7);\n\n    @media (max-width: 768px) {\n        font-size: 16px;\n        margin-bottom: 16px;\n        text-align: center;\n    }\n`;\n\nexport { AlzheServiceWrapper, AlzheArt, AlzheDescription };\n\nconst ServiceTypeSectionContainer = styled.div`\n    width: 100%;\n    position: relative;\n\n    padding-top: 36px;\n    ${props => props.gap && `padding-bottom: 54px;`}\n\n    ${props => props.bg && `background-image: url(${props.bg}); background-size: contain; background-position: right; background-repeat: no-repeat;`}\n\n    @media (max-width: 768px) {\n        ${props => props.bg && `background-image: transparent; background-color: ${props.mobileBg ? props.mobieBg : '#ffffff'};`}\n    }\n`;\n\nconst ServiceTypeWrapper = styled.div`\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    > div:last-child {\n        margin-right: 0px;\n    }\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n\n        > div:last-child {\n            margin-bottom: 0px;\n            margin-right: auto;\n        }\n    }\n`;\n\nexport { ServiceTypeSectionContainer, ServiceTypeWrapper };\n\nconst ServiceTypeCardWrapper = styled.div`\n    width: 368px;\n    height: 410px;\n    padding: 16px;\n    border-radius: 4px;\n    box-shadow: 2px 4px 16px -4px rgba(0, 0, 0, 0.1);\n    background-color: #ffffff;\n    border: 4px solid ${props => (props.selected ? '#3bc1ff' : '#e6e6e6')};\n\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n\n    margin-right: 8px;\n\n    @media (max-width: 768px) {\n        margin-right: auto;\n        margin: 0 auto;\n        margin-bottom: 10px;\n\n        width: calc(100% - 32px);\n        height: auto;\n        border: 1px solid ${props => (props.selected ? '#3bc1ff' : '#e6e6e6')};\n    }\n`;\n\nconst ServiceTypeCardImg = styled.img`\n    width: 140px;\n    height: 140px;\n    object-fit: cover;\n`;\n\nconst ServiceTypeName = styled.span`\n    margin-top: 11px;\n    margin-bottom: 8px;\n\n    font-size: 24px;\n    font-weight: bold;\n    text-align: center;\n    letter-spacing: -0.5px;\n    color: rgba(0, 0, 0, 0.7);\n\n    @media (max-width: 768px) {\n        font-size: 22px;\n        line-height: 1.42;\n        letter-spacing: -0.5px;\n\n        margin-top: 0px;\n        margin-bottom: 0px;\n    }\n`;\n\nconst ServiceTypeDescription = styled.div`\n    word-break: keep-all;\n    font-size: 15px;\n    text-align: center;\n    letter-spacing: -0.3px;\n    margin-bottom: 36px;\n\n    max-width: 204px;\n`;\n\nconst NextStepButton = styled.div`\n    width: 280px;\n    height: 72px;\n    line-height: 72px;\n    text-align: center;\n\n    margin: 0 auto;\n    margin-top: 100px;\n\n    border-radius: 50vh;\n    cursor: pointer;\n\n    background-color: ${props => (props.on ? '#3bc1ff' : '#e6e6e6')};\n    color: ${props => (props.on ? '#ffffff' : '#afb0b2')};\n    font-size: 22px;\n    letter-spacing: -0.5px;\n\n    @media (max-width: 768px) {\n        height: 55px;\n        line-height: 55px;\n        font-size: 16px;\n        letter-spacing: -0.1px;\n\n        margin-top: 56px;\n    }\n`;\n\nconst LastStepButton = styled(NextStepButton)`\n    @media (max-width: 768px) {\n        margin-top: 32px;\n        margin-bottom: 32px;\n    }\n`;\nexport { MobileBr, DesktopBr, NextStepButton, LastStepButton, ServiceTypeCardWrapper, ServiceTypeCardImg, ServiceTypeName, ServiceTypeDescription };\n\nconst FormContainer = styled.div`\n    width: 100%;\n    background-color: #f9f9f9;\n\n    padding-top: 68px;\n    padding-bottom: 80px;\n\n    background-image: url('/assets/images/artwork_both_bg.png');\n    background-size: contain;\n    background-position: 50% 70%;\n    background-repeat: no-repeat;\n\n    @media (max-width: 768px) {\n        background: transparent;\n\n        padding-top: 0px;\n        padding-bottom: 0px;\n    }\n`;\n\nconst FormWrapper = styled.div`\n    width: 646px;\n    margin: 0 auto;\n    background-color: #ffffff;\n    border: 1px solid #e6e6e6;\n    border-radius: 8px;\n    box-shadow: 2px 4px 16px -4px rgba(0, 0, 0, 0.1);\n\n    padding: 48px 32px;\n    margin-bottom: 64px;\n\n    @media (max-width: 768px) {\n        width: 100%;\n        border-radius: 0px;\n        box-shadow: unset;\n        border: 0px;\n\n        padding: 32px 16px;\n        margin-bottom: 0px;\n    }\n\n    .type-button-wrapper {\n        width: 100%;\n        height: 48px;\n\n        background-color: white;\n        border: 1px solid #e6e6e6;\n        border-radius: 4px;\n\n        display: flex;\n        align-items: center;\n\n        > .type-button {\n            width: 50%;\n            height: 100%;\n            line-height: 48px;\n\n            text-align: center;\n            cursor: pointer;\n\n            font-size: 16px;\n            letter-spacing: -0.2px;\n            color: rgba(0, 0, 0, 0.2);\n        }\n\n        > .type-button.active {\n            background: rgba(0, 0, 0, 0.7);\n            border-radius: 4px;\n            color: #f9f9f9;\n        }\n    }\n`;\n\nconst FormMainTitle = styled.h3`\n    font-size: 32px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.5;\n    letter-spacing: -0.7px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    margin-top: 0px;\n    margin-bottom: 16px;\n\n    @media (max-width: 768px) {\n        font-size: 22px;\n        line-height: 1.42;\n        letter-spacing: -0.5px;\n        margin-bottom: 8px;\n    }\n`;\n\nconst FormMainAlert = styled.p`\n    font-size: 15px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.57;\n    letter-spacing: -0.3px;\n    text-align: left;\n    color: #ff5500;\n\n    margin-top: 0px;\n    margin-bottom: 32px;\n\n    word-break: keep-all;\n\n    @media (max-width: 768px) {\n        font-size: 14px;\n        line-height: 1.58;\n        letter-spacing: -0.3px;\n    }\n`;\n\nexport { FormContainer, FormWrapper, FormMainTitle, FormMainAlert };\n\nconst ServiceName = styled.h5`\n    font-size: 18px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.26;\n    letter-spacing: -0.1px;\n    text-align: left;\n    color: #3bc1ff;\n\n    margin-bottom: 40px;\n`;\n\nconst Sexes = styled.div`\n    display: flex;\n    width: 100%;\n    height: 100%;\n    line-height: 44px;\n\n    > span {\n        display: inline-block;\n        cursor: pointer;\n\n        flex: 1;\n        height: 100%;\n        border-radius: 4px;\n        border: 1px solid #e9e9e9;\n\n        text-align: center;\n        color: rgba(0, 0, 0, 0.7);\n        font-size: 14px;\n        letter-spacing: -0.2px;\n\n        margin-right: 8px;\n    }\n\n    > span.active {\n        background-color: #3bc1ff;\n        color: white;\n    }\n\n    > span:last-child {\n        margin-right: 0px;\n    }\n`;\n\nconst LabelDescription = styled.span`\n    font-size: 13px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.57;\n    letter-spacing: -0.3px;\n    text-align: left;\n    color: #afb0b2;\n    margin-left: 4px;\n`;\n\nconst FlexFormWrapper = styled.div`\n    display: flex;\n    align-items: flex-start;\n    justify-content: center;\n\n    max-width: 1120px;\n    margin: 0 auto;\n\n    > div:first-child {\n        margin-right: 20px;\n    }\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n\n        > div:first-child {\n            margin-right: 0px;\n            margin-bottom: 0px;\n        }\n    }\n`;\n\nconst ResultFormWrapper = styled(FormWrapper)`\n    width: auto;\n    flex: 1;\n\n    @media (max-width: 768px) {\n        width: 100%;\n    }\n`;\n\nconst LabelAndValueRow = styled.div`\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n\n    ${props => props.borderColor && `border-bottom: 1px solid ${props.borderColor};`}\n\n    padding-top: 8px;\n    padding-bottom: 8px;\n`;\n\nconst LabelValue = styled.span`\n    font-size: 18px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.26;\n    letter-spacing: -0.1px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    @media (max-width: 768px) {\n        font-size: 16px;\n        ine-height: 1.42;\n    }\n`;\n\nconst PriceValue = styled.span`\n    font-size: 18px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.26;\n    letter-spacing: -0.1px;\n    text-align: right;\n    color: #3bc1ff;\n\n    @media (max-width: 768px) {\n        font-size: 16px;\n        ine-height: 1.42;\n    }\n`;\n\nconst PriceDetailLabel = styled.span`\n    font-size: 15px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.57;\n    letter-spacing: -0.3px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    padding-left: 12px;\n    position: relative;\n\n    > span {\n        position: absolute;\n        top: 0px;\n        left: 0px;\n        font-size: 12px;\n        font-weight: normal;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.57;\n        letter-spacing: -0.3px;\n        text-align: left;\n        color: #cecfd0;\n    }\n`;\n\nconst PriceDetailValue = styled.span`\n    font-size: 16px;\n    font-weight: ${props => (props.value ? 'bold' : 'normal')};\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.57;\n    letter-spacing: -0.2px;\n    text-align: right;\n    color: ${props => (props.value ? '#3bc1ff' : '#afb0b2')};\n`;\n\nconst DashAndText = styled.div`\n    display: flex;\n    align-items: flex-start;\n\n    img {\n        width: 16px;\n        height: 16px;\n        margin-top: 4px;\n        margin-right: 8px;\n    }\n\n    > a {\n        color: #3bc1ff;\n        font-size: 14px;\n        font-weight: normal;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.58;\n        letter-spacing: -0.3px;\n        text-align: left;\n    }\n\n    > span {\n        font-size: 15px;\n        font-weight: normal;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.57;\n        letter-spacing: -0.3px;\n        text-align: left;\n        color: rgba(0, 0, 0, 0.7);\n        word-break: keep-all;\n    }\n\n    font-size: 15px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.57;\n    letter-spacing: -0.3px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n    word-break: keep-all;\n\n    ${props => props.alert && `color: #ff5500;`}\n\n    @media (max-width: 768px) {\n        font-size: 14px;\n\n        > span {\n            font-size: 14px;\n        }\n    }\n`;\nexport {\n    DashAndText,\n    LabelValue,\n    PriceDetailLabel,\n    PriceDetailValue,\n    ServiceName,\n    LabelAndValueRow,\n    PriceValue,\n    Sexes,\n    LabelDescription,\n    FlexFormWrapper,\n    ResultFormWrapper,\n};\n\nconst CongraturateLogo = styled.div`\n    width: 100%;\n    height: auto;\n\n    text-align: center;\n\n    margin-top: 12px;\n    margin-bottom: 12px;\n\n    > img {\n        width: 200px;\n        height: 200px;\n    }\n`;\n\nconst DoneResultWrapper = styled.div`\n    padding-top: 40px;\n    padding-bottom: 40px;\n    border-bottom: 1px solid #e9e9e9;\n`;\n\nconst MobileStepImage = styled.div`\n    display: none;\n    @media (max-width: 768px) {\n        display: block;\n        margin-top: 32px;\n        text-align: center;\n        width: 100%;\n\n        > img {\n            margin: 0 auto;\n            width: 174px;\n            height: 174px;\n        }\n    }\n`;\n\nexport { CongraturateLogo, MobileStepImage, DoneResultWrapper };\n","import React from 'react';\nimport styled from 'styled-components';\nimport { mainColor } from '../../../theme';\n\nexport const Container = styled.div`\n    width: 100vw;\n    height: auto;\n    padding-top: 55px;\n`;\n\nexport const TopWrapper = styled.div`\n    width: 100%;\n    height: auto;\n\n    // background-image: url('/assets/images/main-background.png');\n    // background-position: center;\n    // background-repeat: no-repeat;\n    // background-size: cover;\n    background-color: #80abff;\n`;\n\nexport const BottomWrapper = styled.div`\n    width: 100%;\n    background-color: white;\n`;\n\nexport const InnerContainer = styled.div`\n    max-width: 1080px;\n    margin: 0 auto;\n\n    padding: 80px 0px;\n    position: relative;\n\n    img.bg {\n        width: auto;\n        height: 100%;\n\n        position: absolute;\n        top: 0px;\n        right: 0px;\n    }\n\n    @media (max-width: 1080px) {\n        padding: 80px 16px;\n        img.bg {\n            display: none;\n        }\n\n        br {\n            display: block;\n        }\n    }\n\n    @media (max-width: 768px) {\n        padding: 80px 16px;\n\n        br {\n            display: block;\n        }\n    }\n`;\n\nexport const Logo = styled.img`\n    display: inline-block;\n    width: 200px;\n    object-fit: contain;\n`;\n\nexport const Title = styled.p`\n    margin-bottom: 24px;\n\n    font-size: 22px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.42;\n    letter-spacing: -0.5px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n`;\n\nexport const MediumText = styled.p`\n    margin-bottom: 8px;\n\n    font-size: 36px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.33;\n    letter-spacing: -0.7px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    > span {\n        font-size: 36px;\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.33;\n        letter-spacing: -0.7px;\n        text-align: left;\n        color: rgba(0, 0, 0, 0.7);\n        border-bottom: 1px solid #000000;\n    }\n`;\n\nexport const Noti = styled.div`\n    font-size: 13px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.54;\n    letter-spacing: -0.15px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.6);\n    word-break: keep-all;\n`;\n\nexport const ApplyButton = styled.span`\n    padding: 14px 28px;\n    background-color: #3bc1ff;\n\n    font-size: 16px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.4;\n    letter-spacing: -0.1px;\n    text-align: center;\n    color: #ffffff;\n\n    border-radius: 4px;\n    min-width: 230px;\n    overflow: hidden;\n\n    display: inline-block;\n    margin-top: 42px;\n    cursor: pointer;\n\n    &:hover {\n        transition: all 0.5s;\n        background-color: ${mainColor};\n        color: white;\n    }\n`;\n\nexport const LargeText = styled.p`\n    margin-bottom: 0px;\n\n    font-weight: bold;\n    color: #ffffff;\n    font-size: 32px;\n\n    padding: 2.5px;\n    border-bottom: 4px solid #ffffff;\n    display: inline-block;\n`;\n\nexport const FlexWrapper = styled.div`\n    display: flex;\n\n    > div {\n        flex: 1;\n        margin-bottom: 32px;\n    }\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n    }\n`;\n\nexport const FlexTitle = styled.p`\n    display: inline-block;\n\n    font-size: 16px;\n    font-weight: bold;\n    color: #161616;\n\n    padding: 12px;\n    border-bottom: 0.5px solid #161616;\n\n    margin-bottom: 20px;\n`;\n\nexport const Contact = styled.p`\n    margin-bottom: 8px;\n\n    font-weight: bold;\n    color: #161616;\n    font-size: 20px;\n`;\n\nexport const ContactTime = styled.p`\n    font-weight: bold;\n    color: #161616;\n    font-size: 12px;\n`;\n\nexport const Link = styled.a`\n    display: inline-block;\n    margin-bottom: 8px;\n\n    color: #565656;\n    font-size: 12px;\n    font-weight: bold;\n    text-decoration: underline;\n`;\n","import React from 'react';\nimport { message } from 'antd';\nimport axios from '../../Lib/axios';\n\nimport { DivisionLine, WithmateInput, WithmateLabel } from '../../Components/Common/input';\nimport { FlexFormWrapper, FormMainTitle, FormWrapper, LabelAndValueRow, PriceDetailLabel, PriceDetailValue, ResultFormWrapper, ServiceName, Sexes } from '../Reserve/reserve.styled';\nimport { FlexWrapper } from '../Apply/Ready/ready.styled';\nimport { HalfWidthButton } from '../../Components/Common/button';\n\nclass LongTermCareComponent extends React.PureComponent {\n    state = {\n        name: '',\n        age: '',\n        contact: '',\n        sex: '',\n        region: '',\n        gradePresence: '',\n        gradeLevel: ''\n    };\n\n    onLongTermCare = async () => {\n        const userId = localStorage.getItem('id');\n        const { name, age, contact, sex, region, gradePresence, gradeLevel } = this.state;\n\n        if (!name) {\n            return this.setState({\n                modal: true,\n                modalTitle: '이름을 입력해주세요.',\n                modalInfo: '장기요양등급 상담하시는분의 이름을 입력해주세요.',\n            });\n        }\n\n        if (!age) {\n            return this.setState({\n                modal: true,\n                modalTitle: '나이를 입력해주세요.',\n                modalInfo: '장기요양등급 상담하시는분의 나이를 입력해주세요.',\n            });\n        }\n\n        if (!contact) {\n            return this.setState({\n                modal: true,\n                modalTitle: '연락처를 입력하세요.',\n                modalInfo: '장기요양등급 상담하시는분의 연락처를 입력해주세요.',\n            });\n        }\n\n        if (!sex) {\n            return this.setState({\n                modal: true,\n                modalTitle: '성별을 선택하세요.',\n                modalInfo: '장기요양등급 상담하시는분의 성별을 선택해주세요.',\n            });\n        }\n\n        if (!region) {\n            return this.setState({\n                modal: true,\n                modalTitle: '거주지 지역을 입력하세요.',\n                modalInfo: '장기요양등급 상담하시는 분의 거주지 지역을 입력해주세요.',\n            });\n        }\n\n        if (!gradePresence) {\n            return this.setState({\n                modal: true,\n                modalTitle: '요양등급 유무를 선택하세요.',\n                modalInfo: '요양등급 유무를 선택해주세요.',\n            });\n        }\n\n\n        const { data } = await axios.post('/v1/longTermCare/add', { userId, name, age, contact, sex, region, gradePresence, gradeLevel });\n\n        if (!data) return message.error('죄송합니다. 일시적인 서버 장애가 발생하였습니다.');\n        if (data === 'check parameters') return message.warning('필수 정보들을 입력해주세요.');\n        if (data === 'success') {\n            message.success('장기요양등급 신청서 작성이 완료되었습니다. 빠른 시일내에 상담 연락드리겠습니다.');\n            setTimeout(() => {\n                this.props.history.push('/');\n            }, 600);\n        }\n    };\n\n    handleChange = e => {\n        this.setState({ [e.target.title]: e.target.value });\n    };\n\n    render() {\n        return (\n            <div style={{ padding: '10px', marginTop: '100px' }}>\n                <FlexFormWrapper>\n                    <FormWrapper>\n                        <FormMainTitle>장기요양 등급 상담 신청서</FormMainTitle>\n                        <ServiceName style={{ fontSize: '15px' }}>장기요양 등급 신청서를 작성하시면 상담신청이 가능합니다.</ServiceName>\n\n                        <FlexWrapper withHalf>\n                            <div style={{ flex: 1 }}>\n                                <WithmateLabel required>이름</WithmateLabel>\n                                <WithmateInput\n                                    type='text'\n                                    title='name'\n                                    value={this.state.name || ''}\n                                    onChange={this.handleChange}\n                                />\n                            </div>\n                            &ensp;&ensp;\n                            <div style={{ flex: 1 }}>\n                                <WithmateLabel required>나이</WithmateLabel>\n                                <WithmateInput maxLength='2' placeholder='50' title='age' suffix='세' value={this.state.age} onChange={this.handleChange} />\n                            </div>\n                        </FlexWrapper>\n\n                        <FlexWrapper withHalf>\n                            <div style={{ flex: 1 }}>\n                                <WithmateLabel required>연락처</WithmateLabel>\n                                <WithmateInput maxLength='11' title='contact' value={this.state.contact} onChange={this.handleChange} />\n                            </div>\n                            &ensp;&ensp;\n                            <div style={{ flex: 1 }}>\n                                <WithmateLabel required>성별</WithmateLabel>\n                                <Sexes style={{ height: '46px' }}>\n                                    <span\n                                        className={this.state.sex === '남성' ? 'active' : 'inactive'}\n                                        onClick={() => {\n                                            this.handleChange({ target: { title: 'sex', value: '남성' } });\n                                        }}\n                                    >\n                                        남성\n                                    </span>\n                                    <span\n                                        className={this.state.sex === '여성' ? 'active' : 'inactive'}\n                                        onClick={() => {\n                                            this.handleChange({ target: { title: 'sex', value: '여성' } });\n                                        }}\n                                    >\n                                        여성\n                                    </span>\n                                </Sexes>\n                            </div>\n                        </FlexWrapper>\n\n                        <FlexWrapper withHalf>\n                            <div style={{ flex: 1 }}>\n                                <WithmateLabel required>지역</WithmateLabel>\n                                <WithmateInput placeholder='지역의 구까지 입력해주세요. ex) 서울특별시 강남구' title='region' value={this.state.region} onChange={this.handleChange} />\n                            </div>\n                        </FlexWrapper>\n\n                        <FlexWrapper withHalf>\n                            <div style={{ flex: 1 }}>\n                                <WithmateLabel required>요양등급 유무</WithmateLabel>\n                                <Sexes style={{ height: '46px' }}>\n                                    <span\n                                        className={this.state.gradePresence === '있다' ? 'active' : 'inactive'}\n                                        onClick={() => {\n                                            this.handleChange({ target: { title: 'gradePresence', value: '있다' } });\n                                        }}\n                                    >\n                                        있다\n                                    </span>\n                                    <span\n                                        className={this.state.gradePresence === '없다' ? 'active' : 'inactive'}\n                                        onClick={() => {\n                                            this.handleChange({ target: { title: 'gradePresence', value: '없다' } });\n                                        }}\n                                    >\n                                        없다\n                                    </span>\n                                </Sexes>\n                            </div>\n                            &ensp;&ensp;\n                            {this.state.gradePresence === '있다' ? <>\n                                <div style={{ flex: 1 }}>\n                                    <WithmateLabel required>등급을 입력하세요</WithmateLabel>\n                                    <WithmateInput title='gradeLevel' suffix='등급' value={this.state.gradeLevel} onChange={this.handleChange} />\n                                </div>\n                            </> : null}\n                        </FlexWrapper>\n                    </FormWrapper>\n\n                    <ResultFormWrapper>\n                        <FormMainTitle style={{ fontSize: '25px' }}>신청 내역</FormMainTitle>\n\n                        <LabelAndValueRow borderColor='#cecfd0'>\n                        </LabelAndValueRow>\n\n                        <DivisionLine x_small />\n                        <DivisionLine />\n\n                        <LabelAndValueRow>\n                            <PriceDetailLabel><span>* </span>이름</PriceDetailLabel>\n                            <PriceDetailValue>{this.state.name}</PriceDetailValue>\n                        </LabelAndValueRow>\n                        <LabelAndValueRow>\n                            <PriceDetailLabel><span>* </span>나이</PriceDetailLabel>\n                            <PriceDetailValue>{this.state.age + ' 세'}</PriceDetailValue>\n                        </LabelAndValueRow>\n                        <LabelAndValueRow>\n                            <PriceDetailLabel><span>* </span>연락처</PriceDetailLabel>\n                            <PriceDetailValue>{this.state.contact}</PriceDetailValue>\n                        </LabelAndValueRow>\n                        <LabelAndValueRow>\n                            <PriceDetailLabel><span>* </span>성별</PriceDetailLabel>\n                            <PriceDetailValue>{this.state.sex}</PriceDetailValue>\n                        </LabelAndValueRow>\n                        <LabelAndValueRow>\n                            <PriceDetailLabel><span>* </span>지역</PriceDetailLabel>\n                            <PriceDetailValue>{this.state.region}</PriceDetailValue>\n                        </LabelAndValueRow>\n                        <LabelAndValueRow>\n                            <PriceDetailLabel><span>* </span>장애등급 유무</PriceDetailLabel>\n                            <PriceDetailValue>{this.state.gradePresence}</PriceDetailValue>\n                        </LabelAndValueRow>\n                        {this.state.gradePresence == '있다' ? <>\n                            <LabelAndValueRow>\n                                <PriceDetailLabel><span>* </span>장애등급</PriceDetailLabel>\n                                <PriceDetailValue>{this.state.gradeLevel}</PriceDetailValue>\n                            </LabelAndValueRow>\n                        </> : null}\n\n                        <DivisionLine /><DivisionLine /><DivisionLine /><DivisionLine small />\n                        <HalfWidthButton style={{ margin: '0 auto' }} bg='#3bc1ff'\n                            onClick={this.onLongTermCare}\n                        >\n                            신청하기\n                        </HalfWidthButton>\n                    </ResultFormWrapper>\n                </FlexFormWrapper>\n            </div>\n        );\n    }\n}\nexport default LongTermCareComponent;","import React from 'react';\nimport { AutoComplete, Button } from 'antd';\nimport styled from 'styled-components';\nimport { DivisionLine } from '../../Components/Common/input';\nimport Background from './login_bg.png';\nimport Checkpoint from './checkpoint.png';\n\nclass SuccessComponent extends React.PureComponent {\n    render() {\n        return (\n            <div className='success-container' style={{ backgroundImage: 'url('+Background+')' }}>\n                <div className='inner-container' style={{ display: 'flex', justifyContent: 'center'}}>\n                    <div className='success-form' style={{ border: '1px solid lightgray', borderRadius: '7px', width: '550px', marginTop: '40px', paddingTop: '80px', maxWidth: '480px' , backgroundColor: 'white' }}>\n                        <div className='success-title'>\n                            <img class=\"successImg\" src={Checkpoint} style={{ width: '70px', height: '70px', display: 'block', margin: '0px auto' }}/>\n                            <DivisionLine />\n                            <h1 style={{ textAlign: 'center' }}>회원가입이 <b>완료</b> 되었습니다.</h1>\n                        </div>\n\n                        <DivisionLine /><DivisionLine />\n\n                        <div className='form-success-type' style={{ textAlign: 'center' }}>\n                            <div>\n                                <h4>※ 위드메이트의 서비스를 더욱 편리하게 사용할 수 있도록 <br/>\n                                    <b>환자 프로필</b>을 등록하실 수 있습니다.</h4>\n                            </div>\n                        </div>\n                        \n                        <DivisionLine />\n                        <hr style={{ textAlgn: 'center', width: '320px', color: 'gray' }}/>\n\n                        <div className='form'  style={{ textAlign: 'center' }}>\n                            <Button type='primary' style={{ borderRadius: '4px', marginTop: '20px', backgroundColor: 'gray' }} \n                                    onClick={() => {\n                                        this.props.history.push('/user/mypage/profile');\n                                    }}\n                            >\n                                프로필 등록\n                            </Button>\n                            &nbsp;&nbsp;&nbsp;\n                            <Button type='primary' style={{ borderRadius: '4px', marginTop: '20px' }} \n                                    onClick={() => {\n                                        this.props.history.push('/');\n                                    }}\n                            >\n                                다음에 하기\n                            </Button>\n                        </div>\n                        <DivisionLine />\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\nexport default SuccessComponent;","// import React, { useState } from 'react';\n// import { Document, Page, pdfjs } from 'react-pdf';\n// import samplePDF from '../PDFfile/withmate_service_manual.pdf';\n// import './servicePDF.css';\n\n// pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\n\n// export default function ServicePDF() {\n//     const [numPages, setNumPages] = useState(null);\n\n//     function onDocumentLoadSuccess({ numPages }) {\n//         setNumPages(numPages);\n//     }\n\n//     return (\n//         <div style={{ height: '1000px', overflow: 'auto', overflowX: 'hidden' }}>\n//             <Document\n//                 className={'PDFDocument'}\n//                 file={samplePDF}\n//                 options={{ workerSrc: \"/pdf.worker.js\" }}\n//                 onLoadSuccess={onDocumentLoadSuccess}\n//             >\n//                 {Array.from(new Array(numPages), (el, index) => (\n//                     <Page className={'PDFPage'} key={`page_${index + 1}`} pageNumber={index + 1} width={1000}/>\n//                 ))}\n//             </Document>\n//         </div>\n//     );\n// }\n\nimport React, { Component } from \"react\";\n\nexport default class ServicePDF extends Component {\n  constructor() {\n    super();\n    this.state = {\n      iFrameHeight: \"0px\"\n    };\n  }\n\n  render() {\n    return (\n      <div>\n        <iframe\n          style={{\n            position: \"absolute\",\n            top: '60px',\n            left: 0,\n            width: \"100%\",\n            height: \"95%\"\n          }}\n          src={`https://drive.google.com/file/d/141x-SJYLk8W5ix4vjVWKi3738Osux2bT/preview`}\n          frameBorder=\"0\"\n        />\n      </div>\n    );\n  }\n}\n","import { message } from 'antd';\nimport React from 'react';\nimport ServiceManual from './servicePDF';\n\nclass ManualComponent extends React.PureComponent {\n    componentDidMount = () => {\n        if (!localStorage.getItem('id')) {\n            message.warning('서비스 매뉴얼을 보시려면 로그인 후 이용해주세요.');\n            return this.props.history.push('/user/login');\n        }\n        this.props.history.push('/service/manual');\n    }\n\n    render() {\n        return (\n            <div className='pdf-form'>\n                <ServiceManual />\n            </div>\n        );\n    }\n}\nexport default ManualComponent;","// import React, { useState } from 'react';\n// import { Document, Page, pdfjs } from 'react-pdf';\n// import samplePDF from '../PDFfile/withmate_platform_manual.pdf';\n// import './platformPDF.css';\n\n// pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\n\n// export default function PlatformPDF() {\n//     const [numPages, setNumPages] = useState(null);\n\n//     function onDocumentLoadSuccess({ numPages }) {\n//         setNumPages(numPages);\n//     }\n\n//     return (\n//         <div style={{ height: '1000px', overflow: 'auto', overflowX: 'hidden' }}>\n//             <Document\n//                 className={'PDFDocument'}\n//                 file={samplePDF}\n//                 options={{ workerSrc: \"/pdf.worker.js\" }}\n//                 onLoadSuccess={onDocumentLoadSuccess}\n//             >\n//                 {Array.from(new Array(numPages), (el, index) => (\n//                     <Page className={'PDFPage'} key={`page_${index + 1}`} pageNumber={index + 1} width={1000}/>\n//                 ))}\n//             </Document>\n//         </div>\n//     );\n// }\n\nimport React, { Component } from \"react\";\n\nexport default class PlatformPDF extends Component {\n  constructor() {\n    super();\n    this.state = {\n      iFrameHeight: \"0px\"\n    };\n  }\n\n  render() {\n    return (\n      <div>\n        <iframe\n          style={{\n            position: \"absolute\",\n            top: '60px',\n            left: 0,\n            width: \"100%\",\n            height: \"95%\"\n          }}\n          src={`https://drive.google.com/file/d/1uC2X66wxaGyIiekW_lkDsuLeIbPcMf_t/preview`}\n          frameBorder=\"0\"\n        />\n      </div>\n    );\n  }\n}\n","import { message } from 'antd';\nimport React from 'react';\nimport PlatformManual from './platformPDF';\n\nclass ManualComponent extends React.PureComponent {\n    componentDidMount = () => {\n        if (!localStorage.getItem('id')) {\n            message.warning('플랫폼 매뉴얼을 보시려면 로그인 후 이용해주세요.');\n            return this.props.history.push('/user/login');\n        }\n        this.props.history.push('/platform/manual');\n    }\n\n    render() {\n        return (\n            <div className='pdf-form'>\n                <PlatformManual />\n            </div>\n        );\n    }\n}\nexport default ManualComponent;","import { Button } from 'antd';\nimport Title from 'antd/lib/typography/Title';\nimport React from 'react';\nimport styled from 'styled-components';\nimport { WithmateLabel } from '../../../../Components/Common/input';\n\nexport const EduVideo1 = () => {\n  return (\n    <VideoSectionContainer>\n      <VideoSectionInnerContainer>\n        <div style={{ paddingBottom: '30px' }}>\n          <Title style={{ fontWeight: 'bold' }}>메이트 온라인 교육영상</Title><br />\n          <p style={{ color: '#3bc1ff'}}>* 해당 영상 화면을 클릭하시면 재생/일시정지가 가능합니다.</p><br />\n          <p style={{ paddingBottom: '10px' }}>온라인 교육영상을 모두 시청하신 후 <MobileBr />아래 주소의 구글폼에 접속하셔서<br/>\n             교육영상 문제를 풀고 제출하시면 <MobileBr />확인 후 메이트 지원 합격안내를 해드립니다.\n          </p>\n            <Button \n              onClick={() => {\n                window.open('https://docs.google.com/forms/d/e/1FAIpQLSfimp7QrRY0OkrMQQiZLQ3xFodaD7KosDL7PRsIcypencUaXg/viewform?usp=share_link')\n              }}\n              style={{ width: '250px', height: '40px', fontSize: '20px', textAlign: 'center' }}\n          >\n            메이트 교육영상 문제풀기\n          </Button>\n        </div>\n        <WithmateLabel style={{ fontSize: '15px' }}>병원동행 매니저 교육 1: 병원 동행 서비스의 정의</WithmateLabel>\n        <VideoArea>\n          <iframe\n            width=\"100%\"\n            height=\"100%\"\n            src=\"https://youtube.com/embed/3f-CHGx75LY?modestbranding=1?cc_load_policy=1&controls=0&rel=0&disablekb=1\"\n            title=\"withmate YouTube video player2\"\n            allow=\"accelerometer; encrypted-media; gyroscope; picture-in-picture\"\n            allowFullScreen\n            loop={true}\n            controls={false}\n          ></iframe>\n        </VideoArea>\n      </VideoSectionInnerContainer>\n    </VideoSectionContainer>\n  );\n};\n\nconst VideoSectionContainer = styled.div`\n  padding-top: 105px;\n  padding-bottom: 30px;\n\n  width: 100%;\n\n  @media (max-width: 768px) {\n    text-align: center;\n    padding-top: 100px;\n    // padding-top: 10px;\n    // padding-bottom: 0px;\n    padding-bottom: 10px;\n  }\n`;\n\nconst VideoSectionInnerContainer = styled.div`\n  width: 100%;\n  max-width: 1120px;\n  margin: 0 auto;\n`;\n\nconst VideoSectionTitle = styled.h4`\n  font-size: 22px;\n  font-weight: bold;\n  font-stretch: normal;\n  font-style: normal;\n  line-height: 1.42;\n  letter-spacing: -0.5px;\n  text-align: center;\n  color: rgba(0, 0, 0, 0.6);\n\n  margin-top: 0px;\n  margin-bottom: 105px;\n\n  @media (max-width: 768px) {\n    font-size: 14px;\n    margin-bottom: 68px;\n  }\n`;\n\nconst VideoArea = styled.div`\n  width: 100%;\n  height: calc(1120px / 16 * 9);\n  background-color: #000000;\n\n  > iframe,\n  video {\n    width: 100%;\n    height: 100%;\n  }\n\n  @media (max-width: 1120px) {\n    height: calc(100vw / 16 * 9);\n  }\n\n  @media (max-width: 768px) {\n    width: 100%;\n    height: calc(100vw / 16 * 9);\n    background-color: #000000;\n\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    > iframe,\n    video {\n      width: 100%;\n      height: 100%;\n    }\n  }\n`;\n\nconst MobileBr = styled.br`\n    display: none;\n    @media (max-width: 768px) {\n        display: block;\n    }\n`;","import React from 'react';\nimport styled from 'styled-components';\nimport { WithmateLabel } from '../../../../Components/Common/input';\n\nexport const EduVideo2 = () => {\n    return (\n        <VideoSectionContainer>\n            <VideoSectionInnerContainer>\n            <WithmateLabel style={{ fontSize: '15px' }}>병원동행 매니저 교육 2: 메이트 - 안전한 동행</WithmateLabel>\n                <VideoArea>\n                    <iframe\n                        width=\"100%\"\n                        height=\"100%\"\n                        src=\"https://youtube.com/embed/pWcuUOdho-8?modestbranding=1?cc_load_policy=1&controls=0&rel=0&disablekb=1\"\n                        title=\"withmate YouTube video player\"\n                        allow=\"accelerometer; encrypted-media; gyroscope; picture-in-picture\"\n                        allowFullScreen\n                        loop={true}\n                        controls={false}\n                    ></iframe>\n                </VideoArea>\n            </VideoSectionInnerContainer>\n        </VideoSectionContainer>\n    );\n};\n\nconst VideoSectionContainer = styled.div`\n  padding-top: 105px;\n  padding-bottom: 30px;\n\n  width: 100%;\n\n  @media (max-width: 768px) {\n    // padding-top: 62px;\n    padding-top: 10px;\n    // padding-bottom: 0px;\n    padding-bottom: 10px;\n  }\n`;\n\nconst VideoSectionInnerContainer = styled.div`\n  width: 100%;\n  max-width: 1120px;\n  margin: 0 auto;\n`;\n\nconst VideoSectionTitle = styled.h4`\n  font-size: 22px;\n  font-weight: bold;\n  font-stretch: normal;\n  font-style: normal;\n  line-height: 1.42;\n  letter-spacing: -0.5px;\n  text-align: center;\n  color: rgba(0, 0, 0, 0.6);\n\n  margin-top: 0px;\n  margin-bottom: 105px;\n\n  @media (max-width: 768px) {\n    font-size: 14px;\n    margin-bottom: 68px;\n  }\n`;\n\nconst VideoArea = styled.div`\n  width: 100%;\n  height: calc(1120px / 16 * 9);\n  background-color: #000000;\n\n  > iframe,\n  video {\n    width: 100%;\n    height: 100%;\n  }\n\n  @media (max-width: 1120px) {\n    height: calc(100vw / 16 * 9);\n  }\n\n  @media (max-width: 768px) {\n    width: 100%;\n    height: calc(100vw / 16 * 9);\n    background-color: #000000;\n\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    > iframe,\n    video {\n      width: 100%;\n      height: 100%;\n    }\n  }\n`;\n\nconst MobileBr = styled.br`\n  display: none;\n  @media (max-width: 768px) {\n    display: block;\n  }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { WithmateLabel } from '../../../../Components/Common/input';\n\nexport const EduVideo3 = () => {\n    return (\n        <VideoSectionContainer>\n            <VideoSectionInnerContainer>\n            <WithmateLabel style={{ fontSize: '15px' }}>병원동행 매니저 교육 3: 위드메이트 플랫폼 사용 매뉴얼</WithmateLabel>\n                <VideoArea>\n                    <iframe\n                        width=\"100%\"\n                        height=\"100%\"\n                        src=\"https://youtube.com/embed/juq5t-NyCsA?modestbranding=1?cc_load_policy=1&controls=0&rel=0&disablekb=1\"\n                        title=\"withmate YouTube video player3\"\n                        allow=\"accelerometer; encrypted-media; gyroscope; picture-in-picture\"\n                        allowFullScreen\n                        loop={true}\n                        controls={false}\n                    ></iframe>\n                </VideoArea>\n            </VideoSectionInnerContainer>\n        </VideoSectionContainer>\n    );\n};\n\nconst VideoSectionContainer = styled.div`\n  padding-top: 105px;\n  padding-bottom: 30px;\n\n  width: 100%;\n\n  @media (max-width: 768px) {\n    // padding-top: 62px;\n    padding-top: 10px;\n    // padding-bottom: 0px;\n    padding-bottom: 10px;\n  }\n`;\n\nconst VideoSectionInnerContainer = styled.div`\n  width: 100%;\n  max-width: 1120px;\n  margin: 0 auto;\n`;\n\nconst VideoSectionTitle = styled.h4`\n  font-size: 22px;\n  font-weight: bold;\n  font-stretch: normal;\n  font-style: normal;\n  line-height: 1.42;\n  letter-spacing: -0.5px;\n  text-align: center;\n  color: rgba(0, 0, 0, 0.6);\n\n  margin-top: 0px;\n  margin-bottom: 105px;\n\n  @media (max-width: 768px) {\n    font-size: 14px;\n    margin-bottom: 68px;\n  }\n`;\n\nconst VideoArea = styled.div`\n  width: 100%;\n  height: calc(1120px / 16 * 9);\n  background-color: #000000;\n\n  > iframe,\n  video {\n    width: 100%;\n    height: 100%;\n  }\n\n  @media (max-width: 1120px) {\n    height: calc(100vw / 16 * 9);\n  }\n\n  @media (max-width: 768px) {\n    width: 100%;\n    height: calc(100vw / 16 * 9);\n    background-color: #000000;\n\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    > iframe,\n    video {\n      width: 100%;\n      height: 100%;\n    }\n  }\n`;\n\nconst MobileBr = styled.br`\n  display: none;\n  @media (max-width: 768px) {\n    display: block;\n  }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { WithmateLabel } from '../../../../Components/Common/input';\n\nexport const EduVideo4 = () => {\n    return (\n        <VideoSectionContainer>\n            <VideoSectionInnerContainer>\n            <WithmateLabel style={{ fontSize: '15px' }}>병원동행 매니저 교육 4: 메이트 학습 매뉴얼</WithmateLabel>\n                <VideoArea>\n                    <iframe\n                        width=\"100%\"\n                        height=\"100%\"\n                        src=\"https://youtube.com/embed/S9daiT1kMmE?modestbranding=1?cc_load_policy=1&controls=0&rel=0&disablekb=1\"\n                        title=\"withmate YouTube video player4\"\n                        allow=\"accelerometer; encrypted-media; gyroscope; picture-in-picture\"\n                        allowFullScreen\n                        loop={true}\n                        controls={false}\n                    ></iframe>\n                </VideoArea>\n            </VideoSectionInnerContainer>\n        </VideoSectionContainer>\n    );\n};\n\nconst VideoSectionContainer = styled.div`\n  padding-top: 105px;\n  padding-bottom: 30px;\n\n  width: 100%;\n\n  @media (max-width: 768px) {\n    // padding-top: 62px;\n    padding-top: 10px;\n    // padding-bottom: 0px;\n    padding-bottom: 10px;\n  }\n`;\n\nconst VideoSectionInnerContainer = styled.div`\n  width: 100%;\n  max-width: 1120px;\n  margin: 0 auto;\n`;\n\nconst VideoSectionTitle = styled.h4`\n  font-size: 22px;\n  font-weight: bold;\n  font-stretch: normal;\n  font-style: normal;\n  line-height: 1.42;\n  letter-spacing: -0.5px;\n  text-align: center;\n  color: rgba(0, 0, 0, 0.6);\n\n  margin-top: 0px;\n  margin-bottom: 105px;\n\n  @media (max-width: 768px) {\n    font-size: 14px;\n    margin-bottom: 68px;\n  }\n`;\n\nconst VideoArea = styled.div`\n  width: 100%;\n  height: calc(1120px / 16 * 9);\n  background-color: #000000;\n\n  > iframe,\n  video {\n    width: 100%;\n    height: 100%;\n  }\n\n  @media (max-width: 1120px) {\n    height: calc(100vw / 16 * 9);\n  }\n\n  @media (max-width: 768px) {\n    width: 100%;\n    height: calc(100vw / 16 * 9);\n    background-color: #000000;\n\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    > iframe,\n    video {\n      width: 100%;\n      height: 100%;\n    }\n  }\n`;\n\nconst MobileBr = styled.br`\n  display: none;\n  @media (max-width: 768px) {\n    display: block;\n  }\n`;\n","import { message } from 'antd';\nimport React from 'react';\nimport { EduVideo1 } from './VideoList/Video1';\nimport { EduVideo2 } from './VideoList/Video2';\nimport { EduVideo3 } from './VideoList/Video3';\nimport { EduVideo4 } from './VideoList/Video4';\n\nclass ManualComponent extends React.PureComponent {\n    state = {\n        // showEduVideo2: false,\n        // showEduVideo3: false,\n        // showEduVideo4: false\n    }\n\n    componentDidMount = () => {\n        if (!localStorage.getItem('id')) {\n            message.warning('메이트 교육 영상을 시청하시려면 로그인 후 이용해주세요.');\n            return this.props.history.push('/user/login');\n        }\n        this.props.history.push('/mateEducation/manual');\n\n        // this.timer2 = setTimeout(() => {\n        //     this.setState({ showEduVideo2: true });\n        //   }, 2400000); // 40분 뒤 (40 * 60 * 1000)\n          \n        //   this.timer3 = setTimeout(() => {\n        //     this.setState({ showEduVideo3: true });\n        //   }, 3600000); // 1시간 뒤 (60 * 60 * 1000)\n          \n        //   this.timer4 = setTimeout(() => {\n        //     this.setState({ showEduVideo4: true });\n        //   }, 4800000); // 1시간 20분 뒤 (80 * 60 * 1000)\n    }\n\n    // componentWillUnmount() {\n    //     clearTimeout(this.timer2);\n    //     clearTimeout(this.timer3);\n    //     clearTimeout(this.timer4);\n    // }\n\n    render() {\n        return (\n            <div className='video-form'>\n                <EduVideo1 />\n                <EduVideo2 />\n                <EduVideo3 />\n                <EduVideo4 />\n                {/* {this.state.showEduVideo2 && <EduVideo2 />}\n                {this.state.showEduVideo3 && <EduVideo3 />}\n                {this.state.showEduVideo4 && <EduVideo4 />} */}\n            </div>\n\n        );\n    }\n}\nexport default ManualComponent;","import styled from 'styled-components';\nimport { sizeHandler, mainColor } from '../../../theme';\n\nconst StyledListContainer = styled.div`\n    padding-top: 55px;\n\n    .faq-header {\n        // border-bottom: 1px solid #e6e6e6;\n\n        .inner-container {\n            padding: 0px;\n            padding-top: 82px;\n\n            @media (max-width: 768px) {\n                padding-top: 42px;\n            }\n\n            > .flex-wrapper {\n                position: relative;\n\n                .faq-main-title {\n                    flex: 1;\n                    .title {\n                        font-size: ${sizeHandler(30)};\n                        font-weight: bold;\n                        letter-spacing: -0.6px;\n                        color: #000000;\n                        margin-bottom: 8px;\n                    }\n\n                    .description {\n                        font-size: ${sizeHandler(14)};\n                        letter-spacing: -0.3px;\n                        color: rgba(0, 0, 0, 0.8);\n                        margin-bottom: 82px;\n                    }\n                }\n\n                .img-section {\n                    position: absolute;\n                    bottom: -50px;\n                    right: 0px;\n\n                    > img {\n                        width: 100%;\n                        max-width: 549px;\n                        height: auto;\n                        object-fit: cover;\n                    }\n\n                    @media (max-width: 768px) {\n                        display: none;\n                    }\n                }\n            }\n\n            .faq-nav {\n                display: flex;\n                align-items: center;\n\n                .nav-tab {\n                    margin-right: 32px;\n                    padding-bottom: 12px;\n                    position: relative;\n\n                    a {\n                        font-size: ${sizeHandler(14)};\n                        font-weight: bold;\n                        text-align: center;\n                        color: #3bc1ff;\n                    }\n\n                    span.underline {\n                        background-color: #3bc1ff;\n                        position: absolute;\n                        bottom: 0px;\n                        left: 0px;\n\n                        &.active {\n                            width: 100%;\n                            height: 3px;\n                            display: inline-block;\n                        }\n                    }\n\n                    @media (max-width: 768px) {\n                        margin-right: 16px;\n                    }\n                }\n            }\n        }\n    }\n\n    .faq-contents {\n        .inner-container {\n            padding-top: 0px;\n\n            @media (max-width: 768px) {\n                h1 {\n                    font-size: 30px;\n                    margin-top: 60px;\n                }\n            }\n        }\n    }\n\n    .panel-header {\n        display: flex;\n        align-items: center;\n\n        .row-index {\n            width: 80px;\n            color: ${mainColor};\n            font-size: ${sizeHandler(14)};\n            font-weight: bold;\n        }\n\n        .title {\n            flex: 1;\n            font-size: ${sizeHandler(16)};\n            font-weight: normal;\n            color: rgba(0, 0, 0, 0.7);\n        }\n\n        @media (max-width: 768px) {\n            .title {\n                font-size: ${sizeHandler(14)};\n            }\n        }\n    }\n\n    .panel-content {\n        padding-left: 80px;\n\n        > p {\n            width: 60%;\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.7);\n        }\n\n        > .panel-contents-wrapper {\n            margin-top: 20px;\n            margin-bottom: 20px;\n\n            .panel-contents {\n                padding: 12px 0px;\n                border-bottom: 1px solid #e6e6e6;\n\n                &:first-child {\n                    border-top: 1px solid #e6e6e6;\n                }\n\n                .panel-content-subtitle {\n                    float: left;\n                    width: 40%;\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    text-align: left;\n                    color: ${mainColor};\n                }\n\n                .panel-content-subcontents {\n                    float: left;\n                    width: 50%;\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    color: rgba(0, 0, 0, 0.7);\n                }\n\n                @media (max-width: 768px) {\n                    .panel-content-subtitle {\n                        width: 100%;\n                    }\n\n                    .panel-content-subcontents {\n                        width: 100%;\n                    }\n                }\n            }\n        }\n    }\n\n    h1 {\n        font-size: ${sizeHandler(34)};\n        font-weight: bold;\n        color: rgba(0, 0, 0, 0.8);\n        letter-spacing: -1px;\n\n        margin-bottom: 26px;\n        margin-top: 50px;\n    }\n\n    @media (max-width: 1120px) {\n        .faq-header {\n            .inner-container {\n                padding-left: 16px;\n                padding-right: 16px;\n            }\n        }\n        .inner-container {\n            padding-left: 16px;\n            padding-right: 16px;\n        }\n    }\n\n    @media (max-width: 768px) {\n        .panel-header {\n            .row-index {\n                width: 70px;\n            }\n        }\n\n        .panel-content {\n            padding-left: 70px;\n\n            > p {\n                width: 90%;\n            }\n        }\n    }\n`;\nexport default StyledListContainer;\n","import styled from 'styled-components';\n\nconst StyledListContainer = styled.div`\n    // border-bottom: 1px solid #e6e6e6;\n`;\n\nexport const HeaderButton = styled.div`\n    cursor: pointer;\n\n    width: 265px;\n    height: 60px;\n    line-height: 60px;\n\n    font-size: 16px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    letter-spacing: -0.2px;\n    text-align: center;\n    color: #ffffff;\n\n    margin-top: 40px;\n    margin-bottom: 90px;\n    border-radius: 4px;\n    background-color: #3bc1ff;\n\n    &:hover {\n        transition: all 0.5s;\n        opacity: 0.8;\n    }\n\n    @media (max-width: 768px) {\n        width: 230px;\n        height: 48px;\n        line-height: 48px;\n    }\n`;\n\nexport const NavigationTabWrapper = styled.div`\n    display: flex;\n    align-items: center;\n    justify-content: flex-start;\n`;\n\nexport const NavigationTab = styled.span`\n    position: relative;\n    display: inline-block;\n    margin-right: 44px;\n\n    font-size: 16px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: normal;\n    letter-spacing: normal;\n    text-align: center;\n    color: rgba(0, 0, 0, 0.8);\n    padding-bottom: 20px;\n\n    cursor: pointer;\n\n    &.active {\n        color: #55d4ff;\n    }\n`;\n\nexport const NavigationTabUnderline = styled.span`\n    display: inline-block;\n    position: absolute;\n    left: 0px;\n    bottom: -3px;\n\n    width: 100%;\n    height: 3px;\n    background-color: #55d4ff;\n`;\n\nexport const CountDisplay = styled.div`\n    font-size: 36px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.44;\n    letter-spacing: -1px;\n    color: rgba(0, 0, 0, 0.8);\n\n    > span {\n        color: #4bcfff;\n    }\n\n    margin-bottom: 20px;\n`;\n\nexport const CollapseContainer = styled.div`\n    .ant-collapse-icon-position-right > .ant-collapse-item > .ant-collapse-header {\n        padding-left: 0px;\n        padding-right: 0px;\n    }\n\n    .ant-collapse-content > .ant-collapse-content-box {\n        padding-left: 0px;\n        padding-right: 0px;\n    }\n`;\n\nexport const CollapseHeader = styled.div`\n    display: flex;\n    align-items: center;\n    border-bottom: 1px solid #e6e6e6;\n`;\n\nexport const CollapseTab = styled.div`\n    font-size: 14px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.57;\n    letter-spacing: normal;\n    color: rgba(0, 0, 0, 0.7);\n\n    padding-bottom: 11px;\n`;\n\nexport const CollapseTabOnlyDesktop = styled(CollapseTab)`\n    @media (max-width: 768px) {\n        display: none;\n    }\n`;\n\nexport const PanelHeader = styled.div`\n    display: flex;\n`;\n\nexport const PanelField = styled.div`\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    overflow: hidden;\n\n    ${props => (props.style ? props.style : `flex: 1;`)}\n    ${props => (props.onlyDesktop ? `display: block;` : null)} \n\n    &.title {\n        font-size: 16px;\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.56;\n        letter-spacing: normal;\n        color: rgba(0, 0, 0, 0.8);\n    }\n\n    @media (max-width: 768px) {\n        ${props => (props.onlyDesktop ? `display: none;` : null)}\n    }\n`;\n\nexport const Star = styled.img`\n    width: 16.7px;\n    height: 16px;\n    object-fit: contain;\n    margin-bottom: 4px;\n`;\n\nexport const ReviewTextWrapper = styled.div`\n    padding-left: 120px;\n    padding-right: 50px;\n\n    @media (max-width: 768px) {\n        padding-left: 0px;\n    }\n`;\n\nexport const ReviewText = styled.p`\n    font-size: 13px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.71;\n    letter-spacing: -0.3px;\n    color: rgba(0, 0, 0, 0.7);\n`;\n\nexport const MyReview = styled.span`\n    display: inline-block;\n    width: 53px;\n    height: 20px;\n    line-height: 20px;\n    border-radius: 10px;\n    background-color: #3bc1ff;\n\n    font-size: 10px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    letter-spacing: -0.21px;\n    color: #ffffff;\n    text-align: center;\n`;\n\nexport const ReviewMobileInfo = styled.div`\n    display: flex;\n    align-items: center;\n\n    margin-bottom: 27px;\n    display: none;\n\n    @media (max-width: 768px) {\n        display: block;\n    }\n`;\n\nexport const ReviewerName = styled.span`\n    font-size: 13px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.71;\n    letter-spacing: -0.3px;\n    color: rgba(0, 0, 0, 0.7);\n\n    margin-bottom: 0px;\n    margin-right: 16px;\n`;\n\nexport default StyledListContainer;\n","import React from 'react';\nimport moment from 'moment';\nimport { Button, Popover } from 'antd';\nimport _ from 'lodash';\n\nimport { UNEMER, ASSIST } from '../../Lib/variables';\nimport { currencyFormatter, colorParserByStatus } from '../../Lib/utils';\n\nexport const callColumn = ({ onAccept, onCancel, onComplete }) => {\n    return [\n        {\n            title: '예약번호',\n            align: 'left',\n            width: '110px',\n            render: ({ reserve }) => <span>{reserve && reserve.length > 0 ? reserve[0].reserveCode : '-'}</span>,\n        },\n        {\n            title: '이용자 성함',\n            align: 'left',\n            ellipsis: true,\n            width: '72px',\n            render: (_id, { reserve }) => <span>{!reserve ? '-' : reserve[0].patient}</span>,\n        },\n        {\n            title: '진행 현황',\n            align: 'center',\n            ellipsis: true,\n            width: '100px',\n            render: ({ status }) =>\n                status === '결제대기' ? (\n                    <Button className='button' style={{ backgroundColor: '#3bc1ff' }}>\n                        잔금 결제\n                    </Button>\n                ) : (\n                    <span\n                        style={{\n                            fontWeight: 'bold',\n                            color: colorParserByStatus(status),\n                        }}\n                    >\n                        {status}\n                    </span>\n                ),\n        },\n        {\n            title: '서비스',\n            dataIndex: 'reserve',\n            align: 'left',\n            ellipsis: true,\n            width: '100px',\n            render: reserve => (\n                <span>{!reserve ? '-' : reserve[0].service === UNEMER ? '병원 동행 Pro' : reserve[0].service === ASSIST ? '병원 동행 Basic' : '-'}</span>\n            ),\n        },\n        {\n            title: '병원 위치',\n            align: 'left',\n            ellipsis: true,\n            width: '140px',\n            render: (createdAt, { reserve }) => <span>{!reserve ? '-' : reserve[0].starting}</span>,\n        },\n        {\n            title: '예약 일자',\n            align: 'left',\n            ellipsis: true,\n            width: '140px',\n            render: ({ reserve }) => <span>{moment(reserve[0].reserveDate).format('YYYY년 MM월 DD일 - HH:mm A')}</span>,\n        },\n    ];\n};\n\nexport const reserveColumn = ({ onMate, onCancel, onModify, onDetailModify, onServiceReport }) => {\n    return [\n        {\n            title: '예약번호',\n            dataIndex: 'reserveCode',\n            width: '110px',\n            render: reserveCode => <span>{reserveCode ? reserveCode : '-'}</span>,\n        },\n        {\n            title: '서비스',\n            dataIndex: 'service',\n            align: 'left',\n            ellipsis: true,\n            width: '100px',\n            render: service => <span>{service === UNEMER ? '병원 동행 Pro' : service === ASSIST ? '병원 동행 Basic' : '-'}</span>,\n        },\n        {\n            title: '이용자 성함',\n            dataIndex: 'patient',\n            align: 'left',\n            ellipsis: true,\n            width: '90px',\n            render: patient => <span>{patient}</span>,\n        },\n        {\n            title: '병원 위치',\n            dataIndex: 'starting',\n            align: 'left',\n            ellipsis: true,\n            width: '140px',\n            render: starting => <span>{starting}</span>,\n        },\n        {\n            title: '예약 일자',\n            dataIndex: 'reserveDate',\n            align: 'left',\n            ellipsis: true,\n            width: '140px',\n            render: reserveDate => <span>{moment(reserveDate).format('YYYY년 MM월 DD일 - HH:mm A')}</span>,\n        },\n        {\n            title: '진행 현황',\n            // dataIndex: 'status',\n            align: 'center',\n            ellipsis: true,\n            width: '100px',\n            render: ({ call }) =>\n                call[0].status === '결제대기' ? (\n                    <Button className='button' style={{ backgroundColor: '#3bc1ff' }}>\n                        잔금 결제\n                    </Button>\n                ) : (\n                    <span\n                        style={{\n                            fontWeight: 'bold',\n                            color: colorParserByStatus(call[0].status),\n                        }}\n                    >\n                        {call[0].status}\n                    </span>\n                ),\n        },\n        {\n            title: '결제',\n            align: 'center',\n            width: '70px',\n            ellipsis: true,\n            render: ({ paidStatus, call }) => (\n                <span style={{ color: paidStatus ? '#606060' : '#ff5500' }}>{call[0].status === '환불' ? '-' : paidStatus ? '완료' : '대기'}</span>\n            ),\n        },\n        {\n            title: '담당자',\n            align: 'center',\n            width: '70px',\n            ellipsis: true,\n            render: ({ call }) => (\n                <span\n                    onClick={() => {\n                        if (!_.isEmpty(call) && !_.isEmpty(call[0].mate)) onMate(call[0]);\n                    }}\n                    style={{ cursor: !_.isEmpty(call) && !_.isEmpty(call[0].mate) ? 'pointer' : undefined }}\n                >\n                    {!_.isEmpty(call) && !_.isEmpty(call[0].mate) ? call[0].mate[0].name : '-'}\n                </span>\n            ),\n        },\n        {\n            title: '-',\n            align: 'center',\n            width: '50px',\n            render: ({ _id, call, paidStatus, callId, service }) =>\n                call[0].status === '서비스 종료' ? (\n                    <Popover\n                        placement='bottomRight'\n                        content={\n                            <div className='popover-content-wrapper'>\n                                <p\n                                    style={{ borderBottom: '1px solid #606060' }}\n                                    onClick={() => {\n                                        onServiceReport(call[0], service);\n                                    }}\n                                >\n                                    서비스 리포트\n                                </p>\n                            </div>\n                        }\n                    >\n                        <span\n                            style={{\n                                cursor: 'pointer',\n                                display: 'inline-block',\n                                height: '24px',\n                                width: '24px',\n                                lineHeight: '22px',\n                                textAlign: 'center',\n                                border: '1px solid #e6e6e6',\n                                borderRadius: '12px',\n                            }}\n                        >\n                            <i style={{ fontSize: '11px', fontWeight: 300, color: '#3bc1ff' }} className='fas fa-ellipsis-h' />\n                        </span>\n                    </Popover>\n                ) : call[0].status === '접수대기' || (call[0].status === '예약완료' && paidStatus === false) ? (\n                    <Popover\n                        placement='bottomRight'\n                        content={\n                            <div className='popover-content-wrapper'>\n                                <p\n                                    style={{ borderBottom: '1px solid #606060' }}\n                                    onClick={() => {\n                                        call[0].status === '접수대기' ? onDetailModify(_id) : onModify(_id);\n                                    }}\n                                >\n                                    예약수정\n                                    <i className='fas fa-pen' color='#606060' style={{ marginLeft: '20px' }} />\n                                </p>\n                                <p\n                                    onClick={() => {\n                                        onCancel(callId);\n                                    }}\n                                >\n                                    예약취소\n                                    <i className='fas fa-times' color='#606060' style={{ marginLeft: '20px' }} />\n                                </p>\n                            </div>\n                        }\n                    >\n                        <span\n                            style={{\n                                cursor: 'pointer',\n                                display: 'inline-block',\n                                height: '24px',\n                                width: '24px',\n                                lineHeight: '22px',\n                                textAlign: 'center',\n                                border: '1px solid #e6e6e6',\n                                borderRadius: '12px',\n                            }}\n                        >\n                            <i style={{ fontSize: '11px', fontWeight: 300, color: '#3bc1ff' }} className='fas fa-ellipsis-h' />\n                        </span>\n                    </Popover>\n                ) : (\n                    '-'\n                ),\n        },\n    ];\n};\n\nexport const payHistoryColumn = [\n    {\n        title: '서비스',\n        dataIndex: 'service',\n        align: 'left',\n        ellipsis: true,\n        width: '100px',\n        render: service => <span>{service === UNEMER ? '병원 동행 Pro' : service === ASSIST ? '병원 동행 Basic' : '-'}</span>,\n    },\n    {\n        title: '요청사항',\n        dataIndex: 'type',\n        align: 'left',\n        ellipsis: true,\n        width: '60px',\n        render: type => (\n            <span\n                style={{\n                    fontSize: '14px',\n                    fontWeight: 'bold',\n                    letterSpacing: '-0.3px',\n                    color: type === 'paid' ? '#3bc1ff' : '#ff5500',\n                }}\n            >\n                {type === 'paid' ? '결제' : '환불'}\n            </span>\n        ),\n    },\n    {\n        title: '금액',\n        dataIndex: 'price',\n        align: 'left',\n        ellipsis: true,\n        width: '120px',\n        render: price => <span>{currencyFormatter(price)} KRW</span>,\n    },\n    {\n        title: '요청시간',\n        dataIndex: 'createdAt',\n        align: 'left',\n        ellipsis: true,\n        width: '140px',\n        render: createdAt => <span>{moment(createdAt).format('YYYY년 MM월 DD일 - hh:mm A')}</span>,\n    },\n    {\n        title: '상태',\n        dataIndex: 'status',\n        align: 'left',\n        ellipsis: true,\n        width: '80px',\n        render: status => <span style={{ fontSize: '14px', letterSpacing: '-0.3px', color: '#a7a7a7' }}>{status === true ? '완료' : '진행중'}</span>,\n    },\n];\n\nexport const newsEvent = [\n    {\n        title: '번호',\n        dataIndex: 'index',\n        align: 'center',\n        width: '80px',\n    },\n    {\n        title: '제목',\n        dataIndex: 'title',\n        align: 'left',\n        \n    },\n    {\n        title: '등록일',\n        dataIndex: 'createdAt',\n        align: 'center',\n        width: '100px',\n        render: createdAt => <span>{moment(createdAt).format('YY.MM.DD') || '0'}</span>\n    },\n];","import React from 'react';\nimport { Collapse, Icon, Table } from 'antd';\nimport { CollapseContainer } from '../../Review/List/list.styled';\n\nimport { newsEvent } from '../../../Components/Columns/user';\n\nexport default class Event extends React.PureComponent {\n\n    onRow = (row, index) => {\n        return {\n            onClick: () => {\n                this.props.history.push({\n                    pathname: `/newsEvent/info/${row._id}`,\n                    state: {\n                        id: row._id,\n                    },\n                });\n            },\n        };\n    };\n\n    render() {\n\n        return (\n            <div className='faq-container'>\n                <div className='faq-header'>\n                    <div className='inner-container'>\n                        <div className='flex-wrapper'>\n                            <div className='faq-main-title'>\n                                <p className='title'>위드메이트 소식</p>\n                                <p className='description'>위드메이트의 다양한 소식을 확인할 수 있습니다.</p>\n                            </div>\n                            <div className='img-section'>\n                                <img src={'/assets/images/comment_main.png'} style={{ width: '200px', height: 'auto', marginRight: '100px' }} alt='faq-img' />\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div className='faq-contents'>\n                    <CollapseContainer className='inner-container'>\n                        <Table\n                            rowKey='id'\n                            dataSource={this.props.newsEvent.newsEventList}\n                            columns={newsEvent}\n                            onRow={this.onRow}\n                            pagination={{\n                                pageSize: 10\n                            }}\n                        />\n                    </CollapseContainer>\n                </div>\n            </div>\n        );\n    }\n}","import axios from '../axios';\n\nexport const addNewsEvent = async ({ id, title, content, photo, url, url2, urlSource, urlSource2 }) => {\n    const config = {\n        id,\n        title,\n        content,\n        photo,\n        url,\n        url2,\n        urlSource,\n        urlSource2,\n    };\n\n    const result = await imageUpload(photo);\n    config.photo = result.data;\n\n    return axios.post(`/v1/newsEvent/add`, config);\n};\n\nexport const fetchNewsEvent = () => {\n    return axios.get('/v1/newsEvent/list');\n};\n\nexport const getNewsEventInfo = async ({ newsEventId, info }) => {\n    return axios.get('/v1/newsEvent/list/info', { newsEventId, info });\n};\n\nexport const imageUpload = photo => {\n    const formData = new FormData();\n    formData.append('photo', photo);\n    const header = { headers: { 'Content-Type': 'multipart/form-data' } };\n    return axios.post('/v1/newsEvent/image/upload', formData, header);\n};\n","import { createAction, handleActions } from \"redux-actions\";\nimport produce from \"immer\";\nimport * as newsEventAPI from '../../Lib/Api/newsEvent';\nimport _ from 'lodash';\nimport { createReduxThunk } from '../../Lib/middleware';\n\nconst ADD_NEWSEVENT = 'newsEvent/ADD_NEWSEVENT';\nconst ADD_NEWSEVENT_SUCCESS = 'newsEvent/ADD_NEWSEVENT_SUCCESS';\n\nconst NEWSEVENT_INFO = 'newsEvent/NEWSEVENT_INFO';\nconst NEWSEVENT_INFO_SUCCESS = 'newsEvent/NEWSEVENT_INFO_SUCCESS';\n\nconst GET_NEWSEVENT = 'newsEvent/GET_NEWSEVENT';\nconst GET_NEWSEVENT_SUCCESS = 'newsEvent/GET_NEWSEVENT_SUCCESS';\n\nexport const addNewsEvent = createReduxThunk(ADD_NEWSEVENT, newsEventAPI.addNewsEvent);\nexport const fetchNewsEvent = createReduxThunk(GET_NEWSEVENT, newsEventAPI.fetchNewsEvent);\nexport const getNewsEventInfo = createReduxThunk(NEWSEVENT_INFO, newsEventAPI.getNewsEventInfo);\n\n\nconst initalState = {\n    newsEventInfo: {},\n    newsEventList: [],\n};\n\nconst appReducer = handleActions(\n    {\n        [ADD_NEWSEVENT_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => { }),\n\n        [GET_NEWSEVENT_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && payload.message === 'success') {\n                    draft['newsEventList'] = payload.data;\n                }\n            }),\n\n        [NEWSEVENT_INFO_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                if (payload && !_.isEmpty(payload)) {\n                    draft['newsEventInfo'] = payload.data;\n                }\n            }),\n    },\n    initalState\n);\n\nexport default appReducer;","import React from 'react';\nimport { connect } from 'react-redux';\nimport StyledListContainer from './list.styled';\nimport List from './list';\nimport { addNewsEvent, fetchNewsEvent, getNewsEventInfo } from '../../../Reducer/Modules/newsEvent';\n\nclass InfoContainer extends React.PureComponent {\n    componentDidMount = () => {\n        this.props.fetchNewsEvent();\n    };\n\n    render() {\n        return (\n            <StyledListContainer>\n                <List {...this.props} />\n            </StyledListContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({ app, auth, newsEvent }) => ({\n    app,\n    auth,\n    newsEvent,\n});\n\nconst mapDispatchToProps = dispatch => ({\n    fetchNewsEvent: () => dispatch(fetchNewsEvent()),\n    addNewsEvent: info => dispatch(addNewsEvent(info)),\n    getNewsEventInfo: ({ id, newsEventId }) => dispatch(getNewsEventInfo({ id, newsEventId })),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(InfoContainer);\n","import styled from 'styled-components';\nimport { sizeHandler, mainColor } from '../../../theme';\n\nconst StyledInfoContainer = styled.div`\n    padding-top: 55px;\n\n    .faq-header {\n        // border-bottom: 1px solid #e6e6e6;\n\n        .inner-container {\n            padding: 0px;\n            padding-top: 82px;\n\n            @media (max-width: 768px) {\n                padding-top: 42px;\n            }\n\n            > .flex-wrapper {\n                position: relative;\n\n                .faq-main-title {\n                    flex: 1;\n                    .title {\n                        font-size: ${sizeHandler(30)};\n                        font-weight: bold;\n                        letter-spacing: -0.6px;\n                        color: #000000;\n                        margin-bottom: 8px;\n\n                        @media {\n                            padding-left: 10px;\n                        }\n                    }\n\n                    .description {\n                        font-size: ${sizeHandler(14)};\n                        letter-spacing: -0.3px;\n                        color: rgba(0, 0, 0, 0.8);\n                        margin-bottom: 82px;\n\n                        @media {\n                            padding-left: 10px;\n                        }\n                    }\n                }\n\n                .img-section {\n                    position: absolute;\n                    bottom: -50px;\n                    right: 0px;\n\n                    > img {\n                        width: 100%;\n                        max-width: 549px;\n                        height: auto;\n                        object-fit: cover;\n                    }\n\n                    @media (max-width: 768px) {\n                        display: none;\n                    }\n                }\n            }\n        }\n    }\n\n    .info-contents {\n        .inner-container {\n            padding-top: 0px;\n\n            @media (max-width: 768px) {\n                h1 {\n                    font-size: 30px;\n                    margin-top: 60px;\n                }\n            }\n\n            .img-section {\n\n                > img {\n                    max-width: 500px;\n                    height: auto;\n                    object-fit: cover;\n                }\n            }\n        }\n    }    \n\n    h1 {\n        font-size: ${sizeHandler(34)};\n        font-weight: bold;\n        color: rgba(0, 0, 0, 0.8);\n        letter-spacing: -1px;\n\n        margin-bottom: 26px;\n        margin-top: 50px;\n    }\n\n    @media (max-width: 832px) {\n        .info-contents {\n            .inner-container {\n                .img-section {\n                    > img {\n                        max-width: 300px;\n                        height: auto;\n                        object-fit: cover;\n                    }\n                }\n            }\n        }    \n    }\n\n    @media (max-width: 1120px) {\n        .faq-header {\n            .inner-container {\n                padding-left: 16px;\n                padding-right: 16px;\n            }\n        }\n        .inner-container {\n            padding-left: 16px;\n            padding-right: 16px;\n        }\n    }\n\n    @media (max-width: 768px) {\n        .panel-header {\n            .row-index {\n                width: 70px;\n            }\n        }\n\n        .panel-content {\n            padding-left: 70px;\n\n            > p {\n                width: 90%;\n            }\n        }\n    }\n`;\n\nexport default StyledInfoContainer;","import React from 'react';\n\nexport const InfoBlock = ({ label, value, children }) => (\n    <div style={{ paddingBottom: '20px', marginBottom: '20px', borderBottom: '1px solid #e6e6e6' }}>\n        <p style={{ margin: 0, padding: 0, marginBottom: '8px', color: 'rgba(0,0,0,0.4)', fontSize: '10px' }}>{label}</p>\n        <p style={{ margin: 0, padding: 0, color: 'rgba(0,0,0,0.87)', fontSize: '14px' }}>{value}</p>\n        {children}\n    </div>\n);\n","import React from 'react';\nimport axios from '../../../Lib/axios';\nimport styled from 'styled-components';\nimport moment from 'moment';\nimport { Button, message, Table } from 'antd';\nimport { CollapseContainer } from '../../Review/List/list.styled';\n\nimport { InfoBlock } from '../../../Components/Common/block';\n\nexport default class Event extends React.PureComponent {\n    state = {\n        data: {},\n    };\n\n    componentDidMount = () => {\n        // const { state } = this.props.history.location;\n        // if (!state || !state.id) return this.props.history.goBack();\n        const { id } = this.props.match.params;\n\n        this.fetchInfo(id);\n    };\n\n    fetchInfo = async id => {\n        const { data } = await axios.get('/v1/newsEvent/list/info', {\n            params: {\n                newsEventId: id,\n            },\n        });\n\n        if (!data || data === 'check parameters') {\n            return this.props.history.goBack();\n        }\n\n        if (data === 'invalid newEvent') {\n            return message.warning('잘못된 게시물 정보입니다.');\n        }\n\n        this.setState({ ...data });\n    };\n\n    render() {\n        const { url, url2, urlSource, urlSource2 } = this.state;\n\n        return (\n            <div className='faq-container'>\n                <div className='faq-header'>\n                    <div className='inner-container'>\n                        <div className='flex-wrapper'>\n                            <div className='faq-main-title'>\n                                <p className='title'>위드메이트 소식</p>\n                                <p className='description'>위드메이트의 다양한 소식을 확인할 수 있습니다.</p>\n                            </div>\n                            <div className='img-section'>\n                                <img src={'/assets/images/comment_main.png'} style={{ width: '200px', height: 'auto', marginRight: '100px' }} alt='faq-img' />\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div className='info-contents'>\n                    <CollapseContainer className='inner-container' style={{ width: '80%', margin: 'auto' }}>\n                        <>\n                            <ValueBox>\n                                <Label style={{ fontSize: '25px' }}>{this.state.title}</Label>\n                            </ValueBox>\n\n                            <ValueBox style={{ textAlign: 'right' }}>\n                                <InfoBlock label='작성일' value={moment(this.state.createdAt).format('YYYY년 MM월 DD일 dddd')} />\n                            </ValueBox>\n\n                            <ValueBox>\n                                {this.state.photo && (\n                                    <div className='img-section' style={{ display: 'flex', justifyContent: 'center' }}>\n                                        <img\n                                            style={{ objectFit: 'contain' }}\n                                            src={typeof this.state.photo === 'string' ? this.state.photo : URL.createObjectURL(this.state.photo)}\n                                            alt='사진'\n                                        />\n                                    </div>\n                                )}\n                            </ValueBox>\n\n                            <ValueBox>\n                                <InfoBlock label='내용'>\n                                    <p style={{ whiteSpace: 'pre-wrap' }}>{this.state.content} </p>\n                                </InfoBlock>\n                                {this.state.url ? (\n                                    <InfoBlock label='링크'>\n                                        {url ? (\n                                            <a href={this.state.url} target='_blank' style={{ fontSize: '15px', color: '#3bc1ff' }}>\n                                                ㆍ{urlSource}\n                                            </a>\n                                        ) : (\n                                            ''\n                                        )}{' '}\n                                        <br />\n                                        {url2 ? (\n                                            <a href={this.state.url2} target='_blank' style={{ fontSize: '15px', color: '#3bc1ff' }}>\n                                                ㆍ{urlSource2}\n                                            </a>\n                                        ) : (\n                                            ''\n                                        )}\n                                    </InfoBlock>\n                                ) : null}\n                            </ValueBox>\n\n                            <ValueBox>\n                                <Button\n                                    className='white'\n                                    onClick={() => {\n                                        this.props.history.goBack();\n                                    }}\n                                    style={{ float: 'right' }}\n                                >\n                                    목록으로\n                                </Button>\n                            </ValueBox>\n                        </>\n                    </CollapseContainer>\n                </div>\n            </div>\n        );\n    }\n}\n\nexport const ValueBox = styled.div`\n    margin-bottom: 16px;\n`;\n\nexport const Label = styled.p`\n    text-align: left;\n    font-size: 11px;\n    margin-bottom: 4px;\n    color: #565656;\n`;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport StyledInfoContainer from './info.styled';\nimport Info from './info';\nimport { addNewsEvent, fetchNewsEvent, getNewsEventInfo } from '../../../Reducer/Modules/newsEvent';\n\nclass InfoContainer extends React.PureComponent {\n    componentDidMount = () => {\n        const { id } = this.props.auth;\n        const { state } = this.props.location;\n        const { id: newsEventId } = this.props.match.params;\n\n        // console.log(newsEventId, state);\n\n        if (state === 'newsEvent') this.props.getNewsEventInfo({ newsEventId });\n    };\n\n    render() {\n        return (\n            <StyledInfoContainer>\n                <Info {...this.props} />\n            </StyledInfoContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({ app, auth, newsEvent }) => ({\n    app, \n    auth,\n    newsEvent\n});\n\nconst mapDispatchToProps = dispatch => ({\n    fetchNewsEvent: () => dispatch(fetchNewsEvent()),\n    addNewsEvent: (info) => dispatch(addNewsEvent(info)),\n    getNewsEventInfo: ({ id, newsEventId }) => dispatch(getNewsEventInfo({ id, newsEventId }))\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(InfoContainer);\n","import React from 'react';\nimport { Switch, Route } from 'react-router-dom';\n\n// pages\nimport List from './List';\nimport Info from './Info';\n\nclass NewsEvent extends React.PureComponent {\n    render() {\n        return (\n            <Switch>\n                <Route exact path='/newsEvent/list' component={List} />\n                <Route exact path='/newsEvent/info/:id' component={Info} />\n            </Switch>\n        );\n    }\n}\nexport default NewsEvent;\n","import { createAction, handleActions } from 'redux-actions';\nimport produce from 'immer';\nimport * as reviewAPI from '../../Lib/Api/review';\nimport _ from 'lodash';\nimport { createReduxThunk } from '../../Lib/middleware';\n\nconst ADD_REVIEW = 'review/ADD_REVIEW';\nconst ADD_REVIEW_SUCCESS = 'review/ADD_REVIEW_SUCCESS';\n\nconst REPLY_REVIEW = 'review/REPLY_REVIEW';\nconst REPLY_REVIEW_SUCCESS = 'review/REPLY_REVIEW_SUCCESS';\n\nconst DELETE_REVIEW = 'review/DELETE_REVIEW';\nconst DELETE_REVIEW_SUCCESS = 'review/DELETE_REVIEW_SUCCESS';\n\nconst GET_REVIEW_LIST = 'review/GET_REVIEW_LIST';\nconst GET_REVIEW_LIST_SUCCESS = 'review/GET_REVIEW_LIST_SUCCESS';\n\nconst EDIT_REVIEW = 'review/EDIT_REVIEW';\n\n// initalState\nconst initialState = {\n    review: {},\n    reviewList: [],\n    reviewPage: 0,\n    tab: 'basic',\n};\n\nexport const addReview = createReduxThunk(ADD_REVIEW, reviewAPI.addReview);\nexport const replyReview = createReduxThunk(REPLY_REVIEW, reviewAPI.replyReview);\nexport const deleteReview = createReduxThunk(DELETE_REVIEW, reviewAPI.deleteReview);\nexport const getReviewList = createReduxThunk(GET_REVIEW_LIST, reviewAPI.getReviewList);\n\nexport const editReview = createAction(EDIT_REVIEW, input => input);\n\nconst appReducer = handleActions(\n    {\n        [ADD_REVIEW_SUCCESS]: (state, { payload }) => produce(state, draft => {}),\n        [GET_REVIEW_LIST_SUCCESS]: (state, { payload }) =>\n            produce(state, draft => {\n                draft['reviewList'] = payload;\n            }),\n        [EDIT_REVIEW]: (state, { payload }) =>\n            produce(state, draft => {\n                draft[payload.type] = payload.value;\n            }),\n    },\n    initialState,\n);\n\nexport default appReducer;\n","import axios from '../axios';\n\nexport const addReview = ({ reserveId, userId, title, review, score, reserveDate }) => {\n    return axios.post(`/v1/review/add`, { reserveId, userId, title, review, score, reserveDate });\n};\n\nexport const getReviewList = ({ page }) => {\n    return axios.get(`/v1/review/list`, { page });\n};\n\nexport const replyReview = ({}) => {\n    return axios.post(`/v1/reply/review`, {});\n};\n\nexport const deleteReview = ({ reviewId }) => {\n    return axios.put(`/v1/delete/review`, { reviewId });\n};\n","import styled from 'styled-components';\nimport { Input } from 'antd';\n\nconst StyledAddContainer = styled.div``;\n\nexport default StyledAddContainer;\n\nexport const WritePaper = styled.div`\n    background-color: white;\n    padding: 21px 31px 31px 31px;\n    border-radius: 8px;\n    border: solid 1px #e6e6e6;\n\n    @media (max-width: 480px) {\n        padding: 16px;\n        border-radius: 4px;\n    }\n`;\n\nexport const FormHeader = styled.div`\n    border-bottom: solid 1px #e6e6e6;\n    padding-bottom: 22px;\n`;\n\nexport const FormTitle = styled.div`\n    font-size: 32px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.5;\n    letter-spacing: -0.7px;\n    color: rgba(0, 0, 0, 0.7);\n\n    margin-bottom: 4px;\n\n    @media (max-width: 480px) {\n        font-size: 24px;\n    }\n`;\n\nexport const FormSubtitle = styled.div`\n    font-size: 16px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.75;\n    letter-spacing: -0.2px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    margin-bottom: 32px;\n\n    @media (max-width: 480px) {\n        font-size: 13px;\n    }\n`;\n\nexport const FormTypeWrapper = styled.div`\n    display: flex;\n    align-items: flex-start;\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n        align-items: flex-start;\n    }\n`;\n\nexport const FormTypeBlock = styled.div`\n    margin-right 220px;\n\n    @media (max-width: 768px) {\n        margin-right: 0px;\n        margin-bottom: 20px;\n\n        &:last-child {\n            margin-bottom: 0px;\n        }\n    }\n`;\n\nexport const FormTypeTitle = styled.p`\n    font-size: 11px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.67;\n    letter-spacing: normal;\n    color: #b1b1b1;\n\n    margin-bottom: 11px;\n\n    @media (max-width: 480px) {\n        font-size: 10px;\n    }\n`;\n\nexport const FormTypeDesc = styled.p`\n    font-size: 20px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.54;\n    letter-spacing: -0.1px;\n    text-align: left;\n    color: #3bc1ff;\n\n    margin-bottom: 0px;\n\n    @media (max-width: 480px) {\n        font-size: 16px;\n    }\n`;\n\nexport const FormDescription = styled.span`\n    font-size: 18px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.26;\n    letter-spacing: -0.1px;\n    text-align: left;\n    color: #3bc1ff;\n\n    margin-left: 4px;\n\n    @media (max-width: 480px) {\n        font-size: 11px;\n    }\n`;\n\nexport const StarImg = styled.img`\n    width: 46px;\n    height: 44px;\n    margin-right: 8px;\n\n    @media (max-width: 480px) {\n        width: 26px;\n        height: 24px;\n        margin-right: 4px;\n    }\n`;\n\nexport const FormBody = styled.div`\n    padding-top: 22px;\n`;\n\nexport const FormRow = styled.div`\n    margin-bottom: 32px;\n`;\n\nexport const FormInput = styled(Input)`\n    height: 44px;\n\n    font-size: 14px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.75;\n    letter-spacing: -0.3px;\n    color: #161616;\n\n    &::placeholder {\n        font-size: 14px;\n        font-weight: normal;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.75;\n        letter-spacing: -0.3px;\n        color: #a7a7a7;\n    }\n\n    @media (max-width: 480px) {\n        font-size: 12px;\n\n        &::placeholder {\n            font-size: 11px;\n        }\n    }\n`;\n\nexport const FormTextarea = styled(Input.TextArea)`\n    font-size: 14px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.75;\n    letter-spacing: -0.3px;\n    color: #161616;\n\n    &::placeholder {\n        font-size: 14px;\n        font-weight: normal;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.75;\n        letter-spacing: -0.3px;\n        color: #a7a7a7;\n    }\n\n    @media (max-width: 480px) {\n        font-size: 12px;\n\n        &::placeholder {\n            font-size: 11px;\n        }\n    }\n`;\n\nexport const FormButtonWrapper = styled.div`\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    margin-top: 50px;\n\n    @media (max-width: 480px) {\n        margin-top: 32px;\n    }\n`;\n\nexport const FormButton = styled.div`\n    cursor: pointer;\n\n    border-radius: 2px;\n    width: 297px;\n    height: 60px;\n    line-height: 60px;\n\n    font-size: 16px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    letter-spacing: -0.15px;\n    text-align: center;\n    color: #ffffff;\n\n    &.blue {\n        background-color: #3bc1ff;\n    }\n\n    &.white {\n        background-color: #b7b7b7;\n        margin-right: 16px;\n    }\n\n    &:hover {\n        transition: all 0.5s;\n        opacity: 0.8;\n    }\n\n    @media (max-width: 480px) {\n        height: 44px;\n        line-height: 44px;\n        font-size: 13px;\n    }\n`;\n\nexport const FormTitleRowWrapper = styled.div`\n    padding-top: 16px;\n    padding-bottom: 16px;\n\n    border-bottom: 1px solid #f2f2f2;\n`;\n\nexport const FormRowTitle = styled.div`\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n\n    font-size: 18px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.65;\n    letter-spacing: -0.2px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n    margin-bottom: 0px;\n\n    @media (max-width: 480px) {\n        font-size: 14px;\n        flex-direction: column;\n        align-items: flex-start;\n    }\n`;\n\nexport const CheckboxGroup = styled.div`\n    display: flex;\n    align-items: center;\n    justify-content: flex-end;\n    text-align: right;\n\n    font-size: 18px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.65;\n    letter-spacing: -0.2px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    .ant-checkbox-inner {\n        width: 18px;\n        height: 18px;\n    }\n\n    @media (max-width: 480px) {\n        .ant-checkbox-wrapper {\n            font-size: 12px !important;\n        }\n        .ant-checkbox-inner {\n            width: 16px;\n            height: 16px;\n        }\n\n        margin-top: 4px;\n    }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\n\nconst CommentPageHeader = ({ children, title, desc }) => {\n    return (\n        <HeaderContainer>\n            <HeaderWrapper className='inner-container'>\n                <HeaderBlock>\n                    <HeaderTitle>{title}</HeaderTitle>\n                    <HeaderDescription>\n                        {desc.split('\\n').map((word, index) => (\n                            <p key={'add-word-brea-' + index.toString()}>{word}</p>\n                        ))}\n                    </HeaderDescription>\n                    {children}\n                </HeaderBlock>\n                <HeaderBlock className='img-cover'>\n                    <MainImageWrapper>\n                        {/* <MainImage src='/assets/images/comment_main.png' /> */}\n                        <MainImage src='/assets/images/w_main_crop.png' />\n                    </MainImageWrapper>\n                </HeaderBlock>\n            </HeaderWrapper>\n        </HeaderContainer>\n    );\n};\n\nconst HeaderContainer = styled.div`\n    // border-bottom: 1px solid #e6e6e6;\n`;\n\nconst HeaderWrapper = styled.div`\n    display: flex;\n\n    padding: 0px;\n    padding-top: 100px;\n    padding-bottom: 0px;\n\n    @media (max-width: 1120px) {\n        padding: 100px 16px 0px 16px;\n    }\n`;\n\nconst HeaderBlock = styled.div`\n    flex: 1;\n\n    &.img-cover {\n        flex: 1.2;\n\n        display: flex;\n        justify-content: flex-start;\n        align-items: flex-end;\n\n        @media (max-width: 768px) {\n            display: none;\n        }\n    }\n`;\n\nconst HeaderTitle = styled.div`\n    font-size: 44px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.33;\n    letter-spacing: -0.6px;\n    color: #000000;\n\n    margin-top: 30px;\n    margin-bottom: 6px;\n\n    @media (max-width: 768px) {\n        font-size: 32px;\n        margin-top: 16px;\n    }\n`;\n\nconst HeaderDescription = styled.div`\n    > p {\n        margin-bottom: 0px;\n\n        font-size: 14px;\n        font-weight: normal;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.75;\n        letter-spacing: -0.3px;\n        color: rgba(0, 0, 0, 0.8);\n\n        @media (max-width: 768px) {\n            font-size: 12px;\n        }\n    }\n`;\n\nconst MainImageWrapper = styled.div`\n    display: flex;\n    justify-content: flex-start;\n\n    width: 80%;\n    height: 100%;\n    max-height: 391px;\n`;\n\nconst MainImage = styled.div`\n    width: 100%;\n    height: 100%;\n    background-image: url(${props => props.src});\n    background-position: top;\n    background-repeat: no-repeat;\n    background-size: cover;\n`;\n\nexport default CommentPageHeader;\n","import React from 'react';\nimport styled from 'styled-components';\nimport StarRatingComponent from 'react-star-rating-component';\nimport { message, notification, Checkbox } from 'antd';\nimport moment from 'moment';\n\nimport { ASSIST } from '../../../Lib/variables';\nimport axios from '../../../Lib/axios';\nimport CommentPageHeader from '../../../Components/Templates/Review/header';\nimport { WithmateLabel, DivisionLine, WithmateInput, WithmateTextarea } from '../../../Components/Common/input';\n\nimport {\n    WritePaper,\n    FormHeader,\n    StarImg,\n    FormTitle,\n    FormSubtitle,\n    FormTypeWrapper,\n    FormTypeBlock,\n    CheckboxGroup,\n    FormTypeDesc,\n    FormRowTitle,\n    FormDescription,\n    FormTitleRowWrapper,\n    FormButtonWrapper,\n    FormButton,\n} from './add.styled';\n\nexport default class AddComment extends React.PureComponent {\n    state = {\n        star: 0,\n        title: '',\n        review: '',\n        useAgain: null,\n        corpSatisfied: null,\n        corpSatisfiedReason: '',\n        doctorSatisfied: null,\n        doctorSatisfiedReason: '',\n        hope: '',\n    };\n\n    componentDidMount = () => {\n        this.checkReserveValidation();\n    };\n\n    checkReserveValidation = async () => {\n        const id = localStorage.getItem('id');\n        const { params } = this.props.match;\n\n        if (!params.reserveId) {\n            message.info('올바르지않은 시도입니다. 다시 시도해주세요.');\n            return this.props.history.goBack();\n        }\n        const { data: reviewStatus } = await axios.get('/v1/review/check/validation', { params: { reserveId: params.reserveId } });\n        if (!reviewStatus) {\n            message.info('올바르지않은 시도입니다. 다시 시도해주세요.');\n            return setTimeout(() => {\n                this.props.history.goBack();\n            }, 1000);\n        }\n\n        if (reviewStatus === 'already registered') {\n            notification.error({\n                message: '작성 완료 알림',\n                description: `이미 해당 이용에 대한 후기를 작성하였습니다. 목록으로 돌아가 다시 시도해주세요.`,\n            });\n\n            return setTimeout(() => {\n                this.props.history.goBack();\n            }, 1000);\n        }\n\n        if (reviewStatus === 'invalid reserve') {\n            notification.error({\n                message: '유효하지 않은 이용내역',\n                description: `올바르지않은 시도입니다. 다시 시도해주세요.`,\n            });\n            return setTimeout(() => {\n                this.props.history.goBack();\n            }, 1000);\n        }\n\n        axios.get('/v2/service/user/reserve/info', { params: { userId: id, reserveId: params.reserveId } }).then(resolve => {\n            const { data: info } = resolve;\n            if (!info) return message.error('죄송합니다. 요청에 실패하였습니다. 잠시 후 다시 시도해주세요.');\n            if (info === 'invalid reserve') return message.warning('유효하지않은 예약입니다.');\n\n            const serviceType =\n                !info.productInfo || !info.productInfo.usePro || !info.productInfo.useBasic ? '' : info.service === 'unemergency' ? 'Pro' : 'Basic';\n            const serviceName = (info.productInfo && info.productInfo.name && info.service && info.productInfo.name + serviceType) || '-';\n\n            this.setState({\n                reserveId: info._id,\n                callId: info.call._id,\n                service: info.service,\n                reserveDate: info.reserveDate,\n                serviceName,\n            });\n        });\n    };\n\n    starHandler = (nextValue, prevValue, name) => {\n        this.setState({ star: nextValue });\n    };\n\n    inputHandler = ({ type, value }) => {\n        this.setState({\n            [type]: value,\n        });\n    };\n\n    onAddReview = () => {\n        // 리뷰 추가\n        const userId = localStorage.getItem('id');\n        const { star, reserveId, title, review, useAgain, corpSatisfied, corpSatisfiedReason, doctorSatisfied, doctorSatisfiedReason, hope, reserveDate } = this.state;\n\n        const info = { score: star };\n\n        if (title) info.title = title;\n        if (reserveDate) info.reserveDate = reserveDate;\n        if (review) info.review = review;\n        if (typeof useAgain === 'boolean') info.useAgain = useAgain;\n        if (typeof corpSatisfied === 'boolean') info.corpSatisfied = corpSatisfied;\n        if (corpSatisfiedReason) info.corpSatisfiedReason = corpSatisfiedReason;\n        if (typeof doctorSatisfied === 'boolean') info.doctorSatisfied = doctorSatisfied;\n        if (doctorSatisfiedReason) info.doctorSatisfiedReason = doctorSatisfiedReason;\n        if (hope) info.hope = hope;\n\n        if (!star) return message.warning('별점을 매겨주세요.');\n\n        axios\n            .post('/v2/review/add', { info, reserveId, userId })\n            .then(resolve => {\n                const { data } = resolve;\n                if (!data) return message.error('죄송합니다. 일시적인 서버 장애로 요청에 실패하였습니다. 잠시 후 다시 시도해주세요.');\n                else if (data === 'check parameters') return message.warning('요청에 실패하였습니다.');\n                else if (data === 'invalid') return message.warning('잘못된 요청입니다. 재 로그인 후 시도해주세요.');\n                else if (data === 'not exist reserve') return message.warning('잘못된 요청입니다. 새로고침 후 다시 시도해주세요.');\n                else if (data === 'already registered') return message.warning('이미 리뷰 등록을 완료한 예약입니다.');\n                else if (data === 'success') {\n                    message.success('리뷰 등록 완료');\n                    setTimeout(() => {\n                        this.props.history.goBack();\n                    }, 250);\n                    return null;\n                }\n            })\n            .catch(error => {\n                return message.error('죄송합니다. 일시적인 서버 장애로 요청에 실패하였습니다. 잠시 후 다시 시도해주세요.');\n            });\n    };\n\n    render() {\n        const { star, title, serviceName, reserveDate, review, useAgain, corpSatisfied, corpSatisfiedReason, doctorSatisfied, doctorSatisfiedReason, hope } =\n            this.state;\n\n        return (\n            <div>\n                <CommentPageHeader title='서비스 이용 후기 작성' desc={`후기 작성 시 최대 3,000포인트를\\n 지급해드립니다.`}>\n                    <PaddingDiv style={{ paddingTop: '90px' }} />\n                </CommentPageHeader>\n\n                <FullContainer>\n                    <div className='inner-container'>\n                        <WritePaper>\n                            <FormHeader>\n                                <FormTitle>후기 작성</FormTitle>\n                                <FormSubtitle>후기를 작성하실 이용 내역을 선택해주세요</FormSubtitle>\n                                <FormTypeWrapper>\n                                    <FormTypeBlock>\n                                        <WithmateLabel>이용하신 서비스</WithmateLabel>\n                                        <FormTypeDesc>{serviceName}</FormTypeDesc>\n                                    </FormTypeBlock>\n                                    <FormTypeBlock>\n                                        {/* <WithmateLabel>이용 날짜</WithmateLabel>\n                                        <FormTypeDesc>{moment(reserveDate).format('YYYY년 MM월 DD일')}</FormTypeDesc>\n                                    </FormTypeBlock> */}\n                                        <WithmateLabel>서비스 이용 날짜</WithmateLabel>\n                                        <FormTypeDesc>{moment(reserveDate).format('YYYY년 MM월 DD일')}</FormTypeDesc>\n                                    </FormTypeBlock>\n                                </FormTypeWrapper>\n                            </FormHeader>\n\n                            <DivisionLine big />\n\n                            <WithmateLabel required>\n                                별점\n                                <FormDescription>(작성 시 500포인트 지급)</FormDescription>\n                            </WithmateLabel>\n                            <StarRatingComponent\n                                starCount={5}\n                                value={star}\n                                renderStarIcon={(index, value) => {\n                                    return <StarImg src={`/assets/images/icon_${index <= value ? 'active_star' : 'star'}.png`} />;\n                                }}\n                                onStarClick={this.starHandler}\n                            />\n\n                            <DivisionLine big />\n\n                            <WithmateLabel>\n                                제목\n                                <FormDescription>(제목 + 이용후기 작성 시 500포인트 지급)</FormDescription>\n                            </WithmateLabel>\n                            <WithmateInput\n                                value={title}\n                                maxLength={30}\n                                onChange={ev => {\n                                    this.inputHandler({ type: 'title', value: ev.target.value });\n                                }}\n                                placeholder='제목을 입력해주세요.'\n                            />\n\n                            <DivisionLine big />\n\n                            <WithmateLabel>이용 후기</WithmateLabel>\n                            <WithmateTextarea\n                                value={review || undefined}\n                                placeholder='고객님의 소중한 후기는 위드메이트 서비스 개선에 많은 도움이 됩니다. 감사합니다.'\n                                onChange={ev => {\n                                    this.inputHandler({ type: 'review', value: ev.target.value });\n                                }}\n                            />\n\n                            <DivisionLine big />\n                            <DivisionLine big />\n\n                            <WithmateLabel>\n                                추가 선택 사항\n                                <FormDescription>(선택사항까지 작성 완료 시 2000포인트 추가 지급)</FormDescription>\n                            </WithmateLabel>\n\n                            <DivisionLine small />\n\n                            <FormTitleRowWrapper>\n                                <FormRowTitle>\n                                    다음 진료에도 위드메이트를 사용하실건가요?\n                                    <CheckboxGroup>\n                                        <Checkbox\n                                            value={true}\n                                            checked={useAgain === true}\n                                            onClick={() => {\n                                                this.setState({ useAgain: !useAgain ? true : null });\n                                            }}\n                                        >\n                                            예\n                                        </Checkbox>\n                                        <Checkbox\n                                            value={false}\n                                            checked={useAgain === false}\n                                            onClick={() => {\n                                                this.setState({ useAgain: useAgain === false ? null : false });\n                                            }}\n                                        >\n                                            아니오\n                                        </Checkbox>\n                                    </CheckboxGroup>\n                                </FormRowTitle>\n                            </FormTitleRowWrapper>\n\n                            <FormTitleRowWrapper>\n                                <FormRowTitle>\n                                    금일 방문하신 의료 기관의 서비스에 만족하시나요?\n                                    <CheckboxGroup>\n                                        <Checkbox\n                                            value={true}\n                                            checked={corpSatisfied === true}\n                                            onClick={() => {\n                                                this.setState({ corpSatisfied: !corpSatisfied ? true : null });\n                                            }}\n                                        >\n                                            예\n                                        </Checkbox>\n                                        <Checkbox\n                                            value={false}\n                                            checked={corpSatisfied === false}\n                                            onClick={() => {\n                                                this.setState({ corpSatisfied: corpSatisfied === false ? null : false });\n                                            }}\n                                        >\n                                            아니오\n                                        </Checkbox>\n                                    </CheckboxGroup>\n                                </FormRowTitle>\n                            </FormTitleRowWrapper>\n\n                            <FormTitleRowWrapper>\n                                <FormRowTitle>이유는 무엇인가요?</FormRowTitle>\n                                <DivisionLine x_small />\n                                <WithmateInput\n                                    value={corpSatisfiedReason}\n                                    maxLength={30}\n                                    onChange={ev => {\n                                        this.inputHandler({ type: 'corpSatisfiedReason', value: ev.target.value });\n                                    }}\n                                    placeholder='어떤 부분에서 의료기관이 만족스러우셨는지 입력해주세요.'\n                                />\n                            </FormTitleRowWrapper>\n\n                            <FormTitleRowWrapper>\n                                <FormRowTitle>\n                                    금일 방문하신 의료 기관의 의료진은 누구이고, 서비스에 만족하시나요?\n                                    <CheckboxGroup>\n                                        <Checkbox\n                                            value={true}\n                                            checked={doctorSatisfied === true}\n                                            onClick={() => {\n                                                this.setState({ doctorSatisfied: !doctorSatisfied ? true : null });\n                                            }}\n                                        >\n                                            예\n                                        </Checkbox>\n                                        <Checkbox\n                                            value={false}\n                                            checked={doctorSatisfied === false}\n                                            onClick={() => {\n                                                this.setState({ doctorSatisfied: doctorSatisfied === false ? null : false });\n                                            }}\n                                        >\n                                            아니오\n                                        </Checkbox>\n                                    </CheckboxGroup>\n                                </FormRowTitle>\n                                <DivisionLine x_small />\n                                <WithmateInput\n                                    value={doctorSatisfiedReason}\n                                    maxLength={30}\n                                    onChange={ev => {\n                                        this.inputHandler({ type: 'doctorSatisfiedReason', value: ev.target.value });\n                                    }}\n                                    placeholder='의료진의 이름과 만족하는 이유를 입력해주세요.'\n                                />\n                            </FormTitleRowWrapper>\n\n                            <FormTitleRowWrapper>\n                                <FormRowTitle>병원 동행 서비스의 개선점이 있다면 무엇이라고 생각하시나요?</FormRowTitle>\n                                <DivisionLine x_small />\n                                <WithmateTextarea\n                                    value={hope || undefined}\n                                    placeholder={`고객님의 소중한 후기는 위드메이트 서비스개선에 많은 도움이 됩니다.\n감사합니다.`}\n                                    onChange={ev => {\n                                        this.inputHandler({ type: 'hope', value: ev.target.value });\n                                    }}\n                                />\n                            </FormTitleRowWrapper>\n\n                            <DivisionLine big />\n\n                            <FormButtonWrapper>\n                                <FormButton\n                                    className='white'\n                                    onClick={() => {\n                                        this.props.history.goBack();\n                                    }}\n                                >\n                                    뒤로가기\n                                </FormButton>\n                                <FormButton className='blue' onClick={this.onAddReview}>\n                                    등록하기\n                                </FormButton>\n                            </FormButtonWrapper>\n                        </WritePaper>\n                    </div>\n                </FullContainer>\n            </div>\n        );\n    }\n}\nexport const PaddingDiv = styled.div``;\n\nexport const FullContainer = styled.div`\n    width: 100%;\n    background-color: #f6f6f6;\n    min-height: 70vh;\n\n    @media (max-width: 480px) {\n        > .inner-container {\n            padding: 16px 16px;\n        }\n    }\n`;\n","import React from 'react';\nimport { connect } from 'react-redux';\n\nimport { getReserveInfo } from '../../../Reducer/Modules/app';\nimport { addReview } from '../../../Reducer/Modules/review';\nimport StyledAddContainer from './add.styled';\nimport AddCommentPage from './add';\nimport { message } from 'antd';\n\nclass AddCommentPageContainer extends React.PureComponent {\n    componentDidMount = () => {\n        const id = localStorage.getItem('id');\n        const { params } = this.props.match;\n\n        if (!id) {\n            message.info('로그인 후 이용해주세요.');\n            return this.props.history.push('/user/login');\n        }\n\n        if (params && params.reserveId) {\n            this.props\n                .getReserve({\n                    reserveId: params.reserveId,\n                    userId: id,\n                })\n                .then(resolve => {\n                    if (resolve === 'no matched user') {\n                        message.info('해당 리뷰의 접근권한이 없습니다.');\n                        return this.props.history.push('/review/own/usage/list');\n                    }\n\n                    if (resolve && resolve.review && resolve.review.length > 0) {\n                        message.info('이미 리뷰를 작성하였습니다.');\n                        return this.props.history.push('/review/own/usage/list');\n                    }\n                });\n        }\n    };\n\n    render() {\n        return (\n            <StyledAddContainer>\n                <AddCommentPage {...this.props} />\n            </StyledAddContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({ app, auth, review }) => ({\n    app,\n    auth,\n    review,\n});\n\nconst mapDispatchToProps = dispatch => ({\n    addReview: ({ reserveId, userId, title, review, score }) => dispatch(addReview({ reserveId, userId, title, review, score })),\n    getReserve: ({ reserveId, userId }) => dispatch(getReserveInfo({ reserveId, userId })),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AddCommentPageContainer);\n","import React from 'react';\nimport { Collapse, Icon, Pagination, message } from 'antd';\nimport moment from 'moment';\n\nimport CommentPageHeader from '../../../Components/Templates/Review/header';\nimport {\n    HeaderButton,\n    CollapseContainer,\n    CollapseHeader,\n    CollapseTab,\n    CollapseTabOnlyDesktop,\n    CountDisplay,\n    PanelHeader,\n    PanelField,\n    Star,\n    ReviewTextWrapper,\n    ReviewText,\n    ReviewMobileInfo,\n    ReviewerName,\n    MyReview,\n} from './list.styled';\n\nimport axios from '../../../Lib/axios';\n\nconst { Panel } = Collapse;\n\nconst PerPage = 20;\n\nexport default class CommentList extends React.PureComponent {\n    state = {\n        tab: 'basic',\n        total: 0,\n        list: [],\n        page: 1,\n    };\n\n    componentDidMount = () => {\n        this.fetchList();\n    };\n\n    fetchList = () => {\n        const { page } = this.state;\n        axios.get('/v2/review/list', { params: { page, pageCnt: PerPage } }).then(resolve => {\n            const { data } = resolve;\n            if (data && data.total) {\n                this.setState({ total: data.total || 0, list: data.list || [] });\n            }\n        });\n    };\n\n    renderStar = score => {\n        return (\n            <>\n                {new Array(score).fill(0).map((star, index) => (\n                    <Star key={'active-star=' + index.toString()} src='/assets/images/icon_active_star.png' alt='active-star' />\n                ))}\n                {new Array(5 - score).fill(0).map((star, index) => (\n                    <Star key={'active-star=' + index.toString()} src='/assets/images/icon_star.png' alt='active-star' />\n                ))}\n            </>\n        );\n    };\n\n    getAutoTitle = ({ title, rate }) => {\n        if (title) return title;\n        if (rate === 5) return '서비스 매우 만족';\n        if (rate >= 4) return '서비스 만족';\n        if (rate >= 3) return '서비스 보통';\n        if (rate >= 2) return '서비스 불만족';\n        if (rate >= 1) return '서비스 매우 불만족';\n    };\n\n    render() {\n        const { tab, list, page, total } = this.state;\n        const { id, userType } = this.props.auth;\n\n        return (\n            <div>\n                <CommentPageHeader title='이용 후기' desc={`고객님의 소중한 후기를 통해 더욱 발전하는\\n 위드메이트가 되겠습니다.`}>\n                    <HeaderButton\n                        onClick={() => {\n                            if (userType && userType === 'user') {\n                                this.props.history.push('/review/own/usage/list');\n                            } else {\n                                message.warning('비회원과 메이트는 작성할 수 없습니다.');\n                            }\n                        }}\n                    >\n                        후기 작성하기\n                    </HeaderButton>\n                </CommentPageHeader>\n\n                <CollapseContainer className='inner-container'>\n                    <CountDisplay>\n                        <span>{total}</span>건\n                    </CountDisplay>\n\n                    <CollapseHeader>\n                        <CollapseTab style={{ width: '40px' }}>번호</CollapseTab>\n                        <CollapseTab style={{ flex: 1 }}>서비스</CollapseTab>\n                        <CollapseTab style={{ flex: 1 }}>제목</CollapseTab>\n                        <CollapseTabOnlyDesktop style={{ width: '80px' }}>작성자</CollapseTabOnlyDesktop>\n                        <CollapseTabOnlyDesktop style={{ width: '120px' }}>별점</CollapseTabOnlyDesktop>\n                        <CollapseTabOnlyDesktop style={{ width: '152px' }}>작성일</CollapseTabOnlyDesktop>\n                    </CollapseHeader>\n                    <Collapse\n                        key={'item-key-frefresh'}\n                        expandIconPosition='right'\n                        bordered={false}\n                        expandIcon={({ isActive }) => <Icon type='right' rotate={isActive ? 90 : -90} style={{ color: isActive ? '#3bc1ff' : '#a7a7a7' }} />}\n                    >\n                        {list &&\n                            list.map((info, index) => (\n                                <Panel\n                                    key={'comment-order-' + index.toString() + 'item'}\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={\n                                        <PanelHeader>\n                                            <PanelField style={{ width: '40px' }} index>\n                                                {total - ((page - 1) * PerPage + index)}\n                                            </PanelField>\n                                            <PanelField style={{ width: '80px' }}>{info.reserve.service === 'assist' ? 'Basic' : 'Pro'}</PanelField>\n                                            <PanelField className='title' style={{ flex: 1 }}>\n                                                {this.getAutoTitle({ title: info.title, rate: info.score })}\n                                            </PanelField>\n                                            <PanelField style={{ width: '80px' }} onlyDesktop>\n                                                {id === info.user._id ? <MyReview>내후기</MyReview> : info.user.name}\n                                            </PanelField>\n                                            <PanelField style={{ width: '120px' }} onlyDesktop>\n                                                {info.score ? this.renderStar(parseInt(info.score, 10)) : null}\n                                            </PanelField>\n                                            <PanelField style={{ width: '152px' }} onlyDesktop>\n                                                {moment(info.createdAt).format('YYYY-MM-DD')}\n                                            </PanelField>\n                                        </PanelHeader>\n                                    }\n                                >\n                                    <ReviewTextWrapper>\n                                        <ReviewMobileInfo>\n                                            {id === info.user._id ? (\n                                                <MyReview style={{ marginRight: '17px' }}>내후기</MyReview>\n                                            ) : (\n                                                <ReviewerName>{info.user.name}</ReviewerName>\n                                            )}\n                                            <span style={{ marginRight: '18px' }}>{info.score ? this.renderStar(parseInt(info.score, 10)) : null}</span>\n                                            <ReviewerName>{moment(info.createdAt).format('YYYY-MM-DD')}</ReviewerName>\n                                        </ReviewMobileInfo>\n                                        {info.review && (\n                                            <ReviewText>\n                                                {info.review.split('\\n').map((text, index) => (\n                                                    <span key={info._id + index.toString() + tab}>\n                                                        {text}\n                                                        <br />\n                                                    </span>\n                                                ))}\n                                            </ReviewText>\n                                        )}\n                                        <ReviewText style={{ marginTop: '8px' }}>\n                                            (담당 메이트: {info.reserve && info.reserve.call && info.reserve.call.mate ? info.reserve.call.mate.name : '-'})\n                                        </ReviewText>\n\n                                        <ReviewText style={{ marginTop: '15px', paddingLeft: '15px' }}>\n                                            {info.reply === '' ? (\n                                                ''\n                                            ) : (\n                                                <>\n                                                    <a style={{ color: '#3bc1ff' }}>➔&ensp;</a>\n                                                    <b>위드메이트</b>: {info.reply ? info.reply : ''}\n                                                </>\n                                            )}\n                                        </ReviewText>\n                                    </ReviewTextWrapper>\n                                </Panel>\n                            ))}\n                    </Collapse>\n                    <Pagination\n                        pageSize={PerPage}\n                        total={this.state.total}\n                        current={this.state.page}\n                        onChange={page => {\n                            this.setState({ page, list: [] }, () => {\n                                this.fetchList();\n                            });\n                        }}\n                    />\n                </CollapseContainer>\n            </div>\n        );\n    }\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport StyledListContainer from './list.styled';\nimport CommentList from './list';\n\nimport { getReviewList, editReview } from '../../../Reducer/Modules/review';\n\nclass CommentListPage extends React.PureComponent {\n    render() {\n        return (\n            <StyledListContainer>\n                <CommentList {...this.props} />\n            </StyledListContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({ app, auth, review }) => ({\n    app,\n    auth,\n    review,\n});\n\nconst mapDispatchToProps = dispatch => ({\n    // getReviewList: page => dispatch(getReviewList({ page })),\n    editReview: ({ type, value }) => dispatch(editReview({ type, value })),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CommentListPage);\n","import styled from 'styled-components';\n\nconst StyledListContainer = styled.div``;\n\nexport const FullContainer = styled.div`\n    width: 100%;\n    background-color: #f6f6f6;\n    min-height: 70vh;\n`;\n\nexport const PaddingDiv = styled.div``;\n\nexport const TableContainer = styled.div``;\n\nexport const TableHeader = styled.div`\n    padding: 23px 32px 32px 32px;\n    background-color: #ffffff;\n    border-bottom: 1px solid rgba(0, 0, 0, 0.09);\n\n    border-top-left-radius: 4px;\n    border-top-right-radius: 4px;\n`;\n\nexport const TableTitle = styled.p`\n    font-size: 36px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.44;\n    letter-spacing: -1px;\n    color: rgba(0, 0, 0, 0.8);\n\n    margin-bottom: 4px;\n`;\n\nexport const TableSubTitle = styled.p`\n    font-size: 16px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.75;\n    letter-spacing: -0.3px;\n    color: rgba(0, 0, 0, 0.8);\n\n    margin-bottom: 0px;\n`;\n\nexport const TableAlert = styled.p`\n    font-size: 14px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.71;\n    letter-spacing: -0.3px;\n    color: rgba(0, 0, 0, 0.7);\n\n    margin-bottom: 0px;\n    margin-top: 16px;\n`;\n\nexport const TableBody = styled.div`\n    overflow-x: scroll;\n    background-color: white;\n`;\n\nexport const TableRow = styled.div`\n    width: 100%;\n\n    display: flex;\n    align-items: center;\n\n    padding-top: 11px;\n    padding-bottom: 12px;\n\n    border-bottom: 1px solid #e6e6e6;\n\n    @media (max-width: 768px) {\n        width: fit-content;\n    }\n`;\n\nexport const TableField = styled.div`\n    ${props => (props.style ? props.style : `flex: 1;`)}\n\n    display: flex;\n    flex-direction: column;\n    text-align: left;\n\n    margin: 0px 26px;\n\n    ${props =>\n        props.desktopOnly\n            ? `\n        @media (max-width: 768px) {\n            display: none;\n        }\n    `\n            : undefined}\n\n    ${props => (props.title ? `font-weight: bold;` : undefined)}\n`;\n\nexport const TableButton = styled.div`\n    align-self: flex-end;\n    width: 134px;\n    height: 28px;\n    line-height: 28px;\n\n    border-radius: 2px;\n    border: 1px solid #3bc1ff;\n    background-color: #3bc1ff;\n\n    font-size: 10px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    letter-spacing: normal;\n    text-align: center;\n    color: #ffffff;\n\n    cursor: pointer;\n    &:hover {\n        transition: all 0.5s;\n        opacity: 0.8;\n    }\n\n    &.disabled {\n        border: 1px solid #a7a7a7;\n        background-color: #a7a7a7;\n        cursor: not-allowed;\n\n        &:hover {\n            transition: all 0.5s;\n            opacity: 1;\n        }\n    }\n`;\n\nexport const EmptyWrapper = styled.div`\n    padding: 32px;\n    width: 100%;\n\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    flex-direction: column;\n`;\n\nexport const EmptyImage = styled.img`\n    width: 200px;\n    height: 120px;\n    object-fit: contain;\n\n    margin-bottom: 20px;\n`;\n\nexport const EmptyText = styled.span`\n    font-size: 14px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.71;\n    letter-spacing: -0.3px;\n    color: #b1b1b1;\n`;\n\nexport default StyledListContainer;\n","import React from 'react';\nimport styled from 'styled-components';\nimport moment from 'moment';\nimport { ASSIST, UNEMER } from '../../../Lib/variables';\nimport ReviewPageHeader from '../../../Components/Templates/Review/header';\nimport {\n    FullContainer,\n    TableContainer,\n    TableHeader,\n    TableTitle,\n    PaddingDiv,\n    TableBody,\n    TableSubTitle,\n    TableAlert,\n    TableRow,\n    TableField,\n    TableButton,\n    EmptyWrapper,\n    EmptyText,\n    EmptyImage,\n} from './mylist.styled';\n\nexport default class MyReviewList extends React.PureComponent {\n    onReserve = _id => {\n        this.props.history.push('/review/edit/' + _id);\n    };\n\n    render() {\n        const { reserveList } = this.props.app;\n        const done_list = reserveList.filter(reserve => reserve.call.length > 0 && reserve.call[0].status === '서비스 종료' && reserve.review.length === 0);\n\n        return (\n            <div>\n                <ReviewPageHeader title='이용 후기 쓰기' desc={`후기 작성 시 서비스 요금 2,000원\\n 할인이 적용됩니다.`}>\n                    <PaddingDiv style={{ paddingTop: '120px' }} />\n                </ReviewPageHeader>\n\n                <FullContainer>\n                    <TableContainer className='inner-container'>\n                        <TableHeader>\n                            <TableTitle>이용 내역 선택</TableTitle>\n                            <TableSubTitle>후기를 작성하실 이용 내역을 선택해주세요</TableSubTitle>\n                        </TableHeader>\n\n                        <TableBody>\n                            <TableRow>\n                                <TableField title style={{ width: '40px' }}>\n                                    서비스\n                                </TableField>\n                                <TableField title style={{ width: '64px' }}>\n                                    환자 이름\n                                </TableField>\n                                <TableField title style={{ width: '110px' }}>\n                                    예약 병원\n                                </TableField>\n                                <TableField title style={{ width: '200px' }}>\n                                    예약 시간\n                                </TableField>\n                                <TableField title style={{ width: '120px' }}>\n                                    신청 날짜\n                                </TableField>\n                                <TableField title style={{ width: '70px' }}>\n                                    진행 현황\n                                </TableField>\n                                <TableField></TableField>\n                            </TableRow>\n                            {done_list.length > 0 ? (\n                                done_list.map((reserve, index) => {\n                                    return (\n                                        <TableRow key={reserve._id.substr(4, 8) + index.toString()}>\n                                            <TableField style={{ width: '40px' }}>{reserve.service === ASSIST ? 'BASIC' : 'PRO'}</TableField>\n                                            <TableField style={{ width: '64px' }}>{reserve.patient}님</TableField>\n                                            <TableField style={{ width: '110px' }}>{reserve.destination || '-'}</TableField>\n                                            <TableField style={{ width: '200px' }}>{moment(reserve.reserveDate).format('YYYY년 MM월 DD일 - HH:mm')}</TableField>\n                                            <TableField style={{ width: '120px' }}>{moment(reserve.createdAt).format('YYYY년 MM월 DD일')}</TableField>\n                                            <TableField style={{ width: '70px' }}>{reserve.call.length > 0 ? reserve.call[0].status : '-'}</TableField>\n                                            <TableField>\n                                                <TableButton\n                                                    onClick={() => {\n                                                        this.onReserve(reserve._id);\n                                                    }}\n                                                >\n                                                    작성 하기\n                                                </TableButton>\n                                            </TableField>\n                                        </TableRow>\n                                    );\n                                })\n                            ) : (\n                                <EmptyList />\n                            )}\n                            {/* \n                            {reserveList\n                                .map((reserve, index) => {\n                                    return (\n                                        <TableRow key={reserve._id.substr(4, 8) + index.toString()}>\n                                            <TableField style={{ width: '40px' }}>{reserve.service === ASSIST ? 'BASIC' : 'PRO'}</TableField>\n                                            <TableField style={{ width: '64px' }}>{reserve.patient}님</TableField>\n                                            <TableField style={{ width: '86px' }}>{reserve.destination || '-'}</TableField>\n                                            <TableField style={{ width: '170px' }}>{moment(reserve.reserveDate).format('YYYY년 MM월 DD일 - hh:mm')}</TableField>\n                                            <TableField style={{ width: '120px' }}>{moment(reserve.creaetedAt).format('YYYY년 MM월 DD일')}</TableField>\n                                            <TableField style={{ width: '70px' }}>{reserve.call.length > 0 ? reserve.call[0].status : '-'}</TableField>\n                                            <TableField>\n                                                {reserve.call.length > 0 && reserve.call[0].status === '서비스 종료' && reserve.review.length === 0 ? (\n                                                <TableButton\n                                                    onClick={() => {\n                                                        this.onReserve(reserve._id);\n                                                    }}\n                                                >\n                                                    작성 하기\n                                                </TableButton>\n                                            ) : (\n                                                <TableButton className='disabled'>작성 불가</TableButton>\n                                            )}\n                                            </TableField>\n                                        </TableRow>\n                                    );\n                                })} */}\n                        </TableBody>\n\n                        {/* <TableAlert>* 최근 2주내의 이용 내역에 대한 리뷰만 작성이 가능합니다.</TableAlert> */}\n                    </TableContainer>\n                </FullContainer>\n            </div>\n        );\n    }\n}\n\nconst EmptyList = () => (\n    <EmptyWrapper>\n        <EmptyImage src='/assets/images/main_logo.png' alt='logo' />\n        <EmptyText>후기를 작성가능한 이용내역이 없습니다.</EmptyText>\n    </EmptyWrapper>\n);\n","import React from 'react';\nimport { connect } from 'react-redux';\n\nimport { USER, MATE } from '../../../Lib/variables';\nimport { getReserveList } from '../../../Reducer/Modules/app';\nimport StyledMylistContainer from './mylist.styled';\nimport MyCommentList from './mylist';\nimport { message } from 'antd';\n\nclass MyCommentListPage extends React.PureComponent {\n    componentDidMount = () => {\n        const id = localStorage.getItem('id');\n        const userType = localStorage.getItem('userTYp');\n\n        if (id) {\n            this.props.fetchReserveList({ userId: id });\n        }\n\n        if (!id) {\n            message.info('로그인 후 이용해주세요.');\n            return this.props.history.push('/user/login');\n        }\n\n        if (id && userType === MATE) {\n            message.info('일반 사용자를 위한 페이지입니다.');\n            return this.props.history.push('/');\n        }\n    };\n\n    componentDidUpdate = (prevProps, prevState) => {\n        const { id } = this.props.auth;\n\n        if (!prevProps.auth.id && id) {\n            this.props.fetchReserveList({ userId: id });\n        }\n    };\n\n    render() {\n        return (\n            <StyledMylistContainer>\n                <MyCommentList {...this.props} />\n            </StyledMylistContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({ app, auth }) => ({\n    app,\n    auth,\n});\nconst mapDispatchToProps = dispatch => ({\n    fetchReserveList: ({ userId }) => dispatch(getReserveList({ userId })),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(MyCommentListPage);\n","import React from 'react';\nimport {\n    Container,\n    TopWrapper,\n    BottomWrapper,\n    InnerContainer,\n    Logo,\n    MediumText,\n    LargeText,\n    Title,\n    ApplyButton,\n    FlexWrapper,\n    FlexTitle,\n    Contact,\n    ContactTime,\n    Link,\n    Noti,\n} from './ready.styled';\n\nclass ReadyApplyPage extends React.PureComponent {\n    render() {\n        return (\n            <Container>\n                <TopWrapper>\n                    <InnerContainer>\n                        {/* <Logo src='/assets/images/main_logo.png' alt='withmate' /> */}\n                        <Title>위드메이트 동행 매니저, ‘메이트’</Title>\n                        <MediumText>병원 동행 서비스</MediumText>\n                        <MediumText>새로운 수익 창출의 시작</MediumText>\n                        <Noti>개인 일정에 맞춰 동행 서비스 접수 내역에</Noti>\n                        <Noti>매칭 신청을 하고 수익을 창출하세요!</Noti>\n                        <Noti>*단, 해외 여행에 결격 사유가 없는 자에 한해 지원이 가능합니다*</Noti>\n                        <Noti>* 지원 3일 이내 채용 담당자가 연락을 드립니다.</Noti>\n                        <div>\n                            <ApplyButton\n                                onClick={() => {\n                                    this.props.history.push('/apply/form');\n                                }}\n                            >\n                                메이트 지원하기\n                            </ApplyButton>\n                        </div>\n                        <img className='bg' src={'/assets/images/art_clap.png'} alt='일러스트' />\n                    </InnerContainer>\n                </TopWrapper>\n                <BottomWrapper>\n                    <InnerContainer>\n                        <FlexWrapper>\n                            <div>\n                                <Title style={{ color: '#161616' }}>위드메이트</Title>\n                            </div>\n                            <div>\n                                <FlexTitle>지원관련 상담</FlexTitle>\n                                <Contact>070-4300-9075</Contact>\n                                <ContactTime>상담 가능시간 / 오전 9시 ~ 오후 5시</ContactTime>\n                            </div>\n                            <div>\n                                <FlexTitle>안내사항</FlexTitle>\n                                <br />\n                                <Link href='https://www.notion.so/FAQ-cfe01db37c67472086b414a044ed6370' target='_blank'>\n                                    메이트 가이드\n                                </Link>\n                                <br />\n                                <Link href='https://www.notion.so/01a7a20704d14289a4f6b93de6c56a04?v=b137c8389c66455eb89361fc99291539' target='_blank'>\n                                    메이트 FAQ\n                                </Link>\n                                {/* <br />\n                                <Link href='/service/guide' target='_blank'>\n                                    회사소개\n                                </Link> */}\n                            </div>\n                        </FlexWrapper>\n                    </InnerContainer>\n                </BottomWrapper>\n            </Container>\n        );\n    }\n}\nexport default ReadyApplyPage;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { Input } from 'antd';\n\nimport { mainColor } from '../../../theme';\n\nexport const FormContainer = styled.div`\n    // background-color: ${mainColor};\n    width: 100vw;\n\n    padding-top: 55px;\n`;\n\nexport const InnerContainer = styled.div`\n    max-width: 800px;\n    margin: 0 auto;\n    padding: 80px 0px;\n\n    @media (max-width: 1080px) {\n        padding: 80px 16px;\n    }\n\n    @media (max-width: 768px) {\n        padding: 80px 16px;\n    }\n`;\n\nexport const LargeText = styled.p`\n    margin-bottom: 0px;\n\n    font-weight: bold;\n    color: #ffffff;\n    font-size: 32px;\n\n    padding: 2.5px;\n    border-bottom: 4px solid #ffffff;\n    display: inline-block;\n`;\n\nexport const InputWrapper = styled.div`\n    border-radius: 8px;\n    border: 1px solid #e9e9e9;\n    background-color: #ffffff;\n    padding: 16px;\n    border-left: 8px solid ${mainColor};\n\n    margin-bottom: 12px;\n    overflow: hidden;\n`;\n\nexport const InputLabel = styled.div`\n    font-size: 14px;\n    margin-bottom: 8px;\n\n    > span {\n        font-size: 12px;\n    }\n`;\n\nexport const StyledInput = styled(Input.TextArea)`\n    font-size: 14px;\n    &::placeholder {\n        font-size: 14px;\n    }\n`;\n\nexport const ApplyButton = styled.span`\n    padding: 10px 16px;\n    background-color: ${mainColor};\n\n    color: #ffffff;\n    font-size: 16px;\n    font-weight: bold;\n\n    width: 100%;\n    min-width: 200px;\n    max-width: 360px;\n\n    border-radius: 40px;\n    overflow: hidden;\n\n    display: inline-block;\n    margin-top: 40px;\n    cursor: pointer;\n\n    &:hover {\n        transition: all 0.5s;\n        background-color: #ffffff;\n        border: 1px solid ${mainColor};\n        color: ${mainColor};\n    }\n`;\n\nexport const FormImgWrapper = styled.div`\n    > img {\n        width: 150px;\n        object-fit: contain;\n    }\n`;\n\nexport const SpinWrapper = styled.div`\n    display: flex;\n    width: 100vw;\n    height: 100vh;\n\n    position: fixed;\n    top: 0px;\n    left: 0px;\n\n    z-index: 9999;\n\n    align-items: center;\n    justify-content: center;\n\n    background-color: rgba(0, 0, 0, 0.6);\n`;\n","import React from 'react';\nimport { Checkbox, Input, message, Spin } from 'antd';\n\n// utils\nimport axios from '../../../Lib/axios';\nimport { imageUpload } from '../../../Lib/Api/app';\n\n// styles\nimport { FormContainer, InnerContainer, InputWrapper, InputLabel, StyledInput, ApplyButton, LargeText, FormImgWrapper, SpinWrapper } from './form.styled';\n\nconst initialState = {\n    info: [],\n    photoFst: false,\n    photoSnd: false,\n    fileFst: false,\n    fileSnd: false,\n    photoFstValue: null,\n    photoSndValue: null,\n    fileFstValue: null,\n    fileSndValue: null,\n    onSpin: false,\n};\n\nclass MateFormPage extends React.PureComponent {\n    state = {\n        ...initialState,\n    };\n\n    componentDidMount = () => {\n        this.fetchForm();\n    };\n\n    componentWillUnmount = () => {\n        this.setState({ ...initialState });\n    };\n\n    fetchForm = async () => {\n        const { data: form } = await axios.get('/v1/user/recent/apply/form');\n        this.setState({\n            ...form,\n        });\n    };\n\n    editForm = ({ type, value }) => {\n        this.setState({ [type]: value });\n    };\n\n    sendForm = async () => {\n        const { careCareer, info, photoFst, photoSnd, fileSnd, fileFst } = this.state;\n        const { photoFstValue, photoSndValue, fileFstValue, fileSndValue } = this.state;\n\n        this.setState({ onSpin: true });\n\n        if (!careCareer) {\n            this.setState({ onSpin: false });\n            return message.warning('치매 간병 경력 여부를 선택해주세요.');\n        }\n\n        if (info.some(item => !item.value)) {\n            this.setState({ onSpin: false });\n            return message.warning('답변하지 않은 질문이 있습니다.');\n        }\n\n        if (photoFst && !photoFstValue) {\n            this.setState({ onSpin: false });\n            return message.warning('프로필 사진을 첨부해주세요.');\n        }\n\n        if (photoSnd && !photoSndValue) {\n            this.setState({ onSpin: false });\n            return message.warning('이미지 파일을 첨부해주세요.');\n        }\n\n        if (fileFst && !fileFstValue) {\n            this.setState({ onSpin: false });\n            return message.warning('이미지 파일을 첨부해주세요.');\n        }\n\n        if (fileSnd && !fileSndValue) {\n            this.setState({ onSpin: false });\n            return message.warning('추가 파일을 첨부해주세요.');\n        }\n\n        const form = { careCareer, info };\n        if (photoFst) {\n            const { data } = await imageUpload(photoFstValue);\n            form.photoFst = data;\n        }\n        if (photoSnd) {\n            const { data } = await imageUpload(photoSndValue);\n            form.photoSnd = data;\n        }\n        if (fileFst) {\n            const { data } = await imageUpload(fileFstValue);\n            form.fileFst = data;\n        }\n        if (fileSnd) {\n            const { data } = await imageUpload(fileSndValue);\n            form.fileSnd = data;\n        }\n\n        const { data } = await axios.post('/v1/user/apply/mate', {\n            form,\n        });\n\n        if (!data) {\n            this.setState({ onSpin: false });\n            return message.error('서버 장애로 지원에 실패했습니다. 관리자에게 문의해주세요.');\n        }\n\n        if (data === 'success') {\n            this.setState({ onSpin: false });\n            message.success('감사합니다. 메이트 지원이 완료되었습니다. 검토후 결과를 안내해드리겠습니다.');\n            console.log(data, form);\n            setTimeout(() => {\n                window.location.href = '/';\n            }, 1500);\n            return null;\n        }\n\n        if (data === 'check parameters') {\n            this.setState({ onSpin: false });\n            return message.info('누락된 정보가 있는지 지원서 양식을 확인해주세요.');\n        }\n    };\n\n    render() {\n        const { careCareer, info, photoFst, photoSnd, fileFst, fileSnd } = this.state;\n\n        return (\n            <FormContainer>\n                <InnerContainer>\n                    <LargeText style={{ color: '#161616', marginBottom: '20px' }}>메이트 지원하기</LargeText>\n                    <InputWrapper>\n                        <InputLabel>치매관련 간병 경력</InputLabel>\n                        <Checkbox checked={careCareer === '없어요'}\n                            onClick={() => {\n                                this.editForm({ type: 'careCareer', value: '없어요' })\n                            }}\n                        >\n                            없어요\n                        </Checkbox>\n                        <Checkbox checked={careCareer === '1년 미만'}\n                            onClick={() => {\n                                this.editForm({ type: 'careCareer', value: '1년 미만' })\n                            }}\n                        >\n                            1년 미만\n                        </Checkbox>\n                        <Checkbox checked={careCareer === '2 ~ 3년'}\n                            onClick={() => {\n                                this.editForm({ type: 'careCareer', value: '2 ~ 3년' })\n                            }}\n                        >\n                            2 ~ 3년\n                        </Checkbox>\n                        <Checkbox checked={careCareer === '3년이상'}\n                            onClick={() => {\n                                this.editForm({ type: 'careCareer', value: '3년이상' })\n                            }}\n                        >\n                            3년이상\n                        </Checkbox>\n                    </InputWrapper>\n\n                    {info.map((item, index) => (\n                        <InputWrapper key={'question-' + index.toString() + '-keys'}>\n                            <InputLabel>\n                                {item.question}{' '}\n                                {item.maxLength ? (\n                                    <span>\n                                        ({item.value ? item.value.length : 0}/{item.maxLength})\n                                    </span>\n                                ) : (\n                                    ''\n                                )}\n                            </InputLabel>\n                            <StyledInput\n                                value={item.value}\n                                placeholder={item.placeholder}\n                                onChange={ev => {\n                                    const _info = JSON.parse(JSON.stringify(info));\n                                    if (item.maxLength && ev.target.value.length > item.maxLength) {\n                                        return null;\n                                    }\n\n                                    _info[index].value = ev.target.value;\n                                    this.editForm({ type: 'info', value: _info });\n                                }}\n                            />\n                        </InputWrapper>\n                    ))}\n                    {photoFst ? (\n                        <InputWrapper>\n                            <InputLabel>프로필 사진</InputLabel>\n                            {this.state.photoFstValue ? (\n                                <FormImgWrapper>\n                                    <img src={URL.createObjectURL(this.state.photoFstValue)} />\n                                </FormImgWrapper>\n                            ) : null}\n                            <input\n                                type='file'\n                                accept='image/x-png,image/gif,image/jpeg'\n                                onChange={ev => {\n                                    this.editForm({ type: 'photoFstValue', value: ev.target.files[0] });\n                                }}\n                            />\n                        </InputWrapper>\n                    ) : null}\n                    {photoSnd ? (\n                        <InputWrapper>\n                            <InputLabel>이미지 파일 첨부</InputLabel>\n                            {this.state.photoSndValue ? (\n                                <FormImgWrapper>\n                                    <img src={URL.createObjectURL(this.state.photoSndValue)} />\n                                </FormImgWrapper>\n                            ) : null}\n                            <input\n                                type='file'\n                                accept='image/x-png,image/gif,image/jpeg'\n                                onChange={ev => {\n                                    this.editForm({ type: 'photoSndValue', value: ev.target.files[0] });\n                                }}\n                            />\n                        </InputWrapper>\n                    ) : null}\n                    {fileFst ? (\n                        <InputWrapper>\n                            <InputLabel>이력서 첨부</InputLabel>\n                            {this.state.fileFstValue ? <p>{this.state.fileFstValue.name}</p> : null}\n                            <input\n                                type='file'\n                                onChange={ev => {\n                                    this.editForm({ type: 'fileFstValue', value: ev.target.files[0] });\n                                }}\n                            />\n                        </InputWrapper>\n                    ) : null}\n                    {fileSnd ? (\n                        <InputWrapper>\n                            <InputLabel>추가 파일첨부</InputLabel>\n                            {this.state.fileSndValue ? <p>{this.state.fileSndValue.name}</p> : null}\n                            <input\n                                type='file'\n                                onChange={ev => {\n                                    this.editForm({ type: 'fileSndValue', value: ev.target.files[0] });\n                                }}\n                            />\n                        </InputWrapper>\n                    ) : null}\n\n                    <div style={{ textAlign: 'center' }}>\n                        <ApplyButton onClick={this.sendForm}>지원하기</ApplyButton>\n                    </div>\n                </InnerContainer>\n                {this.state.onSpin ? (\n                    <SpinWrapper>\n                        <Spin size='large' />\n                    </SpinWrapper>\n                ) : null}\n            </FormContainer>\n        );\n    }\n}\n\nexport default MateFormPage;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { Input } from 'antd';\n\nimport { mainColor } from '../../../theme';\n\nexport const FormContainer = styled.div`\n    // background-color: ${mainColor};\n    width: 100vw;\n\n    padding-top: 55px;\n`;\n\nexport const InnerContainer = styled.div`\n    max-width: 800px;\n    margin: 0 auto;\n    padding: 80px 0px;\n\n    .type-button-wrapper {\n        width: 100%;\n        height: 48px;\n\n        background-color: white;\n        border: 1px solid #e6e6e6;\n        border-radius: 4px;\n\n        display: flex;\n        align-items: center;\n\n        > .type-button {\n            width: 50%;\n            height: 100%;\n            line-height: 48px;\n\n            text-align: center;\n            cursor: pointer;\n\n            font-size: 16px;\n            letter-spacing: -0.2px;\n            color: rgba(0, 0, 0, 0.2);\n        }\n\n        > .type-button.active {\n            background: rgba(0, 0, 0, 0.7);\n            border-radius: 4px;\n            color: #f9f9f9;\n        }\n    }\n\n    @media (max-width: 1080px) {\n        padding: 80px 16px;\n    }\n\n    @media (max-width: 768px) {\n        padding: 80px 16px;\n    }\n`;\n\nexport const LargeText = styled.p`\n    margin-bottom: 0px;\n\n    font-weight: bold;\n    color: #ffffff;\n    font-size: 32px;\n\n    padding: 2.5px;\n    border-bottom: 4px solid #ffffff;\n    display: inline-block;\n`;\n\nexport const InputWrapper = styled.div`\n    border-radius: 8px;\n    border: 1px solid #e9e9e9;\n    background-color: #ffffff;\n    padding: 16px;\n    border-left: 8px solid ${mainColor};\n\n    margin-bottom: 12px;\n    overflow: hidden;\n`;\n\nexport const InputLabel = styled.div`\n    font-size: 17px;\n    margin-bottom: 8px;\n\n    > span {\n        font-size: 12px;\n    }\n`;\n\nexport const StyledInput = styled(Input.TextArea)`\n    font-size: 14px;\n    &::placeholder {\n        font-size: 14px;\n    }\n`;\n\nexport const ApplyButton = styled.span`\n    padding: 10px 16px;\n    background-color: ${mainColor};\n\n    color: #ffffff;\n    font-size: 16px;\n    font-weight: bold;\n\n    width: 100%;\n    min-width: 200px;\n    max-width: 360px;\n\n    border-radius: 40px;\n    overflow: hidden;\n\n    display: inline-block;\n    margin-top: 40px;\n    cursor: pointer;\n\n    &:hover {\n        transition: all 0.5s;\n        background-color: #ffffff;\n        border: 1px solid ${mainColor};\n        color: ${mainColor};\n    }\n`;\n\nexport const FormImgWrapper = styled.div`\n    > img {\n        padding-bottom: 10px;\n        width: 150px;\n        object-fit: contain;\n    }\n`;\n\nexport const SpinWrapper = styled.div`\n    display: flex;\n    width: 100vw;\n    height: 100vh;\n\n    position: fixed;\n    top: 0px;\n    left: 0px;\n\n    z-index: 9999;\n\n    align-items: center;\n    justify-content: center;\n\n    background-color: rgba(0, 0, 0, 0.6);\n`;\n","import React from 'react';\nimport { Checkbox, Select, message, Spin } from 'antd';\n\n// utils\nimport axios from '../../../Lib/axios';\nimport { imageUpload } from '../../../Lib/Api/app';\n\n// styles\nimport { FormContainer, InnerContainer, InputWrapper, InputLabel, ApplyButton, LargeText, FormImgWrapper, SpinWrapper } from './mateApply.styled';\nimport { WithamteInputWithButton, WithmateInput, WithmateSelect, WithmateTextarea } from '../../../Components/Common/input';\n\nclass MateApplyPage extends React.PureComponent {\n    state = {\n        photo: '',\n        onSpin: false,\n    };\n\n    handleChange = e => {\n        this.setState({ [e.target.title]: e.target.value });\n    };\n\n    handleTrimChange = e => {\n        this.setState({ [e.target.title]: e.target.value.trim() });\n    };\n\n    onAddress = () => {\n        new window.daum.Postcode({\n            oncomplete: data => {\n                const { roadAddress, buildingName } = data;\n                this.setState(prevState => ({\n                    address: `${roadAddress} (${buildingName})`,\n                }));\n            },\n        }).open();\n    };\n\n    editApply = ({ type, value }) => {\n        this.setState({ [type]: value });\n    };\n\n    onSendApply = async () => {\n        const {\n            name,\n            gender,\n            birth,\n            // photo,\n            email,\n            contact,\n            address,\n            connection,\n            connection_etc,\n            activity_area,\n            drive,\n            careCareer,\n            care_experience,\n            insurance,\n            privacy,\n            license_photo,\n        } = this.state;\n\n        this.setState({ onSpin: true });\n\n        if (!name) {\n            this.setState({ onSpin: false });\n            return message.warning('성함을 입력하세요.');\n        }\n\n        if (!gender) {\n            this.setState({ onSpin: false });\n            return message.warning('성별을 입력하세요.');\n        }\n\n        if (!birth || birth.length < 8) {\n            this.setState({ onSpin: false });\n            return message.warning('생년월일 8자리를 입력하세요.');\n        }\n\n        if (!email) {\n            this.setState({ onSpin: false });\n            return message.warning('이메일을 입력하세요.');\n        }\n\n        if (!contact) {\n            this.setState({ onSpin: false });\n            return message.warning('개인 연락처를 입력하세요.');\n        }\n\n        if (!address) {\n            this.setState({ onSpin: false });\n            return message.warning('자택 주소를 검색하여 입력하세요.');\n        }\n\n        if (!careCareer) {\n            this.setState({ onSpin: false });\n            return message.warning('치매관련 간병 경력 기간을 선택하세요.');\n        }\n\n        // if (!activity_area) {\n        //     this.setState({ onSpin: false });\n        //     return message.warning('메이트 활동이 가능한 지역을 선택해주세요.');\n        // }\n\n        if (!care_experience) {\n            this.setState({ onSpin: false });\n            return message.warning('개인 간병 경력 사항을 입력하세요.');\n        }\n\n        if (!insurance) {\n            this.setState({ onSpin: false });\n            return message.warning('삼성화재 전문인 배상 책임 보험 가입 동의를 선택하세요.');\n        }\n\n        if (!privacy) {\n            this.setState({ onSpin: false });\n            return message.warning('개인정보 수집 및 이용 동의를 선택하세요.');\n        }\n\n        const formData = new FormData();\n        formData.append('license_photo', license_photo);\n        const header = { headers: { 'Content-Type': 'multipart/form-data' } };\n        const { data: image } = await axios.post('/v1/user/apply/mate/image/upload', formData, header);\n\n        const { data } = await axios.post('/v1/user/apply/mate/add', {\n            name,\n            gender,\n            birth,\n            // photo: image,\n            email,\n            contact,\n            address,\n            connection,\n            connection_etc,\n            activity_area: activity_area ? activity_area.join(', ') : '', // 배열을 쉼표로 구분된 문자열로 변환\n            drive,\n            careCareer,\n            care_experience,\n            insurance,\n            privacy,\n            license_photo: image,\n        });\n\n        if (!data) {\n            this.setState({ onSpin: false });\n            return message.error('서버 장애로 지원에 실패했습니다. 관리자에게 문의해주세요.');\n        }\n\n        if (data === 'success') {\n            this.setState({ onSpin: false });\n            message.success('감사합니다. 메이트 지원이 완료되었습니다. 검토후 결과를 안내해드리겠습니다.');\n            setTimeout(() => {\n                window.location.href = '/';\n            }, 1500);\n            return null;\n        }\n\n        if (data === 'check parameters') {\n            this.setState({ onSpin: false });\n            return message.info('누락된 정보가 있는지 지원서 양식을 확인해주세요.');\n        }\n    };\n\n    render() {\n        return (\n            <FormContainer>\n                <InnerContainer>\n                    <LargeText style={{ color: '#161616', marginBottom: '20px' }}>메이트 지원하기</LargeText>\n\n                    <InputWrapper>\n                        <InputLabel>성함을 입력하세요</InputLabel>\n                        <WithmateInput type='text' title='name' value={this.state.name || ''} onChange={this.handleTrimChange} />\n                    </InputWrapper>\n\n                    <InputWrapper>\n                        <InputLabel>성별을 선택하세요</InputLabel>\n                        <div className='type-button-wrapper'>\n                            <div\n                                className={`type-button ${this.state.gender && this.state.gender === '남자' ? 'active' : ''}`}\n                                onClick={() => {\n                                    this.editApply({ type: 'gender', value: '남자' });\n                                }}\n                            >\n                                남자\n                            </div>\n                            <div\n                                className={`type-button ${this.state.gender && this.state.gender === '여자' ? 'active' : ''}`}\n                                onClick={() => {\n                                    this.editApply({ type: 'gender', value: '여자' });\n                                }}\n                            >\n                                여자\n                            </div>\n                        </div>\n                    </InputWrapper>\n\n                    <InputWrapper>\n                        <InputLabel>생년월일을 입력하세요</InputLabel>\n                        <WithmateInput\n                            type='text'\n                            title='birth'\n                            value={this.state.birth || ''}\n                            onChange={this.handleTrimChange}\n                            placeholder='만 19세 이상의 성인만 메이트로 활동이 가능합니다. 생년월일을 8자리로 입력해주세요'\n                        />\n                    </InputWrapper>\n\n                    {/* <InputWrapper>\n                        <InputLabel>이미지 파일 첨부</InputLabel>\n                        {this.state.photo ? (\n                            <FormImgWrapper>\n                                <img src={URL.createObjectURL(this.state.photo)} />\n                            </FormImgWrapper>\n                        ) : null}\n                        <input\n                            type='file'\n                            accept='image/x-png,image/gif,image/jpeg'\n                            onChange={ev => {\n                                this.editApply({ type: 'photo', value: ev.target.files[0] });\n                            }}\n                        />\n                    </InputWrapper> */}\n\n                    <InputWrapper>\n                        <InputLabel>개인 이메일을 입력하세요</InputLabel>\n                        <WithmateInput\n                            type='text'\n                            title='email'\n                            value={this.state.email || ''}\n                            onChange={this.handleTrimChange}\n                            placeholder='기입하신 이메일로 프리랜서 근로 계약 문서가 전송되고 온라인 계약 체결이 진행됩니다.'\n                        />\n                    </InputWrapper>\n\n                    <InputWrapper>\n                        <InputLabel>개인 연락처를 입력하세요</InputLabel>\n                        <WithmateInput\n                            type='text'\n                            title='contact'\n                            value={this.state.contact || ''}\n                            onChange={this.handleTrimChange}\n                            placeholder='기입해주신 연락처로 메이트 합격/불합격 여부 알림과 메이트로 활동하실때 사용하시는 아이디와 임시 비밀번호 전송됩니다.'\n                        />\n                    </InputWrapper>\n\n                    <InputWrapper>\n                        <InputLabel>자택 주소를 입력하세요</InputLabel>\n                        <WithamteInputWithButton\n                            inputConfig={{\n                                type: 'text',\n                                placeholder: 'ex) 서울특별시 도산대로 40, OO 아파트',\n                                name: 'address',\n                                value: this.state.address || '',\n                            }}\n                            buttonName='검색'\n                            onButton={() => {\n                                this.onAddress();\n                            }}\n                        />\n                    </InputWrapper>\n\n                    <InputWrapper>\n                        <InputLabel>메이트 가입 경로(선택 사항)</InputLabel>\n                        <WithmateSelect\n                            style={{ height: '48px', width: '100%', paddingBottom: '5px' }}\n                            placeholder='위드메이트의 메이트 가입 경로를 선택하세요'\n                            value={this.state.connection || undefined}\n                            onChange={value => {\n                                this.editApply({ type: 'connection', value });\n                            }}\n                        >\n                            <Select.Option value='한국직업평가진흥협회'>한국직업평가진흥협회</Select.Option>\n                            <Select.Option value='검색'>검색</Select.Option>\n                            <Select.Option value='광고'>광고</Select.Option>\n                            <Select.Option value='구직사이트'>구직사이트</Select.Option>\n                            <Select.Option value='뉴스기사'>뉴스기사</Select.Option>\n                            <Select.Option value='대신위드유'>대신위드유</Select.Option>\n                            <Select.Option value='에이플러스'>에이플러스</Select.Option>\n                            <Select.Option value='복지넷'>복지넷</Select.Option>\n                            <Select.Option value='강동 50+'>강동 50+</Select.Option>\n                            <Select.Option value='서대문 50+'>서대문 50+</Select.Option>\n                            <Select.Option value='국립 암센터'>국립 암센터</Select.Option>\n                            <Select.Option value='지인'>지인</Select.Option>\n                            <Select.Option value='카페'>카페•블로그</Select.Option>\n                            <Select.Option value='기타'>기타</Select.Option>\n                        </WithmateSelect>\n                        {this.state.connection === '기타' ? (\n                            <WithmateInput\n                                type='text'\n                                title='connection_etc'\n                                value={this.state.connection_etc || ''}\n                                onChange={this.handleChange}\n                                placeholder='메이트 가입 경로를 입력하세요'\n                            />\n                        ) : null}\n                        {this.state.connection === '한국직업평가진흥협회' ? (\n                            <InputWrapper>\n                                <InputLabel>자격증 이미지 파일첨부</InputLabel>\n                                {this.state.license_photo ? (\n                                    <FormImgWrapper>\n                                        <img src={URL.createObjectURL(this.state.license_photo)} />\n                                    </FormImgWrapper>\n                                ) : null}\n                                <input\n                                    type='file'\n                                    accept='image/x-png,image/gif,image/jpeg'\n                                    onChange={ev => {\n                                        this.editApply({ type: 'license_photo', value: ev.target.files[0] });\n                                    }}\n                                />\n                            </InputWrapper>\n                        ) : null}\n                    </InputWrapper>\n\n                    <InputWrapper>\n                        <InputLabel>메이트 활동 가능 지역을 알려주세요</InputLabel>\n                        <WithmateSelect\n                            style={{ height: '48px', width: '100%', paddingBottom: '5px' }}\n                            placeholder='메이트 활동이 가능한 지역을 선택해주세요 (여러개 가능)'\n                            value={this.state.si || undefined}\n                            onChange={value => {\n                                this.editApply({ type: 'si', value });\n                            }}\n                        >\n                            <Select.Option value='서울'>서울</Select.Option>\n                            <Select.Option value='경기도'>경기도</Select.Option>\n                            <Select.Option value='경상남도'>경상남도</Select.Option>\n                        </WithmateSelect>\n                        {this.state.si === '서울' ? (\n                            <WithmateSelect\n                                mode='multiple'\n                                style={{ height: '48px', width: '100%', paddingBottom: '5px' }}\n                                placeholder='메이트 활동이 가능한 지역을 선택해주세요 (여러개 가능)'\n                                value={this.state.activity_area || []}\n                                onChange={value => {\n                                    this.editApply({ type: 'activity_area', value });\n                                }}\n                            >\n                                <Select.Option value='강남구'>강남구</Select.Option>\n                                <Select.Option value='강동구'>강동구</Select.Option>\n                                <Select.Option value='강북구'>강북구</Select.Option>\n                                <Select.Option value='강서구'>강서구</Select.Option>\n                                <Select.Option value='관악구'>관악구</Select.Option>\n                                <Select.Option value='광진구'>광진구</Select.Option>\n                                <Select.Option value='구로구'>구로구</Select.Option>\n                                <Select.Option value='금천구'>금천구</Select.Option>\n                                <Select.Option value='노원구'>노원구</Select.Option>\n                                <Select.Option value='도봉구'>도봉구</Select.Option>\n                                <Select.Option value='동대문구'>동대문구</Select.Option>\n                                <Select.Option value='동작구'>동작구</Select.Option>\n                                <Select.Option value='마포구'>마포구</Select.Option>\n                                <Select.Option value='서대문구'>서대문구</Select.Option>\n                                <Select.Option value='서초구'>서초구</Select.Option>\n                                <Select.Option value='성동구'>성동구</Select.Option>\n                                <Select.Option value='성북구'>성북구</Select.Option>\n                                <Select.Option value='송파구'>송파구</Select.Option>\n                                <Select.Option value='양천구'>양천구</Select.Option>\n                                <Select.Option value='영등포구'>영등포구</Select.Option>\n                                <Select.Option value='용산구'>용산구</Select.Option>\n                                <Select.Option value='은평구'>은평구</Select.Option>\n                                <Select.Option value='종로구'>종로구</Select.Option>\n                                <Select.Option value='중구'>중구</Select.Option>\n                                <Select.Option value='중랑구'>중랑구</Select.Option>\n                            </WithmateSelect>\n                        ) : null}\n                        {this.state.si === '경기도' ? (\n                            <WithmateSelect\n                                mode='multiple'\n                                style={{ height: '48px', width: '100%', paddingBottom: '5px' }}\n                                placeholder='메이트 활동이 가능한 지역을 선택해주세요 (여러개 가능)'\n                                value={this.state.activity_area || []}\n                                onChange={value => {\n                                    this.editApply({ type: 'activity_area', value });\n                                }}\n                            >\n                                <Select.Option value='경기남부'>경기남부</Select.Option>\n                                <Select.Option value='수원시'>수원시</Select.Option>\n                                <Select.Option value='용인시'>용인시</Select.Option>\n                                <Select.Option value='성남시'>성남시</Select.Option>\n                                <Select.Option value='부천시'>부천시</Select.Option>\n                                <Select.Option value='화성시'>화성시</Select.Option>\n                                <Select.Option value='안산시'>안산시</Select.Option>\n                                <Select.Option value='평택시'>평택시</Select.Option>\n                                <Select.Option value='시흥시'>시흥시</Select.Option>\n                                <Select.Option value='김포시'>김포시</Select.Option>\n                                <Select.Option value='광주시'>광주시</Select.Option>\n                                <Select.Option value='광명시'>광명시</Select.Option>\n                                <Select.Option value='군포시'>군포시</Select.Option>\n                                <Select.Option value='하남시'>하남시</Select.Option>\n                                <Select.Option value='오산시'>오산시</Select.Option>\n                                <Select.Option value='이천시'>이천시</Select.Option>\n                                <Select.Option value='안성시'>안성시</Select.Option>\n                                <Select.Option value='의왕시'>의왕시</Select.Option>\n                                <Select.Option value='양평군'>양평군</Select.Option>\n                                <Select.Option value='여주시'>여주시</Select.Option>\n                                <Select.Option value='과천시'>과천시</Select.Option>\n                                <Select.Option value='경기북부'>경기북부</Select.Option>\n                                <Select.Option value='고양시'>고양시</Select.Option>\n                                <Select.Option value='남양주시'>남양주시</Select.Option>\n                                <Select.Option value='파주시'>파주시</Select.Option>\n                                <Select.Option value='의정부시'>의정부시</Select.Option>\n                                <Select.Option value='양주시'>양주시</Select.Option>\n                                <Select.Option value='구리시'>구리시</Select.Option>\n                                <Select.Option value='포천시'>포천시</Select.Option>\n                                <Select.Option value='동두천시'>동두천시</Select.Option>\n                                <Select.Option value='가평군'>가평군</Select.Option>\n                                <Select.Option value='연천군'>연천군</Select.Option>\n                            </WithmateSelect>\n                        ) : null}\n\n                        {this.state.si === '경상남도' ? (\n                            <WithmateSelect\n                                mode='multiple'\n                                style={{ height: '48px', width: '100%', paddingBottom: '5px' }}\n                                placeholder='메이트 활동이 가능한 지역을 선택해주세요 (여러개 가능)'\n                                value={this.state.activity_area || []}\n                                onChange={value => {\n                                    this.editApply({ type: 'activity_area', value });\n                                }}\n                            >\n                                <Select.Option value='창원시'>창원시</Select.Option>\n                            </WithmateSelect>\n                        ) : null}\n                        {/* <WithmateInput\n                            type='text'\n                            title='activity_area'\n                            value={this.state.activity_area || ''}\n                            onChange={this.handleChange}\n                            placeholder='메이트 활동이 가능한 서비스 지역과 병원을 알려주세요 (강남구 일대, 종로구 일대, 세브란스 병원, 서울대 병원, 아산병원 등'\n                        /> */}\n                    </InputWrapper>\n\n                    <InputWrapper>\n                        <InputLabel>운전 가능 여부를 선택하세요</InputLabel>\n                        <Checkbox\n                            checked={this.state.drive === '가능'}\n                            onClick={() => {\n                                this.editApply({ type: 'drive', value: '가능' });\n                            }}\n                        >\n                            가능\n                        </Checkbox>\n                        <Checkbox\n                            checked={this.state.drive === '불가능'}\n                            onClick={() => {\n                                this.editApply({ type: 'drive', value: '불가능' });\n                            }}\n                        >\n                            불가능\n                        </Checkbox>\n                    </InputWrapper>\n\n                    <InputWrapper>\n                        <InputLabel>치매관련 간병 경력</InputLabel>\n                        <Checkbox\n                            checked={this.state.careCareer === '없어요'}\n                            onClick={() => {\n                                this.editApply({ type: 'careCareer', value: '없어요' });\n                            }}\n                        >\n                            없어요\n                        </Checkbox>\n                        <Checkbox\n                            checked={this.state.careCareer === '1년 미만'}\n                            onClick={() => {\n                                this.editApply({ type: 'careCareer', value: '1년 미만' });\n                            }}\n                        >\n                            1년 미만\n                        </Checkbox>\n                        <Checkbox\n                            checked={this.state.careCareer === '2 ~ 3년'}\n                            onClick={() => {\n                                this.editApply({ type: 'careCareer', value: '2 ~ 3년' });\n                            }}\n                        >\n                            2 ~ 3년\n                        </Checkbox>\n                        <Checkbox\n                            checked={this.state.careCareer === '3년이상'}\n                            onClick={() => {\n                                this.editApply({ type: 'careCareer', value: '3년이상' });\n                            }}\n                        >\n                            3년이상\n                        </Checkbox>\n                    </InputWrapper>\n\n                    <InputWrapper>\n                        <InputLabel>개인의 간병 경력 사항을 입력하세요</InputLabel>\n                        <WithmateTextarea\n                            style={{ height: '100px' }}\n                            type='text'\n                            title='care_experience'\n                            value={this.state.care_experience || ''}\n                            onChange={this.handleChange}\n                            placeholder='메이트 활동을 위해 도움이 되는 자신의 간병 경력을 500자 이내로 자유롭게 남겨주세요 (요양보호사 자격증 보유 & OO요양병원 3년 근무 등 / 간병 이외의 경력도 기재 가능'\n                        />\n                    </InputWrapper>\n\n                    <InputWrapper>\n                        <InputLabel>삼성화재 전문인 배상 책임 보험 가입 동의</InputLabel>\n                        <p style={{ fontSize: '13px', color: 'gray', paddingBottom: '10px' }}>\n                            보험 가입 심사를 위해 설계 동의를 진행해주세요. 위드메이트는 메이트의 서비스 이행 중 안전한 보호를 위해 회사가 부담하는 보험 가입\n                            절차를 도와드리고 있습니다. 보험 가입에 대한 의사를 체크해주세요. 해당 절차는 보험 가입 심사 동의를 위한 것이며, 동의를 하는것\n                            만으로 보험에 가입이 되는 것은 아닙니다. 보험 가입은 메이트 심사 합격 후 실제 서비스가 매칭된 인원에 한하여 본사와 전화 상담 후\n                            진행됩니다.\n                        </p>\n                        <Checkbox\n                            checked={this.state.insurance === '동의'}\n                            onClick={() => {\n                                this.editApply({ type: 'insurance', value: '동의' });\n                            }}\n                        >\n                            동의\n                        </Checkbox>\n                        <Checkbox\n                            checked={this.state.insurance === '비동의'}\n                            onClick={() => {\n                                this.editApply({ type: 'insurance', value: '비동의' });\n                            }}\n                        >\n                            비동의\n                        </Checkbox>\n                    </InputWrapper>\n\n                    <InputWrapper>\n                        <InputLabel>개인정보 수집 및 이용 동의</InputLabel>\n                        <p style={{ fontSize: '13px', color: 'gray', paddingBottom: '10px' }}>\n                            위드메이트는 본 지원서를 통해 수집한 개인정보를 메이트 심사, 서비스 교육 안내, 동행 서비스 중개를 제외한 타 목적으로 이용하지\n                            않습니다. 지원자는 본 개인정보 수집 및 이용에 동의하지 않을 권리가 있습니다. 단, 동의하지 않을 경우 메이트 심사 및 모집에 제한이\n                            있을 수 있습니다. 위드메이트의 개인정보 수집 및 이용 동의 여부를 선택해주세요.\n                        </p>\n                        <Checkbox\n                            checked={this.state.privacy === '동의'}\n                            onClick={() => {\n                                this.editApply({ type: 'privacy', value: '동의' });\n                            }}\n                        >\n                            동의\n                        </Checkbox>\n                        <Checkbox\n                            checked={this.state.privacy === '비동의'}\n                            onClick={() => {\n                                this.editApply({ type: 'privacy', value: '비동의' });\n                            }}\n                        >\n                            비동의\n                        </Checkbox>\n                    </InputWrapper>\n\n                    <div style={{ textAlign: 'center' }}>\n                        <ApplyButton onClick={this.onSendApply}>지원하기</ApplyButton>\n                    </div>\n                </InnerContainer>\n                {/* {this.state.onSpin ? (\n                    <SpinWrapper>\n                        <Spin size='large' />\n                    </SpinWrapper>\n                ) : null} */}\n            </FormContainer>\n        );\n    }\n}\n\nexport default MateApplyPage;\n","import React from 'react';\nimport { HashLink } from 'react-router-hash-link';\nimport swal from 'sweetalert2';\n\n// components\nimport { GuideNavContainer, InnerContainer, GuideNavWrapper, NavTab, MobileBr } from '../guide.styled';\n\nexport const GuideNav = ({ activeTab, onTab, onReserve }) => {\n    return (\n        <GuideNavContainer>\n            <InnerContainer>\n                <GuideNavWrapper>\n                    <NavTab active={activeTab === 'withmate'}>\n                        <HashLink\n                            to='/nemt/service/#withmate'\n                            scroll={el => el.scrollIntoView({ behavior: 'smooth', block: 'nearest' })}\n                            onClick={() => {\n                                onTab('withmate');\n                            }}\n                        >\n                            위드메이트란?\n                        </HashLink>\n                    </NavTab>\n                    {/* <NavTab active={activeTab === 'concept'}>\n                        <HashLink\n                            to='/nemt/service/#concept'\n                            scroll={el => el.scrollIntoView({ behavior: 'smooth', block: 'nearest' })}\n                            onClick={() => {\n                                onTab('concept');\n                            }}\n                        >\n                            병원 동행이란?\n                        </HashLink>\n                    </NavTab> */}\n                    <NavTab active={activeTab === 'types'}>\n                        <HashLink\n                            to='/nemt/service/#types'\n                            scroll={el => el.scrollIntoView({ behavior: 'smooth', block: 'nearest' })}\n                            onClick={() => {\n                                onTab('types');\n                            }}\n                        >\n                            서비스 종류\n                        </HashLink>\n                    </NavTab>\n                    <NavTab active={activeTab === 'merit'}>\n                        <HashLink\n                            to='/nemt/service/#merit'\n                            scroll={el => el.scrollIntoView({ behavior: 'smooth', block: 'nearest' })}\n                            onClick={() => {\n                                onTab('merit');\n                            }}\n                        >\n                            믿을수 있는 위드메이트\n                        </HashLink>\n                    </NavTab>\n                    <NavTab active={activeTab === 'usage'}>\n                        <HashLink\n                            to='/nemt/service/#usage'\n                            scroll={el => el.scrollIntoView({ behavior: 'smooth', block: 'nearest' })}\n                            onClick={() => {\n                                onTab('usage');\n                            }}\n                        >\n                            이런분께 추천해요\n                        </HashLink>\n                    </NavTab>\n                    <NavTab active={activeTab === 'partners'}>\n                        <HashLink\n                            to='/nemt/service/#partners'\n                            scroll={el => el.scrollIntoView({ behavior: 'smooth', block: 'nearest' })}\n                            onClick={() => {\n                                onTab('partners');\n                            }}\n                        >\n                            위드메이트 파트너\n                        </HashLink>\n                    </NavTab>\n                </GuideNavWrapper>\n            </InnerContainer>\n        </GuideNavContainer>\n    );\n};\n","import React from 'react';\n\n// components\nimport {\n    GuideConceptContainer,\n    InnerContainer,\n    GuideConceptTitle,\n    GuideConceptImageWrapper,\n    GuideConceptImage,\n    GuideConceptImageMobile,\n    GuideConceptTextWrapper,\n    GuideConceptTextBlock,\n    MobileBr,\n    DesktopBr,\n} from '../guide.styled';\n\nexport const GuideConcept = ({}) => {\n    return (\n        <GuideConceptContainer id='concept'>\n            {/* <InnerContainer>\n                <GuideConceptTitle>병원 동행이란?</GuideConceptTitle>\n                <GuideConceptImageWrapper>\n                    <GuideConceptImage src='/assets/images/with_concept_new.png' />\n                    <GuideConceptImageMobile src='/assets/images/with_concept_mobile_new.png' />\n                </GuideConceptImageWrapper>\n                <GuideConceptTextWrapper>\n                    <GuideConceptTextBlock>\n                        <span>‘비응급 의료 동행(Non-Emergency-Medical-Transportation)’</span>으로\n                        <DesktopBr /> 불리는 ‘병원 동행’ 서비스는 응급 상황에 처하지는 않았으나 정기적, 혹은\n                        <DesktopBr /> 비정기적으로 의료 기관에 방문해 적절한 의료 조치를 받아야 하는 사람을\n                        <DesktopBr /> 위한 <span>헬스케어 서비스</span>\n                        입니다. 이미 미국과 캐나다, 일본 등의 선진국에서는\n                        <DesktopBr /> 국가 주도의 복지 서비스로 정착했으며, 이를 넘어 국가 차원의 병원 동행\n                        <DesktopBr /> 전문 기업 육성에 힘을 쏟고 있는 상황입니다.\n                    </GuideConceptTextBlock>\n                    <GuideConceptTextBlock>\n                        위드메이트는 <span>국내 최초</span>로 ‘비응급 의료 동행 서비스’의 개념을 구축했으며,\n                        <DesktopBr /> 유수의 기관과 많은 개인에게 병원 동행 서비스를 제공했습니다.\n                        <DesktopBr />\n                        <MobileBr />\n                        <DesktopBr /> 위드메이트 플랫폼이 제공하는 병원 동행 서비스는 다음과 같습니다.\n                    </GuideConceptTextBlock>\n                </GuideConceptTextWrapper>\n            </InnerContainer> */}\n        </GuideConceptContainer>\n    );\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport swal from 'sweetalert2';\n\n// components\nimport {\n    GuideDetailContainer,\n    InnerContainer,\n    GuideConceptTitle,\n    GuideDetailServiceCardWrapper,\n    GuideDetailServiceCard,\n    GuideCardImage,\n    GuideCardName,\n    GuideCardType,\n    GuideCardDescription,\n    GuideCardSpecTitle,\n    GuideCardSpecRow,\n    MobileBr,\n    DesktopBr,\n} from '../guide.styled';\n\nimport { UNEMER, ASSIST } from '../../../Lib/variables';\n\nexport const GuideDetail = () => {\n    return (\n        <GuideDetailContainer id='types'>\n            <InnerContainer>\n                <GuideConceptTitle>서비스 종류</GuideConceptTitle>\n                <GuideDetailServiceCardWrapper>\n                    <GuideCard\n                        source={'/assets/images/art_pro.png'}\n                        name='병원 동행'\n                        type='Pro'\n                        desc={\n                            <>\n                                <>\n                                    위드메이트 동행 전문가가 고객님의\n                                    <br />\n                                    <span>자택에서 병원까지 </span>동행하고, 병원 업무를\n                                    <br />\n                                    마친 뒤 <span>다시 자택까지</span> 동행합니다.\n                                </>\n                                <br />\n                                <br />\n                                <>\n                                    <b>요금</b> <br />\n                                    시간당 25,000원 (추가 30분마다 12,500원)\n                                </>\n                            </>\n                        }\n                        spec1={\n                            <>\n                                위드메이트 소속 동행 전문가가 <br />\n                                자택에서 병원까지 동행\n                            </>\n                        }\n                        spec2={\n                            <>\n                                대중교통, 고객님 소유 자차, 택시 중<br />\n                                선택하여 이동\n                            </>\n                        }\n                        spec3={\n                            <>\n                                서비스 종료 이후\n                                <br />\n                                서비스 보고서 열람 가능\n                            </>\n                        }\n                        spec4={\n                            <>\n                                서비스 진행 단계별 카카오톡\n                                <br />\n                                실시간 알림 업데이트 제공\n                            </>\n                        }\n                    />\n                    <GuideCard\n                        source={'/assets/images/art_basic.png'}\n                        name='병원 동행'\n                        type='Basic'\n                        desc={\n                            <>\n                                <>\n                                    위드메이트 베이직 서비스는 위드메이트 동행\n                                    <br />\n                                    전문가가 고객님께서 지정한 의료 시설 혹은\n                                    <br />\n                                    <span>병원 내에서 보호자 대행 업무</span>를 수행합니다.\n                                </>\n                                <br />\n                                <br />\n                                <>\n                                    <b>요금</b> <br />\n                                    시간당 15,000원 (추가 30분마다 7,500원)\n                                </>\n                            </>\n                        }\n                        spec1={\n                            <>\n                                고객님의 진료 일정에 맞춰 위드메이트 <br />\n                                소속 동행 전문가가 의료 시설 도착\n                            </>\n                        }\n                        spec2={\n                            <>\n                                지정된 의료 시설에서 고객님 접선 후 <br />\n                                진료 시작부터 끝까지 동행\n                            </>\n                        }\n                        spec3={\n                            <>\n                                진료 종료 후 고객님의 상태를 <br />\n                                파악하고 이상 없을 시 서비스 종료\n                            </>\n                        }\n                        spec4={\n                            <>\n                                서비스 진행 단계별 카카오톡\n                                <br />\n                                실시간 알림 업데이트 제공\n                            </>\n                        }\n                    />\n                    <GuideCard\n                        source={'/assets/images/art_zzz.png'}\n                        name='보호자 동행'\n                        type='수면 내시경'\n                        desc={\n                            <>\n                                <>\n                                    {/* 위드메이트 동행 전문가가 고객님께서\n                                <br />\n                                <span>자택에서 병원까지 </span>동행하고, 병원 내에서\n                                <br />\n                                <span>보호자 대행 업무</span>를 수행합니다. */}\n                                    고객님께서 수면내시경 검사를 받는\n                                    <br />\n                                    <span>병원 내에서 </span>위드메이트 동행 전문가가\n                                    <br />\n                                    <span>보호자 대행 업무</span>를 수행합니다.\n                                </>\n                                <br />\n                                <br />\n                                <>\n                                    <b>요금</b> <br />\n                                    시간당 15,000원 (추가 30분마다 7,500원)\n                                </>\n                            </>\n                        }\n                        spec1={\n                            <>\n                                고객님의 진료 일정에 맞춰 위드메이트 <br />\n                                소속 동행 전문가가 의료 시설 도착\n                            </>\n                        }\n                        spec2={\n                            <>\n                                지정된 의료 시설에서 고객님 접선 후 <br />\n                                수면 내시경 검사 시작부터 끝까지 동행\n                            </>\n                        }\n                        spec3={\n                            <>\n                                수면 내시경 검사 종료 후 고객님의 <br />\n                                상태를 파악하고 이상 없을 시 종료\n                            </>\n                        }\n                        spec4={\n                            <>\n                                서비스 진행 단계별 카카오톡 <br />\n                                실시간 알림 업데이트 제공\n                            </>\n                        }\n                    />\n                </GuideDetailServiceCardWrapper>\n            </InnerContainer>\n        </GuideDetailContainer>\n    );\n};\n\nconst GuideCard = ({ source, name, type, desc, spec1, spec2, spec3, spec4 }) => (\n    <GuideDetailServiceCard>\n        <GuideCardImage src={source} />\n        <GuideCardName>{name}</GuideCardName>\n        <GuideCardType>{type}</GuideCardType>\n        <GuideCardDescription>{desc}</GuideCardDescription>\n        <GuideCardSpecTitle>서비스 구성</GuideCardSpecTitle>\n\n        <GuideCardSpecRow>\n            <span>01</span>\n            <p>{spec1}</p>\n        </GuideCardSpecRow>\n\n        <GuideCardSpecRow>\n            <span>02</span>\n            <p>{spec2}</p>\n        </GuideCardSpecRow>\n\n        <GuideCardSpecRow>\n            <span>03</span>\n            <p>{spec3}</p>\n        </GuideCardSpecRow>\n\n        <GuideCardSpecRow>\n            <span>04</span>\n            <p>{spec4}</p>\n        </GuideCardSpecRow>\n    </GuideDetailServiceCard>\n);\n","import React from 'react';\nimport styled from 'styled-components';\n\n// components\nimport { GuideUsingContainer, InnerContainer, GuideConceptTitle, GuideUsingSubFlexWrapper, GuideUsageFlexbox, MobileBr, DesktopBr } from '../guide.styled';\n\nexport const GuideUsage = () => {\n    return (\n        <GuideUsingContainer id='usage'>\n            <InnerContainer>\n                <GuideConceptTitle>이런 분께 추천해요</GuideConceptTitle>\n                <GuideUsingSubFlexWrapper>\n                    <GuideUsageFlexbox>\n                        <div>\n                            <img src='/assets/images/icon_legache.png' />\n                        </div>\n                        <span>\n                            병원에 가시는 <DesktopBr />\n                            <MobileBr />\n                            어르신\n                        </span>\n                    </GuideUsageFlexbox>\n                    <GuideUsageFlexbox>\n                        <div>\n                            <img src='/assets/images/icon_wheelchair.png' />\n                        </div>\n                        <span>\n                            거동이 <DesktopBr />\n                            <MobileBr />\n                            힘드신 분\n                        </span>\n                    </GuideUsageFlexbox>\n                    <GuideUsageFlexbox>\n                        <div>\n                            <img src='/assets/images/icon_x-ray.png' />\n                        </div>\n                        <span>\n                            항암 / 방사선 치료를 <DesktopBr />\n                            <MobileBr />\n                            받으시는 분\n                        </span>\n                    </GuideUsageFlexbox>\n                </GuideUsingSubFlexWrapper>\n\n                <GuideUsingSubFlexWrapper>\n                    <GuideUsageFlexbox>\n                        <div>\n                            <img src='/assets/images/icon_injection.png' />\n                        </div>\n                        <span>\n                            수면내시경 등 <DesktopBr />\n                            <MobileBr />\n                            마취가 동반되는 <DesktopBr />\n                            <MobileBr />\n                            치료를 받으시는 분\n                        </span>\n                    </GuideUsageFlexbox>\n                    <GuideUsageFlexbox>\n                        <div>\n                            <img src='/assets/images/icon_round_trip.png' />\n                        </div>\n                        <span>\n                            입원 / 퇴원\n                            <DesktopBr />\n                            <MobileBr />\n                            하시는 분\n                        </span>\n                    </GuideUsageFlexbox>\n                    <GuideUsageFlexbox>\n                        <div>\n                            <img src='/assets/images/icon_eyecare.png' />\n                        </div>\n                        <span>\n                            안과 진료/시술을 <DesktopBr />\n                            <MobileBr />\n                            받으시는 분\n                        </span>\n                    </GuideUsageFlexbox>\n                </GuideUsingSubFlexWrapper>\n\n                <GuideUsingSubFlexWrapper>\n                    <GuideUsageFlexbox>\n                        <div>\n                            <img src='/assets/images/icon_detailcheck.png' />\n                        </div>\n                        <span>\n                            각종 검진을 <DesktopBr />\n                            <MobileBr />\n                            받으시는 분\n                        </span>\n                    </GuideUsageFlexbox>\n                    <GuideUsageFlexbox>\n                        <div>\n                            <img src='/assets/images/icon_pregnant.png' />\n                        </div>\n                        <span>\n                            임산부, 산모, <DesktopBr />\n                            <MobileBr />및 소아\n                        </span>\n                    </GuideUsageFlexbox>\n                    <GuideUsageFlexbox>\n                        <div>\n                            <img src='/assets/images/icon_blood.png' />\n                        </div>\n                        <span>혈액 투석 환자</span>\n                    </GuideUsageFlexbox>\n                </GuideUsingSubFlexWrapper>\n            </InnerContainer>\n        </GuideUsingContainer>\n    );\n};\n","import React from 'react';\nimport {\n    MeritContainer,\n    InnerContainer,\n    MeritHeaderWrapper,\n    MeritCardList,\n    MeritCardWrapper,\n    MeritCardNumber,\n    MeritCardDesc,\n    MeritCardTitleRow,\n} from '../guide.styled';\n\nexport const Merit = () => {\n    return (\n        <MeritContainer id='merit'>\n            <MeritHeaderWrapper>\n                <InnerContainer>\n                    <div className='wrap'>\n                        <img src='/assets/images/faith_up.png' />\n                        <h3>믿을 수 있는 위드메이트</h3>\n                    </div>\n                </InnerContainer>\n            </MeritHeaderWrapper>\n            <InnerContainer>\n                <MeritCardList>\n                    <MeritCard\n                        title='인정 받은 서비스'\n                        source='/assets/images/faith_icon_1.png'\n                        desc={\n                            <>\n                                위드메이트 병원 동행 서비스는\n                                <br />\n                                <span>신한 오픈 이노베이션 2기 우수 기업</span>으로\n                                <br />\n                                선정된 신뢰할 수 있는 서비스입니다.{' '}\n                            </>\n                        }\n                        number='01'\n                    />\n                    <MeritCard\n                        title='검증 받은 서비스'\n                        source='/assets/images/faith_icon_2.png'\n                        desc={\n                            <>\n                                위드메이트는 엄격한 검증을 거친 후<br />\n                                보건복지부와 고양시, 그리고 국립 암센터가\n                                <br />\n                                주관하는<span>‘고양 해피 케어’</span>컨소시엄의 <br />\n                                일원으로 활동 중에 있습니다.\n                            </>\n                        }\n                        number='02'\n                    />\n                    <MeritCard\n                        title='서비스 인력 평점 제도'\n                        source='/assets/images/faith_icon_3.png'\n                        desc={\n                            <>\n                                위드메이트는 더욱 높은 서비스 경험을\n                                <br />\n                                제공하기 위해 매뉴얼을 만들고, 서비스 <br />\n                                종료 후 <span>고객님의 후기를 반영</span>하여 <br />\n                                서비스 인력을 관리합니다.\n                            </>\n                        }\n                        number='03'\n                    />\n                    <MeritCard\n                        title='전문적인 서비스 인력 양성'\n                        source='/assets/images/faith_icon_4.png'\n                        desc={\n                            <>\n                                위드메이트는 여성 인력 개발 센터,\n                                <br /> 재취업 지원 센터, 고용 복지 플러스\n                                <br /> 센터 등의 전문 기관과 <span>일자리 협업 </span>\n                                <br />\n                                <span>프로그램</span>을 운영하며 검증된 서비스\n                                <br />\n                                인력을 주기적으로 양성하고 있습니다.\n                            </>\n                        }\n                        number='04'\n                    />\n                    <MeritCard\n                        title='책임지는 서비스'\n                        source='/assets/images/faith_icon_5.png'\n                        desc={\n                            <>\n                                위드메이트는 서비스 제공 인력 전원이\n                                <br />\n                                삼성화재가 제공하는 1억 2천만원 한도의 <br />\n                                <span>‘전문인 영업 배상 책임 보험’</span>에 가입되어 <br />\n                                책임지는 서비스를 제공합니다.\n                            </>\n                        }\n                        number='05'\n                    />\n                    <MeritCard\n                        title='안전한 서비스'\n                        source='/assets/images/faith_icon_6.png'\n                        desc={\n                            <>\n                                위드메이트는 <span> 시니어 헬스케어 서비스의</span>\n                                <br />\n                                <span>본질은 ‘안전’</span>이라고 생각하고, 서비스 인력의\n                                <br />\n                                정기적인 교육, 자격증 취득 및 보유 여부 <br />\n                                점검, 서비스 매뉴얼의 수정 및 보완등을 <br />\n                                진행하고 있습니다.\n                            </>\n                        }\n                        number='06'\n                    />\n                </MeritCardList>\n            </InnerContainer>\n        </MeritContainer>\n    );\n};\n\nconst MeritCard = ({ number, title, source, desc }) => (\n    <MeritCardWrapper>\n        <MeritCardNumber>{number}</MeritCardNumber>\n        <MeritCardTitleRow>\n            <img src={source} />\n            <span>{title}</span>\n        </MeritCardTitleRow>\n        <MeritCardDesc>{desc}</MeritCardDesc>\n    </MeritCardWrapper>\n);\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport {\n    WithmateContainer,\n    InnerContainer,\n    WithmateTitle,\n    MeritCardDesc,\n    FlexDivWrapper,\n    BigSideBox,\n    SmallSideBox,\n    WithmateBg,\n    GuideConceptTitle,\n    MobileBr,\n    DesktopBr,\n} from '../guide.styled';\nexport const Withmate = () => {\n    return (\n        <WithmateContainer id='withmate'>\n            <InnerContainer>\n                <FlexDivWrapper top>\n                    <SmallSideBox>\n                        <WithmateTitle>\n                            <img src='/assets/images/new_logo_img.png' />\n                            <span>위드메이트란?</span>\n                        </WithmateTitle>\n                        <Block bigMargin>\n                            위드메이트는 <span>온라인 병원 동행 서비스 매칭 플랫폼</span>을<MobileBr /> 시작으로,\n                            <DesktopBr /> 대한민국에서{' '}\n                            <span>\n                                사회적 의미의 ‘시니어’라는 <MobileBr />\n                                단어를 없애기 위해\n                            </span>{' '}\n                            설립된 <DesktopBr />\n                            <span>\n                                시니어 라이프 스타일 <MobileBr />\n                                혁신 기업\n                            </span>\n                            입니다.\n                        </Block>\n                        <Title>위드메이트의 시작</Title>\n                        <Block>\n                            <span>2015년</span>에 설립된 위드메이트는 <span>초고령화 </span>및 <MobileBr />\n                            <span>1인 가구 시대</span>에 <DesktopBr />\n                            접어든 대한민국의 현 상황에 적합한\n                            <MobileBr />\n                            <span> 시니어 라이프 스타일 혁신</span>\n                            <DesktopBr />\n                            <span>서비스를 개발합니다.</span>\n                        </Block>\n                        <Block noMargin>\n                            이를 위해 위드메이트는 <MobileBr />\n                            <span>국내 최초로 병원 동행 서비스를 런칭해</span>\n                            <MobileBr />\n                            <DesktopBr />\n                            <span>탄탄한 신뢰</span>와 <span>안정된 서비스</span> 시스템을 기반으로 <MobileBr />\n                            축적되는 <DesktopBr />\n                            데이터와 실전 경험을 바탕으로{' '}\n                            <span>\n                                다양한 <MobileBr />\n                                신규 서비스를 연구\n                            </span>\n                            하여 <DesktopBr />\n                            <span>\n                                시니어 라이프 스타일 <MobileBr />\n                                혁신 기업\n                            </span>\n                            의 길을 걷고 있습니다.\n                        </Block>\n                    </SmallSideBox>\n                    <BigSideBox mHidden>\n                        <WithmateBg bg='/assets/images/guide_withmate_main1.png' />\n                    </BigSideBox>\n                </FlexDivWrapper>\n                {/* <FlexDivWrapper>\n                    <SmallSideBox mHidden>\n                        <WithmateBg bg='/assets/images/guide_withmate_main2.png' />\n                    </SmallSideBox>\n                    <BigSideBox>\n                        <Title>등장 배경</Title>\n                        <Block>\n                            2017년, 국내 <span>65세 이상 인구 비율이 14%를 넘으며</span> <MobileBr />\n                            대한민국은 공식적으로 <DesktopBr />\n                            <span>고령 사회</span> 에 접어들었습니다. <MobileBr />\n                            다가올 2025년, 65세 이상 인구 비율은 20%를\n                            <MobileBr />\n                            <DesktopBr />\n                            넘길 것으로 전망되며 이후{' '}\n                            <span>\n                                대한민국은 초고령 사회로 <MobileBr />\n                                접어들게 될 것\n                            </span>\n                            입니다.\n                        </Block>\n\n                        <Block>\n                            이렇게 시니어가 늘어가는 순간에도, <MobileBr />\n                            <span>현대 사회는 날로 분주해지기만 합니다.</span>\n                            <DesktopBr />\n                            젊은 세대는 <MobileBr />\n                            매일 직장과 육아라는 전투를 치르며 살아남기 위한 <MobileBr />\n                            발버둥을 치기에도 <DesktopBr />\n                            버겁습니다. 이렇게 자기 자신을 <MobileBr />\n                            돌보기 위한 시간을 내는 것도 힘겨운 상황 속에서,\n                            <MobileBr />\n                            <DesktopBr />\n                            <span>\n                                떨어져 있는 고령 가족에 대한 걱정은 어쩌면 <MobileBr />\n                                사치처럼 보이기도 합니다.{' '}\n                            </span>\n                        </Block>\n\n                        <Block noMargin>\n                            물리적인 거리와 시간적인 제약, 그리고 직장과 육아가 <MobileBr />\n                            주는 압박감을 떨쳐내고 <DesktopBr />\n                            <span>\n                                고령의 가족을 위해 선뜻 <MobileBr />\n                                움직일 수 있을까요?{' '}\n                            </span>\n                            시니어는 날로 발전하는 기술의 <DesktopBr />\n                            <MobileBr />\n                            파도 속에서 자신의 생존을 위해 필요한 서비스를 <MobileBr />\n                            누군가의 도움 없이 적재적소에 선택해 <DesktopBr />\n                            <span>\n                                자유롭게 <MobileBr />\n                                사용할 수 있을까요?\n                            </span>{' '}\n                            그렇다면 우리는 언제까지 이런 <MobileBr />\n                            막막한 상황을 견디기만 <DesktopBr />\n                            해야 할까요? 위드메이트는 <MobileBr />\n                            이렇게 시니어가 겪게 되는 다양한{' '}\n                            <span>\n                                일상 생활의 <MobileBr />\n                                불편함을{' '}\n                            </span>\n                            <DesktopBr />\n                            <span>병원 동행 서비스를 시작으로 해소합니다.</span>\n                        </Block>\n                    </BigSideBox>\n                </FlexDivWrapper> */}\n            </InnerContainer>\n        </WithmateContainer>\n    );\n};\n\nconst Title = styled(GuideConceptTitle)`\n    margin-bottom: 24px;\n    text-align: left;\n`;\n\nconst Block = styled(MeritCardDesc)`\n    font-size: 16px;\n    margin-bottom: 24px;\n    ${props => props.noMargin && `margin-bottom: 0px;`}\n    ${props => props.bigMargin && `margin-bottom: 74px;`}\n\n    @media (max-width: 768px) {\n        word-break: keep-all;\n    }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\n\nexport const GuideBanner = () => {\n    return <GuideBannerContainer>위드메이트를 알려드릴게요!</GuideBannerContainer>;\n};\n\nconst GuideBannerContainer = styled.div`\n    width: 100%;\n    height: 235px;\n\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    font-size: 40px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.2;\n    letter-spacing: -0.7px;\n    text-align: center;\n    color: #ffffff;\n\n    background-image: url('/assets/images/guide_title_bg.png');\n    background-size: cover;\n    background-repeat: no-repeat;\n    background-position: center;\n\n    @media (max-width: 768px) {\n        font-size: 22px;\n        background-position: left;\n    }\n`;\n","import React from 'react';\nimport _ from 'lodash';\nimport styled from 'styled-components';\nimport { message } from 'antd';\n\n// components\nimport { GuideNav } from './Section/nav';\nimport { GuideConcept } from './Section/concept';\nimport { GuideDetail } from './Section/detail';\nimport { GuideUsage } from './Section/usage';\nimport { WithmatePartners } from '../Home/Section/partners';\nimport { Merit } from './Section/merit';\nimport { Withmate } from './Section/withmate';\nimport { GuideBanner } from './Section/banner';\n\nimport { Container } from './guide.styled';\nimport { NoramlReserveModal } from '../../Components/newModal';\n\nclass GuidePage extends React.PureComponent {\n    state = {\n        activeTab: 'concept',\n        reserveModal: false,\n        reserveType: null,\n        step: 1,\n        mobile_menu: false,\n        addHalfTime: false,\n    };\n\n    inputHandler = ({ type, value }) => {\n        this.setState({ [type]: value });\n    };\n\n    inputDeepHandler = ({ type, deepType, value }) => {\n        this.setState(prevState => ({\n            [type]: {\n                ...prevState[type],\n                [deepType]: value,\n            },\n        }));\n    };\n\n    onTab = tab => {\n        this.setState({\n            activeTab: tab,\n        });\n    };\n\n    onRoute = path => {\n        this.props.history.push(path);\n    };\n\n    render() {\n        const { activeTab, reserveModal, step, addHalfTime, popoverVisible } = this.state;\n\n        return (\n            <Container>\n                <GuideBanner />\n                <GuideNav\n                    activeTab={activeTab}\n                    onTab={this.onTab}\n                    onReserve={serviceType => {\n                        this.setState({\n                            reserveModal: true,\n                            temp: {\n                                page: 1,\n                                service: 'unemergency',\n                                addTime: '60',\n                                payMethod: 'transfer',\n                                sex: '남',\n                                transport: 'common',\n                                report: false,\n                            },\n                        });\n                    }}\n                />\n                <Withmate />\n                <GuideConcept />\n                <GuideDetail />\n                <Merit />\n                <GuideUsage />\n                <WithmatePartners />\n            </Container>\n        );\n    }\n}\n\nexport default GuidePage;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\n\n// component\nimport GuidePage from './guide';\nimport { MATE } from '../../Lib/variables';\n\n// styles\nimport StyledContainer from './guide.styled';\n\n// actions\nimport { serviceReserve, editResrveForm } from '../../Reducer/Modules/app';\n\nclass GuideContainer extends React.PureComponent {\n    componentDidMount = () => {};\n\n    render() {\n        return (\n            <StyledContainer>\n                <GuidePage {...this.props} />\n            </StyledContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({ app, auth }) => ({\n    app,\n    auth,\n});\n\nconst mapStateToDispatch = dispatch => ({\n    serviceReserve: ({ userId, info }) => dispatch(serviceReserve({ userId, info })),\n    editForm: ({ type, value }) => dispatch(editResrveForm({ type, value })),\n});\n\nexport default connect(mapStateToProps, mapStateToDispatch)(GuideContainer);\n","import styled from 'styled-components';\n\nconst StyledContainer = styled.div``;\n\nexport default StyledContainer;\n\nexport const Container = styled.div``;\n\nexport const NemtTitleWrapper = styled.div`\n    margin-top: 104px;\n    margin-bottom: 58px;\n`;\n\nexport const InnerContainer = styled.div`\n    width: 100%;\n\n    max-width: 1120px;\n    margin: 0 auto;\n\n    @media (max-width: 1120px) {\n        padding-left: 32px;\n        padding-right: 32px;\n    }\n\n    @media (max-width: 768px) {\n        padding-left: 20px;\n        padding-right: 20px;\n    }\n`;\n\nexport const NemtTitle = styled.p`\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: bold;\n    font-size: 40px;\n    line-height: 46px;\n\n    text-align: center;\n    letter-spacing: -0.6px;\n\n    color: rgba(0, 0, 0, 0.8);\n`;\n\nexport const NemtServiceWrapper = styled.div`\n    display: flex;\n    flex-direction: column;\n\n    justify-content: flex-start;\n`;\n\nexport const NemtServiceFlexWrapper = styled.div`\n    display: flex;\n\n    align-items: flex-start;\n    justify-content: center;\n\n    margin-bottom: 30px;\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n    }\n`;\n\nexport const NemtBox = styled.div`\n    margin-bottom: 30px;\n    position: relative;\n\n    @media (max-width: 768px) {\n        margin-bottom: 80px;\n    }\n`;\n\nexport const NemtColumnBox = styled(NemtBox)`\n    width: calc((100% - 20px) / 2);\n\n    &:first-child {\n        margin-right: 20px;\n    }\n\n    @media (max-width: 768px) {\n        &:first-child {\n            margin-right: 0px;\n        }\n\n        width: 100%;\n    }\n`;\n\nexport const NemtBoxTitle = styled.p`\n    position: absolute;\n    top: 34px;\n    left: 34px;\n\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: bold;\n    font-size: 16px;\n    line-height: 20px;\n\n    letter-spacing: -0.4px;\n\n    > span {\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: bold;\n        font-size: 26px;\n        line-height: 44px;\n\n        letter-spacing: -0.777778px;\n    }\n\n    @media (max-width: 768px) {\n        position: relative;\n        top: 0px;\n        left: 0px;\n\n        margin-bottom: 4px;\n\n        font-size: 15px;\n        line-height: 21px;\n\n        > span {\n            font-size: 24px;\n            line-height: 40px;\n        }\n    }\n`;\n\nexport const NemtServiceImageWrapper = styled.div`\n    border-radius: 12px;\n    overflow: hidden;\n\n    &.desktop-visible {\n        display: block;\n\n        @media (max-width: 768px) {\n            display: none;\n        }\n    }\n\n    &.mobile-visible {\n        display: none;\n\n        @media (max-width: 768px) {\n            display: block;\n        }\n    }\n\n    > img {\n        width: 100%;\n        object-fit: contain;\n    }\n`;\n\nexport const MobileBr = styled.br`\n    display: none;\n\n    @media (max-width: 768px) {\n        display: block;\n    }\n`;\n\nexport const DesktopBr = styled.br`\n    display: block;\n\n    @media (max-width: 768px) {\n        display: none;\n    }\n`;\n\nexport const NemtInfobox = styled.div`\n    padding: 24px;\n\n    @media (max-width: 768px) {\n        padding: 0px;\n        padding-top: 24px;\n    }\n`;\n\nexport const ReserveButton = styled.span`\n    width: 246px;\n    height: 48px;\n\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n\n    background: #3bc1ff;\n    border-radius: 4px;\n\n    cursor: pointer;\n\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: bold;\n    font-size: 14px;\n    line-height: 24px;\n    text-align: center;\n\n    color: #ffffff;\n\n    > img {\n        width: 18px;\n        height: 18px;\n\n        margin-right: 6px;\n    }\n\n    margin-bottom: 20px;\n\n    &:hover {\n        opacity: 0.85;\n        transition: all 0.5s;\n    }\n\n    @media (max-width: 430px) {\n        font-size: 12px;\n    }\n\n    @media (max-width: 430px) {\n        width: 100%;\n    }\n`;\n\nexport const NemtDescription = styled.p`\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: normal;\n    font-size: 14px;\n    line-height: 20px;\n\n    word-break: keep-all;\n\n    color: rgba(0, 0, 0, 0.7);\n\n    > span {\n        color: #3bc1ff;\n        cursor: pointer;\n    }\n\n    @media (max-width: 768px) {\n        font-size: 12px;\n        line-height: 18px;\n    }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { message as Message } from 'antd';\n\n// components\nimport {\n    Container,\n    InnerContainer,\n    NemtTitleWrapper,\n    NemtTitle,\n    NemtServiceWrapper,\n    NemtBox,\n    NemtColumnBox,\n    NemtBoxTitle,\n    NemtServiceFlexWrapper,\n    NemtServiceImageWrapper,\n    ReserveButton,\n    NemtInfobox,\n    NemtDescription,\n    MobileBr,\n    DesktopBr,\n} from './nemt.styled';\n\n// utils\nimport axios from '../../Lib/axios';\n\n// modal\nimport { EmergencyCorpSearchModal, ShareCarRequestModal } from '../../Components/modal';\n\nclass NemtPage extends React.PureComponent {\n    state = {\n        activeTab: 'concept',\n        reserveModal: false,\n        searchModal: false,\n        emergencyList: [],\n        emergencyKeyword: '',\n        requestModal: false,\n        requestInfo: {\n            corp: '',\n            address: '',\n            manager: '',\n            contact: '',\n            message: '',\n        },\n    };\n\n    componentDidMount = async () => {\n        const { data } = await axios.get(`/v1/corp/list`);\n        if (!data) return null;\n\n        if (data && Array.isArray(data)) {\n            this.setState({\n                emergencyList: data,\n            });\n        }\n    };\n\n    onRoute = path => {\n        this.props.history.push(path);\n    };\n\n    onShareRequest = async () => {\n        const {\n            requestInfo: { corp, address, manager, contact, message },\n        } = this.state;\n        if (!corp || !address || !manager || !contact || !message) return Message.info('정보를 기입해주세요.');\n\n        const { data } = await axios.post('/v1/share/add', {\n            corp,\n            address,\n            manager,\n            contact,\n            message,\n        });\n\n        if (!data) {\n            return Message.error('일시적인 서버장애가 발생했습니다. 다시 시도해주세요.');\n        }\n\n        if (data === 'check parameters') {\n            return Message.warning('정보를 모두 기입해주세요.');\n        }\n\n        if (data === 'success') {\n            Message.success('셔틀 셰어링 서비스를 요청하였습니다.');\n\n            this.setState({\n                requestModal: false,\n                requestInfo: {\n                    corp: '',\n                    address: '',\n                    manager: '',\n                    contact: '',\n                    message: '',\n                },\n            });\n        }\n    };\n\n    render() {\n        const { requestInfo, emergencyKeyword, emergencyList } = this.state;\n\n        return (\n            <Container>\n                <InnerContainer>\n                    <NemtTitleWrapper>\n                        <NemtTitle>서비스 안내</NemtTitle>\n                    </NemtTitleWrapper>\n\n                    <NemtServiceWrapper>\n                        <NemtBox>\n                            <NemtServiceImageWrapper className='desktop-visible'>\n                                <img src='/assets/images/service_around_desktop.png' />\n                            </NemtServiceImageWrapper>\n                            <NemtServiceImageWrapper className='mobile-visible'>\n                                <img src='/assets/images/service_around_mobile.png' />\n                            </NemtServiceImageWrapper>\n\n                            <NemtInfobox>\n                                <ReserveButton\n                                    onClick={() => {\n                                        this.props.history.push('/nemt/service');\n                                    }}\n                                >\n                                    <img src='/assets/images/icon_calendar.png' />\n                                    예약하기\n                                </ReserveButton>\n\n                                <NemtBoxTitle style={{ color: '#236037' }}>\n                                    위드메이트\n                                    <DesktopBr />\n                                    <MobileBr />\n                                    <span>병원 동행 서비스</span>\n                                </NemtBoxTitle>\n\n                                <NemtDescription>\n                                    병원 동행 서비스는 응급 상황에 처하지는 않았으나 정기적, 혹은 비정기적으로 <DesktopBr />\n                                    의료 기관에 방문해 적절한 의료 조치를 받아야 하는 분들을 위한 서비스입니다. <DesktopBr />\n                                    <MobileBr />\n                                    자세한 설명은{' '}\n                                    <span\n                                        onClick={() => {\n                                            this.props.history.push('/nemt/service');\n                                        }}\n                                    >\n                                        병원동행 서비스 NEMT 페이지\n                                    </span>\n                                    에서 확인이 가능합니다.\n                                </NemtDescription>\n                            </NemtInfobox>\n                        </NemtBox>\n                    </NemtServiceWrapper>\n\n                    <NemtServiceFlexWrapper>\n                        <NemtColumnBox id='shuttle-service'>\n                            <NemtServiceImageWrapper>\n                                <img src='/assets/images/shuttle.png' />\n                            </NemtServiceImageWrapper>\n\n                            <NemtInfobox>\n                                <ReserveButton\n                                    onClick={() => {\n                                        this.setState({ requestModal: true });\n                                    }}\n                                >\n                                    <img src='/assets/images/icon_message.png' />\n                                    문의하기\n                                </ReserveButton>\n\n                                <NemtBoxTitle style={{ color: '#1D5DA2' }}>\n                                    위드메이트\n                                    <DesktopBr />\n                                    <MobileBr />\n                                    <span>셔틀 셰어링 서비스</span>\n                                </NemtBoxTitle>\n\n                                <NemtDescription>\n                                    요양 시설 운영비 중 차량 유지 비용은 주유비, 운행 직원 급여, 식대 등이 <DesktopBr />\n                                    더해질 경우 막대한 비중을 차지합니다. 하지만 노후 차량을 사용하거나, <DesktopBr />\n                                    운행 직원 수를 줄일 경우 입소 환자 안전에 문제가 생기기 때문에 <DesktopBr />\n                                    요양 시설이 차량 유지 비용을 줄이는 방법은 사실상 없습니다.\n                                    <DesktopBr />\n                                    <DesktopBr />\n                                    이에 위드메이트는 요양 시설이 차량 유지 비용을 절감할 수 있는\n                                    <DesktopBr />\n                                    ‘셔틀 셰어링’ 서비스를 도입했습니다. A와 B라는 두 곳의 요양원이 <DesktopBr />\n                                    위드메이트가 제공하는 셔틀과 기사를 공유하며 잉여 시간과 좌석을 함께 <DesktopBr />\n                                    사용하는 방법입니다. A 병원의 남는 좌석을 B 병원이 이용하거나, <DesktopBr />\n                                    B 병원의 환자가 치료를 받는 동안 A 병원의 환자가 차량을 이용하는 방식이죠.\n                                    <DesktopBr />\n                                    <DesktopBr />\n                                    위드메이트의 셔틀 쉐어링 서비스가 필요한 기관은 <DesktopBr />\n                                    문의 접수 버튼을 클릭하세요!\n                                </NemtDescription>\n                            </NemtInfobox>\n                        </NemtColumnBox>\n\n                        <NemtColumnBox id='search-service'>\n                            <NemtServiceImageWrapper>\n                                <img src='/assets/images/emergency_car.png' />\n                            </NemtServiceImageWrapper>\n\n                            <NemtInfobox>\n                                <ReserveButton\n                                    onClick={() => {\n                                        this.setState({ searchModal: true });\n                                    }}\n                                >\n                                    <img src='/assets/images/icon_search.png' />\n                                    검색하기\n                                </ReserveButton>\n\n                                <NemtBoxTitle style={{ color: '#B85465' }}>\n                                    위드메이트\n                                    <DesktopBr />\n                                    <MobileBr />\n                                    <span>사설 구급 업체 검색 서비스 </span>\n                                </NemtBoxTitle>\n\n                                <NemtDescription>\n                                    '구급’이라는 단어가 들어간 탓에, 흔히 사설 구급차를 떠올렸을 때 응급 상황이 <DesktopBr />\n                                    아닌 이상 사용할 일이 없을 것이라고 생각이 듭니다. 하지만 사설 구급차는 <DesktopBr />\n                                    요양 시설 입소 환자의 병원 이송, 대형 행사 진행 중 비상 대기, 정상 거동이 <DesktopBr />\n                                    불가한 환자 이송 등 일상 생활의 다양한 분야에 필요한 서비스입니다.\n                                    <DesktopBr />\n                                    <DesktopBr />\n                                    위드메이트는 플랫폼 이용자에게 무료로 각 지역의 사설 구급 업체를 <DesktopBr />\n                                    검색할 수 있는 서비스를 제공하고 있습니다. 지역별로 나눠 편리하게 <DesktopBr />\n                                    사설 구급 업체를 검색해보세요!\n                                </NemtDescription>\n                            </NemtInfobox>\n                        </NemtColumnBox>\n                    </NemtServiceFlexWrapper>\n                </InnerContainer>\n\n                {this.state.searchModal ? (\n                    <EmergencyCorpSearchModal\n                        data={emergencyList}\n                        keyword={emergencyKeyword}\n                        inputHandler={value => {\n                            this.setState({ emergencyKeyword: value });\n                        }}\n                        visibleHandler={() => {\n                            this.setState({ searchModal: false });\n                        }}\n                    />\n                ) : null}\n                {this.state.requestModal ? (\n                    <ShareCarRequestModal\n                        data={requestInfo}\n                        visibleHandler={() => {\n                            this.setState({ requestModal: false });\n                        }}\n                        inputHandler={({ type, value }) => {\n                            this.setState(prevState => ({\n                                requestInfo: {\n                                    ...prevState.requestInfo,\n                                    [type]: value,\n                                },\n                            }));\n                        }}\n                        onSave={this.onShareRequest}\n                    />\n                ) : null}\n            </Container>\n        );\n    }\n}\n\nexport default NemtPage;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\n\n// component\nimport NemtPage from './nemt';\nimport { MATE } from '../../Lib/variables';\n\n// styles\nimport StyledContainer from './nemt.styled';\n\n// actions\nimport {} from '../../Reducer/Modules/app';\n\nclass NemtContainer extends React.PureComponent {\n    componentDidMount = () => {};\n\n    render() {\n        return (\n            <StyledContainer>\n                <NemtPage {...this.props} />\n            </StyledContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({ app, auth }) => ({\n    app,\n    auth,\n});\n\nconst mapStateToDispatch = dispatch => ({});\n\nexport default connect(mapStateToProps, mapStateToDispatch)(NemtContainer);\n","import React from \"react\";\nimport Modal from \"react-modal\";\nimport styled from 'styled-components';\nimport { Button, message, Table } from 'antd';\n\nimport ProfileStyledContainer from \"../Auth/AuthPages/Profile/profile.styled\";\nimport { HalfWidthButton } from \"../../Components/Common/button\";\nimport { DivisionLine } from \"../../Components/Common/input\";\nimport { getPatientInfo } from \"../../Lib/Api/auth\";\n\nconst customStyles = {\n\n    overlay: {\n        position: \"fixed\",\n        top: 0,\n        left: 0,\n        right: 0,\n        bottom: 0,\n        backgroundColor: \"rgba(15, 15, 15, 0.79)\",\n    },\n    content: {\n        position: \"absolute\",\n        top: \"30px\",\n        height: \"60%\",\n        border: \"1px solid #ccc\",\n        background: \"#ffffff\",\n        overflow: \"auto\",\n        WebkitOverflowScrolling: \"touch\",\n        borderRadius: \"4px\",\n        outline: \"none\",\n        padding: \"20px\",\n    },\n}\n\nconst patientColumn = ({ onCheck }) => {\n    return [\n        {\n            title: '이름',\n            dataIndex: 'name',\n            align: 'center',\n            width: '100px'\n        },\n        {\n            title: '나이',\n            dataIndex: 'age',\n            align: 'center',\n            width: '100px'\n        },\n        {\n            title: '선택',\n            align: 'center',\n            width: '100px',\n            dataIndex: '_id',\n            render: (_id, data) =>\n                <Button\n                    style={{ width: '70px', height: '30px' }}\n                    onClick={() => { onCheck(data) }}\n                >\n                    선택\n                </Button>\n        },\n    ]\n}\n\nclass PatientProfileListComponent extends React.PureComponent {\n    state = {\n        patientInfo: {},\n        patientList: [],\n        patientId: '',\n        patientInfo: null\n    };\n\n    componentWillUnmount = () => {\n        this.setState({ patientInfo: null });\n    };\n\n    onChoose = () => {\n        const { patientInfo } = this.state;\n        console.log(patientInfo)\n\n        getPatientInfo({ patientId: patientInfo._id }).then(resolve => {\n            console.log(resolve)\n            const { data } = resolve;\n            if (resolve && resolve.data && resolve.data.message === 'success') {\n                if (patientInfo && patientInfo.reservedStarting) delete data.starting;\n                if (patientInfo && patientInfo.environment) delete data.environment;\n                if (patientInfo && patientInfo.walk) delete data.walk;\n\n                this.setState({ patientInfo: resolve.data.data })\n            } else {\n                message.info('선택하신 환자 프로필이 존재하지 않습니다.');\n            }\n        });\n    };\n\n    onChangeCheckbox = ({ }) => {\n\n    };\n\n    // 체크박스 선택\n    // rowSelection = {\n    //     onChange: (selectedRowKeys , selectedRows ) => {\n    //       console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);\n    //     },\n    //     getCheckboxProps: (record ) => {\n    //         console.log(record)\n    //     }\n    //   };\n\n    render() {\n        // console.log(this.props)\n        return (\n            <Modal\n                isOpen={this.props.visible}\n                ariaHideApp={false}\n                // onRequestClose={modalOff} // esc키 또는 background 클릭 시 모달창 닫힘\n                style={{ ...customStyles }}\n            >\n                <ProfileStyledContainer>\n                    <div className='inner-container'>\n                        <div className='profile-form'>\n                            <div className='form'>\n                                <div>\n                                    <CloseButton src={'/assets/images/close.png'} onClick={this.props.onClose} style={{ width: '22px', height: '22px' }} />\n                                </div>\n                                <TitleSection>\n                                    <WideModalTitle>환자 프로필 목록</WideModalTitle>\n                                    <AlertText>\n                                        * 환자 프로필 정보를 선택할 수 있습니다. <br />\n                                        [ 마이페이지 ]에서 환자 프로필을 등록하실 수 있습니다.\n                                    </AlertText>\n                                </TitleSection>\n\n                                <br />\n\n                                <DivisionLine />\n\n                                <div className='profileList'>\n                                    <Table\n                                        dataSource={this.props.list}\n                                        columns={patientColumn({\n                                            onCheck: (data) => {\n                                                this.props.onUpdatePatient(data);\n                                                this.props.onClose()\n                                            }\n                                        })}\n                                        rowKey='_id'\n                                        pagination={{\n                                            pageSize: 3,\n                                            hideOnSinglePage: true,\n                                            size: 'small',\n                                        }}\n                                    // rowSelection={{\n                                    //     type: 'checkbox',\n                                    //     ...this.rowSelection\n                                    // }}\n                                    // rowKey='_id'\n                                    />\n                                </div>\n\n                                <DivisionLine />\n\n                                <ButtonWrap>\n                                    <HalfWidthButton style={{ margin: '0 auto' }} bg='#3bc1ff'\n                                        onClick={this.props.onClose}\n                                    >\n                                        닫기\n                                    </HalfWidthButton>\n                                </ButtonWrap>\n                            </div>\n                        </div>\n                    </div>\n                </ProfileStyledContainer >\n            </Modal >\n        );\n    }\n};\n\nexport default PatientProfileListComponent;\n\nconst CloseButton = styled.img`\n    position: absolute;\n    top: 16px;\n    right: 12px;\n\n    width: 18px;\n    height: 18px;\n\n    object-fit: cover;\n    cursor: pointer;\n\n    @media (max-width: 480px) {\n        width: 16px;\n        height: 16px;\n\n        &.desktop-only {\n            display: none;\n        }\n    }\n`;\n\nconst ButtonWrap = styled.div`\n    width: 100%;\n    display: flex;\n    align-items: center;\n`;\n\nconst TitleSection = styled.div``;\n\nconst WideModalTitle = styled.p`\n    font-size: 24px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.3;\n    letter-spacing: -0.5px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    margin-bottom: 4px;\n`;\n\nconst AlertText = styled.div`\n    font-size: 14px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.52;\n    letter-spacing: -0.3px;\n    text-align: left;\n    color: #ff5500;\n`;","import React from 'react';\nimport Modal from 'react-modal';\nimport styled from 'styled-components';\nimport { Button, Input, message, Table } from 'antd';\n\nimport ProfileStyledContainer from '../Auth/AuthPages/Profile/profile.styled';\nimport { HalfWidthButton } from '../../Components/Common/button';\nimport { DivisionLine } from '../../Components/Common/input';\nimport { getMateInfo } from '../../Lib/Api/auth';\nimport axios from '../../Lib/axios';\n\nconst customStyles = {\n    overlay: {\n        position: 'fixed',\n        top: 0,\n        left: 0,\n        right: 0,\n        bottom: 0,\n        backgroundColor: 'rgba(15, 15, 15, 0.79)',\n    },\n    content: {\n        position: 'absolute',\n        top: '30px',\n        height: '90%',\n        border: '1px solid #ccc',\n        background: '#ffffff',\n        overflow: 'auto',\n        WebkitOverflowScrolling: 'touch',\n        borderRadius: '4px',\n        outline: 'none',\n        padding: '20px',\n    },\n};\n\nconst mateListColumn = ({ onCheck }) => {\n    return [\n        {\n            title: '이름',\n            dataIndex: 'name',\n            align: 'center',\n            width: '100px',\n            sorter: (a, b) => a.name.localeCompare(b.name),\n        },\n        // {\n        //     title: '성별',\n        //     dataIndex: 'sex',\n        //     align: 'center',\n        //     width: '100px',\n        //     render: sex => <span>{sex === '남' ? '남자' : '여자'}</span>\n        // },\n        {\n            title: '사진',\n            dataIndex: 'photo',\n            align: 'center',\n            width: '100px',\n            render: photoURL => <img src={photoURL} style={{ width: '100px', height: 'auto' }} />,\n        },\n        // {\n        //     title: '수행 이력',\n        //     dataIndex: 'review',\n        //     align: 'center',\n        //     width: '100px',\n        //     render: review => <span>Pro 서비스 이력: {(review && review.unemergency) || 0}건\n        //         <br />Basic 서비스 이력: {(review && review.assist) || 0}건</span>,\n        // },\n        {\n            title: '선택',\n            align: 'center',\n            width: '100px',\n            dataIndex: '_id',\n            render: (_id, data) => (\n                <Button\n                    style={{ width: '70px', height: '30px' }}\n                    onClick={() => {\n                        onCheck(data);\n                    }}\n                >\n                    선택\n                </Button>\n            ),\n        },\n    ];\n};\n\nclass PatientProfileListComponent extends React.PureComponent {\n    state = {\n        mateInfo: {},\n        mateList: [],\n        mateId: '',\n        keyword: '',\n        review: null,\n    };\n\n    componentWillUnmount = () => {\n        this.setState({ mateInfo: null });\n    };\n\n    onChoose = () => {\n        const { mateInfo, mateId } = this.state;\n        console.log(mateInfo, mateId);\n\n        getMateInfo({ mateId: mateInfo._id }).then(resolve => {\n            console.log(resolve);\n            const { data } = resolve;\n            if (resolve && resolve.data && resolve.data.message === 'success') {\n                this.setState({ mateInfo: resolve.data.data });\n            } else {\n                message.info('선택하신 메이트가 존재하지 않습니다.');\n            }\n        });\n    };\n\n    getList = () => {\n        const { keyword } = this.state;\n\n        const list = this.props.list.filter(item => item && item.name && item.name.toLowerCase().includes(keyword));\n\n        return list;\n    };\n\n    render() {\n        const list = this.getList();\n        // console.log(this.props)\n        return (\n            <Modal\n                isOpen={this.props.visible}\n                ariaHideApp={false}\n                // onRequestClose={modalOff} // esc키 또는 background 클릭 시 모달창 닫힘\n                style={{ ...customStyles }}\n            >\n                <ProfileStyledContainer>\n                    <div className='inner-container'>\n                        <div className='mate-form'>\n                            <div className='form'>\n                                <div>\n                                    <CloseButton src={'/assets/images/close.png'} onClick={this.props.onClose} style={{ width: '22px', height: '22px' }} />\n                                </div>\n                                <TitleSection>\n                                    <WideModalTitle>메이트 선택하기</WideModalTitle>\n                                    <AlertText>* 서비스 수행을 함께할 메이트를 선택하실 수 있습니다.</AlertText>\n                                </TitleSection>\n\n                                <br />\n\n                                <DivisionLine />\n\n                                <div className='mateList'>\n                                    <Input\n                                        value={this.state.keyword}\n                                        onChange={ev => {\n                                            this.setState({ keyword: ev.target.value });\n                                        }}\n                                        placeholder='메이트 이름으로 검색하세요.'\n                                        style={{ marginBottom: '24px' }}\n                                    />\n                                    <Table\n                                        dataSource={list}\n                                        columns={mateListColumn({\n                                            onCheck: data => {\n                                                this.props.onUpdateMate(data);\n                                                this.props.onClose();\n                                            },\n                                        })}\n                                        rowKey='_id'\n                                        pagination={{\n                                            pageSize: 5,\n                                            hideOnSinglePage: true,\n                                            size: 'small',\n                                        }}\n                                    />\n                                </div>\n\n                                <DivisionLine />\n\n                                <ButtonWrap>\n                                    <HalfWidthButton style={{ margin: '0 auto' }} bg='#3bc1ff' onClick={this.props.onClose}>\n                                        닫기\n                                    </HalfWidthButton>\n                                </ButtonWrap>\n                            </div>\n                        </div>\n                    </div>\n                </ProfileStyledContainer>\n            </Modal>\n        );\n    }\n}\n\nexport default PatientProfileListComponent;\n\nconst CloseButton = styled.img`\n    position: absolute;\n    top: 16px;\n    right: 12px;\n\n    width: 18px;\n    height: 18px;\n\n    object-fit: cover;\n    cursor: pointer;\n\n    @media (max-width: 480px) {\n        width: 16px;\n        height: 16px;\n\n        &.desktop-only {\n            display: none;\n        }\n    }\n`;\n\nconst ButtonWrap = styled.div`\n    width: 100%;\n    display: flex;\n    align-items: center;\n`;\n\nconst TitleSection = styled.div``;\n\nconst WideModalTitle = styled.p`\n    font-size: 24px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.3;\n    letter-spacing: -0.5px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    margin-bottom: 4px;\n`;\n\nconst AlertText = styled.div`\n    font-size: 14px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.52;\n    letter-spacing: -0.3px;\n    text-align: left;\n    color: #ff5500;\n`;\n","import React from \"react\";\nimport Modal from \"react-modal\";\nimport styled from 'styled-components';\nimport { Button, message, Table } from 'antd';\n\nimport CardStyledContainer from \"../Auth/AuthPages/Card/card.styled\";\nimport { HalfWidthButton } from \"../../Components/Common/button\";\nimport { DivisionLine } from \"../../Components/Common/input\";\nimport { getCardInfo } from \"../../Lib/Api/auth\";\n\nconst customStyles = {\n    overlay: {\n        position: \"fixed\",\n        top: 0,\n        left: 0,\n        right: 0,\n        bottom: 0,\n        backgroundColor: \"rgba(15, 15, 15, 0.79)\",\n    },\n    content: {\n        position: \"absolute\",\n        top: \"30px\",\n        height: \"40%\",\n        border: \"1px solid #ccc\",\n        background: \"#ffffff\",\n        overflow: \"auto\",\n        WebkitOverflowScrolling: \"touch\",\n        borderRadius: \"4px\",\n        outline: \"none\",\n        padding: \"20px\",\n    }\n}\n\nconst cardColumn = ({ onCheck }) => {\n    return [\n        {\n            title: '카드명',\n            dataIndex: 'cardName',\n            align: 'center',\n            width: '80px'\n        },\n        {\n            title: '카드번호',\n            dataIndex: 'cardNum',\n            align: 'center',\n            render: cardNum => <span>**** - **** - **** - {cardNum.slice(15, 19)}</span>\n        },\n        {\n            title: '선택',\n            align: 'center',\n            width: '60px',\n            dataIndex: '_id',\n            render: (_id, data) =>\n                <Button\n                    style={{ width: '60px', height: '30px' }}\n                    onClick={() => { onCheck(data) }}\n                >\n                    선택\n                </Button>\n        },\n    ]\n}\n\nclass CardListComponent extends React.PureComponent {\n    state = {\n        cardInfo: {},\n        cardList: [],\n        cardId: '',\n        cardInfo: null\n    };\n\n    componentWillUnmount = () => {\n        this.setState({ cardInfo: null });\n    };\n\n    onChoose = () => {\n        const { cardInfo } = this.state;\n        console.log(cardInfo)\n\n        getCardInfo({ cardId: cardInfo._id }).then(resolve => {\n            console.log(resolve)\n            const { data } = resolve;\n            if (resolve && resolve.data && resolve.data.message === 'success') {\n                if (cardInfo && cardInfo.cardName) delete data.cardName;\n                if (cardInfo && cardInfo.cardNum) delete data.cardNum;\n                if (cardInfo && cardInfo.year) delete data.year;\n                if (cardInfo && cardInfo.month) delete data.month;\n\n                this.setState({ cardInfo: resolve.data.data })\n            } else {\n                message.info('선택하신 카드정보가 존재하지 않습니다.');\n            }\n        });\n    };\n\n    render() {\n        // console.log(this.props)\n        return (\n            <Modal\n                isOpen={this.props.visible}\n                ariaHideApp={false}\n                // onRequestClose={modalOff} // esc키 또는 background 클릭 시 모달창 닫힘\n                style={{ ...customStyles }}\n            >\n                <CardStyledContainer>\n                    <div className='inner-container'>\n                        <div className='profile-form'>\n                            <div className='form'>\n                                <div>\n                                    <CloseButton src={'/assets/images/close.png'} onClick={this.props.onClose} style={{ width: '22px', height: '22px' }} />\n                                </div>\n                                <TitleSection>\n                                    <WideModalTitle>결제 카드 목록</WideModalTitle>\n                                    <AlertText>\n                                        * 결제하실 카드를 선택할 수 있습니다. <br />\n                                        [ 마이페이지 ]에서 결제 카드를 등록하실 수 있습니다.\n                                    </AlertText>\n                                </TitleSection>\n\n                                <br />\n\n                                <DivisionLine />\n\n                                <div className='profileList'>\n                                    <Table\n                                        dataSource={this.props.list}\n                                        columns={cardColumn({\n                                            onCheck: (data) => {\n                                                this.props.onUpdateCard(data);\n                                                this.props.onClose()\n                                            }\n                                        })}\n                                        rowKey='_id'\n                                        pagination={{\n                                            pageSize: 3,\n                                            hideOnSinglePage: true,\n                                            size: 'small',\n                                        }}\n                                    />\n                                </div>\n\n                                <DivisionLine />\n\n                                <ButtonWrap>\n                                    <HalfWidthButton style={{ margin: '0 auto' }} bg='#3bc1ff'\n                                        onClick={this.props.onClose}\n                                    >\n                                        닫기\n                                    </HalfWidthButton>\n                                </ButtonWrap>\n                            </div>\n                        </div>\n                    </div>\n                </CardStyledContainer >\n            </Modal >\n        );\n    }\n};\n\nexport default CardListComponent;\n\nconst CloseButton = styled.img`\n    position: absolute;\n    top: 16px;\n    right: 12px;\n\n    width: 18px;\n    height: 18px;\n\n    object-fit: cover;\n    cursor: pointer;\n\n    @media (max-width: 480px) {\n        width: 16px;\n        height: 16px;\n\n        &.desktop-only {\n            display: none;\n        }\n    }\n`;\n\nconst ButtonWrap = styled.div`\n    width: 100%;\n    display: flex;\n    align-items: center;\n`;\n\nconst TitleSection = styled.div``;\n\nconst WideModalTitle = styled.p`\n    font-size: 24px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.3;\n    letter-spacing: -0.5px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    margin-bottom: 4px;\n`;\n\nconst AlertText = styled.div`\n    font-size: 14px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.52;\n    letter-spacing: -0.3px;\n    text-align: left;\n    color: #ff5500;\n`;","import React from 'react';\nimport styled from 'styled-components';\nimport { Button, Checkbox, message, notification, Radio, Select } from 'antd';\nimport moment from 'moment';\nimport 'moment/locale/ko';\nimport locale from 'antd/es/date-picker/locale/ko_KR';\nimport holidayKR from 'holiday-kr';\nimport swal from 'sweetalert2';\n\n// libs\nimport axios from '../../Lib/axios';\nimport { combineDateAndTime } from '../../Lib/utils';\nimport { celluarValidate } from '../../Lib/regex';\n\n// styled\nimport { ReserveTopCover, ReservePageContainer, ResrevePageInnerContainer, ResrevePageHalfInnerContainer, MobileBr, DesktopBr } from './reserve.styled';\nimport { TopBannerSection, TopBannerText, TopBannerDescription } from './reserve.styled';\nimport { StepSectionContainer, StepButton, LastStepButton, StepButtonWrapper, StepArrow } from './reserve.styled';\nimport { NextStepGudieContainer, NextStepEmoj, NextStepTitle, NextStepArrowDown } from './reserve.styled';\nimport { ServiceSectionContainer, ServiceSectionTitle, ServiceSectionDescription } from './reserve.styled';\nimport { ServiceCardWrapper, ServiceCardButton, ServiceCardList } from './reserve.styled';\nimport { ZzzServiceWrapper, ZzzArt, ZzzDescription } from './reserve.styled';\nimport { AlzheServiceWrapper, AlzheArt, AlzheDescription } from './reserve.styled';\nimport { ServiceTypeSectionContainer, ServiceTypeWrapper } from './reserve.styled';\nimport { ServiceTypeCardWrapper, ServiceTypeCardImg, NextStepButton, ServiceTypeName, ServiceTypeDescription } from './reserve.styled';\nimport { FormContainer, MobileStepImage, TopBannerSubDescription, UnderLineText, FormWrapper, FormMainTitle, FormMainAlert } from './reserve.styled';\nimport {\n    ServiceName,\n    LabelValue,\n    DashAndText,\n    Sexes,\n    LabelAndValueRow,\n    PriceValue,\n    LabelDescription,\n    FlexFormWrapper,\n    ResultFormWrapper,\n    PriceDetailLabel,\n    PriceDetailValue,\n    CongraturateLogo,\n    DoneResultWrapper,\n} from './reserve.styled';\n\n// components\nimport {\n    DivisionLine,\n    WithmateLabel,\n    WithmateInput,\n    WithmateTextarea,\n    WithmateSelect,\n    FlexWrapper,\n    WithmateTimepicker,\n    WithamteInputWithButton,\n    WithmateDatePicker,\n} from '../../Components/Common/input';\nimport { ButtonWrapper, RadiusHalfWidthButton } from '../../Components/Common/button';\n\nimport PatientProfileListModal from './patientListModal';\nimport MateModal from './mateListModal';\nimport CardListModal from './cardListModal';\nimport { fetchPatient, fetchMate, fetchCard } from '../../Lib/Api/auth';\nimport { Label } from 'reactstrap';\n\nexport default class ReservationPage extends React.PureComponent {\n    state = {\n        step: 'items', // items, basic, form, confirm, done\n        big5: [],\n        local: [],\n        corpBy: [],\n        zzz: [],\n        alzhe: [],\n        productId: '',\n        productInfo: null,\n        service: '',\n        patientList: [],\n        patientId: '',\n        mateList: [],\n        chooseMate: '아니오',\n        cardList: [],\n    };\n\n    componentDidMount = async () => {\n        const userId = localStorage.getItem('id');\n        if (!userId) {\n            message.warning('로그인 후 이용해주세요.');\n            setTimeout(() => {\n                this.props.history.goBack();\n            }, 250);\n            return null;\n        }\n\n        const { params } = this.props.match;\n        if (params.step && params.step !== 'items') {\n            this.props.history.push('/reserve/items');\n        }\n\n        this.fetchUserInfo();\n        this.fetchItemList();\n    };\n\n    componentDidUpdate = prevProps => {\n        const { params: prevParams } = prevProps.match;\n        const { params } = this.props.match;\n        if (JSON.stringify(prevParams) !== JSON.stringify(params)) {\n            this.setState({ step: params.step });\n        }\n    };\n\n    fetchUserInfo = () => {\n        const userId = localStorage.getItem('id');\n        if (!userId) return null;\n        axios.get(`/v1/user/${userId}/user`).then(resolve => {\n            const { data } = resolve;\n            if (data && data._id) {\n                this.setState({ userInfo: data, point: data.point, usePoint: 0, connection: data.connection });\n            }\n        });\n    };\n\n    onPrevSetting = () => {\n        const userId = localStorage.getItem('id');\n        fetchPatient({ id: userId }).then(resolve => {\n            // console.log(resolve)\n            if (resolve && resolve.data && resolve.data.message === 'success') {\n                this.setState({ patientList: resolve.data.data, patientProfileListModal: true });\n            } else {\n                notification.open({\n                    message: '조회되는 환자 목록이 없습니다.',\n                    description: '[마이페이지]에서 환자 프로필을 등록하실 수 있습니다.',\n                    type: 'primary',\n                });\n            }\n        });\n\n        // const { productInfo } = this.state;\n        // if (!userId) return null;\n\n        // axios.get('/v2/user/recent/reserve/info', { params: { userId } }).then(resolve => {\n        //     const { data } = resolve;\n        //     if (data && data._id) {\n        //         delete data._id;\n        //         // 도착지랑 출발지 제외하고 나머지 다 추가\n        //         if (productInfo && productInfo.reservedDestination) delete data.destination;\n        //         if (productInfo && productInfo.reservedStarting) delete data.starting;\n\n        //         this.setState({ ...data });\n        //     } else {\n        //         message.warning('조회되는 최근 예약정보가 없습니다.');\n        //     }\n        // });\n    };\n\n    onPrevSetting2 = () => {\n        fetchMate({ valid: true }).then(resolve => {\n            console.log(resolve);\n            if (resolve && resolve.data && resolve.data.message === 'success') {\n                this.setState({ mateList: resolve.data.data, mateListModal: true });\n            } else {\n                message.info('조회되는 메이트가 없습니다.');\n            }\n        });\n    };\n\n    // 카드 목록 불러오기\n    onPrevSetting3 = () => {\n        const userId = localStorage.getItem('id');\n        fetchCard({ id: userId }).then(resolve => {\n            if (resolve && resolve.data && resolve.data.message === 'success') {\n                this.setState({ cardList: resolve.data.data, cardListModal: true });\n            } else {\n                notification.open({\n                    message: '조회되는 카도 목록이 없습니다.',\n                    description: '[마이페이지]에서 결제 카드를 등록하실 수 있습니다.',\n                    type: 'primary',\n                });\n            }\n        });\n    };\n\n    fetchItemList = () => {\n        axios.get('/v1/product/service/tag/group', { params: { isOption: true } }).then(resolve => {\n            const { data } = resolve;\n            if (data) {\n                this.setState({ ...data });\n            }\n        });\n    };\n\n    onSelectService = info => {\n        this.setState(\n            {\n                productId: info.id,\n                productInfo: info,\n                isZzz: false,\n                isAlzhe: false,\n                starting: info.reservedStarting || '',\n                destination: info.reservedDestination || '',\n                shortStarting: info.reservedShortStarting || '',\n                shortDestination: info.reservedShortDestination || '',\n            },\n            this.goSecondStep,\n        );\n    };\n\n    goSecondStep = () => {\n        const rect = document.querySelector('#second-step').getClientRects();\n        const { top } = rect[0];\n        window.scrollTo(0, window.scrollY + top - 55);\n    };\n\n    goNextButton = () => {\n        const rect = document.querySelector('#fst-next-btn').getClientRects();\n        const { top } = rect[0];\n        window.scrollTo(0, window.scrollY + top - 55);\n    };\n    // Daum Address Search 출발지\n    onStarting = () => {\n        new window.daum.Postcode({\n            oncomplete: data => {\n                const { sido, sigungu, bname, roadAddress, buildingName } = data;\n                this.setState(prevState => ({\n                    shortStarting: `${sido} ${sigungu} ${bname}`,\n                    starting: `${roadAddress} (${buildingName})`,\n                }));\n            },\n        }).open();\n    };\n    // Daum Address Search 도착지\n    onDestination = () => {\n        new window.daum.Postcode({\n            oncomplete: data => {\n                const { sido, sigungu, bname, roadAddress, buildingName } = data;\n                this.setState(prevState => ({\n                    destination: `${roadAddress} (${buildingName})`,\n                    shortDestination: `${sido} ${sigungu} ${bname}`,\n                }));\n            },\n        }).open();\n    };\n\n    onAddress = () => {\n        new window.daum.Postcode({\n            oncomplete: data => {\n                const { roadAddress, buildingName } = data;\n                this.setState(prevState => ({\n                    address: `${roadAddress} (${buildingName})`,\n                }));\n            },\n        }).open();\n    };\n\n    stepHandler = () => {\n        const { step: currentStep, service, productId, shortStarting, shortDestination, recommender = '', recommenderContact = '' } = this.state;\n        const { patient, sex, contact = '', age, guardContact, relate, starting, destination } = this.state;\n        const {\n            mateGender,\n            reserveDate,\n            meetTime,\n            meetMinute,\n            reserveTime,\n            reserveMinute,\n            addTime,\n            comment,\n            transport,\n            // payment = 'transfer',\n            payment,\n            usePoint,\n            point,\n            productInfo,\n            environment,\n            caution,\n            chooseMate,\n            mateName,\n            cardName,\n            cardNum,\n            year,\n            month,\n            installment,\n        } = this.state;\n\n        switch (currentStep) {\n            case 'items':\n                if (!service) return message.warning('서비스를 선택해주세요.');\n                if (!productId) return message.warning('서비스 상세 분류를 선택해주세요. (ex. Pro, Basic, 내시경 등)');\n\n                this.props.history.push('/reserve/basic');\n                break;\n\n            case 'basic':\n                if (!patient) return message.warning('환자분의 성함을 입력해주세요.');\n                if (!sex) return message.warning('환자분의 성별을 입력해주세요.');\n                // if (!contact) return message.warning('환자분의 연락처를 입력해주세요.');\n                if (!age) return message.warning('환자분의 나이를 입력해주세요.');\n                if (!relate) return message.warning('환자분과의 관계를 선택해주세요.');\n                if (!guardContact) return message.warning('보호자님의 연락처를 확인해주세요.');\n                if (!destination) return message.warning('도착지를 검색 및 설정해주세요.');\n                if (service === 'unemergency' && !starting) return message.warning('출발지를 검색 및 설정해주세요.');\n\n                this.props.history.push('/reserve/form');\n                break;\n\n            case 'form':\n                if (!reserveDate) return message.warning('진료 예약일을 설정해주세요.');\n                if (!reserveTime || !reserveMinute) return message.warning('진료 예약 시간을 설정해주세요.');\n                if (service === 'unemergency' && (!meetTime || !meetMinute)) return message.warning('동행인의 출발지 도착 희망 시간을 설정해주세요.');\n                if (!addTime) return message.warning('예상 소요 시간을 입력해주세요.');\n                if (recommenderContact && !celluarValidate(recommenderContact))\n                    return message.warning('추천인 연락처를 올바르게 입력해주세요. (ex. 01012341243');\n                if ((recommenderContact && !recommender) || (recommender && !recommenderContact)) return message.warning('추천인 정보를 마저 입력해주세요.');\n\n                this.props.history.push('/reserve/confirm');\n                break;\n\n            case 'confirm':\n                // 여기서 결제해야함\n                const userId = localStorage.getItem('id');\n                if (!userId) return null;\n\n                const _transport = transport && transport === 'own' ? 20000 : 0;\n                const _service =\n                    productInfo &&\n                    service &&\n                    (service === 'unemergency' ? productInfo.proPrice : productInfo.basicPrice ? productInfo.basicPrice : 0) * addTime;\n                const discount = service === 'unemergency' ? productInfo.proDiscount || 0 : productInfo.basicDiscount || 0;\n                const totalFee = _transport + _service - discount;\n\n                if (service === 'unemergency' && !transport) return message.warning('이동 수단을 선택해주세요.');\n                if (usePoint > point) return message.warning('잔여 포인트보다 사용하고자 하는 포인트가 더 높습니다.');\n                if (usePoint > totalFee) return message.warning('사용하고자 하는 포인트가 예상 결제금액보다 높습니다.');\n\n                const info = {\n                    shortStarting,\n                    destination,\n                    shortDestination,\n                    comment,\n                    service,\n                    addTime,\n                    starting,\n                    contact,\n                    guardContact,\n                    reserveDate: combineDateAndTime({ date: reserveDate, time: reserveTime, minute: reserveMinute }),\n                    meetDate: combineDateAndTime({ date: reserveDate, time: meetTime, minute: meetMinute }),\n                    patient,\n                    relate,\n                    payment,\n                    sex,\n                    age,\n                    transport,\n                    recommender,\n                    recommenderContact,\n                    product: productId,\n                    usingPoint: usePoint,\n                    mateGender,\n                    environment,\n                    caution,\n                    chooseMate,\n                    mateName,\n                    cardName,\n                    cardNum,\n                    year,\n                    month,\n                    installment,\n                };\n\n                axios\n                    .post('/v2/service/reserve/new', { info, userId })\n                    .then(async resolve => {\n                        const { data } = resolve;\n                        if (!data) message.error('죄송합니다 요청에 실패하였습니다. 잠시 후 다시 시도해주세요.');\n                        if (data === 'check parameters') return message.warning('입력하지 않은 정보가 있는지 다시 한번 확인해주세요.');\n                        if (data === 'invalid user') return message.warning('세션이 만료되었습니다. 재 로그인 후 다시 시도해주세요.');\n                        if (data === 'invalid product')\n                            return message.warning('죄송합니다. 선택하신 서비스가 더이상 지원하지 않는 서비스입니다. 다른 서비스를 이용해주세요.');\n\n                        if (data === 'success') {\n                            // 사용자 연락처 갱신\n                            // await axios.post('/v1/user/modify/info', { id: userId, userType: 'user', info: { contact: guardContact } });\n\n                            message.success('동행 서비스 요청 완료');\n                            this.props.history.push('/reserve/done');\n                        }\n                    })\n                    .catch(error => {\n                        message.error('죄송합니다 요청에 실패하였습니다. 잠시 후 다시 시도해주세요.');\n                    });\n                break;\n        }\n    };\n\n    stepHandler2 = () => {\n        const { step: currentStep, service, productId, shortStarting, shortDestination, recommender = '', recommenderContact = '' } = this.state;\n        const { patient, sex, contact, age, guardContact, relate, starting, destination, mateId } = this.state;\n        const {\n            mateGender,\n            reserveDate,\n            meetTime,\n            meetMinute,\n            reserveTime,\n            reserveMinute,\n            addTime,\n            comment,\n            transport,\n            // payment = 'transfer',\n            payment,\n            usePoint,\n            point,\n            productInfo,\n            environment,\n            caution,\n            chooseMate,\n            mateName,\n        } = this.state;\n\n        switch (currentStep) {\n            case 'items':\n                if (!service) return message.warning('서비스를 선택해주세요.');\n                if (!productId) return message.warning('서비스 상세 분류를 선택해주세요. (ex. Pro, Basic, 내시경 등)');\n\n                this.props.history.push('/reserve/basic');\n                break;\n\n            case 'basic':\n                if (!patient) return message.warning('환자분의 성함을 입력해주세요.');\n                if (!sex) return message.warning('환자분의 성별을 입력해주세요.');\n                // if (!contact) return message.warning('환자분의 연락처를 입력해주세요.');\n                if (!age) return message.warning('환자분의 나이를 입력해주세요.');\n                if (!relate) return message.warning('환자분과의 관계를 선택해주세요.');\n                if (!guardContact) return message.warning('보호자님의 연락처를 확인해주세요.');\n                if (!destination) return message.warning('도착지를 검색 및 설정해주세요.');\n                if (service === 'unemergency' && !starting) return message.warning('출발지를 검색 및 설정해주세요.');\n\n                this.props.history.push('/reserve/form');\n                break;\n\n            case 'form':\n                if (!reserveDate) return message.warning('진료 예약일을 설정해주세요.');\n                if (!reserveTime || !reserveMinute) return message.warning('진료 예약 시간을 설정해주세요.');\n                if (service === 'unemergency' && (!meetTime || !meetMinute)) return message.warning('동행인의 출발지 도착 희망 시간을 설정해주세요.');\n                if (!addTime) return message.warning('예상 소요 시간을 입력해주세요.');\n                if (recommenderContact && !celluarValidate(recommenderContact))\n                    return message.warning('추천인 연락처를 올바르게 입력해주세요. (ex. 01012341243');\n                if ((recommenderContact && !recommender) || (recommender && !recommenderContact)) return message.warning('추천인 정보를 마저 입력해주세요.');\n\n                this.props.history.push('/reserve/confirm');\n                break;\n\n            case 'confirm':\n                // 여기서 결제해야함\n                const userId = localStorage.getItem('id');\n                if (!userId) return null;\n\n                const _transport = transport && transport === 'own' ? 20000 : 0;\n                const _service =\n                    productInfo &&\n                    service &&\n                    (service === 'unemergency' ? productInfo.proPrice : productInfo.basicPrice ? productInfo.basicPrice : 0) * addTime;\n                const discount = service === 'unemergency' ? productInfo.proDiscount || 0 : productInfo.basicDiscount || 0;\n                const totalFee = _transport + _service - discount;\n\n                if (service === 'unemergency' && !transport) return message.warning('이동 수단을 선택해주세요.');\n                if (usePoint > point) return message.warning('잔여 포인트보다 사용하고자 하는 포인트가 더 높습니다.');\n                if (usePoint > totalFee) return message.warning('사용하고자 하는 포인트가 예상 결제금액보다 높습니다.');\n\n                const info = {\n                    shortStarting,\n                    destination,\n                    shortDestination,\n                    comment,\n                    service,\n                    addTime,\n                    starting,\n                    contact,\n                    guardContact,\n                    reserveDate: combineDateAndTime({ date: reserveDate, time: reserveTime, minute: reserveMinute }),\n                    meetDate: combineDateAndTime({ date: reserveDate, time: meetTime, minute: meetMinute }),\n                    patient,\n                    relate,\n                    payment,\n                    sex,\n                    age,\n                    transport,\n                    recommender,\n                    recommenderContact,\n                    product: productId,\n                    usingPoint: usePoint,\n                    mateGender,\n                    environment,\n                    caution,\n                    chooseMate,\n                    mateId,\n                };\n\n                axios\n                    .post('/v2/service/reserve/mate/new', { info, userId, mateId })\n                    .then(async resolve => {\n                        const { data } = resolve;\n                        if (!data) message.error('죄송합니다 요청에 실패하였습니다. 잠시 후 다시 시도해주세요.');\n                        if (data === 'check parameters') return message.warning('입력하지 않은 정보가 있는지 다시 한번 확인해주세요.');\n                        if (data === 'invalid user') return message.warning('세션이 만료되었습니다. 재 로그인 후 다시 시도해주세요.');\n                        if (data === 'invalid product')\n                            return message.warning('죄송합니다. 선택하신 서비스가 더이상 지원하지 않는 서비스입니다. 다른 서비스를 이용해주세요.');\n\n                        if (data === 'success') {\n                            message.success('동행 서비스 요청 완료');\n                            this.props.history.push('/reserve/done');\n                        }\n                    })\n                    .catch(error => {\n                        message.error('죄송합니다 요청에 실패하였습니다. 잠시 후 다시 시도해주세요.');\n                    });\n                break;\n        }\n    };\n\n    prevStep = () => {\n        this.props.history.goBack();\n    };\n\n    handleChange = e => {\n        const type = e.target.name;\n        const value = e.target.value;\n\n        this.setState({ [type]: value });\n    };\n\n    patientProfileListModalOff = () => {\n        this.setState({\n            patientProfileListModal: false,\n        });\n    };\n\n    mateListModalOff = () => {\n        this.setState({\n            mateListModal: false,\n        });\n    };\n\n    cardListModalOff = () => {\n        this.setState({\n            cardListModal: false,\n        });\n    };\n\n    onUpdatePatient = data => {\n        this.setState({\n            patient: data.name,\n            age: data.age,\n            contact: data.contact,\n            relate: data.relate,\n            sex: data.sex,\n            starting: data.starting,\n            environment: data.environment,\n            caution: data.caution,\n        });\n    };\n\n    onUpdateMate = data => {\n        this.setState({\n            mateName: data.name,\n            mateContact: data.contact,\n            mateId: data._id,\n        });\n    };\n\n    onUpdateCard = data => {\n        this.setState({\n            cardName: data.cardName,\n            cardNum: data.cardNum,\n            year: data.year,\n            month: data.month,\n        });\n    };\n\n    render() {\n        const { step, big5, local, corpBy, zzz, alzhe, productId = '', productInfo, service, isZzz = false, isAlzhe = false, mateName } = this.state;\n        // console.log(this.state)\n        return (\n            <ReservePageContainer>\n                <ReserveTopCover isMain={step === 'items'}>\n                    <BannerSection isMain={step === 'items'} />\n                    {step === 'items' && (\n                        <NextGuider\n                            color={'#ffffff'}\n                            emoj={'/assets/images/guide_step_1.png'}\n                            title={\n                                <>\n                                    먼저, 원하시는 <MobileBr />\n                                    서비스 종류를 선택하세요!\n                                </>\n                            }\n                        />\n                    )}\n                </ReserveTopCover>\n                {step && step !== 'items' && <StepSection step={step} />}\n                {step === 'items' && (\n                    <>\n                        <ServiceSection\n                            bg='/assets/images/artwork_right_bg.png'\n                            mobileBg='#ffffff'\n                            title='대형병원 동행 서비스'\n                            description='대형병원에 방문하는 분들을 위한 서비스입니다.'\n                        >\n                            <ServiceCardList>\n                                {big5 &&\n                                    big5.length > 0 &&\n                                    big5.map((product, index) => (\n                                        <Card\n                                            key={'big5-item-' + index.toString()}\n                                            source={product.logo}\n                                            selected={product.id === productId ? 'selected' : ''}\n                                            onSelect={() => {\n                                                this.onSelectService(product);\n                                            }}\n                                        />\n                                    ))}\n                            </ServiceCardList>\n                        </ServiceSection>\n                        <ServiceSection\n                            mobileBg='#f2f2f2'\n                            title='지역별 병원 동행 서비스'\n                            description={\n                                <>\n                                    대형병원을 제외한 각 지역별 병원에 <MobileBr /> 방문하는 분들을 위한 서비스입니다.\n                                </>\n                            }\n                        >\n                            <ServiceCardList>\n                                {local &&\n                                    local.length > 0 &&\n                                    local.map((product, index) => (\n                                        <Card\n                                            key={'local-item-' + index.toString()}\n                                            source={product.logo}\n                                            selected={product.id === productId ? 'selected' : ''}\n                                            onSelect={() => {\n                                                this.onSelectService(product);\n                                            }}\n                                        />\n                                    ))}\n                            </ServiceCardList>\n                        </ServiceSection>\n                        {/* <ServiceSection\n                            bg='/assets/images/artwork_left_bg.png'\n                            mobileBg='#ffffff'\n                            title='기업 기관별 동행 서비스'\n                            description={\n                                <>\n                                    위드메이트와 협업 중인 <MobileBr /> 기업 및 기관을 위한 접수 창구입니다\n                                </>\n                            }\n                        >\n                            <ServiceCardList>\n                                {corpBy &&\n                                    corpBy.length > 0 &&\n                                    corpBy.map((product, index) => (\n                                        <Card\n                                            key={'corpBy-item-' + index.toString()}\n                                            source={product.logo}\n                                            selected={product.id === productId ? 'selected' : ''}\n                                            onSelect={() => {\n                                                this.onSelectService(product);\n                                            }}\n                                        />\n                                    ))}\n                            </ServiceCardList>\n                        </ServiceSection> */}\n                        {/* <ZzzService\n                            selected={zzz.length === 0 ? '' : zzz[0].id === productId ? 'selected' : ''}\n                            onSelect={() => {\n                                if (zzz.length === 0) return message.warning('운영중인 내시경 보호자 서비스가 없습니다.');\n\n                                const z_one = zzz[0];\n                                this.setState({ productId: z_one.id, productInfo: z_one, isZzz: true }, this.goSecondStep);\n                            }}\n                        />\n\n                        <AlzheService\n                            selected={alzhe.length === 0 ? '' : alzhe[0].id === productId ? 'selected' : ''}\n                            onSelect={() => {\n                                if (alzhe.length === 0) return message.warning('운영중인 치매 보호자 서비스가 없습니다.');\n\n                                const a_one = alzhe[0];\n                                this.setState({ productId: a_one.id, productInfo: a_one, isAlzhe: true }, this.goSecondStep);\n                            }}\n                        /> */}\n                        {productId && (\n                            <>\n                                <NextGuider\n                                    bg\n                                    id='second-step'\n                                    emoj={'/assets/images/guide_step_2.png'}\n                                    title={\n                                        <>\n                                            이제, 원하시는 <MobileBr /> 서비스 타입을 선택하세요!\n                                        </>\n                                    }\n                                />\n                                <ServiceTypeSection bg='/assets/images/artwork_right_bg2.png' mobileBg={'#ffffff'}>\n                                    <ServiceTypeWrapper>\n                                        {productInfo.usePro && !isZzz && (\n                                            <ServiceTypeCard\n                                                emoj={'/assets/images/art_pro.png'}\n                                                name='Pro'\n                                                desc={`위드메이트 동행 전문가가 고객님 자택에서 병원까지 동행하고, 병원 업무를 마친 뒤  다시 자택까지 \n                                                동행합니다.`}\n                                                selected={service === 'unemergency' ? 'selected' : ''}\n                                                onSelect={() => {\n                                                    this.setState({ service: 'unemergency' }, this.goNextButton);\n                                                }}\n                                            />\n                                        )}\n\n                                        {productInfo.useBasic && !isZzz && (\n                                            <ServiceTypeCard\n                                                emoj={'/assets/images/art_basic.png'}\n                                                name='Basic'\n                                                desc={`위드메이트 베이직 서비스는 \n                                                위드메이트 동행 전문가가 지정한 의료 시설 혹은 병원 내에서 \n                                                보호자 대행 업무를 수행합니다.`}\n                                                selected={service === 'assist' ? 'selected' : ''}\n                                                onSelect={() => {\n                                                    this.setState({ service: 'assist' }, this.goNextButton);\n                                                }}\n                                            />\n                                        )}\n\n                                        {isZzz && (\n                                            <ServiceTypeCard\n                                                emoj={'/assets/images/art_zzz.png'}\n                                                name='내시경'\n                                                desc={`위드메이트 동행 전문가가 고객님께서 수면 내시경 검사/진료를 \n                                                받는 의료 시설에 도착한 후 \n                                                보호자 대행 업무를 수행합니다.`}\n                                                selected={service === 'assist' ? 'selected' : ''}\n                                                onSelect={() => {\n                                                    this.setState({ service: 'assist' }, this.goNextButton);\n                                                }}\n                                            />\n                                        )}\n                                    </ServiceTypeWrapper>\n                                    <NextStepButton id='fst-next-btn' on={productId && service} onClick={this.stepHandler}>\n                                        다음 단계로가기\n                                    </NextStepButton>\n                                </ServiceTypeSection>\n                            </>\n                        )}\n                    </>\n                )}\n                {/* {step === 'basic' && ( */}\n                {step === 'basic' && (\n                    <>\n                        <FormContainer>\n                            <BasicForm\n                                data={this.state}\n                                handleChange={this.handleChange}\n                                onStarting={this.onStarting}\n                                onDestination={this.onDestination}\n                                onPrevSetting={this.onPrevSetting}\n                            />\n                            <CustomButtonWrapper>\n                                <RadiusHalfWidthButton bg='#cecfd0' onClick={this.prevStep}>\n                                    이전으로\n                                </RadiusHalfWidthButton>\n                                <RadiusHalfWidthButton bg='#3bc1ff' onClick={this.stepHandler}>\n                                    다음 단계로가기\n                                </RadiusHalfWidthButton>\n                            </CustomButtonWrapper>\n                        </FormContainer>\n                    </>\n                )}\n                {/* {step === 'form' && ( */}\n                {step === 'form' && (\n                    <>\n                        <FormContainer>\n                            <MainForm data={this.state} handleChange={this.handleChange} onPrevSetting2={this.onPrevSetting2} />\n                            <CustomButtonWrapper>\n                                <RadiusHalfWidthButton bg='#cecfd0' onClick={this.prevStep}>\n                                    이전으로\n                                </RadiusHalfWidthButton>\n                                <RadiusHalfWidthButton bg='#3bc1ff' onClick={this.stepHandler}>\n                                    다음 단계로가기\n                                </RadiusHalfWidthButton>\n                            </CustomButtonWrapper>\n                        </FormContainer>\n                    </>\n                )}\n                {step === 'confirm' && (\n                    <>\n                        <FormContainer>\n                            <ConfirmForm data={this.state} handleChange={this.handleChange} onPrevSetting3={this.onPrevSetting3} onAddress={this.onAddress} />\n                            <CustomButtonWrapper>\n                                <RadiusHalfWidthButton bg='#cecfd0' onClick={this.prevStep}>\n                                    이전으로\n                                </RadiusHalfWidthButton>\n                                {mateName ? (\n                                    <>\n                                        <RadiusHalfWidthButton bg='#3bc1ff' onClick={this.stepHandler2}>\n                                            신청 완료\n                                        </RadiusHalfWidthButton>\n                                    </>\n                                ) : (\n                                    <RadiusHalfWidthButton bg='#3bc1ff' onClick={this.stepHandler}>\n                                        신청 완료하기\n                                    </RadiusHalfWidthButton>\n                                )}\n                            </CustomButtonWrapper>\n                        </FormContainer>\n                    </>\n                )}\n                {step === 'done' && (\n                    <>\n                        <FormContainer>\n                            <DoneForm data={this.state} />\n                            <LastStepButton\n                                on\n                                onClick={() => {\n                                    this.props.history.push('/user/mypage/list');\n                                }}\n                            >\n                                마이 페이지로\n                            </LastStepButton>\n                        </FormContainer>\n                    </>\n                )}\n\n                <PatientProfileListModal\n                    list={this.state.patientList}\n                    visible={this.state.patientProfileListModal}\n                    onClose={this.patientProfileListModalOff}\n                    onUpdatePatient={this.onUpdatePatient}\n                />\n\n                <MateModal list={this.state.mateList} visible={this.state.mateListModal} onClose={this.mateListModalOff} onUpdateMate={this.onUpdateMate} />\n\n                <CardListModal list={this.state.cardList} visible={this.state.cardListModal} onClose={this.cardListModalOff} onUpdateCard={this.onUpdateCard} />\n            </ReservePageContainer>\n        );\n    }\n}\n\nconst BannerSection = ({ isMain }) => (\n    <TopBannerSection isMain={isMain}>\n        {isMain && (\n            <ResrevePageInnerContainer smallPadding>\n                <TopBannerDescription>국내 최대 규모의 병원 동행 서비스 매칭 플랫폼</TopBannerDescription>\n                <TopBannerText>\n                    <span>위드메이트</span>가 함께 동행해드립니다\n                </TopBannerText>\n            </ResrevePageInnerContainer>\n        )}\n        {!isMain && (\n            <ResrevePageInnerContainer smallPadding>\n                <TopBannerText style={{ textAlign: 'left' }}>\n                    <span>\n                        위드메이트가\n                        <br />\n                        함께 동행 해드립니다\n                    </span>\n                </TopBannerText>\n                <TopBannerSubDescription>국내 최대 규모의 병원 동행 서비스 매칭 플랫폼</TopBannerSubDescription>\n            </ResrevePageInnerContainer>\n        )}\n    </TopBannerSection>\n);\n\nconst StepSection = ({ step }) => (\n    <StepSectionContainer>\n        <ResrevePageInnerContainer smallPadding>\n            <StepButtonWrapper>\n                <StepButton active={step === 'basic'}>환자 기본 정보 입력</StepButton>\n                <StepArrow src={'/assets/images/stepper.png'} alt='화살표' />\n                <StepButton active={step === 'form'}>서비스 신청 정보 입력</StepButton>\n                <StepArrow src={'/assets/images/stepper.png'} alt='화살표' />\n                <StepButton active={step === 'confirm'}>매칭 신청 확인</StepButton>\n                <StepArrow src={'/assets/images/stepper.png'} alt='화살표' />\n                <StepButton active={step === 'done'}>신청 완료</StepButton>\n            </StepButtonWrapper>\n        </ResrevePageInnerContainer>\n    </StepSectionContainer>\n);\n\nconst NextGuider = ({ id, emoj, title, color = 'rgba(0,0,0,0.7)', bg = false }) => (\n    <NextStepGudieContainer id={id} useBg={bg ? true : false}>\n        <NextStepEmoj src={emoj} alt='스텝넘버' />\n        <NextStepTitle color={color}>{title}</NextStepTitle>\n        <NextStepArrowDown src={'/assets/images/arrowDown.png'} alt='아래로' />\n    </NextStepGudieContainer>\n);\n\nconst ServiceSection = ({ title, description, bg, mBg, children }) => {\n    return (\n        <ServiceSectionContainer>\n            <ResrevePageInnerContainer bg={bg} mobileBg={mBg}>\n                <ServiceSectionTitle>{title}</ServiceSectionTitle>\n                <ServiceSectionDescription>{description}</ServiceSectionDescription>\n                {children}\n            </ResrevePageInnerContainer>\n        </ServiceSectionContainer>\n    );\n};\n\nconst Card = ({ source, onSelect, selected }) => (\n    <ServiceCardWrapper on={selected || ''}>\n        <img src={source} alt='로고' />\n        <ServiceCardButton className={selected ? 'selected' : 'none-selected'} onClick={onSelect}>\n            선택\n        </ServiceCardButton>\n    </ServiceCardWrapper>\n);\n\nconst ZzzService = ({ selected, onSelect }) => (\n    <ResrevePageHalfInnerContainer>\n        <ZzzServiceWrapper>\n            <ZzzArt src='/assets/images/art_zzz.png' />\n            <ServiceSectionTitle>수면 내시경 보호자 서비스</ServiceSectionTitle>\n            <ZzzDescription>\n                {' '}\n                수면 내시경 검사 시 <MobileBr />\n                보호자를 대행하는 서비스입니다.\n            </ZzzDescription>\n            <ServiceSectionDescription>\n                수면 내시경 검사가 끝날 때까지 <b>병원 안에서</b>\n                <MobileBr /> 고객님의 보호자 대행 업무를 수행합니다.\n                <DesktopBr />\n                <MobileBr />\n                <MobileBr />\n                <b>서울/경기(일부)</b>에서만 서비스가 제공됩니다.\n                <DesktopBr />\n                <MobileBr />\n            </ServiceSectionDescription>\n            <ServiceCardButton className={selected ? 'selected' : 'none-selected'} onClick={onSelect}>\n                선택\n            </ServiceCardButton>\n        </ZzzServiceWrapper>\n    </ResrevePageHalfInnerContainer>\n);\n\nconst AlzheService = () => (\n    <ResrevePageHalfInnerContainer>\n        <AlzheServiceWrapper>\n            <AlzheArt src='/assets/images/art_alzhe.jpg' />\n            <ServiceSectionTitle>치매 동행 서비스 (beta)</ServiceSectionTitle>\n            <AlzheDescription>\n                메이트가 치매 환자분의 집-병원 간 <MobileBr /> 모든 여정을 함께하는 서비스입니다.\n            </AlzheDescription>\n            <ServiceSectionDescription>\n                <b>치매 환자 전문</b> 메이트를 포함하여 <MobileBr /> 2인의 메이트가 배정됩니다.\n                <DesktopBr />\n                <MobileBr />\n                <MobileBr />\n                메이트(<b>2인</b>)-환자 간 매칭이 완료되지 않으면\n                <MobileBr /> 서비스가 제공되지 않는 점 양해바랍니다.\n                <MobileBr />\n                <DesktopBr />\n                <MobileBr />\n                <b>전화</b>로만 서비스 예약을 하실 수 있습니다.\n            </ServiceSectionDescription>\n            <ServiceCardButton\n                onClick={() => {\n                    swal.fire({\n                        title: '위드메이트 고객센터',\n                        text: '☎ 070-4300-9075',\n                        icon: 'info',\n                        confirmButtonText: '전화걸기',\n                        cancelButtonText: '확인',\n                        showCancelButton: true,\n                    }).then(result => {\n                        if (result.isConfirmed) {\n                            document.location.href = 'tel:070-4300-9075';\n                        }\n                    });\n                }}\n            >\n                전화 상담하기\n            </ServiceCardButton>\n        </AlzheServiceWrapper>\n    </ResrevePageHalfInnerContainer>\n);\n\nconst ServiceTypeSection = ({ bg, mobileBg, children }) => (\n    <ServiceTypeSectionContainer bg={bg} mBg={mobileBg} gap>\n        {children}\n    </ServiceTypeSectionContainer>\n);\n\nconst ServiceTypeCard = ({ emoj, name, desc, selected, onSelect }) => (\n    <ServiceTypeCardWrapper selected={selected || ''}>\n        <ServiceTypeCardImg src={emoj} alt='type' />\n        <ServiceTypeName>{name}</ServiceTypeName>\n        <ServiceTypeDescription>{desc}</ServiceTypeDescription>\n        <ServiceCardButton onClick={onSelect} className={selected ? 'selected' : 'none-selected'}>\n            선택\n        </ServiceCardButton>\n    </ServiceTypeCardWrapper>\n);\n\nconst BasicForm = ({ data, handleChange, onStarting, onDestination, onPrevSetting }) => {\n    const { productInfo, service, patient, contact, sex, age, relate, guardContact = '', starting, destination } = data;\n    return (\n        <FormWrapper>\n            <FormMainTitle>좋아요! 매칭 신청을 시작해볼까요?</FormMainTitle>\n\n            <DivisionLine big />\n\n            <WithmateLabel>선택하신 서비스</WithmateLabel>\n\n            <ServiceName>\n                {productInfo.name} {productInfo.name.includes('내시경') ? '' : service === 'unemergency' ? 'Pro' : 'Basic'}\n            </ServiceName>\n\n            <DivisionLine big />\n\n            <FlexWrapper style={{ justifyContent: 'space-between' }}>\n                <ServiceTypeName style={{ marginTop: '0px', marginBottom: '0px' }}>환자 정보 입력</ServiceTypeName>\n            </FlexWrapper>\n\n            <div style={{ textAlign: 'right' }}>\n                <Label style={{ color: 'gray', fontSize: '11px' }}>* 등록하신 환자프로필 정보를 가져와 편리하게 예약하실 수 있습니다.</Label>\n                <br />\n                <UnderLineText onClick={onPrevSetting}>환자 프로필 불러오기</UnderLineText>\n            </div>\n\n            <DivisionLine />\n\n            <FlexWrapper withHalf>\n                <div style={{ flex: 1 }}>\n                    <WithmateLabel required>환자 성함</WithmateLabel>\n                    <WithmateInput type='text' placeholder='홍길동' maxLength='24' name='patient' value={patient || null} onChange={handleChange} />\n                </div>\n                <div style={{ flex: 1 }}>\n                    <WithmateLabel required>환자 나이</WithmateLabel>\n                    <WithmateInput type='text' maxLength='2' placeholder='50' name='age' suffix='세' value={age || null} onChange={handleChange} />\n                </div>\n            </FlexWrapper>\n\n            <DivisionLine big />\n\n            <FlexWrapper withHalf>\n                {productInfo.name.includes('내시경') ? null : (\n                    <div style={{ flex: 1 }}>\n                        <WithmateLabel required>환자 연락처</WithmateLabel>\n                        <WithmateInput\n                            type='text'\n                            maxLength='11'\n                            placeholder='ex) 01029791234'\n                            name='contact'\n                            value={contact || null}\n                            onChange={handleChange}\n                        />\n                    </div>\n                )}\n                <div style={{ flex: 1 }}>\n                    <WithmateLabel required>환자 성별</WithmateLabel>\n                    <Sexes>\n                        <span\n                            className={sex === '남자' ? 'active' : 'inactive'}\n                            onClick={() => {\n                                handleChange({ target: { name: 'sex', value: '남자' } });\n                            }}\n                        >\n                            남성\n                        </span>\n                        <span\n                            className={sex === '여자' ? 'active' : 'inactive'}\n                            onClick={() => {\n                                handleChange({ target: { name: 'sex', value: '여자' } });\n                            }}\n                        >\n                            여성\n                        </span>\n                    </Sexes>\n                </div>\n            </FlexWrapper>\n\n            <DivisionLine big />\n\n            <FlexWrapper withHalf>\n                <div style={{ flex: 1 }}>\n                    {productInfo.name.includes('내시경') ? (\n                        <>\n                            <WithmateLabel required>서비스 신청인 연락처</WithmateLabel>\n                            <WithmateInput\n                                type='text'\n                                maxLength='11'\n                                placeholder='서비스를 제공받으실 분의 연락처를 입력하세요.'\n                                name='guardContact'\n                                value={guardContact || null}\n                                onChange={handleChange}\n                            />\n                        </>\n                    ) : (\n                        <>\n                            <WithmateLabel required>보호자 연락처</WithmateLabel>\n                            <WithmateInput\n                                type='text'\n                                maxLength='11'\n                                placeholder='ex) 01029791234'\n                                name='guardContact'\n                                value={guardContact || null}\n                                onChange={handleChange}\n                            />\n                        </>\n                    )}\n                </div>\n                <div style={{ flex: 1 }}>\n                    <WithmateLabel required>환자와의 관계</WithmateLabel>\n                    <WithmateSelect\n                        placeholder='본인'\n                        value={relate || undefined}\n                        onChange={value => {\n                            handleChange({ target: { name: 'relate', value } });\n                        }}\n                    >\n                        <Select.Option value='본인'>본인</Select.Option>\n                        <Select.Option value='부모'>부모</Select.Option>\n                        <Select.Option value='자매'>자매</Select.Option>\n                        <Select.Option value='친구'>친구</Select.Option>\n                        <Select.Option value='지인'>지인</Select.Option>\n                        <Select.Option value='기타'>기타</Select.Option>\n                    </WithmateSelect>\n                </div>\n            </FlexWrapper>\n\n            <DivisionLine big />\n\n            <WithmateLabel required>목적지 주소 (방문 병원 위치)</WithmateLabel>\n            <WithamteInputWithButton\n                inputConfig={{\n                    type: 'text',\n                    placeholder: 'ex) 서울특별시 강남 을지병원',\n                    name: 'destination',\n                    disabled: true,\n                    value: destination || null,\n                }}\n                buttonName='검색'\n                onButton={() => {\n                    if (productInfo.reservedDestination) return message.info('목적지가 고정된 서비스입니다.');\n                    else onDestination();\n                }}\n            />\n\n            <DivisionLine big />\n            {service === 'unemergency' && (\n                <>\n                    <WithmateLabel required>출발지 주소 (자택, 터미널, 역, 입원 병원 등)</WithmateLabel>\n                    <WithamteInputWithButton\n                        inputConfig={{\n                            type: 'text',\n                            placeholder: 'ex) 서울특별시 서초대로  30, ABC아파트',\n                            name: 'starting',\n                            disabled: true,\n                            value: starting || null,\n                        }}\n                        buttonName='검색'\n                        onButton={() => {\n                            if (productInfo.reservedStarting) return message.info('출발지가 고정된 서비스입니다.');\n                            else onStarting();\n                        }}\n                    />\n\n                    <DivisionLine big />\n                </>\n            )}\n\n            <MobileStepImage>\n                <img src={service === 'unemergency' ? '/assets/images/art_pro.png' : '/assets/images/art_basic.png'} alt='스텝이미지' />\n            </MobileStepImage>\n        </FormWrapper>\n    );\n};\n\nconst MainForm = ({ data, handleChange, onPrevSetting2 }) => {\n    const {\n        productInfo,\n        service,\n        addTime,\n        reserveDate,\n        reserveTime,\n        reserveMinute,\n        meetTime,\n        meetMinute,\n        mateGender,\n        comment,\n        recommender,\n        recommenderContact,\n        environment,\n        caution,\n        chooseMate,\n        mateName,\n        mateContact,\n    } = data;\n    const time = !reserveTime ? 9 : moment(reserveTime).get('hour');\n    let allowedAddTimes = 18 - parseInt(time, 10) > 0 ? 18 - parseInt(time, 10) : 0;\n\n    return (\n        <FormWrapper>\n            <FormMainTitle>이것만 하면 매칭 신청이 끝나요!</FormMainTitle>\n            <DivisionLine x_small />\n\n            <WithmateLabel>선택하신 서비스</WithmateLabel>\n            <ServiceName>\n                {productInfo.name} {productInfo.name.includes('내시경') ? '' : service === 'unemergency' ? 'Pro' : 'Basic'}\n            </ServiceName>\n\n            <ServiceTypeName style={{ marginTop: '0px', marginBottom: '0px' }}>병원 정보 입력</ServiceTypeName>\n            <DivisionLine />\n\n            <WithmateLabel required>동행 인력 희망 성별</WithmateLabel>\n            <Sexes>\n                <span\n                    className={!mateGender ? 'active' : 'inactive'}\n                    onClick={() => {\n                        handleChange({ target: { name: 'mateGender', value: '' } });\n                    }}\n                >\n                    상관없음\n                </span>\n                <span\n                    className={mateGender === '남' ? 'active' : 'inactive'}\n                    onClick={() => {\n                        handleChange({ target: { name: 'mateGender', value: '남' } });\n                    }}\n                >\n                    남성\n                </span>\n                <span\n                    className={mateGender === '녀' ? 'active' : 'inactive'}\n                    onClick={() => {\n                        handleChange({ target: { name: 'mateGender', value: '녀' } });\n                    }}\n                >\n                    여성\n                </span>\n            </Sexes>\n            <DivisionLine big />\n\n            <WithmateLabel required>\n                메이트 선택\n                {/* <LabelDescription>(선택하신 메이트님과 상의가 되신 경우에만 가능합니다.)</LabelDescription> */}\n                <LabelDescription>(이전에 동행한 메이트 중에서 선택할 수 있습니다.)</LabelDescription>\n            </WithmateLabel>\n            <Sexes>\n                <span\n                    className={chooseMate === '예' ? 'active' : 'inactive'}\n                    onClick={() => {\n                        handleChange({ target: { name: 'chooseMate', value: '예' } });\n                    }}\n                >\n                    예\n                </span>\n                <span\n                    className={chooseMate === '아니오' ? 'active' : 'inactive'}\n                    onClick={() => {\n                        handleChange({ target: { name: 'chooseMate', value: '아니오' } });\n                    }}\n                >\n                    아니오\n                </span>\n            </Sexes>\n            <DivisionLine small />\n\n            {chooseMate === '아니오' ? null : (\n                <>\n                    <FlexWrapper withHalf>\n                        <div style={{ flex: 3 }}>\n                            <WithmateInput\n                                allowClear\n                                readonly='readonly'\n                                type='text'\n                                name='mateName'\n                                value={mateName || null}\n                                onChange={ev => {\n                                    handleChange({ target: { name: 'mateName', value: ev.target.value } });\n                                }}\n                            />\n                        </div>\n                        <div style={{ flex: 1 }}>\n                            <Button onClick={onPrevSetting2} style={{ height: '46px' }}>\n                                메이트 목록 불러오기\n                            </Button>\n                        </div>\n                    </FlexWrapper>\n                    <DivisionLine big />\n                </>\n            )}\n\n            <WithmateLabel required>진료 예약일</WithmateLabel>\n            <WithmateDatePicker\n                locale={locale}\n                placeholder='진료 예약일을 설정해주세요.'\n                disabledDate={current =>\n                    current < moment().add(0, 'day') ||\n                    current.get('day') === 0 ||\n                    current.get('day') === 6 ||\n                    holidayKR.isSolarHoliday(moment(current).toDate())\n                }\n                inputReadOnly\n                value={reserveDate || undefined}\n                name='reserveDate'\n                onChange={date => {\n                    handleChange({ target: { name: 'reserveDate', value: date } });\n                }}\n            />\n            <DivisionLine big />\n\n            <>\n                {service === 'unemergency' && (\n                    <WithmateLabel required>\n                        동행인의 출발지 도착 희망 시간 <LabelDescription>(자택, 터미널, 역, 입원 병원 등)</LabelDescription>\n                    </WithmateLabel>\n                )}\n                {service === 'assist' && (\n                    <WithmateLabel required>\n                        동행인의 병원 도착 희망 시간 <LabelDescription>(진료 병원, 입원 병원 등)</LabelDescription>\n                    </WithmateLabel>\n                )}\n                <FlexWrapper withHalf>\n                    <div style={{ flex: 1 }}>\n                        <WithmateInput\n                            placeholder='13'\n                            name='meetTime'\n                            maxLength={2}\n                            value={meetTime || undefined}\n                            onChange={ev => {\n                                if (ev.target.value.length > 2) return null;\n                                if (ev.target.value && parseInt(ev.target.value) > 24) return null;\n\n                                handleChange({ target: { name: 'meetTime', value: ev.target.value } });\n                            }}\n                        />\n                    </div>\n                    <div style={{ flex: 1 }}>\n                        <WithmateInput\n                            placeholder='30'\n                            name='meetMinute'\n                            maxLength={2}\n                            value={meetMinute || undefined}\n                            onChange={ev => {\n                                if (ev.target.value.length > 2) return null;\n                                if (ev.target.value && parseInt(ev.target.value) > 59) return null;\n\n                                handleChange({ target: { name: 'meetMinute', value: ev.target.value } });\n                            }}\n                        />\n                    </div>\n                </FlexWrapper>\n                <DivisionLine big />\n            </>\n            {/* {service === 'unemergency' && (\n            )} */}\n\n            <WithmateLabel required>방문병원 진료 예약 시간</WithmateLabel>\n            <FlexWrapper withHalf>\n                <div style={{ flex: 1 }}>\n                    <WithmateInput\n                        placeholder='13'\n                        name='reserveTime'\n                        maxLength={2}\n                        value={reserveTime || undefined}\n                        onChange={ev => {\n                            if (ev.target.value.length > 2) return null;\n                            if (ev.target.value && parseInt(ev.target.value) > 24) return null;\n\n                            handleChange({ target: { name: 'reserveTime', value: ev.target.value } });\n                        }}\n                    />\n                </div>\n                <div style={{ flex: 1 }}>\n                    <WithmateInput\n                        placeholder='30'\n                        name='reserveMinute'\n                        maxLength={2}\n                        value={reserveMinute || undefined}\n                        onChange={ev => {\n                            if (ev.target.value.length > 2) return null;\n                            if (ev.target.value && parseInt(ev.target.value) > 59) return null;\n\n                            handleChange({ target: { name: 'reserveMinute', value: ev.target.value } });\n                        }}\n                    />\n                </div>\n            </FlexWrapper>\n\n            <DivisionLine big />\n\n            <WithmateLabel required>예상 소요 시간</WithmateLabel>\n            <WithmateSelect\n                placeholder='예상 소요 시간을 선택해주세요.'\n                value={\n                    addTime\n                        ? meetTime && meetMinute\n                            ? `${addTime}시간 (${parseInt(meetTime, 10) + parseInt(addTime, 10)}시 ${meetMinute}분 서비스 종료 예정)`\n                            : addTime\n                        : addTime\n                }\n                onChange={val => {\n                    handleChange({ target: { name: 'addTime', value: val } });\n                }}\n            >\n                {new Array(9).fill(0).map((hour, index) => {\n                    return (\n                        <Select.Option key={'hour-row-' + index.toString()} value={index + 1}>\n                            {index + 1}시간\n                        </Select.Option>\n                    );\n                })}\n            </WithmateSelect>\n            <DivisionLine big />\n\n            <WithmateLabel required>외출하실 때 '꼭' 계단을 이용하셔야 하나요?</WithmateLabel>\n            <Radio\n                checked={environment === '네'}\n                onClick={() => {\n                    handleChange({ target: { name: 'environment', value: '네' } });\n                }}\n            >\n                네\n            </Radio>\n            <Radio\n                checked={environment === '아니요, 엘레베이터가 있어요'}\n                onClick={() => {\n                    handleChange({ target: { name: 'environment', value: '아니요, 엘레베이터가 있어요' } });\n                }}\n            >\n                아니요, 엘레베이터가 있어요\n            </Radio>\n            <Radio\n                checked={environment === '1층이라 괜찮아요'}\n                onClick={() => {\n                    handleChange({ target: { name: 'environment', value: '1층이라 괜찮아요' } });\n                }}\n            >\n                1층이라 괜찮아요\n            </Radio>\n            <DivisionLine />\n\n            <DivisionLine />\n\n            <WithmateLabel required>메이트가 동행할 때 주의해야 할 점이 있을까요?</WithmateLabel>\n            <WithmateInput\n                type='text'\n                placeholder='동행시 주의사항을 입력하세요.'\n                value={caution || ''}\n                onChange={ev => {\n                    handleChange({ target: { name: 'caution', value: ev.target.value } });\n                }}\n            />\n            <Checkbox\n                checked={caution === '없어요'}\n                onClick={() => {\n                    handleChange({ target: { name: 'caution', value: '없어요' } });\n                }}\n            >\n                없어요\n            </Checkbox>\n\n            <DivisionLine />\n\n            <WithmateLabel>기타 요청 및 전달 사항</WithmateLabel>\n            <WithmateTextarea\n                type='text'\n                middle='true'\n                placeholder={`그 외에, \"정형외과에 갑니다\", \"안마 의자 사용이 가능한지 물어봐주세요\", \"다음 예약 일정을 꼭 잡아주세요\" 등 메이트님께 요청 및 전달하는 사항을 입력해주세요.`}\n                name='comment'\n                value={comment || null}\n                onChange={handleChange}\n            />\n            <DivisionLine />\n\n            <FlexWrapper withHalf>\n                <div style={{ flex: 1 }}>\n                    <WithmateLabel>추천인 성함</WithmateLabel>\n                    <WithmateInput type='text' placeholder='홍길동' maxLength={24} name='recommender' onChange={handleChange} value={recommender || null} />\n                </div>\n                <div style={{ flex: 1 }}>\n                    <WithmateLabel>추천인 전화번호</WithmateLabel>\n                    <WithmateInput\n                        type='text'\n                        maxLength={11}\n                        placeholder='ex) 01029701234'\n                        name='recommenderContact'\n                        onChange={handleChange}\n                        value={recommenderContact || null}\n                    />\n                </div>\n            </FlexWrapper>\n\n            <MobileStepImage>\n                <img src={service === 'unemergency' ? '/assets/images/art_pro.png' : '/assets/images/art_basic.png'} alt='스텝이미지' />\n            </MobileStepImage>\n        </FormWrapper>\n    );\n};\n\nconst ConfirmForm = ({ data, handleChange, onAddress, onPrevSetting3 }) => {\n    const { productInfo, service, patient, contact, sex, age, relate, guardContact = '', starting, destination, environment, caution } = data;\n    const { addTime, usePoint, reserveDate, transport, reserveTime, meetTime, mateGender, comment, reserveMinute, meetMinute, mateName, connection } = data;\n    const { cardName, cardNum, year, month, installment } = data;\n\n    const _transport = transport && transport === 'own' ? 20000 : 0;\n    const _service =\n        productInfo && service && (service === 'unemergency' ? productInfo.proPrice : productInfo.basicPrice ? productInfo.basicPrice : 0) * addTime;\n\n    const _point = !usePoint ? 0 : parseInt(usePoint, 10) * -1;\n    const discount = service === 'unemergency' ? productInfo.proDiscount || 0 : productInfo.basicDiscount || 0;\n    const totalFee = _transport + _service + _point - discount;\n\n    return (\n        <FlexFormWrapper>\n            <FormWrapper>\n                <FormMainTitle>매칭 신청 내역을 알려드릴게요!</FormMainTitle>\n                <DivisionLine x_small />\n                <WithmateLabel>선택하신 서비스</WithmateLabel>\n                <ServiceName>\n                    {productInfo.name} {productInfo.name.includes('내시경') ? '' : service === 'unemergency' ? 'Pro' : 'Basic'}\n                </ServiceName>\n\n                <LabelValue style={{ marginTop: '0px', marginBottom: '0px' }}>신청 내역</LabelValue>\n                <DivisionLine />\n\n                <FlexWrapper withHalf>\n                    <div style={{ flex: 1 }}>\n                        <WithmateLabel required>환자 성함</WithmateLabel>\n                        <WithmateInput type='text' placeholder='' maxLength='24' name='patient' value={patient || null} disabled />\n                    </div>\n                    <div style={{ flex: 1 }}>\n                        <WithmateLabel required>환자 나이</WithmateLabel>\n                        <WithmateInput type='text' maxLength='2' placeholder='50' name='age' suffix='세' value={age || null} disabled />\n                    </div>\n                </FlexWrapper>\n\n                <DivisionLine big />\n\n                <FlexWrapper withHalf>\n                    {productInfo.name.includes('내시경') ? null : (\n                        <div style={{ flex: 1 }}>\n                            <WithmateLabel required>환자 연락처</WithmateLabel>\n                            <WithmateInput type='text' placeholder='' maxLength='11' name='contact' value={contact || null} disabled />\n                        </div>\n                    )}\n                </FlexWrapper>\n\n                <DivisionLine big />\n                <FlexWrapper withHalf>\n                    <div style={{ flex: 1 }}>\n                        <WithmateLabel required>보호자 연락처</WithmateLabel>\n                        <WithmateInput type='text' placeholder='' maxLength='11' name='guardContact' value={guardContact || null} disabled />\n                    </div>\n                    <div style={{ flex: 1 }}>\n                        <WithmateLabel required>환자와의 관계</WithmateLabel>\n                        <WithmateInput type='text' placeholder='50' name='relate' value={relate || null} disabled />\n                    </div>\n                </FlexWrapper>\n\n                <DivisionLine big />\n\n                <FlexWrapper withHalf>\n                    <div style={{ flex: 1 }}>\n                        <WithmateLabel required>환자 성별</WithmateLabel>\n                        <WithmateInput type='text' placeholder='' name='sex' value={sex || null} disabled />\n                    </div>\n                    <div style={{ flex: 1 }}>\n                        <WithmateLabel required>동행 인력 희망 성별</WithmateLabel>\n                        <WithmateInput type='text' placeholder='50' name='mateGender' value={mateGender || '상관 없음'} disabled />\n                    </div>\n                </FlexWrapper>\n\n                <DivisionLine big />\n\n                <FlexWrapper withHalf>\n                    <WithmateLabel required>선택된 메이트</WithmateLabel>\n                    <WithmateInput type='text' name='mateName' value={mateName || '선택 안함'} disabled />\n                </FlexWrapper>\n\n                <DivisionLine big />\n\n                <WithmateLabel required>목적지 주소 (방문 병원 위치)</WithmateLabel>\n                <WithmateInput type='text' placeholder='' name='destination' value={destination || null} disabled />\n\n                <DivisionLine big />\n                {service === 'unemergency' && (\n                    <>\n                        <WithmateLabel required>출발지 주소 (자택, 터미널, 역, 입원 병원 등)</WithmateLabel>\n                        <WithmateInput type='text' placeholder='' name='starting' value={starting || null} disabled />\n\n                        <DivisionLine big />\n                    </>\n                )}\n\n                <WithmateLabel required>진료 일정</WithmateLabel>\n                <WithmateInput\n                    type='text'\n                    placeholder=''\n                    maxLength={24}\n                    name='reserveDate'\n                    value={moment(combineDateAndTime({ date: reserveDate, time: reserveTime, minute: reserveMinute })).format('YYYY-MM-DD HH시 mm분') || null}\n                    disabled\n                />\n\n                <DivisionLine big />\n\n                {service === 'unemergency' && (\n                    <WithmateLabel required>\n                        동행인의 출발지 도착 희망 시간 <LabelDescription>(자택, 터미널, 역, 입원 병원 등)</LabelDescription>\n                    </WithmateLabel>\n                )}\n                {service === 'assist' && (\n                    <WithmateLabel required>\n                        동행인의 병원 도착 희망 시간 <LabelDescription>(진료 병원, 입원 병원 등)</LabelDescription>\n                    </WithmateLabel>\n                )}\n                <WithmateInput\n                    type='text'\n                    placeholder=''\n                    maxLength={24}\n                    name='meetDate'\n                    value={moment(combineDateAndTime({ date: reserveDate, time: meetTime, minute: meetMinute })).format('YYYY-MM-DD HH시 mm분') || null}\n                    disabled\n                />\n\n                <DivisionLine big />\n\n                <WithmateLabel required>외출하실 때 '꼭' 계단을 이용하셔야 하나요?</WithmateLabel>\n                <WithmateInput type='text' placeholder='' maxLength='24' name='environment' value={environment || null} disabled />\n\n                <DivisionLine />\n\n                <WithmateLabel required>메이트가 동행할 때 주의해야 할 점이 있을까요?</WithmateLabel>\n                <WithmateInput type='text' placeholder='' maxLength='24' name='caution' value={caution || null} disabled />\n\n                <DivisionLine />\n\n                <WithmateLabel required>기타 요청 및 전달 사항</WithmateLabel>\n                <WithmateTextarea type='text' placeholder='' name='comment' value={comment || null} disabled />\n            </FormWrapper>\n\n            <ResultFormWrapper>\n                <FormMainTitle>결제 내역</FormMainTitle>\n                <DivisionLine x_small />\n                {service === 'unemergency' && (\n                    <>\n                        <WithmateSelect\n                            placeholder='이동 수단을 선택해주세요'\n                            value={transport || undefined}\n                            onChange={value => {\n                                handleChange({ target: { name: 'transport', value } });\n                            }}\n                        >\n                            <Select.Option value='common'>대중 교통</Select.Option>\n                            <Select.Option value='own'>본인 소유 자차 이동</Select.Option>\n                        </WithmateSelect>\n\n                        {transport === 'own' && (\n                            <>\n                                <DivisionLine x_small />\n                                <FormMainAlert>서비스 당일 ‘누구나 보험’ 변경 필수입니다.</FormMainAlert>\n                            </>\n                        )}\n                        <DivisionLine />\n                    </>\n                )}\n\n                <LabelAndValueRow borderColor='#cecfd0'>\n                    <LabelValue>예상 비용</LabelValue>\n                    {service === 'unemergency' ? (\n                        <PriceValue>\n                            {connection === '메트라이프'\n                                ? '(10% 할인가격) ' + (parseInt(totalFee, 10) + -1 * _point > 0 ? parseInt(totalFee, 10) + -1 * _point : 0) * 0.9\n                                : parseInt(totalFee, 10) + -1 * _point > 0\n                                ? parseInt(totalFee, 10) + -1 * _point\n                                : 0}\n                            원\n                        </PriceValue>\n                    ) : (\n                        <PriceValue>{parseInt(totalFee, 10) + -1 * _point > 0 ? parseInt(totalFee, 10) + -1 * _point : 0}원</PriceValue>\n                    )}\n                </LabelAndValueRow>\n                {service === 'unemergency' ? (\n                    <>\n                        <LabelAndValueRow>\n                            <PriceDetailLabel>\n                                <span>ㄴ</span>보유 포인트\n                            </PriceDetailLabel>\n                            <PriceDetailValue>{data.point}원</PriceDetailValue>\n                        </LabelAndValueRow>\n                        <LabelAndValueRow borderColor='#e6e6e6'>\n                            <PriceDetailLabel>\n                                <span>ㄴ</span>사용할 포인트\n                            </PriceDetailLabel>\n                            <PriceDetailValue>\n                                <WithmateInput\n                                    type='text'\n                                    small\n                                    suffix='원'\n                                    name='usePoint'\n                                    value={data.usePoint || null}\n                                    placeholder='0'\n                                    onChange={handleChange}\n                                />\n                            </PriceDetailValue>\n                        </LabelAndValueRow>\n                    </>\n                ) : null}\n                <LabelAndValueRow borderColor='#e6e6e6'>\n                    <PriceDetailLabel>\n                        <span>ㄴ</span>결제 수단\n                    </PriceDetailLabel>\n                    <WithmateSelect\n                        placeholder='결제수단'\n                        value={data.payment || undefined}\n                        onChange={value => {\n                            handleChange({ target: { name: 'payment', value } });\n                        }}\n                        style={{ width: '102px' }}\n                    >\n                        <Select.Option value='transfer'>계좌이체</Select.Option>\n                        <Select.Option value='card'>카드결제</Select.Option>\n                    </WithmateSelect>\n                </LabelAndValueRow>\n                {data.payment === 'card' && (\n                    <>\n                        <FormMainAlert>카드결제 이용시 [ 서비스 안내 사항 ]을 확인하세요</FormMainAlert>\n                        <div style={{ textAlign: 'right' }}>\n                            <UnderLineText onClick={onPrevSetting3}>등록된 카드목록</UnderLineText>\n                        </div>\n                        <div style={{ flex: 1, paddingBottom: '10px' }}>\n                            <WithmateLabel required>결제 카드사</WithmateLabel>\n                            <WithmateSelect\n                                name='cardName'\n                                placeholder='카드사를 선택하세요'\n                                value={cardName || undefined}\n                                onChange={value => {\n                                    handleChange({ target: { name: 'cardName', value } });\n                                }}\n                            >\n                                <Select.Option value='KB국민카드'>KB국민카드</Select.Option>\n                                <Select.Option value='삼성카드'>삼성카드</Select.Option>\n                                <Select.Option value='현대카드'>현대카드</Select.Option>\n                                <Select.Option value='우리카드'>우리카드</Select.Option>\n                                <Select.Option value='BC카드'>BC카드</Select.Option>\n                                <Select.Option value='신한카드'>신한카드</Select.Option>\n                                <Select.Option value='롯데카드'>롯데카드</Select.Option>\n                                <Select.Option value='NH농협카드'>NH농협카드</Select.Option>\n                            </WithmateSelect>\n                        </div>\n                        <div style={{ flex: 1, paddingBottom: '10px' }}>\n                            <WithmateLabel required>카드 번호</WithmateLabel>\n                            <WithmateInput\n                                type='text'\n                                placeholder='카드 번호를 입력하세요'\n                                maxLength='24'\n                                name='cardNum'\n                                value={cardNum || null}\n                                onChange={handleChange}\n                            />\n                        </div>\n                        <div style={{ flex: 1, paddingBottom: '10px' }}>\n                            <WithmateLabel required>유효기간(MM/YY)</WithmateLabel>\n                            <WithmateInput\n                                type='text'\n                                placeholder='월(MM)'\n                                maxLength='24'\n                                name='month'\n                                value={month || null}\n                                onChange={handleChange}\n                                style={{ width: '100px', marginRight: '15px' }}\n                            />\n                            <WithmateInput\n                                type='text'\n                                placeholder='년(YY)'\n                                maxLength='24'\n                                name='year'\n                                value={year || null}\n                                onChange={handleChange}\n                                style={{ width: '100px', marginRight: '15px' }}\n                            />\n                        </div>\n                        <div style={{ flex: 1 }}>\n                            <WithmateLabel required>할부 기간</WithmateLabel>\n                            <WithmateSelect\n                                name='installment'\n                                placeholder='할부 기간을 선택하세요'\n                                value={installment || undefined}\n                                onChange={value => {\n                                    handleChange({ target: { name: 'installment', value } });\n                                }}\n                            >\n                                <Select.Option value='일시불'>일시불</Select.Option>\n                                <Select.Option value='2개월'>2개월</Select.Option>\n                                <Select.Option value='3개월'>3개월</Select.Option>\n                                <Select.Option value='4개월'>4개월</Select.Option>\n                                <Select.Option value='5개월'>5개월</Select.Option>\n                                <Select.Option value='6개월'>6개월</Select.Option>\n                                <Select.Option value='7개월'>7개월</Select.Option>\n                                <Select.Option value='8개월'>8개월</Select.Option>\n                                <Select.Option value='9개월'>9개월</Select.Option>\n                                <Select.Option value='10개월'>10개월</Select.Option>\n                                <Select.Option value='11개월'>11개월</Select.Option>\n                                <Select.Option value='12개월'>12개월</Select.Option>\n                            </WithmateSelect>\n                        </div>\n                    </>\n                )}\n\n                <DivisionLine />\n\n                {/* <LabelAndValueRow>\n                    <LabelValue>포인트 적용 후 예상 비용</LabelValue>\n                    <PriceValue>{totalFee > 0 ? totalFee : 0}원</PriceValue>\n                </LabelAndValueRow> */}\n\n                <DivisionLine big />\n                <DivisionLine big />\n\n                <ServiceTypeName style={{ marginTop: '0px', marginBottom: '0px' }}>서비스 안내 사항</ServiceTypeName>\n                <DivisionLine />\n\n                <DashAndText>\n                    <img src='/assets/images/w_check.png' alt='아이콘' />\n                    • 위드메이트 서비스는 후불제이며, 모든 서비스가 종료된 이후 최종 요금 안내에 따라 [계좌이체] 또는 [카드결제]를 통한 결제를 진행해주시면\n                    됩니다.\n                    <br />• [카드결제]를 이용하실 경우 [마이페이지]에서 사용하실 카드를 등록하시면 편리하게 카드 정보로 결제하실 수 있습니다.\n                </DashAndText>\n\n                <DivisionLine />\n\n                <DashAndText>\n                    <img src='/assets/images/w_check.png' alt='아이콘' />\n                    <span>\n                        • [카드결제]는 [페이투페이]의 <a>수기결제</a>로 카드결제가 진행됩니다. <br />• 카드 정보는 서비스 비용 결제 목적으로만 이용되며, 그 외\n                        다른 목적으로 이용되거나 제3자에게 제공되는 일은 절대 없습니다.\n                    </span>\n                </DashAndText>\n\n                <DivisionLine />\n\n                <DashAndText>\n                    <img src='/assets/images/w_check.png' alt='아이콘' />\n                    이동 수단 중 [자차 이동]을 선택한 경우 예약일에 맞춰 차량 보험을 예약자 또는 본인이 직접 [누구나 보험]으로 변경해주셔야 합니다.\n                </DashAndText>\n\n                <DivisionLine />\n\n                <DashAndText>\n                    <img src='/assets/images/w_check.png' alt='아이콘' />\n                    택시비와 진료비 등의 부가 비용은 고객님께서 부담해주셔야 합니다.\n                </DashAndText>\n\n                <DivisionLine />\n\n                <DashAndText>\n                    <img src='/assets/images/w_pin.png' alt='아이콘' />\n                    <span>\n                        서비스에 대한 추가 문의 사항은 <a>FAQ</a>에서 확인 가능합니다. 위드메이트 상담 센터 운영 시간은 월 ~ 금 09:00 ~ 18:00 입니다.\n                    </span>\n                </DashAndText>\n\n                <DivisionLine />\n\n                <DashAndText alert>\n                    <img src='/assets/images/w_alert.png' alt='아이콘' />\n                    위드메이트는 플랫폼 내 전문 인력 스스로 매칭 신청을 검토하므로, 매칭 신청을 하시더라도 최종 매칭에 실패할 가능성이 있음을 알려드립니다.\n                </DashAndText>\n                <MobileStepImage>\n                    <img src={service === 'unemergency' ? '/assets/images/art_pro.png' : '/assets/images/art_basic.png'} alt='스텝이미지' />\n                </MobileStepImage>\n            </ResultFormWrapper>\n        </FlexFormWrapper>\n    );\n};\n\nconst DoneForm = ({ data }) => {\n    const { usePoint, point, transport, reserveDate, reserveTime, reserveMinute, productInfo, service, addTime } = data;\n\n    const _transport = transport && transport === 'own' ? 20000 : 0;\n    const _service =\n        productInfo && service && (service === 'unemergency' ? productInfo.proPrice : productInfo.basicPrice ? productInfo.basicPrice : 0) * addTime;\n\n    const _point = (usePoint || 0) * -1;\n    const discount = service === 'unemergency' ? productInfo.proDiscount || 0 : productInfo.basicDiscount || 0;\n\n    const totalFee = _transport + _service + _point - discount;\n\n    return (\n        <FormWrapper>\n            <ServiceTypeName style={{ marginTop: '0px', marginBottom: '0px' }}>매칭 신청이 완료되었어요!</ServiceTypeName>\n            <CongraturateLogo>\n                <img src='/assets/images/artwork_festival.png' alt='예약완료' />\n            </CongraturateLogo>\n\n            <DoneResultWrapper>\n                <LabelAndValueRow borderColor='#cecfd0'>\n                    <LabelValue>신청일자</LabelValue>\n                    <PriceDetailValue style={{ color: 'rgba(0,0,0,0.7)' }}>\n                        {moment(combineDateAndTime({ date: reserveDate, time: reserveTime, minute: reserveMinute })).format('YYYY-MM-DD HH시 mm분')}\n                    </PriceDetailValue>\n                </LabelAndValueRow>\n                <LabelAndValueRow borderColor='#cecfd0'>\n                    <LabelValue>선택하신 서비스</LabelValue>\n                    <PriceDetailValue style={{ color: 'rgba(0,0,0,0.7)' }}>\n                        {productInfo.name} {productInfo.name.includes('내시경') ? '' : service === 'unemergency' ? 'Pro' : 'Basic'}\n                    </PriceDetailValue>\n                </LabelAndValueRow>\n                <LabelAndValueRow borderColor='#cecfd0'>\n                    <LabelValue>총 예상 비용</LabelValue>\n                    <ServiceName style={{ marginBottom: '0px' }}>{totalFee}</ServiceName>\n                </LabelAndValueRow>\n                <LabelAndValueRow>\n                    <PriceDetailLabel>\n                        <span>ㄴ</span>사용된 포인트\n                    </PriceDetailLabel>\n                    <PriceDetailValue>{data.usePoint}원</PriceDetailValue>\n                </LabelAndValueRow>\n                <LabelAndValueRow>\n                    <PriceDetailLabel>\n                        <span>ㄴ</span>잔여 포인트\n                    </PriceDetailLabel>\n                    <PriceDetailValue>{point - usePoint}원</PriceDetailValue>\n                </LabelAndValueRow>\n                <LabelAndValueRow>\n                    <PriceDetailLabel>\n                        <span>ㄴ</span>결제 수단\n                    </PriceDetailLabel>\n                    <PriceDetailValue value>{data.payment === 'card' ? '카드결제' : '계좌이체'}</PriceDetailValue>\n                </LabelAndValueRow>\n            </DoneResultWrapper>\n\n            <DivisionLine />\n            <ServiceTypeName style={{ marginTop: '0px', marginBottom: '0px' }}>서비스 안내 사항</ServiceTypeName>\n            <DivisionLine />\n\n            <DashAndText>\n                <img src='/assets/images/w_check.png' alt='아이콘' />\n                위드메이트 서비스는 후불제이며, 모든 서비스가 종료된 이후 최종 요금 안내에 따라 계좌 이체를 통한 결제를 진행해주시면 됩니다.\n            </DashAndText>\n\n            <DivisionLine />\n\n            <DashAndText>\n                <img src='/assets/images/w_check.png' alt='아이콘' />\n                이동 수단 중 ‘자차 이동’을 선택한 경우 예약일에 맞춰 차량 보험을 예약자 또는 본인이 직접 ‘누구나 보험’으로 변경해주셔야 합니다.\n            </DashAndText>\n\n            <DivisionLine />\n\n            <DashAndText>\n                <img src='/assets/images/w_check.png' alt='아이콘' />\n                택시비와 진료비 등의 부가 비용은 고객님께서 부담해주셔야 합니다.\n            </DashAndText>\n\n            <DivisionLine />\n\n            <DashAndText>\n                <img src='/assets/images/w_pin.png' alt='아이콘' />\n                <span>\n                    서비스에 대한 추가 문의 사항은 <a>FAQ</a>에서 확인 가능합니다. 위드메이트 상담 센터 운영 시간은 월 ~ 금 09:00 ~ 18:00 입니다.\n                </span>\n            </DashAndText>\n\n            <DivisionLine />\n\n            <DashAndText alert>\n                <img src='/assets/images/w_alert.png' alt='아이콘' />\n                위드메이트는 플랫폼 내 전문 인력 스스로 매칭 신청을 검토하므로, 매칭 신청을 하시더라도 최종 매칭에 실패할 가능성이 있음을 알려드립니다.\n            </DashAndText>\n        </FormWrapper>\n    );\n};\n\nconst CustomButtonWrapper = styled(ButtonWrapper)`\n    max-width: 640px;\n    margin: 0 auto;\n\n    @media (max-width: 480px) {\n        flex-direction: column;\n\n        > a:first-child {\n            order: 2;\n            margin-bottom: 48px;\n        }\n\n        > a:last-child {\n            order: 1;\n        }\n    }\n`;\n","import React from 'react';\nimport { debounce } from 'lodash';\nimport styled from 'styled-components';\nimport { message, Spin } from 'antd';\nimport _ from 'lodash';\n\n// components\nimport { NoCatchedList } from '../../../../Components/User/Mate/reserve';\nimport { MateReserveInfoModal } from '../../../../Components/modal';\n\n// utils\nimport axios from '../../../../Lib/axios';\n\nclass Reserve extends React.PureComponent {\n    state = {\n        reserveModal: false,\n        reserveInfo: null,\n        refreshing: false,\n        list: [],\n    };\n\n    componentDidMount = () => {\n        this.fetchList();\n    };\n\n    fetchList = debounce(() => {\n        const mateId = localStorage.getItem('id');\n\n        this.setState(\n            {\n                refreshing: true,\n            },\n            () => {\n                axios\n                    .get('/v2/service/mate/reserve/list', {\n                        params: {\n                            mateId,\n                        },\n                    })\n                    .then(resolve => {\n                        const { data: list } = resolve;\n                        if (list && Array.isArray(list)) {\n                            this.setState({ list, refreshing: false });\n                        }\n                    })\n                    .catch(error => {\n                        this.setState({ refreshing: false });\n                    });\n            },\n        );\n    }, 300);\n\n    onCatchCall = () => {\n        const { reserveInfo } = this.state;\n        const { id } = this.props.auth;\n\n        if (!reserveInfo || !reserveInfo.call || !reserveInfo.call._id) {\n            this.setState({ reserveInfo: null, reserveModal: false });\n            message.warning('유효하지않은 예약내역입니다. 다른 예약내역을 확인해주세요.');\n            return null;\n        }\n\n        axios\n            .put('/v2/service/catch/call', {\n                callId: reserveInfo.call._id,\n                mateId: id,\n            })\n            .then(resolve => {\n                const { data: result } = resolve;\n                if (!result) return message.warning('요청에 실패했습니다.');\n                if (result === 'invalid call') return message.warning('잘못된 요청입니다.');\n                if (result === 'already catched') return message.warning('이미 접수된 요청입니다.');\n                if (result === 'denied') return message.warning('예약자에 의해 거절 당하셨거나 혹은 메이트님이 직접 해당 내역을 수신거부 하셨습니다.');\n                if (result === 'success') {\n                    message.success('예약 접수 요청완료');\n                    this.setState({ reserveModal: false, reserveInfo: null }, () => {\n                        this.fetchList();\n                    });\n                }\n            })\n            .catch(error => {\n                message.warning('요청에 실패했습니다.');\n            });\n    };\n\n    render() {\n        const { list } = this.state;\n\n        return (\n            <>\n                <NoCatchedList\n                    data={this.state}\n                    list={list}\n                    onRefresh={this.fetchList}\n                    detailHandler={info => {\n                        this.setState({ reserveModal: true, reserveInfo: info });\n                    }}\n                />\n\n                {this.state.reserveModal ? (\n                    <MateReserveInfoModal\n                        info={this.state.reserveInfo}\n                        visibleHandler={() => {\n                            this.setState({\n                                reserveModal: false,\n                                reserveInfo: null,\n                            });\n                        }}\n                        onCatch={this.onCatchCall}\n                    />\n                ) : null}\n\n                {this.state.refreshing ? (\n                    <SpinWrapper>\n                        <Spin size='large' />\n                    </SpinWrapper>\n                ) : null}\n            </>\n        );\n    }\n}\n\nconst SpinWrapper = styled.div`\n    position: fixed;\n    top: 0px;\n    left: 0px;\n    width: 100vw;\n    height: 100vh;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n\n    z-index: 9999\n    background-color: rgba(0, 0, 0, 0.6);\n`;\n\nexport default Reserve;\n","import { message } from 'antd';\nimport React from 'react';\nimport styled from 'styled-components';\nimport swal from 'sweetalert2';\nimport SwiperCore, { Pagination, Navigation, Autoplay } from 'swiper';\nimport 'swiper/swiper-bundle.min.css';\nimport 'swiper/swiper.min.css';\nimport 'swiper/components/navigation/navigation.min.css';\nimport 'swiper/components/pagination/pagination.min.css';\n\nSwiperCore.use([Navigation, Pagination, Autoplay]);\n\nexport const UserMain = ({ history }) => {\n    return (\n        <UserMainContainer>\n            <UserMainInnerContainer>\n                <WithmateSpecRow>\n                    <img src='/assets/images/collaboration/withmate_metlife_main.png' style={{ paddingTop: '40px', width: '380px' }} alt='메인 이미지' />\n                </WithmateSpecRow>\n                <BottomSection>\n                    <HighLight>\n                        메트라이프 360Future <br />\n                        회원만을 위한 <br />\n                        <p style={{ fontSize: '30px', color: '#3bc1ff' }}>병원동행서비스</p>\n                    </HighLight>\n                    <ButtonWrapper>\n                        <ReserveButton\n                            onClick={() => {\n                                window.open('https://play.google.com/store/apps/details?id=com.bluecamel.withmate');\n                            }}\n                        >\n                            위드메이트 이용하기\n                        </ReserveButton>\n                        <ReserveButton\n                            onClick={() => {\n                                if (!localStorage.getItem('id')) {\n                                    message.warning('병원 동행서비스 예약을 이용하시려면 회원가입 후 이용해주세요.');\n                                    return history.push('/user/register?url_source=metlife');\n                                }\n\n                                history.push('/reserve/items');\n                            }}\n                        >\n                            동행서비스 예약\n                            <img src='/assets/images/main_right_blue.png' alt='방향표' />\n                        </ReserveButton>\n                        <div style={{ paddingBottom: '8px' }} />\n                        <CallButton\n                            onClick={() => {\n                                swal.fire({\n                                    title: '위드메이트 고객센터',\n                                    text: '☎ 070-4300-9075',\n                                    icon: 'info',\n                                    confirmButtonText: '전화걸기',\n                                    cancelButtonText: '확인',\n                                    showCancelButton: true,\n                                }).then(result => {\n                                    if (result.isConfirmed) {\n                                        document.location.href = 'tel:070-4300-9075';\n                                    }\n                                });\n                            }}\n                        >\n                            전화 상담하기\n                            <img src='/assets/images/icons/phone.png' alt='전화기' />\n                        </CallButton>\n                    </ButtonWrapper>\n                </BottomSection>\n            </UserMainInnerContainer>\n        </UserMainContainer>\n    );\n};\n\nconst UserMainContainer = styled.div`\n    width: 100%;\n    height: 628px;\n\n    background: linear-gradient(to top, #ffffff, #eeeeee);\n\n    @media (max-width: 768px) {\n        // height: 598px;\n        height: 650px;\n    }\n`;\n\nconst UserMainInnerContainer = styled.div`\n    width: 100%;\n    max-width: 1120px;\n    height: 100%;\n    margin: 0 auto;\n\n    background-image: url('/assets/images/w_main.png');\n    background-size: cover;\n    background-repeat: no-repeat;\n    background-position: center;\n\n    padding-top: 72px;\n\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n\n    @media (max-width: 768px) {\n        padding-top: 52px;\n        align-items: center;\n        background: transparent;\n    }\n`;\n\nconst WithmateSpecRow = styled.div`\n    display: flex;\n    align-items: flex-end;\n\n    font-size: 32px;\n    font-stretch: normal;\n    font-style: normal;\n    font-weight: 300;\n    line-height: 1.48;\n    letter-spacing: -0.7px;\n    text-align: left;\n    color: #ffffff;\n\n    > span {\n        font-size: 32px;\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.5;\n        letter-spacing: -0.7px;\n        text-align: left;\n        color: #ffffff;\n\n        margin-left: 4px;\n    }\n\n    > span.big {\n        font-size: 64px;\n        line-height: 1.2;\n        position: relative;\n        margin-right: 6px;\n\n        > d {\n            font-size: 28px;\n            position: absolute;\n            top: -16px;\n            left: calc(50% - 12px);\n        }\n    }\n\n    > span.normal {\n        font-size: 40px;\n        line-height: 1.2;\n        position: relative;\n        margin-right: 6px;\n\n        > d {\n            font-size: 18px;\n            position: absolute;\n            top: -16px;\n            left: calc(50% - 12px);\n        }\n    }\n\n    margin-bottom: 4px;\n\n    @media (max-width: 768px) {\n        margin-bottom: 8px;\n\n        font-size: 22px;\n\n        > span {\n            font-size: 22px;\n        }\n\n        > span.big {\n            font-size: 48px;\n            line-height: 1.2;\n            position: relative;\n            margin-right: 4px;\n\n            > d {\n                font-size: 20px;\n                position: absolute;\n                top: -16px;\n                left: calc(50% - 8px);\n            }\n        }\n    }\n`;\n\nconst BottomSection = styled.div`\n    margin-top: 28px;\n\n    @media (max-width: 768px) {\n        margin-top: 43px;\n    }\n`;\n\nconst HighLight = styled.p`\n    font-size: 28px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.75;\n    letter-spacing: -0.2px;\n    text-align: left;\n    color: black;\n\n    margin-bottom: 64px;\n\n    @media (max-width: 768px) {\n        text-align: center;\n    }\n`;\n\nconst ButtonWrapper = styled.div`\n    display: flex;\n    align-items: flex-start;\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n        align-items: center;\n\n        > div:first-child {\n            margin-bottom: 8px;\n        }\n    }\n`;\n\nconst ButtonCommon = styled.div`\n    display: flex;\n    padding: 20px 24px;\n    width: 210px;\n    align-items: center;\n    justify-content: space-between;\n\n    border-radius: 4px;\n    margin-right: 8px;\n    cursor: pointer;\n\n    > img {\n        width: 24px;\n        height: 24px;\n        object-fit: contain;\n    }\n\n    box-shadow: 2px 4px 16px -4px rgba(0, 0, 0, 0.1);\n\n    &:hover {\n        box-shadow: 4px 10px 24px -4px rgba(0, 0, 0, 0.1);\n        transition: all 0.3s;\n    }\n\n    @media (max-width: 768px) {\n    }\n`;\n\nconst GPButtonCommon = styled.div`\n    display: flex;\n    padding: 20px 24px;\n    width: 210px;\n    align-items: center;\n\n    border-radius: 4px;\n    margin-right: 8px;\n    cursor: pointer;\n\n    box-shadow: 2px 4px 16px -4px rgba(0, 0, 0, 0.1);\n\n    &:hover {\n        box-shadow: 4px 10px 24px -4px rgba(0, 0, 0, 0.1);\n        transition: all 0.3s;\n    }\n\n    @media (max-width: 768px) {\n    }\n`;\n\nconst ReserveButton = styled(ButtonCommon)`\n    background-color: #ffffff;\n    font-size: 18px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.42;\n    letter-spacing: -0.1px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    @media (max-width: 768px) {\n    }\n`;\n\nconst CallButton = styled(ButtonCommon)`\n    border: 1px solid #ffffff;\n\n    font-size: 18px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.42;\n    letter-spacing: -0.1px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n    background-color: white;\n\n    @media (max-width: 768px) {\n    }\n`;\n\nconst GooglePlayButton = styled(GPButtonCommon)`\n    background-color: #ffffff;\n    border-color: #ffffff;\n    border-style: solid;\n    font-size: 18px;\n    font-weight: bold;\n    font-style: normal;\n    text-align: center;\n    color: rgba(0, 0, 0, 0.7);\n    height: 60px;\n\n    @media (max-width: 768px) {\n    }\n`;\n\nconst MobileBr = styled.br`\n    display: none;\n    @media (max-width: 768px) {\n        display: block;\n    }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\n\nexport const UserGuideSection = () => {\n    return (\n        <UserGuideContainer>\n            <UserGuideInnerContainer>\n                <UserGuideTitle>서비스 이용 방법</UserGuideTitle>\n                <UserGuideStepWrapper>\n                    <TextStep>서비스 신청</TextStep>\n                    <ImgStep src='/assets/images/main_right_gray.png' alt='방향표' />\n                    <TextStep>동행 인력 매칭</TextStep>\n                    <ImgStep src='/assets/images/main_right_gray.png' alt='방향표' />\n                    <TextStep>병원 방문</TextStep>\n                    <ImgStep src='/assets/images/main_right_gray.png' alt='방향표' />\n                    <TextStep>서비스 결과 확인</TextStep>\n                    <ImgStep src='/assets/images/main_right_gray.png' alt='방향표' />\n                    <TextStep>후불 결제</TextStep>\n                    <ImgStep src='/assets/images/main_right_gray.png' alt='방향표' />\n                    <TextStep>혜택 적립</TextStep>\n                </UserGuideStepWrapper>\n\n                <MainStepRow>\n                    <MainStep\n                        webArrow\n                        mArrow\n                        source='/assets/images/main_step_1.png'\n                        description={`위드메이트 플랫폼에 회원 가입 후\\n병원 동행 서비스 종류를 선택하고\\n신청해주세요!`}\n                        num='01'\n                        name='신청하세요!'\n                    />\n                    <MainStep\n                        webArrow\n                        mArrow\n                        source='/assets/images/main_step_2.png'\n                        description={`접수하신 서비스는 24시간 내에\\n매칭 가능 여부가 결정됩니다. 동행 인력이\\n매칭을 시도하면 고객님께서 매칭 수락\\n여부를 결정하시면 됩니다!`}\n                        num='02'\n                        name='매칭되세요!'\n                    />\n                    <MainStep\n                        className='uniq'\n                        mArrow\n                        source='/assets/images/main_step_3.png'\n                        description={`동행 인력 매칭 성공 후 예정된 진료일에\\n병원에 다녀오세요! 병원에서 하실 일은\\n진료를 받는 것 밖에 없습니다.\\n진료 동행, 보호자 대행, 병원 행정 보조 등\\n 나머지는 위드메이트가 해드립니다.`}\n                        num='03'\n                        name='다녀오세요!'\n                    />\n                </MainStepRow>\n\n                <MainStepRow>\n                    <MainStep\n                        webArrow\n                        mArrow\n                        source='/assets/images/main_step_4.png'\n                        description={`위드메이트는 동행 서비스 진행 과정을\\n실시간 카카오 알림톡으로 알려드리고,\\n서비스 종료 후 진료 결과와 특이사항 등의\\n내용이 정리된 서비스 리포트를 제공합니다`}\n                        num='04'\n                        name='확인하세요!'\n                    />\n                    <MainStep\n                        webArrow\n                        mArrow\n                        source='/assets/images/main_step_5.png'\n                        description={`위드메이트는 정확한 시간 계산이 불가능한\\n병원 진료 특성상, 서비스 요금의 투명성을\\n위해 후불 결제를 진행하고 있습니다.\\n서비스 시간은 초 단위로 자동 계산되니,\\n안심하고 서비스를 받으세요!`}\n                        num='05'\n                        name='후불이에요!'\n                    />\n                    <MainStep\n                        source='/assets/images/main_step_6.png'\n                        description={`회원 가입만 해도 2,000 포인트를\\n지급해드리며, 매번 서비스 후기 작성을\\n할 때마다 최대 3,000 포인트를 지급해드려요!\\n적립된 포인트로 더 저렴하게 서비스를\\n이용해보세요!`}\n                        num='06'\n                        name='받아가세요!'\n                    />\n                </MainStepRow>\n            </UserGuideInnerContainer>\n        </UserGuideContainer>\n    );\n};\n\nconst MainStep = ({ webArrow, mArrow, source, num, name, description, className }) => {\n    return (\n        <MainStepWrapper className={className || ''}>\n            <MainStepImageSection>\n                <img className='bg' src={source} alt='thumbnail' />\n            </MainStepImageSection>\n\n            <MainStepTextSection>\n                <StepIndex>{num}</StepIndex>\n                <StepTitle>{name}</StepTitle>\n                <StepDescription>\n                    {description.split('\\n').map((word, index) => (\n                        <span key={'word-break-down-' + index.toString() + num}>\n                            {word}\n                            <KeepBr />\n                        </span>\n                    ))}\n                </StepDescription>\n            </MainStepTextSection>\n            <img className={`arrow ${webArrow && 'web'} ${mArrow && 'mobile'}`} src='/assets/images/w_main_stepper.png' />\n        </MainStepWrapper>\n    );\n};\n\nconst UserGuideContainer = styled.div`\n    width: 100%;\n\n    background-color: #ffffff;\n\n    padding-top: 103px;\n    padding-bottom: 162px;\n\n    @media (max-width: 768px) {\n        padding-top: 90px;\n        padding-bottom: 130px;\n    }\n`;\n\nconst UserGuideInnerContainer = styled.div`\n    width: 100%;\n    max-width: 1120px;\n    margin: 0 auto;\n`;\n\nconst UserGuideTitle = styled.h4`\n    font-size: 24px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.3;\n    letter-spacing: -0.5px;\n    text-align: center;\n    color: rgba(0, 0, 0, 0.7);\n\n    margin-top: 0px;\n    margin-bottom: 32px;\n\n    @media (max-width: 768px) {\n        font-size: 16px;\n        line-height: 1.42;\n        letter-spacing: -0.1px;\n        margin-bottom: 24px;\n    }\n`;\n\nconst UserGuideStepWrapper = styled.div`\n    width: 100%;\n\n    display: flex;\n    justify-content: center;\n    align-items: center;\n\n    margin-bottom: 90px;\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n        margin-bottom: 77px;\n    }\n`;\n\nconst TextStep = styled.span`\n    font-size: 15px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.33;\n    letter-spacing: normal;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.6);\n`;\n\nconst ImgStep = styled.img`\n    margin-left: 16px;\n    margin-right: 16px;\n\n    width: 24px;\n    height: 24px;\n    object-fit: contain;\n\n    @media (max-width: 768px) {\n        transform: rotate(90deg);\n\n        width: 16px;\n        height: 16px;\n\n        margin-left: 0px;\n        margin-right: 0px;\n\n        margin-top: 8px;\n        margin-bottom: 8px;\n    }\n`;\n\nconst MainStepRow = styled.div`\n    display: flex;\n    align-items: flex-start;\n\n    > div:first-child {\n        border-left: 0px;\n    }\n\n    > div:last-child {\n        border-right: 0px;\n    }\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n        align-items: center;\n\n        > div:last-child {\n            border-bottom: 0px;\n        }\n\n        > div.uniq {\n            border-bottom: 1px solid #f2f2f2;\n        }\n    }\n`;\n\nconst MainStepWrapper = styled.div`\n    padding-left: 47px;\n    padding-right: 52px;\n    border-right: 1px solid #f2f2f2;\n\n    position: relative;\n\n    > img.arrow {\n        width: 24px;\n        height: 24px;\n\n        position: absolute;\n        top: calc(90px - 12px);\n        right: -11.5px;\n\n        display: none;\n    }\n\n    > img.mobile {\n        display: none;\n    }\n\n    > img.web {\n        display: block;\n    }\n\n    @media (max-width: 768px) {\n        border-right: 0px;\n        border-bottom: 1px solid #f2f2f2;\n\n        > img.arrow {\n            width: 24px;\n            height: 24px;\n\n            top: unset;\n            right: unset;\n            bottom: -10px;\n            left: calc(50% - 12px);\n\n            transform: rotate(90deg);\n        }\n\n        > img.web {\n            display: none;\n        }\n\n        > img.mobile {\n            display: block;\n        }\n    }\n\n    @media (max-width: 768px) {\n        padding-right: 0px;\n        padding-left: 0px;\n        padding-bottom: 44px;\n    }\n`;\n\nconst MainStepImageSection = styled.div`\n    width: 288px;\n    height: 180px;\n\n    margin-bottom: 24px;\n\n    > img.bg {\n        width: 100%;\n        height: 100%;\n        object-fit: contain;\n    }\n\n    @media (max-width: 768px) {\n        width: 100%;\n        text-align: center;\n    }\n`;\n\nconst MainStepTextSection = styled.div`\n    display: flex;\n    align-items: center;\n    flex-direction: column;\n`;\n\nconst StepIndex = styled.span`\n    font-size: 14px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.43;\n    letter-spacing: normal;\n    text-align: center;\n    color: #afb0b2;\n    margin-bottom: 8px;\n\n    @media (max-width: 768px) {\n    }\n`;\n\nconst StepTitle = styled.span`\n    font-size: 18px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.26;\n    letter-spacing: -0.1px;\n    text-align: left;\n    margin-bottom: 24px;\n    color: rgba(0, 0, 0, 0.7);\n\n    @media (max-width: 768px) {\n    }\n`;\n\nconst StepDescription = styled.span`\n    font-size: 15px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.57;\n    letter-spacing: -0.3px;\n    text-align: center;\n    color: rgba(0, 0, 0, 0.7);\n\n    > span {\n        font-size: 15px;\n        font-weight: normal;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.57;\n        letter-spacing: -0.3px;\n        text-align: center;\n        color: rgba(0, 0, 0, 0.7);\n    }\n    word-break: keep-all;\n\n    @media (max-width: 768px) {\n    }\n`;\n\nconst KeepBr = styled.br`\n    display: block;\n    @media (max-width: 768px) {\n        display: block;\n    }\n`;\n","import styled from 'styled-components';\nimport { mainColor, sizeHandler } from '../../../theme';\n\nconst HomeStyledContainer = styled.div`\n    padding-top: 55px;\n\n    .center-title {\n        text-align: center;\n        margin-bottom: 28px;\n\n        > p {\n            height: 52px;\n            line-height: 52px;\n            margin-bottom: 0px;\n            font-size: 28px;\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n        }\n    }\n\n    .ant-collapse > .ant-collapse-item > .ant-collapse-header {\n        padding: 0px;\n    }\n\n    .ant-collapse-borderless > .ant-collapse-item {\n        border: 0px;\n    }\n\n    .ant-collapse-content > .ant-collapse-content-box {\n        padding: 0px;\n        padding-top: 4px;\n        padding-bottom: 12px;\n    }\n\n    .fake-input {\n        width: 100%;\n        height: 36px;\n        border-radius: 4px;\n        border: 1px solid #e6e6e6;\n    }\n\n    .main-section {\n        position: relative;\n        width: 100%;\n        height: 100vh;\n        max-height: 628px;\n        // min-height: calc(100vh - 55px);\n\n        // background-color: #ebf9ff;\n        // background-image: url('/assets/images/new_mainbg.png');\n        background-color: linear-gradient(to top, #3bc1ff, #5b62f5);\n        background-image: url('/assets/images/w_main.png');\n        background-size: cover;\n        background-repeat: no-repeat;\n        background-position: center;\n\n        @media (max-width: 768px) {\n            background-image: url('/assets/images/new_mainbg-mobile.png');\n            min-height: 86vh;\n\n            .inner-container {\n                padding: 0px;\n                padding-bottom: 30px;\n                min-height: 86vh;\n\n                display: flex;\n                align-items: flex-end;\n                justify-content: flex-end;\n            }\n        }\n\n        .ant-input[disabled] {\n            color: rgba(0, 0, 0, 0.7);\n        }\n        .ant-input {\n            font-size: 12px;\n        }\n\n        .order-menu-wrapper {\n            width: 50%;\n            position: relative;\n            max-width: 440px;\n            min-width: 370px;\n            background-color: white;\n            border-radius: 8px;\n            box-shadow: 1px 2px 3.5px #e6e6e6;\n            padding: 32px;\n\n            .mobile-close-button {\n                display: none;\n            }\n\n            @media (max-width: 768px) {\n                display: none;\n\n                &.active {\n                    display: block;\n                }\n\n                margin: 0px auto;\n                position: fixed;\n                z-index: 99;\n                top: 55px;\n                left: 0px;\n                width: 100%;\n                max-width: 100%;\n                height: calc(100vh - 55px);\n                overflow: scroll;\n                border-radius: 0px;\n\n                .mobile-close-button {\n                    display: block;\n                    position: absolute;\n                    top: 16px;\n                    right: 24px;\n                    padding: 6px;\n                    cursor: pointer;\n\n                    img {\n                        width: 18px;\n                        height: 18px;\n                    }\n                }\n\n                &.blocked {\n                    z-index: 0;\n                    position: relative;\n                    height: auto;\n                    overflow: auto;\n                }\n            }\n\n            .order-title {\n                margin-bottom: 20px;\n\n                p {\n                    margin: 0px;\n                    padding: 0px;\n                    font-size: ${sizeHandler(28)};\n                    font-weight: bold;\n                    letter-spacing: -0.7px;\n                    color: rgba(0, 0, 0, 0.7);\n                }\n            }\n\n            .service {\n                margin-bottom: 20px;\n\n                .time-checker {\n                    width: calc(50% - 4px);\n                }\n\n                .time-checker.margin {\n                    margin-right: 8px;\n                }\n\n                .search-button {\n                    position: absolute;\n                    top: 1px;\n                    right: 1px;\n                    background-color: #ececec;\n                    height: 34px;\n                    width: 50px;\n                    border-top-right-radius: 4px;\n                    border-bottom-right-radius: 4px;\n\n                    font-size: 12px;\n                    line-height: 34px;\n                    text-align: center;\n                    cursor: pointer;\n                    color: rgba(0, 0, 0, 0.4);\n                }\n\n                .service-tab {\n                    display: flex;\n                    align-items: center;\n                    justify-content: center;\n                    border: 1px solid #ddd;\n                    border-radius: 6px;\n\n                    .tab {\n                        flex: 1;\n                        height: 48px;\n                        border-right: 1px solid #ddd;\n                        cursor: pointer;\n                        display: flex;\n                        justify-content: center;\n                        align-items: center;\n\n                        &:last-child {\n                            border: 0px;\n                        }\n\n                        span {\n                            font-size: ${sizeHandler(14)};\n                            letter-spacing: -0.2px;\n                            font-weight: bold;\n                            color: ${mainColor};\n                        }\n                    }\n\n                    .tab.active {\n                        background-color: ${mainColor};\n\n                        span {\n                            color: white;\n                        }\n                    }\n                }\n\n                .info-tab {\n                    display: flex;\n                    align-items: center;\n                    justify-content: center;\n\n                    p {\n                        flex: 1;\n                        margin: 0px;\n                        padding: 0px;\n                        text-align: left;\n\n                        &:first-child {\n                            margin-right: 8px;\n                        }\n                    }\n                }\n\n                .info-input-tab {\n                    display: flex;\n                    align-items: center;\n\n                    > div {\n                        flex: 1;\n\n                        &:first-child {\n                            margin-right: 8px;\n                        }\n                    }\n\n                    .name-wrapper {\n                        position: relative;\n\n                        .sex-type-wrapper {\n                            position: absolute;\n                            top: 1px;\n                            right: 1px;\n                            z-index: 3;\n                            background-color: white;\n\n                            .sex-type {\n                                display: inline-block;\n                                width: 34px;\n                                height: 34px;\n                                line-height: 36px;\n                                text-align: center;\n                                border-left: 1px solid #e6e6e6;\n\n                                font-size: ${sizeHandler(14)};\n                                font-weight: normal;\n                                letter-spacing: -0.2px;\n                                color: rgba(0, 0, 0, 0.2);\n                                cursor: pointer;\n\n                                &:hover {\n                                    color: rgba(0, 0, 0, 0.3);\n                                    transition: all 0.3s;\n                                }\n\n                                &.active {\n                                    color: ${mainColor};\n                                }\n                            }\n                        }\n                    }\n\n                    .input {\n                        flex-grow: 1;\n                        display: flex;\n                        min-width: 0;\n                        align-items: center;\n\n                        border-radius: 4px;\n                        border: solid 1px #e6e6e6;\n                        min-height: 36px;\n                        line-height: 36px;\n                        text-indent: 12px;\n                        font-size: ${sizeHandler(12)};\n                        letter-spacing: -0.3px;\n                        color: rgba(0, 0, 0, 0.8);\n                        background-color: #f5f5f5;\n                        cursor: not-allowed;\n\n                        p {\n                            white-space: nowrap;\n                            text-overflow: ellipsis;\n                            overflow: hidden;\n                        }\n\n                        // .ant-input {\n                        //     color: rgba(0, 0, 0, 0.8);\n                        // }\n\n                        &.phone {\n                            flex: 0.5;\n\n                            @media (max-width: 768px) {\n                                flex: 1;\n                            }\n                        }\n\n                        &.input-with-icon {\n                            p {\n                                height: 100%;\n                                flex: 1;\n                                text-overflow: ellipsis;\n                                overflow: hidden;\n                                white-space: nowrap;\n                            }\n\n                            div {\n                                height: 100%;\n                                width: 36px;\n                                border-left: 1px solid #e6e6e6;\n                                display: flex;\n                                justify-content: center;\n                                align-items: center;\n\n                                span {\n                                    text-align: center;\n                                    text-indent: 0px;\n                                    // opacity: 0.3;\n                                    font-size: ${sizeHandler(12)};\n                                    letter-spacing: -0.3px;\n                                    color: rgba(0, 0, 0, 0.8);\n\n                                    img {\n                                        width: 18px;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .service-fee-wrapper {\n                    margin-bottom: 32px;\n\n                    .service {\n                        display: flex;\n                        align-items: center;\n                        padding-top: 12px;\n                        margin-bottom: 0px;\n\n                        .name {\n                            flex: 1;\n                            font-size: ${sizeHandler(14)};\n                            letter-spacing: -0.3px;\n                            color: rgba(0, 0, 0, 0.7);\n                        }\n\n                        .fee {\n                            font-size: ${sizeHandler(14)};\n                            font-weight: bold;\n                            text-align: right;\n                            color: rgba(0, 0, 0, 0.7);\n                        }\n                    }\n                }\n\n                input {\n                    height: 36px;\n                    display: inline-block;\n                    width: 100%;\n                    overflow: hidden;\n                    text-overflow: ellipsis;\n                    white-space: nowrap;\n                }\n\n                .ant-input-number-input-wrap {\n                    height: 100%;\n\n                    .ant-input-number-input {\n                        height: 100%;\n                    }\n\n                    input {\n                        height: 100%;\n                    }\n                }\n\n                .select {\n                    display: inline-block;\n                    height: 36px;\n                    width: 100%;\n\n                    .ant-select-selection--single {\n                        height: 100%;\n                    }\n\n                    .ant-select-selection__rendered {\n                        line-height: 36px;\n                    }\n                }\n\n                .info {\n                    font-size: ${sizeHandler(12)};\n                    color: rgba(0, 0, 0, 0.7);\n                    margin-bottom: 4px;\n                    letter-spacing: -0.15px;\n                }\n\n                .ant-select-selection__rendered {\n                    margin-right: 34px;\n                    border-right: 1px solid #e6e6e6;\n                }\n\n                .ant-select-arrow {\n                    color: ${mainColor};\n                }\n\n                .image-with-text {\n                    display: flex;\n                    align-items: center;\n                    img {\n                        height: 18px;\n                        border: 0px;\n                    }\n\n                    p {\n                        flex: 1;\n                        margin: 0px;\n                        padding: 0px;\n                        margin-left: 12px;\n                        font-size: ${sizeHandler(18)};\n                        font-weight: bold;\n                        color: #3bc1ff;\n                    }\n                }\n            }\n\n            .side-summary-tab {\n                position: absolute;\n                top: 0px;\n                right: -380px;\n                width: 360px;\n                height: 100%;\n                background-color: white;\n                border-radius: 8px;\n                box-shadow: 1px 2px 3.5px #e6e6e6;\n                padding: 32px;\n                overflow: hidden;\n                display: flex;\n                flex-direction: column;\n\n                @media (max-width: 768px) {\n                    width: 100%;\n                    height: auto;\n                    border-radius: 0px;\n                    box-shadow: none;\n                    padding: 0px;\n                    position: relative;\n                    top: 55px;\n                    left: 0px;\n                    background-color: transparent;\n                }\n\n                .refund-info-wrapper {\n                    flex: 1;\n                    display: flex;\n                    align-items: flex-end;\n\n                    .info-wrapper {\n                        width: 100%;\n\n                        .title {\n                            font-size: ${sizeHandler(12)};\n                            font-weight: bold;\n                            color: #a7a7a7;\n                            margin-bottom: 8px;\n                        }\n\n                        .info {\n                            font-size: ${sizeHandler(10)};\n                            line-height: ${sizeHandler(16)};\n                            color: rgba(0, 0, 0, 0.7);\n                        }\n\n                        @media (max-width: 768px) {\n                            margin-top: 36px;\n                            padding-bottom: 20px;\n\n                            .info {\n                                margin-bottom: 60px;\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    .additional-fee {\n        p {\n            margin: 0px;\n            padding: 0px;\n            margin-top: 8px;\n            font-size: ${sizeHandler(10)};\n            color: rgba(0, 0, 0, 0.7);\n        }\n    }\n\n    .ant-input-number {\n        width: 100%;\n        height: 48px;\n\n        .ant-input-number-input-wrap {\n            height: 100%;\n\n            .ant-input-number-input {\n                height: 100%;\n            }\n\n            input {\n                height: 100%;\n            }\n        }\n\n        .ant-input-number-handler-wrap {\n            opacity: 1;\n            width: 48px;\n\n            span {\n                display: flex;\n                align-items: center;\n                justify-content: center;\n\n                i {\n                    position: relative;\n                    margin-top: 0px;\n                    left: 0px;\n                    top: 0px;\n                    bottom: 0px;\n                    right: 0px;\n                    font-size: 16px;\n                }\n            }\n            .anticon.anticon-up.ant-input-number-handler-up-inner {\n                color: ${mainColor};\n            }\n            .anticon.anticon-down.ant-input-number-handler-down-inner {\n                color: ${mainColor};\n            }\n        }\n    }\n\n    .total-fee-wrapper {\n        padding: 18px 0px;\n        border-top: 1px solid #e6e6e6;\n        border-bottom: 1px solid #e6e6e6;\n\n        .total-fee {\n            display: flex;\n            align-items: center;\n\n            .total-min {\n                flex: 1;\n                font-size: ${sizeHandler(14)};\n                // font-weight: bold;\n                letter-spacing: -0.5px;\n                color: rgba(0, 0, 0, 0.7);\n            }\n\n            .fee-min {\n                font-size: ${sizeHandler(14)};\n                letter-spacing: -0.5px;\n                text-align: right;\n                // font-weight: bold;\n                // color: #3bc1ff;\n\n                color: rgba(0, 0, 0, 0.7);\n            }\n\n            span.vat {\n                font-size: ${sizeHandler(11)};\n                color: #565656;\n            }\n        }\n\n        .total {\n            flex: 1;\n            font-size: ${sizeHandler(16)};\n            font-weight: bold;\n            letter-spacing: -0.5px;\n            color: rgba(0, 0, 0, 0.7);\n        }\n\n        .fee {\n            font-size: ${sizeHandler(16)};\n            font-weight: bold;\n            letter-spacing: -0.5px;\n            text-align: right;\n            color: #3bc1ff;\n        }\n    }\n\n    // 여기\n    .service-section {\n        .concept-container {\n            margin-bottom: 68px;\n\n            .concept-title {\n                font-size: 24px;\n                font-weight: bold;\n                line-height: 2.17;\n                letter-spacing: -0.67px;\n                color: rgba(0, 0, 0, 0.8);\n                margin-bottom: 12px;\n            }\n\n            .concept-body {\n                font-size: 18px;\n                font-weight: normal;\n                line-height: 1.78;\n                letter-spacing: -0.3px;\n                color: rgba(0, 0, 0, 0.8);\n\n                @media (max-width: 768px) {\n                    font-size: 16px;\n                }\n            }\n        }\n\n        .service-item:last-child {\n            border-top: 1px solid #e6e6e6;\n            margin-top: 96px;\n            padding-top: 96px;\n        }\n\n        .service-item {\n            .service-name {\n                p {\n                    font-size: ${sizeHandler(36)};\n                    font-weight: bold;\n                    letter-spacing: -1px;\n                    color: rgba(0, 0, 0, 0.8);\n\n                    position: relative;\n\n                    .stamp {\n                        margin-left: 20px;\n                        padding: 8px 12px;\n                        border-radius: 4px;\n                        background-color: #ff0052;\n                        font-size: 10px;\n                        font-weight: bold;\n                        text-align: center;\n                        color: #ffffff;\n\n                        position: absolute;\n                        bottom: 6px;\n                    }\n                }\n\n                margin-bottom: 12px;\n            }\n\n            .mobile {\n                display: none;\n            }\n\n            .desktop {\n                display: block;\n            }\n\n            .service-info {\n                display: flex;\n                align-items: center;\n\n                .service-photo {\n                    flex: 1;\n                    display: flex;\n                    align-items: center;\n                    justify-content: flex-start;\n                    padding-left: 60px;\n\n                    img {\n                        // height: 100%;\n                        width: 100%;\n                    }\n                }\n\n                .info-wrapper {\n                    flex: 2;\n\n                    .main-description {\n                        font-size: ${sizeHandler(18)};\n                        color: rgba(0, 0, 0, 0.8);\n                        letter-spacing: -0.3px;\n                        margin-bottom: 32px;\n\n                        @media (max-width: 768px) {\n                            font-size: 16px;\n                        }\n                    }\n\n                    .service-detail {\n                        display: flex;\n                        align-item: center;\n\n                        .target-price {\n                            // flex: ;\n                            min-width: 240px;\n\n                            .target {\n                                margin-bottom: 36px;\n                            }\n                        }\n\n                        .scheme {\n                            flex: 1;\n                            margin-left: 20px;\n\n                            .scheme-items {\n                                p {\n                                    font-size: ${sizeHandler(14)};\n                                    letter-spacing: -0.3px;\n                                    color: rgba(0, 0, 0, 0.7);\n                                    height: 38px;\n                                    line-height: 38px;\n                                    margin: 0px;\n                                    padding: 0px;\n                                    overflow: hidden;\n                                    text-overflow: ellipsis;\n                                    white-space: nowrap;\n                                }\n                                border-bottom: 1px solid #e6e6e6;\n                            }\n\n                            .ps {\n                                font-size: ${sizeHandler(14)};\n                                color: ${mainColor};\n                                // font-weight: bold;\n                                height: 28px;\n                                line-height: 28px;\n\n                                &:nth-child(2n-1) {\n                                    color: #ff5500;\n                                }\n                            }\n                        }\n                    }\n\n                    .detail-button-wrapper {\n                        min-width: 240px;\n                        margin-top: 40px;\n                        background-color: #606060;\n                        border-radius: 4px;\n                        height: 48px;\n                        cursor: pointer;\n\n                        p {\n                            width: 100%;\n                            height: 100%;\n                            text-align: center;\n                            line-height: 48px;\n                            font-size: ${sizeHandler(14)};\n                            color: white;\n                            font-weight: bold;\n                        }\n                    }\n\n                    .reserve-button-wrapper {\n                        flex: 1;\n\n                        margin-top: 40px;\n                        background-color: ${mainColor};\n                        border-radius: 4px;\n                        height: 48px;\n                        cursor: pointer;\n\n                        p {\n                            width: 100%;\n                            height: 100%;\n                            text-align: center;\n                            line-height: 48px;\n                            font-size: ${sizeHandler(14)};\n                            color: white;\n                            font-weight: bold;\n                        }\n                    }\n\n                    .title {\n                        font-size: ${sizeHandler(18)};\n                        font-weight: bold;\n                        color: rgba(0, 0, 0, 0.8);\n                        margin-top: 36px;\n                        margin-bottom: 8px;\n                    }\n\n                    .content {\n                        font-size: ${sizeHandler(14)};\n                        font-weight: bold;\n                        color: rgba(0, 0, 0, 0.7);\n                    }\n\n                    .price-content {\n                        font-size: ${sizeHandler(16)};\n                        font-weight: bold;\n                        color: #606060;\n                        letter-spacing: -0.3px;\n                    }\n\n                    .info-container {\n                        .spec-title {\n                            font-size: 18px;\n                            font-weight: bold;\n                            line-height: 1.56;\n                            letter-spacing: normal;\n                            color: rgba(0, 0, 0, 0.8);\n                        }\n\n                        .spec-wrapper {\n                            padding: 8px 0px;\n                            border-bottom: 1px solid #e6e6e6;\n\n                            .spec-row {\n                                font-size: 14px;\n                                letter-spacing: -0.3px;\n                                color: rgba(0, 0, 0, 0.7);\n                                margin: 0px;\n                            }\n\n                            .spec-sub {\n                                font-size: 12px;\n                                letter-spacing: -0.26px;\n                                color: #a7a7a7;\n                                margin: 0px;\n                                margin-top: 4px;\n                            }\n                        }\n                    }\n\n                    .button-container {\n                        display: flex;\n                        align-items: center;\n                        margin-top: 32px;\n\n                        .button {\n                            border-radius: 4px;\n                            height: 48px;\n                            line-height: 48px;\n                            text-align: center;\n                            cursor: pointer;\n\n                            &.video-button {\n                                width: 285px;\n                                background-color: #606060;\n                                margin-right: 20px;\n\n                                &:hover {\n                                    transition: all 0.3s;\n                                    background-color: #707070;\n                                }\n                            }\n\n                            &.reserve-button {\n                                background-color: #3bc1ff;\n                                flex: 1;\n\n                                &:hover {\n                                    transition: all 0.3s;\n                                    background-color: #54c9ff;\n                                }\n                            }\n\n                            span {\n                                font-size: 14px;\n                                font-weight: bold;\n                                text-align: center;\n                                color: #ffffff;\n                            }\n                        }\n\n                        @media (max-width: 768px) {\n                            flex-direction: column;\n\n                            .button {\n                                width: 100% !important;\n                                margin-right: 0px !important;\n                                height: 40px;\n                                line-height: 40px;\n\n                                &:last-child {\n                                    margin-top: 16px;\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        @media (max-width: 768px) {\n            .service-item {\n                .service-name {\n                    p {\n                        font-size: ${sizeHandler(30)};\n\n                        .stamp {\n                            padding: 4px 8px;\n                            bottom: 8px;\n                        }\n                    }\n                }\n\n                .service-info {\n                    display: block;\n\n                    .service-photo {\n                        margin-top: 40px;\n                        padding-left: 0px;\n\n                        img {\n                            width: 100%;\n                        }\n                    }\n\n                    .info-wrapper {\n                        width: 100%;\n\n                        > p {\n                            font-size: ${sizeHandler(16)};\n                        }\n\n                        .service-detail {\n                            flex-direction: column;\n\n                            .service-photo {\n                                display: none;\n                            }\n\n                            .scheme {\n                                margin: 0px;\n                            }\n                        }\n\n                        .detail-button-wrapper {\n                            display: block;\n                            width: 100%;\n                            height: 40px;\n\n                            p {\n                                line-height: 40px;\n                            }\n                        }\n\n                        .reserve-button-wrapper {\n                            display: block;\n                            width: 100%;\n                            height: 40px;\n\n                            p {\n                                line-height: 40px;\n                            }\n                        }\n                        .mobile {\n                            display: block;\n                        }\n\n                        .desktop {\n                            display: none;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    .reserve-section {\n        .menu-top {\n            display: flex;\n            align-items: flex-end;\n            margin-bottom: 16px;\n\n            .main-title {\n                flex: 1;\n                font-size: 28px;\n                font-weight: bold;\n                letter-spacing: -1px;\n                color: rgba(0, 0, 0, 0.8);\n            }\n\n            .sub-button {\n                color: ${mainColor};\n                font-weight: bold;\n                font-size: 14px;\n                cursor: pointer;\n            }\n        }\n\n        .menu-bottom {\n            .reserve-menu {\n                display: flex;\n                align-items: center;\n                justify-content: center;\n                padding: 20px;\n                margin-bottom: 12px;\n                border-radius: 4px;\n                box-shadow: 2px 2px 10px 3px rgba(0, 0, 0, 0.1);\n                background-color: #ffffff;\n\n                .title {\n                    color: #a7a7a7;\n                    font-size: ${sizeHandler(12)};\n                    font-weight: bold;\n                    margin: 0px;\n                    padding: 0px;\n                }\n\n                .contents {\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    color: #606060;\n                    margin: 0px;\n                    padding: 0px;\n                    white-space: nowrap;\n                    overflow: hidden;\n                    text-overflow: ellipsis;\n                }\n\n                .service-name {\n                    flex: 0.7;\n                    .contents {\n                        color: ${mainColor};\n                    }\n                }\n\n                .user {\n                    flex: 0.5;\n                }\n\n                .date {\n                    flex: 0.7;\n                }\n\n                .hospital {\n                    flex: 1;\n                }\n\n                .status {\n                    flex: 0.4;\n                }\n\n                .button {\n                    flex: 0.5;\n                    > div {\n                        display: flex;\n                        height: 48px;\n                        border-radius: 4px;\n                        align-items: center;\n                        justify-content: center;\n                        border: 1px solid ${mainColor};\n                        cursor: pointer;\n                        transition: all 0.3s;\n\n                        span {\n                            font-size: ${sizeHandler(14)};\n                            font-weight: bold;\n                            color: ${mainColor};\n                        }\n\n                        &:hover {\n                            background-color: ${mainColor};\n                            span {\n                                color: white;\n                            }\n                        }\n                    }\n                }\n\n                .content.service {\n                    color: ${mainColor};\n                }\n            }\n            @media (max-width: 768px) {\n                .reserve-menu {\n                    flex-direction: column;\n                    align-items: flex-start;\n                    justify-content: flex-start;\n\n                    .contents {\n                        margin-bottom: 20px;\n                    }\n\n                    .button {\n                        width: 100%;\n                        > div {\n                            height: 40px;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    .section-title {\n        padding-bottom: 16px;\n        border-bottom: 1px solid #ececec;\n        margin-bottom: 48px;\n\n        p {\n            font-size: ${sizeHandler(18)};\n            color: #a7a7a7;\n            font-weight: bold;\n            margin: 0px;\n            padding: 0px;\n            opacity: 1;\n        }\n    }\n\n    .order-menu-mobile-wrapper {\n        // position: absolute;\n        // bottom: 68px;\n        // left: 0;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        flex-direction: column;\n        width: 100%;\n        padding: 10px;\n\n        p {\n            text-align: center;\n            font-size: ${sizeHandler(24)};\n            font-weight: bold;\n            color: white;\n        }\n\n        p:nth-child(1) {\n            font-size: ${sizeHandler(14)};\n            font-weight: normal;\n            letter-spacing: -0.3px;\n            text-align: center;\n            color: white;\n            lineheight: ${sizeHandler(20)};\n        }\n\n        button {\n            width: 100%;\n            height: 56px;\n            font-size: ${sizeHandler(16)};\n            font-weight: bold;\n            text-align: center;\n            color: #ffffff;\n            margin-top: 28px;\n        }\n\n        @media (min-width: 768px) {\n            display: none;\n        }\n    }\n`;\n\nexport default HomeStyledContainer;\n\nexport const UserMainContainer = styled.div`\n    width: 100%;\n    // min-height: calc(100vh - 55px);\n    // background-image: url('/assets/images/');\n\n    height: 100vh;\n    max-height: 628px;\n\n    background-color: linear-gradient(to top, #3bc1ff, #5b62f5);\n    background-image: url('/assets/images/w_main.png');\n\n    background-size: cover;\n    background-repeat: no-repeat;\n    background-position: center;\n\n    padding-top: calc((100vh - 55px) * 0.2);\n\n    @media (max-width: 768px) {\n        background-size: cover;\n        background-image: url('/assets/images/new_mainbg-mobile.png');\n\n        min-height: initial;\n        height: 600px;\n\n        padding-top: 354px;\n    }\n`;\n\nexport const InnerContainer = styled.div`\n    width: 100%;\n    max-width: 1120px;\n    margin: 0 auto;\n\n    @media (max-width: 1120px) {\n        padding-left: 32px;\n        padding-right: 32px;\n    }\n\n    @media (max-width: 768px) {\n        padding-left: 0px;\n        padding-right: 0px;\n    }\n`;\n\nexport const UserMainTitle = styled.div`\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: bold;\n    font-size: 50px;\n    line-height: 66px;\n\n    letter-spacing: -1.44444px;\n\n    color: #ffffff;\n\n    position: relative;\n    margin-bottom: 16px;\n\n    @media (max-width: 768px) {\n        > br {\n            display: block;\n        }\n\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: bold;\n        font-size: 22px;\n        line-height: 30px;\n\n        text-align: center;\n        color: #ffffff;\n\n        margin-bottom: 4px;\n    }\n`;\n\nexport const UserMainTitleDeco = styled.img`\n    position: absolute;\n\n    object-fit: contain;\n\n    @media (max-width: 768px) {\n        display: none;\n    }\n`;\n\nexport const DecoRight = styled(UserMainTitleDeco)`\n    top: 0px;\n    left: 240px;\n\n    width: 32px;\n    height: 32px;\n`;\n\nexport const DecoLeft = styled(UserMainTitleDeco)`\n    top: 36px;\n    left: -60px;\n\n    width: 22px;\n    height: 22px;\n`;\n\nexport const DecoLeftTop = styled(UserMainTitleDeco)`\n    top: -52px;\n    left: -62px;\n\n    width: 62px;\n    height: 62px;\n`;\n\nexport const UserMainSubtitle = styled.p`\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: normal;\n    font-size: 22px;\n    line-height: 30px;\n    color: rgba(255, 255, 255, 0.8);\n    letter-spacing: -0.4px;\n\n    margin-bottom: 44px;\n\n    @media (max-width: 768px) {\n        font-weight: normal;\n        font-size: 12px;\n        line-height: 22px;\n        letter-spacing: -0.3px;\n        text-align: center;\n\n        margin-bottom: 24px;\n    }\n`;\n\nexport const UserMainRoute = styled.div`\n    width: 100%;\n\n    @media (max-width: 768px) {\n        text-align: center;\n    }\n`;\n\nexport const UserMainRouteButton = styled.a`\n    display: inline-block;\n    width: 100%;\n    max-width: 360px;\n    height: 64px;\n    line-height: 64px;\n\n    background: #3bc1ff;\n    border: 1px solid #3bc1ff;\n    box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.1);\n    border-radius: 4px;\n\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: bold;\n    font-size: 19px;\n    letter-spacing: 0.2;\n\n    text-align: center;\n\n    color: #ffffff;\n    cursor: pointer;\n\n    &:hover {\n        transition: 0.5s;\n        opacity: 0.85;\n    }\n\n    @media (max-width: 768px) {\n        width: calc(100vw - 20px);\n        max-width: 360px;\n\n        height: 56px;\n        line-height: 56px;\n        font-size: 16px;\n\n        margin: 0 auto;\n    }\n`;\n\nexport const PartnerContainer = styled.div`\n    width: 100%;\n\n    padding-top: 60px;\n    padding-bottom: 60px;\n\n    @media (max-width: 768px) {\n        margin-top: 40px;\n    }\n`;\n\nexport const PartnerInnerContainer = styled.div`\n    width: 100%;\n    max-width: 1120px;\n\n    margin: 0 auto;\n\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    flex-direction: column;\n\n    position: relative;\n\n    -ms-overflow-style: none; /* IE and Edge */\n    scrollbar-width: none; /* Firefox */\n    &::-webkit-scrollbar {\n        display: none;\n    }\n\n    @media (max-width: 768px) {\n        padding-left: 24px;\n        padding-right: 24px;\n    }\n`;\n\nexport const PartnerTitle = styled.div`\n    display: flex;\n    flex-direction: column;\n    width: auto;\n\n    align-items: center;\n    margin-top: 10px;\n    margin-bottom: 46px;\n\n    > img {\n        width: 24px;\n        height: 24px;\n        object-fit: contain;\n\n        margin-bottom: 16px;\n    }\n\n    > span {\n        font-size: 24px;\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.3;\n        letter-spacing: -0.5px;\n        text-align: center;\n        // color: #3bc1ff;\n    }\n\n    @media (max-width: 1120px) {\n        width: 100%;\n        text-align: left;\n    }\n`;\n\nexport const PartnerListRow = styled.div`\n    display: flex;\n    width: 100%;\n\n    justify-content: space-between;\n    align-items: center;\n    text-align: center;\n    flex-wrap: wrap;\n\n    @media (max-width: 768px) {\n        justify-content: flex-start;\n    }\n\n    @media (max-width: 480px) {\n        justify-content: space-between;\n\n        > div:nth-child(2n) {\n            margin-right: 0px;\n        }\n    }\n`;\n\nexport const PartnerItem = styled.div`\n    margin-bottom: 10px;\n\n    width: 215px;\n    height: 76px;\n\n    border-radius: 4px;\n    // box-shadow: 2px 4px 16px -4px rgba(0, 0, 0, 0.1);\n    // border: 1px solid rgba(0, 0, 0, 0.1);\n\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    > img {\n        height: 100%;\n        width: 100%;\n        object-fit: cover;\n        transform: scale(1.1);\n    }\n\n    @media (max-width: 768px) {\n        margin-right: 8px;\n        margin-bottom: 8px;\n    }\n\n    @media (max-width: 480px) {\n        width: calc(50% - 4px);\n        height: calc((50vw - 24px) * 0.35);\n    }\n`;\n\nexport const SectionHeader = styled.div`\n    padding-bottom: 10px;\n    margin-bottom: 66px;\n\n    border-bottom: 1px solid #e9e9e9;\n\n    display: flex;\n    align-items: flex-end;\n\n    > img {\n        width: 58px;\n        height: 76px;\n        object-fit: contain;\n\n        margin-right: 16px;\n    }\n\n    > span {\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: bold;\n        font-size: 26px;\n        line-height: 50px;\n\n        text-align: center;\n        letter-spacing: -0.777778px;\n\n        color: rgba(0, 0, 0, 0.8);\n    }\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n        align-items: center;\n        justify-content: center;\n        > img {\n            width: 48px;\n            height: 48px;\n\n            margin-bottom: 10px;\n        }\n\n        > span {\n            font-size: 20px;\n            line-height: 32px;\n            text-align: center;\n            letter-spacing: -0.555556px;\n        }\n    }\n`;\n\nexport const ServiceListContainer = styled.div`\n    margin-bottom: 102px;\n\n    @media (max-width: 1120px) {\n        padding-left: 20px;\n        padding-right: 20px;\n    }\n`;\n\nexport const ServiceListInnerContainer = styled.div`\n    width: 100%;\n    max-width: 1120px;\n\n    margin: 0 auto;\n`;\n\nexport const ServiceBoxWrapper = styled.div`\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n    }\n`;\n\nexport const ServiceBoxContainer = styled.div`\n    margin-right: 20px;\n\n    &:last-child {\n        margin-right: 0px;\n    }\n\n    @media (max-width: 768px) {\n        margin-right: 0px;\n    }\n\n    margin-bottom: 46px;\n`;\n\nexport const ServiceBoxHeader = styled.div`\n    > p:first-child {\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: bold;\n        font-size: 12px;\n        line-height: 26px;\n\n        letter-spacing: -0.3px;\n    }\n\n    > p:last-child {\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: bold;\n        font-size: 20px;\n        line-height: 32px;\n\n        letter-spacing: -0.6px;\n    }\n`;\n\nexport const ServiceBoxImageWrapper = styled.div`\n    border-radius: 6px;\n    overflow: hidden;\n`;\n\nexport const ServiceBoxImg = styled.img`\n    width: calc((1120px / 3) - (40px / 3));\n    max-width: 360px;\n    object-fit: contain;\n\n    @media (max-width: 1120px) {\n        max-width: 280px;\n    }\n\n    @media (max-width: 900px) {\n        max-width: 240px;\n    }\n\n    @media (max-width: 768px) {\n        max-width: 300px;\n    }\n`;\n\nexport const ServiceBoxButtons = styled.div`\n    width: 100%;\n    display: flex;\n\n    margin-top: -12px;\n`;\n\nexport const MoreButton = styled.a`\n    width: 132px;\n    height: 48px;\n\n    text-align: center;\n    line-height: 48px;\n\n    background: #606060;\n\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: bold;\n    font-size: 13px;\n\n    color: #ffffff;\n\n    cursor: pointer;\n`;\n\nexport const ActionButton = styled.span`\n    flex: 1;\n\n    height: 48px;\n    line-height: 48px;\n\n    text-align: center;\n\n    background: #3bc1ff;\n\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: bold;\n    font-size: 13px;\n\n    color: #ffffff;\n\n    > img {\n        margin-right: 6px;\n\n        width: 18px;\n        height: 18px;\n        object-fit: contain;\n    }\n\n    cursor: pointer;\n`;\n\nexport const IntroduceSection = styled.div`\n    display: flex;\n    align-items: center;\n\n    margin-bottom: 40px;\n\n    > div {\n        width: 50%;\n        flex: 1;\n    }\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n    }\n`;\n\nexport const IntroduceSectionFst = styled(IntroduceSection)`\n    div.text-block {\n        @media (max-width: 768px) {\n            order: 2;\n            width: 100%;\n\n            p {\n                text-align: center;\n            }\n        }\n    }\n\n    div.img-block {\n        position: relative;\n        text-align: center;\n\n        display: flex;\n        align-items: center;\n        height: 100px;\n\n        img {\n            position: absolute;\n            bottom: -50px;\n\n            left: 5%;\n\n            width: 50%;\n            object-fit: contain;\n        }\n\n        @media (max-width: 768px) {\n            order: 1;\n            width: 100%;\n            justify-content: center;\n\n            margin-bottom: 14px;\n\n            > img {\n                position: initial;\n            }\n        }\n    }\n`;\n\nexport const IntroduceSectionSnd = styled(IntroduceSection)`\n    div.text-block {\n        @media (max-width: 768px) {\n            width: 100%;\n        }\n    }\n\n    div.img-block {\n        text-align: center;\n        width: 100%;\n\n        img {\n            width: 50%;\n            object-fit: cover;\n\n            @media (max-width: 768px) {\n                object-fit: contain;\n                margin-bottom: 14px;\n            }\n        }\n    }\n`;\n\nexport const IntroduceSectionTrd = styled(IntroduceSection)`\n    div.text-block {\n        @media (max-width: 768px) {\n            width: 100%;\n        }\n    }\n\n    div.img-block {\n        text-align: center;\n        width: 100%;\n\n        img {\n            width: 50%;\n            object-fit: cover;\n\n            @media (max-width: 768px) {\n                width: 65%;\n                object-fit: contain;\n                margin-bottom: 14px;\n            }\n        }\n    }\n`;\n\nexport const IntroduceTitle = styled.p`\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: bold;\n    font-size: 22px;\n    line-height: 48px;\n\n    letter-spacing: -0.666667px;\n\n    color: rgba(0, 0, 0, 0.8);\n\n    @media (max-width: 768px) {\n        font-size: 18px;\n        line-height: 28px;\n        letter-spacing: -0.5px;\n    }\n`;\n\nexport const IntroduceContent = styled.p`\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: normal;\n    font-size: ${props => (props.small ? '13px' : '16px')};\n    line-height: ${props => (props.small ? '22px' : '30px')};\n\n    letter-spacing: -0.3px;\n    color: rgba(0, 0, 0, 0.7);\n\n    > span {\n        font-weight: bold;\n    }\n\n    @media (max-width: 768px) {\n        word-break: keep-all;\n        font-size: ${props => (props.small ? '12px' : '14px')};\n        line-height: ${props => (props.small ? '20px' : '23px')};\n    }\n`;\n\nexport const MobileBr = styled.br`\n    display: none;\n    @media (max-width: 768px) {\n        display: block;\n    }\n`;\n\nexport const DesktopBr = styled.br`\n    display: block;\n    @media (max-width: 768px) {\n        display: none;\n    }\n`;\n\nexport const SpecListRow = styled.div`\n    display: flex;\n    align-items: flex-start;\n\n    width: 100%;\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n    }\n`;\n\nexport const SpecWrapper = styled.div`\n    margin-bottom: 28px;\n    margin-right: 20px;\n\n    &:last-child {\n        margin-right: 0px;\n    }\n\n    width: calc((100% / 3) - (40px / 3));\n\n    @media (max-width: 768px) {\n        width: 100%;\n        margin-right: 0px;\n    }\n`;\n\nexport const SpecIndex = styled.p`\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: bold;\n    font-size: 12px;\n    line-height: 16px;\n\n    letter-spacing: -0.333333px;\n    color: rgba(0, 0, 0, 0.2);\n\n    margin-bottom: 4px;\n`;\n\nexport const SpecTitleWrapper = styled.div`\n    display: flex;\n    align-items: center;\n\n    text-align: left;\n\n    > img {\n        width: 24px;\n        height: 24px;\n\n        margin-right: 8px;\n        object-fit: contain;\n    }\n\n    > span {\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: bold;\n        font-size: 20px;\n        line-height: 44px;\n\n        letter-spacing: -0.666667px;\n\n        color: rgba(0, 0, 0, 0.8);\n    }\n`;\n\nexport const SpecContent = styled.p`\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: normal;\n    font-size: 13px;\n    line-height: 22px;\n\n    color: rgba(0, 0, 0, 0.7);\n\n    margin-bottom: 0px;\n\n    > span {\n        font-weight: bold;\n    }\n\n    @media (max-width: 768px) {\n        br {\n            display: block;\n        }\n    }\n`;\n\nexport const ButtonWrapper = styled.div`\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n\n    width: 360px;\n\n    > div,\n    span,\n    a {\n        width: calc(50% - 4px);\n    }\n\n    @media (max-width: 768px) {\n        margin: 0 auto;\n    }\n`;\n","import React from 'react';\nimport CountUp from 'react-countup';\nimport styled from 'styled-components';\n\nimport { DivisionLine } from '../../../../../Components/Common/input';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faUsers, faHospitalUser } from '@fortawesome/free-solid-svg-icons';\nimport { faRectangleList } from '@fortawesome/free-regular-svg-icons';\n\nimport { Swiper, SwiperSlide } from 'swiper/react';\nimport SwiperCore, { Pagination, Navigation, Autoplay } from 'swiper';\nimport 'swiper/swiper-bundle.min.css';\nimport 'swiper/swiper.min.css';\nimport 'swiper/components/navigation/navigation.min.css';\nimport 'swiper/components/pagination/pagination.min.css';\nimport { MobileBr } from '../../home.styled';\nimport { Button } from 'antd';\n\nSwiperCore.use([Navigation, Pagination, Autoplay]);\n\nexport const UserNumberCount = () => {\n    function handleClick(e) {\n        window.location.href = '/360F/review/list';\n    }\n\n    return (\n        <div className='container' style={{ height: '700px' }}>\n            <RollingContainer>\n                <div className='numberCount' style={{ textAlign: 'center' }}>\n                    <NumberLabel>\n                        <FontAwesomeIcon icon={faHospitalUser} style={{ paddingRight: '6px' }} />총 가입자 수\n                    </NumberLabel>\n                    <br />\n                    <CountUp className='numberCount' end={1557} suffix=' 명' style={{ fontWeight: 'bold' }} />\n                </div>\n\n                <div className='numberCount' style={{ textAlign: 'center', paddingLeft: '7%' }}>\n                    <NumberLabel>\n                        <FontAwesomeIcon icon={faUsers} style={{ paddingRight: '6px' }} />\n                        메이트 수\n                    </NumberLabel>\n                    <br />\n                    <CountUp end={612} suffix=' 명' style={{ fontWeight: 'bold' }} />\n                </div>\n\n                <div className='numberCount' style={{ textAlign: 'center', paddingLeft: '7%' }}>\n                    <NumberLabel>\n                        <FontAwesomeIcon icon={faRectangleList} style={{ paddingRight: '6px' }} />총 이용 건수\n                    </NumberLabel>\n                    <br />\n                    <CountUp end={5000} suffix=' 건 <i class=\"fa-solid fa-arrow-up\" style=\"color: #3bc1ff\"></i>' style={{ fontWeight: 'bold' }} />\n                </div>\n            </RollingContainer>\n            <SatisfactionContainer>\n                <SatisfactionLabel>\n                    만족도 200% 이용 후기와 서비스 만족도 98% <MobileBr />\n                    \"위드메이트\" 에게 맡겨주세요\n                </SatisfactionLabel>\n            </SatisfactionContainer>\n\n            <DivisionLine />\n\n            <ReviewContainer>\n                <Swiper\n                    direction={'horizontal'} // 슬라이드의 방향을 수직으로 설정합니다.\n                    spaceBetween={10}\n                    slidesPerView={1}\n                    breakpoints={{\n                        768: {\n                            slidesPerView: 1,\n                            spaceBetween: -50,\n                        },\n                    }}\n                    pagination={{ clickable: true }} // 우측의 점을 클릭했을 때, 클릭한 슬라이드로 이동하게 됩니다.\n                    navigation\n                    modules={[Pagination]} // 페이지네이션, 마우스휠등을 사용하려면 모듈을 import해줘야 합니다.\n                    allowTouchMove // 터치 동작을 허용합니다.\n                    className='main_slider'\n                    threshold={20} // 터치 감도를 조정합니다. 숫자가 클수록 터치에 반응하지 않습니다.\n                    autoplay={{ delay: 1500 }}\n                    loop={true}\n                    speed={1000} // 슬라이드가 넘어가는 속도를 조정합니다. 단위는 ms입니다.\n                >\n                    <SwiperSlide>\n                        <ReviewMainContainer>\n                            <ReviewMainInnerContainer>\n                                <ImgStyle>\n                                    <img src={'/assets/images/review/review1.png'} style={{ width: '100%', height: '100%' }} alt='' />\n                                </ImgStyle>\n                            </ReviewMainInnerContainer>\n                        </ReviewMainContainer>\n                    </SwiperSlide>\n\n                    <SwiperSlide>\n                        <ReviewMainInnerContainer>\n                            <ImgStyle>\n                                <img src={'/assets/images/review/review2.png'} style={{ width: '100%', height: '100%' }} alt='' />\n                            </ImgStyle>\n                        </ReviewMainInnerContainer>\n                    </SwiperSlide>\n\n                    <SwiperSlide>\n                        <ReviewMainInnerContainer>\n                            <ImgStyle>\n                                <img src={'/assets/images/review/review3.png'} style={{ width: '100%', height: '100%' }} alt='' />\n                            </ImgStyle>\n                        </ReviewMainInnerContainer>\n                    </SwiperSlide>\n\n                    <SwiperSlide>\n                        <ReviewMainInnerContainer>\n                            <ImgStyle>\n                                <img src={'/assets/images/review/review4.png'} style={{ width: '100%', height: '100%' }} alt='' />\n                            </ImgStyle>\n                        </ReviewMainInnerContainer>\n                    </SwiperSlide>\n\n                    <SwiperSlide>\n                        <ReviewMainInnerContainer>\n                            <ImgStyle>\n                                <img src={'/assets/images/review/review5.png'} style={{ width: '100%', height: '100%' }} alt='' />\n                            </ImgStyle>\n                        </ReviewMainInnerContainer>\n                    </SwiperSlide>\n\n                    <SwiperSlide>\n                        <ReviewMainInnerContainer>\n                            <ImgStyle>\n                                <img src={'/assets/images/review/review6.png'} style={{ width: '100%', height: '100%' }} alt='' />\n                            </ImgStyle>\n                        </ReviewMainInnerContainer>\n                    </SwiperSlide>\n                </Swiper>\n            </ReviewContainer>\n            <DivisionLine />\n\n            <Button\n                type='primary'\n                style={{\n                    justifyContent: 'center',\n                    alignItems: 'center',\n                    display: 'flex',\n                    margin: '0 auto',\n                    width: '200px',\n                    height: '46px',\n                    borderRadius: '10px',\n                    fontSize: '20px',\n                }}\n                onClick={handleClick}\n            >\n                이용후기 더보기\n            </Button>\n        </div>\n    );\n};\n\nconst ReviewContainer = styled.div`\n    width: 42%;\n    margin-top: 10px;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    margin: 0 auto;\n\n    @media (max-width: 768px) {\n        width: 100%;\n    }\n`;\n\nconst ReviewMainContainer = styled.div`\n    width: 100%;\n    height: 330px;\n\n    @media (max-width: 768px) {\n        height: 330px;\n    }\n`;\n\nconst ReviewMainInnerContainer = styled.div`\n    max-width: 500px;\n    height: 100%;\n    margin: 0 auto;\n\n    padding-top: 10px;\n\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n\n    @media (max-width: 768px) {\n    }\n`;\n\nconst RollingContainer = styled.div`\n    padding-top: 10px;\n    padding-bottom: 20px;\n    justify-content: center;\n    display: flex;\n    flex-direction: initial;\n    background-color: #f9f9f9;\n\n    .numberCount {\n        font-size: 35px;\n    }\n\n    @media (max-width: 768px) {\n        justify-content: center;\n\n        .numberCount {\n            font-size: 20px;\n        }\n    }\n`;\n\nconst ImgStyle = styled.div`\n    width: 330px;\n    height: auto;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    margin: 0 auto;\n\n    @media (max-width: 768px) {\n        width: 280px;\n        height: auto;\n    }\n`;\n\nconst SatisfactionContainer = styled.label`\n    padding-top: 20px;\n    justify-content: center;\n    display: flex;\n    flex-direction: initial;\n\n    @media (max-width: 768px) {\n    }\n`;\n\nconst SatisfactionLabel = styled.label`\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: normal;\n    font-size: 20px;\n    font-weight: bold;\n    text-align: center;\n\n    @media (max-width: 768px) {\n        font-size: 15px;\n    }\n`;\n\nconst NumberLabel = styled.label`\n    font-family: Noto Sans KR;\n    font-style: normal;\n    font-weight: normal;\n    font-size: 20px;\n\n    @media (max-width: 768px) {\n        font-size: 12px;\n    }\n`;\n","import React from 'react';\n\n// components\nimport { PartnerContainer, PartnerInnerContainer, PartnerTitle, PartnerListRow, PartnerItem } from '../home.styled';\n\nexport const WithmatePartners = ({}) => {\n    const baseUrl = '/assets/images/partners/';\n    const fstRow = [\n        baseUrl + 'new-goyang.png',\n        baseUrl + 'new-gov-care.png',\n        baseUrl + 'new-cancel.png',\n        baseUrl + 'aju.png',\n        baseUrl + 'new-goyang-happy.png',\n    ];\n    const sndRow = [\n        baseUrl + 'new-junglang-woman.png',\n        baseUrl + 'new-paju_woman.png',\n        baseUrl + 'new-beatus.png',\n        baseUrl + 'new-cheongdam.png',\n        baseUrl + 'new-hyo-hospital.png',\n    ];\n\n    const trdRow = [baseUrl + 'ssn.png', baseUrl + 'limo-korea.png', baseUrl + 'help-you.png', baseUrl + 'errichi.png', baseUrl + 'new-imagine-us.png'];\n\n    const fthRow = [baseUrl + 'iu-hosp.png', baseUrl + 'new-gpcop.png', baseUrl + 'goyohanM.png', baseUrl + 'carehouse.jpeg', baseUrl + 'bravo.png'];\n\n    const ftfRow = [baseUrl + 'dlive.png', baseUrl + 'sungmo.png', baseUrl + 'metlife.png', baseUrl + 'aju_nursing_hospital.png', baseUrl + 'yongin.png'];\n\n    return (\n        <PartnerContainer id='partners'>\n            <PartnerInnerContainer>\n                <PartnerTitle>\n                    <span>\n                        <img src='/assets/images/partners_map.png' style={{ width: '32px', height: 'auto', paddingBottom: '10px' }} /> 파트너사\n                    </span>\n                    <p style={{ color: '#a9a9a9', fontSize: '18px' }}>위드메이트와 함께하는 협력 파트너사입니다.</p>\n                </PartnerTitle>\n                <PartnerListRow>\n                    <PartnerItem>\n                        <img src={fstRow[0]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={fstRow[1]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={fstRow[2]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={fstRow[3]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={fstRow[4]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={sndRow[0]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={sndRow[1]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={sndRow[2]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={sndRow[3]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={sndRow[4]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={trdRow[0]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={trdRow[1]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={trdRow[2]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={trdRow[3]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={trdRow[4]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={fthRow[0]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={fthRow[1]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={fthRow[2]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={fthRow[3]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={fthRow[4]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={ftfRow[0]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={ftfRow[1]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={ftfRow[2]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={ftfRow[3]} />\n                    </PartnerItem>\n                    <PartnerItem>\n                        <img src={ftfRow[4]} />\n                    </PartnerItem>\n                </PartnerListRow>\n            </PartnerInnerContainer>\n        </PartnerContainer>\n    );\n};\n","import React from 'react';\n\nimport { MATE } from '../../../Lib/variables';\nimport 'slick-carousel/slick/slick.css';\nimport 'slick-carousel/slick/slick-theme.css';\n\n// section\nimport Reserve from './Section/reserve';\nimport { UserMain as RenewMain } from './Section/renew/main';\nimport { GuideDetail } from '../../Guide/Section/detail';\nimport { UserGuideSection } from './Section/renew/guide';\nimport { UserNumberCount } from './Section/renew/numberCount';\n\nimport { WithmatePartners } from './Section/partners';\n\nexport default class HomePage extends React.PureComponent {\n    state = {\n        searchModal: false,\n    };\n\n    componentDidMount = async () => {};\n\n    render() {\n        const { userType } = this.props.auth;\n\n        return (\n            <div id='#main'>\n                {userType === MATE ? (\n                    <>\n                        <Reserve {...this.props} />\n                    </>\n                ) : (\n                    <>\n                        <RenewMain {...this.props} />\n                        <UserNumberCount />\n                        <GuideDetail />\n                        <UserGuideSection />\n                        <WithmatePartners />\n                        {/* <UserMainBanner\n                            goPage={() => {\n                                this.props.history.push('/nemt/service');\n                            }}\n                        /> */}\n                    </>\n                )}\n            </div>\n        );\n    }\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\n\n// component\nimport Home from './home';\nimport { MATE } from '../../../Lib/variables';\n\n// styles\nimport HomeStyledContainer from './home.styled';\n\n// actions\nimport {\n    editResrveForm,\n    getServiceInfo,\n    serviceReserve,\n    getUserInfo,\n    getContractPartners,\n    acceptCall,\n    editReserveDetailView,\n    editReserveLatestView,\n    editViewType,\n    editCallPage,\n    editContractForm,\n} from '../../../Reducer/Modules/app';\nimport { editAuth } from '../../../Reducer/Modules/auth';\n\nclass HomeContainer extends React.PureComponent {\n    componentDidMount = () => {\n        const id = localStorage.getItem('id');\n        const userType = localStorage.getItem('userType');\n\n        if (id && userType === MATE) {\n        } else {\n            const prevList = localStorage.getItem('partners');\n            if (prevList) {\n                const list = JSON.parse(prevList);\n                this.props.editContractForm({ type: 'partners', value: list });\n            }\n\n            this.props.fetchPartners();\n        }\n    };\n\n    render() {\n        return (\n            <HomeStyledContainer>\n                <Home {...this.props} />\n            </HomeStyledContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({ app, auth }) => ({\n    app,\n    auth,\n});\n\nconst mapStateToDispatch = dispatch => ({\n    editAuth: ({ type, value }) => dispatch(editAuth({ type, value })),\n    editForm: ({ type, value }) => dispatch(editResrveForm({ type, value })),\n    editLatest: ({ value }) => dispatch(editReserveLatestView({ value })),\n    editDetail: ({ value }) => dispatch(editReserveDetailView({ value })),\n    editViewType: ({ value }) => dispatch(editViewType({ value })),\n    editCallPage: value => dispatch(editCallPage(value)),\n    editContractForm: ({ type, value }) => dispatch(editContractForm({ type, value })),\n\n    getServiceInfo: ({ code }) => dispatch(getServiceInfo({ code })),\n    getUserInfo: ({ id, userType }) => dispatch(getUserInfo({ id, userType })),\n    fetchPartners: () => dispatch(getContractPartners()),\n    serviceReserve: ({ userId, info }) => dispatch(serviceReserve({ userId, info })),\n    acceptCall: ({ mateId, callId }) => dispatch(acceptCall({ mateId, callId })),\n});\n\nexport default connect(mapStateToProps, mapStateToDispatch)(HomeContainer);\n","import styled from 'styled-components';\n\nconst StyledContainer = styled.div``;\n\nexport default StyledContainer;\n\nexport const Container = styled.div`\n    padding-top: 55px;\n`;\n\nexport const GuideNavContainer = styled.div`\n    width: 100%;\n    background-color: #ffffff;\n\n    border-bottom: 4px solid #f2f2f2;\n`;\n\nexport const InnerContainer = styled.div`\n    width: 100%;\n\n    max-width: 1120px;\n    margin: 0 auto;\n\n    // @media (max-width: 1120px) {\n    //     padding-left: 32px;\n    //     padding-right: 32px;\n    // }\n\n    @media (max-width: 768px) {\n        padding-left: 20px;\n        padding-right: 20px;\n    }\n`;\n\nexport const GuideNavWrapper = styled.div`\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n\n    padding-top: 16px;\n    padding-bottom: 16px;\n\n    @media (max-width: 768px) {\n        overflow-x: scroll;\n    }\n`;\n\nexport const NavTab = styled.div`\n    > a {\n        cursor: pointer;\n        font-size: 22px;\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.42;\n        letter-spacing: -0.5px;\n        text-align: left;\n\n        white-space: nowrap;\n\n        color: ${props => (props.active ? '#3BC1FF' : 'rgba(0,0,0,0.6)')};\n\n        display: inline-block;\n    }\n\n    @media (max-width: 768px) {\n        margin-right: 40px;\n\n        > a {\n            font-size: 16px;\n        }\n    }\n`;\n\nexport const GuideConceptContainer = styled.div`\n    margin-top: 102px;\n`;\n\nexport const GuideConceptTitle = styled.p`\n    font-size: 24px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.3;\n    letter-spacing: -0.5px;\n    text-align: center;\n    color: rgba(0, 0, 0, 0.8);\n\n    margin-bottom: 50px;\n`;\n\nexport const GuideConceptImageWrapper = styled.div`\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    width: 100%;\n\n    margin-bottom: 40px;\n`;\n\nexport const GuideConceptImage = styled.img`\n    height: 200px;\n    object-fit: contain;\n\n    @media (max-width: 768px) {\n        display: none;\n    }\n`;\n\nexport const GuideConceptImageMobile = styled.img`\n    display: none;\n\n    height: 300px;\n    object-fit: contain;\n\n    @media (max-width: 768px) {\n        display: block;\n    }\n`;\n\nexport const GuideConceptTextWrapper = styled.div`\n    display: flex;\n    align-items: flex-start;\n    justify-content: center;\n\n    margin-bottom: 122px;\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n    }\n`;\n\nexport const GuideConceptTextBlock = styled.div`\n    &:first-child {\n        margin-right: 20px;\n\n        @media (max-width: 768px) {\n            margin-right: 0px;\n\n            margin-bottom: 16px;\n        }\n    }\n\n    font-size: 18px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.67;\n    letter-spacing: -0.2px;\n    text-align: left;\n    word-break: keep-all;\n\n    letter-spacing: -0.3px;\n    color: rgba(0, 0, 0, 0.7);\n\n    @media (max-width: 768px) {\n        font-size: 16px;\n        font-weight: normal;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.75;\n        letter-spacing: -0.2px;\n        text-align: left;\n    }\n\n    > span {\n        font-weight: bold;\n    }\n`;\n\nexport const MobileBr = styled.br`\n    display: none;\n\n    @media (max-width: 768px) {\n        display: block;\n    }\n\n    @media (max-width: 320px) {\n        display: none;\n    }\n`;\n\nexport const DesktopBr = styled.br`\n    display: block;\n\n    @media (max-width: 768px) {\n        display: none;\n    }\n`;\n\nexport const MeritContainer = styled.div`\n    background-color: #ffffff;\n\n    padding-top: 100px;\n    padding-bottom: 80px;\n`;\n\nexport const MeritHeaderWrapper = styled.div`\n    width: 100%;\n    padding-bottom: 10px;\n    border-bottom: 2px solid #f2f2f2;\n\n    div.wrap {\n        display: flex;\n        align-items: flex-end;\n        justify-content: flex-start;\n    }\n\n    img {\n        width: 72px;\n        height: 72px;\n        object-fit: contain;\n\n        margin-right: 10px;\n    }\n\n    h3 {\n        font-size: 24px;\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.3;\n        letter-spacing: -0.5px;\n        text-align: left;\n        color: rgba(0, 0, 0, 0.7);\n        margin-bottom: 0px;\n    }\n`;\n\nexport const MeritCardList = styled.div`\n    display: flex;\n    flex-wrap: wrap;\n\n    padding-top: 64px;\n`;\n\nexport const MeritCardWrapper = styled.div`\n    height: 260px;\n    width: 33.333%;\n\n    @media (max-width: 768px) {\n        width: 100%;\n        height: auto;\n        margin-bottom: 24px;\n    }\n`;\n\nexport const MeritCardNumber = styled.p`\n    font-size: 14px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.43;\n    letter-spacing: normal;\n    text-align: left;\n    color: #afb0b2;\n    margin-bottom: 16px;\n`;\n\nexport const MeritCardTitleRow = styled.div`\n    display: flex;\n    align-items: center;\n\n    > img {\n        width: 20px;\n        height: 20px;\n        object-fit: contain;\n        margin-right: 10px;\n    }\n\n    > span {\n        font-size: 20px;\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.54;\n        letter-spacing: -0.1px;\n        text-align: left;\n        color: rgba(0, 0, 0, 0.7);\n    }\n`;\n\nexport const MeritCardDesc = styled.div`\n    font-size: 18px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.65;\n    letter-spacing: -0.2px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    > span {\n        font-weight: bold;\n    }\n\n    @media (max-width: 768px) {\n        font-size: 15px;\n    }\n`;\n\nexport const GuideDetailContainer = styled.div`\n    background-color: #f9f9f9;\n\n    padding-top: 56px;\n    padding-bottom: 100px;\n`;\n\nexport const GuideDetailServiceCardWrapper = styled.div`\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n    }\n`;\n\nexport const GuideDetailServiceCard = styled.div`\n    width: 360px;\n    padding: 34px 32px;\n\n    background: #ffffff;\n    box-shadow: 2px 4px 16px -4px rgba(0, 0, 0, 0.1);\n    border: 1px solid rgba(0, 0, 0, 0.1);\n    border-radius: 4px;\n\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n\n    @media (max-width: 768px) {\n        margin-bottom: 24px;\n        width: 100%;\n\n        padding: 34px 16px;\n    }\n`;\n\nexport const GuideCardImage = styled.img`\n    width: 124px;\n    height: 124px;\n    border-radius: 50%;\n\n    margin-bottom: 40px;\n`;\n\nexport const GuideCardSpecTitle = styled.p`\n    width: 100%;\n    font-size: 18px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.26;\n    letter-spacing: -0.1px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n    margin-bottom: 24px;\n`;\n\nexport const GuideCardSpecRow = styled.div`\n    display: flex;\n    width: 100%;\n    align-items: flex-start;\n\n    margin-bottom: 24px;\n\n    > span {\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        // line-height: 1.43;\n        letter-spacing: normal;\n        text-align: left;\n        color: #3bc1ff;\n        margin-right: 10px;\n    }\n\n    > p {\n        width: 100%;\n        flex: 1;\n        font-size: 17px;\n        font-weight: normal;\n        font-stretch: normal;\n        font-style: normal;\n        // line-height: 1.65;\n        letter-spacing: -0.3px;\n        text-align: left;\n        color: rgba(0, 0, 0, 0.7);\n    }\n`;\n\nexport const GuideCardName = styled.p`\n    width: 100%;\n    font-size: 16px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.42;\n    letter-spacing: -0.1px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n    margin-bottom: 2px;\n`;\n\nexport const GuideCardType = styled.h3`\n    width: 100%;\n    font-size: 26px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.2;\n    letter-spacing: -0.5px;\n    text-align: left;\n    color: #3bc1ff;\n    margin-bottom: 24px;\n`;\n\nexport const GuideCardDescription = styled.p`\n    width: 100%;\n    font-size: 16px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.5;\n    letter-spacing: -0.3px;\n    text-align: left;\n    color: rgba(0, 0, 0, 0.7);\n\n    > span {\n        font-weight: bold;\n    }\n\n    margin-bottom: 60px;\n`;\n\nexport const GuideDetailSubFlexWrapper = styled.div`\n    display: flex;\n    justify-content: content;\n    align-items: flex-start;\n\n    @media (max-width: 768px) {\n        flex-direction: column;\n    }\n`;\n\nexport const GuideDetailButtonWrapper = styled(GuideDetailSubFlexWrapper)`\n    border-radius: 4px;\n    overflow: hidden;\n\n    > span.button {\n        cursor: pointer;\n        display: inline-block;\n\n        flex: 1;\n        height: 44px;\n        line-height: 44px;\n\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: bold;\n        font-size: 12px;\n        text-align: center;\n        color: #ffffff;\n\n        @media (max-width: 768px) {\n            width: 100%;\n        }\n    }\n\n    > span.gray {\n        background-color: #606060;\n\n        @media (max-width: 768px) {\n            margin-bottom: 8px;\n        }\n    }\n\n    > span.blue {\n        background-color: #3bc1ff;\n    }\n`;\n\nexport const GuideDetailSubFlexbox = styled.div`\n    flex: 1;\n\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n\n    > p {\n        margin-bottom: 20px;\n\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: normal;\n        font-size: 12px;\n        line-height: 18px;\n\n        text-align: left;\n\n        letter-spacing: -0.3px;\n        color: rgba(0, 0, 0, 0.7);\n    }\n\n    @media (max-width: 768px) {\n        width: 100%;\n    }\n`;\n\nexport const GuideUsingContainer = styled.div`\n    padding-top: 62px;\n    padding-bottom: 78px;\n    background-color: #f9f9f9;\n`;\n\nexport const GuideUsingSubFlexWrapper = styled(GuideDetailSubFlexWrapper)`\n    align-items: center;\n    justify-content: center;\n\n    @media (max-width: 768px) {\n        align-items: flex-start;\n        padding-left: 40px;\n    }\n`;\n\nexport const GuideUsingFlexbox = styled(GuideDetailSubFlexbox)`\n    align-items: center;\n    flex: initial;\n    min-width: 320px;\n\n    > p.index {\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: bold;\n        font-size: 10px;\n        line-height: 14px;\n\n        letter-spacing: -0.333333px;\n        color: rgba(0, 0, 0, 0.2);\n\n        margin-bottom: 16px;\n    }\n\n    > p {\n        width: auto;\n        text-align: center;\n    }\n\n    > p.title {\n        font-family: Noto Sans KR;\n        font-style: normal;\n        font-weight: bold;\n        font-size: 16px;\n        line-height: 22px;\n\n        text-align: center;\n        letter-spacing: -0.6px;\n    }\n\n    > div {\n        display: flex;\n        justify-content: center;\n\n        margin-bottom: 16px;\n\n        img {\n            height: 90px;\n            object-fit: contain;\n        }\n    }\n\n    margin-bottom: 44px;\n`;\n\nexport const GuideUsageFlexbox = styled.div`\n    flex: 1;\n\n    display: flex;\n    align-items: center;\n    justify-content: flex-start;\n\n    margin-bottom: 68px;\n\n    @media (max-width: 768px) {\n        margin-bottom: 32px;\n        // width: 230px;\n        align-items: ;\n    }\n\n    div {\n        // width: 120px;\n\n        img {\n            width: 64px;\n            height: 64px;\n            margin-right: 34px;\n            object-fit: contain;\n        }\n\n        // @media (max-width: 768px) {\n        //     width: 70px;\n\n        //     img {\n        //         height: 32px;\n        //     }\n        // }\n    }\n\n    span {\n        font-size: 18px;\n        font-weight: normal;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.65;\n        letter-spacing: -0.2px;\n        text-align: left;\n        color: rgba(0, 0, 0, 0.7);\n\n        // @media (max-width: 768px) {\n        //     font-size: 13px;\n        //     line-height: 19px;\n        // }\n    }\n`;\n\nexport const WithmateContainer = styled.div`\n    padding-top: 56px;\n    // padding-bottom: 120px;\n`;\n\nexport const FlexDivWrapper = styled.div`\n    display: flex;\n    width: 100%;\n\n    ${props => props.top && `margin-bottom: 72px;`}\n`;\n\nexport const HiddenType = styled.div`\n    @media (max-width: 768px) {\n        ${props => props.mHidden && `display: none;`}\n    }\n`;\n\nexport const BigSideBox = styled(HiddenType)`\n    width: 58%;\n\n    @media (max-width: 768px) {\n        width: 100%;\n    }\n`;\n\nexport const SmallSideBox = styled(HiddenType)`\n    width: 42%;\n\n    @media (max-width: 768px) {\n        width: 100%;\n    }\n`;\n\nexport const WithmateBg = styled.div`\n    width: 100%;\n    height: 100%;\n\n    background-image: url(${props => props.bg});\n    background-size: 80% auto;\n    background-position: center;\n    background-repeat: no-repeat;\n`;\n\nexport const WithmateTitle = styled.div`\n    > img {\n        width: 72.5px;\n        height: 48px;\n        object-fit: contain;\n        margin-right: 8px;\n    }\n\n    > span {\n        font-size: 28px;\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.11;\n        letter-spacing: -0.5px;\n        text-align: left;\n        color: rgba(0, 0, 0, 0.7);\n    }\n\n    display: flex;\n    align-items: flex-end;\n    margin-bottom: 24px;\n`;\n","import React from 'react';\nimport { HashLink } from 'react-router-hash-link';\n\n// components\nimport { GuideNavContainer, InnerContainer, GuideNavWrapper, NavTab } from '../guide.styled';\n\nexport const GuideNav = ({ activeTab, onTab }) => {\n    return (\n        <GuideNavContainer>\n            <InnerContainer>\n                <GuideNavWrapper>\n                    <NavTab active={activeTab === 'withmate'}>\n                        <HashLink\n                            to='/360F/nemt/service/#withmate'\n                            scroll={el => el.scrollIntoView({ behavior: 'smooth', block: 'nearest' })}\n                            onClick={() => {\n                                onTab('withmate');\n                            }}\n                        >\n                            위드메이트란?\n                        </HashLink>\n                    </NavTab>\n                    <NavTab active={activeTab === 'types'}>\n                        <HashLink\n                            to='/360F/nemt/service/#types'\n                            scroll={el => el.scrollIntoView({ behavior: 'smooth', block: 'nearest' })}\n                            onClick={() => {\n                                onTab('types');\n                            }}\n                        >\n                            서비스 종류\n                        </HashLink>\n                    </NavTab>\n                    <NavTab active={activeTab === 'merit'}>\n                        <HashLink\n                            to='/360F/nemt/service/#merit'\n                            scroll={el => el.scrollIntoView({ behavior: 'smooth', block: 'nearest' })}\n                            onClick={() => {\n                                onTab('merit');\n                            }}\n                        >\n                            믿을수 있는 위드메이트\n                        </HashLink>\n                    </NavTab>\n                    <NavTab active={activeTab === 'usage'}>\n                        <HashLink\n                            to='/360F/nemt/service/#usage'\n                            scroll={el => el.scrollIntoView({ behavior: 'smooth', block: 'nearest' })}\n                            onClick={() => {\n                                onTab('usage');\n                            }}\n                        >\n                            이런분께 추천해요\n                        </HashLink>\n                    </NavTab>\n                    <NavTab active={activeTab === 'partners'}>\n                        <HashLink\n                            to='/360F/nemt/service/#partners'\n                            scroll={el => el.scrollIntoView({ behavior: 'smooth', block: 'nearest' })}\n                            onClick={() => {\n                                onTab('partners');\n                            }}\n                        >\n                            위드메이트 파트너\n                        </HashLink>\n                    </NavTab>\n                </GuideNavWrapper>\n            </InnerContainer>\n        </GuideNavContainer>\n    );\n};\n","import React from 'react';\n\n// components\nimport { GuideConceptContainer } from '../guide.styled';\n\nexport const GuideConcept = ({}) => {\n    return <GuideConceptContainer id='concept'></GuideConceptContainer>;\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport swal from 'sweetalert2';\n\n// components\nimport {\n    GuideDetailContainer,\n    InnerContainer,\n    GuideConceptTitle,\n    GuideDetailServiceCardWrapper,\n    GuideDetailServiceCard,\n    GuideCardImage,\n    GuideCardName,\n    GuideCardType,\n    GuideCardDescription,\n    GuideCardSpecTitle,\n    GuideCardSpecRow,\n} from '../guide.styled';\n\nexport const GuideDetail = () => {\n    return (\n        <GuideDetailContainer id='types'>\n            <InnerContainer>\n                <GuideConceptTitle>서비스 종류</GuideConceptTitle>\n                <GuideDetailServiceCardWrapper>\n                    <GuideCard\n                        source={'/assets/images/art_pro.png'}\n                        name='병원 동행'\n                        type='Pro'\n                        desc={\n                            <>\n                                <>\n                                    위드메이트 동행 전문가가 고객님의\n                                    <br />\n                                    <span>자택에서 병원까지 </span>동행하고, 병원 업무를\n                                    <br />\n                                    마친 뒤 <span>다시 자택까지</span> 동행합니다.\n                                </>\n                                <br />\n                                <br />\n                                <>\n                                    <b>요금</b> <br />\n                                    시간당 25,000원 (추가 30분마다 12,500원)\n                                </>\n                            </>\n                        }\n                        spec1={\n                            <>\n                                위드메이트 소속 동행 전문가가 <br />\n                                자택에서 병원까지 동행\n                            </>\n                        }\n                        spec2={\n                            <>\n                                대중교통, 고객님 소유 자차, 택시 중<br />\n                                선택하여 이동\n                            </>\n                        }\n                        spec3={\n                            <>\n                                서비스 종료 이후\n                                <br />\n                                서비스 보고서 열람 가능\n                            </>\n                        }\n                        spec4={\n                            <>\n                                서비스 진행 단계별 카카오톡\n                                <br />\n                                실시간 알림 업데이트 제공\n                            </>\n                        }\n                    />\n                    <GuideCard\n                        source={'/assets/images/art_basic.png'}\n                        name='병원 동행'\n                        type='Basic'\n                        desc={\n                            <>\n                                <>\n                                    위드메이트 베이직 서비스는 위드메이트 동행\n                                    <br />\n                                    전문가가 고객님께서 지정한 의료 시설 혹은\n                                    <br />\n                                    <span>병원 내에서 보호자 대행 업무</span>를 수행합니다.\n                                </>\n                                <br />\n                                <br />\n                                <>\n                                    <b>요금</b> <br />\n                                    시간당 15,000원 (추가 30분마다 7,500원)\n                                </>\n                            </>\n                        }\n                        spec1={\n                            <>\n                                고객님의 진료 일정에 맞춰 위드메이트 <br />\n                                소속 동행 전문가가 의료 시설 도착\n                            </>\n                        }\n                        spec2={\n                            <>\n                                지정된 의료 시설에서 고객님 접선 후 <br />\n                                진료 시작부터 끝까지 동행\n                            </>\n                        }\n                        spec3={\n                            <>\n                                진료 종료 후 고객님의 상태를 <br />\n                                파악하고 이상 없을 시 서비스 종료\n                            </>\n                        }\n                        spec4={\n                            <>\n                                서비스 진행 단계별 카카오톡\n                                <br />\n                                실시간 알림 업데이트 제공\n                            </>\n                        }\n                    />\n                    <GuideCard\n                        source={'/assets/images/art_zzz.png'}\n                        name='보호자 동행'\n                        type='수면 내시경'\n                        desc={\n                            <>\n                                <>\n                                    {/* 위드메이트 동행 전문가가 고객님께서\n                                <br />\n                                <span>자택에서 병원까지 </span>동행하고, 병원 내에서\n                                <br />\n                                <span>보호자 대행 업무</span>를 수행합니다. */}\n                                    고객님께서 수면내시경 검사를 받는\n                                    <br />\n                                    <span>병원 내에서 </span>위드메이트 동행 전문가가\n                                    <br />\n                                    <span>보호자 대행 업무</span>를 수행합니다.\n                                </>\n                                <br />\n                                <br />\n                                <>\n                                    <b>요금</b> <br />\n                                    시간당 15,000원 (추가 30분마다 7,500원)\n                                </>\n                            </>\n                        }\n                        spec1={\n                            <>\n                                고객님의 진료 일정에 맞춰 위드메이트 <br />\n                                소속 동행 전문가가 의료 시설 도착\n                            </>\n                        }\n                        spec2={\n                            <>\n                                지정된 의료 시설에서 고객님 접선 후 <br />\n                                수면 내시경 검사 시작부터 끝까지 동행\n                            </>\n                        }\n                        spec3={\n                            <>\n                                수면 내시경 검사 종료 후 고객님의 <br />\n                                상태를 파악하고 이상 없을 시 종료\n                            </>\n                        }\n                        spec4={\n                            <>\n                                서비스 진행 단계별 카카오톡 <br />\n                                실시간 알림 업데이트 제공\n                            </>\n                        }\n                    />\n                </GuideDetailServiceCardWrapper>\n            </InnerContainer>\n        </GuideDetailContainer>\n    );\n};\n\nconst GuideCard = ({ source, name, type, desc, spec1, spec2, spec3, spec4 }) => (\n    <GuideDetailServiceCard>\n        <GuideCardImage src={source} />\n        <GuideCardName>{name}</GuideCardName>\n        <GuideCardType>{type}</GuideCardType>\n        <GuideCardDescription>{desc}</GuideCardDescription>\n        <GuideCardSpecTitle>서비스 구성</GuideCardSpecTitle>\n\n        <GuideCardSpecRow>\n            <span>01</span>\n            <p>{spec1}</p>\n        </GuideCardSpecRow>\n\n        <GuideCardSpecRow>\n            <span>02</span>\n            <p>{spec2}</p>\n        </GuideCardSpecRow>\n\n        <GuideCardSpecRow>\n            <span>03</span>\n            <p>{spec3}</p>\n        </GuideCardSpecRow>\n\n        <GuideCardSpecRow>\n            <span>04</span>\n            <p>{spec4}</p>\n        </GuideCardSpecRow>\n    </GuideDetailServiceCard>\n);\n","import React from 'react';\nimport styled from 'styled-components';\n\n// components\nimport { GuideUsingContainer, InnerContainer, GuideConceptTitle, GuideUsingSubFlexWrapper, GuideUsageFlexbox, MobileBr, DesktopBr } from '../guide.styled';\n\nexport const GuideUsage = () => {\n    return (\n        <GuideUsingContainer id='usage'>\n            <InnerContainer>\n                <GuideConceptTitle>이런 분께 추천해요</GuideConceptTitle>\n                <GuideUsingSubFlexWrapper>\n                    <GuideUsageFlexbox>\n                        <div>\n                            <img src='/assets/images/icon_legache.png' />\n                        </div>\n                        <span>\n                            병원에 가시는 <DesktopBr />\n                            <MobileBr />\n                            어르신\n                        </span>\n                    </GuideUsageFlexbox>\n                    <GuideUsageFlexbox>\n                        <div>\n                            <img src='/assets/images/icon_wheelchair.png' />\n                        </div>\n                        <span>\n                            거동이 <DesktopBr />\n                            <MobileBr />\n                            힘드신 분\n                        </span>\n                    </GuideUsageFlexbox>\n                    <GuideUsageFlexbox>\n                        <div>\n                            <img src='/assets/images/icon_x-ray.png' />\n                        </div>\n                        <span>\n                            항암 / 방사선 치료를 <DesktopBr />\n                            <MobileBr />\n                            받으시는 분\n                        </span>\n                    </GuideUsageFlexbox>\n                </GuideUsingSubFlexWrapper>\n\n                <GuideUsingSubFlexWrapper>\n                    <GuideUsageFlexbox>\n                        <div>\n                            <img src='/assets/images/icon_injection.png' />\n                        </div>\n                        <span>\n                            수면내시경 등 <DesktopBr />\n                            <MobileBr />\n                            마취가 동반되는 <DesktopBr />\n                            <MobileBr />\n                            치료를 받으시는 분\n                        </span>\n                    </GuideUsageFlexbox>\n                    <GuideUsageFlexbox>\n                        <div>\n                            <img src='/assets/images/icon_round_trip.png' />\n                        </div>\n                        <span>\n                            입원 / 퇴원\n                            <DesktopBr />\n                            <MobileBr />\n                            하시는 분\n                        </span>\n                    </GuideUsageFlexbox>\n                    <GuideUsageFlexbox>\n                        <div>\n                            <img src='/assets/images/icon_eyecare.png' />\n                        </div>\n                        <span>\n                            안과 진료/시술을 <DesktopBr />\n                            <MobileBr />\n                            받으시는 분\n                        </span>\n                    </GuideUsageFlexbox>\n                </GuideUsingSubFlexWrapper>\n\n                <GuideUsingSubFlexWrapper>\n                    <GuideUsageFlexbox>\n                        <div>\n                            <img src='/assets/images/icon_detailcheck.png' />\n                        </div>\n                        <span>\n                            각종 검진을 <DesktopBr />\n                            <MobileBr />\n                            받으시는 분\n                        </span>\n                    </GuideUsageFlexbox>\n                    <GuideUsageFlexbox>\n                        <div>\n                            <img src='/assets/images/icon_pregnant.png' />\n                        </div>\n                        <span>\n                            임산부, 산모, <DesktopBr />\n                            <MobileBr />및 소아\n                        </span>\n                    </GuideUsageFlexbox>\n                    <GuideUsageFlexbox>\n                        <div>\n                            <img src='/assets/images/icon_blood.png' />\n                        </div>\n                        <span>혈액 투석 환자</span>\n                    </GuideUsageFlexbox>\n                </GuideUsingSubFlexWrapper>\n            </InnerContainer>\n        </GuideUsingContainer>\n    );\n};\n","import React from 'react';\nimport {\n    MeritContainer,\n    InnerContainer,\n    MeritHeaderWrapper,\n    MeritCardList,\n    MeritCardWrapper,\n    MeritCardNumber,\n    MeritCardDesc,\n    MeritCardTitleRow,\n} from '../guide.styled';\n\nexport const Merit = () => {\n    return (\n        <MeritContainer id='merit'>\n            <MeritHeaderWrapper>\n                <InnerContainer>\n                    <div className='wrap'>\n                        <img src='/assets/images/faith_up.png' />\n                        <h3>믿을 수 있는 위드메이트</h3>\n                    </div>\n                </InnerContainer>\n            </MeritHeaderWrapper>\n            <InnerContainer>\n                <MeritCardList>\n                    <MeritCard\n                        title='인정 받은 서비스'\n                        source='/assets/images/faith_icon_1.png'\n                        desc={\n                            <>\n                                위드메이트 병원 동행 서비스는\n                                <br />\n                                <span>신한 오픈 이노베이션 2기 우수 기업</span>으로\n                                <br />\n                                선정된 신뢰할 수 있는 서비스입니다.{' '}\n                            </>\n                        }\n                        number='01'\n                    />\n                    <MeritCard\n                        title='검증 받은 서비스'\n                        source='/assets/images/faith_icon_2.png'\n                        desc={\n                            <>\n                                위드메이트는 엄격한 검증을 거친 후<br />\n                                보건복지부와 고양시, 그리고 국립 암센터가\n                                <br />\n                                주관하는<span>‘고양 해피 케어’</span>컨소시엄의 <br />\n                                일원으로 활동 중에 있습니다.\n                            </>\n                        }\n                        number='02'\n                    />\n                    <MeritCard\n                        title='서비스 인력 평점 제도'\n                        source='/assets/images/faith_icon_3.png'\n                        desc={\n                            <>\n                                위드메이트는 더욱 높은 서비스 경험을\n                                <br />\n                                제공하기 위해 매뉴얼을 만들고, 서비스 <br />\n                                종료 후 <span>고객님의 후기를 반영</span>하여 <br />\n                                서비스 인력을 관리합니다.\n                            </>\n                        }\n                        number='03'\n                    />\n                    <MeritCard\n                        title='전문적인 서비스 인력 양성'\n                        source='/assets/images/faith_icon_4.png'\n                        desc={\n                            <>\n                                위드메이트는 여성 인력 개발 센터,\n                                <br /> 재취업 지원 센터, 고용 복지 플러스\n                                <br /> 센터 등의 전문 기관과 <span>일자리 협업 </span>\n                                <br />\n                                <span>프로그램</span>을 운영하며 검증된 서비스\n                                <br />\n                                인력을 주기적으로 양성하고 있습니다.\n                            </>\n                        }\n                        number='04'\n                    />\n                    <MeritCard\n                        title='책임지는 서비스'\n                        source='/assets/images/faith_icon_5.png'\n                        desc={\n                            <>\n                                위드메이트는 서비스 제공 인력 전원이\n                                <br />\n                                삼성화재가 제공하는 1억 2천만원 한도의 <br />\n                                <span>‘전문인 영업 배상 책임 보험’</span>에 가입되어 <br />\n                                책임지는 서비스를 제공합니다.\n                            </>\n                        }\n                        number='05'\n                    />\n                    <MeritCard\n                        title='안전한 서비스'\n                        source='/assets/images/faith_icon_6.png'\n                        desc={\n                            <>\n                                위드메이트는 <span> 시니어 헬스케어 서비스의</span>\n                                <br />\n                                <span>본질은 ‘안전’</span>이라고 생각하고, 서비스 인력의\n                                <br />\n                                정기적인 교육, 자격증 취득 및 보유 여부 <br />\n                                점검, 서비스 매뉴얼의 수정 및 보완등을 <br />\n                                진행하고 있습니다.\n                            </>\n                        }\n                        number='06'\n                    />\n                </MeritCardList>\n            </InnerContainer>\n        </MeritContainer>\n    );\n};\n\nconst MeritCard = ({ number, title, source, desc }) => (\n    <MeritCardWrapper>\n        <MeritCardNumber>{number}</MeritCardNumber>\n        <MeritCardTitleRow>\n            <img src={source} />\n            <span>{title}</span>\n        </MeritCardTitleRow>\n        <MeritCardDesc>{desc}</MeritCardDesc>\n    </MeritCardWrapper>\n);\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport {\n    WithmateContainer,\n    InnerContainer,\n    WithmateTitle,\n    MeritCardDesc,\n    FlexDivWrapper,\n    BigSideBox,\n    SmallSideBox,\n    WithmateBg,\n    GuideConceptTitle,\n    MobileBr,\n    DesktopBr,\n} from '../guide.styled';\nexport const Withmate = () => {\n    return (\n        <WithmateContainer id='withmate'>\n            <InnerContainer>\n                <FlexDivWrapper top>\n                    <SmallSideBox>\n                        <WithmateTitle>\n                            <img src='/assets/images/new_logo_img.png' />\n                            <span>위드메이트란?</span>\n                        </WithmateTitle>\n                        <Block bigMargin>\n                            위드메이트는 <span>온라인 병원 동행 서비스 매칭 플랫폼</span>을<MobileBr /> 시작으로,\n                            <DesktopBr /> 대한민국에서{' '}\n                            <span>\n                                사회적 의미의 ‘시니어’라는 <MobileBr />\n                                단어를 없애기 위해\n                            </span>{' '}\n                            설립된 <DesktopBr />\n                            <span>\n                                시니어 라이프 스타일 <MobileBr />\n                                혁신 기업\n                            </span>\n                            입니다.\n                        </Block>\n                        <Title>위드메이트의 시작</Title>\n                        <Block>\n                            <span>2015년</span>에 설립된 위드메이트는 <span>초고령화 </span>및 <MobileBr />\n                            <span>1인 가구 시대</span>에 <DesktopBr />\n                            접어든 대한민국의 현 상황에 적합한\n                            <MobileBr />\n                            <span> 시니어 라이프 스타일 혁신</span>\n                            <DesktopBr />\n                            <span>서비스를 개발합니다.</span>\n                        </Block>\n                        <Block noMargin>\n                            이를 위해 위드메이트는 <MobileBr />\n                            <span>국내 최초로 병원 동행 서비스를 런칭해</span>\n                            <MobileBr />\n                            <DesktopBr />\n                            <span>탄탄한 신뢰</span>와 <span>안정된 서비스</span> 시스템을 기반으로 <MobileBr />\n                            축적되는 <DesktopBr />\n                            데이터와 실전 경험을 바탕으로{' '}\n                            <span>\n                                다양한 <MobileBr />\n                                신규 서비스를 연구\n                            </span>\n                            하여 <DesktopBr />\n                            <span>\n                                시니어 라이프 스타일 <MobileBr />\n                                혁신 기업\n                            </span>\n                            의 길을 걷고 있습니다.\n                        </Block>\n                    </SmallSideBox>\n                    <BigSideBox mHidden>\n                        <WithmateBg bg='/assets/images/guide_withmate_main1.png' />\n                    </BigSideBox>\n                </FlexDivWrapper>\n            </InnerContainer>\n        </WithmateContainer>\n    );\n};\n\nconst Title = styled(GuideConceptTitle)`\n    margin-bottom: 24px;\n    text-align: left;\n`;\n\nconst Block = styled(MeritCardDesc)`\n    font-size: 16px;\n    margin-bottom: 24px;\n    ${props => props.noMargin && `margin-bottom: 0px;`}\n    ${props => props.bigMargin && `margin-bottom: 74px;`}\n\n    @media (max-width: 768px) {\n        word-break: keep-all;\n    }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\n\nexport const GuideBanner = () => {\n    return <GuideBannerContainer>병원동행 서비스는 위드메이트에게!</GuideBannerContainer>;\n};\n\nconst GuideBannerContainer = styled.div`\n    width: 100%;\n    height: 235px;\n\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    font-size: 40px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.2;\n    letter-spacing: -0.7px;\n    text-align: center;\n    color: #ffffff;\n\n    background-image: url('/assets/images/guide_title_bg.png');\n    background-size: cover;\n    background-repeat: no-repeat;\n    background-position: center;\n\n    @media (max-width: 768px) {\n        font-size: 22px;\n        background-position: left;\n    }\n`;\n","import React from 'react';\nimport _ from 'lodash';\n\n// components\nimport { GuideNav } from './Section/nav';\nimport { GuideConcept } from './Section/concept';\nimport { GuideDetail } from './Section/detail';\nimport { GuideUsage } from './Section/usage';\nimport { WithmatePartners } from '../../Home/Section/partners';\nimport { Merit } from './Section/merit';\nimport { Withmate } from './Section/withmate';\nimport { GuideBanner } from './Section/banner';\n\nimport { Container } from './guide.styled';\n\nclass GuidePage extends React.PureComponent {\n    state = {\n        activeTab: 'concept',\n        reserveModal: false,\n        reserveType: null,\n        step: 1,\n        mobile_menu: false,\n        addHalfTime: false,\n    };\n\n    inputHandler = ({ type, value }) => {\n        this.setState({ [type]: value });\n    };\n\n    inputDeepHandler = ({ type, deepType, value }) => {\n        this.setState(prevState => ({\n            [type]: {\n                ...prevState[type],\n                [deepType]: value,\n            },\n        }));\n    };\n\n    onTab = tab => {\n        this.setState({\n            activeTab: tab,\n        });\n    };\n\n    onRoute = path => {\n        this.props.history.push(path);\n    };\n\n    render() {\n        const { activeTab } = this.state;\n\n        return (\n            <Container>\n                <GuideBanner />\n                <GuideNav\n                    activeTab={activeTab}\n                    onTab={this.onTab}\n                    onReserve={serviceType => {\n                        this.setState({\n                            reserveModal: true,\n                            temp: {\n                                page: 1,\n                                service: 'unemergency',\n                                addTime: '60',\n                                payMethod: 'transfer',\n                                sex: '남',\n                                transport: 'common',\n                                report: false,\n                            },\n                        });\n                    }}\n                />\n                <Withmate />\n                <GuideConcept />\n                <GuideDetail />\n                <Merit />\n                <GuideUsage />\n                <WithmatePartners />\n            </Container>\n        );\n    }\n}\n\nexport default GuidePage;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\n\n// component\nimport GuidePage from './guide';\n\n// styles\nimport StyledContainer from './guide.styled';\n\n// actions\nimport { serviceReserve, editResrveForm } from '../../../Reducer/Modules/app';\n\nclass GuideContainer extends React.PureComponent {\n    componentDidMount = () => {};\n\n    render() {\n        return (\n            <StyledContainer>\n                <GuidePage {...this.props} />\n            </StyledContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({ app, auth }) => ({\n    app,\n    auth,\n});\n\nconst mapStateToDispatch = dispatch => ({\n    serviceReserve: ({ userId, info }) => dispatch(serviceReserve({ userId, info })),\n    editForm: ({ type, value }) => dispatch(editResrveForm({ type, value })),\n});\n\nexport default connect(mapStateToProps, mapStateToDispatch)(GuideContainer);\n","import styled from 'styled-components';\n\nconst StyledListContainer = styled.div`\n    // border-bottom: 1px solid #e6e6e6;\n`;\n\nexport const HeaderButton = styled.div`\n    cursor: pointer;\n\n    width: 265px;\n    height: 60px;\n    line-height: 60px;\n\n    font-size: 16px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    letter-spacing: -0.2px;\n    text-align: center;\n    color: #ffffff;\n\n    margin-top: 40px;\n    margin-bottom: 90px;\n    border-radius: 4px;\n    background-color: #3bc1ff;\n\n    &:hover {\n        transition: all 0.5s;\n        opacity: 0.8;\n    }\n\n    @media (max-width: 768px) {\n        width: 230px;\n        height: 48px;\n        line-height: 48px;\n    }\n`;\n\nexport const NavigationTabWrapper = styled.div`\n    display: flex;\n    align-items: center;\n    justify-content: flex-start;\n`;\n\nexport const NavigationTab = styled.span`\n    position: relative;\n    display: inline-block;\n    margin-right: 44px;\n\n    font-size: 16px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: normal;\n    letter-spacing: normal;\n    text-align: center;\n    color: rgba(0, 0, 0, 0.8);\n    padding-bottom: 20px;\n\n    cursor: pointer;\n\n    &.active {\n        color: #55d4ff;\n    }\n`;\n\nexport const NavigationTabUnderline = styled.span`\n    display: inline-block;\n    position: absolute;\n    left: 0px;\n    bottom: -3px;\n\n    width: 100%;\n    height: 3px;\n    background-color: #55d4ff;\n`;\n\nexport const CountDisplay = styled.div`\n    font-size: 36px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.44;\n    letter-spacing: -1px;\n    color: rgba(0, 0, 0, 0.8);\n\n    > span {\n        color: #4bcfff;\n    }\n\n    margin-bottom: 20px;\n`;\n\nexport const CollapseContainer = styled.div`\n    .ant-collapse-icon-position-right > .ant-collapse-item > .ant-collapse-header {\n        padding-left: 0px;\n        padding-right: 0px;\n    }\n\n    .ant-collapse-content > .ant-collapse-content-box {\n        padding-left: 0px;\n        padding-right: 0px;\n    }\n`;\n\nexport const CollapseHeader = styled.div`\n    display: flex;\n    align-items: center;\n    border-bottom: 1px solid #e6e6e6;\n`;\n\nexport const CollapseTab = styled.div`\n    font-size: 14px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.57;\n    letter-spacing: normal;\n    color: rgba(0, 0, 0, 0.7);\n\n    padding-bottom: 11px;\n`;\n\nexport const CollapseTabOnlyDesktop = styled(CollapseTab)`\n    @media (max-width: 768px) {\n        display: none;\n    }\n`;\n\nexport const PanelHeader = styled.div`\n    display: flex;\n`;\n\nexport const PanelField = styled.div`\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    overflow: hidden;\n\n    ${props => (props.style ? props.style : `flex: 1;`)}\n    ${props => (props.onlyDesktop ? `display: block;` : null)} \n\n    &.title {\n        font-size: 16px;\n        font-weight: bold;\n        font-stretch: normal;\n        font-style: normal;\n        line-height: 1.56;\n        letter-spacing: normal;\n        color: rgba(0, 0, 0, 0.8);\n    }\n\n    @media (max-width: 768px) {\n        ${props => (props.onlyDesktop ? `display: none;` : null)}\n    }\n`;\n\nexport const Star = styled.img`\n    width: 16.7px;\n    height: 16px;\n    object-fit: contain;\n    margin-bottom: 4px;\n`;\n\nexport const ReviewTextWrapper = styled.div`\n    padding-left: 120px;\n    padding-right: 50px;\n\n    @media (max-width: 768px) {\n        padding-left: 0px;\n    }\n`;\n\nexport const ReviewText = styled.p`\n    font-size: 13px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.71;\n    letter-spacing: -0.3px;\n    color: rgba(0, 0, 0, 0.7);\n`;\n\nexport const MyReview = styled.span`\n    display: inline-block;\n    width: 53px;\n    height: 20px;\n    line-height: 20px;\n    border-radius: 10px;\n    background-color: #3bc1ff;\n\n    font-size: 10px;\n    font-weight: bold;\n    font-stretch: normal;\n    font-style: normal;\n    letter-spacing: -0.21px;\n    color: #ffffff;\n    text-align: center;\n`;\n\nexport const ReviewMobileInfo = styled.div`\n    display: flex;\n    align-items: center;\n\n    margin-bottom: 27px;\n    display: none;\n\n    @media (max-width: 768px) {\n        display: block;\n    }\n`;\n\nexport const ReviewerName = styled.span`\n    font-size: 13px;\n    font-weight: normal;\n    font-stretch: normal;\n    font-style: normal;\n    line-height: 1.71;\n    letter-spacing: -0.3px;\n    color: rgba(0, 0, 0, 0.7);\n\n    margin-bottom: 0px;\n    margin-right: 16px;\n`;\n\nexport default StyledListContainer;\n","import React from 'react';\nimport { Collapse, Icon, Pagination, message } from 'antd';\nimport moment from 'moment';\n\nimport CommentPageHeader from '../../../Components/Templates/Review/header';\nimport {\n    HeaderButton,\n    CollapseContainer,\n    CollapseHeader,\n    CollapseTab,\n    CollapseTabOnlyDesktop,\n    CountDisplay,\n    PanelHeader,\n    PanelField,\n    Star,\n    ReviewTextWrapper,\n    ReviewText,\n    ReviewMobileInfo,\n    ReviewerName,\n    MyReview,\n} from './review.styled';\n\nimport axios from '../../../Lib/axios';\n\nconst { Panel } = Collapse;\n\nconst PerPage = 20;\n\nexport default class CommentList extends React.PureComponent {\n    state = {\n        tab: 'basic',\n        total: 0,\n        list: [],\n        page: 1,\n    };\n\n    componentDidMount = () => {\n        this.fetchList();\n    };\n\n    fetchList = () => {\n        const { page } = this.state;\n        axios.get('/v2/review/list', { params: { page, pageCnt: PerPage } }).then(resolve => {\n            const { data } = resolve;\n            if (data && data.total) {\n                this.setState({ total: data.total || 0, list: data.list || [] });\n            }\n        });\n    };\n\n    renderStar = score => {\n        return (\n            <>\n                {new Array(score).fill(0).map((star, index) => (\n                    <Star key={'active-star=' + index.toString()} src='/assets/images/icon_active_star.png' alt='active-star' />\n                ))}\n                {new Array(5 - score).fill(0).map((star, index) => (\n                    <Star key={'active-star=' + index.toString()} src='/assets/images/icon_star.png' alt='active-star' />\n                ))}\n            </>\n        );\n    };\n\n    getAutoTitle = ({ title, rate }) => {\n        if (title) return title;\n        if (rate === 5) return '서비스 매우 만족';\n        if (rate >= 4) return '서비스 만족';\n        if (rate >= 3) return '서비스 보통';\n        if (rate >= 2) return '서비스 불만족';\n        if (rate >= 1) return '서비스 매우 불만족';\n    };\n\n    render() {\n        const { tab, list, page, total } = this.state;\n        const { id, userType } = this.props.auth;\n\n        return (\n            <div>\n                <CommentPageHeader title='이용 후기' desc={`고객님의 소중한 후기를 통해 더욱 발전하는\\n 위드메이트가 되겠습니다.`}>\n                    <div style={{ height: '190px' }} />\n                </CommentPageHeader>\n\n                <CollapseContainer className='inner-container'>\n                    <CountDisplay>\n                        <span>{total}</span>건\n                    </CountDisplay>\n\n                    <CollapseHeader>\n                        <CollapseTab style={{ width: '40px' }}>번호</CollapseTab>\n                        <CollapseTab style={{ flex: 1 }}>서비스</CollapseTab>\n                        <CollapseTab style={{ flex: 1 }}>제목</CollapseTab>\n                        <CollapseTabOnlyDesktop style={{ width: '80px' }}>작성자</CollapseTabOnlyDesktop>\n                        <CollapseTabOnlyDesktop style={{ width: '120px' }}>별점</CollapseTabOnlyDesktop>\n                        <CollapseTabOnlyDesktop style={{ width: '152px' }}>작성일</CollapseTabOnlyDesktop>\n                    </CollapseHeader>\n                    <Collapse\n                        key={'item-key-frefresh'}\n                        expandIconPosition='right'\n                        bordered={false}\n                        expandIcon={({ isActive }) => <Icon type='right' rotate={isActive ? 90 : -90} style={{ color: isActive ? '#3bc1ff' : '#a7a7a7' }} />}\n                    >\n                        {list &&\n                            list.map((info, index) => (\n                                <Panel\n                                    key={'comment-order-' + index.toString() + 'item'}\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={\n                                        <PanelHeader>\n                                            <PanelField style={{ width: '40px' }} index>\n                                                {total - ((page - 1) * PerPage + index)}\n                                            </PanelField>\n                                            <PanelField style={{ width: '80px' }}>{info.reserve.service === 'assist' ? 'Basic' : 'Pro'}</PanelField>\n                                            <PanelField className='title' style={{ flex: 1 }}>\n                                                {this.getAutoTitle({ title: info.title, rate: info.score })}\n                                            </PanelField>\n                                            <PanelField style={{ width: '80px' }} onlyDesktop>\n                                                {id === info.user._id ? <MyReview>내후기</MyReview> : info.user.name}\n                                            </PanelField>\n                                            <PanelField style={{ width: '120px' }} onlyDesktop>\n                                                {info.score ? this.renderStar(parseInt(info.score, 10)) : null}\n                                            </PanelField>\n                                            <PanelField style={{ width: '152px' }} onlyDesktop>\n                                                {moment(info.createdAt).format('YYYY-MM-DD')}\n                                            </PanelField>\n                                        </PanelHeader>\n                                    }\n                                >\n                                    <ReviewTextWrapper>\n                                        <ReviewMobileInfo>\n                                            {id === info.user._id ? (\n                                                <MyReview style={{ marginRight: '17px' }}>내후기</MyReview>\n                                            ) : (\n                                                <ReviewerName>{info.user.name}</ReviewerName>\n                                            )}\n                                            <span style={{ marginRight: '18px' }}>{info.score ? this.renderStar(parseInt(info.score, 10)) : null}</span>\n                                            <ReviewerName>{moment(info.createdAt).format('YYYY-MM-DD')}</ReviewerName>\n                                        </ReviewMobileInfo>\n                                        {info.review && (\n                                            <ReviewText>\n                                                {info.review.split('\\n').map((text, index) => (\n                                                    <span key={info._id + index.toString() + tab}>\n                                                        {text}\n                                                        <br />\n                                                    </span>\n                                                ))}\n                                            </ReviewText>\n                                        )}\n                                        <ReviewText style={{ marginTop: '8px' }}>\n                                            (담당 메이트: {info.reserve && info.reserve.call && info.reserve.call.mate ? info.reserve.call.mate.name : '-'})\n                                        </ReviewText>\n                                    </ReviewTextWrapper>\n                                </Panel>\n                            ))}\n                    </Collapse>\n                    <Pagination\n                        pageSize={PerPage}\n                        total={this.state.total}\n                        current={this.state.page}\n                        onChange={page => {\n                            this.setState({ page, list: [] }, () => {\n                                this.fetchList();\n                            });\n                        }}\n                    />\n                </CollapseContainer>\n            </div>\n        );\n    }\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport StyledListContainer from './review.styled';\nimport CommentList from './review';\n\nimport { getReviewList, editReview } from '../../../Reducer/Modules/review';\n\nclass CommentListPage extends React.PureComponent {\n    render() {\n        return (\n            <StyledListContainer>\n                <CommentList {...this.props} />\n            </StyledListContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({ app, auth, review }) => ({\n    app,\n    auth,\n    review,\n});\n\nconst mapDispatchToProps = dispatch => ({\n    // getReviewList: page => dispatch(getReviewList({ page })),\n    editReview: ({ type, value }) => dispatch(editReview({ type, value })),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CommentListPage);\n","import styled from 'styled-components';\nimport { sizeHandler, mainColor } from '../../../../theme';\n\nconst StyledListContainer = styled.div`\n    padding-top: 55px;\n\n    .faq-header {\n        // border-bottom: 1px solid #e6e6e6;\n\n        .inner-container {\n            padding: 0px;\n            padding-top: 82px;\n\n            @media (max-width: 768px) {\n                padding-top: 42px;\n            }\n\n            > .flex-wrapper {\n                position: relative;\n\n                .faq-main-title {\n                    flex: 1;\n                    .title {\n                        font-size: ${sizeHandler(30)};\n                        font-weight: bold;\n                        letter-spacing: -0.6px;\n                        color: #000000;\n                        margin-bottom: 8px;\n                    }\n\n                    .description {\n                        font-size: ${sizeHandler(14)};\n                        letter-spacing: -0.3px;\n                        color: rgba(0, 0, 0, 0.8);\n                        margin-bottom: 82px;\n                    }\n                }\n\n                .img-section {\n                    position: absolute;\n                    bottom: -50px;\n                    right: 0px;\n\n                    > img {\n                        width: 100%;\n                        max-width: 549px;\n                        height: auto;\n                        object-fit: cover;\n                    }\n\n                    @media (max-width: 768px) {\n                        display: none;\n                    }\n                }\n            }\n\n            .faq-nav {\n                display: flex;\n                align-items: center;\n\n                .nav-tab {\n                    margin-right: 32px;\n                    padding-bottom: 12px;\n                    position: relative;\n\n                    a {\n                        font-size: ${sizeHandler(14)};\n                        font-weight: bold;\n                        text-align: center;\n                        color: #3bc1ff;\n                    }\n\n                    span.underline {\n                        background-color: #3bc1ff;\n                        position: absolute;\n                        bottom: 0px;\n                        left: 0px;\n\n                        &.active {\n                            width: 100%;\n                            height: 3px;\n                            display: inline-block;\n                        }\n                    }\n\n                    @media (max-width: 768px) {\n                        margin-right: 16px;\n                    }\n                }\n            }\n        }\n    }\n\n    .faq-contents {\n        .inner-container {\n            padding-top: 0px;\n\n            @media (max-width: 768px) {\n                h1 {\n                    font-size: 30px;\n                    margin-top: 60px;\n                }\n            }\n        }\n    }\n\n    .panel-header {\n        display: flex;\n        align-items: center;\n\n        .row-index {\n            width: 80px;\n            color: ${mainColor};\n            font-size: ${sizeHandler(14)};\n            font-weight: bold;\n        }\n\n        .title {\n            flex: 1;\n            font-size: ${sizeHandler(16)};\n            font-weight: normal;\n            color: rgba(0, 0, 0, 0.7);\n        }\n\n        @media (max-width: 768px) {\n            .title {\n                font-size: ${sizeHandler(14)};\n            }\n        }\n    }\n\n    .panel-content {\n        padding-left: 80px;\n\n        > p {\n            width: 60%;\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.7);\n        }\n\n        > .panel-contents-wrapper {\n            margin-top: 20px;\n            margin-bottom: 20px;\n\n            .panel-contents {\n                padding: 12px 0px;\n                border-bottom: 1px solid #e6e6e6;\n\n                &:first-child {\n                    border-top: 1px solid #e6e6e6;\n                }\n\n                .panel-content-subtitle {\n                    float: left;\n                    width: 40%;\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    text-align: left;\n                    color: ${mainColor};\n                }\n\n                .panel-content-subcontents {\n                    float: left;\n                    width: 50%;\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    color: rgba(0, 0, 0, 0.7);\n                }\n\n                @media (max-width: 768px) {\n                    .panel-content-subtitle {\n                        width: 100%;\n                    }\n\n                    .panel-content-subcontents {\n                        width: 100%;\n                    }\n                }\n            }\n        }\n    }\n\n    h1 {\n        font-size: ${sizeHandler(34)};\n        font-weight: bold;\n        color: rgba(0, 0, 0, 0.8);\n        letter-spacing: -1px;\n\n        margin-bottom: 26px;\n        margin-top: 50px;\n    }\n\n    @media (max-width: 1120px) {\n        .faq-header {\n            .inner-container {\n                padding-left: 16px;\n                padding-right: 16px;\n            }\n        }\n        .inner-container {\n            padding-left: 16px;\n            padding-right: 16px;\n        }\n    }\n\n    @media (max-width: 768px) {\n        .panel-header {\n            .row-index {\n                width: 70px;\n            }\n        }\n\n        .panel-content {\n            padding-left: 70px;\n\n            > p {\n                width: 90%;\n            }\n        }\n    }\n`;\nexport default StyledListContainer;\n","import React from 'react';\nimport { Collapse, Icon, Table } from 'antd';\n\nimport { CollapseContainer } from '../../../Review/List/list.styled';\nimport { newsEvent } from '../../../../Components/Columns/user';\n\nexport default class Event extends React.PureComponent {\n    onRow = (row, index) => {\n        return {\n            onClick: () => {\n                this.props.history.push({\n                    pathname: `/360F/newsEvent/info/${row._id}`,\n                    state: {\n                        id: row._id,\n                    },\n                });\n            },\n        };\n    };\n\n    render() {\n        return (\n            <div className='faq-container'>\n                <div className='faq-header'>\n                    <div className='inner-container'>\n                        <div className='flex-wrapper'>\n                            <div className='faq-main-title'>\n                                <p className='title'>위드메이트 소식</p>\n                                <p className='description'>위드메이트의 다양한 소식을 확인할 수 있습니다.</p>\n                            </div>\n                            <div className='img-section'>\n                                <img src={'/assets/images/comment_main.png'} style={{ width: '200px', height: 'auto', marginRight: '100px' }} alt='faq-img' />\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div className='faq-contents'>\n                    <CollapseContainer className='inner-container'>\n                        <Table\n                            rowKey='id'\n                            dataSource={this.props.newsEvent.newsEventList}\n                            columns={newsEvent}\n                            onRow={this.onRow}\n                            pagination={{\n                                pageSize: 10,\n                            }}\n                        />\n                    </CollapseContainer>\n                </div>\n            </div>\n        );\n    }\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport StyledListContainer from './list.styled';\nimport List from './list';\nimport { addNewsEvent, fetchNewsEvent, getNewsEventInfo } from '../../../../Reducer/Modules/newsEvent';\n\nclass InfoContainer extends React.PureComponent {\n    componentDidMount = () => {\n        this.props.fetchNewsEvent();\n    };\n\n    render() {\n        return (\n            <StyledListContainer>\n                <List {...this.props} />\n            </StyledListContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({ app, auth, newsEvent }) => ({\n    app,\n    auth,\n    newsEvent,\n});\n\nconst mapDispatchToProps = dispatch => ({\n    fetchNewsEvent: () => dispatch(fetchNewsEvent()),\n    addNewsEvent: info => dispatch(addNewsEvent(info)),\n    getNewsEventInfo: ({ id, newsEventId }) => dispatch(getNewsEventInfo({ id, newsEventId })),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(InfoContainer);\n","import styled from 'styled-components';\nimport { sizeHandler, mainColor } from '../../../../theme';\n\nconst StyledInfoContainer = styled.div`\n    padding-top: 55px;\n\n    .faq-header {\n        // border-bottom: 1px solid #e6e6e6;\n\n        .inner-container {\n            padding: 0px;\n            padding-top: 82px;\n\n            @media (max-width: 768px) {\n                padding-top: 42px;\n            }\n\n            > .flex-wrapper {\n                position: relative;\n\n                .faq-main-title {\n                    flex: 1;\n                    .title {\n                        font-size: ${sizeHandler(30)};\n                        font-weight: bold;\n                        letter-spacing: -0.6px;\n                        color: #000000;\n                        margin-bottom: 8px;\n\n                        @media {\n                            padding-left: 10px;\n                        }\n                    }\n\n                    .description {\n                        font-size: ${sizeHandler(14)};\n                        letter-spacing: -0.3px;\n                        color: rgba(0, 0, 0, 0.8);\n                        margin-bottom: 82px;\n\n                        @media {\n                            padding-left: 10px;\n                        }\n                    }\n                }\n\n                .img-section {\n                    position: absolute;\n                    bottom: -50px;\n                    right: 0px;\n\n                    > img {\n                        width: 100%;\n                        max-width: 549px;\n                        height: auto;\n                        object-fit: cover;\n                    }\n\n                    @media (max-width: 768px) {\n                        display: none;\n                    }\n                }\n            }\n        }\n    }\n\n    .info-contents {\n        .inner-container {\n            padding-top: 0px;\n\n            @media (max-width: 768px) {\n                h1 {\n                    font-size: 30px;\n                    margin-top: 60px;\n                }\n            }\n\n            .img-section {\n                > img {\n                    max-width: 500px;\n                    height: auto;\n                    object-fit: cover;\n                }\n            }\n        }\n    }\n\n    h1 {\n        font-size: ${sizeHandler(34)};\n        font-weight: bold;\n        color: rgba(0, 0, 0, 0.8);\n        letter-spacing: -1px;\n\n        margin-bottom: 26px;\n        margin-top: 50px;\n    }\n\n    @media (max-width: 832px) {\n        .info-contents {\n            .inner-container {\n                .img-section {\n                    > img {\n                        max-width: 300px;\n                        height: auto;\n                        object-fit: cover;\n                    }\n                }\n            }\n        }\n    }\n\n    @media (max-width: 1120px) {\n        .faq-header {\n            .inner-container {\n                padding-left: 16px;\n                padding-right: 16px;\n            }\n        }\n        .inner-container {\n            padding-left: 16px;\n            padding-right: 16px;\n        }\n    }\n\n    @media (max-width: 768px) {\n        .panel-header {\n            .row-index {\n                width: 70px;\n            }\n        }\n\n        .panel-content {\n            padding-left: 70px;\n\n            > p {\n                width: 90%;\n            }\n        }\n    }\n`;\n\nexport default StyledInfoContainer;\n","import React from 'react';\nimport axios from '../../../../Lib/axios';\nimport styled from 'styled-components';\nimport moment from 'moment';\nimport { Button, message, Table } from 'antd';\nimport { CollapseContainer } from '../../../Review/List/list.styled';\n\nimport { InfoBlock } from '../../../../Components/Common/block';\n\nexport default class Event extends React.PureComponent {\n    state = {\n        data: {},\n    };\n\n    componentDidMount = () => {\n        const { state } = this.props.history.location;\n        if (!state || !state.id) return this.props.history.goBack();\n\n        this.fetchInfo(state.id);\n    };\n\n    fetchInfo = async id => {\n        const { data } = await axios.get('/v1/newsEvent/list/info', {\n            params: {\n                newsEventId: id,\n            },\n        });\n\n        if (!data || data === 'check parameters') {\n            return this.props.history.goBack();\n        }\n\n        if (data === 'invalid newEvent') {\n            return message.warning('잘못된 게시물 정보입니다.');\n        }\n\n        this.setState({ ...data });\n    };\n\n    render() {\n        const { url, url2, urlSource, urlSource2 } = this.state;\n\n        return (\n            <div className='faq-container'>\n                <div className='faq-header'>\n                    <div className='inner-container'>\n                        <div className='flex-wrapper'>\n                            <div className='faq-main-title'>\n                                <p className='title'>위드메이트 소식</p>\n                                <p className='description'>위드메이트의 다양한 소식을 확인할 수 있습니다.</p>\n                            </div>\n                            <div className='img-section'>\n                                <img src={'/assets/images/comment_main.png'} style={{ width: '200px', height: 'auto', marginRight: '100px' }} alt='faq-img' />\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div className='info-contents'>\n                    <CollapseContainer className='inner-container' style={{ width: '80%', margin: 'auto' }}>\n                        <>\n                            <ValueBox>\n                                <Label style={{ fontSize: '25px' }}>{this.state.title}</Label>\n                            </ValueBox>\n\n                            <ValueBox style={{ textAlign: 'right' }}>\n                                <InfoBlock label='작성일' value={moment(this.state.createdAt).format('YYYY년 MM월 DD일 dddd')} />\n                            </ValueBox>\n\n                            <ValueBox>\n                                {this.state.photo && (\n                                    <div className='img-section' style={{ display: 'flex', justifyContent: 'center' }}>\n                                        <img\n                                            style={{ objectFit: 'contain' }}\n                                            src={typeof this.state.photo === 'string' ? this.state.photo : URL.createObjectURL(this.state.photo)}\n                                            alt='사진'\n                                        />\n                                    </div>\n                                )}\n                            </ValueBox>\n\n                            <ValueBox>\n                                <InfoBlock label='내용'>\n                                    <p style={{ whiteSpace: 'pre-wrap' }}>{this.state.content} </p>\n                                </InfoBlock>\n                                {this.state.url ? (\n                                    <InfoBlock label='링크'>\n                                        {url ? (\n                                            <a href={this.state.url} target='_blank' style={{ fontSize: '15px', color: '#3bc1ff' }}>\n                                                ㆍ{urlSource}\n                                            </a>\n                                        ) : (\n                                            ''\n                                        )}{' '}\n                                        <br />\n                                        {url2 ? (\n                                            <a href={this.state.url2} target='_blank' style={{ fontSize: '15px', color: '#3bc1ff' }}>\n                                                ㆍ{urlSource2}\n                                            </a>\n                                        ) : (\n                                            ''\n                                        )}\n                                    </InfoBlock>\n                                ) : null}\n                            </ValueBox>\n\n                            <ValueBox>\n                                <Button\n                                    className='white'\n                                    onClick={() => {\n                                        this.props.history.goBack();\n                                    }}\n                                    style={{ float: 'right' }}\n                                >\n                                    목록으로\n                                </Button>\n                            </ValueBox>\n                        </>\n                    </CollapseContainer>\n                </div>\n            </div>\n        );\n    }\n}\n\nexport const ValueBox = styled.div`\n    margin-bottom: 16px;\n`;\n\nexport const Label = styled.p`\n    text-align: left;\n    font-size: 11px;\n    margin-bottom: 4px;\n    color: #565656;\n`;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport StyledInfoContainer from './info.styled';\nimport Info from './info';\nimport { addNewsEvent, fetchNewsEvent, getNewsEventInfo } from '../../../../Reducer/Modules/newsEvent';\n\nclass InfoContainer extends React.PureComponent {\n    componentDidMount = () => {\n        const { id } = this.props.auth;\n        const { state } = this.props.location;\n        const { id: newsEventId } = this.props.match.params;\n\n        // console.log(newsEventId, state);\n\n        if (state === 'newsEvent') this.props.getNewsEventInfo({ newsEventId });\n    };\n\n    render() {\n        return (\n            <StyledInfoContainer>\n                <Info {...this.props} />\n            </StyledInfoContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({ app, auth, newsEvent }) => ({\n    app,\n    auth,\n    newsEvent,\n});\n\nconst mapDispatchToProps = dispatch => ({\n    fetchNewsEvent: () => dispatch(fetchNewsEvent()),\n    addNewsEvent: info => dispatch(addNewsEvent(info)),\n    getNewsEventInfo: ({ id, newsEventId }) => dispatch(getNewsEventInfo({ id, newsEventId })),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(InfoContainer);\n","import React from 'react';\nimport { Switch, Route } from 'react-router-dom';\n\n// pages\nimport List from './List';\nimport Info from './Info';\n\nclass NewsEvent extends React.PureComponent {\n    render() {\n        return (\n            <Switch>\n                <Route exact path='/360F/newsEvent/list' component={List} />\n                <Route exact path='/360F/newsEvent/info/:id' component={Info} />\n            </Switch>\n        );\n    }\n}\nexport default NewsEvent;\n","import styled from 'styled-components';\nimport { sizeHandler, mainColor } from '../../../theme';\n\nconst StyledFaqContainer = styled.div`\n    padding-top: 55px;\n\n    .faq-header {\n        border-bottom: 1px solid #e6e6e6;\n\n        .inner-container {\n            padding: 0px;\n            padding-top: 82px;\n\n            @media (max-width: 768px) {\n                padding-top: 42px;\n            }\n\n            > .flex-wrapper {\n                position: relative;\n\n                .faq-main-title {\n                    flex: 1;\n                    .title {\n                        font-size: ${sizeHandler(44)};\n                        font-weight: bold;\n                        letter-spacing: -0.6px;\n                        color: #000000;\n                        margin-bottom: 8px;\n                    }\n\n                    .description {\n                        font-size: ${sizeHandler(14)};\n                        letter-spacing: -0.3px;\n                        color: rgba(0, 0, 0, 0.8);\n                        margin-bottom: 82px;\n                    }\n                }\n\n                .img-section {\n                    position: absolute;\n                    bottom: 0px;\n                    right: 0px;\n\n                    > img {\n                        width: 100%;\n                        max-width: 549px;\n                        height: auto;\n                        object-fit: cover;\n                    }\n\n                    @media (max-width: 768px) {\n                        display: none;\n                    }\n                }\n            }\n\n            .faq-nav {\n                display: flex;\n                align-items: center;\n\n                .nav-tab {\n                    margin-right: 32px;\n                    padding-bottom: 12px;\n                    position: relative;\n\n                    a {\n                        font-size: ${sizeHandler(14)};\n                        font-weight: bold;\n                        text-align: center;\n                        color: #3bc1ff;\n                    }\n\n                    span.underline {\n                        background-color: #3bc1ff;\n                        position: absolute;\n                        bottom: 0px;\n                        left: 0px;\n\n                        &.active {\n                            width: 100%;\n                            height: 3px;\n                            display: inline-block;\n                        }\n                    }\n\n                    @media (max-width: 768px) {\n                        margin-right: 16px;\n                    }\n                }\n            }\n        }\n    }\n\n    .faq-contents {\n        .inner-container {\n            padding-top: 0px;\n\n            @media (max-width: 768px) {\n                h1 {\n                    font-size: 30px;\n                    margin-top: 60px;\n                }\n            }\n        }\n    }\n\n    .panel-header {\n        display: flex;\n        align-items: center;\n\n        .row-index {\n            width: 80px;\n            color: ${mainColor};\n            font-size: ${sizeHandler(14)};\n            font-weight: bold;\n        }\n\n        .title {\n            flex: 1;\n            font-size: ${sizeHandler(16)};\n            font-weight: normal;\n            color: rgba(0, 0, 0, 0.7);\n        }\n\n        @media (max-width: 768px) {\n            .title {\n                font-size: ${sizeHandler(14)};\n            }\n        }\n    }\n\n    .panel-content {\n        padding-left: 80px;\n\n        > p {\n            width: 60%;\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.7);\n        }\n\n        > .panel-contents-wrapper {\n            margin-top: 20px;\n            margin-bottom: 20px;\n\n            .panel-contents {\n                padding: 12px 0px;\n                border-bottom: 1px solid #e6e6e6;\n\n                &:first-child {\n                    border-top: 1px solid #e6e6e6;\n                }\n\n                .panel-content-subtitle {\n                    float: left;\n                    width: 40%;\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    text-align: left;\n                    color: ${mainColor};\n                }\n\n                .panel-content-subcontents {\n                    float: left;\n                    width: 50%;\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    color: rgba(0, 0, 0, 0.7);\n                }\n\n                @media (max-width: 768px) {\n                    .panel-content-subtitle {\n                        width: 100%;\n                    }\n\n                    .panel-content-subcontents {\n                        width: 100%;\n                    }\n                }\n            }\n        }\n    }\n\n    h1 {\n        font-size: ${sizeHandler(34)};\n        font-weight: bold;\n        color: rgba(0, 0, 0, 0.8);\n        letter-spacing: -1px;\n\n        margin-bottom: 26px;\n        margin-top: 50px;\n    }\n\n    @media (max-width: 1120px) {\n        .faq-header {\n            .inner-container {\n                padding-left: 16px;\n                padding-right: 16px;\n            }\n        }\n        .inner-container {\n            padding-left: 16px;\n            padding-right: 16px;\n        }\n    }\n\n    @media (max-width: 768px) {\n        .panel-header {\n            .row-index {\n                width: 70px;\n            }\n        }\n\n        .panel-content {\n            padding-left: 70px;\n\n            > p {\n                width: 90%;\n            }\n        }\n    }\n`;\nexport default StyledFaqContainer;\n","import React from 'react';\nimport { HashLink } from 'react-router-hash-link';\nimport { Collapse, Icon } from 'antd';\nimport { mainColor } from '../../../theme';\nconst { Panel } = Collapse;\n\nexport default class FAQ extends React.PureComponent {\n    render() {\n        const { hash } = this.props.location;\n        return (\n            <div className='faq-container'>\n                <div className='faq-header'>\n                    <div className='inner-container'>\n                        <div className='flex-wrapper'>\n                            <div className='faq-main-title'>\n                                <p className='title'>위드메이트 FAQ</p>\n                                <p className='description'>고객님의 궁금증을 해소하세요!</p>\n                            </div>\n                            <div className='img-section'>\n                                <img src={'/assets/images/faq_bg2.png'} alt='faq-img' />\n                            </div>\n                            <div className='faq-nav'>\n                                <div className='nav-tab'>\n                                    <HashLink className='name' to='/360F/faq/#common' scroll={el => el.scrollIntoView({ behavior: 'smooth', block: 'start' })}>\n                                        공통 FAQ\n                                    </HashLink>\n                                    <span className={`underline ${hash === '#common' ? 'active' : undefined}`}></span>\n                                </div>\n                                <div className='nav-tab'>\n                                    <HashLink\n                                        className='name'\n                                        to='/360F/faq/#emergency'\n                                        scroll={el => el.scrollIntoView({ behavior: 'smooth', block: 'start' })}\n                                    >\n                                        병원 동행 Pro FAQ\n                                    </HashLink>\n                                    <span className={`underline ${hash === '#emergency' ? 'active' : undefined}`}></span>\n                                </div>\n                                <div className='nav-tab'>\n                                    <HashLink className='name' to='/360F/faq/#assist' scroll={el => el.scrollIntoView({ behavior: 'smooth', block: 'start' })}>\n                                        병원 동행 Basic FAQ\n                                    </HashLink>\n                                    <span className={`underline ${hash === '#assist' ? 'active' : undefined}`}></span>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div className='faq-contents'>\n                    <div className='inner-container'>\n                        <h1 id='common'>공통 FAQ</h1>\n                        <div>\n                            <Collapse\n                                expandIconPosition='right'\n                                bordered={false}\n                                expandIcon={({ isActive }) => (\n                                    <Icon type='right' rotate={isActive ? 90 : -90} style={{ color: isActive ? mainColor : '#a7a7a7' }} />\n                                )}\n                            >\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='1-1' title='동행인의 신원은 확실한가요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            현재 위드메이트는 적격 자격을 갖춘 인원들을 선별하고 세밀한 채용 단계를 거친 후, 영업 배상 책임 보험 가입과 함께\n                                            엄격한 자체 교육을 실시하며 서비스 인력을 모집하고 있습니다.\n                                            <br />\n                                            이와 동시에 위드메이트가 진행하는 주기적인 교육과 점검을 통해 서비스를 제공하는 인력 모두가 건강한 긴장감을 놓치지\n                                            않도록 철저하게 관리하고 있습니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='1-2' title='서비스 신청 방법에 대해 알려주세요.' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            위드메이트 서비스는 웹사이트를 통해 신청이 가능합니다. 웹사이트 내 서비스 신청 모듈을 통해 서비스 신청을 해주시면\n                                            됩니다. 회원 가입 진행을 완료하신 분이라면 전화 상담을 통한 예약 신청 또한 가능합니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='1-3' title='서비스 신청 후 절차가 어떻게 되나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            예약 접수가 완료되면, 위드메이트 소속의 전문 동행인들은 예약 발생 알림을 받고 검토를 진행하게 됩니다. 이후 동행인이\n                                            예약을 접수하면 고객님께 ‘예약 완료’ 알림이 가고, 고객님께서 해당 동행인의 접수를 수락하시면 최종 ‘매칭’이\n                                            이루어집니다. 이후 예약 일정에 맞춰 동행인과 함께 병원에 방문하시면 됩니다. 고객님께서 동행인의 접수를 거절하시면\n                                            처음 단계로 돌아가 다른 동행인의 접수를 대기하게 됩니다.\n                                            <br />\n                                            만약 동행인 접수가 불가한 경우 고객님께 예약 불가 알림이 가고, 추후 서비스 재신청을 통해 서비스를 받을 수 있습니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='1-4' title='위드메이트 서비스 이용 가능 지역은 어떻게 되나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            위드메이트의 서비스는 현재 수도권 내에서 이용 가능합니다. 빠른 시일 내 경기도를 포함한 타 지역 서비스 확장을 계획\n                                            중에 있습니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='1-5' title='예약 변경 및 취소 수수료는 어떻게 되나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>고객님께서 정상적으로 매칭된 병원 동행 서비스 계약을 취소 및 변경하는 경우에는 아래와 같이 수수료가 발생합니다.</p>\n                                        <div className='panel-contents-wrapper'>\n                                            <div className='panel-contents'>\n                                                <p className='panel-content-subtitle'>서비스 예약 날짜 기준 48시간 이내 변경 및 취소</p>\n                                                <p className='panel-content-subcontents'>수수료 없이 변경 & 취소 가능</p>\n                                                <div className='clearfix' />\n                                            </div>\n                                            <div className='panel-contents'>\n                                                <p className='panel-content-subtitle'>서비스 예약 전날 18:00 이전 변경 및 취소</p>\n                                                <p className='panel-content-subcontents'>\n                                                    취소 시 수수료 10,000원 발생. 단, 메이트와 변경 협의 성공 시에는 수수료 부과 X\n                                                </p>\n                                                <div className='clearfix' />\n                                            </div>\n                                            <div className='panel-contents'>\n                                                <p className='panel-content-subtitle'>당일 예약 변경 및 취소</p>\n                                                <p className='panel-content-subcontents'>\n                                                    취소 시 수수료 15,000원 발생. 단, 메이트와 변경 협의 성공 시에는 수수료 부과 X\n                                                </p>\n                                                <div className='clearfix' />\n                                            </div>\n                                            <div className='panel-contents'>\n                                                <p className='panel-content-subtitle'>서비스 시작 2시간 전 이내 변경 및 취소</p>\n                                                <p className='panel-content-subcontents'>\n                                                    취소 시 수수료 20,000원 발생. 단, 메이트와 변경 협의 성공 시에는 수수료 부과 X\n                                                </p>\n                                                <div className='clearfix' />\n                                            </div>\n                                            <div className='panel-contents'>\n                                                <p className='panel-content-subtitle'>노쇼(No-Show)의 경우</p>\n                                                <p className='panel-content-subcontents'>회원 자격 정지 및 민/형사상 책임 소지를 물을 수 있음</p>\n                                                <div className='clearfix' />\n                                            </div>\n                                        </div>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='1-6' title='회사측의 과실로 예약일정을 소화 못하면 어떻게 되나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            회사측의 과실로 예약된 서비스를 이용하지 못한 경우 서비스 요금을 전액 배상해드리며, 상황에 따라 서비스 무료 이용권\n                                            등의 추가 배상을 진행합니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='1-7' title='예약 장소에서 담당 동행인을 어떻게 찾나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            예약 접수 후 동행인 매칭이 완료되면 ‘마이페이지’ 내에서 동행인의 정보를 확인하실 수 있으며, 해당 정보를 통해\n                                            동행인과 서비스 관련 소통을 진행하시면 됩니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='1-8' title='예약한 시간보다 진료나 귀가가 늦어져 서비스 시간이 추가되면 어떻게 되나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            위드메이트 서비스는 후불제이기 때문에 예약한 서비스 시간을 넘어 추가 서비스가 이루어지는 경우, 해당 시간만큼의 추가\n                                            비용이 발생합니다. 서비스 종료 후 추가된 금액이 포함된 최종 요금을 결제하시면 됩니다. 추가 비용은 서비스 시간 15분\n                                            미만 초과 시 발생하지 않으며, 15분을 초과할 시 30분 단위의 요금이 발생합니다.\n                                            <br />\n                                            (Ex. 2시간 예약 서비스가 최종 2시간 14분으로 종료 > 추가 요금 발생 X)\n                                            <br />\n                                            (Ex. 2시간 예약 서비스가 최종 2시간 16분으로 종료 > 추가 요금 발생 O)\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='1-9' title='위드메이트 서비스는 사용 가능 시간이 어떻게 되나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            위드메이트의 모든 서비스는 주 5일 (월~금), 1일 10시간 (오전 9시 ~ 오후 7시) 동안 이용 가능합니다. 주말 및 공휴일에는\n                                            서비스 제공을 하지 않습니다. 하지만 특수 예약에 대해서는 해당 시간 외에도 서비스를 제공할 수 있습니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                            </Collapse>\n                        </div>\n                        <h1 id='emergency'>병원 동행 Pro FAQ</h1>\n                        <div>\n                            <Collapse\n                                expandIconPosition='right'\n                                bordered={false}\n                                expandIcon={({ isActive }) => (\n                                    <Icon type='right' rotate={isActive ? 90 : -90} style={{ color: isActive ? mainColor : '#a7a7a7' }} />\n                                )}\n                            >\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='2-1' title='병원 동행 Pro는 정확히 어떤 경우에 신청할 수 있나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            병원 동행 Pro는 응급 상황에 처하지는 않았으나 정기적, 혹은 비정기적으로 의료 기관에 방문해 의료 조치를 받아야 하는\n                                            경우에 신청 가능합니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='2-2' title='서비스 요금은 어떻게 되나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            병원 동행 Pro 서비스 요금은 시간 당 25,000원입니다. 또, 고객 소유의 차량을 메이트가 운행하여 동행할 경우 20,000원이\n                                            추가됩니다 (택시 등 대중 교통을 이용할 경우 추가 요금은 없으나 해당 교통비 개별 부담). 모든 서비스 비용은 VAT 포함\n                                            가격입니다.\n                                            <br />\n                                            (Ex. 2시간 예약 + 고객 소유 차량 운행 선택 시 > 기본 요금 50,000원 + 차량 운행비 20,000원 = 70,000원)\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='2-3' title='동행인의 성별은 어떻게 되나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>남성과 여성 인력이 모두 대기 중입니다.</p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='2-4' title='서비스는 어떤 형식으로 이루어지나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            예약일과 시간에 맞춰 위드메이트 소속의 동행인이 병원 출발지(고객님 자택 등)로 도착합니다. 이후 서비스 신청에 따라\n                                            고객 소유의 차량을 통해 이동할 경우 동행인이 차량을 운행하고 병원까지 이동하며(택시 등의 대중 교통 이용 시 해당 비용\n                                            자가 부담), 병원 내에서 이루어지는 모든 활동에 동행합니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='2-5' title='동행인은 어떤 사람들인가요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            동행인은 철저하게 선별되고 영업배상책임보험에 가입되어 있으며, 위드메이트가 자체적으로 실시하는 엄격한 서비스 교육을\n                                            모두 이수하고 통과한 전문가입니다. 또, 위드메이트의 동행인은 국립 암센터에서 실시하는 주기적인 암 환자 관리 교육 및\n                                            세미나에 지속적으로 참여해 서비스 품질과 전문성이 보장된 인력들입니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='2-6' title='중증 또는 휠체어 등의 의료 기구 대동이 필요한 환자도 이용 가능한가요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            중증 또는 휠체어 등의 의료 기구 대동이 필요한 환자에 대한 비응급 의료 동행 서비스는 준비 중에 있습니다. 현\n                                            서비스로는 해당 인원과의 동행은 불가하며, 예약이 접수된 경우 개별적인 연락을 통해 예약 불가를 알려드립니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={\n                                        <PanelHeader\n                                            rowIndex='2-7'\n                                            title='단발성이 아니라 수회에 걸쳐서 정기적으로 위드메이트 서비스를 이용하고 싶은데 이 같은 경우 예약을 어떻게 하나요?'\n                                        />\n                                    }\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            방사선이나 암 치료와 같이 주기적으로 내원이 필요한 경우 개별 상담을 통해 예약이 가능합니다. 위드메이트 서비스를 장기\n                                            예약할 경우 특별 할인 혜택 또한 제공되고 있습니다. 서비스 센터로 문의 주실 경우 위드메이트의 전문 상담원이\n                                            안내해드립니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                            </Collapse>\n                        </div>\n                        <h1 id='assist'>병원 동행 Basic FAQ</h1>\n                        <div>\n                            <Collapse\n                                expandIconPosition='right'\n                                bordered={false}\n                                expandIcon={({ isActive }) => (\n                                    <Icon type='right' rotate={isActive ? 90 : -90} style={{ color: isActive ? mainColor : '#a7a7a7' }} />\n                                )}\n                            >\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='3-1' title='병원 동행 Basic은 정확히 어떤 경우에 신청할 수 있나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            병원 동행 Basic은 주로 수술의 범주에는 속하지 않지만 마취 혹은 단순 보호자가 필요한 수면 내시경 등을 포함한 모든\n                                            종류의 시술을 해야 할 경우에 신청합니다. 물론 Pro 서비스를 받아야 하지만 자택에서 병원, 다시 병원에서 자택까지의\n                                            동행 과정을 필요로 하지 않는 상황에서도 신청이 가능합니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='3-2' title='서비스 요금은 어떻게 되나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            병원 동행 Basic 요금은 시간 당 15,000원입니다. (Ex. 2시간 예약 시 30,000원)\n                                            <br /> 모든 서비스 비용은 VAT 포함 가격입니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='3-3' title='동행인은 어떤 사람들인가요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>병원 동행 Basic 서비스 동행인은 Pro 서비스와 동일한 인력으로 구성되어 있습니다.</p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='3-4' title='동행인의 성별은 어떻게 되나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>남성과 여성 인력이 모두 대기 중입니다.</p>\n                                    </PanelContent>\n                                </Panel>\n                                <Panel\n                                    style={{ backgroundColor: '#ffffff', borderColor: '#e6e6e6' }}\n                                    header={<PanelHeader rowIndex='3-5' title='서비스는 어떤 형식으로 이루어지나요?' />}\n                                >\n                                    <PanelContent>\n                                        <p>\n                                            고객님께서 지정하신 병원에서 동행자와 접선 후, 동행자는 예약자의 진료 접수부터 종료 시점까지 병원 내부에서\n                                            대기합니다. 진료 종료 후, 동행자는 예약자의 의사를 확인한 후 업무를 마치고 복귀합니다.\n                                        </p>\n                                    </PanelContent>\n                                </Panel>\n                            </Collapse>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\n\nconst PanelHeader = ({ rowIndex, title }) => {\n    return (\n        <div className='panel-header'>\n            <p className='row-index'>{rowIndex}</p>\n            <p className='title'>{title}</p>\n        </div>\n    );\n};\n\nconst PanelContent = ({ children }) => {\n    return <div className='panel-content'>{children}</div>;\n};\n","import React from 'react';\nimport StyledFaqContainer from './faq.styled';\nimport FAQ from './faq';\n\nclass FAQContainer extends React.PureComponent {\n    render() {\n        return (\n            <StyledFaqContainer>\n                <FAQ {...this.props} />\n            </StyledFaqContainer>\n        );\n    }\n}\nexport default FAQContainer;\n","import styled from 'styled-components';\nimport { sizeHandler, mainColor } from '../../../../theme';\nconst PrivacyStyledContainer = styled.div`\n    .inner-container {\n        ${props => props.component && `padding: 0px !important;`}\n    }\n\n    .main-context {\n        width: ${props => (props.component ? '100%' : '60%')};\n\n        h2 {\n            ${props => props.component && `display: none;`}\n            font-size: ${sizeHandler(44)};\n            font-weight: bold;\n            letter-spacing: -0.6px;\n            color: #000000;\n            margin-bottom: 24px;\n        }\n\n        p {\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.8);\n            padding: 0px;\n            margin: 0px;\n        }\n    }\n\n    .context-block {\n        margin-top: ${props => (props.component ? '24px' : '100px')};\n        padding-top: 24px;\n        border-top: 1px solid #e6e6e6;\n        width: ${props => (props.component ? '100%' : '60%')};\n\n        > h3 {\n            font-size: ${sizeHandler(24)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n            margin-bottom: 16px;\n        }\n\n        > h6 {\n            font-size: ${sizeHandler(16)};\n            font-weight: normal;\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.8);\n            margin-bottom: 24px;\n        }\n\n        > h5 {\n            font-size: ${sizeHandler(18)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n            margin-top: 20px;\n            margin-bottom: 12px;\n        }\n\n        > p {\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.7);\n        }\n\n        > .medium-bold {\n            font-size: ${sizeHandler(18)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n        }\n\n        > .privacy-justify {\n            display: flex;\n            align-items: center;\n            ${props => props.component && `display: block;`}\n\n            p {\n                flex: 1;\n                font-size: ${sizeHandler(14)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.7);\n\n                &:first-child {\n                    text-align: left;\n                }\n\n                &:last-child {\n                    text-align: right;\n                    ${props => props.component && `text-align: left;`}\n                }\n            }\n        }\n\n        > .info {\n            margin-top: 8px;\n            .title {\n                border-bottom: 1px solid #e6e6e6;\n                padding: 24px 0px;\n                font-size: ${sizeHandler(14)};\n                letter-spacing: -0.3px;\n                color: rgba(0, 0, 0, 0.7);\n                margin: 0px;\n\n                .bold {\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    color: rgba(0, 0, 0, 0.7);\n                    margin: 0px;\n                    padding: 0px;\n                    margin-bottom: 4px;\n                    display: block;\n                }\n\n                .in {\n                    font-size: ${sizeHandler(13)};\n                    color: rgba(0, 0, 0, 0.7);\n                    margin: 0px;\n                    padding: 0px;\n                    margin-bottom: 4px;\n                    display: block;\n                    text-indent: -20px;\n                    padding-left: 40px;\n                }\n            }\n\n            .content {\n                font-size: ${sizeHandler(14)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.7);\n                padding: 20px 0px;\n                border-bottom: 1px solid #e6e6e6;\n            }\n        }\n\n        > .info-block {\n            margin-top: 68px;\n\n            .title {\n                font-size: ${sizeHandler(18)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.8);\n                margin-bottom: 8px;\n            }\n\n            .content {\n                font-size: ${sizeHandler(14)};\n                line-height: ${sizeHandler(24)};\n                letter-spacing: -0.3px;\n                color: rgba(0, 0, 0, 0.7);\n            }\n        }\n    }\n\n    @media (max-width: 1120px) {\n        .inner-container {\n            padding-left: 16px;\n            padding-right: 16px;\n        }\n    }\n\n    @media (max-width: 768px) {\n        .main-context {\n            width: 100%;\n\n            h2 {\n                font-size: ${sizeHandler(38)};\n            }\n        }\n\n        .context-block {\n            width: 100%;\n        }\n\n        .privacy-justify {\n            flex-direction: column;\n\n            p {\n                &:first-child {\n                    text-align: center;\n                }\n                &:last-child {\n                    text-align: center;\n                }\n            }\n        }\n    }\n`;\nexport default PrivacyStyledContainer;\n","import React from 'react';\n\nclass PrivacyComponent extends React.PureComponent {\n    render() {\n        return (\n            <div className='privacy-container'>\n                <div className='inner-container'>\n                    <div className='main-context'>\n                        <h2>㈜ 블루카멜 개인정보처리방침</h2>\n                        <p>\n                            병원동행서비스 위드메이트(www.withmate.kr, 이하 “서비스\")를 운영하는 (주)블루카멜(이하 “회사”)은 「개인정보보호법」 제30조에 따라\n                            정보주체의 개인정보를 보호하고 이와 관련한 고충을 신속하고 원활하게 처리할 수 있도록 다음과 같이 개인정보처리방침(이하 \"방침\")을\n                            수립 및 공개합니다. 개인정보처리방침은 관련 법령 또는 지침, 회사의 약관 또는 정책에 따라 변경될 수 있습니다. 회사는 해당 변경 사항을\n                            온라인 게시 등의 방법으로 이용자에게 알립니다.\n                            <br />\n                            <br />이 개인정보처리방침은 2023년 7월 25일부터 적용됩니다.\n                        </p>\n                        <br />\n                        <br />\n                        <br />\n\n                        <p style={{ fontSize: '20px' }}>\n                            <a\n                                href='https://docs.google.com/document/d/e/2PACX-1vTQ3CepPqUO6BqEg8va9_5e0zZg7V1nMuK7xiibF1Nxa2RQAX1C5xv3p4mnIVmkeeh_ClORu1P3Fs0p/pub'\n                                target='_blank'\n                                style={{ color: 'gray' }}\n                            >\n                                ✅ 개인정보처리방침 2차(2023.07.22)\n                            </a>\n                        </p>\n                        <p style={{ fontSize: '20px' }}>\n                            <a\n                                href='https://docs.google.com/document/d/e/2PACX-1vQTjHkJBb2VK4gofoPrHZVYbgCOvOgDDvClVJjwYpx7ikkLFW37GUlFS5Hwa8osGb7a7mNbg55qlEMu/pub'\n                                target='_blank'\n                                style={{ color: 'gray' }}\n                            >\n                                ✅ 개인정보처리방침 1차(2021.12.20)\n                            </a>\n                        </p>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\nexport default PrivacyComponent;\n","import React from 'react';\n\n// component\nimport PrivacyStyledContainer from './privacy.styled';\nimport Privacy from './privacy';\n\nclass PrivacyContainer extends React.PureComponent {\n    render() {\n        return (\n            <PrivacyStyledContainer component={this.props.isComponent || undefined}>\n                <Privacy {...this.props} />\n            </PrivacyStyledContainer>\n        );\n    }\n}\n\nexport default PrivacyContainer;\n","import styled from 'styled-components';\nimport { sizeHandler, mainColor } from '../../../../theme';\nconst TermsStyledContainer = styled.div`\n    .inner-container {\n        ${props => props.component && `padding: 0px !important;`}\n    }\n    .main-context {\n        width: ${props => (props.component ? '100%' : '60%')};\n\n        h2 {\n            ${props => props.component && `display: none;`}\n            font-size: ${sizeHandler(44)};\n            font-weight: bold;\n            letter-spacing: -0.6px;\n            color: #000000;\n            margin-bottom: 24px;\n        }\n\n        p {\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.8);\n            padding: 0px;\n            margin: 0px;\n        }\n    }\n\n    .context-block {\n        margin-top: ${props => (props.component ? '24px' : '100px')};\n        padding-top: 24px;\n        border-top: 1px solid #e6e6e6;\n        width: ${props => (props.component ? '100%' : '60%')};\n\n        > h3 {\n            font-size: ${sizeHandler(24)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n            margin-bottom: 16px;\n        }\n\n        > h6 {\n            font-size: ${sizeHandler(16)};\n            font-weight: normal;\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.8);\n            margin-bottom: 24px;\n        }\n\n        > h5 {\n            font-size: ${sizeHandler(18)};\n            font-weight: bold;\n            color: rgba(0, 0, 0, 0.8);\n            margin-top: 20px;\n            margin-bottom: 12px;\n        }\n\n        > p {\n            font-size: ${sizeHandler(14)};\n            letter-spacing: -0.3px;\n            color: rgba(0, 0, 0, 0.7);\n        }\n\n        > .privacy-justify {\n            display: flex;\n            align-items: center;\n            ${props => props.component && `display: block;`}\n\n            p {\n                flex: 1;\n                font-size: ${sizeHandler(14)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.7);\n\n                &:first-child {\n                    text-align: left;\n                }\n\n                &:last-child {\n                    text-align: right;\n                    ${props => props.component && `text-align: left;`}\n                }\n            }\n        }\n\n        > .info {\n            margin-top: 8px;\n            .title {\n                border-bottom: 1px solid #e6e6e6;\n                padding: 24px 0px;\n                font-size: ${sizeHandler(14)};\n                letter-spacing: -0.3px;\n                color: rgba(0, 0, 0, 0.7);\n                margin: 0px;\n\n                .bold {\n                    font-size: ${sizeHandler(14)};\n                    font-weight: bold;\n                    color: rgba(0, 0, 0, 0.7);\n                    margin: 0px;\n                    padding: 0px;\n                    margin-bottom: 4px;\n                    display: block;\n                }\n            }\n\n            .content {\n                font-size: ${sizeHandler(14)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.7);\n                padding: 20px 0px;\n                border-bottom: 1px solid #e6e6e6;\n            }\n        }\n\n        > .info-block {\n            margin-top: 68px;\n\n            .title {\n                font-size: ${sizeHandler(18)};\n                font-weight: bold;\n                color: rgba(0, 0, 0, 0.8);\n                margin-bottom: 8px;\n            }\n\n            .content {\n                font-size: ${sizeHandler(14)};\n                line-height: ${sizeHandler(24)};\n                letter-spacing: -0.3px;\n                color: rgba(0, 0, 0, 0.7);\n            }\n        }\n    }\n\n    @media (max-width: 1120px) {\n        .inner-container {\n            padding-left: 16px;\n            padding-right: 16px;\n        }\n    }\n\n    @media (max-width: 768px) {\n        .main-context {\n            width: 100%;\n\n            h2 {\n                font-size: ${sizeHandler(38)};\n            }\n        }\n\n        .context-block {\n            width: 100%;\n        }\n\n        .privacy-justify {\n            flex-direction: column;\n\n            p {\n                &:first-child {\n                    text-align: center;\n                }\n                &:last-child {\n                    text-align: center;\n                }\n            }\n        }\n    }\n`;\nexport default TermsStyledContainer;\n","import React from 'react';\n\nclass TermsComponent extends React.PureComponent {\n    render() {\n        return (\n            <div className='terms-container'>\n                <div className='inner-container'>\n                    <div className='main-context'>\n                        <h2>위드메이트 서비스 이용약관</h2>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 1조(목적)</h3>\n                        <p>\n                            본 약관은 ㈜블루카멜(이하 “회사”라 한다)가 제공하는 위드메이트 병원 동행 서비스와 관련하여 회사와 회원과의 권리,\n                            <br />\n                            의무 및 책임 사항, 그리고 기타 필요한 사항을 규정함을 목적으로 합니다.\n                        </p>\n                        <br />\n                        <p>본 서비스 이용약관은 2021년 12월 20일부터 시행됩니다.</p>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 2조(정의)</h3>\n                        <h5>1. 본 약관에서 사용하는 용어의 정의는 다음과 같습니다.</h5>\n\n                        <div className='info'>\n                            <p className='title'>“위드메이트 서비스” 혹은 “서비스”라 함은 당사가 제공하는 ‘병원 동행 서비스’를 의미합니다.</p>\n                            <p className='title'>\n                                “회원”이라 함은 회사가 제공하는 서비스를 이용하기 위하여 본 약관에 동의하고 회사의 회원으로 가입하는 자를 말합니다. (단,\n                                메이트와 관련된 사실 관계에 한하여, 메이트도 본 약관에서 “회원”에 포함될 수 있습니다)\n                            </p>\n                            <p className='title'>\n                                “메이트”라 함은 회사가 회원에게 서비스를 제공하기 위해 직접 선별하고 교육하여 ‘프리랜서’의 형태로 간접 고용한 인원을 말합니다.\n                            </p>\n                            <p className='title'>\n                                “운송사업자\"라 함은 여객자동차 운수사업법 제4조에 따른 면허를 받은 여객자동차 운송사업자로서, 회사(메이트 인력)의 중개 또는 회원\n                                스스로를 통해 택시 등 그 면허를 받은 운송 수단을 이용하여 운송서비스를 제공하는 자를 의미합니다.\n                            </p>\n                            <p className='title'>\n                                “중개”라 함은 회사가 직접 서비스를 제공하지 않고, 이용자 또는 회원의 요청에 따라 적격 메이트를 연결하여 알선하는 것을\n                                의미합니다.\n                            </p>\n                            <p className='title'>\n                                “매칭”이라 함은 회원이 플랫폼(웹사이트 포함)에서 출발지와 목적지를 입력하고, “예약하기\" 버튼을 통해 서비스 이용을 요청(이하\n                                “이용 요청”이라고 합니다)하면, 요청 시점에 서비스 제공이 가능한 메이트가 플랫폼(웹사이트 포함)을 통하여\n                                수락함으로써(매칭됨으로써), 회원과 회사 사이의 메이트 알선 계약이 각 체결된 상태를 의미합니다.\n                            </p>\n                            <p className='title'>\n                                “플랫폼(웹사이트 포함)”이라 함은 회사가 회원에게 서비스를 제공하기 위하여 개발한 위드메이트 애플리케이션과 웹사이트를\n                                의미합니다.\n                            </p>\n                            <p className='title'>\n                                “이용요금”이라 함은\n                                <br />\n                                (i) 메이트가 제공하는 의료 동행 서비스에 대한 비용\n                                <br />\n                                (ii) 회원이 택시 등 운송사업자의 운송 수단을 예약하거나 호출하여 이동하는 비용,\n                                <br />\n                                (iii) 기타 비용(고객 소유 자가용 대리 운전 비용, 예약 취소 및 변경 수수료 등)을 총칭하여 의미합니다.\n                            </p>\n                        </div>\n\n                        <h5 style={{ marginTop: '56px' }}>\n                            2. 본 약관에서 사용하는 용어의 정의는 본 조제 1항에서 정하는 것을 제외하고는 관계 법령에서 정하는 바에 의합니다. 관계 법령에서\n                            정하지 않는 것은 일반적인 상 관례에 의합니다.\n                        </h5>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 3조(약관의 효력 및 변경)</h3>\n                        <h5>1.</h5>\n                        <h6>\n                            약관은 애플리케이션 소프트웨어 및 해당 애플리케이션과 웹사이트의 모든 패치, 업데이트, 업그레이드 또는 새로운 버전에 적용되며, 가장\n                            최신 버전이 모든 기존 버전에 우선합니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            본 약관은 서비스 이용계약의 성격상 회사의 웹사이트 또는 서비스 이용을 위한 애플리케이션 내에 본 약관을 명시하고, 이용자가\n                            애플리케이션을 설치 및 실행 혹은 웹사이트 열람과 동시에 효력이 발생합니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>회사는 관계 법령 또는 상관습에 위배되지 않는 범위에서 본 약관을 개정할 수 있습니다.</h6>\n                        <h5 style={{ marginTop: '48px' }}>4.</h5>\n                        <h6>\n                            회사는 관련 법령의 변경이나 이용자의 권리 및 의무사항, 서비스 등을 개선하기 위해 본 약관을 변경할 수 있으며, 변경된 경우에 약관의\n                            내용과 적용일을 정하여, 적용일 7일 전 회사 공식 홈페이지나 공식 블로그, 제공하는 애플리케이션 등을 통해 이용자에게 고지하고\n                            적용일부터 효력이 발생합니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>5.</h5>\n                        <h6>\n                            이용자는 변경된 약관에 대해 거부할 권리가 있습니다. 본 약관의 변경에 대해 이의가 있는 이용자는 서비스 이용을 중단하고 이용을\n                            해지(탈퇴 및 삭제)할 수 있습니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>6.</h5>\n                        <h6>\n                            회사가 본 조 4항에 따라 변경된 약관을 공시 또는 고지하면서 이용자가 기간 내의 의사표시를 하지 않으면 변경된 약관에 동의한 것으로\n                            간주합니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 4조(약관 외 준칙)</h3>\n                        <h5>1.</h5>\n                        <h6>\n                            회사는 필요한 경우 특정 서비스에 관하여 적용될 사항을 위해 개별 약관이나 이용 정책을 정하여 운영할 수 있으며, 해당 내용은 홈페이지\n                            등을 통해 공지합니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            본 약관에 규정되지 않은 사항에 대해서는 관련 법령 또는 개별 약관, 이용 정책, 서비스 이용 화면을 통하여 제시된 개별 이용 조건(이용\n                            요금 등, 이하 “개별계약“이라고 합니다)에서 정한 바에 따릅니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>\n                            본 약관과 개별 약관, 개별 계약의 내용이 충돌할 경우 본 약관에 별도의 규정이 없는 한 개별 계약 또는 개별 약관에서 정한 바에 따릅니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>4.</h5>\n                        <h6>\n                            회원은 서비스 이용 시 개별 계약 또는 개별 약관의 내용을 확인하여야 하며, 이를 확인하지 않아 발생한 손해에 대해 회사는 책임을\n                            부담하지 않습니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 5조(이용 계약의 성립)</h3>\n                        <h5>1.</h5>\n                        <h6>\n                            이용 계약은 이용자가 본 이용 약관에 대한 동의 또는 회사의 애플리케이션을 다운로드 받거나 실행하여 이용하는 경우, 그리고 웹사이트\n                            회원 가입을 완료한 경우 이 약관에 동의한 것으로 간주합니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>이용자는 동의하지 않는 경우 애플리케이션이나 웹사이트 계정 로그아웃 및 삭제와 함께 이를 철회할 수 있습니다.</h6>\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>\n                            회사는 제 1항에 따른 회원 가입 신청에 대해 승낙함을 원칙으로 합니다. 다만, 다음 각 호의 경우 회사는 회원 가입 신청을 승낙하지 않거나\n                            사후에 회원 계약을 해지할 수 있습니다.\n                        </h6>\n\n                        <div className='info'>\n                            <p className='title'>신청자가 본 약관 위반 등의 사유로 이전에 회원 자격이 상실 또는 회원 계약이 해지되었던 경우</p>\n                            <p className='title'>자신의 귀책으로 이용 정지를 당한 회원이 그 이용 정지 기간 중에 이용 계약을 임의 해지하고 재신청을 하는 경우</p>\n                            <p className='title'>본 약관에 위배되거나 위법 또는 사회상규상 부당한 가입 신청임이 확인된 경우</p>\n                            <p className='title'>허위의 정보를 기재한 경우, 회사가 제시하는 내용을 기재하지 않은 경우 또는 오기 등이 있는 경우</p>\n                            <p className='title'>미성년자 등 법령상 행위 무능력자인 경우</p>\n                            <p className='title'>기타 신청자의 귀책 사유로 인하여 승낙이 불가능하거나 기타 회사가 정한 제반 사항을 위반한 자의 신청</p>\n                        </div>\n\n                        <h5 style={{ marginTop: '48px' }}>4.</h5>\n                        <h6>\n                            서비스 신청자가 대리인일 경우, 해당 서비스 수혜자에 대한 모든 정보는 사실에 근거하여 제공되어야 하며, 허위 사실 기재 시 발생하는\n                            모든 민형사상 책임은 신청자에게 있습니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 6조(회원 계약의 해제 및 해지 등)</h3>\n                        <h5>1.</h5>\n                        <h6>\n                            회원은 언제든지 회원 계약의 해지를 신청할 수 있으며, 회사는 관련 법령에서 정하는 바에 따라 이를 즉시 처리하여야 합니다. 다만,\n                            회원에게 미수금이 있을 경우에는 미수금에 대한 결제를 완료한 이후에 해지 신청이 가능합니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            회원이 회원 계약을 해지할 경우, 회사는 관련 법령 개인정보처리방침 또는 내부관리 계획 등에 따라 회원 정보를 보유하는 경우를\n                            제외하고는 해지 즉시 회원의 모든 정보를 삭제합니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>\n                            회원 계약 해지로 인해 발생한 불이익에 대한 책임은 회원 본인이 부담해야 하며, 회사는 회원에게 부가적으로 제공한 각종 무상 혜택을\n                            회수할 수 있습니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>4.</h5>\n                        <h6>\n                            회사가 회원 계약을 해지하는 경우 회사는 회원에게 해지 사유를 밝혀 해지 의사를 통지합니다. 이 경우 회사는 해지를 하기 전에 상당한\n                            기간을 정하여 회원에게 이의 신청의 기회를 부여합니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>5.</h5>\n                        <h6>회원 계약이 회사에 의해 해지되는 경우 회원의 재이용 신청에 대해 회사는 승낙을 거절할 수 있습니다.</h6>\n                        <h5 style={{ marginTop: '48px' }}>6.</h5>\n                        <h6>\n                            회원의 귀책 사유로 인해 회원 계약이 해지됨으로써 발생한 손해는 당해 회원이 부담하여야 하며, 회사는 관련 법령에 규정이 없는 한 책임을\n                            부담하지 않습니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 7조(서비스 내용)</h3>\n                        <h5>1.</h5>\n                        <h6>회사가 제공하는 병원 동행 서비스의 내용은 다음과 같습니다.</h6>\n                        <div className='info'>\n                            <p className='title'>\n                                <span className='bold'>병원 동행 Pro 서비스 : </span>응급 상황에 처하지는 않았으나 정기적, 혹은 비정기적으로 의료 기관에 방문해\n                                적절한 조치를 받아야 하는 고객을 위한 서비스.\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>병원 동행 Basic 서비스 & 수면내시경 보호자 서비스 :</span>보호자 동행이 법적 의무는 아니나 보호자가 없을\n                                경우 시술이 어려운 수면 내시경 등과 같은 의료 조치를 받아야 하는 고객을 위한 보호자 대행 서비스.\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>병원 동행 서비스 제공을 위한 메이트 알선(중개) 서비스 : </span>회원의 서비스 이용 요청 시 적격 자격을\n                                갖춘 인원을 회사가 직접 선별하고 교육한 후, 프리랜서로 등록된 인력이 병원 동행 서비스를 위한 동행자를 알선 받을 수 있도록\n                                중개해주는 서비스.\n                            </p>\n\n                            <p className='title'>\n                                <span className='bold'>고객 소유 자가용 대리 운전 서비스 : </span>회원의 요청에 따라 알선된 메이트가 고객 소유의 자가용을 운행해\n                                병원과 자택을 이동하는 서비스\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>택시 등 여객자동차 운송 중개 서비스 :</span>회원의 요청에 따라 알선된 메이트가 택시 등 여객자동차\n                                운송사업자의 운송 수단을 호출하여 동행할 수 있도록 중개해주는 서비스.\n                            </p>\n                        </div>\n\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>회사는 제1항의 각 호의 서비스 이외에도 추가적인 서비스를 개발하여 회원에게 제공할 수 있습니다.</h6>\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>\n                            회사가 제공하는 서비스와 플랫폼(웹사이트 포함)의 사용은 무료입니다. 단, 회사가 제공한 서비스를 통해 메이트 알선을 포함한 병원 동행\n                            서비스가 제공되는 경우 사용자는 해당 서비스에 대한 이용 요금을 지불할 의무를 가집니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>4.</h5>\n                        <h6>\n                            회사는 회원과 메이트 사이의 병원 동행 서비스 혹은 메이트 알선 계약 및 회원과 여객자동차 운송사업자 사이의 운송 계약 체결을 중개하고\n                            제 8조 1항에 명시된 ‘병원 동행 서비스 비용’을 수취하는 회사입니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>5.</h5>\n                        <h6>회사의 메이트는 고객에게 어떠한 형태의 의료 서비스나 치료, 구급차 등의 의료 운송 서비스를 제공하지 않습니다.</h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 8조(이용 요금 등)</h3>\n                        <h5>1.</h5>\n                        <h6>\n                            위드메이트 서비스 이용 요금은 ‘병원 동행 서비스 비용’으로 구성되어 있습니다. 단, 상황에 따라 이동 중에 발생하는 운송 교통 비용이\n                            고객 본인 부담으로 발생할 수 있습니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            회사는 이용 요금을 애플리케이션 혹은 웹사이트 내의 예약하기 페이지에 게시하거나, 예약 완료 시에 별도로 회원에게 안내합니다. 다만\n                            최종 이용 요금은 다양한 변수에 따라서 서비스 종료 후 추가 부과가 될 수 있습니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>\n                            메이트가 회원이 지정한 출발지에 도착하여 회원에게 도착을 안내하였음에도 회원이 사전 연락 없이 일정 시간(20분) 이내에 나타나지\n                            아니하거나 계약을 취소하는 경우 회사는 제 9조에 명시된 취소 수수료를 회원에게 부과할 수 있습니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>4.</h5>\n                        <h6>\n                            [병원 동행 Pro] 서비스 이용 옵션 중 ‘고객 소유의 자차 운행’을 선택한 경우 예약일에 맞춰 본인의 차량 보험사가 제공하는 ‘임시 운전자\n                            특약’에 가입을 해야 합니다. 이때 발생하는 보험 비용은 고객 본인 부담이며, 임시 운전자 특약에 가입을 하지 않고 메이트에게 운전을\n                            위임하여 사고가 발생한 경우 모든 책임은 고객 본인에게 있습니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>5.</h5>\n                        <h6>\n                            서비스와 관련하여 발생한 미납경비, 손해배상 등 회원의 회사에 대한 채무가 모두 정산될 때까지 해당 회원의 서비스 사용이 중지되며, 그\n                            채무가 일정기간 계속하여 변제되지 않을 경우에는 해당 회원의 회원자격이 박탈될 수 있습니다. 서비스 사용 중지 또는 회원자격 박탈에\n                            대한 판단 기준은 회사의 약관 및 이용정책에 근거합니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>6.</h5>\n                        <h6>\n                            회원이 본 약관 및 위 각 조항을 준수하지 않았을 경우, 회사는 본 약관 및 이용 정책에 따라 손해배상 금액 등 각종 수수료를 부과하는 것\n                            외에 계약을 해지할 수 있는 권리를 가집니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>7.</h5>\n                        <h6>\n                            회사는 본 서비스와 관련하여 발생한 미납경비, 손해배상 등 회원의 회사에 대한 채무가 정산되지 않을 경우 회원을 상대로 보전처분,\n                            본안소송제기, 강제집행절차의 착수 등 채무 변제를 위한 법적 조치에 들어갈 수 있습니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 9조(계약 등의 취소)</h3>\n                        <h5>1. 회원이 정상적으로 매칭된 병원 동행 서비스 계약을 취소 및 변경하는 경우에는 아래와 같이 수수료가 발생합니다.</h5>\n\n                        <div className='info'>\n                            <p className='title'>\n                                <span className='bold'>서비스 예약 날짜 기준 48시간 이내 변경 및 취소</span>수수료 없이 변경 & 취소 가능\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>서비스 예약 전날 18:00 이전 변경 및 취소</span>취소 시 수수료 10,000원 발생. 단, 메이트와 변경 협의 성공\n                                시에는 수수료 부과 X 수수료 부과 X\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>당일 예약 변경 및 취소</span>취소 시 수수료 15,000원 발생. 단, 메이트와 변경 협의 성공 시에는 수수료 부과\n                                X\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>서비스 시작 2시간 전 이내 변경 및 취소</span>서비스 수수료 20,000원 발생. 단, 메이트와 변경 협의 성공\n                                시에는 수수료 부과 X 수수료 부과 X\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>노쇼(No-Show)의 경우</span>회원 자격 정지 및 민/형사상 책임 소지를 물을 수 있음\n                            </p>\n                        </div>\n\n                        <h5 style={{ marginTop: '48px' }}>\n                            2. 회사가 서비스 계약을 취소하는 경우 회원에게 사유를 설명하고 이용요금 전액을 청구하지 아니하며, 회원이 입은 피해에 대한 보상을\n                            협의하고 지급합니다.\n                        </h5>\n\n                        <h5 style={{ marginTop: '48px' }}>\n                            3. 서비스 수혜자의 상태(건강 이상, 인지능력 저하 등)에 따른 현장 판단으로 서비스가 수행되지 못한 경우에도, 이용자는 당일 취소\n                            수수료를 부담할 수 있습니다.\n                        </h5>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 10조(서비스 제공 밎 중단)</h3>\n\n                        <h5>1.</h5>\n                        <h6>\n                            회사는 서비스를 주 5일 (월~금), 1일 10시간 (오전 9시~오후 7시) 제공함을 원칙으로 합니다. 특수 예약에 대해서는 검토 후 해당 시간\n                            외에도 서비스를 제공할 수 있습니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            회사는 서비스의 제공에 필요한 경우 정기 점검을 실시할 수 있으며, 정기 점검 시간은 플랫폼(웹사이트 포함)의 서비스 제공 화면에 공지한\n                            바에 따릅니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>\n                            회사는 파산 또는 회생 절차 개시 등 정상적인 영업 활동이 곤란한 경우 또는 회사의 영업상 필요한 경우 서비스 내용을 변경하거나 서비스를\n                            종료할 수 있습니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>4.</h5>\n                        <h6>회사는 다음 각 호의 경우 당해 서비스의 전부 또는 일부의 제공을 중단하거나 제한할 수 있습니다.</h6>\n\n                        <div className='info'>\n                            <p className='title'>\n                                천재지변, 전쟁, 폭동, 화재, 파업 등 쟁의행위, 정부기관의 통제, 테러, 해킹, DDOS, 기타 회사의 합리적인 노력으로 제어할 수 없는\n                                사유가 발생하거나 발생할 우려가 있는 경우\n                            </p>\n                            <p className='title'>기간통신사업자로부터 전기통신서비스가 제공되지 않은 경우</p>\n                            <p className='title'>서비스용 설비의 장애 및 정기 점검, 보수점검, 교체 또는 고장, 통신의 두절 등의 사유가 발생한 경우</p>\n                            <p className='title'>서비스가 제3자와의 제휴를 통하여 제공되는 경우에 당해 제휴사업자의 사정에 따라 변경되거나 중지되는 경우</p>\n                            <p className='title'>기타 서비스의 원활한 운영을 현저히 저해하는 사유가 발생한 경우</p>\n                        </div>\n\n                        <h5 style={{ marginTop: '48px' }}>5.</h5>\n                        <h6>\n                            본 조 제3항, 제4항의 사유로 서비스 내용이 변경 또는 중단되는 경우, 회사는 그로 인해 회원이 입은 손해에 대하여 고의 또는 중과실이\n                            없는 한 배상하지 않습니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>6.</h5>\n                        <h6>회사는 본 조 상기된 사유가 발생한 경우 최대한 빠른 시간 내에 서비스를 재개하도록 최선의 노력을 다합니다.</h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 11조(서비스의 변경)</h3>\n\n                        <h5>1.</h5>\n                        <h6>\n                            회사는 상당한 이유가 있는 경우에 운영상, 기술상의 필요에 따라 제공하고 있는 전부 또는 일부의 서비스를 변경할 수 있습니다. 다만,\n                            변경된 내용이 중대하거나 회원에게 불리한 경우에는 회사가 해당 서비스를 제공받는 회원에게 통지합니다.\n                        </h6>\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            회사는 전항에 따른 서비스 변경에 대한 동의를 거절한 회원에 대하여는 해당 서비스의 제공을 중지하거나 회원 이용 계약을 해지할 수\n                            있습니다. 이 때 회원 역시 회원 계약을 종료할 권한을 가집니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 12조(회원에 대한 서비스 이용 제한 등)</h3>\n\n                        <h5>1.</h5>\n                        <h6>회사는 다음 각 호에 해당하는 경우 회원에 대하여 서비스 제공을 제한하거나 중지할 수 있습니다.</h6>\n                        <div className='info'>\n                            <p className='title'>\n                                폭언, 폭행, 그 밖에 적정 범위를 벗어난 신체적ㆍ정신적 고통을 유발하는 행위를 통해, 회원이 서비스의 정상적인 운영을 방해한 경우\n                            </p>\n                            <p className='title'>\n                                법정 감염병 환자, 법정 감염병 의사 환자, 감염병 병원체보유자 등, 환자가 각종 매개체를 통해 메이트에게 질병을 전염 및 유발할\n                                것으로 우려되는 경우\n                            </p>\n                            <p className='title'>회원이 타인의 명의를 도용하여 회원가입을 한 경우</p>\n                            <p className='title'>\n                                이용 요금을 지급하지 아니하거나 이용 요금을 결제함에 있어서 타인 명의 결제 도용, 전화번호 도용 등 불법적인 방법을 사용한 경우\n                            </p>\n                            <p className='title'>\n                                불법프로그램의 제공 및 운영 방해, 정보통신망법을 위반한 불법 통신 및 해킹, 악성프로그램의 배포, 접속 권한 초과 행위 등과 같이\n                                회원이 관련 법령을 위반한 경우\n                            </p>\n                            <p className='title'>회원이 계속해서 1년 이상 로그인하지 않는 경우</p>\n                            <p className='title'>\n                                서비스 수혜자의 상태가 다음에 해당하는 경우:\n                                <br />\n                                <p style={{ paddingLeft: '20px' }}>· 거동이 불가능하거나 현저히 떨어지는 경우</p>\n                                <p style={{ paddingLeft: '20px' }}>· 인지장애가 의심 또는 확인된 경우 (경중 불문, 서비스 제공 불가)</p>\n                                <p style={{ paddingLeft: '20px' }}>\n                                    · 위 사실을 은폐하거나 허위로 신청한 경우: 서비스 즉시 중단 및 법적 조치 대상이 될 수 있음\n                                </p>\n                            </p>\n                        </div>\n\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            회사는 사안에 따라 사전 또는 사후 통지하며, 보호자의 진술, 병원 소견, 메이트의 현장 판단 등을 토대로 제한 여부를 결정할 수 있습니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>\n                            회사는 서비스 수혜자 또는 보호자의 사전 고지 의무 위반 여부를 확인하기 위해 필요한 경우 의학적 소견서나 병원 진료 정보를 요청할 수\n                            있으며, 협조하지 않을 경우 서비스 제공이 제한될 수 있습니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 13조(개인정보의 관리 및 변경)</h3>\n\n                        <h6>\n                            이용자는 본 서비스의 이용을 위해 자신의 개인 정보를 성실히 관리해야 하며, 개인정보에 변동사항이 있을 경우 이를 변경해야 합니다. 본\n                            서비스를 이용하면서 이용자의 개인정보 변경이 지연되거나 누락, 이용자에 의해 유출되어 발생하는 손해는 이용자의 책임으로 합니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 14조(정보의 제공 및 광고의 게재)</h3>\n\n                        <h5>1.</h5>\n                        <h6>\n                            회사는 회원이 서비스 이용 중 필요하다고 인정되는 다양한 정보를 서비스 내 공지사항 또는 서비스 화면, 메시지, 전자우편 등의 방법으로\n                            회원에게 제공할 수 있습니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>회사는 서비스의 운영과 관련하여 서비스 화면 등에 광고를 게재할 수 있습니다.</h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 15조(회사의 의무)</h3>\n\n                        <h5>1.</h5>\n                        <h6>회사는 관련법과 본 약관의 금지하는 행위를 하지 않으며, 계속적이고 안정적인 서비스를 제공하기 위하여 최선을 다하여 노력합니다.</h6>\n\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>회사는 이용자의 개인정보 보호를 위한 보안 의무에 최선을 다합니다.</h6>\n\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>\n                            회사는 이용자로부터 제기되는 의견이나 불만이 정당하고 객관적으로 인정될 경우에는 적절한 절차를 거쳐 즉시 처리하여야 합니다. 다만,\n                            즉시 처리가 불가한 경우에는 이용자에게 그 사유와 처리 일정을 통보하여야 합니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>4.</h5>\n                        <h6>\n                            회사가 제공하는 서비스로 인하여 회원에게 손해가 발생한 경우 그러한 손해가 회사의 고의나 과실에 기해 발생한 경우에 한하여 회사에서\n                            책임을 부담합니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>5.</h5>\n                        <h6>회사는 정보통신망법, 통신비밀보호법, 전기통신사업법 등 서비스의 운영, 유지와 관련 있는 법령을 준수합니다.</h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 16조(회원의 의무)</h3>\n\n                        <h5>1.</h5>\n                        <h6>\n                            회원은 최종 요금 등의 서비스 조건을 확인한 후 이용 요청을 하여야 하고, 제 8조 2항에 따라 서비스 종료 이후 추가 요금이 발생할 수\n                            있다는 사실을 인지해야 합니다. 서비스 조건을 확인하지 않고 이용 요청을 하여 발생한 손실, 손해에 대한 책임은 회원 본인이 부담하여야\n                            합니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            회원은 본 약관 및 회사가 서비스와 관련하여 고지하는 내용을 준수하여야 하며, 약관 및 고지 내용을 위반하거나 이행하지 아니하여\n                            발생하는 모든 손실, 손해에 대하여 책임을 부담합니다. 이용 요청과 관련하여 회원이 입력한 정보 및 그 정보와 관련하여 발생한 책임과\n                            불이익은 전적으로 회원이 부담하여야 합니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>\n                            회원은 택시 혹은 승합자동차의 대여 및 이동 서비스 이용 시 반드시 본인 명의의 결제수단을 사용하여야 하며, 타인의 결제 수단을 임의로\n                            사용해서는 안 됩니다. 타인의 결제수단을 임의로 사용함으로써 발생하는 회사, 결제 수단의 적법한 소유자, 전자결제대행 또는 이동서비스\n                            제공자 등의 손실과 손해에 대한 모든 책임은 회원에게 있습니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>4.</h5>\n                        <h6>\n                            회원은 회사가 서비스를 안전하게 제공할 수 있도록 회사에 협조하여야 하며, 회사가 회원의 본 약관 위반행위를 발견하여 회원에게 해당\n                            위반행위에 대하여 소명을 요청할 경우 회원은 회사의 요청에 적극 응하여야 합니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>5.</h5>\n                        <h6>\n                            회원은 분쟁이 발생한 경우 분쟁의 해결을 위하여 성실히 임하여야 하며, 분쟁 해결에 대한 회원의 불성실로 인하여 이동 서비스 제공자 또는\n                            회사에 손해가 발생한 경우 회원은 이에 대한 책임을 부담하여야 합니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 17조(회원의 금지 행위)</h3>\n\n                        <h5>1.</h5>\n                        <h6>\n                            회사는 서비스의 신뢰성을 제고하고 안전한 거래가 이뤄질 수 있도록 회원에게 특정한 행위를 금지하며 이를 금지 행위로 규정하고 있습니다.\n                            금지 행위의 항목은 수시로 갱신될 수 있으며 항목 추가 및 변경 시 별도로 고지하지 않습니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            회원이 위드메이트 서비스로 중개 받은 메이트 또는 기타 운송 수단 탑승 중 메이트, 차량, 혹은 제 3자에 대하여 손해를 입혔을 경우 회원은\n                            이를 배상하여야 하며 구체적인 금액은 아래와 같습니다. 이에 관하여 제휴사의 기사 알선 포함 승합자동차 대여 서비스 이용약관에서 정한\n                            사항이 있다면 그에 따릅니다.\n                        </h6>\n                        <div className='info'>\n                            <p className='title'>\n                                <span className='bold'>메이트를 폭행하거나 정신적인 피해를 끼친 경우 :</span>치료비 전액 배상 및 영업손실비\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>차량을 오염시킨 경우: </span>30만원 이내에서 세차 실비 및 영업손실비\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>차량 및 차내 기물 파손 비용:</span> 원상 복구 비용 및 영업손실비\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>목적지 도착 후 하차 거부:</span>경찰서 등의 인계 시까지의 운임 및 영업손실비\n                            </p>\n                            <p className='title'>\n                                <span className='bold'>분실물 발견 후 배달 요청 :</span>배차 중지 후 분실물 배달을 위한 영업손실비\n                            </p>\n                        </div>\n\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>\n                            회사는 회원이 본 조의 금지행위를 하는 경우 서비스 이용을 제한할 수 있으며, 이 경우 발생하는 모든 책임은 회원이 부담합니다. 회사는\n                            필요한 경우 회원의 금지 행위 사실을 관련 정부기관 또는 사법기관에 통지할 수 있습니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <h3>제 18조(책임 제한)</h3>\n\n                        <h5>1.</h5>\n                        <h6>\n                            회사는 회원과 메이트 간, 회원과 운송사업자 간 거래를 중개하는 시스템의 운영 관리를 제공하며, 회원, 메이트, 운송사업자를 대리하지\n                            않습니다. 회원과 메이트, 그리고 운송사업자 사이에 성립된 거래에 따라 회원 또는 메이트, 혹은 운송사업자가 제공한 정보에 대한 책임은\n                            회원과 메이트, 그리고 운송사업자가 부담합니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>\n                            회원이 자신의 개인 정보 및 계정 등을 타인에게 제공하거나, 회원의 관리 소홀로 유출됨으로써 발생하는 피해에 대해서 책임을 부담하지\n                            않습니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>3.</h5>\n                        <h6>회사는 회원의 귀책 사유로 인한 서비스 이용의 장애에 대하여는 책임을 지지 않습니다.</h6>\n\n                        <h5 style={{ marginTop: '48px' }}>4.</h5>\n                        <h6>회사는 회원이 서비스와 관련하여 게재한 정보, 자료, 사실의 신뢰도, 정확성 등의 내용에 관하여는 책임을 부담하지 않습니다.</h6>\n\n                        <h5 style={{ marginTop: '48px' }}>5.</h5>\n                        <h6>\n                            회사는 서비스간 회원의 귀책 사유로 발생한 메이트와의 갈등(물리적 폭행, 언어 폭력, 부적절한 신체 접촉 등)으로 인해 발생한 피해에\n                            대해서 책임을 부담하지 않습니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>6.</h5>\n                        <h6>\n                            회사는 관계 법령의 변경, 천재지변, 디도스(DDOS)공격, IDC 장애, 기간통신사업자의 회선 장애 또는 이에 준하는 불가항력으로 인하여\n                            서비스를 제공할 수 없는 경우에는 서비스 제공에 관한 책임이 면제됩니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>7.</h5>\n                        <h6>\n                            회사는 회원의 서비스 이용과 직접적으로 관련이 없는 분쟁에 관여하지 않으며, 회원과 운전용역 제공자 및 운송사업자 또는 회원과 제3자\n                            간의 분쟁을 포함하여 도난, 폭행, 성범죄 등에 대해서는 회사의 과실이 없는 한 책임을 부담하지 않습니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>8.</h5>\n                        <h6>\n                            회사는 스마트기기 환경으로 인하여 발생하는 제반 문제 또는 회사의 귀책 사유가 없는 네트워크 환경으로 인하여 발생하는 문제에 대해서\n                            책임을 지지 않습니다.\n                        </h6>\n\n                        <h5 style={{ marginTop: '48px' }}>9.</h5>\n                        <h6>\n                            회사는 메이트의 현장 상황 판단(서비스 거부 포함)에 따라 불가피하게 서비스가 중단된 경우, 고의 또는 중대한 과실이 없는 한 책임을\n                            부담하지 않습니다.\n                        </h6>\n                    </div>\n\n                    <div className='context-block' style={{ marginBottom: '100px' }}>\n                        <h3>제 19조(분쟁의 해결)</h3>\n\n                        <h5>1.</h5>\n                        <h6>본 약관에 명시되지 않은 사항이 관계 법령에 규정되어 있을 경우에는 해당 규정에 따릅니다.</h6>\n\n                        <h5 style={{ marginTop: '48px' }}>2.</h5>\n                        <h6>서비스 이용으로 발생한 분쟁에 대해 소송이 제기되는 경우 법령에 정한 절차에 따른 법원을 관할 법원으로 합니다.</h6>\n                    </div>\n\n                    <div className='context-block'>\n                        <div className='privacy-justify'>\n                            <p className='version'>개인정보 처리방법 버전 번호 : v.1.2</p>\n                            <p className='date'>제정일자 : 2021년 12월 20일</p>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\nexport default TermsComponent;\n","import React from 'react';\nimport { connect } from 'react-redux';\n\n// component\nimport TermsStyledContainer from './terms.styled';\nimport Terms from './terms';\n\nclass TermsContainer extends React.PureComponent {\n    render() {\n        return (\n            <TermsStyledContainer component={this.props.isComponent || undefined}>\n                <Terms {...this.props} />\n            </TermsStyledContainer>\n        );\n    }\n}\n\nconst mapStateToProps = ({}) => ({});\nconst mapDispatchToProps = dispatch => ({});\nexport default connect(mapStateToProps, mapDispatchToProps)(TermsContainer);\n","import React, { useState } from \"react\";\nimport styled from 'styled-components';\nimport { message, Button } from 'antd';\nimport { DivisionLine } from '../../Components/Common/input';\nimport { Checkbox } from 'antd';\n\nconst DepartmentComponent = () => {\n    const department_data = [\n        { id: 1, name: \"가정의학과\" },\n        { id: 2, name: \"내과\" },\n        { id: 3, name: \"마취통증의학과\" },\n        { id: 4, name: \"방사선종양학과\" },\n        { id: 5, name: \"병리과\" },\n        { id: 6, name: \"산부인과\" },\n        { id: 7, name: \"성형외과\" },\n        { id: 8, name: \"신경과\" },\n        { id: 9, name: \"신경외과\" },\n        { id: 9, name: \"안과\" },\n        { id: 9, name: \"영상의학과\" },\n        { id: 9, name: \"외과\" },\n        { id: 9, name: \"응급의학과\" },\n        { id: 9, name: \"이비인후과\" },\n        { id: 9, name: \"임상약리학과\" },\n        { id: 9, name: \"재할의학과\" },\n        { id: 9, name: \"정신건강의학과\" },\n        { id: 9, name: \"정형외과\" },\n        { id: 9, name: \"중환자의학과\" },\n        { id: 9, name: \"진단검사의학과\" },\n        { id: 9, name: \"피부과\" },\n        { id: 9, name: \"핵의학과\" },\n        { id: 9, name: \"흉부외과\" },\n    ];\n\n    const [isChecked, setIsChecked] = useState(false); //체크 여부\n    const [checkedItems, setCheckedItems] = useState(new Set());//체크된 요소들\n\n    const checkHandler = ({ target }) => {\n        setIsChecked(!isChecked);\n        checkedItemHandler(target.parentNode, target.value, target.checked);\n    };\n\n    const checkedItemHandler = (box, id, isChecked) => {\n        if (isChecked) { //체크 되었을때\n            checkedItems.add(id); //체크시 삽입\n            setCheckedItems(checkedItems); //체크 요소 넣어주기\n\n        } else if (!isChecked && checkedItems.has(id)) { //체크가 안되었고, id가 있을때(클릭 2번시)\n            checkedItems.delete(id); //체크 두번시 삭제\n            setCheckedItems(checkedItems);\n        }\n\n        console.log(checkedItems);\n        return checkedItems;\n    };\n\n    return (\n        <div className='department-container'>\n            <div className='inner-container' style={{ display: 'flex', justifyContent: 'center' }}>\n                <div className='department-form' style={{ border: '1px solid lightgray', borderRadius: '7px', width: '900px', marginTop: '40px', paddingTop: '80px', backgroundColor: 'white' }}>\n                    <div className='department-title'>\n                        <h1 style={{ textAlign: 'center' }}>진료(치료) 받는 과 선택</h1>\n                    </div>\n                    <DivisionLine /><DivisionLine />\n                    <div className=\"contStyle\" style={{ padding: '20px' }}>\n                        {department_data.map((item) => (\n                            <label key={item.id} className=\"innerBox\" style={{ display: 'flex', justifyContent: 'center' }}>\n                                <div style={{ display: 'flex' }}>\n                                    <Checkbox\n                                        value={item.name}\n                                        onChange={(e) => checkHandler(e)}\n                                        style={{ fontSize: '20px' }}\n                                    >\n                                        {item.name}\n                                    </Checkbox>\n                                </div>\n                            </label>\n                        ))}\n                    </div>\n                    <DivisionLine />\n                    <hr style={{ textAlgn: 'center', width: '840px', color: 'gray' }} />\n\n                    <div className='form' style={{ textAlign: 'center' }}>\n                        <Button type='primary' style={{ borderRadius: '4px', marginTop: '20px', backgroundColor: 'gray' }}\n                            onClick={() => {\n                                this.props.history.push('/user/mypage/profile');\n                            }}\n                        >\n                            등록\n                        </Button>\n                        &nbsp;&nbsp;&nbsp;\n                        <Button type='primary' style={{ borderRadius: '4px', marginTop: '20px' }}\n                            onClick={() => {\n                                this.props.history.push('/');\n                            }}\n                        >\n                            취소\n                        </Button>\n                    </div>\n                    <DivisionLine />\n                </div>\n            </div>\n        </div>\n    );\n};\n\nexport default DepartmentComponent;\n\nconst Departments = styled.div`\n    display: flex;\n    width: 100%;\n    height: 100%;\n    line-height: 44px;\n\n    > span {\n        display: inline-block;\n        cursor: pointer;\n\n        flex: 1;\n        height: 100%;\n        border-radius: 4px;\n        border: 1px solid #e9e9e9;\n\n        text-align: center;\n        color: rgba(0, 0, 0, 0.7);\n        font-size: 14px;\n        letter-spacing: -0.2px;\n\n        margin-right: 8px;\n    }\n\n    > span.active {\n        background-color: #3bc1ff;\n        color: white;\n    }\n\n    > span:last-child {\n        margin-right: 0px;\n    }\n`;","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { Popover } from 'antd';\n// lib\nimport { USER } from '../../../Lib/variables';\n\nexport default class NavComponent extends React.PureComponent {\n    state = {\n        menu: false,\n    };\n\n    onClose = () => {\n        const { pathname } = this.props.location;\n        if (pathname === '/' && window.innerWidth <= 768) {\n            const main = document.querySelector('.order-menu-wrapper');\n            main.style.display = 'none';\n        }\n    };\n\n    componentDidUpdate = prevProps => {\n        const { pathname: prevPath } = prevProps.location;\n        const { pathname } = this.props.location;\n        if (prevPath !== pathname) {\n            this.setState({ menu: false });\n        }\n    };\n\n    // payment test\n    onMobileMenuHandler = () => {\n        this.setState({ menu: !this.state.menu });\n    };\n\n    render() {\n        // const { id, name, userType, ticket } = this.props.auth;\n        // const { name, userType } = this.props.auth;\n        const id = localStorage.getItem('id');\n        const userType = localStorage.getItem('userType');\n\n        return (\n            <div className='nav-container'>\n                <div className='nav-inner'>\n                    <div className='logo'>\n                        <NavLink exact to='/' activeClassName='active' lang='en' onClick={this.onClose}>\n                            <img src='https://s3.ap-northeast-2.amazonaws.com/withmate.photo/withmate_new_logo.png' alt='logo' />\n                        </NavLink>\n                    </div>\n                    <div className='nav'>\n                        <div className='mobile-menu'>\n                            <span onClick={this.onMobileMenuHandler}>\n                                <i className='fas fa-bars' />\n                            </span>\n                        </div>\n                        <ul className={`nav-items ${this.state.menu ? 'active' : ''}`}>\n                            <li className='item'>\n                                <NavLink lang='kr' exact to='/' className='nav-item' activeClassName='active'>\n                                    메인\n                                    <span className='underline'></span>\n                                </NavLink>\n                            </li>\n                            <li className='item'>\n                                <NavLink lang='kr' exact to='/nemt/service' className='nav-item' activeClassName='active'>\n                                    위드메이트 소개\n                                    <span className='underline'></span>\n                                </NavLink>\n                            </li>\n                            <li className='item'>\n                                <NavLink lang='en' exact to='/review/list' className='nav-item' activeClassName='active'>\n                                    이용후기\n                                    <span className='underline'></span>\n                                </NavLink>\n                            </li>\n                            <li className='item'>\n                                <NavLink lang='en' exact to='/newsEvent/list' className='nav-item' activeClassName='active'>\n                                    소식 보기\n                                    <span className='underline'></span>\n                                </NavLink>\n                            </li>\n                            <li className='item'>\n                                <NavLink lang='en' exact to='/faq' className='nav-item' activeClassName='active'>\n                                    FAQ\n                                    <span className='underline'></span>\n                                </NavLink>\n                            </li>\n                            {!id ? (\n                                <>\n                                    <li className='item item-login'>\n                                        <NavLink lang='kr' exact to='/user/login' className='nav-item block login'>\n                                            로그인\n                                            <span className='underline'></span>\n                                        </NavLink>\n                                    </li>\n                                    <li className='item item-register'>\n                                        <NavLink lang='kr' exact to='/user/mainRegister' className='nav-item block register'>\n                                            회원가입\n                                            <span className='underline'></span>\n                                        </NavLink>\n                                    </li>\n                                    <li className='item item-apply'>\n                                        <NavLink lang='kr' exact to='/mate/apply' className='nav-item block apply'>\n                                            메이트 지원\n                                            <span className='underline'></span>\n                                        </NavLink>\n                                    </li>\n                                </>\n                            ) : (\n                                <>\n                                    <li className='item item-name'>\n                                        <NavLink\n                                            lang='kr'\n                                            to={userType === USER ? '/user/mypage' : '/user/mate/mypage'}\n                                            className='nav-item'\n                                            activeClassName='active'\n                                        >\n                                            마이페이지\n                                            <span className='underline'></span>\n                                        </NavLink>\n                                    </li>\n\n                                    <li className='item item-logout'>\n                                        <NavLink lang='kr' exact to='/user/logout' className='nav-item' activeClassName='active'>\n                                            로그아웃\n                                            <span className='underline'></span>\n                                        </NavLink>\n                                    </li>\n                                </>\n                            )}\n                        </ul>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\n","import styled from 'styled-components';\nimport { borderColor, mainBoldColor, mainColor, fontSize, sizeHandler } from '../../../theme';\nconst NavStyledContainer = styled.div`\n    .nav-container {\n        width: 100vw;\n        height: 56px;\n        background-color: white;\n        border-bottom: 1px solid ${borderColor};\n        position: fixed;\n        top: 0px;\n        left: 0px;\n        z-index: 10;\n\n        .nav-inner {\n            display: flex;\n            flex-direction: row;\n            max-width: 1120px;\n            height: 100%;\n            margin: 0 auto;\n            position: relative;\n\n            .logo {\n                width: auto;\n                display: flex;\n                align-items: center;\n                justify-content: center;\n\n                a {\n                    display: flex;\n                    align-items: center;\n                    justify-content: center;\n                }\n                img {\n                    width: 80%;\n                }\n            }\n\n            .nav {\n                flex: 1;\n                padding-right: 12px;\n\n                .mobile-menu {\n                    display: none;\n                }\n\n                ul.nav-items {\n                    width: 100%;\n                    height: 100%;\n                    display: flex;\n                    flex-direction: row;\n                    align-items: center;\n                    justify-content: flex-end;\n                    padding: 0px;\n                    padding-left: 32px;\n\n                    li.item {\n                        padding-left: 13px;\n                        padding-right: 13px;\n                        position: relative;\n                        \n                        > a {\n                            font-size: 13px;\n                            line-height: 21px;\n                        }\n\n                        display: flex;\n                        align-items: center;\n                        justify-content: center;\n\n                        &.item-apply {\n                            padding-left: 0px;\n                            padding-right: 0px;\n\n                            margin-left: 12px;\n\n                            .underline {\n                                bottom: -12px;\n                            }\n                        }\n\n                        &.item-login {\n                            padding-left: 0px;\n                            padding-right: 0px;\n                            margin-left: 12px;\n\n                            .underline {\n                                bottom: -12px;\n                            }\n                        }\n\n                        &.item-register {\n                            padding-left: 0px;\n                            padding-right: 0px;\n\n                            margin-left: 12px;\n\n                            .underline {\n                                bottom: -12px;\n                            }\n                        }\n\n                        &.item-logout {\n                            border-left: 1px solid #e6e6e6;\n                        }\n\n                        &.item-name {\n                            border-left: 1px solid #e6e6e6;\n                            border-right: 1px solid #e6e6e6;\n                        }\n\n                        @media (max-width: 1080px) {\n                            padding-left: 8px;\n                            padding-right: 8px;\n\n                            > a {\n                                font-size: 13px;\n                                line-height: 18px;\n                            }\n                        }\n\n                        @media (max-width: 900px) {\n                            padding-left: 6px;\n                            padding-right: 6px;\n\n                            > a {\n                                font-size: 12px;\n                                line-height: 18px;\n                            }\n                        }\n                    }\n\n                    .tickets {\n                        font-size: ${sizeHandler(14)};\n                        font-weight: bold;\n                        letter-spacing: -0.18px;\n                        color: #606060;\n                    }\n\n                    .nav-item {\n                        font-weight: bold;\n                        font-size: 12px;\n                        color: #606060;\n\n                        &.block {\n                            padding: 9.25px 30px;\n                            \n                            line-height: 18px;\n                            text-align: center;\n                            border: 1px solid ${mainColor}\n                            font-weight: bold;\n                            border-radius: 2px;\n                        }\n\n                        &.login, &.register {\n                            color: ${mainColor};\n                        }\n\n                        &.apply {\n                            background-color: ${mainColor};\n                            color: white;\n                        }\n\n                        @media (max-width: 1080px) {\n                            &.block {\n                                padding: 8px 24px;\n                            }\n                        }\n\n                        @media (max-width: 900px) {\n                            &.block {\n                                padding: 6px 18px;\n                            }\n                        }\n                    }\n\n                    .active {\n                        color: ${mainColor};\n                        font-weight: bold;\n\n                        .underline {\n                            display: inline-block;\n                            position: absolute;\n                            bottom: -18.5px;\n                            left: 0px;\n                            width: 100%;\n                            height: 3px;\n                            background-color: ${mainColor};\n                        }\n                    }\n                }\n\n                \n\n                @media (max-width: 768px) {\n                    padding-right: 0px;\n                    \n                    .mobile-menu {\n                        height: 100%;\n                        width: 100%;\n                        display: block;\n                        position: relative;\n\n                        span {\n                            position: absolute;\n                            right: 32px;\n                            top: 16px;\n                            cursor: pointer;\n                            color: ${mainColor};\n\n                            svg {\n                                font-size: ${fontSize.b20};\n                            }\n                        }\n                    }\n\n                    ul.nav-items {\n                        display: none;\n\n                        li.item {\n                            \n    \n                            &.item-logout {\n                                border-left: 0px;\n                            }\n    \n                            &.item-name {\n                                border-left: 0px;\n                                border-right: 0px;\n                            }\n                        }\n                    }\n\n                    ul.nav-items.active {\n                        position: absolute;\n                        background-color: white;\n                        z-index: 9999;\n                        top: 56px;\n                        left: 0px;\n                        width: 100%;\n                        height: auto;\n                        display: block;\n                        padding: 0px;\n                        padding: 0px 12px;\n\n                        li.item {\n                            width: 100%;\n                            min-height: 40px;\n                            margin: 0;\n                            border-bottom: 1px solid ${borderColor};\n                            background-color: white;\n                            color: #606060;\n\n                            &.item-login {\n                                margin-left: 0px;\n                            }\n    \n                            &.item-register {\n                                margin-left: 0px;\n                            }\n\n                            a {\n                                display: inline-block;\n                                width: 100%;\n                                text-align: center;\n                                line-height: 40px;\n                                // color: #606060;\n                            }\n                        }\n\n                        .nav-item {\n                            &.block {\n                                margin: 6px 0px;\n                                line-height: 32px;\n                            }\n                        }\n\n                        .active .underline {\n                            height: 0px;\n                        }\n                    }\n                }\n            }\n        }\n    }\n`;\n\nexport default NavStyledContainer;\n","import React from 'react';\nimport { withRouter } from 'react-router-dom';\n\n// component\nimport Nav from './nav';\n\n// styles\nimport NavStyledContainer from './nav.styled';\n\n// actions\n// import {} from '../../Redux/Modules/';\n\nclass NavContainer extends React.PureComponent {\n    render() {\n        return (\n            <NavStyledContainer>\n                <Nav {...this.props} />\n            </NavStyledContainer>\n        );\n    }\n}\n\nexport default withRouter(NavContainer);\n","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { Popover } from 'antd';\n// lib\nimport { USER } from '../../../Lib/variables';\n\nexport default class NavComponent extends React.PureComponent {\n    state = {\n        menu: false,\n    };\n\n    onClose = () => {\n        const { pathname } = this.props.location;\n        if (pathname === '/' && window.innerWidth <= 768) {\n            const main = document.querySelector('.order-menu-wrapper');\n            main.style.display = 'none';\n        }\n    };\n\n    componentDidUpdate = prevProps => {\n        const { pathname: prevPath } = prevProps.location;\n        const { pathname } = this.props.location;\n        if (prevPath !== pathname) {\n            this.setState({ menu: false });\n        }\n    };\n\n    // payment test\n    onMobileMenuHandler = () => {\n        this.setState({ menu: !this.state.menu });\n    };\n\n    render() {\n        // const { id, name, userType, ticket } = this.props.auth;\n        // const { name, userType } = this.props.auth;\n        const id = localStorage.getItem('id');\n        const userType = localStorage.getItem('userType');\n\n        return (\n            <div className='nav-container'>\n                <div className='nav-inner'>\n                    <div className='logo'>\n                        <NavLink exact to='/360F' activeClassName='active' lang='en' onClick={this.onClose}>\n                            <img src='/assets/images/collaboration/withmate_metlife_main.png' style={{ width: '240px' }} alt='logo' />\n                        </NavLink>\n                    </div>\n                    <div className='nav'>\n                        <div className='mobile-menu'>\n                            <span onClick={this.onMobileMenuHandler}>\n                                <i className='fas fa-bars' />\n                            </span>\n                        </div>\n                        <ul className={`nav-items ${this.state.menu ? 'active' : ''}`}>\n                            <li className='item'>\n                                <NavLink lang='kr' exact to='/360F' className='nav-item' activeClassName='active'>\n                                    메인\n                                    <span className='underline'></span>\n                                </NavLink>\n                            </li>\n                            <li className='item'>\n                                <NavLink lang='kr' exact to='/360F/nemt/service' className='nav-item' activeClassName='active'>\n                                    위드메이트 소개\n                                    <span className='underline'></span>\n                                </NavLink>\n                            </li>\n                            <li className='item'>\n                                <NavLink lang='en' exact to='/360F/review/list' className='nav-item' activeClassName='active'>\n                                    이용후기\n                                    <span className='underline'></span>\n                                </NavLink>\n                            </li>\n                            <li className='item'>\n                                <NavLink lang='en' exact to='/360F/newsEvent/list' className='nav-item' activeClassName='active'>\n                                    소식 보기\n                                    <span className='underline'></span>\n                                </NavLink>\n                            </li>\n                            <li className='item'>\n                                <NavLink lang='en' exact to='/360F/faq' className='nav-item' activeClassName='active'>\n                                    FAQ\n                                    <span className='underline'></span>\n                                </NavLink>\n                            </li>\n                        </ul>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\n","import styled from 'styled-components';\nimport { borderColor, mainBoldColor, mainColor, fontSize, sizeHandler } from '../../../theme';\nconst NavStyledContainer = styled.div`\n    .nav-container {\n        width: 100vw;\n        height: 56px;\n        background-color: white;\n        border-bottom: 1px solid ${borderColor};\n        position: fixed;\n        top: 0px;\n        left: 0px;\n        z-index: 10;\n\n        .nav-inner {\n            display: flex;\n            flex-direction: row;\n            max-width: 1120px;\n            height: 100%;\n            margin: 0 auto;\n            position: relative;\n\n            .logo {\n                width: auto;\n                display: flex;\n                align-items: center;\n                justify-content: center;\n\n                a {\n                    display: flex;\n                    align-items: center;\n                    justify-content: center;\n                }\n                img {\n                    width: 80%;\n                }\n            }\n\n            .nav {\n                flex: 1;\n                padding-right: 12px;\n\n                .mobile-menu {\n                    display: none;\n                }\n\n                ul.nav-items {\n                    width: 100%;\n                    height: 100%;\n                    display: flex;\n                    flex-direction: row;\n                    align-items: center;\n                    justify-content: flex-end;\n                    padding: 0px;\n                    padding-left: 32px;\n\n                    li.item {\n                        padding-left: 13px;\n                        padding-right: 13px;\n                        position: relative;\n                        \n                        > a {\n                            font-size: 13px;\n                            line-height: 21px;\n                        }\n\n                        display: flex;\n                        align-items: center;\n                        justify-content: center;\n\n                        &.item-apply {\n                            padding-left: 0px;\n                            padding-right: 0px;\n\n                            margin-left: 12px;\n\n                            .underline {\n                                bottom: -12px;\n                            }\n                        }\n\n                        &.item-login {\n                            padding-left: 0px;\n                            padding-right: 0px;\n                            margin-left: 12px;\n\n                            .underline {\n                                bottom: -12px;\n                            }\n                        }\n\n                        &.item-register {\n                            padding-left: 0px;\n                            padding-right: 0px;\n\n                            margin-left: 12px;\n\n                            .underline {\n                                bottom: -12px;\n                            }\n                        }\n\n                        &.item-logout {\n                            border-left: 1px solid #e6e6e6;\n                        }\n\n                        &.item-name {\n                            border-left: 1px solid #e6e6e6;\n                            border-right: 1px solid #e6e6e6;\n                        }\n\n                        @media (max-width: 1080px) {\n                            padding-left: 8px;\n                            padding-right: 8px;\n\n                            > a {\n                                font-size: 13px;\n                                line-height: 18px;\n                            }\n                        }\n\n                        @media (max-width: 900px) {\n                            padding-left: 6px;\n                            padding-right: 6px;\n\n                            > a {\n                                font-size: 12px;\n                                line-height: 18px;\n                            }\n                        }\n                    }\n\n                    .tickets {\n                        font-size: ${sizeHandler(14)};\n                        font-weight: bold;\n                        letter-spacing: -0.18px;\n                        color: #606060;\n                    }\n\n                    .nav-item {\n                        font-weight: bold;\n                        font-size: 12px;\n                        color: #606060;\n\n                        &.block {\n                            padding: 9.25px 30px;\n                            \n                            line-height: 18px;\n                            text-align: center;\n                            border: 1px solid ${mainColor}\n                            font-weight: bold;\n                            border-radius: 2px;\n                        }\n\n                        &.login, &.register {\n                            color: ${mainColor};\n                        }\n\n                        &.apply {\n                            background-color: ${mainColor};\n                            color: white;\n                        }\n\n                        @media (max-width: 1080px) {\n                            &.block {\n                                padding: 8px 24px;\n                            }\n                        }\n\n                        @media (max-width: 900px) {\n                            &.block {\n                                padding: 6px 18px;\n                            }\n                        }\n                    }\n\n                    .active {\n                        color: ${mainColor};\n                        font-weight: bold;\n\n                        .underline {\n                            display: inline-block;\n                            position: absolute;\n                            bottom: -18.5px;\n                            left: 0px;\n                            width: 100%;\n                            height: 3px;\n                            background-color: ${mainColor};\n                        }\n                    }\n                }\n\n                \n\n                @media (max-width: 768px) {\n                    padding-right: 0px;\n                    \n                    .mobile-menu {\n                        height: 100%;\n                        width: 100%;\n                        display: block;\n                        position: relative;\n\n                        span {\n                            position: absolute;\n                            right: 32px;\n                            top: 16px;\n                            cursor: pointer;\n                            color: ${mainColor};\n\n                            svg {\n                                font-size: ${fontSize.b20};\n                            }\n                        }\n                    }\n\n                    ul.nav-items {\n                        display: none;\n\n                        li.item {\n                            \n    \n                            &.item-logout {\n                                border-left: 0px;\n                            }\n    \n                            &.item-name {\n                                border-left: 0px;\n                                border-right: 0px;\n                            }\n                        }\n                    }\n\n                    ul.nav-items.active {\n                        position: absolute;\n                        background-color: white;\n                        z-index: 9999;\n                        top: 56px;\n                        left: 0px;\n                        width: 100%;\n                        height: auto;\n                        display: block;\n                        padding: 0px;\n                        padding: 0px 12px;\n\n                        li.item {\n                            width: 100%;\n                            min-height: 40px;\n                            margin: 0;\n                            border-bottom: 1px solid ${borderColor};\n                            background-color: white;\n                            color: #606060;\n\n                            &.item-login {\n                                margin-left: 0px;\n                            }\n    \n                            &.item-register {\n                                margin-left: 0px;\n                            }\n\n                            a {\n                                display: inline-block;\n                                width: 100%;\n                                text-align: center;\n                                line-height: 40px;\n                                // color: #606060;\n                            }\n                        }\n\n                        .nav-item {\n                            &.block {\n                                margin: 6px 0px;\n                                line-height: 32px;\n                            }\n                        }\n\n                        .active .underline {\n                            height: 0px;\n                        }\n                    }\n                }\n            }\n        }\n    }\n`;\n\nexport default NavStyledContainer;\n","import React from 'react';\nimport { withRouter } from 'react-router-dom';\n\n// component\nimport Nav from './nav';\n\n// styles\nimport NavStyledContainer from './nav.styled';\n\n// actions\n// import {} from '../../Redux/Modules/';\n\nclass NavContainer extends React.PureComponent {\n    render() {\n        return (\n            <NavStyledContainer>\n                <Nav {...this.props} />\n            </NavStyledContainer>\n        );\n    }\n}\n\nexport default withRouter(NavContainer);\n","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { MobileBr } from '../../../Pages/Guide/guide.styled';\n\nexport default class FooterComponent extends React.PureComponent {\n    render() {\n        const { location } = this.props.history;\n        const { pathname } = this.props.location;\n        const darkMode =\n            pathname === '/' || pathname === '/user/mate/pending' || pathname === '/faq' || pathname === '/company' || pathname.indexOf('/user') !== -1;\n\n        return (\n            <div className={`footer-container ${darkMode ? 'darkmode' : ''}`}>\n                <div className='inner-container'>\n                    <div className='default-info-wrapper'>\n                        <div className='right'>\n                            <p>2019 Withmate Org, All rights reserved.</p>\n                        </div>\n                        <div className='policy'>\n                            {location.pathname.startsWith('/360F') ? (\n                                <>\n                                    <NavLink to='/360F/policy/terms'>이용약관</NavLink>\n                                    <NavLink to='/360F/policy/privacy'>개인정보 처리방침</NavLink>\n                                </>\n                            ) : (\n                                <>\n                                    <NavLink to='/policy/terms'>이용약관</NavLink>\n                                    <NavLink to='/policy/privacy'>개인정보 처리방침</NavLink>\n                                </>\n                            )}\n                            {/* <a\n                                onClick={() => {\n                                    window.open('https://www.notion.so/FAQ-cfe01db37c67472086b414a044ed6370', '_blank');\n                                }}\n                            >\n                                메이트 매뉴얼\n                            </a> */}\n                            <MobileBr />\n                            <MobileBr />\n                            <a style={{ marginLeft: '70px' }}></a>\n                            <a href='https://blog.naver.com/PostList.naver?blogId=pond909' name='naver-blog' target='_blank' rel='noreferrer noopener'>\n                                <img\n                                    style={{ border: '0px currentColor', width: '30px', verticalAlign: 'top' }}\n                                    alt='네이버 블로그'\n                                    src='/assets/images/icons/naverblog_icon.png'\n                                    loading='lazy'\n                                />\n                            </a>\n                            <a\n                                href='https://www.facebook.com/%EC%9C%84%EB%93%9C%EB%A9%94%EC%9D%B4%ED%8A%B8-%EB%B3%91%EC%9B%90%EB%8F%99%ED%96%89%EC%84%9C%EB%B9%84%EC%8A%A4-103107278930429'\n                                name='facebook'\n                                target='_blank'\n                                rel='noreferrer noopener'\n                                style={{ marginLeft: '-15px' }}\n                            >\n                                <img\n                                    style={{ border: '0px currentColor', width: '30px', verticalAlign: 'top' }}\n                                    alt='페이스북'\n                                    src='/assets/images/icons/facebook_icon.png'\n                                    loading='lazy'\n                                />\n                            </a>\n                            <a\n                                href='https://www.instagram.com/withmate_official'\n                                name='naver-blog'\n                                target='_blank'\n                                rel='noreferrer noopener'\n                                style={{ marginLeft: '-15px' }}\n                            >\n                                <img\n                                    style={{ border: '0px currentColor', width: '30px', verticalAlign: 'top' }}\n                                    alt='인스타그램'\n                                    src='/assets/images/icons/instagram_icon.png'\n                                    loading='lazy'\n                                />\n                            </a>\n                        </div>\n                    </div>\n\n                    <div className='footer-info'>\n                        <div className='info-block'>\n                            <div className='row-wrapper'>\n                                <p className='infoTitle'>회사 정보</p>\n                                <p className='content'></p>\n                            </div>\n                            <div className='row-wrapper'>\n                                <p className='title'>법인명</p>\n                                <p className='content'>㈜블루카멜</p>\n                            </div>\n                            <div className='row-wrapper'>\n                                <p className='title'>대표자</p>\n                                <p className='content'>지승배</p>\n                            </div>\n                            <div className='row-wrapper'>\n                                <p className='title'>사업자 등록번호</p>\n                                <p className='content'>153-88-00622</p>\n                            </div>\n                            <div className='row-wrapper'>\n                                <p className='title'>통신판매업 신고번호</p>\n                                <p className='content'>2021-서울 서대문-2081</p>\n                            </div>\n                        </div>\n                        <div className='info-block'>\n                            <div className='row-wrapper'>\n                                <p className='contactTitle'>연락처</p>\n                                <p className='content'></p>\n                            </div>\n                            <div className='row-wrapper address'>\n                                <p className='title'>주소</p>\n                                <p className='content'>서울시 서대문구 경기대로 11길 26-6 우진빌딩 비동 203호</p>\n                            </div>\n                            <div className='row-wrapper'>\n                                <p className='title'>전화번호</p>\n                                <p className='content'>070-4300-9075</p>\n                            </div>\n                            <div className='row-wrapper'>\n                                <p className='title'>이메일</p>\n                                <p className='content'>ceo@withmate.kr</p>\n                            </div>\n                            <div className='row-wrapper2' />\n                        </div>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\n","import styled from 'styled-components';\nimport { fontSize, mainColor, bgDarkColor, sizeHandler } from '../../../theme';\n\nconst FooterStyledContainer = styled.div`\n    .footer-container {\n        background-color: #f9f9f9;\n        border-top: 1px solid #e6e6e6;\n\n        .inner-container {\n            padding-top: 52px;\n            padding-bottom: 52px;\n\n            .default-info-wrapper {\n                display: flex;\n\n                .right {\n                    flex: 1;\n\n                    p {\n                        font-size: ${sizeHandler(16)};\n                        font-weight: bold;\n                        color: rgba(0, 0, 0, 0.7);\n                    }\n                }\n\n                .policy {\n                    flex: 1;\n                    text-align: center;\n\n                    a {\n                        font-size: ${sizeHandler(12)};\n                        font-weight: bold;\n                        letter-spacing: -0.26px;\n                        color: rgba(0, 0, 0, 0.7);\n                        text-decoration: underline;\n                        margin-right: 32px;\n                    }\n                }\n            }\n\n            .footer-info {\n                display: flex;\n                align-items: center;\n\n                .info-block {\n                    margin-top: 40px;\n                    flex: 1;\n                    margin-right: 20px;\n\n                    .row-wrapper2 {\n                        height: 42px;\n                        line-height: 42px;\n                        display: flex;\n                        borderColor: rgba(41 41 41);\n                    }\n\n                    .row-wrapper {\n                        height: 42px;\n                        line-height: 42px;\n                        border-bottom: 1px solid #e6e6e6;\n                        display: flex;\n\n                        &.address {\n                            height: 42px;\n                        }\n\n                        p {\n                            &.title {\n                                width: 140px;\n                                font-size: ${sizeHandler(10)};\n                                font-weight: bold;\n                                color: rgba(0, 0, 0, 0.7);\n                            }\n\n                            &.infoTitle {\n                                width: 140px;\n                                font-size: ${sizeHandler(14)};\n                                font-weight: bold;\n                                color: rgba(0, 0, 0, 0.7);\n                            }\n\n                            &.contactTitle {\n                                width: 140px;\n                                font-size: ${sizeHandler(14)};\n                                font-weight: bold;\n                                color: rgba(0, 0, 0, 0.7);\n                            }\n\n                            &.content {\n                                flex: 1;\n                                font-size: ${sizeHandler(12)};\n                                letter-spacing: -0.26px;\n                                color: rgba(0, 0, 0, 0.7);\n                            }\n\n                        }\n                    }\n                }\n            }\n\n            @media (max-width: 1120px) {\n                padding-left: 16px;\n                padding-right: 16px;\n            }\n\n            @media (max-width: 768px) {\n\t\t.info-block .row-wrapper {\n\t\t    min-height: 42px;\n\t\t    height: auto !important;\n\t\t    line-height: 24px !important;\n\t\t}\n\n                .default-info-wrapper {\n                    flex-direction: column;\n\n                    .right {\n                        margin-bottom: 12px;\n                    }\n\n                    .policy {\n                        text-align: left;\n\n                        a {\n                            font-size: ${sizeHandler(10)};\n                        }\n                    }\n                }\n\n                .footer-info {\n                    flex-direction: column;\n\n                    .info-block {\n                        margin-right: 0px;\n                        width: 100%;\n\n                        .row-wrapper {\n                            p {\n                                &.content {\n                                    font-size: ${sizeHandler(10)};\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    .footer-container.darkmode {\n        background-color: #292929;\n\n        .inner-container {\n            .default-info-wrapper {\n                .right {\n                    p {\n                        color: #e6e6e6;\n                    }\n                }\n\n                .policy {\n                    a {\n                        color: #e6e6e6;\n                    }\n                }\n            }\n\n            .footer-info {\n                .info-block {\n                    .row-wrapper {\n                        border-bottom: 1px solid #606060;\n\n                        p {\n                            &.title {\n                                color: #ffffff;\n                            }\n\n                            &.content {\n                                color: #a7a7a7;\n                            }\n\n                            &.infoTitle {\n                                color: #ffffff;\n                            }\n\n                            &.contactTitle {\n                                color: #ffffff;\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n`;\n\nexport default FooterStyledContainer;\n","import React from 'react';\nimport { withRouter } from 'react-router-dom';\n\n// component\nimport Footer from './footer';\n\n// styles\nimport FooterStyledContainer from './footer.styled';\n\nclass FooterContainer extends React.PureComponent {\n    render() {\n        return (\n            <FooterStyledContainer>\n                <Footer {...this.props} />\n            </FooterStyledContainer>\n        );\n    }\n}\n\nexport default withRouter(FooterContainer);\n","import React from 'react';\nimport { Switch, Route, withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport AOS from 'aos';\nimport { message, Spin } from 'antd';\nimport Modal from 'react-modal';\n\nimport ScrollTop from './Lib/utils';\nimport axios from './Lib/axios';\n\n// styles\nimport './Styles';\nimport 'aos/dist/aos.css';\n// antd-styles > set in /config-overrides.js\n// import 'antd/dist/antd.css';\n\n// components\nimport Home from './Pages/Home';\nimport Auth from './Pages/Auth';\n\n// 개인정보 수집 및 이용 동의 약관\nimport Privacy from './Pages/Policy/Privacy';\nimport Terms from './Pages/Policy/Terms';\nimport Marketing from './Pages/Policy/Marketing';\nimport EssentialNormal from './Pages/Policy/Essential/Normal';\nimport EssentialSensitive from './Pages/Policy/Essential/Sensitive';\nimport SelectiveNormal from './Pages/Policy/Selective/Normal';\nimport SelectiveSensitive from './Pages/Policy/Selective/Sensitive';\nimport Advertisement from './Pages/Policy/Advertisement';\n\nimport Company from './Pages/Company';\nimport FAQ from './Pages/Faq';\nimport Product from './Pages/Product';\n\nimport LongTermCare from './Pages/LongtermCare/longTermCare';\nimport Success from './Pages/Success/success';\nimport SManual from './Pages/Manual/Service/service';\nimport PManual from './Pages/Manual/Platform/platform';\nimport EduVideo from './Pages/Manual/MateEduVideo/eduVideo';\n\nimport NewsEvent from './Pages/NewsEvent';\n\nimport ReviewAdd from './Pages/Review/Add';\nimport ReviewList from './Pages/Review/List';\nimport ReviewMylist from './Pages/Review/MyList';\nimport MateReady from './Pages/Apply/Ready';\nimport MateApplyForm from './Pages/Apply/Form';\nimport MateApplyForm_v2 from './Pages/Apply/MateApplyForm';\nimport Nemt from './Pages/Guide';\nimport Guide from './Pages/Nemt';\nimport Reserve from './Pages/Reserve';\n\n// MetLife\nimport MetLife from './Pages/MetLife/MetLifeLanding';\n// import MetLifeReserve from './Pages/MetLife/Reserve';\nimport MetLifeNemt from './Pages/MetLife/MetLifeGuide';\nimport MetLifeReviewList from './Pages/MetLife/Review';\nimport MetLifeNewsEvent from './Pages/MetLife/NewsEvent';\nimport MetLifeFAQ from './Pages/MetLife/Faq';\nimport MetLifePrivacy from './Pages/MetLife/MetLifePolicy/Privacy';\nimport MetLifeTerms from './Pages/MetLife/MetLifePolicy/Terms';\n\nimport Department from './Pages/Big5Department/department';\n\nimport NotFound from './Pages/NotFound';\n// import Test from './Pages/Test';\n// import { FreeModal } from './Components/modal';\nimport { CardPopup, EventPopup, ManagerPopup, MetlifePopup, NoticePopup } from './Components/modal';\n\n// templates\nimport Nav from './Components/Templates/Nav';\nimport MetLifeNav from './Components/Templates/MetLifeNav';\nimport Footer from './Components/Templates/Footer';\n\nimport { editAuth, checkAuth } from './Reducer/Modules/auth';\nimport { MATE } from './Lib/variables';\nModal.setAppElement('#root');\n\nclass App extends React.PureComponent {\n    componentDidMount = async () => {\n        AOS.init();\n\n        const id = localStorage.getItem('id');\n        const userType = localStorage.getItem('userType');\n\n        if (id && userType) {\n            const { data } = await axios.get(`/v1/user/${id}/${userType}`);\n\n            if (data && data._id) {\n                this.props.editAuth({ type: 'id', value: data._id });\n                this.props.editAuth({ type: 'userType', value: userType });\n                this.props.editAuth({ type: 'name', value: data.name });\n                this.props.editAuth({ type: 'photo', value: data.photo });\n                this.props.editAuth({ type: 'contact', value: data.contact });\n                this.props.checkAuth({ id, userType });\n\n                localStorage.setItem('id', data._id);\n                localStorage.setItem('photo', data.photo);\n                localStorage.setItem('name', data.name);\n                localStorage.setItem('contact', data.contact);\n            }\n        }\n    };\n\n    render() {\n        const { location } = this.props.history;\n        const { userType, allowed } = this.props.auth;\n\n        if (userType === MATE && allowed === false) {\n            if (location.pathname === '/user/mate/mypage' || location.pathname === '/user/mate/mypage/history' || location.pathname === '/')\n                this.props.history.push('/user/mate/pending');\n        }\n\n        return (\n            <div id='app-container' className='app-container'>\n                {location.pathname.startsWith('/360F') ? <MetLifeNav {...this.props} /> : <Nav {...this.props} />}\n                <ScrollTop>\n                    <div className='main-area'>\n                        <Switch>\n                            <Route exact path='/' component={Home} />\n                            <Route exact path='/main/step1' component={Home} />\n                            <Route exact path='/main/step2' component={Home} />\n                            <Route exact path='/main/step3' component={Home} />\n                            <Route exact path='/reserve' component={Reserve} />\n                            <Route path='/reserve/:step' component={Reserve} />\n                            <Route path='/user' component={Auth} />\n                            <Route path='/product' component={Product} />\n                            <Route exact path='/faq' component={FAQ} />\n                            <Route exact path='/company' component={Company} />\n\n                            <Route exact path='/policy/privacy' component={Privacy} />\n                            <Route exact path='/policy/terms' component={Terms} />\n                            <Route exact path='/policy/marketing' component={Marketing} />\n                            <Route exact path='/policy/essential/normal' component={EssentialNormal} />\n                            <Route exact path='/policy/essential/sensitive' component={EssentialSensitive} />\n                            <Route exact path='/policy/selective/normal' component={SelectiveNormal} />\n                            <Route exact path='/policy/selective/sensitive' component={SelectiveSensitive} />\n                            <Route exact path='/policy/advertisement' component={Advertisement} />\n\n                            <Route exact path='/mate/apply' component={MateReady} />\n                            <Route exact path='/apply/form' component={MateApplyForm_v2} />\n                            <Route exact path='/mateApply/form' component={MateApplyForm} />\n\n                            <Route exact path='/review/list' component={ReviewList} />\n                            <Route exact path='/review/own/usage/list' component={ReviewMylist} />\n                            <Route exact path='/review/edit/:reserveId' component={ReviewAdd} />\n\n                            <Route exact path='/longTermCare' component={LongTermCare} />\n                            <Route exact path='/success' component={Success} />\n                            <Route exact path='/service/manual' component={SManual} />\n                            <Route exact path='/platform/manual' component={PManual} />\n                            <Route exact path='/mateEducation/manual' component={EduVideo} />\n\n                            <Route path='/NewsEvent' component={NewsEvent} />\n\n                            {/* MetLife */}\n                            <Route exact path='/360F' component={MetLife} />\n                            <Route path='/360F/nemt/service' component={MetLifeNemt} />\n                            <Route exact path='/360F/review/list' component={MetLifeReviewList} />\n                            <Route path='/360F/NewsEvent' component={MetLifeNewsEvent} />\n                            <Route exact path='/360F/faq' component={MetLifeFAQ} />\n                            <Route exact path='/360F/policy/privacy' component={MetLifePrivacy} />\n                            <Route exact path='/360F/policy/terms' component={MetLifeTerms} />\n\n                            <Route exact path='/department' component={Department} />\n\n                            {/* <Route path='/service/guide' component={Guide} /> */}\n                            <Route path='/nemt/service' component={Nemt} />\n\n                            <Route component={NotFound} />\n                        </Switch>\n                    </div>\n                </ScrollTop>\n                <Footer />\n                {this.props.app.loading ? (\n                    <div id='loading'>\n                        <Spin size='large' />\n                    </div>\n                ) : null}\n                {/* <FreeModal /> */}\n                {/* <NoticePopup /> */}\n                {/* <CardPopup /> */}\n                {/* <ManagerPopup /> */}\n                {/* {location.pathname === '/' ? <EventPopup /> : null} */}\n                {location.pathname === '/360F' ? <MetlifePopup /> : null}\n            </div>\n        );\n    }\n}\n\nconst mapStateToProps = ({ auth, app }) => ({\n    auth,\n    app,\n});\n\nconst mapDispatchToProps = dispatch => ({\n    editAuth: ({ type, value }) => dispatch(editAuth({ type, value })),\n    checkAuth: ({ id, userType }) => dispatch(checkAuth({ id, userType })),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(App));\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n  window.location.hostname === 'localhost' ||\n    // [::1] is the IPv6 localhost address.\n    window.location.hostname === '[::1]' ||\n    // 127.0.0.1/8 is considered localhost for IPv4.\n    window.location.hostname.match(\n      /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n    )\n);\n\nexport function register(config) {\n  if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n    // The URL constructor is available in all browsers that support SW.\n    const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n    if (publicUrl.origin !== window.location.origin) {\n      // Our service worker won't work if PUBLIC_URL is on a different origin\n      // from what our page is served on. This might happen if a CDN is used to\n      // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n      return;\n    }\n\n    window.addEventListener('load', () => {\n      const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n      if (isLocalhost) {\n        // This is running on localhost. Let's check if a service worker still exists or not.\n        checkValidServiceWorker(swUrl, config);\n\n        // Add some additional logging to localhost, pointing developers to the\n        // service worker/PWA documentation.\n        navigator.serviceWorker.ready.then(() => {\n          console.log(\n            'This web app is being served cache-first by a service ' +\n              'worker. To learn more, visit https://bit.ly/CRA-PWA'\n          );\n        });\n      } else {\n        // Is not localhost. Just register service worker\n        registerValidSW(swUrl, config);\n      }\n    });\n  }\n}\n\nfunction registerValidSW(swUrl, config) {\n  navigator.serviceWorker\n    .register(swUrl)\n    .then(registration => {\n      registration.onupdatefound = () => {\n        const installingWorker = registration.installing;\n        if (installingWorker == null) {\n          return;\n        }\n        installingWorker.onstatechange = () => {\n          if (installingWorker.state === 'installed') {\n            if (navigator.serviceWorker.controller) {\n              // At this point, the updated precached content has been fetched,\n              // but the previous service worker will still serve the older\n              // content until all client tabs are closed.\n              console.log(\n                'New content is available and will be used when all ' +\n                  'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n              );\n\n              // Execute callback\n              if (config && config.onUpdate) {\n                config.onUpdate(registration);\n              }\n            } else {\n              // At this point, everything has been precached.\n              // It's the perfect time to display a\n              // \"Content is cached for offline use.\" message.\n              console.log('Content is cached for offline use.');\n\n              // Execute callback\n              if (config && config.onSuccess) {\n                config.onSuccess(registration);\n              }\n            }\n          }\n        };\n      };\n    })\n    .catch(error => {\n      console.error('Error during service worker registration:', error);\n    });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n  // Check if the service worker can be found. If it can't reload the page.\n  fetch(swUrl)\n    .then(response => {\n      // Ensure service worker exists, and that we really are getting a JS file.\n      const contentType = response.headers.get('content-type');\n      if (\n        response.status === 404 ||\n        (contentType != null && contentType.indexOf('javascript') === -1)\n      ) {\n        // No service worker found. Probably a different app. Reload the page.\n        navigator.serviceWorker.ready.then(registration => {\n          registration.unregister().then(() => {\n            window.location.reload();\n          });\n        });\n      } else {\n        // Service worker found. Proceed as normal.\n        registerValidSW(swUrl, config);\n      }\n    })\n    .catch(() => {\n      console.log(\n        'No internet connection found. App is running in offline mode.'\n      );\n    });\n}\n\nexport function unregister() {\n  if ('serviceWorker' in navigator) {\n    navigator.serviceWorker.ready.then(registration => {\n      registration.unregister();\n    });\n  }\n}\n","import { createStore, combineReducers, applyMiddleware } from 'redux';\nimport thunk from 'redux-thunk';\n\n// reducers\nimport auth from './Modules/auth';\nimport app from './Modules/app';\nimport review from './Modules/review';\nimport newsEvent from './Modules/newsEvent';\n\nconst reducers = combineReducers({ app, auth, review, newsEvent });\nconst store = createStore(reducers, applyMiddleware(thunk));\nexport default store;\n","import 'react-app-polyfill/ie9';\nimport 'react-app-polyfill/stable';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport { Provider } from 'react-redux';\nimport store from './Reducer';\n\nReactDOM.render(\n    <Provider store={store}>\n        <BrowserRouter>\n            <App />\n        </BrowserRouter>\n    </Provider>,\n    document.getElementById('root'),\n);\n\nserviceWorker.unregister();\n","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWwAAAArCAYAAABctbLZAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAhGVYSWZNTQAqAAAACAAFARIAAwAAAAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAh2kABAAAAAEAAABaAAAAAAAAAGAAAAABAAAAYAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAABbKADAAQAAAABAAAAKwAAAADgPWliAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgoZXuEHAAAF/ElEQVR4Ae3d2WtcZRzG8eecJJM0sa1brDbWWjG0UrDUYlEpFlxuVBBBUBAURbFQBJcb8UJERBAFb1SKeuFC8UL8KxRcQKw0xValqCSBtIJ2Sc064/M7Jyf2JrPGTNJ8XximnTlbPyc8efmd932bVNxUtPEPpHPvSjNHVS5PKkmKL3hHAAEEEFgKgUjkNO2WOrdJvfulvqfmT5tkgV0+KZ3cqfLUiLfMvyOs5434AwIIILCkAvPd6LIjuTQg9f/gP/QrD+yxAZWnR5XMhfWSXhknQwABBBBYUKASod21Udow4v70+DvuWRPWC2rxBQIIINBGgehIR0ZHVieVE9sr5akj1KvbeEM4NQIIIFBNIKtrl7YrKY+WKk5sAruaFt8hgAACbRSIwE7SklLCuo13gVMjgAACdQjEIJDI6pTRIHVosQkCCCDQZoHIasaFtPkmcHoEEECgXgECu14ptkMAAQTaLEBgt/kGcHoEEECgXgECu14ptkMAAQTaLNC5WOfPHl7G0Up+xa+B4leBZ+lo1q9pv2b8pPO/lUv8AQ0BBBBAoF6BlgM7C+oIaYfx0JD0zffSH16S5O8zzmw/1bx4nbR5k7TnZmlwq8cSetPKVL2Xx3YIIIAAAoVAS4GddPgw7kkf/lH6+HPpa4f1iT+l0w7rSYdyhHm3w3z9Wk+D75duv0V64mHpuuu9X/S2o/dNQwABBBCoSyApj6ipIkXiqJ8Ylz79QjrwiTQ65r9PekVAfx4966zn7UuIEkjZr2mXRPp6pYErpRf2SQ/eK3V0+fsol9AQQAABBGoKNBXYEcYz7iEfdFi/9IaX0P7HpWuHb1rUrRc4bdk96uh5r71Ieu916b67YrplHuoL7MLHCCCAAAJzAjUidgEnr6196Ij05oE8rKPsUSus40ixTY/3PXNWevkt17pH/aGDnoYAAgggUFug4cCO3vXEaemrb6Xjv+c16qL8Uft0eakkQvunn/NjzLp33sj+9ZyDbRBAAIELUaDhwI6HjH+dko4ddw3aDx2bCdvYp8O17sNHvcSrAzsbOnIh6vJvQgABBBZRoPHAjpP7IWKM8GgmrItrj32n/CCScdmFCO8IIIBAdYHGA9thvc7D9K7x2OpmAzdCesoPHwe3SGt6fIH+Ow0BBBBAoLpAw4EdPeu+Szymerd0xWX5aJFGe8kxwuRyH+POPR5d0kcvu/ot4lsEEEAgF2g4sLPd3DvedaP0zOP5ML1Zj6WuJ7Rjm2mH9bkJ6bUXpS2bfbSYsk5DAAEEEKgp4Ed/jbfoZa9xWeTpR6VTnjzz4cG5qoYD+fy6dhHi8T7rfWJCTYd/RbzyvPTIAx7R59EiFQc4DQEEEECgtkBTE2eKwyYxhtpB/NFn0qtvS2cd3hHY0eOO2Y0R1DH2OsZpR636JvfKn3tSuu3WfD9mORaSvCOAAAK1BZrqYReHrbickXi6+aaN+UzHmH7e42C++io/mPRsxorDe73ftw1K99wh7XXNOpso45JI0fsujsU7AggggEB1gZYCOyt/eBz10DHp19+kaz1y5O690rPuRW91b1qxOFS8ouzhdUbk2jclEDvQEEAAgSYEWgrsmEQzPCz9clzavVPa/5j00P1eAMojP+TyCL3oJu4IuyCAAAILCLRWw3Zgj3g9kC+/k25w2WPHLp8lyh2ua9MQQAABBBZXoKXAjkuJ1fay/2UmhvYxRG9x7w5HQwABBM4TaK0k4gNlvWn3qmkIIIAAAv+vQPSPaQgggAACK0CAwF4BN4lLRAABBEKAwObnAAEEEFghAgT2CrlRXCYCCCCQMlaaHwIEEEBg+QtkS30kaYkJLsv/XnGFCCCwigUirCOr06TTM15oCCCAAALLWiCyOlXvvmzFvWV9pVwcAgggsJoFYva4szqpuGlsQOXp0XzW4mpG4d+OAAIILDOBmJyYdnlJ1A0jc8P6+g/5gwHF+tRRK4kXDQEEEECgPQJFDkcmRzbLGR0tH9aX9ju9h5Ve+r7S0g7/pwPdhHZ77hNnRQCBVS4QYR0ZnGWxMzmyWZHRbv8Cqu9Wboj1etYAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/login_bg.9bab868b.png\";","module.exports = __webpack_public_path__ + \"static/media/checkpoint.e82ce0ca.png\";","const req = require.context('./', true, /\\.scss$/);\nreq.keys().forEach(req);\n","var map = {\n\t\"./index.scss\": 846\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 845;"],"sourceRoot":""}