PageSourceSearch

https://yuanlinhaveawalk.com/_next/static/chunks/pages/admin/creator-subscription-82690d23d2b3e4b0.js

js yuanlinhaveawalk.com collected 2026-09-26 09:52:19 UTC 338,224 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[46880,59030],{54128:(e,t,a)=>{var r=a(31800),i=/^\s+/;e.exports=function(e){return e?e.slice(0,r(e)+1).replace(i,""):e}},31800:e=>{var t=/\s/;e.exports=function(e){for(var a=e.length;a--&&t.test(e.charAt(a)););return a}},99374:(e,t,a)=>{var r=a(54128),i=a(23805),o=a(44394),n=0/0,s=/^[-+]0x[0-9a-f]+$/i,l=/^0b[01]+$/i,d=/^0o[0-7]+$/i,c=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(o(e))return n;if(i(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=r(e);var a=l.test(e);return a||d.test(e)?c(e.slice(2),a?2:8):s.test(e)?n:+e}},46423:(e,t,a)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/admin/creator-subscription",function(){return a(72890)}])},44698:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});let r={src:"/_next/static/media/taiwanBeats.42fafb0a.png",height:634,width:1267,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAMAAACEE47CAAAACVBMVEUmHhpbTEk/NjPcuvp1AAAAA3RSTlP//v6U1OMbAAAACXBIWXMAABcRAAAXEQHKJvM/AAAAFUlEQVR4nGNgwAqYmJiYwAxGRkZGAACKAA3+IGKqAAAAAElFTkSuQmCC",blurWidth:8,blurHeight:4}},5560:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});let r={src:"/_next/static/media/yourator.ddd5022c.png",height:608,width:608,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAMAAADz0U65AAAAVFBMVEX8/fzn7/vIyMihq7js7/HUwfjEw8X09/bi4uLk5uve0Pfj1/y3xdW/0PfU2NrPzvrd3/ry9u/L1Nvb3+rWtvh7j7SstsTGwvvM2/+To7LZ3eHGz9jqsa0HAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAQElEQVR4nAXBhQHAMAzAMBeTlMb8/5+TgLiIAfNUSk3d4Wra03ULsomZmNCOkHN4Bq2fMQanDLyq52WNWdXb9wNQWAJMNrOJPwAAAABJRU5ErkJggg==",blurWidth:8,blurHeight:8}},78846:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var r=a(2445),i=a(27006),o=a(96540),n=a(8548),s=a(13302);let l=(0,i.forwardRef)((e,t)=>{let{onClick:a=()=>{},onBeforeClick:l,title:d,body:c,confirm:u,cancel:p,checkPhrase:m,passwordConfirm:g,confirmColorScheme:f="red",as:h,modalSize:b="md",CustomComponent:M=null,onConfirmDialogImpress:S=null,textAlign:v,...y}=e,[x,Y]=(0,o.useState)(!1),w=M||n.A;return(0,r.FD)(r.FK,{children:[(0,r.Y)(w,{...y,as:h&&(0,i.forwardRef)((e,t)=>(0,o.createElement)(h,{...y,...e,ref:t})),onClick:async e=>{e.preventDefault(),e.stopPropagation();let t=!0;try{"function"==typeof l&&(t=await l()),t&&Y(!0)}catch(e){}},ref:t}),(0,r.Y)(s.A,{isOpen:x,onClose:()=>Y(!1),title:d,body:c,confirm:u,cancel:p,onConfirm:a,checkPhrase:m,passwordConfirm:g,colorScheme:f,size:b,onDialogImpress:S,textAlign:v})]})})},13302:(e,t,a)=>{"use strict";a.d(t,{A:()=>g});var r=a(2445),i=a(27006),o=a(61032),n=a(96540),s=a(6442),l=a(99624),d=a(10767),c=a(79871),u=a(8548);let p=e=>{let{onAuthLoaded:t,onUserLoaded:a}=e,r=(0,d.A)(),{data:i}=(0,l.aB)(r);return(0,n.useEffect)(()=>{r&&i&&(t(r),a(i))},[r,i]),null},m=e=>{let{onImpress:t}=e,a=(0,c.A)(t);return(0,r.Y)("div",{ref:a})},g=e=>{let{isOpen:t,onClose:a,title:l,body:d,confirm:c,cancel:g="",onConfirm:f,onCancle:h,checkPhrase:b,passwordConfirm:M,colorScheme:S,size:v,onDialogImpress:y=null,textAlign:x="center"}=e,Y=(0,s.A)(),[w,C]=(0,n.useState)(),[A,k]=(0,n.useState)(),F=(0,n.useMemo)(()=>null==w?void 0:w.providerData.some(e=>{let{providerId:t}=e;return"google.com"===t}
1),[null==w?void 0:w.providerData]),[D,T]=(0,n.useState)(""),[I,P]=(0,n.useState)(),[R,B]=(0,n.useState)(),[z,O]=(0,n.useState)(!b),L=(0,n.useRef)(),N=async()=>{if(F){let e=new o.GoogleAuthProvider;try{if((await (0,o.signInWithPopup)(A,e)).user.uid!==w.uid){P(Y.formatMessage({defaultMessage:"Google帳號不符",id:"admin.shared.confirmDialog.Google帳號不符"})),B(!1);return}}catch(e){console.error(e),B(!1);return}}else try{let e=o.EmailAuthProvider.credential(A.currentUser.email,D);await (0,o.reauthenticateWithCredential)(w,e)}catch(e){"auth/wrong-password"===e.code&&P(Y.formatMessage({defaultMessage:"密碼錯誤",id:"admin.shared.confirmDialog.密碼錯誤"})),B(!1);return}},E=async()=>{B(!0),M&&await N();try{await f(),L.current&&(B(!1),a())}catch(e){console.error(e),L.current&&B(!1)}},W=(0,n.useMemo)(()=>z&&(!M||D.length>=6||F),[z,D]);return(0,r.FD)(r.FK,{children:[(0,r.Y)(i.AlertDialog,{isOpen:t,leastDestructiveRef:L,onClose:a,isCentered:!0,returnFocusOnClose:!1,motionPreset:"none",size:v,blockScrollOnMount:!1,children:(0,r.Y)(i.AlertDialogOverlay,{children:(0,r.FD)(i.AlertDialogContent,{children:[y&&(0,r.Y)(m,{onImpress:y}),(0,r.Y)(i.AlertDialogHeader,{fontSize:"lg",fontWeight:"bold",textAlign:x,children:l||Y.formatMessage({defaultMessage:"注意",id:"admin.shared.confirmDialog.注意"})}),(0,r.FD)(i.AlertDialogBody,{as:i.VStack,children:[(0,r.Y)(i.Box,{whiteSpace:"pre-wrap",textAlign:x,children:d||Y.formatMessage({defaultMessage:"確認執行此動作",id:"admin.shared.confirmDialog.確認執行此動作"})}),b&&(0,r.FD)(i.FormControl,{isRequired:!0,children:[(0,r.FD)(i.FormLabel,{children:[Y.formatMessage({defaultMessage:"請輸入",id:"admin.shared.confirmDialog.請輸入"}),(0,r.Y)(i.Code,{colorScheme:"red",fontWeight:"bold",children:b}),Y.formatMessage({defaultMessage:"來確認執行",id:"admin.shared.confirmDialog.來確認執行"})]}),(0,r.Y)(i.Input,{onChange:e=>{b&&O(e.target.value===b)},focusBorderColor:"red.500",onKeyUp:e=>{"Enter"===e.key&&W&&E()}})]}),M&&!F&&(0,r.FD)(i.FormControl,{isRequired:!0,isInvalid:I,children:[(0,r.Y)(i.FormLabel,{children:Y.formatMessage({defaultMessage:"請輸入您的密碼",id:"admin.shared.confirmDialog.請輸入您的密碼"})}),(0,r.Y)(i.Input,{onChange:e=>T(e.target.value),type:"password",autoComplete:"new-password",onKeyUp:e=>{"Enter"===e.key&&W&&E()}}),(0,r.Y)(i.FormErrorMessage,{children:I})]})]}),(0,r.FD)(i.AlertDialogFooter,{justifyContent:"center",children:[(0,r.Y)(u.A,{colorScheme:"gray",ref:L,onClick:()=>{a(),"function"==typeof h&&h()},isLoading:R,rounded:"full",children:g||Y.formatMessage({defaultMessage:"取消",id:"admin.shared.confirmDialog.取消"})}),(0,r.Y)(u.A,{rounded:"full",colorScheme:S||"green",onClick:E,ml:3,isLoading:R,isDisabled:!W,children:c||Y.formatMessage({defaultMessage:"確認",id:"admin.shared.confirmDialog.確認"})})]})]})})}),M&&(0,r.Y)(p,{onUserLoaded:C,onAuthLoaded:k})]})}},92892:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var r=a(2445),i=a(27006),o=a(96540),n=a(38869),s=a(6442);let l=(e,t)=>"string"==typeof e?e:"string"==typeof t||"number"==typeof t?String(t):"",d=(0,o.forwardRef)((e,t)=>{let{children:a,text:o,trackerName:d,scrollable:c,buttonType:u,buttonName:p,buttonProps:m,variant:g,...f}=e,h=!a&&!o,b=(0,s.A)(),{onCopy:M}=(0,i.useClipboard)(l(o,a)),S=(0,i.useToast)();return(0,r.Y)(i.HStack,{ref:t,cursor:"pointer",onClick:()=>{M(),S({description:b.formatMessage({defaultMessage:"已複製",id:"admin.shared.copiableText.已複製"}),status:"success",duration:2e3,isClosable:!0})},...f,children:u?(0,r.Y)(i.Button,{size:"sm",variant:null!=g?g:"solid",isDisabled:h,...m,children:null!=p?p:b.formatMessage({defaultMessage:"複製",id:"admin.shared.copiableText.複製"})}):(0,r.FD)(r.FK,{children:[(0,r.Y)(i.Box,{flex:"1",whiteSpace:c?"nowrap":void 0,pos:"relative",overflowX:"auto",overflowY:"hidden",py:c?2.5:void 0,onClick:()=>{d&&window.gtag&&window.gtag("event","click_button",{button_name:"".concat(d,".link")})},children:c?(0,r.Y)(i.Box,{pos:"absolute",top:"0",bottom:"0",children:a}):a}),(0,r.Y)(i.IconButton,{"aria-label":b.formatMessage({defaultMessage:"複製",id:"admin.shared.copiableText.複製"}),onClick:()=>{d&&window.gtag&&window.gtag("event","click_button",{button_name:d})},variant:"ghost",color:"gray.700",p:"0.25em",icon:(0,r.Y)(n.nxz,{size:"1.375em"}),width:"1.5rem",minWidth:"none",height:"1.5rem",isDisabled:h,...m})]})})});d.displayName="CopiableText";let c=Object.assign(d,{Right:(0,o.forwardRef)((e,t)=>(0,r.Y)(d,{justifyContent:"flex-end",ref:t,...e})),Mono:(0,o.forwardRef)((e,t)=>(0,r.Y)(d,{fontFamily:"mono",ref:t,...e}))});c.Right.displayName="CopiableText.Right",c.Mono.displayName="CopiableText.Mono";let u=c},92227:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var r=a(2445),i=a(13368),o=a.n(i),n=a(6442),s=a(57734),l=a(18747);let d=(e,t)=>(e||t).replace(/\n/g," "),c={zh:"zh_TW",en:"en_US",ja:"ja_JP"},u=e=>{var t;let{title:a,disableTitlePortalySuffix:i,description:u,ogImage:p,ogType:m="website",favicon:g,structuredData:f,canonical:h,disableIndexing:b=!1,customMetaTitle:M,locale:S,siteName:v=l.yy,ogUpdatedTime:y,customMetaDescription:x}=e,Y=(0,n.A)(),w=null!=S?S:Y.locale,C="en"===w,A=a;i||(A=a?"".concat(a," | Portaly"):"Portaly");let k=(0,s.A)(),F=d(u,C?l.pR:l.b2),D=d(x||u,C?l.pR:l.UM),T=d(x||u,C?l.pR:l.nW),I=p||k,P=null!==(t=c[w])&&void 0!==t?t:"zh_TW";return(0,r.FD)(o(),{children:[(0,r.Y)("title",{children:A}),(0,r.Y)("meta",{name:"description",content:F}),(0,r.Y)("meta",{name:"robots",content:b?"noindex, nofollow":"index, follow"}),(0,r.Y)("meta",{property:"og:type",content:m}),(0,r.Y)("meta",{property:"og:site_name",content:v}),(0,r.Y)("meta",{property:"og:locale",content:P}),(0,r.Y)("meta",{property:"og:title",content:M||A}),(0,r.Y)("meta",{property:"og:description",content:D}),(0,r.Y)("meta",{property:"og:image",content:I}),(0,r.Y)("meta",{property:"og:image:secure_url",content:I}),y&&(0,r.Y)("meta",{property:"og:updated_time",content:y}),h&&(0,r.Y)("meta",{property:"og:url",content:h}),(0,r.Y)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,r.Y)("meta",{name:"twitter:description",content:T}),(0,r.Y)("meta",{name:"twitter:image",content:I}),(0,r.Y)("meta",{name:"twitter:title",content:M||A}),g&&(0,r.Y)("link",{rel:"icon",href:g}),f&&(0,r.Y)("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(f)}}),h&&(0,r.Y)("link",{rel:"canonical",href:h})]})}},19082:(e,t,a)=>{"use strict";a.d(t,{A:()=>E});var r=a(2445),i=a(27006),o=a(86715),n=a(96540),s=a(74698),l=a(91948),d=a(97165),c=a(76346),u=a(28414),p=a(6442),m=a(69455),g=a(50541),f=a(14120);let h=(e,t)=>{if(!e)return;let a=e.split("&").find(e=>e.startsWith("".concat(t,"=")));
1return a?decodeURIComponent(a.slice(t.length+1)):void 0},b=(e,t)=>{let a=e=>{var t;return null===(t=e.split("/")[2])||void 0===t?void 0:t.split("?")[0]};if(null==t?void 0:t.matchRouteBySubpath)return a(e)===a(null==t?void 0:t.href);let[r,i]=e.split("?"),[o,n]=((null==t?void 0:t.href)||"").split("?");if(r!==o)return!1;let s=h(n,"tab");if(void 0!==s){var l;return(null!==(l=h(i,"tab"))&&void 0!==l?l:null==t?void 0:t.defaultTab)===s}return!0};var M=a(52615),S=a(92715),v=a(47378);let y=e=>Array.isArray(e)?e.filter(Boolean):[],x=e=>{var t,a;let r=(0,o.useRouter)(),i=null===(t=r.query)||void 0===t?void 0:t.id,s=(0,p.A)(),{uid:l,membershipTier:d,isProfitOnboarding:h,data:x}=(0,n.useContext)(f.A),Y=(0,v.A)(e,"betaTester"),w=(0,m.J)({intl:s,isAdmin:i,slug:l,tier:d,betaTester:Y}).map(e=>e?e.leftNavPages:void 0).filter(e=>Array.isArray(e)).concat([y((0,g.qo)(s,i,l))],[y((0,g.Bf)(s,i,l))]),C=w.findIndex(e=>e.find(e=>b(r.asPath,e))),A=null!==(a=w[C])&&void 0!==a?a:[];return(0,c.A)(x)?A.filter(e=>(0,M.A)(null==e?void 0:e.href)):(0,u.A)(x)?A.filter(e=>(0,S.A)(null==e?void 0:e.href)):A};var Y=a(89498),w=a(14953),C=a.n(w),A=a(46265),k=a(63959);let F=C()(()=>a.e(20989).then(a.bind(a,43370)),{loadableGenerated:{webpack:()=>[43370]}}),D=e=>{let{link:t,noShare:a}=e,{favicon:o,profileId:s}=(0,n.useContext)(f.A),l=(0,k.A)(s);return(0,r.FD)("div",{children:[(0,r.Y)(A.$U,{lessThan:"xl",children:(0,r.Y)(i.Box,{mt:"0.5em",children:(0,r.Y)(F,{slug:l,page:t,favicon:o,mb:"1em",isMobile:!0,noShare:a,hideGoLabel:!0})})}),(0,r.Y)(A.$U,{greaterThan:"lg",children:(0,r.Y)(i.Box,{bg:"white",mx:"auto",minH:"50px",w:"100%",pb:"2",children:(0,r.Y)(F,{slug:l,page:t,favicon:o,noShare:a,tracker:t,maxW:""})})})]})};var T=a(85960),I=a(8548);let P=e=>{let{isActive:t,children:a}=e;return(0,r.Y)(i.Box,{ml:"1",border:t?"1px solid white":"1px solid #2DB9D2",fontSize:"10px",letterSpacing:"wide",py:"0.5",px:"1",borderRadius:"sm",children:a})};var R=a(42352);let B=(0,T.P)(i.Box),z=(0,l.A)(e=>{var t;let{navBar:a,children:s,profileId:l,showTrialBar:d,hasAlertBar:c=!1}=e,u="en"===(0,p.A)().locale,m=(0,v.A)(l,"betaTester"),g=(0,o.useRouter)(),f=null==a?void 0:a.filter(e=>{let t=null==e?void 0:e.href.split("/")[2].split("?")[0];return(null==m?void 0:m[null==e?void 0:e.isBeta])||(null==m?void 0:m[t])||!(null==e?void 0:e.isBeta)}),h=(0,n.useMemo)(()=>null==f?void 0:f.findIndex(e=>b(g.asPath,e)),[g.asPath,f]),[M,S]=(0,n.useState)(null),[y,x]=(0,n.useState)(0),Y=(0,n.useMemo)(()=>{var e;let t=null==f?void 0:f[h];return(null==t?void 0:null===(e=t.subItems)||void 0===e?void 0:e.length)?t.subItems:null},[f,h]),w=(0,R.aF)(null===(t=g.query)||void 0===t?void 0:t.tab);return(0,r.FD)(i.Box,{pos:"absolute",left:"0",top:d||c?20:12,transform:"translateX(-100%)",onMouseLeave:()=>S(null),pr:u?"1em":"2em",className:"desktop-left-navbar",children:[(0,r.Y)(i.VStack,{justifyContent:"center",alignItems:"stretch",children:s||(0,r.Y)(r.FK,{children:a&&(null==f?void 0:f.map((e,t)=>{let a=h===t;return(0,r.FD)(n.Fragment,{children:[(0,r.FD)(I.A,{pl:"5",pr:"6",onMouseEnter:e=>{S(t),x(e.target.offsetWidth)},border:"none",href:null==e?void 0:e.href,trackerName:"adminHeader.".concat(null==e?void 0:e.href),leftIcon:null==e?void 0:e.icon,justifyContent:"flex-start",variant:a?"solid":"ghost",borderRadius:"xl",children:[null==e?void 0:e.label,(null==e?void 0:e.badge)&&(0,r.Y)(P,{isActive:a,children:e.badge})]}),a&&Y&&(0,r.Y)(i.VStack,{alignItems:"stretch",spacing:.5,pl:4,ml:5,borderLeft:"2px solid",borderColor:"gray.200",py:1,onMouseEnter:()=>S(null),children:Y.map(e=>{let t=e.key===w;return(0,r.Y)(I.A,{size:"sm",h:"38px",border:"none",href:e.href,trackerName:"adminHeader.payment.".concat(e.key),justifyContent:"flex-start",variant:"ghost",borderRadius:"lg",fontSize:"15px",bg:t?"GUI.green.50":"transparent",color:t?"GUI.green.700":"gray.600",fontWeight:t?"800":"600",children:e.label},e.key)})})]},t)}))})}),null!==M&&(0,r.Y)(B,{pos:"absolute",bg:"GUI.green.50",borderRadius:"xl",h:"2.5em",top:0,left:0,right:0,zIndex:-1,initial:{y:48*Math.max(0,h),width:y},animate:{y:48*M,width:y}})]})}),O=e=>{let{navBar:t,children:a,profileId:s}=e,l="en"===(0,p.A)().locale,d=(0,v.A)(s,"betaTester"),c=(0,o.useRouter)(),u=null==t?void 0:t.filter(e=>{let t=null==e?void 0:e.href.split("/")[2].split("?")[0];return(null==d?void 0:d[null==e?void 0:e.isBeta])||(null==d?void 0:d[t])||!(null==e?void 0:e.isBeta)}),m=(0,n.useMemo)(()=>null==u?void 0:u.findIndex(e=>b(c.asPath,e)),[c.pathname,u]);return(0,r.Y)(r.FK,{children:t&&!(null==u?void 0:u.includes(null))&&(0,r.Y)(i.Container,{maxW:"container.lg",boxShadow:"rgba(33, 35, 38, 0.1) 0px 10px 10px -10px;",mb:"3",p:0,py:"2",children:(0,r.Y)(i.Stack,{direction:{base:"column",sm:"row"},spacing:{base:2,sm:5},alignItems:"center",wrap:"wrap",w:"full",children:a||(0,r.Y)(i.SimpleGrid,{w:"full",columns:{base:l?2:3,md:6},spacing:2,children:null==u?void 0:u.map((e,t)=>{let a=m===t;return(0,r.Y)(I.A,{href:null==e?void 0:e.href,leftIcon:null==e?void 0:e.icon,justifyContent:"center",variant:a?"solid":"ghost",fontSize:"14px",trackerName:"adminHeader.".concat(null==e?void 0:e.href),_active:"none",_hover:"none",children:null==e?void 0:e.label},t)})})})})})},L=e=>{let{children:t,link:a,maxW:o,bg:n,noShare:l,showTrialBar:d,hasAlertBar:c,leftNavBar:u,profileId:p,fullScreen:m}=e;return(0,r.Y)(i.Box,{py:{base:"2",md:d||c?"20":"10"},mx:"auto",maxW:m?"100%":"1440px",w:{base:"100%",lg:m?"100%":"70%"},as:i.Stack,spacing:10,bg:null!=n?n:"white",px:{base:0,md:m?0:8},pos:"relative",boxShadow:m?"none":"rgba(33, 35, 38, 0.1) 0px 10px 10px -10px;",pb:"2",flex:1,children:(0,r.FD)(i.Container,{display:"flex",flexDirection:"column",flex:"1",maxW:"container.".concat(o),children:[!m&&(0,r.Y)(s.A,{lessThan:"xl",children:(0,r.Y)(O,{navBar:u,profileId:p})}),a&&(0,r.Y)(D,{link:a,noShare:l}),t,!m&&(0,r.Y)(s.A,{greaterThanOrEqual:"lg",children:(0,r.Y)(z,{navBar:u,link:a,profileId:p,hasAlertBar:c})})]})})},N=e=>{let{profileId:t,isProfitOnly:a,isPaymentOnly:i,...o}=e,{hasAlertBar:n}=(0,Y.A)(t),s=x(t),l=(0,d.uc)(t);return(0,r.Y)(L,{...o,profileId:t,hasAlertBar:!a&&(!i||l)&&n,leftNavBar:s})},E=(0,l.A)(e=>{let{profileId:t,data:a}=(0,n.useContext)(f.A),{pathname:i}=(0,o.useRouter)(),s=(0,u.A)(a),l=(0,c.A)(a),d=s||l,p="/admin/user"===i||i.startsWith("/admin/user/");return!t||d&&p?(0,r.Y)(L,{...e,profileId:t,hasAlertBar:!1,leftNavBar:[]}):d?(0,r.Y)(N,{profileId:t,...e,isProfitOnly:s,isPaymentOnly:l}):(0,r.Y)(N,{profileId:t,...e})})},67585:(e,t,a)=>{"use strict";a.d(t,{A:()=>n,Y:()=>o});var r=a(2445),i=a(27006);a(96540);let o="1.375rem",n=e=>{let{icon:t,title:a,...n}=e;return(0,r.Y)(i.Box,{pt:"2",...n,children:(0,r.Y)(i.Tooltip,{label:a,borderRadius:"xl",bg:"GUI.gray.600",children:(0,r.Y)("span",{children:(0,r.Y)(i.Icon,{width:o,height:o,c
1olor:"GUI.gray.300",as:t})})})})}},5600:(e,t,a)=>{"use strict";a.d(t,{A:()=>m});var r=a(2445),i=a(27006),o=a(96540),n=a(6442),s=a(59324),l=a(78846),d=a(11335),c=a(49177);let u=e=>(0,c.b6)(e,"yyyy-MM-dd HH:mm")||"-",p=()=>{let e=(0,n.A)();return(0,r.FD)(i.VStack,{align:"stretch",spacing:4,children:[(0,r.FD)(i.UnorderedList,{spacing:1,color:"gray.700",pl:5,children:[(0,r.Y)(i.ListItem,{children:e.formatMessage({defaultMessage:"這個 app 立刻無法再換發新的存取權。",id:"admin.mcp.connections.revoke.effect.refresh"})}),(0,r.Y)(i.ListItem,{children:e.formatMessage({defaultMessage:"對已經發出的存取權杖,撤銷最多 1 小時後生效:權杖自帶 1 小時效期,簽出後無法提前作廢。",id:"admin.mcp.connections.revoke.effect.access"})})]}),(0,r.FD)(i.Box,{"data-testid":"mcp-revoke-recoverable",children:[(0,r.Y)(i.Text,{fontSize:"sm",fontWeight:"700",color:"gray.800",mb:1,children:e.formatMessage({defaultMessage:"可回復的變更",id:"admin.mcp.connections.revoke.recoverable.title"})}),(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.600",children:e.formatMessage({defaultMessage:"目前沒有。系統沒有留下「哪一筆變更是哪一個連線做的」,也沒有保留變更前的內容,所以撤銷無法只回復這個 app 動過的東西。",id:"admin.mcp.connections.revoke.recoverable.none"})})]}),(0,r.FD)(i.Box,{"data-testid":"mcp-revoke-unrecoverable",children:[(0,r.Y)(i.Text,{fontSize:"sm",fontWeight:"700",color:"gray.800",mb:1,children:e.formatMessage({defaultMessage:"不可回復的變更",id:"admin.mcp.connections.revoke.unrecoverable.title"})}),(0,r.FD)(i.UnorderedList,{spacing:1,fontSize:"sm",color:"gray.600",pl:5,children:[(0,r.Y)(i.ListItem,{children:e.formatMessage({defaultMessage:"商品(新增、編輯、上下架):商品上只留「AI 改過哪些欄位、什麼時候改的」,沒有保留改動前的值。",id:"admin.mcp.connections.revoke.unrecoverable.products"})}),(0,r.Y)(i.ListItem,{children:e.formatMessage({defaultMessage:"訂閱方案與贊助方案(新增、編輯、上下架):寫入完全不留 AI 紀錄,事後連被改過都查不到。",id:"admin.mcp.connections.revoke.unrecoverable.plans"})})]})]}),(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.600",children:e.formatMessage({defaultMessage:"撤銷後請到後台首頁的「AI 最近的變更」逐項確認商品,需要的話自己改回來。",id:"admin.mcp.connections.revoke.hint"})})]})},m=e=>{var t;let{profileId:a}=e,c=(0,n.A)(),m=(0,d.A)(),g=(0,i.useToast)(),{data:f,mutate:h}=(0,s.Ay)(a?"/api/mcp/oauth/connections?profileId=".concat(a):null,m,{revalidateOnFocus:!1}),b=null!==(t=null==f?void 0:f.data)&&void 0!==t?t:[],M=e=>e.clientName||c.formatMessage({defaultMessage:"未命名的 app",id:"admin.mcp.connections.unknownApp"}),S=(0,o.useCallback)(async e=>{try{await m("/api/mcp/oauth/connections",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({profileId:a,clientId:e.clientId})})}catch(e){throw g({title:c.formatMessage({defaultMessage:"撤銷連線失敗",id:"admin.mcp.connections.toast.revokeFailed"}),description:e instanceof Error?e.message:"Unknown error",status:"error"}),e}await h(),g({title:c.formatMessage({defaultMessage:"連線已撤銷",id:"admin.mcp.connections.toast.revoked"}),status:"success"})},[m,c,h,a,g]);return(0,r.Y)(i.Box,{border:"1px solid",borderColor:"gray.200",borderRadius:"xl",p:4,children:(0,r.FD)(i.VStack,{align:"stretch",spacing:3,children:[(0,r.Y)(i.Text,{fontSize:"sm",fontWeight:"700",color:"gray.800",children:c.formatMessage({defaultMessage:"已授權的 AI app",id:"admin.mcp.connections.title"})}),(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.600",children:c.formatMessage({defaultMessage:"這些 app 經你授權後可以代表你讀寫這家店的資料。撤銷後它就得重新請求授權。",id:"admin.mcp.connections.intro"})}),0===b.length&&(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.500",children:c.formatMessage({defaultMessage:"目前沒有已授權的 app。",id:"admin.mcp.connections.empty"})}),b.map(e=>(0,r.FD)(i.HStack,{justify:"space-between",align:{base:"stretch",md:"center"}
1,flexDir:{base:"column",md:"row"},spacing:3,borderTop:"1px solid",borderColor:"gray.100",pt:3,children:[(0,r.FD)(i.VStack,{align:"stretch",spacing:0,flex:1,children:[(0,r.Y)(i.Text,{fontWeight:"600",color:"gray.800",children:M(e)}),(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.600",children:c.formatMessage({defaultMessage:"授權於 {authorizedAt}.上次使用 {lastUsedAt}",id:"admin.mcp.connections.meta"},{authorizedAt:u(e.authorizedAt),lastUsedAt:u(e.lastUsedAt)})})]}),(0,r.Y)(l.A,{size:"sm",variant:"outline",colorScheme:"red",modalSize:"lg",textAlign:"left",title:c.formatMessage({defaultMessage:"撤銷「{name}」?",id:"admin.mcp.connections.revoke.title"},{name:M(e)}),body:(0,r.Y)(p,{}),confirm:c.formatMessage({defaultMessage:"撤銷連線",id:"admin.mcp.connections.revoke.confirm"}),cancel:c.formatMessage({defaultMessage:"取消",id:"admin.mcp.connections.cancel"}),onClick:()=>S(e),children:c.formatMessage({defaultMessage:"撤銷",id:"admin.mcp.connections.revoke"})})]},e.clientId))]})})}},28811:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(22405),i=a(77666),o=a(7817);let n=()=>{let e=(0,o.A)(),t=(0,i.A)();return async function(a,i){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"read",n=(0,r.doc)(t,"users",e.uid);try{await (0,r.setDoc)(n,{[o]:{[a]:i}},{merge:!0})}catch(e){console.error(e)}}}},5712:(e,t,a)=>{"use strict";a.d(t,{A:()=>w});var r=a(2445),i=a(27006),o=a(96540),n=a(14120),s=a(47648),l=a(46479),d=a(6442),c=a(40255),u=a(96323),p=a(78459),m=a(41012),g=a(73013),f=a(96007);let h={".swiper-slide":{position:"relative",textAlign:"start",fontSize:"18px",background:"#fff"},".swiper-pagination-bullet":{width:{base:"50px",md:"100px"},height:"7px",textAlign:"center",borderRadius:"5px",fontSize:"0px",color:"#000",opacity:1,background:"rgba(0, 0, 0, 0.2)"},".swiper-pagination-bullet-active":{background:"#11A4A1"},".swiper-pagination-horizontal":{height:"100px",top:"-10px"}},b=e=>{e&&"function"==typeof window.gtag&&window.gtag("event","click_button",{button_name:e})},M=e=>{let{onClose:t,setActivePage:a,finalPages:n,buttonName:s,onRead:l,firstPages:c,firstButtonName:p,oneSlider:m,ctaButtonProps:g}=e,f=(0,d.A)(),h=(0,u.Mn)();(0,o.useEffect)(()=>{h&&h.on("slideChange",function(){a(h.activeIndex)})},[h]);let b=null!=s?s:f.formatMessage({defaultMessage:"立即使用",id:"admin.coverModal.立即使用"}),M=(0,o.useMemo)(()=>n||m?b:c&&p?p:f.formatMessage({defaultMessage:"下一步",id:"admin.coverModal.下一步"}),[h,c,n]);return(0,r.Y)(i.Button,{borderRadius:"20px",bg:"#7C07A5",border:"none",w:"8em",_focusVisible:"none",_hover:{bg:"#51056b"},...g,onClick:()=>{(n||m)&&(l&&l(),t()),h&&h.slideNext()},children:M})},S=e=>{let{isEn:t}=e,a=(0,u.Mn)();return(0,r.Y)(r.FK,{children:(0,r.Y)(i.Button,{borderRadius:"20px",colorScheme:"ghost",color:"gray.300",border:"none",w:"3em",onClick:()=>{a.slidePrev()},_focusVisible:"none",children:t?"Prev":"上一步"})})},v=e=>{if(e&&"function"==typeof window.gtag)return window.gtag("event","button_visible",{button_name:e}),!0},y=e=>{let{isOpen:t,onClose:a,id:n,sliderContent:s,noCloseButton:y,firstButtonName:x,buttonName:Y,closeOnOverlayClick:w,onRead:C,onCTAClick:A,ctaButtonProps:k}=e,F="en"===(0,d.A)().locale,[D,T]=(0,o.useState)(0),I=0===D,P=D===(null==s?void 0:s.length)-1,R=(null==s?void 0:s.length)===1,{emit:B}=(0,l.A)(),z=(0,m.A)(()=>(B(f.Xy,{bannerId:n}),v("modal.".concat(n)))),O=(0,g.A)("admin");return(0,r.FD)(i.Modal,{isOpen:t,onClose:a,size:"xl",isCentered:!0,closeOnOverlayClick:!!w,initialFocusRef:null,closeOnEsc:O,children:[(0,r.Y)(i.ModalOverlay,{}),(0,r.FD)(i.ModalContent,{px:{base:1,md:15},py:{base:5,lg:5},ref:z,children:[(P||(null==s?void 0:s.length)===1)&&!y&&(0,r.Y)(i.ModalCloseButton,{onClick:()=>{n&&(C(),B(f.m1,{bannerId:n}),b("modal.modalCloseButton.".concat(n)))},_focusVisible:"none"}),(0,r.Y)(i.ModalBody,{p:{base:3,md:""},children:(0,r.Y)(i.Box,{w:"100%",pos:"relative",mt:"0",sx:h,children:(0,r.FD)(u.RC,{cssMode:!0,pagination:!0,mousewheel:!0,keyboard:!0,modules:[c.Vx,c.dK,c.FJ,c.s3],children:[null==s?void 0:s.map(e=>{var t,a;return(0,r.Y)(u.qr,{children:(0,r.FD)(i.VStack,{alignItems:"flex-start",mt:R?0:"1.5em",children:[(0,r.FD)(i.Box,{px:{base:"0",md:"1.5em"},children:[(0,r.Y)(i.Text,{fontSize:"24px",fontWeight:"900",children:null==e?void 0:e.title}),(0,r.FD)(i.Text,{fontWeight:"400",fontSize:"16px",mt:3,children:[null==e?void 0:e.subTitle,(0,r.Y)(i.Text,{as:"span",color:"red.500",fontWeight:"900",children:null==e?void 0:null===(t=e.highlight)||void 0===t?void 0:t.split(",")[0]})," ",(0,r.Y)(i.Text,{as:"span",children:null==e?void 0:null===(a=e.highlight)||void 0===a?void 0:a.split(",")[1]})]})]}),(null==e?void 0:e.content)&&(0,r.Y)(i.Box,{pt:"1em",alignSelf:"stretch",px:{base:"0",md:"1.5em"},children:e.content}),(null==e?void 0:e.image)&&(0,r.Y)(i.Box,{pt:"1em",alignSelf:"center",w:F?"85%":"full",children:(0,r.Y)(p.Ay,{ratio:2,src:"/".concat(null==e?void 0:e.image,".png"),alt:""})})]})},e)}),(0,r.FD)(i.HStack,{justifyContent:I?"end":"space-between",mt:"2em",px:F&&"10",children:[!I&&(0,r.Y)(S,{setActivePage:T,onClose:a,isEn:F,initialFocusRef:null}),(0,r.Y)(M,{onClose:a,setActivePage:T,sliderContent:s,buttonName:Y,oneSlider:R,onRead:()=>{n&&(A&&A(),C(),B(f.aG,{bannerId:n}),b("modal.checkButton.".concat(n)))},firstButtonName:x,firstPages:I,finalPages:P,ctaButtonProps:k})]})]})})})]})]})},x=e=>{let{isOpen:t,onClose:a,onOpen:o,...n}=e;return(0,r.FD)(r.FK,{children:[(0,r.Y)(i.Button,{onClick:o,cursor:"pointer",...n,children:n.triggerName}),(0,r.Y)(y,{isOpen:t,onClose:a,...n,closeOnOverlayClick:!0})]})};class Y{}Y.BUTTON_NOTI="button",Y.PERMANENT_NOTI="permanent",Y.CENTER_NOTI="center";let w=e=>{let{subscriptionData:t,subscription:a,mode:d="center",id:c,...u}=e,{profileId:p}=(0,o.useContext)(n.A),{emit:m}=(0,l.A)(),g=(0,s.A)({profileId:p,subscriptionData:t,id:c}),f=null==g?void 0:g.tracking,h=f?"".concat(g.id,":").concat(f.event):null;(0,o.useEffect)(()=>{f&&m(f.event,f.payload)},[h]);let{onClose:b,onOpen:M,isOpen:S}=(0,i.useDisclosure)({defaultIsOpen:"button"!==d});return g&&(e=>{switch(e){case Y.PERMANENT_NOTI:return(0,r.Y)(y,{isOpen:!0,onClose:b,...g});case Y.CENTER_NOTI:return(0,r.Y)(y,{isOpen:S,onClose:b,...g});case Y.BUTTON_NOTI:return(0,r.Y)(x,{onClose:b,onOpen:M,isOpen:S,...u,...g})}})(d)}},53573:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(2445),i=a(27006),o=a(46838);let n=e=>{let{title:t,tutorialUrl:a,tutorialName:n,size:s,...l}=e;return(0,r.FD)(i.HStack,{alignItems:"center",spacing:4,...l,children:[(0,r.Y)(i.Heading,{size:s,children:t}),a&&n&&(0,r.Y)(o.A,{url:a,trackerName:n})]})}},46838:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(2445);a(96540);var i=a(6442),o=a(8548);let n=e=>{let{url:t,...a}=e,n="en"===(0,i.A)().locale;return(0,r.Y)(o.A,{isExternal:!0,href:t,variant:"outline",size:"xs",flexShrink:0,_active:{bg:"teal.50"},_focus:{bg:"teal.50"},...a,children:n?"Tutorial":"使用教學"})}},54468:(e,t,a)=>{"use strict";a.d(t,{A:()=>p});var r=a(2445),i=a(27006),o=a(96540),n=a(6442),s=a(78459),l=a(40090),d=a(69141);let c=e=>
1{let[t,a]=(0,o.useState)();return(0,o.useEffect)(()=>{let t=!1;if(!e)return a(void 0),()=>{t=!0};a(void 0);let r=(0,d.ref)((0,d.getDatabase)());return(0,d.get)((0,d.child)(r,"upgradeModals/data/".concat(e))).then(e=>{if(t||!e.exists())return;let{title:r,description:i,video:o,hidden:n,description_EN:s,title_EN:l}=e.val();a({title:r,description:i,video:o,hidden:n,description_EN:s,title_EN:l})}).catch(r=>{t||(console.error("[useUpgradeModals] Failed to load upgrade modal data",{name:e,error:r}),a(void 0))}),()=>{t=!0}},[e]),t};var u=a(87260);let p=e=>{var t;let{isOpen:a,onClose:d,tier:p,tierContent:m,tracker:g,onMount:f,isPreview:h,superAdminPreviewData:b}=e,M=(0,n.A)(),S="en"===M.locale,[v]=(0,i.useMediaQuery)("(max-width: 768px)"),y=c(m),x=h?b:y,Y=v?220:400,[w,C]=(0,o.useState)(!1);(0,o.useEffect)(()=>{f&&f()},[]);let{emitFeatureModalOpen:A,emitFeatureModalUpgradeButtonClick:k}=(0,l.Ay)();(0,o.useEffect)(()=>{!a||(null==x?void 0:x.hidden)||A()},[a,A,null==x?void 0:x.hidden]);let F=null==x?void 0:null===(t=x.video)||void 0===t?void 0:t.includes("image");return(0,r.FD)(i.Modal,{isOpen:a,onClose:d,isCentered:!0,size:"4xl",portalProps:{appendToParentPortal:!1},trapFocus:!1,children:[(0,r.Y)(i.ModalOverlay,{}),(0,r.FD)(i.ModalContent,{py:v?"1em":"5em",px:v?"1em":"2em",children:[(0,r.Y)(i.ModalCloseButton,{}),(0,r.Y)(i.ModalBody,{children:(0,o.createElement)(v?i.VStack:i.HStack,{spacing:v?"2":"10"},(0,r.FD)(r.FK,{children:[F?(0,r.Y)(i.Box,{w:Y,children:(0,r.Y)(s.Ay,{src:(e=>(null==e?void 0:e.startsWith("https"))?e:"/".concat(e.replace(/\.image$/,""),".png"))(null==x?void 0:x.video),ratio:1})}):(0,r.Y)(i.Skeleton,{isLoaded:w,children:(0,r.Y)(i.Box,{w:"".concat(Y,"px"),h:"".concat(Y,"px"),children:(0,r.Y)("video",{width:Y,height:Y,autoPlay:!0,loop:!0,muted:!0,playsInline:!0,onCanPlay:()=>C(!0),children:(0,r.Y)("source",{src:(()=>{if(null==x?void 0:x.video){var e;return(null==x?void 0:null===(e=x.video)||void 0===e?void 0:e.startsWith("http"))?null==x?void 0:x.video:S?"/vi
1deo/".concat(null==x?void 0:x.video,"_en.mp4"):"/video/".concat(null==x?void 0:x.video,".mp4")}})()})})})}),(0,r.FD)(i.VStack,{alignItems:v?"center":"start",textAlign:v&&"center",spacing:v?1:4,w:v?"100%":"50%",children:[(0,r.Y)(i.Text,{fontWeight:"900",fontSize:{base:"16px",md:"20px"},color:"GUI.green.500",children:M.formatMessage({defaultMessage:"頂級會員專屬功能",id:"admin.subscription.頂級會員專屬功能"})}),(0,r.Y)(i.Text,{fontWeight:"900",fontSize:{base:"22px",md:"36px"},color:"gray.700",children:S?null==x?void 0:x.title_EN:null==x?void 0:x.title}),(0,r.Y)(i.Text,{fontWeight:"500",color:"gray.700",w:"100%",fontSize:{base:"14px",md:"16px"},children:S?null==x?void 0:x.description_EN:null==x?void 0:x.description}),(0,r.Y)(i.Box,{pt:{base:"2em",md:"3em"},children:(0,r.Y)(u.A,{tracker:g,colorScheme:"green",subClose:d,requiredTier:p,fontSize:"20px",tierContentButton:!0,skipPremiumModal:!0,tierContentTitle:!(null==x?void 0:x.hidden)&&(S?null==x?void 0:x.title_EN:null==x?void 0:x.title),py:"6",px:"10",size:"md",border:"none",adminIsOpen:(null==x?void 0:x.hidden)&&!h&&!0,onClick:(e,t)=>{t(),k()},children:M.formatMessage({defaultMessage:"立即升級",id:"admin.subscription.立即升級"})})})]})]}))})]})]})}},86925:(e,t,a)=>{"use strict";a.d(t,{f:()=>r});let r={assistant:!0,profit:!1,profitVendor:!0,foundry:!0,paymentTeamMode:!0,emailSender:!0}},9341:(e,t,a)=>{"use strict";a.d(t,{D:()=>i,c:()=>r});let r="portaly-og-202507.png",i="portaly-og-202506-en.png"},42141:(e,t,a)=>{"use strict";a.d(t,{Ay:()=>o,cT:()=>r,is:()=>i});let r=e=>({pending:e.formatMessage({defaultMessage:"未付款",id:"admin.product.未付款"}),paid:e.formatMessage({defaultMessage:"已付款",id:"admin.product.已付款"}),refund:e.formatMessage({defaultMessage:"已退款",id:"admin.product.已退款"}),failed:e.formatMessage({defaultMessage:"付款失敗",id:"admin.product.付款失敗"}),liquid:e.formatMessage({defaultMessage:"已入帳",id:"admin.product.已入帳"}),tracked:e.formatMessage({defaultMessage:"審核中",id:"admin.product.審核中"})}),i=e=>({tracked:{label:e.formatMessage({defaultMessage:"審核中",id:"admin.profit.審核中"}),description:e.formatMessage({defaultMessage:"交易完成,需要系統確認此交易是否成立",id:"admin.profit.交易完成,需要系統確認此交易是否成立"})},pending:{label:e.formatMessage({defaultMessage:"審核中",id:"admin.profit.審核中"}),description:e.formatMessage({defaultMessage:"交易完成,需要系統確認此交易是否成立",id:"admin.profit.交易完成,需要系統確認此交易是否成立"})},paid:{label:e.formatMessage({defaultMessage:"獎金確認",id:"admin.profit.獎金確認"}),description:e.formatMessage({defaultMessage:"交易已確認,進入金流管理清單",id:"admin.profit.交易已確認,進入金流管理清單"})},liquid:{label:e.formatMessage({defaultMessage:"已入帳",id:"admin.product.已入帳"}),description:e.formatMessage({defaultMessage:"此金額目前可提領",id:"admin.profit.此金額目前可提領"})},failed:{label:e.formatMessage({defaultMessage:"交易失敗",id:"admin.profit.交易失敗"}),description:null},refund:{label:e.formatMessage({defaultMessage:"交易失敗",id:"admin.profit.交易失敗"}),description:null}}),o={pending:"未付款",paid:"未結算",refund:"已退款",liquid:"已入帳",failed:"付款失敗",tracked:"審核中"}},65270:(e,t,a)=>{"use strict";a.d(t,{A:()=>n,a:()=>o});var r=a(44698),i=a(5560);let o=[{slug:"taiccaglobal",profileId:"LN6vpOjEr6bx0vvm1G53"},{slug:"yourator",profileId:"ptUVfMLR9nRXZa78rsD3"}],n=[{slug:"cwl",id:"SUUqEYYJVEkocr2FWYvX",month:2},{slug:"riven",id:"aWhdUBZzOVy0EodMHFSG",month:3},{slug:"lazyabby",id:"MZvyJ5VGMlFL95qucdfe",month:2},{slug:"goldenmelody",id:"AIOCiQVilS4yLRkzxY8K",month:2},{slug:"aapdgo",id:"2VwDmGS9nVnjFVPCjTpc",month:3},{slug:"taiccaglobal",id:"LN6vpOjEr6bx0vvm1G53",month:12,bonusQuota:100,autoGroupMember:!0,withMemberStats:!0,banner:r.A,bannerRatio:2,withTemplates:["artist.professional.temp","company.temp"],templateText:"### 兩款型錄模板 | 打造您的專業形象\n\nA 模板提供音樂串流平台列表區,建議音樂人選用以打造專屬EPK;B 模板設有Showreel區ï¼
1Œå»ºè­°å…¬å¸æˆ–團隊選用以呈現業務實績。敬請依需求選用合適版型。"},{slug:"yourator",id:"ptUVfMLR9nRXZa78rsD3",month:1,banner:i.A,bannerRatio:1,withTemplates:["youratorAIcareerfair_pm","youratorAIcareerfair_designer","youratorAIcareerfair_marketing"],templateText:"### Yourator | 2026 AI 職涯博覽會\n\n累積近 10 年的博覽會經驗、累積參與人數突破 60,000 人次,Yourator AI 職涯博覽會為全台規模最大、最具指標性的職涯盛會。"}]},48030:(e,t,a)=>{"use strict";a.d(t,{w:()=>r});let r="none"},18747:(e,t,a)=>{"use strict";a.d(t,{BF:()=>o,Fs:()=>d,M1:()=>l,T9:()=>c,UM:()=>m,Yl:()=>s,b2:()=>p,hw:()=>n,nW:()=>g,pR:()=>f,qw:()=>u,tz:()=>i,yy:()=>r});let r="Portaly",i="Portaly:專屬網紅、創作者的成長與變現工具",o="Portaly 傳送門是專屬網紅、創作者的個人網站與流量變現工具。Portaly 生態系擁有專屬 Vibe Coding 線上交易系統 Portaly Payment Agent、線上設立公司系統 Portaly Foundry、聯盟行銷機制的分潤推廣系統 Portaly Rewards,助您完成內容經營與商務變現!",n="Portaly Payment",s="Portaly Payment|台灣 AI 產品金流串接,三步驟開始收款",l="台灣 vibe coder 首選金流工具。串接信用卡、電子發票,AI Agent 自動完成所有設定。支援 Claude Code、Cursor、Codex,3 步驟立即開始收款。",d="台灣 AI 產品金流串接,三步驟開始收款 | Portaly Payment",c="給 vibe coder 的金流引擎。串接信用卡、電子發票,AI Agent 自動完成所有設定。支援 Claude Code、Cursor、Codex。",u="2026-08-19T12:00:00+08:00",p="Portaly 傳送門是專屬網紅、創作者的個人網站與流量變現工具,30 秒註冊、終身免費使用!",m="Portaly 是專屬網紅、創作者的成長與變現工具,30 秒註冊、終身免費使用!",g="Portaly 是專屬網紅、創作者的變現工具,只要 30 秒完成註冊,終身免費使用!",f="Portaly empowers creators to turn content into 
1income. Build a custom mobile site, grow your audience, sell digital products, and monetize traffic—all in this free, AI-powered platform."},26919:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});let r=(0,a(96540).createContext)({addSubFields:()=>{},clearSubFields:()=>{}})},73048:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});let r=function(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return fetch(...t).then(e=>{if(e.status>=400)throw Error(e.statusText);return e.json()})};r.onLoad=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:()=>{};return function(){for(var t=arguments.length,a=Array(t),i=0;i<t;i++)a[i]=arguments[i];return r(...a).then(t=>(e(),t))}};let i=r},67447:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});let r=(e,t)=>"zh"===e?t:"".concat(t,"_").concat(e)},56726:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});let r=(e,t)=>t.startsWith(".")?e.replace(/[^.]+\.[^.]+$/,t):e.replace(/[^.]+$/,t)},88590:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(33650),i=a(22405);let o=e=>"number"==typeof e||"string"==typeof e&&!isNaN(e),n=e=>{let t=null;if(e instanceof i.Timestamp)t=e.toDate();else if(o(null==e?void 0:e.nanoseconds)&&o(null==e?void 0:e.seconds))t=new i.Timestamp(+e.seconds,+e.nanoseconds).toDate();else if(o(null==e?void 0:e._nanoseconds)&&o(null==e?void 0:e._seconds))t=new i.Timestamp(+e._seconds,+e._nanoseconds).toDate();else if(e instanceof Date)t=e;else if(o(e)){let a=Number(e);Number.isFinite(a)&&(t=new Date(Math.abs(a)>=1e12?a:1e3*a))}else if("string"==typeof e){let a=Date.parse(e);Number.isNaN(a)||(t=new Date(a))}return(0,r.A)(t)?t:null}},94254:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var r=a(86925);let i=(e,t,a)=>!r.f[t]||null!=e&&!!e[t]||!!a&&null!=e&&!!e[a]},99867:(e,t,a)=>{"use strict";a.d(t,{$F:()=>f,GW:()=>h,Qh:()=>c,Tv:()=>s,bu:()=>p,p2:()=>d,qS:()=>m,ul:()=>M,vY:()=>u,wZ:()=>l}),a(63081);var r=a(48030),i=a(65606);let o=e=>e.replace(/\/+$/,""),n=()=>{try{return JSON.parse('{"apiKey":"AIzaSyBoGsX5nv7EXwB4IV37Jwxzmz3QMbvhtpI","authDomain":"portaly-ca9e1.firebaseapp.com","databaseURL":"https://portaly-ca9e1.firebaseio.com","projectId":"portaly-ca9e1","storageBucket":"portaly-ca9e1.appspot.com","messagingSenderId":"732722605559","appId":"1:732722605559:web:839613a5bb66c4c17ed2f2","measurementId":"G-22RPK6D2NL"}').projectId}catch(e){return}},s=()=>o("https://rewards.portaly.cc"),l=()=>i.env.NEXT_PUBLIC_PORTALY_REWARDS_PROJECT_ID||n()||"",d=e=>{let t=Array.isArray(e)?e[0]:e;return!!t&&("portaly-rewards"===t||t===i.env.NEXT_PUBLIC_PORTALY_REWARDS_PROJECT_ID||t===n())},c="/dashboard?intent=withdraw",u="/dashboard?tab=profitProducts",p=()=>"".concat(s()).concat(c),m=e=>"".concat(s()).concat(u).concat(e?"&offerId=".concat(encodeURIComponent(e)):""),g=()=>"".concat(s(),"/auth/sso/callback"),f=e=>{let t=Array.isArray(e)?e[0]:e;if(!t)return!1;try{return new URL(t).href===new URL(g()).href}catch(e){return!1}},h=function(){let{returnTo:e="/dashboard",silent:t=!0}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=g(),i=new URL("/auth/sso",window.location.origin);return i.searchParams.set("client_id",l()),i.searchParams.set("redirect_uri",a),i.searchParams.set("state",e),t&&i.searchParams.set("prompt",r.w),i.toString()},b=e=>Array.isArray(e)?e[0]:e,M=function(){let{invitationId:e,ref:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=new URLSearchParams({tab:"partner",view:"partner"}),r=b(e),i=b(t);return r&&a.set("invitationId",r),i&&a.set("ref",i),"/dashboard?".concat(a.toString())}},43230:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});let r=e=>"".concat(e,"-uploader")},79198:(e,t,a)=>{"use strict";a.d(t,{A:()=>o,I:()=>i});var r=a(86715);let i=(e,t)=>{if(!t)return e;let a=new URL(e,window.location.origin);return a.searchParams.set("id",t),"".concat(a.pathname).concat(a.search)},o=e=>{let{query:t}=(0,r.useRouter)();return i(e,t.id)}},23753:(e,t,a)=>{"use strict";a.d(t,{A:()=>s,Q:()=>n});var r=a(96540),i=a(49785);let o=(e,t)=>Array.isArray(e)?e.some(e=>o(e,t)):"boolean"==typeof e?!!t===e:e instanceof RegExp?e.test(t):t==e,n=(e,t)=>Array.isArray(null==e?void 0:e[0])?e.every((e,a)=>o(e[1],null==t?void 0:t[a])):o(e[1],t),s=(e,t)=>{let a=Array.isArray(null==e?void 0:e[0]),o=(0,i.FH)({control:t,name:a?e.map(e=>e[0]):null==e?void 0:e[0],disabled:!e});return(0,r.useMemo)(()=>!e||n(e,o),[e,o])}},37496:(e,t,a)=>{"use strict";a.d(t,{A:()=>
1o});var r=a(96540),i=a(10767);let o=()=>{var e;let t=(0,i.A)()||null,a=null!==(e=null==t?void 0:t.currentUser)&&void 0!==e?e:null,o=(0,r.useCallback)((e,t)=>{let a=new Headers(e.headers);return a.set("Authorization","Bearer ".concat(t)),{...e,headers:a}},[]),n=(0,r.useCallback)(async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return a?a.getIdToken(e):null},[a]),s=(0,r.useCallback)(async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!a)throw Error("User is not authenticated");let r=await n();if(!r)throw Error("Failed to acquire bearer token");let i=await fetch(e,o(t,r));if(i.ok)return i.json();let s=Error(await i.text());throw s.response=i,s},[o,a,n]);return{auth:t,currentUser:a,getBearerToken:n,fetchWithAuth:s}}},82552:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(96540),i=a(14120),o=a(94254);let n=(e,t)=>{let{data:a,betaTester:n}=(0,r.useContext)(i.A);return(0,o.A)(n,e,t)?{isGranted:!0,loading:!1}:void 0===a?{isGranted:void 0,loading:!0}:{isGranted:!1,loading:!1}}},57734:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(6442),i=a(84316),o=a(9341);let n=()=>{let{locale:e}=(0,r.A)();return(0,i.A)("en"===e?o.D:o.c)}},23488:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var r=a(79198),i=a(99867);let o=e=>{let t=(0,r.A)(e);return()=>{window.open((0,i.GW)({returnTo:t}),"_blank","noopener")}}},63959:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var r=a(47378);let i=e=>(0,r.A)(e,"slug")},51216:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});var r=a(96540),i=a(14299),o=i.Bd?r.useLayoutEffect:r.useEffect,n={x:0,y:0,width:0,height:0,top:0,left:0,bottom:0,right:0};let s=i.Bd&&void 0!==window.ResizeObserver?function(){var e=(0,r.useState)(null),t=e[0],a=e[1],i=(0,r.useState)(n),s=i[0],l=i[1],d=(0,r.useMemo)(function(){return new window.ResizeObserver(function(e){if(e[0]){var t=e[0].contentRect;l({x:t.x,y:t.y,width:t.width,height:t.height,top:t.top,left:t.left,bottom:t.bottom,right:t.right})}})},[]);return o(function(){if(t)return d.observe(t),function(){d.disconnect()}},[t]),[a,s]}:function(){return[i.lQ,n]}},72890:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>rR});var r=a(2445),i=a(27006),o=a(91106),n=a.n(o),s=a(86715),l=a(96540),d=a(6442),c=a(17194),u=a(92227),p=a(19082),m=a(14120),g=a(47378);let f=e=>{let{children:t}=e,a=(0,s.useRouter)(),{profileId:i}=(0,l.useContext)(m.A),o=(0,g.A)(i,"locale"),n="en"===o;return((0,l.useEffect)(()=>{void 0!==o&&n&&a.replace({pathname:"/admin",query:a.query})},[o,n,a]),void 0===o||n)?(0,r.Y)(c.A,{}):(0,r.Y)(r.FK,{children:t})};var h=a(60121),b=a(59324),M=a(13302),S=a(33877),v=a(68681),y=a(5690),x=a(323),Y=a(647),w=a(57489),C=a(7247),A=a(7817),k=a(85247),F=a(41479);let D={submitted:"審核中...",verified:"已通過審核",rejected:"審核未通過,原因如下:"},T=e=>{var t;let{profileId:a,planScopeIds:o}=e,{data:n,status:s,update:d}=(0,Y.A)(a),c=(0,w.iM)(),u=(0,A.A)(),[p,m]=(0,l.useState)(!1),g=(0,F.gV)(n,"payment"),f=null==g?void 0:g.status,h="verified"===f,b="submitted"===f||h,{hasActivePlan:M,isLoading:T,error:I}=(0,C.A)(h?void 0:(null==o?void 0:o.length)?o:a),P=!h&&!T&&!(I||!0===M),R=!!(null==u?void 0:u.isSuperAdmin),B=(null==g?void 0:g.status)==="verified"&&(null==n?void 0:n.type)==="company"||R||(null!==(t=null==c?void 0:c.tierIndex)&&void 0!==t?t:-1)>=k.fb.PREMIUM&&!!(null==c?void 0:c.cardId),z=f?D[f]||"":"Payment 模式啟用前需完成金流審核,請填寫以下資料送出申請。\n身份人工認證需 7 - 15 個工作日,請耐心等待。";return"loading"===s?(0,r.Y)(i.Box,{py:6,textAlign:"center",color:"gray.500",children:"載入中…"}):(0,r.FD)(i.Stack,{spacing:4,children:[(0,r.FD)(i.Stack,{direction:{base:"column",md:"row"},alignItems:{md:"center"},children:[(0,r.Y)(i.Stack,{flex:1,children:"rejected"===f?(0,r.FD)(r.FK,{children:[(0,r.FD)(i.Text,{whiteSpace:"pre-wrap",fontWeight:"medium",children:[D.rejected,"\n\n",(0,r.Y)(i.Text,{as:"span",color:"red.500",children:null==g?void 0:g.reason})]}),(0,r.Y)(x.A,{scenario:"payment",variant:"inline"})]}):(0,r.Y)(i.Text,{whiteSpace:"pre-wrap",fontWeight:"medium",children:z})}),b&&!p&&(0,r.Y)(i.Button,{size:"sm",variant:"outline",leftIcon:(0,r.Y)(S.Yvo,{}),onClick:()=>m(!0),children:h?"修改資料":"開始補件"})]}),(0,r.Y)(i.Divider,{}),b&&!p?(0,r.Y)(v.A,{value:{...n,...g||{}},censored:!0,isTapPay:!1,isCandidate:!1,profileId:a,scenario:"payment"}):(0,r.Y)(y.A,{defaultValues:{...n,businessDescription:(0,F.xe)(n,"payment")},canApplyCompany:B,isTapPay:!1,isCandidate:!1,isTapPayVerifiedByVen
1dor:!1,isVerified:h,isSubmitted:b,isAdvanced:!1,isAdminEdit:!1,scenario:"payment",contentGate:P?(0,r.Y)(x.A,{scenario:"payment",variant:"alert"}):null,onSubmit:async(e,t)=>{await d({...e,payment:t}),m(!1)},onCancel:()=>m(!1)}),(0,r.Y)(i.HStack,{pt:2,children:(0,r.Y)(i.Text,{fontSize:"xs",color:"gray.500",children:"*身份資料同步用於 Portaly 金流提款,但兩邊審核狀態獨立。"})})]})};var I=a(5712),P=a(22405),R=a(77666);let B=e=>{let t=(0,R.A)(),[a,r]=(0,l.useState)({hasPlans:void 0,resolvedFor:void 0}),i=(0,l.useRef)(!1),[o,n]=(0,l.useState)(!0);return(0,l.useEffect)(()=>{if(!t||!e)return;i.current||n(!0);let a=(0,P.query)((0,P.collection)(t,"creatorSubscriptionPlans"),(0,P.where)("profileId","==",e),(0,P.limit)(1)),o=t=>{r({hasPlans:t,resolvedFor:e}),i.current=!0,n(!1)};return(0,P.onSnapshot)(a,e=>o(!e.empty),()=>o(!1))},[t,e]),{hasPlans:a.hasPlans,resolvedFor:a.resolvedFor,isLoading:o&&void 0===a.hasPlans}};var z=a(11335);let O=e=>{var t,a;let r=(0,z.A)(),{data:i,isLoading:o}=(0,b.Ay)(e?"/api/creator-subscription/integration-status?profileId=".concat(e):null,r,{refreshInterval:15e3,revalidateOnFocus:!1});return{hasCompletedTestCheckout:null==i?void 0:null===(t=i.data)||void 0===t?void 0:t.hasCompletedTestCheckout,hasAnyCheckoutSession:null==i?void 0:null===(a=i.data)||void 0===a?void 0:a.hasAnyCheckoutSession,isLoading:o}},L=e=>{let t=(0,R.A)(),[a,r]=(0,l.useState)({pendingPayout:null,isLoading:!0});return(0,l.useEffect)(()=>{if(t&&e)return r({pendingPayout:null,isLoading:!0}),(0,P.onSnapshot)((0,P.doc)(t,"profiles",e,"orderStats","creatorSubscription"),e=>{var t;return r({pendingPayout:Number((null===(t=e.data())||void 0===t?void 0:t.balance)||0),isLoading:!1})},()=>r({pendingPayout:null,isLoading:!1}))},[t,e]),a};var N=a(54225);let E=e=>e?{title:e.title,updateTitle:e.title,bodyText:e.modalBodyText,updateBodyText:e.modalUpdateBodyText,installPrompt:e.installPrompt,updatePrompt:e.updatePrompt,footerNote:e.footerNote}:{},W=["portaly-payment","portaly-payment-integration","portaly-product","portaly-overview","portaly-affiliate"],H=e=>[e?"portaly-payment-integration":"portaly-payment","portaly-product","portaly-overview","portaly-affiliate"],U=e=>({"portaly-payment":{skillName:"portaly-payment",shortName:e.formatMessage({defaultMessage:"訂閱收款",id:"admin.creatorSubscription.skill.payment.短名"}),overviewIcon:h.VNz,overviewDescription:e.formatMessage({defaultMessage:"幫產品接上方案與金流,收款靠它完成",id:"admin.creatorSubscription.skill.payment.overviewDescription"}),isRequired:!0},"portaly-payment-integration":{skillName:"portaly-payment-integration",shortName:e.formatMessage({defaultMessage:"結帳串接",id:"admin.creatorSubscription.skill.paymentIntegration.短名"}),overviewIcon:h.VNz,overviewDescription:e.formatMessage({defaultMessage:"工程串接專用:讀方案、建結帳、驗回呼",id:"admin.creatorSubscription.skill.paymentIntegration.overviewDescription"}),isRequired:!0,card:{icon:h.VNz,iconBg:"GUI.green.50",iconColor:"GUI.green.700",title:e.formatMessage({defaultMessage:"Payment 串接 Skill",id:"admin.creatorSubscription.skill.paymentIntegration.標題"}),description:e.formatMessage({defaultMessage:"給工程的精簡版 Skill——用串接專用金鑰讀方案、建立結帳、驗證回呼;方案、價格與折扣碼仍由你在後台管理。",id:"admin.creatorSubscription.skill.paymentIntegration.描述"}),modalBodyText:e.formatMessage({defaultMessage:"複製下方的 prompt 給工程的 Coding Agent,他會協助你完成串接。",id:"admin.creatorSubscription.onboarding.integrationModal.說明"}),modalUpdateBodyText:e.formatMessage({defaultMessage:"複製下方的 prompt 給工程的 Coding Agent,他會協助你完成串接。",id:"admin.creatorSubscription.onboarding.integrationModal.說明"}),installPrompt:e.formatMessage({defaultMessage:"請幫我執行 `npx skills add portaly-ai/portaly-skills --skill portaly-payment-integration` 來安裝 Portaly Payment 串接 Skill,完成後請讀取安裝好的 SKILL.md,依其指示完成結帳串接。",id:"admin.creatorSubscription.skill.paymentIntegration.installPrompt"}),updatePrompt:e.formatMessage({defaultMessage:"請幫我執行 `npx skills add portaly-ai/portaly-skills --skill portaly-payment-integration` 來更新 Portaly Payment 串接 Skill,完成後請讀取更新好的 SKILL.md,依其指示完成結帳串接。",id:"admin.creatorSubscription.skill.paymentIntegration.updatePrompt"}),footerNote:e.formatMessage({defaultMessage:"安裝後你的 Coding Agent 會自動回報版本,後台即顯示安裝狀態。",id:"admin.creatorSubscription.apiOverview.footerNote"})}},"portaly-product":{skillName:"portaly-product",shortName:e.formatMessage({defaultMessage:"商品管理",id:"admin.creatorSubscription.skill.product.短名"}),overviewIcon:h.mzj,overviewDescription:e.formatMessage({defaultMessage:"在自己的網站賣 Portaly 傳送門的數位商品",id:"admin.creatorSubscription.skill.product.overviewDescription"}),isRequired:!1,card:{icon:h.mzj,iconBg:"pink.50",iconColor:"pink.600",title:e.formatMessage({defaultMessage:"數位商品管理 Skill",id:"admin.creatorSubscription.apiOverview.product.標題"}),description:e.formatMessage({defaultMessage:"讓你的 Coding Agent 串接 Portaly 數位商品——在你自己的網站列出商品、建立單品或組合結帳,付款、寄信與訂單由 Portaly 託管完成。",
1id:"admin.creatorSubscription.apiOverview.product.描述"}),modalBodyText:e.formatMessage({defaultMessage:"複製下方的 prompt 給你的 Coding Agent,安裝後它就能在你的網站串接 Portaly 數位商品結帳。",id:"admin.creatorSubscription.apiOverview.product.modal說明"}),modalUpdateBodyText:e.formatMessage({defaultMessage:"複製下方的 prompt 給你的 Coding Agent,安裝後它就能在你的網站串接 Portaly 數位商品結帳。",id:"admin.creatorSubscription.apiOverview.product.modal更新說明"}),installPrompt:e.formatMessage({defaultMessage:"請幫我執行 `npx skills add portaly-ai/portaly-skills --skill portaly-product` 來安裝 Portaly 數位商品 Skill,完成後請讀取安裝好的 SKILL.md,依照其中的 workflow 完成商品列表與結帳串接。",id:"admin.creatorSubscription.apiOverview.product.installPrompt"}),updatePrompt:e.formatMessage({defaultMessage:"請幫我執行 `npx skills add portaly-ai/portaly-skills --skill portaly-product` 來更新 Portaly 數位商品 Skill,完成後請讀取更新好的 SKILL.md,依照其中的 workflow 完成商品列表與結帳串接。",id:"admin.creatorSubscription.apiOverview.product.updatePrompt"}),footerNote:e.formatMessage({defaultMessage:"安裝後你的 Coding Agent 會自動回報版本,後台即顯示安裝狀態。",id:"admin.creatorSubscription.apiOverview.footerNote"})}},"portaly-overview":{skillName:"portaly-overview",shortName:e.formatMessage({defaultMessage:"API 總覽",id:"admin.creatorSubscription.skill.overview.短名"}),overviewIcon:h.D1P,overviewDescription:e.formatMessage({defaultMessage:"讓 Agent 讀懂所有開放 API 與文件",id:"admin.creatorSubscription.skill.overview.overviewDescription"}),isRequired:!1,card:{icon:h.tZt,iconBg:"GUI.green.50",iconColor:"GUI.green.700",title:e.formatMessage({defaultMessage:"API 總覽 Skill",id:"admin.creatorSubscription.apiOverview.overview.標題"}),description:e.formatMessage({defaultMessage:"讓你的 Coding Agent 掌握 Portaly Payment 所有開放的 API 與文件 ⎯ 想自建會員後台、查詢訂閱與訂單紀錄,從這裡開始。",id:"admin.creatorSubscription.apiOverview.overview.描述"}),modalBodyText:e.formatMessage({defaultMessage:"複製下方的 prompt 給你的 Coding Agent,安裝後它就能查閱 Portaly Payment 所有開放的 API 與文件。",id:"admin.creatorSubscription.apiOverview.overview.modal說明"}),modalUpdateBodyText:e.formatMessage({defaultMessage:"複製下方的 prompt 給你的 Coding Agent,安裝後它就能查閱 Portaly Payment 所有開放的 API 與文件。",id:"admin.creatorSubscription.apiOverview.overview.modal更新說明"}),installPrompt:e.formatMessage({defaultMessage:"請幫我執行 `npx skills add portaly-ai/portaly-skills --skill portaly-overview` 來安裝 Portaly API 總覽 Skill,完成後請讀取安裝好的 SKILL.md,即可得知 Portaly Payment 所有開放的 API 與對應文件。",id:"admin.creatorSubscription.apiOverview.overview.installPrompt"}),updatePrompt:e.formatMessage({defaultMessage:"請幫我執行 `npx skills add portaly-ai/portaly-skills --skill portaly-overview` 來更新 Portaly API 總覽 Skill,完成後請讀取更新好的 SKILL.md,即可得知 Portaly Payment 所有開放的 API 與對應文件。",id:"admin.creatorSubscription.apiOverview.overview.updatePrompt"}),footerNote:e.formatMessage({defaultMessage:"安裝後你的 Coding Agent 會自動回報版本,後台即顯示安裝狀態。",id:"admin.creatorSubscription.apiOverview.footerNote"})}},"portaly-affiliate":{skillName:"portaly-affiliate",shortName:e.formatMessage({defaultMessage:"產品推廣",id:"admin.creatorSubscription.skill.promotion.短名"}),overviewIcon:h.SvN,overviewDescription:e.formatMessage({defaultMessage:"串接完成頁,讓買過的用戶幫你賣",id:"admin.creatorSubscription.skill.promotion.overviewDescription"}),isRequired:!1,card:{icon:h.SvN,iconBg:"GUI.green.50",iconColor:"GUI.green.700",title:e.formatMessage({defaultMessage:"產品推廣 Skill",id:"admin.creatorSubscription.promotion.skill.標題"}),description:e.formatMessage({defaultMessage:"讓你的 Coding Agent 在你的產品裡串接產品推廣——買過的用戶取得專屬推廣連結分享出去,成交後系統自動拆帳。",
1id:"admin.creatorSubscription.promotion.skill.描述"}),modalBodyText:e.formatMessage({defaultMessage:"複製下方的 prompt 給你的 Coding Agent,他會協助你完成安裝。",id:"admin.creatorSubscription.installSkill.說明"}),modalUpdateBodyText:e.formatMessage({defaultMessage:"複製下方的 prompt 給你的 Coding Agent,他會協助你完成更新。",id:"admin.creatorSubscription.installSkill.更新說明"}),installPrompt:e.formatMessage({defaultMessage:"請幫我執行 `npx skills add portaly-ai/portaly-skills --skill portaly-affiliate` 來安裝 產品推廣 Skill,完成後讀取安裝好的 SKILL.md 並依其指示完成設定。",id:"admin.creatorSubscription.promotion.skill.installPrompt"}),updatePrompt:e.formatMessage({defaultMessage:"請幫我執行 `npx skills add portaly-ai/portaly-skills --skill portaly-affiliate` 來更新 產品推廣 Skill,完成後讀取更新好的 SKILL.md 並依其指示完成設定。",id:"admin.creatorSubscription.promotion.skill.updatePrompt"}),footerNote:e.formatMessage({defaultMessage:"安裝後你的 Coding Agent 會自動回報版本,後台即顯示安裝狀態。",id:"admin.creatorSubscription.apiOverview.footerNote"})}}});var K=a(73048),_=a(88590);let j=e=>e.split(".").map(e=>Number(e)||0),G=(e,t)=>{let a=j(e),r=j(t),i=Math.max(a.length,r.length);for(let e=0;e<i;e+=1){var o,n;let t=null!==(o=a[e])&&void 0!==o?o:0,i=null!==(n=r[e])&&void 0!==n?n:0;if(t!==i)return t<i}return!1},V=e=>{let{isLoading:t,installedVersion:a,latestVersion:r}=e;return t?"unknown":a?r&&G(a,r)?"outdated":"current":"missing"},q=(e,t)=>{var a,r,i,o;let{data:n,isLoading:s}=(0,N.A)("/api/creator-subscription/skill-versions",K.A),l=null==n?void 0:null===(a=n.data)||void 0===a?void 0:a[t],d=null==e?void 0:null===(r=e[t])||void 0===r?void 0:r.version,c=null!==(o=(0,_.A)(null==e?void 0:null===(i=e[t])||void 0===i?void 0:i.updatedAt))&&void 0!==o?o:void 0;return{status:V({isLoading:s,installedVersion:d,latestVersion:l}),installedVersion:d,installedAt:c,latestVersion:l}},$=(e,t)=>{if(!t)return;let a=!1,r=!1;for(let o of W){var i;let n=null==e?void 0:null===(i=e[o])||void 0===i?void 0:i.version,s=t[o];n&&s&&(G(n,s)?a=!0:r=!0)}return a?"outdated":r?"current":void 0},J=()=>{let{data:e,isLoading:t}=(0,N.A)("/api/creator-subscription/skill-versions",K.A);return{latestVersions:null==e?void 0:e.data,isLoading:t}},Z=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=q(e,"portaly-payment"),r=q(e,"portaly-payment-integration"),i={"portaly-payment":a,"portaly-payment-integration":r,"portaly-product":q(e,"portaly-product"),"portaly-overview":q(e,"portaly-overview"),"portaly-affiliate":q(e,"portaly-affiliate")};return{skills:H(t).map(e=>{let t=i[e];return{skillName:e,status:t.status,installedVersion:t.installedVersion,latestVersion:t.latestVersion}}),statusOf:e=>i[e].status}};var X=a(11737);let Q=e=>{let t=(0,R.A)(),[a,r]=(0,l.useState)(),[i,o]=(0,l.useState)();return(0,l.useEffect)(()=>{if(!t||!e)return;let a=(0,P.doc)(t,"profiles",e);return(0,P.onSnapshot)(a,e=>{var t,a;if(!e.exists())return;let i=e.data();r(null!==(t=i.skillVersions)&&void 0!==t?t:void 0),o(null!==(a=i.merchantSkillVersions)&&void 0!==a?a:void 0)})},[e,t]),{primarySkillVersions:a,merchantSkillVersions:i}};var ee=a(46479),et=a(79871),ea=a(96007);let er=(e,t)=>"payment_upgrade_prompt_viewed:".concat(e,":").concat(t),ei=(e,t)=>{try{return"true"===window.sessionStorage.getItem(er(e,t))}catch(e){return!1}},eo=(e,t)=>{try{window.sessionStorage.setItem(er(e,t),"true")}catch(e){}},en=e=>{let{profileId:t,touchpoint:a,accountState:r,trialDaysLeft:i=null,daysSinceTrialEnd:o=null,offerId:n=null,dedupe:s=!1}=e,{emit:d}=(0,ee.A)(),c=(0,l.useRef)(!1),u=(0,l.useMemo)(()=>({touchpoint:a,account_state:r,offer:n,profile_id:t||null,..."B"===r&&{trial_days_left:i},..."C"===r&&{days_since_trial_end:o}}),[a,r,n,t,i,o]),p=(0,l.useCallback)(()=>{if(s){if(c.current||ei(t,a))return;c.current=!0,eo(t,a)}d(ea.XN,u)},[s,d,t,a,u]),m=(0,l.useCallback)(()=>{d(ea.mZ,u)},[d,u]);return{viewedRef:(0,et.A)(p),emitViewed:p,emitCtaClicked:m}};var es=a(37496),el=a(82552),ed=a(63972);let ec=()=>"https://portaly.ai";var eu=a(8519),ep=a(49177);let em=(e,t)=>
1{if(!e)return"-";let a=new Date(e);return Number.isNaN(a.getTime())?"-":new Intl.DateTimeFormat("en"===t?"en-US":"zh-TW",{timeZone:ep.$i,year:"numeric",month:"2-digit",day:"2-digit"}).format(a)},eg=(e,t)=>{if(!e)return"-";let a=new Date(e);return Number.isNaN(a.getTime())?"-":new Intl.DateTimeFormat("en"===t?"en-US":"zh-TW",{timeZone:ep.$i,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1}).format(a)},ef=(e,t,a)=>{if("number"!=typeof e||Number.isNaN(e))return"-";try{return new Intl.NumberFormat("en"===a?"en-US":"zh-TW",{style:"currency",currency:t||"TWD",maximumFractionDigits:0}).format(e)}catch(t){return"".concat(e)}},eh=(e,t)=>{if(!(e instanceof Error)||!e.message)return t;try{let t=JSON.parse(e.message);if("string"==typeof(null==t?void 0:t.error))return t.error}catch(e){}return e.message},eb=e=>{let{apiKey:t,locale:a,onDeactivate:o,isDeactivating:n}=e,s=(0,d.A)(),l="active"===t.status?"green.500":"gray.500";return(0,r.Y)(i.Box,{bg:"white",border:"1px solid",borderColor:"gray.200",borderRadius:"2xl",p:6,children:(0,r.FD)(i.Stack,{spacing:5,children:[(0,r.FD)(i.Flex,{align:{base:"flex-start",md:"center"},justify:"space-between",direction:{base:"column",md:"row"},gap:4,children:[(0,r.FD)(i.Stack,{spacing:2,children:[(0,r.FD)(i.HStack,{spacing:3,children:[(0,r.FD)(i.Text,{fontSize:"xl",fontWeight:"700",color:"gray.800",children:[t.keyPrefix,"******"]}),(0,r.Y)(i.Badge,{backgroundColor:"test"===t.mode?"orange.500":"blue.500",color:"white",borderRadius:"full",px:3,py:1,children:"test"===t.mode?"Test":"Live"}),(0,r.Y)(i.Badge,{backgroundColor:l,color:"white",borderRadius:"full",px:3,py:1,children:s.formatMessage({defaultMessage:"active"===t.status?"啟用中":"已停用",id:"active"===t.status?"admin.creatorSubscription.apiKey.啟用中":"admin.creatorSubscription.apiKey.已停用"})})]}),(0,r.Y)(i.Text,{color:"gray.500",children:s.formatMessage({defaultMessage:"Portaly 不會再次顯示完整的金鑰,請使用金鑰前綴辨識目前綁定中的金鑰。",id:"admin.creatorSubscription.apiKey.keyPrefix說明"})})]}),"active"===t.status?(0,r.Y)(i.Button,{colorScheme:"red",variant:"outline",onClick:o,isLoading:n,children:s.formatMessage({defaultMessage:"停用",id:"admin.creatorSubscription.apiKey.停用"})}):null]}),(0,r.FD)(i.SimpleGrid,{columns:{base:1,md:3},spacing:4,children:[(0,r.FD)(i.Stack,{spacing:1,children:[(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.500",children:s.formatMessage({defaultMessage:"建立於",id:"admin.creatorSubscription.apiKey.建立於"})}),(0,r.Y)(i.Text,{fontWeight:"700",color:"gray.800",children:em(t.createdAt,a)})]}),(0,r.FD)(i.Stack,{spacing:1,children:[(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.500",children:s.formatMessage({defaultMessage:"更新於",id:"admin.creatorSubscription.apiKey.更新於"})}),(0,r.Y)(i.Text,{fontWeight:"700",color:"gray.800",children:em(t.updatedAt,a)})]}),(0,r.FD)(i.Stack,{spacing:1,children:[(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.500",children:s.formatMessage({defaultMessage:"最後使用時間",id:"admin.creatorSubscription.apiKey.最後使用時間"})}),(0,r.Y)(i.Text,{fontWeight:"700",color:"gray.800",children:em(t.lastUsedAt,a)})]})]})]})})};var eM=a(38869);let eS=e=>{let{...t}=e;return(0,r.Y)(i.VStack,{spacing:4,justifyContent:"center",textAlign:"center",color:"gray.400",...t,children:(0,r.Y)(i.Flex,{align:"center",justify:"center",w:"72px",h:"72px",borderRadius:"full",border:"1px solid",borderColor:"green.100",bg:"green.50",children:(0,r.Y)(i.Icon,{as:eM.lZI,boxSize:9,color:"green.500"})})})};var ev=a(87260),ey=a(65011),ex=a(1666),eY=a(91486);let ew=k.MH[k.fb.PREMIUM][0],eC=e=>{var t,a,o,n;let{isOpen:s,onClose:l,activeBonus:c,entryPoint:u=eY.A.PaymentStatusBar,tracker:p="upgrade.paymentStatusBar",offerId:m=null,title:g,secondaryAction:f}=e,h=(0,d.A)(),b=(0,ex.Ay)(h),M=null==c?void 0:null===(t=c.bonus)||void 0===t?void 0:t[0],S=null==c?void 0:null===(a=c.bonus)||void 0===a?void 0:a[1],v=M?null===(o=b[M])||void 0===o?void 0:o.label:void 0,y=S?null===(n=b[S])||void 0===n?void 0:n.label:void 0,x=!!(v||y),Y=v||y,w=[h.formatMessage({defaultMessage:"無上限新增付款方案,開更多收入來源",id:"admin.creatorSubscription.upgradeIntro.benefit.plans"}),h.formatMessage({defaultMessage:"建立正式 (Live) API Key,串接正式環境",id:"admin.creatorSubscription.upgradeIntro.benefit.liveKey"}),h.formatMessage({defaultMessage:"金流手續費 6%",id:"admin.creatorSubscription.upgradeIntro.benefit.fee"})];return(0,r.FD)(i.Modal,{isOpen:s,onClose:l,isCentered:!0,portalProps:{appendToParentPortal:!1},trapFocus:!1,children:[(0,r.Y)(i.ModalOverlay,{}),(0,r.FD)(i.ModalContent,{borderRadius:"2xl",mx:4,children:[(0,r.Y)(i.ModalHeader,{children:null!=g?g:h.formatMessage({defaultMessage:"升級頂級會員",i
1d:"admin.creatorSubscription.upgradeIntro.title"})}),(0,r.Y)(i.ModalCloseButton,{}),(0,r.Y)(i.ModalBody,{pb:6,children:(0,r.FD)(i.Stack,{spacing:5,children:[(0,r.Y)(i.Stack,{spacing:2,children:w.map(e=>(0,r.FD)(i.HStack,{spacing:2,align:"flex-start",children:[(0,r.Y)(i.Icon,{as:eM.YrT,color:"GUI.green.500",boxSize:5}),(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.700",children:e})]},e))}),x&&Y?(0,r.Y)(i.Text,{fontSize:"13px",fontWeight:"700",color:"GUI.green.700",textAlign:"center",children:h.formatMessage({defaultMessage:"限時升級優惠・{offer}",id:"admin.creatorSubscription.upgradeIntro.offerInline"},{offer:Y})}):(0,r.Y)(i.Text,{fontSize:"13px",fontWeight:"700",color:"GUI.green.700",textAlign:"center",children:h.formatMessage({defaultMessage:"NT${price}/月・可隨時取消",id:"admin.creatorSubscription.upgradeIntro.priceInline"},{price:ew})}),(0,r.Y)(ey.s,{entryPoint:u,offer:m,children:(0,r.Y)(ev.A,{skipPremiumModal:!0,skipCampaignCover:!0,defaultPeriod:k.H0.MONTHLY,tracker:p,colorScheme:"green",color:"white",w:"full",size:"md",subClose:l,children:h.formatMessage({defaultMessage:"立即升級",id:"admin.creatorSubscription.upgradeIntro.cta"})})}),f&&(0,r.FD)(r.FK,{children:[(0,r.Y)(i.Divider,{}),(0,r.Y)(i.HStack,{justify:"center",children:f})]})]})})]})]})};var eA=a(87935);let ek=e=>{let{isOpen:t,onClose:a,onSelectMode:o,isKycVerified:n,accountState:s,offerId:c=null,daysSinceTrialEnd:u=null}=e,p=(0,d.A)(),{membershipTier:g,profileId:f}=(0,l.useContext)(m.A),h=g>=k.fb.PREMIUM,{activeBonus:b}=(0,X.A)(f,g),{emitViewed:M}=en({profileId:f,touchpoint:eA.lW.FORMAL_KEY_GATE,accountState:s,offerId:c,daysSinceTrialEnd:u,dedupe:!0});if((0,l.useEffect)(()=>{t&&!h&&M()},[t,h,M]),!h)return(0,r.Y)(eC,{isOpen:t,onClose:a,activeBonus:b,entryPoint:eY.A.PaymentApiKeyModal,tracker:"upgrade.paymentApiKey",offerId:c,title:p.formatMessage({defaultMessage:"升級啟用正式收款",id:"admin.creatorSubscription.upgradeIntro.title.liveKey"}),secondaryAction:(0,r.Y)(i.Button,{variant:"link",colorScheme:"gray",fontWeight:"600",onClick:()=>o("test"),children:p.formatMessage({defaultMessage:"先建立測試 API Key (Test)",id:"admin.creatorSubscription.apiKey.先建立測試"})})});let S={mode:"live",colorScheme:"blue",title:p.formatMessage({defaultMessage:"正式 API Key (Live)",id:"admin.creatorSubscription.apiKey.正式金鑰"}),description:h?n?p.formatMessage({defaultMessage:"用於正式環境的付款串接",id:"admin.creatorSubscription.apiKey.正式金鑰說明"}):p.formatMessage({defaultMessage:"需先通過金流審核才能建立,請先前往「金流審核」完成認證",id:"admin.creatorSubscription.apiKey.正式金鑰需金流審核"}):p.formatMessage({defaultMessage:"需升級頂級會員才能建立正式 (Live) API Key",id:"admin.creatorSubscription.apiKey.正式金鑰需頂級會員"}),isDisabled:!h||!n},v={mode:"test",colorScheme:"orange",title:p.formatMessage({defaultMessage:"測試 API Key (Test)",id:"admin.creatorSubscription.apiKey.測試金鑰"}),description:p.formatMessage({defaultMessage:"用於測試環境的整合開發,所有會員皆可建立",id:"admin.creatorSubscription.apiKey.測試金鑰說明"}),isDisabled:!1},y=(e,t)=>{let{mode:a,colorScheme:n,title:s,description:l,isDisabled:d}=e;return(0,r.Y)(i.Button,{size:"lg",colorScheme:n,variant:"outline",onClick:()=>o(a),isDisabled:d,justifyContent:"flex-start",w:"full",h:"auto",py:4,px:5,borderRadius:"xl",whiteSpace:"normal",textAlign:"left",...t,children:(0,r.FD)(i.Stack,{spacing:2,align:"flex-start",children:[(0,r.Y)(i.Text,{fontWeight:"700",children:s}),(0,r.Y)(i.Text,{fontSize:"sm",fontWeight:"400",children:l})]})})};return(0,r.FD)(i.Modal,{isOpen:t,onClose:a,isCentered:!0,portalProps:{appendToParentPortal:!1},children:[(0,r.Y)(i.ModalOverlay,{}),(0,r.FD)(i.ModalContent,{borderRadius:"2xl",mx:4,children:[(0,r.Y)(i.ModalHeader,{pb:0,children:p.formatMessage({defaultMessage:"建立 API Key",id:"admin.creatorSubscription.apiKey.選擇金鑰類型"})}),(0,r.Y)(i.ModalCloseButton,{}),(0,r.Y)(i.ModalBody,{pb:6,children:(0,r.FD)(i.Stack,{spacing:2,children:[(0,r.Y)(i.Text,{color:"gray.500",fontSize:"14px",children:p.formatMessage({defaultMessage:"選擇使用正式還是測試付款。",id:"admin.creatorSubscription.apiKey.選擇金鑰類型說明"})}),(0,r.FD)(i.Stack,{spacing:3,children:[y(S),y(v)]})]})})]})]})},eF=e=>{let{apiKeys:t,latestCreatedSecrets:a,isApiKeysLoading:o,apiKeysError:n,isCreatingApiKey:s,deactivatingApiKeyId:c,locale:u,variant:p="default",isKycVerified:m,accountState:g,offerId:f=null,daysSinceTrialEnd:h=null,onCreateApiKey:b,onCopySecret:M,onDeactivateApiKey:S,storeSelector:v,trailingAction:y}=e,x=(0,d.A)(),{isOpen:Y,onOpen:w,onClose:C}=(0,i.useDisclosure)(),A="onboarding"===p,[k,F]=(0,l.useState)("all"),D=async e=>{C(),F("all"),await b(e)},T=(0,l.useMemo)(()=>"all"===k?t:t.filter(e=>e.status===k),[t,k]);return!A||o||n||a||t.length?(0,r.FD)(i.Stack,{spacing:6,children:[!A&&(0,r.Y)(i.Stack,{spacing:4,children:(0,r.FD)(i.Flex,{align:{base:"stretch",md:"center"},justify:"space-between",direction:{base:"column",md:"row"},gap:3,children:[(0,r.FD)(i.HStack,{spacing:3,align:"center",flexWrap:"wrap",children:[v,(0,r.Y)(i.Button,{colorScheme:"green",onClick:w,isLoading:s,children:x.formatMessage({defaultMessage:"建立新 API Key",id:"admin.creatorSubscription.apiKey.建立新API金鑰"})}),(0,r.FD)(i.Select,{w:"auto",minW:"8em","aria-label":x.formatMessage({defaultMessage:"依狀態篩選 API Key",id:"admin.creatorSubscription.apiKey.filter.ariaLabel"}),value:k,onChange:e=>F(e.target.value),children:[(0,r.Y)("option",{value:"all",children:x.formatMessage({defaultMessage:"全部",id:"admin.creatorSubscription.apiKey.filter.全部"})}),(0,r.Y)("option",{value:"active",children:x.formatMessage({defaultMessage:"啟用中",id:"admin.creatorSubscription.apiKey.filter.啟用中"})}),(0,r.Y)("option",{value:"inactive",children:x.formatMessage({defaultMessage:"已停用",id:"admin.creatorSubscription.apiKey.filter.已停用"})})]})]}),y]})}),(0,r.Y)(ek,{isOpen:Y,onClose:C,onSelectMode:D,isKycVerified:m,accountState:g,offerId:f,daysSinceTrialEnd:h}),a?(0,r.FD)(i.Alert,{status:"success",variant:"subtle",flexDirection:"column",alignItems:"stretch",borderRadius:"2xl",p:5,bg:"transparent",border:"2px s
1olid",borderColor:"green.500",children:[(0,r.FD)(i.HStack,{align:"flex-start",spacing:3,children:[(0,r.Y)(i.AlertIcon,{mt:1}),(0,r.FD)(i.Stack,{spacing:1,flex:"1",children:[(0,r.Y)(i.AlertTitle,{children:x.formatMessage({defaultMessage:"新的 API Key 已建立",id:"admin.creatorSubscription.apiKey.新的API金鑰已建立"})}),(0,r.Y)(i.AlertDescription,{color:"gray.700",children:x.formatMessage({defaultMessage:"請立即保存 API Key 與 Secret。離開此頁後將無法再次查看。",id:"admin.creatorSubscription.apiKey.建立後提示"})})]})]}),(0,r.FD)(i.Stack,{spacing:4,mt:4,children:[(0,r.FD)(i.Box,{children:[(0,r.Y)(i.Text,{mb:2,fontSize:"sm",fontWeight:"700",color:"gray.700",children:x.formatMessage({defaultMessage:"API Key",id:"admin.creatorSubscription.apiKey.APIKey"})}),(0,r.FD)(i.HStack,{align:"stretch",spacing:3,children:[(0,r.Y)(i.Code,{flex:"1",p:3,whiteSpace:"pre-wrap",wordBreak:"break-all",borderRadius:"xl",children:a.secret}),(0,r.Y)(i.Button,{variant:"outline",onClick:()=>M(a.secret),children:x.formatMessage({defaultMessage:"複製",id:"admin.creatorSubscription.apiKey.複製"})})]})]}),(0,r.FD)(i.Box,{children:[(0,r.Y)(i.Text,{mb:2,fontSize:"sm",fontWeight:"700",color:"gray.700",children:x.formatMessage({defaultMessage:"Callback Secret",id:"admin.creatorSubscription.apiKey.CallbackSecret"})}),(0,r.FD)(i.HStack,{align:"stretch",spacing:3,children:[(0,r.Y)(i.Code,{flex:"1",p:3,whiteSpace:"pre-wrap",wordBreak:"break-all",borderRadius:"xl",children:a.callbackSecret}),(0,r.Y)(i.Button,{variant:"outline",onClick:()=>M(a.callbackSecret),children:x.formatMessage({defaultMessage:"複製",id:"admin.creatorSubscription.apiKey.複製"})})]})]})]})]}):null,o?(0,r.Y)(i.Box,{py:10,textAlign:"center",children:(0,r.Y)(i.Spinner,{})}):n?(0,r.Y)(i.Box,{p:6,borderRadius:"xl",border:"1px solid",borderColor:"red.100",bg:"red.50",children:(0,r.Y)(i.Text,{color:"red.500",children:eh(n,x.formatMessage({defaultMessage:"API Key載入失敗",id:"admin.creatorSubscription.apiKey.載入失敗"}))})}):t.length?T.length?(0,r.Y)(i.Stack,{spacing:4,children:T.map(e=>(0,r.Y)(eb,{apiKey:e,locale:u,isDeactivating:c===e.id,onDeactivate:()=>S(e.id)},e.id))}):(0,r.Y)(i.Box,{p:6,bg:"white",border:"1px solid",borderColor:"gray.200",borderRadius:"2xl",textAlign:"center",children:(0,r.Y)(i.Text,{color:"gray.500",children:x.formatMessage({defaultMessage:"沒有符合條件的 API Key",id:"admin.creatorSubscription.apiKey.filter.無結果"})})}):A?null:(0,r.FD)(i.Box,{p:{base:6,md:10},bg:"white",border:"1px solid",borderColor:"gray.200",borderRadius:"2xl",children:[(0,r.Y)(eS,{py:10}),(0,r.Y)(i.Text,{mt:3,textAlign:"center",fontSize:"lg",fontWeight:"700",children:x.formatMessage({defaultMessage:"尚未建立任何 API Key",id:"admin.creatorSubscription.apiKey.尚未建立任何API金鑰"})}),(0,r.Y)(i.Text,{mt:2,textAlign:"center",color:"gray.500",children:x.formatMessage({defaultMessage:"建立後即可透過這組 API Key 串接 Portaly 訂閱服務囉!",id:"admin.creatorSubscription.apiKey.建立後說明"})})]})]}):null},eD=e=>{let{isOpen:t,onClose:a,onCreateStore:o,isCreatingStore:n}=e,s=(0,d.A)(),[c,u]=(0,l.useState)(""),p=async()=>{let e=c.trim();if(e)try{await o(e),u(""),a()}catch(e){}};return(0,r.FD)(i.Modal,{isOpen:t,onClose:a,isCentered:!0,children:[(0,r.Y)(i.ModalOverlay,{}),(0,r.FD)(i.ModalContent,{children:[(0,r.Y)(i.ModalHeader,{children:s.formatMessage({defaultMessage:"串接新產品",id:"admin.creatorSubscription.store.串接新產品"})}),(0,r.Y)(i.ModalCloseButton,{}),(0,r.Y)(i.ModalBody,{children:(0,r.FD)(i.Stack,{spacing:2,children:[(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.600",children:s.formatMessage({defaultMessage:"為新產品取個名稱。新產品會擁有獨立的方案、訂閱、訂單與 API Key。",id:"admin.creatorSubscription.store.新增產品說明"})}),(0,r.Y)(i.Input,{value:c,onChange:e=>u(e.target.value),placeholder:s.formatMessage({defaultMessage:"請輸入產品名稱",id:"admin.creatorSubscription.config.請輸入產品名稱"}),maxLength:64,autoFocus:!0})]})}),(0,r.FD)(i.ModalFooter,{children:[(0,r.Y)(i.Button,{variant:"ghost",mr:3,onClick:a,children:s.formatMessage({defaultMessage:"取消",id:"admin.creatorSubscription.store.取消"})}),(0,r.Y)(i.Button,{colorScheme:"green",onClick:p,isLoading:n,isDisabled:!c.trim(),children:s.formatMessage({defaultMessage:"建立",id:"admin.creatorSubscription.store.建立"})})]})]})]})},eT=e=>{let{isOpen:t,onClose:a,isUpdate:o=!1,title:n,updateTitle:s,bodyText:l,updateBodyText:c,installPrompt:u,updatePrompt:p,footerNote:m}=e,g=(0,d.A)(),f=(0,i.useToast)(),h=o?null!=p?p:"請幫我執行 `npx skills add portaly-ai/portaly-skills --skill portaly-payment` 來更新 Portaly Payment Skill,完成後讀取更新好的 SKILL.md 並依其指示完成設定。":null!=u?u:"請幫我執行 `npx skills add portaly-ai/portaly-skills --skill portaly-payment` 來安裝 Portaly Payment Skill,完成後讀取安裝好的 SKILL.md 並依其指示完成設定。",b=async()=>{try{await navigator.clipboard.writeText(h),f({title:g.formatMessage({defaultMessage:"已複製到剪貼簿",
1id:"admin.creatorSubscription.apiKey.已複製到剪貼簿"}),status:"success",duration:2e3,isClosable:!0})}catch(e){f({title:g.formatMessage({defaultMessage:"複製失敗",id:"admin.creatorSubscription.apiKey.複製失敗"}),status:"error",duration:2500,isClosable:!0})}};return(0,r.FD)(i.Modal,{isOpen:t,onClose:a,size:"lg",isCentered:!0,children:[(0,r.Y)(i.ModalOverlay,{}),(0,r.FD)(i.ModalContent,{borderRadius:"2xl",children:[(0,r.Y)(i.ModalHeader,{children:o?null!=s?s:g.formatMessage({defaultMessage:"立即開始",id:"admin.creatorSubscription.installSkill.標題"}):null!=n?n:g.formatMessage({defaultMessage:"立即開始",id:"admin.creatorSubscription.installSkill.標題"})}),(0,r.Y)(i.ModalCloseButton,{}),(0,r.Y)(i.ModalBody,{pb:6,children:(0,r.FD)(i.Stack,{spacing:4,align:"flex-start",children:[(0,r.Y)(i.Text,{color:"gray.500",children:o?null!=c?c:g.formatMessage({defaultMessage:"複製下方的 prompt 給你的 Coding Agent,他會協助你完成更新。",id:"admin.creatorSubscription.installSkill.更新說明"}):null!=l?l:g.formatMessage({defaultMessage:"複製下方的 prompt 給你的 Coding Agent,他會協助你完成安裝。",id:"admin.creatorSubscription.installSkill.說明"})}),(0,r.Y)(i.Box,{w:"full",bg:"gray.50",border:"1px solid",borderColor:"gray.200",borderRadius:"xl",p:4,children:(0,r.Y)(i.Code,{display:"block",bg:"transparent",p:0,whiteSpace:"pre-wrap",wordBreak:"break-word",color:"gray.700",fontSize:"sm",children:h})}),(0,r.Y)(i.Button,{size:"sm",variant:"outline",colorScheme:"green",leftIcon:(0,r.Y)(i.Icon,{as:eM.nxz}),onClick:b,children:g.formatMessage({defaultMessage:"複製 Prompt",id:"admin.creatorSubscription.onboarding.複製Prompt"})}),m&&(0,r.Y)(i.Text,{fontSize:"xs",color:"gray.400",children:m})]})})]})]})},eI=e=>{let{step:t,title:a,description:o,action:n,children:s}=e;return(0,r.Y)(i.Box,{bg:"white",border:"1px solid",borderColor:"gray.200",borderRadius:"2xl",p:{base:5,md:8},children:(0,r.FD)(i.HStack,{align:"flex-start",spacing:4,children:[(0,r.Y)(i.Flex,{align:"center",justify:"center",flexShrink:0,w:9,h:9,borderRadius:"full",bg:"green.500",color:"white",fontWeight:"700",children:t}),(0,r.FD)(i.Stack,{spacing:4,flex:"1",minW:0,children:[(0,r.FD)(i.Flex,{align:{base:"stretch",md:"center"},justify:"space-between",direction:{base:"column",md:"row"},gap:4,children:[(0,r.FD)(i.Stack,{spacing:1,children:[(0,r.Y)(i.Text,{fontSize:"lg",fontWeight:"700",color:"gray.800",children:a}),(0,r.Y)(i.Text,{color:"gray.500",children:o})]}),n?(0,r.Y)(i.Box,{flexShrink:0,children:n}):null]}),s]})]})})},eP=e=>{let{apiKeysSection:t,isCreatingApiKey:a,onCreateApiKey:o,merchantSwitcher:n}=e,s=(0,d.A)(),l=(0,i.useDisclosure)();return(0,r.FD)(i.Stack,{spacing:6,children:[(0,r.Y)(eT,{isOpen:l.isOpen,onClose:l.onClose}),n?(0,r.Y)(i.Flex,{justify:"flex-end",children:n}):null,(0,r.Y)(eI,{step:1,title:s.formatMessage({defaultMessage:"安裝 Portaly Payment Skill",id:"admin.creatorSubscription.onboarding.安裝Skill標題"}),description:s.formatMessage({defaultMessage:"將 Skill 安裝到你的 Coding Agent(如 Claude Code、Codex、Cursor),它就會幫你串接好。",id:"admin.creatorSubscription.onboarding.安裝Skill說明"}),action:(0,r.Y)(i.Button,{colorScheme:"green",onClick:l.onOpen,children:s.formatMessage({defaultMessage:"立即開始",id:"admin.creatorSubscription.onboarding.立即開始"})})}),(0,r.Y)(eI,{step:2,title:s.formatMessage({defaultMessage:"建立 API Key",id:"admin.creatorSubscription.onboarding.建立APIKey標題"}),description:s.formatMessage({defaultMessage:"建立一組 API Key 提供給你的 Coding Agent,接著告訴它會帶你設定方案、並完成串接。",id:"admin.creatorSubscription.onboarding.建立APIKey說明"}),action:(0,r.Y)(i.Button,{colorScheme:"green",onClick:()=>o("test"),isLoading:a,children:s.formatMessage({defaultMessage:"建立 API Key",id:"admin.creatorSubscription.onboarding.建立APIKey按鈕"})}),children:t}),(0,r.FD)(i.HStack,{spacing:2,color:"gray.400",justify:"center",fontSize:"sm",pt:2,children:[(0,r.Y)(i.Icon,{as:eM.YrT}),(0,r.Y)(i.Text,{children:s.formatMessage({defaultMessage:"建立第一個方案後,這裡會自動顯示完整的管理後台。",id:"admin.creatorSubscription.onboarding.完成提示"})})]})]})},eR=/^[A-Z0-9_-]+$/,eB=(e,t,a)=>{if(""===e.trim())return!1;let r=Number(e);return Number.isInteger(r)&&r>=t&&r<=a},ez=e=>{if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t.toISOString()},eO=e=>{let{isOpen:t,onClose:a,onSubmit:o,isSubmitting:n,plans:s,existingCode:c}=e,u=(0,d.A)(),p=!!c,m=!!(c&&c.rules.length>1),[g,f]=(0,l.useState)(""),[h,b]=(0,l.useState)("percent"),[M,S]=(0,l.useState)(""),[v,y]=(0,l.useState)(""),[x,Y]=(0,l.useState)("repeating"),[w,C]=(0,l.useState)("1"),[A,k]=(0,l.useState)("all"),[F,D]=(0,l.useState)([]),[T,I]=(0,l.useState)(""),[P,R]=(0,l.useState)(""),[B,z]=(0,l.useState)(""),[O,L]=(0,l.useState)(""),[N,E]=(0,l.useState)("active");(0,l.useEffect)(()=>
1{if(t){if(c){var e,a,r,i;f(c.code),E(c.status),I(null!==(r=null===(e=c.redeemFrom)||void 0===e?void 0:e.slice(0,10))&&void 0!==r?r:""),R(null!==(i=null===(a=c.redeemBy)||void 0===a?void 0:a.slice(0,10))&&void 0!==i?i:""),z(null!=c.maxRedemptions?String(c.maxRedemptions):""),L(null!=c.maxRedemptionsPerCustomer?String(c.maxRedemptionsPerCustomer):"");let t=c.rules[0];t&&(b(t.discount.type),S("percent"===t.discount.type?String(t.discount.value):""),y("fixed"===t.discount.type?String(t.discount.value):""),Y(t.duration.type),C("repeating"===t.duration.type?String(t.duration.cycles):"1"),k(t.appliesTo.type),D("specific"===t.appliesTo.type?t.appliesTo.planIds:[]))}else f(""),b("percent"),S(""),y(""),Y("repeating"),C("1"),k("all"),D([]),I(""),R(""),z(""),L(""),E("active")}},[t,c]);let W=g.trim().toUpperCase(),H=p||eR.test(W)&&W.length>=3&&W.length<=40,U="free"===h||("percent"===h?eB(M,1,100):eB(v,1,Number.MAX_SAFE_INTEGER)),K=(0,l.useMemo)(()=>s.filter(e=>"active"===e.status),[s]),_=(0,l.useMemo)(()=>"specific"===A?K.filter(e=>F.includes(e.id)):K,[A,K,F]),j=_.some(e=>"one-time"!==e.billingPeriod),G=_.some(e=>"one-time"===e.billingPeriod),V=!j||"forever"===x||eB(w,1,60),q="all"===A||F.length>=1,$=!T||!P||T<P,J=""===B||eB(B,1,Number.MAX_SAFE_INTEGER),Z=""===O||eB(O,1,Number.MAX_SAFE_INTEGER),X=!n&&!m&&H&&U&&V&&q&&$&&J&&Z,Q=()=>{n||a()},ee=()=>{var e,t;return{discount:"percent"===h?{type:"percent",value:Number(M)}:"fixed"===h?{type:"fixed",value:Number(v),currency:"TWD"}:{type:"free"},duration:j?"repeating"===x?{type:"repeating",cycles:Number(w)}:{type:"forever"}:null!==(t=null==c?void 0:null===(e=c.rules[0])||void 0===e?void 0:e.duration)&&void 0!==t?t:{type:"repeating",cycles:1},appliesTo:"specific"===A?{type:"specific",planIds:F}:{type:"all"}}},et=async()=>{X&&await o({code:p&&c?c.code:W,rules:[ee()],redeemFrom:ez(T),redeemBy:ez(P),maxRedemptions:""===B?null:Number(B),maxRedemptionsPerCustomer:""===O?null:Number(O),status:N})};return(0,r.FD)(i.Modal,{isOpen:t,onClose:Q,isCentered:!0,size:"lg",scrollBehavior:"inside",children:[(0,r.Y)(i.ModalOverlay,{}),(0,r.FD)(i.ModalContent,{children:[(0,r.Y)(i.ModalHeader,{children:p?u.formatMessage({defaultMessage:"編輯折扣碼",id:"admin.creatorSubscription.discountCode.編輯折扣碼"}):u.formatMessage({defaultMessage:"新增折扣碼",id:"admin.creatorSubscription.discountCode.新增折扣碼"})}),(0,r.Y)(i.ModalCloseButton,{}),(0,r.Y)(i.ModalBody,{children:m?(0,r.FD)(i.Alert,{status:"info",borderRadius:"lg",children:[(0,r.Y)(i.AlertIcon,{}),u.formatMessage({defaultMessage:"此折扣碼含多條規則,請透過 API 編輯,後台僅支援單一規則的折扣碼。",id:"admin.creatorSubscription.discountCode.多規則提示"})]}):(0,r.FD)(i.Stack,{spacing:4,children:[(0,r.FD)(i.FormControl,{isRequired:!p,children:[(0,r.Y)(i.FormLabel,{children:u.formatMessage({defaultMessage:"折扣碼代號",id:"admin.creatorSubscription.discountCode.折扣碼代號"})}),(0,r.Y)(i.Input,{value:g,onChange:e=>f(e.target.value.toUpperCase()),placeholder:"SUMMER2026",maxLength:40,isDisabled:p,textTransform:"uppercase"}),(0,r.Y)(i.FormHelperText,{children:p?u.formatMessage({defaultMessage:"折扣碼代號建立後不可修改。",id:"admin.creatorSubscription.discountCode.代號不可修改"}):u.formatMessage({defaultMessage:"3–40 個字元,僅能使用大寫英文、數字、底線與連字號。",id:"admin.creatorSubscription.discountCode.代號格式說明"})})]}),(0,r.FD)(i.FormControl,{isRequired:!0,children:[(0,r.Y)(i.FormLabel,{children:u.formatMessage({defaultMessage:"折扣種類",id:"admin.creatorSubscription.discountCode.折扣種類"})}),(0,r.FD)(i.Select,{value:h,onChange:e=>b(e.target.value),children:[(0,r.Y)("option",{value:"percent",children:u.formatMessage({defaultMessage:"百分比折扣",id:"admin.creatorSubscription.discountCode.百分比折扣"})}),(0,r.Y)("option",{value:"fixed",children:u.formatMessage({defaultMessage:"固定金額折抵",id:"admin.creatorSubscription.discountCode.固定金額折抵"})}),(0,r.Y)("option",{value:"free",children:u.formatMessage({defaultMessage:"免費",id:"admin.creatorSubscription.discountCode.免費"})})]})]}),"percent"===h&&(0,r.FD)(i.FormControl,{isRequired:!0,children:[(0,r.Y)(i.FormLabel,{children:u.formatMessage({defaultMessage:"折扣百分比",id:"admin.creatorSubscription.discountCode.折扣百分比"})}),(0,r.Y)(i.InputGroup,{children:(0,r.Y)(i.NumberInput,{min:1,max:100,value:M,onChange:e=>S(e),w:"100%",children:(0,r.Y)(i.NumberInputField,{placeholder:"10"})})}),(0,r.Y)(i.FormHelperText,{children:u.formatMessage({defaultMessage:"輸入折扣的百分比,例如輸入 10 代表每期折 10%(原價 9 折)。",id:"admin.creatorSubscription.discountCode.折扣百分比說明"})})]}
1),"fixed"===h&&(0,r.FD)(i.FormControl,{isRequired:!0,children:[(0,r.Y)(i.FormLabel,{children:u.formatMessage({defaultMessage:"折抵金額",id:"admin.creatorSubscription.discountCode.折抵金額"})}),(0,r.FD)(i.InputGroup,{children:[(0,r.Y)(i.InputLeftAddon,{children:"NT$"}),(0,r.Y)(i.NumberInput,{min:1,value:v,onChange:e=>y(e),w:"100%",children:(0,r.Y)(i.NumberInputField,{placeholder:"100",borderLeftRadius:0})})]})]}),(0,r.FD)(i.FormControl,{isRequired:!0,children:[(0,r.Y)(i.FormLabel,{children:u.formatMessage({defaultMessage:"適用方案",id:"admin.creatorSubscription.discountCode.適用方案"})}),(0,r.Y)(i.RadioGroup,{value:A,onChange:e=>k(e),children:(0,r.FD)(i.Stack,{spacing:2,children:[(0,r.Y)(i.Radio,{value:"all",children:u.formatMessage({defaultMessage:"全部方案",id:"admin.creatorSubscription.discountCode.全部方案"})}),(0,r.Y)(i.Radio,{value:"specific",children:u.formatMessage({defaultMessage:"指定方案",id:"admin.creatorSubscription.discountCode.指定方案"})})]})}),"specific"===A&&(0,r.FD)(r.FK,{children:[(0,r.Y)(i.CheckboxGroup,{value:F,onChange:e=>D(e),children:(0,r.Y)(i.Stack,{mt:3,spacing:2,maxH:"180px",overflowY:"auto",children:K.map(e=>(0,r.Y)(i.Checkbox,{value:e.id,children:e.name},e.id))})}),0===K.length&&(0,r.Y)(i.FormHelperText,{color:"orange.500",children:u.formatMessage({defaultMessage:"目前沒有可選的方案,請先建立方案。",id:"admin.creatorSubscription.discountCode.無可選方案"})})]})]}),j&&(0,r.FD)(i.FormControl,{isRequired:!0,children:[(0,r.Y)(i.FormLabel,{children:u.formatMessage({defaultMessage:"折抵期間",id:"admin.creatorSubscription.discountCode.折抵期間"})}),(0,r.Y)(i.RadioGroup,{value:x,onChange:e=>Y(e),children:(0,r.FD)(i.Stack,{spacing:2,children:[(0,r.Y)(i.Radio,{value:"repeating",children:u.formatMessage({defaultMessage:"前 N 期",id:"admin.creatorSubscription.discountCode.前N期"})}),(0,r.Y)(i.Radio,{value:"forever",children:u.formatMessage({defaultMessage:"每期皆折",id:"admin.creatorSubscription.discountCode.每期皆折"})})]})}),"repeating"===x&&(0,r.Y)(i.NumberInput,{mt:3,min:1,max:60,value:w,onChange:e=>C(e),children:(0,r.Y)(i.NumberInputField,{placeholder:"3"})}),G&&(0,r.Y)(i.FormHelperText,{children:u.formatMessage({defaultMessage:"只影響訂閱制方案;一次性方案一律只折這一次。",id:"admin.creatorSubscription.discountCode.折抵期間僅影響訂閱制"})})]}),(0,r.FD)(i.SimpleGrid,{columns:{base:1,md:2},spacing:4,children:[(0,r.FD)(i.FormControl,{children:[(0,r.Y)(i.FormLabel,{children:u.formatMessage({defaultMessage:"兌換開始日(選填)",id:"admin.creatorSubscription.discountCode.兌換開始日"})}),(0,r.Y)(i.Input,{type:"date",value:T,onChange:e=>I(e.target.value)})]}),(0,r.FD)(i.FormControl,{isInvalid:!$,children:[(0,r.Y)(i.FormLabel,{children:u.formatMessage({defaultMessage:"兌換結束日(選填)",id:"admin.creatorSubscription.discountCode.兌換結束日"})}),(0,r.Y)(i.Input,{type:"date",value:P,onChange:e=>R(e.target.value)}),!$&&(0,r.Y)(i.FormHelperText,{color:"red.500",children:u.formatMessage({defaultMessage:"兌換結束日必須晚於開始日。",id:"admin.creatorSubscription.discountCode.日期區間錯誤"})})]})]}),(0,r.FD)(i.SimpleGrid,{columns:{base:1,md:2},spacing:4,children:[(0,r.FD)(i.FormControl,{children:[(0,r.Y)(i.FormLabel,{children:u.formatMessage({defaultMessage:"總使用上限(選填)",id:"admin.creatorSubscription.discountCode.ç¸
1½ä½¿ç”¨ä¸Šé™"})}),(0,r.Y)(i.NumberInput,{min:1,value:B,onChange:e=>z(e),children:(0,r.Y)(i.NumberInputField,{placeholder:u.formatMessage({defaultMessage:"不限",id:"admin.creatorSubscription.discountCode.不限"})})})]}),(0,r.FD)(i.FormControl,{children:[(0,r.Y)(i.FormLabel,{children:u.formatMessage({defaultMessage:"每人使用上限(選填)",id:"admin.creatorSubscription.discountCode.每人使用上限"})}),(0,r.Y)(i.NumberInput,{min:1,value:O,onChange:e=>L(e),children:(0,r.Y)(i.NumberInputField,{placeholder:u.formatMessage({defaultMessage:"不限",id:"admin.creatorSubscription.discountCode.不限"})})})]})]}),p&&(0,r.FD)(i.FormControl,{children:[(0,r.Y)(i.FormLabel,{children:u.formatMessage({defaultMessage:"狀態",id:"admin.creatorSubscription.discountCode.狀態"})}),(0,r.FD)(i.Select,{value:N,onChange:e=>E(e.target.value),children:[(0,r.Y)("option",{value:"active",children:u.formatMessage({defaultMessage:"啟用中",id:"admin.creatorSubscription.discountCode.啟用中"})}),(0,r.Y)("option",{value:"disabled",children:u.formatMessage({defaultMessage:"已停用",id:"admin.creatorSubscription.discountCode.已停用"})})]})]})]})}),(0,r.FD)(i.ModalFooter,{children:[(0,r.Y)(i.Button,{variant:"ghost",mr:3,onClick:Q,isDisabled:n,children:u.formatMessage({defaultMessage:"取消",id:"admin.creatorSubscription.discountCode.取消"})}),!m&&(0,r.Y)(i.Button,{colorScheme:"green",onClick:et,isLoading:n,isDisabled:!X,children:p?u.formatMessage({defaultMessage:"儲存",id:"admin.creatorSubscription.discountCode.儲存"}):u.formatMessage({defaultMessage:"建立折扣碼",id:"admin.creatorSubscription.discountCode.建立折扣碼"})})]})]})]})};var eL=a(84232);let eN=e=>{let{isLocked:t,children:a,...o}=e;return t?(0,r.FD)(i.Box,{pos:"relative",display:"inline-flex",...o,children:[a,(0,r.Y)(eL.A,{tier:k.fb.PREMIUM,top:-1.5})]}):(0,r.Y)(r.FK,{children:a})},eE=(e,t)=>"percent"===e.type?t.formatMessage({defaultMessage:"折 {value}%",id:"admin.creatorSubscription.discountCode.summary.percent"},{value:e.value}):"fixed"===e.type?t.formatMessage({defaultMessage:"折抵 NT$ {value}",id:"admin.creatorSubscription.discountCode.summary.fixed"},{value:e.value}):t.formatMessage({defaultMessage:"免費",id:"admin.creatorSubscription.discountCode.summary.free"}),eW=(e,t)=>"repeating"===e.type?t.formatMessage({defaultMessage:"前 {cycles} 期",id:"admin.creatorSubscription.discountCode.summary.repeating"},{cycles:e.cycles}):t.formatMessage({defaultMessage:"每期皆折",id:"admin.creatorSubscription.discountCode.summary.forever"}),eH=(e,t)=>"all"===e.type?t.formatMessage({defaultMessage:"全部方案",id:"admin.creatorSubscription.discountCode.summary.all"}):t.formatMessage({defaultMessage:"{count} 個指定方案",id:"admin.creatorSubscription.discountCode.summary.specific"},{count:e.planIds.length}),eU=e=>{let{discountCodes:t,plans:a,isLoading:o,error:n,locale:s,isCreating:c,updatingCodeId:u,disablingCodeId:p,hasMoreThanLimit:m,onCreate:g,onUpdate:f,onDisable:h,storeSelector:b,isFreeTier:M=!1,activeBonus:v,offerId:y=null}=e,x=(0,d.A)(),{isOpen:Y,onOpen:w,onClose:C}=(0,i.useDisclosure)(),A=(0,i.useDisclosure)(),[k,F]=(0,l.useState)(null),[D,T]=(0,l.useState)(""),[I,P]=(0,l.useState)("all"),[R,B]=(0,l.useState)("all"),z=(0,l.useMemo)(()=>{let e=D.trim().toUpperCase();return t.filter(t=>{var a;return("all"===I||t.status===I)&&("all"===R||(null===(a=t.rules[0])||void 0===a?void 0:a.discount.type)===R)&&(!e||!!t.code.toUpperCase().includes(e))})},[t,I,R,D]),O=k?u===k.id:c,L=e=>{F(e),w()},N=()=>{C(),F(null)},E=async e=>{if(k){let{code:t,...a}=e;await f(k.id,a)}else await g(e);N()},W=x.formatMessage({defaultMessage:"新增折扣碼",id:"admin.creatorSubscription.discountCode.新增折扣碼"}),H=(0,r.FD)(r.FK,{children:[(0,r.Y)(eO,{isOpen:Y,onClose:N,onSubmit:E,isSubmitting:O,plans:a,existingCode:k}),M&&(0,r.Y)(eC,{isOpen:A.isOpen,onClose:A.onClose,activeBonus:v,entryPoint:eY.A.DiscountCodeCreateBlocked,tracker:"upgrade.creatorSubscriptionAddDiscountCode",offerId:y,title:x.formatMessage({defaultMessage:"升級啟用折扣碼",id:"admin.creatorSubscription.upgradeIntro.title.discountCode"})})]}),U=(0,r.Y)(eN,{isLocked:M,children:(0,r.Y)(i.Button,{size:"md",variant:"outline",colorScheme:"green",borderRadius:"xl",leftIcon:(0,r.Y)(i.Icon,{as:S.jgn,boxSize:5}),onClick:()=>
1{if(M){A.onOpen();return}F(null),w()},children:W})}),K=b?(0,r.Y)(i.Box,{mb:4,children:b}):null;if(o)return(0,r.FD)(r.FK,{children:[K,(0,r.Y)(i.Box,{py:10,textAlign:"center",children:(0,r.Y)(i.Spinner,{})})]});if(n)return(0,r.FD)(r.FK,{children:[K,(0,r.Y)(i.Box,{p:6,borderRadius:"xl",border:"1px solid",borderColor:"red.100",bg:"red.50",children:(0,r.Y)(i.Text,{color:"red.500",children:x.formatMessage({defaultMessage:"折扣碼載入失敗",id:"admin.creatorSubscription.discountCode.載入失敗"})})})]});if(!t.length)return(0,r.FD)(r.FK,{children:[K,(0,r.FD)(i.Box,{p:{base:6,md:10},bg:"white",border:"1px solid",borderColor:"gray.200",borderRadius:"2xl",children:[(0,r.Y)(eS,{py:10}),(0,r.Y)(i.Text,{mt:3,textAlign:"center",fontSize:"lg",fontWeight:"700",children:x.formatMessage({defaultMessage:"尚未建立任何折扣碼",id:"admin.creatorSubscription.discountCode.尚未建立任何折扣碼"})}),(0,r.Y)(i.Text,{mt:2,textAlign:"center",color:"gray.500",children:x.formatMessage({defaultMessage:"建立折扣碼後,訂閱者結帳時輸入代號即可享有優惠。",id:"admin.creatorSubscription.discountCode.空狀態說明"})}),(0,r.Y)(i.Flex,{justify:"center",mt:6,children:U})]}),H]});let _=x.formatMessage({defaultMessage:"共 {total} 筆,顯示 {shown} 筆",id:"admin.creatorSubscription.discountCode.筆數摘要"},{total:t.length,shown:z.length});return(0,r.FD)(i.Stack,{spacing:4,children:[H,(0,r.FD)(i.Flex,{justify:"space-between",align:"center",gap:3,wrap:"wrap",children:[(0,r.FD)(i.HStack,{spacing:2,align:"baseline",children:[(0,r.Y)(i.Text,{fontWeight:"800",fontSize:"18px",children:x.formatMessage({defaultMessage:"折扣碼",id:"admin.creatorSubscription.discountCode.標題"})}),(0,r.Y)(i.Text,{fontSize:"14px",color:"gray.500",fontWeight:"700",children:t.length})]}),(0,r.FD)(i.HStack,{spacing:3,align:"center",flexWrap:"wrap",children:[b,U]})]}),(0,r.FD)(i.Flex,{gap:3,direction:{base:"column",md:"row"},align:{base:"stretch",md:"center"},wrap:"wrap",children:[(0,r.FD)(i.InputGroup,{maxW:{base:"100%",md:"280px"},children:[(0,r.Y)(i.InputLeftElement,{pointerEvents:"none",children:(0,r.Y)(i.Icon,{as:S.gZ7,color:"gray.400"})}),(0,r.Y)(i.Input,{value:D,onChange:e=>T(e.target.value),placeholder:x.formatMessage({defaultMessage:"搜尋折扣碼代號…",id:"admin.creatorSubscription.discountCode.搜尋placeholder"})})]}),(0,r.FD)(i.Select,{maxW:{base:"100%",md:"160px"}
1,value:I,onChange:e=>P(e.target.value),children:[(0,r.Y)("option",{value:"all",children:x.formatMessage({defaultMessage:"全部狀態",id:"admin.creatorSubscription.discountCode.filter.全部狀態"})}),(0,r.Y)("option",{value:"active",children:x.formatMessage({defaultMessage:"啟用中",id:"admin.creatorSubscription.discountCode.啟用中"})}),(0,r.Y)("option",{value:"disabled",children:x.formatMessage({defaultMessage:"已停用",id:"admin.creatorSubscription.discountCode.已停用"})})]}),(0,r.FD)(i.Select,{maxW:{base:"100%",md:"160px"},value:R,onChange:e=>B(e.target.value),children:[(0,r.Y)("option",{value:"all",children:x.formatMessage({defaultMessage:"全部種類",id:"admin.creatorSubscription.discountCode.filter.全部種類"})}),(0,r.Y)("option",{value:"free",children:x.formatMessage({defaultMessage:"免費",id:"admin.creatorSubscription.discountCode.summary.free"})}),(0,r.Y)("option",{value:"percent",children:x.formatMessage({defaultMessage:"百分比折扣",id:"admin.creatorSubscription.discountCode.百分比折扣"})}),(0,r.Y)("option",{value:"fixed",children:x.formatMessage({defaultMessage:"固定金額折抵",id:"admin.creatorSubscription.discountCode.固定金額折抵"})})]}),(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.500",ml:{md:"auto"},children:_})]}),m&&(0,r.FD)(i.Alert,{status:"info",borderRadius:"lg",children:[(0,r.Y)(i.AlertIcon,{}),x.formatMessage({defaultMessage:"折扣碼較多,目前僅列出最新 100 筆;較舊的折扣碼可能未顯示。",id:"admin.creatorSubscription.discountCode.超過上限提示"})]}),z.length?(0,r.Y)(i.TableContainer,{border:"1px solid",borderColor:"gray.200",borderRadius:"2xl",bg:"white",children:(0,r.FD)(i.Table,{variant:"simple",size:"sm",children:[(0,r.Y)(i.Thead,{bg:"gray.50",children:(0,r.FD)(i.Tr,{children:[(0,r.Y)(i.Th,{children:x.formatMessage({defaultMessage:"代號",id:"admin.creatorSubscription.discountCode.col.代號"})}),(0,r.Y)(i.Th,{children:x.formatMessage({defaultMessage:"折扣",id:"admin.creatorSubscription.discountCode.col.折扣"})}),(0,r.Y)(i.Th,{children:x.formatMessage({defaultMessage:"期數",id:"admin.creatorSubscription.discountCode.col.期數"})}),(0,r.Y)(i.Th,{children:x.formatMessage({defaultMessage:"適用方案",id:"admin.creatorSubscription.discountCode.col.適用方案"})}),(0,r.Y)(i.Th,{children:x.formatMessage({defaultMessage:"兌換",id:"admin.creatorSubscription.discountCode.col.兌換"})}),(0,r.Y)(i.Th,{children:x.formatMessage({defaultMessage:"兌換期間",id:"admin.creatorSubscription.discountCode.col.兌換期間"})}),(0,r.Y)(i.Th,{children:x.formatMessage({defaultMessage:"狀態",id:"admin.creatorSubscription.discountCode.col.狀態"})}),(0,r.Y)(i.Th,{textAlign:"right",children:x.formatMessage({defaultMessage:"操作",id:"admin.creatorSubscription.discountCode.col.操作"})})]})}),(0,r.Y)(i.Tbody,{children:z.map(e=>{let t=e.rules[0],a=e.rules.length>1,o=p===e.id,n=null!=e.maxRedemptions?String(e.maxRedemptions):"∞",l=e.redeemFrom||e.redeemBy;return(0,r.FD)(i.Tr,{children:[(0,r.Y)(i.Td,{fontFamily:"mono",fontWeight:"700",children:e.code}),(0,r.Y)(i.Td,{children:a?(0,r.Y)(i.Text,{fontSize:"xs",color:"orange.500",children:x.formatMessage({defaultMessage:"多規則,請透過 API 編輯",id:"admin.creatorSubscription.discountCode.多規則欄位"})}):t?eE(t.discount,x):"—"}),(0,r.Y)(i.Td,{children:!a&&t?eW(t.duration,x):"—"}),(0,r.Y)(i.Td,{children:!a&&t?eH(t.appliesTo,x):"—"}),(0,r.FD)(i.Td,{whiteSpace:"nowrap",children:[e.timesRedeemed," / ",n]}),(0,r.Y)(i.Td,{whiteSpace:"nowrap",children:l?"".concat(em(e.redeemFrom,s)," ~ ").concat(em(e.redeemBy,s)):"—"}),(0,r.Y)(i.Td,{children:(0,r.Y)(i.Badge,{colorScheme:"active"===e.status?"green":"gray",borderRadius:"full",px:2,children:"active"===e.status?x.formatMessage({defaultMessage:"啟用中",id:"admin.creatorSubscription.discountCode.啟用中"}):x.formatMessage({defaultMessage:"已停用",id:"admin.creatorSubscription.discountCode.已停用"})})}),(0,r.Y)(i.Td,{children:(0,r.FD)(i.HStack,{spacing:2,justify:"flex-end",children:[(0,r.Y)(i.Button,{size:"xs",variant:"outline",isDisabled:a,onClick:()=>L(e),children:x.formatMessage({defaultMessage:"編輯",id:"admin.creatorSubscription.discountCode.編輯"})}),"active"===e.status&&(0,r.Y)(i.Button,{size:"xs",variant:"ghost",colorScheme:"red",isLoading:o,onClick:()=>h(e),children:x.formatMessage({defaultMessage:"停用",id:"admin.creatorSubscription.discountCode.停用"})})]})})]},e.id)})})]})}):(0,r.Y)(i.Box,{py:10,bg:"white",border:"1px solid",borderColor:"gray.200",borderRadius:"2xl",textAlign:"center",children:(0,r.Y)(i.Text,{color:"gray.500",children:x.formatMessage({defaultMessage:"找不到符合條件的折扣碼",id:"admin.creatorSubscription.discountCode.篩選無結果"})})})]})};var eK=a(77381),e_=a(60401),ej=a(58323),eG=a(29246),eV=a(5600);let eq=e=>'{\n  "mcpServers": {\n    "portaly": {\n      "command": "npx",\n      "args": ["-y", "portaly-mcp"],\n      "env": {\n        "PORTALY_API_TOKEN": "'.concat(e,'"\n      }\n    }\n  }\n}'),e$=[{key:"cursor",name:"Cursor",configPath:"~/.cursor/mcp.json"}
1,{key:"claude",name:"Claude",configPath:"claude_desktop_config.json"},{key:"vscode",name:"VS Code",configPath:".vscode/mcp.json"},{key:"windsurf",name:"Windsurf",configPath:"~/.codeium/windsurf/mcp_config.json"}],eJ=e=>(0,ep.b6)(e,"yyyy-MM-dd HH:mm:ss")||"-",eZ=e=>{let{token:t}=e,a=(0,d.A)(),o=eq(t);return(0,r.FD)(i.Box,{position:"relative",children:[(0,r.Y)(i.Code,{display:"block",whiteSpace:"pre",overflowX:"auto",p:4,pr:14,borderRadius:"xl",bg:"gray.800",color:"gray.50",fontSize:"sm",children:o}),(0,r.Y)(i.Box,{position:"absolute",top:2,right:2,children:(0,r.Y)(e_.A,{value:o,label:a.formatMessage({defaultMessage:"複製設定",id:"admin.creatorSubscription.planMcp.copyConfig"}),"aria-label":a.formatMessage({defaultMessage:"複製設定",id:"admin.creatorSubscription.planMcp.copyConfig"}),size:"sm",variant:"ghost",colorScheme:"green"})})]})},eX=e=>{let{step:t,title:a,description:o,children:n}=e;return(0,r.FD)(i.Box,{border:"1px solid",borderColor:"gray.200",borderRadius:"2xl",bg:"white",children:[(0,r.FD)(i.HStack,{align:"start",spacing:4,px:{base:5,md:6},pt:{base:5,md:6},pb:n?0:{base:5,md:6},children:[(0,r.Y)(i.Box,{flexShrink:0,w:8,h:8,borderRadius:"full",bg:"GUI.green.500",color:"white",fontWeight:"700",display:"flex",alignItems:"center",justifyContent:"center",children:t}),(0,r.FD)(i.VStack,{align:"stretch",spacing:1,flex:1,children:[(0,r.Y)(i.Text,{fontSize:"lg",fontWeight:"700",color:"gray.800",children:a}),o&&(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.600",children:o})]})]}),n&&(0,r.Y)(i.Box,{px:{base:5,md:6},pb:{base:5,md:6},pt:4,pl:{base:5,md:"4.5rem"},children:n})]})},eQ=e=>{let{profileId:t}=e,a=(0,d.A)(),o=(0,z.A)(),n=(0,i.useToast)(),{isOpen:s,onOpen:c,onClose:u}=(0,i.useDisclosure)(),p=ej.A,[m,g]=(0,l.useState)(""),[f,h]=(0,l.useState)(""),[M,S]=(0,l.useState)(!1),[v,y]=(0,l.useState)(""),{data:x,mutate:Y,isLoading:w}=(0,b.Ay)(t?"/api/mcp/auth-token?profileId=".concat(t):null,o,{revalidateOnFocus:!1}),C=(0,l.useMemo)(()=>((null==x?void 0:x.data)||[]).filter(e=>"active"===e.status),[null==x?void 0:x.data]),A=C.length>0,k=a.formatMessage({defaultMessage:"在這裡貼上你的 token",id:"admin.creatorSubscription.planMcp.tokenPlaceholder"}),F=(0,l.useCallback)(()=>{g("".concat((0,eK.A)(new Date,"yyyy-MM-dd HH:mm")," - token")),c()},[c]),D=(0,l.useCallback)(async e=>{if(t&&e.id&&!v){y(e.id);try{await o("/api/mcp/auth-token",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({profileId:t,tokenId:e.id})}),await Y(),C.length<=1&&h(""),n({title:a.formatMessage({defaultMessage:"Token 已刪除",id:"admin.creatorSubscription.planMcp.toast.deleted"}),status:"success"})}catch(e){n({title:a.formatMessage({defaultMessage:"刪除 token 失敗",id:"admin.creatorSubscription.planMcp.toast.deleteFailed"}),description:e instanceof Error?e.message:"Unknown error",status:"error"})}finally{y("")}}},[o,v,a,Y,t,n,C.length]),T=(0,l.useMemo)(()=>[{Header:a.formatMessage({defaultMessage:"名稱",id:"admin.creatorSubscription.planMcp.column.name"}),id:"name",accessor:e=>e.name,Cell:e=>{let{value:t}=e;return(0,r.Y)(i.VStack,{align:"stretch",spacing:1,children:(0,r.Y)(i.Text,{fontWeight:"600",color:"gray.800",children:t})})},w:"18em"},{Header:a.formatMessage({defaultMessage:"預覽",id:"admin.creatorSubscription.planMcp.column.preview"}),accessor:"tokenPrefix",Cell:e=>{let{value:t}=e;return(0,r.Y)(i.Code,{children:t})},w:"12em"},{Header:a.formatMessage({defaultMessage:"狀態",id:"admin.creatorSubscription.planMcp.status"}),accessor:"status",Cell:e=>{let{value:t}=e;return(0,r.Y)(i.Badge,{colorScheme:"active"===t?"green":"gray",children:"active"===t?a.formatMessage({defaultMessage:"啟用",id:"admin.creatorSubscription.planMcp.status.active"}):a.formatMessage({defaultMessage:"停用",id:"admin.creatorSubscription.planMcp.status.inactive"})})},w:"8em"},{Header:a.formatMessage({defaultMessage:"建立時間",id:"admin.creatorSubscription.planMcp.column.createdAt"}),id:"createdAt",accessor:e=>eJ(e.createdAt),w:"12em"},{Header:a.formatMessage({defaultMessage:"最後使用",id:"admin.creatorSubscription.planMcp.column.lastUsedAt"}),id:"lastUsedAt",accessor:e=>eJ(e.lastUsedAt),w:"12em"},{Header:a.formatMessage({defaultMessage:"刪除",id:"admin.creatorSubscription.planMcp.column.delete"}),id:"delete",accessor:e=>e,disableSortBy:!0,Cell:e=>{let{value:t}=e;return"active"===t.status?(0,r.Y)(eG.A,{confirmTitle:a.formatMessage({defaultMessage:"確認刪除 token?",id:"admin.creatorSubscription.planMcp.delete.confirmTitle"}),confirmBody:a.formatMessage({defaultMessage:"刪除「{name}」後,這組 token 將無法再使用。",id:"admin.creatorSubscription.planMcp.delete.confirmBody"},{name:t.name}),onClick:()=>D(t)}):null},w:"6em"}],[D,a]),I=async()=>{let e=m.trim();if(t&&e){S(!0);try{var r;let i=await o("/api/mcp/auth-token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({profileId:t,name:e})});h((null===(r=i.data)||void 0===r?void 0:r.secret)||""),g(""),u(),await Y(),n({title:a.formatMessage({defaultMessage:"Token 已建ç«
1‹",id:"admin.creatorSubscription.planMcp.toast.created"}),status:"success"})}catch(e){n({title:a.formatMessage({defaultMessage:"建立 token 失敗",id:"admin.creatorSubscription.planMcp.toast.createFailed"}),description:e instanceof Error?e.message:"Unknown error",status:"error"})}finally{S(!1)}}};return(0,r.FD)(i.VStack,{align:"stretch",spacing:8,children:[(0,r.FD)(i.HStack,{justify:"space-between",align:"start",spacing:4,flexDir:{base:"column",md:"row"},children:[(0,r.FD)(i.VStack,{align:"stretch",spacing:3,flex:1,children:[(0,r.Y)(i.Text,{color:"gray.600",children:a.formatMessage({defaultMessage:"用你的 AI agent(Claude、Cursor…)連上 Portaly,直接用對話新增方案、調整價格、上下架,不必一項一項在後台手動操作。",id:"admin.creatorSubscription.planMcp.intro"})}),(0,r.FD)(i.UnorderedList,{spacing:1,color:"gray.700",pl:5,children:[(0,r.Y)(i.ListItem,{children:a.formatMessage({defaultMessage:"新增與編輯方案",id:"admin.creatorSubscription.planMcp.capability.edit"})}),(0,r.Y)(i.ListItem,{children:a.formatMessage({defaultMessage:"調整價格與描述",id:"admin.creatorSubscription.planMcp.capability.pricing"})}),(0,r.Y)(i.ListItem,{children:a.formatMessage({defaultMessage:"上架與下架方案",id:"admin.creatorSubscription.planMcp.capability.status"})})]})]}),(0,r.Y)(i.Button,{as:"a",href:"https://portaly.cc/blog/portaly-mcp-ai",target:"_blank",rel:"noopener noreferrer",variant:"outline",size:"sm",colorScheme:"green",flexShrink:0,alignSelf:{base:"stretch",md:"start"},children:a.formatMessage({defaultMessage:"查看完整使用教學",id:"admin.creatorSubscription.planMcp.install.tutorial"})})]}),(0,r.Y)(eX,{step:1,title:a.formatMessage({defaultMessage:"建立並保存 token",id:"admin.creatorSubscription.planMcp.step1.title"}),description:a.formatMessage({defaultMessage:"token 只會顯示一次,建立後請立即複製保存。",id:"admin.creatorSubscription.planMcp.step1.desc"}),children:(0,r.FD)(i.VStack,{align:"stretch",spacing:4,children:[f&&(0,r.Y)(i.Box,{border:"1px solid",borderColor:"GUI.green.300",borderRadius:"xl",p:4,bg:"GUI.green.50",children:(0,r.FD)(i.VStack,{align:"stretch",spacing:3,children:[(0,r.Y)(i.Text,{fontSize:"sm",fontWeight:"700",color:"gray.800",children:a.formatMessage({defaultMessage:"新建立的 token",id:"admin.creatorSubscription.planMcp.newToken.title"})}),(0,r.FD)(i.HStack,{align:"stretch",spacing:2,children:[(0,r.Y)(i.Code,{flex:1,p:3,border:"1px solid",borderColor:"GUI.green.300",borderRadius:"lg",whiteSpace:"pre-wrap",fontSize:"sm",bg:"white",color:"gray.800",children:f}),(0,r.Y)(e_.A,{value:f,label:a.formatMessage({defaultMessage:"複製 token",id:"admin.creatorSubscription.planMcp.copyToken"}),"aria-label":a.formatMessage({defaultMessage:"複製 token",id:"admin.creatorSubscription.planMcp.copyToken"}),alignSelf:"center",colorScheme:"green",variant:"outline"})]})]})}),A&&(0,r.FD)(i.Box,{border:"1px solid",borderColor:"gray.200",borderRadius:"xl",overflow:"hidden",children:[(0,r.FD)(i.HStack,{justify:"space-between",align:{base:"stretch",md:"center"},spacing:4,flexDir:{base:"column",md:"row"},px:4,py:3,borderBottom:"1px solid",borderColor:"gray.100",children:[(0,r.Y)(i.Text,{fontSize:"sm",fontWeight:"700",color:"gray.800",children:a.formatMessage({defaultMessage:"Token 列表",id:"admin.creatorSubscription.planMcp.list.title"})}),(0,r.Y)(i.Button,{colorScheme:"green",size:"sm",onClick:F,isDisabled:!t,alignSelf:{base:"stretch",md:"center"},children:a.formatMessage({defaultMessage:"建立 token",id:"admin.creatorSubscription.planMcp.createToken"})})]}),(0,r.Y)(i.Box,{px:4,py:3,children:(0,r.Y)(p,{data:C,columns:T,variant:"minimal",pageSize:10,disableGlobalFilter:!0,defaultSortBy:[{id:"createdAt",desc:!0}]})})]}),!A&&(0,r.Y)(i.Button,{colorScheme:"green",onClick:F,isDisabled:!t||w,alignSelf:"start",children:a.formatMessage({defaultMessage:"建立 token",id:"admin.creatorSubscription.planMcp.createToken"})})]})}),(0,r.Y)(eX,{step:2,title:a.formatMessage({defaultMessage:"安裝到你的 AI agent",id:"admin.creatorSubscription.planMcp.step2.title"}),description:f?a.formatMessage({defaultMessage:"選擇你使用的工具,token 已自動填入,直接複製下方設定貼到它的 MCP 設定檔即可。",id:"admin.creatorSubscription.planMcp.step2.desc.created"}):a.formatMessage({defaultMessage:"選擇你使用的工具,把下方設定加入它的 MCP 設定檔,並把 token 欄位填入你建立的 token。",id:"admin.creatorSubscription.planMcp.step2.desc.empty"}),children:(0,r.FD)(i.Tabs,{colorScheme:"green",variant:"line",isLazy:!0,children:[(0,r.Y)(i.TabList,{flexWrap:"wrap",children:e$.map(e=>(0,r.Y)(i.Tab,{fontSize:"sm",children:e.name},e.key))}),(0,r.Y)(i.TabPanels,{children:e$.map(e=>(0,r.Y)(i.TabPanel,{px:0,pt:4,children:(0,r.FD)(i.VStack,{align:"stretch",spacing:3,children:[(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.600",children:a.formatMessage({defaultMessage:"把以下內容加入 {name} 的 MCP 設定檔({path}):",id:"admin.creatorSubscription.planMcp.install.clientHint"},{name:e.name,path:(0,r.Y)(i.Code,{children:e.configPath},"path")})}),(0,r.Y)(eZ,{token:f||k})]})},e.key))})]})}),(0,r.Y)(eX,{step:3,title:a.formatMessage({defaultMessage:"開始用對話管理方案",id:"admin.creatorSubscription.planMcp.step3.title"}),description:a.formatMessage({defaultMessage:"重新啟動你的 AI agent,直接用對話新增、編輯與上下架方案。",id:"admin.creatorSubscription.planMcp.step3.desc"})}),(0,r.Y)(eV.A,{profileId:t}),(0,r.FD)(i.Modal,{isOpen:s,onClose:u,isCentered:!0,children:[(0,r.Y)(i.ModalOverlay,{}),(0,r.FD)(i.ModalContent,{children:[(0,r.Y)(i.ModalHeader,{children:a.formatMessage({defaultMessage:"建立 token",id:"admin.creatorSubscription.planMcp.createToken"})}),(0,r.Y)(i.ModalCloseButton,{}),(0,r.Y)(i.ModalBody,{children:(0,r.FD)(i.FormControl,{children:[(0,r.Y)(i.FormLabel,{mb:2,children:a.formatMessage({defaultMessage:"名稱",id:"admin.creatorSubscription.planMcp.column.name"})}),(0,r.Y)(i.Input,{value:m,onChange:e=>g(e.target.value),maxLength:100,bg:"white"})]})}),(0,r.FD)(i.ModalFooter,{gap:3,children:[(0,r.Y)(i.Button,{variant:"ghost",onClick:u,children:a.formatMessage({defaultMessage:"取消",id:"admin.creatorSubscription.planMcp.cancel"})}),(0,r.Y)(i.Button,{colorScheme:"green",onClick:I,isLoading:M,isDisabled:!t||!m.trim(),children:a.formatMessage({defaultMessage:"建立",id:"admin.creatorSubscription.planMcp.create"})})]})]})]})]})},e0="linear-gradient(to right, var(--chakra-colors-gradient-purple), var(--chakra-colors-gradient-teal)) border-box",e1=e=>{let{isUpdate:t,...a}=e,o=(0,d.A)();return(0,r.Y)(i.Button,{size:"sm",borderRadius:"lg",flexShrink:0,border:"2px s
1olid transparent",sx:{background:"linear-gradient(white, white) padding-box, ".concat(e0)},_hover:{background:"linear-gradient(270deg, var(--chakra-colors-gradient-tealDark) 0%, var(--chakra-colors-gradient-purpleDark) 100%) padding-box, ".concat(e0),"& > span":{bgGradient:"none",color:"white",WebkitTextFillColor:"white"}},_active:{opacity:.85},...a,children:(0,r.Y)(i.Text,{as:"span",bgGradient:"linear(to-r, gradient.purple, gradient.teal)",bgClip:"text",fontWeight:"700",children:t?o.formatMessage({defaultMessage:"更新",id:"admin.creatorSubscription.overview.更新"}):o.formatMessage({defaultMessage:"安裝",id:"admin.creatorSubscription.overview.安裝"})})})},e2=e=>{let{entry:t,skillVersions:a}=e,o=(0,d.A)(),{isOpen:n,onOpen:s,onClose:l}=(0,i.useDisclosure)(),{status:c}=q(a,t.skillName),u="current"===c,p=t.isRequired?o.formatMessage({defaultMessage:"必要",id:"admin.creatorSubscription.skillImportance.required"}):o.formatMessage({defaultMessage:"選用",id:"admin.creatorSubscription.skillImportance.optional"});return(0,r.FD)(i.Box,{bg:"white",border:"1px solid",borderColor:"gray.200",borderRadius:"xl",px:{base:4,md:5},py:{base:4,md:5},children:[(0,r.FD)(i.Flex,{align:"center",gap:4,children:[(0,r.Y)(i.Flex,{align:"center",justify:"center",boxSize:"48px",borderRadius:"lg",bg:u?"GUI.green.50":"gray.100",color:u?"GUI.green.700":"gray.600",flexShrink:0,children:(0,r.Y)(i.Icon,{as:t.overviewIcon,boxSize:6})}),(0,r.FD)(i.Box,{minW:0,flex:"1",children:[(0,r.FD)(i.HStack,{spacing:2,align:"center",children:[(0,r.FD)(i.Text,{fontSize:"16px",fontWeight:"700",color:"gray.800",noOfLines:1,children:[t.shortName," Skill"]}),(0,r.Y)(i.Text,{fontSize:"13px",fontWeight:"600",color:t.isRequired?"GUI.green.700":"gray.500",flexShrink:0,children:p})]}),(0,r.Y)(i.Text,{mt:.5,fontSize:"13.5px",color:"gray.600",lineHeight:"1.5",children:t.overviewDescription})]}),"unknown"===c?(0,r.Y)(i.Spinner,{size:"sm",flexShrink:0}):u?(0,r.Y)(i.Button,{size:"sm",borderRadius:"lg",flexShrink:0,variant:"outline",colorScheme:"green",onClick:s,children:o.formatMessage({defaultMessage:"已安裝",id:"admin.creatorSubscription.skillStatus.installed"})}):(0,r.Y)(e1,{isUpdate:"outdated"===c,onClick:s})]}),(0,r.Y)(eT,{isOpen:n,onClose:l,isUpdate:"outdated"===c,...E(t.card)})]})},e5=e=>{let{skillVersions:t,collaborationMode:a,profileId:o}=e,n=(0,d.A)(),{isOpen:s,onToggle:c}=(0,i.useDisclosure)(),u=(0,l.useMemo)(()=>U(n),[n]),p=H("team"===a).map(e=>u[e]);return(0,r.FD)(i.Stack,{spacing:4,children:["team"===a&&o&&(0,r.FD)(i.Stack,{spacing:4,pb:4,children:[(0,r.FD)(i.Flex,{as:"button",type:"button",onClick:c,w:"full",align:"center",justify:"space-between",gap:4,textAlign:"left",border:"1px solid",borderColor:"GUI.green.300",borderRadius:"2xl",bg:"GUI.green.50",px:{base:5,md:6},py:{base:4,md:5},transition:"background 0.15s",_hover:{bg:"GUI.green.80"},"aria-expanded":s,children:[(0,r.FD)(i.Stack,{spacing:1,children:[(0,r.Y)(i.Text,{fontSize:"lg",fontWeight:"700",color:"gray.800",children:n.formatMessage({defaultMessage:"用 AI 對話管理方案",id:"admin.creatorSubscription.planMcp.section.title"})}),(0,r.Y)(i.Text,{color:"gray.600",children:n.formatMessage({defaultMessage:"把方案管理接上你自己的 AI agent,用對話就能新增、改價、上下架方案,不必一項一項在後台手動設定。",id:"admin.creatorSubscription.planMcp.section.description"})})]}),(0,r.FD)(i.HStack,{spacing:1,flexShrink:0,color:"GUI.green.700",fontWeight:"700",children:[(0,r.Y)(i.Text,{fontSize:"sm",children:s?n.formatMessage({defaultMessage:"收合",id:"admin.creatorSubscription.planMcp.section.collapse"}):n.formatMessage({defaultMessage:"展開設定",id:"admin.creatorSubscription.planMcp.section.expand"})}),(0,r.Y)(i.Icon,{as:s?h.gNC:h.bv7,boxSize:5})]})]}),(0,r.Y)(i.Collapse,{in:s,animateOpacity:!0,children:(0,r.Y)(eQ,{profileId:o})})]}),(0,r.Y)(i.Text,{fontSize:"lg",fontWeight:"700",color:"gray.800",children:n.formatMessage({defaultMessage:"Skill 總覽",id:"admin.creatorSubscription.apiOverview.Skill總覽"})}),(0,r.Y)(i.Stack,{spacing:3,children:p.map(e=>(0,r.Y)(e2,{entry:e,skillVersions:t},e.skillName))})]})},e4=e=>["嗨!我們要用 Portaly Payment 收款,串接的部分交給你。","","1. 在你的 Coding Agent(Claude Code、Codex、Cursor)執行:","   npx skills add portaly-ai/portaly-skills --skill portaly-payment-integration","   完成å¾
1Œè®€å–安裝好的 SKILL.md,並依其指示完成串接。","","2. 用下面這組 test 金鑰串接:","   API Key:".concat(e.secret),"   Callback Secret:".concat(e.callbackSecret),"   (這是串接專用金鑰,只能讀方案、建立結帳、驗證回呼,不能建立或修改方案。)","","3. 方案、價格與折扣碼都由我們在 Portaly 後台管理——請不要寫死在程式裡,","   執行時一律用 API 取得並渲染(方案可能隨時新增、改價或下架)。","","4. 完成後用 test 模式跑一筆結帳。成功的話後台會自動顯示「串接完成」並通知我,","   不用再回報。正式上線前我會再把 live 金鑰給你。"].join("\n"),e3=e=>{let{isOpen:t,onClose:a,latestCreatedSecrets:o,isCreatingApiKey:n,onCreateApiKey:s,onCopySecret:c,onCopied:u}=e,p=(0,d.A)(),m=(0,l.useRef)(!1),g=o&&"test"===o.mode&&"integration"===o.scope?o:null;(0,l.useEffect)(()=>{if(!t){m.current=!1;return}g||m.current||n||(m.current=!0,s("test","integration"))},[t,g,n,s]);let f=g?e4(g):"",h=async()=>{f&&(await c(f),null==u||u())};return(0,r.FD)(i.Modal,{isOpen:t,onClose:a,size:"lg",isCentered:!0,children:[(0,r.Y)(i.ModalOverlay,{}),(0,r.FD)(i.ModalContent,{borderRadius:"2xl",children:[(0,r.Y)(i.ModalHeader,{children:p.formatMessage({defaultMessage:"串接說明",id:"admin.creatorSubscription.onboarding.integrationModal.標題"})}),(0,r.Y)(i.ModalCloseButton,{}),(0,r.Y)(i.ModalBody,{pb:6,children:(0,r.FD)(i.Stack,{spacing:4,align:"flex-start",children:[(0,r.Y)(i.Text,{color:"gray.500",children:p.formatMessage({defaultMessage:"複製下方的 prompt 給工程的 Coding Agent,他會協助你完成串接。",id:"admin.creatorSubscription.onboarding.integrationModal.說明"})}),g?(0,r.Y)(i.Box,{w:"full",bg:"gray.50",border:"1px solid",borderColor:"gray.200",borderRadius:"xl",p:4,children:(0,r.Y)(i.Code,{display:"block",bg:"transparent",p:0,whiteSpace:"pre-wrap",wordBreak:"break-word",color:"gray.700",fontSize:"sm",children:f})}):(0,r.Y)(i.Box,{w:"full",py:8,textAlign:"center",children:(0,r.Y)(i.Spinner,{})}),(0,r.Y)(i.Button,{size:"sm",variant:"outline",colorScheme:"green",leftIcon:(0,r.Y)(i.Icon,{as:eM.nxz}),onClick:h,isDisabled:!g,children:p.formatMessage({defaultMessage:"複製串接說明",id:"admin.creatorSubscription.onboarding.integrationModal.複製按鈕"})})]})})]})]})},e6=e=>{let{scopeId:t,action:a}=e,o=(0,d.A)(),{hasCompletedTestCheckout:n}=O(t);return n?(0,r.Y)(i.Box,{bg:"green.50",border:"1px solid",borderColor:"green.200",borderRadius:"2xl",p:4,children:(0,r.FD)(i.HStack,{spacing:2,color:"green.700",children:[(0,r.Y)(i.Icon,{as:eM.A3x}),(0,r.Y)(i.Text,{fontWeight:"700",children:o.formatMessage({defaultMessage:"串接完成",id:"admin.creatorSubscription.onboarding.integrationStatus.完成"})})]})}):(0,r.Y)(i.Box,{bg:"gray.50",border:"1px solid",borderColor:"gray.200",borderRadius:"2xl",p:4,children:(0,r.FD)(i.Flex,{align:{base:"flex-start",md:"center"},justify:"space-between",direction:{base:"column",md:"row"},gap:3,children:[(0,r.FD)(i.HStack,{spacing:2,color:"gray.500",align:"flex-start",children:[void 0===n?(0,r.Y)(i.Spinner,{size:"xs",mt:1}):(0,r.Y)(i.Icon,{as:eM.Ohp,mt:1}),(0,r.Y)(i.Text,{children:o.formatMessage({defaultMessage:"等待工程完成串接——完成一筆測試結帳後,這裡會自動更新並通知你。",id:"admin.creatorSubscription.onboarding.integrationStatus.等待中"})})]}),a?(0,r.Y)(i.Box,{flexShrink:0,alignSelf:{base:"flex-end",md:"auto"},children:a}):null]})})};var e7=a(78846),e8=a(54628);let e9=e=>{let t=e.trim();return!(!t||/\s/.test(t))&&/^(https?:\/\/)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}(:\d+)?(\/\S*)?$/.test(t)},te=e=>{let{merchantId:t}=e,a=(0,d.A)(),o=(0,i.useToast)(),{fetchWithAuth:n}=(0,es.A)(),s="/api/creator-subscription/merchant-review?merchantId=".concat(t),{data:c,error:u,isLoading:p,mutate:m}=(0,b.Ay)(t?s:null,n),g=null==c?void 0:c.data,[f,h]=(0,l.useState)(""),[M,S]=(0,l.useState)(""),[v,y]=(0,l.useState)(!1),[x,Y]=(0,l.useState)(!1),w=(null==g?void 0:g.status)==="verified"&&!x,C=(null==g?void 0:g.isIdentityVerified)===!1,A=w||C;(0,l.useEffect)(()=>{h((null==g?void 0:g.serviceUrl)||""),S((null==g?void 0:g.businessDescription)||""),Y(!1)},[null==g?void 0:g.serviceUrl,null==g?void 0:g.businessDescription,t]);let k=(null==g?void 0:g.status)==="submitted"?a.formatMessage({defaultMessage:"審核中…身份人工認證需 7 - 15 個工作日,請耐心等待。",id:"admin.creatorSubscription.merchantReview.審核中"}):(null==g?void 0:g.status)==="verified"?a.formatMessage({defaultMessage:"已通過審核,這個產品可以建立正式 (Live) API Key。",id:"admin.creatorSubscription.merchantReview.已通過審核"}):(null==g?void 0:g.status)==="rejected"?a.formatMessage({defaultMessage:"審核未通過,請修正後重新送出。原因如下:",id:"admin.creatorSubscription.merchantReview.審核未通過"}):a.formatMessage({defaultMessage:"步驟 2/2:每個產品需各自通過金流審核,才能建立正式 (Live) API Key。請填寫這個產品的資料送出申請。",id:"admin.creatorSubscription.merchantReview.尚未送審"}),F=async()=>
1{if(!e9(f))return o({status:"error",title:a.formatMessage({defaultMessage:"請輸入有效的網址,例如 example.com",id:"admin.creatorSubscription.merchantReview.網址格式錯誤"})}),!1;if((0,e8.A)(f))return o({status:"error",title:a.formatMessage({defaultMessage:"請填寫自行建置的產品或網站網址。如希望使用 Portaly 連結,請申請一般帳號審核",id:"admin.creatorSubscription.merchantReview.不可使用Portaly連結"})}),!1;let e=M.trim();if(e.length<30||e.length>100)return o({status:"error",title:a.formatMessage({defaultMessage:"業務內容請輸入 30 - 100 字",id:"admin.creatorSubscription.merchantReview.業務內容字數"})}),!1;y(!0);try{return await n("/api/creator-subscription/merchant-review",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({merchantId:t,serviceUrl:f,businessDescription:e})}),o({status:"success",title:a.formatMessage({defaultMessage:"已送出審核",id:"admin.creatorSubscription.merchantReview.已送出審核"})}),Y(!1),m(),!0}catch(e){return o({status:"error",title:a.formatMessage({defaultMessage:"送出失敗,請稍後再試",id:"admin.creatorSubscription.merchantReview.送出失敗"})}),!1}finally{y(!1)}};return p?(0,r.Y)(i.Box,{py:6,textAlign:"center",color:"gray.500",children:(0,r.Y)(i.Spinner,{})}):u||!g?(0,r.FD)(i.Alert,{status:"error",borderRadius:"md",children:[(0,r.Y)(i.AlertIcon,{}),a.formatMessage({defaultMessage:"審核狀態載入失敗,請重新整理頁面再試。",id:"admin.creatorSubscription.merchantReview.載入失敗"})]}):(0,r.FD)(i.Stack,{spacing:4,children:[(0,r.Y)(i.Text,{whiteSpace:"pre-wrap",fontWeight:"medium",children:k}),(null==g?void 0:g.status)==="rejected"&&!!g.reason&&(0,r.Y)(i.Text,{color:"red.500",whiteSpace:"pre-wrap",children:g.reason}),(null==g?void 0:g.isIdentityVerified)===!1&&(0,r.FD)(i.Alert,{status:"warning",borderRadius:"md",children:[(0,r.Y)(i.AlertIcon,{}),a.formatMessage({defaultMessage:"身分與收款資料尚未通過審核,通過後才能送出這個產品的審核。",id:"admin.creatorSubscription.merchantReview.需先完成身分審核"})]}),(0,r.Y)(i.Divider,{}),(0,r.FD)(i.FormControl,{isRequired:!0,children:[(0,r.Y)(i.FormLabel,{children:a.formatMessage({defaultMessage:"服務網址",id:"admin.creatorSubscription.merchantReview.服務網址"})}),(0,r.Y)(i.Input,{value:f,onChange:e=>h(e.target.value),placeholder:"example.com",maxLength:200,isReadOnly:A}),(0,r.Y)(i.FormHelperText,{children:a.formatMessage({defaultMessage:"請提供這個產品已上線且可正常操作的網址,審核時我們需實際操作您的服務。",id:"admin.creatorSubscription.merchantReview.服務網址說明"})})]}),(0,r.FD)(i.FormControl,{isRequired:!0,children:[(0,r.Y)(i.FormLabel,{children:a.formatMessage({defaultMessage:"描述這個產品將如何使用 Payment 收款",id:"admin.creatorSubscription.merchantReview.業務內容"})}),(0,r.Y)(i.Textarea,{value:M,onChange:e=>S(e.target.value),rows:4,maxLength:100,isReadOnly:A,placeholder:a.formatMessage({defaultMessage:"例如:我們提供 AI 圖像生成工具,使用者購買訂閱方案以使用進階模型…",id:"admin.creatorSubscription.merchantReview.業務內容範例"})}),(0,r.Y)(i.FormHelperText,{children:a.formatMessage({defaultMessage:"請說明這個產品的服務內容與收費方式(30 - 100 字)。建議先於「方案管理」建立方案,可加速審核。",id:"admin.creatorSubscription.merchantReview.業務內容說明"})})]}),w?(0,r.Y)(i.Button,{alignSelf:"flex-start",variant:"outline",onClick:()=>Y(!0),children:a.formatMessage({defaultMessage:"修改資料",id:"admin.creatorSubscription.merchantReview.修改資料"})}):(null==g?void 0:g.status)==="verified"?(0,r.Y)(e7.A,{alignSelf:"flex-start",colorScheme:"green",isLoading:v,isDisabled:(null==g?void 0:g.isIdentityVerified)===!1,title:a.formatMessage({defaultMessage:"重新送出審核",id:"admin.creatorSubscription.merchantReview.重新送出審核"}),body:a.formatMessage({defaultMessage:"重新送審會讓這個產品回到審核中,並停用它目前所有的正式 (Live) API Key——正在運作的串接會立
1即失效,需等審核通過後重新建立 Key。確定要送出嗎?",id:"admin.creatorSubscription.merchantReview.重送確認說明"}),confirm:a.formatMessage({defaultMessage:"確定送出",id:"admin.creatorSubscription.merchantReview.確定送出"}),onClick:async()=>{if(!await F())throw Error("submit failed")},children:a.formatMessage({defaultMessage:"重新送出審核",id:"admin.creatorSubscription.merchantReview.重新送出審核"})}):(0,r.Y)(i.Button,{alignSelf:"flex-start",colorScheme:"green",isLoading:v,isDisabled:(null==g?void 0:g.isIdentityVerified)===!1,onClick:F,children:(null==g?void 0:g.status)?a.formatMessage({defaultMessage:"重新送出審核",id:"admin.creatorSubscription.merchantReview.重新送出審核"}):a.formatMessage({defaultMessage:"送出審核",id:"admin.creatorSubscription.merchantReview.送出審核"})})]})},tt=e=>{let{icon:t,accent:a,title:o,description:n,buttonLabel:s,confirmTitle:l,confirmBody:d,confirmLabel:c,cancelLabel:u,isDisabled:p,isCurrent:m,onConfirm:g}=e;return(0,r.Y)(i.Box,{bg:"white",border:"1px solid",borderColor:m?a:"gray.200",borderRadius:"2xl",p:{base:5,md:8},h:"full",children:(0,r.FD)(i.Stack,{spacing:4,h:"full",children:[(0,r.Y)(i.Flex,{boxSize:12,borderRadius:"full",bg:a,align:"center",justify:"center",children:(0,r.Y)(i.Icon,{as:t,boxSize:6,color:"white"})}),(0,r.FD)(i.Flex,{align:"center",gap:2,children:[(0,r.Y)(i.Text,{fontSize:"lg",fontWeight:"700",color:"gray.800",children:o}),m?(0,r.Y)(i.Text,{fontSize:"xs",fontWeight:"700",color:a,children:(0,r.Y)(ta,{})}):null]}),(0,r.Y)(i.Text,{color:"gray.500",flex:"1",children:n}),(0,r.Y)(e7.A,{title:l,body:d,confirm:c,cancel:u,confirmColorScheme:"green",bg:a,color:"white",_hover:{opacity:.9},_active:{opacity:.8},isDisabled:p||!!m,alignSelf:"flex-start",onClick:async()=>{await g()},children:s})]})})},ta=()=>{let e=(0,d.A)();return(0,r.Y)(r.FK,{children:e.formatMessage({defaultMessage:"目前使用中",id:"admin.creatorSubscription.onboarding.modeSelect.目前使用中"})})},tr=e=>{let{onSelectMode:t,isSaving:a,merchantSwitcher:o,currentMode:n,onCancel:s}=e,l=(0,d.A)(),c=l.formatMessage({defaultMessage:"建立方案或完成串接後就無法變更模式。",id:"admin.creatorSubscription.onboarding.modeSelect.鎖定警告"}),u=l.formatMessage({defaultMessage:"確定開始",id:"admin.creatorSubscription.onboarding.modeSelect.確定開始"}),p=l.formatMessage({defaultMessage:"再想想",id:"admin.creatorSubscription.onboarding.modeSelect.再想想"});return(0,r.FD)(i.Stack,{spacing:6,children:[o?(0,r.Y)(i.Flex,{justify:"flex-end",children:o}):null,(0,r.Y)(i.Text,{fontSize:"xl",fontWeight:"700",textAlign:"center",color:"gray.800",children:l.formatMessage({defaultMessage:"這個專案會怎麼分工?",id:"admin.creatorSubscription.onboarding.modeSelect.標題"})}),(0,r.FD)(i.SimpleGrid,{columns:{base:1,md:2},spacing:6,children:[(0,r.Y)(tt,{icon:eM.JXP,accent:"GUI.green.500",title:l.formatMessage({defaultMessage:"我自己寫程式,也自己經營",id:"admin.creatorSubscription.onboarding.modeSelect.solo標題"}),description:l.formatMessage({defaultMessage:"串接用你的 Coding Agent 完成;方案、價格與折扣可用 Agent 或直接在後台管理,改動會反映到你的網站。",id:"admin.creatorSubscription.onboarding.modeSelect.solo說明"}),buttonLabel:l.formatMessage({defaultMessage:"選擇個人模式",id:"admin.creatorSubscription.onboarding.modeSelect.solo選擇按鈕"}),confirmTitle:l.formatMessage({defaultMessage:"以個人模式開始",id:"admin.creatorSubscription.onboarding.modeSelect.solo確認標題"}),confirmBody:(0,r.FD)(i.Stack,{spacing:2,children:[(0,r.Y)(i.Text,{fontWeight:"700",color:"gray.700",children:c}),(0,r.Y)(i.Text,{color:"gray.600",children:l.formatMessage({defaultMessage:"方案與價格可用 Coding Agent 或後台管理。",id:"admin.creatorSubscription.onboarding.modeSelect.solo確認說明"})})]}),confirmLabel:u,cancelLabel:p,isDisabled:a,isCurrent:"solo"===n,onConfirm:()=>t("solo")}),(0,r.Y)(tt,{icon:eM.cfS,accent:"GUI.purple.500",title:l.formatMessage({defaultMessage:"我們有工程師負責串接,有人負責營運",id:"admin.creatorSubscription.onboarding.modeSelect.team標題"}),description:l.formatMessage({defaultMessage:"工程師完成串接後,方案、價格與折扣碼都由行銷在後台直接管理,不需再請工程修改。",id:"admin.creatorSubscription.onboarding.modeSelect.team說明"}),buttonLabel:l.formatMessage({defaultMessage:"選擇團隊模式",id:"admin.creatorSubscription.onboarding.modeSelect.team選擇按鈕"}),confirmTitle:l.formatMessage({defaultMessage:"以團隊模式開始",id:"admin.creatorSubscription.onboarding.modeSelect.team確認標題"}),confirmBody:(0,r.FD)(i.Stack,{spacing:2,children:[(0,r.Y)(i.Text,{fontWeight:"700",color:"gray.700",children:c}),(0,r.Y)(i.Text,{color:"gray.600",children:l.formatMessage({defaultMessage:"方案與價格由你在後台管理,工程只做一次性串接。",id:"admin.creatorSubscription.onboarding.modeSelect.team確認說明"})})]}),confirmLabel:u,cancelLabel:p,isDisabled:a,isCurrent:"team"===n,onConfirm:()=>t("team")})]}),s?(0,r.Y)(i.Center,{children:(0,r.Y)(i.Button,{variant:"link",size:"sm",fontWeight:"400",color:"gray.500",isDisabled:a,onClick:s,children:l.formatMessage({defaultMessage:"取消",id:"admin.creatorSubscription.onboarding.modeSelect.取消"})})}):null]})},ti=e=>
1"NT$ ".concat(Math.round(e).toLocaleString("zh-TW")),to=e=>{let{title:t,action:a}=e;return(0,r.FD)(i.Flex,{align:"baseline",justify:"space-between",gap:3,mb:3,children:[(0,r.Y)(i.Text,{fontWeight:"800",fontSize:"18px",whiteSpace:"nowrap",children:t}),a]})},tn=e=>{let{state:t,onNavigateTab:a}=e,o=(0,d.A)(),n=o.formatMessage({defaultMessage:"你的產品",id:"admin.creatorSubscription.overview.你的產品"}),s=[{key:"plan",title:o.formatMessage({defaultMessage:"建立第一個付款方案",id:"admin.creatorSubscription.overview.firstRevenue.建立方案"}),description:o.formatMessage({defaultMessage:"決定賣什麼、多少錢、單次還是訂閱。",id:"admin.creatorSubscription.overview.firstRevenue.建立方案說明"}),done:t.step1Done,cta:{label:o.formatMessage({defaultMessage:"新增方案",id:"admin.creatorSubscription.overview.firstRevenue.新增方案"}),onClick:t.onCreatePlan}},{key:"checkout",title:o.formatMessage({defaultMessage:"把結帳接進你的產品",id:"admin.creatorSubscription.overview.firstRevenue.接結帳"}),description:o.formatMessage({defaultMessage:"讓 Coding Agent 在買家要付款的地方建立結帳、導向 Portaly 付款頁。",id:"admin.creatorSubscription.overview.firstRevenue.接結帳說明"}),done:t.step2Done,cta:{label:o.formatMessage({defaultMessage:"取得串接 prompt",id:"admin.creatorSubscription.overview.firstRevenue.取得串接prompt"}),onClick:t.onIntegrateCheckout}},{key:"first-order",title:o.formatMessage({defaultMessage:"走一筆測試付款,再讓買家看到",id:"admin.creatorSubscription.overview.firstRevenue.測試付款"}),description:o.formatMessage({defaultMessage:"先用 Test 產品確認流程沒問題,訂單會出現在方案與訂單。",id:"admin.creatorSubscription.overview.firstRevenue.測試付款說明"}),done:t.step3Done,cta:{label:o.formatMessage({defaultMessage:"查看方案與訂單",id:"admin.creatorSubscription.overview.firstRevenue.查看方案與訂單"}),onClick:()=>a("plans")}}],l=s.filter(e=>!e.done).length,c=s.findIndex(e=>!e.done);return(0,r.FD)(i.Box,{...ts,children:[(0,r.Y)(i.Text,{fontWeight:"800",fontSize:"18px",children:o.formatMessage({defaultMessage:"「{name}」離第一筆收入還有 {count} 步",id:"admin.creatorSubscription.overview.firstRevenue.標題"},{name:t.productName||n,count:l})}),(0,r.Y)(i.Text,{mt:1,mb:4,fontSize:"14px",color:"gray.600",children:o.formatMessage({defaultMessage:"Portaly Payment 串接已完成,接著按以下步驟建立你的收款流程吧!",id:"admin.creatorSubscription.overview.firstRevenue.說明"})}),(0,r.Y)(i.Stack,{spacing:0,divider:(0,r.Y)(i.Box,{borderBottomWidth:"1px",borderColor:"gray.100"}),children:s.map((e,t)=>{let a=t===c,o=!e.done&&!a;return(0,r.FD)(i.Flex,{align:"center",gap:3,py:3,children:[(0,r.Y)(i.Flex,{w:"28px",h:"28px",flexShrink:0,borderRadius:"full",align:"center",justify:"center",fontSize:"13px",fontWeight:"800",bg:e.done||a?"GUI.green.500":"gray.100",color:e.done||a?"white":"gray.500",children:e.done?(0,r.Y)(i.Icon,{as:h.q9z,boxSize:4,strokeWidth:2}):t+1}),(0,r.FD)(i.Box,{minW:0,flex:"1",children:[(0,r.Y)(i.Text,{fontSize:"15px",fontWeight:"700",color:o?"gray.500":"gray.800",children:e.title}),!e.done&&(0,r.Y)(i.Text,{mt:.5,fontSize:"13.5px",color:"gray.600",lineHeight:"1.5",children:e.description})]}),!e.done&&e.cta&&(0,r.Y)(i.Button,{size:"sm",flexShrink:0,borderRadius:"lg",colorScheme:"green",variant:a?"solid":"outline",onClick:e.cta.onClick,children:e.cta.label})]},e.key)})})]})},ts={bg:"white",borderWidth:"1px",borderColor:"gray.200",borderRadius:"2xl",p:{base:4,md:5}},tl=e=>{let{windows:t,recentOrders:a,activeSubscriberCount:o,isSummaryLoading:s,pendingPayout:c,skills:u,onOpenSkill:p,onNavigateTab:m,onboardingCards:g,firstIncomeSteps:f,isPlansPending:b=!1}=e,M=(0,d.A)(),[S,v]=(0,l.useState)(7),y=(0,l.useMemo)(()=>U(M),[M]),x=null==t?void 0:t[String(S)],Y=!s&&(null==a?void 0:a.length)===0,w=[{key:"orders",label:M.formatMessage({defaultMessage:"訂單數",id:"admin.creatorSubscription.overview.訂單數"}),value:x?x.orderCount.toLocaleString("zh-TW"):"—",isLoading:s},{key:"revenue",label:M.formatMessage({defaultMessage:"營收",id:"admin.creatorSubscription.overview.營收"}),value:x?ti(x.revenue):"—",isLoading:s}],C=[{key:"subscribers",label:M.formatMessage({defaultMessage:"訂閱中",id:"admin.creatorSubscription.overview.訂閱中"}
1),value:null!=o?o.toLocaleString("zh-TW"):"—",isLoading:s},{key:"pending-payout",label:M.formatMessage({defaultMessage:"待撥款餘額",id:"admin.creatorSubscription.overview.待撥款餘額"}),value:null!=c?ti(c):"—",href:"/admin/account",withArrow:!0}],A=e=>{let t=(0,r.FD)(r.FK,{children:[(0,r.FD)(i.HStack,{spacing:1,children:[(0,r.Y)(i.Text,{fontSize:"14px",fontWeight:"700",color:"GUI.gray.700",children:e.label}),e.withArrow&&(0,r.Y)(i.Icon,{as:h.wl$,boxSize:3.5,color:"GUI.green.500","aria-hidden":!0})]}),e.isLoading?(0,r.Y)(i.Box,{mt:2,textAlign:"center",children:(0,r.Y)(i.Spinner,{size:"sm"})}):(0,r.Y)(i.Text,{fontSize:"2xl",fontWeight:"bold",textAlign:"center",whiteSpace:"nowrap",mt:2,sx:{fontVariantNumeric:"tabular-nums"},children:e.value})]}),a={borderRadius:"xl",border:"1px solid",borderColor:"gray.100",p:{base:3,md:4},textAlign:"left",...!!(e.href||e.onClick)&&{transition:"border-color .15s",_hover:{borderColor:"gray.300"}}};return e.href?(0,r.Y)(i.Box,{as:n(),href:e.href,...a,children:t},e.key):e.onClick?(0,r.Y)(i.Box,{as:"button",type:"button",onClick:e.onClick,w:"100%",...a,children:t},e.key):(0,r.Y)(i.Box,{...a,children:t},e.key)};return(0,r.FD)(i.Stack,{spacing:5,pt:5,children:[b&&(0,r.Y)(i.Box,{...ts,py:12,textAlign:"center",children:(0,r.Y)(i.Spinner,{})}),!b&&f&&(0,r.Y)(tn,{state:f,onNavigateTab:m}),!b&&!f&&g,!b&&!f&&!g&&(0,r.FD)(r.FK,{children:[(0,r.FD)(i.Box,{...ts,children:[(0,r.Y)(to,{title:M.formatMessage({defaultMessage:"經營摘要",id:"admin.creatorSubscription.overview.經營摘要"})}),Y?(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.500",children:M.formatMessage({defaultMessage:"有正式訂單後,這裡會出現訂單數、營收、訂閱中人數與待撥款餘額。",id:"admin.creatorSubscription.overview.emptySummaryNote"})}):(0,r.FD)(i.Grid,{templateColumns:{base:"1fr",lg:"1fr 1px 1fr"},gap:{base:5,lg:8},alignItems:"stretch",children:[(0,r.FD)(i.Box,{children:[(0,r.Y)(i.Flex,{p:1,bg:"gray.100",borderRadius:"full",gap:1,align:"center",width:"fit-content",mb:3,children:[7,30].map(e=>(0,r.Y)(i.Button,{size:"sm",variant:"ghost",borderRadius:"full",fontWeight:"700",bg:S===e?"white":"transparent",color:S===e?"gray.900":"gray.500",shadow:S===e?"sm":"none",_hover:{bg:S===e?"white":"gray.200"},onClick:()=>v(e),"aria-pressed":S===e,children:M.formatMessage({defaultMessage:"近 {days} 天",id:"admin.creatorSubscription.overview.近N天"},{days:e})},e))}),(0,r.Y)(i.SimpleGrid,{columns:{base:1,sm:2,lg:1},spacing:{base:3,md:4},children:w.map(A)})]}),(0,r.Y)(i.Box,{display:{base:"none",lg:"block"},bg:"gray.200",alignSelf:"stretch"}),(0,r.FD)(i.Box,{children:[(0,r.Y)(i.Flex,{mb:3,minH:10,align:"center",children:(0,r.Y)(i.Text,{fontSize:"14px",fontWeight:"700",color:"GUI.gray.700",children:M.formatMessage({defaultMessage:"當前累積",id:"admin.creatorSubscription.overview.當前累積"})})}),(0,r.Y)(i.SimpleGrid,{columns:{base:1,sm:2,lg:1},spacing:{base:3,md:4},children:C.map(A)})]})]})]}),(0,r.FD)(i.Grid,{templateColumns:{base:"1fr",lg:"3fr 2fr"},gap:5,alignItems:"start",children:[(0,r.FD)(i.Box,{...ts,p:0,overflow:"hidden",children:[(0,r.FD)(i.Flex,{justify:"space-between",align:"center",px:{base:4,md:5},py:3,borderBottomWidth:"1px",borderColor:"gray.100",children:[(0,r.Y)(i.Text,{fontWeight:"800",fontSize:"18px",children:M.formatMessage({defaultMessage:"近期訂單",id:"admin.creatorSubscription.overview.近期訂單"})}),(0,r.Y)(i.Button,{size:"xs",variant:"link",colorScheme:"green",onClick:()=>m("plans"),children:M.formatMessage({defaultMessage:"查看全部",id:"admin.creatorSubscription.overview.查看全部"})})]}),s?(0,r.Y)(i.Box,{py:6,textAlign:"center",children:(0,r.Y)(i.Spinner,{size:"sm"})}):a?0===a.length?(0,r.Y)(i.Text,{px:4,py:6,fontSize:"14px",color:"GUI.gray.700",textAlign:"center",children:M.formatMessage({defaultMessage:"還沒有正式訂單。完成串接並分享方案後,訂單會顯示在這裡。",id:"admin.creatorSubscription.overview.還沒有正式訂單"})}):(0,r.Y)(i.Stack,{spacing:0,divider:(0,r.Y)(i.Box,{borderBottomWidth:"1px",borderColor:"gray.100"}),children:a.map(e=>{let t=e.occurredAt?new Date(e.occurredAt):null,a="FAILED"===e.status;return(0,r.FD)(i.Flex,{px:{base:4,md:5},py:2.5,align:"center",gap:3,children:[(0,r.FD)(i.Box,{flex:"1",minW:0,children:[(0,r.Y)(i.Text,{fontSize:"15px",fontWeight:"700",noOfLines:1,children:e.planName||"—"}),(0,r.FD)(i.Text,{fontSize:"13px",color:"GUI.gray.700",noOfLines:1,children:[t?(0,eK.A)(t,"MM/dd HH:mm"):"—",e.customerEmail?"・".concat(e.customerEmail):""]})]}),(0,r.Y)(i.Tag,{size:"sm",borderRadius:"full",colorScheme:a?"red":e.isRefunded?"gray":"green",flexShrink:0,children:a?M.formatMessage({defaultMessage:"付款失敗",id:"admin.creatorSubscription.overview.付款失敗"}):e.isRefunded?M.formatMessage({defaultMessage:"已退款",id:"admin.creatorSubscription.overview.已退款"}):M.formatMessage({defaultMessage:"已付款",id:"admin.creatorSubscription.overview.已付款"})}),(0,r.Y)(i.Text,{fontSize:"13px",fontWeight:"800",flexShrink:0,sx:{fontVariantNumeric:"tabular-nums"},children:ti(e.amount)})]},e.id)})}):(0,r.Y)(i.Text,{px:4,py:6,fontSize:"14px",color:"GUI.gray.700",textAlign:"center",children:M.formatMessage({defaultMessage:"資料同步中…",id:"admin.creatorSubscription.overview.資料同步中"})})]}),(0,r.FD)(i.Box,{...ts,children:[(0,r.Y)(to,{title:M.formatMessage({defaultMessage:"Skill 總覽",id:"admin.creatorSubscription.overview.Skill總覽"}),action:(0,r.Y)(i.Button,{size:"xs",variant:"link",colorScheme:"green",onClick:()=>m("api-skills"),children:M.formatMessage({defaultMessage:"查看全部",id:"admin.creatorSubscription.overview.查看全部"})})}),(0,r.Y)(i.Text,{fontSize:"13px",color:"gray.600",mt:-1,mb:3,children:M.formatMessage({defaultMessage:"安裝到你的 Coding Agent,AI 會教你如何使用 Portaly API。",id:"admin.creatorSubscription.overview.skillSubtitle"})}),(0,r.Y)(i.Stack,{spacing:3,children:u.map(e=>{let t=y[e.skillName];return(0,r.FD)(i.Flex,{justify:"space-between",align:"center",gap:3,children:[(0,r.FD)(i.Flex,{align:"center",gap:3,minW:0,children:[(0,r.Y)(i.Flex,{align:"center",justify:"center",boxSize:"36px",borderRadius:"lg",bg:"current"===e.status?"GUI.green.50":"gray.100",color:"current"===e.status?"GUI.green.700":"gray.600",flexShrink:0,children:(0,r.Y)(i.Icon,{as:t.overviewIcon,boxSize:5})}),(0,r.FD)(i.Box,{minW:0,children:[(0,r.FD)(i.HStack,{spacing:1.5,align:"center",children:[(0,r.Y)(i.Text,{fontSize:"14px",fontWeight:"700",noOfLines:1,children:t.shortName}),(0,r.Y)(i.Text,{fontSize:"12px",fontWeight:"600",color:t.isRequired?"GUI.green.700":"gray.500",children:t.isRequired?M.formatMessage({defaultMessage:"必要",id:"admin.creatorSubscription.skillImportance.required"}):M.formatMessage({defaultMessage:"選用",id:"admin.creatorSubscription.skillImportance.optional"})})]}),(0,r.Y)(i.Text,{fontSize:"12.5px",color:"gray.600",noOfLines:2,children:t.overviewDescription})]})]}),"unknown"===e.status?(0,r.Y)(i.Spinner,{size:"xs",flexShrink:0}):"current"===e.status?(0,r.Y)(i.Button,{size:"sm",borderRadius:"lg",flexShrink:0,variant:"outline",colorScheme:"green",onClick:()=>p(e.skillName),children:M.formatMessage({defaultMessage:"已安裝",id:"admin.creatorSubscription.overview.已安裝"})}):(0,r.Y)(e1,{isUpdate:"outdated"===e.status,onClick:()=>p(e.skillName)})]},e.skillName)})})]})]})]})]})};var td=a(78459);let tc=async(e,t)=>{let a=(0,P.doc)(e,"files",t);return(await (0,P.getDoc)(a)).data()},tu=e=>{let t=(0,R.A)(),[,a]="string"==typeof e&&e.startsWith("images/")?e.split("/"):[],[r,i]=(0,l.useState)(void 0);return(0,l.useEffect)(()=>{let e=!1;return t&&a?(tc(t,a).then(t=>{e||i(t)}
1).catch(()=>{e||i(void 0)}),()=>{e=!0}):(i(void 0),()=>{e=!0})},[t,a]),r},tp=e=>{let{merchantLogo:t}=e,a=tu(t),o=(null==t?void 0:t.startsWith("http"))||(null==t?void 0:t.startsWith("/"))?t:(null==a?void 0:a.publicURL)||null;return(0,r.Y)(i.Box,{w:"128px",h:"128px",borderRadius:"xl",overflow:"hidden",children:(0,r.Y)(td.Ay,{src:o,ratio:1,alt:"merchant logo",isPreview:!o,borderRadius:"xl",border:"1px solid",borderColor:"gray.200",sizes:"128px"})})},tm=e=>{let{creatorSubscriptionConfig:t,onSaveMerchantName:a,onUploadMerchantLogo:o,isSavingMerchantName:n,isUploadingMerchantLogo:s}=e,c=(0,d.A)(),u=(0,l.useRef)(null),[p,m]=(0,l.useState)((null==t?void 0:t.merchantName)||"");(0,l.useEffect)(()=>{m((null==t?void 0:t.merchantName)||"")},[null==t?void 0:t.merchantName]);let g=p!==((null==t?void 0:t.merchantName)||""),f=async()=>{await a(p.trim())},h=async e=>{var t;let a=null===(t=e.target.files)||void 0===t?void 0:t[0];a&&(await o(a),e.target.value="")};return(0,r.FD)(i.Stack,{spacing:4,children:[(0,r.FD)(i.Stack,{spacing:1,children:[(0,r.Y)(i.Text,{fontWeight:"600",color:"gray.700",children:c.formatMessage({defaultMessage:"產品名稱",id:"admin.creatorSubscription.config.商店名稱"})}),(0,r.FD)(i.HStack,{align:{base:"stretch",md:"center"},spacing:3,flexDir:{base:"column",md:"row"},children:[(0,r.Y)(i.Input,{value:p,onChange:e=>m(e.target.value),placeholder:c.formatMessage({defaultMessage:"請輸入產品名稱",id:"admin.creatorSubscription.config.請輸入商店名稱"}),maxW:{base:"100%",md:"360px"},bg:"white"}),(0,r.Y)(i.Button,{colorScheme:"green",onClick:f,isLoading:n,isDisabled:!g,alignSelf:{base:"stretch",md:"auto"},children:c.formatMessage({defaultMessage:"儲存",id:"admin.creatorSubscription.config.儲存"})})]})]}),(0,r.FD)(i.Stack,{spacing:2,children:[(0,r.Y)(i.Text,{fontWeight:"600",color:"gray.700",children:c.formatMessage({defaultMessage:"品牌 Logo",id:"admin.creatorSubscription.config.品牌 Logo"})}),(0,r.Y)(tp,{merchantLogo:null==t?void 0:t.merchantLogo}),(0,r.FD)(i.HStack,{children:[(0,r.Y)(i.Button,{variant:"outline",colorScheme:"green",onClick:()=>{var e;return null===(e=u.current)||void 0===e?void 0:e.click()},isLoading:s,children:c.formatMessage({defaultMessage:"上傳品牌 Logo",id:"admin.creatorSubscription.config.上傳品牌Logo"})}),(0,r.Y)(i.VisuallyHiddenInput,{ref:u,type:"file",accept:"image/png,image/jpeg,image/webp,image/gif",onChange:h})]})]})]})},tg=e=>{let{isOpen:t,onClose:a,creatorSubscriptionConfig:o,onSaveMerchantName:n,onUploadMerchantLogo:s,isSavingMerchantName:l,isUploadingMerchantLogo:c,onDelete:u,canDelete:p=!1}=e,m=(0,d.A)();return(0,r.FD)(i.Modal,{isOpen:t,onClose:a,isCentered:!0,size:"lg",children:[(0,r.Y)(i.ModalOverlay,{}),(0,r.FD)(i.ModalContent,{children:[(0,r.Y)(i.ModalHeader,{children:m.formatMessage({defaultMessage:"編輯產品資訊",id:"admin.creatorSubscription.overview.編輯產品資訊"})}),(0,r.Y)(i.ModalCloseButton,{}),(0,r.FD)(i.ModalBody,{pb:6,children:[(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.500",mb:4,children:m.formatMessage({defaultMessage:"名稱與 Logo 會顯示在買家的結帳頁面。",id:"admin.creatorSubscription.overview.產品資訊說明"})}),(0,r.Y)(tm,{creatorSubscriptionConfig:o,onSaveMerchantName:n,onUploadMerchantLogo:s,isSavingMerchantName:l,isUploadingMerchantLogo:c}),p&&u&&(0,r.FD)(i.Box,{mt:6,children:[(0,r.Y)(i.Divider,{mb:4}),(0,r.Y)(i.Button,{size:"sm",colorScheme:"red",variant:"outline",leftIcon:(0,r.Y)(i.Icon,{as:h.yRo,boxSize:4}),onClick:u,children:m.formatMessage({defaultMessage:"刪除此產品",id:"admin.creatorSubscription.store.刪除此產品"})}),(0,r.Y)(i.Text,{mt:2,fontSize:"xs",color:"gray.500",children:m.formatMessage({defaultMessage:"刪除後方案、訂閱、訂單紀錄會保留但無法再透過後台存取。",id:"admin.creatorSubscription.store.刪除產品說明"})})]})]})]})]})},tf=e=>{let{profileId:t,activeBonus:a,accountState:o,offerId:n=null,daysSinceTrialEnd:s=null,isTrialExpired:l=!1}=e,c=(0,d.A)(),u=(0,i.useDisclosure)(),{viewedRef:p,emitCtaClicked:m}=en({profileId:t,touchpoint:eA.lW.STATUS_BANNER,accountState:o,offerId:n,daysSinceTrialEnd:s,dedupe:!0}),g=c.formatMessage({defaultMessage:"立即升級",id:"admin.creatorSubscription.paymentStatusBar.cta"});return(0,r.FD)(i.Box,{ref:p,borderRadius:"md",border:"1px solid",borderColor:"GUI.green.500",bg:"GUI.green.50",px:4,py:3,children:[(0,r.FD)(i.Stack,{direction:{base:"column",md:"row"},align:{base:"flex-start",md:"center"},justify:"space-between",spacing:3,children:[(0,r.FD)(i.HStack,{spacing:3,flexWrap:"wrap",rowGap:1,align:"flex-start",children:[(0,r.Y)(i.Badge,{colorScheme:"gray",borderRadius:"full",px:2,py:.5,flexShrink:0,children:c.formatMessage({defaultMessage:"基礎會員",i
1d:"admin.creatorSubscription.paymentStatusBar.basicTierBadge"})}),(0,r.FD)(i.Stack,{spacing:0,children:[(0,r.Y)(i.Text,{fontSize:"sm",fontWeight:"600",color:"gray.800",children:c.formatMessage({defaultMessage:"升級頂級會員,無上限新增付款方案、開更多收入來源",id:"admin.creatorSubscription.paymentStatusBar.message"})}),l&&(0,r.Y)(i.Text,{fontSize:"xs",color:"gray.600",children:c.formatMessage({defaultMessage:"頂級試用已到期,已開啟的方案不受影響。",id:"admin.creatorSubscription.paymentStatusBar.trialExpiredNote"})})]})]}),(0,r.Y)(i.Button,{colorScheme:"green",flexShrink:0,onClick:()=>{m(),u.onOpen()},children:g})]}),(0,r.Y)(eC,{isOpen:u.isOpen,onClose:u.onClose,activeBonus:a,offerId:n})]})},th=e=>{let{offerId:t=null}=e,a=(0,l.useRef)(null);return(0,ee.M)(ea.Ks,()=>{var e;let t=null===(e=a.current)||void 0===e?void 0:e.querySelector("button");if(!t){console.warn("PaymentTrialExpiredUpgradeTrigger: 找不到 MembershipPlanManager 觸發按鈕,升級跳窗未開啟");return}t.click()}),(0,r.Y)(i.Box,{ref:a,display:"none",children:(0,r.Y)(ey.s,{entryPoint:eY.A.PaymentTrialExpiredModal,offer:t,children:(0,r.Y)(ev.A,{skipPremiumModal:!0,skipCampaignCover:!0,defaultPeriod:k.H0.MONTHLY,tracker:"upgrade.paymentTrialExpiredModal"})})})};var tb=a(90337);let tM=e=>e?e.replace(/<[^>]*>/g," ").replace(/&nbsp;/g," ").replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/\s+/g," ").trim():"",tS=e=>!e||!/<img[\s>]/i.test(e)&&0===tM(e).length,tv=e=>{let{isOpen:t,onClose:a,onSubmit:o,isSubmitting:n}=e,s=(0,d.A)(),c=(0,l.useRef)(null),[u,p]=(0,l.useState)(""),[m,g]=(0,l.useState)(""),[f,h]=(0,l.useState)(""),[b,M]=(0,l.useState)(""),[S,v]=(0,l.useState)("monthly"),[y,x]=(0,l.useState)("fixed"),[Y,w]=(0,l.useState)(!0),[C,A]=(0,l.useState)(""),[k,F]=(0,l.useState)(!0),[D,T]=(0,l.useState)(null),[I,P]=(0,l.useState)(null);(0,l.useEffect)(()=>()=>{I&&URL.revokeObjectURL(I)},[I]);let R="dynamic"===y,B="one-time"!==S,z=Number(f),O=Number(b),L=z>=60&&z<=1e5,N=R||""!==f&&L,E=!R&&""!==f&&!L,W=tS(C)?"":C,H=tM(W).length,U=H>2e4,K=s.formatMessage({defaultMessage:"服務條款最多 {max} 字,目前 {current} 字,請縮短後再送出。",id:"admin.creatorSubscription.plan.服務條款長度錯誤"},{max:2e4.toLocaleString("en-US"),current:H.toLocaleString("en-US")}),_=u.trim().length>0&&N&&!U&&!n,j=s.formatMessage({defaultMessage:"金額須介於 NT${min} 至 NT${max}",id:"admin.creatorSubscription.plan.金額範圍提示"},{min:60..toLocaleString("en-US"),max:1e5.toLocaleString("en-US")}),G=z>1e5?s.formatMessage({defaultMessage:"Portaly Payment 方案最高金額為 100,000 元新台幣,請修正後再送出。",id:"admin.creatorSubscription.plan.金額上限錯誤"}):s.formatMessage({defaultMessage:"Portaly Payment 方案最低金額為 60 元新台幣,請修正後再送出。",id:"admin.creatorSubscription.plan.金額下限錯誤"}),V=s.formatMessage({defaultMessage:"方案圖片(選填)",id:"admin.creatorSubscription.plan.方案圖片"}),q=()=>{p(""),g(""),h(""),M(""),v("monthly"),x("fixed"),w(!0),A(""),F(!0),T(null),P(null)},$=()=>{n||(q(),a())},J=async()=>{_&&(await o({name:u.trim(),description:tS(m)?void 0:m,amount:R?void 0:z,currency:"TWD",billingPeriod:R?"one-time":S,pricingType:y,listPrice:!R&&""!==b&&O>0?O:void 0,collectPhone:Y,termsOfService:W,termsEnabled:k,imageFile:D||void 0}),q())};return(0,r.FD)(i.Modal,{isOpen:t,onClose:$,isCentered:!0,scrollBehavior:"inside",children:[(0,r.Y)(i.ModalOverlay,{}),(0,r.FD)(i.ModalContent,{children:[(0,r.Y)(i.ModalHeader,{children:s.formatMessage({defaultMessage:"新增方案",id:"admin.creatorSubscription.plan.新增方案"})}),(0,r.Y)(i.ModalCloseButton,{}),(0,r.Y)(i.ModalBody,{children:(0,r.FD)(i.Stack,{spacing:4,children:[(0,r.FD)(i.FormControl,{isRequired:!0,children:[(0,r.Y)(i.FormLabel,{children:s.formatMessage({defaultMessage:"方案名稱",id:"admin.creatorSubscription.plan.方案名稱"})}),(0,r.Y)(i.Input,{value:u,onChange:e=>p(e.target.value),placeholder:s.formatMessage({defaultMessage:"例如:月訂閱",id:"admin.creatorSubscription.plan.方案名稱範例"}),maxLength:60})]}),(0,r.FD)(i.FormControl,{children:[(0,r.Y)(i.FormLabel,{children:s.formatMessage({defaultMessage:"方案描述",id:"admin.creatorSubscription.plan.方案描述"})}),(0,r.Y)(i.Box,{maxH:"220px",overflowY:"auto",border:"1px solid",borderColor:"gray.200",borderRadius:"md",sx:{"& p":{margin:0}},children:(0,r.Y)(tb.G,{value:m,onChange:g,disableTools:[],debug:!1,isAttached:!1,toolbarTopPosition:"0",contentBg:"white",minContentHeight:"140px",placeholder:s.formatMessage({defaultMessage:"介紹這個方案的內容,可加入圖片與連結。",id:"admin.creatorSubscription.plan.方案描述提示"})},t?"open":"closed")})]}),(0,r.FD)(i.FormControl,{isRequired:!0,children:[(0,r.Y)(i.FormLabel,{children:s.formatMessage({defaultMessage:"計費週期",id:"admin.creatorSubscription.plan.計費週期"})}),(0,r.FD)(i.Select,{value:S,onChange:e=>{let t=e.target.value;v(t),"one-time"!==t&&x("fixed")},children:[(0,r.Y)("option",{value:"monthly",disabled:R,children:s.formatMessage({defaultMessage:"月訂閱",id:"admin.creatorSubscription.plan.billingPeriod.monthly"})}),(0,r.Y)("option",{value:"one-time",children:s.formatMessage({defaultMessage:"å–
1®æ¬¡ä»˜æ¬¾",id:"admin.creatorSubscription.plan.billingPeriod.oneTime"})})]})]}),(0,r.FD)(i.FormControl,{isRequired:!0,children:[(0,r.Y)(i.FormLabel,{children:s.formatMessage({defaultMessage:"定價類型",id:"admin.creatorSubscription.plan.定價類型"})}),(0,r.FD)(i.Select,{value:y,onChange:e=>x(e.target.value),children:[(0,r.Y)("option",{value:"fixed",children:s.formatMessage({defaultMessage:"固定金額",id:"admin.creatorSubscription.plan.pricingType.fixed"})}),(0,r.Y)("option",{value:"dynamic",disabled:B,children:s.formatMessage({defaultMessage:"動態金額(結帳時決定,僅限單次付款)",id:"admin.creatorSubscription.plan.pricingType.dynamic"})})]}),B?(0,r.Y)(i.FormHelperText,{children:s.formatMessage({defaultMessage:"週期性方案僅支援固定金額。",id:"admin.creatorSubscription.plan.週期性方案僅支援固定金額"})}):null]}),!R&&(0,r.FD)(r.FK,{children:[(0,r.FD)(i.FormControl,{isRequired:!0,isInvalid:E,children:[(0,r.Y)(i.FormLabel,{children:s.formatMessage({defaultMessage:"金額(TWD)",id:"admin.creatorSubscription.plan.金額"})}),(0,r.Y)(i.NumberInput,{min:60,max:1e5,value:f,onChange:e=>h(e),children:(0,r.Y)(i.NumberInputField,{placeholder:"299"})}),E?(0,r.Y)(i.FormErrorMessage,{children:G}):(0,r.Y)(i.FormHelperText,{children:j})]}),(0,r.FD)(i.FormControl,{children:[(0,r.Y)(i.FormLabel,{children:s.formatMessage({defaultMessage:"原價(選填,顯示用)",id:"admin.creatorSubscription.plan.原價"})}),(0,r.Y)(i.NumberInput,{min:1,value:b,onChange:e=>M(e),children:(0,r.Y)(i.NumberInputField,{placeholder:"399"})}),(0,r.Y)(i.FormHelperText,{children:s.formatMessage({defaultMessage:"顯示用的刪除線參考價,建議高於金額才會顯示;請填實際曾提供過的價格。",id:"admin.creatorSubscription.plan.原價說明"})})]})]}),(0,r.Y)(i.FormControl,{children:(0,r.FD)(i.HStack,{justify:"space-between",align:"center",children:[(0,r.Y)(i.FormLabel,{mb:0,children:s.formatMessage({defaultMessage:"結帳頁手機欄位",id:"admin.creatorSubscription.plan.結帳手機號碼"})}),(0,r.Y)(i.Switch,{isChecked:Y,onChange:e=>w(e.target.checked)})]})}),(0,r.FD)(i.FormControl,{isInvalid:U,children:[(0,r.FD)(i.HStack,{justify:"space-between",align:"center",children:[(0,r.Y)(i.FormLabel,{mb:0,children:s.formatMessage({defaultMessage:"服務條款",id:"admin.creatorSubscription.plan.服務條款"})}),(0,r.Y)(i.Switch,{id:"add-plan-terms-switch","aria-label":s.formatMessage({defaultMessage:"顯示服務條款",id:"admin.creatorSubscription.plan.顯示服務條款"}),isChecked:k,onChange:e=>F(e.target.checked)})]}),(0,r.Y)(i.Box,{mt:3,maxH:"240px",overflowY:"auto",border:"1px solid",borderColor:"gray.200",borderRadius:"md",sx:{"& p":{margin:0}},children:(0,r.Y)(tb.G,{value:C,onChange:e=>A(e),disableTools:[],debug:!1,isAttached:!1,toolbarTopPosition:"0",contentBg:"white",minContentHeight:"140px",placeholder:s.formatMessage({defaultMessage:"例如:一、會員資格 ...",id:"admin.creatorSubscription.plan.服務條款提示"})})}),(0,r.Y)(i.FormErrorMessage,{children:K})]}),(0,r.FD)(i.FormControl,{children:[(0,r.Y)(i.FormLabel,{children:V}),(0,r.Y)(i.Box,{as:"button",type:"button",display:"block",width:"full",borderRadius:"md",overflow:"hidden",onClick:()=>{var e;return null===(e=c.current)||void 0===e?void 0:e.click()},children:(0,r.Y)(td.Ay,{src:I,ratio:16/9,alt:V,isPreview:!I,unoptimized:!0,borderRadius:"md"})}),(0,r.Y)(i.Input,{ref:c,type:"file",accept:"image/*",display:"none",onChange:e=>{var t;let a=null===(t=e.target.files)||void 0===t?void 0:t[0];e.target.value="",a&&(T(a),P(URL.createObjectURL(a)))}}),(0,r.Y)(i.FormHelperText,{children:s.formatMessage({defaultMessage:"點擊選擇圖片,建立方案後會自動上傳。",id:"admin.creatorSubscription.plan.點擊選擇圖片"})})]})]})}),(0,r.FD)(i.ModalFooter,{children:[(0,r.Y)(i.Button,{variant:"ghost",mr:3,onClick:$,isDisabled:n,children:s.formatMessage({defaultMessage:"取消",id:"admin.creatorSubscription.plan.取消"})}),(0,r.Y)(i.Button,{colorScheme:"green",onClick:J,isLoading:n,isDisabled:!_,children:s.formatMessage({defaultMessage:"建立方案",id:"admin.creatorSubscription.plan.建立方案"})})]})]})]})};var ty=a(32083);let tx={src:"/_next/static/media/[email protected]",height:400,width:1280,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAADCAMAAACZFr56AAAAG1BMVEU3f5hLZpFWWo1hUow/cpRxPocmjZtvhadoR4nCjiVrAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIElEQVR4nGNgY2NgYGFhZASR7OxMTMwMjIxMzMwcrKwABAIAUEHtfVcAAAAASUVORK5CYII=",blurWidth:8,blurHeight:3},tY={monthly:{defaultMessage:"/每月",id:"admin.creatorSubscription.每月"},yearly:{defaultMessage:"/每年",id:"admin.creatorSubscription.每年"},"one-time":{defaultMessage:"/單次",id:"admin.creatorSubscription.單次"}},tw=e=>({name:e.name,description:e.description||"",amount:null!=e.amount?String(e.amount):"",listPrice:null!=e.listPrice?String(e.listPrice):"",collectPhone:!0===e.collectPhone,termsOfService:e.termsOfService||"",termsEnabled:!1!==e.termsEnabled}),tC=e=>{var t,a;let{isOpen:o,onClose:n,plan:s,onSave:c,onUploadImage:u,isSaving:p,isUploadingImage:m}=e,g=(0,d.A)(),f=(0,l.useRef)(null),h=tu(s.image),b=(null===(t=s.image)||void 0===t?void 0:t.startsWith("http"))||(null===(a=s.image)||void 0===a?void 0:a.startsWith("/"))?s.image:(null==h?void 0:h.publicURL)||null,M=async e=>{var t;let a=null===(t=e.target.files)||void 0===t?void 0:t[0];e.target.value="",a&&await u(s.id,a)},[v,y]=(0,l.useState)(()=>tw(s));(0,l.useEffect)(()=>{o&&y(tw(s))},[o,s]);let x="dynamic"===(s.pricingType||"fixed"),Y=(e,t)=>
1{y(a=>({...a,[e]:t}))},w=v.name.trim(),C=Number(v.amount),A=Number(v.listPrice),k=tS(v.termsOfService)?"":v.termsOfService,F=tM(k).length,D=F>2e4,T=g.formatMessage({defaultMessage:"服務條款最多 {max} 字,目前 {current} 字,請縮短後再送出。",id:"admin.creatorSubscription.plan.服務條款長度錯誤"},{max:2e4.toLocaleString("en-US"),current:F.toLocaleString("en-US")}),I=w.length>0&&!D&&(x||""!==v.amount&&C>0),P=async()=>{if(!I)return;let e=x?{}:""!==v.listPrice&&A>0?{listPrice:A}:null!=s.listPrice?{listPrice:null}:{};try{await c(s.id,{profileId:s.profileId,name:w,description:tS(v.description)?"":v.description,...x?{}:{amount:C},...e,collectPhone:v.collectPhone,termsOfService:k,termsEnabled:v.termsEnabled}),n()}catch(e){}};return(0,r.FD)(i.Modal,{isOpen:o,onClose:n,isCentered:!0,size:"2xl",scrollBehavior:"inside",children:[(0,r.Y)(i.ModalOverlay,{}),(0,r.FD)(i.ModalContent,{children:[(0,r.Y)(i.ModalHeader,{children:g.formatMessage({defaultMessage:"編輯方案",id:"admin.creatorSubscription.plan.編輯方案"})}),(0,r.Y)(i.ModalCloseButton,{}),(0,r.Y)(i.ModalBody,{children:(0,r.FD)(i.Stack,{spacing:4,children:[(0,r.FD)(i.Stack,{spacing:2,children:[(0,r.Y)(i.FormLabel,{mb:0,children:g.formatMessage({defaultMessage:"方案圖片",id:"admin.creatorSubscription.plan.方案圖片"})}),(0,r.FD)(i.Box,{as:"button",type:"button",position:"relative",display:"block",width:"full",borderRadius:"lg",overflow:"hidden",borderWidth:"1px",borderColor:"gray.200",onClick:()=>{var e;return null===(e=f.current)||void 0===e?void 0:e.click()},disabled:m,cursor:m?"progress":"pointer",_hover:{"& .plan-image":{transform:"scale(1.02)",filter:"brightness(0.92)"},"& .plan-image-overlay":{opacity:1}},_focusVisible:{outline:"3px solid",outlineColor:"teal.300",outlineOffset:"-3px"},children:[(0,r.Y)(i.Box,{className:"plan-image",transition:"transform 0.2s ease, filter 0.2s ease",children:(0,r.Y)(td.Ay,{src:b,ratio:3.2,alt:s.name,isPreview:!b})}),(0,r.Y)(i.Center,{className:"plan-image-overlay",position:"absolute",inset:"0",bg:"blackAlpha.500",color:"white",opacity:m?1:0,transition:"opacity 0.2s ease",pointerEvents:"none",children:(0,r.FD)(i.Stack,{spacing:2,align:"center",children:[(0,r.Y)(i.Icon,{as:S.TbK,boxSize:7}),(0,r.Y)(i.Text,{fontSize:"sm",fontWeight:"700",children:m?g.formatMessage({defaultMessage:"圖片上傳中...",id:"admin.creatorSubscription.plan.圖片上傳中"}):g.formatMessage({defaultMessage:"點擊上傳圖片",id:"admin.creatorSubscription.plan.點擊上傳圖片"})})]})})]}),(0,r.Y)(i.Input,{ref:f,type:"file",accept:"image/*",display:"none",onChange:M})]}),(0,r.FD)(i.FormControl,{isRequired:!0,children:[(0,r.Y)(i.FormLabel,{children:g.formatMessage({defaultMessage:"方案名稱",id:"admin.creatorSubscription.plan.方案名稱"})}),(0,r.Y)(i.Input,{value:v.name,onChange:e=>Y("name",e.target.value),maxLength:60,placeholder:g.formatMessage({defaultMessage:"例如:月訂閱",id:"admin.creatorSubscription.plan.方案名稱範例"})})]}),x?(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.500",children:g.formatMessage({defaultMessage:"自由定價:金額由買家於結帳時決定",id:"admin.creatorSubscription.plan.自由定價說明"})}):(0,r.FD)(r.FK,{children:[(0,r.FD)(i.FormControl,{isRequired:!0,children:[(0,r.Y)(i.FormLabel,{children:g.formatMessage({defaultMessage:"金額(TWD)",id:"admin.creatorSubscription.plan.金額"})}),(0,r.Y)(i.NumberInput,{min:1,value:v.amount,onChange:e=>Y("amount",e),children:(0,r.Y)(i.NumberInputField,{placeholder:"299"})})]}),(0,r.FD)(i.FormControl,{children:[(0,r.Y)(i.FormLabel,{children:g.formatMessage({defaultMessage:"原價(選填,顯示用)",id:"admin.creatorSubscription.plan.原價"})}),(0,r.Y)(i.NumberInput,{min:1,value:v.listPrice,onChange:e=>Y("listPrice",e),children:(0,r.Y)(i.NumberInputField,{placeholder:"399"})}),(0,r.Y)(i.FormHelperText,{children:g.formatMessage({defaultMessage:"顯示用的刪除線參考價,建議高於金額才會顯示;請填實際曾提供過的價格。",id:"admin.creatorSubscription.plan.原價說明"})})]})]}),(0,r.FD)(i.FormControl,{children:[(0,r.Y)(i.FormLabel,{children:g.formatMessage({defaultMessage:"方案描述",id:"admin.creatorSubscription.plan.方案描述"})}),(0,r.Y)(i.Box,{maxH:"240px",overflowY:"auto",border:"1px solid",borderColor:"gray.200",borderRadius:"md",sx:{"& p":{margin:0}},children:(0,r.Y)(tb.G,{value:v.description,onChange:e=>Y("description",e),disableTools:[],debug:!1,isAttached:!1,toolbarTopPosition:"0",contentBg:"white",minContentHeight:"140px",placeholder:g.formatMessage({defaultMessage:"介紹這個方案的內容,可加入圖片與連結。",id:"admin.creatorSubscription.plan.方案描述提示"})})})]}),(0,r.Y)(i.FormControl,{children:(0,r.FD)(i.HStack,{justify:"space-between",align:"center",children:[(0,r.Y)(i.FormLabel,{mb:0,children:g.formatMessage({defaultMessage:"結帳頁手機欄位",id:"admin.creatorSubscription.plan.結帳手機號碼"})}),(0,r.Y)(i.Switch,{isChecked:v.collectPhone,onChange:e=>Y("collectPhone",e.target.checked)})]})}),(0,r.FD)(i.FormControl,{isInvalid:D,children:[(0,r.FD)(i.HStack,{justify:"space-between",align:"center",children:[(0,r.Y)(i.FormLabel,{mb:0,children:g.formatMessage({defaultMessage:"服務條款",id:"admin.creatorSubscription.plan.服務條款"})}),(0,r.Y)(i.Switch,{id:"edit-plan-terms-switch","aria-label":g.formatMessage({defaultMessage:"顯示服務條款",id:"admin.creatorSubscription.plan.顯示服務條款"}),isChecked:v.termsEnabled,onChange:e=>Y("termsEnabled",e.target.checked)})]}),(0,r.Y)(i.Box,{mt:3,maxH:"240px",overflowY:"auto",border:"1px solid",borderColor:"gray.200",borderRadius:"md",sx:{"& p":{margin:0}},children:(0,r.Y)(tb.G,{value:v.termsOfService,onChange:e=>Y("termsOfService",e),disableTools:[],debug:!1,isAttached:!1,toolbarTopPosition:"0",contentBg:"white",minContentHeight:"140px",placeholder:g.formatMessage({defaultMessage:"例如:一、會員資格 ...",id:"admin.creatorSubscription.plan.服務條款提示"})})}),(0,r.Y)(i.FormErrorMessage,{children:T})]}),(0,r.FD)(i.Stack,{spacing:1,bg:"gray.50",borderRadius:"md",p:3,children:[(0,r.FD)(i.HStack,{justify:"space-between",children:[(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.500",children:g.formatMessage({defaultMessage:"計費週期",id:"admin.creatorSubscription.plan.計費週期"})}),(0,r.Y)(i.Text,{fontSize:"sm",fontWeight:"600",color:"gray.700",children:g.formatMessage(tY[s.billingPeriod]).replace(/^\//,"")})]}),(0,r.FD)(i.HStack,{justify:"space-between",children:[(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.500",children:g.formatMessage({defaultMessage:"定價模式",id:"admin.creatorSubscription.plan.定價模式"})}),(0,r.Y)(i.Text,{fontSize:"sm",fontWeight:"600",color:"gray.700",children:g.formatMessage(x?{defaultMessage:"自由定價",id:"admin.creatorSubscription.plan.自由定價"}:{defaultMessage:"固定價格",id:"admin.creatorSubscription.plan.固定價格"})})]}),(0,r.Y)(i.Text,{fontSize:"xs",color:"gray.400",children:g.formatMessage({defaultMessage:"建立後無法變更",id:"admin.creatorSubscription.plan.建立後無法變更"})})]})]})}),(0,r.FD)(i.ModalFooter,{children:[(0,r.Y)(i.Button,{variant:"ghost",mr:3,onClick:n,children:g.formatMessage({defaultMessage:"取消",id:"admin.creatorSubscription.plan.取消"})}),(0,r.Y)(i.Button,{colorScheme:"green",onClick:P,isLoading:p,isDisabled:!I,children:g.formatMessage({defaultMessage:"儲存",id:"admin.creatorSubscription.plan.儲存"})})]})]})]})},tA={monthly:{defaultMessage:"/每月",id:"admin.creatorSubscription.每月"},yearly:{defaultMessage:"/每年",id:"admin.creatorSubscription.每年"},"one-time":{defaultMessage:"/單次",id:"admin.creatorSubscription.單次"}},tk={monthly:tx,yearly:{src:"/_next/static/media/[email protected]",height:400,width:1280,blurDataURL:"data:image/png;
1base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAADCAMAAACZFr56AAAADFBMVEVgMn5sLn94LoGKWpq5/yA7AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAHElEQVR4nBXEMQ0AAADCsA38eyb0KDmVxFZAPgwCAwAclnz5ugAAAABJRU5ErkJggg==",blurWidth:8,blurHeight:3},"one-time":{src:"/_next/static/media/[email protected]",height:400,width:1280,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAADCAMAAACZFr56AAAAD1BMVEUQjYoQlJESnZoSmZZGrKlA6ItAAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAHklEQVR4nBXHsQ0AAAzCsAT4/+aq3kzSVKV1E/gAHAJ0ACO1g7emAAAAAElFTkSuQmCC",blurWidth:8,blurHeight:3}},tF=new Map,tD=e=>{var t,a;let{image:o,alt:n,billingPeriod:s,onUpload:c,isUploading:u=!1}=e,p=(0,d.A)(),m=(0,l.useRef)(null),g=tu(o),f=(null==o?void 0:o.startsWith("http"))||(null==o?void 0:o.startsWith("/"))?o:void 0,h=null!==(t=null!=f?f:null==g?void 0:g.publicURL)&&void 0!==t?t:void 0;(0,l.useEffect)(()=>{o&&h&&tF.set(o,h)},[o,h]);let b=null!=h?h:o?tF.get(o):void 0,M=(0,r.Y)(td.Ay,{src:null!==(a=null!=b?b:tk[s])&&void 0!==a?a:tx,alt:n,ratio:3.2});return c?(0,r.FD)(r.FK,{children:[(0,r.FD)(i.Box,{as:"button",type:"button",position:"relative",display:"block",w:"100%",disabled:u,cursor:u?"progress":"pointer","aria-label":p.formatMessage({defaultMessage:"點擊上傳圖片",id:"admin.creatorSubscription.plan.點擊上傳圖片"}),onClick:e=>{var t;e.stopPropagation(),null===(t=m.current)||void 0===t||t.click()},_hover:{"& .plan-image-overlay":{opacity:1}},_focusVisible:{outline:"3px solid",outlineColor:"teal.300",outlineOffset:"-3px"},children:[M,(0,r.Y)(i.Center,{className:"plan-image-overlay",position:"absolute",inset:"0",bg:"blackAlpha.500",color:"white",opacity:u?1:0,transition:"opacity 0.2s ease",pointerEvents:"none",children:(0,r.FD)(i.Stack,{spacing:1,align:"center",children:[(0,r.Y)(i.Icon,{as:S.TbK,boxSize:6}),(0,r.Y)(i.Text,{fontSize:"sm",fontWeight:"700",children:u?p.formatMessage({defaultMessage:"圖片上傳中...",id:"admin.creatorSubscription.plan.圖片上傳中"}):p.formatMessage({defaultMessage:"點擊上傳圖片",id:"admin.creatorSubscription.plan.點擊上傳圖片"})})]})})]}),(0,r.Y)(i.Input,{ref:m,type:"file",accept:"image/*",display:"none",onChange:e=>{var t;let a=null===(t=e.target.files)||void 0===t?void 0:t[0];e.target.value="",a&&c(a)}})]}):M},tT=e=>{let{plan:t,productName:a,isSelected:o=!1,onSelect:n,onDelete:s,onRestore:c,isDeleting:u,isRestoring:p,isTeamMode:m=!1,onSave:g,onUploadImage:f,isSaving:h=!1,isUploadingImage:b=!1}=e,M=(0,d.A)(),[v,y]=(0,l.useState)(!1),x=M.formatMessage(tA[t.billingPeriod]),Y="en"===M.locale?"".concat(t.currency," "):"TWD"===t.currency?"NT$":"".concat(t.currency," "),w="active"!==t.status,C="dynamic"===(t.pricingType||"fixed"),A=t.name?"「".concat(t.name,"」"):M.formatMessage({defaultMessage:"這個方案",id:"admin.creatorSubscription.plan.editPrompt.這個方案"}),k=a?"「".concat(a,"」"):M.formatMessage({defaultMessage:"你的產品",id:"admin.creatorSubscription.overview.你的產品"});return(0,r.FD)(r.FK,{children:[(0,r.FD)(i.Box,{role:n?"button":void 0,tabIndex:n?0:void 0,cursor:n?"pointer":void 0,textAlign:"left",w:"100%",bg:"white",border:"1px solid",borderColor:o?"GUI.green.500":"gray.200",borderRadius:"2xl",overflow:"hidden",transition:"border-color .15s",_hover:{borderColor:n?"GUI.green.300":"gray.200"},display:"flex",flexDirection:"column",h:"full",opacity:w?.75:1,onClick:n?()=>n(t):void 0,onKeyDown:n?e=>{e.target===e.currentTarget&&("Enter"===e.key||" "===e.key)&&(e.preventDefault(),n(t))}:void 0,"aria-pressed":n?o:void 0,children:[(0,r.Y)(tD,{image:t.image,alt:t.name,billingPeriod:t.billingPeriod,onUpload:f?e=>f(t.id,e):void 0,isUploading:b}),(0,r.FD)(i.Stack,{spacing:2,p:4,flex:"1",children:[(0,r.Y)(i.Text,{fontSize:"15px",fontWeight:"700",color:"gray.800",noOfLines:2,children:t.name}),(0,r.Y)(i.HStack,{align:"baseline",spacing:2,flexWrap:"wrap",children:C?(0,r.Y)(i.Text,{fontSize:"lg",fontWeight:"800",color:"gray.800",children:M.formatMessage({defaultMessage:"自由定價",id:"admin.creatorSubscription.plan.自由定價"})}):(0,r.FD)(r.FK,{children:[(0,r.Y)(ty.A,{prefix:Y,fontSize:"2xl",fontWeight:"800",lineHeight:"1.1",color:"gray.800",children:t.amount}),(0,r.Y)(i.Text,{color:"gray.500",fontSize:"sm",fontWeight:"600",children:x}),null!=t.listPrice&&t.listPrice>t.amount&&(0,r.FD)(i.Text,{as:"s",color:"gray.400",fontSize:"sm",children:[Y,t.listPrice.toLocaleStr
1ing()]})]})}),(0,r.Y)(i.Text,{fontSize:"12px",color:"GUI.gray.700",children:M.formatMessage({defaultMessage:"更新於 {date}",id:"admin.creatorSubscription.plan.更新於日期"},{date:em(t.updatedAt,M.locale)})}),(0,r.FD)(i.HStack,{spacing:2,pt:1,mt:"auto",children:[(0,r.Y)(i.Button,{size:"sm",variant:"outline",colorScheme:"green",borderRadius:"lg",leftIcon:(0,r.Y)(i.Icon,{as:S.Yvo,boxSize:4}),onClick:e=>{e.stopPropagation(),y(!0)},children:M.formatMessage({defaultMessage:"編輯方案",id:"admin.creatorSubscription.plan.編輯方案"})}),(0,r.Y)(i.Button,{size:"sm",variant:"ghost",color:"GUI.gray.700",borderRadius:"lg",leftIcon:(0,r.Y)(i.Icon,{as:w?S.pY0:S.mYI,boxSize:4}),isLoading:w?p:u,isDisabled:h,onClick:e=>{e.stopPropagation(),w?c(t):s(t)},children:w?M.formatMessage({defaultMessage:"取消封存",id:"admin.creatorSubscription.plan.取消封存"}):M.formatMessage({defaultMessage:"封存方案",id:"admin.creatorSubscription.plan.封存方案"})})]})]})]}),m&&g&&f?(0,r.Y)(tC,{isOpen:v,onClose:()=>y(!1),plan:t,onSave:g,onUploadImage:f,isSaving:h,isUploadingImage:b}):(0,r.Y)(eT,{isOpen:v,onClose:()=>y(!1),title:M.formatMessage({defaultMessage:"編輯{planName}",id:"admin.creatorSubscription.plan.editPrompt.title"},{planName:A}),bodyText:M.formatMessage({defaultMessage:"複製 prompt 給你的 Coding Agent,改好的內容會自動更新到這裡。",id:"admin.creatorSubscription.plan.editPrompt.body"}),installPrompt:M.formatMessage({defaultMessage:"請用 Portaly Payment Skill 修改{productName}的付款方案{planName}(planId: {planId}):\n1. 先把這個方案目前的設定列出來給我看。\n2. 要改哪些欄位跟我確認過再更新——計費週期與定價方式建立後鎖住,改不了;要換圖就跟我要檔案。\n3. 改完回報結果。",id:"admin.creatorSubscription.plan.editPrompt.prompt"},{productName:k,planName:A,planId:t.id})})]})},tI=e=>{let{plans:t,onDeletePlan:a,onRestorePlan:o,deletingPlanId:n,restoringPlanId:s,isFreeTier:c=!1,profileId:u,productName:p,accountState:m,activeBonus:g,offerId:f=null,daysSinceTrialEnd:h=null,isUpgradeStatusLoading:b=!1,selectedPlanId:M=null,onSelectPlan:v,leadingControl:y,autoOpenAddPlan:x=!1,onAutoOpenAddPlanConsumed:Y,isTeamMode:w=!1,onAddPlan:C,isAddingPlan:A=!1,onSavePlan:k,onUploadPlanImage:F,savingPlanId:D=null,uploadingPlanImageId:T=null}=e,I=(0,d.A)(),{viewedRef:P,emitCtaClicked:R}=en({profileId:u,touchpoint:eA.lW.PLAN_CREATE_BLOCKED,accountState:m,offerId:f,daysSinceTrialEnd:h,dedupe:!0}),B=c&&!b?P:void 0,[z,O]=(0,l.useState)("active"),{isOpen:L,onOpen:N,onClose:E}=(0,i.useDisclosure)(),W=(0,i.useDisclosure)(),H=c?()=>{R(),W.onOpen()}:N;(0,l.useEffect)(()=>{x&&(H(),null==Y||Y())},[x]);let U=p?"「".concat(p,"」"):I.formatMessage({defaultMessage:"你的產品",id:"admin.creatorSubscription.overview.你的產品"}),K=(0,r.FD)(r.FK,{children:[w&&C?(0,r.Y)(tv,{isOpen:L,onClose:E,onSubmit:async e=>{await C(e),E()},isSubmitting:A}):(0,r.Y)(eT,{isOpen:L,onClose:E,title:I.formatMessage({defaultMessage:"新增方案",id:"admin.creatorSubscription.plan.新增方案"}),bodyText:I.formatMessage({defaultMessage:"複製 prompt 給你的 Coding Agent,建好方案會自動出現在列表。",id:"admin.creatorSubscription.plan.addPrompt.body"}),installPrompt:I.formatMessage({defaultMessage:"請用 Portaly Payment Skill 幫{productName}新增一個付款方案:\n1. 先把現有方案列給我看,有能沿用的就不要新建。\n2. 名稱、說明、金額、計費
1週期、定價方式跟我確認過再建立;要放方案圖就跟我要檔案。\n3. 建好回報給我。",id:"admin.creatorSubscription.plan.addPrompt.prompt"},{productName:U})}),c&&(0,r.Y)(eC,{isOpen:W.isOpen,onClose:W.onClose,activeBonus:g,entryPoint:eY.A.PlanCreateBlocked,tracker:"upgrade.creatorSubscriptionAddPlan",offerId:f,title:I.formatMessage({defaultMessage:"升級啟用新方案",id:"admin.creatorSubscription.upgradeIntro.title.plan"})})]}),_=I.formatMessage({defaultMessage:"新增方案",id:"admin.creatorSubscription.plan.新增方案"}),j=(0,l.useMemo)(()=>t.filter(e=>"active"===e.status).slice().reverse(),[t]),G=(0,l.useMemo)(()=>t.filter(e=>"active"!==e.status).slice().reverse(),[t]),V="active"===z?j:G,[q,$]=(0,l.useState)(0),J=Math.max(1,Math.ceil(V.length/3)),Z=Math.min(q,J-1),X=V.slice(3*Z,3*Z+3);(0,l.useEffect)(()=>{$(0)},[z]);let Q=(0,l.useRef)({view:z,count:V.length});if((0,l.useEffect)(()=>{let e=Q.current;Q.current={view:z,count:V.length},e.view===z&&V.length>e.count&&$(J-1)},[z,V.length,J]),(0,l.useEffect)(()=>{if(!M)return;let e=V.findIndex(e=>e.id===M);e<0||$(Math.floor(e/3))},[M,V]),!t.length)return(0,r.FD)(r.FK,{children:[y&&(0,r.Y)(i.Box,{mb:4,children:y}),(0,r.FD)(i.Box,{p:{base:6,md:10},bg:"white",border:"1px solid",borderColor:"gray.200",borderRadius:"2xl",children:[(0,r.Y)(eS,{py:10}),(0,r.Y)(i.Text,{mt:3,textAlign:"center",fontSize:"lg",fontWeight:"700",children:I.formatMessage({defaultMessage:"尚未建立任何訂閱方案",id:"admin.creatorSubscription.尚未建立任何訂閱方案"})}),(0,r.Y)(i.Text,{mt:2,textAlign:"center",color:"gray.500",children:I.formatMessage({defaultMessage:"建立第一個方案後,這裡會顯示你的所有的訂閱方案。",id:"admin.creatorSubscription.建立第一個方案後,這裡會顯示你的所有的訂閱方案。"})}),(0,r.Y)(i.Stack,{align:"center",mt:6,spacing:2,children:(0,r.Y)(i.Box,{ref:B,children:(0,r.Y)(eN,{isLocked:c,children:(0,r.Y)(i.Button,{variant:"outline",colorScheme:"green",borderRadius:"xl",leftIcon:(0,r.Y)(i.Icon,{as:S.jgn,boxSize:5}),onClick:H,children:_})})})})]}),K]});let ee=I.formatMessage({defaultMessage:"使用中 ({count})",id:"admin.creatorSubscription.plan.tab.active"},{count:j.length}),et=I.formatMessage({defaultMessage:"已封存 ({count})",id:"admin.creatorSubscription.plan.tab.inactive"},{count:G.length});return(0,r.FD)(i.Stack,{children:[K,(0,r.FD)(i.Flex,{marginBottom:4,align:{base:"stretch",md:"center"},justify:"space-between",direction:{base:"column",md:"row"},gap:3,children:[null!=y?y:(0,r.Y)(i.Box,{}),(0,r.FD)(i.HStack,{spacing:3,align:"center",children:[(0,r.FD)(i.Flex,{p:1,bg:"gray.100",borderRadius:"full",gap:1,align:"center",children:[(0,r.Y)(i.Button,{size:"sm",variant:"ghost",borderRadius:"full",fontWeight:"700",bg:"active"===z?"white":"transparent",color:"active"===z?"gray.900":"gray.500",shadow:"active"===z?"sm":"none",_hover:{bg:"active"===z?"white":"gray.200"},onClick:()=>O("active"),children:ee}),(0,r.Y)(i.Button,{size:"sm",variant:"ghost",borderRadius:"full",fontWeight:"700",bg:"inactive"===z?"white":"transparent",color:"inactive"===z?"gray.900":"gray.500",shadow:"inactive"===z?"sm":"none",_hover:{bg:"inactive"===z?"white":"gray.200"},onClick:()=>O("inactive"),children:et})]}),(0,r.Y)(i.Box,{ref:B,children:(0,r.Y)(eN,{isLocked:c,children:(0,r.Y)(i.Button,{size:"sm",variant:"outline",colorScheme:"green",borderRadius:"xl",leftIcon:(0,r.Y)(i.Icon,{as:S.jgn,boxSize:5}),onClick:H,children:_})})})]})]}),X.length?(0,r.FD)(r.FK,{children:[(0,r.Y)(i.SimpleGrid,{columns:{base:1,sm:2,lg:3},spacing:4,children:X.map(e=>(0,r.Y)(tT,{plan:e,productName:p,isSelected:M===e.id,onSelect:v,onDelete:a,onRestore:o,isDeleting:n===e.id,isRestoring:s===e.id,isTeamMode:w,onSave:k,onUploadImage:F,isSaving:D===e.id,isUploadingImage:T===e.id},e.id))}),J>1&&(0,r.Y)(i.HStack,{as:"nav",justify:"center",mt:3,spacing:1.5,"aria-label":I.formatMessage({defaultMessage:"方案分頁",id:"admin.creatorSubscription.plan.pagination"}),children:Array.from({length:J},(e,t)=>{let a=t===Z;return(0,r.Y)(i.Button,{size:"xs",minW:"28px",h:"28px",borderRadius:"lg",variant:a?"solid":"ghost",colorScheme:"green",color:a?void 0:"GUI.gray.700",fontWeight:"700",onClick:()=>$(t),"aria-current":a?"page":void 0,children:t+1},t)})})]}):(0,r.Y)(i.Box,{py:10,bg:"white",border:"1px solid",borderColor:"gray.200",borderRadius:"2xl",textAlign:"center",children:(0,r.Y)(i.Text,{color:"gray.500",children:"active"===z?I.formatMessage({defaultMessage:"目前沒有使用中的方案",id:"admin.creatorSubscription.plan.empty.active"}):I.formatMessage({defaultMessage:"目前沒有已封存的方案",id:"admin.creatorSubscription.plan.empty.inactive"})})})]})},tP=e=>
1"NT$ ".concat(Math.round(e).toLocaleString("zh-TW")),tR=e=>{let{name:t,logo:a,size:o="34px",iconBoxSize:n=4,borderRadius:s="lg"}=e,l=tu(a),d=(null==a?void 0:a.startsWith("http"))||(null==a?void 0:a.startsWith("/"))?a:(null==l?void 0:l.publicURL)||null;return(0,r.Y)(i.Flex,{w:o,h:o,borderRadius:s,bg:"GUI.green.50",color:"GUI.green.700",align:"center",justify:"center",flexShrink:0,overflow:"hidden",children:d?(0,r.Y)(i.Image,{src:d,alt:t,w:"full",h:"full",objectFit:"cover"}):(0,r.Y)(i.Icon,{as:h.Uxc,boxSize:n})})},tB=e=>{let{products:t,isLoading:a,isStatsLoading:o,activeMerchantId:n,onSelect:s,onCreate:c,onEdit:u,skillStatusByMerchantId:p,isConnectProductPremiumOnly:m=!1}=e,g=(0,d.A)(),[f,b]=(0,l.useState)(0),M=Math.max(1,Math.ceil(t.length/2)),S=Math.min(f,M-1),v=t.slice(2*S,2*S+2);return((0,l.useEffect)(()=>{let e=t.findIndex(e=>e.merchantId===n);e<0||b(Math.floor(e/2))},[n,t]),a)?(0,r.Y)(i.Box,{bg:"white",borderWidth:"1px",borderColor:"gray.200",borderRadius:"2xl",py:6,textAlign:"center",children:(0,r.Y)(i.Spinner,{})}):(0,r.FD)(i.Box,{bg:"white",borderWidth:"1px",borderColor:"gray.200",borderRadius:"2xl",p:{base:4,md:5},children:[(0,r.Y)(i.Flex,{align:"baseline",justify:"space-between",gap:3,mb:3,children:(0,r.Y)(i.Text,{fontWeight:"800",fontSize:"18px",whiteSpace:"nowrap",children:g.formatMessage({defaultMessage:"你的產品",id:"admin.creatorSubscription.overview.你的產品"})})}),(0,r.FD)(i.SimpleGrid,{columns:{base:1,sm:2,lg:3},spacing:3,children:[v.map(e=>{let t=e.merchantId===n,a=e.connectedKeyModes,l=null==p?void 0:p[e.merchantId];return(0,r.FD)(i.Box,{as:"button",type:"button",textAlign:"left",position:"relative",borderWidth:"1px",borderColor:t?"GUI.green.500":"gray.200",bg:t?"GUI.green.50":"white",borderRadius:"xl",p:4,display:"flex",flexDirection:"row",alignItems:"flex-start",gap:4,transition:"border-color .15s",_hover:{borderColor:"GUI.green.300"},onClick:()=>s(e.merchantId),"aria-pressed":t,children:[t&&u?(0,r.Y)(i.IconButton,{as:"span",role:"button",tabIndex:0,size:"xs",isRound:!0,bg:"whiteAlpha.700",color:"GUI.gray.700",shadow:"sm",_hover:{bg:"white"},position:"absolute",top:2,right:2,zIndex:1,"aria-label":g.formatMessage({defaultMessage:"編輯產品資訊",id:"admin.creatorSubscription.overview.編輯產品資訊"}),icon:(0,r.Y)(i.Icon,{as:h.YUE,boxSize:4}),onClick:e=>{e.stopPropagation(),u()},onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),e.stopPropagation(),u())}}):t?(0,r.Y)(i.Flex,{position:"absolute",top:2,right:2,zIndex:1,w:"24px",h:"24px",borderRadius:"full",bg:"whiteAlpha.700",shadow:"sm",align:"center",justify:"center",children:(0,r.Y)(i.Icon,{as:h.CU3,color:"GUI.green.500",boxSize:5})}):null,(0,r.FD)(i.Box,{flex:"1",minW:0,children:[(0,r.Y)(i.Text,{fontWeight:"700",fontSize:"15px",noOfLines:1,minW:0,pr:t?6:0,children:e.name}),(0,r.FD)(i.Flex,{gap:2,mt:3,flexWrap:"wrap",align:"center",children:[a.length?a.map(e=>(0,r.Y)(i.Tag,{size:"sm",borderRadius:"full",colorScheme:"test"===e?"gray":"green",fontWeight:"700",children:"test"===e?g.formatMessage({defaultMessage:"測試 Test",id:"admin.creatorSubscription.overview.測試Test"}):g.formatMessage({defaultMessage:"正式 Live",id:"admin.creatorSubscription.overview.正式Live"})},e)):(0,r.Y)(i.Tag,{size:"sm",borderRadius:"full",colorScheme:"gray",children:e.keyModes.length?g.formatMessage({defaultMessage:"尚未串接",id:"admin.creatorSubscription.overview.尚未串接"}):g.formatMessage({defaultMessage:"尚未建立金鑰",id:"admin.creatorSubscription.overview.尚未建立金鑰"})}),void 0!==l&&(0,r.Y)(i.Tag,{size:"sm",borderRadius:"full",colorScheme:"current"===l?"green":"red",variant:"subtle",fontWeight:"700",children:"current"===l?g.formatMessage({defaultMessage:"Skill 最新",id:"admin.creatorSubscription.overview.Skill最新"}):g.formatMessage({defaultMessage:"Skill 有新版",id:"admin.creatorSubscription.overview.Skill有新版"})})]}),(0,r.FD)(i.Text,{mt:3,fontSize:"13.5px",color:"GUI.gray.700",sx:{fontVariantNumeric:"tabular-nums"},children:[g.formatMessage({defaultMessage:"累積營收",id:"admin.creatorSubscription.overview.累積營收"})," ",(0,r.Y)(i.Text,{as:"span",fontWeight:"800",color:"text",children:null!=e.totalRevenue?tP(e.totalRevenue):o?(0,r.Y)(i.Spinner,{size:"xs"}):"—"})]})]}),(0,r.Y)(i.Box,{alignSelf:"center",flexShrink:0,children:(0,r.Y)(tR,{name:e.name,logo:e.logo,size:"88px",iconBoxSize:8,borderRadius:"xl"})})]},e.merchantId)}),c&&(0,r.Y)(eN,{isLocked:m,w:"100%",h:"100%",children:(0,r.Y)(i.Button,{variant:"outline",borderStyle:"dashed",borderRadius:"xl",h:"auto",minH:"94px",w:"100%",color:"GUI.gray.700",fontWeight:"700",leftIcon:(0,r.Y)(i.Icon,{as:h.K0m}),onClick:c,children:g.formatMessage({defaultMessage:"串接新產品",id:"admin.creatorSubscription.overview.串接新產品"})})})]}),M>1&&(0,r.Y)(i.HStack,{justify:"center",mt:3,spacing:1.5,"aria-label":g.formatMessage({defaultMessage:"產品分頁",id:"admin.creatorSubscription.overview.產品分頁"}),children:Array.from({length:M},(e,t)=>{let a=t===S;return(0,r.Y)(i.Button,{size:"xs",minW:"28px",h:"28px",borderRadius:"lg",variant:a?"solid":"ghost",colorScheme:"green",color:a?void 0:"GUI.gray.700",fontWeight:"700",onClick:()=>b(t),"aria-current":a?"page":void 0,children:t+1},t)})})]})};var tz=a(84577),tO=a(9882),tL=a(8548),tN=a(63081);function tE(){let e=(0,tz._)(["\n  0%, 4% { transform: translate(140px, -140px); }\n  20%, 88% { transform: translate(0, 0); }\n  100% { transform: translate(140px, -140px); }\n"]);return tE=function(){return e},e}function tW(){let e=(0,tz._)(["\n  0%, 19% { opacity: 0; transform: scale(0.4); }\n  23% { opacity: 0.5; transform: scale(1); }\n  32%, 100% { opacity: 0; transform: scale(1.7); }\n"]);return tW=function(){return e},e}function tH(){let e=(0,tz._)(["\n  0%, 19% { transform: scale(1); }\n  22% { transform: scale(0.93); }\n  27%, 100% { transform: scale(1); }\n"]);return tH=function(){return e},e}function tU(){let e=(0,tz._)(["\n  0%, 24% { opacity: 0; transform: translateY(-8px) scale(0.96); }\n  32%, 86% { opacity: 1; transform: translateY(0) scale(1); }\n  94%, 100% { opacity: 0; transform: translateY(-8px) scale(0.96); }\n"]);return tU=function(){return e},e}function tK(){let e=(0,tz._)(["\n  0%, 24% { opacity: 0; }\n  32%, 86% { opacity: 1; }\n  94%, 100% { opacity: 0; }\n"]);return tK=function(){return e},e}let t_={fontVariantNumeric:"tabular-nums"},tj=e=>!e.some(e=>null===e.excludedReason)&&e.some(e=>"PROMOTION_URL_REQUIRED"===e.excludedReason),tG=e=>{let{amount:t,rate:a,feeRate:r,taxRate:i,serviceFeeRate:o=tN.Ml}=e,n=e=>Math.round(e),s=n(t*r/100),l=n(t*a/100),d=n((t-l)*i/100),c=n(t*o/100);return{feeRate:r,taxRate:i,serviceFeeRate:o,paymentFee:s,tax:d,commission:l,serviceFee:c,net:t-s-d-l-c}},tV=tO.A,tq=e=>{let{isOpen:t,onClose:a,store:o,feeRate:n=12,taxRate:s=6,serviceFeeRate:c=tN.Ml,initialRate:u,minRate:p=tN.HE,maxRate:m=tN.Bk,sampleAmount:g,isSubmitting:f=!1,onSubmit:h}=e,b=(0,d.A)(),[M,S]=(0,l.useState)(String(u)),v=(0,l.useRef)(u);if(v.current=u,(0,l.useEffect)(()=>{t&&S(String(v.current))},[t]),!o)return null;let y=Number(M),x=""===M.trim(),Y=!x&&Number.isInteger(y),w=Y&&(y<p||y>m),C=x||!Y||w,A=tG({amount:g,rate:C?0:y,feeRate:n,taxRate:s,serviceFeeRate:c}),k=!C&&g>0&&A.net<=0,F=[{label:b.formatMessage({defaultMessage:"方案售價",id:"admin.creatorSubscription.promotion.rate.方案售價"}
1),value:"NT$".concat(g.toLocaleString())},{label:b.formatMessage({defaultMessage:"Portaly 手續費 {rate}%",id:"admin.creatorSubscription.promotion.rate.手續費"},{rate:A.feeRate}),value:"−NT$".concat(A.paymentFee.toLocaleString())},{label:b.formatMessage({defaultMessage:"稅費 {rate}%",id:"admin.creatorSubscription.promotion.rate.稅費"},{rate:A.taxRate}),value:"−NT$".concat(A.tax.toLocaleString())},{label:C?b.formatMessage({defaultMessage:"推廣分潤 —",id:"admin.creatorSubscription.promotion.rate.分潤未填"}):b.formatMessage({defaultMessage:"推廣分潤 {rate}%",id:"admin.creatorSubscription.promotion.rate.分潤"},{rate:y}),value:C?"—":"−NT$".concat(A.commission.toLocaleString()),emphasize:!0},{label:b.formatMessage({defaultMessage:"平台服務費 {rate}%",id:"admin.creatorSubscription.promotion.rate.服務費"},{rate:A.serviceFeeRate}),value:"−NT$".concat(A.serviceFee.toLocaleString())}];return(0,r.FD)(i.Modal,{isOpen:t,onClose:a,isCentered:!0,size:"lg",children:[(0,r.Y)(i.ModalOverlay,{}),(0,r.FD)(i.ModalContent,{borderRadius:"2xl",mx:4,children:[(0,r.Y)(i.ModalHeader,{fontSize:"18px",fontWeight:"800",pb:2,children:b.formatMessage({defaultMessage:"設定分潤比例",id:"admin.creatorSubscription.promotion.rate.標題"})}),(0,r.Y)(i.ModalCloseButton,{}),(0,r.Y)(i.ModalBody,{pb:6,children:(0,r.FD)(i.Stack,{spacing:5,children:[(0,r.FD)(i.Box,{children:[(0,r.Y)(i.Text,{fontSize:"14px",color:"gray.600",children:b.formatMessage({defaultMessage:"產品",id:"admin.creatorSubscription.promotion.rate.產品"})}),(0,r.Y)(i.Text,{fontWeight:"700",fontSize:"16px",children:o.name||o.merchantId})]}),(0,r.FD)(i.Box,{children:[(0,r.Y)(i.Text,{fontSize:"14px",fontWeight:"700",mb:1.5,children:b.formatMessage({defaultMessage:"分潤比例",id:"admin.creatorSubscription.promotion.rate.分潤比例"})}),(0,r.FD)(i.InputGroup,{size:"md",maxW:"200px",children:[(0,r.Y)(i.Input,{value:M,onChange:e=>S(e.target.value),type:"number",step:1,min:p,max:m,borderRadius:"lg",isInvalid:C,"aria-label":b.formatMessage({defaultMessage:"分潤比例",id:"admin.creatorSubscription.promotion.rate.分潤比例"}),autoFocus:!0}),(0,r.Y)(i.InputRightElement,{pointerEvents:"none",color:"gray.500",children:"%"})]}),(0,r.Y)(i.Text,{mt:1.5,fontSize:"13px",color:C?"red.500":"gray.500",children:C?b.formatMessage({defaultMessage:"請輸入 {min}–{max} 之間的數字",id:"admin.creatorSubscription.promotion.rate.範圍提示"},{min:p,max:m}):b.formatMessage({defaultMessage:"這個產品所有單次買斷方案共用同一個比例。",id:"admin.creatorSubscription.promotion.rate.共用說明"})})]}),(0,r.FD)(i.Box,{bg:"gray.50",borderRadius:"xl",px:4,py:3.5,children:[(0,r.Y)(i.Text,{fontSize:"13px",fontWeight:"700",color:"gray.600",mb:2,children:b.formatMessage({defaultMessage:"以 NT${amount} 的方案試算,你實收",id:"admin.creatorSubscription.promotion.rate.試算標頭"},{amount:g.toLocaleString()})}),(0,r.FD)(i.Stack,{spacing:1.5,children:[F.map(e=>(0,r.FD)(i.Flex,{justify:"space-between",fontSize:"14px",children:[(0,r.Y)(i.Text,{color:e.emphasize?"gray.800":"gray.600",children:e.label}),(0,r.Y)(i.Text,{fontWeight:e.emphasize?"700":"500",sx:{fontVariantNumeric:"tabular-nums"},children:e.value})]},e.label)),(0,r.Y)(i.Divider,{my:1}),(0,r.FD)(i.Flex,{justify:"space-between",align:"baseline",children:[(0,r.Y)(i.Text,{fontSize:"14px",fontWeight:"800",children:b.formatMessage({defaultMessage:"實收",id:"admin.creatorSubscription.promotion.rate.實收"})}),(0,r.Y)(i.Text,{fontSize:"20px",fontWeight:"800",color:k?"red.500":"GUI.green.500",children:C?"—":"NT$".concat(A.net.toLocaleString())})]}),k&&(0,r.Y)(i.Text,{fontSize:"13px",color:"red.500",children:b.formatMessage({defaultMessage:"分潤加上手續費({feeRate}%)、稅費({taxRate}%)與服務費({serviceFeeRate}%)已超過售價,這個比例會讓你倒賠。",id:"admin.creatorSubscription.promotion.rate.實收為負"},{feeRate:A.feeRate,taxRate:A.taxRate,serviceFeeRate:A.serviceFeeRate})})]})]}),(0,r.FD)(i.Flex,{gap:3,justify:"flex-end",children:[(0,r.Y)(i.Button,{variant:"ghost",borderRadius:"xl",onClick:a,children:b.formatMessage({defaultMessage:"取消",id:"admin.creatorSubscription.promotion.rate.取消"})}),(0,r.Y)(i.Button,{borderRadius:"xl",colorScheme:"green",isDisabled:C||f,isLoading:f,onClick:()=>h(y),children:b.formatMessage({defaultMessage:"確定",id:"admin.creatorSubscription.promotion.rate.確定"})})]})]})})]})]})},t$="6.4s",tJ=(0,i.keyframes)(tE()),tZ=(0,i.keyframes)(tW()),tX=(0,i.keyframes)(tH()),tQ=(0,i.keyframes)(tU()),t0=(0,i.keyframes)(tK()),t1=()=>{let e=(0,d.A)();return(0,r.Y)(i.Box,{bg:"gray.100",borderRadius:"xl",p:{base:3,md:4},sx:{pointerEvents:"none"}
1,"aria-hidden":!0,children:(0,r.FD)(i.Box,{position:"relative",h:{base:"300px",md:"340px"},bg:"white",borderRadius:"lg",borderWidth:"1px",borderColor:"gray.200",boxShadow:"sm",overflow:"hidden",children:[(0,r.FD)(i.Flex,{align:"center",gap:2.5,px:3,h:"34px",bg:"gray.50",borderBottomWidth:"1px",borderColor:"gray.100",children:[(0,r.Y)(i.HStack,{spacing:1.5,flexShrink:0,children:["red.300","yellow.300","green.300"].map(e=>(0,r.Y)(i.Box,{w:"8px",h:"8px",borderRadius:"full",bg:e},e))}),(0,r.Y)(i.Box,{flex:"1",bg:"white",borderWidth:"1px",borderColor:"gray.200",borderRadius:"full",px:2.5,children:(0,r.Y)(i.Text,{fontFamily:"mono",fontSize:"11px",color:"gray.500",children:"portaly.ai/checkout/subscription"})})]}),(0,r.FD)(i.Box,{position:"relative",h:"calc(100% - 34px)",bg:"gray.50",children:[(0,r.Y)(i.Flex,{align:"flex-start",justify:"center",h:"100%",pt:3,px:4,children:(0,r.FD)(i.Stack,{w:{base:"92%",md:"312px"},spacing:2,bg:"white",borderWidth:"1px",borderColor:"gray.100",borderRadius:"xl",boxShadow:"sm",px:4,py:3,children:[(0,r.FD)(i.HStack,{spacing:2,children:[(0,r.Y)(i.Box,{w:"20px",h:"20px",borderRadius:"md",bg:"gray.800"}),(0,r.FD)(i.Box,{children:[(0,r.Y)(i.Text,{fontSize:"9px",color:"gray.400",lineHeight:"1.2",children:e.formatMessage({defaultMessage:"商家名稱",id:"admin.creatorSubscription.promotion.checkoutDemo.商家名稱"})}),(0,r.Y)(i.Text,{fontWeight:"800",fontSize:"11px",lineHeight:"1.3",children:"YourApp"})]})]}),(0,r.FD)(i.Box,{children:[(0,r.Y)(i.Text,{fontWeight:"800",fontSize:"14px",children:e.formatMessage({defaultMessage:"感謝你的購買!",id:"admin.creatorSubscription.promotion.checkoutDemo.感謝你的購買"})}),(0,r.Y)(i.Text,{fontSize:"11px",color:"gray.500",children:e.formatMessage({defaultMessage:"你的訂單已成功建立。",id:"admin.creatorSubscription.promotion.checkoutDemo.訂單已建立"})})]}),(0,r.FD)(i.Stack,{spacing:1,fontSize:"10.5px",color:"gray.600",children:[(0,r.FD)(i.Flex,{justify:"space-between",children:[(0,r.Y)(i.Text,{children:e.formatMessage({defaultMessage:"訂單金額",id:"admin.creatorSubscription.promotion.checkoutDemo.訂單金額"})}),(0,r.FD)(i.Text,{fontWeight:"700",color:"gray.800",children:["NT$ ",1200..toLocaleString()]})]}),(0,r.FD)(i.Flex,{justify:"space-between",children:[(0,r.Y)(i.Text,{children:e.formatMessage({defaultMessage:"方案名稱",id:"admin.creatorSubscription.promotion.checkoutDemo.方案名稱"})}),(0,r.Y)(i.Text,{fontWeight:"700",color:"gray.800",children:e.formatMessage({defaultMessage:"AI 簡報課程(單次買斷)",id:"admin.creatorSubscription.promotion.checkoutDemo.範例方案名稱"})})]})]}),(0,r.Y)(i.Flex,{align:"center",justify:"center",bg:"GUI.green.500",color:"white",borderRadius:"lg",py:1.5,fontSize:"12px",fontWeight:"700",children:e.formatMessage({defaultMessage:"開始使用服務",id:"admin.creatorSubscription.promotion.checkoutDemo.開始使用服務"})}),(0,r.FD)(i.Box,{position:"relative",animation:"".concat(tX," ").concat(t$," ease-in-out infinite"),children:[(0,r.Y)(i.Box,{position:"absolute",inset:"-5px",borderRadius:"xl",borderWidth:"2px",borderColor:"GUI.green.500",animation:"".concat(tZ," ").concat(t$," ease-out infinite")}),(0,r.Y)(i.Flex,{align:"center",justify:"center",borderWidth:"1.5px",borderColor:"GUI.green.500",color:"GUI.green.500",bg:"white",borderRadius:"lg",py:1.5,fontSize:"12px",fontWeight:"700",children:e.formatMessage({defaultMessage:"取得專屬分潤連結",id:"admin.creatorSubscription.promotion.checkoutDemo.取得專屬分潤連結"})})]})]})}),(0,r.Y)(i.Box,{position:"absolute",inset:0,bg:"blackAlpha.300",zIndex:2,animation:"".concat(t0," ").concat(t$," ease-out infinite")}),(0,r.FD)(i.Stack,{spacing:2,position:"absolute",top:"14px",left:"50%",ml:{base:"-44%",md:"-150px"},w:{base:"88%",md:"300px"},bg:"white",borderRadius:"xl",boxShadow:"xl",px:4,py:3,zIndex:2,transformOrigin:"center",animation:"".concat(tQ," ").concat(t$," ease-out infinite"),children:[(0,r.FD)(i.Flex,{justify:"space-between",align:"center",children:[(0,r.Y)(i.Text,{fontSize:"10.5px",color:"gray.400",children:e.formatMessage({defaultMessage:"品牌名稱",id:"admin.creatorSubscription.promotion.checkoutDemo.品牌名稱"})}),(0,r.Y)(i.Text,{fontWeight:"800",fontSize:"12px",children:"YourApp"})]}),(0,r.Y)(i.Box,{h:"1px",bg:"gray.100"}),(0,r.FD)(i.Flex,{children:[(0,r.FD)(i.Box,{flex:"1",children:[(0,r.Y)(i.Text,{fontSize:"9.5px",color:"gray.400",children:e.formatMessage({defaultMessage:"產品售價",id:"admin.creatorSubscription.promotion.checkoutDemo.產品售價"})}),(0,r.FD)(i.Text,{fontWeight:"800",fontSize:"12px",children:["$",1200..toLocaleStr
1ing()]})]}),(0,r.FD)(i.Box,{flex:"1",textAlign:"center",children:[(0,r.Y)(i.Text,{fontSize:"9.5px",color:"gray.400",children:e.formatMessage({defaultMessage:"分潤比例",id:"admin.creatorSubscription.promotion.checkoutDemo.分潤比例"})}),(0,r.FD)(i.Text,{fontWeight:"800",fontSize:"12px",children:[20,"%"]})]}),(0,r.FD)(i.Box,{flex:"1",textAlign:"right",children:[(0,r.Y)(i.Text,{fontSize:"9.5px",color:"gray.400",children:e.formatMessage({defaultMessage:"收益模式",id:"admin.creatorSubscription.promotion.checkoutDemo.收益模式"})}),(0,r.Y)(i.Text,{fontWeight:"800",fontSize:"12px",children:"CPS"})]})]}),(0,r.FD)(i.HStack,{spacing:2,align:"flex-end",children:[(0,r.FD)(i.Box,{flex:"1",minW:0,children:[(0,r.Y)(i.Text,{fontSize:"9.5px",color:"gray.400",mb:.5,children:e.formatMessage({defaultMessage:"折扣碼",id:"admin.creatorSubscription.promotion.checkoutDemo.折扣碼"})}),(0,r.FD)(i.Flex,{align:"center",gap:1,bg:"gray.50",borderRadius:"md",px:2,py:1,children:[(0,r.Y)(i.Icon,{as:S.kn0,boxSize:3,color:"gray.400"}),(0,r.Y)(i.Text,{fontSize:"11px",color:"gray.400",children:e.formatMessage({defaultMessage:"無",id:"admin.creatorSubscription.promotion.checkoutDemo.無"})})]})]}),(0,r.FD)(i.Box,{flex:"1.5",minW:0,children:[(0,r.Y)(i.Text,{fontSize:"9.5px",color:"gray.400",mb:.5,children:e.formatMessage({defaultMessage:"廣告連結",id:"admin.creatorSubscription.promotion.checkoutDemo.廣告連結"})}),(0,r.FD)(i.Flex,{align:"center",gap:1,bg:"gray.50",borderRadius:"md",px:2,py:1,children:[(0,r.Y)(i.Icon,{as:S.kn0,boxSize:3,color:"gray.500"}),(0,r.Y)(i.Text,{fontFamily:"mono",fontSize:"10.5px",color:"gray.700",isTruncated:!0,children:"go.portaly.cc/p/u_8fK2"})]})]})]}),(0,r.Y)(i.Flex,{justify:"flex-end",pt:.5,children:(0,r.Y)(i.Flex,{align:"center",bg:"GUI.green.500",color:"white",borderRadius:"lg",px:3,py:1,fontSize:"12px",fontWeight:"700",children:e.formatMessage({defaultMessage:"複製連結",id:"admin.creatorSubscription.promotion.checkoutDemo.複製連結"})})})]}),(0,r.Y)(i.Box,{position:"absolute",top:"190px",left:"200px",w:"18px",h:"18px",zIndex:1,filter:"drop-shadow(0 1px 2px rgba(0,0,0,0.35))",animation:"".concat(tJ," ").concat(t$," ease-in-out infinite"),children:(0,r.Y)(i.Box,{as:"svg",viewBox:"0 0 24 24",width:"18",height:"18",sx:{path:{fill:"gray.800",stroke:"white"}},children:(0,r.Y)("path",{d:"M5.5 3.2 L5.5 20.6 L10.1 16.3 L13 22 L15.6 20.8 L12.8 15.4 L18.6 15.4 Z",strokeWidth:"1.4",strokeLinejoin:"round"})})})]})]})})},t2=e=>{let{onGetSkill:t,blockCopy:a}=e,o=(0,d.A)(),n=!!a,s=[o.formatMessage({defaultMessage:"用戶幫你賣出,會收穫你提供的分潤收益。",id:"admin.creatorSubscription.promotion.notInstalled.賣點1"}),o.formatMessage({defaultMessage:"買過的人最有動機推薦,入口就在購買完成頁,不用自己多做介面。",id:"admin.creatorSubscription.promotion.notInstalled.賣點2"})];return(0,r.FD)(i.Flex,{direction:{base:"column",lg:"row"},align:{base:"stretch",lg:"center"},gap:{base:5,lg:8},borderWidth:"1px",borderColor:"gray.200",borderRadius:"2xl",p:{base:5,md:6},children:[(0,r.Y)(i.Box,{flex:"1.15",minW:0,children:(0,r.Y)(t1,{})}),(0,r.FD)(i.Stack,{flex:"1",minW:0,spacing:5,children:[(0,r.FD)(i.Box,{children:[(0,r.Y)(i.Text,{fontWeight:"800",fontSize:"20px",children:o.formatMessage({defaultMessage:"讓買過的用戶幫你賣",id:"admin.creatorSubscription.promotion.notInstalled.標題"})}),(0,r.Y)(i.Text,{mt:2,fontSize:"15px",color:"gray.600",lineHeight:"1.9",children:o.formatMessage({defaultMessage:"讓 AI 串接 Payment 推廣模組:用戶買下單次買斷方案後,購買完成頁直接給他一條專屬分潤連結。",id:"admin.creatorSubscription.promotion.notInstalled.描述"})})]}),(0,r.Y)(i.Stack,{spacing:2.5,children:s.map(e=>(0,r.FD)(i.HStack,{align:"flex-start",spacing:2.5,children:[(0,r.Y)(i.Icon,{as:S.mU9,boxSize:5,color:"GUI.green.500",flexShrink:0,mt:"1px"}),(0,r.Y)(i.Text,{fontSize:"14px",color:"gray.700",lineHeight:"1.8",children:e})]},e))}),t&&(0,r.FD)(i.Stack,{spacing:2,children:[(0,r.Y)(i.Box,{children:(0,r.Y)(tL.A,{size:"lg",colorScheme:"green",borderRadius:"xl",rightIcon:(0,r.Y)(i.Icon,{as:S.JvP,boxSize:5}),onClick:t,isDisabled:n,children:o.formatMessage({defaultMessage:"取得推廣 Skill",id:"admin.creatorSubscription.promotion.取得推廣Skill"})})}),n&&(0,r.Y)(i.Text,{fontSize:"13.5px",color:"orange.600",children:a})]})]})]})},t5=e=>{let{onGetSkill:t}=e,a=(0,d.A)();return(0,r.FD)(i.Flex,{direction:{base:"column",md:"row"},align:{base:"flex-start",md:"center"},gap:3.5,mb:5,px:5,py:4,bg:"orange.50",borderWidth:"1px",borderColor:"orange.200",borderRadius:"xl",children:[(0,r.FD)(i.HStack,{spacing:3.5,align:"center",flex:"1",minW:0,children:[(0,r.Y)(i.Icon,{as:S.f3H,boxSize:6,color:"orange.500",flexShrink:0}),(0,r.Y)(i.Text,{fontWeight:"700",fontSize:"15px",children:a.formatMessage({defaultMessage:"推廣 Skill 有新版本",id:"admin.creatorSubscription.promotion.更新Banner標題"})})]}),t&&(0,r.Y)(tL.A,{colorScheme:"orange",borderRadius:"xl",onClick:t,flexShrink:0,children:a.formatMessage({defaultMessage:"更新推廣 Skill",id:"admin.creatorSubscription.promotion.更新推廣Skill"})})]})},t4=e=>{let{onShowExample:t}=e,a=(0,d.A)(),o=[{title:a.formatMessage({defaultMessage:"開啟分潤,設定比例",
1id:"admin.creatorSubscription.promotion.step1.標題"}),description:a.formatMessage({defaultMessage:"在上方挑一個有單次付款方案的產品,打開開關。",id:"admin.creatorSubscription.promotion.step1.說明"})},{title:a.formatMessage({defaultMessage:"請 Agent 動手改程式",id:"admin.creatorSubscription.promotion.step2.標題"}),description:a.formatMessage({defaultMessage:"跟它說要開推廣,安裝好的 Skill 會帶著做完。",id:"admin.creatorSubscription.promotion.step2.說明"})},{title:a.formatMessage({defaultMessage:"買家幫你賣,成交才付錢",id:"admin.creatorSubscription.promotion.step3.標題"}),description:a.formatMessage({defaultMessage:"完成頁自動給連結,分潤金額見下表。",id:"admin.creatorSubscription.promotion.step3.說明"}),action:(0,r.Y)(tL.A,{size:"xs",variant:"outline",borderRadius:"md",onClick:t,children:a.formatMessage({defaultMessage:"看範例",id:"admin.creatorSubscription.promotion.step3.看範例"})})}];return(0,r.Y)(i.Flex,{direction:{base:"column",md:"row"},mb:5,borderWidth:"1px",borderColor:"gray.200",borderRadius:"xl",overflow:"hidden",children:o.map((e,t)=>(0,r.FD)(i.Flex,{flex:"1",align:"flex-start",gap:2.5,px:4,py:3,borderTopWidth:{base:0===t?0:"1px",md:0},borderLeftWidth:{base:0,md:0===t?0:"1px"},borderColor:"gray.100",children:[(0,r.Y)(i.Flex,{align:"center",justify:"center",w:"22px",h:"22px",borderRadius:"full",bg:"GUI.green.500",color:"white",fontWeight:"800",fontSize:"12px",flexShrink:0,mt:.5,children:t+1}),(0,r.FD)(i.Box,{flex:"1",minW:0,children:[(0,r.FD)(i.Flex,{align:"center",gap:2,children:[(0,r.Y)(i.Text,{fontWeight:"700",fontSize:"14px",children:e.title}),e.action]}),(0,r.Y)(i.Text,{mt:.5,color:"gray.600",fontSize:"12.5px",lineHeight:"1.7",children:e.description})]})]},e.title))})},t3=e=>{let{onGetSkill:t}=e,a=(0,d.A)();return(0,r.FD)(i.Flex,{align:"center",justify:"space-between",gap:3,mt:3,px:5,py:4,borderWidth:"1px",borderColor:"gray.200",borderRadius:"xl",children:[(0,r.FD)(i.Box,{minW:0,children:[(0,r.Y)(i.Text,{fontWeight:"700",fontSize:"15px",children:a.formatMessage({defaultMessage:"推廣 Skill 已安裝",id:"admin.creatorSubscription.promotion.已安裝Footer標題"})}),(0,r.Y)(i.Text,{mt:.5,fontSize:"13.5px",color:"gray.600",children:a.formatMessage({defaultMessage:"換一台電腦、或要接到另一個專案時,可以再取得一次。",id:"admin.creatorSubscription.promotion.已安裝Footer說明"})})]}),(0,r.Y)(tL.A,{size:"sm",variant:"outline",borderRadius:"lg",rightIcon:(0,r.Y)(i.Icon,{as:S.JvP,boxSize:4}),onClick:t,flexShrink:0,children:a.formatMessage({defaultMessage:"取得推廣 Skill",id:"admin.creatorSubscription.promotion.取得推廣Skill"})})]})},t6=e=>{let{title:t,description:a,cta:o}=e;return(0,r.FD)(i.Stack,{spacing:3,align:"center",textAlign:"center",bg:"white",borderWidth:"1px",borderColor:"gray.200",borderRadius:"2xl",p:{base:6,md:8},children:[(0,r.Y)(i.Text,{fontWeight:"700",fontSize:"16px",children:t}),a&&(0,r.Y)(i.Text,{fontSize:"14px",color:"gray.600",maxW:"480px",lineHeight:"1.8",children:a}),o&&(0,r.Y)(tL.A,{mt:1,size:"md",borderRadius:"xl",colorScheme:"green",onClick:o.onClick,children:o.label})]})},t7=e=>{var t,a,o;let{store:n,promotion:s,isPromotionLoading:c=!1,promotionError:u,stats:p,isTaiwanAccount:m,isMutating:g=!1,onOpenRateModal:f,onDisable:h,onGetSkill:b,skillStatus:M="missing"}=e,v=(0,d.A)(),y=v.formatMessage({defaultMessage:"產品推廣目前僅支援台灣(zh)帳號,這個帳號目前只能檢視。",id:"admin.creatorSubscription.promotion.gate.noTaiwanAccount"}),x=null!==(t=null==s?void 0:s.enabled)&&void 0!==t&&t,Y=null!==(a=null==s?void 0:s.commissionRate)&&void 0!==a?a:null,w=null!==(o=null==s?void 0:s.plans)&&void 0!==o?o:[],C=w.filter(e=>e.included),A=w.some(e=>null===e.excludedReason),k=tj(w),F=!!n&&!m,D=e=>(null!=e?e:0).toLocaleString(),T=e=>void 0===e?"—":D(e),I="current"===M||"outdated"===M,[P,R]=(0,l.useState)(!1);return(0,r.FD)(i.Box,{children:[I&&(0,r.Y)(t4,{onShowExample:()=>R(!0)}),(0,r.FD)(i.Modal,{isOpen:P,onClose:()=>R(!1),size:"xl",isCentered:!0,children:[(0,r.Y)(i.ModalOverlay,{}),(0,r.FD)(i.ModalContent,{borderRadius:"2xl",children:[(0,r.Y)(i.ModalHeader,{fontSize:"16px",children:v.formatMessage({defaultMessage:"買家在購買完成頁領取專屬分潤連結",id:"admin.creatorSubscription.promotion.看範例.標題"})}),(0,r.Y)(i.ModalCloseButton,{}),(0,r.Y)(i.ModalBody,{pb:6,children:(0,r.Y)(t1,{})})]})]}),"outdated"===M&&(0,r.Y)(t5,{onGetSkill:b}),"unknown"===M?(0,r.Y)(i.Flex,{justify:"center",py:12,children:(0,r.Y)(i.Spinner,{size:"lg",color:"gray.400"})}):I?n?F?(0,r.FD)(i.Flex,{align:{base:"flex-start",md:"center"},justify:"space-between",direction:{base:"column",md:"row"},gap:3,px:5,py:4,borderWidth:"1px",borderColor:"gray.200",borderRadius:"xl",children:[(0,r.FD)(i.HStack,{spacing:3,align:"center",minW:0,children:[(0,r.Y)(i.Text,{fontWeight:"700",fontSize:"15px",children:v.formatMessage({defaultMessage:"啟用產品推廣",id:"admin.creatorSubscription.promotion.啟用產品推廣"})}),(0,r.Y)(tV,{isChecked:!1,isDisabled:!0})]}),(0,r.Y)(i.Text,{fontSize:"13.5px",color:"orange.600",flexShrink:0,children:y})]}):(0,r.FD)(i.Box,{children:[(0,r.FD)(i.Flex,{align:{base:"flex-start",md:"center"},justify:"space-between",direction:{base:"column",md:"row"},gap:3,px:5,py:4,mb:4,borderWidth:"1px",borderColor:"gray.200",borderRadius:"xl",children:[(0,r.FD)(i.HStack,{spacing:3,align:"center",minW:0,children:[(0,r.Y)(i.Text,{fontWeight:"700",fontSize:"15px",children:v.formatMessage({defaultMessage:"啟用產品推廣",id:"admin.creatorSubscription.promotion.啟用產品推廣"})}
1),(0,r.Y)(tV,{isChecked:x,isDisabled:c||g||!x&&!A,onChange:e=>e.target.checked?f():h()}),x&&null!=Y&&(0,r.FD)(tL.A,{variant:"ghost",size:"sm",px:1,borderRadius:"md",fontWeight:"600",color:"gray.700",rightIcon:(0,r.Y)(i.Icon,{as:S.Yvo,boxSize:4}),isDisabled:g,onClick:()=>f(),children:[Y,"%"]})]}),!c&&!x&&!A&&(0,r.Y)(i.Text,{fontSize:"13px",color:"orange.600",flexShrink:0,textAlign:{base:"left",md:"right"},children:k?v.formatMessage({defaultMessage:"方案條件都符合了,只差推廣落地頁。請讓你的 Coding Agent 用推廣 Skill 設定每個方案的落地頁網址。",id:"admin.creatorSubscription.promotion.header.只缺落地頁"}):v.formatMessage({defaultMessage:"沒有符合條件的方案:需單次付款、固定金額、非免費、上架中。",id:"admin.creatorSubscription.promotion.header.無合格提示"})})]}),(0,r.Y)(i.Box,{overflowX:"auto",children:(0,r.FD)(i.Table,{size:"sm",variant:"unstyled",sx:{borderSpacing:0,"th, td":{borderWidth:"1px",borderColor:"gray.200",px:4,verticalAlign:"middle"},th:{bg:"gray.50",color:"gray.700",fontSize:"13px",fontWeight:"700",whiteSpace:"nowrap",py:3,textTransform:"none",letterSpacing:"normal"},td:{py:3.5}},children:[(0,r.Y)(i.Thead,{children:(0,r.FD)(i.Tr,{children:[(0,r.Y)(i.Th,{children:v.formatMessage({defaultMessage:"方案",id:"admin.creatorSubscription.promotion.表頭.方案"})}),(0,r.Y)(i.Th,{w:"110px",textAlign:"right",children:v.formatMessage({defaultMessage:"推廣人數",id:"admin.creatorSubscription.promotion.表頭.推廣人數"})}),(0,r.Y)(i.Th,{w:"110px",textAlign:"right",children:v.formatMessage({defaultMessage:"成交筆數",id:"admin.creatorSubscription.promotion.表頭.成交筆數"})}),(0,r.Y)(i.Th,{w:"140px",textAlign:"right",children:v.formatMessage({defaultMessage:"帶來營收",id:"admin.creatorSubscription.promotion.表頭.帶來營收"})})]})}),(0,r.FD)(i.Tbody,{children:[0===C.length&&(0,r.Y)(i.Tr,{children:(0,r.Y)(i.Td,{colSpan:4,py:8,children:u?(0,r.Y)(i.Text,{textAlign:"center",color:"orange.600",fontSize:"13.5px",children:v.formatMessage({defaultMessage:"無法取得方案的推廣狀態,請稍後重新整理再試。",id:"admin.creatorSubscription.promotion.方案表.失敗"})}):c?(0,r.Y)(i.Text,{textAlign:"center",color:"gray.500",fontSize:"13.5px",children:v.formatMessage({defaultMessage:"載入方案中…",id:"admin.creatorSubscription.promotion.方案表.載入"})}):(0,r.Y)(i.Text,{textAlign:"center",color:"gray.500",fontSize:"13.5px",children:x?v.formatMessage({defaultMessage:"推廣已開å•
1Ÿï¼Œä½†ç›®å‰æ²’有方案符合條件。方案要是單次買斷、固定價、非免費、上架中;推廣落地頁請讓你的 Coding Agent 用推廣 Skill 設定。",id:"admin.creatorSubscription.promotion.方案表.已開啟但無合格"}):v.formatMessage({defaultMessage:"開啟推廣後,符合條件的方案會顯示在這裡。",id:"admin.creatorSubscription.promotion.方案表.尚未開啟"})})})}),C.map(e=>{var t,a;return(0,r.FD)(i.Tr,{children:[(0,r.FD)(i.Td,{children:[(0,r.Y)(i.Text,{fontWeight:"600",fontSize:"14.5px",noOfLines:1,children:e.name}),(0,r.FD)(i.Text,{fontSize:"12.5px",color:"gray.500",children:["NT$",D(e.amount)]})]}),(0,r.Y)(i.Td,{textAlign:"right",children:(0,r.Y)(i.Text,{fontSize:"15px",sx:t_,children:T(null==p?void 0:null===(t=p[e.planId])||void 0===t?void 0:t.promoterCount)})}),(0,r.Y)(i.Td,{textAlign:"right",children:(0,r.Y)(i.Text,{fontSize:"15px",sx:t_,children:T(null==p?void 0:null===(a=p[e.planId])||void 0===a?void 0:a.orderCount)})}),(0,r.Y)(i.Td,{textAlign:"right",children:(0,r.Y)(i.Text,{fontSize:"15px",sx:t_,children:(null==p?void 0:p[e.planId])?"NT$".concat(D(p[e.planId].revenue)):"—"})})]},e.planId)})]})]})})]}):(0,r.Y)(t6,{title:v.formatMessage({defaultMessage:"先串接一個產品,才能開啟推廣",id:"admin.creatorSubscription.promotion.引導.先串接產品"})}):(0,r.Y)(t2,{onGetSkill:b,blockCopy:F?y:void 0}),"current"===M&&b&&(0,r.Y)(i.Box,{mt:5,children:(0,r.Y)(t3,{onGetSkill:b})})]})},t8=e=>{let{isOpen:t,onClose:a,snippet:o,productName:n,onCopy:s}=e,l=(0,d.A)();return(0,r.FD)(i.Modal,{isOpen:t,onClose:a,size:"xl",isCentered:!0,children:[(0,r.Y)(i.ModalOverlay,{}),(0,r.FD)(i.ModalContent,{borderRadius:"2xl",mx:4,children:[(0,r.FD)(i.ModalHeader,{pb:2,children:[(0,r.Y)(i.Text,{fontWeight:"800",fontSize:"20px",children:l.formatMessage({defaultMessage:"嵌入評價模組",id:"admin.creatorSubscription.reviews.embed.title"})}),(0,r.Y)(i.Text,{mt:1,fontSize:"14px",color:"gray.600",fontWeight:"400",children:n?l.formatMessage({defaultMessage:"貼到你的網站即可顯示「{name}」的評價。",id:"admin.creatorSubscription.reviews.embed.descriptionWithName"},{name:n}):l.formatMessage({defaultMessage:"貼到你的網站即可顯示評價。",id:"admin.creatorSubscription.reviews.embed.description"})})]}),(0,r.Y)(i.ModalCloseButton,{top:4}),(0,r.FD)(i.ModalBody,{pb:6,children:[(0,r.Y)(i.Box,{bg:"gray.50",borderWidth:"1px",borderColor:"gray.200",borderRadius:"xl",px:4,py:3.5,children:(0,r.Y)(i.Text,{as:"pre",fontFamily:"mono",fontSize:"13.5px",whiteSpace:"pre-wrap",wordBreak:"break-all",color:"gray.700",children:o})}),(0,r.Y)(i.Button,{mt:4,size:"md",variant:"outline",colorScheme:"green",borderRadius:"lg",leftIcon:(0,r.Y)(i.Icon,{as:S.kn0,boxSize:4}),onClick:()=>s(o),isDisabled:!o,children:l.formatMessage({defaultMessage:"複製嵌入程式碼",id:"admin.creatorSubscription.reviews.embed.copyButton"})})]})]})]})},t9={subscription:"teal",digital_product:"orange"},ae=e=>{let{rating:t}=e;return(0,r.Y)(i.HStack,{spacing:0,children:Array.from({length:5},(e,a)=>(0,r.Y)(i.Icon,{as:S.SeC,boxSize:4,color:a<t?"orange.400":"gray.200"},a))})},at=e=>{var t,a;let{reviews:o,stats:n,isLoading:s,error:c,locale:u,slug:p,productName:m,onCopy:g,onToggleDisplay:f,togglingReviewId:h}=e,b=(0,d.A)(),[M,S]=(0,l.useState)(!1),v=ej.A,y=p?'<iframe src="'.concat(ec(),"/embed/reviews/").concat(p,'?theme=light&locale=zh-TW" width="320" height="80" style="border:0" title="Portaly Reviews"></iframe>'):"",x=null!==(t=null==n?void 0:n.ratingCount)&&void 0!==t?t:0,Y=x>0?(null!==(a=null==n?void 0:n.ratingSum)&&void 0!==a?a:0)/x:0,w=(0,l.useMemo)(()=>[5,4,3,2,1].map(e=>({star:e,count:o.filter(t=>t.rating===e).length})),[o]),C=(0,l.useMemo)(()=>({subscription:b.formatMessage({defaultMessage:"訂閱",id:"admin.creatorSubscription.reviews.orderType.subscription"}),digital_product:b.formatMessage({defaultMessage:"數位商品",id:"admin.creatorSubscription.reviews.orderType.digitalProduct"})}),[b]),A=(0,l.useMemo)(()=>[{Header:b.formatMessage({defaultMessage:"顯示評論",id:"admin.creatorSubscription.reviews.column.isDisplay"}),id:"isDisplay",accessor:e=>e.isDisplay,Cell:e=>{let{value:t,row:{original:a}}=e;return a.text&&a.text.trim()?(0,r.Y)(i.Checkbox,{isChecked:t,isDisabled:h===a.reviewId,onChange:e=>f(a.reviewId,e.target.checked)}):(0,r.Y)(i.Text,{fontSize:"xs",color:"gray.400",children:b.formatMessage({defaultMessage:"無評論",i
1d:"admin.creatorSubscription.reviews.noText"})})},w:"110px"},{Header:b.formatMessage({defaultMessage:"評分",id:"admin.creatorSubscription.reviews.column.rating"}),id:"rating",accessor:e=>e.rating,Cell:e=>{let{value:t}=e;return(0,r.Y)(ae,{rating:t})},w:"110px"},{Header:b.formatMessage({defaultMessage:"評論內容",id:"admin.creatorSubscription.reviews.column.text"}),id:"text",accessor:e=>e.text,Cell:e=>{let{value:t}=e;return(0,r.Y)(i.Text,{fontSize:"sm",children:t||"-"})},w:"260px"},{Header:b.formatMessage({defaultMessage:"會員名稱",id:"admin.creatorSubscription.reviews.column.displayName"}),accessor:"displayName",Cell:e=>{let{value:t}=e;return t||"-"},w:"150px"},{Header:b.formatMessage({defaultMessage:"對應訂單",id:"admin.creatorSubscription.reviews.column.orderId"}),id:"orderId",accessor:e=>e.orderId,Cell:e=>{let{value:t}=e;return(0,r.Y)(i.Text,{fontSize:"sm",title:t,children:t?"".concat(t.slice(0,8),"..."):"-"})},w:"120px"},{Header:b.formatMessage({defaultMessage:"訂單類型",id:"admin.creatorSubscription.reviews.column.orderType"}),id:"orderType",accessor:e=>e.orderType,Cell:e=>{let{value:t}=e;return(0,r.Y)(i.Badge,{colorScheme:t9[t]||"gray",px:2,py:1,borderRadius:"full",children:C[t]||t})},w:"100px"},{Header:b.formatMessage({defaultMessage:"更新時間",id:"admin.creatorSubscription.reviews.column.updatedAt"}),id:"updatedAt",accessor:e=>eg(e.updatedAt,u),w:"150px"}],[b,u,C,f,h]);return s?(0,r.Y)(i.Box,{py:10,textAlign:"center",children:(0,r.Y)(i.Spinner,{})}):c?(0,r.Y)(i.Box,{p:6,borderRadius:"xl",border:"1px solid",borderColor:"red.100",bg:"red.50",children:(0,r.Y)(i.Text,{color:"red.500",children:eh(c,b.formatMessage({defaultMessage:"評價載入失敗",id:"admin.creatorSubscription.reviews.loadError"}))})}):(0,r.FD)(i.Stack,{spacing:4,children:[(0,r.FD)(i.Flex,{justify:"space-between",align:"center",gap:3,wrap:"wrap",children:[(0,r.FD)(i.HStack,{spacing:2,align:"baseline",children:[(0,r.Y)(i.Text,{fontWeight:"800",fontSize:"18px",children:b.formatMessage({defaultMessage:"評價",id:"admin.creatorSubscription.reviews.title"})}),(0,r.Y)(i.Text,{fontSize:"14px",color:"gray.500",fontWeight:"700",children:o.length})]}),(0,r.Y)(i.Button,{size:"md",variant:"outline",borderRadius:"xl",onClick:()=>S(!0),isDisabled:!y,children:b.formatMessage({defaultMessage:"嵌入評價模組",id:"admin.creatorSubscription.reviews.embed.title"})})]}),x>0&&(0,r.Y)(i.Box,{borderWidth:"1px",borderColor:"gray.200",borderRadius:"2xl",overflow:"hidden",bg:"white",children:(0,r.FD)(i.Flex,{px:5,py:4,gap:{base:5,md:10},align:"center",wrap:"wrap",bg:"gray.50",children:[(0,r.FD)(i.Box,{children:[(0,r.Y)(i.Text,{fontSize:"34px",fontWeight:"900",lineHeight:"1.1",children:Y.toFixed(1)}),(0,r.Y)(ae,{rating:Math.round(Y)}
1)]}),(0,r.Y)(i.Stack,{spacing:1,flex:"1",minW:"200px",maxW:"320px",children:w.map(e=>(0,r.FD)(i.HStack,{spacing:2,children:[(0,r.FD)(i.Text,{fontSize:"12.5px",color:"gray.600",w:"26px",textAlign:"right",children:[e.star,"★"]}),(0,r.Y)(i.Box,{flex:"1",h:"6px",bg:"gray.200",borderRadius:"full",children:(0,r.Y)(i.Box,{w:o.length?"".concat(e.count/o.length*100,"%"):"0%",h:"100%",bg:"orange.400",borderRadius:"full"})}),(0,r.Y)(i.Text,{fontSize:"12.5px",color:"gray.600",w:"18px",textAlign:"right",children:e.count})]},e.star))})]})}),o.length?(0,r.FD)(i.Box,{bg:"white",border:"1px solid",borderColor:"gray.200",borderRadius:"2xl",p:4,children:[(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.500",mb:3,children:b.formatMessage({defaultMessage:"以下評價內容經勾選後,才會顯示在公開評價頁與嵌入元件上。",id:"admin.creatorSubscription.reviews.displayHint"})}),(0,r.Y)(v,{columns:A,data:o,storageKey:"creator-subscription-reviews",pageSize:10,placeholder:(0,r.Y)(i.Box,{}),disablePhantomScroll:!0})]}):(0,r.Y)(i.Box,{p:{base:6,md:10},bg:"white",border:"1px solid",borderColor:"gray.200",borderRadius:"2xl",children:(0,r.Y)(i.Text,{textAlign:"center",fontSize:"lg",fontWeight:"700",children:b.formatMessage({defaultMessage:"目前還沒有評價",id:"admin.creatorSubscription.reviews.empty"})})}),(0,r.Y)(t8,{isOpen:M,onClose:()=>S(!1),snippet:y,productName:m,onCopy:g})]})},aa=e=>{switch(e){case"success":case"completed":return"green";case"failed":case"error":return"red";case"pending":case"processing":return"orange";default:return"gray"}},ar=(e,t)=>{switch(e){case"success":return t.formatMessage({defaultMessage:"成功",id:"admin.creatorSubscription.member.statusCallbackRecords.status.success"});case"completed":return t.formatMessage({defaultMessage:"已完成",id:"admin.creatorSubscription.member.statusCallbackRecords.status.completed"});case"failed":return t.formatMessage({defaultMessage:"失敗",id:"admin.creatorSubscription.member.statusCallbackRecords.status.failed"});case"error":return t.formatMessage({defaultMessage:"錯誤",id:"admin.creatorSubscription.member.statusCallbackRecords.status.error"});case"pending":return t.formatMessage({defaultMessage:"待處理",id:"admin.creatorSubscription.member.statusCallbackRecords.status.pending"});case"processing":return t.formatMessage({defaultMessage:"處理中",id:"admin.creatorSubscription.member.statusCallbackRecords.status.processing"});default:return e||"-"}},ai=e=>{let{isOpen:t,onClose:a,records:o,isLoading:n,error:s,locale:l,subscriptionId:c,retryingRecordId:u,onRetryRecord:p}=e,m=(0,d.A)();return(0,r.FD)(i.Modal,{isOpen:t,onClose:a,size:"4xl",children:[(0,r.Y)(i.ModalOverlay,{}),(0,r.FD)(i.ModalContent,{borderRadius:"2xl",mx:4,children:[(0,r.Y)(i.ModalHeader,{children:(0,r.FD)(i.Stack,{spacing:1,children:[(0,r.Y)(i.Text,{children:m.formatMessage({defaultMessage:"狀態變更 Callback 紀錄",id:"admin.creatorSubscription.member.statusCallbackRecords.title"})}),c?(0,r.Y)(i.Text,{fontSize:"sm",fontWeight:"400",color:"gray.500",children:c}):null]})}),(0,r.Y)(i.ModalCloseButton,{}),(0,r.FD)(i.ModalBody,{pb:6,children:[n?(0,r.Y)(i.Box,{py:12,textAlign:"center",children:(0,r.Y)(i.Spinner,{})}):null,!n&&s?(0,r.Y)(i.Box,{p:4,borderRadius:"xl",border:"1px solid",borderColor:"red.100",bg:"red.50",children:(0,r.Y)(i.Text,{color:"red.500",children:eh(s,m.formatMessage({defaultMessage:"Callback 紀錄載入失敗",id:"admin.creatorSubscription.member.statusCallbackRecords.loadError"}))})}):null,n||s||o.length?null:(0,r.Y)(i.Box,{p:6,borderRadius:"xl",border:"1px solid",borderColor:"gray.200",bg:"gray.50",children:(0,r.Y)(i.Text,{color:"gray.600",children:m.formatMessage({defaultMessage:"目前沒有狀態變更 callback 紀錄。",id:"admin.creatorSubscription.member.statusCallbackRecords.empty"})})}),n||s||!o.length?null:(0,r.Y)(i.Stack,{spacing:4,children:o.map(e=>(0,r.Y)(i.Box,{border:"1px solid",borderColor:"gray.200",borderRadius:"xl",p:4,children:(0,r.FD)(i.Stack,{spacing:3,children:[(0,r.FD)(i.Stack,{direction:{base:"column",md:"row"},justify:"space-between",align:{base:"flex-start",md:"center"},spacing:3,children:[(0,r.FD)(i.Stack,{spacing:1,children:[(0,r.Y)(i.Text,{fontWeight:"700",children:e.event||e.id}),(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.500",children:eg(e.attemptedAt||e.completedAt||e.createdAt||e.updatedAt,l)})]}),(0,r.Y)(i.Badge,{colorScheme:aa(e.status),px:2,py:1,borderRadius:"full",children:ar(e.status,m)})]}),(0,r.FD)(i.Stack,{spacing:1,fontSize:"sm",color:"gray.700",children:[(0,r.FD)(i.Text,{children:[m.formatMessage({defaultMessage:"事件名稱",id:"admin.creatorSubscription.member.statusCallbackRecords.eventName"}),": ",e.event||"-"]}),e.url?(0,r.FD)(i.Text,{children:[m.formatMessage({defaultMessage:"網址",id:"admin.creatorSubscription.member.statusCallbackRecords.url"}),": ",e.url]}):null,e.responseCode?(0,r.Y)(i.Text,{children:m.formatMessage({defaultMessage:"回應碼:{code}",id:"admin.creatorSubscription.member.statusCallbackRecords.responseCode"},{code:e.responseCode})}):null,e.error?(0,r.Y)(i.Text,{color:"red.500",children:e.error}):null]}),(0,r.Y)(i.Box,{children:(0,r.Y)(i.Button,{size:"sm",variant:"outline",colorScheme:"green",onClick:()=>p(e.id),isLoading:u===e.id,children:m.formatMessage({defaultMessage:"重新通知",id:"admin.creatorSubscription.member.statusCallbackRecords.retry"})})})]})},e.id))})]})]})]})},ao=e=>{let{step:t,title:a,description:o,action:n,isComplete:s}=e;return(0,r.Y)(i.Box,{bg:"white",border:"1px solid",borderColor:"gray.200",borderRadius:"2xl",p:{base:5,md:8},children:(0,r.FD)(i.HStack,{align:"flex-start",spacing:4,children:[(0,r.Y)(i.Flex,{align:"center",justify:"center",flexShrink:0,w:9,h:9,borderRadius:"full",bg:"green.500",color:"white",fontWeight:"700",children:s?(0,r.Y)(i.Icon,{as:eM.YrT}):t}),(0,r.Y)(i.Stack,{spacing:4,flex:"1",minW:0,children:(0,r.FD)(i.Flex,{align:{base:"stretch",md:"center"},justify:"space-between",direction:{base:"column",md:"row"},gap:4,children:[(0,r.FD)(i.Stack,{spacing:1,children:[(0,r.Y)(i.Text,{fontSize:"lg",fontWeight:"700",color:"gray.800",children:a}),(0,r.Y)(i.Text,{color:"gray.500",children:o})]}),n?(0,r.Y)(i.Box,{flexShrink:0,children:n}):null]})})]})})},an=e=>{let{onAddPlan:t,isAddingPlan:a,latestCreatedSecrets:o,isCreatingApiKey:n,onCreateApiKey:s,onCopySecret:c,scopeId:u,merchantSwitcher:p}=e,m=(0,d.A)(),g=(0,i.useDisclosure)(),f=(0,i.useDisclosure)(),[h,b]=(0,l.useState)(!1),M=async e=>{await t(e),g.onClose()};return(0,r.FD)(i.Stack,{spacing:6,children:[(0,r.Y)(tv,{isOpen:g.isOpen,onClose:g.onClose,onSubmit:M,isSubmitting:a}),(0,r.Y)(e3,{isOpen:f.isOpen,onClose:f.onClose,latestCreatedSecrets:o,isCreatingApiKey:n,onCreateApiKey:s,onCopySecret:c,onCopied:()=>b(!0)}),p?(0,r.Y)(i.Flex,{justify:"flex-end",children:p}):null,(0,r.Y)(e6,{scopeId:u}),(0,r.Y)(ao,{step:1,title:m.formatMessage({defaultMessage:"建立第一個訂閱方案",id:"admin.creatorSubscription.onboarding.team.建立方案標題"}),description:m.formatMessage({defaultMessage:"設定方案名稱、價格與計費週期,之後隨時可以在後台調整。",id:"admin.creatorSubscription.onboarding.team.建立方案說明"}),action:(0,r.Y)(i.Button,{colorScheme:"green",onClick:g.onOpen,children:m.formatMessage({defaultMessage:"新增方案",id:"admin.creatorSubscription.plan.新增方案"})})}),(0,r.Y)(ao,{step:2,isComplete:h,title:m.formatMessage({defaultMessage:"複製串接說明給工程",id:"admin.creatorSubscription.onboarding.team.複製說明標題"}),description:m.formatMessage({defaultMessage:"工程只需要串接一次,之後方案、價格與折扣都能在後台調整,不需要再動到程式。",id:"admin.creatorSubscription.onboarding.team.複製說明說明"}),action:(0,r.Y)(i.Button,{colorScheme:"green",onClick:f.onOpen,children:m.formatMessage({defaultMessage:"複製串接說明",id:"admin.creatorSubscription.onboarding.team.複製說明按鈕"})})}),(0,r.FD)(i.HStack,{spacing:2,color:"gray.400",justify:"center",fontSize:"sm",pt:2,children:[(0,r.Y)(i.Icon,{as:eM.YrT}),(0,r.Y)(i.Text,{children:m.formatMessage({defaultMessage:"建立第一個方案後,這裡會自動顯示完整的管理後台。",id:"admin.creatorSubscription.onboarding.完成提示"})})]})]})};var as=a(49785),al=a(85026),ad=a(64846);let ac=e=>"refunded"===e.settlementStatus||!!e.refundedAt,au=(e,t)=>"all"===t||("refunded"===t?ac(e):!ac(e)&&("paid"===t?"SUCCESS"===e.status:"failed"===t?"FAILED"===e.status:"canceled"===t?"CANCELED"===e.status:"abandoned"!==t||"ABANDONED"===e.status)),ap=(e,t,a)=>{if(!t&&!a)return!0;
1if(!e)return!1;let r=new Date(e);if(Number.isNaN(r.getTime()))return!1;let i=(0,ep.a7)(r);return(!t||!(i<t))&&(!a||!(i>a))},am=e=>"checkout_attempt"!==e.recordKind,ag=(e,t)=>ac(e)?t.refunded:"SUCCESS"===e.status?t.paid:"FAILED"===e.status?t.failed:"CANCELED"===e.status?t.canceled:"ABANDONED"===e.status?t.abandoned:e.status,af=(e,t)=>"product"===e.source?t.product:t.subscription;var ah=a(84961);let ab="/api/creator-subscription/stores/summary",aM=()=>(0,b.Tk)(e=>"string"==typeof e&&e.startsWith(ab)),aS=e=>{let t="test"===e.mode?"sandboxOrders":"orders";return"subscription"===e.source?{collection:t,orderId:"creatorSubscription_".concat(e.id)}:e.orderId?{collection:t,orderId:e.orderId}:null},av=e=>"refunded"===e.settlementStatus||!!e.refundedAt,ay=e=>!aS(e)||"SUCCESS"!==e.status||av(e),ax=(e,t)=>t?"submitted":"test"===e.mode?"test":"live",aY=e=>{let{order:t,ordersApiUrl:a}=e,o=(0,d.A)(),n=(0,R.A)(),s=(0,i.useDisclosure)(),c=(0,i.useToast)(),[u,p]=(0,l.useState)(!1),[m,g]=(0,l.useState)(!1),[f,h]=(0,l.useState)(""),M=aS(t),S=ay(t),v=ax(t,m),y=async()=>{if(n&&M){p(!0);try{await (0,P.updateDoc)((0,P.doc)(n,M.collection,M.orderId),{status:"refund"}),g(!0),c({title:o.formatMessage({defaultMessage:"退款已送出",id:"admin.creatorSubscription.refund.已送出"}),description:o.formatMessage({defaultMessage:"金流商處理約需 3-5 分鐘,狀態稍後會自動更新。",id:"admin.creatorSubscription.refund.已送出說明"}),status:"success",duration:3e3,isClosable:!0}),a&&await (0,b.Tk)(a).catch(()=>{}),aM()}catch(e){h(eh(e,o.formatMessage({defaultMessage:"系統錯誤,請稍後再試",id:"admin.creatorSubscription.refund.error"}))),s.onOpen()}p(!1)}};return(0,r.FD)(r.FK,{children:[(0,r.Y)(i.Tooltip,{label:"submitted"===v?o.formatMessage({defaultMessage:"退款已送出",id:"admin.creatorSubscription.refund.已送出"}):"test"===v?o.formatMessage({defaultMessage:"測試模式退款",id:"admin.creatorSubscription.refund.測試模式退款"}):o.formatMessage({defaultMessage:"退款",id:"admin.creatorSubscription.refund.退款"}),children:(0,r.Y)(e7.A,{isLoading:u,as:i.IconButton,size:"xs",colorScheme:"red",variant:"ghost",icon:(0,r.Y)(ah.NGV,{}),px:"1",title:o.formatMessage({defaultMessage:"確認執行退款?",id:"admin.creatorSubscription.refund.確認執行退款"}),body:"test"===t.mode?"subscription"===t.source?o.formatMessage({defaultMessage:"這是測試模式交易。交易取消後,會自動退款給付款人,並立即取消該會員的訂閱。\n(退款後,需等待3-5分鐘才會更新狀態)",id:"admin.creatorSubscription.refund.test.subscription.body"}):o.formatMessage({defaultMessage:"這是測試模式交易。交易取消後,會自動退款給付款人。\n(退款後,需等待3-5分鐘才會更新狀態)",id:"admin.creatorSubscription.refund.test.product.body"}):"subscription"===t.source?o.formatMessage({defaultMessage:"交易取消後,會自動退款給付款人,並立即取消該會員的訂閱。\n(退款後,需等待3-5分鐘才會更新狀態)",id:"admin.creatorSubscription.refund.subscription.body"}):o.formatMessage({defaultMessage:"交易取消後,會自動退款給付款人。\n(退款後,需等待3-5分鐘才會更新狀態)",id:"admin.creatorSubscription.refund.product.body"}),isDisabled:m||S,onClick:y,display:"inline-flex",textAlign:"left"})}),(0,r.FD)(i.Modal,{isOpen:s.isOpen,onClose:s.onClose,isCentered:!0,children:[(0,r.Y)(i.ModalOverlay,{}),(0,r.FD)(i.ModalContent,{children:[(0,r.Y)(i.ModalHeader,{children:o.formatMessage({defaultMessage:"錯誤",id:"admin.creatorSubscription.refund.錯誤"})}),(0,r.Y)(i.ModalCloseButton,{}),(0,r.Y)(i.ModalBody,{children:f}),(0,r.Y)(i.ModalFooter,{children:(0,r.Y)(i.Button,{colorScheme:"red",onClick:s.onClose,children:o.formatMessage({defaultMessage:"確定",id:"admin.creatorSubscription.refund.確定"})})})]})]})]})};var aw=a(89571),aC=a(96660);let aA=a(90777).A,ak=e=>{let{mode:t,onModeChange:a,liveLabel:o,testLabel:n}=e;return(0,r.Y)(i.Flex,{p:1,bg:"gray.100",borderRadius:"full",gap:1,align:"center",children:[["live",o],["test",n]].map(e=>{let[o,n]=e,s=t===o;return(0,r.Y)(i.Button,{size:"sm",variant:"ghost",borderRadius:"full",fontWeight:"700",bg:s?"white":"transparent",color:s?"gray.900":"gray.500",shadow:s?"sm":"none",_hover:{bg:s?"white":"gray.200"},onClick:()=>a(o),"aria-pressed":s,children:n},o)})})},aF=e=>{let{mode:t,onModeChange:a,liveLabel:o,testLabel:n,extraControls:s,exportFilename:l}=e;return e=>{let{pageSize:d,setPageSize:c,getGlobalFilter:u,getPaginator:p,canExport:m,exportFields:g,memoColumns:f,filteredRows:h,disableExportSort:b}=e;return(0,r.FD)(i.Stack,{spacing:4,children:[(0,r.FD)(i.HStack,{spacing:{base:3,md:6},align:"center",flexWrap:"wrap",children:[(0,r.Y)(aC.A,{value:d,onChange:e=>{c(Number(e.target.value))}}),(0,r.Y)(ak,{mode:t,onModeChange:a,liveLabel:o,testLabel:n}),(0,r.Y)(i.Box,{flexGrow:"1"}),u(),m&&(0,r.Y)(aA,{data:h,columns:null!=g?g:f,dataKey:"original",disableSort:b,filename:l,variant:"outline",leftIcon:(0,r.Y)(aw.cIQ,{})})]}),s,(0,r.Y)(i.Box,{pb:{base:2,md:6},children:p()})]})}};var aD=a(42141);let aT={SUCCESS:"green",FAILED:"red",CANCELED:"gray",ABANDONED:"yellow"},aI=e=>{let{orders:t,isOrdersLoading:a,ordersError:o,checkoutAttemptsError:n,locale:s,ordersApiUrl:c,checkoutAttemptsLimit:u,checkoutAttemptsTruncated:p,showHeading:m=!0,mode:g,onModeChange:f}=e,h=(0,d.A)(),b=ej.A,M=(0,l.useMemo)(()=>[],[]),[S,v]=(0,l.useState)("all"),{register:y,control:x,watch:Y}=(0,as.mN)({defaultValues:{date:{start:"",end:""}}}),{start:w,end:C}=Y("date"),A=(0,l.useMemo)(()=>(0,aD.cT)(h),[h]),k=(0,l.useMemo)(()=>({paid:A.paid,failed:A.failed,canceled:h.formatMessage({defaultMessage:"付款取消",id:"admin.creatorSubscription.order.status.canceled"}),abandoned:h.formatMessage({defaultMessage:"未完成結帳",id:"admin.creatorSubscription.order.status.abandoned"}),refunded:h.formatMessage({defaultMessage:"已退款",id:"admin.creatorSubscription.order.status.refunded"})}),[h,A]),F=(0,l.useMemo)(()=>t.filter(e=>au(e,S)&&ap(e.createdAt,w,C)),[t,S,w,C]),D="all"!==S||!!w||!!C,T=!!((null==p?void 0:p.failed)||(null==p?void 0:p.abandoned)),I=(0,l.useMemo)(()=>[{Header:h.formatMessage({defaultMessage:"來源",id:"admin.creatorSubscription.invoice.來源"}),id:"source",accessor:e=>e.source,Cell:e=>{let{value:t}=e;return"product"===t?(0,r.Y)(i.Badge,{colorScheme:"orange",px:2,py:1,borderRadius:"full",children:h.formatMessage({defaultMessage:"商品",id:"admin.creatorSubscription.order.source.product"})}):(0,r.Y)(i.Badge,{colorScheme:"teal",px:2,py:1,borderRadius:"full",children:h.formatMessage({defaultMessage:"訂閱",
1id:"admin.creatorSubscription.order.source.subscription"})})},w:"90px"},{Header:h.formatMessage({defaultMessage:"項目",id:"admin.creatorSubscription.invoice.項目"}),id:"planName",accessor:e=>e.planName,Cell:e=>{var t;let{value:a,row:{original:o}}=e;return(0,r.FD)(i.Stack,{spacing:.5,maxW:"200px",children:[(0,r.Y)(i.Text,{noOfLines:2,wordBreak:"break-word",title:a,children:a||"-"}),"product"===o.source&&o.bundleSize&&o.bundleSize>1?(0,r.Y)(i.Text,{fontSize:"xs",color:"gray.500",children:h.formatMessage({defaultMessage:"組合包 {index}/{size}",id:"admin.creatorSubscription.invoice.組合包進度"},{index:(null!==(t=o.bundleIndex)&&void 0!==t?t:0)+1,size:o.bundleSize})}):null]})},w:"200px"},{Header:h.formatMessage({defaultMessage:"姓名",id:"admin.creatorSubscription.invoice.姓名"}),accessor:"customerName",Cell:e=>{let{value:t}=e;return t?(0,r.Y)(ad.A,{w:"100%",children:t}):"-"},w:"150px"},{Header:"E-MAIL",accessor:"customerEmail",Cell:e=>{let{value:t}=e;return t?(0,r.Y)(ad.A,{w:"100%",children:t}):"-"},w:"240px"},{Header:h.formatMessage({defaultMessage:"交易狀態",id:"admin.creatorSubscription.invoice.交易狀態"}),id:"status",accessor:e=>e.status,Cell:e=>{let{row:{original:t}}=e;return(0,r.FD)(i.Stack,{spacing:1,align:"flex-start",maxW:"130px",children:[(0,r.Y)(i.Badge,{colorScheme:ac(t)?"gray":aT[t.status]||"gray",px:2,py:1,borderRadius:"full",children:ag(t,k)}),"ABANDONED"===t.status&&t.paymentSubmitted?(0,r.Y)(i.Text,{fontSize:"xs",color:"orange.600",children:h.formatMessage({defaultMessage:"已送出付款,請確認金流後台",id:"admin.creatorSubscription.order.已送出付款待確認"})}):null,"FAILED"===t.status&&t.invoiceLastError?(0,r.Y)(i.Text,{fontSize:"xs",color:"gray.500",noOfLines:2,wordBreak:"break-word",title:t.invoiceLastError,children:t.invoiceLastError}):null]})},w:"130px"},{Header:h.formatMessage({defaultMessage:"金額",id:"admin.creatorSubscription.invoice.金額"}),id:"amount",accessor:e=>ef(e.amount,e.currency,s),w:"90px"},{Header:h.formatMessage({defaultMessage:"建立時間",id:"admin.creatorSubscription.order.csv.建立時間"}),id:"createdAt",accessor:e=>{var t;return null!==(t=e.createdAt)&&void 0!==t?t:""},Cell:e=>{let{value:t}=e;return eg(t,s)},w:"150px"},{Header:h.formatMessage({defaultMessage:"操作",id:"admin.creatorSubscription.invoice.操作"}),id:"actions",disableSortBy:!0,accessor:e=>e.id,Cell:e=>{let{row:{original:t}}=e;return am(t)?(0,r.Y)(aY,{order:t,ordersApiUrl:c}):null},w:"70px"}],[h,s,k,c]),P=(0,l.useMemo)(()=>({...k,product:h.formatMessage({defaultMessage:"商品",id:"admin.creatorSubscription.order.source.product"}),subscription:h.formatMessage({defaultMessage:"訂閱",id:"admin.creatorSubscription.order.source.subscription"})}),[h,k]),R=(0,l.useMemo)(()=>[{Header:h.formatMessage({defaultMessage:"來源",id:"admin.creatorSubscription.invoice.來源"}),accessor:e=>af(e,P)},{Header:h.formatMessage({defaultMessage:"項目",id:"admin.creatorSubscription.invoice.項目"}),accessor:e=>e.planName||""},{Header:h.formatMessage({defaultMessage:"姓名",id:"admin.creatorSubscription.invoice.姓名"}),accessor:e=>e.customerName||""},{Header:"E-MAIL",accessor:e=>e.customerEmail||""},{Header:h.formatMessage({defaultMessage:"手機號碼",id:"admin.creatorSubscription.invoice.手機號碼"}),accessor:e=>e.customerPhone||""},{Header:h.formatMessage({defaultMessage:"交易狀態",id:"admin.creatorSubscription.invoice.交易狀態"}),accessor:e=>ag(e,P)},{Header:h.formatMessage({defaultMessage:"失敗原因",id:"admin.creatorSubscription.order.csv.失敗原因"}),accessor:e=>e.failureReason||""},{Header:h.formatMessage({defaultMessage:"金額",id:"admin.creatorSubscription.invoice.金額"}),accessor:e=>e.amount},{Header:h.formatMessage({defaultMessage:"幣別",id:"admin.creatorSubscription.order.csv.幣別"}),accessor:e=>e.currency},{Header:h.formatMessage({defaultMessage:"建立時間",id:"admin.creatorSubscription.order.csv.建立時間"}),accessor:e=>{var t;return null!==(t=e.createdAt)&&void 0!==t?t:null},isDate:!0}],[h,P]),B=(0,r.FD)(i.Stack,{direction:{base:"column",sm:"row"},spacing:3,children:[(0,r.FD)(i.FormControl,{w:"auto",children:[(0,r.Y)(i.FormLabel,{fontSize:"sm",children:h.formatMessage({defaultMessage:"交易狀態",id:"admin.creatorSubscription.invoice.交易狀態"})}),(0,r.FD)(i.Select,{size:"sm",maxW:"10em",value:S,onChange:e=>v(e.target.value),children:[(0,r.Y)("option",{value:"all",children:h.formatMessage({defaultMessage:"全部",id:"admin.creatorSubscription.order.filter.全部"})}),(0,r.Y)("option",{value:"paid",children:k.paid}),(0,r.Y)("option",{value:"failed",children:k.failed}),(0,r.Y)("option",{value:"canceled",children:k.canceled}),(0,r.Y)("option",{value:"abandoned",children:k.abandoned}),(0,r.Y)("option",{value:"refunded",children:k.refunded})]})]}),(0,r.Y)(al.A,{name:"date",register:y,control:x,size:"sm",fieldWidth:"8em"})]});return a?(0,r.Y)(i.Box,{py:10,textAlign:"center",children:(0,r.Y)(i.Spinner,{})}):o?(0,r.Y)(i.Box,{p:6,borderRadius:"xl",border:"1px solid",borderColor:"red.100",bg:"red.50",children:(0,r.Y)(i.Text,{color:"red.500",children:eh(o,h.formatMessage({defaultMessage:"發票列表載入失敗",id:"admin.creatorSubscription.invoice.載入失敗"}))})}):(0,r.FD)(i.Stack,{spacing:4,children:[m&&(0,r.Y)(i.Flex,{align:{base:"flex-start",md:"center"},justify:"space-between",direction:{base:"column",md:"row"},gap:2,children:(0,r.FD)(i.Stack,{spacing:1,children:[(0,r.Y)(i.Text,{fontSize:"2xl",fontWeight:"700",color:"gray.800",children:h.formatMessage({defaultMessage:"訂單紀錄",id:"admin.creatorSubscription.invoice.訂單紀錄標題"})}),(0,r.Y)(i.Text,{color:"gray.500",children:D?h.formatMessage({defaultMessage:"共 {count} 筆,自 {total} 筆中篩選",id:"admin.creatorSubscription.order.篩選後筆數說明"},{count:F.length,total:t.length}):h.formatMessage({defaultMessage:"共 {count} 筆訂單資料",id:"admin.creatorSubscription.invoice.訂單數說明"},{count:t.length})})]})}),n?(0,r.Y)(i.Text,{fontSize:"sm",color:"orange.600",children:h.formatMessage({defaultMessage:"付款失敗與未完成結帳暫時載入不到,以下
1只顯示已成立的訂單。",id:"admin.creatorSubscription.order.checkoutAttempts載入失敗提示"})}):null,(0,r.Y)(i.Box,{bg:"white",border:"1px solid",borderColor:"gray.200",borderRadius:"2xl",p:4,children:(0,r.Y)(b,{columns:I,data:F,storageKey:"creator-subscription-orders",defaultSortBy:M,pageSize:10,fixedRowHeight:"72px",placeholder:(0,r.FD)(i.Box,{py:10,children:[(0,r.Y)(eS,{py:6}),(0,r.Y)(i.Text,{mt:3,textAlign:"center",fontSize:"lg",fontWeight:"700",children:D?h.formatMessage({defaultMessage:"沒有符合篩選條件的訂單",id:"admin.creatorSubscription.order.篩選空狀態標題"}):h.formatMessage({defaultMessage:"目前還沒有訂單紀錄",id:"admin.creatorSubscription.invoice.目前還沒有訂單紀錄"})}),(0,r.Y)(i.Text,{mt:2,textAlign:"center",color:"gray.500",children:D?h.formatMessage({defaultMessage:"試著切換篩選條件,或選擇「全部」查看所有訂單。",id:"admin.creatorSubscription.order.篩選空狀態說明"}):h.formatMessage({defaultMessage:"當會員完成付款後,這裡會顯示每一筆訂單資料。",id:"admin.creatorSubscription.invoice.空狀態說明"})})]}),disablePhantomScroll:!0,canExport:!0,exportFields:R,disableExportSort:!0,renderHeaderControls:aF({mode:g,onModeChange:f,liveLabel:h.formatMessage({defaultMessage:"正式 Live",id:"admin.creatorSubscription.mode.live"}),testLabel:h.formatMessage({defaultMessage:"測試 Test",id:"admin.creatorSubscription.mode.test"}),extraControls:B,exportFilename:h.formatMessage({defaultMessage:"Portaly Payment 訂單",id:"admin.creatorSubscription.order.匯出檔名"})})})}),T&&u?(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.500",children:h.formatMessage({defaultMessage:"付款失敗/未完成結帳僅顯示最近 {limit} 筆,更早的紀錄未列出。",id:"admin.creatorSubscription.order.checkoutAttempts筆數上限提示"},{limit:u})}):null]})},aP={active:"green",past_due:"orange",canceled:"red"},aR={pending:"orange",success:"green",failed:"red",skipped:"gray"},aB=(e,t,a)=>{switch(e){case"active":return"one-time"===t?a.formatMessage({defaultMessage:"已完成",id:"admin.creatorSubscription.subscriber.status.completed"}):a.formatMessage({defaultMessage:"訂閱中",id:"admin.creatorSubscription.subscriber.status.active"});case"past_due":return a.formatMessage({defaultMessage:"扣款失敗",id:"admin.creatorSubscription.subscriber.status.pastDue"});case"canceled":return a.formatMessage({defaultMessage:"已取消",id:"admin.creatorSubscription.subscriber.status.canceled"});default:return e}},az=e=>"canceled"===e.status||!!e.cancelAtPeriodEnd,aO=(e,t,a)=>{if(!t)return a.formatMessage({defaultMessage:"未啟用",id:"admin.creatorSubscription.member.callback.未啟用"});switch(e){case"success":return a.formatMessage({defaultMessage:"已通知",id:"admin.creatorSubscription.member.callback.已通知"});case"failed":return a.formatMessage({defaultMessage:"通知失敗",id:"admin.creatorSubscription.member.callback.通知失敗"});case"skipped":return a.formatMessage({defaultMessage:"已略過",id:"admin.creatorSubscription.member.callback.已略過"});default:return a.formatMessage({defaultMessage:"待通知",id:"admin.creatorSubscription.member.callback.待通知"})}},aL=e=>{let{subscribers:t,isSubscribersLoading:a,subscribersError:o,locale:n,cancellingSubscriptionId:s,onCancelSubscription:c,retryingSubscriberId:u,onRetrySubscriberCallback:p,viewingStatusCallbackRecordsId:m,onOpenStatusCallbackRecords:g,showHeading:f=!0,mode:h,onModeChange:b}=e,M=(0,d.A)(),S=ej.A,v=(0,l.useMemo)(()=>[{id:"currentPeriodStartedAt",desc:!0}],[]),y=(0,l.useMemo)(()=>[{Header:M.formatMessage({defaultMessage:"訂單編號",id:"admin.creatorSubscription.member.訂單編號"}),id:"merchantOrderNumber",accessor:e=>e.merchantOrderNumber||e.id,Cell:e=>{let{value:t}=e;return(0,r.Y)(i.Text,{whiteSpace:"nowrap",children:t||"-"})},w:"180px"},{Header:M.formatMessage({defaultMessage:"方案",id:"admin.creatorSubscription.member.方案"}),accessor:"planName",Cell:e=>{let{value:t}=e;return(0,r.Y)(i.Text,{maxW:"150px",noOfLines:2,wordBreak:"break-word",title:t||void 0,children:t||"-"})},w:"150px"},{Header:M.formatMessage({defaultMessage:"姓名",id:"admin.creatorSubscription.member.姓名"}),accessor:"customerName",Cell:e=>{let{value:t}=e;return(0,r.Y)(i.Text,{noOfLines:2,wordBreak:"break-word",title:t||void 0,children:t||"-"})},w:"120px"},{Header:"E-MAIL",accessor:"customerEmail",Cell:e=>{let{value:t}=e;return t||"-"},w:"240px"},{Header:M.formatMessage({defaultMessage:"訂閱狀態",id:"admin.creatorSubscription.member.訂閱狀態"}),id:"status",accessor:e=>e.status,Cell:e=>{let{value:t,row:{original:a}}=e;return(0,r.FD)(i.Stack,{spacing:1,align:"flex-start",children:[(0,r.Y)(i.Badge,{colorScheme:"active"===t&&"one-time"===a.billingPeriod?"blue":aP[t],px:2,py:1,borderRadius:"full",children:aB(t,a.billingPeriod,M)}),a.lastFailureReason?(0,r.Y)(i.Text,{fontSize:"xs",color:"gray.500",children:a.lastFailureReason}):null]})},w:"80px"},{Header:M.formatMessage({defaultMessage:"開始訂閱時間",id:"admin.creatorSubscription.member.開始訂閱時間"}),id:"currentPeriodStartedAt",accessor:e=>eg(e.currentPeriodStartedAt||e.createdAt,n),w:"150px"},{Header:M.formatMessage({defaultMessage:"下次扣款時間",id:"admin.creatorSubscription.member.下次扣款時間"}),id:"nextBillingAt",accessor:e=>"one-time"===e.billingPeriod?"-":az(e)?M.formatMessage({defaultMessage:"已取消訂閱",id:"admin.creatorSubscription.member.已取消訂閱"}):eg(e.nextBillingAt,n),w:"150px"},{Header:M.formatMessage({defaultMessage:"金額",id:"admin.creatorSubscription.member.金額"}),id:"amount",accessor:e=>ef(e.amount,e.currency,n),w:"72px"},...c?[{Header:M.formatMessage({defaultMessage:"操作",id:"admin.creatorSubscription.member.操作"}),id:"actions",accessor:e=>e,Cell:e=>{let{value:t}=e;return az(t)||"one-time"===t.billingPeriod?null:(0,r.Y)(i.Button,{size:"sm",colorScheme:"red",variant:"outline",isLoading:s===t.id,onClick:()=>c(t),children:M.formatMessage({defaultMessage:"取消訂閱",id:"admin.creatorSubscription.member.取消訂閱"})})},w:"100px",disableSortBy:!0}]:[],{Header:M.formatMessage({defaultMessage:"通知狀態",id:"admin.creatorSubscription.member.通知狀態"}),id:"callbackStatus",accessor:e=>e.callbackStatus||"pending",Cell:e=>{let{row:{original:t}}
1=e,a=t.callbackStatus||(t.callbackUrlConfigured?"pending":"skipped");return(0,r.FD)(i.Stack,{spacing:1.5,align:"flex-start",children:[(0,r.Y)(i.Badge,{colorScheme:aR[a],px:2,py:1,borderRadius:"full",children:aO(a,t.callbackUrlConfigured,M)}),(0,r.FD)(i.Stack,{spacing:.5,align:"flex-start",children:[(0,r.Y)(i.Text,{fontSize:"xs",color:"gray.500",whiteSpace:"nowrap",children:M.formatMessage({defaultMessage:"嘗試 {count} 次",id:"admin.creatorSubscription.member.callback.嘗試次數"},{count:t.callbackAttempts||0})}),t.callbackCompletedAt?(0,r.Y)(i.Text,{fontSize:"xs",color:"gray.500",whiteSpace:"nowrap",children:M.formatMessage({defaultMessage:"最後成功:{time}",id:"admin.creatorSubscription.member.callback.最後成功"},{time:eg(t.callbackCompletedAt,n)})}):null,t.callbackLastResponseCode?(0,r.Y)(i.Text,{fontSize:"xs",color:"gray.500",whiteSpace:"nowrap",children:M.formatMessage({defaultMessage:"回應碼:{code}",id:"admin.creatorSubscription.member.callback.回應碼"},{code:t.callbackLastResponseCode})}):null]})]})},w:"180px"},{Header:M.formatMessage({defaultMessage:"操作",id:"admin.creatorSubscription.member.操作"}),id:"callbackAction",accessor:e=>e.id,Cell:e=>{let{row:{original:t}}=e;return(0,r.FD)(i.Stack,{spacing:2,align:"flex-start",children:[(0,r.Y)(i.Button,{size:"sm",variant:"outline",colorScheme:"green",onClick:()=>p(t.id),isLoading:u===t.id,isDisabled:!t.callbackUrlConfigured,children:M.formatMessage({defaultMessage:"重新通知",id:"admin.creatorSubscription.member.重新通知"})}),t.callbackUrlConfigured?null:(0,r.Y)(i.Text,{fontSize:"xs",color:"gray.500",children:M.formatMessage({defaultMessage:"未設定 callback URL",id:"admin.creatorSubscription.member.未設定callbackURL"})})]})},w:"120px"},{Header:M.formatMessage({defaultMessage:"狀態變更紀錄",id:"admin.creatorSubscription.member.狀態變更紀錄"}),id:"statusCallbackRecords",accessor:e=>e.id,Cell:e=>{let{row:{original:t}}=e;return(0,r.Y)(i.Button,{size:"sm",variant:"ghost",colorScheme:"blue",onClick:()=>g(t.id),isLoading:m===t.id,children:M.formatMessage({defaultMessage:"查看紀錄",id:"admin.creatorSubscription.member.查看狀態變更紀錄"})})},w:"110px"}],[M,n,s,c,g,p,u,m]);return a?(0,r.Y)(i.Box,{py:10,textAlign:"center",children:(0,r.Y)(i.Spinner,{})}):o?(0,r.Y)(i.Box,{p:6,borderRadius:"xl",border:"1px solid",borderColor:"red.100",bg:"red.50",children:(0,r.Y)(i.Text,{color:"red.500",children:eh(o,M.formatMessage({defaultMessage:"訂閱列表載入失敗",id:"admin.creatorSubscription.member.載入失敗"}))})}):(0,r.FD)(i.Stack,{spacing:4,children:[f&&(0,r.Y)(i.Flex,{align:{base:"flex-start",md:"center"},justify:"space-between",direction:{base:"column",md:"row"},gap:2,children:(0,r.FD)(i.Stack,{spacing:1,children:[(0,r.Y)(i.Text,{fontSize:"2xl",fontWeight:"700",color:"gray.800",children:M.formatMessage({defaultMessage:"訂閱管理",id:"admin.creatorSubscription.member.訂閱管理標題"})}),(0,r.Y)(i.Text,{color:"gray.500",children:M.formatMessage({defaultMessage:"共 {count} 筆訂閱",id:"admin.creatorSubscription.member.訂閱數說明"},{count:t.length})})]})}),(0,r.Y)(i.Box,{bg:"white",border:"1px solid",borderColor:"gray.200",borderRadius:"2xl",p:4,children:(0,r.Y)(S,{columns:y,data:t,storageKey:"creator-subscription-subscribers",defaultSortBy:v,pageSize:10,placeholder:(0,r.FD)(i.Box,{py:10,children:[(0,r.Y)(eS,{py:6}),(0,r.Y)(i.Text,{mt:3,textAlign:"center",fontSize:"lg",fontWeight:"700",children:M.formatMessage({defaultMessage:"目前還沒有訂閱",id:"admin.creatorSubscription.member.目前還沒有訂閱"})}),(0,r.Y)(i.Text,{mt:2,textAlign:"center",color:"gray.500",children:M.formatMessage({defaultMessage:"當使用者完成訂閱後,這裡會顯示訂閱名單與目前狀態。",id:"admin.creatorSubscription.member.空狀態說明"})})]}),style:{minWidth:"1760px"},renderHeaderControls:h&&b?aF({mode:h,onModeChange:b,liveLabel:M.formatMessage({defaultMessage:"正式 Live",id:"admin.creatorSubscription.mode.live"}),testLabel:M.formatMessage({defaultMessage:"測試 Test",id:"admin.creatorSubscription.mode.test"})}):void 0})})]})},aN=(e,t)=>"live"===t?e.filter(e=>"live"===e.mode||!e.mode):e.filter(e=>"test"===e.mode),aE=e=>{let{subscribers:t,orders:a,isSubscribersLoading:o,subscribersError:n,isOrdersLoading:s,ordersError:c,checkoutAttemptsError:u,checkoutAttemptsLimit:p,checkoutAttemptsTruncated:m,locale:g,ordersApiUrl:f,selectedPlanName:h,onClearPlanFilter:b,cancellingSubscriptionId:M,onCancelSubscription:S,retryingSubscriberId:v,onRetrySubscriberCallback:y,viewingStatusCallbackRecordsId:x,onOpenStatusCallbackRecords:Y}=e,w=(0,d.A)(),[C,A]=(0,l.useState)("subscriptions"),[k,F]=(0,l.useState)("live"),[D,T]=(0,l.useState)("live"),I=(0,l.useMemo)(()=>aN(t,k),[t,k]),P=(0,l.useMemo)(()=>aN(a,D),[a,D]),R=[{key:"subscriptions",label:w.formatMessage({defaultMessage:"訂閱({count})",id:"admin.creatorSubscription.txTabs.訂閱"},{count:I.length})},{key:"orders",label:w.formatMessage({defaultMessage:"訂單({count})",id:"admin.creatorSubscription.txTabs.訂單"},{count:P.length})}];return(0,r.FD)(i.Stack,{spacing:3,children:[(0,r.FD)(i.HStack,{spacing:2,flexWrap:"wrap",children:[R.map(e=>
1{let t=C===e.key;return(0,r.Y)(i.Button,{size:"sm",variant:"ghost",borderRadius:"full",bg:t?"GUI.green.50":"transparent",color:t?"GUI.green.700":"gray.600",fontWeight:t?"800":"600",onClick:()=>A(e.key),"aria-pressed":t,children:e.label},e.key)}),h&&(0,r.FD)(i.Tag,{size:"sm",borderRadius:"full",colorScheme:"green",children:[(0,r.Y)(i.TagLabel,{children:w.formatMessage({defaultMessage:"方案:{name}",id:"admin.creatorSubscription.txTabs.方案篩選中"},{name:h})}),(0,r.Y)(i.TagCloseButton,{onClick:b})]})]}),(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.500",children:"subscriptions"===C?w.formatMessage({defaultMessage:"訂閱是粉絲與你的持續扣款關係:目前狀態、方案與下次扣款時間。",id:"admin.creatorSubscription.txTabs.訂閱說明"}):w.formatMessage({defaultMessage:"訂單是每一次實際成立的扣款紀錄與發票狀態。",id:"admin.creatorSubscription.txTabs.訂單說明"})}),(0,r.Y)(i.Box,{children:"subscriptions"===C?(0,r.Y)(aL,{subscribers:I,isSubscribersLoading:o,subscribersError:n,locale:g,cancellingSubscriptionId:M,onCancelSubscription:S,retryingSubscriberId:v,onRetrySubscriberCallback:y,viewingStatusCallbackRecordsId:x,onOpenStatusCallbackRecords:Y,showHeading:!1,mode:k,onModeChange:F}):(0,r.Y)(aI,{orders:P,isOrdersLoading:s,ordersError:c,checkoutAttemptsError:u,checkoutAttemptsLimit:p,checkoutAttemptsTruncated:m,locale:g,ordersApiUrl:f,showHeading:!1,mode:D,onModeChange:T})})]})};var aW=a(72258);let aH=e=>"one-time"===e,aU=e=>new Date(e).getTime(),aK=e=>"number"==typeof e&&Number.isFinite(e)&&e>0,a_=e=>"number"==typeof e&&Number.isFinite(e)&&e>=0,aj=e=>a_(e)&&Number.isInteger(e),aG=e=>{let t=aU(e.startAt),a=aU(e.endAt),r=36e5*e.stepHours;return Number.isFinite(t)&&Number.isFinite(a)&&!(a<=t)&&aK(r)?{startMs:t,endMs:a,stepMs:r}:null},aV=e=>{let t=aG(e);return t?Math.ceil((t.endMs-t.startMs)/t.stepMs):0},aq=(e,t,a)=>Math.min(e.startPrice+a*e.stepAmount,t),a$=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now(),a=aG(e);return a?t<a.startMs?"upcoming":t>=a.endMs?"ended":"running":"ended"},aJ=(e,t)=>{let a=aG(e),r=aG(t);return!!a&&!!r&&a.startMs<r.endMs&&r.startMs<a.endMs},aZ=function(e,t){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now();if(!(null==e?void 0:e.length)||!aK(t))return null;for(let r of e){let e=aG(r);if(!e||a<e.startMs||a>=e.endMs||!a_(r.startPrice)||!a_(r.stepAmount))continue;let i=Math.floor((a-e.startMs)/e.stepMs),o=Math.ceil((e.endMs-e.startMs)/e.stepMs),n=Math.min(e.startMs+(i+1)*e.stepMs,e.endMs),s=i>=o-1;return{campaignId:r.id,price:aq(r,t,i),segmentIndex:i,segmentCount:o,segmentEndsAt:new Date(n).toISOString(),nextPrice:s?t:aq(r,t,i+1),campaignEndsAt:new Date(e.endMs).toISOString()}}return null},aX=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now();return"fixed"===(e.pricingType||"fixed")&&aH(e.billingPeriod)?aZ(e.waveCampaigns,e.amount,t):null},aQ=(e,t)=>{let a=aG(e);if(!a)return[];let r=Math.min(Math.ceil((a.endMs-a.startMs)/a.stepMs),1e3),i=[];for(let o=0;o<r;o+=1){let r=a.startMs+o*a.stepMs,n=e.startPrice+o*e.stepAmount;i.push({index:o,startsAt:new Date(r).toISOString(),endsAt:new Date(Math.min(r+a.stepMs,a.endMs)).toISOString(),price:Math.min(n,t),capped:n>t})}return i},a0=e=>{let t=aG(e);if(!t)return!1;let a=Math.ceil((t.endMs-t.startMs)/t.stepMs),r=t.startMs+(a-1)*t.stepMs;return t.endMs<r+t.stepMs-1e3},a1=(e,t)=>{let a=aV(e);if(!a)return null;if(e.stepAmount<=0)return e.startPrice>t?{index:0,price:e.startPrice}:null;let r=Math.floor((t-e.startPrice)/e.stepAmount)+1;if(r>=a)return null;let i=Math.max(r,0);return{index:i,price:e.startPrice+i*e.stepAmount}},a2=e=>{let t=new Date(e);return Number.isNaN(t.getTime())?"—":(0,ep.b6)(t,"yyyy-MM-dd HH:mm")},a5=e=>"".concat(a2(e.startAt)," ~ ").concat(a2(e.endAt)),a4=(e,t)=>{let a=[];return aK(t)?(e.forEach(e=>{if(!aG(e)){a.push("波段結束時間必須晚於開始時間,且漲價間隔需大於 0 小時。");return}aV(e)>1e3&&a.push("波段區間過多(超過 ".concat(1e3," 段),請縮短波段期間或拉長漲價間隔。"))}),e.forEach((t,r)=>
1{e.slice(r+1).forEach(e=>{aJ(t,e)&&a.push("波段時間衝突(".concat(a5(t)," 與 ").concat(a5(e),"),請調整開始或結束時間。"))})}),a.length||e.forEach(e=>{if(!aj(e.startPrice)){a.push("波段起始價格必須是 0 以上的整數。");return}if(!aj(e.stepAmount)){a.push("每次漲價金額必須是 0 以上的整數。");return}e.startPrice<60&&a.push("波段起始價格不得低於 NT$".concat(60,"(Portaly Payment 方案最低金額),否則買家無法結帳。"));let r=a1(e,t);r&&a.push("波段價格超過方案金額:第 ".concat(r.index+1," 段價格 NT$").concat(r.price," 超過方案金額 NT$").concat(t,",請修改波段優惠內容。"))})):a.push("方案金額尚未設定,無法設定波段優惠。"),a},a3=()=>"wave_".concat(Date.now().toString(36)).concat(Math.random().toString(36).slice(2,8));var a6=a(74447);let a7={upcoming:"orange",running:"green",ended:"gray"},a8=(e,t)=>"running"===t?e.formatMessage({defaultMessage:"進行中",id:"admin.creatorSubscription.wave.phase.進行中"}):"upcoming"===t?e.formatMessage({defaultMessage:"未開始",id:"admin.creatorSubscription.wave.phase.未開始"}):e.formatMessage({defaultMessage:"已結束",id:"admin.creatorSubscription.wave.phase.已結束"}),a9=()=>{let[e,t]=(0,l.useState)(()=>Date.now());return(0,l.useEffect)(()=>{let e=setInterval(()=>t(Date.now()),3e4);return()=>clearInterval(e)},[]),e},re=(e,t,a)=>a<Date.parse(e)?"upcoming":t&&a>=Date.parse(t)?"ended":"running",rt={startAt:"",endAt:"",startPrice:"",stepHours:"",stepAmount:""},ra=e=>{let t=new Date(e);return Number.isNaN(t.getTime())?"":(0,a6.formatInTimeZone)(t,ep.$i,"yyyy-MM-dd'T'HH:mm")},rr=e=>{if(!e)return"";let t=(0,a6.zonedTimeToUtc)(e,ep.$i);return Number.isNaN(t.getTime())?"":t.toISOString()},ri=e=>e?{startAt:ra(e.startAt),endAt:ra(e.endAt),startPrice:String(e.startPrice),stepHours:String(e.stepHours),stepAmount:String(e.stepAmount)}:rt,ro=e=>({amount:(null==e?void 0:e.amount)!=null?String(e.amount):"",listPrice:(null==e?void 0:e.listPrice)!=null?String(e.listPrice):""}),rn=(e,t)=>{var a,r;if(!t.campaignId)return null;let i=e.find(e=>e.id===t.planId);return null!==(r=null==i?void 0:null===(a=i.waveCampaigns)||void 0===a?void 0:a.find(e=>e.id===t.campaignId))&&void 0!==r?r:null},rs=e=>{var t,a,o;let{target:n,plans:s,isSaving:c,onClose:u,onSubmit:p}=e,m=(0,d.A)(),g=a9(),f=!!n.campaignId,h=ej.A,[b,M]=(0,l.useState)(n.planId),[S]=(0,l.useState)(()=>{var e;return null!==(e=n.campaignId)&&void 0!==e?e:a3()}),[v,y]=(0,l.useState)(()=>ri(rn(s,n))),x=null!==(a=s.find(e=>e.id===b))&&void 0!==a?a:null,[Y,w]=(0,l.useState)(()=>{var e;return ro(null!==(e=s.find(e=>e.id===n.planId))&&void 0!==e?e:null)}),C=(0,l.useRef)(Y);(0,l.useEffect)(()=>{var e;let t=ro(null!==(e=s.find(e=>e.id===b))&&void 0!==e?e:null);w(t),C.current=t},[b]);let A=(null!==(o=null==x?void 0:x.waveCampaigns)&&void 0!==o?o:[]).filter(e=>e.id!==S),k=(e,t)=>y(a=>({...a,[e]:t})),F=(e,t)=>w(a=>({...a,[e]:t})),D=Object.values(v).every(e=>""!==e.trim()),T=Number(Y.amount),I=Number(Y.listPrice),P=(0,l.useMemo)(()=>D?{id:S,startAt:rr(v.startAt),endAt:rr(v.endAt),startPrice:Number(v.startPrice),stepHours:Number(v.stepHours),stepAmount:Number(v.stepAmount)}:null,[S,v,D]),R=(0,l.useMemo)(()=>P&&x?a4([...A,P],T):[],[P,x,T]),B=(0,l.useMemo)(()=>P&&x&&!R.length?aQ(P,T):[],[P,x,T,R.length]),z=(0,l.useMemo)(()=>P&&B.length?[...B.map(e=>({label:m.formatMessage({defaultMessage:"第 {index} 段",id:"admin.creatorSubscription.wave.段次標籤"},{index:e.index+1}),startsAt:e.startsAt,endsAt:e.endsAt,price:e.price})),{label:m.formatMessage({defaultMessage:"結束後",id:"admin.creatorSubscription.wave.結束後"}),startsAt:P.endAt,endsAt:null,price:T}]:[],[P,B,T,m]),O=(0,l.useMemo)(()=>[{Header:m.formatMessage({defaultMessage:"段次",id:"admin.creatorSubscription.wave.col.段次"}),id:"label",accessor:e=>e.label,w:"125px",disableSortBy:!0},{Header:m.formatMessage({defaultMessage:"開始時間",id:"admin.creatorSubscription.wave.開始時間"}),id:"startsAt",accessor:e=>a2(e.startsAt),disableSortBy:!0},{Header:m.formatMessage({defaultMessage:"結束時間",id:"admin.creatorSubscription.wave.結束時間"}),id:"endsAt",accessor:e=>e.endsAt?a2(e.endsAt):"—",disableSortBy:!0},{Header:m.formatMessage({defaultMessage:"售價",id:"admin.creatorSubscription.wave.col.售價"}),id:"price",accessor:e=>e.price,Cell:e=>{let{value:t}=e;return(0,r.FD)(i.Text,{fontWeight:"700",children:["NT$",t]})},w:"110px",disableSortBy:!0},{Header:m.formatMessage({defaultMessage:"狀態",id:"admin.creatorSubscription.wave.col.狀態"}),id:"phase",accessor:e=>re(e.startsAt,e.endsAt,g),Cell:e=>{let{value:t}=e;return(0,r.Y)(i.Badge,{colorScheme:a7[t],borderRadius:"full",px:2,children:a8(m,t)})},w:"100px",disableSortBy:!0}],[m,g]),L=(0,l.useMemo)(()=>{var e,t;if(!P)return[];let a=m.formatMessage({defaultMessage:"每 {stepHours} 小時 +NT${stepAmount},共 {count} 段",id:"admin.creatorSubscription.wave.摘要漲價"},{stepHours:P.stepHours,stepAmount:P.stepAmount,count:aV(P)}),r=a0(P)?m.formatMessage({defaultMessage:"(最後一段不滿 {stepHours} 小時)",id:"admin.creatorSubscription.wave.摘要尾段不滿"},{stepHours:P.stepHours}):"";return[{label:m.formatMessage({defaultMessage:"開始",id:"admin.creatorSubscription.wave.摘要標籤.開始"}),text:m.formatMessage({defaultMessage:"{startAt},售價 NT${startPrice}",id:"admin.creatorSubscription.wave.摘要開始"}
1,{startAt:a2(P.startAt),startPrice:P.startPrice})},{label:m.formatMessage({defaultMessage:"漲價",id:"admin.creatorSubscription.wave.摘要標籤.漲價"}),text:"".concat(a).concat(r)},{label:m.formatMessage({defaultMessage:"結束",id:"admin.creatorSubscription.wave.摘要標籤.結束"}),text:m.formatMessage({defaultMessage:"{endAt},最後一段 NT${finalPrice},之後回到 NT${planAmount}",id:"admin.creatorSubscription.wave.摘要結束"},{endAt:a2(P.endAt),finalPrice:null!==(t=null===(e=B[B.length-1])||void 0===e?void 0:e.price)&&void 0!==t?t:P.startPrice,planAmount:T})}]},[P,B,T,m]),N=!!P&&!R.length&&!c,E=[f?null==x?void 0:null===(t=x.waveCampaigns)||void 0===t?void 0:t.find(e=>e.id===n.campaignId):null,P].some(e=>e&&"running"===a$(e,g)),W=async()=>{if(!P||!x)return;let e={};Y.amount!==C.current.amount&&(e.amount=T),Y.listPrice!==C.current.listPrice&&(e.listPrice=""!==Y.listPrice&&I>0?I:null),await p(x.id,{waveCampaigns:[...A,P],...e})},H=f?m.formatMessage({defaultMessage:"儲存設定",id:"admin.creatorSubscription.wave.儲存設定"}):m.formatMessage({defaultMessage:"新增",id:"admin.creatorSubscription.wave.新增"});return(0,r.FD)(i.Modal,{isOpen:!0,onClose:u,isCentered:!0,size:"3xl",scrollBehavior:"inside",children:[(0,r.Y)(i.ModalOverlay,{}),(0,r.FD)(i.ModalContent,{children:[(0,r.Y)(i.ModalHeader,{children:f?m.formatMessage({defaultMessage:"編輯波段優惠",id:"admin.creatorSubscription.wave.編輯波段優惠"}):m.formatMessage({defaultMessage:"新增波段優惠",id:"admin.creatorSubscription.wave.新增波段優惠"})}),(0,r.Y)(i.ModalCloseButton,{}),(0,r.Y)(i.ModalBody,{children:(0,r.FD)(i.Stack,{spacing:5,children:[(0,r.FD)(i.FormControl,{isRequired:!0,children:[(0,r.Y)(i.FormLabel,{children:m.formatMessage({defaultMessage:"適用方案",id:"admin.creatorSubscription.wave.適用方案"})}),(0,r.Y)(i.Select,{value:b,isDisabled:f,onChange:e=>M(e.target.value),children:(f?s:s.filter(e=>"active"===e.status)).map(e=>(0,r.Y)("option",{value:e.id,children:e.name},e.id))}),(0,r.Y)(i.FormHelperText,{children:m.formatMessage({defaultMessage:"僅支援一次性付款的方案。",id:"admin.creatorSubscription.wave.方案說明"})})]}),(0,r.FD)(i.SimpleGrid,{columns:{base:1,md:2},spacing:4,children:[(0,r.FD)(i.FormControl,{children:[(0,r.Y)(i.FormLabel,{children:m.formatMessage({defaultMessage:"原價(選填,顯示用)",id:"admin.creatorSubscription.plan.原價"})}),(0,r.Y)(i.Input,{type:"number",min:1,step:1,placeholder:"399",value:Y.listPrice,onChange:e=>F("listPrice",e.target.value)})]}),(0,r.FD)(i.FormControl,{isRequired:!0,children:[(0,r.Y)(i.FormLabel,{children:m.formatMessage({defaultMessage:"金額",id:"admin.creatorSubscription.wave.金額"})}),(0,r.Y)(i.Input,{type:"number",min:1,step:1,value:Y.amount,onChange:e=>F("amount",e.target.value)})]})]}),(0,r.FD)(i.SimpleGrid,{columns:{base:1,md:2},spacing:4,children:[(0,r.FD)(i.FormControl,{isRequired:!0,children:[(0,r.Y)(i.FormLabel,{children:m.formatMessage({defaultMessage:"開始時間",id:"admin.creatorSubscription.wave.開始時間"})}),(0,r.Y)(i.Input,{type:"datetime-local",value:v.startAt,onChange:e=>k("startAt",e.target.value)})]}),(0,r.FD)(i.FormControl,{isRequired:!0,children:[(0,r.Y)(i.FormLabel,{children:m.formatMessage({defaultMessage:"結束時間",id:"admin.creatorSubscription.wave.結束時間"})}),(0,r.Y)(i.Input,{type:"datetime-local",value:v.endAt,onChange:e=>k("endAt",e.target.value)})]})]}),(0,r.FD)(i.SimpleGrid,{columns:{base:1,md:3},spacing:4,children:[(0,r.FD)(i.FormControl,{isRequired:!0,children:[(0,r.Y)(i.FormLabel,{children:m.formatMessage({defaultMessage:"起始價格 NT$",id:"admin.creatorSubscription.wave.起始價格"})}),(0,r.Y)(i.Input,{type:"number",min:0,step:1,value:v.startPrice,onChange:e=>k("startPrice",e.target.value)})]}),(0,r.FD)(i.FormControl,{isRequired:!0,children:[(0,r.Y)(i.FormLabel,{children:m.formatMessage({defaultMessage:"每隔幾小時漲價",id:"admin.creatorSubscription.wave.每隔幾小時漲價"})}),(0,r.Y)(i.Input,{type:"number",min:.5,step:.5,value:v.stepHours,onChange:e=>k("stepHours",e.target.value)})]}),(0,r.FD)(i.FormControl,{isRequired:!0,children:[(0,r.Y)(i.FormLabel,{children:m.formatMessage({defaultMessage:"每次漲多少 NT$",id:"admin.creatorSubscription.wave.每次漲多少"})}),(0,r.Y)(i.Input,{type:"number",min:0,step:1,value:v.stepAmount,onChange:e=>k("stepAmount",e.target.value)})]})]}),R.length>0&&(0,r.FD)(i.Alert,{status:"error",borderRadius:"lg",alignItems:"flex-start",children:[(0,r.Y)(i.AlertIcon,{}),(0,r.Y)(i.Stack,{spacing:1,children:R.map(e=>(0,r.Y)(i.Text,{fontSize:"sm",children:e},e))})]}),P&&x&&!R.length&&(0,r.FD)(i.Stack,{spacing:3,children:[(0,r.Y)(i.Alert,{status:"success",bg:"green.50",borderRadius:"lg",children:(0,r.Y)(i.Stack,{spacing:1,fontSize:"sm",width:"100%",children:L.map(e=>{let{label:t,text:a}=e;return(0,r.FD)(i.HStack,{align:"baseline",spacing:2,children:[(0,r.Y)(i.Text,{fontWeight:"700",flexShrink:0,minW:"42px",children:t}),(0,r.Y)(i.Text,{children:a})]},t)})})}),E&&(0,r.FD)(i.Alert,{status:"warning",borderRadius:"lg",children:[(0,r.Y)(i.AlertIcon,{}
1),m.formatMessage({defaultMessage:"波段進行中,儲存後買家看到的售價會馬上改變",id:"admin.creatorSubscription.wave.進行中提醒"})]}),(0,r.FD)(i.Box,{children:[(0,r.Y)(i.Text,{fontSize:"sm",fontWeight:"700",mb:2,children:m.formatMessage({defaultMessage:"各段價格({count})",id:"admin.creatorSubscription.wave.各段價格"},{count:B.length})}),(0,r.Y)(h,{data:z,columns:O,variant:"minimal",pageSize:10,disableGlobalFilter:!0,sx:{tbody:{td:{paddingLeft:4,paddingRight:4}}}})]})]})]})}),(0,r.Y)(i.ModalFooter,{children:(0,r.FD)(i.HStack,{spacing:3,justify:"flex-end",width:"100%",children:[(0,r.Y)(i.Button,{variant:"ghost",onClick:u,isDisabled:c,children:m.formatMessage({defaultMessage:"取消",id:"admin.creatorSubscription.wave.取消"})}),E?(0,r.Y)(e7.A,{colorScheme:"green",confirmColorScheme:"green",isDisabled:!N,isLoading:c,title:m.formatMessage({defaultMessage:"這個波段正在進行中",id:"admin.creatorSubscription.wave.進行中標題"}),body:m.formatMessage({defaultMessage:"儲存後買家看到的售價會立刻依新設定改變,確定要儲存嗎?",id:"admin.creatorSubscription.wave.進行中確認"}),confirm:H,onClick:W,children:H}):(0,r.Y)(i.Button,{colorScheme:"green",isDisabled:!N,isLoading:c,onClick:()=>{W().catch(()=>{})},children:H})]})})]})]})},rl=e=>{let{plans:t,isLoading:a,savingPlanId:o,onSave:n,isFreeTier:s,activeBonus:c,offerId:u}=e,p=(0,d.A)(),m=a9(),g=(0,i.useDisclosure)(),[f,h]=(0,l.useState)(null),b=(0,l.useMemo)(()=>t.filter(e=>"fixed"===(e.pricingType||"fixed")&&aH(e.billingPeriod)),[t]),M=(0,l.useMemo)(()=>b.filter(e=>"active"===e.status),[b]),v=(0,l.useMemo)(()=>b.flatMap(e=>{var t;return(null!==(t=e.waveCampaigns)&&void 0!==t?t:[]).map(t=>({plan:e,campaign:t}))}).sort((e,t)=>new Date(e.campaign.startAt).getTime()-new Date(t.campaign.startAt).getTime()),[b]),y=(0,l.useCallback)((e,t)=>{h({planId:e,campaignId:t})},[]),x=(0,l.useCallback)(e=>{var t;return n(e.plan.id,{waveCampaigns:(null!==(t=e.plan.waveCampaigns)&&void 0!==t?t:[]).filter(t=>t.id!==e.campaign.id)})},[n]),Y=()=>h(null),w=async(e,t)=>{await n(e,t),Y()},C=p.formatMessage({defaultMessage:"新增波段優惠",id:"admin.creatorSubscription.wave.新增波段優惠"}),A=(0,r.Y)(eN,{isLocked:!!s,children:(0,r.Y)(i.Button,{size:"md",variant:"outline",colorScheme:"green",borderRadius:"xl",leftIcon:(0,r.Y)(i.Icon,{as:S.jgn,boxSize:5}),isDisabled:!s&&!M.length,onClick:()=>{if(s){g.onOpen();return}M.length&&h({planId:M[0].id,campaignId:null})},children:C})}),k=(0,r.FD)(r.FK,{children:[f&&(0,r.Y)(rs,{target:f,plans:b,isSaving:!!o,onClose:Y,onSubmit:w}),s&&(0,r.Y)(eC,{isOpen:g.isOpen,onClose:g.onClose,activeBonus:c,entryPoint:eY.A.WaveCampaignCreateBlocked,tracker:"upgrade.creatorSubscriptionAddWaveCampaign",offerId:u,title:p.formatMessage({defaultMessage:"升級啟用波段優惠",id:"admin.creatorSubscription.upgradeIntro.title.wave"})})]}),F=ej.A,D=(0,l.useMemo)(()=>[{Header:p.formatMessage({defaultMessage:"方案",id:"admin.creatorSubscription.wave.col.方案"}),id:"plan",accessor:e=>e.plan.name,Cell:e=>{let{row:{original:t}}=e;return(0,r.FD)(i.HStack,{justifyContent:"space-between",spacing:3,children:[(0,r.Y)(i.Text,{fontSize:{base:"sm",sm:"md"},textAlign:"start",noOfLines:1,children:t.plan.name}),(0,r.Y)(aW.A,{onClick:()=>y(t.plan.id,t.campaign.id),children:p.formatMessage({defaultMessage:"編輯",id:"admin.creatorSubscription.wave.編輯"})})]})},w:"310px"},{Header:p.formatMessage({defaultMessage:"方案金額",id:"admin.creatorSubscription.wave.col.方案金額"}),id:"amount",accessor:e=>e.plan.amount,Cell:e=>{let{value:t}=e;return(0,r.FD)(i.Text,{whiteSpace:"nowrap",children:["NT$",t]})},w:"110px"},{Header:p.formatMessage({defaultMessage:"狀態",id:"admin.creatorSubscription.wave.col.狀態"}),id:"phase",accessor:e=>a$(e.campaign,m),Cell:e=>{let{value:t}=e;return(0,r.Y)(i.Badge,{colorScheme:a7[t],borderRadius:"full",px:2,children:a8(p,t)})},w:"100px"},{Header:p.formatMessage({defaultMessage:"波段期間",id:"admin.creatorSubscription.wave.col.波段期間"}),id:"period",accessor:e=>e.campaign.startAt,Cell:e=>{let{row:{original:t}}=e;return(0,r.FD)(i.Text,{fontSize:"sm",whiteSpace:"nowrap",children:[a2(t.campaign.startAt),(0,r.Y)("br",{}
1),"~ ",a2(t.campaign.endAt)]})},w:"170px"},{Header:p.formatMessage({defaultMessage:"漲價規則",id:"admin.creatorSubscription.wave.col.漲價規則"}),id:"step",accessor:e=>e.campaign.startPrice,Cell:e=>{let{row:{original:t}}=e;return(0,r.FD)(i.Text,{fontSize:"sm",whiteSpace:"nowrap",children:[p.formatMessage({defaultMessage:"NT${startPrice} 起,",id:"admin.creatorSubscription.wave.漲價規則起價"},{startPrice:t.campaign.startPrice}),(0,r.Y)("br",{}),p.formatMessage({defaultMessage:"每 {stepHours} 小時 +NT${stepAmount}",id:"admin.creatorSubscription.wave.漲價規則階梯"},{stepHours:t.campaign.stepHours,stepAmount:t.campaign.stepAmount})]})},w:"170px"},{Header:p.formatMessage({defaultMessage:"目前售價",id:"admin.creatorSubscription.wave.col.目前售價"}),id:"currentPrice",accessor:e=>{let t=aX(e.plan,m);return(null==t?void 0:t.campaignId)===e.campaign.id?t.price:null},Cell:e=>{let{row:{original:t}}=e,a=aX(t.plan,m);return(null==a?void 0:a.campaignId)!==t.campaign.id?(0,r.Y)(i.Text,{color:"gray.400",children:"—"}):(0,r.FD)(i.Stack,{spacing:0,whiteSpace:"nowrap",children:[(0,r.FD)(i.Text,{fontWeight:"800",color:"GUI.green.500",children:["NT$",a.price]}),(0,r.Y)(i.Text,{fontSize:"xs",color:"gray.500",children:p.formatMessage({defaultMessage:"第 {index}/{total} 段",id:"admin.creatorSubscription.wave.目前段次"},{index:a.segmentIndex+1,total:aV(t.campaign)})})]})},w:"125px"},{Header:p.formatMessage({defaultMessage:"刪除",id:"admin.creatorSubscription.wave.col.刪除"}),id:"delete",accessor:e=>e.campaign.id,Cell:e=>{let{row:{original:t}}=e;return(0,r.Y)(eG.A,{confirmTitle:p.formatMessage({defaultMessage:"移除波段優惠",id:"admin.creatorSubscription.wave.移除波段優惠"}),confirmBody:p.formatMessage({defaultMessage:"移除後,這個方案的售價會立刻回到方案金額。確定要移除嗎?",id:"admin.creatorSubscription.wave.移除確認"}),onClick:()=>x(t)})},w:"85px",disableSortBy:!0}],[p,m,y,x]);return a?(0,r.Y)(i.Box,{py:10,textAlign:"center",children:(0,r.Y)(i.Spinner,{})}):v.length?(0,r.FD)(i.Stack,{spacing:4,children:[k,(0,r.FD)(i.Flex,{justify:"space-between",align:"center",gap:3,wrap:"wrap",children:[(0,r.FD)(i.HStack,{spacing:2,align:"baseline",children:[(0,r.Y)(i.Text,{fontWeight:"800",fontSize:"18px",children:p.formatMessage({defaultMessage:"波段優惠",id:"admin.creatorSubscription.wave.標題"})}),(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.500",fontWeight:"700",children:v.length})]}),A]}),(0,r.Y)(F,{data:v,columns:D,variant:"minimal",textAlign:"end",disableGlobalFilter:!0,sx:{tbody:{td:{paddingLeft:4,paddingRight:4}}}})]}):(0,r.FD)(r.FK,{children:[(0,r.FD)(i.Box,{p:{base:6,md:10},bg:"white",border:"1px solid",borderColor:"gray.200",borderRadius:"2xl",children:[(0,r.Y)(eS,{py:10}),(0,r.Y)(i.Text,{mt:3,textAlign:"center",fontSize:"lg",fontWeight:"700",children:p.formatMessage({defaultMessage:"尚未設定任何波段優惠",id:"admin.creatorSubscription.wave.尚未設定"})}),(0,r.Y)(i.Text,{mt:2,textAlign:"center",color:"gray.500",children:M.length?p.formatMessage({defaultMessage:"設定後,方案售價會在活動期間從起始價開始,每隔固定時間往上漲,活動結束自動回到方案金額。",id:"admin.creatorSubscription.wave.空狀態說明"}):p.formatMessage({defaultMessage:"請先建立一個一次性付款、固定金額的方案,才能設定波段優惠。",id:"admin.creatorSubscription.wave.空狀態無方案"})}),(0,r.Y)(i.Flex,{justify:"center",mt:6,children:A})]}),k]})},rd=e=>{let{hasTestKey:t,agentConnected:a,hasPlans:r,hasAnyCheckoutSession:i,hasCompletedTestCheckout:o,recentLiveOrderCount:n}=e;return!!t&&!!a&&void 0!==i&&void 0!==o&&0===n&&!(!0===r&&!0===i&&!0===o)},rc=async(e,t)=>{let a=[],r=null;for(let n=0;n<50;n+=1){var i,o;let n=e.includes("?")?"&":"?",s=await t(r?"".concat(e).concat(n,"startAfter=").concat(encodeURIComponent(r)):e);a.push(...null!==(o=s.data)&&void 0!==o?o:[]);let l=(null===(i=s.pagination)||void 0===i?void 0:i.hasMore)?s.pagination.nextCursor:null;if(!l||l===r)break;r=l}return a},ru=e=>"failed"!==e.outcome?"ABANDONED":e.paymentCanceled?"CANCELED":"FAILED",rp=e=>({id:e.id,recordKind:"checkout_attempt",source:e.source,profileId:e.profileId,planName:e.itemName,amount:e.amount,currency:e.currency,status:ru(e),mode:e.mode,customerName:e.customerName,customerEmail:e.customerEmail,invoiceStatus:"not_applicable",failureReason:e.failureReason,paymentSubmitted:e.paymentSubmitted,paymentMethod:e.paymentProvider,createdAt:e.createdAt,updatedAt:e.updatedAt});var rm=a(41195);let rg=/<img[^>]+src="data:([^;]+);base64,([^"]+)"[^>]*>/g,rf=async(e,t)=>{let{storage:a,profileId:r,signal:i}=t,o=e.match(rg)||[];if(!o.length)return e;let n=await Promise.all(o.map(async e=>{try{var t;let o=e.match(/src="([^"]+)"\sdata-ratio="([^"]+)"/);if(!o)return null;let[,n,s]=o,l=null===(t=n.match(/^data:([^;]+);base64/))||void 0===t?void 0:t[1];if(!l)return null;let d="".concat((0,rm.Ak)(),".").concat(l.split("/")[1]),c="creator-subscription/plan-descriptions/".concat(d);return{src:await a.upload(r,d,n,c,"images",i,!0),ratio:s}}catch(e){return null}}));return o.reduce((e,t,a)=>{let r=n[a];return r?e.replace(t,'<img src="'.concat(r.src,'" data-ratio="').concat(r.ratio,'">')):e.replace(t,"")},e)};var rh=a(42352);let rb=e=>{var t,a,o,n,c,u,p,f,S,v,y,x,w,C,A,k,D,P,R,z,N,W,H,K,_,j,G,V,q,ee,et,ea,er,ei;let{profileId:eo,slug:ep}=e,em=(0,d.A)(),eg=(0,s.useRouter)(),ef=(0,i.useToast)(),{data:eb,status:eM}=(0,Y.A)(eo),eS=(null===(t=(0,F.gV)(eb,"payment"))||void 0===t?void 0:t.status)==="verified",ev=(0,g.A)(eo,"locale"),{fetchWithAuth:ey}=(0,es.A)(),ex=(0,l.useCallback)(e=>rc(e,ey),[ey]),ew=(0,ed.A)(),{isOpen:ek,onOpen:eI,onClose:eR}=(0,i.useDisclosure)(),[eB,ez]=(0,l.useState)(null),[eO,eL]=(0,l.useState)(!1),[eN,eE]=(0,l.useState)(!1),{isOpen:eW,onOpen:eH,onClose:eK}=(0,i.useDisclosure)(),[e_,ej]=(0,l.useState)(!1),[eG,eV]=(0,l.useState)(!1),[eq,e$]=(0,l.useState)(!1),[eJ,eZ]=(0,l.useState)(!1),[eX,eQ]=(0,l.useState)(!1),[e0,e1]=(0,l.useState)(null),[e2,e4]=(0,l.useState)(!1),[e7,e8]=(0,l.useState)(null),[e9,tt]=(0,l.useState)(null),[ta,ti]=(0,l.useState)(null),[to,tn]=(0,l.useState)(null),[ts,td]=(0,l.useState)(!1),[tc,tu]=(0,l.useState)(null),[tp,tm]=(0,l.useState)(null),[tb,tM]=(0,l.useState)(null),[tS,tv]=(0,l.useState)(0),[ty,tx]=(0,l.useState)(!1),[tY,tw]=(0,l.useState)(!1),[tC,tA]=(0,l.useState)(null),[tk,tF]=(0,l.useState)(null),[tD,tT]=(0,l.useState)(null),[tP,tR]=(0,l.useState)([]),[tz,tO]=(0,l.useState)(null),[tL,tE]=(0,l.useState)(!1),[tW,tH]=(0,l.useState)(null),[tU,tK]=(0,l.useState)(null),[t_,tj]=(0,l.useState)(null),tG=(0,l.useRef)(null),{isOpen:tV,onOpen:t$,onClose:tJ}=(0,i.useDisclosure)(),tZ=(0,l.useRef)(null),{isOpen:tX,onOpen:tQ,onClose:t0}=(0,i.useDisclosure)(),t1=(0,l.useRef)(null),{isOpen:t2,onOpen:t5,onClose:t4}=(0,i.useDisclosure)(),t3=(0,l.useRef)(null),{isOpen:t6,onOpen:t8,onClose:t9}=(0,i.useDisclosure)(),ae=eo?"/api/creator-subscription/stores?profileId=".concat(eo):null,{data:aa,mutate:ar}=(0,b.Ay)(ae,ey),ao=(0,l.useMemo)(()=>(null==aa?void 0:aa.data)||[],[null==aa?void 0:aa.data]),as=null!==(H=null==aa?void 0:aa.canCreateStore)&&void 0!==H&&H,al=(0,l.useMemo)(()=>ao.map(e=>e.merchantId),[ao]),[ad,ac]=(0,l.useState)(eo),au=(0,l.useCallback)(e=>{ac(e),(0,eu.F)("csub-active-merchant:".concat(eo),e)},[eo]);(0,l.useEffect)(()=>{var e;ac((null===(e=(0,eu.A)())||void 0===e?void 0:e.getItem("csub-active-merchant:".concat(eo)))||eo)},[eo]);let ap=(0,l.useRef)(null);(0,l.useEffect)(()=>
1{if(ao.length){if(ao.some(e=>e.merchantId===ad)){ap.current===ad&&(ap.current=null);return}ap.current!==ad&&au(eo)}},[ao,ad,eo,au]);let[am,ag]=(0,l.useState)(!1),af=(0,i.useDisclosure)(),ah=(0,i.useDisclosure)(),aS=(0,i.useDisclosure)(),av=(0,l.useRef)(null),[ay,ax]=(0,l.useState)(""),{isOpen:aY,onOpen:aw,onClose:aC}=(0,i.useDisclosure)(),aA=(0,rh.aF)(eg.query.tab),{hasPlans:ak,isLoading:aF,resolvedFor:aD}=B(ad),{hasCompletedTestCheckout:aT,hasAnyCheckoutSession:aI}=O(ad),{primarySkillVersions:aP,merchantSkillVersions:aR}=Q(eo),aB=ad===eo?aP:null==aR?void 0:aR[ad],az=(0,l.useMemo)(()=>U(em),[em]),{latestVersions:aO}=J(),aL=ad&&ad!==eo?"/api/creator-subscription/merchant-review?merchantId=".concat(ad):null,{data:aN,error:aW}=(0,b.Ay)(aL,ey),aH=!!aL&&!aN&&!aW,aU=eS&&(!aL||(null==aN?void 0:null===(a=aN.data)||void 0===a?void 0:a.status)==="verified"),aK=(null==aN?void 0:null===(o=aN.data)||void 0===o?void 0:o.status)||null,a_=ad===eo||!eS&&!aK&&!aW,aj=ad!==eo&&("loading"===eM||aH),aG=aL&&eS?"submitted"===aK?em.formatMessage({defaultMessage:"這個產品的金流審核中,通過後即可建立正式 (Live) API Key。",id:"admin.creatorSubscription.merchantReview.banner審核中"}):"rejected"===aK?em.formatMessage({defaultMessage:"這個產品的金流審核未通過,僅能建立測試用 (Test) API Key;請修正後重新送出審核。",id:"admin.creatorSubscription.merchantReview.banner已退件"}):em.formatMessage({defaultMessage:"這個產品尚未送出金流審核,僅能建立測試用 (Test) API Key;每個產品需各自通過審核。",id:"admin.creatorSubscription.merchantReview.banner未送審"}):"",aV=ad?"/api/creator-subscription/plans?profileId=".concat(ad):null,aq=ad?"/api/creator-subscription/api-keys?profileId=".concat(ad):null,a$=ad?"/api/creator-subscription/discount-codes?profileId=".concat(ad,"&limit=100"):null,aJ=ad?"/api/creator-subscription/config?profileId=".concat(ad):null,aZ=eo?"/api/creator-subscription/config?profileId=".concat(eo):null,aX=ad?"/api/creator-subscription/subscriptions?profileId=".concat(ad,"&limit=100"):null,aQ=ad&&"plans"===aA?"/api/creator-subscription/invoices?profileId=".concat(ad):null,a0=ad&&"product-ops"===aA?"/api/creator-subscription/reviews?profileId=".concat(ad):null,a1=ad?"/api/creator-subscription/checkout-attempts?profileId=".concat(ad):null,a2=ad&&"product-ops"===aA?"/api/creator-subscription/promotion?profileId=".concat(ad):null,a5=ad&&"product-ops"===aA?"/api/creator-subscription/promotion/stats?profileId=".concat(ad):null,{data:a4,error:a3,isLoading:a6}=(0,b.Ay)(aV,ey,{keepPreviousData:!0,refreshInterval:15e3}),{data:a7,error:a8,isLoading:a9}=(0,b.Ay)(aq,ey,{keepPreviousData:!0}),{data:re,error:rt,isLoading:ra}=(0,b.Ay)(aJ,ey,{keepPreviousData:!0}),{data:rr}=(0,b.Ay)(aZ,ey,{keepPreviousData:!0}),{data:ri,error:ro,isLoading:rn}=(0,b.Ay)(aX,ex,{keepPreviousData:!0}),{data:rs,error:ru,isLoading:rm}=(0,b.Ay)(aQ,ey,{keepPreviousData:!0}),{data:rg,error:rb,isLoading:rM,mutate:rS}=(0,b.Ay)(a0,ey,{keepPreviousData:!0}),{data:rv,error:ry,isLoading:rx}=(0,b.Ay)(a1,ey,{keepPreviousData:!0}),{data:rY,error:rw,isLoading:rC,mutate:rA}=(0,b.Ay)(a$,ey,{keepPreviousData:!0}),{data:rk,error:rF,mutate:rD}=(0,b.Ay)(a2,ey),{data:rT}=(0,b.Ay)(a5,ey),rI=(0,l.useMemo)(()=>(null==a4?void 0:a4.data)||[],[null==a4?void 0:a4.data]),rP=(0,l.useMemo)(()=>(null==a7?void 0:a7.data)||[],[null==a7?void 0:a7.data]),rR=(0,l.useMemo)(()=>{var e;return null!==(e=null==rY?void 0:rY.data)&&void 0!==e?e:[]},[null==rY?void 0:rY.data]),rB=null!==(K=null==rY?void 0:null===(n=rY.pagination)||void 0===n?void 0:n.hasMore)&&void 0!==K&&K,rz=null==re?void 0:re.data,rO=null==rr?void 0:null===(c=rr.data)||void 0===c?void 0:c.collaborationMode,{skills:rL,statusOf:rN}=Z(aB,"team"===rO),rE=(0,l.useMemo)(()=>rP.some(e=>"live"===e.mode),[rP]),rW=(0,l.useMemo)(()=>rP.some(e=>"test"===e.mode),[rP]),rH=(0,l.useMemo)(()=>["portaly-payment","portaly-payment-integration"].some(e=>{var t;return!!(null==aB?void 0:null===(t=aB[e])||void 0===t?void 0:t.version)}),[aB]),{membershipTier:rU}=(0,l.useContext)(m.A),{isGranted:rK,loading:r_}=(0,el.A)("paymentTeamMode"),rj=!0===rK,{isFreeTier:rG,activeBonus:rV,offerId:rq,daysSinceTrialEnd:r$,isTrialExpired:rJ,isLoading:rZ}=(0,X.A)(eo,rU),rX=(0,eA.z9)(rG,rE),{emitViewed:rQ}=en({profileId:eo,touchpoint:eA.lW.STORE_CREATE_BLOCKED,accountState:rX,offerId:rq,daysSinceTrialEnd:r$}),r0=(0,l.useCallback)(()=>
1{if(aa){if(as){ah.onOpen();return}rQ(),aS.onOpen()}},[as,aa,ah,aS,rQ]),r1=(0,l.useMemo)(()=>null!=ri?ri:[],[ri]),r2=(0,l.useMemo)(()=>{var e;return(null==rg?void 0:null===(e=rg.data)||void 0===e?void 0:e.reviews)||[]},[null==rg?void 0:null===(u=rg.data)||void 0===u?void 0:u.reviews]),r5=null==rg?void 0:null===(p=rg.data)||void 0===p?void 0:p.stats,r4=(0,l.useMemo)(()=>(null==rv?void 0:rv.data)||[],[null==rv?void 0:rv.data]),r3=(0,l.useMemo)(()=>{let e=e=>e.filter(e=>e.profileId===ad);return[...e((null==rs?void 0:rs.data)||[]).map(e=>({...e,recordKind:"payment"})),...e(r4).map(rp)].sort((e,t)=>{let a=e.createdAt?Date.parse(e.createdAt):0;return(t.createdAt?Date.parse(t.createdAt):0)-a})},[null==rs?void 0:rs.data,r4,ad]),[r6,r7]=(0,l.useState)(null),r8=(0,l.useMemo)(()=>{var e;return null!==(e=rI.find(e=>e.id===r6))&&void 0!==e?e:null},[rI,r6]),r9=(0,l.useMemo)(()=>r6?r1.filter(e=>e.planId===r6):r1,[r1,r6]),ie=(0,l.useMemo)(()=>r6?r3.filter(e=>e.planId===r6):r3,[r3,r6]),it=(0,rh.Jm)(em),ia=(0,l.useCallback)(e=>{let t={...eg.query,tab:e};eg.replace({pathname:eg.pathname,query:t},void 0,{shallow:!0})},[eg]),{pendingPayout:ir,isLoading:ii}=L(eo),io=eo?"".concat(ab,"?profileId=").concat(eo):null,{data:is,isLoading:il}=(0,b.Ay)(io,ey,{revalidateOnFocus:!1}),id=(0,l.useMemo)(()=>{var e;let t=new Map;return(null!==(e=null==is?void 0:is.data)&&void 0!==e?e:[]).forEac
1h(e=>t.set(e.merchantId,e)),t},[null==is?void 0:is.data]),ic=id.get(ad),iu=(0,l.useMemo)(()=>ao.map(e=>{var t,a,r,i,o,n;let s=id.get(e.merchantId);return{merchantId:e.merchantId,name:e.name,logo:e.merchantId===ad&&null!==(t=null==rz?void 0:rz.merchantLogo)&&void 0!==t?t:e.logo,keyModes:null!==(a=null==s?void 0:s.keyModes)&&void 0!==a?a:[],connectedKeyModes:null!==(r=null==s?void 0:s.connectedKeyModes)&&void 0!==r?r:[],planCount:null!==(i=null==s?void 0:s.planCount)&&void 0!==i?i:null,activeSubscriberCount:null!==(o=null==s?void 0:s.activeSubscriberCount)&&void 0!==o?o:null,totalRevenue:null!==(n=null==s?void 0:s.totalRevenue)&&void 0!==n?n:null}}),[ao,ad,null==rz?void 0:rz.merchantLogo,id]),ip=(0,l.useMemo)(()=>{let e={};for(let t of ao){let a=t.merchantId===eo?aP:null==aR?void 0:aR[t.merchantId];e[t.merchantId]=$(a,aO)}return e},[ao,eo,aP,aR,aO]),im=async e=>{try{await navigator.clipboard.writeText(e),ef({title:em.formatMessage({defaultMessage:"已複製到剪貼簿",id:"admin.creatorSubscription.apiKey.已複製到剪貼簿"}),status:"success",duration:2e3,isClosable:!0})}catch(e){ef({title:em.formatMessage({defaultMessage:"複製失敗",id:"admin.creatorSubscription.apiKey.複製失敗"}),description:em.formatMessage({defaultMessage:"請手動複製這組 API Key。",id:"admin.creatorSubscription.apiKey.請手動複製這組APIKey"}),status:"error",duration:2500,isClosable:!0})}},ig=(0,l.useCallback)(async(e,t)=>{if(aq){ej(!0);try{let a=null!=t?t:"team"===rO?"integration":void 0,r=await ey(aq,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({profileId:ad,mode:e,...a?{scope:a}:{}})}),i=null==r?void 0:r.data;i&&tK({keyPrefix:i.apiKey.keyPrefix,secret:i.secret,callbackSecret:i.callbackSecret,mode:e,scope:a}),await (0,b.Tk)(aq),ar(),aM(),ef({title:em.formatMessage({defaultMessage:"已建立新的 API Key",id:"admin.creatorSubscription.apiKey.已建立新的APIKey"}),description:em.formatMessage({defaultMessage:"完整 secret 只會顯示這一次,請立即保存。",id:"admin.creatorSubscription.apiKey.secret僅顯示一次"}),status:"success",duration:3e3,isClosable:!0})}catch(e){ef({title:em.formatMessage({defaultMessage:"建立 API Key 失敗",id:"admin.creatorSubscription.apiKey.建立APIKey失敗"}),description:eh(e,em.formatMessage({defaultMessage:"請稍後再試。",id:"admin.creatorSubscription.apiKey.請稍後再試"})),status:"error",duration:4e3,isClosable:!0})}finally{ej(!1)}}},[aq,rO,ey,ad,em,ef,ar]),ih=async e=>{if(window.confirm(em.formatMessage({defaultMessage:"停用後,您的系統將無法再使用這把 API Key串接 Portaly Payment,確定要停用嗎?",id:"admin.creatorSubscription.apiKey.停用確認"}))){tn(e);try{await ey("/api/creator-subscription/api-keys/".concat(e),{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({profileId:ad})}),await (0,b.Tk)(aq),ef({title:em.formatMessage({defaultMessage:"API Key 已停用",id:"admin.creatorSubscription.apiKey.APIKey已停用"}),status:"success",duration:2500,isClosable:!0})}catch(e){ef({title:em.formatMessage({defaultMessage:"停用 API Key 失敗",id:"admin.creatorSubscription.apiKey.停用APIKey失敗"}),description:eh(e,em.formatMessage({defaultMessage:"請稍後再試。",id:"admin.creatorSubscription.apiKey.請稍後再試"})),status:"error",duration:4e3,isClosable:!0})}finally{tn(null)}}},ib=e=>{let t;try{if(null==e?void 0:e.message){let a=JSON.parse(e.message);a&&"string"==typeof a.code&&(t=a.code)}}catch(e){}return"UPGRADE_REQUIRED"===t?em.formatMessage({defaultMessage:"需要升級方案才能建立折扣碼,請先升級為頂級會員或訂閱 Portaly Vibe。",id:"admin.creatorSubscription.discountCode.error.需升級"}):"DUPLICATE_CODE"===t?em.formatMessage({defaultMessage:"此折扣碼代號已存在,請換一個代號。",id:"admin.creatorSubscription.discountCode.error.代號已存在"}):"CODE_IMMUTABLE"===t?em.formatMessage({defaultMessage:"折扣碼代號建立後無法修改。",id:"admin.creatorSubscription.discountCode.error.代號不可改"}):em.formatMessage({defaultMessage:"操作未完成,請確認欄位內容後再試一次。",id:"admin.creatorSubscription.discountCode.通用錯誤"})},iM=async e=>{if(ad){td(!0);try{await ey("/api/creator-subscription/discount-codes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...e,profileId:ad})}),await rA(),ef({title:em.formatMessage({defaultMessage:"折扣碼已建ç«
1‹",id:"admin.creatorSubscription.discountCode.已建立"}),status:"success",duration:2500,isClosable:!0})}catch(e){throw ef({title:em.formatMessage({defaultMessage:"折扣碼建立失敗",id:"admin.creatorSubscription.discountCode.建立失敗"}),description:ib(e),status:"error",duration:4e3,isClosable:!0}),e}finally{td(!1)}}},iS=async(e,t)=>{if(ad){tu(e);try{await ey("/api/creator-subscription/discount-codes/".concat(e),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({...t,profileId:ad})}),await rA(),ef({title:em.formatMessage({defaultMessage:"折扣碼已更新",id:"admin.creatorSubscription.discountCode.已更新"}),status:"success",duration:2500,isClosable:!0})}catch(e){throw ef({title:em.formatMessage({defaultMessage:"折扣碼更新失敗",id:"admin.creatorSubscription.discountCode.更新失敗"}),description:ib(e),status:"error",duration:4e3,isClosable:!0}),e}finally{tu(null)}}},iv=(0,l.useCallback)(e=>{t3.current=e,t8()},[t8]),iy=async()=>{let e=t3.current;if(e&&ad){t9(),tm(e.id);try{await ey("/api/creator-subscription/discount-codes/".concat(e.id,"?profileId=").concat(ad),{method:"DELETE"}),await rA(),ef({title:em.formatMessage({defaultMessage:"折扣碼已停用",id:"admin.creatorSubscription.discountCode.已停用Toast"}),status:"success",duration:2500,isClosable:!0})}catch(e){ef({title:em.formatMessage({defaultMessage:"折扣碼停用失敗",id:"admin.creatorSubscription.discountCode.停用失敗"}),description:ib(e),status:"error",duration:4e3,isClosable:!0})}finally{tm(null),t3.current=null}}},ix=async(e,t)=>{if(ad&&a0&&rg){tM(e),rS(rg.data?{...rg,data:{...rg.data,reviews:rg.data.reviews.map(a=>a.reviewId===e?{...a,isDisplay:t}:a)}}:rg,{revalidate:!1});try{let a=(await ey(a0,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({reviewId:e,isDisplay:t})})).data;a&&rg.data&&rS({...rg,data:{...rg.data,reviews:rg.data.reviews.map(t=>t.reviewId===e?a:t)}},{revalidate:!1})}catch(e){rS(rg,{revalidate:!1}),ef({title:em.formatMessage({defaultMessage:"更新顯示狀態失敗",id:"admin.creatorSubscription.reviews.updateFailed"}),description:eh(e,em.formatMessage({defaultMessage:"請稍後再試",id:"admin.creatorSubscription.reviews.updateFailedFallback"})),status:"error",duration:4e3,isClosable:!0})}finally{tM(null)}}},iY=async e=>{if(aJ){eZ(!0);try{let t=await ey(aJ,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({merchantName:e})}),a=null==t?void 0:t.data;await (0,b.Tk)(aJ,{data:a},!1),await ar(),aM(),ef({title:em.formatMessage({defaultMessage:"產品名稱已更新",id:"admin.creatorSubscription.config.商店名稱已更新"}),status:"success",duration:2500,isClosable:!0})}catch(e){ef({title:em.formatMessage({defaultMessage:"產品名稱更新失敗",id:"admin.creatorSubscription.config.商店名稱更新失敗"}),description:eh(e,em.formatMessage({defaultMessage:"請稍後再試。",id:"admin.creatorSubscription.apiKey.請稍後再試"})),status:"error",duration:4e3,isClosable:!0})}finally{eZ(!1)}}},iw=async e=>{if(aZ){eV(!0);try{let t=await ey(aZ,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({collaborationMode:e})}),a=null==t?void 0:t.data;await (0,b.Tk)(aZ,{data:a},!1),e$(!1)}catch(e){e instanceof Error&&(()=>{try{var t;return(null===(t=JSON.parse(e.message))||void 0===t?void 0:t.error)==="COLLABORATION_MODE_LOCKED"}catch(e){return!1}})()?(ef({title:em.formatMessage({defaultMessage:"已建立方案,請洽客服變更分工模式",id:"admin.creatorSubscription.onboarding.modeSelect.已鎖定"}),status:"error",duration:4e3,isClosable:!0}),e$(!1)):ef({title:em.formatMessage({defaultMessage:"選擇分工模式失敗",id:"admin.creatorSubscription.onboarding.modeSelect.選擇失敗"}),description:eh(e,em.formatMessage({defaultMessage:"請稍後再試。",id:"admin.creatorSubscription.apiKey.請稍後再試"})),status:"error",duration:4e3,isClosable:!0})}finally{eV(!1)}}},iC=async e=>{if(eo){eQ(!0);try{var t;let a=new FormData;a.append("file",e),a.append("filename",e.name);let r=await ey("/api/creator-subscription/config/images?profileId=".concat(ad),{method:"POST",body:a}),i=null==r?void 0:null===(t=r.data)||void 0===t?void 0:t.creatorSubscriptionConfig;aJ&&await (0,b.Tk)(aJ,{data:i},!1),ef({title:em.formatMessage({defaultMessage:"品牌 Logo 已更新",id:"admin.creatorSubscription.config.品牌Logo已更新"}),status:"success",duration:2500,isClosable:!0})}catch(e){ef({title:em.formatMessage({defaultMessage:"品牌 Logo 上傳失敗",id:"admin.creatorSubscription.config.品牌Logo上傳失敗"}),description:eh(e,em.formatMessage({defaultMessage:"請稍後再試。",id:"admin.creatorSubscription.apiKey.請稍後再試"})),status:"error",duration:4e3,isClosable:!0})}finally{eQ(!1)}}},iA=async(e,t)=>{if(aV){e1(e);try{let a=e=>ew&&e?rf(e,{storage:ew,profileId:ad}):Promise.resolve(e),r={...t,...void 0===t.description?{}:{description:await a(t.description)},...void 0===t.termsOfService?{}:{termsOfService:await a(t.termsOfService)}},i=await ey("/api/creator-subscription/plans/".concat(e),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({...r,profileId:ad})}),o=null==i?void 0:i.data;o&&await (0,b.Tk)(aV,e=>({data:((null==e?void 0:e.data)||[]).map(e=>e.id===o.id?o:e)}),!1),ef({title:em.formatMessage({defaultMessage:"方案已更新",id:"admin.creatorSubscription.plan.方案已更新"}),status:"success",duration:2500,isClosable:!0})}catch(e){throw ef({title:em.formatMessage({defaultMessage:"方案更新失敗",id:"admin.creatorSubscription.plan.方案更新失敗"}),description:eh(e,em.formatMessage({defaultMessage:"請稍後再試。",id:"admin.creatorSubscription.apiKey.請稍後再試"})),status:"error",duration:4e3,isClosable:!0}),e}finally{e1(null)}}},ik=async e=>{if(eo){e4(!0);try{let{imageFile:t,...a}=e;ew&&a.description&&(a.description=await rf(a.description,{storage:ew,profileId:ad})),ew&&a.termsOfService&&(a.termsOfService=await rf(a.termsOfService,{storage:ew,profileId:ad}));let r=await ey("/api/creator-subscription/plans/admin-create",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...a,profileId:ad})}),i=null==r?void 0:r.data;if(i&&aV&&(await (0,b.Tk)(aV,e=>({data:[i,...(null==e?void 0:e.data)||[]]}),!1),aM()),ef({title:em.formatMessage({defaultMessage:"方案已建立",id:"admin.creatorSubscription.plan.方案已建立"}),status:"success",duration:2500,isClosable:!0}),i&&t)try{await iF(i.id,t)}catch(e){}}catch(e){throw ef({title:em.formatMessage({defaultMessage:"方案建立失敗",id:"admin.creatorSubscription.plan.方案建立失敗"}),description:eh(e,em.formatMessage({defaultMessage:"請稍後再試。",id:"admin.creatorSubscription.apiKey.請稍後再試"})),status:"error",duration:4e3,isClosable:!0}),e}finally{e4(!1)}}},iF=async(e,t)=>{if(aV){ti(e);try{var a;let r=new FormData;r.append("file",t),r.append("filename",t.name);let i=await ey("/api/creator-subscription/plans/".concat(e,"/images"),{method:"POST",body:r}),o=null==i?void 0:null===(a=i.data)||void 0===a?void 0:a.plan;o&&await (0,b.Tk)(aV,e=>({data:((null==e?void 0:e.data)||[]).map(e=>e.id===o.id?o:e)}),!1),ef({title:em.formatMessage({defaultMessage:"方案圖片已更新",id:"admin.creatorSubscription.plan.方案圖片已更新"}),status:"success",duration:2500,isClosable:!0})}catch(e){throw ef({title:em.formatMessage({defaultMessage:"方案圖片上傳失敗",id:"admin.creatorSubscription.plan.方案圖片上傳失敗"}),description:eh(e,em.formatMessage({defaultMessage:"請稍後再試。",id:"admin.creatorSubscription.apiKey.請稍後再試"})),status:"error",duration:4e3,isClosable:!0}),e}finally{ti(null)}}},iD=(0,l.useCallback)(e=>{tZ.current=e,tQ()},[tQ]),iT=async()=>
1{let e=tZ.current;if(e&&aV){t0(),e8(e.id);try{let t=await ey("/api/creator-subscription/plans/".concat(e.id),{method:"DELETE"}),a=null==t?void 0:t.data;a&&(await (0,b.Tk)(aV,e=>({data:((null==e?void 0:e.data)||[]).map(e=>e.id===a.id?a:e)}),!1),aM()),ef({title:em.formatMessage({defaultMessage:"方案已封存",id:"admin.creatorSubscription.plan.方案已封存"}),status:"success",duration:3e3,isClosable:!0})}catch(e){ef({title:em.formatMessage({defaultMessage:"方案封存失敗",id:"admin.creatorSubscription.plan.方案封存失敗"}),description:eh(e,em.formatMessage({defaultMessage:"請稍後再試。",id:"admin.creatorSubscription.apiKey.請稍後再試"})),status:"error",duration:4e3,isClosable:!0})}finally{e8(null),tZ.current=null}}},iI=(0,l.useCallback)(e=>{t1.current=e,t5()},[t5]),iP=async()=>{let e=t1.current;if(e&&aV){t4(),tt(e.id);try{let t={profileId:e.profileId,status:"active"},a=await ey("/api/creator-subscription/plans/".concat(e.id),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),r=null==a?void 0:a.data;r&&(await (0,b.Tk)(aV,e=>({data:((null==e?void 0:e.data)||[]).map(e=>e.id===r.id?r:e)}),!1),aM()),ef({title:em.formatMessage({defaultMessage:"方案已取消封存",id:"admin.creatorSubscription.plan.方案已取消封存"}),status:"success",duration:3e3,isClosable:!0})}catch(e){ef({title:em.formatMessage({defaultMessage:"方案取消封存失敗",id:"admin.creatorSubscription.plan.方案取消封存失敗"}),description:eh(e,em.formatMessage({defaultMessage:"請稍後再試。",id:"admin.creatorSubscription.apiKey.請稍後再試"})),status:"error",duration:4e3,isClosable:!0})}finally{tt(null),t1.current=null}}},iR=(0,l.useCallback)(e=>{tG.current=e,t$()},[t$]),iB=async()=>{let e=tG.current;if(e){tJ(),tj(e.id);try{await ey("/api/creator-subscription/subscriptions/".concat(e.id,"/admin-cancel"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({profileId:ad,reason:"manual",immediate:!1})}),await (0,b.Tk)(aX),aM(),ef({title:em.formatMessage({defaultMessage:"已取消該會員的訂閱",id:"admin.creatorSubscription.member.取消訂閱成功"}),description:em.formatMessage({defaultMessage:"訂閱將於本期結束後失效。",id:"admin.creatorSubscription.member.取消訂閱成功說明"}),status:"success",duration:3e3,isClosable:!0})}catch(e){ef({title:em.formatMessage({defaultMessage:"取消訂閱失敗",id:"admin.creatorSubscription.member.取消訂閱失敗"}),description:eh(e,em.formatMessage({defaultMessage:"請稍後再試。",id:"admin.creatorSubscription.member.請稍後再試"})),status:"error",duration:4e3,isClosable:!0})}finally{tj(null),tG.current=null}}},iz=async e=>{if(aX){tA(e);try{var t,a,r,i;let o=await ey("/api/creator-subscription/subscriptions/".concat(e,"/retry-callback"),{method:"POST",headers:{"Content-Type":"application/json"}});await (0,b.Tk)(aX);let n=null==o?void 0:null===(a=o.data)||void 0===a?void 0:null===(t=a.callback)||void 0===t?void 0:t.status;if("success"===n){ef({title:em.formatMessage({defaultMessage:"通知已重新發送",id:"admin.creatorSubscription.member.通知已重新發送"}),status:"success",duration:2500,isClosable:!0});return}ef({title:em.formatMessage({defaultMessage:"通知重送未成功",id:"admin.creatorSubscription.member.通知重送未成功"}),description:(null==o?void 0:null===(i=o.data)||void 0===i?void 0:null===(r=i.callback)||void 0===r?void 0:r.errorMessage)||em.formatMessage({defaultMessage:"系統已重新嘗試通知,但對方系統尚未成功接收。",id:"admin.creatorSubscription.member.通知重送未成功說明"}),status:"skipped"===n?"warning":"error",duration:4e3,isClosable:!0})}catch(e){ef({title:em.formatMessage({defaultMessage:"通知重送失敗",id:"admin.creatorSubscription.member.通知重送失敗"}),description:eh(e,em.formatMessage({defaultMessage:"請稍後再試。",id:"admin.creatorSubscription.apiKey.請稍後再試"})),status:"error",duration:4e3,isClosable:!0})}finally{tA(null)}}},iO=async e=>{tF(e),tT(e),tR([]),tO(null),tE(!0),eI();try{let t=await ey("/api/creator-subscription/subscriptions/".concat(e,"/callback-records"));tR((null==t?void 0:t.data)||[])}catch(e){tO(e)}finally{tE(!1),tF(null)}},iL=async e=>{if(tD){tH(e);try{let t=await ey("/api/creator-subscription/subscriptions/".concat(tD,"/callback-records/").concat(e,"/retry"),{method:"POST",headers:{"Content-Type":"application/json"}}),a=null==t?void 0:t.data;if(a&&tR(e=>e.map(e=>e.id===a.id?a:e)),(null==a?void 0:a.status)!=="success"){ef({title:em.formatMessage({defaultMessage:"狀態變更通知重送未成功",id:"admin.creatorSubscription.member.statusCallbackRecords.retryNotSuccessful"}),description:(null==a?void 0:a.error)||em.formatMessage({defaultMessage:"系統已重新嘗試通知,但對方系統尚未成功接收。",id:"admin.creatorSubscription.member.statusCallbackRecords.retryNotSuccessfulDescription"}),status:"warning",duration:4e3,isClosable:!0});return}ef({title:em.formatMessage({defaultMessage:"狀態變更通知已重新發送",id:"admin.creatorSubscription.member.statusCallbackRecords.retrySuccess"}),status:"success",duration:2500,isClosable:!0})}catch(e){ef({title:em.formatMessage({defaultMessage:"狀態變更通知重送失敗",id:"admin.creatorSubscription.member.statusCallbackRecords.retryError"}),description:eh(e,em.formatMessage({defaultMessage:"請稍後再試。",id:"admin.creatorSubscription.apiKey.請稍後再試"})),status:"error",duration:4e3,isClosable:!0})}finally{tH(null)}}},iN=async e=>{if(ae){ag(!0);try{var t;let a=await ey(ae,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({profileId:eo,name:e})}),r=null==a?void 0:null===(t=a.data)||void 0===t?void 0:t.store;(null==r?void 0:r.merchantId)&&(ap.current=r.merchantId,au(r.merchantId)),await ar(),aM(),ef({title:em.formatMessage({defaultMessage:"產品已建立",id:"admin.creatorSubscription.store.商店已建ç«
1‹"}),status:"success",duration:2500,isClosable:!0})}catch(e){throw ef({title:em.formatMessage({defaultMessage:"建立產品失敗",id:"admin.creatorSubscription.store.建立商店失敗"}),description:eh(e,em.formatMessage({defaultMessage:"請稍後再試。",id:"admin.creatorSubscription.apiKey.請稍後再試"})),status:"error",duration:4e3,isClosable:!0}),e}finally{ag(!1)}}},iE=(0,l.useCallback)(e=>{let t=ao.find(t=>t.merchantId===e);t&&!t.isPrimary&&(av.current=t,ax(t.name),aw())},[ao,aw]),iW=async()=>{let e=av.current;if(!e||e.isPrimary)return;let{merchantId:t}=e;try{await ey("/api/creator-subscription/stores/".concat(t),{method:"DELETE"}),ad===t&&au(eo),await ar(),aM(),av.current=null,ef({title:em.formatMessage({defaultMessage:"產品已刪除",id:"admin.creatorSubscription.store.商店已刪除"}),status:"success",duration:2500,isClosable:!0})}catch(t){var a;let e=409===(null==t?void 0:null===(a=t.response)||void 0===a?void 0:a.status)?em.formatMessage({defaultMessage:"此產品仍有進行中的訂閱,請先取消所有訂閱後再刪除產品。",id:"admin.creatorSubscription.store.刪除商店有訂閱"}):eh(t,em.formatMessage({defaultMessage:"請稍後再試。",id:"admin.creatorSubscription.apiKey.請稍後再試"}));throw ef({title:em.formatMessage({defaultMessage:"刪除產品失敗",id:"admin.creatorSubscription.store.刪除商店失敗"}),description:e,status:"error",duration:4e3,isClosable:!0}),t}},iH=(0,r.Y)(eF,{apiKeys:rP,latestCreatedSecrets:tU,isApiKeysLoading:a9,apiKeysError:a8,isCreatingApiKey:e_,deactivatingApiKeyId:to,locale:em.locale,isKycVerified:aU,accountState:rX,offerId:rq,daysSinceTrialEnd:r$,onCreateApiKey:ig,onCopySecret:im,onDeactivateApiKey:ih,trailingAction:(0,r.Y)(i.Button,{as:"a",href:"".concat(ec(),"/docs"),target:"_blank",rel:"noopener noreferrer",variant:"outline",colorScheme:"green",borderRadius:"lg",rightIcon:(0,r.Y)(i.Icon,{as:h.aRg}),children:em.formatMessage({defaultMessage:"查看 API 文件",id:"admin.creatorSubscription.apiOverview.查看API文件"})})}),iU=!1===ak&&aD===ad,iK=aD!==ad,i_=iU&&ad===eo;if(a6||aF||i_&&(ra||r_))return(0,r.Y)(i.Box,{py:16,textAlign:"center",children:(0,r.Y)(i.Spinner,{})});if(a3)return(0,r.Y)(i.Box,{p:6,borderRadius:"xl",border:"1px solid",borderColor:"red.100",bg:"red.50",children:(0,r.Y)(i.Text,{color:"red.500",children:em.formatMessage({defaultMessage:"訂閱方案載入失敗",id:"admin.creatorSubscription.訂閱方案載入失敗"})})});if(rt&&!ra)return(0,r.Y)(i.Box,{p:6,borderRadius:"xl",border:"1px solid",borderColor:"red.100",bg:"red.50",children:(0,r.Y)(i.Text,{color:"red.500",children:em.formatMessage({defaultMessage:"Creator subscription 設定載入失敗",id:"admin.creatorSubscription.config.設定載入失敗"})})});let ij=null;if(iU){if(i_&&rj&&(!rO||eq))return(0,r.Y)(tr,{onSelectMode:iw,isSaving:eG,currentMode:rO,onCancel:rO?()=>e$(!1):void 0});let e=rj?(0,r.Y)(i.Button,{variant:"link",size:"sm",fontWeight:"400",color:"gray.500",onClick:()=>e$(!0),children:em.formatMessage({defaultMessage:"選錯分工模式?重新選擇",id:"admin.creatorSubscription.onboarding.modeSelect.重新選擇"})}):null,t="team"===rO?(0,r.Y)(an,{onAddPlan:ik,isAddingPlan:e2,latestCreatedSecrets:tU,isCreatingApiKey:e_,onCreateApiKey:ig,onCopySecret:im,scopeId:ad}):(0,r.Y)(eP,{apiKeysSection:(0,r.Y)(eF,{apiKeys:rP,latestCreatedSecrets:tU,isApiKeysLoading:a9,apiKeysError:a8,isCreatingApiKey:e_,deactivatingApiKeyId:to,locale:em.locale,variant:"onboarding",isKycVerified:aU,accountState:rX,offerId:rq,daysSinceTrialEnd:r$,onCreateApiKey:ig,onCopySecret:im,onDeactivateApiKey:ih}),isCreatingApiKey:e_,onCreateApiKey:ig});ij=(0,r.FD)(i.Stack,{spacing:4,children:[t,e?(0,r.Y)(i.Center,{children:e}):null]})}let iG=iu.find(e=>e.merchantId===ad),iV=rd({hasTestKey:rW,agentConnected:rH,hasPlans:ak,hasAnyCheckoutSession:aI,hasCompletedTestCheckout:aT,recentLiveOrderCount:null==ic?void 0:null===(f=ic.recentOrders)||void 0===f?void 0:f.length})?{productName:null!==(_=null==iG?void 0:iG.name)&&void 0!==_?_:"",step1Done:!0===ak,step2Done:!0===aI,step3Done:!0===aT,onCreatePlan:()=>{eL(!0),ia("plans")},onIntegrateCheckout:()=>eE(!0)}:void 0,iq=function(e){let{lockWhenNoPlans:t=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t&&iU||iK?(0,r.FD)(i.Stack,{spacing:4,children:[(0,r.Y)(i.Box,{borderRadius:"md",border:"1px solid",borderColor:"gray.200",bg
1:"gray.50",px:4,py:3,children:(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.600",children:iK?em.formatMessage({defaultMessage:"正在載入這個產品的資料…",id:"admin.creatorSubscription.readOnlyPending"}):em.formatMessage({defaultMessage:"這個產品還沒有方案,目前只能檢視。建立第一個方案後就能編輯。",id:"admin.creatorSubscription.readOnlyNotice"})})}),(0,r.Y)(i.Box,{as:"fieldset",disabled:!0,border:"none",m:0,p:0,minW:0,children:e})]}):(0,r.Y)(r.FK,{children:e})};return(0,r.FD)(i.Stack,{spacing:4,children:[(0,r.Y)(ai,{isOpen:ek,onClose:()=>{eR(),tT(null),tR([]),tO(null),tE(!1)},records:tP,isLoading:tL,error:tz,locale:em.locale,subscriptionId:tD,retryingRecordId:tW,onRetryRecord:iL}),(0,r.Y)(eT,{isOpen:null!==eB,onClose:()=>ez(null),isUpdate:!!eB&&"outdated"===rN(eB),...E(eB?az[eB].card:void 0)}),(0,r.Y)(eT,{isOpen:eN,onClose:()=>eE(!1),title:em.formatMessage({defaultMessage:"取得結帳串接 prompt",id:"admin.creatorSubscription.checkoutPrompt.title"}),bodyText:em.formatMessage({defaultMessage:"複製下方 prompt 給你的 Coding Agent,他會在買家要付款的地方建立結帳、導向 Portaly 付款頁。",id:"admin.creatorSubscription.checkoutPrompt.body"}),installPrompt:em.formatMessage({defaultMessage:"請用 Portaly Payment Skill 把結帳接進我的產品:在買家要付款的地方建立 checkout session,導向 Portaly 付款頁。",id:"admin.creatorSubscription.checkoutPrompt.prompt"}),footerNote:em.formatMessage({defaultMessage:"產品端呼叫 create-checkout 建立第一次 session 後,這一步會自動打勾。",id:"admin.creatorSubscription.checkoutPrompt.footerNote"})}),(0,r.Y)(tq,{isOpen:ty,onClose:()=>tx(!1),store:null!==(j=iu.find(e=>e.merchantId===ad))&&void 0!==j?j:null,feeRate:null==re?void 0:null===(S=re.rates)||void 0===S?void 0:S.feeRate,taxRate:null==re?void 0:null===(v=re.rates)||void 0===v?void 0:v.taxRate,serviceFeeRate:null==rk?void 0:null===(y=rk.data)||void 0===y?void 0:y.serviceFeeRate,initialRate:null!==(V=null!==(G=null==rk?void 0:null===(x=rk.data)||void 0===x?void 0:x.commissionRate)&&void 0!==G?G:null==rk?void 0:null===(w=rk.data)||void 0===w?void 0:w.defaultCommissionRate)&&void 0!==V?V:tN.Wq,minRate:null!==(q=null==rk?void 0:null===(C=rk.data)||void 0===C?void 0:C.minCommissionRate)&&void 0!==q?q:tN.HE,maxRate:null!==(ee=null==rk?void 0:null===(A=rk.data)||void 0===A?void 0:A.maxCommissionRate)&&void 0!==ee?ee:tN.Bk,sampleAmount:(()=>{var e,t;let a=(null!==(t=null==rk?void 0:null===(e=rk.data)||void 0===e?void 0:e.plans)&&void 0!==t?t:[]).filter(e=>null===e.excludedReason).map(e=>e.amount);return a.length?Math.min(...a):0})(),isSubmitting:tY,onSubmit:async e=>{var t,a,r;let i=null!==(r=null==rk?void 0:null===(t=rk.data)||void 0===t?void 0:t.enabled)&&void 0!==r&&r,o=(null===(a=iu.find(e=>e.merchantId===ad))||void 0===a?void 0:a.name)||ad;tw(!0);try{await ey("/api/creator-subscription/promotion",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({profileId:ad,enabled:!0,commissionRate:e})}),await rD().catch(()=>void 0),tx(!1),ef({title:i?em.formatMessage({defaultMessage:"已更新「{name}」的分潤比例",id:"admin.creatorSubscription.promotion.toast.已更新"},{name:o}):em.formatMessage({defaultMessage:"「{name}」已開啟推廣",id:"admin.creatorSubscription.promotion.toast.已開啟"},{name:o}),status:"success",duration:2e3})}catch(t){let e=em.formatMessage({defaultMessage:"更新失敗,請稍後再試",id:"admin.creatorSubscription.promotion.更新失敗"});if(t instanceof Error&&t.message)try{let a=JSON.parse(t.message);(null==a?void 0:a.error)&&"string"==typeof a.error&&(e=a.error)}catch(e){}ef({title:e,status:"error",duration:3e3})}finally{tw(!1)}}}),rG&&rE&&(0,r.FD)(r.FK,{children:[(0,r.Y)(I.A,{mode:"center"}),(0,r.Y)(th,{offerId:rq})]}),rG&&!rZ&&(0,r.Y)(tf,{profileId:eo,activeBonus:rV,accountState:rX,offerId:rq,daysSinceTrialEnd:r$,isTrialExpired:rJ}),(0,r.Y)(eC,{isOpen:aS.isOpen,onClose:aS.onClose,activeBonus:rV,offerId:rq,entryPoint:eY.A.PaymentStoreCreateBlocked,tracker:"upgrade.paymentStoreCreate",title:em.formatMessage({defaultMessage:"升級啟用新產品",id:"admin.creatorSubscription.upgradeIntro.title.store"})}),(0,r.Y)(eD,{isOpen:ah.isOpen,onClose:ah.onClose,onCreateStore:iN,isCreatingStore:am}),(0,r.Y)(tg,{isOpen:af.isOpen,onClose:af.onClose,creatorSubscriptionConfig:rz,onSaveMerchantName:iY,onUploadMerchantLogo:iC,isSavingMerchantName:eJ,isUploadingMerchantLogo:eX,canDelete:(()=>{let e=ao.find(e=>e.merchantId===ad);return!!e&&!e.isPrimary})(),onDelete:()=>{af.onClose(),iE(ad)}}),(0,r.Y)(e3,{isOpen:eW,onClose:eK,latestCreatedSecrets:tU,isCreatingApiKey:e_,onCreateApiKey:ig,onCopySecret:im}),"team"===rO&&!1===aT&&(0,r.Y)(e6,{scopeId:ad,action:(0,r.Y)(i.Button,{variant:"link",size:"sm",colorScheme:"green",onClick:eH,children:em.formatMessage({defaultMessage:"複製串接說明",id:"admin.creatorSubscription.onboarding.team.複製說明按鈕"})})}),(0,r.FD)(i.Box,{children:[(0,r.Y)(i.HStack,{display:{base:"flex",lg:"none"},spacing:1,overflowX:"auto",pb:1,sx:{scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}},children:rh.QG.map(e=>{let t=aA===e;return(0,r.Y)(i.Button,{size:"sm",variant:"ghost",borderRadius:"lg",flexShrink:0,bg:t?"GUI.green.50":"transparent",color:t?"GUI.green.700":"gray.600",fontWeight:t?"800":"600",onClick:()=>ia(e),"aria-current":t?"page":void 0,children:it[e]},e)})}),(0,r.Y)(i.Box,{mb:5,children:(0,r.Y)(tB,{products:iu,isLoading:!aa,isStatsLoading:il,activeMerchantId:ad,onSelect:au,onCreate:r0,onEdit:af.onOpen,skillStatusByMerchantId:ip,isConnectProductPremiumOnly:!as})}),!aU&&!aH&&["overview","api-skills"].includes(aA)&&(0,r.Y)(i.Box,{mb:5,borderRadius:"md",border:"1px solid",borderColor:"orange.200",bg:"orange.50",px:4,py:3,children:(0,r.FD)(i.Text,{fontSize:"sm",color:"orange.800",children:[aG||em.formatMessage({defaultMessage:"未通過 Portaly 金流審核前,僅能建立測試用 (Test) API Key;完成認證後即可建立正式 (Live) API Key。",id:"admin.creatorSubscription.liveKeyKycBanner"})," ",(0,r.Y)(i.Box,{as:"button",type:"button",color:"orange.700",textDecoration:"underline",onClick:()=>ia("identity"),children:em.formatMessage({defaultMessage:"前往金流審核",id:"admin.creatorSubscription.liveKeyKycBannerCta"})})]})}),"overview"===aA&&(0,r.Y)(tl,{windows:null==ic?void 0:ic.windows,recentOrders:null==ic?void 0:ic.recentOrders,activeSubscriberCount:null!==(et=null==ic?void 0:ic.activeSubscriberCount)&&void 0!==et?et:null,isSummaryLoading:il,pendingPayout:ii?null:ir,skills:rL,onOpenSkill:ez,onNavigateTab:ia,onboardingCards:ij,firstIncomeSteps:iV,isPlansPending:iK}),"plans"===aA&&iq((0,r.FD)(i.Stack,{spacing:6,children:[(0,r.Y)(tI,{plans:rI,onDeletePlan:iD,onRestorePlan:iI,deletingPlanId:e7,restoringPlanId:e9,is
1FreeTier:rG,profileId:eo,productName:null!==(ea=null==iG?void 0:iG.name)&&void 0!==ea?ea:"",accountState:rX,activeBonus:rV,offerId:rq,daysSinceTrialEnd:r$,isUpgradeStatusLoading:rZ,autoOpenAddPlan:eO,onAutoOpenAddPlanConsumed:()=>eL(!1),isTeamMode:"team"===rO,onAddPlan:ik,isAddingPlan:e2,onSavePlan:iA,onUploadPlanImage:iF,savingPlanId:e0,uploadingPlanImageId:ta,selectedPlanId:r6,onSelectPlan:e=>r7(t=>t===e.id?null:e.id)}),(0,r.Y)(aE,{subscribers:r9,orders:ie,isSubscribersLoading:rn,subscribersError:ro,isOrdersLoading:rm||rx,ordersError:ru,checkoutAttemptsError:ry,checkoutAttemptsLimit:null==rv?void 0:rv.limit,checkoutAttemptsTruncated:null==rv?void 0:rv.truncated,locale:em.locale,ordersApiUrl:aQ,selectedPlanName:null==r8?void 0:r8.name,onClearPlanFilter:()=>r7(null),cancellingSubscriptionId:t_,onCancelSubscription:iR,retryingSubscriberId:tC,onRetrySubscriberCallback:iz,viewingStatusCallbackRecordsId:tk,onOpenStatusCallbackRecords:iO})]}),{lockWhenNoPlans:!1}),"product-ops"===aA&&iq((0,r.FD)(i.Tabs,{variant:"line",colorScheme:"green",isLazy:!0,index:tS,onChange:tv,children:[(0,r.FD)(i.TabList,{children:[(0,r.Y)(i.Tab,{children:em.formatMessage({defaultMessage:"折扣碼",id:"admin.creatorSubscription.productOps.折扣碼"})}),"team"===rO&&(0,r.Y)(i.Tab,{children:em.formatMessage({defaultMessage:"波段優惠",id:"admin.creatorSubscription.productOps.波段優惠"})}),(0,r.Y)(i.Tab,{children:em.formatMessage({defaultMessage:"評價",id:"admin.creatorSubscription.productOps.評價"})}),(0,r.Y)(i.Tab,{children:em.formatMessage({defaultMessage:"產品推廣",id:"admin.creatorSubscription.productOps.產品推廣"})})]}),(0,r.FD)(i.TabPanels,{children:[(0,r.Y)(i.TabPanel,{px:0,pt:5,children:(0,r.Y)(eU,{discountCodes:rR,plans:rI,isLoading:rC,error:rw,locale:em.locale,isCreating:ts,updatingCodeId:tc,disablingCodeId:tp,hasMoreThanLimit:rB,onCreate:iM,onUpdate:iS,onDisable:iv,isFreeTier:rG,activeBonus:rV,offerId:rq})}),"team"===rO&&(0,r.Y)(i.TabPanel,{px:0,pt:5,children:(0,r.Y)(rl,{plans:rI,isLoading:a6,savingPlanId:e0,onSave:(e,t)=>iA(e,{profileId:ad,...t}),isFreeTier:rG,activeBonus:rV,offerId:rq})}),(0,r.Y)(i.TabPanel,{px:0,pt:5,children:(0,r.Y)(at,{reviews:r2,stats:r5,isLoading:rM,error:rb,locale:em.locale,slug:ep,productName:null===(k=ao.find(e=>e.merchantId===ad))||void 0===k?void 0:k.name,onCopy:im,onToggleDisplay:ix,togglingReviewId:tb})}),(0,r.Y)(i.TabPanel,{px:0,pt:5,children:(0,r.Y)(t7,{store:null!==(er=iu.find(e=>e.merchantId===ad))&&void 0!==er?er:null,promotion:null!==(ei=null==rk?void 0:rk.data)&&void 0!==ei?ei:null,isPromotionLoading:!rk,promotionError:rF,stats:null==rT?void 0:rT.data,isTaiwanAccount:"zh"===ev,isMutating:tY,onOpenRateModal:()=>tx(!0),onDisable:async()=>{tw(!0);try{await ey("/api/creator-subscription/promotion",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({profileId:ad,enabled:!1})}),await rD().catch(()=>void 0)}catch(e){ef({title:em.formatMessage({defaultMessage:"關閉推廣失敗,請稍後再試",id:"admin.creatorSubscription.promotion.關閉失敗"}),status:"error",duration:3e3})}finally{tw(!1)}},onGetSkill:()=>ez("portaly-affiliate"),skillStatus:rN("portaly-affiliate")})})]})]})),"api-skills"===aA&&(0,r.FD)(i.Stack,{spacing:6,children:[iH,(0,r.Y)(i.Divider,{}),(0,r.Y)(e5,{skillVersions:aB,collaborationMode:rO,profileId:ad===eo?eo:void 0})]}),"identity"===aA&&(0,r.Y)(i.Box,{children:aj?(0,r.Y)(i.Center,{py:6,children:(0,r.Y)(i.Spinner,{})}):a_?(0,r.FD)(i.Stack,{spacing:4,children:[ad!==eo&&(0,r.Y)(i.Text,{fontSize:"sm",color:"gray.500",children:em.formatMessage({defaultMessage:"步驟 1/2:身分與收款資料屬於整個帳號,只需送審一次;這裡的服務網址填帳號的代表服務即可,通過後再回到這個產品送出步驟 2(這個產品自己的服務內容)。",id:"admin.creatorSubscription.merchantReview.身分為帳號層級"})}),(0,r.Y)(T,{profileId:eo,planScopeIds:al})]}):(0,r.Y)(te,{merchantId:ad})})]}),(0,r.Y)(M.A,{isOpen:tX,onClose:t0,title:em.formatMessage({defaultMessage:"封存方案",id:"admin.creatorSubscription.plan.封存方案Modal標題"}),body:em.formatMessage({defaultMessage:"確定要封存方案「{name}」嗎?封存後方案會停用,但已存在的訂閱不會受到影響,之後也可以再取消封存。",id:"admin.creatorSubscription.plan.封存方案Modal內容"},{name:(null===(D=tZ.current)||void 0===D?void 0:D.name)||""}),confirm:em.formatMessage({defaultMessage:"確定封存",id:"admin.creatorSubscription.plan.封存方案Modal確定按鈕"}),onConfirm:iT,colorScheme:"gray"}),(0,r.Y)(M.A,{isOpen:t2,onClose:t4,title:em.formatMessage({defaultMessage:"取消封存方案",id:"admin.creatorSubscription.plan.取消封存方案Modal標題"}),body:em.formatMessage({defaultMessage:"確定要取消封存方案「{name}」嗎?取消封存後方案會重新啟用,可再次被訂閱。",id:"admin.creatorSubscription.plan.取消封存方案Modal內容"},{name:(null===(P=t1.current)||void 0===P?void 0:P.name)||""}),confirm:em.formatMessage({defaultMessage:"確定取消封存",id:"admin.creatorSubscription.plan.取消封存方案Modal確定按鈕"}),onConfirm:iP,colorScheme:"green"}),(0,r.Y)(M.A,{isOpen:t6,onClose:t9,title:em.formatMessage({defaultMessage:"停用折扣碼",id:"admin.creatorSubscription.discountCode.停用折扣碼Modal標題"}),body:em.formatMessage({defaultMessage:"確定要停用折扣碼「{code}」嗎?停用後訂閱者結帳時將無法再使用此折扣碼,已套用此折扣的訂閱不受影響。",id:"admin.creatorSubscription.discountCode.停用折扣碼Modal內容"},{code:(null===(R=t3.current)||void 0===R?void 0:R.code)||""}),confirm:em.formatMessage({defaultMessage:"確定停用",id:"admin.creatorSubscription.discountCode.停用折扣碼Modal確定按鈕"}),onConfirm:iy,colorScheme:"red"}),(0,r.Y)(M.A,{isOpen:tV,onClose:tJ,title:em.formatMessage({defaultMessage:"取消訂閱",id:"admin.creatorSubscription.member.取消訂閱Modal標題"}),body:em.formatMessage({defaultMessage:"確定要取消 {name} 的訂閱嗎?該會員的訂閱將於本期結束後失效。",id:"admin.creatorSubscription.member.取消訂閱Modal內容"},{name:(null===(z=tG.current)||void 0===z?void 0:z.customerName)||(null===(N=tG.current)||void 0===N?void 0:N.customerEmail)||(null===(W=tG.current)||void 0===W?void 0:W.id)||""}),confirm:em.formatMessage({defaultMessage:"確定取消訂閱",id:"admin.creatorSubscription.member.取消訂閱Modal確定按鈕"}),onConfirm:iB,colorScheme:"red"}),(0,r.Y)(M.A,{isOpen:aY,onClose:aC,title:em.formatMessage({defaultMessage:"刪除產品",
1id:"admin.creatorSubscription.store.刪除商店Modal標題"}),body:em.formatMessage({defaultMessage:"確定要刪除產品「{name}」嗎?刪除後將無法再切換到此產品,其方案、訂閱與訂單紀錄會保留但無法再透過後台存取。",id:"admin.creatorSubscription.store.刪除商店Modal內容"},{name:ay||em.formatMessage({defaultMessage:"未命名產品",id:"admin.creatorSubscription.store.未命名商店"})}),confirm:em.formatMessage({defaultMessage:"確定刪除",id:"admin.creatorSubscription.store.刪除產品Modal確定按鈕"}),onConfirm:iW,colorScheme:"red"})]})};var rM=a(68090),rS=a.n(rM),rv=a(94650),ry=a(9743),rx=a(99624),rY=a(38146),rw=a(39307),rC=a(53145),rA=a(84316);let rk=e=>(0,rA.A)("/payment?ref=".concat(e));var rF=a(69370);let rD=e=>{let{slug:t,profileId:a}=e,o=(0,d.A)(),n="en"===o.locale,s=(0,rx.jt)(),{data:l}=(0,rx.rt)((0,P.doc)(s,"profileMetadata",a)),{progressStart:c,goalCount:u,referralCount:p}=(0,rC.A)(null==l?void 0:l.referral),m=u!==1/0?"/ ".concat(u):"",g=Math.min(rS()(rF.M),u),f=rk(t),{isOpen:h,onOpen:b,onClose:M}=(0,i.useDisclosure)(),v={bg:"GUI.green.500",color:"white",borderColor:"GUI.green.500"};return(0,r.FD)(i.Menu,{onClose:M,isOpen:h,children:[(0,r.Y)(i.MenuButton,{as:tL.A,border:"2px solid",borderRadius:"xl",...h?v:{bg:"transparent",color:"GUI.green.500",borderColor:"GUI.green.500"},_hover:v,_active:v,trackerName:n?"paymentAdmin.referral.en":"paymentAdmin.referral",onClick:b,children:(0,r.FD)(i.HStack,{children:[(0,r.Y)(i.Icon,{as:ry.den,w:"1.25em",h:"1.25em"}),(0,r.Y)(i.Text,{children:o.formatMessage({defaultMessage:"推薦好友",id:"admin.creatorSubscription.referral.推薦好友"})})]})}),(0,r.Y)(i.Portal,{children:(0,r.Y)(i.MenuList,{mt:"2",p:"6",bg:"white",zIndex:"popover",borderRadius:"3xl",border:"none",boxShadow:"navBar",minWidth:"328px",maxWidth:"100vw",_focus:{boxShadow:"navBar !important"},children:(0,r.FD)(rY.A,{children:[(0,r.FD)(i.HStack,{spacing:n?1:0,fontSize:"20px",pb:"2",children:[(0,r.Y)(i.Text,{fontWeight:"bold",children:o.formatMessage({defaultMessage:"分享以獲得",id:"admin.index.referral.分享以獲得"})}),(0,r.Y)(i.Text,{color:"GUI.green.500",fontWeight:"bold",paddingLeft:"0.5",children:o.formatMessage({defaultMessage:"現金回饋",id:"admin.index.referral.現金回饋"})})]}),(0,r.Y)(i.Text,{fontSize:"14px",pb:"3",children:o.formatMessage({defaultMessage:"分享你的 Portaly Payment 推薦連結,好友透過此連結註冊並成為頂級會員,即可獲取回饋。",id:"admin.creatorSubscription.referral.分享說明"})}),(0,r.Y)(i.HStack,{marginTop:"-1",pb:"3",children:(0,r.Y)(rw.A,{label:"",labelProps:void 0,link:f,inputProps:{fontSize:"14px"},trackerName:n?"paymentAdmin.推薦連結.en":"paymentAdmin.推薦連結"})}),(0,r.FD)(i.HStack,{spacing:2,fontSize:"14px",pb:"2",children:[(0,r.Y)(i.Icon,{as:rv.pZj,size:"20px"}),(0,r.Y)(i.Text,{children:o.formatMessage({defaultMessage:"複製分享你的推薦連結",id:"admin.index.referral.複製分享你的推薦連結"})})]}),(0,r.FD)(i.HStack,{spacing:2,fontSize:"14px",pb:"3",children:[(0,r.Y)(i.Icon,{as:S.v4f,size:"20px"}),(0,r.Y)(i.Text,{children:o.formatMessage({defaultMessage:"好友透過連結註冊",id:"admin.index.referral.好友透過連結註冊"})})]}),(0,r.Y)(i.Text,{fontSize:"14px",textAlign:"left",pb:"2",children:o.formatMessage({defaultMessage:"推薦人數:{referralCount}人",id:"admin.index.referral.推薦人數:{referralCount}人"},{referralCount:p})}),(0,r.Y)(i.Box,{mb:"2",children:(0,r.Y)(i.Progress,{w:"full",size:"sm",rounded:"full",min:c,max:g,value:p,colorScheme:"green"})}),(0,r.FD)(i.HStack,{justifyContent:"space-between",children:[(0,r.Y)(i.Text,{fontSize:"14px",children:c}),(0,r.Y)(i.Text,{fontSize:"14px",children:"".concat(p," ").concat(m," ").concat(o.formatMessage({defaultMessage:"人",id:"admin.index.referral.人"}))})]})]})})})]})};var rT=a(26923);let rI=()=>{let e=(0,d.A)(),t=(0,i.useBreakpointValue)({base:"click",md:"hover"}),a=e.formatMessage({defaultMessage:"後台僅能編輯方案描述,其他資訊請透過 AI Agent 修改",id:"admin.creatorSubscription.plan.後台僅能編輯方案描述其他資訊請透過AIAgent修改"});return(0,r.FD)(i.Popover,{trigger:t,placement:"top",closeOnBlur:!0,children:[(0,r.Y)(i.PopoverTrigger,{children:(0,r.Y)(i.Box,{as:"button",type:"button",color:"gray.400",lineHeight:"1",cursor:"help",flexShrink:0,"aria-label":a,children:(0,r.Y)(i.Icon,{as:rT.MGr,boxSize:4})})}),(0,r.FD)(i.PopoverContent,{bg:"gray.700",color:"white",borderRadius:"md",borderColor:"gray.700",px:3,py:2,maxW:"280px",children:[(0,r.Y)(i.PopoverArrow,{bg:"gray.700"}),(0,r.Y)(i.PopoverBody,{p:0,children:a})]})]})};var rP=a(53573);let rR=()=>{let e=(0,d.A)(),t=(0,s.useRouter)(),{profileId:a,slug:o}=(0,l.useContext)(m.A),g=(0,rh.aF)(t.query.tab),h=(0,rh.Jm)(e);return(0,r.FD)(r.FK,{children:[(0,r.Y)(u.A,{title:e.formatMessage({defaultMessage:"Payment",id:"admin.creatorSubscription.seoTitle"})}),(0,r.Y)(f,{children:(0,r.Y)(p.A,{maxW:"xl",noShare:!0,children:(0,r.FD)(i.Stack,{spacing:"overview"===g?8:5,children:["overview"===g?(0,r.FD)(i.Box,{children:[(0,r.FD)(i.Flex,{justify:"space-between",align:"flex-start",wrap:"wrap",gap:4,children:[(0,r.Y)(rP.A,{title:e.formatMessage({defaultMessage:"Portaly Payment",id:"admin.creatorSubscription.pageTitle"}),tutorialUrl:"https://portaly.cc/blog/portaly-payment-tutorial",tutorialName:"admin.tutorial.payment"}),a&&o&&(0,r.Y)(rD,{slug:o,profileId:a})]}),(0,r.Y)(i.Text,{mt:4,color:"gray.600",fontSize:{base:"md",md:"lg"},children:e.formatMessage({defaultMessage:"為你的產品串接 Portaly Payment 交易系統:金流、訂閱、發票、稅務申報一次搞定。",id:"admin.creatorSubscription.為你的產品串接 Portaly Payment 交易系統:金流、訂閱、發票、稅務申報一次搞定。"})}),(0,r.Y)(i.Text,{mt:1,color:"gray.600",fontSize:{base:"md",md:"lg"},children:e.formatMessage({defaultMessage:"你負責用 AI 打造產品,收款的事交給 Portaly。",id:"admin.creatorSubscription.你負責用 AI 打造產品,收款的事交給 Portaly。"})})]}):(0,r.FD)(i.Box,{children:[(0,r.Y)(i.HStack,{spacing:1,fontSize:"13.5px",color:"gray.500",children:(0,r.Y)(i.Box,{as:n(),href:{pathname:t.pathname,query:{...t.query,tab:"overview"}},shallow:!0,_hover:{color:"GUI.green.700",textDecoration:"underline"},children:e.formatMessage({defaultMessage:"Portaly Payment",id:"admin.creatorSubscription.pageTitle"})})}),(0,r.FD)(i.HStack,{mt:4,align:"center",spacing:2,children:[(0,r.Y)(rP.A,{title:h[g]}),"plans"===g&&(0,r.Y)(rI,{})]}),"product-ops"===g&&(0,r.Y)(i.Text,{mt:3,color:"gray.600",fontSize:{base:"md",md:"lg"},children:e.formatMessage({defaultMessage:"幫買家決定要買的三個工具:折扣碼促成下單、評價嵌到你的網站當口碑、產品推廣找人導客,成交才付分潤。",id:"admin.creatorSubscription.productOps.description"})})]}),(0,r.Y)(i.Box,{children:a?(0,r.Y)(rb,{profileId:a,slug:o}):(0,r.Y)(c.A,{})})]})})})]})}},83320:e=>{e.exports={style:{fontFamily:"'Rubik', 'Rubik Fallback'",fontStyle:"normal"},className:"__className_69ee99"}},13368:(e,t,a)=>{e.exports=a(86085)},13491:function(e,t,a){var r=a(65606);(function(){var t,a,i,o;"undefined"!=typeof performance&&null!==performance&&performance.now?e.exports=function(){return performance.now()}:null!=r&&r.hrtime?(e.exports=function(){return(t()-o)/1e6},a=r.hrtime,o=(t=function(){var e;return 1e9*(e=a())[0]+e[1]}
1)()-1e9*r.uptime()):Date.now?(e.exports=function(){return Date.now()-i},i=Date.now()):(e.exports=function(){return new Date().getTime()-i},i=new Date().getTime())}).call(this)},93146:(e,t,a)=>{for(var r=a(13491),i="undefined"==typeof window?a.g:window,o=["moz","webkit"],n="AnimationFrame",s=i["request"+n],l=i["cancel"+n]||i["cancelRequest"+n],d=0;!s&&d<o.length;d++)s=i[o[d]+"Request"+n],l=i[o[d]+"Cancel"+n]||i[o[d]+"CancelRequest"+n];if(!s||!l){var c=0,u=0,p=[],m=1e3/60;s=function(e){if(0===p.length){var t=r(),a=Math.max(0,m-(t-c));c=a+t,setTimeout(function(){var e=p.slice(0);p.length=0;for(var t=0;t<e.length;t++)if(!e[t].cancelled)try{e[t].callback(c)}catch(e){setTimeout(function(){throw e},0)}},Math.round(a))}return p.push({handle:++u,callback:e,cancelled:!1}),u},l=function(e){for(var t=0;t<p.length;t++)p[t].handle===e&&(p[t].cancelled=!0)}}e.exports=function(e){return s.call(i,e)},e.exports.cancel=function(){l.apply(i,arguments)},e.exports.polyfill=function(e){e||(e=i),e.requestAnimationFrame=s,e.cancelAnimationFrame=l}},16575:(e,t,a)=>{"use strict";var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var r in a)Object.prototype.hasOwnProperty.call(a,r)&&(e[r]=a[r])}return e},i=function(){function e(e,t){for(var a=0;a<t.length;a++){var r=t[a];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,a,r){return a&&e(t.prototype,a),r&&e(t,r),t}}(),o=a(96540),n=p(o),s=p(a(5556)),l=p(a(2833)),d=p(a(93146)),c=p(a(19049)),u=p(a(16171));function p(e){return e&&e.__esModule?e:{default:e}}function m(e,t){var a={};for(var r in e)!(t.indexOf(r)>=0)&&Object.prototype.hasOwnProperty.call(e,r)&&(a[r]=e[r]);return a}var g=function(){},f=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return t&&("object"==typeof t||"function"==typeof t)?t:e}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return a.setRef=function(e){return a.inner=e},a.setHeightOffset=function(){a.setState({height:a.inner?a.inner.offsetHeight:""}),a.resizeTicking=!1},a.getScrollY=function(){return void 0!==a.props.parent().pageYOffset?a.props.parent().pageYOffset:void 0!==a.props.parent().scrollTop?a.props.parent().scrollTop:(document.documentElement||document.body.parentNode||document.body).scrollTop},a.getViewportHeight=function(){return window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight},a.getDocumentHeight=function(){var e=document.body,t=document.documentElement;return Math.max(e.scrollHeight,t.scrollHeight,e.offsetHeight,t.offsetHeight,e.clientHeight,t.clientHeight)},a.getElementPhysicalHeight=function(e){return Math.max(e.offsetHeight,e.clientHeight)},a.getElementHeight=function(e){return Math.max(e.scrollHeight,e.offsetHeight,e.clientHeight)},a.getScrollerPhysicalHeight=function(){var e=a.props.parent();return e===window||e===document.body?a.getViewportHeight():a.getElementPhysicalHeight(e)},a.getScrollerHeight=function(){var e=a.props.parent();return e===window||e===document.body?a.getDocumentHeight():a.getElementHeight(e)},a.isOutOfBound=function(e){var t=a.getScrollerPhysicalHeight(),r=a.getScrollerHeight();return e<0||e+t>r},a.handleScroll=function(){a.scrollTicking||(a.scrollTicking=!0,(0,d.default)(a.update))},a.handleResize=function(){a.resizeTicking||(a.resizeTicking=!0,(0,d.default)(a.setHeightOffset))},a.unpin=function(){a.props.onUnpin(),a.setState({translateY:"-100%",className:"headroom headroom--unpinned",animation:!0,state:"unpinned"})},a.unpinSnap=function(){a.props.onUnpin(),a.setState({translateY:"-100%",className:"headroom headroom--unpinned headroom-disable-animation",animation:!1,state:"unpinned"})},a.pin=function(){a.props.onPin(),a.setState({translateY:0,className:"headroom headroom--pinned",animation:!0,state:"pinned"})},a.unfix=function(){a.props.onUnfix(),a.setState({translateY:0,className:"headroom headroom--unfixed headroom-disable-animation",animation:!1},function(){setTimeout(function(){a.setState({state:"unfixed"})},0)})},a.update=function(){if(a.currentScrollY=a.getScrollY(),!a.isOutOfBound(a.currentScrollY)){var e=(0,c.default)(a.lastKnownScrollY,a.currentScrollY,a.props,a.state).action;"pin"===e?a.pin():"unpin"===e?a.unpin():"unpin-snap"===e?a.unpinSnap():"unfix"===e&&a.unfix()}a.lastKnownScrollY=a.currentScrollY,a.scrollTicking=!1},a.currentScrollY=0,a.lastKnownScrollY=0,a.scrollTicking=!1,a.resizeTicking=!1,a.eventListenerOptions=!1,a.state={state:"unfixed",translateY:0,className:"headroom headroom--unfixed"},a}return!function(e,t){if("function"!=typeof t&&null!==t)throw TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),i(t,null,[{key:"getDerivedStateFromProps",value:function(e,t){return e.disable&&"unfixed"!==t.state?{translateY:0,className:"headroom headroom--unfixed headroom-disable-animation",animation:!1,state:"unfixed"}:null}}
1]),i(t,[{key:"componentDidMount",value:function(){this.setHeightOffset(),this.eventListenerOptions=!!(0,u.default)()&&{passive:!0,capture:!1},!this.props.disable&&(this.props.parent().addEventListener("scroll",this.handleScroll,this.eventListenerOptions),this.props.calcHeightOnResize&&this.props.parent().addEventListener("resize",this.handleResize,this.eventListenerOptions))}},{key:"shouldComponentUpdate",value:function(e,t){return!(0,l.default)(this.props,e)||!(0,l.default)(this.state,t)}},{key:"componentDidUpdate",value:function(e,t){e.children!==this.props.children&&this.setHeightOffset(),!e.disable&&this.props.disable?(this.props.parent().removeEventListener("scroll",this.handleScroll,this.eventListenerOptions),this.props.parent().removeEventListener("resize",this.handleResize,this.eventListenerOptions),"unfixed"!==t.state&&"unfixed"===this.state.state&&this.props.onUnfix()):e.disable&&!this.props.disable&&(this.props.parent().addEventListener("scroll",this.handleScroll,this.eventListenerOptions),this.props.calcHeightOnResize&&this.props.parent().addEventListener("resize",this.handleResize,this.eventListenerOptions)),e.pin!==this.props.pin&&this.handleScroll()}},{key:"componentWillUnmount",value:function(){this.props.parent()&&(this.props.parent().removeEventListener("scroll",this.handleScroll,this.eventListenerOptions),this.props.parent().removeEventListener("resize",this.handleResize,this.eventListenerOptions)),window.removeEventListener("scroll",this.handleScroll,this.eventListenerOptions)}},{key:"render",value:function(){var e=this.props,t=e.className,a=e.tag,i=m(e,["className","tag"]);delete i.onUnpin,delete i.onPin,delete i.onUnfix,delete i.disableInlineStyles,delete i.disable,delete i.pin,delete i.parent,delete i.children,delete i.upTolerance,delete i.downTolerance,delete i.pinStart,delete i.calcHeightOnResize;var o=i.style,s=i.wrapperStyle,l=m(i,["style","wrapperStyle"]),d={position:this.props.disable||"unfixed"===this.state.state?"relative":"fixed",top:0,left:0,right:0,zIndex:1,WebkitTransform:"translate3D(0, "+this.state.translateY+", 0)",MsTransform:"translate3D(0, "+this.state.translateY+", 0)",transform:"translate3D(0, "+this.state.translateY+", 0)"},c=this.state.className;this.state.animation&&(d=r({},d,{WebkitTransition:"all .2s ease-in-out",MozTransition:"all .2s ease-in-out",OTransition:"all .2s ease-in-out",transition:"all .2s ease-in-out"}),c+=" headroom--scrolled"),d=this.props.disableInlineStyles?o:r({},d,o);var u=r({},s,{height:this.state.height?this.state.height:null});return n.default.createElement(a,{style:u,className:t?t+" headroom-wrapper":"headroom-wrapper"},n.default.createElement("div",r({ref:this.setRef},l,{style:d,className:c}),this.props.children))}}]),t}(o.Component);f.propTypes={className:s.default.string,parent:s.default.func,children:s.default.any.isRequired,disableInlineStyles:s.default.bool,disable:s.default.bool,pin:s.default.bool,upTolerance:s.default.number,downTolerance:s.default.number,onPin:s.default.func,onUnpin:s.default.func,onUnfix:s.default.func,wrapperStyle:s.default.object,pinStart:s.default.number,style:s.default.object,calcHeightOnResize:s.default.bool,tag:s.default.string},f.defaultProps={parent:function(){return window},disableInlineStyles:!1,disable:!1,pin:!1,upTolerance:5,downTolerance:0,onPin:g,onUnpin:g,onUnfix:g,wrapperStyle:{},pinStart:0,calcHeightOnResize:!0,tag:"div"},t.A=f},19049:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=t>=e?"down":"up",o=Math.abs(t-e);if(a.disable)return{action:"none",scrollDirection:i,distanceScrolled:o};if(a.pin)return{action:"pinned"!==r.state?"pin":"none",scrollDirection:i,distanceScrolled:o};if(t<=a.pinStart&&"unfixed"!==r.state)return{action:"unfix",scrollDirection:i,distanceScrolled:o};if(t<=r.height&&"down"===i&&"unfixed"===r.state)return{action:"none",scrollDirection:i,distanceScrolled:o};if(t>r.height+a.pinStart&&"down"===i&&"unfixed"===r.state)return{action:"unpin-snap",scrollDirection:i,distanceScrolled:o};if("down"===i&&["pinned","unfixed"].indexOf(r.state)>=0&&t>r.height+a.pinStart&&o>a.downTolerance)return{action:"unpin",scrollDirection:i,distanceScrolled:o};if("up"===i&&o>a.upTolerance&&0>["pinned","unfixed"].indexOf(r.state))return{action:"pin",scrollDirection:i,distanceScrolled:o};else if("up"===i&&t<=r.height&&0>["pinned","unfixed"].indexOf(r.state))return{action:"pin",scrollDirection:i,distanceScrolled:o};else return{action:"none",scrollDirection:i,distanceScrolled:o}}},16171:(e,t)=>{"use strict";
1Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=!1;try{var t={get passive(){return e=!0,!1}};window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(t){e=!1}return e}},98202:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(96540);function i(){return(i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var r in a)Object.prototype.hasOwnProperty.call(a,r)&&(e[r]=a[r])}return e}).apply(this,arguments)}var o=function(e,t){switch(e){case"left":return{top:0,left:0,transform:"translate3d(-100%, 0, 0)",width:t,height:"100vh"};case"right":return{top:0,right:0,transform:"translate3d(100%, 0, 0)",width:t,height:"100vh"};case"bottom":return{left:0,right:0,bottom:0,transform:"translate3d(0, 100%, 0)",width:"100%",height:t};case"top":return{left:0,right:0,top:0,transform:"translate3d(0, -100%, 0)",width:"100%",height:t};default:return{}}};let n=function(e){var t=e.open,a=e.onClose,n=e.children,s=e.style,l=e.enableOverlay,d=e.overlayColor,c=e.overlayOpacity,u=e.zIndex,p=void 0===u?100:u,m=e.duration,g=e.direction,f=e.size,h=e.className,b=e.customIdSuffix,M=e.lockBackgroundScroll,S=void 0!==M&&M,v=e.overlayClassName,y=(0,r.useRef)(null);(0,r.useEffect)(function(){y.current=window.document.querySelector("body"),y.current&&S&&(t?y.current.style.overflow="hidden":y.current.style.overflow="")},[t]);var x=(0,r.useMemo)(function(){return b||(Math.random()+1).toString(36).substring(7)},[b]),Y=i({zIndex:p+1,transitionDuration:(void 0===m?500:m)+"ms"},o(g,void 0===f?250:f),s);return r.createElement("div",{id:"EZDrawer"+x,className:"EZDrawer"},r.createElement("input",{type:"checkbox",id:"EZDrawer__checkbox"+x,className:"EZDrawer__checkbox",onChange:void 0===a?function(){}:a,checked:t}),r.createElement("nav",{role:"navigation",id:"EZDrawer__container"+x,style:Y,className:"EZDrawer__container "+h},n),(void 0===l||l)&&r.createElement("label",{htmlFor:"EZDrawer__checkbox"+x,id:"EZDrawer__overlay"+x,className:"EZDrawer__overlay "+(void 0===v?"":v),style:{backgroundColor:""+(void 0===d?"#000":d),opacity:""+(void 0===c?.4:c),zIndex:p}}))}},2833:e=>{e.exports=function(e,t,a,r){var i=a?a.call(r,e,t):void 0;if(void 0!==i)return!!i;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),n=Object.keys(t);if(o.length!==n.length)return!1;for(var s=Object.prototype.hasOwnProperty.bind(t),l=0;l<o.length;l++){var d=o[l];if(!s(d))return!1;var c=e[d],u=t[d];if(!1===(i=a?a.call(r,c,u,d):void 0)||void 0===i&&c!==u)return!1}return!0}},84577:(e,t,a)=>{"use strict";function r(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}a.d(t,{_:()=>r})}},e=>{var t=t=>e(e.s=t);e.O(0,[19883,28505,58247,67690,17057,43465,87551,69735,81544,75687,38563,53958,75377,92535,28035,75945,78758,63596,65354,42419,92893,80971,97042,20821,38808,90715,64065,99624,13404,49785,96323,77381,90585,34005,47533,5244,85701,4589,57716,71511,10900,71086,95413,18839,15440,95005,87260,64190,65581,60120,67988,69455,34129,63697,90636,46593,38792],()=>t(46423)),_N_E=e.O()}]);

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.