{"version":3,"file":"AuthSystem.CTTIVVzt.mjs","names":["useRef","useState","_Fragment"],"sources":["https:/framerusercontent.com/modules/UntDrCYqC6TYHTecDqhv/HwOQMVdjKvlFVixagSfM/AuthSystem.js"],"sourcesContent":["/**\n * AuthSystem.tsx\n * 책잇아트(CheckitArt) 통합 인증 시스템\n * v5.0 | 2026-08-21\n *   - withPasswordInput: X버튼 오른쪽 끝(right:8px), 눈 아이콘 그 왼쪽(right:36px)으로 교체\n *   - withFindId: parents_name 컬럼으로 조회 수정\n *   - withFindPassword: 비밀번호 찾기 버튼 오버라이드 (이메일 입력 → Supabase 비밀번호 재설정 메일 발송)\n *   - Auth 계정 생성 후 가입 응답이 오류여도 동일 이메일·비밀번호로 토큰 발급을 재시도한다.\n *   - 재로그인 성공 시 UID·이메일·액세스 토큰·인증 쿠키를 저장하고 /plan-2로 이동한다.\n *\n * 오버라이드 목록:\n *   withGoogleLogin      — 구글 로그인 버튼\n *   withNaverLogin       — 네이버 로그인 버튼\n *   withKakaoLogin       — 카카오 로그인 버튼\n *   withAppleLogin       — 애플 로그인 버튼\n *   withEmailInput       — ID(e-mail) 입력 필드 (X버튼 포함)\n *   withPasswordInput    — Pass Word 입력 필드 (눈 아이콘 오른쪽 끝, X버튼 그 왼쪽)\n *   withEmailLogin       — 이메일/비밀번호 로그인 버튼\n *   withLogout           — 로그아웃/로그인 버튼\n *   withNavbarState      — 네비게이션 바 컨테이너\n *   withAuthGuard        — /challenge, /tutorial, /inventory 페이지 Main 레이어\n *   withAuthPage         — /auth 페이지 최상위 레이어 (SNS 콜백 시 페이지 숨김)\n *   withFindId           — 아이디 찾기 버튼\n *   withFindPassword     — 비밀번호 찾기 버튼\n */import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useState,useEffect,useRef}from\"react\";function cfg(key){if(typeof window!==\"undefined\"&&window.CHECKIT_CONFIG?.[key]){return window.CHECKIT_CONFIG[key];}console.error(`[CHECKIT_CONFIG] 키 누락: ${key}`);return\"\";}const SUPABASE_URL=()=>cfg(\"SUPABASE_URL\");const SUPABASE_ANON_KEY=()=>cfg(\"SUPABASE_ANON_KEY\");const SUPABASE_EDGE_URL=()=>`${cfg(\"SUPABASE_URL\")}/functions/v1`;const SITE_URL=typeof window!==\"undefined\"?window.location.origin:\"https://check-it.art\";const PAGES={home:`${SITE_URL}/`,challenge:`${SITE_URL}/challenge`,plan2:`${SITE_URL}/plan-2`,auth:`${SITE_URL}/auth`,signup:`${SITE_URL}/signup`};// ─────────────────────────────────────────────\n// 쿠키 헬퍼\n// ─────────────────────────────────────────────\nconst COOKIE_MAX_AGE=60*60*24*30// 30일\n;function setCookie(name,value){document.cookie=`${name}=${encodeURIComponent(value)}; path=/; SameSite=Lax; max-age=${COOKIE_MAX_AGE}`;}function getCookie(name){if(typeof document===\"undefined\")return\"\";const match=document.cookie.split(\"; \").find(row=>row.startsWith(name+\"=\"));return match?decodeURIComponent(match.split(\"=\")[1]):\"\";}function deleteCookie(name){document.cookie=`${name}=; path=/; SameSite=Lax; max-age=0`;}// ─────────────────────────────────────────────\n// 세션 관리\n// ─────────────────────────────────────────────\nconst Session={set:data=>{setCookie(\"checkit_uid\",data.uid);if(data.email)setCookie(\"checkit_email\",data.email);if(data.customerName)setCookie(\"checkit_customer_name\",data.customerName);if(data.customerPhone)setCookie(\"checkit_customer_phone\",data.customerPhone);setCookie(\"checkit_isPaid\",String(data.isPaid));if(data.planKey)setCookie(\"checkit_planKey\",data.planKey);setCookie(\"isVerified\",\"true\");window.dispatchEvent(new Event(\"storage\"));},get:()=>({uid:getCookie(\"checkit_uid\"),email:getCookie(\"checkit_email\"),isPaid:getCookie(\"checkit_isPaid\")===\"true\",planKey:getCookie(\"checkit_planKey\")}),clear:()=>{[\"checkit_uid\",\"checkit_email\",\"checkit_isPaid\",\"checkit_planKey\",\"checkit_customer_name\",\"checkit_customer_phone\",\"checkit_access_token\",\"isVerified\"].forEach(deleteCookie);window.dispatchEvent(new Event(\"storage\"));},hasSocialCallback:()=>{if(typeof window===\"undefined\")return false;const params=new URLSearchParams(window.location.search);const provider=params.get(\"provider\");return!!(provider&&[\"google\",\"kakao\",\"naver\",\"apple\"].includes(provider));}};// ─────────────────────────────────────────────\n// 전역 이메일/비밀번호 상태 (오버라이드 간 공유)\n// ─────────────────────────────────────────────\nlet authEmail=\"\";let authPassword=\"\";// ─────────────────────────────────────────────\n// 소셜 로그인 콜백 처리\n// ─────────────────────────────────────────────\nfunction processSocialCallback(){if(typeof window===\"undefined\")return;const params=new URLSearchParams(window.location.search);const provider=params.get(\"provider\");const email=params.get(\"email\");const uid=params.get(\"uid\");const isPaid=params.get(\"isPaid\")===\"true\";const planKey=params.get(\"planKey\")||\"\";const customerName=params.get(\"customerName\")||params.get(\"fullName\")||params.get(\"name\")||\"\";const customerPhone=params.get(\"customerPhone\")||params.get(\"phoneNumber\")||params.get(\"phone\")||params.get(\"mobile\")||\"\";if(!provider||!uid)return;if(![\"google\",\"kakao\",\"naver\",\"apple\"].includes(provider))return;window.history.replaceState({},\"\",window.location.pathname);Session.set({uid,email,isPaid,planKey,customerName,customerPhone});if(isPaid){void resolveProfileDestination(uid).then(destination=>window.location.replace(destination));}else{window.location.replace(PAGES.plan2);}}// 페이지 로드 시 자동 실행\nif(typeof window!==\"undefined\"){processSocialCallback();}async function resolveProfileDestination(uid){try{const response=await fetch(`${SUPABASE_URL()}/rest/v1/users?uid=eq.${encodeURIComponent(uid)}&select=profile_completed_at&limit=1`,{headers:{apikey:SUPABASE_ANON_KEY(),Authorization:`Bearer ${SUPABASE_ANON_KEY()}`}});const rows=await response.json();return rows?.[0]?.profile_completed_at?PAGES.challenge:PAGES.signup;}catch{return PAGES.signup;}}// ─────────────────────────────────────────────\n// X버튼 주입 헬퍼\n// ─────────────────────────────────────────────\nfunction injectClearButton(el,key,hasEyeIcon=false){const wrapper=el.parentElement;if(!wrapper)return;if(wrapper.querySelector(`[data-auth-clear=\"${key}\"]`))return;const btn=document.createElement(\"button\");btn.type=\"button\";btn.setAttribute(\"data-auth-clear\",key);btn.textContent=\"✕\";// X버튼: 눈 아이콘이 있으면 오른쪽 끝(right:8px), 없으면 right:8px\n// 눈 아이콘은 X버튼 왼쪽(right:36px)에 위치\nconst rightPos=\"8px\";btn.style.cssText=`\n        position: absolute; right: ${rightPos}; top: 50%;\n        transform: translateY(-50%); background: none; border: none;\n        cursor: pointer; font-size: 14px; color: #999; padding: 4px;\n        display: none; z-index: 10; line-height: 1;\n    `;if(getComputedStyle(wrapper).position===\"static\"){wrapper.style.position=\"relative\";}wrapper.appendChild(btn);const updateBtn=()=>{btn.style.display=el.value.length>0?\"block\":\"none\";};el.addEventListener(\"input\",updateBtn);updateBtn();btn.addEventListener(\"click\",()=>{const setter=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,\"value\")?.set;setter?.call(el,\"\");el.dispatchEvent(new Event(\"input\",{bubbles:true}));btn.style.display=\"none\";el.focus();if(key===\"email\")authEmail=\"\";if(key===\"password\")authPassword=\"\";});}// ─────────────────────────────────────────────\n// 눈 아이콘 주입 헬퍼 (비밀번호 표시/숨김)\n// ─────────────────────────────────────────────\nfunction injectEyeButton(el){const wrapper=el.parentElement;if(!wrapper)return;if(wrapper.querySelector(\"[data-auth-eye]\"))return;const btn=document.createElement(\"button\");btn.type=\"button\";btn.setAttribute(\"data-auth-eye\",\"1\");// 눈 아이콘: X버튼 왼쪽 (right: 36px)\nbtn.style.cssText=`\n        position: absolute; right: 36px; top: 50%;\n        transform: translateY(-50%); background: none; border: none;\n        cursor: pointer; font-size: 16px; color: #999; padding: 4px;\n        z-index: 10; line-height: 1; display: none; align-items: center;\n    `;// 입력값 있을 때만 눈 아이콘 표시\nconst updateEyeVisibility=()=>{btn.style.display=el.value.length>0?\"flex\":\"none\";};el.addEventListener(\"input\",updateEyeVisibility);updateEyeVisibility();btn.innerHTML=`<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/></svg>`;if(getComputedStyle(wrapper).position===\"static\"){wrapper.style.position=\"relative\";}wrapper.appendChild(btn);let visible=false;btn.addEventListener(\"click\",()=>{visible=!visible;el.type=visible?\"text\":\"password\";btn.innerHTML=visible?`<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\"/><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"/></svg>`:`<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/></svg>`;});}// ─────────────────────────────────────────────\n// 이메일/비밀번호 로그인 실행 함수\n// ─────────────────────────────────────────────\nasync function doEmailLogin(){const email=authEmail.trim();const password=authPassword;if(!email||!password){alert(\"이메일과 비밀번호를 입력해 주세요.\");return false;}try{const res=await fetch(`${SUPABASE_URL()}/auth/v1/token?grant_type=password`,{method:\"POST\",headers:{apikey:SUPABASE_ANON_KEY(),\"Content-Type\":\"application/json\"},body:JSON.stringify({email,password})});const json=await res.json();if(!res.ok||!json.user?.id){const errCode=json.error_code||json.error||\"\";const errDesc=(json.error_description||json.msg||\"\").toLowerCase();const isInvalidCreds=errCode===\"invalid_credentials\"||errDesc.includes(\"invalid login\")||errDesc.includes(\"invalid credentials\");if(isInvalidCreds){const signUpRes=await fetch(`${SUPABASE_URL()}/auth/v1/signup`,{method:\"POST\",headers:{apikey:SUPABASE_ANON_KEY(),\"Content-Type\":\"application/json\"},body:JSON.stringify({email,password})});const signUpJson=await signUpRes.json();if(!signUpRes.ok||!signUpJson.user?.id){// Auth 계정은 생성됐지만 가입 응답만 오류가 되는 경우가 있다.\n// 동일 자격증명으로 다시 로그인해 실제 세션이 발급되면 플랜 선택으로 보낸다.\nconst retryRes=await fetch(`${SUPABASE_URL()}/auth/v1/token?grant_type=password`,{method:\"POST\",headers:{apikey:SUPABASE_ANON_KEY(),\"Content-Type\":\"application/json\"},body:JSON.stringify({email,password})});const retryJson=await retryRes.json().catch(()=>({}));if(retryRes.ok&&retryJson.user?.id){setCookie(\"checkit_uid\",retryJson.user.id);setCookie(\"checkit_email\",email);if(retryJson.access_token){setCookie(\"checkit_access_token\",retryJson.access_token);}setCookie(\"isVerified\",\"true\");window.location.replace(PAGES.plan2);return true;}const msg=signUpJson.error_description||signUpJson.msg||\"회원가입에 실패했습니다. 다시 시도해 주세요.\";alert(msg);return false;}const newUid=signUpJson.user.id;const newToken=signUpJson.access_token||\"\";setCookie(\"checkit_uid\",newUid);setCookie(\"checkit_email\",email);if(newToken)setCookie(\"checkit_access_token\",newToken);setCookie(\"isVerified\",\"true\");window.location.replace(PAGES.plan2);return true;}const msg=json.error_description||json.msg||\"이메일 또는 비밀번호가 올바르지 않습니다.\";alert(msg);return false;}const uid=json.user.id;const accessToken=json.access_token;const userRes=await fetch(`${SUPABASE_URL()}/rest/v1/users?uid=eq.${encodeURIComponent(uid)}&select=plan,account_status,profile_completed_at,payment_customer_name,payment_customer_phone&limit=1`,{headers:{apikey:SUPABASE_ANON_KEY(),Authorization:`Bearer ${accessToken}`}});const users=await userRes.json();const userData=users?.[0];const planKey=userData?.plan||\"\";const isPaid=!!(planKey&&userData?.account_status===\"ACTIVE\"||userData?.account_status===\"VIP\");Session.set({uid,email,isPaid,planKey,customerName:userData?.payment_customer_name,customerPhone:userData?.payment_customer_phone});setCookie(\"checkit_access_token\",accessToken);if(isPaid){window.location.replace(userData?.profile_completed_at?PAGES.challenge:PAGES.signup);}else{window.location.replace(PAGES.plan2);}return true;}catch(err){console.error(\"이메일 로그인 오류:\",err);alert(\"네트워크 오류가 발생했습니다. 다시 시도해 주세요.\");return false;}}// ─────────────────────────────────────────────\n// 오버라이드\n// ─────────────────────────────────────────────\n// 1. 구글 로그인 버튼\nexport function withGoogleLogin(Component){return props=>{const handleClick=e=>{e.stopPropagation();e.preventDefault();window.location.href=`${SUPABASE_EDGE_URL()}/google-login`;};return /*#__PURE__*/_jsx(Component,{...props,onClick:handleClick,onTap:handleClick});};}// 2. 네이버 로그인 버튼\nexport function withNaverLogin(Component){return props=>{const handleClick=e=>{e.stopPropagation();e.preventDefault();window.location.href=`${SUPABASE_EDGE_URL()}/naver-login`;};return /*#__PURE__*/_jsx(Component,{...props,onClick:handleClick,onTap:handleClick});};}// 3. 카카오 로그인 버튼\nexport function withKakaoLogin(Component){return props=>{const handleClick=e=>{e.stopPropagation();e.preventDefault();window.location.href=`${SUPABASE_EDGE_URL()}/kakao-login`;};return /*#__PURE__*/_jsx(Component,{...props,onClick:handleClick,onTap:handleClick});};}// 4. 애플 로그인 버튼\nexport function withAppleLogin(Component){return props=>{const handleClick=e=>{e.stopPropagation();e.preventDefault();window.location.href=`${SUPABASE_EDGE_URL()}/apple-login`;};return /*#__PURE__*/_jsx(Component,{...props,onClick:handleClick,onTap:handleClick});};}// 5. ID(e-mail) 입력 필드\nexport function withEmailInput(Component){return props=>{const wrapperRef=useRef(null);useEffect(()=>{const findInput=()=>{const wrapper=wrapperRef.current;if(!wrapper)return null;if(wrapper.tagName===\"INPUT\")return wrapper;return wrapper.querySelector(\"input\");};let el=findInput();if(!el){const timer=setTimeout(()=>{const input=findInput();if(input)setupInput(input);},100);return()=>clearTimeout(timer);}setupInput(el);function setupInput(input){if(input.__authEmailEnhanced)return;input.__authEmailEnhanced=true;input.addEventListener(\"input\",()=>{authEmail=input.value;});input.addEventListener(\"keydown\",e=>{if(e.key===\"Enter\"){e.preventDefault();const pwEl=document.querySelector('input[type=\"password\"]');pwEl?.focus();}});injectClearButton(input,\"email\");}},[]);return /*#__PURE__*/_jsx(Component,{...props,ref:wrapperRef,type:\"email\",autoComplete:\"email\"});};}// 6. Pass Word 입력 필드\n// 아이콘 순서 (오른쪽→왼쪽): [눈 아이콘(right:8px)] [X버튼(right:36px)]\n// → 눈 아이콘이 오른쪽 끝, X버튼은 그 왼쪽 (아이디창 X버튼과 동일한 간격)\nexport function withPasswordInput(Component){return props=>{const wrapperRef=useRef(null);useEffect(()=>{const findInput=()=>{const wrapper=wrapperRef.current;if(!wrapper)return null;if(wrapper.tagName===\"INPUT\")return wrapper;return wrapper.querySelector(\"input\");};let el=findInput();if(!el){const timer=setTimeout(()=>{const input=findInput();if(input)setupInput(input);},100);return()=>clearTimeout(timer);}setupInput(el);function setupInput(input){if(input.__authPwEnhanced)return;input.__authPwEnhanced=true;input.type=\"password\";input.addEventListener(\"input\",()=>{authPassword=input.value;});input.addEventListener(\"keydown\",async e=>{if(e.key===\"Enter\"){e.preventDefault();await doEmailLogin();}});// X버튼 먼저 주입 (right: 8px, 오른쪽 끝)\ninjectClearButton(input,\"password\",false);// 눈 아이콘은 X버튼 왼쪽 (right: 36px)\ninjectEyeButton(input);}},[]);return /*#__PURE__*/_jsx(Component,{...props,ref:wrapperRef,type:\"password\",autoComplete:\"current-password\"});};}// 7. 이메일/비밀번호 로그인 버튼\nexport function withEmailLogin(Component){return props=>{const[loading,setLoading]=useState(false);const handleClick=async e=>{e.stopPropagation();e.preventDefault();if(loading)return;setLoading(true);await doEmailLogin();setLoading(false);};return /*#__PURE__*/_jsx(Component,{...props,onClick:handleClick,onTap:handleClick,style:{...props.style,cursor:loading?\"wait\":\"pointer\",opacity:loading?.6:1}});};}// 8. 로그아웃/로그인 버튼\nexport function withLogout(Component){return props=>{const title=String(props.title||props.children||\"\");const isLoginButton=title.toUpperCase().includes(\"LOG IN\");const handleClick=e=>{e.stopPropagation();e.preventDefault();if(isLoginButton){window.location.replace(PAGES.auth);}else{Session.clear();window.location.replace(PAGES.home);}};return /*#__PURE__*/_jsx(Component,{...props,onClick:handleClick,onTap:handleClick});};}// 9. 네비게이션 바 상태\nexport function withNavbarState(Component){return props=>{const[isLoggedIn,setIsLoggedIn]=useState(()=>typeof window!==\"undefined\"?getCookie(\"isVerified\")===\"true\":false);useEffect(()=>{const check=()=>setIsLoggedIn(getCookie(\"isVerified\")===\"true\");const id=setInterval(check,500);window.addEventListener(\"storage\",check);return()=>{clearInterval(id);window.removeEventListener(\"storage\",check);};},[]);return /*#__PURE__*/_jsx(Component,{...props,variant:isLoggedIn?\"loggedIn\":\"loggedOut\"});};}// 10. /challenge, /tutorial, /inventory 페이지 Main 레이어 — 미인증/미결제 시 리다이렉트\nexport function withAuthGuard(Component){return props=>{useEffect(()=>{if(typeof window===\"undefined\")return;if(Session.hasSocialCallback())return;const isVerified=getCookie(\"isVerified\")===\"true\";const uid=getCookie(\"checkit_uid\");if(!isVerified||!uid){window.location.replace(PAGES.auth);return;}const isPaid=getCookie(\"checkit_isPaid\")===\"true\";if(!isPaid){window.location.replace(PAGES.plan2);}},[]);return /*#__PURE__*/_jsx(Component,{...props});};}// 11. /auth 페이지 최상위 레이어 — SNS 콜백 시 페이지 숨김\nexport function withAuthPage(Component){return props=>{const[hidden]=useState(()=>{if(typeof window===\"undefined\")return false;return new URLSearchParams(window.location.search).has(\"provider\");});return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(Component,{...props}),hidden&&/*#__PURE__*/_jsxs(\"div\",{style:{position:\"fixed\",inset:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",background:\"#fff\",zIndex:9999},children:[/*#__PURE__*/_jsx(\"div\",{style:{width:32,height:32,border:\"3px solid #000\",borderTopColor:\"transparent\",borderRadius:\"50%\",animation:\"spin 0.7s linear infinite\"}}),/*#__PURE__*/_jsx(\"style\",{children:`@keyframes spin { to { transform: rotate(360deg); } }`})]})]});};}// 12. 아이디 찾기 버튼\n// users 테이블에서 name + phone 으로 이메일 조회 후 alert로 표시\nexport function withFindId(Component){return props=>{const handleClick=async e=>{e.stopPropagation();e.preventDefault();const name=window.prompt(\"가입 시 등록한 이름(학생)을 입력해 주세요.\");if(!name||!name.trim())return;const phone=window.prompt(\"가입 시 등록한 연락처를 입력해 주세요. (예: 01012345678)\");if(!phone||!phone.trim())return;try{const res=await fetch(`${SUPABASE_URL()}/rest/v1/users?name=eq.${encodeURIComponent(name.trim())}&phone=eq.${encodeURIComponent(phone.trim())}&select=email&limit=1`,{headers:{apikey:SUPABASE_ANON_KEY(),Authorization:`Bearer ${SUPABASE_ANON_KEY()}`}});const data=await res.json();if(data&&data.length>0&&data[0].email){const email=data[0].email;alert(`가입된 아이디(이메일):\n${email}`);const emailInput=document.querySelector('input[type=\"email\"], input[placeholder*=\"e-mail\"], input[placeholder*=\"ID\"]');if(emailInput){const setter=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,\"value\")?.set;setter?.call(emailInput,email);emailInput.dispatchEvent(new Event(\"input\",{bubbles:true}));emailInput.focus();}authEmail=email;}else{alert(\"입력하신 정보와 일치하는 계정을 찾을 수 없습니다.\");}}catch(err){console.error(\"아이디 찾기 오류:\",err);alert(\"네트워크 오류가 발생했습니다. 다시 시도해 주세요.\");}};return /*#__PURE__*/_jsx(Component,{...props,onClick:handleClick,style:{...props.style,cursor:\"pointer\"}});};}// 13. 비밀번호 찾기 버튼\n// Supabase Auth 비밀번호 재설정 이메일 발송\nexport function withFindPassword(Component){return props=>{const handleClick=async e=>{e.stopPropagation();e.preventDefault();const email=window.prompt(\"가입 시 사용한 이메일 주소를 입력해 주세요.\");if(!email||!email.trim())return;try{const res=await fetch(`${SUPABASE_URL()}/auth/v1/recover`,{method:\"POST\",headers:{apikey:SUPABASE_ANON_KEY(),\"Content-Type\":\"application/json\"},body:JSON.stringify({email:email.trim(),redirect_to:`${SITE_URL}/auth`})});if(res.ok){alert(`비밀번호 재설정 이메일을 발송했습니다.\n${email.trim()}으로 전송된 메일을 확인해 주세요.\n\n메일이 오지 않으면 스팸함을 확인해 주세요.`);}else{const json=await res.json().catch(()=>({}));const msg=json.error_description||json.msg||\"이메일 발송에 실패했습니다.\";alert(msg);}}catch(err){console.error(\"비밀번호 찾기 오류:\",err);alert(\"네트워크 오류가 발생했습니다. 다시 시도해 주세요.\");}};return /*#__PURE__*/_jsx(Component,{...props,onClick:handleClick,style:{...props.style,cursor:\"pointer\"}});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withNavbarState\":{\"type\":\"reactHoc\",\"name\":\"withNavbarState\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLogout\":{\"type\":\"reactHoc\",\"name\":\"withLogout\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withPasswordInput\":{\"type\":\"reactHoc\",\"name\":\"withPasswordInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withEmailLogin\":{\"type\":\"reactHoc\",\"name\":\"withEmailLogin\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withFindId\":{\"type\":\"reactHoc\",\"name\":\"withFindId\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withEmailInput\":{\"type\":\"reactHoc\",\"name\":\"withEmailInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withAppleLogin\":{\"type\":\"reactHoc\",\"name\":\"withAppleLogin\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withAuthGuard\":{\"type\":\"reactHoc\",\"name\":\"withAuthGuard\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withKakaoLogin\":{\"type\":\"reactHoc\",\"name\":\"withKakaoLogin\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withGoogleLogin\":{\"type\":\"reactHoc\",\"name\":\"withGoogleLogin\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withNaverLogin\":{\"type\":\"reactHoc\",\"name\":\"withNaverLogin\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withFindPassword\":{\"type\":\"reactHoc\",\"name\":\"withFindPassword\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withAuthPage\":{\"type\":\"reactHoc\",\"name\":\"withAuthPage\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AuthSystem.map"],"mappings":"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"}