PageSourceSearch

https://sellcademy.co.kr/assets/MyPage-BEgckgm1.js

js sellcademy.co.kr collected 2026-09-24 15:05:03 UTC 20,811 bytes, 1 lines download raw bytes

1import{r as n,j as e,B as d,t as x,C as we,m as Se,D as T,g as B,h as C,i as v,x as y,y as ke,n as I,z as V,E as De,F as Le,L as Ae,G as Re,H as Ee,a as W,u as Oe,I as Te,R as le,J as Be}from"./index-CnD64O-O.js";import{S as ce}from"./switch-B87kDLN-.js";import{T as Ie}from"./textarea-BniXL2Mu.js";import{L as oe}from"./label-BrNY7LbK.js";import{A,b as R}from"./alert-BrR5LqFa.js";import{C as ze,a as Ke,b as Pe}from"./collapsible-B1DsemOu.js";import{S as Xe,a as Fe,b as Me,c as $e,d as _e}from"./select-DM4MWNIY.js";import{r as Ue,g as Ve}from"./coupon-lXYTEYUv.js";import{I as We}from"./input-C48x21mA.js";import{T as He,a as qe,b as de}from"./tabs-D68MU1up.js";import{B as Ge}from"./badge-CYge-pgM.js";import{P as Qe}from"./v2-COOV2328.js";import{C as E}from"./circle-alert-DADdTjIo.js";import{R as O}from"./rotate-cw-sHUCLSB4.js";import{C as Ye}from"./credit-card-BSPaBLtw.js";import{g as Je,r as Ze}from"./pass-XDGNDxBN.js";import{C as es}from"./chevron-down-CjwehzcN.js";import"./index-QtH-xY58.js";import"./check-CSNy1TZ9.js";import"./chevron-up-Cgk6_S1X.js";import"./index-BdQq_4o_.js";import"./index-DxCoXAjk.js";import"./index-CW7ZL7oC.js";import"./index-D6trnHb-.js";import"./index-DJUfHlBW.js";function ss({onRegistered:t}){const[a,r]=n.useState(""),[c,l]=n.useState(!1),h=p=>{const m=p.replace(/[^A-Za-z0-9]/g,"").toUpperCase().slice(0,12),g=[];for(let i=0;i<m.length;i+=4)g.push(m.slice(i,i+4));return g.join("-")},o=p=>{r(h(p.target.value))},u=async()=>{if(a.replace(/-/g,"").length!==12){x.error("쿠폰 코드를 올바르게 입력해주세요.");return}l(!0);try{await Ue(a),x.success("쿠폰이 등록되었습니다."),r(""),t()}catch(p){const m=p?.response?.data?.detail||"쿠폰 등록에 실패했습니다.";x.error(m)}finally{l(!1)}};return e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium",children:"쿠폰 등록"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(We,{placeholder:"XXXX-XXXX-XXXX",value:a,onChange:o,maxLength:14,className:"font-mono"}),e.jsx(d,{onClick:u,disabled:c,children:c?"등록 중...":"등록"})]})]})}const ts={registered:{label:"사용가능",variant:"default"},used:{label:"사용완료",variant:"secondary"},expired:{label:"만료",variant:"destructive"}};function as({status:t}){const a=ts[t];return e.jsx(Ge,{variant:a.variant,children:a.label})}function ns({coupon:t}){const a=r=>new Date(r).toLocaleDateString("ko-KR");return e.jsx(we,{className:t.status!=="registered"?"opacity-60":"",children:e.jsx(Se,{className:"flex items-center justify-between p-4",children:e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{className:"text-lg font-semibold",children:[t.discountAmount.toLocaleString(),"원 할인"]}),e.jsx(as,{status:t.status})]}),e.jsx("p",{className:"font-mono text-sm text-muted-foreground",children:t.code}),e.jsx("p",{className:"text-xs text-muted-foreground",children:t.usedAt?`사용일: ${a(t.usedAt)}`:`만료: ${a(t.expiresAt)}`})]})})})}function rs({coupons:t,usableCount:a}){const[r,c]=n.useState("usable");if(t.length===0)return e.jsx("p",{className:"py-4 text-center text-sm text-muted-foreground",children:"보유한 쿠폰이 없습니다."});const l=t.filter(o=>r==="usable"?o.status==="registered":o.status!=="registered"),h=t.length-a;return e.jsxs("div",{className:"space-y-3",children:[e.jsx(He,{value:r,onValueChange:o=>c(o),children:e.jsxs(qe,{className:"w-full",children:[e.jsxs(de,{value:"usable",className:"flex-1",children:["사용 가능 (",a,")"]}),e.jsxs(de,{value:"used",className:"flex-1",children:["사용 완료 (",h,")"]})]})}),l.length>0?e.jsx("div",{className:"space-y-2",children:l.map(o=>e.jsx(ns,{coupon:o},o.id))}):e.jsx("p",{className:"py-4 text-center text-sm text-muted-foreground",children:r==="usable"?"사용 가능한 쿠폰이 없습니다.":"사용 완료된 쿠폰이 없습니다."})]})}function is({open:t,loading:a,onOpenChange:r,onConfirm:c}){const[l,h]=n.useState(!1),o=u=>{u||h(!1),r(u)};return e.jsx(T,{modal:!0,open:t,onOpenChange:o,children:e.jsxs(B,{className:"max-w-md",children:[e.jsx(C,{children:e.jsx(v,{children:"구독을 취소하시겠습니까?"})}),e.jsx("div",{className:"py-2 space-y-2",children:e.jsxs("ul",{className:"space-y-2 text-body-sm text-foreground",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"shrink-0",children:"•"}),e.jsx("span",{children:"구독은 취소 즉시 해지됩니다."})]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"shrink-0",children:"•"}),e.jsx("span",{children:"취소 후에는 구독 혜택을 이용하실 수 없습니다."})]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"shrink-0",children:"•"}),e.jsx("span",{children:"환불 금액은 할인 적용 전 정상가 기준으로 일할 계산되어 공제되며, 잔여 금액에 한하여 환불이 진행됩니다."})]})]})}),e.jsxs("label",{className:"flex items-center gap-2 cursor-pointer pt-1",children:[e.jsx("input",{type:"checkbox",checked:l,onChange:u=>
1h(u.target.checked),className:"w-4 h-4 accent-primary cursor-pointer"}),e.jsx("span",{className:"text-body-sm",children:"위 내용을 확인하였으며 동의합니다."})]}),e.jsxs(y,{className:"pt-2",children:[e.jsx(d,{variant:"outline",onClick:()=>o(!1),disabled:a,children:"취소"}),e.jsx(d,{variant:"destructive",onClick:c,disabled:a||!l,children:a?"처리 중...":"구독 해제"})]})]})})}function ls({billingKey:t,onOpenChange:a}){const{mutateAsync:r,isPending:c}=ke(),[l,h]=n.useState(null),o=t!==null,u=m=>{m||(a(!1),h(null))},p=async()=>{if(t)try{const m=await r(t.id);m.warning?h(m):(x.success("카드가 삭제되었습니다."),u(!1))}catch(m){x.error(m?.response?.data?.error||"카드 삭제에 실패했습니다.")}};return e.jsx(T,{modal:!0,open:o,onOpenChange:u,children:e.jsx(B,{className:"max-w-md",children:l?e.jsxs(e.Fragment,{children:[e.jsxs(C,{children:[e.jsx(v,{children:"카드가 삭제되었습니다"}),e.jsx(I,{children:l.warning})]}),l.affectedSubscriptions.length>0&&e.jsx("ul",{className:"space-y-1.5 py-1",children:l.affectedSubscriptions.map(m=>e.jsxs("li",{className:"flex items-center justify-between rounded-md border px-3 py-2 text-sm",children:[e.jsx("span",{className:"font-medium",children:m.planName}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:["다음 결제일 ",new Date(m.expiresAt).toLocaleDateString("ko-KR")]})]},m.id))}),e.jsx(y,{className:"pt-2",children:e.jsx(d,{onClick:()=>u(!1),children:"확인"})})]}):e.jsxs(e.Fragment,{children:[e.jsxs(C,{children:[e.jsx(v,{children:"카드를 삭제하시겠습니까?"}),t&&e.jsxs(I,{children:[t.cardCompany," ",t.cardNumber]})]}),t?.inUse&&e.jsx("div",{className:"rounded-lg border border-destructive/20 bg-destructive/5 p-3 text-sm text-destructive",children:"이 카드로 자동결제 중인 구독이 있습니다. 삭제 후 다시 등록하지 않으면 다음 갱신일에 결제가 실패하고 구독이 재등록 필요 상태로 전환됩니다."}),e.jsxs(y,{className:"pt-2",children:[e.jsx(d,{variant:"outline",onClick:()=>u(!1),disabled:c,children:"취소"}),e.jsx(d,{variant:"destructive",onClick:p,disabled:c,children:c?"삭제 중...":"삭제"})]})]})})})}function cs(){const t=V(i=>i.user),a=De(),{data:r,isLoading:c,isError:l,refetch:h}=Le(),[o,u]=n.useState(!1),[p,m]=n.useState(null),g=async()=>{if(t){u(!0);try{const i=await Qe.requestIssueBillingKey({storeId:"store-70f1da4a-e245-4eff-8cfd-aba0f3b8eb59",channelKey:"channel-key-8d67c0d3-2e80-4f38-b681-7e68589da8cb",billingKeyMethod:"CARD",customer:{customerId:`user_${t.pk}`},issueName:"셀카데미 정기결제 빌링키"});if(!i){x.error("카드 등록이 취소되었습니다.");return}if(i.code!==void 0){x.error(i.message??"카드 등록에 실패했습니다.");return}const N=await Re(i.billingKey);a.invalidateQueries({queryKey:Ee}),x.success(N.replaced?`${N.cardCompany} ${N.cardNumber} 카드로 변경되었습니다.`:`${N.cardCompany} ${N.cardNumber} 카드가 등록되었습니다.`)}catch(i){console.error("포트원 빌링키 발급 에러:",i),x.error("카드 등록 요청 중 오류가 발생했습니다.")}finally{u(!1)}}};return e.jsxs("section",{className:"border-b pb-10 mb-10",children:[e.jsx("h2",{className:"text-base font-bold mb-5",children:"결제 카드"}),e.jsxs("div",{className:"space-y-3",children:[l&&e.jsxs(A,{variant:"destructive",children:[e.jsx(E,{className:"h-4 w-4"}),e.jsxs(R,{className:"flex items-center justify-between",children:[e.jsx("span",{children:"카드 정보를 불러오는 중 오류가 발생했습니다."}),e.jsxs(d,{variant:"ghost",size:"sm",onClick:()=>h(),children:[e.jsx(O,{className:"h-3.5 w-3.5 mr-1"}),"다시 시도"]})]})]}),!l&&c&&e.jsx("div",{className:"flex justify-center py-4",children:e.jsx(Ae,{className:"h-5 w-5 animate-spin text-muted-foreground"})}),!l&&!c&&r?.length===0&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"등록된 카드가 없습니다."}),e.jsx(d,{variant:"outline",size:"sm",onClick:g,disabled:o,children:o?"등록 중...":"카드 등록하기"})]}),!l&&!c&&r?.map(i=>e.jsx("div",{className:"rounded-lg border p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"flex h-10 w-10 items-center justify-center rounded-lg bg-muted",children:e.jsx(Ye,{className:"h-5 w-5 text-muted-foreground"})}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("p",{className:"text-sm font-medium",children:i.cardCompany}),i.inUse&&e.jsx("span",{className:"rounded-full bg-primary/10 px-2 py-0.5 text-xs font-medium text-primary",children:"자동결제 중"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:i.cardNumber})]})]}),e.jsx("div",{className:"flex gap-1",children:e.jsx(d,{variant:"outline",size:"sm",onClick:g,disabled:o,children:"변경"})})]})},i.id))]}),e.jsx(ls,{billingKey:p,onOpenChange:i=>{i||m(null)}})]})}async function os(){const{data:t}=await W.get("/auth/consent/");return t}async function ds(t){const{data:a}=await W.patch("/auth/consent/",t);return a}
1const ms={dissatisfied:"서비스 불만족",expensive:"가격이 비쌈",rarely_used:"거의 사용하지 않음",switch_service:"다른 서비스 이용",other:"기타"};async function xs(t,a=""){const{data:r}=await W.delete("/auth/withdraw/",{data:{reason:t,detail:a}});return r}function us(t){const a=new Date(t).getTime()-Date.now();if(a<=0)return"만료됨";const r=Math.floor(a/(1e3*60*60)),c=Math.floor(a%(1e3*60*60)/(1e3*60));return r>0?`${r}시간 ${c}분 남음`:`${c}분 남음`}function Xs(){const t=Oe(),a=V(s=>s.user),[r,c]=n.useState(null),[l,h]=n.useState(null),[o,u]=n.useState(!1),[p,m]=n.useState(""),[g,i]=n.useState(!1),[N,H]=n.useState(!1),[me,xe]=n.useState([]),[ue,he]=n.useState(0),[w,q]=n.useState(!1),[pe,G]=n.useState(!1),[fe,Q]=n.useState(!1),[Y,z]=n.useState(!1),[J,K]=n.useState(!1),[S,Z]=n.useState(!1),[je,k]=n.useState(!1),[P,D]=n.useState(null),[ge,X]=n.useState(!1),[b,F]=n.useState(""),[ee,M]=n.useState(""),[$,se]=n.useState(!1),Ne=V(s=>s.logout),_=n.useCallback(()=>{Je().then(s=>{u(s.verified),m(s.phone)}).catch(()=>{x.error("본인인증 상태를 불러오지 못했습니다.")})},[]);n.useEffect(()=>{te(),_(),U(),ae()},[_]);const te=n.useCallback(()=>{q(!1),Te().then(s=>{const f=new Date,L=s.filter(j=>j.status==="active"&&new Date(j.expiresAt)>f);c(L.find(j=>j.plan.planType==="recurring")??null),h(L.find(j=>j.plan.planType==="one_time")??null)}).catch(()=>{q(!0)})},[]),U=n.useCallback(()=>{G(!1),Ve().then(s=>{xe(s.coupons),he(s.usableCount)}).catch(()=>{G(!0)})},[]),ae=n.useCallback(()=>{Q(!1),os().then(s=>{z(s.marketingConsent),K(s.adConsent)}).catch(()=>{Q(!0)})},[]),be=async()=>{try{await Ze(),_()}catch(s){x.error(s instanceof Error?s.message:"본인인증 요청 중 오류가 발생했습니다.")}},Ce=async()=>{H(!0);try{const s=await Be();c(null),i(!1),s.refundAmount>0?x.success(`구독이 즉시 해지되었습니다. ${s.refundAmount.toLocaleString()}원이 환불됩니다.`):x.success("환불 금액 없이 즉시 중지됩니다.")}catch(s){s?.response?.status===502?x.error("일시적인 오류가 발생했습니다. 잠시 후 다시 시도해주세요."):x.error("구독 해제에 실패했습니다."),i(!1)}finally{H(!1)}},ne=(s,f)=>{if(!f){D(s),k(!0);return}re(s,f)},re=async(s,f)=>{const L=Y,j=J;Z(!0);try{const ie=await ds({[s]:f});z(ie.marketingConsent),K(ie.adConsent)}catch{z(L),K(j),x.error("동의 설정 변경에 실패했습니다.")}finally{Z(!1)}},ve=()=>{P&&re(P,!1),k(!1),D(null)},ye=async()=>{if(b){se(!0);try{await xs(b,ee),x.success("회원탈퇴가 완료되었습니다."),Ne(),t(le.HOME)}catch{x.error("회원탈퇴에 실패했습니다. 잠시 후 다시 시도해주세요.")}finally{se(!1)}}};return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"max-w-lg mx-auto px-4 py-12",children:[e.jsx("h1",{className:"text-xl font-semibold mb-10",children:"마이페이지"}),e.jsxs("section",{className:"border-b pb-10 mb-10",children:[e.jsx("h2",{className:"text-base font-bold mb-5",children:"회원정보"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"이름"}),e.jsx("span",{className:"text-sm",children:a?.name||"—"})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"이메일"}),e.jsx("span",{className:"text-sm",children:a?.email??"—"})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"로그인 방식"}),e.jsxs("span",{className:"text-sm",children:[a?.provider==="naver"&&"네이버",a?.provider==="kakao"&&"카카오",a?.provider==="google"&&"Google",!a?.provider&&"—"]})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"전화번호"}),o?e.jsx("span",{className:"text-sm",children:p}):e.jsx(d,{variant:"outline",size:"sm",onClick:be,children:"전화번호 인증하기"})]})]})]}),e.jsxs("section",{className:"border-b pb-10 mb-10",children:[e.jsx("h2",{className:"text-base font-bold mb-5",children:"이용 중인 상품"}),e.jsxs("div",{className:"space-y-4",children:[w&&e.jsxs(A,{variant:"destructive",children:[e.jsx(E,{className:"h-4 w-4"}),e.jsxs(R,{className:"flex items-center justify-between",children:[e.jsx("span",{children:"구독 정보를 불러오는 중 오류가 발생했습니다."}),e.jsxs(d,{variant:"ghost",size:"sm",onClick:te,children:[e.jsx(O,{className:"h-3.5 w-3.5 mr-1"}),"다시 시도"]})]})]}),!w&&r?e.jsxs("div",{className:"rounded-lg border p-4 space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("p",{className:"text-sm font-medium",children:r.plan.name}),e.jsx("span",{className:"rounded-full bg-primary/10 px-2 py-0.5 text-xs font-medium text-primary",children:"구독 중"})]}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:[r.plan.price.toLocaleStr
1ing(),"원 / 월 · 매월 자동결제"]})]}),e.jsx(d,{variant:"outline",size:"sm",onClick:()=>i(!0),children:"구독 해제"})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["다음 결제일: ",new Date(r.expiresAt).toLocaleDateString("ko-KR")]})]}):null,!w&&l?e.jsxs("div",{className:"rounded-lg border p-4 space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("p",{className:"text-sm font-medium",children:l.plan.name}),e.jsx("span",{className:"rounded-full bg-blue-100 px-2 py-0.5 text-xs font-medium text-blue-600",children:"이용 중"})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["만료: ",new Date(l.expiresAt).toLocaleString("ko-KR")," ","(",us(l.expiresAt),")"]})]}):null,!w&&!r&&!l&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"이용 중인 상품이 없습니다."}),e.jsx(d,{variant:"outline",size:"sm",onClick:()=>t(le.MEMBERSHIP),children:"상품 알아보기"})]})]})]}),e.jsx(cs,{}),e.jsxs("section",{className:"border-b pb-10 mb-10",children:[e.jsx("h2",{className:"text-base font-bold mb-5",children:"쿠폰"}),e.jsxs("div",{className:"space-y-4",children:[e.jsx(ss,{onRegistered:U}),pe?e.jsxs(A,{variant:"destructive",children:[e.jsx(E,{className:"h-4 w-4"}),e.jsxs(R,{className:"flex items-center justify-between",children:[e.jsx("span",{children:"쿠폰 정보를 불러오는 중 오류가 발생했습니다."}),e.jsxs(d,{variant:"ghost",size:"sm",onClick:U,children:[e.jsx(O,{className:"h-3.5 w-3.5 mr-1"}),"다시 시도"]})]})]}):e.jsx(rs,{coupons:me,usableCount:ue})]})]}),e.jsx("section",{className:"border-b pb-10 mb-10",children:e.jsxs(ze,{children:[e.jsxs(Ke,{className:"flex w-full items-center justify-between cursor-pointer group",children:[e.jsx("h2",{className:"text-base font-bold",children:"동의 관리"}),e.jsx(es,{className:"h-4 w-4 text-muted-foreground transition-transform group-data-[state=open]:rotate-180"})]}),e.jsx(Pe,{className:"mt-5",children:fe?e.jsxs(A,{variant:"destructive",children:[e.jsx(E,{className:"h-4 w-4"}),e.jsxs(R,{className:"flex items-center justify-between",children:[e.jsx("span",{children:"동의 정보를 불러오는 중 오류가 발생했습니다."}),e.jsxs(d,{variant:"ghost",size:"sm",onClick:ae,children:[e.jsx(O,{className:"h-3.5 w-3.5 mr-1"}),"다시 시도"]})]})]}):e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"마케팅 활용 동의"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"맞춤형 콘텐츠 추천 및 서비스 개선에 활용됩니다."})]}),e.jsx(ce,{checked:Y,onCheckedChange:s=>ne("marketingConsent",s),disabled:S})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"광고성 정보 수신 동의"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"이벤트, 프로모션 등의 알림을 이메일/SMS로 받습니다."})]}),e.jsx(ce,{checked:J,onCheckedChange:s=>ne("adConsent",s),disabled:S})]})]})})]})}),e.jsx("div",{className:"flex justify-end",children:e.jsx(d,{variant:"link",size:"sm",className:"text-xs text-destructive opacity-60",onClick:()=>X(!0),children:"회원탈퇴"})})]}),e.jsx(T,{modal:!0,open:je,onOpenChange:s=>{s||(k(!1),D(null))},children:e.jsxs(B,{children:[e.jsxs(C,{children:[e.jsx(v,{children:"동의 해제"}),e.jsx(I,{children:P==="marketingConsent"?"마케팅 활용 동의를 해제하시겠습니까? 맞춤형 콘텐츠 추천을 받을 수 없게 됩니다.":"광고성 정보 수신 동의를 해제하시겠습니까? 이벤트 및 프로모션 알림을 받을 수 없게 됩니다."})]}),e.jsxs(y,{children:[e.jsx(d,{variant:"outline",onClick:()=>{k(!1),D(null)},children:"취소"}),e.jsx(d,{variant:"destructive",onClick:ve,disabled:S,children:S?"처리 중...":"해제"})]})]})}),e.jsx(is,{open:g,loading:N,onOpenChange:i,onConfirm:Ce}),e.jsx(T,{modal:!0,open:ge,onOpenChange:s=>{s||(X(!1),F(""),M(""))},children:e.jsxs(B,{children:[e.jsxs(C,{children:[e.jsx(v,{children:"회원탈퇴"}),e.jsx(I,{children:"탈퇴 시 모든 데이터가 삭제되며 복구할 수 없습니다. 활성 구독이 있는 경우 자동으로 해지됩니다."})]}),e.jsxs("div",{className:"space-y-4 py-2",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(oe,{htmlFor:"withdraw-reason",children:"탈퇴 사유"}),e.jsxs(Xe,{value:b,onValueChange:s=>F(s),children:[e.jsx(Fe,{id:"withdraw-reason",children:e.jsx(Me,{placeholder:"탈퇴 사유를 선택해주세요"})}),e.jsx($e,{children:Object.entries(ms).map(([s,f])=>e.jsx(_e,{value:s,children:f},s))})]})]}),b==="other"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(oe,{htmlFor:"withdraw-detail",children:"상세 사유 (선택)"}),e.jsx(Ie,{id:"withdraw-detail",placeholder:"탈퇴 사유를 입력해주세요",value:ee,onChange:s=>M(s.target.value),rows:3})]})]}),e.jsxs(y,{children:[e.jsx(d,{variant:"outline",onClick:()=>{X(!1),F(""),M("")},disabled:$,children:"취소"}),e.jsx(d,{variant:"destructive",onClick:ye,disabled:!b||$,children:$?"처리 중...":"탈퇴하기"})]})]})})]})}export{Xs as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.