1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5189,7014],{575:(e,t,a)=>{a.d(t,{D:()=>c});var s=a(31615),r=a(73521),l=a(21),i=a(8958);function n(e){try{let t={...e,lastSynced:new Date().toISOString()};localStorage.setItem(i.RZ,JSON.stringify(t))}catch(e){console.warn("[useSoundPreferences] å²å localStorage 失æ:",e)}}function c(){let{user:e}=(0,r.A)(),[t,a]=(0,s.useState)({...i.wK}),[c,o]=(0,s.useState)(!0),[d,u]=(0,s.useState)(null),m=(0,s.useRef)(!1);(0,s.useEffect)(()=>{!async function(){o(!0),u(null);try{let t=function(){try{let e=localStorage.getItem(i.RZ);if(e){let t=JSON.parse(e);return{enabled:t.enabled??i.wK.enabled,categories:{alerts:t.categories?.alerts??i.wK.categories.alerts,tasks:t.categories?.tasks??i.wK.categories.tasks},volume:t.volume??i.wK.volume}}}catch(e){console.warn("[useSoundPreferences] è®å localStorage 失æ:",e)}return null}();if(t&&a(t),e?.uid)try{let t=await l.s.getSoundSettings(e.uid);a(t),n(t)}catch(e){console.warn("[useSoundPreferences] Firestore è®å失æï¼ä½¿ç¨ localStorage è¨å®:",e)}}catch(e){console.error("[useSoundPreferences] è¼å
¥è¨å®å¤±æ:",e),u("è¼å
¥é³æè¨å®å¤±æ")}finally{o(!1),m.current=!0}}()},[e?.uid]);let h=(0,s.useCallback)(async s=>{let r={enabled:s.enabled??t.enabled,categories:{alerts:s.categories?.alerts??t.categories.alerts,tasks:s.categories?.tasks??t.categories.tasks},volume:s.volume??t.volume};if(a(r),n(r),e?.uid)try{await l.s.setSoundSettings(e.uid,r)}catch(e){console.error("[useSoundPreferences] Firestore 忥失æ:",e)}},[t,e?.uid]),p=(0,s.useCallback)(async()=>{await h({enabled:!t.enabled})},[t.enabled,h]),x=(0,s.useCallback)(async e=>{let t=Math.max(0,Math.min(1,e));await h({volume:t})},[h]),g=(0,s.useCallback)(async e=>{await h({categories:{...t.categories,[e]:!t.categories[e]}})},[t.categories,h]);return{preferences:t,isLoading:c,error:d,updatePreferences:h,toggleEnabled:p,setVolume:x,toggleCategory:g,refresh:(0,s.useCallback)(async()=>{if(e?.uid){o(!0);try{let t=await l.s.getSoundSettings(e.uid);a(t),n(t)}catch(e){console.error("[useSoundPreferences] éæ°è¼å
¥å¤±æ:",e),u("éæ°è¼å
¥é³æè¨å®å¤±æ")}finally{o(!1)}}},[e?.uid])}}},9234:(e,t,a)=>{a.d(t,{sN:()=>x,MV:()=>p});var s=a(4153),r=a(15418);let l=r.KC([r.p6(),r.Ik({seconds:r.ai(),nanoseconds:r.ai()}),r.bz()]),i=r.k5(["D","M","Y"]),n=r.k5(["onetime","monthly"]),c=r.k5(["pending","active","failed","cancelled","completed"]),o=r.Ik({displayOnWall:r.zM().default(!1),displayName:r.Yj().min(1).max(50).optional(),message:r.Yj().max(200).optional()});r.Ik({id:r.Yj(),amount:r.ai().int().positive(),name:r.Yj(),description:r.Yj().optional(),isActive:r.zM().default(!0),sortOrder:r.ai().int().nonnegative().default(0),periodType:i.default("M"),frequency:r.ai().int().positive().default(1),execTimes:r.ai().int().positive().default(99),createdAt:l.optional(),updatedAt:l.optional()}),r.Ik({userId:r.Yj(),type:n,tierId:r.Yj().optional(),amount:r.ai().nonnegative(),merchantTradeNo:r.Yj().min(1),status:c.default("pending"),sponsorProfile:o.optional(),periodType:i.optional(),frequency:r.ai().int().positive().optional(),execTimes:r.ai().int().positive().optional(),currentExecTimes:r.ai().int().nonnegative().default(0),nextPaymentDate:l.optional(),createdAt:l.optional(),updatedAt:l.optional(),cancelledAt:l.optional(),cancellationReason:r.Yj().optional(),renewalFailure:r.Ik({consecutiveFailures:r.ai().int().positive(),lastFailedAt:l.optional(),lastFailureMessage:r.Yj().nullable().optional()}).optional(),chargedAfterCancel:r.zM().optional()}),r.Ik({id:r.Yj(),sponsorshipId:r.Yj(),userId:r.Yj(),merchantTradeNo:r.Yj(),ecpayTradeNo:r.Yj().nullable().optional(),gwsr:r.Yj().nullable().optional(),amount:r.ai().nonnegative(),paymentDate:l,status:r.k5(["success","failed","pending","refunded"]),paymentType:r.Yj().optional(),amountMismatch:r.zM().optional(),chargedAfterCancel:r.zM().optional(),ecpayResponse:r.g1(r.Yj(),r.bz()).optional(),createdAt:l.optional()}),r.Ik({type:n,amount:r.ai().int().min(200),tierId:r.Yj().nullish(),displayOnWall:r.zM().default(!1),displayName:r.Yj().max(50).nullish(),message:r.Yj().max(200).nullish(),clientBackURL:r.Yj().url().nullish(),orderResultURL:r.Yj().url().nullish()}),r.Ik({sponsorshipId:r.Yj().min(1)}).passthrough();let d=r.k5(["monthly","yearly"]),u=r.Ik({id:r.Yj().min(1),label:r.Yj().min(1),description:r.Yj().min(1),billingPeriod:d,amountTwd:r.ai().int().nonnegative().nullable(),monthlyAmountTwd:r.ai().int().nonnegative().nullable()}),m=r.Ik({lastUpdated:r.Yj().regex(/^\d{4}-\d{2}-\d{2}$/),updateCadence:r.Yj().min(1),items:r.YO(u).min(1)}),h=r.Ik({id:r.Yj().min(1),amountTwd:r.ai().int().nonnegative().nullable().optional(),billingPeriod:d.optional(),monthlyAmountTwd:r.ai().int().nonnegative().nullable().optional()});function p(e,t){return null===e?null:"yearly"===t?Math.round(e/12):e}function x(){let{lastUpdated:e,updateCadence:t,items:a}=s.Bm.costBreakdown;return m.parse({lastUpdated:e,updateCadence:t,items:a.map(e=>{let t;return t=(void 0)??e.defaultBillingPeriod,{id:e.id,label:e.label,description:e.description,billingPeriod:t,amountTwd:null,monthlyAmountTwd:p(null,t)}})})}r.Ik({items:r.YO(h),lastUpdated:r.Yj().regex(/^\d{4}-\d{2}-\d{2}$/),updatedBy:r.Yj().optional()}),r.Ik({items:r.YO(r.Ik({id:r.Yj().min(1),amountTwd:r.ai().int().nonnegative().nullable(),billingPeriod:d})).min(1)}),a(27703)},27012:(e,t,a)=>{a.d(t,{A:()=>u});var s=a(85047),r=a(31615),l=a(82520),i=a(21410),n=a(21016),c=a(2416),o=a(85183);class d extends r.Component{constructor(e){super(e),this.state={hasError:!1,error:null,errorInfo:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e,errorInfo:null}}componentDidCatch(e,t){this.setState({error:e,errorInfo:t}),this.props.onError&&this.props.onError(e,t)}handleRetry=()=>{this.setState({hasError:!1,error:null,errorInfo:null})};render(){return this.state.hasError?this.props.fallback?this.props.fallback:(0,s.jsxs)(l.Zp,{className:"border-red-200 bg-red-50 dark:border-red-800 dark:bg-red-950",children:[(0,s.jsxs)(l.aR,{children:[(0,s.jsxs)(l.ZB,{className:"flex items-center gap-2 text-red-800 dark:text-red-200",children:[(0,s.jsx)(c.A,{className:"h-5 w-5"}),"ç¼çé¯èª¤"]}),(0,s.jsx)(l.BT,{className:"text-red-600 dark:text-red-400",children:"管çé é¢è¼å
¥æç¼çæªé æçé¯èª¤"})]}),(0,s.jsxs)(l.Wu,{className:"space-y-4",children:[(0,s.jsxs)(n.Fc,{children:[(0,s.jsx)(c.A,{className:"h-4 w-4"}),(0,s.jsxs)(n.TN,{children:[(0,s.jsx)("strong",{children:"é¯èª¤è©³æ
ï¼"}),(0,s.jsx)("div",{className:"mt-2 text-sm font-mono bg-red-100 dark:bg-red-900 p-2 rounded",children:this.state.error?.message||"æªç¥é¯èª¤"})]})]}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsxs)(i.$,{onClick:this.handleRetry,variant:"outline",className:"border-red-300 text-red-700 hover:bg-red-100",children:[(0,s.jsx)(o.A,{className:"h-4 w-4 mr-2"}),"éæ°è¼å
¥"]}),(0,s.jsx)(i.$,{onClick:()=>window.location.reload(),variant:"default",children:"å·æ°é é¢"})]}),!1]})]}):this.props.children}}let u=d},37014:(e,t,a)=>{a.d(t,{callFn:()=>i,callPublicFn:()=>n});var s=a(71931),r=a(76458),l=a(19548);async function i(e,t){if(!r.functions)throw Error("Firebase Functions æªåå§å");if(!r.auth)throw Error("Firebase Auth æªåå§å");if(!r.auth.currentUser)throw Error("ç¨æ¶æªç»å
¥ï¼è«å
ç»å
¥å¾åä½¿ç¨æ¤åè½");try{if(!await r.auth.currentUser.getIdToken(!0))throw Error("ç¡æ³åå¾èªè token")}catch(t){let e=t instanceof Error?t:Error(String(t));throw l.Cp(e,{level:"error",extra:{message:"å·æ° ID Token 失æ",operation:"callFn.getIdToken"},tags:{source:"firebase.callFn"}}),Error("èªè失æï¼è«éæ°ç»å
¥")}if(!r.app)throw Error("Firebase App æªåå§å");if(r.functions&&"app"in r.functions&&r.auth&&"app"in r.auth){let e=r.functions.app,t=r.auth.app;if(e!==t)throw l.Cp(Error("Firebase App mismatch"),{level:"error",extra:{message:"Firebase App 實ä¾ä¸ä¸è´",functionsAppName:e?.name,authAppName:t?.name,appName:r.app?.name},tags:{source:"firebase.callFn"}}),Error("Firebase App 實ä¾ä¸ä¸è´ï¼è«éæ°åå§å")}let a=(0,s.httpsCallable)(r.functions,e);try{return await a(t)}catch(n){let a=n?.code||"",i=String(n?.message||"");if("unauthenticated"===a||"permission-denied"===a||i.includes("unauth")||i.includes("401")||i.includes("Unauthorized"))try{if(!r.auth.currentUser)throw Error("ç¨æ¶å·²ç»åºï¼è«éæ°ç»å
¥");await r.auth.currentUser.getIdToken(!0),await new Promise(e=>setTimeout(e,100));let a=(0,s.httpsCallable)(r.functions,e);return await a(t)}catch(t){throw l.Cp(t instanceof Error?t:Error(String(t)),{level:"error",extra:{message:`é試失æ: ${e}`,operation:"callFn.retry",code:t?.code},tags:{source:"firebase.callFn"}}),Error(t?.message||"èªè失æï¼è«éæ°ç»å
¥å¾å試")}throw n}}async function n(e,t){if(!r.functions)throw Error("Firebase Functions æªåå§å");return(0,s.httpsCallable)(r.functions,e)(t)}},42603:(e,t,a)=>{a.d(t,{f:()=>i});var s=a(31615),r=a(575),l=a(28979);function i(){let{preferences:e}=(0,r.D)(),t=(0,s.useRef)(e);(0,s.useEffect)(()=>{t.current=e},[e]),(0,s.useEffect)(()=>{e.enabled&&l.jY.preloadSounds()},[e.enabled]);let a=(0,s.useCallback)(async e=>l.jY.playSound(e,t.current),[]),i=(0,s.useCallback)(async()=>a("NOTIFICATION"),[a]),n=(0,s.useCallback)(async()=>a("SUCCESS"),[a]),c=(0,s.useCallback)(async()=>a("ERROR"),[a]),o=(0,s.useCallback)(async()=>a("WARNING"),[a]),d=(0,s.useCallback)(async()=>a("FINANCIAL"),[a]),u=(0,s.useCallback)(async()=>a("COMPLETE"),[a]),m=(0,s.useCallback)(async()=>l.jY.playTestSound(t.current.volume),[]);return{playSound:a,playNotification:i,playSuccess:n,playError:c,playWarning:o,playFinancialAlert:
1d,playTaskComplete:u,playTestSound:m,playSoundForTest:(0,s.useCallback)(async e=>l.jY.playSoundForTest(e,t.current.volume),[]),preloadSounds:(0,s.useCallback)(e=>{l.jY.preloadSounds(e)},[]),isAudioUnlocked:l.jY.isAudioUnlocked(),isEnabled:e.enabled,volume:e.volume}}},57966:(e,t,a)=>{a.d(t,{Ke:()=>o,Nt:()=>n,R6:()=>c});var s=a(85047),r=a(31615),l=a(37323),i=a(34961);let n=l.bL,c=l.l9,o=r.forwardRef(({className:e,...t},a)=>(0,s.jsx)(l.UC,{ref:a,className:(0,i.cn)("overflow-hidden data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",e),...t}));o.displayName=l.UC.displayName},90508:(e,t,a)=>{a.d(t,{A:()=>H});var s=a(85047),r=a(31615),l=a(21410),i=a(96968),n=a(866),c=a(41178),o=a(18654),d=a(73521),u=a(8947),m=a(79982),h=a(19548),p=a(79705),x=a(18534),g=a(42176),f=a(61997);let b=async(e,t,a=0)=>{let s=await new Promise((t,a)=>{let s=new Image;s.addEventListener("load",()=>t(s)),s.addEventListener("error",e=>a(e)),s.src=e}),r=document.createElement("canvas"),l=r.getContext("2d");if(!l)throw Error("ç¡æ³åå¾ Canvas 2D ä¸ä¸æ");let i=a*Math.PI/180,n=Math.abs(Math.sin(i)),c=Math.abs(Math.cos(i)),o=s.width*c+s.height*n,d=s.width*n+s.height*c;r.width=o,r.height=d,l.imageSmoothingEnabled=!0,l.imageSmoothingQuality="high",l.translate(o/2,d/2),0!==a&&l.rotate(i),l.drawImage(s,-s.width/2,-s.height/2);let u=document.createElement("canvas"),m=u.getContext("2d");if(!m)throw Error("ç¡æ³åå¾è£åª Canvas 2D ä¸ä¸æ");return u.width=t.width,u.height=t.height,m.imageSmoothingEnabled=!0,m.imageSmoothingQuality="high",m.drawImage(r,t.x,t.y,t.width,t.height,0,0,t.width,t.height),new Promise((e,t)=>{u.toBlob(a=>{a?e(URL.createObjectURL(a)):t(Error("ç¡æ³çæåç blob"))},"image/jpeg",.95)})};function v({imageSrc:e,open:t,onOpenChange:a,onSave:i,aspect:n=1,cropShape:c="round"}){let[o,d]=(0,r.useState)({x:0,y:0}),[u,j]=(0,r.useState)(1),[y,N]=(0,r.useState)(0),[k,w]=(0,r.useState)(null),[C,S]=(0,r.useState)(!1),T=(0,r.useCallback)((e,t)=>{w(t)},[]),D=(0,r.useCallback)(async()=>{if(k)try{S(!0);let t=await b(e,k,y);i(t),a(!1)}catch(e){h.Cp(e instanceof Error?e:Error(String(e)),{level:"error",extra:{message:"åçèç失æ"},tags:{source:"ImageEditor.handleSave"}})}finally{S(!1)}},[k,e,y,i,a]),A=(0,r.useCallback)(()=>{d({x:0,y:0}),j(1),N(0)},[]);return(0,s.jsx)(x.lG,{open:t,onOpenChange:a,children:(0,s.jsxs)(x.Cf,{className:"sm:max-w-[600px]",children:[(0,s.jsxs)(x.c7,{children:[(0,s.jsx)(x.L3,{children:"編輯é å"}),(0,s.jsx)(x.rr,{children:"調æ´åçä½ç½®ã縮æ¾åæè½ï¼ç¶å¾é»æç¢ºèªå²å"})]}),(0,s.jsx)("div",{className:"relative w-full h-[400px] bg-black rounded-lg overflow-hidden",children:(0,s.jsx)(m.Ay,{image:e,crop:o,zoom:u,rotation:y,aspect:n,cropShape:c,onCropChange:d,onZoomChange:j,onRotationChange:N,onCropComplete:T,style:{containerStyle:{width:"100%",height:"100%",position:"relative"}}})}),(0,s.jsxs)("div",{className:"space-y-4",children:[(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,s.jsxs)("span",{className:"flex items-center gap-2",children:[(0,s.jsx)(g.A,{className:"h-4 w-4"}),"縮æ¾"]}),(0,s.jsxs)("span",{className:"text-muted-foreground",children:[Math.round(100*u),"%"]})]}),(0,s.jsx)(p.A,{value:[u],min:1,max:3,step:.1,onValueChange:e=>j(e[0])})]}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,s.jsxs)("span",{className:"flex items-center gap-2",children:[(0,s.jsx)(f.A,{className:"h-4 w-4"}),"æè½"]}),(0,s.jsxs)("span",{className:"text-muted-foreground",children:[y,"\xb0"]})]}),(0,s.jsx)(p.A,{value:[y],min:0,max:360,step:1,onValueChange:e=>N(e[0])})]})]}),(0,s.jsxs)(x.Es,{className:"flex justify-between",children:[(0,s.jsx)(l.$,{variant:"outline",onClick:A,children:"éç½®"}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(l.$,{variant:"outline",onClick:()=>a(!1),children:"åæ¶"}),(0,s.jsx)(l.$,{onClick:D,disabled:C,children:C?"èçä¸...":"確èªå²å"})]})]})]})})}var j=a(82520),y=a(24571),N=a(76458),k=a(2134),w=a(38187),C=a(60373),S=a(78828),T=a(20290),D=a(42165),A=a(88660),I=a(93674),E=a(34961);let M=["éä¼è¦å","æè³çç¥","ç¨
åè¦å","ä¿éªè¦å","風éªç®¡ç","å®¶åºè²¡å","è³ç¢é
ç½®","è¡ç¥¨æè³","ETFçç¥","ç¨
ååªå","峿¿è¦å","財å¯å³æ¿","åµå管ç","ç¾éæµè¦å","é ç®ç·¨å¶","è·æ¶¯è²¡å","æè³å
¥é"],O=["å°åå¸","æ°åå¸","æ¡åå¸","æ°ç«¹å¸","åºéå¸","å°ä¸å¸","å½°å縣","åæç¸£","èæ ç¸£","é²æç¸£","é«éå¸","å°åå¸","屿±ç¸£","å義å¸"];function Y({formData:e,onFormDataChange:t,avatarPreview:a,avatarInputId:r,onAvatarChange:c,onAvatarClear:o,onAvatarEdit:d,avatarFile:u,onSpecialtyChange:m,onAreaChange:h,onCertificationChange:p,certificationsLockedUntil:x}){let g=e.specialties.length>=3,f=e.serviceAreas.length>=3,b=!!x;return(0,s.jsxs)("div",{className:"space-y-6 text-base",children:[(0,s.jsxs)(j.Zp,{children:[(0,s.jsxs)(j.aR,{children:[(0,s.jsx)(j.ZB,{className:"text-lg",children:"åäººè³æ"}),(0,s.jsx)(j.BT,{className:"text-sm",children:"åºæ¬å人è³è¨"})]}),(0,s.jsxs)(j.Wu,{className:"space-y-4",children:[(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 items-center gap-4",children:[(0,s.jsxs)(i.J,{htmlFor:"name",className:"text-left text-base",children:["å§å ",(0,s.jsx)("span",{className:"text-destructive",children:"*"})]}),(0,s.jsx)(n.p,{id:"name",value:e.name,onChange:e=>t({name:e.target.value}),className:"md:col-span-3 text-base",placeholder:"è«è¼¸å
¥é¡§åå§å"})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 items-start gap-4",children:[(0,s.jsx)(i.J,{htmlFor:r,className:"text-left pt-2 text-base",children:"é å"}),(0,s.jsxs)("div",{className:"md:col-span-3 flex flex-col gap-3",children:[a&&(0,s.jsxs)("div",{className:"relative inline-block",children:[(0,s.jsxs)(C.eu,{className:"h-32 w-32 border-2 border-border",children:[(0,s.jsx)(C.BK,{src:a,alt:"é åé 覽"}),(0,s.jsx)(C.q5,{className:"text-lg",children:e.name?e.name.substring(0,2):"é 覽"})]}),u&&(0,s.jsx)("div",{className:"absolute -top-2 -right-2 bg-primary text-primary-foreground rounded-full p-1",children:(0,s.jsx)(S.A,{className:"h-3 w-3"})})]}),(0,s.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,s.jsxs)(l.$,{type:"button",variant:"outline",size:"sm",onClick:()=>{let e=document.getElementById(r);e?.click()},className:"flex items-center gap-2",children:[(0,s.jsx)(T.A,{className:"h-4 w-4"}),a?"æ´æé å":"ä¸å³é å"]}),a&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(l.$,{type:"button",variant:"outline",size:"sm",onClick:d,className:"flex items-center gap-2",children:[(0,s.jsx)(S.A,{className:"h-4 w-4"}),"編輯é å"]}),(0,s.jsxs)(l.$,{type:"button",variant:"outline",size:"sm",onClick:o,className:"flex items-center gap-2",children:[(0,s.jsx)(D.A,{className:"h-4 w-4"}),"æ¸
é¤é å"]})]}),(0,s.jsx)("input",{id:r,type:"file",accept:"image/*",onChange:c,className:"hidden"})]})]})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 items-center gap-4",children:[(0,s.jsx)(i.J,{htmlFor:"company",className:"text-left text-base",children:"å
¬å¸å稱"}),(0,s.jsx)(n.p,{id:"company",value:e.company||"",onChange:e=>t({company:e.target.value}),className:"md:col-span-3 text-base",placeholder:"ç¨ç«ç財顧åè«å¡«ï¼IFA"})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 items-center gap-4",children:[(0,s.jsx)(i.J,{htmlFor:"officeAddress",className:"text-left text-base",children:"辦å
¬å®¤å°å"}),(0,s.jsx)(n.p,{id:"officeAddress",value:e.officeAddress||"",onChange:e=>t({officeAddress:e.target.value}),className:"md:col-span-3 text-base",placeholder:"é¢å°é¢è«®è©¢ç¨ï¼ä¾å¦ å°åå¸ä¿¡ç¾©åå¸åºè·¯ 45 è"})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 items-center gap-4",children:[(0,s.jsx)(i.J,{htmlFor:"yearsOfExperience",className:"text-left text-base",children:"å¹´è³"}),(0,s.jsxs)("div",{className:"md:col-span-3 space-y-2",children:[(0,s.jsx)(n.p,{id:"yearsOfExperience",type:"number",min:"0",max:"30",step:"1",value:e.yearsOfExperience,onChange:e=>{t({yearsOfExperience:Math.max(0,Math.min(30,Math.floor(Number(e.target.value)||0)))})},className:"text-base",placeholder:"è«è¼¸å
¥å¹´è³ï¼0-30å¹´ï¼"}),(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:"è«è¼¸å
¥æ¨çå°æ¥å¹´è³ï¼ç¯åçº 0-30 å¹´"})]})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 items-center gap-4",children:[(0,s.jsxs)(i.J,{htmlFor:"website",className:"text-left flex items-center gap-1 text-base",children:[(0,s.jsx)(A.A,{className:"h-4 w-4"}),"å人網ç«"]}),(0,s.jsx)(n.p,{id:"website",type:"url",value:e.website,onChange:e=>t({website:e.target.value}),className:"md:col-span-3 text-base",placeholder:"https://example.com"})]})]})]}),(0,s.jsxs)(j.Zp,{children:[(0,s.jsxs)(j.aR,{children:[(0,s.jsx)(j.ZB,{className:"text-lg",children:"æ¥åè³è¨"}),(0,s.jsx)(j.BT,{className:"text-sm",children:"å°æ¥æåç¸éè³è¨"})]}),(0,s.jsxs)(j.Wu,{className:"space-y-4",children:[(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 items-start gap-4",children:[(0,s.jsxs)(i.J,{className:"text-left pt-2 text-base",children:["å°é· ",(0,s.jsx)("span",{className:"text-destructive",children:"*"})]}),(0,s.jsxs)("div",{className:"md:col-span-3",children:[(0,s.jsx)("div",{className:"flex flex-wrap gap-2",children:M.map(t=>{let a=e.specialties.includes(t),r=!a&&g;return(0,s.jsx)(w.E,{variant:a?"default":"outline",className:(0,E.cn)("cursor-pointer transition-opacity text-sm",r&&"opacity-50 cursor-not-allowed"),onClick:()=>!r&&m(t),children:t},t)})}),(0,s.jsxs)("p",{className:"text-sm text-muted-foreground mt-2",children:["æå¤å¯é¸æ 3 é
å°é·",e.specialties.length>0&&(0,s.jsxs)("span",{className:"ml-2",children:["ï¼å·²é¸ ",e.specialties.length," é
ï¼"]})]})]})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 items-start gap-4",children:[(0,s.jsxs)(i.J,{className:"text-left pt-2 text-base",children:["æåå°å ",(0,s.jsx)("span",{className:"text-destructive",children:"*"})]}),(0,s.jsxs)("div",{className:"md:col-span-3",children:[(0,s.jsx)("div",{className:"flex flex-wrap gap-2",children:O.map(t=>{let a=e.serviceAreas.includes(t),r=!a&&f;return(0,s.jsx)(w.E,{variant:a?"default":"outline",className:(0,E.cn)("cursor-pointer transition-opacity text-sm",r&&"opacity-50 cursor-not-allowed"),onClick:()=>!r&&h(t),children:t},t)})}),(0,s.jsxs)("p",{className:"text-sm text-muted-foreground mt-2",children:["æå¤å¯é¸æ 3 é
å°å",e.serviceAreas.length>0&&(0,s.jsxs)("span",{className:"ml-2",children:["ï¼å·²é¸ ",e.serviceAreas.length," é
ï¼"]})]})]})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 items-start gap-4",children:[(0,s.jsxs)(i.J,{className:"text-left pt-2 text-base",children:["èç
§ ",(0,s.jsx)("span",{className:"text-destructive",children:"*"})]}),(0,s.jsxs)("div",{className:"md:col-span-3",children:[(0,s.jsx)("div",{className:(0,E.cn)("flex flex-wrap gap-2",b&&"pointer-events-none opacity-80"),children:(0,I.L2)().map(t=>{let a=(e.certifications||[]).includes(t.id);return(0,s.jsx)(w.E,{variant:a?"default":"outline",className:(0,E.cn)("text-sm",!b&&"cursor-pointer"),onClick:()=>!b&&p(t.id),children:t.abbreviation},t.id)})}),(0,s.jsxs)("p",{className:"text-sm text-muted-foreground mt-2",children:[b&&x?`èç
§æ¼ä¸é±å
§å
坿´æ°ä¸æ¬¡ï¼å¯åæ¬¡ç·¨è¼¯æ¥æï¼${x}
1`:null,!b&&"è³å°é鏿 1 é
èç
§",!b&&e.certifications.length>0&&(0,s.jsxs)("span",{className:"ml-2",children:["ï¼å·²é¸ ",e.certifications.length," é
ï¼"]})]})]})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 items-center gap-4",children:[(0,s.jsxs)(i.J,{htmlFor:"fee",className:"text-left text-base",children:["è«®è©¢è²»ç¨ ",(0,s.jsx)("span",{className:"text-destructive",children:"*"})]}),(0,s.jsx)(n.p,{id:"fee",type:"number",min:"1",max:"100000",step:"100",value:0===e.fee?"":e.fee,onChange:e=>{let a=e.target.value;t({fee:""===a?0:Number(a)})},className:"md:col-span-3 text-base",placeholder:"è«è¼¸å
¥è«®è©¢è²»ç¨"})]})]})]})]})}var U=a(57966),F=a(92788),$=a(26345),B=a(13144),W=a(95513),R=a(2416);let _=Array.from({length:48},(e,t)=>{let a=Math.floor(t/2);return`${String(a).padStart(2,"0")}:${String(t%2*30).padStart(2,"0")}`}),P=["æ¥","ä¸","äº","ä¸","å","äº","å
"];function z({weeklySchedule:e={},specificDates:t={},bookedSlots:a={},conflicts:l=[],selectedWeekStart:i,onTimeSlotToggle:n,onTimeRangeSelect:c}){(0,r.useEffect)(()=>{},[a]);let[o,d]=(0,r.useState)(null),[u,m]=(0,r.useState)(null),h=(0,r.useMemo)(()=>{let e=i.getUTCFullYear(),t=i.getUTCMonth(),a=i.getUTCDate();return Array.from({length:7},(s,r)=>new Date(Date.UTC(e,t,a+r,0,0,0,0)))},[i]),p=(0,r.useCallback)(e=>{let t=e.getUTCFullYear(),a=String(e.getUTCMonth()+1).padStart(2,"0"),s=String(e.getUTCDate()).padStart(2,"0");return`${t}-${a}-${s}`},[]),x=(0,r.useCallback)((e,t)=>{let a=new Date,s=e.getUTCFullYear(),r=e.getUTCMonth(),l=e.getUTCDate(),[i,n]=t.split(":").map(Number),c=new Date(s,r,l,i,n,0,0);return c<a},[]),g=(0,r.useCallback)((s,r)=>{let i=p(s),n=s.getUTCDay(),c=x(s,r),o=t[i]?.includes(r),d=e[n]?.includes(r),u=a[i.includes("T")?i.split("T")[0]:i],m=!!u&&u.has(r);!m&&u&&u.has(r);let h=l.some(e=>e.date===i&&e.time===r),g=Object.keys(a).length>0;return Object.keys(a).filter(e=>e===i),g,{isSpecificDate:o,isWeekly:d,isBooked:m,hasConflict:h,isPast:c,isAvailable:o||d}},[t,e,a,l,p,x]),f=(0,r.useCallback)((e,t)=>{let a=p(e),s=g(e,t);s.isBooked||s.hasConflict||(s.isSpecificDate?n(a,t,!1,"remove"):s.isWeekly?n(a,t,!1,"to-specific"):n(a,t,!0,"add-weekly"))},[g,n,p]),b=(0,r.useCallback)((e,t,a)=>{if(o)return;let s=p(e),r=g(e,t);r.isBooked||r.hasConflict||(a.preventDefault(),m({startDate:s,startTime:t,endDate:null,endTime:null}),d(null))},[o,g,p]),v=(0,r.useCallback)((e,t)=>{if(!u)return;let a=p(e),s=g(e,t);s.isBooked||s.hasConflict||m(e=>e?{...e,endDate:a,endTime:t}:null)},[u,g,p]),j=(0,r.useCallback)(()=>{if(!u||!u.endDate||!u.endTime)return void m(null);let e=h.findIndex(e=>p(e)===u.startDate),t=h.findIndex(e=>p(e)===u.endDate);if(-1===e||-1===t)return void m(null);let a=Math.min(e,t),s=Math.max(e,t),r=_.indexOf(u.startTime),l=_.indexOf(u.endTime);if(-1===r||-1===l)return void m(null);let i=Math.min(r,l),c=Math.max(r,l);for(let e=a;e<=s;e++){let t=h[e],a=p(t);for(let e=i;e<=c;e++){let s=_[e],r=g(t,s);r.isBooked||r.hasConflict||r.isPast||(r.isWeekly||r.isSpecificDate?r.isWeekly&&!r.isSpecificDate?n(a,s,!1,"to-specific"):r.isSpecificDate&&n(a,s,!1,"remove"):n(a,s,!0,"add-weekly"))}}m(null)},[u,h,g,p,n]),y=(0,r.useRef)(null),N=(0,r.useCallback)((e,t,a)=>{let s=g(e,t);s.isPast||s.isBooked||s.hasConflict||(y.current={date:p(e),time:t,x:a.clientX,y:a.clientY,moved:!1})},[g,p]),k=(0,r.useCallback)((e,t,a)=>{if(!y.current){u&&j();return}let s=Math.abs(a.clientX-y.current.x),r=Math.abs(a.clientY-y.current.y);if(s<5&&r<5&&!y.current.moved){let e=h.find(e=>p(e)===y.current.date);if(e){let t=g(e,y.current.time);t.isPast||t.isBooked||t.hasConflict||(m(null),d(null),a.preventDefault(),a.stopPropagation(),f(e,y.current.time))}y.current=null;return}if(u){j(),y.current=null;return}o&&o.endTime&&c&&c(o.date,o.startTime,o.endTime,o.isWeekly),d(null),y.current=null},[o,u,h,p,g,f,c,j]),w=(0,r.useCallback)((e,t,a)=>{if(y.current&&!y.current.moved){let e=Math.abs(a.clientX-y.current.x),t=Math.abs(a.clientY-y.current.y);if(e>=5||t>=5){y.current.moved=!0;let e=h.find(e=>p(e)===y.current.date);e&&b(e,y.current.time,a)}}u?v(e,t):o&&p(e)===o.date&&d(e=>e?{...e,endTime:t}:null)},[o,u,h,p,v,b]),C=(0,r.useCallback)((e,t)=>{if(!u||!u.endDate||!u.endTime)return!1;let a=p(e),s=h.findIndex(e=>p(e)===u.startDate),r=h.findIndex(e=>p(e)===u.endDate),l=h.findIndex(e=>p(e)===a);if(-1===s||-1===r||-1===l)return!1;let i=Math.min(s,r),n=Math.max(s,r);if(l<i||l>n)return!1;let c=_.indexOf(u.startTime),o=_.indexOf(u.endTime),d=_.indexOf(t);if(-1===c||-1===o||-1===d)return!1;let m=Math.min(c,o),x=Math.max(c,o);return d>=m&&d<=x},[u,h,p]);return(0,s.jsx)("div",{className:"w-full overflow-x-auto scrollbar-hide",children:(0,s.jsxs)("div",{className:"min-w-[800px]",children:[(0,s.jsxs)("div",{className:"grid gap-2 mb-2",style:{gridTemplateColumns:`auto repeat(${h.length}, 1fr)`},children:[(0,s.jsx)("div",{className:"text-sm font-medium text-center",children:"ææ®µ"}),h.map((e,t)=>{let a=e.getUTCMonth()+1,r=e.getUTCDate(),l=e.getUTCDay();return(0,s.jsxs)("div",{className:"text-sm font-medium text-center",children:[(0,s.jsx)("div",{children:P[l]}),(0,s.jsxs)("div",{className:"text-xs text-muted-foreground",children:[a,"/",r]})]},t)})]}),(0,s.jsx)("div",{className:"space-y-1",children:_.map(e=>h.some(t=>!g(t,e).isPast)&&0!==h.filter(t=>(p(t),!g(t,e).isPast)).length?(0,s.jsxs)("div",{className:"grid gap-2",style:{gridTemplateColumns:`auto repeat(${h.length}, 1fr)`},children:[(0,s.jsx)("div",{className:"text-xs text-muted-foreground text-right pr-2 flex items-center justify-end",children:e}),h.map((t,a)=>{let r=p(t),l=g(t,e);if(l.isPast)return(0,s.jsx)("div",{className:"h-10"},`${r}-${e}`);let i=o&&o.date===r&&o.endTime&&e>=(o.startTime<o.endTime?o.startTime:o.endTime)&&e<=(o.startTime<o.endTime?o.endTime:o.startTime),n=C(t,e);return"2025-12-07"===r,(0,s.jsx)("button",{type:"button",className:(0,E.cn)("h-10 rounded-md border-2 transition-all duration-200 relative group",l.isBooked&&"bg-red-50 dark:bg-red-950/30 border-red-400 dark:border-red-700 cursor-not-allowed opacity-60",!l.isBooked&&l.hasConflict&&"bg-yellow-50 dark:bg-yellow-950/30 border-yellow-400 dark:border-yellow-700",!l.isBooked&&!l.hasConflict&&l.isSpecificDate&&["bg-blue-50 dark:bg-blue-950/30 border-blue-400 dark:border-blue-700","hover:bg-blue-100 dar
1k:hover:bg-blue-900/40 hover:border-blue-500 dark:hover:border-blue-600","hover:shadow-sm hover:scale-[1.02]"],!l.isBooked&&!l.hasConflict&&l.isWeekly&&!l.isSpecificDate&&["bg-green-50 dark:bg-green-950/30 border-green-400 dark:border-green-700","hover:bg-green-100 dark:hover:bg-green-900/40 hover:border-green-500 dark:hover:border-green-600","hover:shadow-sm hover:scale-[1.02]"],!l.isBooked&&!l.hasConflict&&!l.isAvailable&&["bg-gray-50 dark:bg-gray-900/20 border-gray-300 dark:border-gray-700","hover:bg-accent hover:border-primary/50","hover:shadow-sm"],i&&"ring-2 ring-primary ring-offset-2 shadow-md",n&&"ring-2 ring-blue-500 dark:ring-blue-400 ring-offset-2 bg-blue-100 dark:bg-blue-900/50 shadow-md"),onMouseDown:a=>{a.preventDefault(),a.stopPropagation(),N(t,e,a)},onMouseUp:a=>{a.preventDefault(),a.stopPropagation(),k(t,e,a)},onMouseMove:a=>w(t,e,a),disabled:l.isBooked||l.hasConflict,title:l.isBooked?"å·²é ç´ï¼ç¡æ³ä¿®æ¹ï¼":l.hasConflict?"è¡çªï¼å·²æé ç´":l.isSpecificDate?"ç¹å®æ¥æå¯é ç´ï¼é»æåæï¼":l.isWeekly?"æ¯é±éè¤å¯é ç´ï¼é»æåæï¼":"ä¸å¯é ç´ï¼é»æè¨çºå¯é ç´ï¼",children:l.hasConflict&&(0,s.jsx)(R.A,{className:"h-3 w-3 text-yellow-600 dark:text-yellow-400 absolute top-0 right-0"})},`${r}-${e}`)})]},e):null)})]})})}function K({weeklySchedule:e,specificDates:t,bookedSlots:a,onWeeklyScheduleChange:n,onSpecificDatesChange:c,onTimeSlotToggle:o,onTimeRangeSelect:d}){let[u,m]=(0,r.useState)(!1),[h,p]=(0,r.useState)(()=>{let e=new Date,t=e.getUTCDay(),a=e.getUTCDate()-t+(0===t?-6:1);return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),a,0,0,0,0))}),x=(0,r.useCallback)((t,a,s)=>{let r=[],[l,i]=a.split(":").map(Number),[c,o]=s.split(":").map(Number),d=60*l+i,u=60*c+o;for(let e=d;e<=u;e+=30){let t=Math.floor(e/60),a=e%60;r.push(`${String(t).padStart(2,"0")}:${String(a).padStart(2,"0")}`)}let m={...e};("weekday"===t?[1,2,3,4,5]:"weekend"===t?[0,6]:[0,1,2,3,4,5,6]).forEach(e=>{m[e]=r}),n(m)},[e,n]),g=(0,r.useCallback)(()=>{n({}),c({})},[n,c]),f=(0,r.useCallback)(e=>{p(t=>{let a=new Date(t);return a.setUTCDate(t.getUTCDate()+e),a})},[]),b=(0,r.useCallback)(e=>{let t=new Date(Date.UTC(e.getUTCFullYear(),0,1));return Math.ceil(((e.getTime()-t.getTime())/864e5+t.getUTCDay()+1)/7)},[]),v=(0,r.useCallback)(()=>{let e=new Date(h);e.setUTCDate(h.getUTCDate()+6);let t=h.getUTCMonth()+1,a=h.getUTCDate(),s=e.getUTCMonth()+1,r=e.getUTCDate(),l=b(h);return`第 ${l} é± (${t}/${a} - ${s}/${r})`},[h,b]),j=(0,r.useMemo)(()=>{let e=new Date,t=e.getUTCDay(),a=e.getUTCDate()-t+(0===t?-6:1),s=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),a,0,0,0,0));return h.getTime()>=s.getTime()},[h]);return(0,s.jsxs)("div",{className:"grid grid-cols-4 items-start gap-4 text-base",children:[(0,s.jsx)(i.J,{className:"text-left pt-2 text-base",children:"å¯ç¨æé表"}),(0,s.jsxs)("div",{className:"col-span-3",children:[(0,s.jsxs)(U.Nt,{open:u,onOpenChange:m,children:[(0,s.jsx)(U.R6,{asChild:!0,children:(0,s.jsx)(l.$,{variant:"outline",size:"icon",children:u?(0,s.jsx)(F.A,{className:"h-4 w-4"}):(0,s.jsx)($.A,{className:"h-4 w-4"})})}),(0,s.jsxs)(U.Ke,{className:"mt-4",children:[(0,s.jsx)("div",{className:"mb-4 p-4 bg-muted/50 rounded-lg",children:(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsx)("div",{className:"flex items-center gap-2 text-base font-medium",children:"æä½èªªæ"}),(0,s.jsxs)("div",{className:"flex flex-wrap gap-3 text-sm",children:[(0,s.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,s.jsx)("div",{className:"w-4 h-4 rounded border-2 border-green-400 bg-green-50 dark:bg-green-900/20"}),(0,s.jsx)("span",{children:"æ¯é±éè¤"})]}),(0,s.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,s.jsx)("div",{className:"w-4 h-4 rounded border-2 border-blue-400 bg-blue-50 dark:bg-blue-900/20"}),(0,s.jsx)("span",{children:"ç¹å®æ¥æ"})]}),(0,s.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,s.jsx)("div",{className:"w-4 h-4 rounded border-2 border-red-400 bg-red-50 dark:bg-red-900/20"}),(0,s.jsx)("span",{children:"å·²é ç´"})]}),(0,s.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,s.jsx)("div",{className:"w-4 h-4 rounded border-2 border-gray-300 bg-gray-50 dark:bg-gray-700"}),(0,s.jsx)("span",{children:"ä¸å¯é ç´"})]})]}),(0,s.jsxs)("div",{className:"space-y-1 text-sm text-muted-foreground",children:[(0,s.jsx)("p",{children:"â¢ é»æææ®µï¼åæè©²ææ®µçå¯ç¨æ§"}),(0,s.jsx)("p",{children:"â¢ ææ³æ¡é¸ï¼é»æä¸¦ææ³å¯å¿«é鏿å¤åææ®µï¼å¯è·¨æ¥æåæéï¼"}),(0,s.jsx)("p",{children:"⢠æ¯é±éè¤ï¼å¨æ¯é±è©²ææçéåææ®µé½å¯é ç´"}),(0,s.jsx)("p",{children:"⢠ç¹å®æ¥æï¼å
å¨é¸å®çæ¥æè©²ææ®µå¯é ç´"})]})]})}),(0,s.jsxs)("div",{className:"mb-4 flex flex-wrap gap-2",children:[(0,s.jsx)(l.$,{type:"button",variant:"outline",size:"sm",onClick:()=>x("weekday","09:00","17:00"),children:"工使¥ 9-17é»"}),(0,s.jsx)(l.$,{type:"button",variant:"outline",size:"sm",onClick:()=>x("weekday","09:00","21:00"),children:"工使¥ 9-21é»"}),(0,s.jsx)(l.$,{type:"button",variant:"outline",size:"sm",onClick:()=>x("all","09:00","21:00"),children:"æ¯å¤© 9-21é»"}),(0,s.jsx)(l.$,{type:"button",variant:"outline",size:"sm",onClick:()=>x("weekend","10:00","18:00"),children:"å
鱿« 10-18é»"}),(0,s.jsx)(l.$,{type:"button",variant:"outline",size:"sm",onClick:g,children:"æ¸
é¤å
¨é¨"})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,s.jsx)(l.$,{type:"button",variant:"outline",size:"icon",onClick:()=>f(-7),disabled:!j,children:(0,s.jsx)(B.A,{className:"h-4 w-4"})}),(0,s.jsx)("div",{className:"text-sm font-medium",children:v()}),(0,s.jsx)(l.$,{type:"button",variant:"outline",size:"icon",onClick:()=>f(7),children:(0,s.jsx)(W.A,{className:"h-4 w-4"})})]}),(0,s.jsx)(z,{weeklySchedule:e,specificDates:t,bookedSlots:a,conflicts:[],selectedWeekStart:h,onTimeSlotToggle:o,onTimeRangeSelect:d})]})]}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground mt-2",children:"黿å示å±é/æ¶åæé表è¨å®ãé»æææ®µå¾ªç°åæï¼ä¸å¯é ç´ â æ¯é±éè¤ â ç¹å®æ¥æ â ä¸å¯é ç´"})]})]})}var L=a(21582),J=a(51475),V=a(54296),X=a(42119);let G=[{value:"facebook",label:"Facebook"},{value:"instagram",label:"Instagram"},{value:"threads",label:"Threads"},{value:"linkedin",label:"LinkedIn"},{value:"twitter",label:"Twitter/X"},{value:"youtube",label:"YouTube"},{value:"line",label:"LINE"}];function Z({socialMedia:e,onSocialMediaChange:t}){let a=(a,s,r)=>{let l=[...e];l[a]={...l[a],[s]:r},t(l)};return(0,s.jsxs)("div",{className:"grid grid-cols-4 items-start gap-4 text-base",children:[(0,s.jsxs)(i.J,{className:"text-left pt-2 flex items-center gap-1 text-base",children:[(0,s.jsx)(J.A,{className:"h-4 w-4"}),"社群åªé«"]}),(0,s.jsxs)("div",{className:"col-span-3 space-y-2",children:[e.map((r,i)=>(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsxs)(L.l6,{value:r.platform,onValueChange:e=>a(i,"platform",e),children:[(0,s.jsx)(L.bq,{className:"w-[140px] text-base",children:(0,s.jsx)(L.yv,{placeholder:"鏿平å°"})}),(0,s.jsx)(L.gC,{children:G.map(e=>(0,s.jsx)(L.eb,{value:e.value,className:"text-base",children:e.label},e.value))})]}),(0,s.jsx)(n.p,{type:"url",value:r.url,onChange:e=>a(i,"url",e.target.value),placeholder:"https://...",className:"flex-1 text-base"}),(0,s.jsx)(l.$,{type:"button",variant:"outline",size:"icon",onClick:()=>{t(e.filter((e,t)=>
1t!==i))},children:(0,s.jsx)(V.A,{className:"h-4 w-4"})})]},i)),(0,s.jsxs)(l.$,{type:"button",variant:"outline",size:"sm",onClick:()=>{t([...e,{platform:"",url:""}])},className:"w-full text-base",children:[(0,s.jsx)(X.A,{className:"h-4 w-4 mr-2"}),"æ°å¢ç¤¾ç¾¤åªé«"]})]})]})}var q=a(48113),Q=a(74265);let H=(0,r.forwardRef)(function({initialData:e,userId:t,onSave:m,onCancel:h,isSaving:p=!1,showCancelButton:x=!1,avatarInputId:g="advisor-avatar",hideSaveButton:f=!1,showDeleteButton:b=!1,onDelete:w,isDeleting:C=!1,deleteButtonText:S="åªé¤é¡§å",requireDeleteConfirmation:T=!0,certificationsLockedUntil:D},A){let{toast:I}=(0,c.dj)(),{user:E}=(0,d.A)(),M=(0,r.useCallback)(()=>E?E.getIdToken():Promise.reject(Error("æªç»å
¥")),[E]),[O,U]=(0,r.useState)({name:e?.name||"",company:e?.company||"",officeAddress:e?.officeAddress||"",specialties:e?.specialties||[],serviceAreas:e?.serviceAreas||[],certifications:e?.certifications||[],fee:e?.fee||0,yearsOfExperience:e?.yearsOfExperience||0,website:e?.website||""}),[F,$]=(0,r.useState)(e?.socialMedia||[]),[B,W]=(0,r.useState)(!1),[R,_]=(0,r.useState)(e?.weeklySchedule||{}),[P,z]=(0,r.useState)(e?.specificDates||{}),[L,J]=(0,r.useState)("number"==typeof e?.advanceBookingDays?e.advanceBookingDays:Q.X.ADVANCE_BOOKING_DAYS),[V,X]=(0,r.useState)("number"==typeof e?.bookingWindowDays?e.bookingWindowDays:Q.X.BOOKING_WINDOW_DAYS),{bookedSlots:G,isLoadingBookedSlots:H,setWeeklySchedule:ee,setSpecificDates:et}=function({advisorId:e,scheduleExpanded:t=!1}){let[a,s]=(0,r.useState)({}),[l,i]=(0,r.useState)({}),[n,c]=(0,r.useState)({}),[d,u]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{if(!t||!e||!N.db){c({}),u(!1);return}let a=null,s=!1,r=(0,k.ri)(),l=(0,y.P)((0,y.rJ)(N.db,N.BOOKINGS),(0,y._M)("advisorId","==",e),(0,y._M)("date",">=",r));return u(!0),a=(0,y.aQ)(l,t=>{if(s||e!=e)return;let a=new Set(["draft","pending","authorized","paid"]),r={};t.forEach(e=>{let t=e.data(),s=String(t.status||"").toLowerCase();if(!a.has(s))return;let l=t.date,i=t.time;if(!l||!i)return;let n=l.includes("T")?l.split("T")[0]:l;r[n]||(r[n]=new Set),r[n].add(i)}),s||e!=e||(c(r),u(!1))},t=>{if(s||e!=e||u(!1),(0,o.vV)("ç£è½é ç´è®å失æ:",t),a)try{a()}catch(e){(0,o.vV)("æ¸
çé¯èª¤ç£è½å¨å¤±æ:",e)}}),()=>{if(s=!0,a)try{a()}catch(e){(0,o.vV)("æ¸
çé ç´ç£è½å¨å¤±æ:",e)}}},[e,t]),{weeklySchedule:a,specificDates:l,bookedSlots:n,isLoadingBookedSlots:d,setWeeklySchedule:s,setSpecificDates:i}}({advisorId:e?.id,scheduleExpanded:B});(0,r.useEffect)(()=>{ee(R)},[R,ee]),(0,r.useEffect)(()=>{et(P)},[P,et]);let[ea,es]=(0,r.useState)(null),[er,el]=(0,r.useState)(e?.avatar||""),[ei,en]=(0,r.useState)(!1),[ec,eo]=(0,r.useState)(!1),[ed,eu]=(0,r.useState)(!1),em=(0,r.useCallback)(async()=>{if(w)try{eu(!0),await w(),eo(!1)}catch(e){}finally{eu(!1)}},[w]),eh=(0,r.useCallback)(()=>{T?eo(!0):em()},[T,em]),[ep,ex]=(0,r.useState)(!1),[eg,ef]=(0,r.useState)(""),[eb,ev]=(0,r.useState)(!1),ej=(0,r.useRef)(void 0),ey=p||eb;(0,r.useEffect)(()=>{if(e){let t=e.name||"";(void 0===ej.current||ej.current!==t)&&(U({name:e.name||"",company:e?.company||"",officeAddress:e?.officeAddress||"",specialties:e.specialties||[],serviceAreas:e.serviceAreas||[],certifications:e?.certifications||[],fee:e.fee||0,yearsOfExperience:e.yearsOfExperience||0,website:e.website||""}),$(e.socialMedia||[]),el(e.avatar||""),_(e.weeklySchedule||{}),z(e.specificDates||{}),J("number"==typeof e?.advanceBookingDays?e.advanceBookingDays:Q.X.ADVANCE_BOOKING_DAYS),X("number"==typeof e?.bookingWindowDays?e.bookingWindowDays:Q.X.BOOKING_WINDOW_DAYS),ej.current=t)}else ej.current=void 0},[e]);let eN=(0,r.useCallback)(e=>{if(e.target.files&&e.target.files[0]){let t=e.target.files[0];es(t),en(!1);let a=new FileReader;a.onloadend=()=>{ef(a.result),ex(!0)},a.readAsDataURL(t)}},[]),ek=(0,r.useCallback)(e=>{el(e),en(!1),fetch(e).then(e=>e.blob()).then(e=>{es(new File([e],"avatar.jpg",{type:"image/jpeg"}))}).catch(e=>{(0,o.vV)("è½æåç失æ:",e)})},[]),ew=(0,r.useCallback)(e=>{U(t=>t.specialties.includes(e)?{...t,specialties:t.specialties.filter(t=>t!==e)}:t.specialties.length>
1=3?(I({variant:"destructive",title:"å°é·é¸æéå¶",description:"æå¤åªè½é¸æ3é
å°é·"}),t):{...t,specialties:[...t.specialties,e]})},[I]),eC=(0,r.useCallback)(e=>{U(t=>t.serviceAreas.includes(e)?{...t,serviceAreas:t.serviceAreas.filter(t=>t!==e)}:t.serviceAreas.length>=3?(I({variant:"destructive",title:"å°å鏿éå¶",description:"æå¤åªè½é¸æ3é
å°å"}),t):{...t,serviceAreas:[...t.serviceAreas,e]})},[I]),eS=(0,r.useCallback)(e=>{U(t=>{let a=t.certifications||[],s=a.includes(e)?a.filter(t=>t!==e):[...a,e];return{...t,certifications:s}})},[]);(0,r.useCallback)(()=>{$(e=>[...e,{platform:"",url:""}])},[]),(0,r.useCallback)((e,t,a)=>{$(s=>{let r=[...s];return r[e]={...r[e],[t]:a},r})},[]),(0,r.useCallback)(e=>{$(t=>t.filter((t,a)=>a!==e))},[]);let eT=(0,r.useCallback)((e,t,a,s)=>{let[r,l,i]=e.split("-").map(Number),n=new Date(Date.UTC(r,l-1,i,0,0,0,0)).getUTCDay();"add-weekly"===s?_(e=>{let a=e[n]||[];return{...e,[n]:[...a,t].sort()}}):"to-specific"===s?(_(e=>{let a=(e[n]||[]).filter(e=>e!==t),s={...e};return a.length>0?s[n]=a:delete s[n],s}),z(a=>{let s=a[e]||[];return{...a,[e]:[...s,t].sort()}})):"remove"===s&&(z(a=>{let s=(a[e]||[]).filter(e=>e!==t),r={...a};return s.length>0?r[e]=s:delete r[e],r}),_(e=>{let a=e[n]||[];if(a.includes(t)){let s=a.filter(e=>e!==t),r={...e};return s.length>0?r[n]=s:delete r[n],r}return e}))},[]),eD=(0,r.useCallback)((e,t,a,s)=>{let r=e=>
1{let[t,a]=e.split(":").map(Number);return 60*t+a},l=r(t),i=r(a),n=Math.min(l,i),c=Math.max(l,i),o=[];for(let e=n;e<=c;e+=30){let t=Math.floor(e/60),a=e%60;o.push(`${String(t).padStart(2,"0")}:${String(a).padStart(2,"0")}`)}if(s){let t=new Date(e+"T00:00:00").getDay();_(e=>{let a=[...new Set([...e[t]||[],...o])].sort();return{...e,[t]:a}})}else z(t=>{let a=[...new Set([...t[e]||[],...o])].sort();return{...t,[e]:a}})},[]),eA=(0,r.useCallback)(async()=>{if(!O.name||0===O.specialties.length||0===O.serviceAreas.length||0===O.certifications.length)return void I({variant:"destructive",title:"è«å¡«å¯«å¿
è¦è³è¨",description:"å§åãå°é·ãæåå°ååèç
§çºå¿
å¡«æ¬ä½"});if(!O.fee||O.fee<=0)return void I({variant:"destructive",title:"è«å¡«å¯«è«®è©¢è²»ç¨",description:"諮詢費ç¨å¿
é å¤§æ¼ 0"});if(e?.id)try{let t=await fetch(`/api/advisor/tier?advisorId=${e.id}`);if(t.ok){let e=await t.json();if(e.tier){let{getTierConfig:t}=await a.e(1641).then(a.bind(a,14022)),s=t(e.tier);null!==s.maxFee&&O.fee>s.maxFee&&(O.fee=s.maxFee,I({title:"广 ¼å·²èªå調æ´",description:`广 ¼è¶
éçç´ä¸éï¼å·²èªå調æ´çº NT$ ${s.maxFee.toLocaleString()}`}))}}}catch(e){console.error("é©è广 ¼ä¸é失æ:",e)}if(O.name.includes("@"))return void I({variant:"destructive",title:"å§åæ ¼å¼é¯èª¤",description:"è«è¼¸å
¥æ¨çç實å§åï¼è䏿¯é»åéµä»¶å°å"});try{ev(!0);let a=er;if(ei&&e?.avatar){try{let a=t||e?.userId;a&&await (0,u.Dm)(e.avatar,a,M)}catch(e){(0,o.vV)("åªé¤é å失æï¼ä¸å½±é¿ä¿åï¼:",e)}a=""}else if(ea)try{let s=t||e?.userId;if(!s)throw Error("ç¼ºå° userIdï¼ç¡æ³ä¸å³é å");a=(await (0,u.Jp)({file:ea,userId:s,oldAvatarUrl:e?.avatar,getToken:M})).downloadURL}catch(e){(0,o.vV)("é åä¸å³å¤±æ:",e),I({variant:"destructive",title:"é åä¸å³å¤±æ",description:e instanceof Error?e.message:"ç¡æ³ä¸å³é åï¼è«ç¨å¾å試ã"}),ev(!1);return}let s=Math.max(0,Math.floor(Number(L))||0),r=Math.max(Q.X.MIN_BOOKING_WINDOW_DAYS,Math.floor(Number(V))||Q.X.BOOKING_WINDOW_DAYS),l={name:O.name,company:O.company||"",officeAddress:O.officeAddress||"",specialties:O.specialties,serviceAreas:O.serviceAreas,certifications:O.certifications,fee:O.fee,yearsOfExperience:O.yearsOfExperience||0,weeklySchedule:Object.keys(R).length>0?R:{},specificDates:Object.keys(P).length>0?P:{},avatar:a,website:O.website||"",socialMedia:F.filter(e=>e.platform&&e.url),advanceBookingDays:s,bookingWindowDays:r};await m(l)}catch(e){throw(0,o.vV)("å²åé¡§åè³ææç¼çé¯èª¤:",e),e}finally{ev(!1)}},[O,R,P,F,ea,er,ei,e,t,m,I,M,L,V]);return(0,r.useImperativeHandle)(A,()=>({save:eA}),[eA]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"space-y-6 py-4",children:[(0,s.jsx)(Y,{formData:O,onFormDataChange:e=>U(t=>({...t,...e})),avatarPreview:er,avatarInputId:g,onAvatarChange:eN,onAvatarClear:()=>{es(null),el(""),en(!0);let e=document.getElementById(g);e&&(e.value="")},onAvatarEdit:()=>{ef(er),ex(!0)},avatarFile:ea,onSpecialtyChange:ew,onAreaChange:eC,onCertificationChange:eS,certificationsLockedUntil:D}),(0,s.jsxs)(j.Zp,{children:[(0,s.jsxs)(j.aR,{children:[(0,s.jsx)(j.ZB,{className:"text-lg",children:"é ç´è¦å"}),(0,s.jsx)(j.BT,{className:"text-sm",children:"è¨å®ç¨æ¶å¯é ç´çæ¥æç¯å"})]}),(0,s.jsxs)(j.Wu,{className:"space-y-4",children:[(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 items-center gap-4",children:[(0,s.jsx)(i.J,{htmlFor:"advanceBookingDays",className:"text-base",children:"æåé ç´å¤©æ¸"}),(0,s.jsxs)("div",{className:"md:col-span-3 space-y-2",children:[(0,s.jsx)(n.p,{id:"advanceBookingDays",type:"number",min:Q.X.MIN_ADVANCE_BOOKING_DAYS,value:L,onChange:e=>{J(Math.max(0,Math.floor(Number(e.target.value))||0))},className:"text-base max-w-[8rem]"}),(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:"ç¨æ¶å¿
é æåå¤å°å¤©é ç´ï¼ä¾å¦ï¼7 è¡¨ç¤ºææ©åªè½é ç´ 7 天å¾çææ®µï¼"})]})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-4 items-center gap-4",children:[(0,s.jsx)(i.J,{htmlFor:"bookingWindowDays",className:"text-base",children:"éæ¾é ç´æéç¯åï¼å¤©ï¼"}),(0,s.jsxs)("div",{className:"md:col-span-3 space-y-2",children:[(0,s.jsx)(n.p,{id:"bookingWindowDays",type:"number",min:Q.X.MIN_BOOKING_WINDOW_DAYS,value:V,onChange:e=>{X(Math.max(Q.X.MIN_BOOKING_WINDOW_DAYS,Math.floor(Number(e.target.value))||Q.X.MIN_BOOKING_WINDOW_DAYS))},className:"text-base max-w-[8rem]"}),(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:"éæ¾é ç´çæéç¯åï¼ä¾å¦ï¼90 è¡¨ç¤ºç¨æ¶æé åªè½é ç´ 90 天å¾çææ®µï¼"})]})]})]})]}),(0,s.jsx)(K,{weeklySchedule:R,specificDates:P,bookedSlots:G,onWeeklyScheduleChange:_,onSpecificDatesChange:z,onTimeSlotToggle:eT,onTimeRangeSelect:eD}),(0,s.jsx)(Z,{socialMedia:F,onSocialMediaChange:$})]}),!f&&(0,s.jsxs)("div",{className:"flex justify-between items-center pt-4",children:[b&&w&&(0,s.jsx)(l.$,{variant:"destructive",onClick:eh,disabled:C||ed||ey,className:"bg-red-500 hover:bg-red-600 text-white",children:C||ed?"åªé¤ä¸...":S}),(0,s.jsxs)("div",{className:"flex gap-2 ml-auto",children:[x&&h&&(0,s.jsx)(l.$,{variant:"outline",onClick:h,children:"åæ¶"}),(0,s.jsx)(l.$,{onClick:eA,disabled:ey||C||ed,children:ey?"å²åä¸...":"å²å"})]})]}),eg&&(0,s.jsx)(v,{imageSrc:eg,open:ep,onOpenChange:ex,onSave:ek,aspect:1,cropShape:"round"}),(0,s.jsx)(q.Lt,{open:ec,onOpenChange:eo,children:(0,s.jsxs)(q.EO,{children:[(0,s.jsxs)(q.wd,{children:[(0,s.jsx)(q.r7,{children:"確èªåªé¤é¡§å"}),(0,s.jsx)(q.$v,{children:"æ¤æä½ç¡æ³å¾©åï¼ç¢ºå®è¦åªé¤éä½é¡§ååï¼ææç¸éè³æï¼å
æ¬é ç´è¨éï¼é½å°è¢«åªé¤ã"})]}),(0,s.jsxs)(q.ck,{children:[(0,s.jsx)(q.Zr,{children:"åæ¶"}),(0,s.jsx)(q.Rx,{onClick:em,className:"bg-red-500 hover:bg-red-600",disabled:C||ed,children:C||ed?"åªé¤ä¸...":"åªé¤"})]})]})})]})})}}]);
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.