1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6803],{8180:(e,t,s)=>{s.d(t,{dE:()=>J,L4:()=>B,tp:()=>$,yO:()=>Z,Pl:()=>b,nh:()=>E,nH:()=>I});var a=s(85047),r=s(31615),i=s(26052),l=s.n(i),n=s(21410),c=s(866),d=s(96968),o=s(62557),u=s(6386),m=s(82520),h=s(11787),x=s(41178),p=s(73521),f=s(46377),j=s(4153),v=s(83298),g=s(34961);let y=j.Bm.presetAmounts;function b(){let{user:e}=(0,p.A)(),t=(0,f.useRouter)(),{toast:s}=(0,x.dj)(),{loading:i,createSponsorship:g}=(0,v.i)(),[y,b]=(0,r.useState)("onetime"),[N,k]=(0,r.useState)(600),[C,A]=(0,r.useState)(""),[S,E]=(0,r.useState)(!1),[I,R]=(0,r.useState)(!1),[T,$]=(0,r.useState)(""),[P,D]=(0,r.useState)(""),F=j.Bm.paymentDisabled,_=j.Bm.minCustomAmount,V=()=>{if(S){let e=parseInt(C,10);return Number.isFinite(e)?e:0}return N},B=async()=>{if(F)return;if(!e)return void t.push(`/auth?redirect=${encodeURIComponent("/sponsor")}`);let a=V();if(a<_)return void s({variant:"destructive",title:"éé¡ä¸è¶³",description:`æä½è´å©éé¡çº NT$${_}`});if(I&&!T.trim())return void s({variant:"destructive",title:"è«å¡«å¯«é¡¯ç¤ºå稱",description:"é¸æé¡¯ç¤ºæ¼è´å©çæé填寫å稱"});try{await g({type:y,amount:a,displayOnWall:I,displayName:T.trim()||void 0,message:P.trim()||void 0})}catch(e){s({variant:"destructive",title:"è´å©å¤±æ",description:e instanceof Error?e.message:"è«ç¨å¾å試"})}};return(0,a.jsxs)(m.Zp,{id:"sponsor-panel",className:"border-primary/20 shadow-lg",children:[(0,a.jsxs)(m.aR,{children:[(0,a.jsx)(m.ZB,{children:"æ¯ææå"}),(0,a.jsx)(m.BT,{children:"鏿䏿¬¡æ§ææ¯æè´å©ï¼å¹«å©å¹³å°æçºéçãææå人åè½å·²å
è²»éæ¾ï¼è´å©ç´çºæ¯æçéã"})]}),(0,a.jsxs)(m.Wu,{className:"space-y-6",children:[(0,a.jsxs)(u.tU,{value:y,onValueChange:e=>b(e),children:[(0,a.jsxs)(u.j7,{className:"grid w-full grid-cols-2",children:[(0,a.jsx)(u.Xi,{value:"onetime",children:"䏿¬¡æ§"}),(0,a.jsx)(u.Xi,{value:"monthly",children:"æ¯æ"})]}),(0,a.jsx)(u.av,{value:"onetime",className:"mt-4 space-y-4",children:(0,a.jsx)(w,{selectedAmount:N,setSelectedAmount:k,customAmount:C,setCustomAmount:A,useCustom:S,setUseCustom:E,minAmount:_})}),(0,a.jsx)(u.av,{value:"monthly",className:"mt-4 space-y-4",children:(0,a.jsx)(w,{selectedAmount:N,setSelectedAmount:k,customAmount:C,setCustomAmount:A,useCustom:S,setUseCustom:E,minAmount:_})})]}),(0,a.jsxs)("div",{className:"space-y-3 rounded-lg border p-4 bg-muted/30",children:[(0,a.jsxs)("div",{className:"flex items-start gap-3",children:[(0,a.jsx)(o.S,{id:"displayOnWall",checked:I,onCheckedChange:e=>R(!0===e)}),(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)(d.J,{htmlFor:"displayOnWall",className:"cursor-pointer",children:"é¡æé¡¯ç¤ºæ¼è´å©çï¼å¯é¸ï¼"}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"å¾é¸å¾å¯å¡«å¯«å
¬é顯示å稱èçè¨"})]})]}),I&&(0,a.jsxs)("div",{className:"space-y-3 pt-2",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)(d.J,{htmlFor:"displayName",children:"顯示å稱"}),(0,a.jsx)(c.p,{id:"displayName",value:T,onChange:e=>$(e.target.value),placeholder:"æ¨å¸æå
¬é顯示çå稱",maxLength:50})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(d.J,{htmlFor:"message",children:"çè¨ï¼é¸å¡«ï¼"}),(0,a.jsx)(c.p,{id:"message",value:P,onChange:e=>D(e.target.value),placeholder:"給åéçä¸å¥è©±",maxLength:200})]})]})]}),F?(0,a.jsxs)("div",{className:"rounded-lg border border-dashed border-yellow-500/50 bg-yellow-500/5 p-4 text-center",children:[(0,a.jsx)("p",{className:"font-medium text-yellow-700 dark:text-yellow-400",children:"è´å©åè½å³å°éæ¾"}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground mt-1",children:"æåæ£å¨æºåéæµæ´åï¼æ¬è«æå¾
"})]}):(0,a.jsxs)(n.$,{className:"w-full",size:"lg",onClick:B,disabled:i,children:[i&&(0,a.jsx)(h.A,{className:"mr-2 h-4 w-4 animate-spin"}),e?`åå¾ä»æ¬¾ NT$${V().toLocaleString()}`:"ç»å
¥å¾è´å©"]}),!e&&!F&&(0,a.jsxs)("p",{className:"text-center text-sm text-muted-foreground",children:["å°æªç»å
¥ï¼"," ",(0,a.jsx)(l(),{href:`/auth?redirect=${encodeURIComponent("/sponsor")}`,className:"text-primary underline",children:"ç«å³ç»å
¥"})]})]})]})}function w({selectedAmount:e,setSelectedAmount:t,customAmount:s,setCustomAmount:r,useCustom:i,setUseCustom:l,minAmount:u}){return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2",children:y.map(s=>(0,a.jsxs)(n.$,{type:"button",variant:i||e!==s?"outline":"default",className:(0,g.cn)("h-12 text-base font-semibold"),onClick:()=>{l(!1),t(s)},children:["NT$",s]},s))}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(o.S,{id:"useCustom",checked:i,onCheckedChange:e=>l(!0===e)}),(0,a.jsxs)(d.J,{htmlFor:"useCustom",className:"shrink-0 cursor-pointer",children:["èªè¨éé¡ï¼æä½ NT$",u,"ï¼"]}),(0,a.jsx)(c.p,{type:"number",min:u,step:1,value:s,onChange:e=>{l(!0),r(e.target.value)},placeholder:String(u),className:"max-w-[140px]"})]})]})}var N=s(35617),k=s(9),C=s(51577),A=s(26364),S=s(18654);function E(){let{stats:e,loading:t}=function(){let[e,t]=(0,r.useState)(null),[s,a]=(0,r.useState)(!0);return(0,r.useEffect)(()=>{let e=!1;return(async()=>{try{let s=await fetch("/api/sponsor/stats");if(!s.ok)throw Error("fetch failed");let a=await s.json();e||t(a)}catch(s){(0,S.vV)("useSponsorStats failed:",s),e||t({totalAmount:0,sponsorCount:0,activeMonthlyCount:0})}finally{e||a(!1)}})(),()=>{e=!0}},[]),{stats:e,loading:s}}();if(t)return(0,a.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4 animate-pulse",children:[1,2,3].map(e=>(0,a.jsx)("div",{className:"h-24 rounded-xl bg-muted"},e))});let s=[{icon:k.A,label:"ç´¯è¨è´å©",value:(0,N.C)(e?.totalAmount??0,{showSymbol:!0})},{icon:C.A,label:"è´å©è
",value:String(e?.sponsorCount??0)},{icon:A.A,label:"æ¯æå®æ",value:String(e?.activeMonthlyCount??0)}];return(0,a.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:s.map(({icon:e,label:t,value:s})=>(0,a.jsxs)("div",{className:"rounded-xl border bg-card p-6 text-center shadow-sm",children:[(0,a.jsx)(e,{className:"mx-auto h-8 w-8 text-primary mb-2"}),(0,a.jsx)("p",{className:"text-2xl font-bold",children:s}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:t})]},t))})}function I(){let e=Array.from({length:8},(e,t)=>({id:`placeholder-${t}`,name:"è´å©è
"}));return(0,a.jsxs)("section",{className:"space-y-4",children:[(0,a.jsx)("h2",{className:"text-2xl font-bold text-center",children:"è´å©ç"}),(0,a.jsx)("p",{className:"text-center text-muted-foreground text-sm",children:"æè¬æ¯ä¸ä½æ¯ææåç夥伴ï¼å®æ´è´å©çå³å°ä¸ç·ï¼"}),(0,a.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-3 max-h-[320px] overflow-y-auto",children:e.map(e=>(0,a.jsxs)("div",{className:"rounded-lg border border-dashed bg-muted/30 p-4 text-center text-sm text-muted-foreground",children:[(0,a.jsx)("div",{className:"w-10 h-10 rounded-full bg-primary/10 mx-auto mb-2"}),e.name]},e.id))})]})}var R=s(6524);let T=[{q:"è´å©éé¡ç¨å¨åªè£¡ï¼",a:"æåå
¬éæ¯æçéææ¬è¡¨ï¼GCPãAI å·¥å
·ãååãéæµçï¼ï¼è´å©æ¶å
¥ç¨æ¼æ¯æéäºæ¯åºï¼ä½¿å¹³å°è½æçºå
è²»æä¾å人ç財åè½ãè«è¦æ¬é ãçéææ¬éæè¡¨ãã"},{q:"è´å©åè¨é±æä»éº¼ä¸åï¼",a:"ææå人ç財åè½å·²å
è²»éæ¾ãè´å©æ¯ç´ç²¹æ¯æå¹³å°çéï¼ä¸æè§£éé¡å¤åè½ææ¬éã"},{q:"å¯ä»¥åæ¶æ¯æè´å©åï¼",a:"å¯ä»¥ãç»å
¥å¾åå¾ãè¨å® â è´å©ç®¡çãï¼å³å¯åæ¶å®æè´å©ã"},{q:"æä½è´å©é顿¯å¤å°ï¼",a:"䏿¬¡æ§ææ¯æè´å©æä½ NT$200ï¼ä¹å¯é¸æ 200 / 600 / 800 / 1200 çé è¨æ¹æ¡ã"},{q:"è´å©çæ¯ä»éº¼ï¼",a:"è¥æ¨å¾é¸ãé¡æé¡¯ç¤ºæ¼è´å©çãï¼æåæå¨è´å©é å
¬éæ¨ç顯示å稱èçè¨ï¼å¯é¸ï¼ã"},{q:"仿¬¾å®å
¨åï¼",a:"仿¬¾ç±ç¶ ç ECPay èçï¼æ¬å¹³å°ä¸å²åæ¨çä¿¡ç¨å¡è³è¨ã"}];function $(){return(0,a.jsxs)("section",{className:"space-y-4",children:[(0,a.jsx)("h2",{className:"text-2xl font-bold text-center",children:"常è¦åé¡"}),(0,a.jsx)(R.nD,{type:"single",collapsible:!0,className:"w-full max-w-2xl mx-auto",children:T.map((e,t)=>(0,a.jsxs)(R.As,{value:`faq-${t}`,children:[(0,a.jsx)(R.$m,{children:e.q}),(0,a.jsx)(R.ub,{className:"text-muted-foreground",children:e.a})]},e.q))})]})}
1var P=s(2962),D=s(61414),F=s(54306),_=s(9234);function V(e){return null===e?"å¾
å¡«":(0,N.C)(e,{showSymbol:!0})}function B(){var e;let{breakdown:t,loading:s}=function(){let[e,t]=(0,r.useState)(null),[s,a]=(0,r.useState)(!0);return(0,r.useEffect)(()=>{let e=!1;return(async()=>{try{let s=await fetch("/api/sponsor/cost-breakdown");if(!s.ok)throw Error("fetch failed");let a=await s.json();e||t(a)}catch(s){(0,S.vV)("useSponsorCostBreakdown failed:",s),e||t((0,_.sN)())}finally{e||a(!1)}})(),()=>{e=!0}},[]),{breakdown:e,loading:s}}();if(s||!t)return(0,a.jsx)("section",{id:"cost-breakdown",className:"scroll-mt-24 flex justify-center py-12",children:(0,a.jsx)(F.default,{})});let i=(e=t.items).some(e=>null===e.monthlyAmountTwd)?null:e.reduce((e,t)=>e+(t.monthlyAmountTwd??0),0);return(0,a.jsx)("section",{id:"cost-breakdown",className:"scroll-mt-24 space-y-4",children:(0,a.jsxs)(m.Zp,{className:"border-primary/15 shadow-sm",children:[(0,a.jsx)(m.aR,{className:"text-center sm:text-left",children:(0,a.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center gap-3",children:[(0,a.jsx)("div",{className:"mx-auto sm:mx-0 flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10",children:(0,a.jsx)(D.A,{className:"h-5 w-5 text-primary","aria-hidden":!0})}),(0,a.jsxs)("div",{children:[(0,a.jsx)(m.ZB,{className:"text-2xl",children:"çéææ¬éæè¡¨"}),(0,a.jsxs)(m.BT,{className:"mt-1 max-w-2xl",children:["è´å©æ¶å
¥ç¨æ¼æ¯æå¹³å°çéã以ä¸çºæ¯æææ¬æ¦ä¼°ï¼å¹´ç¹³é
ç®å·²æç®æåï¼ï¼æåæ¿è«¾",t.updateCadence,"並å
¬é調æ´ã"]})]})]})}),(0,a.jsxs)(m.Wu,{children:[(0,a.jsx)("div",{className:"rounded-lg border overflow-hidden",children:(0,a.jsxs)(P.XI,{children:[(0,a.jsx)(P.A0,{children:(0,a.jsxs)(P.Hj,{className:"bg-muted/40 hover:bg-muted/40",children:[(0,a.jsx)(P.nd,{className:"w-[120px] font-semibold",children:"é
ç®"}),(0,a.jsx)(P.nd,{className:"font-semibold",children:"說æ"}),(0,a.jsx)(P.nd,{className:"w-[140px] text-right font-semibold",children:"æåï¼NT$ï¼"})]})}),(0,a.jsx)(P.BF,{children:t.items.map(e=>(0,a.jsxs)(P.Hj,{children:[(0,a.jsx)(P.nA,{className:"font-medium",children:e.label}),(0,a.jsx)(P.nA,{className:"text-muted-foreground",children:e.description}),(0,a.jsxs)(P.nA,{className:"text-right tabular-nums",children:[V(e.monthlyAmountTwd),"yearly"===e.billingPeriod&&null!==e.monthlyAmountTwd&&(0,a.jsxs)("p",{className:"text-xs text-muted-foreground font-normal",children:["å¹´ç¹³ ",V(e.amountTwd)," \xf7 12"]})]})]},e.id))}),(0,a.jsx)(P.Gg,{children:(0,a.jsxs)(P.Hj,{className:"bg-muted/30 hover:bg-muted/30",children:[(0,a.jsx)(P.nA,{colSpan:2,className:"font-semibold",children:"æåè¨"}),(0,a.jsx)(P.nA,{className:"text-right font-semibold tabular-nums",children:V(i)})]})})]})}),(0,a.jsxs)("p",{className:"mt-4 text-xs text-muted-foreground text-center sm:text-left",children:["æå¾æ´æ°ï¼",t.lastUpdated.replace(/-/g,"/"),null===i?" \xb7 åé
éé¡ç¢ºèªä¸":""]})]})]})})}var L=s(38187),z=s(32898),O=s(24571),U=s(76458),M=s(27703);let W={pending:"å¾
仿¬¾",active:"é²è¡ä¸",completed:"已宿",cancelled:"已忶",failed:"失æ"};function Z(){let{user:e}=(0,p.A)(),{toast:t}=(0,x.dj)(),{sponsorships:s,loading:i,refresh:c}=function(){let{user:e}=(0,p.A)(),[t,s]=(0,r.useState)([]),[a,i]=(0,r.useState)(!0),l=(0,r.useCallback)(async()=>{if(!e||!U.db){s([]),i(!1);return}i(!0);try{let t=(0,O.P)((0,O.rJ)(U.db,M.I.sponsorships),(0,O._M)("userId","==",e.uid)),a=(await (0,O.GG)(t)).docs.map(e=>({id:e.id,...e.data()})).sort((e,t)=>{let s=e.createdAt?.seconds??0;return(t.createdAt?.seconds??0)-s});s(a)}catch(e){(0,S.vV)("useUserSponsorships failed:",e),s([])}finally{i(!1)}},[e]);return(0,r.useEffect)(()=>
1{l()},[l]),{sponsorships:t,loading:a,refresh:l}}(),[d,o]=(0,r.useState)(null),u=async s=>{if(e){o(s);try{let a=await e.getIdToken(),r=await fetch("/api/sponsorship/cancel",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${a}`},body:JSON.stringify({sponsorshipId:s})}),i=await r.json().catch(()=>({}));if(!r.ok)throw Error(i.error||"忶失æ");t({title:"已忶è´å©"}),await c()}catch(e){t({variant:"destructive",title:"忶失æ",description:e instanceof Error?e.message:"è«ç¨å¾å試"})}finally{o(null)}}};return i?(0,a.jsx)("div",{className:"flex justify-center py-12",children:(0,a.jsx)(h.A,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("h2",{className:"text-xl font-semibold flex items-center gap-2",children:[(0,a.jsx)(k.A,{className:"h-5 w-5 text-red-500"}),"è´å©ç®¡ç"]}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground mt-1",children:"æ¥çæ¨çè´å©ç´éï¼æåå¾è´å©é æ¯ææå"})]}),(0,a.jsx)(n.$,{asChild:!0,variant:"outline",children:(0,a.jsx)(l(),{href:"/sponsor",children:"åå¾è´å©"})})]}),0===s.length?(0,a.jsx)(m.Zp,{children:(0,a.jsx)(m.Wu,{className:"py-10 text-center text-muted-foreground",children:"å°ç¡è´å©ç´é"})}):(0,a.jsx)("div",{className:"space-y-3",children:s.map(e=>(0,a.jsxs)(m.Zp,{children:[(0,a.jsxs)(m.aR,{className:"pb-2",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,a.jsxs)(m.ZB,{className:"text-base",children:["monthly"===e.type?"æ¯æè´å©":"䏿¬¡æ§è´å©"," ",(0,N.C)(e.amount,{showSymbol:!0})]}),(0,a.jsx)(L.E,{variant:"active"===e.status?"default":"secondary",children:W[e.status]??e.status})]}),(0,a.jsx)(m.BT,{children:e.merchantTradeNo?`è¨å® ${e.merchantTradeNo.slice(0,12)}â¦`:""})]}),(0,a.jsxs)(m.Wu,{className:"space-y-3",children:["monthly"===e.type&&"active"===e.status&&e.renewalFailure&&(0,a.jsxs)("p",{className:"text-sm text-destructive",children:["æè¿ä¸ææ£æ¬¾æªæåï¼é£çº ",e.renewalFailure.consecutiveFailures," 次ï¼ãè¥ä¿¡ç¨å¡å·²æ´ææéæï¼è«åæ¶å¾éæ°è¨å®æ¯æè´å©ã"]}),"monthly"===e.type&&"active"===e.status&&(0,a.jsxs)(n.$,{variant:"outline",size:"sm",disabled:d===e.id,onClick:()=>u(e.id),children:[d===e.id?(0,a.jsx)(h.A,{className:"h-4 w-4 animate-spin mr-1"}):(0,a.jsx)(z.A,{className:"h-4 w-4 mr-1"}),"忶宿è´å©"]})]})]},e.id))})]})}var H=s(25646);function J(){let{hasBetaAccess:e,loading:t}=function(){let{user:e}=(0,p.A)(),[t,s]=(0,r.useState)(!1),[a,i]=(0,r.useState)(!0);return(0,r.useEffect)(()=>{if(j.Wm.globalEnabled){s(!0),i(!1);return}if(!e||!U.db){s(!1),i(!1);return}let t=!1;return(async()=>{try{let a=(await (0,O.getDoc)((0,O.doc)(U.db,"users",e.uid))).data();t||s(a?.betaAccess===!0)}catch(e){(0,S.vV)("useBetaAccess failed:",e),t||s(!1)}finally{t||i(!1)}})(),()=>{t=!0}},[e]),{hasBetaAccess:t,loading:a}}();if(t)return null;let s=[j.Wm.aiAssistantV2,j.Wm.advancedReports].filter(e=>e.enabled);return(0,a.jsxs)(m.Zp,{className:"border-dashed",children:[(0,a.jsxs)(m.aR,{children:[(0,a.jsxs)(m.ZB,{className:"flex items-center gap-2 text-lg",children:[(0,a.jsx)(H.A,{className:"h-5 w-5"}),"Beta åè½",e&&(0,a.jsx)(L.E,{variant:"secondary",children:"å·²åç¨"})]}),(0,a.jsx)(m.BT,{children:"æ¶å
é«é©å¯¦é©æ§åè½ãBeta åè½å¯è½ä¸ç©©å®ï¼é¨æå¯è½èª¿æ´æç§»é¤ã"})]}),(0,a.jsx)(m.Wu,{children:e?(0,a.jsxs)("ul",{className:"space-y-2 text-sm text-muted-foreground",children:[s.map(e=>(0,a.jsxs)("li",{children:["⢠",e.label]},e.label)),0===s.length&&(0,a.jsx)("p",{children:"ç®åç¡éæ¾ä¸ç Beta åè½"})]}):(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"Beta åè½å°æªå°æ¨ç帳èéæ¾ãè´å©è
å¯åªå
åå¾ Beta è³æ ¼ï¼å³å°æ¨åºï¼ã"})})]})}},17956:(e,t,s)=>{s.d(t,{R:()=>r});var a=s(18654);class r{supportsRedirect(){return!1}createSuccessResult(e,t){return{success:!0,user:e,credential:t}}createErrorResult(e,t,s){return{success:!1,error:{code:e,message:t,originalError:s}}}handleAuthError(e){let t=e?.code||"auth/unknown-error",s=e?.message||"èªè失æï¼è«ç¨å¾å試",r=e&&"object"==typeof e&&Object.keys(e).length>0?{code:t,message:s,error:e}:{code:t,message:s};(0,a.vV)(`[${this.name}] èªèé¯èª¤:`,r);let i={"auth/user-not-found":"æ¾ä¸å°æ¤ç¨æ¶ï¼è«å
註å","auth/wrong-password":"å¯ç¢¼ä¸æ£ç¢º","auth/invalid-email":"é»åéµä»¶æ ¼å¼ä¸æ£ç¢º","auth/user-disabled":"æ¤å¸³æ¶å·²è¢«åç¨","auth/email-already-in-use":"æ¤é»åéµä»¶å·²è¢«ä½¿ç¨","auth/weak-password":"å¯ç¢¼å¼·åº¦ä¸è¶³","auth/operation-not-allowed":"æ¤ç»å
1
¥æ¹å¼æªåç¨","auth/too-many-requests":"å試éå¤ï¼è«ç¨å¾å試","auth/network-request-failed":"網路é£ç·å¤±æï¼è«æª¢æ¥ç¶²è·¯","auth/invalid-credential":"èªèè³æç¡æ","auth/popup-closed-by-user":"ç»å
¥è¦çªè¢«éé","auth/popup-blocked":"å½åºè¦çªè¢«ç覽å¨é»æ","auth/cancelled-popup-request":"ç»å
¥è«æ±å·²åæ¶","auth/account-exists-with-different-credential":"æ¤å¸³æ¶å·²ä½¿ç¨å
¶ä»ç»å
¥æ¹å¼è¨»å","auth/email-required":"éè¦ Email æ¬éæè½å®æç»å
¥","auth/config-error":"èªèé
ç½®é¯èª¤ï¼è«è¯ç¹«ç®¡çå¡","auth/configuration-not-found":"èªèé
ç½®æªæ¾å°ï¼è«ç¢ºèª Firebase Console è¨å®","auth/no-redirect-result":"æ²æéå®åçµæï¼è«éæ°å試ç»å
¥","auth/wrong-provider":"èªèæä¾è
ä¸å¹é
","auth/not-initialized":"Firebase Auth å°æªåå§å","auth/auto-login-failed":"èªåç»å
¥å¤±æï¼è«éæ°å試ç»å
¥","auth/invalid-request":"è«æ±åæ¸é¯èª¤","auth/access-denied":"ç¨æ¶åæ¶äºææ¬","auth/unsupported-response-type":"䏿¯æ´çåæé¡å","auth/invalid-scope":"ç¡æç scope è¨å®","auth/server-error":"伺æå¨é¯èª¤ï¼è«ç¨å¾å試","auth/login-required":"éè¦ç»å
¥","auth/interaction-required":"éè¦ç¨æ¶äºå","auth/line-error":"LINE Login é¯èª¤","auth/network-error":"網路é£ç·é¯èª¤"}[t]||s;return this.createErrorResult(t,i,e)}validateEmail(e){return!!e&&"string"==typeof e&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.trim())}normalizeEmail(e){return e.trim().toLowerCase()}validatePassword(e){return!e||e.length<8?{valid:!1,message:"å¯ç¢¼éè³å° 8 碼"}:/[A-Z]/.test(e)?/[a-z]/.test(e)?/[0-9]/.test(e)?/[^A-Za-z0-9]/.test(e)?{valid:!0}:{valid:!1,message:"å¯ç¢¼éå
å«è³å°ä¸åç¹æ®åå
"}:{valid:!1,message:"å¯ç¢¼éå
å«è³å°ä¸åæ¸å"}:{valid:!1,message:"å¯ç¢¼éå
å«è³å°ä¸åå°å¯«åæ¯"}:{valid:!1,message:"å¯ç¢¼éå
å«è³å°ä¸å大坫忝"}}}},42457:(e,t,s)=>{s.d(t,{By:()=>i,iq:()=>n,wb:()=>r,x2:()=>l});let a="pendingReferralCode";function r(e){return e?e.trim().split(/\s+/)[0]??"":""}function i(e){let t=r(e);if(!t)return"";try{sessionStorage.setItem(a,t)}catch{}return t}function l(){try{return r(sessionStorage.getItem(a))}catch{return""}}function n(){let e=l();if(!e)return e;try{sessionStorage.removeItem(a)}catch{}return e}},57663:(e,t,s)=>{s.d(t,{E:()=>l});var a=s(85047),r=s(31615),i=s(34961);let l=r.forwardRef(({className:e,...t},s)=>(0,a.jsx)("div",{ref:s,className:(0,i.cn)("animate-pulse rounded-md bg-muted",e),...t}));l.displayName="Skeleton"},57670:(e,t,s)=>{s.d(t,{A:()=>u});var a=s(85047),r=s(31615),i=s(83139),l=s(68341),n=s(76842),c=s(82520),d=s(21410),o=s(41178);function u(){let{toast:e}=(0,o.dj)(),[t,s]=(0,r.useState)(!1),u=(0,r.useMemo)(()=>`${window.location.origin}/api/mcp`,[]),m=async()=>{try{await navigator.clipboard.writeText(u),s(!0),e({title:"å·²è¤è£½ MCP URL"}),setTimeout(()=>s(!1),2e3)}catch{e({title:"è¤è£½å¤±æ",variant:"destructive"})}};return(0,a.jsxs)(c.Zp,{children:[(0,a.jsxs)(c.aR,{children:[(0,a.jsxs)(c.ZB,{className:"flex items-center gap-2",children:[(0,a.jsx)(i.A,{className:"h-5 w-5"}),"飿¥ MCPï¼AI å©çï¼"]}),(0,a.jsx)(c.BT,{children:"ç¡é卿¬ç«è¨å®é 建ç«é£ç·ãåªè¦å¨æ¯æ´ OAuth ç AI 客æ¶ç«¯æ°å¢é 端 MCPï¼ä¸¦å¨ç覽å¨å®æç»å
¥èææ¬å³å¯ã"})]}),(0,a.jsxs)(c.Wu,{className:"space-y-4 text-sm",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 rounded-md border bg-muted/30 p-3",children:[(0,a.jsx)("code",{className:"break-all text-xs",children:u}),(0,a.jsxs)(d.$,{type:"button",size:"sm",variant:"outline",onClick:m,children:[t?(0,a.jsx)(l.A,{className:"mr-1 h-3 w-3"}):(0,a.jsx)(n.A,{className:"mr-1 h-3 w-3"}),"è¤è£½ URL"]})]}),(0,a.jsxs)("ol",{className:"list-decimal space-y-2 pl-5 text-muted-foreground",children:[(0,a.jsx)("li",{children:"å¨ AI 客æ¶ç«¯ï¼ä¾å¦ Claude èªè¨ connectorï¼æ°å¢ MCPï¼URL è²¼ä¸ä¸æ¹ç¶²åï¼è¥è¦æ± OAuthï¼Client ID ç±æåæ¹æä¾ï¼éæ¨ç帳è UIDï¼ã"}),(0,a.jsx)("li",{children:"å²åå¾ç±å®¢æ¶ç«¯ç¼èµ·é£ç·ï¼çè¦½å¨æéåé«ä¸ç´ç財ç»å
1
¥èææ¬é ã"}),(0,a.jsx)("li",{children:"ç»å
¥ä¸¦æãå
許並繼çºãå¾ï¼æèªååå° AI 客æ¶ç«¯ï¼å³å¯ä½¿ç¨è©¦ç®è財åæè¦å·¥å
·ã"})]}),(0,a.jsxs)("p",{className:"text-xs text-muted-foreground",children:["é£ç·å稱建è°ï¼",(0,a.jsx)("span",{className:"font-mono",children:"xynergy-finance-tools"}),"ã鿿䏿·æï¼å¨ AI 客æ¶ç«¯éæ°é£ç·ä¸¦åæ¬¡å®æçè¦½å¨ææ¬å³å¯ã"]})]})]})}},70861:(e,t,s)=>{s.d(t,{WV:()=>d,i9:()=>p,p:()=>o,sm:()=>h,uz:()=>x});var a=s(30274),r=s(76458),i=s(17956),l=s(18654),n=s(32407);let c="apple.com";function d(){return"true"===n.env.NEXT_PUBLIC_ENABLE_APPLE_SIGNIN}function o(e){return!!e?.providerData.some(e=>e.providerId===c)}function u(){let e=new a.OAuthProvider(c);return e.addScope("email"),e.addScope("name"),e.setCustomParameters({locale:"zh_TW"}),e}class m extends i.R{type="apple";name="Apple";supportsRedirect(){return!1}async authenticate(e){if(!r.auth)return this.createErrorResult("auth/not-initialized","Firebase Auth å°æªåå§å");try{let e=await (0,a.signInWithPopup)(r.auth,u());return(0,l.fH)("Apple ç»å
¥æå (Popup):",e.user.uid),this.createSuccessResult(e.user,e)}catch(e){if("auth/popup-closed-by-user"===e.code)return this.createErrorResult("auth/popup-closed-by-user","ç»å
¥è¦çªè¢«ééï¼è«é試");if("auth/popup-blocked"===e.code)return this.createErrorResult("auth/popup-blocked","å½åºè¦çªè¢«ç覽å¨é»æï¼è«å
許å½åºè¦çªå¾é試");if("auth/network-request-failed"===e.code)return this.createErrorResult("auth/network-request-failed","網路é£ç·å¤±æï¼è«æª¢æ¥ç¶²è·¯é£ç·å¾é試");if("auth/account-exists-with-different-credential"===e.code)return this.createErrorResult("auth/account-exists-with-different-credential","æ¤ Email 已使ç¨å
¶ä»ç»å
¥æ¹å¼è¨»åï¼è«ç¨åç»å
¥æ¹å¼ç»å
¥å¾ï¼å°ãè¨å® ⺠帳èé£çµãé£çµ Apple");return this.handleAuthError(e)}}async handleRedirectResult(){return{success:!1,error:{code:"auth/no-redirect-result",message:"Apple ç»å
¥ä¸ä½¿ç¨éå®å"}}}}let h=new m;async function x(){if(!r.auth?.currentUser)throw Error("使ç¨è
æªç»å
¥");try{return await (0,a.linkWithPopup)(r.auth.currentUser,u())}catch(e){throw(0,l.vV)("é£çµ Apple 帳æ¶å¤±æ:",e),e}}async function p(e){if(!r.auth)throw Error("Firebase Auth å°æªåå§å");let t=await (0,a.reauthenticateWithPopup)(e,u()),s=a.OAuthProvider.credentialFromResult(t)?.accessToken;if(!s)return(0,l.vV)("Apple éæ°é©èæ²æåå³ access token"),!1;try{return await (0,a.revokeAccessToken)(r.auth,s),!0}catch(e){return(0,l.vV)("æ¤é· Apple ææ¬å¤±æ:",e),!1}}},83881:(e,t,s)=>{s.d(t,{sj:()=>d});var a=s(30274),r=s(76458),i=s(17956),l=s(18654),n=s(48716);class c extends i.R{type="facebook";name="Facebook";facebookProvider;constructor(){super(),this.facebookProvider=new a.FacebookAuthProvider,this.facebookProvider.addScope("email"),this.facebookProvider.addScope("public_profile")}supportsRedirect(){return!0}async authenticate(e){if(!r.auth)return this.createErrorResult("auth/not-initialized","Firebase Auth å°æªåå§å");try{if(e?.redirect)return await this.signInWithRedirect(),{success:!0};let t=await (0,a.signInWithPopup)(r.auth,this.facebookProvider);return(0,l.fH)("Facebook ç»å
¥æå (Popup):",t.user.email),this.createSuccessResult(t.user,t)}catch(e){if("auth/popup-closed-by-user"===e.code)return this.createErrorResult("auth/popup-closed-by-user","ç»å
¥è¦çªè¢«ééï¼è«é試");if("auth/popup-blocked"===e.code)return this.createErrorResult("auth/popup-blocked","å½åºè¦çªè¢«ç覽å¨é»æï¼è«å
許å½åºè¦çªå¾é試");if("auth/network-request-failed"===e.code)return this.createErrorResult("auth/network-request-failed","網路é£ç·å¤±æï¼è«æª¢æ¥ç¶²è·¯é£ç·å¾é試");if("auth/account-exists-with-different-credential"===e.code)return this.createErrorResult("auth/account-exists-with-different-credential","æ¤å¸³æ¶å·²ä½¿ç¨å
¶ä»ç»å
¥æ¹å¼è¨»åï¼è«ä½¿ç¨åç»å
¥æ¹å¼æé£çµå¸³æ¶");return this.handleAuthError(e)}}async handleRedirectResult(){if(!r.auth)return this.createErrorResult("auth/not-initialized","Firebase Auth å°æªåå§å");try{let e=await (0,a.getRedirectResult)(r.auth);if(!e)return{success:!1,error:{code:"auth/no-redirect-result",message:"æ²æéå®åçµæ"}};if(!e.user?.providerData?.some(e=>"facebook.com"===e.providerId))return{success:!1,error:{code:"auth/wrong-provider",message:"䏿¯ Facebook ç»å
¥"}};return(0,l.fH)("Facebook ç»å
¥æå (Redirect):",e.user.email),this.createSuccessResult(e.user,e)}catch(e){return this.handleAuthError(e)}}async signInWithRedirect(){if(!r.auth)throw Error("Firebase Auth å°æªåå§å");try{(0,n.setOAuthRedirectState)("facebook"),await (0,a.signInWithRedirect)(r.auth,this.facebookProvider)}
1catch(e){throw(0,l.vV)("Facebook éå®åç»å
¥å¤±æ:",e),Error(`Facebook ç»å
¥å¤±æ: ${e.message}`)}}}let d=new c},96803:(e,t,s)=>{s.r(t),s.d(t,{default:()=>sY});var a=s(85047),r=s(31615),i=s(46377),l=s(6386),n=s(56928),c=s(73289),d=s(82520),o=s(866),u=s(96968),m=s(99185),h=s(21410),x=s(97040),p=s(41178),f=s(73521),j=s(78308),v=s(63972),g=s(24571),y=s(76458),b=s(94164);s(69740);var w=s(30274),N=s(99922),k=s(18654),C=s(89088),A=s(18534),S=s(62557),E=s(10892),I=s(15418);let R=I.k5(["not_useful","too_complex","privacy_concerns","found_alternative","too_expensive","poor_support","other"]),T=I.k5(["interface","workflow","settings","features"]),$=I.k5(["free","under_100","100_300","300_500","500_1000","over_1000"]),P=I.k5(["free","premium","advisor"]),D=I.Ik({priorityFeatures:I.Yj().optional(),complexParts:I.YO(T).optional(),dataHandlingConcerns:I.Yj().optional(),expectedPrice:$.optional(),otherReason:I.Yj().min(10,"å
¶ä»åå 說æè³å°éè¦ 10 åå").max(500,"å
¶ä»åå 說æä¸è½è¶
é 500 åå").optional()}),F=I.Ik({accounts:I.ai().int().min(0),transactions:I.ai().int().min(0),assets:I.ai().int().min(0),liabilities:I.ai().int().min(0),investments:I.ai().int().min(0),goals:I.ai().int().min(0),subscriptions:I.ai().int().min(0)}),_=I.Ik({accountAge:I.ai().int().min(0),subscriptionStatus:P,dataCounts:F,featureUsage:I.YO(I.Yj())}),V=I.Ik({userId:I.Yj().min(1,"ç¨æ¶ ID ä¸è½çºç©º"),reasons:I.YO(R).min(1,"è³å°éè¦é¸æä¸ååªé¤åå "),additionalFeedback:D,userStats:_}).refine(e=>!e.reasons.includes("other")||void 0!==e.additionalFeedback.otherReason&&e.additionalFeedback.otherReason.length>=10,{message:"鏿ãå
¶ä»ãåå æï¼å¿
é æä¾è³å° 10 ååç說æ",path:["additionalFeedback","otherReason"]}).refine(e=>(e.reasons.includes("not_useful"),!0)).refine(e=>(e.reasons.includes("too_complex"),!0)).refine(e=>(e.reasons.includes("privacy_concerns"),!0)).refine(e=>(e.reasons.includes("too_expensive"),!0));var B=s(27703);async function L(e){if(!y.db)throw Error("Firestore å°æªåå§å");try{let t=await (0,g.getDoc)((0,g.doc)(y.db,"users",e)),s=0;if(t.exists()){let e=t.data().createdAt;if(e){let t=e instanceof g.Timestamp?e.toDate():new Date(e),a=new Date,r=Math.abs(a.getTime()-t.getTime());s=Math.floor(r/864e5)}}let a="free";try{let t=(0,g.P)((0,g.rJ)(y.db,B.I.sponsorships),(0,g._M)("userId","==",e),(0,g._M)("status","==","active"));(await (0,g.GG)(t)).empty||(a="premium")}catch(e){(0,k.vV)("ç²åè´å©çæ
失æ:",e)}let r={accounts:0,transactions:0,assets:0,liabilities:0,investments:0,goals:0,subscriptions:0};try{let[t,s,a,i,l,n,c]=await Promise.all([(0,g.GG)((0,g.P)((0,g.rJ)(y.db,"accounts"),(0,g._M)("userId","==",e))),(0,g.GG)((0,g.P)((0,g.rJ)(y.db,"transactions"),(0,g._M)("userId","==",e))),(0,g.GG)((0,g.P)((0,g.rJ)(y.db,"assets"),(0,g._M)("userId","==",e))),(0,g.GG)((0,g.P)((0,g.rJ)(y.db,"liabilities"),(0,g._M)("userId","==",e))),(0,g.GG)((0,g.P)((0,g.rJ)(y.db,"investments"),(0,g._M)("userId","==",e))),(0,g.GG)((0,g.P)((0,g.rJ)(y.db,"goals"),(0,g._M)("userId","==",e))),(0,g.GG)((0,g.P)((0,g.rJ)(y.db,B.I.sponsorships),(0,g._M)("userId","==",e)))]);r.accounts=t.size,r.transactions=s.size,r.assets=a.size,r.liabilities=i.size,r.investments=l.size,r.goals=n.size,r.subscriptions=c.size}catch(e){(0,k.vV)("çµ±è¨è³ææ¸é失æ:",e)}let i=[];try{r.accounts>0&&i.push("accounts"),r.transactions>0&&i.push("transactions"),r.assets>0&&i.push("assets"),r.liabilities>0&&i.push("liabilities"),r.investments>0&&i.push("investments"),r.goals>0&&i.push("goals");let[t,s,a]=await Promise.all([(0,g.GG)((0,g.P)((0,g.rJ)(y.db,"credit_cards"),(0,g._M)("userId","==",e))).catch(()=>null),(0,g.GG)((0,g.P)((0,g.rJ)(y.db,"insurancePolicies"),(0,g._M)("userId","==",e))).catch(()=>null),(0,g.GG)((0,g.P)((0,g.rJ)(y.db,"retirement_plans"),(0,g._M)("userId","==",e))).catch(()=>null)]);t&&t.size>0&&i.push("credit_cards"),s&&s.size>0&&i.push("insurance"),a&&a.size>0&&i.push("retirement")}catch(e){(0,k.vV)("åæåè½ä½¿ç¨æ
æ³å¤±æ:",e)}return{accountAge:s,subscriptionStatus:a,dataCounts:r,featureUsage:i}}catch(e){return(0,k.vV)("ç²åç¨æ¶çµ±è¨è³è¨å¤±æ:",e),{accountAge:0,subscriptionStatus:"free",dataCounts:{accounts:0,transactions:0,assets:0,liabilities:0,investments:0,goals:0,subscriptions:0},featureUsage:[]}}}async function z(e,t){if(!y.db)throw Error("Firestore å°æªåå§å");try{let s=await L(e),a=new Set(["interface","workflow","settings","features"]),r=t.additionalFeedback.complexParts?.filter(e=>"string"==typeof e&&a.has(e)),i=new Set(["free","under_100","100_300","300_500","500_1000","over_1000"]),l=t.additionalFeedback.expectedPrice,n="string"==typeof l&&i.has(l)?l:void 0,c={userId:e,reasons:t.reasons,additionalFeedback:{...t.additionalFeedback,complexParts:r,expectedPrice:n},userStats:s},d=V.parse(c),o=Object.fromEntries(Object.entries(d.additionalFeedback).filter(([e,t])=>void 0!==t));
1return(await (0,g.gS)((0,g.rJ)(y.db,"account_deletion_feedback"),{...d,additionalFeedback:o,submittedAt:(0,g.serverTimestamp)()})).id}catch(e){if((0,k.vV)("å²å帳èåªé¤åé¥å¤±æ:",e),e?.issues){let t=e.issues.map(e=>`${e.path.join(".")}: ${e.message}`).join(", ");throw Error(`åå·è³æé©è失æ: ${t}`)}throw Error(e?.message||"å²ååé¥è³æå¤±æï¼è«ç¨å¾å試")}}var O=s(70861);let U=[{value:"not_useful",label:"åè½ä¸ç¬¦åéæ±"},{value:"too_complex",label:"使ç¨å¤ªè¤é"},{value:"privacy_concerns",label:"é±ç§çæ
®"},{value:"found_alternative",label:"æ¾å°æ¿ä»£æ¹æ¡"},{value:"too_expensive",label:"广 ¼å¤ªè²´"},{value:"poor_support",label:"客æä¸ä½³"},{value:"other",label:"å
¶ä»"}],M=[{value:"interface",label:"ä»é¢è¨è¨"},{value:"workflow",label:"æä½æµç¨"},{value:"settings",label:"åè½è¨å®"},{value:"features",label:"åè½ä½¿ç¨"}],W=[{value:"free",label:"å
è²»"},{value:"under_100",label:"100 å
以ä¸"},{value:"100_300",label:"100-300 å
"},{value:"300_500",label:"300-500 å
"},{value:"500_1000",label:"500-1000 å
"},{value:"over_1000",label:"1000 å
以ä¸"}];function Z({open:e,userId:t,onOpenChange:s}){let{toast:l}=(0,p.dj)(),n=(0,i.useRouter)(),[c,d]=(0,r.useState)([]),[o,x]=(0,r.useState)({}),[f,j]=(0,r.useState)({}),[v,g]=(0,r.useState)(!1),[b,w]=(0,r.useState)(null),N=(0,r.useRef)(!1);(0,r.useEffect)(()=>{e||(d([]),x({}),j({}),w(null))},[e]);let k=async()=>{let e=y.auth?.currentUser;if(N.current||!(0,O.WV)()||!(0,O.p)(e)||!e)return!0;try{let t=await (0,O.i9)(e);return N.current=!0,t||l({title:"ç¡æ³æ¤é· Apple ææ¬",description:"帳è仿åªé¤ï¼å¯å° Apple ID è¨å®çãä½¿ç¨ Apple ç»å
¥ãèªè¡ç§»é¤æ¬æå"}),!0}catch(e){return l({title:"已忢åªé¤",description:e?.code==="auth/popup-closed-by-user"||e?.code==="auth/cancelled-popup-request"?"éè¦å以 Apple é©è䏿¬¡æè½åªé¤å¸³è":e?.message||"Apple é©è失æï¼è«ç¨å¾å試",variant:"destructive"}),!1}},C=async()=>{let e;if(e={},0===c.length&&(e.reasons="è«è³å°é¸æä¸ååªé¤åå "),c.includes("other")&&(!o.otherReason||o.otherReason.trim().length<10?e.otherReason="鏿ãå
¶ä»ãåå æï¼è«æä¾è³å° 10 ååç說æ":o.otherReason.length>500&&(e.otherReason="說æä¸è½è¶
é 500 åå")),j(e),0===Object.keys(e).length){g(!0),w(null);try{if(!await k())return;await z(t,{reasons:c,additionalFeedback:o}),n.push("/account-deleted")}catch(e){w(e?.message||"æäº¤å¤±æï¼è«ç¨å¾å試"),l({title:"æäº¤å¤±æ",description:e?.message||"è«ç¨å¾å試",variant:"destructive"})}finally{g(!1)}}},I=async()=>{g(!0);try{if(!await k())return void g(!1);n.push("/account-deleted?skipped=true")}catch(e){l({title:"é¯èª¤",description:e?.message||"è«ç¨å¾å試",variant:"destructive"}),g(!1)}};return(0,a.jsx)(A.lG,{open:e,onOpenChange:e=>{e||v||(s(!1),l({title:"已忶åªé¤",description:"åªé¤å¸³èæµç¨å·²åæ¶"}))},children:(0,a.jsxs)(A.Cf,{className:"sm:max-w-[600px] max-h-[90vh] overflow-y-auto",children:[(0,a.jsxs)(A.c7,{children:[(0,a.jsx)(A.L3,{children:"帳èåªé¤åé¥åå·"}),(0,a.jsx)(A.rr,{children:"çºäºå¹«å©æåæ¹é²æåï¼è«å訴æåæ¨åªé¤å¸³èçåå ãæ¤åå·çºå¿
å¡«é
ç®ã"})]}),(0,a.jsxs)("div",{className:"space-y-6 py-4",children:[(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)(u.J,{className:"text-base font-semibold",children:["è«é¸æåªé¤åå ",(0,a.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,a.jsx)("div",{className:"space-y-2",children:U.map(e=>(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)(S.S,{id:e.value,checked:c.includes(e.value),onCheckedChange:t=>{var s;return s=e.value,void(!0===t?d([...c,s]):(d(c.filter(e=>e!==s)),"not_useful"===s?x({...o,priorityFeatures:void 0}):"too_complex"===s?x({...o,complexParts:void 0}):"privacy_concerns"===s?x({...o,dataHandlingConcerns:void 0}):"too_expensive"===s?x({...o,expectedPrice:void 0}):"other"===s&&x({...o,otherReason:void 0})),j({}),w(null))}}),(0,a.jsx)(u.J,{htmlFor:e.value,className:"text-sm font-normal cursor-pointer",children:e.label})]},e.value))}),f.reasons&&(0,a.jsx)("p",{className:"text-sm text-red-500",children:f.reasons})]}),c.includes("not_useful")&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(u.J,{htmlFor:"priorityFeatures",children:"è«å訴æåæ¨æå¸ææ°å¢åªäºåè½ï¼"}),(0,a.jsx)(E.T,{id:"priorityFeatures",placeholder:"è«æè¿°æ¨å¸ææ°å¢çåè½...",value:o.priorityFeatures||"",onChange:e=>x({...o,priorityFeatures:e.target.value}),rows:3})]}),c.includes("too_complex")&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(u.J,{children:"è«é¸æåªåé¨å太è¤éï¼"}),(0,a.jsx)("div",{className:"space-y-2",children:M.map(e=>(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)(S.S,{id:e.value,checked:o.complexParts?.includes(e.value)||!1,onCheckedChange:t=>{let s=o.complexParts||[];t?x({...o,complexParts:[...s,e.value]}):x({...o,complexParts:s.filter(t=>t!==e.value)})}}),(0,a.jsx)(u.J,{htmlFor:e.value,className:"text-sm font-normal cursor-pointer",children:e.label})]},e.value))})]}),c.includes("privacy_concerns")&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(u.J,{htmlFor:"dataHandlingConcerns",children:"è«å訴æåæ¨å°è³æèçæ¹å¼æåªäºçæ
®ï¼"}),(0,a.jsx)(E.T,{id:"dataHandlingConcerns",placeholder:"è«æè¿°æ¨ççæ
®...",value:o.dataHandlingConcerns||"",onChange:e=>x({...o,dataHandlingConcerns:e.target.value}),rows:3})]}),c.includes("too_expensive")&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(u.J,{children:"è«é¸ææ¨ææç广 ¼åé"}),(0,a.jsx)(m.z,{value:o.expectedPrice,onValueChange:e=>x({...o,expectedPrice:e}),children:W.map(e=>(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)(m.C,{value:e.value,id:e.value}),(0,a.jsx)(u.J,{htmlFor:e.value,className:"text-sm font-normal cursor-pointer",children:e.label})]},e.value))})]}),c.includes("other")&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)(u.J,{htmlFor:"otherReason",children:["è«èªªæå
¶ä»åå ",(0,a.jsx)("span",{className:"text-red-500",children:"*"}),(0,a.jsx)("span",{className:"text-sm text-muted-foreground ml-2",children:"ï¼è³å° 10 ååï¼æå¤ 500 ååï¼"})]}),(0,a.jsx)(E.T,{id:"otherReason",placeholder:"è«è©³ç´°èªªææ¨çåªé¤åå ...",value:o.otherReason||"",onChange:e=>x({...o,otherReason:e.target.value}),rows:4,maxLength:500}),(0,a.jsxs)("div",{className:"flex justify-between text-xs text-muted-foreground",children:[(0,a.jsx)("span",{children:f.otherReason&&(0,a.jsx)("span",{className:"text-red-500",children:f.otherReason})}),(0,a.jsxs)("span",{children:[o.otherReason?.length||0," / 500"]})]})]}),b&&(0,a.jsx)("div",{className:"p-3 bg-red-50 dark:bg-red-950/20 border border-red-200 dark:border-red-800 rounded-md",children:(0,a.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:b})})]}),(0,a.jsx)(A.Es,{className:"flex-col sm:flex-row gap-2",children:b?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(h.$,{variant:"outline",onClick:I,disabled:v,children:"è·³éåå·"}),(0,a.jsx)(h.$,{onClick:()=>{w(null),C()},disabled:v,children:v?"é試ä¸...":"é試"})]}):(0,a.jsx)(h.$,{onClick:C,disabled:v||0===c.length,children:v?"æäº¤ä¸...":"æäº¤åå·"})})]})})}var H=s(14560),J=s(79579),G=s(36506),Y=s(35346),q=s(26787),X=s(54938),K=s(19548),Q=s(83474),ee=s(52204),et=s(28723);function es(){let{user:e}=(0,f.A)(),{toast:t}=(0,p.dj)(),[s,i]=(0,r.useState)(!0),[l,n]=(0,r.useState)(!1),[c,d]=(0,r.useState)(!1),[o,u]=(0,r.useState)(5),[m,h]=(0,r.useState)(""),x=(0,r.useCallback)(async()=>
1{if(!e)return void i(!1);i(!0);try{let t=await e.getIdToken(),s=await (0,ee._D)(t);s.submitted&&s.review?(d(!0),u(s.review.rating),h(s.review.comment)):(d(!1),u(5),h(""))}catch(s){let e=s instanceof Error?s:Error(String(s));K.Cp(e,{tags:{source:"PlatformReviewSettingsSection.load"}}),t({variant:"destructive",title:"è¼å
¥å¤±æ",description:e.message})}finally{i(!1)}},[e,t]);(0,r.useEffect)(()=>{x()},[x]);let j=async()=>{if(e){n(!0);try{let s=await e.getIdToken(),a={rating:o,comment:m.trim()};c?(await (0,ee.nX)(s,a),t({title:"å·²æ´æ°",description:"æ¨ç好è©å·²å²å"})):(await (0,ee.yO)(s,a),await (0,et.tD)(e.uid),d(!0),t({title:"æè¬æ¨çåé¥ï¼"})),await x()}catch(s){let e=s instanceof Error?s:Error(String(s));K.Cp(e,{tags:{source:"PlatformReviewSettingsSection.save"}}),t({variant:"destructive",title:"å²å失æ",description:e.message})}finally{n(!1)}}};return(0,a.jsxs)("div",{className:"mt-8 border-t pt-6",children:[(0,a.jsx)("p",{className:"text-sm text-muted-foreground mb-3",children:"æçå¥½è© \xb7 æ¯ä½ç¨æ¶ä¸åï¼å¯é¨æä¿®æ¹"}),s?(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"è¼å
¥ä¸â¦"}):(0,a.jsx)(Q.m,{rating:o,onRatingChange:u,comment:m,onCommentChange:h,onSubmit:j,submitting:l,submitLabel:c?"æ´æ°":"éåº",commentId:"settings-platform-review-comment"})]})}var ea=s(18977),er=s(31862);function ei(){let{toast:e}=(0,p.dj)(),{user:t}=(0,f.A)(),{theme:s}=(0,N.D)(),l=(0,n.mN)({resolver:(0,c.u)(X.Fx),defaultValues:{name:"",email:"",birthday:"",gender:""}}),[S,E]=(0,r.useState)("");(0,i.useRouter)();let[I,R]=(0,r.useState)(!!t?.emailVerified),[T,$]=(0,r.useState)(!1),[P,D]=(0,r.useState)(!1),[F,_]=(0,r.useState)(!1),[V,B]=(0,r.useState)(!1),[L,z]=(0,r.useState)(!1),[O,U]=(0,r.useState)(null),[M,W]=(0,r.useState)(null),[K,Q]=(0,r.useState)(!1),et=(0,r.useRef)(null),ei=(0,r.useRef)(!1),el=(0,r.useRef)(null);(0,r.useEffect)(()=>{if(!t)return;if(!y.db)return void e({title:"Firebase å°æªåå§å",description:"è«æª¢æ¥ .env è¨å®è firebase.ts åå§åæµç¨ã",variant:"destructive"});(0,k.fH)("éå§ç£è½ç¨æ¶è³æè®æ´...");let s=(0,g.aQ)((0,g.doc)(y.db,"users",t.uid),e=>{if(e.exists()){let s=e.data(),a=JSON.stringify({name:s.name||s.profile?.name||"",email:s.email||s.profile?.email||"",birthday:s.birthday||s.profile?.birthDate||"",gender:s.gender??"",emailVerified:s.emailVerified});if(et.current===a||ei.current)return;et.current=a,W((0,ea.xK)(s));let r={name:s.name||s.profile?.name||"",email:s.email||s.profile?.email||"",birthday:s.birthday||s.profile?.birthDate||"",gender:"male"===s.gender||"female"===s.gender?s.gender:""};l.reset(r),E(r.email||"");let i=!1;s.hasOwnProperty("emailVerified")?(i=!0===s.emailVerified,(0,k.fH)("ä½¿ç¨ Firestore emailVerified çæ
:",i)):(i=t.emailVerified,(0,k.fH)("ä½¿ç¨ Auth emailVerified çæ
ä¸¦åæ¥å° Firestore:",i),ei.current=!0,(async()=>{try{await (0,g.mZ)((0,g.doc)(y.db,"users",t.uid),{emailVerified:t.emailVerified,updatedAt:new Date}),(0,k.fH)("已忥 emailVerified å° Firestore:",t.emailVerified),setTimeout(()=>{ei.current=!1},100)}catch(e){(0,k.vV)("忥 emailVerified å° Firestore 失æ:",e),ei.current=!1}})()),(0,k.fH)("æçµ emailVerified çæ
:",i),R(i)}},e=>{(0,k.vV)("ç£è½ç¨æ¶è³æå¤±æ:",e)});return(async()=>{try{(0,k.fH)("åå§åæ¥ Auth çæ
..."),await (0,w.reload)(t),(0,k.fH)("Auth emailVerified åå§å¼:",t.emailVerified);let e=await (0,g.getDoc)((0,g.doc)(y.db,"users",t.uid));if(e.exists()){let s=e.data(),a=!1;if(s.hasOwnProperty("emailVerified"))a=!0===s.emailVerified,(0,k.fH)("åå§åæ¥ï¼ä½¿ç¨ Firestore emailVerified çæ
:",a);else{a=t.emailVerified,(0,k.fH)("åå§åæ¥ï¼ä½¿ç¨ Auth emailVerified çæ
ä¸¦åæ¥å° Firestore:",a);try{await (0,g.mZ)((0,g.doc)(y.db,"users",t.uid),{emailVerified:t.emailVerified,updatedAt:new Date}),(0,k.fH)("åå§åæ¥ï¼å·²åæ¥ emailVerified å° Firestore:",t.emailVerified)}catch(e){(0,k.vV)("åå§åæ¥ï¼åæ¥ emailVerified å° Firestore 失æ:",e)}}(0,k.fH)("åå§åæ¥ï¼æçµ emailVerified çæ
:",a),R(a)}}catch(e){(0,k.vV)("åå§åæ¥ Auth çæ
失æ:",e)}})(),()=>{(0,k.fH)("æ¸
çç¨æ¶è³æç£è½å¨"),s()}},[t,e]);let{update:en}
1=(0,b.s)(t?.uid);(0,r.useEffect)(()=>{t?.uid&&(async()=>{let e=await (0,q.Sk)(t.uid);e&&U(e)})()},[t?.uid]);let ec=async()=>{if(!t||!y.db)return;let s=(0,Y.SD)();l.setValue("name",s);try{await (0,g.mZ)((0,g.doc)(y.db,"users",t.uid),{name:s,updatedAt:new Date});try{await (0,w.updateProfile)(t,{displayName:s})}catch(e){(0,k.vV)("忥 Auth displayName 失æ",e)}let e=await t.getIdToken();await (0,ee.b2)(e)}catch(t){(0,k.vV)("æ´æ°å稱失æ:",t),e({title:"æ´æ°å¤±æ",description:"ç¡æ³æ´æ°å稱ï¼è«ç¨å¾å試",variant:"destructive"})}},ed=async e=>{if(U(e),t){(0,er.clearUserAvatarCached)(t.uid);try{let e=await t.getIdToken();await (0,ee.b2)(e)}catch(e){(0,k.vV)("忥好è©é¡¯ç¤ºå¤±æ",e)}}},eo=async s=>{if(t){if(!y.db)return void e({title:"Firebase å°æªåå§å",description:"è«æª¢æ¥ .env è¨å®è firebase.ts åå§åæµç¨ã",variant:"destructive"});if(t.email&&!t.emailVerified)return void e({title:"å°æªå®æä¿¡ç®±é©è",description:"è«å é©èé»åéµä»¶å¾åæ´æ°ææè³æã",variant:"destructive"});try{let a=s.name?.trim()??"";if(await en({name:a,email:s.email,birthday:s.birthday,gender:s.gender||void 0}),a&&a!==(t.displayName??""))try{await (0,w.updateProfile)(t,{displayName:a})}catch(e){(0,k.vV)("忥 Auth displayName 失æ",e)}await (0,C.BS)(t.uid);let r=await t.getIdToken();await (0,ee.b2)(r),e({title:"åäººè³æå·²æ´æ°",description:"æ¨çåäººè³æå·²æåæ´æ°ã"})}catch(t){e({title:"æ´æ°å¤±æ",description:"è«ç¨å¾å試ã",variant:"destructive"})}}},eu=async()=>{(0,k.fH)("æéè¢«é»æï¼éå§èç...");try{(0,k.fH)("å試顯示 toast..."),e({title:"測試",description:"Toast æ¸¬è©¦è¨æ¯"}),(0,k.fH)("Toast 已調ç¨")}catch(e){(0,k.vV)("Toast é¯èª¤:",e)}if(!t){(0,k.fH)("ç¨æ¶æªç»å ¥"),e({title:"é¯èª¤",description:"ç¨æ¶æªç»å ¥",variant:"destructive"});return}$(!0),e({title:"èçä¸",description:"æ£å¨æºåå¯éé©èä¿¡..."});try{if((0,k.fH)("éå§å¯éé©èä¿¡..."),(0,k.fH)("ç¨æ¶çæ :",{uid:t.uid,email:t.email,emailVerified:t.emailVerified,isAnonymous:t.isAnonymous}),(0,k.fH)("éæ°è¼å ¥ç¨æ¶çæ ..."),await (0,w.reload)(t),(0,k.fH)("éæ°è¼å ¥å¾çç¨æ¶çæ :",{uid:t.uid,email:t.email,emailVerified:t.emailVerified,isAnonymous:t.isAnonymous}),t.isAnonymous)return void e({title:"å¯é失æ",description:"å¿åç¨æ¶ç¡æ³å¯éé©èä¿¡",variant:"destructive"});let s=(l.getValues("email")||"").trim();if(!s)return void e({title:"å¯é失æ",description:"è«å è¼¸å ¥é»åéµä»¶å°å",variant:"destructive"});t.email&&t.email.toLowerCase()===s.toLowerCase()?(await (0,w.sendEmailVerification)(t,{url:`${window.location.origin}/auth?verified=true`,handleCodeInApp:!1}),e({title:"â é©èä¿¡å·²å¯åº",description:"è«æª¢æ¥æ¨çä¿¡ç®±ï¼å æ¬åå¾éµä»¶ï¼ã"})):(await (0,w.verifyBeforeUpdateEmail)(t,s,{url:`${window.location.origin}/auth?verified=true`,handleCodeInApp:!1}),e({title:"â é©èä¿¡å·²å¯åº",description:"è«å徿°ä¿¡ç®±å®æé©èã"}))}catch(t){(0,k.vV)("å¯éé©è信失æ:",t),(0,k.vV)("é¯èª¤ä»£ç¢¼:",t.code),(0,k.vV)("é¯èª¤è¨æ¯:",t.message),"auth/too-many-requests"===t.code?e({title:"å¯é失æ",description:"è«æ±éæ¼é »ç¹ï¼è«ç¨å¾å試ã",variant:"destructive"}):"auth/user-not-found"===t.code?e({title:"å¯é失æ",description:"ç¨æ¶ä¸åå¨ï¼è«éæ°ç»å ¥ã",variant:"destructive"}):"auth/requires-recent-login"===t.code?e({title:"å¯é失æ",description:"éè¦éæ°ç»å ¥ä»¥é²è¡æ¤æä½",variant:"destructive"}):"auth/operation-not-allowed"===t.code?e({title:"å¯é失æ",description:"æ¤æä½ä¸è¢«å 許ï¼è«è¯ç¹«å®¢æ",variant:"destructive"}):"auth/network-request-failed"===t.code?e({title:"å¯é失æ",description:"網路é£ç·å¤±æï¼è«æª¢æ¥ç¶²è·¯é£ç·",variant:"destructive"}):e({title:"å¯é失æ",description:`é¯èª¤: ${t.message||"è«ç¨å¾å試"}`,variant:"destructive"})}finally{$(!1)}};return(0,a.jsxs)(d.Zp,{children:[(0,a.jsxs)(d.aR,{children:[(0,a.jsxs)(d.ZB,{className:"flex items-center gap-2",children:[(0,a.jsx)(j.A,{className:"h-5 w-5"}),"åäººè³æ"]}),(0,a.jsx)(d.BT,{children:"æ´æ°æ¨çåäººè³æåè¯çµ¡è³è¨"})]}),(0,a.jsxs)(d.Wu,{children:[(0,a.jsxs)("div",{className:"mb-6 pb-6 border-b space-y-4",children:[(0,a.jsxs)("div",{className:"flex flex-col items-center gap-2",children:[(0,a.jsx)("div",{className:"cursor-pointer hover:opacity-80 transition-opacity",onClick:()=>z(!0),children:(0,a.jsx)(J.H,{userId:t?.uid,size:"large"})}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"黿é åå¯ç·¨è¼¯èæ¬å¤è§"}),(0,a.jsx)(h.$,{type:"button",variant:"outline",size:"sm",className:"rounded-xl",onClick:()=>z(!0),children:"ç·¨è¼¯èæ¬é å"})]}),t?(0,a.jsx)(G._,{userId:t.uid,currentPhotoUrl:M,oauthPhotoUrl:t.photoURL,getToken:()=>t.getIdToken(),onPhotoChange:async e=>{if(y.db){await (0,g.mZ)((0,g.doc)(y.db,"users",t.uid),{photoURL:e,updatedAt:new Date}),W(e),(0,er.clearUserAvatarCached)(t.uid);try{let e=await t.getIdToken();await (0,ee.b2)(e)}catch(e){(0,k.vV)("忥好è©é¡¯ç¤ºå¤±æ",e)}}}}):null]}),(0,a.jsx)(x.lV,{...l,children:(0,a.jsxs)("form",{onSubmit:l.handleSubmit(eo),className:"space-y-4",children:[(0,a.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,a.jsx)(x.zB,{control:l.control,name:"name",render:({field:e})=>(0,a.jsxs)(x.eI,{children:[(0,a.jsx)(x.lR,{children:"æ±ç¨±"}),(0,a.jsxs)("div",{className:"relative flex gap-2",children:[(0,a.jsx)(x.MJ,{children:(0,a.jsx)(o.p,{placeholder:"è«è¼¸å ¥æ±ç¨±",className:"flex-1",...e})}),(0,a.jsx)(h.$,{type:"button",variant:"outline",size:"icon",onClick:ec,title:"çæé¨æ©å稱",children:(0,a.jsx)(v.A,{className:"h-4 w-4"})})]}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"黿 ⨠æéå¯èªåçæé¨æ©å稱"}),(0,a.jsx)(x.C5,{})]})}),(0,a.jsx)(x.zB,{control:l.control,name:"email",render:({field:e})=>(0,a.jsxs)(x.eI,{children:[(0,a.jsx)(x.lR,{children:"é»åéµä»¶"}),(0,a.jsx)(x.MJ,{children:(0,a.jsx)(o.p,{type:"email",autoComplete:"email",placeholder:"è«è¼¸å ¥é»åéµä»¶å°å",...e})}),(0,a.jsx)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:e.value&&""!==e.value.trim()?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:`${I?"text-green-500":"text-yellow-600 dark:text-yellow-500"}`,children:I?"å·²é©è":"æªé©è"}),!I&&(0,a.jsx)(h.$,{variant:"outline",size:"sm",onClick:eu,disabled:T,children:T?"å¯éä¸...":"å¯éé©èä¿¡"})]}):(0,a.jsx)("span",{className:"text-blue-500",children:"æªè¨å®é»åéµä»¶"})}),(0,a.jsx)(x.C5,{})]})}),(0,a.jsx)(x.zB,{control:l.control,name:"birthday",render:({field:e})=>(0,a.jsxs)(x.eI,{children:[(0,a.jsx)(x.lR,{children:"çæ¥"}),(0,a.jsx)("div",{className:"relative z-10 cursor-pointer",onClick:()=>el.current?.showPicker?.(),children:(0,a.jsx)("input",{ref:el,type:"date",value:function(e){if(!e)return"";if(/^\d{4}-\d{2}-\d{2}$/.test(e))return e;let t=new Date(e);return isNaN(t.getTime())?"":t.toISOString().slice(0,10)}(e.value),onChange:t=>e.onChange(t.target.value),onBlur:e.onBlur,name:e.name,className:"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm font-normal shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer"})}),(0,a.jsx)(x.C5,{})]})}),(0,a.jsx)(x.zB,{control:l.control,name:"gender",render:({field:e})=>(0,a.jsxs)(x.eI,{children:[(0,a.jsx)(x.lR,{children:"æ§å¥"}),(0,a.jsx)(x.MJ,{children:(0,a.jsxs)(m.z,{value:e.value??"",onValueChange:t=>e.onChange("male"===t||"female"===t?t:""),className:"flex gap-6",children:[(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)(m.C,{value:"male",id:"gender-male"}),(0,a.jsx)(u.J,{htmlFor:"gender-male",className:"font-normal cursor-pointer",children:"ç·æ§"})]}),(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)(m.C,{value:"female",id:"gender-female"}),(0,a.jsx)(u.J,{htmlFor:"gender-female",className:"font-normal cursor-pointer",children:"女æ§"})]})]})}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"ä¾ä¿éªä¿è²»è¨ç®ä½¿ç¨"}),(0,a.jsx)(x.C5,{})]})})]}),(0,a.jsx)("div",{className:"flex justify-end",children:(0,a.jsx)(h.$,{type:"submit",disabled:l.formState.isSubmitting,children:l.formState.isSubmitting?"æ´æ°ä¸...":"æ´æ°åäººè³æ"})})]})}),(0,a.jsx)(es,{}),(0,a.jsx)("div",{className:"mt-8 border-t pt-6",children:(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(h.$,{variant:"outline",className:"border-red-500 text-red-600 hover:bg-red-50 hover:text-red-700 dark:hover:bg-red-950/20 dark:text-red-400 dark:border-red-400 dark:hover:text-red-300",onClick:()=>D(!0),children:"åªé¤å¸³æ¶"}),(0,a.jsx)("div",{className:"text-xs text-muted-foreground",children:"æ¤æä½å°æ°¸ä¹ åªé¤æ¨çææè³æä¸ç¡æ³æ¢å¾©"})]})}),(0,a.jsx)(A.lG,{open:P,onOpenChange:D,children:(0,a.jsxs)(A.Cf,{children:[(0,a.jsxs)(A.c7,{children:[(0,a.jsx)(A.L3,{children:"確èªåªé¤å¸³æ¶ï¼"}),(0,a.jsx)(A.rr,{children:"æ¤æä½ç¡æ³å¾©åï¼å°æåªé¤æææ¨çè³æèç»å ¥å¸³æ¶ã"})]}),(0,a.jsxs)(A.Es,{children:[(0,a.jsx)(h.$,{variant:"outline",onClick:()=>D(!1),children:"åæ¶"}),(0,a.jsx)(h.$,{variant:"destructive",disabled:K,onClick:()=>{D(!1),_(!0)},children:"確èªåªé¤"})]})]})}),t&&(0,a.jsx)(Z,{open:F,userId:t.uid,onOpenChange:e=>{_(e),e||D(!1)}}),t&&(0,a.jsx)(H.V,{open:L,onOpenChange:z,userId:t.uid,initialConfig:O,onSave:ed})]})]})}var el=s(56620),en=s(17749),ec=s(76842),ed=s(51475),eo=s(42457);let eu=({src:e,alt:t,fallback:s,className:i})=>{let[l,n]=(0,r.useState)(!1);return(0,a.jsx)(el.default,{src:l?s:e,alt:t,width:20,height:20,className:i,unoptimized:!0,onError:()=>n(!0)})},em=({className:e})=>(0,a.jsx)(eu,{src:"/social-icons/facebook.png",alt:"Facebook",fallback:"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%231877F2'%3E%3Cpath d='M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z'/%3E%3C/svg%3E",className:e}),eh=({className:e})=>(0,a.jsx)(eu,{src:"/social-icons/instagram.png",alt:"Instagram",fallback:"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cdefs%3E%3ClinearGradient id='ig' x1='0%25' y1='0%25' x2='100%25' y2='100%25'%3E%3Cstop offset='0%25' stop-color='%23FCAF45'/%3E%3Cstop offset='50%25' stop-color='%23E1306C'/%3E%3Cstop offset='100%25' stop-color='%23833AB4'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect x='2' y='2' width='20' height='20' rx='5' fill='url(%23ig)'/%3E%3Ccircle cx='12' cy='12' r='4' fill='white'/%3E%3Ccircle cx='17.5' cy='6.5' r='1' fill='white'/%3E%3C/svg%3E",className:e}),ex=({className:e})=>(0,a.jsx)(eu,{src:"/social-icons/threads.png",alt:"Threads",fallback:"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2z'/%3E%3C/svg%3E",className:e}),ep=({className:e})=>(0,a.jsx)(eu,{src:"/social-icons/x.png",alt:"X (Twitter)",fallback:"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231z'/%3E%3C/svg%3E",className:e}),ef=({className:e})=>(0,a.jsx)(el.default,{src:"/social-icons/line.png",alt:"LINE",width:20,height:20,className:e,onError:e=>{e.currentTarget.src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%2300B900'%3E%3Cpath d='M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2z'/%3E%3C/svg%3E"}});function ej(e,t){return`æ¨è¦ä½ 使ç¨é«ä¸ç´ç財管çå人財åï¼ 2 3註åå¾å¨åäººè³æè¼¸å ¥æçæ¨è¦ç¢¼ã${e}ãï¼éæ¹å³å¯ç²å¾ XP çåµã 4 5ç«å³è¨»åï¼${t} 6 7#財åè¦å #å人ç財`}function ev(){let{user:e}=(0,f.A)(),{toast:t}=(0,p.dj)(),l=(0,i.useSearchParams)(),[n,c]=(0,r.useState)(""),[m,x]=(0,r.useState)(!1),[j,v]=(0,r.useState)(""),[b,w]=(0,r.useState)(!1),[N,k]=(0,r.useState)("");(0,r.useEffect)(()=>
7{if(!e?.uid||!y.db)return;let t=(0,g.aQ)((0,g.doc)(y.db,"users",e.uid),e=>{e.exists()&&c(e.data()?.referralCode||"")});return()=>t()},[e?.uid]),(0,r.useEffect)(()=>{let e=(0,eo.wb)(l.get("ref"));if(e){(0,eo.By)(e),v(e);return}let t=(0,eo.x2)();t&&v(t)},[l]);let C=(0,r.useMemo)(()=>{let e=window.location.origin;return{origin:e,buildUrl:t=>e?`${e}/auth?ref=${encodeURIComponent(t)}`:"/auth"}},[]),A=async e=>{try{await navigator.clipboard.writeText(e),t({title:"å·²è¤è£½å°åªè²¼ç°¿"})}catch{t({title:"è¤è£½å¤±æ",description:"è«æåè¤è£½",variant:"destructive"})}},S=(e,t)=>{let s=C.buildUrl(t),a=ej(t,s);if(!s)return null;switch(e){case"fb":return`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(s)}"e=${encodeURIComponent(a)}`;case"x":return`https://twitter.com/intent/tweet?text=${encodeURIComponent(a)}&url=${encodeURIComponent(s)}`;case"threads":return`https://www.threads.net/intent/post?text=${encodeURIComponent(`${a} 8${s}`)}`;case"line":return`https://social-plugins.line.me/lineit/share?url=${encodeURIComponent(s)}&text=${encodeURIComponent(a)}`;default:return null}},E=async e=>{let s=C.buildUrl(e),a=ej(e,s);if(/Android|iPhone|iPad|iPod/i.test(navigator.userAgent)&&"u">typeof navigator&&"function"==typeof navigator.share)try{await navigator.share({text:a,url:s}),t({title:"å·²éåå享"});return}catch{}await A(a),t({title:"å·²è¤è£½åäº«ææ¡",description:"Instagram 䏿¯æ´ç¶²é ç´æ¥å享å¤é¨é£çµï¼è«å° Instagram æç¨ç¨å¼è²¼ä¸ææ¡åé£çµ"})},I=async e=>{if(e.preventDefault(),!j.trim())return void k("è«è¼¸å ¥æ¨è¦ç¢¼");w(!0),k("");try{let{redeemReferralCode:e}=await Promise.all([s.e(5084),s.e(7327)]).then(s.bind(s,37327)),a=await e(j.trim());a.success?((0,eo.iq)(),t({title:"æ¨è¦ç¢¼ç¶å®æåï¼",description:a.message||"æ¨è¦ç¢¼å·²æåç¶å®"}),v(""),k("")):k(a.message||"ç¶å®å¤±æï¼è«ç¨å¾å試")}catch(s){let e=s instanceof Error?s.message:"ä½¿ç¨æ¨è¦ç¢¼å¤±æï¼è«ç¨å¾å試";k(e),t({title:"æ¨è¦ç¢¼ç¶å®å¤±æ",description:e,variant:"destructive"})}finally{w(!1)}},R=n?n.split(" ")[0]:"";return(0,a.jsxs)(d.Zp,{children:[(0,a.jsx)(d.aR,{children:(0,a.jsxs)(d.ZB,{className:"flex items-center gap-2",children:[(0,a.jsx)(en.A,{className:"h-5 w-5"}),"æ¨è¦èå享"]})}),(0,a.jsxs)(d.Wu,{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(u.J,{children:"æçæ¨è¦ç¢¼"}),n?(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsx)("span",{className:"font-mono font-semibold",children:R}),(0,a.jsxs)(h.$,{size:"sm",variant:"outline",onClick:()=>{navigator.clipboard.writeText(R),x(!0),setTimeout(()=>x(!1),1500),t({title:"å·²è¤è£½æ¨è¦ç¢¼"})},children:[(0,a.jsx)(ec.A,{className:"h-4 w-4 mr-1"}),m?"å·²è¤è£½ï¼":"è¤è£½æ¨è¦ç¢¼"]}),(0,a.jsxs)(h.$,{size:"sm",variant:"outline",onClick:()=>A(C.buildUrl(R)),children:[(0,a.jsx)(ed.A,{className:"h-4 w-4 mr-1"}),"è¤è£½é£çµ"]})]}):(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"å°æªç¢çæ¨è¦ç¢¼ï¼è«è¯ç¹«å®¢æææ¼è¨»åå¾éæ°æ´ç"})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(u.J,{htmlFor:"referralCodeBind",children:"ä½¿ç¨æ¨è¦ç¢¼"}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.p,{id:"referralCodeBind",value:j,onChange:e=>v(e.target.value),placeholder:"è«è¼¸å ¥æ¨è¦ç¢¼ï¼ç¶å®æåå¾éæ¹å¯ç²å¾ XP",disabled:b,className:"flex-1"}),(0,a.jsx)(h.$,{type:"button",onClick:I,disabled:b||!j.trim(),children:b?"é©èä¸...":"使ç¨"})]}),N&&(0,a.jsx)("p",{className:`text-sm ${N.includes("æå")?"text-green-600":"text-red-600"}`,children:N})]}),(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{className:"text-sm font-medium flex items-center gap-2",children:[(0,a.jsx)(en.A,{className:"h-4 w-4"}),"社群å享"]}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"åäº«å° FB / IG / Threads / X / LINEãIG æ¡é¢çæè¤è£½ææ¡èé£çµï¼è«å°æç¨ç¨å¼è²¼ä¸ã"}),R?(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,a.jsx)("a",{href:S("fb",R)||"#",target:"_blank",rel:"noopener noreferrer",title:"åäº«å° Facebook",className:"inline-flex items-center justify-center transition-opacity hover:opacity-80",children:(0,a.jsx)(em,{className:"h-6 w-6"})}),(0,a.jsx)("a",{href:"#",onClick:e=>{e.preventDefault(),E(R)},title:"åäº«å° Instagram",className:"inline-flex items-center justify-center transition-opacity hover:opacity-80 curs
8or-pointer",children:(0,a.jsx)(eh,{className:"h-6 w-6"})}),(0,a.jsx)("a",{href:S("threads",R)||"#",target:"_blank",rel:"noopener noreferrer",title:"åäº«å° Threads",className:"inline-flex items-center justify-center transition-opacity hover:opacity-80",children:(0,a.jsx)(ex,{className:"h-6 w-6"})}),(0,a.jsx)("a",{href:S("x",R)||"#",target:"_blank",rel:"noopener noreferrer",title:"åäº«å° X (Twitter)",className:"inline-flex items-center justify-center transition-opacity hover:opacity-80",children:(0,a.jsx)(ep,{className:"h-6 w-6"})}),(0,a.jsx)("a",{href:S("line",R)||"#",target:"_blank",rel:"noopener noreferrer",title:"åäº«å° LINE",className:"inline-flex items-center justify-center transition-opacity hover:opacity-80",children:(0,a.jsx)(ef,{className:"h-6 w-6"})})]}):(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"è«å
å徿¨è¦ç¢¼å¾å使ç¨ç¤¾ç¾¤å享"})]})]})]})}var eg=s(93046),ey=s(67592),eb=s(11787),ew=s(68341),eN=s(2416),ek=s(78954),eC=s(75168),eA=s(34961);let eS=r.forwardRef(({className:e,orientation:t="horizontal",decorative:s=!0,...r},i)=>(0,a.jsx)(eC.b,{ref:i,decorative:s,orientation:t,className:(0,eA.cn)("shrink-0 bg-border","horizontal"===t?"h-[1px] w-full":"h-full w-[1px]",e),...r}));eS.displayName=eC.b.displayName;var eE=s(41819),eI=s(39049),eR=s(39461),eT=s(21);let e$=[{key:"account",label:"帳æ¶è仿¬¾"},{key:"financial",label:"財åè系統æé"},{key:"insurance",label:"ä¿éª"},{key:"marketing",label:"è¡é·"}],eP=[{key:"login",label:"ç»å
¥æé",desc:"æ°è£ç½®ææ°ä½ç½®ç»å
¥",group:"account",channels:["inApp","email","line"],emailKey:"login"},{key:"payment",label:"仿¬¾çµæ",desc:"è´å©æé ç´ä»æ¬¾æåæå¤±æ",group:"account",channels:["inApp","email","line"],emailKey:"payment"},{key:"subscription",label:"è´å©çæ
",desc:"æ¯æè´å©åç¨æåæ¶",group:"account",channels:["inApp","email","line"],emailKey:"subscription"},{key:"booking",label:"é ç´éç¥",desc:"é ç´ä»æ¬¾æåãè®æ´",group:"account",channels:["inApp","line"]},{key:"credit_card_payment_due",label:"ä¿¡ç¨å¡ç¹³æ¬¾æé",desc:"ä¿¡ç¨å¡ç¹³æ¬¾æ¥åæåæé",group:"account",channels:["inApp","line"]},{key:"goal_progress",label:"ç®æ¨é²åº¦æ´æ°",desc:"é 25% / 50% / 75%",group:"financial",channels:["inApp","line"]},{key:"goal_achieved",label:"ç®æ¨éæ",desc:"å®æç®æ¨çæ
¶ç¥éç¥",group:"financial",channels:["inApp","line"]},{key:"monthly_record",label:"æ¯æç´é",desc:"æåæéè¨éæ¬æå¸³æ¶é¤é¡",group:"financial",channels:["inApp","line"],syncKeys:["settlement_reminder","monthly_summary"]},{key:"policy_premium_due",label:"ä¿å®ç¹³è²»æé",desc:"ä¿å®ç¹³è²»åæåæé",group:"insurance",channels:["inApp","line"],hasSubSettings:!0},{key:"marketing",label:"è¡é·è¨æ¯",desc:"æ°åè½ãåªæ è³è¨",group:"marketing",channels:["inApp","email"],emailKey:"marketingEmails"}],eD={inApp:{label:"App",icon:eg.A},email:{label:"Email",icon:ey.A},line:{label:"LINE",icon:function({className:e}){return(0,a.jsx)("svg",{className:e,viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",children:(0,a.jsx)("path",{d:"M19.365 9.863c.349 0 .63.285.63.631 0 .345-.281.63-.63.63H17.61v1.125h1.755c.349 0 .63.283.63.63 0 .344-.281.629-.63.629h-2.386c-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.63.63-.63h2.386c.346 0 .627.285.627.63 0 .349-.281.63-.63.63H17.61v1.125h1.755zm-3.855 3.016c0 .27-.174.51-.432.596-.064.021-.133.031-.199.031-.211 0-.391-.09-.51-.25l-2.443-3.317v2.94c0 .344-.279.629-.631.629-.346 0-.626-.285-.626-.629V8.108c0-.27.173-.51.43-.595.06-.023.136-.033.194-.033.195 0 .375.104.495.254l2.462 3.33V8.108c0-.345.282-.63.63-.63.345 0 .63.285.63.63v4.771zm-5.741 0c0 .344-.282.629-.631.629-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.63.63-.63.346 0 .628.285.628.63v4.771zm-2.466.629H4.917c-.345 0-.63-.285-.63-.629V8.108c0-.345.285-.63.63-.63.348 0 .63.285.63.63v4.141h1.756c.348 0 .629.283.629.63 0 .344-.282.629-.629.629M24 10.314C24 4.943 18.615.572 12 .572S0 4.943 0 10.314c0 4.811 4.27 8.842 10.035 9.608.391.082.923.258 1.058.59.12.301.079.766.038 1.08l-.164 1.02
8c-.045.301-.24 1.186 1.049.645 1.291-.539 6.916-4.078 9.436-6.975C23.176 14.393 24 12.458 24 10.314"})})}}},eF=[30,21,14,7,3,1],e_=[14,7,3];function eV(e){return Array.from(new Set(e.filter(e=>Number.isFinite(e)&&e>=0))).sort((e,t)=>t-e)}function eB(e){return e.syncKeys??[e.key]}function eL(e){let t={};for(let s of eP)if(s.channels.includes(e))for(let e of eB(s))t[e]=!0;return t}let ez={login:!1,payment:!1,subscription:!1,marketingEmails:!1};function eO(){let{toast:e}=(0,p.dj)(),{user:t}=(0,f.A)(),{isAdmin:s}=(0,eR.q)(),[i,l]=(0,r.useState)(!0),[n,c]=(0,r.useState)(!1),[o,u]=(0,r.useState)("idle"),[m,x]=(0,r.useState)(!1),[j,v]=(0,r.useState)(null),[b,w]=(0,r.useState)({email:{...ez},inApp:eL("inApp"),line:eL("line"),premiumReminderDays:[...e_]}),N=(0,r.useRef)({}),C=(0,r.useRef)(null),A=(0,r.useRef)(null),S=(0,r.useRef)(null),E=(0,r.useRef)(null),I=(0,r.useRef)(!0);(0,r.useEffect)(()=>()=>{E.current&&clearTimeout(E.current)},[]),(0,r.useEffect)(()=>{if(I.current=!0,!t?.uid||!y.db)return l(!1),()=>{I.current=!1};let e=(0,g.doc)(y.db,"users",t.uid),s=(0,g.aQ)(e,e=>{if(!I.current)return;let t=e.data()??{};x("string"==typeof t.lineUserId&&t.lineUserId.length>0);let s=t.notificationSettings??{},a=s.inApp&&"object"==typeof s.inApp?s.inApp:{},r=s.line&&"object"==typeof s.line?s.line:{},i=eL("inApp"),n=eL("line");for(let e of Object.keys(i))"boolean"==typeof a[e]&&(i[e]=a[e]);for(let e of Object.keys(n))"boolean"==typeof r[e]&&(n[e]=r[e]);let c={login:"boolean"==typeof s.login?s.login:ez.login,payment:"boolean"==typeof s.payment?s.payment:ez.payment,subscription:"boolean"==typeof s.subscription?s.subscription:ez.subscription,marketingEmails:"boolean"==typeof s.marketingEmails?s.marketingEmails:ez.marketingEmails};w(e=>({...e,email:c,inApp:i,line:n})),l(!1)},e=>{(0,k.vV)("[NotificationsSettings] user onSnapshot failed",e),l(!1)});return(async()=>{try{let e=await eT.s.getPreferences(t.uid),s=Array.isArray(e?.premiumReminderDays)?e.premiumReminderDays:[...e_];I.current&&w(e=>({...e,premiumReminderDays:eV(s)}))}catch(e){(0,k.vV)("[NotificationsSettings] load premiumReminderDays failed",e)}})(),()=>{I.current=!1,s(),A.current&&clearTimeout(A.current),S.current&&clearTimeout(S.current)}},[t?.uid]);let R=(0,r.useCallback)(async()=>{if(!t?.uid||!y.db)return;let e={...N.current},s=C.current;if(N.current={},C.current=null,0===Object.keys(e).length&&!s)return void u("idle");try{let a=[];if(Object.keys(e).length>0&&a.push((0,g.mZ)((0,g.doc)(y.db,"users",t.uid),{...e,updatedAt:new Date})),s&&a.push(eT.s.updatePreference(t.uid,"premiumReminderDays",eV(s))),await Promise.all(a),!I.current)return;u("saved"),S.current&&clearTimeout(S.current),S.current=setTimeout(()=>{I.current&&u("idle")},2e3)}catch(t){if((0,k.vV)("[NotificationsSettings] save failed",t),!I.current)return;N.current={...e,...N.current},s&&!C.current&&(C.current=s),u("error")}},[t?.uid]),T=(0,r.useCallback)(()=>{A.current&&clearTimeout(A.current),u("saving"),A.current=setTimeout(()=>{R()},500)},[R]),$=(0,r.useCallback)((e,t)=>{v({text:`${eD[e].label} éç¥å·²${t?"éå":"éé"}`,key:Date.now()}),E.current&&clearTimeout(E.current),E.current=setTimeout(()=>{I.current&&v(null)},2e3)},[]),P=(0,r.useCallback)((e,t,s)=>{if("email"===t){if(!e.emailKey)return;let t=e.emailKey;w(e=>({...e,email:{...e.email,[t]:s}})),N.current[`notificationSettings.${t}`]=s}else if("inApp"===t){let t=eB(e);w(e=>{let a={...e.inApp};return t.forEach(e=>{a[e]=s}),{...e,inApp:a}}),t.forEach(e=>{N.current[`notificationSettings.inApp.${e}`]=s})}else if("line"===t){let t=eB(e);w(e=>{let a={...e.line};return t.forEach(e=>{a[e]=s}),{...e,line:a}}),t.forEach(e=>{N.current[`notificationSettings.line.${e}`]=s})}$(t,s),T()},[T,$]),D=(0,r.useCallback)((e,t)=>{w(s=>{let a=eV(t?[...s.premiumReminderDays,e]:s.premiumReminderDays.filter(t=>t!==e));return C.current=a,{...s,premiumReminderDays:a}}),T()},[T]),F=(0,r.useCallback)(async(t="system")=>{if(!y.auth?.currentUser)return void e({title:"å°æªç»å
¥",description:"è«å
ç»å
¥å測試éç¥"});c(!0);try{let s=await y.auth.currentUser.getIdToken(),a=await fetch("/api/me/notifications/test",{method:"POST",headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"},body:JSON.stringify({category:t})}),r=await a.json().catch(()=>({}));if(!a.ok)throw Error(r.error||`HTTP ${a.status}`);if(r.lineSent)e({title:"測試éç¥å·²éåº",description:"è«æ¥çå³ä¸è§é´éºè LINE 宿¹å¸³èè¨æ¯"});
8else if("no_line_binding"===r.lineSkippedReason)e({title:"App å
§éç¥å·²éåº",description:"å°æªç¶å® LINEï¼è«å
ç¶å®å¾å測試 LINE æ¨æ"});else{let t=r.lineSkippedReason;e({title:"App å
§éç¥å·²éåº",description:t?`LINE æªæ¨éï¼${t}`:"è«æ¥çå³ä¸è§é´éº"})}}catch(t){e({title:"測試失æ",description:t instanceof Error?t.message:"è«ç¨å¾å試"})}finally{c(!1)}},[e]);return(0,a.jsxs)(a.Fragment,{children:[j&&(0,a.jsx)("div",{role:"status","aria-live":"polite",className:"fixed inset-x-0 bottom-[calc(env(safe-area-inset-bottom)+5.5rem)] z-[60] flex justify-center px-6 md:hidden",children:(0,a.jsx)("div",{className:"animate-in fade-in slide-in-from-bottom-2 rounded-full bg-foreground px-4 py-2.5 text-sm font-medium text-background shadow-lg",children:j.text})},j.key),(0,a.jsxs)(d.Zp,{children:[(0,a.jsxs)(d.aR,{className:"flex flex-row items-start justify-between gap-4 space-y-0",children:[(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)(d.ZB,{children:"éç¥è¨å®"}),(0,a.jsx)(d.BT,{children:"åæå¾èªåå²å"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 shrink-0",children:[(0,a.jsx)(eU,{status:o,onRetry:R}),s&&(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-1",children:[(0,a.jsxs)(h.$,{type:"button",variant:"ghost",size:"sm",onClick:()=>void F("system"),disabled:n||!t?.uid,children:[(0,a.jsx)(eg.A,{className:"h-4 w-4 mr-1"}),n?"測試ä¸...":"測試ï¼ç³»çµ±ï¼"]}),(0,a.jsx)(h.$,{type:"button",variant:"ghost",size:"sm",onClick:()=>void F("login"),disabled:n||!t?.uid,children:"測試ç»å
¥"}),(0,a.jsx)(h.$,{type:"button",variant:"ghost",size:"sm",onClick:()=>void F("goal_progress"),disabled:n||!t?.uid,children:"æ¸¬è©¦ç®æ¨"})]})]})]}),(0,a.jsxs)(d.Wu,{className:"space-y-6",children:[t?.uid&&(0,a.jsx)(eI.I,{uid:t.uid,initiallyLinked:m,onLinkedChange:x}),(0,a.jsx)(eS,{}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"hidden md:grid grid-cols-[1fr_64px_64px_64px] gap-x-4 items-center text-xs font-medium uppercase tracking-wider text-muted-foreground border-b pb-2",children:[(0,a.jsx)("div",{children:"äºä»¶"}),(0,a.jsx)("div",{className:"text-center",children:"App"}),(0,a.jsx)("div",{className:"text-center",children:"Email"}),(0,a.jsx)("div",{className:"text-center",children:"LINE"})]}),e$.map(e=>{let s=eP.filter(t=>
8t.group===e.key);return 0===s.length?null:(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("h4",{className:"text-xs font-semibold tracking-wider text-muted-foreground mt-3 mb-1",children:e.label}),s.map(e=>(0,a.jsx)(eM,{event:e,state:b,lineLinked:m,disabled:i||!t?.uid,onChannelChange:P,onPremiumDayToggle:D},e.key))]},e.key)})]})]})]})]})}function eU({status:e,onRetry:t}){return"idle"===e?null:"saving"===e?(0,a.jsxs)("span",{className:"text-xs text-muted-foreground flex items-center gap-1",children:[(0,a.jsx)(eb.A,{className:"h-3 w-3 animate-spin"}),"å²åä¸..."]}):"saved"===e?(0,a.jsxs)("span",{className:"text-xs text-green-600 dark:text-green-400 flex items-center gap-1",children:[(0,a.jsx)(ew.A,{className:"h-3 w-3"}),"å·²å²å"]}):(0,a.jsxs)("span",{className:"text-xs text-destructive flex items-center gap-1.5",children:[(0,a.jsx)(eN.A,{className:"h-3 w-3"}),"å²å失æ",(0,a.jsx)(h.$,{type:"button",variant:"link",size:"sm",className:"h-auto p-0 text-xs",onClick:t,children:"é試"})]})}function eM({event:e,state:t,lineLinked:s,disabled:r,onChannelChange:i,onPremiumDayToggle:l}){let n=eB(e)[0],c=!1!==t.inApp[n],d=!1!==t.line[n],o=!!e.emailKey&&t.email[e.emailKey],m=e.channels.includes("inApp"),h=e.channels.includes("email"),x=e.channels.includes("line"),p=[{channel:"inApp",supported:m,checked:c,disabled:r},{channel:"email",supported:h,checked:o,disabled:r||!0,hint:"Email éç¥åè½æ«æåç¨"},{channel:"line",supported:x,checked:d,disabled:r||!s,hint:s?void 0:"è«å
ç¶å® LINE æææ¨é"}];return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-3 py-3 md:hidden",children:[(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("p",{className:"text-sm font-medium",children:e.label}),e.desc&&(0,a.jsx)("p",{className:"mt-0.5 text-xs text-muted-foreground",children:e.desc})]}),(0,a.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:p.filter(e=>e.supported).map(t=>(0,a.jsx)(eW,{channel:t.channel,checked:t.checked,disabled:t.disabled,hint:t.hint,eventLabel:e.label,onChange:s=>i(e,t.channel,s)},t.channel))})]}),(0,a.jsxs)("div",{className:"hidden md:grid grid-cols-[1fr_64px_64px_64px] gap-x-4 items-center py-2",children:[(0,a.jsxs)("div",{className:"space-y-0.5 min-w-0",children:[(0,a.jsx)(u.J,{className:"cursor-default",children:e.label}),e.desc&&(0,a.jsx)("p",{className:"text-xs text-muted-foreground truncate",children:e.desc})]}),(0,a.jsx)(eZ,{supported:m,checked:c,disabled:r,onChange:t=>i(e,"inApp",t),tooltipUnsupported:`${e.label}䏿¯æ´ App å
§éç¥`}),(0,a.jsx)(eZ,{supported:h,checked:o,disabled:r||!0,onChange:t=>i(e,"email",t),tooltipUnsupported:`${e.label}䏿¯æ´ Email éç¥`,tooltipDisabled:"Email éç¥åè½æ«æåç¨"}),(0,a.jsx)(eZ,{supported:x,checked:d,disabled:r||!s,onChange:t=>i(e,"line",t),tooltipUnsupported:`${e.label}䏿¯æ´ LINE éç¥`,tooltipDisabled:s?void 0:"è«å
ç¶å® LINE æææ¨é"})]}),e.hasSubSettings&&"policy_premium_due"===e.key&&(0,a.jsx)("div",{className:"pl-4 pb-3 pt-1 border-l-2 border-muted ml-1 -mt-1",children:(0,a.jsx)(eH,{selectedDays:t.premiumReminderDays,disabled:r||!c&&!d,onToggle:l})})]})}function eW({channel:e,checked:t,disabled:s,hint:r,eventLabel:i,onChange:l}){let n=eD[e],c=n.icon,d=t?"å·²éå":"å·²éé";return(0,a.jsx)("button",{type:"button",role:"switch","aria-checked":t,"aria-label":`${i}ï¼${n.label} éç¥${d}`,title:r??`${n.label} éç¥${d}`,disabled:s,onClick:()=>l(!t),className:(0,eA.cn)("flex h-11 w-11 items-center justify-center rounded-xl border transition-all active:scale-95",t?"border-accent/40 bg-accent/15 text-accent":"border-transparent bg-muted text-muted-foreground",s&&"cursor-not-allowed opacity-40 active:scale-100"),children:(0,a.jsx)(c,{className:"h-5 w-5"})})}function eZ({supported:e,checked:t,disabled:s,onChange:r,tooltipUnsupported:i,tooltipDisabled:l}){if(!e)return(0,a.jsx)(eE.m_,{content:i,children:(0,a.jsx)("div",{className:"flex justify-center cursor-help text-muted-foreground select-none",children:"â"})});let n=(0,a.jsx)(ek.d,{checked:t,disabled:s,onCheckedChange:r});return l?(0,a.jsx)("div",{className:"flex justify-center",children:(0,a.jsx)(eE.m_,{content:l,children:(0,a.jsx)("div",{children:n})})}):(0,a.jsx)("div",{className:"flex justify-center",children:n})}function eH({selectedDays:e,disabled:t,onToggle:s}){return(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"æåæé天æ¸ï¼å¯å¤é¸ï¼"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-x-4 gap-y-2",children:eF.map(r=>{let i=`premium-reminder-day-${r}`;return(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)(S.S,{id:i,checked:e.includes(r),disabled:t,onCheckedChange:e=>s(r,!!e)}),(0,a.jsxs)(u.J,{htmlFor:i,className:"text-xs font-normal cursor-pointer",children:["æå ",r," 天"]})]},r)})})]})}var eJ=s(79705),eG=s(575),eY=s(42603),eq=s(86754),eX=s(44844),eK=s(80345);function eQ(){let{toast:e}=(0,p.dj)(),{preferences:t,isLoading:s,toggleEnabled:i,setVolume:l,toggleCategory:n}=(0,eG.D)(),{playTestSound:c}=(0,eY.f)(),[o,m]=(0,r.useState)(!1),x=async()=>{m(!0);try{await c()?e({title:"æ¸¬è©¦é³æææ¾æå",description:"æ¨çç覽å¨å·²å
è¨±ææ¾é³æ"}):e({title:"æ¸¬è©¦é³æææ¾å¤±æ",description:"è«ç¢ºä¿é³ææªæ¡åå¨ä¸ç覽å¨å
è¨±ææ¾é³æ",variant:"destructive"})}catch(t){e({title:"æ¸¬è©¦é³æææ¾å¤±æ",description:"ç¼çé¯èª¤ï¼è«ç¨å¾å試",variant:"destructive"})}finally{m(!1)}},f=async e=>{await l(e[0])},j=Math.round(100*t.volume);return(0,a.jsxs)(d.Zp,{children:[(0,a.jsxs)(d.aR,{children:[(0,a.jsxs)(d.ZB,{className:"flex items-center gap-2",children:[t.enabled?(0,a.jsx)(eq.A,{className:"h-5 w-5"}):(0,a.jsx)(eX.A,{className:"h-5 w-5"}),"鳿è¨å®"]}),(0,a.jsx)(d.BT,{children:"管çæç¨ç¨å¼ç鳿æéåè½"})]}),(0,a.jsxs)(d.Wu,{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"space-y-0.5",children:[(0,a.jsx)(u.J,{htmlFor:"sound-enabled",className:"text-base font-medium",children:"åç¨é³æ"}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"éåå¾å°å¨ç¹å®æä½æææ¾é³ææé"})]}),(0,a.jsx)(ek.d,{id:"sound-enabled",checked:t.enabled,onCheckedChange:()=>i(),disabled:s})]}),(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)(u.J,{className:"text-base font-medium",children:"é³é"}),(0,a.jsxs)("span",{className:"text-sm text-muted-foreground",children:[j,"%"]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-4",children:[(0,a.jsx)(eX.A,{className:"h-4 w-4 text-muted-foreground"}),(0,a.jsx)(eJ.A,{value:[t.volume],onValueChange:f,min:0,max:1,step:.1,disabled:!t.enabled||s,className:"flex-1"}),(0,a.jsx)(eq.A,{className:"h-4 w-4 text-muted-foreground"})]})]}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)(u.J,{className:"text-base font-medium",children:"鳿åé¡"}),(0,a.jsxs)("div",{className:"flex items-center justify-between rounded-lg border p-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)(eg.A,{className:"h-5 w-5 text-muted-foreground"}),(0,a.jsxs)("div",{className:"space-y-0.5",children:[(0,a.jsx)(u.J,{htmlFor:"alerts-enabled",children:"æé鳿"}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"éç¥ãé¯èª¤ãè¦åã財åæéç鳿"})]})]}),(0,a.jsx)(ek.d,{id:"alerts-enabled",checked:t.categories.alerts,onCheckedChange:()=>n("alerts"),disabled:!t.enabled||s})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between rounded-lg border p-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)(eK.A,{className:"h-5 w-5 text-muted-foreground"}),(0,a.jsxs)("div",{className:"space-y-0.5",children:[(0,a.jsx)(u.J,{htmlFor:"tasks-enabled",children:"ä»»å鳿"}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"ä»»å宿ã忏¬å®æç鳿"})]})]}),(0,a.jsx)(ek.d,{id:"tasks-enabled",checked:t.categories.tasks,onCheckedChange:()=>n("tasks"),disabled:!t.enabled||s})]})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between rounded-lg border border-dashed p-4",children:[(0,a.jsxs)("div",{className:"space-y-0.5",children:[(0,a.jsx)(u.J,{className:"text-base font-medium",children:"æ¸¬è©¦é³æ"}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"黿æéæ¸¬è©¦é³ææ¯å¦æ£å¸¸ææ¾ï¼åæè§£éç覽å¨èªåææ¾éå¶"})]}),(0,a.jsx)(h.$,{variant:"outline",onClick:x,disabled:o,children:o?"ææ¾ä¸...":"ææ¾æ¸¬è©¦é³æ"})]}),(0,a.jsx)("div",{className:"rounded-lg bg-muted/50 p-4",children:(0,a.jsxs)("div",{className:"flex items-start gap-2",children:[(0,a.jsx)(eN.A,{className:"h-5 w-5 text-amber-500 mt-0.5"}),(0,a.jsxs)("div",{className:"text-sm text-muted-foreground",children:[(0,a.jsx)("p",{className:"font-medium text-foreground mb-1",children:"注æäºé
"}),(0,a.jsxs)("ul",{className:"list-disc list-inside space-y-1",children:[(0,a.jsx)("li",{children:"é¨åç覽å¨éè¦å
èé é¢äºåï¼å¦é»ææéï¼æè½ææ¾é³æ"}),(0,a.jsx)("li",{children:"è«ç¢ºä¿æ¨çè£ç½®æªéé³ä¸é³é已調æ´è³é©ç¶å¤§å°"}),(0,a.jsx)("li",{children:"鳿è¨å®æèªåå²å䏦忥å°é²ç«¯"})]})]})]})})]})]})}var e0=s(10250),e1=s(7004),e2=s(19726),e3=s(15268),e4=s(38187),e5=s(21016),e6=s(82331),e8=s(84569),e7=s(71899),e9=s(1933),te=s(54296),tt=s(42119),ts=s(3379);s(83881);let ta=async()=>
8{if(!y.auth||!y.auth.currentUser)throw Error("使ç¨è
æªç»å
¥");try{let e=new w.FacebookAuthProvider;e.addScope("email"),e.addScope("public_profile");let t=await (0,w.linkWithPopup)(y.auth.currentUser,e);return(0,k.fH)("Facebook 帳æ¶é£çµæå:",y.auth.currentUser.uid),t}catch(e){if((0,k.vV)("é£çµ Facebook 帳æ¶å¤±æ:",e),"auth/provider-already-linked"===e.code)throw Error("æ¤ Facebook 帳æ¶å·²é£çµå°å
¶ä»å¸³è");if("auth/credential-already-in-use"===e.code)throw Error("æ¤ Facebook 帳æ¶å·²è¢«å
¶ä»å¸³è使ç¨");if("auth/popup-closed-by-user"===e.code)throw Error("ç»å
¥è¦çªè¢«éé");if("auth/popup-blocked"===e.code)throw Error("å½åºè¦çªè¢«ç覽å¨é»æ");throw Error(`é£çµ Facebook 帳æ¶å¤±æ: ${e.message||"æªç¥é¯èª¤"}`)}};var tr=s(71931);function ti(){let{toast:e}=(0,p.dj)(),{user:t,auth:i}=(0,f.A)(),[l,n]=(0,r.useState)(!1),[c,m]=(0,r.useState)(!1),[x,j]=(0,r.useState)(null),[v,g]=(0,r.useState)(!1),[b,N]=(0,r.useState)(""),[C,A]=(0,r.useState)(""),[S,E]=(0,r.useState)(""),[I,R]=(0,r.useState)(!1),T=(()=>{if(!t)return[];let e=[{id:"password",name:"é»åéµä»¶/å¯ç¢¼",icon:(0,a.jsx)(ey.A,{className:"h-4 w-4"}),color:"bg-blue-500",isLinked:t.providerData.some(e=>"password"===e.providerId),canLink:!t.providerData.some(e=>"password"===e.providerId)},{id:"google.com",name:"Google",icon:(0,a.jsx)(e6.A,{className:"h-4 w-4"}),color:"bg-red-500",isLinked:t.providerData.some(e=>"google.com"===e.providerId),canLink:!0},{id:"line",name:"LINE",icon:(0,a.jsx)(e8.A,{className:"h-4 w-4"}),color:"bg-green-500",isLinked:c||t.providerData.some(e=>e.providerId===y.OIDC_LINE_PROVIDER_ID||e.providerId?.startsWith("oidc")),canLink:!0},{id:"facebook.com",name:"Facebook",icon:(0,a.jsx)(e7.A,{className:"h-4 w-4"}),color:"bg-blue-600",isLinked:t.providerData.some(e=>"facebook.com"===e.providerId),canLink:!0}],s=t.providerData.some(e=>"apple.com"===e.providerId);return((0,O.WV)()||s)&&e.push({id:"apple.com",name:"Apple",icon:(0,a.jsx)(e9.A,{className:"h-4 w-4"}),color:"bg-black",isLinked:s,canLink:(0,O.WV)()}),e})();(0,r.useEffect)(()=>{(async()=>{try{if(!i)return;let t=await (0,w.getRedirectResult)(i);if(!t)return;t.user?.providerData?.some(e=>e.providerId===y.OIDC_LINE_PROVIDER_ID||e.providerId?.startsWith("oidc"))&&(m(!0),e({title:"é£çµæå",description:"LINE 帳æ¶å·²èæ¨ç®åç帳æ¶é£çµ"}),window.location.reload())}catch(t){(0,k.vV)("èç LINE é£çµåå³å¤±æ:",t),e({title:"é£çµå¤±æ",description:t?.message||"è«ç¨å¾å試",variant:"destructive"}),n(!1),j(null)}})()},[i,e]);let $=async()=>{if(!t||!i)return void e({title:"é¯èª¤",description:"使ç¨è
æªç»å
¥",variant:"destructive"});n(!0),j("google.com");try{let a=await (0,ts.gU)(),r=await a.user.getIdToken(),i=(await Promise.resolve().then(s.bind(s,76458))).functions;if(!i)throw Error("Firebase Functions æªåå§å");let l=(0,tr.httpsCallable)(i,"linkGoogleAccount");await l({auth:{uid:t.uid},data:{googleToken:r}}),e({title:"é£çµæå",description:"Google 帳æ¶å·²æåé£çµå°æ¨ç帳æ¶"}),window.location.reload()}catch(t){(0,k.vV)("é£çµ Google 帳æ¶å¤±æ:",t),"auth/provider-already-linked"===t.code?e({title:"å·²é£çµ",description:"æ¤ Google 帳æ¶å·²é£çµå°å
¶ä»å¸³æ¶",variant:"destructive"}):"auth/credential-already-in-use"===t.code?e({title:"帳æ¶è¡çª",description:"æ¤ Google 帳æ¶å·²è¢«å
¶ä»ç¨æ¶ä½¿ç¨",variant:"destructive"}):e({title:"é£çµå¤±æ",description:t.message||"ç¡æ³é£çµ Google 帳æ¶",variant:"destructive"})}finally{n(!1),j(null)}},P=async()=>{if(!t||!i)return void e({title:"é¯èª¤",description:"使ç¨è
æªç»å
¥",variant:"destructive"});n(!0),j("facebook.com");try{await ta(),e({title:"é£çµæå",description:"Facebook 帳æ¶å·²æåé£çµ"}),window.location.reload()}catch(t){if((0,k.vV)("é£çµ Facebook 帳æ¶å¤±æ:",t),t?.code==="auth/provider-already-linked"){e({title:"å·²é£çµ",description:"æ¤å¸³æ¶å·²é£çµ Facebook"}),n(!1),j(null);return}if(t?.code==="auth/credential-already-in-use"){e({title:"é£çµå¤±æ",description:"æ¤ Facebook 帳æ¶å·²è¢«å
¶ä»å¸³è使ç¨",variant:"destructive"}),n(!1),j(null);return}e({title:"é£çµå¤±æ",description:t?.message||"ç¡æ³é£çµ Facebook 帳æ¶",variant:"destructive"})}finally{n(!1),j(null)}},D=async()=>
8{if(!t||!i)return void e({title:"é¯èª¤",description:"使ç¨è
æªç»å
¥",variant:"destructive"});n(!0),j("apple.com");try{await (0,O.uz)(),e({title:"é£çµæå",description:"Apple 帳æ¶å·²æåé£çµ"}),window.location.reload()}catch(t){t?.code==="auth/provider-already-linked"?e({title:"å·²é£çµ",description:"æ¤å¸³æ¶å·²é£çµ Apple"}):t?.code==="auth/credential-already-in-use"?e({title:"é£çµå¤±æ",description:"æ¤ Apple 帳æ¶å·²è¢«å
¶ä»å¸³è使ç¨",variant:"destructive"}):t?.code!=="auth/popup-closed-by-user"&&e({title:"é£çµå¤±æ",description:t?.message||"ç¡æ³é£çµ Apple 帳æ¶",variant:"destructive"})}finally{n(!1),j(null)}},F=async()=>{if(!t||!i)return void e({title:"é¯èª¤",description:"使ç¨è
æªç»å
¥",variant:"destructive"});n(!0),j("line");try{localStorage.setItem("lineLoginReturnUrl","/dashboard/settings");let e=new w.OAuthProvider(y.OIDC_LINE_PROVIDER_ID);e.addScope("openid"),e.addScope("profile"),e.addScope("email"),await (0,w.linkWithRedirect)(t,e)}catch(t){if((0,k.vV)("é£çµ LINE 帳æ¶å¤±æ:",t),t?.code==="auth/provider-already-linked"){m(!0),e({title:"å·²é£çµ",description:"æ¤å¸³æ¶å·²é£çµ LINE"}),n(!1),j(null);return}e({title:"é£çµå¤±æ",description:t?.message||"ç¡æ³é£çµ LINE 帳æ¶",variant:"destructive"}),n(!1),j(null)}},_=async()=>{t&&i?(t.providerData.some(e=>"password"===e.providerId),g(!0)):e({title:"é¯èª¤",description:"使ç¨è
æªç»å
¥",variant:"destructive"})},V=async s=>{if(s.preventDefault(),!t||!i)return void e({title:"é¯èª¤",description:"使ç¨è
æªç»å
¥",variant:"destructive"});let a=t.providerData.some(e=>"password"===e.providerId);if(!C||!S)return void e({title:"è«å¡«å¯«æææ¬ä½",description:"è«è¼¸å
¥æ°å¯ç¢¼",variant:"destructive"});if(C!==S)return void e({title:"å¯ç¢¼ä¸ä¸è´",description:"æ°å¯ç¢¼è確èªå¯ç¢¼ä¸ç¬¦",variant:"destructive"});if(C.length<8)return void e({title:"å¯ç¢¼å¤ªç",description:"æ°å¯ç¢¼è³å°éè¦ 8 ååå
",variant:"destructive"});if(!/[A-Z]/.test(C)||!/[a-z]/.test(C)||!/[0-9]/.test(C)||!/[^A-Za-z0-9]/.test(C))return void e({title:"å¯ç¢¼æ ¼å¼é¯èª¤",description:"å¯ç¢¼éå
å«å¤§å¯«åæ¯ãå°å¯«åæ¯ãæ¸ååç¹æ®åå
",variant:"destructive"});R(!0);try{if(a&&b){let e=w.EmailAuthProvider.credential(t.email,b);await (0,w.reauthenticateWithCredential)(t,e)}else if(!a&&t.providerData.some(e=>"google.com"===e.providerId))try{let s=new w.GoogleAuthProvider;await (0,w.reauthenticateWithPopup)(t,s),e({title:"身份é©èæå",description:"Google èº«ä»½å·²éæ°é©èï¼å¯ä»¥è¨å®å¯ç¢¼"})}catch(t){(0,k.vV)("Google éæ°é©è失æ:",t),e({title:"é©è失æ",description:"ç¡æ³é©è Google 身份ï¼è«ç¨å¾å試",variant:"destructive"}),R(!1);return}await (0,w.updatePassword)(t,C),e({title:a?"å¯ç¢¼è®æ´æå":"å¯ç¢¼è¨å®æå",description:a?"æ¨çå¯ç¢¼å·²æåæ´æ°":"æ¨çå¯ç¢¼å·²æåè¨å®"}),g(!1),N(""),A(""),E(""),window.location.reload()}catch(t){(0,k.vV)("å¯ç¢¼è®æ´é¯èª¤:",t),"auth/wrong-password"===t.code?e({title:"ç¶åå¯ç¢¼é¯èª¤",description:"è«ç¢ºèªæ¨è¼¸å
¥çç¶åå¯ç¢¼æ¯å¦æ£ç¢º",variant:"destructive"}):"auth/weak-password"===t.code?e({title:"å¯ç¢¼å¼·åº¦ä¸è¶³",description:"æ°å¯ç¢¼å¼·åº¦ä¸è¶³ï¼è«ä½¿ç¨æ´å¼·çå¯ç¢¼",variant:"destructive"}):"auth/requires-recent-login"===t.code?e({title:"éè¦éæ°é©è",description:"çºäºå®å
¨èµ·è¦ï¼è«éæ°ç»å
¥å¾åå試è¨å®å¯ç¢¼",variant:"destructive"}):e({title:"å¯ç¢¼è®æ´å¤±æ",description:t.message||"è«ç¨å¾å試",variant:"destructive"})}finally{R(!1)}},B=async a=>{if(!t||!i)return void e({title:"é¯èª¤",description:"使ç¨è
æªç»å
¥",variant:"destructive"});if(t.providerData.filter(e=>"password"!==e.providerId).length<=1)return void e({title:"ç¡æ³è§£é¤é£çµ",description:"æ¨å¿
é è³å°ä¿çä¸åç»å
¥æ¹å¼",variant:"destructive"});n(!0);try{let r="line"===a?y.OIDC_LINE_PROVIDER_ID:a;await (0,w.unlink)(t,r);try{let e=(await Promise.resolve().then(s.bind(s,76458))).functions;if(e){let t=(0,tr.httpsCallable)(e,"unlinkAccount");await t({provider:r})}}catch{}e({title:"è§£é¤é£çµæå",description:"ç»å
¥æ¹å¼å·²æåè§£é¤é£çµ"}),window.location.reload()}catch(t){if((0,k.vV)("è§£é¤é£çµå¤±æ:",t),t?.code==="auth/no-such-provider")return void e({title:"æªé£çµ",description:"æ¤ç»å
8
¥æ¹å¼ç®åæªé£çµ",variant:"destructive"});"functions/failed-precondition"===t.code?e({title:"ç¡æ³è§£é¤é£çµ",description:"æ¨å¿
é è³å°ä¿çä¸åç»å
¥æ¹å¼",variant:"destructive"}):e({title:"è§£é¤é£çµå¤±æ",description:t.message||"ç¡æ³è§£é¤é£çµ",variant:"destructive"})}finally{n(!1)}};return t?(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)(d.Zp,{children:[(0,a.jsxs)(d.aR,{children:[(0,a.jsxs)(d.ZB,{className:"flex items-center gap-2",children:[(0,a.jsx)(e2.A,{className:"h-5 w-5"}),"ç»å
¥æ¹å¼ç®¡ç"]}),(0,a.jsx)(d.BT,{children:"ç®¡çæ¨ç帳æ¶ç»å
¥æ¹å¼ï¼å¯ä»¥é£çµå¤åç»å
¥æ¹å¼ä»¥æé«ä¾¿å©æ§"})]}),(0,a.jsx)(d.Wu,{className:"space-y-4",children:T.map(e=>(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between p-4 border rounded-lg",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:`p-2 rounded-full ${e.color} text-white`,children:e.icon}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"font-medium",children:e.name}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:e.isLinked?"å·²é£çµ":"æªé£çµ"})]})]}),(0,a.jsx)("div",{className:"flex items-center gap-2",children:e.isLinked?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(e4.E,{variant:"secondary",className:"flex items-center gap-1",children:[(0,a.jsx)(eK.A,{className:"h-3 w-3"}),"å·²é£çµ"]}),e.canLink&&"password"!==e.id&&(0,a.jsxs)(h.$,{variant:"outline",size:"sm",onClick:()=>B(e.id),disabled:l,children:[(0,a.jsx)(te.A,{className:"h-4 w-4 mr-1"}),"è§£é¤é£çµ"]}),"password"===e.id&&(0,a.jsxs)(h.$,{variant:"outline",size:"sm",onClick:_,disabled:l,children:[(0,a.jsx)(tt.A,{className:"h-4 w-4 mr-1"}),"è®æ´å¯ç¢¼"]})]}):e.canLink&&(0,a.jsx)(h.$,{variant:"outline",size:"sm",onClick:"google.com"===e.id?$:"line"===e.id?F:"facebook.com"===e.id?P:"apple.com"===e.id?D:"password"===e.id?_:()=>{},disabled:l||x===e.id,children:x===e.id?"èçä¸...":(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(tt.A,{className:"h-4 w-4 mr-1"}),"password"===e.id?"è¨å®å¯ç¢¼":"é£çµ"]})})})]}),"password"===e.id&&v&&(0,a.jsx)("div",{className:"ml-4 p-4 border rounded-lg bg-muted/50",children:(0,a.jsxs)("form",{onSubmit:V,className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(u.J,{className:"text-sm font-medium",children:t?.providerData.some(e=>"password"===e.providerId)?"å¯ç¢¼ç®¡ç":"è¨å®å¯ç¢¼"}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:t?.providerData.some(e=>"password"===e.providerId)?"è®æ´æ¨çç»å
¥å¯ç¢¼":"çºæ¨ç帳æ¶è¨å®å¯ç¢¼ï¼ä»¥ä¾¿ä½¿ç¨ é»åéµä»¶/å¯ç¢¼ç»å
¥"})]}),t?.providerData.some(e=>"password"===e.providerId)&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(u.J,{htmlFor:"current-password",children:"ç¶åå¯ç¢¼"}),(0,a.jsx)(o.p,{id:"current-password",type:"password",autoComplete:"current-password",value:b,onChange:e=>N(e.target.value),placeholder:"è«è¼¸å
¥ç¶åå¯ç¢¼",required:!0})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(u.J,{htmlFor:"new-password",children:t?.providerData.some(e=>"password"===e.providerId)?"æ°å¯ç¢¼":"å¯ç¢¼"}),(0,a.jsx)(o.p,{id:"new-password",type:"password",autoComplete:"new-password",value:C,onChange:e=>A(e.target.value),placeholder:"è«è¼¸å
¥å¯ç¢¼ï¼è³å° 8 ååå
ï¼",required:!0}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"å¯ç¢¼éå
å«ï¼å¤§å¯«åæ¯ãå°å¯«åæ¯ãæ¸åãç¹æ®åå
"})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(u.J,{htmlFor:"confirm-password",children:"確èªå¯ç¢¼"}),(0,a.jsx)(o.p,{id:"confirm-password",type:"password",autoComplete:"new-password",value:S,onChange:e=>E(e.target.value),placeholder:"è«å次輸å
¥å¯ç¢¼",required:!0})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(h.$,{type:"submit",disabled:I,children:I?"èçä¸...":t?.providerData.some(e=>"password"===e.providerId)?"確èªè®æ´":"確èªè¨å®"}),(0,a.jsx)(h.$,{type:"button",variant:"outline",onClick:()=>{g(!1),N(""),A(""),E("")},children:"åæ¶"})]})]})})]},e.id))})]}),(0,a.jsxs)(e5.Fc,{children:[(0,a.jsx)(eN.A,{className:"h-4 w-4"}),(0,a.jsxs)(e5.TN,{children:[(0,a.jsx)("strong",{children:"注æï¼"}),(0,a.jsxs)("ul",{className:"mt-2 space-y-1 text-sm",children:[(0,a.jsx)("li",{children:"⢠æ¨å¿
é è³å°ä¿çä¸åç»å
¥æ¹å¼"}),(0,a.jsx)("li",{children:"⢠é£çµå¤åç»å
¥æ¹å¼å¯ä»¥è®æ¨ä½¿ç¨ä»»ä¸æ¹å¼ç»å
¥"}),(0,a.jsx)("li",{children:"⢠解é¤é£çµå¾ï¼æ¨å°ç¡æ³ä½¿ç¨è©²æ¹å¼ç»å
¥"})]})]})]})]}):(0,a.jsxs)(e5.Fc,{children:[(0,a.jsx)(eN.A,{className:"h-4 w-4"}),(0,a.jsx)(e5.TN,{children:"è«å
ç»å
¥ä»¥ç®¡çæ¨ç帳æ¶é£çµè¨å®"})]})}var tl=s(37014);function tn({hasPassword:e,totpEnrolled:t}){let{toast:s}=(0,p.dj)(),{user:i,auth:l}=(0,f.A)(),d=l||y.auth,[m,j]=(0,r.useState)(!1),[v,b]=(0,r.useState)(!0),[N,C]=(0,r.useState)("idle"),[A,S]=(0,r.useState)(null),[E,I]=(0,r.useState)(!1),R=(0,n.mN)({resolver:(0,c.u)(X.yE),defaultValues:{password:""}}),T=(0,r.useCallback)(async()=>
8{if(!i||!y.db)return void b(!1);try{let e=await (0,g.getDoc)((0,g.doc)(y.db,"users",i.uid));j(e.data()?.emailLinkSignInEnabled===!0)}catch(e){(0,k.vV)("è®å emailLinkSignInEnabled 失æ:",e)}finally{b(!1)}},[i]);(0,r.useEffect)(()=>{T()},[T]),(0,r.useEffect)(()=>{!t&&m&&j(!1)},[t,m]);let $=!!(i?.emailVerified&&t),P=async t=>{if(i&&d){I(!0);try{if(e){if(!t.password.trim())return void s({title:"è«è¼¸å
¥ç®åå¯ç¢¼",variant:"destructive"});let e=w.EmailAuthProvider.credential(i.email,t.password);await (0,w.reauthenticateWithCredential)(i,e)}else{let e=i.providerData[0]?.providerId;if("google.com"===e)await (0,w.reauthenticateWithPopup)(i,new w.GoogleAuthProvider);else if("facebook.com"===e)await (0,w.reauthenticateWithPopup)(i,new w.FacebookAuthProvider);else{if(!(e===y.OIDC_LINE_PROVIDER_ID||e?.startsWith("oidc")))return void s({title:"䏿¯æ´çç»å
¥æ¹å¼",description:"è«å
ç¶å®é»åéµä»¶/å¯ç¢¼å¾åè®æ´æ¤è¨å®ã",variant:"destructive"});await (0,w.reauthenticateWithPopup)(i,new w.OAuthProvider(y.OIDC_LINE_PROVIDER_ID))}}if(null===A)return;await (0,tl.callFn)("setEmailLinkSignInEnabled",{enabled:A}),j(A),C("idle"),S(null),R.reset(),s({title:A?"å·²åç¨é£çµç»å
¥":"å·²ééé£çµç»å
¥",description:A?"æ¨ç¾å¨å¯ä»¥ä½¿ç¨ãå¯éç»å
¥é£çµãç»å
¥ï¼æ¯æ¬¡ä»é 輸å
¥é©èå¨ 6 碼ã":"é»åéµä»¶é£çµç»å
¥å·²ééã"})}catch(t){(0,k.vV)("æ´æ° emailLinkSignInEnabled 失æ:",t);let e=t?.code;if("auth/popup-closed-by-user"===e||"auth/cancelled-popup-request"===e){C("idle"),S(null);return}s({title:"è¨å®å¤±æ",description:t?.message||"è«ç¨å¾å試",variant:"destructive"})}finally{I(!1)}}};return(0,a.jsxs)("div",{className:"space-y-3 rounded-lg border bg-muted/20 p-4",children:[(0,a.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(ey.A,{className:"h-4 w-4"}),(0,a.jsx)(u.J,{htmlFor:"email-link-sign-in",children:"é»åéµä»¶é£çµç»å
¥"})]}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"åç¨å¾å¯å¨ç»å
¥é 使ç¨ãå¯éç»å
¥é£çµããé å®æä¿¡ç®±é©èãç¶å®é©èå¨ Appï¼ä¸æ¯æ¬¡ç»å
¥ä»é 輸å
¥ TOTP 6 碼ã"}),i?.emailVerified?null:(0,a.jsx)("p",{className:"text-xs text-amber-600 dark:text-amber-400",children:"è«å
å®æä¿¡ç®±é©èã"}),i?.emailVerified&&!t?(0,a.jsx)("p",{className:"text-xs text-amber-600 dark:text-amber-400",children:"è«å
ç¶å®é©èå¨ Appã"}):null]}),(0,a.jsx)(ek.d,{id:"email-link-sign-in",checked:m,disabled:v||E||"reauth"===N||!m&&!$,onCheckedChange:e=>{if(i){if(e){if(!i.emailVerified)return void s({title:"å°æªå®æä¿¡ç®±é©è",description:"è«å
é©èé»åéµä»¶å¾ååç¨é£çµç»å
¥ã",variant:"destructive"});if(!t)return void s({title:"è«å
ç¶å®é©èå¨",description:"åç¨é£çµç»å
¥åé ç¶å® TOTP é©èå¨ Appã",variant:"destructive"})}S(e),C("reauth"),R.reset()}},"aria-label":"åç¨é»åéµä»¶é£çµç»å
¥"})]}),"reauth"===N?(0,a.jsx)(x.lV,{...R,children:(0,a.jsxs)("form",{onSubmit:R.handleSubmit(P),className:"space-y-3 border-t pt-3",children:[(0,a.jsx)("p",{className:"text-sm font-medium",children:A?"åç¨åè«å
é©è身份":"ééåè«å
é©è身份"}),e?(0,a.jsx)(x.zB,{control:R.control,name:"password",render:({field:e})=>(0,a.jsxs)(x.eI,{children:[(0,a.jsx)(x.lR,{children:"ç®åå¯ç¢¼"}),(0,a.jsx)(x.MJ,{children:(0,a.jsx)(o.p,{type:"password",autoComplete:"current-password",...e})}),(0,a.jsx)(x.C5,{})]})}):(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"å°éåå½åºè¦çªè«æ¨éæ°ç»å
¥ä»¥é©è身份ã"}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(h.$,{type:"submit",disabled:E,children:E?"èçä¸â¦":"確èª"}),(0,a.jsx)(h.$,{type:"button",variant:"outline",onClick:()=>{C("idle"),S(null),R.reset()},children:"åæ¶"})]})]})}):null]})}async function tc(){try{await (0,tl.callFn)("setEmailLinkSignInEnabled",{enabled:!1})}catch(e){(0,k.vV)("è§£é¤ TOTP å¾éé emailLinkSignInEnabled 失æ
8:",e)}}var td=s(65396),to=s(95897);function tu(){let{toast:e}=(0,p.dj)(),{user:t,auth:s}=(0,f.A)(),i=s||y.auth,l=(0,to.$)(t),[m,j]=(0,r.useState)("idle"),[v,b]=(0,r.useState)(!1),N=(0,n.mN)({resolver:(0,c.u)(X.yE),defaultValues:{password:""}}),C=l.hasPassword,{emailVerified:A,isEmailProvider:S,isSending:E,resend:I}=function(){let{user:e,auth:t}=(0,f.A)(),[s,a]=(0,r.useState)(null),[i,l]=(0,r.useState)(!1),n=e?.providerData?.some(e=>"password"===e.providerId)??!1;(0,r.useEffect)(()=>{let s=!1,r=async()=>{if(!e?.uid||!t?.currentUser){s||a(null);return}try{if(t.currentUser.emailVerified){s||a(!0);return}if(y.db){let t=await (0,g.getDoc)((0,g.doc)(y.db,y.USERS,e.uid));if(t.exists()&&t.data()?.emailVerified===!0){s||a(!0);return}}s||a(!1)}catch(e){(0,k.vV)("æª¢æ¥ Email é©èçæ
失æ:",e),s||a(t.currentUser?.emailVerified??!1)}};r();let i=t?.onAuthStateChanged(e=>{e?.emailVerified?a(!0):e&&r()});return()=>{s=!0,i?.()}},[e?.uid,t]);let c=(0,r.useCallback)(async()=>{if(t?.currentUser&&!i){l(!0);try{await (0,w.sendEmailVerification)(t.currentUser,{url:`${window.location.origin}/auth?verified=true`,handleCodeInApp:!1}),y.db&&e?.uid&&await (0,g.mZ)((0,g.doc)(y.db,y.USERS,e.uid),{lastEmailVerificationReminder:(0,g.serverTimestamp)()}),(0,k.fH)("Email é©èä¿¡å·²éæ°ç¼é")}catch(e){throw(0,k.vV)("ç¼éé©è信失æ:",e),e}finally{l(!1)}}},[t,i,e?.uid]);return{emailVerified:s,isEmailProvider:n,needsVerification:n&&!1===s,isSending:i,resend:c}}(),R=async()=>{try{await I(),e({title:"é©èä¿¡å·²å¯åº",description:"è«æª¢æ¥æ¨çä¿¡ç®±ï¼å
æ¬åå¾éµä»¶ï¼"})}catch(t){e({title:"å¯é失æ",description:"auth/too-many-requests"===("object"==typeof t&&null!==t&&"code"in t?String(t.code):"")?"è«æ±éæ¼é »ç¹ï¼è«ç¨å¾å試":t instanceof Error?t.message:"è«ç¨å¾å試",variant:"destructive"})}},T=async s=>{if(t&&i&&0!==l.enrolledFactors.length){b(!0);try{if(C){if(!s.password.trim()){e({title:"è«è¼¸å
¥ç®åå¯ç¢¼",variant:"destructive"}),b(!1);return}let a=w.EmailAuthProvider.credential(t.email,s.password);await (0,w.reauthenticateWithCredential)(t,a)}else{let s=t.providerData[0]?.providerId;if("google.com"===s)await (0,w.reauthenticateWithPopup)(t,new w.GoogleAuthProvider);else if("facebook.com"===s)await (0,w.reauthenticateWithPopup)(t,new w.FacebookAuthProvider);else if(s===y.OIDC_LINE_PROVIDER_ID||s?.startsWith("oidc"))await (0,w.reauthenticateWithPopup)(t,new w.OAuthProvider(y.OIDC_LINE_PROVIDER_ID));else{e({title:"䏿¯æ´çç»å
¥æ¹å¼",variant:"destructive"}),b(!1);return}}let a=l.enrolledFactors[0];await (0,w.multiFactor)(t).unenroll(a),l.refreshEnrolled(),j("idle"),N.reset(),e({title:"已解é¤ç¶å®",description:"é©èå¨ App 已解é¤ï¼ç»å
¥æä¸åè¦æ±è¼¸å
¥ 6 碼ã"}),(0,k.fH)("TOTP 已解é¤ç¶å®"),await tc()}catch(s){(0,k.vV)("è§£é¤ TOTP ç¶å®å¤±æ:",s);let t="object"==typeof s&&null!==s&&"code"in s?String(s.code):"";if("auth/user-token-expired"===t){e({title:"å·¥ä½é段已éæ",description:"è«éæ°ç»å
¥å¾åè©¦ä¸æ¬¡ã",variant:"destructive"}),j("idle");return}if("auth/popup-closed-by-user"===t||"auth/cancelled-popup-request"===t){e({title:"已忶"}),j("idle");return}if("auth/wrong-password"===t||"auth/invalid-credential"===t)return void e({title:"é©è失æ",description:"å¯ç¢¼ä¸æ£ç¢ºï¼è«é試ã",variant:"destructive"});e({title:"è§£é¤ç¶å®å¤±æ",description:s instanceof Error?s.message:"è«ç¨å¾å試",variant:"destructive"})}finally{b(!1)}}};return(0,a.jsxs)("div",{className:"space-y-6",children:[S&&null!==A&&(0,a.jsxs)(d.Zp,{children:[(0,a.jsxs)(d.aR,{children:[(0,a.jsxs)(d.ZB,{className:"flex items-center gap-2",children:[(0,a.jsx)(ey.A,{className:"h-5 w-5"})," Email é©è"]}),(0,a.jsx)(d.BT,{children:"é©èé»åéµä»¶ä»¥ä¿è·å¸³æ¶å®å
¨ä¸¦æ¥æ¶éè¦éç¥"})]}),(0,a.jsx)(d.Wu,{children:A?(0,a.jsxs)("div",{className:"flex items-center gap-2 rounded-lg border border-green-200 bg-green-50 p-3 text-sm text-green-700 dark:border-green-800 dark:bg-green-900/20 dark:text-green-300",children:[(0,a.jsx)(e0.A,{className:"h-4 w-4 shrink-0"}),(0,a.jsxs)("span",{children:["ä½ ç Emailï¼",t?.email,"ï¼å·²å®æé©èã"]})]}):(0,a.jsxs)("div",{className:"space-y-3 rounded-lg border border-yellow-200 bg-yellow-50 p-3 dark:border-yellow-800 dark:bg-yellow-900/20",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 text-sm text-yellow-800 dark:text-yellow-200",children:[(0,a.jsx)(e1.A,{className:"h-4 w-4 shrink-0"}
8),(0,a.jsx)("span",{children:"ä½ ç Email å°æªé©èã宿é©è徿è½åç¨å®æ´åè½è帳æ¶ä¿è·ã"})]}),(0,a.jsx)(h.$,{size:"sm",onClick:()=>void R(),disabled:E,children:E?"ç¼éä¸...":"éæ°ç¼éé©èä¿¡"})]})})]}),(0,a.jsx)(ti,{}),(0,a.jsxs)(d.Zp,{children:[(0,a.jsxs)(d.aR,{children:[(0,a.jsxs)(d.ZB,{className:"flex items-center gap-2",children:[(0,a.jsx)(e2.A,{className:"h-5 w-5"})," å®å
¨æ§è¨å®"]}),(0,a.jsx)(d.BT,{children:"ç®¡çæ¨ç帳æ¶å®å
¨æ§èéå ç´ èªè"})]}),(0,a.jsxs)(d.Wu,{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(e3.A,{className:"h-4 w-4"}),(0,a.jsx)(u.J,{children:"é©èå¨ Appï¼TOTPï¼"})]}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"ä½¿ç¨ Google Authenticator ç App ç¢ç 6 碼ï¼ç»å
¥æä½çºç¬¬äºå ç´ é©èã"}),l.enrolledFactors.length>0?"reauth"===m?(0,a.jsx)(x.lV,{...N,children:(0,a.jsxs)("form",{onSubmit:N.handleSubmit(e=>void T(e)),className:"space-y-3 rounded-lg border bg-muted/30 p-3",children:[(0,a.jsx)("p",{className:"text-sm font-medium",children:"è§£é¤ç¶å®åè«å
é©è身份"}),C?(0,a.jsx)(x.zB,{control:N.control,name:"password",render:({field:e})=>(0,a.jsxs)(x.eI,{children:[(0,a.jsx)(x.lR,{children:"ç®åå¯ç¢¼"}),(0,a.jsx)(x.MJ,{children:(0,a.jsx)(o.p,{type:"password",placeholder:"è«è¼¸å
¥ç®åå¯ç¢¼",autoComplete:"current-password",...e})}),(0,a.jsx)(x.C5,{})]})}):(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"å°éåå½åºè¦çªè«æ¨éæ°ç»å
¥ã"}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(h.$,{type:"submit",variant:"destructive",disabled:v,children:v?"èçä¸...":"確èªè§£é¤ç¶å®"}),(0,a.jsx)(h.$,{type:"button",variant:"outline",onClick:()=>{j("idle"),N.reset()},children:"åæ¶"})]})]})}):(0,a.jsxs)("div",{className:"space-y-2 rounded-lg border bg-muted/30 p-3",children:[(0,a.jsx)("p",{className:"text-sm font-medium",children:"å·²ç¶å®é©èå¨"}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:l.enrolledFactors.map(e=>e.displayName||"é©èå¨").join("ã")}),(0,a.jsx)(h.$,{type:"button",variant:"outline",size:"sm",onClick:()=>{0!==l.enrolledFactors.length&&(j("reauth"),N.reset())},children:"è§£é¤ç¶å®"})]}):(0,a.jsx)(td.e,{enrollment:l})]}),(0,a.jsx)(tn,{hasPassword:!!C,totpEnrolled:l.enrolledFactors.length>0})]})]})]})}var tm=s(48113),th=s(45762),tx=s(46955),tp=s(40975),tf=s(31283),tj=s(26052),tv=s.n(tj);let tg={pending:"å¾
å®æææ¬",authorized:"å¾
仿¬¾",paid:"已仿¬¾",cancelled:"已忶"};function ty(){let{user:e}=(0,f.A)(),{toast:t}=(0,p.dj)(),[s,i]=(0,r.useState)([]),[l,n]=(0,r.useState)(!0),[c,o]=(0,r.useState)(null),[u,m]=(0,r.useState)(null),[x,j]=(0,r.useState)(null),{startPayment:v,isPaymentLoading:g}=(0,tx.L)();(0,r.useEffect)(()=>{if(!e?.uid){i([]),o(null),n(!1);return}let t=!1;return n(!0),o(null),th.y.getUserBookings(e.uid).then(e=>{t||(i(e),o(null))}).catch(s=>{if(!t){let t=s instanceof Error?s.message:String(s);K.Cp(s instanceof Error?s:Error(t),{level:"error",extra:{message:"è¼å
¥é ç´å表失æ",userId:e.uid},tags:{source:"UserBookingsSettings.loadBookings"}}),i([]),o("ç¡æ³è¼å
¥é ç´å表ï¼è«éæ°æ´çé 颿ç¨å¾å試ã")}}).finally(()=>{t||n(!1)}),()=>{t=!0}},[e?.uid]);let y=async e=>{if(("pending"===e.status||"authorized"===e.status)&&!x)try{let t=await th.y.getBookingById(e.id);t&&await v(t)}catch(e){(0,k.vV)("åå¾ä»æ¬¾å¤±æ",e)}},b=async()=>{if(!u)return;let e=u.id;j(e);try{await th.y.cancelBooking(e),t({title:"已忶é ç´",description:"ææ®µå·²éåºã"}),i(t=>t.map(t=>t.id===e?{...t,status:"cancelled"}:t)),m(null)}catch(e){(0,k.vV)("åæ¶é ç´å¤±æ",e),t({variant:"destructive",title:"åæ¶é ç´å¤±æ",description:function(e){if("object"==typeof e&&null!==e&&"code"in e&&"string"==typeof e.code){let t=e.code;if("permission-denied"===t)return"æ¨æ²ææ¬éåæ¶æ¤é ç´ã";if("functions/not-found"===t||"not-found"===t)return"æ¾ä¸å°é ç´è³æã";if("failed-precondition"===t)return"æ¤é ç´çæ
å·²è®æ´ï¼ç¡æ³åæ¶ã"}return"ç¡æ³åæ¶é ç´ï¼è«ç¨å¾å試ã"}(e)})}finally{j(null)}};if(l)return(0,a.jsx)(d.Zp,{className:"p-8 flex items-center justify-center",children:(0,a.jsx)(eb.A,{className:"h-8 w-8 animate-spin text-muted-foreground"})});if(c)return(0,a.jsxs)(d.Zp,{className:"p-8 text-center",children:[(0,a.jsx)("p",{className:"text-destructive mb-2",children:c}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"è¥å顿çºï¼è«è¯çµ¡å®¢æã"})]});if(0===s.length)return(0,a.jsx)(d.Zp,{className:"p-8 text-center text-muted-foreground",children:(0,a.jsx)("p",{children:"ç®åæ²æé ç´è¨é"})});let w=g||null!==x;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(tm.Lt,{open:null!==u,onOpenChange:e=>{e||null!==x||m(null)},children:(0,a.jsxs)(tm.EO,{children:[(0,a.jsxs)(tm.wd,{children:[(0,a.jsx)(tm.r7,{children:"確èªåæ¶é ç´ï¼"}),(0,a.jsx)(tm.$v,{children:"åæ¶å¾å°éåºè©²ææ®µä¾ä»äººé ç´ãè¥å°æªå®æä»æ¬¾ï¼æ¨å°ä¸éåçºæ¤çé²è¡ä»æ¬¾ã"})]}),(0,a.jsxs)(tm.ck,{children:[(0,a.jsx)(tm.Zr,{disabled:null!==x,children:"è¿å"}),(0,a.jsx)(h.$,{type:"button",variant:"destructive",disabled:null!==x,onClick:()=>void b(),children:null!==x?(0,a.jsx)(eb.A,{className:"h-4 w-4 animate-spin"}):"確èªåæ¶"})]})]})}),(0,a.jsxs)(d.Zp,{className:"p-4",children:[(0,a.jsx)("h3",{className:"text-sm font-semibold mb-3",children:"æçé ç´"}),(0,a.jsx)("ul",{className:"space-y-3",children:s.map(e=>(0,a.jsxs)("li",{className:"flex flex-wrap items-center justify-between gap-2 py-3 border-b last:border-0",children:[(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("p",{className:"font-medium truncate",children:e.advisorName??"é¡§å"}),(0,a.jsxs)("p",{className:"text-sm text-muted-foreground",children:[e.date," ",e.time," \xb7"," ",tg[e.status]??e.status]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[("pending"===e.status||"authorized"===e.status)&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(h.$,{type:"button",size:"sm",variant:"outline",disabled:w,onClick:()=>m(e),children:"åæ¶é ç´"}),(0,a.jsx)(h.$,{size:"sm",onClick:()=>y(e),disabled:w,children:g?(0,a.jsx)(eb.A,{className:"h-4 w-4 animate-spin"}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(tp.A,{className:"h-4 w-4 mr-1"}),"åå¾ä»æ¬¾"]})})]}),(0,a.jsx)(h.$,{size:"sm",variant:"outline",asChild:!0,children:(0,a.jsxs)(tv(),{href:`/payment/success?bookingId=${e.id}`,children:[(0,a.jsx)(tf.A,{className:"h-4 w-4 mr-1"}),"æ¥ç"]})})]})]},e.id))})]})]})}var tb=s(4530);async function tw(e,t){let s=y.auth?.currentUser;if(!s)throw Error("è«å
ç»å
¥");let a=await s.getIdToken();return fetch(e,{...t,headers:{"Content-Type":"application/json",Authorization:`Bearer ${a}`,...t?.headers??{}}})}function tN(){let{toast:e}=(0,p.dj)(),[t,s]=(0,r.useState)([]),[i,l]=(0,r.useState)(""),[n,c]=(0,r.useState)(!0),[m,x]=(0,r.useState)(!1),[f,j]=(0,r.useState)(null),v=(0,r.useCallback)(async()=>{try{c(!0);let e=await tw("/api/tools/v1/api-keys"),t=await e.json();if(!e.ok)throw Error(t?.error?.message??t?.error??"è¼å
¥å¤±æ");s(t.data?.keys??[])}catch(t){(0,k.vV)("è¼å
¥ Tool API Keys 失æ",t),e({title:"è¼å
¥å¤±æ",variant:"destructive"})}finally{c(!1)}},[e]);(0,r.useEffect)(()=>{v()},[v]);let g=async()=>
8{if(i.trim()){x(!0);try{let t=await tw("/api/tools/v1/api-keys",{method:"POST",body:JSON.stringify({label:i.trim()})}),s=await t.json();if(!t.ok)throw Error(s?.error?.message??"建ç«å¤±æ");j(s.data?.apiKey??null),l(""),await v(),e({title:"API Key 已建ç«",description:"è«ç«å³è¤è£½ï¼å
é¡¯ç¤ºä¸æ¬¡ã"})}catch(t){(0,k.vV)("å»ºç« API Key 失æ",t),e({title:"建ç«å¤±æ",variant:"destructive"})}finally{x(!1)}}},y=async t=>{try{let s=await tw(`/api/tools/v1/api-keys/${t}`,{method:"DELETE"});if(!s.ok){let e=await s.json();throw Error(e?.error?.message??"æ¤é·å¤±æ")}await v(),e({title:"å·²æ¤é· API Key"})}catch(t){(0,k.vV)("æ¤é· API Key 失æ",t),e({title:"æ¤é·å¤±æ",variant:"destructive"})}},b=async()=>{f&&(await navigator.clipboard.writeText(f),e({title:"å·²è¤è£½å°åªè²¼ç°¿"}))};return(0,a.jsx)("div",{className:"space-y-6",children:(0,a.jsxs)(d.Zp,{children:[(0,a.jsxs)(d.aR,{children:[(0,a.jsxs)(d.ZB,{className:"flex items-center gap-2",children:[(0,a.jsx)(tb.A,{className:"h-5 w-5"}),"ç財工å
· API Key"]}),(0,a.jsx)(d.BT,{children:"ä¾è
³æ¬æå¤é¨æ´åå¼å«è©¦ç® APIï¼æ¿è²¸ãè¤å©ãæç平衡ã財åæè¦ï¼ãè«å¿æäº¤è³çæ§ã"})]}),(0,a.jsxs)(d.Wu,{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsxs)("div",{className:"flex-1 space-y-2",children:[(0,a.jsx)(u.J,{htmlFor:"tool-api-label",children:"å稱"}),(0,a.jsx)(o.p,{id:"tool-api-label",value:i,onChange:e=>l(e.target.value),placeholder:"ä¾å¦ï¼æ¬æ©è
³æ¬"})]}),(0,a.jsx)(h.$,{className:"self-end",onClick:g,disabled:m||!i.trim(),children:m?(0,a.jsx)(eb.A,{className:"h-4 w-4 animate-spin"}):"å»ºç« Key"})]}),f&&(0,a.jsxs)("div",{className:"rounded-md border border-amber-500/40 bg-amber-500/10 p-3 text-sm",children:[(0,a.jsx)("p",{className:"font-medium mb-2",children:"æ° Keyï¼å
é¡¯ç¤ºä¸æ¬¡ï¼"}),(0,a.jsx)("code",{className:"block break-all text-xs mb-2",children:f}),(0,a.jsxs)(h.$,{size:"sm",variant:"outline",onClick:b,children:[(0,a.jsx)(ec.A,{className:"h-3 w-3 mr-1"}),"è¤è£½"]})]}),n?(0,a.jsx)(eb.A,{className:"h-5 w-5 animate-spin text-muted-foreground"}):0===t.length?(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"å°ç¡ API Key"}):(0,a.jsx)("ul",{className:"space-y-2",children:t.map(e=>(0,a.jsxs)("li",{className:"flex items-center justify-between rounded-md border px-3 py-2 text-sm",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"font-medium",children:e.label}),(0,a.jsxs)("span",{className:"text-muted-foreground ml-2",children:["â¦",e.prefix]}),e.revokedAt&&(0,a.jsx)("span",{className:"ml-2 text-destructive",children:"ï¼å·²æ¤é·ï¼"})]}),!e.revokedAt&&(0,a.jsx)(h.$,{size:"sm",variant:"ghost",onClick:()=>y(e.id),children:(0,a.jsx)(te.A,{className:"h-4 w-4"})})]},e.id))})]})]})})}var tk=s(57670);let tC=I.Ik({id:I.Yj(),actorType:I.k5(["advisor","admin"]),advisorUid:I.Yj().nullable().optional(),advisorProfileId:I.Yj().nullable().optional(),userId:I.Yj(),collection:I.Yj(),docId:I.Yj(),operation:I.k5(["create","update","delete"]),before:I.g1(I.Yj(),I.L5()).nullable().optional(),after:I.g1(I.Yj(),I.L5()).nullable().optional(),editedAt:I.Yj().nullable().optional()}),tA=I.Ik({edits:I.YO(tC),hasMore:I.zM(),nextCursor:I.Yj().nullable()});var tS=s(22573);let tE={accounts:"帳æ¶",transactions:"交æ",account_monthly_balances:"æé¤é¡",monthly_unallocated:"æåº¦æªåé
",income_distribution_rules:"æ¶å
¥åé
è¦å",assets:"è³ç¢",liabilities:"è² åµ",investments:"æè³",goals:"ç®æ¨",financial_indicators:"è²¡åææ¨"},tI={create:"æ°å¢",update:"æ´æ°",delete:"åªé¤"},tR={create:"default",update:"secondary",delete:"destructive"};function tT({edit:e}){let t="admin"===e.actorType?"管çå¡":"é¡§å";return(0,a.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center gap-2 py-3 border-b last:border-b-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[(0,a.jsx)(e4.E,{variant:tR[e.operation]||"outline",className:"shrink-0",children:tI[e.operation]||e.operation}),(0,a.jsx)("span",{className:"text-sm font-medium truncate",children:tE[e.collection]||e.collection}),(0,a.jsx)(e4.E,{variant:"outline",className:"text-xs shrink-0",children:t})]}),(0,a.jsx)("span",{className:"text-xs text-muted-foreground shrink-0",children:function(e){if(!e)return"â";
8try{return new Date(e).toLocaleString("zh-TW",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch{return e}}(e.editedAt)})]})}function t$(){let{edits:e,isLoading:t,error:s,hasMore:i,load:l,loadMore:n}=function(){let{user:e}=(0,f.A)(),[t,s]=(0,r.useState)([]),[a,i]=(0,r.useState)(!1),[l,n]=(0,r.useState)(null),[c,d]=(0,r.useState)(!1),[o,u]=(0,r.useState)(null),m=(0,r.useCallback)(async t=>{if(e){i(!0),n(null);try{let a=await e.getIdToken(),r=new URLSearchParams;r.set("limit","20"),t&&r.set("cursor",t);let i=await fetch(`/api/me/financial-edits?${r.toString()}`,{headers:{Authorization:`Bearer ${a}`}});if(!i.ok){let e=await i.json().catch(()=>({}));throw Error("string"==typeof e.error?e.error:`HTTP ${i.status}`)}let l=await i.json(),n=tA.safeParse(l);if(!n.success)throw Error("åææ ¼å¼é¯èª¤");t?s(e=>[...e,...n.data.edits]):s(n.data.edits),d(n.data.hasMore),u(n.data.nextCursor)}catch(e){n(e instanceof Error?e.message:"è¼å
¥å¤±æ")}finally{i(!1)}}},[e]),h=(0,r.useCallback)(()=>{c&&o&&m(o)},[c,o,m]);return{edits:t,isLoading:a,error:l,hasMore:c,load:m,loadMore:h}}();return(0,r.useEffect)(()=>
8{l()},[l]),(0,a.jsxs)(d.Zp,{children:[(0,a.jsx)(d.aR,{children:(0,a.jsxs)(d.ZB,{className:"flex items-center gap-2",children:[(0,a.jsx)(tS.A,{className:"h-5 w-5"}),"財åè³æä¿®æ¹ç´é"]})}),(0,a.jsxs)(d.Wu,{children:[(0,a.jsx)("p",{className:"text-sm text-muted-foreground mb-4",children:"以䏿¯é¡§åæç®¡çå¡ä»£çºä¿®æ¹æ¨è²¡åè³æçç´éã"}),t&&0===e.length&&(0,a.jsx)("div",{className:"flex items-center justify-center py-8",children:(0,a.jsx)(eb.A,{className:"h-6 w-6 animate-spin text-muted-foreground"})}),s&&(0,a.jsx)("p",{className:"text-sm text-destructive",children:s}),!t&&0===e.length&&!s&&(0,a.jsx)("p",{className:"text-sm text-muted-foreground text-center py-8",children:"æ«ç¡ä¿®æ¹ç´é"}),(0,a.jsx)("div",{className:"divide-y",children:e.map(e=>(0,a.jsx)(tT,{edit:e},e.id))}),i&&(0,a.jsx)("div",{className:"flex justify-center mt-4",children:(0,a.jsxs)(h.$,{variant:"outline",size:"sm",onClick:n,disabled:t,children:[t?(0,a.jsx)(eb.A,{className:"h-4 w-4 animate-spin mr-2"}):null,"è¼å
¥æ´å¤"]})})]})]})}var tP=s(37146),tD=s(8643),tF=s(20290),t_=s(82721);async function tV(e){let t=await e.json().catch(()=>({}));if(!e.ok){let s=Error(t.error||`Request failed: ${e.status}`);throw s.code=t.code,s.current=t.current,s.max=t.max,s.daysUntilReset=t.daysUntilReset,s}return t}function tB({title:e,items:t,columns:s,onToggle:r}){return t.length?(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("h4",{className:"text-sm font-medium",children:[e," ",(0,a.jsxs)("span",{className:"text-muted-foreground font-normal",children:["(",t.length,")"]})]}),(0,a.jsx)("div",{className:"overflow-x-auto rounded-md border",children:(0,a.jsxs)("table",{className:"w-full text-sm",children:[(0,a.jsx)("thead",{className:"bg-muted/50",children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{className:"p-2 text-left w-10",children:"é¸"}),s.map(e=>(0,a.jsx)("th",{className:"p-2 text-left whitespace-nowrap",children:e.label},String(e.key)))]})}),(0,a.jsx)("tbody",{children:t.map((e,t)=>(0,a.jsxs)("tr",{className:e.needsReview?"bg-amber-50 dark:bg-amber-950/30":void 0,children:[(0,a.jsx)("td",{className:"p-2",children:(0,a.jsx)(S.S,{checked:e.selected,onCheckedChange:e=>r(t,!0===e)})}),s.map(t=>(0,a.jsx)("td",{className:"p-2 whitespace-nowrap",children:t.render?t.render(e):String(e[t.key]??"")},String(t.key)))]},t))})]})})]}):null}function tL(){let{toast:e}=(0,t_.dj)(),t=(0,r.useRef)(null),[s,i]=(0,r.useState)("upload"),{loading:l,jobsLoading:n,error:c,limitInfo:o,analyzeResult:u,draft:m,commitResult:x,jobs:p,analyze:j,commit:v,refreshJobs:g,reset:y,toggleSelected:b}=function(){let{user:e}=(0,f.A)(),[t,s]=(0,r.useState)(!1),[a,i]=(0,r.useState)(!1),[l,n]=(0,r.useState)(null),[c,d]=(0,r.useState)(null),[o,u]=(0,r.useState)(null),[m,h]=(0,r.useState)(null),[x,p]=(0,r.useState)(null),[j,v]=(0,r.useState)([]),g=(0,r.useMemo)(()=>{if(!e)return null;async function t(){let t=await (async()=>e.getIdToken())();return{Authorization:`Bearer ${t}`}}return{async analyze(e){let s=new FormData;return s.append("file",e),tV(await fetch("/api/import/analyze",{method:"POST",headers:await t(),body:s}))},commit:async e=>tV(await fetch("/api/import/commit",{method:"POST",headers:{...await t(),"Content-Type":"application/json"},body:JSON.stringify(e)})),async listJobs(){let e=await fetch("/api/import/jobs",{headers:await t()});return(await tV(e)).jobs}}},[e]),y=(0,r.useCallback)(async e=>{if(!g)throw Error("è«å
ç»å
¥");s(!0),n(null),d(null),p(null);try{let t=await g.analyze(e);return u(t),h(t.draft??null),t}catch(e){throw"DATA_IMPORT_LIMIT"===e.code&&null!=e.current&&null!=e.max&&d({current:e.current,max:e.max,daysUntilReset:e.daysUntilReset??30}),n(e.message||"åæå¤±æ"),e}finally{s(!1)}},[g]),b=(0,r.useCallback)(async()=>{if(!g||!o?.jobId||!m)throw Error("è«å
宿åæ");s(!0),n(null);try{let e={accounts:m.accounts.map(e=>e.selected),monthlyBalances:m.monthlyBalances.map(e=>e.selected),transactions:m.transactions.map(e=>e.selected),assets:m.assets.map(e=>e.selected),liabilities:m.liabilities.map(e=>e.selected),investments:m.investments.map(e=>e.selected),budgets:m.budgets.map(e=>e.selected),goals:m.goals.map(e=>e.selected)},t=await g.commit({jobId:o.jobId,selectionOverrides:e});return p(t),t}catch(e){throw n(e instanceof Error?e.message:"å¯å
¥å¤±æ"),e}finally{s(!1)}},[g,o,m]),w=(0,r.useCallback)(async()=>
8{if(g){i(!0);try{let e=await g.listJobs();v(e)}catch{}finally{i(!1)}}},[g]);return{loading:t,jobsLoading:a,error:l,limitInfo:c,analyzeResult:o,draft:m,commitResult:x,jobs:j,analyze:y,commit:b,refreshJobs:w,reset:(0,r.useCallback)(()=>{u(null),h(null),p(null),n(null),d(null)},[]),toggleSelected:(0,r.useCallback)((e,t,s)=>{h(a=>{if(!a)return a;let r=[...a[e]],i=r[t];return i?(r[t]={...i,selected:s},{...a,[e]:r}):a})},[]),setDraft:h}}();(0,r.useEffect)(()=>{g()},[g]);let w=async t=>{if(t)try{await j(t),i("preview"),e({title:"åæå®æ",description:"è«ç¢ºèªé è¦½è³æå¾åå¯å
¥"})}catch{}},N=async()=>{try{let t=await v();i("done"),e({title:"å¯å
¥å®æ",description:`æå ${t.imported}ãç¥é ${t.skipped}ã失æ ${t.failed}`}),g()}catch{}},k=()=>{y(),i("upload"),t.current&&(t.current.value="")};return(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)(d.Zp,{children:[(0,a.jsxs)(d.aR,{children:[(0,a.jsxs)(d.ZB,{className:"flex items-center gap-2",children:[(0,a.jsx)(tP.A,{className:"h-5 w-5"}),"å¤é¨è³æå¯å
¥"]}),(0,a.jsx)(d.BT,{children:"å¾ Google 試ç®è¡¨æ Excel å¯å
¥å¸³æ¶ãææ¶æ¯ãè³ç¢ãè² åµãæè³ãé ç®èç®æ¨ã 建è°å
ä¸è¼å®æ¹ç¯æ¬æ´çè³æï¼å
¶ä»æ ¼å¼å°ç± AI åå©è¾¨èã"})]}),(0,a.jsxs)(d.Wu,{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,a.jsx)(h.$,{variant:"outline",asChild:!0,children:(0,a.jsxs)("a",{href:"/templates/xynergy-data-import-template.xlsx",download:!0,children:[(0,a.jsx)(tD.A,{className:"h-4 w-4 mr-2"}),"ä¸è¼å®æ¹ç¯æ¬"]})}),(0,a.jsx)(h.$,{variant:"ghost",asChild:!0,children:(0,a.jsx)(tv(),{href:"/help/guides/guide-data-import",target:"_blank",children:"使ç¨èªªæ"})})]}),o&&(0,a.jsxs)(e5.Fc,{variant:"destructive",children:[(0,a.jsx)(e5.XL,{children:"å·²é 30 天忿¬¡æ¸ä¸é"}),(0,a.jsxs)(e5.TN,{children:["éå» 30 å¤©å·²ä½¿ç¨ ",o.current," / ",o.max," 次åæãç´"," ",o.daysUntilReset," 天å¾éç½®ã"]})]}),c&&!o&&(0,a.jsxs)(e5.Fc,{variant:"destructive",children:[(0,a.jsx)(e5.XL,{children:"ç¼çé¯èª¤"}),(0,a.jsx)(e5.TN,{children:c})]}),"upload"===s&&(0,a.jsxs)("div",{className:"border border-dashed rounded-lg p-8 text-center space-y-4",children:[(0,a.jsx)(tF.A,{className:"h-10 w-10 mx-auto text-muted-foreground"}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"ä¸å³ .xlsx / .xls / .csvï¼ä¸é 2MBã5000 åï¼"}),(0,a.jsx)("input",{ref:t,type:"file",accept:".csv,.xlsx,.xls,text/csv,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel",className:"hidden",onChange:e=>void w(e.target.files?.[0])}),(0,a.jsx)(h.$,{disabled:l,onClick:()=>t.current?.click(),children:l?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(eb.A,{className:"h-4 w-4 mr-2 animate-spin"}),"åæä¸â¦"]}):"é¸ææªæ¡"})]}),"preview"===s&&m&&u&&(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsx)(e4.E,{variant:"secondary",children:"official_template"===u.format?"宿¹ç¯æ¬":"AI 辨è"}),null!=u.confidence&&(0,a.jsxs)(e4.E,{variant:"outline",children:["ä¿¡å¿ ",Math.round(100*u.confidence),"%"]})]}),u.warnings?.length>0&&(0,a.jsxs)(e5.Fc,{children:[(0,a.jsx)(e5.XL,{children:"注æ"}),(0,a.jsx)(e5.TN,{children:(0,a.jsx)("ul",{className:"list-disc pl-4 space-y-1",children:u.warnings.map((e,t)=>(0,a.jsx)("li",{children:e},t))})})]}),(0,a.jsx)(tz,{draft:m,toggleSelected:b}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,a.jsx)(h.$,{variant:"outline",onClick:k,disabled:l,children:"éæ°ä¸å³"}),(0,a.jsx)(h.$,{onClick:()=>void N(),disabled:l,children:l?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(eb.A,{className:"h-4 w-4 mr-2 animate-spin"}),"å¯å
¥ä¸â¦"]}):"確èªå¯å
¥"})]})]}),"done"===s&&x&&(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)(e5.Fc,{children:[(0,a.jsx)(e5.XL,{children:"å¯å
¥å®æ"}),(0,a.jsxs)(e5.TN,{children:["æå ",x.imported," çãç¥ééè¤ ",x.skipped," çã失æ"," ",x.failed," çãéè¤è³æä¸æè¦å¯«æ¢æå
§å®¹ã"]})]}),x.failed>0&&(0,a.jsx)("div",{className:"text-sm text-muted-foreground max-h-40 overflow-y-auto",children:x.details.filter(e=>"failed"===e.action).map((e,t)=>(0,a.jsxs)("div",{children:["[",e.entity,"] ",e.key,": ",e.message]},t))}),(0,a.jsx)(h.$,{onClick:k,children:"ç¹¼çºå¯å
¥"})]})]})]}),(0,a.jsxs)(d.Zp,{children:[(0,a.jsxs)(d.aR,{children:[(0,a.jsx)(d.ZB,{className:"text-base",children:"æè¿å¯å
¥ç´é"}),(0,a.jsx)(d.BT,{children:"顯示æè¿ 10 次åæï¼å¯å
¥å·¥ä½"})]}),(0,a.jsx)(d.Wu,{children:n?(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"è¼å
¥ä¸â¦"}):0===p.length?(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"å°ç¡ç´é"}):(0,a.jsx)("ul",{className:"space-y-2 text-sm",children:p.map(e=>(0,a.jsxs)("li",{className:"flex flex-wrap items-center justify-between gap-2 border-b pb-2 last:border-0",children:[(0,a.jsx)("span",{className:"truncate max-w-[50%]",children:e.fileName}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(e4.E,{variant:"outline",children:e.status}),e.commitResult&&(0,a.jsxs)("span",{className:"text-muted-foreground",children:["+",e.commitResult.imported," / skip ",e.commitResult.skipped]})]})]},e.id))})})]})]})}function tz({draft:e,toggleSelected:t}){return(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsx)(tB,{title:"帳æ¶",items:e.accounts,onToggle:(e,s)=>t("accounts",e,s),columns:[{key:"name",label:"å稱"},{key:"type",label:"é¡å"},{key:"category",label:"åé¡"},{key:"currency",label:"å¹£å¥"}]}),(0,a.jsx)(tB,{title:"ææ¶æ¯",items:e.monthlyBalances,onToggle:(e,s)=>t("monthlyBalances",e,s),columns:[{key:"accountName",label:"帳æ¶"},{key:"month",label:"æä»½"},{key:"balance",label:"éé¡"}]}),(0,a.jsx)(tB,{title:"è³ç¢",items:e.assets,onToggle:(e,s)=>t("assets",e,s),columns:[{key:"name",label:"å稱"},{key:"type",label:"é¡å"},{key:"value",label:"ç¾å¼"}]}),(0,a.jsx)(tB,{title:"è² åµ",items:e.liabilities,onToggle:(e,s)=>t("liabilities",e,s),columns:[{key:"name",label:"å稱"},{key:"type",label:"é¡å"},{key:"value",label:"é¤é¡"}]}),(0,a.jsx)(tB,{title:"æè³",items:e.investments,onToggle:(e,s)=>t("investments",e,s),columns:[{key:"name",label:"æ¨ç"},{key:"symbol",label:"代è"},{key:"quantity",label:"æ¸é"},{key:"price",label:"广 ¼"}]}),(0,a.jsx)(tB,{title:"é ç®",items:e.budgets,onToggle:(e,s)=>t("budgets",e,s),columns:[{key:"year",label:"年度"},{key:"totalIncome",label:"總æ¶å
¥"},{key:"categories",label:"å顿¸",render:e=>String(e.categories?.length??0)}]}),(0,a.jsx)(tB,{title:"ç®æ¨",items:e.goals,onToggle:(e,s)=>t("goals",e,s),columns:[{key:"name",label:"å稱"},{key:"type",label:"é¡å"},{key:"targetAmount",label:"ç®æ¨éé¡"},{key:"deadline",label:"æé",render:e=>`${e.deadlineYear}-${String(e.deadlineMonth).padStart(2,"0")}`}]})]})}var tO=s(78139),tU=s(26345),tM=s(60373),tW=s(97839),tZ=s(21582),tH=s(83392),tJ=s(24385),tG=s(81321),tY=s(63533),tq=s(80746),tX=s(66592),tK=s(3953);let tQ={never:"ç¡æé","1d":"1 天","3d":"3 天","7d":"7 天","1mo":"1 åæï¼30 天ï¼",custom:"èªè¨æ¥æ"};function t0(e){return e instanceof Date&&!Number.isNaN(e.getTime())}function t1({presetName:e,customDateName:t,timeName:s,disabled:i}){let{control:l,setValue:c,getValues:d}=(0,n.xW)(),[u,m]=(0,r.useState)(!1),p=(0,n.FH)({control:l,name:e});return(0,r.useEffect)(()=>{"custom"!==p||t0(d(t))||c(t,new Date)},[p,t,d,c]),(0,a.jsx)(x.zB,{control:l,name:e,render:({field:e})=>(0,a.jsxs)(x.eI,{className:"space-y-3",children:[(0,a.jsx)(x.lR,{className:"text-sm font-medium",children:"æææé"}),(0,a.jsxs)(tZ.l6,{value:e.value,disabled:i,onValueChange:t=>{e.onChange(t),"custom"===t&&m(!0)},children:[(0,a.jsx)(x.MJ,{children:(0,a.jsx)(tZ.bq,{className:"w-full",children:(0,a.jsx)(tZ.yv,{placeholder:"é¸ææææé"})})}),(0,a.jsx)(tZ.gC,{children:Object.keys(tQ).map(e=>(0,a.jsx)(tZ.eb,{value:e,children:tQ[e]},e))})]}),"custom"===p?(0,a.jsxs)("div",{className:"flex flex-col gap-3 rounded-md border border-border bg-muted/20 p-3 sm:flex-row sm:items-end",children:[(0,a.jsx)(x.zB,{control:l,name:t,render:({field:e})=>(0,a.jsxs)(x.eI,{className:"flex flex-1 flex-col gap-2",children:[(0,a.jsx)("span",{className:"text-xs text-muted-foreground",children:"æ¥æ"}),(0,a.jsxs)(tK.AM,{open:u,onOpenChange:m,children:[(0,a.jsx)(tK.Wv,{asChild:!0,children:(0,a.jsxs)(h.$,{type:"button",variant:"outline",disabled:i,className:(0,eA.cn)("w-full justify-start gap-2 font-normal"),children:[(0,a.jsx)(tY.A,{className:"h-4 w-4 shrink-0 opacity-70","aria-hidden":!0}),t0(e.value)?(0,tJ.GP)(e.value,"yyyy / MM / dd"):"é¸ææ¥æ"]})}),(0,a.jsx)(tK.hl,{className:"w-auto p-0",align:"start",children:(0,a.jsx)(tX.V,{mode:"single",locale:tq.G,selected:t0(e.value)?e.value:void 0,onSelect:t=>{t&&e.onChange(t)}
8,defaultMonth:t0(e.value)?e.value:new Date})})]}),(0,a.jsx)(x.C5,{})]})}),(0,a.jsx)(x.zB,{control:l,name:s,render:({field:e})=>(0,a.jsxs)(x.eI,{className:"flex w-full flex-col gap-2 sm:w-[8.5rem]",children:[(0,a.jsx)("span",{className:"text-xs text-muted-foreground",children:"æé"}),(0,a.jsx)(x.MJ,{children:(0,a.jsx)(o.p,{type:"time",disabled:i,className:"w-full",...e})}),(0,a.jsx)(x.C5,{})]})})]}):null,(0,a.jsx)(x.C5,{})]})})}let t2=I.Ik({expiryPreset:tH.l7,customExpiryDate:I.bz().optional(),customExpiryTime:I.Yj().optional()}).superRefine((e,t)=>{if("custom"!==e.expiryPreset)return;let s=e.customExpiryDate;(!s||!(s instanceof Date)||Number.isNaN(s.getTime()))&&t.addIssue({code:tG.eq.custom,message:"è«é¸ææ¥æ",path:["customExpiryDate"]});let a=(e.customExpiryTime??"").trim();/^\d{2}:\d{2}$/.test(a)||t.addIssue({code:tG.eq.custom,message:"è«è¼¸å
¥æææé",path:["customExpiryTime"]})});function t3(e){if(!e.expiresAt)return{expiryPreset:"never",customExpiryDate:new Date,customExpiryTime:"23:59"};let t=new Date(e.expiresAt);return Number.isFinite(t.getTime())?{expiryPreset:"custom",customExpiryDate:t,customExpiryTime:(0,tJ.GP)(t,"HH:mm")}:{expiryPreset:"never",customExpiryDate:new Date,customExpiryTime:"23:59"}}function t4({open:e,onOpenChange:t,share:s,saving:i,onSave:l}){let d=(0,n.mN)({resolver:(0,c.u)(t2),defaultValues:t3(s??{id:"",recipientUid:"",resourceKey:"",permission:"view"})});(0,r.useEffect)(()=>{e&&s&&d.reset(t3(s))},[e,s,d]);let o=(()=>{if(!s)return"";let e=tH.k3.safeParse(s.resourceKey);return e.success?(0,tH.pu)(e.data):s.resourceKey})(),u=d.handleSubmit(async e=>{if(!s)return;let a="never"===e.expiryPreset?null:(0,tH.wr)(e.expiryPreset,{date:e.customExpiryDate,time:e.customExpiryTime??"23:59"});("never"===e.expiryPreset||a)&&(await l(s.id,a??null),t(!1))});return(0,a.jsx)(A.lG,{open:e,onOpenChange:t,children:(0,a.jsxs)(A.Cf,{className:"sm:max-w-md",children:[(0,a.jsxs)(A.c7,{children:[(0,a.jsx)(A.L3,{children:"ä¿®æ¹æææé"}),(0,a.jsx)(A.rr,{children:o?`ã${o}ãçå享æé`:"èª¿æ´æ¤çåäº«çæææé"})]}),(0,a.jsx)(x.lV,{...d,children:(0,a.jsxs)("form",{onSubmit:e=>void u(e),className:"space-y-4",children:[(0,a.jsx)(t1,{presetName:"expiryPreset",customDateName:"customExpiryDate",timeName:"customExpiryTime",disabled:i}),(0,a.jsxs)(A.Es,{className:"gap-2 sm:gap-0",children:[(0,a.jsx)(h.$,{type:"button",variant:"outline",disabled:i,onClick:()=>t(!1),children:"åæ¶"}),(0,a.jsx)(h.$,{type:"submit",disabled:i,children:i?"å²åä¸â¦":"å²å"})]})]})})]})})}function t5(e){let t=tH.k3.safeParse(e);return t.success?tH.tc[t.data]?.label??e:e}function t6(e){let t=tH.k3.safeParse(e);if(!t.success)return 999;let s=tH.kc.indexOf(t.data);return s>=0?s:999}function t8(e){if(!e.createdAt)return 0;let t=Date.parse(e.createdAt);return Number.isFinite(t)?t:0}function t7(e){return"edit"===e?"å¯ç·¨è¼¯":"å
檢è¦"}let t9="grid grid-cols-1 items-center gap-3 sm:grid-cols-[minmax(0,1fr)_minmax(9rem,11rem)_minmax(9rem,11rem)] sm:gap-4";function se({title:e,subtitle:t}){return(0,a.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,a.jsx)(tM.eu,{className:"h-9 w-9 shrink-0",children:(0,a.jsx)(tM.q5,{className:"text-xs",children:function(e){let t=e.trim();if(!t)return"?";let s=t.split(/\s+/).filter(Boolean);return s.length>=2?(s[0][0]+s[1][0]).toUpperCase():t.slice(0,2).toUpperCase()}(e)})}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("p",{className:"truncate font-medium",children:e}),t&&t!==e?(0,a.jsx)("p",{className:"truncate text-xs text-muted-foreground",children:t}):null]})]})}function st({group:e,selectedGrantId:t,onSelectGrant:s}){let r=e.grants.find(e=>e.id===t)??e.grants[0]??null,i=r?t5(r.resourceKey):"鏿é é¢";return(0,a.jsxs)(tW.rI,{children:[(0,a.jsx)(tW.ty,{asChild:!0,children:(0,a.jsxs)(h.$,{variant:"outline",className:"h-9 w-full justify-between gap-1 px-3 font-normal",children:[(0,a.jsx)("span",{className:"truncate",children:i}),(0,a.jsx)(tU.A,{className:"size-4 shrink-0 opacity-60","aria-hidden":!0})]})}),(0,a.jsx)(tW.SQ,{align:"start",className:"min-w-[var(--radix-dropdown-menu-trigger-width)]",children:e.grants.map(e=>(0,a.jsx)(tW._2,{className:"cursor-pointer",onClick:()=>s(e),children:t5(e.resourceKey)},e.id))})]})}function ss({group:e,direction:t,onRevoke:s,onDismiss:l,onPermissionChange:n,onExpiryChange:c,permissionUpdatingShareId:d,dism
8issingShareId:o}){let u=function(){let e=(0,i.useRouter)(),{setViewingUser:t}=(0,f.A)(),{toast:s}=(0,p.dj)();return(0,r.useCallback)((a,r,i)=>{let l=tH.k3.safeParse(i);if(!l.success)return void s({title:"ç¡æ³éå",description:"æ¤åäº«è³æºå·²å¤±ææä¸åæ¯æ´",variant:"destructive"});let n=l.data,c=tH.tc[n]?.dashboardPath;if(!c)return void s({title:"ç¡æ³éå",description:"æ¾ä¸å°å°æé é¢",variant:"destructive"});let d=r?.trim()||a;t(a,d),e.push(c),s({title:"å·²éåå享å
§å®¹",description:`æ£å¨æª¢è¦ã${(0,tH.pu)(n)}ã\xb7 ${d}`})},[e,t,s])}(),[m,x]=(0,r.useState)(e.grants[0]?.id??""),[j,v]=(0,r.useState)(!1);(0,r.useEffect)(()=>{!e.grants.length||e.grants.some(e=>e.id===m)||x(e.grants[0].id)},[e.grants,m]);let g=e.grants.find(e=>e.id===m)??e.grants[0]??null,y=1===e.grants.length?t5(e.grants[0].resourceKey):`${e.grants.length} é `,b="outbound"===t&&!!n&&!!g,w=!!g&&d===g.id,N=!!g&&o===g.id;return(0,a.jsxs)("div",{className:(0,eA.cn)(t9,"px-4 py-3"),children:[(0,a.jsx)(se,{title:e.title,subtitle:e.subtitle}),"inbound"===t?(0,a.jsx)(st,{group:e,selectedGrantId:m,onSelectGrant:e=>{x(e.id),e.ownerId&&u(e.ownerId,e.ownerLabel??e.ownerEmail,e.resourceKey)}}):(0,a.jsxs)(tZ.l6,{value:m,onValueChange:x,children:[(0,a.jsx)(tZ.bq,{className:"h-9 w-full","aria-label":"鏿ååçé é¢",children:(0,a.jsx)(tZ.yv,{placeholder:"鏿é é¢",children:y})}),(0,a.jsx)(tZ.gC,{children:e.grants.map(e=>(0,a.jsx)(tZ.eb,{value:e.id,children:t5(e.resourceKey)},e.id))})]}),"inbound"===t&&l&&g?(0,a.jsx)(h.$,{type:"button",variant:"outline",className:"h-9 w-full text-destructive hover:text-destructive",disabled:N,onClick:()=>l(g.id),children:"ç§»é¤"}):b&&g?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(tW.rI,{children:[(0,a.jsx)(tW.ty,{asChild:!0,disabled:w,children:(0,a.jsxs)(h.$,{variant:"outline",className:"h-9 w-full justify-between gap-1 px-3 font-normal",children:[(0,a.jsx)("span",{className:"truncate",children:t7(g.permission)}),(0,a.jsx)(tU.A,{className:"size-4 shrink-0 opacity-60","aria-hidden":!0})]})}),(0,a.jsxs)(tW.SQ,{align:"end",className:"w-44",children:[(0,a.jsx)(tW.lp,{children:"å忬é"}),(0,a.jsx)(tW._2,{disabled:"view"===g.permission||w,onClick:()=>n?.(g.id,"view"),children:"å
檢è¦"}),(0,a.jsx)(tW._2,{disabled:"edit"===g.permission||w,onClick:()=>n?.(g.id,"edit"),children:"å¯ç·¨è¼¯"}),c?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(tW.mB,{}),(0,a.jsx)(tW._2,{disabled:w,onClick:()=>v(!0),children:"ä¿®æ¹æé"})]}):null,s?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(tW.mB,{}),(0,a.jsx)(tW._2,{className:"text-destructive focus:text-destructive",onClick:()=>s(g.id),children:"æ¤é·å享"})]}):null]})]}),c?(0,a.jsx)(t4,{open:j,onOpenChange:v,share:g,saving:w,onSave:c}):null]}):(0,a.jsx)("div",{className:"flex h-9 w-full items-center rounded-md border border-input bg-muted/30 px-3 text-sm text-muted-foreground",children:g?t7(g.permission):"â"})]})}function sa({shares:e,direction:t,onRevoke:s,onDismiss:i,onPermissionChange:l,onExpiryChange:n,permissionUpdatingShareId:c,dismissingShareId:d}){let o=(0,r.useMemo)(()=>{let s=new Map;for(let a of e){let e="outbound"===t?a.recipientUid||null:a.ownerId||null;if(!e)continue;let r=s.get(e),i="outbound"===t?a.recipientLabel?.trim()||a.recipientUid:a.ownerLabel?.trim()||a.ownerId||a.recipientUid,l="outbound"===t?a.recipientEmail??a.recipientUid:a.ownerEmail??a.ownerId??"",n=t8(a);r?(r.grants.push(a),n>r.sortMs&&(r.sortMs=n)):s.set(e,{key:e,title:i,subtitle:l,grants:[a],sortMs:n})}for(let e of s.values())e.grants.sort((e,t)=>t6(e.resourceKey)-t6(t.resourceKey)||t8(t)-t8(e));return[...s.values()].sort((e,t)=>t.sortMs-e.sortMs||e.title.localeCompare(t.title,"zh-TW"))},[e,t]);return o.length?(0,a.jsxs)("div",{className:"overflow-hidden rounded-lg border",children:[(0,a.jsxs)("div",{className:(0,eA.cn)("hidden border-b bg-muted/30 px-4 py-2 text-xs font-medium text-muted-foreground sm:grid",t9),children:[(0,a.jsx)("span",{children:"使ç¨è
"}),(0,a.jsx)("span",{children:"ååçé é¢"}),(0,a.jsx)("span",{children:"inbound"===t?"æä½":"å忬é"})]}),(0,a.jsx)("ul",{children:o.map(e=>(0,a.jsx)("li",{className:"border-b last:border-b-0",children:(0,a.jsx)(ss,{group:e,direction:t,onRevoke:s,onDismiss:i,onPermissionChange:l,onExpiryChange:n,permissionUpdatingShareId:c,dismissingShareId:d})},e.key))})]}):null}var sr=s(54306);function si(){let{activeOutbound:e,activeInbound:t,loading:s,revokeShare:r,dismissInboundShare:i,updateSharePermission:l,updateShareExpiry:n,permissionUpdatingShareId:c,dismissingShareId:o}=(0,tO.m)(),u=e.length>0,m=t.length>0;return(0,a.jsx)("div",{className:"w-full space-y-6",children:(0,a.jsxs)(d.Zp,{children:[(0,a.jsxs)(d.aR,{children:[(0,a.jsx)(d.ZB,{children:"è³æå享"}),(0,a.jsx)(d.BT,{children:"æ°å¢å享è«è³ååè½é é æ¬çå享åç¤ºï¼æ¤è坿ª¢è¦è管ç已建ç«çææ¬ãå表ä¾å°è±¡ç¨æ¶åçµã"})]}),(0,a.jsxs)(d.Wu,{className:"space-y-8",children:[u||m?null:s?(0,a.jsx)(sr.default,{size:40}):(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"ç®åæ²æä»»ä½ææå享"}),u?(0,a.jsxs)("section",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"text-sm font-semibold",children:"æå享çè³æ"}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"å¯èª¿æ´æ¬éãæææéææ¤é·å享ã"})]}),(0,a.jsx)(sa,{shares:e,direction:"outbound",onRevoke:e=>void r(e),onPermissionChange:(e,t)=>
8void l(e,t),onExpiryChange:(e,t)=>n(e,t),permissionUpdatingShareId:c})]}):null,m?(0,a.jsxs)("section",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"text-sm font-semibold",children:"èæå享çè³æ"}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"é»ãååçé é¢ãä¸çé é¢å稱å³å¯éåæª¢è¦ï¼ãç§»é¤ãå
徿¨çæ¸
å®é±èï¼ä¸å½±é¿å享è
çææ¬ã"})]}),(0,a.jsx)(sa,{shares:t,direction:"inbound",onDismiss:e=>void i(e),dismissingShareId:o})]}):null]})]})})}var sl=s(27012),sn=s(57663),sc=s(35617);let sd=I.Ik({error:I.bz()});async function so(e){try{let t=await e.json(),s=sd.safeParse(t);if(!s.success)return`HTTP ${e.status}`;let a=s.data.error;if("string"==typeof a)return a;return`HTTP ${e.status}`}catch{return`HTTP ${e.status}`}}let su=I.Ik({email:I.Yj().nullable().optional(),displayName:I.Yj().nullable().optional(),referralCode:I.Yj().nullable().optional()}),sm=I.Ik({id:I.Yj(),advisorId:I.Yj().nullable().optional(),userId:I.Yj(),consentId:I.Yj().nullable().optional(),isActive:I.zM(),relationshipOnly:I.zM().optional(),sharePermission:I.k5(["view","edit"]).nullable().optional(),relationshipActive:I.zM().optional(),authorizedAt:I.Yj().nullable().optional(),createdAt:I.Yj().nullable().optional(),updatedAt:I.Yj().nullable().optional(),user:su.nullable().optional()}),sh=I.Ik({clients:I.YO(sm)});function sx(){let{user:e,loading:t}=(0,f.A)(),[s,a]=(0,r.useState)(!1),[i,l]=(0,r.useState)([]),[n,c]=(0,r.useState)(!1),[d,o]=(0,r.useState)(null),u=(0,r.useCallback)(async()=>{if(e){c(!0),o(null);try{let t=await e.getIdToken(),a=new URLSearchParams;s&&a.set("includeInactive","true");let r=await fetch(`/api/advisor/clients?${a.toString()}`,{method:"GET",headers:{...{Authorization:`Bearer ${t}`}}});if(!r.ok)throw Error(await so(r));let i=await r.json(),n=sh.safeParse(i);if(!n.success)throw Error("åææ ¼å¼é¯èª¤");l(n.data.clients)}catch(e){o(e instanceof Error?e.message:"è¼å
¥å¤±æ"),l([])}finally{c(!1)}}},[e,s]);(0,r.useEffect)(()=>{t||e&&u()},[t,e,u]);let m=(0,r.useMemo)(()=>i.filter(e=>e.isActive).length,[i]);return{includeInactive:s,setIncludeInactive:a,clients:i,activeCount:m,isLoading:n,error:d,reload:u}}let sp=I.Ik({error:I.bz()});async function sf(e){try{let t=await e.json(),s=sp.safeParse(t);if(!s.success)return`HTTP ${e.status}`;let a=s.data.error;if("string"==typeof a)return a;return`HTTP ${e.status}`}catch{return`HTTP ${e.status}`}}function sj(e){return{Authorization:`Bearer ${e}`}}let sv=I.Ik({source:I.k5(["retirement","insurance","other"]),entry:I.Yj(),summary:I.Yj(),riskLevel:I.Yj().optional(),category:I.Yj().optional()}).optional().nullable(),sg=I.Ik({id:I.Yj(),status:I.Yj(),date:I.Yj().optional().nullable(),time:I.Yj().optional().nullable(),topic:I.Yj().optional().nullable(),method:I.Yj().optional().nullable(),userId:I.Yj().optional().nullable(),userEmail:I.Yj().optional().nullable(),userDisplayName:I.Yj().optional().nullable(),advisorFee:I.ai().optional().nullable(),paymentAmount:I.ai().optional().nullable(),paymentType:I.Yj().optional().nullable(),paymentReference:I.Yj().optional().nullable(),cancellationReason:I.Yj().optional().nullable(),bookingContext:sv,createdAt:I.bz().optional(),updatedAt:I.bz().optional()}).passthrough(),sy=I.Ik({bookings:I.YO(sg)});function sb(){let{user:e,loading:t}=(0,f.A)(),[s,a]=(0,r.useState)("all"),[i,l]=(0,r.useState)(""),[n,c]=(0,r.useState)(""),[d,o]=(0,r.useState)(""),[u,m]=(0,r.useState)([]),[h,x]=(0,r.useState)(!1),[p,j]=(0,r.useState)(null),v=(0,r.useCallback)(async()=>{if(e){x(!0),j(null);try{let t=await e.getIdToken(),a=new URLSearchParams;s&&"all"!==s&&a.set("status",s),i&&a.set("startDate",i),n&&a.set("endDate",n),a.set("limit","100");let r=await fetch(`/api/advisor/bookings?${a.toString()}`,{method:"GET",headers:{...sj(t)}});if(!r.ok)throw Error(await sf(r));let l=await r.json(),c=sy.safeParse(l);if(!c.success)throw Error("åææ ¼å¼é¯èª¤");m(c.data.bookings)}catch(e){j(e instanceof Error?e.message:"è¼å
¥å¤±æ"),m([])}finally{x(!1)}}},[e,s,i,n]);(0,r.useEffect)(()=>{t||e&&v()},[t,e,v]);let g=(0,r.useMemo)(()=>{let e=d.trim().toLowerCase();return e?u.filter(t=>{let s=String(t.userEmail||"").toLowerCase(),a=String(t.userDisplayName||"").toLowerCase(),r=String(t.topic||"").toLowerCase();return s.includes(e)||a.includes(e)||r.includes(e)||String(t.id).toLowerCase().includes(e)}):u},[u,d]);return{status:s,setStatus:a,startDate:i,setStartDate:l,endDate:n,setEndDate:c,keyword:d,setKeyword:o,bookings:g,rawBookings:u,isLoading:h,error:p,reload:v,cancelBooking:(0,r.useCallback)(async(t,s)=>{if(!e||!t)return;let a=await e.getIdToken(),r=await fetch(`/api/advisor/bookings/${encodeURIComponent(t)}/cancel`,{method:"POST",headers:{"Content-Type":"application/json",...sj(a)},body:JSON.stringify({reason:s})});if(!r.ok)throw Error(await sf(r));await r.json().catch(()=>({})),m(e=>e.map(e=>e.id===t?{...e,status:"cancelled",cancellationReason:s||e.cancellationReason||""}:e))},[e])}}let sw=I.Ik({error:I.bz()});async function sN(e){try{let t=await e.json(),s=sw.safeParse(t);if(!s.success)return`HTTP ${e.status}`;let a=s.data.error;if("string"==typeof a)return a;return`HTTP ${e.status}`}catch{return`HTTP ${e.status}`}}function sk(e){return{Authorization:`Bearer ${e}`}}let sC=I.Ik({totalRevenue:I.ai(),totalPlatformFee:I.ai(),totalAdvisorRevenue:I.ai(),transactionCount:I.ai().int()}),sA=I.Ik({bookingId:I.Yj(),date:I.Yj().nullable().optional(),time:I.Yj().nullable().optional(),userId:I.Yj().nullable().optional(),userEmail:I.Yj().nullable().optional(),userDisplayName:I.Yj().nullable().optional(),amount:I.ai(),platformFee:I.ai(),advisorRevenue:I.ai(),paymentReference:I.Yj().nullable().optional(),paymentType:I.Yj().nullable().optional()}).passthrough(),sS=I.Ik({summary:sC,items:I.YO(sA)});function sE(){let{user:e,loading:t}=(0,f.A)(),[s,a]=(0,r.useState)(""),[i,l]=(0,r.useState)(""),[n,c]=(0,r.useState)(null),[d,o]=(0,r.useState)([]),[u,m]=(0,r.useState)(!1),[h,x]=(0,r.useState)(null),p=(0,r.useCallback)(async()=>
8{if(e){m(!0),x(null);try{let t=await e.getIdToken(),a=new URLSearchParams;s&&a.set("startDate",s),i&&a.set("endDate",i);let r=await fetch(`/api/advisor/revenue?${a.toString()}`,{method:"GET",headers:{...sk(t)}});if(!r.ok)throw Error(await sN(r));let l=await r.json(),n=sS.safeParse(l);if(!n.success)throw Error("åææ ¼å¼é¯èª¤");c(n.data.summary),o(n.data.items)}catch(e){x(e instanceof Error?e.message:"è¼å
¥å¤±æ"),c(null),o([])}finally{m(!1)}}},[e,s,i]);(0,r.useEffect)(()=>{t||e&&p()},[t,e,p]);let j=(0,r.useCallback)(async()=>{if(!e)return;let t=await e.getIdToken(),a=new URLSearchParams;s&&a.set("startDate",s),i&&a.set("endDate",i);let r=await fetch(`/api/advisor/revenue/export?${a.toString()}`,{method:"GET",headers:{...sk(t)}});if(!r.ok)throw Error(await sN(r));let l=await r.blob(),n=URL.createObjectURL(l),c=document.createElement("a");c.href=n,c.download="advisor-revenue.csv",c.click(),URL.revokeObjectURL(n)},[e,s,i]);return{startDate:s,setStartDate:a,endDate:i,setEndDate:l,summary:n,items:d,isLoading:u,error:h,reload:p,exportCsv:j}}var sI=s(17938);function sR(){let{toast:e}=(0,p.dj)(),{clients:t,activeCount:s,isLoading:i}=sx(),{rawBookings:l,isLoading:n}=sb(),{summary:c,isLoading:m}=sE(),{withdrawals:x,summary:j,loading:v,error:g,hasMore:y,loadMore:b,refresh:w,createWithdrawal:N}=function(e=20){let{user:t}=(0,f.A)(),[s,a]=(0,r.useState)([]),[i,l]=(0,r.useState)({totalRevenue:0,totalConsultationRevenue:0,totalWithdrawn:0,availableAmount:0}),[n,c]=(0,r.useState)(!1),[d,o]=(0,r.useState)(null),[u,m]=(0,r.useState)(null),[h,x]=(0,r.useState)(!1),p=(0,r.useCallback)(async(s=!1,r=null)=>{if(t)try{c(!0),o(null);let i=await t.getIdToken(),n=new URLSearchParams({limit:e.toString()});!s&&r&&n.set("cursor",r);let d=await fetch(`/api/advisor/withdrawals?${n.toString()}`,{headers:{Authorization:`Bearer ${i}`}});if(!d.ok){let e=await d.json();throw Error(e.error||"è¼å
¥å¤±æ")}let u=await d.json();s?a(u.withdrawals):a(e=>[...e,...u.withdrawals]),m(u.pagination.cursor),l(u.summary),x(u.pagination.hasMore)}catch(e){o(e.message||"è¼å
¥æé è¨é失æ")}finally{c(!1)}},[t,e]);(0,r.useEffect)(()=>{p(!0,null)},[t,p]);let j=(0,r.useCallback)(()=>{!n&&h&&u&&p(!1,u)},[n,h,u,p]),v=(0,r.useCallback)(()=>{m(null),a([]),p(!0,null)},[p]),g=(0,r.useCallback)(async e=>{if(!t)throw Error("è«å
ç»å
¥");let s=await t.getIdToken(),a=await fetch("/api/advisor/withdrawals",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${s}`},body:JSON.stringify({amount:e.amount,bankName:e.bankName,accountNumber:e.accountNumber,accountHolder:e.accountHolder})});if(!a.ok)throw Error((await a.json()).error||"æäº¤å¤±æ");await v()},[t,v]);return{withdrawals:s,summary:i,loading:n,error:d,hasMore:h,loadMore:j,refresh:v,createWithdrawal:g}}(10),[k,C]=(0,r.useState)(!1),[A,S]=(0,r.useState)(""),[E,I]=(0,r.useState)(""),[R,T]=(0,r.useState)(""),[$,P]=(0,r.useState)(""),[D,F]=(0,r.useState)(!1),_=(0,r.useMemo)(()=>{let e=l.reduce((e,t)=>{let s=String(t.status||"unknown");return e[s]=(e[s]||0)+1,e},{});return{total:l.length,pending:e.pending||0,authorized:e.authorized||0,paid:e.paid||0,cancelled:e.cancelled||0}},[l]),V=async()=>{if(D)return;let t=parseFloat(A);if(!t||t<300||t>j.availableAmount)return void e({title:"éé¡é¯èª¤",description:`æé éé¡å¿
é å¨ NT$ 300 å° NT$ ${j.availableAmount.toLocaleString("zh-TW",{minimumFractionDigits:2,maximumFractionDigits:2})} ä¹é`,variant:"destructive"});if(!E.trim()||!R.trim()||!$.trim())return void e({title:"è³æä¸å®æ´",description:"è«å¡«å¯«å®æ´çéè¡å¸³æ¶è³è¨",variant:"destructive"});try{F(!0),await N({amount:t,bankName:E.trim(),accountNumber:R.trim(),accountHolder:$.trim()}),C(!1),S(""),I(""),T(""),P(""),e({title:"ç³è«å·²æäº¤",description:"æé ç³è«å·²æäº¤ï¼çå¾
管çå¡å¯©æ ¸"})}catch(t){e({title:"æäº¤å¤±æ",description:t.message||"ç¡æ³æäº¤æé ç³è«",variant:"destructive"})}finally{F(!1)}};return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3",children:[(0,a.jsxs)(d.Zp,{children:[(0,a.jsx)(d.aR,{children:(0,a.jsx)(d.ZB,{className:"text-base",children:"客æ¶"})}),(0,a.jsxs)(d.Wu,{className:"space-y-2",children:[(0,a.jsx)("div",{className:"text-2xl font-semibold",children:i?"â":s}),(0,a.jsxs)("div",{className:"text-sm text-muted-foreground",children:["åç¨å®¢æ¶ / ç¸½æ¸ ",i?"â":t.length]})]})]}),(0,a.jsxs)(d.Zp,{children:[(0,a.jsx)(d.aR,{children:(0,a.jsx)(d.ZB,{className:"text-base",children:"é ç´"})}),(0,a.jsxs)(d.Wu,{className:"space-y-2",children:[(0,a.jsx)("div",{className:"text-2xl font-semibold",children:n?"â":_.total}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,a.jsxs)(e4.E,{variant:"outline",children:["å¾
ææ¬ ",n?"â":_.pending]}),(0,a.jsxs)(e4.E,{variant:"secondary",children:["å·²ææ¬ ",n?"â":_.authorized]}),(0,a.jsxs)(e4.E,{variant:"default",children:["已仿¬¾ ",n?"â":_.paid]}),(0,a.jsxs)(e4.E,{variant:"destructive",children:["已忶 ",n?"â":_.cancelled]})]})]})]}),(0,a.jsxs)(d.Zp,{children:[(0,a.jsx)(d.aR,{children:(0,a.jsx)(d.ZB,{className:"text-base",children:"æ¶å
¥ï¼å·²ä»æ¬¾ï¼"})}),(0,a.jsxs)(d.Wu,{className:"space-y-2",children:[(0,a.jsx)("div",{className:"text-2xl font-semibold",children:m||!c?"â":(0,sc.C)(c.totalAdvisorRevenue,{showSymbol:!0})}),(0,a.jsx)("div",{className:"text-sm text-muted-foreground",children:m||!c?"â":`總æ¶å
¥ ${(0,sc.C
8)(c.totalRevenue,{showSymbol:!0})}ï¼å¹³å°è²» ${(0,sc.C)(c.totalPlatformFee,{showSymbol:!0})}`})]})]})]}),(0,a.jsxs)(d.Zp,{children:[(0,a.jsx)(d.aR,{children:(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)(d.ZB,{className:"flex items-center gap-2",children:[(0,a.jsx)(sI.A,{className:"h-5 w-5"}),"æé ç³è«"]}),(0,a.jsx)(d.BT,{children:"ç³è«æé æ¨ç諮詢æ¶å
¥ï¼ç®¡çå¡å¯©æ ¸å¾å°å¯æ¬¾è³æå®éè¡å¸³æ¶"})]}),!k&&j.availableAmount>=300&&(0,a.jsx)(h.$,{onClick:()=>C(!0),disabled:v,children:"ç³è«æé "})]})}),(0,a.jsxs)(d.Wu,{children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-3 mb-4",children:[(0,a.jsxs)(d.Zp,{children:[(0,a.jsx)(d.aR,{className:"pb-2",children:(0,a.jsx)(d.ZB,{className:"text-sm font-medium",children:"總æ¶å
¥"})}),(0,a.jsxs)(d.Wu,{children:[v?(0,a.jsx)(sn.E,{className:"h-8 w-24"}):(0,a.jsx)("div",{className:"text-xl font-bold",children:(0,sc.C)(j.totalRevenue,{showSymbol:!0})}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground mt-1",children:"已宿çä»è²»è«®è©¢"})]})]}),(0,a.jsxs)(d.Zp,{children:[(0,a.jsx)(d.aR,{className:"pb-2",children:(0,a.jsx)(d.ZB,{className:"text-sm font-medium",children:"諮詢æ¶å
¥"})}),(0,a.jsx)(d.Wu,{children:v?(0,a.jsx)(sn.E,{className:"h-8 w-24"}):(0,a.jsx)("div",{className:"text-xl font-bold",children:(0,sc.C)(j.totalConsultationRevenue,{showSymbol:!0})})})]}),(0,a.jsxs)(d.Zp,{children:[(0,a.jsx)(d.aR,{className:"pb-2",children:(0,a.jsx)(d.ZB,{className:"text-sm font-medium",children:"å·²æé éé¡"})}),(0,a.jsx)(d.Wu,{children:v?(0,a.jsx)(sn.E,{className:"h-8 w-24"}):(0,a.jsx)("div",{className:"text-xl font-bold",children:(0,sc.C)(j.totalWithdrawn,{showSymbol:!0})})})]}),(0,a.jsxs)(d.Zp,{children:[(0,a.jsx)(d.aR,{className:"pb-2",children:(0,a.jsx)(d.ZB,{className:"text-sm font-medium",children:"坿é éé¡"})}),(0,a.jsx)(d.Wu,{children:v?(0,a.jsx)(sn.E,{className:"h-8 w-24"}):(0,a.jsx)("div",{className:"text-xl font-bold text-green-600",children:(0,sc.C)(j.availableAmount,{showSymbol:!0})})})]})]}),g&&(0,a.jsx)(e5.Fc,{variant:"destructive",className:"mb-4",children:(0,a.jsx)(e5.TN,{children:g})}),k&&(0,a.jsxs)("div",{className:"space-y-4 mb-6 p-4 rounded-lg border border-border bg-muted/50",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(u.J,{htmlFor:"withdrawal-amount",children:"æé éé¡"}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(o.p,{id:"withdrawal-amount",type:"number",min:"300",max:j.availableAmount,step:"0.01",value:A,onChange:e=>S(e.target.value),placeholder:`æä½ NT$ 300ï¼æé« ${(0,sc.C)(j.availableAmount,{showSymbol:!0})}`}),(0,a.jsxs)("p",{className:"text-xs text-muted-foreground",children:["坿é éé¡ï¼",(0,sc.C)(j.availableAmount,{showSymbol:!0})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(u.J,{htmlFor:"bank-name",children:"éè¡å稱"}),(0,a.jsx)(o.p,{id:"bank-name",value:E,onChange:e=>I(e.target.value),placeholder:"ä¾å¦ï¼å°ç£éè¡"})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(u.J,{htmlFor:"account-number",children:"帳è"}),(0,a.jsx)(o.p,{id:"account-number",value:R,onChange:e=>T(e.target.value),placeholder:"è«è¼¸å
¥éè¡å¸³è"})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(u.J,{htmlFor:"account-holder",children:"æ¶å"}),(0,a.jsx)(o.p,{id:"account-holder",value:$,onChange:e=>P(e.target.value),placeholder:"è«è¼¸å
¥å¸³æ¶ææäººå§å"})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(h.$,{onClick:V,disabled:D,className:"flex-1",children:D?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(eb.A,{className:"h-4 w-4 mr-2 animate-spin"}),"æäº¤ä¸..."]}):"æäº¤ç³è«"}),(0,a.jsx)(h.$,{variant:"outline",onClick:()=>{C(!1),S(""),I(""),T(""),P("")},children:"åæ¶"})]})]}),v&&0===x.length?(0,a.jsx)("div",{className:"space-y-2",children:Array.from({length:3}).map((e,t)=>(0,a.jsx)(sn.E,{className:"h-16 w-full"},t))}):0===x.length?(0,a.jsx)("div",{className:"text-center py-8 text-muted-foreground",children:j.availableAmou
8nt<300?(0,a.jsx)("p",{children:"坿é éé¡ä¸è¶³ï¼æä½ NT$ 300ï¼"}):(0,a.jsx)("p",{children:"å°ç¡æé è¨é"})}):(0,a.jsxs)("div",{className:"space-y-2",children:[x.map(e=>(0,a.jsx)("div",{className:"flex items-center justify-between p-4 rounded-lg border border-border",children:(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("div",{className:"font-semibold",children:(0,sc.C)(e.amount,{showSymbol:!0})}),(0,a.jsxs)(e4.E,{variant:"completed"===e.status?"default":"approved"===e.status?"secondary":"rejected"===e.status?"destructive":"outline",children:["pending"===e.status&&"å¾
å¯©æ ¸","approved"===e.status&&"å·²æ ¸å","rejected"===e.status&&"å·²æçµ","completed"===e.status&&"已宿"]})]}),(0,a.jsxs)("div",{className:"text-sm text-muted-foreground mt-1",children:[(0,a.jsxs)("p",{children:[e.bankName," - ",e.accountNumber]}),(0,a.jsx)("p",{children:e.createdAt?(0,tJ.GP)(new Date(e.createdAt),"yyyyå¹´MMæddæ¥ HH:mm",{locale:tq.G}):"æ¥ææªç¥"}),e.reviewNote&&(0,a.jsxs)("p",{className:"text-xs mt-1",children:["å註ï¼",e.reviewNote]})]})]})},e.id)),y&&(0,a.jsx)(h.$,{variant:"outline",className:"w-full mt-4",onClick:b,disabled:v,children:v?(0,a.jsx)(a.Fragment,{children:(0,a.jsx)(eb.A,{className:"h-4 w-4 animate-spin"})}):"è¼å
¥æ´å¤"})]})]})]})]})}var sT=s(14188),s$=s(2962),sP=s(6524);let sD=I.Ik({bodyMarkdown:I.Yj().optional(),sections:I.g1(I.Yj(),I.bz()).optional(),advisorDisplayName:I.Yj().optional(),updatedAt:I.Yj().optional()}),sF=[{key:"summary",label:"第ä¸ç« \xb7 ç財è¦åæ¸æè¦",placeholder:"é黿è¦ï¼çè²¡éæ±ã財åç¾æ³ãç®æ¨ãåæèè¦åæ¹åâ¦"},{key:"familyStatus",label:"第åç« \xb7 å®¶åºçæ³",placeholder:"å©å§»çæ³ãæ¶é¤äººæ¸ãå女年齡ãå®¶åºè²¬ä»»çï¼æªå¡«å¯«æç³»çµ±æä¾åçäººè³æèªåæè¦â¦"},{key:"goals",label:"第åç« \xb7 çè²¡ç®æ¨è¨å®ï¼è£å
ï¼",placeholder:"客æ¶èæ¯ãå¹å¼èªç¥ã風éªå好èç®æ¨ä¹è£å
說æâ¦"},{key:"currentStatus",label:"第äºç« \xb7 財åç¾æ³åæ",placeholder:"éå°è³ç¢è² åµãç¾éæµãä¿éªèè³ç¢é
ç½®çåæâ¦"},{key:"needsAnalysis",label:"第å
ç« \xb7 ç®æ¨éæ±åæ",placeholder:"ç¾éæµéæ±ãç·æ¥åç¨éãæéå ±é
¬çè缺å£åæâ¦"},{key:"benefit",label:"第å
«ç« \xb7 æçåæ",placeholder:"è¦åå·è¡å¾çé ææçèç®æ¨éæçâ¦"},{key:"actionPlan",label:"第ä¹ç« \xb7 å·è¡è¨ç«",placeholder:"å·è¡æ¥é©èæéé»ï¼ç¾é管æ§ãå²èãä¿å®èª¿æ´ãè³ç¢éåé
â¦ï¼"},{key:"reviewSchedule",label:"第åç« \xb7 å®ææª¢è¦",placeholder:"檢è¦é »çè觸ç¼èª¿æ´çæ
æ³â¦"},{key:"responsibilities",label:"第äºç« \xb7 責任è義åè²æï¼è¦å¯«ï¼",placeholder:"å¦éè¦å¯«é è¨ç責任義åè²æï¼æ¼æ¤å¡«å¯«â¦"}],s_=[{key:"financial",label:"財å管ç"},{key:"asset",label:"è³ç¢ç®¡ç"},{key:"risk",label:"風éªç®¡ç"},{key:"tax",label:"ç¨
åè¦å"},{key:"retirement",label:"éä¼è¦å"},{key:"estate",label:"éºç¢ï¼å³æ¿è¦å"}];function sV({open:e,onOpenChange:t,userId:s,userLabel:i}){let{toast:l}=(0,p.dj)(),{user:n}=(0,f.A)(),[c,d]=(0,r.useState)(!1),[o,m]=(0,r.useState)(!1),[x,j]=(0,r.useState)(""),[v,g]=(0,r.useState)({}),[y,b]=(0,r.useState)({}),[w,N]=(0,r.useState)(void 0),k=(0,r.useMemo)(()=>`/api/advisor/clients/${encodeURIComponent(s)}/financial-report-note`,[s]);(0,r.useEffect)(()=>{if(!e||!n)return;let t=!1;return(async()=>{d(!0);try{let e=await n.getIdToken(),s=await fetch(k,{method:"GET",headers:{Authorization:`Bearer ${e}`}});if(!s.ok)throw Error(`HTTP ${s.status}`);let a=await s.json(),r=sD.safeParse(a);if(!r.success)throw Error("åææ ¼å¼é¯èª¤");if(t)return;j(r.data.bodyMarkdown??"");let i=r.data.sections??{},l=i.recommendations??{},c={};for(let e of sF)"string"==typeof i[e.key]&&(c[e.key]=i[e.key]);let d={};for(let e of s_)"string"==typeof l[e.key]&&(d[e.key]=l[e.key]);g(c),b(d),N(r.data.updatedAt)}catch(t){let e=t instanceof Error?t:Error(String(t));K.Cp(e,{level:"error",extra:{message:"è¼å
¥é¡§åå ±è¡¨å»ºè°å¤±æ",endpoint:k},tags:{source:"ClientReportNoteDialog.load"}}),l({title:"è¼å
¥å¤±æ",description:"ç¡æ³è¼å
¥é¡§å建è°ï¼è«ç¨å¾å試ã",variant:"destructive"})}finally{t||d(!1)}})(),()=>{t=!0}},[e,n,k,l]);let C=async()=>
8{if(!n)return void l({title:"é¯èª¤",description:"ç¨æ¶æªç»å
¥",variant:"destructive"});m(!0);try{let e=await n.getIdToken(),t=await fetch(k,{method:"PUT",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:JSON.stringify({bodyMarkdown:x,sections:{...v,recommendations:y}})});if(!t.ok)throw Error(`HTTP ${t.status}`);l({title:"å·²å²å",description:"ç財è¦åæ¸é¡§å建è°å·²æ´æ°ã"}),N(new Date().toISOString())}catch(t){let e=t instanceof Error?t:Error(String(t));K.Cp(e,{level:"error",extra:{message:"å²åé¡§åå ±è¡¨å»ºè°å¤±æ",endpoint:k},tags:{source:"ClientReportNoteDialog.save"}}),l({title:"å²å失æ",description:"ç¡æ³å²åé¡§å建è°ï¼è«ç¨å¾å試ã",variant:"destructive"})}finally{m(!1)}},S=c||o;return(0,a.jsx)(A.lG,{open:e,onOpenChange:t,children:(0,a.jsxs)(A.Cf,{className:"max-w-3xl",children:[(0,a.jsxs)(A.c7,{children:[(0,a.jsx)(A.L3,{children:"ç財è¦åæ¸å»ºè°"}),(0,a.jsxs)(A.rr,{children:["編輯客æ¶ã",i,"ãçç財è¦åæ¸å
§å®¹ãåç« ç¯ç空æï¼ç³»çµ±æä¾è²¡åè³æèªåç¢çé è¨å
§å®¹ï¼å¡«å¯«å¾å°è¦å¯«è©²ç« ç¯ãæ¯æ´ Markdownã"]})]}),(0,a.jsxs)("div",{className:"max-h-[62vh] space-y-4 overflow-y-auto pr-1",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(u.J,{children:"æ´é«å»ºè°æè¦"}),(0,a.jsx)("div",{className:"text-xs text-muted-foreground",children:w?`æå¾æ´æ°ï¼${w}`:"å°æªå»ºç«å»ºè°"}),(0,a.jsx)(E.T,{value:x,onChange:e=>j(e.target.value),placeholder:"æ´é«å»ºè°æè¦ï¼æªå¡«ç¬¬ä¸ç« æè¦æï¼å°ä»¥æ¤ä½çºæè¦ï¼",className:"min-h-[120px]",disabled:S})]}),(0,a.jsxs)(sP.nD,{type:"multiple",className:"w-full",children:[sF.map(e=>(0,a.jsxs)(sP.As,{value:e.key,children:[(0,a.jsxs)(sP.$m,{className:"text-left text-sm",children:[e.label,v[e.key]?.trim()?(0,a.jsx)("span",{className:"ml-2 text-xs text-accent",children:"已填寫"}):null]}),(0,a.jsx)(sP.ub,{children:(0,a.jsx)(E.T,{value:v[e.key]??"",onChange:t=>g(s=>({...s,[e.key]:t.target.value})),placeholder:e.placeholder,className:"min-h-[140px]",disabled:S})})]},e.key)),(0,a.jsxs)(sP.As,{value:"recommendations",children:[(0,a.jsxs)(sP.$m,{className:"text-left text-sm",children:["第ä¸ç« \xb7 è¦å建è°ï¼å
é¢åï¼",Object.values(y).some(e=>e?.trim())?(0,a.jsx)("span",{className:"ml-2 text-xs text-accent",children:"已填寫"}):null]}),(0,a.jsx)(sP.ub,{className:"space-y-3",children:s_.map(e=>(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)(u.J,{className:"text-xs",children:e.label}),(0,a.jsx)(E.T,{value:y[e.key]??"",onChange:t=>b(s=>({...s,[e.key]:t.target.value})),placeholder:`${e.label}ç建è°â¦`,className:"min-h-[100px]",disabled:S})]},e.key))})]})]})]}),(0,a.jsxs)(A.Es,{children:[(0,a.jsx)(h.$,{variant:"outline",onClick:()=>t(!1),disabled:o,children:"éé"}),(0,a.jsx)(h.$,{onClick:C,disabled:S,children:o?"å²åä¸...":"å²å"})]})]})})}function sB(){let{toast:e}=(0,p.dj)(),t=(0,i.useRouter)(),{user:s,setViewingUser:l}=(0,f.A)(),{bookings:n,isLoading:c,error:u,status:m,setStatus:x,startDate:j,setStartDate:v,endDate:g,setEndDate:y,keyword:b,setKeyword:w,reload:N,cancelBooking:k}=sb(),{clients:C}=sx(),[S,I]=(0,r.useState)(!1),[R,T]=(0,r.useState)(null),[$,P]=(0,r.useState)(""),[D,F]=(0,r.useState)(!1),[_,V]=(0,r.useState)(null),[B,L]=(0,r.useState)(!1),[z,O]=(0,r.useState)(null),U=(0,r.useMemo)(()=>new Set(C.filter(e=>e.isActive&&e.userId).map(e=>e.userId)),[C]),M=(0,r.useMemo)(()=>{let e=e=>"paid"===e?(0,a.jsx)(e4.E,{variant:"default",children:"已仿¬¾"}):"authorized"===e?(0,a.jsx)(e4.E,{variant:"secondary",children:"å·²ææ¬"}):"pending"===e?(0,a.jsx)(e4.E,{variant:"outline",children:"å¾
ææ¬"}):"draft"===e?(0,a.jsx)(e4.E,{variant:"outline",children:"è稿"}):"cancelled"===e?(0,a.jsx)(e4.E,{variant:"destructive",children:"已忶"}):(0,a.jsx)(e4.E,{variant:"outline",children:e});return e.displayName="StatusBadge",e},[]),W=async()=>{if(R&&!D)try{F(!0),await k(R,$.trim()),I(!1),T(null),P(""),e({title:"已忶é ç´"})}catch(t){e({title:"åæ¶é ç´å¤±æ",description:t instanceof Error?t.message:"忶失æ",variant:"destructive"})}finally{F(!1)}};return(0,a.jsxs)(d.Zp,{children:[(0,a.jsx)(d.aR,{children:(0,a.jsx)(d.ZB,{children:"é ç´ç®¡ç"})}),(0,a.jsxs)(d.Wu,{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"flex flex-col md:flex-row md:items-end gap-3 justify-between",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-2 w-full",children:[(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("div",{className:"text-xs text-muted-foreground",children:"çæ
"}),(0,a.jsxs)(tZ.l6,{value:m,onValueChange:x,children:[(0,a.jsx)(tZ.bq,{children:(0,a.jsx)(tZ.yv,{})}),(0,a.jsxs)(tZ.gC,{children:[(0,a.jsx)(tZ.eb,{value:"all",children:"å
¨é¨"}),(0,a.jsx)(tZ.eb,{value:"paid",children:"已仿¬¾"}),(0,a.jsx)(tZ.eb,{value:"cancelled",children:"已忶"})]})]})]}),(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("div",{className:"text-xs text-muted-foreground",children:"éå§æ¥æ"}),(0,a.jsx)(o.p,{type:"date",value:j,onChange:e=>v(e.target.value)})]}),(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("div",{className:"text-xs text-muted-foreground",children:"çµææ¥æ"}),(0,a.jsx)(o.p,{type:"date",value:g,onChange:e=>y(e.target.value)})]}),(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("div",{className:"text-xs text-muted-foreground",children:"æå°"}),(0,a.jsx)(o.p,{placeholder:"å§å / Email / ä¸»é¡ / ID",value:b,onChange:e=>w(e.target.value)})]})]}),(0,a.jsx)("div",{className:"flex items-center gap-2",children:(0,a.jsx)(h.$,{variant:"outline",onClick:N,disabled:c,
8children:c?(0,a.jsx)(eb.A,{className:"h-4 w-4 animate-spin"}):"éæ°æ´ç"})})]}),u?(0,a.jsx)("div",{className:"text-sm text-destructive",children:u}):null,(0,a.jsxs)(s$.XI,{children:[(0,a.jsx)(s$.A0,{children:(0,a.jsxs)(s$.Hj,{children:[(0,a.jsx)(s$.nd,{children:"æé"}),(0,a.jsx)(s$.nd,{children:"客æ¶"}),(0,a.jsx)(s$.nd,{children:"主é¡"}),(0,a.jsx)(s$.nd,{children:"便º"}),(0,a.jsx)(s$.nd,{children:"çæ
"}),(0,a.jsx)(s$.nd,{className:"text-right",children:"éé¡"}),(0,a.jsx)(s$.nd,{className:"text-right",children:"æä½"})]})}),(0,a.jsx)(s$.BF,{children:0===n.length?(0,a.jsx)(s$.Hj,{children:(0,a.jsx)(s$.nA,{colSpan:7,className:"text-center text-muted-foreground py-10",children:c?(0,a.jsx)(sr.default,{size:40}):"æ²æé ç´è³æ"})}):n.map(r=>{let i="number"==typeof r.paymentAmount?r.paymentAmount:"number"==typeof r.advisorFee?r.advisorFee:0,n=r.bookingContext,c=n?.source==="retirement"?"éä¼è©¦ç®çµæ":n?.source==="insurance"?"ä¿éªç¼ºå£åæ":null;return(0,a.jsxs)(s$.Hj,{children:[(0,a.jsxs)(s$.nA,{className:"whitespace-nowrap",children:[(0,a.jsxs)("div",{className:"font-medium",children:[r.date||"â"," ",r.time||""]}),(0,a.jsx)("div",{className:"text-xs text-muted-foreground",children:r.method||""})]}),(0,a.jsxs)(s$.nA,{children:[(0,a.jsx)("div",{className:"font-medium",children:r.userDisplayName||r.userEmail||r.userId||"â"}),(0,a.jsx)("div",{className:"text-xs text-muted-foreground",children:r.userEmail||""})]}),(0,a.jsxs)(s$.nA,{className:"max-w-[240px]",children:[(0,a.jsx)("div",{className:"truncate",children:r.topic||"â"}),r.cancellationReason?(0,a.jsxs)("div",{className:"text-xs text-muted-foreground truncate",children:["åæ¶åå ï¼",r.cancellationReason]}):null]}),(0,a.jsx)(s$.nA,{children:c?(0,a.jsx)(eE.m_,{content:n?.summary??"â",children:(0,a.jsx)(e4.E,{variant:"secondary",className:"text-xs font-normal cursor-default",children:c})}):(0,a.jsx)("span",{className:"text-muted-foreground text-xs",children:"â"})}),(0,a.jsx)(s$.nA,{children:M(r.status)}),(0,a.jsx)(s$.nA,{className:"text-right whitespace-nowrap",children:(0,sc.C)(i,{showSymbol:!0})}),(0,a.jsx)(s$.nA,{className:"text-right",children:(0,a.jsxs)("div",{className:"flex items-center justify-end gap-1",children:[("authorized"===r.status||"paid"===r.status)&&r.userId?(0,a.jsxs)(a.Fragment,{children:[U.has(r.userId)?(0,a.jsx)(h.$,{size:"sm",variant:"outline",onClick:()=>{O({userId:r.userId,label:r.userDisplayName||r.userEmail||r.userId}),L(!0)},children:"å ±è¡¨å»ºè°"}):null,(0,a.jsxs)(h.$,{size:"sm",variant:"outline",disabled:null!==_,onClick:async()=>{V(r.id);try{let e=s?await s.getIdToken():null;e&&await fetch("/api/advisor/clients/ensure-from-booking",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({bookingId:r.id})})}catch{}l(r.userId,r.userEmail||r.userId),e({title:"已忿ª¢è¦æ¨¡å¼",description:`æ£å¨æª¢è¦å®¢æ¶ï¼${r.userDisplayName||r.userEmail||r.userId}`}),t.push("/dashboard"),V(null)},className:"flex items-center gap-1",children:[(0,a.jsx)(sT.A,{className:"h-3 w-3"}),"檢è¦å®¢æ¶"]})]}):null,(0,a.jsx)(h.$,{size:"sm",variant:"destructive",onClick:()=>{var e;(e=r.id)&&(T(e),P(""),I(!0))},disabled:"cancelled"===r.status,children:"åæ¶"})]})})]},r.id)})})]}),z?(0,a.jsx)(sV,{open:B,onOpenChange:e=>{L(e),e||O(null)},userId:z.userId,userLabel:z.label}):null,(0,a.jsx)(A.lG,{open:S,onOpenChange:I,children:(0,a.jsxs)(A.Cf,{children:[(0,a.jsxs)(A.c7,{children:[(0,a.jsx)(A.L3,{children:"åæ¶é ç´"}),(0,a.jsx)(A.rr,{children:"åæ¶å¾å°æ´æ°é ç´çæ
ï¼è¥å·²ä»æ¬¾ææ¨è¨é鿬¾ï¼å¯¦é鿬¾æµç¨å¾çºä¸²æ¥ï¼ã"})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("div",{className:"text-sm",children:"åæ¶åå ï¼é¸å¡«ï¼"}),(0,a.jsx)(E.T,{value:$,onChange:e=>P(e.target.value),placeholder:"ä¾å¦ï¼è¨æè¡ç¨è¡çª"})]}),(0,a.jsxs)(A.Es,{children:[(0,a.jsx)(h.$,{variant:"outline",onClick:()=>I(!1),disabled:D,children:"åæ¶"}),(0,a.jsx)(h.$,{variant:"destructive",onClick:W,disabled:D,children:D?"èçä¸...":"確èªåæ¶"})]})]})})]})]})}function sL(){let{toast:e}=(0,p.dj)(),t=sE(),s=(0,r.useMemo)(()=>t.summary?[{title:"總æ¶å
¥",value:t.summary.totalRevenue},{title:"平尿åè²»ï¼10%ï¼",value:t.summary.totalPlatformFee},{title:"æ·¨æ¶å
¥",value:t.summary.totalAdvisorRevenue}]:null,[t.summary]),i=async()=>{try{await t.exportCsv(),e({title:"å·²å¯åº CSV"})}catch(t){e({title:"å¯åºå¤±æ",description:t instanceof Error?t.message:"å¯åºå¤±æ",variant:"destructive"})}};return(0,a.jsxs)(d.Zp,{children:[(0,a.jsx)(d.aR,{children:(0,a.jsx)(d.ZB,{children:"æ¶å
¥ç®¡ç"})}),(0,a.jsx)(d.Wu,{className:"space-y-4",children:(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("div",{className:"flex flex-col md:flex-row md:items-end gap-3 justify-between",children:(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-2 w-full",children:[(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("div",{className:"text-xs text-muted-foreground",children:"éå§æ¥æ"}),(0,a.jsx)(o.p,{type:"date",value:t.startDate,onChange:e=>t.setStartDate(e.target.value)})]}),(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("div",{className:"text-xs text-muted-foreground",children:"çµææ¥æ"}
8),(0,a.jsx)(o.p,{type:"date",value:t.endDate,onChange:e=>t.setEndDate(e.target.value)})]}),(0,a.jsxs)("div",{className:"flex items-end gap-2",children:[(0,a.jsx)(h.$,{variant:"outline",onClick:t.reload,disabled:t.isLoading,children:t.isLoading?(0,a.jsx)(eb.A,{className:"h-4 w-4 animate-spin"}):"éæ°æ´ç"}),(0,a.jsx)(h.$,{onClick:i,disabled:t.isLoading,children:"å¯åº CSV"})]})]})}),t.error?(0,a.jsx)("div",{className:"text-sm text-destructive",children:t.error}):null,s?(0,a.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3",children:s.map(e=>(0,a.jsxs)(d.Zp,{children:[(0,a.jsx)(d.aR,{children:(0,a.jsx)(d.ZB,{className:"text-base",children:e.title})}),(0,a.jsx)(d.Wu,{className:"text-xl font-semibold",children:(0,sc.C)(e.value,{showSymbol:!0})})]},e.title))}):(0,a.jsx)("div",{className:"text-sm text-muted-foreground",children:"å°æªè¼å
¥æè¦"}),(0,a.jsx)("div",{className:"flex items-center justify-between",children:(0,a.jsxs)(e4.E,{variant:"secondary",children:["çæ¸ï¼",t.summary?.transactionCount??0]})}),(0,a.jsxs)(s$.XI,{children:[(0,a.jsx)(s$.A0,{children:(0,a.jsxs)(s$.Hj,{children:[(0,a.jsx)(s$.nd,{children:"æ¥æ"}),(0,a.jsx)(s$.nd,{children:"客æ¶"}),(0,a.jsx)(s$.nd,{className:"text-right",children:"éé¡"}),(0,a.jsx)(s$.nd,{className:"text-right",children:"å¹³å°è²»"}),(0,a.jsx)(s$.nd,{className:"text-right",children:"æ·¨æ¶å
¥"})]})}),(0,a.jsx)(s$.BF,{children:0===t.items.length?(0,a.jsx)(s$.Hj,{children:(0,a.jsx)(s$.nA,{colSpan:5,className:"text-center text-muted-foreground py-10",children:t.isLoading?(0,a.jsx)(sr.default,{size:40}):"æ²æè³æ"})}):t.items.map(e=>(0,a.jsxs)(s$.Hj,{children:[(0,a.jsx)(s$.nA,{className:"whitespace-nowrap",children:(0,a.jsxs)("div",{className:"font-medium",children:[e.date||"â"," ",e.time||""]})}),(0,a.jsxs)(s$.nA,{children:[(0,a.jsx)("div",{className:"font-medium",children:e.userDisplayName||e.userEmail||e.userId||"â"}),(0,a.jsx)("div",{className:"text-xs text-muted-foreground",children:e.userEmail||""})]}),(0,a.jsx)(s$.nA,{className:"text-right whitespace-nowrap",children:(0,sc.C)(e.amount,{showSymbol:!0})}),(0,a.jsx)(s$.nA,{className:"text-right whitespace-nowrap",children:(0,sc.C)(e.platformFee,{showSymbol:!0})}),(0,a.jsx)(s$.nA,{className:"text-right whitespace-nowrap",children:(0,sc.C)(e.advisorRevenue,{showSymbol:!0})})]},e.bookingId))})]})]})})]})}var sz=s(93806),sO=s(775),sU=s(20814),sM=s(90508);function sW(){let{toast:e}=(0,p.dj)(),t=(0,i.useRouter)(),{advisor:s,loading:l,isAdvisor:n}=(0,sz.s)(),{isAdmin:c}=(0,eR.q)(),{user:o}=(0,f.A)(),[u,m]=(0,r.useState)(0),[h,x]=(0,r.useState)(!1),j=(0,r.useMemo)(()=>{if(s)return{name:s.name||"",company:s.company||"",officeAddress:s.officeAddress||"",specialties:s.specialties||[],serviceAreas:s.serviceAreas||[],certifications:s.certifications||[],fee:s.fee||0,yearsOfExperience:s.yearsOfExperience||0,weeklySchedule:s.weeklySchedule||{},specificDates:s.specificDates||{},avatar:s.avatar||"",website:s.website||"",socialMedia:s.socialMedia||[],userId:s.userId||o?.uid,rating:s.rating||0,reviews:s.reviews||0,email:s.email||o?.email||"",customerReviews:s.customerReviews||[],id:s.id,advanceBookingDays:s.advanceBookingDays,bookingWindowDays:s.bookingWindowDays,certificationsUpdatedAt:s.certificationsUpdatedAt}},[s,o]),v=(0,r.useMemo)(()=>{if(!s)return;let e=s.certificationsUpdatedAt,t="string"==typeof e?e:"function"==typeof e?.toDate?e.toDate().toISOString():void 0;if(!t||!(0,sU.iQ)(t))return;let a=(0,sU.AD)(t);return a?a.toLocaleDateString("zh-TW",{year:"numeric",month:"2-digit",day:"2-digit"}):void 0},[s]),g=(0,r.useCallback)(async a=>{try{x(!0);let r={name:a.name,company:a.company||"",officeAddress:a.officeAddress||"",specialties:a.specialties,serviceAreas:a.serviceAreas,certifications:a.certifications||[],fee:a.fee,yearsOfExperience:a.yearsOfExperience||0,weeklySchedule:a.weeklySchedule||{},specificDates:a.specificDates||{},avatar:a.avatar,website:a.website||"",socialMedia:a.socialMedia.length>0?a.socialMedia:[],advanceBookingDays:a.advanceBookingDays,bookingWindowDays:a.bookingWindowDays,updatedAt:new Date().toISOString()};
8if(s?.id){if(await sO.n.updateAdvisor(s.id,r,{fromSelf:!0}),o)try{let e=await o.getIdToken();await (0,ee.b2)(e)}catch{}e({title:"æ´æ°æåï¼",description:"é¡§åè³æå·²æåæ´æ°ã"}),m(e=>e+1),t.refresh()}else{if(!c&&!n)return void e({variant:"destructive",title:"é¯èª¤",description:"ç¡æ³æ¾å°é¡§åè³æ"});let s={...r,userId:o?.uid||null,email:o?.email||null,rating:0,reviews:0,customerReviews:[],createdAt:new Date().toISOString()};await sO.n.addAdvisor(s),e({title:"å»ºç«æåï¼",description:"é¡§åè³æå·²æå建ç«ã"}),m(e=>e+1),t.refresh()}}catch(a){let t=a instanceof Error?a:Error(String(a));throw K.Cp(t,{level:"error",extra:{message:"å²åé¡§åè³ææç¼çé¯èª¤",operation:"advisor_profile_save",advisorId:s?.id},tags:{source:"AdvisorProfileSettings.handleSave"}}),e({variant:"destructive",title:"æä½å¤±æ",description:a instanceof Error?a.message:"系統ç¼çé¯èª¤ï¼è«ç¨å¾å試ã"}),a}finally{x(!1)}},[s,c,n,o,e,t]);return l?(0,a.jsx)(sr.default,{className:"py-12",size:64}):n||c?(0,a.jsx)("div",{className:"space-y-6",children:(0,a.jsxs)(d.Zp,{children:[(0,a.jsxs)(d.aR,{children:[(0,a.jsx)(d.ZB,{children:"é¡§åè³æ"}),(0,a.jsx)(d.BT,{children:"編輯æ¨çé¡§åè³æï¼éäºè³è¨å°é¡¯ç¤ºå¨é¡§åå表ä¸ä¾ç¨æ¶æ¥çã"})]}),(0,a.jsx)(d.Wu,{children:(0,a.jsx)(sM.A,{initialData:j,userId:s?.userId||o?.uid,onSave:g,isSaving:h,showCancelButton:!1,avatarInputId:"advisor-avatar",certificationsLockedUntil:v},u)})]})}):(0,a.jsx)(d.Zp,{children:(0,a.jsx)(d.Wu,{className:"p-8 text-center",children:(0,a.jsx)("p",{className:"text-muted-foreground",children:"æ¨ç®å䏿¯é¡§åï¼ç¡æ³ç·¨è¼¯é¡§åè³æã"})})})}function sZ(){let[e,t]=(0,r.useState)("dashboard");return(0,a.jsx)(sl.A,{children:(0,a.jsxs)(l.tU,{value:e,onValueChange:t,className:"space-y-4",children:[(0,a.jsxs)(l.j7,{className:"mb-2",children:[(0,a.jsx)(l.Xi,{value:"dashboard",children:"主é "}),(0,a.jsx)(l.Xi,{value:"advisor-profile",children:"é¡§åè³æ"}),(0,a.jsx)(l.Xi,{value:"bookings",children:"é ç´ç®¡ç"}),(0,a.jsx)(l.Xi,{value:"revenue",children:"æ¶å
¥ç®¡ç"})]}),(0,a.jsx)(l.av,{value:"dashboard",children:(0,a.jsx)(sR,{})}),(0,a.jsx)(l.av,{value:"advisor-profile",children:(0,a.jsx)(sW,{})}),(0,a.jsx)(l.av,{value:"bookings",children:(0,a.jsx)(sB,{})}),(0,a.jsx)(l.av,{value:"revenue",children:(0,a.jsx)(sL,{})})]})})}var sH=s(8180),sJ=s(35347);let sG=["profile","notifications","sound","sponsorship","security","sharing","bookings","edit-history","data-import","developer","advisor","beta"];function sY(){let{isAdvisor:e,isLoading:t}=(0,sJ.b)(),s=(0,i.useSearchParams)(),n=(0,i.useRouter)(),c=(0,i.usePathname)(),[d,o]=(0,r.useState)("profile");return(0,r.useEffect)(()=>{let e=s.get("tab");if("subscription"===e){let e=s.get("plan"),t=new URLSearchParams({tab:"sponsorship"});e&&t.set("plan",e),n.replace(`${c}?${t.toString()}`);return}if("referral"===e){let e=s.get("ref"),t=new URLSearchParams({tab:"profile"});e&&t.set("ref",e),n.replace(`${c}?${t.toString()}`);return}e&&sG.includes(e)&&o(e)},[s,n,c]),(0,r.useEffect)(()=>{!t&&("advisor"!==d||e||o("profile"))},[t,e,d]),(0,a.jsx)("div",{className:"space-y-6",children:(0,a.jsxs)(l.tU,{value:d,onValueChange:e=>{o(e??"profile")},className:"space-y-4",children:[(0,a.jsx)("div",{className:"w-full min-w-0",children:(0,a.jsxs)(l.j7,{className:"w-full max-w-full overflow-x-auto whitespace-nowrap",children:[(0,a.jsx)(l.Xi,{value:"profile",children:"åäººè³æ"}),(0,a.jsx)(l.Xi,{value:"notifications",children:"éç¥"}),(0,a.jsx)(l.Xi,{value:"sound",children:"鳿"}),(0,a.jsx)(l.Xi,{value:"sponsorship",children:"è´å©"}),(0,a.jsx)(l.Xi,{value:"security",children:"å®å
¨"}),(0,a.jsx)(l.Xi,{value:"sharing",children:"å享"}),(0,a.jsx)(l.Xi,{value:"bookings",children:"é ç´"}),(0,a.jsx)(l.Xi,{value:"edit-history",children:"ä¿®æ¹ç´é"}),(0,a.jsx)(l.Xi,{value:"data-import",children:"è³æç®¡ç"}),!t&&e&&(0,a.jsx)(l.Xi,{value:"advisor",children:"é¡§å"}),(0,a.jsx)(l.Xi,{value:"developer",children:"éç¼è
"}),(0,a.jsx)(l.Xi,{value:"beta",children:"Beta"})]})}),(0,a.jsxs)(l.av,{value:"profile",className:"space-y-6",children:[(0,a.jsx)(ei,{}),(0,a.jsx)(ev,{})]}),(0,a.jsx)(l.av,{value:"notifications",children:(0,a.jsx)(eO,{})}),(0,a.jsx)(l.av,{value:"sound",children:(0,a.jsx)(eQ,{})}),(0,a.jsx)(l.av,{value:"sponsorship",children:(0,a.jsx)(sH.yO,{})}),(0,a.jsx)(l.av,{value:"security",children:(0,a.jsx)(tu,{})}),(0,a.jsx)(l.av,{value:"sharing",children:(0,a.jsx)(si,{})}),(0,a.jsx)(l.av,{value:"bookings",children:(0,a.jsx)(ty,{})}),(0,a.jsx)(l.av,{value:"edit-history",children:(0,a.jsx)(t$,{})}),(0,a.jsx)(l.av,{value:"data-import",children:(0,a.jsx)(tL,{})}),!t&&e&&(0,a.jsx)(l.av,{value:"advisor",children:(0,a.jsx)(sZ,{})}),(0,a.jsxs)(l.av,{value:"developer",className:"space-y-6",children:[(0,a.jsx)(tk.A,{}),(0,a.jsx)(tN,{})]}),(0,a.jsx)(l.av,{value:"beta",children:(0,a.jsx)(sH.dE,{})})]})})}}}]);
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.