From 49e565a1229d056bc38358b84079d57972f50f5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=A1=E8=8B=A5?= Date: Sun, 8 Mar 2026 15:48:15 +0800 Subject: [PATCH] =?UTF-8?q?sync:=20soul-admin=20=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E3=80=81soul-admin=20=E9=A1=B5=E9=9D=A2=20|=20=E5=8E=9F?= =?UTF-8?q?=E5=9B=A0:=20=E5=89=8D=E7=AB=AF=E4=BB=A3=E7=A0=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E3=80=81=E5=89=8D=E7=AB=AF=E9=A1=B5=E9=9D=A2=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{index-CmfGUxco.js => index-40AqCpw1.js} | 62 +++++++++---------- soul-admin/dist/index.html | 2 +- .../pages/find-partner/tabs/CKBStatsTab.tsx | 32 +++++++++- 3 files changed, 61 insertions(+), 35 deletions(-) rename soul-admin/dist/assets/{index-CmfGUxco.js => index-40AqCpw1.js} (60%) diff --git a/soul-admin/dist/assets/index-CmfGUxco.js b/soul-admin/dist/assets/index-40AqCpw1.js similarity index 60% rename from soul-admin/dist/assets/index-CmfGUxco.js rename to soul-admin/dist/assets/index-40AqCpw1.js index d9785c11..43af1620 100644 --- a/soul-admin/dist/assets/index-CmfGUxco.js +++ b/soul-admin/dist/assets/index-40AqCpw1.js @@ -6,7 +6,7 @@ function yv(r,a){for(var l=0;l>>1,O=B[A];if(0>>1;Ac(G,K))dec(Y,G)?(B[A]=Y,B[de]=K,A=de):(B[A]=G,B[J]=K,A=J);else if(dec(Y,K))B[A]=Y,B[de]=K,A=de;else break e}}return ce}function c(B,ce){var K=B.sortIndex-ce.sortIndex;return K!==0?K:B.id-ce.id}if(typeof performance=="object"&&typeof performance.now=="function"){var u=performance;r.unstable_now=function(){return u.now()}}else{var m=Date,f=m.now();r.unstable_now=function(){return m.now()-f}}var g=[],y=[],p=1,v=null,E=3,P=!1,T=!1,w=!1,b=typeof setTimeout=="function"?setTimeout:null,N=typeof clearTimeout=="function"?clearTimeout:null,C=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function j(B){for(var ce=l(y);ce!==null;){if(ce.callback===null)o(y);else if(ce.startTime<=B)o(y),ce.sortIndex=ce.expirationTime,a(g,ce);else break;ce=l(y)}}function I(B){if(w=!1,j(B),!T)if(l(g)!==null)T=!0,oe(U);else{var ce=l(y);ce!==null&&ve(I,ce.startTime-B)}}function U(B,ce){T=!1,w&&(w=!1,N(k),k=-1),P=!0;var K=E;try{for(j(ce),v=l(g);v!==null&&(!(v.expirationTime>ce)||B&&!ne());){var A=v.callback;if(typeof A=="function"){v.callback=null,E=v.priorityLevel;var O=A(v.expirationTime<=ce);ce=r.unstable_now(),typeof O=="function"?v.callback=O:v===l(g)&&o(g),j(ce)}else o(g);v=l(g)}if(v!==null)var L=!0;else{var J=l(y);J!==null&&ve(I,J.startTime-ce),L=!1}return L}finally{v=null,E=K,P=!1}}var V=!1,_=null,k=-1,R=5,Z=-1;function ne(){return!(r.unstable_now()-ZB||125A?(B.sortIndex=K,a(y,B),l(g)===null&&B===l(y)&&(w?(N(k),k=-1):w=!0,ve(I,K-A))):(B.sortIndex=O,a(g,B),T||P||(T=!0,oe(U))),B},r.unstable_shouldYield=ne,r.unstable_wrapCallback=function(B){var ce=E;return function(){var K=E;E=ce;try{return B.apply(this,arguments)}finally{E=K}}}})(Nd)),Nd}var wf;function wv(){return wf||(wf=1,bd.exports=Nv()),bd.exports}/** + */var Nf;function Nv(){return Nf||(Nf=1,(function(r){function a(U,ce){var K=U.length;U.push(ce);e:for(;0>>1,F=U[A];if(0>>1;Ac(G,K))dec(Q,G)?(U[A]=Q,U[de]=K,A=de):(U[A]=G,U[Z]=K,A=Z);else if(dec(Q,K))U[A]=Q,U[de]=K,A=de;else break e}}return ce}function c(U,ce){var K=U.sortIndex-ce.sortIndex;return K!==0?K:U.id-ce.id}if(typeof performance=="object"&&typeof performance.now=="function"){var u=performance;r.unstable_now=function(){return u.now()}}else{var m=Date,f=m.now();r.unstable_now=function(){return m.now()-f}}var p=[],y=[],g=1,v=null,k=3,P=!1,T=!1,w=!1,N=typeof setTimeout=="function"?setTimeout:null,b=typeof clearTimeout=="function"?clearTimeout:null,S=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function j(U){for(var ce=l(y);ce!==null;){if(ce.callback===null)o(y);else if(ce.startTime<=U)o(y),ce.sortIndex=ce.expirationTime,a(p,ce);else break;ce=l(y)}}function _(U){if(w=!1,j(U),!T)if(l(p)!==null)T=!0,ie(O);else{var ce=l(y);ce!==null&&ve(_,ce.startTime-U)}}function O(U,ce){T=!1,w&&(w=!1,b(R),R=-1),P=!0;var K=k;try{for(j(ce),v=l(p);v!==null&&(!(v.expirationTime>ce)||U&&!ne());){var A=v.callback;if(typeof A=="function"){v.callback=null,k=v.priorityLevel;var F=A(v.expirationTime<=ce);ce=r.unstable_now(),typeof F=="function"?v.callback=F:v===l(p)&&o(p),j(ce)}else o(p);v=l(p)}if(v!==null)var L=!0;else{var Z=l(y);Z!==null&&ve(_,Z.startTime-ce),L=!1}return L}finally{v=null,k=K,P=!1}}var V=!1,I=null,R=-1,E=5,Y=-1;function ne(){return!(r.unstable_now()-YU||125A?(U.sortIndex=K,a(y,U),l(p)===null&&U===l(y)&&(w?(b(R),R=-1):w=!0,ve(_,K-A))):(U.sortIndex=F,a(p,U),T||P||(T=!0,ie(O))),U},r.unstable_shouldYield=ne,r.unstable_wrapCallback=function(U){var ce=k;return function(){var K=k;k=ce;try{return U.apply(this,arguments)}finally{k=K}}}})(Nd)),Nd}var wf;function wv(){return wf||(wf=1,bd.exports=Nv()),bd.exports}/** * @license React * react-dom.production.min.js * @@ -30,14 +30,14 @@ function yv(r,a){for(var l=0;l"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),g=Object.prototype.hasOwnProperty,y=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p={},v={};function E(t){return g.call(v,t)?!0:g.call(p,t)?!1:y.test(t)?v[t]=!0:(p[t]=!0,!1)}function P(t,s,n,i){if(n!==null&&n.type===0)return!1;switch(typeof s){case"function":case"symbol":return!0;case"boolean":return i?!1:n!==null?!n.acceptsBooleans:(t=t.toLowerCase().slice(0,5),t!=="data-"&&t!=="aria-");default:return!1}}function T(t,s,n,i){if(s===null||typeof s>"u"||P(t,s,n,i))return!0;if(i)return!1;if(n!==null)switch(n.type){case 3:return!s;case 4:return s===!1;case 5:return isNaN(s);case 6:return isNaN(s)||1>s}return!1}function w(t,s,n,i,d,x,S){this.acceptsBooleans=s===2||s===3||s===4,this.attributeName=i,this.attributeNamespace=d,this.mustUseProperty=n,this.propertyName=t,this.type=s,this.sanitizeURL=x,this.removeEmptyString=S}var b={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(t){b[t]=new w(t,0,!1,t,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(t){var s=t[0];b[s]=new w(s,1,!1,t[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(t){b[t]=new w(t,2,!1,t.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(t){b[t]=new w(t,2,!1,t,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(t){b[t]=new w(t,3,!1,t.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(t){b[t]=new w(t,3,!0,t,null,!1,!1)}),["capture","download"].forEach(function(t){b[t]=new w(t,4,!1,t,null,!1,!1)}),["cols","rows","size","span"].forEach(function(t){b[t]=new w(t,6,!1,t,null,!1,!1)}),["rowSpan","start"].forEach(function(t){b[t]=new w(t,5,!1,t.toLowerCase(),null,!1,!1)});var N=/[\-:]([a-z])/g;function C(t){return t[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(t){var s=t.replace(N,C);b[s]=new w(s,1,!1,t,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(t){var s=t.replace(N,C);b[s]=new w(s,1,!1,t,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(t){var s=t.replace(N,C);b[s]=new w(s,1,!1,t,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(t){b[t]=new w(t,1,!1,t.toLowerCase(),null,!1,!1)}),b.xlinkHref=new w("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(t){b[t]=new w(t,1,!1,t.toLowerCase(),null,!0,!0)});function j(t,s,n,i){var d=b.hasOwnProperty(s)?b[s]:null;(d!==null?d.type!==0:i||!(2"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),p=Object.prototype.hasOwnProperty,y=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,g={},v={};function k(t){return p.call(v,t)?!0:p.call(g,t)?!1:y.test(t)?v[t]=!0:(g[t]=!0,!1)}function P(t,s,n,i){if(n!==null&&n.type===0)return!1;switch(typeof s){case"function":case"symbol":return!0;case"boolean":return i?!1:n!==null?!n.acceptsBooleans:(t=t.toLowerCase().slice(0,5),t!=="data-"&&t!=="aria-");default:return!1}}function T(t,s,n,i){if(s===null||typeof s>"u"||P(t,s,n,i))return!0;if(i)return!1;if(n!==null)switch(n.type){case 3:return!s;case 4:return s===!1;case 5:return isNaN(s);case 6:return isNaN(s)||1>s}return!1}function w(t,s,n,i,d,x,C){this.acceptsBooleans=s===2||s===3||s===4,this.attributeName=i,this.attributeNamespace=d,this.mustUseProperty=n,this.propertyName=t,this.type=s,this.sanitizeURL=x,this.removeEmptyString=C}var N={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(t){N[t]=new w(t,0,!1,t,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(t){var s=t[0];N[s]=new w(s,1,!1,t[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(t){N[t]=new w(t,2,!1,t.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(t){N[t]=new w(t,2,!1,t,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(t){N[t]=new w(t,3,!1,t.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(t){N[t]=new w(t,3,!0,t,null,!1,!1)}),["capture","download"].forEach(function(t){N[t]=new w(t,4,!1,t,null,!1,!1)}),["cols","rows","size","span"].forEach(function(t){N[t]=new w(t,6,!1,t,null,!1,!1)}),["rowSpan","start"].forEach(function(t){N[t]=new w(t,5,!1,t.toLowerCase(),null,!1,!1)});var b=/[\-:]([a-z])/g;function S(t){return t[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(t){var s=t.replace(b,S);N[s]=new w(s,1,!1,t,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(t){var s=t.replace(b,S);N[s]=new w(s,1,!1,t,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(t){var s=t.replace(b,S);N[s]=new w(s,1,!1,t,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(t){N[t]=new w(t,1,!1,t.toLowerCase(),null,!1,!1)}),N.xlinkHref=new w("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(t){N[t]=new w(t,1,!1,t.toLowerCase(),null,!0,!0)});function j(t,s,n,i){var d=N.hasOwnProperty(s)?N[s]:null;(d!==null?d.type!==0:i||!(2M||d[S]!==x[M]){var $=` -`+d[S].replace(" at new "," at ");return t.displayName&&$.includes("")&&($=$.replace("",t.displayName)),$}while(1<=S&&0<=M);break}}}finally{L=!1,Error.prepareStackTrace=n}return(t=t?t.displayName||t.name:"")?O(t):""}function G(t){switch(t.tag){case 5:return O(t.type);case 16:return O("Lazy");case 13:return O("Suspense");case 19:return O("SuspenseList");case 0:case 2:case 15:return t=J(t.type,!1),t;case 11:return t=J(t.type.render,!1),t;case 1:return t=J(t.type,!0),t;default:return""}}function de(t){if(t==null)return null;if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case _:return"Fragment";case V:return"Portal";case R:return"Profiler";case k:return"StrictMode";case Q:return"Suspense";case se:return"SuspenseList"}if(typeof t=="object")switch(t.$$typeof){case ne:return(t.displayName||"Context")+".Consumer";case Z:return(t._context.displayName||"Context")+".Provider";case ae:var s=t.render;return t=t.displayName,t||(t=s.displayName||s.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case H:return s=t.displayName||null,s!==null?s:de(t.type)||"Memo";case oe:s=t._payload,t=t._init;try{return de(t(s))}catch{}}return null}function Y(t){var s=t.type;switch(t.tag){case 24:return"Cache";case 9:return(s.displayName||"Context")+".Consumer";case 10:return(s._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return t=s.render,t=t.displayName||t.name||"",s.displayName||(t!==""?"ForwardRef("+t+")":"ForwardRef");case 7:return"Fragment";case 5:return s;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return de(s);case 8:return s===k?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof s=="function")return s.displayName||s.name||null;if(typeof s=="string")return s}return null}function ge(t){switch(typeof t){case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function Se(t){var s=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(s==="checkbox"||s==="radio")}function D(t){var s=Se(t)?"checked":"value",n=Object.getOwnPropertyDescriptor(t.constructor.prototype,s),i=""+t[s];if(!t.hasOwnProperty(s)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var d=n.get,x=n.set;return Object.defineProperty(t,s,{configurable:!0,get:function(){return d.call(this)},set:function(S){i=""+S,x.call(this,S)}}),Object.defineProperty(t,s,{enumerable:n.enumerable}),{getValue:function(){return i},setValue:function(S){i=""+S},stopTracking:function(){t._valueTracker=null,delete t[s]}}}}function fe(t){t._valueTracker||(t._valueTracker=D(t))}function ke(t){if(!t)return!1;var s=t._valueTracker;if(!s)return!0;var n=s.getValue(),i="";return t&&(i=Se(t)?t.checked?"true":"false":t.value),t=i,t!==n?(s.setValue(t),!0):!1}function Ve(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}function We(t,s){var n=s.checked;return K({},s,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??t._wrapperState.initialChecked})}function Ye(t,s){var n=s.defaultValue==null?"":s.defaultValue,i=s.checked!=null?s.checked:s.defaultChecked;n=ge(s.value!=null?s.value:n),t._wrapperState={initialChecked:i,initialValue:n,controlled:s.type==="checkbox"||s.type==="radio"?s.checked!=null:s.value!=null}}function tt(t,s){s=s.checked,s!=null&&j(t,"checked",s,!1)}function ze(t,s){tt(t,s);var n=ge(s.value),i=s.type;if(n!=null)i==="number"?(n===0&&t.value===""||t.value!=n)&&(t.value=""+n):t.value!==""+n&&(t.value=""+n);else if(i==="submit"||i==="reset"){t.removeAttribute("value");return}s.hasOwnProperty("value")?xe(t,s.type,n):s.hasOwnProperty("defaultValue")&&xe(t,s.type,ge(s.defaultValue)),s.checked==null&&s.defaultChecked!=null&&(t.defaultChecked=!!s.defaultChecked)}function he(t,s,n){if(s.hasOwnProperty("value")||s.hasOwnProperty("defaultValue")){var i=s.type;if(!(i!=="submit"&&i!=="reset"||s.value!==void 0&&s.value!==null))return;s=""+t._wrapperState.initialValue,n||s===t.value||(t.value=s),t.defaultValue=s}n=t.name,n!==""&&(t.name=""),t.defaultChecked=!!t._wrapperState.initialChecked,n!==""&&(t.name=n)}function xe(t,s,n){(s!=="number"||Ve(t.ownerDocument)!==t)&&(n==null?t.defaultValue=""+t._wrapperState.initialValue:t.defaultValue!==""+n&&(t.defaultValue=""+n))}var ft=Array.isArray;function es(t,s,n,i){if(t=t.options,s){s={};for(var d=0;d"+s.valueOf().toString()+"",s=gs.firstChild;t.firstChild;)t.removeChild(t.firstChild);for(;s.firstChild;)t.appendChild(s.firstChild)}});function mr(t,s){if(s){var n=t.firstChild;if(n&&n===t.lastChild&&n.nodeType===3){n.nodeValue=s;return}}t.textContent=s}var Cs={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Kn=["Webkit","ms","Moz","O"];Object.keys(Cs).forEach(function(t){Kn.forEach(function(s){s=s+t.charAt(0).toUpperCase()+t.substring(1),Cs[s]=Cs[t]})});function Gn(t,s,n){return s==null||typeof s=="boolean"||s===""?"":n||typeof s!="number"||s===0||Cs.hasOwnProperty(t)&&Cs[t]?(""+s).trim():s+"px"}function ks(t,s){t=t.style;for(var n in s)if(s.hasOwnProperty(n)){var i=n.indexOf("--")===0,d=Gn(n,s[n],i);n==="float"&&(n="cssFloat"),i?t.setProperty(n,d):t[n]=d}}var Nn=K({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function fr(t,s){if(s){if(Nn[t]&&(s.children!=null||s.dangerouslySetInnerHTML!=null))throw Error(l(137,t));if(s.dangerouslySetInnerHTML!=null){if(s.children!=null)throw Error(l(60));if(typeof s.dangerouslySetInnerHTML!="object"||!("__html"in s.dangerouslySetInnerHTML))throw Error(l(61))}if(s.style!=null&&typeof s.style!="object")throw Error(l(62))}}function ys(t,s){if(t.indexOf("-")===-1)return typeof s.is=="string";switch(t){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Ds=null;function Ls(t){return t=t.target||t.srcElement||window,t.correspondingUseElement&&(t=t.correspondingUseElement),t.nodeType===3?t.parentNode:t}var wn=null,Es=null,Os=null;function Fs(t){if(t=cl(t)){if(typeof wn!="function")throw Error(l(280));var s=t.stateNode;s&&(s=oi(s),wn(t.stateNode,t.type,s))}}function Yn(t){Es?Os?Os.push(t):Os=[t]:Es=t}function Qn(){if(Es){var t=Es,s=Os;if(Os=Es=null,Fs(t),s)for(t=0;t>>=0,t===0?32:31-(Ag(t)/Dg|0)|0}var Wl=64,Hl=4194304;function Ha(t){switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return t&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return t}}function Kl(t,s){var n=t.pendingLanes;if(n===0)return 0;var i=0,d=t.suspendedLanes,x=t.pingedLanes,S=n&268435455;if(S!==0){var M=S&~d;M!==0?i=Ha(M):(x&=S,x!==0&&(i=Ha(x)))}else S=n&~d,S!==0?i=Ha(S):x!==0&&(i=Ha(x));if(i===0)return 0;if(s!==0&&s!==i&&(s&d)===0&&(d=i&-i,x=s&-s,d>=x||d===16&&(x&4194240)!==0))return s;if((i&4)!==0&&(i|=n&16),s=t.entangledLanes,s!==0)for(t=t.entanglements,s&=i;0n;n++)s.push(t);return s}function Ka(t,s,n){t.pendingLanes|=s,s!==536870912&&(t.suspendedLanes=0,t.pingedLanes=0),t=t.eventTimes,s=31-Bs(s),t[s]=n}function zg(t,s){var n=t.pendingLanes&~s;t.pendingLanes=s,t.suspendedLanes=0,t.pingedLanes=0,t.expiredLanes&=s,t.mutableReadLanes&=s,t.entangledLanes&=s,s=t.entanglements;var i=t.eventTimes;for(t=t.expirationTimes;0=el),dh=" ",uh=!1;function hh(t,s){switch(t){case"keyup":return my.indexOf(s.keyCode)!==-1;case"keydown":return s.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function mh(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var ta=!1;function xy(t,s){switch(t){case"compositionend":return mh(s);case"keypress":return s.which!==32?null:(uh=!0,dh);case"textInput":return t=s.data,t===dh&&uh?null:t;default:return null}}function py(t,s){if(ta)return t==="compositionend"||!Jo&&hh(t,s)?(t=nh(),Xl=Ko=Fr=null,ta=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(s.ctrlKey||s.altKey||s.metaKey)||s.ctrlKey&&s.altKey){if(s.char&&1=s)return{node:n,offset:s-t};t=i}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=jh(n)}}function Nh(t,s){return t&&s?t===s?!0:t&&t.nodeType===3?!1:s&&s.nodeType===3?Nh(t,s.parentNode):"contains"in t?t.contains(s):t.compareDocumentPosition?!!(t.compareDocumentPosition(s)&16):!1:!1}function wh(){for(var t=window,s=Ve();s instanceof t.HTMLIFrameElement;){try{var n=typeof s.contentWindow.location.href=="string"}catch{n=!1}if(n)t=s.contentWindow;else break;s=Ve(t.document)}return s}function tc(t){var s=t&&t.nodeName&&t.nodeName.toLowerCase();return s&&(s==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||s==="textarea"||t.contentEditable==="true")}function Cy(t){var s=wh(),n=t.focusedElem,i=t.selectionRange;if(s!==n&&n&&n.ownerDocument&&Nh(n.ownerDocument.documentElement,n)){if(i!==null&&tc(n)){if(s=i.start,t=i.end,t===void 0&&(t=s),"selectionStart"in n)n.selectionStart=s,n.selectionEnd=Math.min(t,n.value.length);else if(t=(s=n.ownerDocument||document)&&s.defaultView||window,t.getSelection){t=t.getSelection();var d=n.textContent.length,x=Math.min(i.start,d);i=i.end===void 0?x:Math.min(i.end,d),!t.extend&&x>i&&(d=i,i=x,x=d),d=bh(n,x);var S=bh(n,i);d&&S&&(t.rangeCount!==1||t.anchorNode!==d.node||t.anchorOffset!==d.offset||t.focusNode!==S.node||t.focusOffset!==S.offset)&&(s=s.createRange(),s.setStart(d.node,d.offset),t.removeAllRanges(),x>i?(t.addRange(s),t.extend(S.node,S.offset)):(s.setEnd(S.node,S.offset),t.addRange(s)))}}for(s=[],t=n;t=t.parentNode;)t.nodeType===1&&s.push({element:t,left:t.scrollLeft,top:t.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,sa=null,sc=null,nl=null,rc=!1;function Sh(t,s,n){var i=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;rc||sa==null||sa!==Ve(i)||(i=sa,"selectionStart"in i&&tc(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),nl&&rl(nl,i)||(nl=i,i=ai(sc,"onSelect"),0ia||(t.current=xc[ia],xc[ia]=null,ia--)}function ut(t,s){ia++,xc[ia]=t.current,t.current=s}var Ur={},Qt=Br(Ur),is=Br(!1),Pn=Ur;function oa(t,s){var n=t.type.contextTypes;if(!n)return Ur;var i=t.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===s)return i.__reactInternalMemoizedMaskedChildContext;var d={},x;for(x in n)d[x]=s[x];return i&&(t=t.stateNode,t.__reactInternalMemoizedUnmaskedChildContext=s,t.__reactInternalMemoizedMaskedChildContext=d),d}function os(t){return t=t.childContextTypes,t!=null}function ci(){gt(is),gt(Qt)}function zh(t,s,n){if(Qt.current!==Ur)throw Error(l(168));ut(Qt,s),ut(is,n)}function $h(t,s,n){var i=t.stateNode;if(s=s.childContextTypes,typeof i.getChildContext!="function")return n;i=i.getChildContext();for(var d in i)if(!(d in s))throw Error(l(108,Y(t)||"Unknown",d));return K({},n,i)}function di(t){return t=(t=t.stateNode)&&t.__reactInternalMemoizedMergedChildContext||Ur,Pn=Qt.current,ut(Qt,t),ut(is,is.current),!0}function Bh(t,s,n){var i=t.stateNode;if(!i)throw Error(l(169));n?(t=$h(t,s,Pn),i.__reactInternalMemoizedMergedChildContext=t,gt(is),gt(Qt),ut(Qt,t)):gt(is),ut(is,n)}var gr=null,ui=!1,pc=!1;function Uh(t){gr===null?gr=[t]:gr.push(t)}function Oy(t){ui=!0,Uh(t)}function Vr(){if(!pc&&gr!==null){pc=!0;var t=0,s=it;try{var n=gr;for(it=1;t>=S,d-=S,yr=1<<32-Bs(s)+d|n<Ue?(Wt=Fe,Fe=null):Wt=Fe.sibling;var rt=ue(q,Fe,ee[Ue],je);if(rt===null){Fe===null&&(Fe=Wt);break}t&&Fe&&rt.alternate===null&&s(q,Fe),W=x(rt,W,Ue),Oe===null?De=rt:Oe.sibling=rt,Oe=rt,Fe=Wt}if(Ue===ee.length)return n(q,Fe),bt&&Rn(q,Ue),De;if(Fe===null){for(;UeUe?(Wt=Fe,Fe=null):Wt=Fe.sibling;var Jr=ue(q,Fe,rt.value,je);if(Jr===null){Fe===null&&(Fe=Wt);break}t&&Fe&&Jr.alternate===null&&s(q,Fe),W=x(Jr,W,Ue),Oe===null?De=Jr:Oe.sibling=Jr,Oe=Jr,Fe=Wt}if(rt.done)return n(q,Fe),bt&&Rn(q,Ue),De;if(Fe===null){for(;!rt.done;Ue++,rt=ee.next())rt=ye(q,rt.value,je),rt!==null&&(W=x(rt,W,Ue),Oe===null?De=rt:Oe.sibling=rt,Oe=rt);return bt&&Rn(q,Ue),De}for(Fe=i(q,Fe);!rt.done;Ue++,rt=ee.next())rt=Te(Fe,q,Ue,rt.value,je),rt!==null&&(t&&rt.alternate!==null&&Fe.delete(rt.key===null?Ue:rt.key),W=x(rt,W,Ue),Oe===null?De=rt:Oe.sibling=rt,Oe=rt);return t&&Fe.forEach(function(gv){return s(q,gv)}),bt&&Rn(q,Ue),De}function It(q,W,ee,je){if(typeof ee=="object"&&ee!==null&&ee.type===_&&ee.key===null&&(ee=ee.props.children),typeof ee=="object"&&ee!==null){switch(ee.$$typeof){case U:e:{for(var De=ee.key,Oe=W;Oe!==null;){if(Oe.key===De){if(De=ee.type,De===_){if(Oe.tag===7){n(q,Oe.sibling),W=d(Oe,ee.props.children),W.return=q,q=W;break e}}else if(Oe.elementType===De||typeof De=="object"&&De!==null&&De.$$typeof===oe&&Yh(De)===Oe.type){n(q,Oe.sibling),W=d(Oe,ee.props),W.ref=dl(q,Oe,ee),W.return=q,q=W;break e}n(q,Oe);break}else s(q,Oe);Oe=Oe.sibling}ee.type===_?(W=Fn(ee.props.children,q.mode,je,ee.key),W.return=q,q=W):(je=zi(ee.type,ee.key,ee.props,null,q.mode,je),je.ref=dl(q,W,ee),je.return=q,q=je)}return S(q);case V:e:{for(Oe=ee.key;W!==null;){if(W.key===Oe)if(W.tag===4&&W.stateNode.containerInfo===ee.containerInfo&&W.stateNode.implementation===ee.implementation){n(q,W.sibling),W=d(W,ee.children||[]),W.return=q,q=W;break e}else{n(q,W);break}else s(q,W);W=W.sibling}W=md(ee,q.mode,je),W.return=q,q=W}return S(q);case oe:return Oe=ee._init,It(q,W,Oe(ee._payload),je)}if(ft(ee))return Ie(q,W,ee,je);if(ce(ee))return Ae(q,W,ee,je);xi(q,ee)}return typeof ee=="string"&&ee!==""||typeof ee=="number"?(ee=""+ee,W!==null&&W.tag===6?(n(q,W.sibling),W=d(W,ee),W.return=q,q=W):(n(q,W),W=hd(ee,q.mode,je),W.return=q,q=W),S(q)):n(q,W)}return It}var ha=Qh(!0),qh=Qh(!1),pi=Br(null),gi=null,ma=null,Nc=null;function wc(){Nc=ma=gi=null}function Sc(t){var s=pi.current;gt(pi),t._currentValue=s}function Cc(t,s,n){for(;t!==null;){var i=t.alternate;if((t.childLanes&s)!==s?(t.childLanes|=s,i!==null&&(i.childLanes|=s)):i!==null&&(i.childLanes&s)!==s&&(i.childLanes|=s),t===n)break;t=t.return}}function fa(t,s){gi=t,Nc=ma=null,t=t.dependencies,t!==null&&t.firstContext!==null&&((t.lanes&s)!==0&&(cs=!0),t.firstContext=null)}function Rs(t){var s=t._currentValue;if(Nc!==t)if(t={context:t,memoizedValue:s,next:null},ma===null){if(gi===null)throw Error(l(308));ma=t,gi.dependencies={lanes:0,firstContext:t}}else ma=ma.next=t;return s}var In=null;function kc(t){In===null?In=[t]:In.push(t)}function Xh(t,s,n,i){var d=s.interleaved;return d===null?(n.next=n,kc(s)):(n.next=d.next,d.next=n),s.interleaved=n,jr(t,i)}function jr(t,s){t.lanes|=s;var n=t.alternate;for(n!==null&&(n.lanes|=s),n=t,t=t.return;t!==null;)t.childLanes|=s,n=t.alternate,n!==null&&(n.childLanes|=s),n=t,t=t.return;return n.tag===3?n.stateNode:null}var Wr=!1;function Ec(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Jh(t,s){t=t.updateQueue,s.updateQueue===t&&(s.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,effects:t.effects})}function br(t,s){return{eventTime:t,lane:s,tag:0,payload:null,callback:null,next:null}}function Hr(t,s,n){var i=t.updateQueue;if(i===null)return null;if(i=i.shared,(st&2)!==0){var d=i.pending;return d===null?s.next=s:(s.next=d.next,d.next=s),i.pending=s,jr(t,n)}return d=i.interleaved,d===null?(s.next=s,kc(i)):(s.next=d.next,d.next=s),i.interleaved=s,jr(t,n)}function yi(t,s,n){if(s=s.updateQueue,s!==null&&(s=s.shared,(n&4194240)!==0)){var i=s.lanes;i&=t.pendingLanes,n|=i,s.lanes=n,Bo(t,n)}}function Zh(t,s){var n=t.updateQueue,i=t.alternate;if(i!==null&&(i=i.updateQueue,n===i)){var d=null,x=null;if(n=n.firstBaseUpdate,n!==null){do{var S={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};x===null?d=x=S:x=x.next=S,n=n.next}while(n!==null);x===null?d=x=s:x=x.next=s}else d=x=s;n={baseState:i.baseState,firstBaseUpdate:d,lastBaseUpdate:x,shared:i.shared,effects:i.effects},t.updateQueue=n;return}t=n.lastBaseUpdate,t===null?n.firstBaseUpdate=s:t.next=s,n.lastBaseUpdate=s}function vi(t,s,n,i){var d=t.updateQueue;Wr=!1;var x=d.firstBaseUpdate,S=d.lastBaseUpdate,M=d.shared.pending;if(M!==null){d.shared.pending=null;var $=M,re=$.next;$.next=null,S===null?x=re:S.next=re,S=$;var me=t.alternate;me!==null&&(me=me.updateQueue,M=me.lastBaseUpdate,M!==S&&(M===null?me.firstBaseUpdate=re:M.next=re,me.lastBaseUpdate=$))}if(x!==null){var ye=d.baseState;S=0,me=re=$=null,M=x;do{var ue=M.lane,Te=M.eventTime;if((i&ue)===ue){me!==null&&(me=me.next={eventTime:Te,lane:0,tag:M.tag,payload:M.payload,callback:M.callback,next:null});e:{var Ie=t,Ae=M;switch(ue=s,Te=n,Ae.tag){case 1:if(Ie=Ae.payload,typeof Ie=="function"){ye=Ie.call(Te,ye,ue);break e}ye=Ie;break e;case 3:Ie.flags=Ie.flags&-65537|128;case 0:if(Ie=Ae.payload,ue=typeof Ie=="function"?Ie.call(Te,ye,ue):Ie,ue==null)break e;ye=K({},ye,ue);break e;case 2:Wr=!0}}M.callback!==null&&M.lane!==0&&(t.flags|=64,ue=d.effects,ue===null?d.effects=[M]:ue.push(M))}else Te={eventTime:Te,lane:ue,tag:M.tag,payload:M.payload,callback:M.callback,next:null},me===null?(re=me=Te,$=ye):me=me.next=Te,S|=ue;if(M=M.next,M===null){if(M=d.shared.pending,M===null)break;ue=M,M=ue.next,ue.next=null,d.lastBaseUpdate=ue,d.shared.pending=null}}while(!0);if(me===null&&($=ye),d.baseState=$,d.firstBaseUpdate=re,d.lastBaseUpdate=me,s=d.shared.interleaved,s!==null){d=s;do S|=d.lane,d=d.next;while(d!==s)}else x===null&&(d.shared.lanes=0);An|=S,t.lanes=S,t.memoizedState=ye}}function em(t,s,n){if(t=s.effects,s.effects=null,t!==null)for(s=0;sn?n:4,t(!0);var i=_c.transition;_c.transition={};try{t(!1),s()}finally{it=n,_c.transition=i}}function vm(){return Is().memoizedState}function By(t,s,n){var i=Qr(t);if(n={lane:i,action:n,hasEagerState:!1,eagerState:null,next:null},jm(t))bm(s,n);else if(n=Xh(t,s,n,i),n!==null){var d=rs();Gs(n,t,i,d),Nm(n,s,i)}}function Uy(t,s,n){var i=Qr(t),d={lane:i,action:n,hasEagerState:!1,eagerState:null,next:null};if(jm(t))bm(s,d);else{var x=t.alternate;if(t.lanes===0&&(x===null||x.lanes===0)&&(x=s.lastRenderedReducer,x!==null))try{var S=s.lastRenderedState,M=x(S,n);if(d.hasEagerState=!0,d.eagerState=M,Us(M,S)){var $=s.interleaved;$===null?(d.next=d,kc(s)):(d.next=$.next,$.next=d),s.interleaved=d;return}}catch{}finally{}n=Xh(t,s,d,i),n!==null&&(d=rs(),Gs(n,t,i,d),Nm(n,s,i))}}function jm(t){var s=t.alternate;return t===St||s!==null&&s===St}function bm(t,s){fl=Ni=!0;var n=t.pending;n===null?s.next=s:(s.next=n.next,n.next=s),t.pending=s}function Nm(t,s,n){if((n&4194240)!==0){var i=s.lanes;i&=t.pendingLanes,n|=i,s.lanes=n,Bo(t,n)}}var Ci={readContext:Rs,useCallback:qt,useContext:qt,useEffect:qt,useImperativeHandle:qt,useInsertionEffect:qt,useLayoutEffect:qt,useMemo:qt,useReducer:qt,useRef:qt,useState:qt,useDebugValue:qt,useDeferredValue:qt,useTransition:qt,useMutableSource:qt,useSyncExternalStore:qt,useId:qt,unstable_isNewReconciler:!1},Vy={readContext:Rs,useCallback:function(t,s){return nr().memoizedState=[t,s===void 0?null:s],t},useContext:Rs,useEffect:um,useImperativeHandle:function(t,s,n){return n=n!=null?n.concat([t]):null,wi(4194308,4,fm.bind(null,s,t),n)},useLayoutEffect:function(t,s){return wi(4194308,4,t,s)},useInsertionEffect:function(t,s){return wi(4,2,t,s)},useMemo:function(t,s){var n=nr();return s=s===void 0?null:s,t=t(),n.memoizedState=[t,s],t},useReducer:function(t,s,n){var i=nr();return s=n!==void 0?n(s):s,i.memoizedState=i.baseState=s,t={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:s},i.queue=t,t=t.dispatch=By.bind(null,St,t),[i.memoizedState,t]},useRef:function(t){var s=nr();return t={current:t},s.memoizedState=t},useState:cm,useDebugValue:zc,useDeferredValue:function(t){return nr().memoizedState=t},useTransition:function(){var t=cm(!1),s=t[0];return t=$y.bind(null,t[1]),nr().memoizedState=t,[s,t]},useMutableSource:function(){},useSyncExternalStore:function(t,s,n){var i=St,d=nr();if(bt){if(n===void 0)throw Error(l(407));n=n()}else{if(n=s(),Vt===null)throw Error(l(349));(Mn&30)!==0||nm(i,s,n)}d.memoizedState=n;var x={value:n,getSnapshot:s};return d.queue=x,um(lm.bind(null,i,x,t),[t]),i.flags|=2048,gl(9,am.bind(null,i,x,n,s),void 0,null),n},useId:function(){var t=nr(),s=Vt.identifierPrefix;if(bt){var n=vr,i=yr;n=(i&~(1<<32-Bs(i)-1)).toString(32)+n,s=":"+s+"R"+n,n=xl++,0M||d[C]!==x[M]){var B=` +`+d[C].replace(" at new "," at ");return t.displayName&&B.includes("")&&(B=B.replace("",t.displayName)),B}while(1<=C&&0<=M);break}}}finally{L=!1,Error.prepareStackTrace=n}return(t=t?t.displayName||t.name:"")?F(t):""}function G(t){switch(t.tag){case 5:return F(t.type);case 16:return F("Lazy");case 13:return F("Suspense");case 19:return F("SuspenseList");case 0:case 2:case 15:return t=Z(t.type,!1),t;case 11:return t=Z(t.type.render,!1),t;case 1:return t=Z(t.type,!0),t;default:return""}}function de(t){if(t==null)return null;if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case I:return"Fragment";case V:return"Portal";case E:return"Profiler";case R:return"StrictMode";case q:return"Suspense";case se:return"SuspenseList"}if(typeof t=="object")switch(t.$$typeof){case ne:return(t.displayName||"Context")+".Consumer";case Y:return(t._context.displayName||"Context")+".Provider";case ae:var s=t.render;return t=t.displayName,t||(t=s.displayName||s.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case H:return s=t.displayName||null,s!==null?s:de(t.type)||"Memo";case ie:s=t._payload,t=t._init;try{return de(t(s))}catch{}}return null}function Q(t){var s=t.type;switch(t.tag){case 24:return"Cache";case 9:return(s.displayName||"Context")+".Consumer";case 10:return(s._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return t=s.render,t=t.displayName||t.name||"",s.displayName||(t!==""?"ForwardRef("+t+")":"ForwardRef");case 7:return"Fragment";case 5:return s;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return de(s);case 8:return s===R?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof s=="function")return s.displayName||s.name||null;if(typeof s=="string")return s}return null}function ge(t){switch(typeof t){case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function Se(t){var s=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(s==="checkbox"||s==="radio")}function D(t){var s=Se(t)?"checked":"value",n=Object.getOwnPropertyDescriptor(t.constructor.prototype,s),i=""+t[s];if(!t.hasOwnProperty(s)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var d=n.get,x=n.set;return Object.defineProperty(t,s,{configurable:!0,get:function(){return d.call(this)},set:function(C){i=""+C,x.call(this,C)}}),Object.defineProperty(t,s,{enumerable:n.enumerable}),{getValue:function(){return i},setValue:function(C){i=""+C},stopTracking:function(){t._valueTracker=null,delete t[s]}}}}function fe(t){t._valueTracker||(t._valueTracker=D(t))}function ke(t){if(!t)return!1;var s=t._valueTracker;if(!s)return!0;var n=s.getValue(),i="";return t&&(i=Se(t)?t.checked?"true":"false":t.value),t=i,t!==n?(s.setValue(t),!0):!1}function Ve(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}function We(t,s){var n=s.checked;return K({},s,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??t._wrapperState.initialChecked})}function Ye(t,s){var n=s.defaultValue==null?"":s.defaultValue,i=s.checked!=null?s.checked:s.defaultChecked;n=ge(s.value!=null?s.value:n),t._wrapperState={initialChecked:i,initialValue:n,controlled:s.type==="checkbox"||s.type==="radio"?s.checked!=null:s.value!=null}}function tt(t,s){s=s.checked,s!=null&&j(t,"checked",s,!1)}function ze(t,s){tt(t,s);var n=ge(s.value),i=s.type;if(n!=null)i==="number"?(n===0&&t.value===""||t.value!=n)&&(t.value=""+n):t.value!==""+n&&(t.value=""+n);else if(i==="submit"||i==="reset"){t.removeAttribute("value");return}s.hasOwnProperty("value")?xe(t,s.type,n):s.hasOwnProperty("defaultValue")&&xe(t,s.type,ge(s.defaultValue)),s.checked==null&&s.defaultChecked!=null&&(t.defaultChecked=!!s.defaultChecked)}function he(t,s,n){if(s.hasOwnProperty("value")||s.hasOwnProperty("defaultValue")){var i=s.type;if(!(i!=="submit"&&i!=="reset"||s.value!==void 0&&s.value!==null))return;s=""+t._wrapperState.initialValue,n||s===t.value||(t.value=s),t.defaultValue=s}n=t.name,n!==""&&(t.name=""),t.defaultChecked=!!t._wrapperState.initialChecked,n!==""&&(t.name=n)}function xe(t,s,n){(s!=="number"||Ve(t.ownerDocument)!==t)&&(n==null?t.defaultValue=""+t._wrapperState.initialValue:t.defaultValue!==""+n&&(t.defaultValue=""+n))}var ft=Array.isArray;function es(t,s,n,i){if(t=t.options,s){s={};for(var d=0;d"+s.valueOf().toString()+"",s=gs.firstChild;t.firstChild;)t.removeChild(t.firstChild);for(;s.firstChild;)t.appendChild(s.firstChild)}});function mr(t,s){if(s){var n=t.firstChild;if(n&&n===t.lastChild&&n.nodeType===3){n.nodeValue=s;return}}t.textContent=s}var Cs={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Gn=["Webkit","ms","Moz","O"];Object.keys(Cs).forEach(function(t){Gn.forEach(function(s){s=s+t.charAt(0).toUpperCase()+t.substring(1),Cs[s]=Cs[t]})});function Yn(t,s,n){return s==null||typeof s=="boolean"||s===""?"":n||typeof s!="number"||s===0||Cs.hasOwnProperty(t)&&Cs[t]?(""+s).trim():s+"px"}function ks(t,s){t=t.style;for(var n in s)if(s.hasOwnProperty(n)){var i=n.indexOf("--")===0,d=Yn(n,s[n],i);n==="float"&&(n="cssFloat"),i?t.setProperty(n,d):t[n]=d}}var wn=K({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function fr(t,s){if(s){if(wn[t]&&(s.children!=null||s.dangerouslySetInnerHTML!=null))throw Error(l(137,t));if(s.dangerouslySetInnerHTML!=null){if(s.children!=null)throw Error(l(60));if(typeof s.dangerouslySetInnerHTML!="object"||!("__html"in s.dangerouslySetInnerHTML))throw Error(l(61))}if(s.style!=null&&typeof s.style!="object")throw Error(l(62))}}function ys(t,s){if(t.indexOf("-")===-1)return typeof s.is=="string";switch(t){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Ds=null;function Ls(t){return t=t.target||t.srcElement||window,t.correspondingUseElement&&(t=t.correspondingUseElement),t.nodeType===3?t.parentNode:t}var Sn=null,Es=null,Os=null;function Fs(t){if(t=cl(t)){if(typeof Sn!="function")throw Error(l(280));var s=t.stateNode;s&&(s=oi(s),Sn(t.stateNode,t.type,s))}}function Qn(t){Es?Os?Os.push(t):Os=[t]:Es=t}function qn(){if(Es){var t=Es,s=Os;if(Os=Es=null,Fs(t),s)for(t=0;t>>=0,t===0?32:31-(Ag(t)/Dg|0)|0}var Wl=64,Hl=4194304;function Ha(t){switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return t&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return t}}function Kl(t,s){var n=t.pendingLanes;if(n===0)return 0;var i=0,d=t.suspendedLanes,x=t.pingedLanes,C=n&268435455;if(C!==0){var M=C&~d;M!==0?i=Ha(M):(x&=C,x!==0&&(i=Ha(x)))}else C=n&~d,C!==0?i=Ha(C):x!==0&&(i=Ha(x));if(i===0)return 0;if(s!==0&&s!==i&&(s&d)===0&&(d=i&-i,x=s&-s,d>=x||d===16&&(x&4194240)!==0))return s;if((i&4)!==0&&(i|=n&16),s=t.entangledLanes,s!==0)for(t=t.entanglements,s&=i;0n;n++)s.push(t);return s}function Ka(t,s,n){t.pendingLanes|=s,s!==536870912&&(t.suspendedLanes=0,t.pingedLanes=0),t=t.eventTimes,s=31-Bs(s),t[s]=n}function zg(t,s){var n=t.pendingLanes&~s;t.pendingLanes=s,t.suspendedLanes=0,t.pingedLanes=0,t.expiredLanes&=s,t.mutableReadLanes&=s,t.entangledLanes&=s,s=t.entanglements;var i=t.eventTimes;for(t=t.expirationTimes;0=el),dh=" ",uh=!1;function hh(t,s){switch(t){case"keyup":return my.indexOf(s.keyCode)!==-1;case"keydown":return s.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function mh(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var sa=!1;function xy(t,s){switch(t){case"compositionend":return mh(s);case"keypress":return s.which!==32?null:(uh=!0,dh);case"textInput":return t=s.data,t===dh&&uh?null:t;default:return null}}function py(t,s){if(sa)return t==="compositionend"||!Jo&&hh(t,s)?(t=nh(),Xl=Ko=Fr=null,sa=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(s.ctrlKey||s.altKey||s.metaKey)||s.ctrlKey&&s.altKey){if(s.char&&1=s)return{node:n,offset:s-t};t=i}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=jh(n)}}function Nh(t,s){return t&&s?t===s?!0:t&&t.nodeType===3?!1:s&&s.nodeType===3?Nh(t,s.parentNode):"contains"in t?t.contains(s):t.compareDocumentPosition?!!(t.compareDocumentPosition(s)&16):!1:!1}function wh(){for(var t=window,s=Ve();s instanceof t.HTMLIFrameElement;){try{var n=typeof s.contentWindow.location.href=="string"}catch{n=!1}if(n)t=s.contentWindow;else break;s=Ve(t.document)}return s}function tc(t){var s=t&&t.nodeName&&t.nodeName.toLowerCase();return s&&(s==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||s==="textarea"||t.contentEditable==="true")}function Cy(t){var s=wh(),n=t.focusedElem,i=t.selectionRange;if(s!==n&&n&&n.ownerDocument&&Nh(n.ownerDocument.documentElement,n)){if(i!==null&&tc(n)){if(s=i.start,t=i.end,t===void 0&&(t=s),"selectionStart"in n)n.selectionStart=s,n.selectionEnd=Math.min(t,n.value.length);else if(t=(s=n.ownerDocument||document)&&s.defaultView||window,t.getSelection){t=t.getSelection();var d=n.textContent.length,x=Math.min(i.start,d);i=i.end===void 0?x:Math.min(i.end,d),!t.extend&&x>i&&(d=i,i=x,x=d),d=bh(n,x);var C=bh(n,i);d&&C&&(t.rangeCount!==1||t.anchorNode!==d.node||t.anchorOffset!==d.offset||t.focusNode!==C.node||t.focusOffset!==C.offset)&&(s=s.createRange(),s.setStart(d.node,d.offset),t.removeAllRanges(),x>i?(t.addRange(s),t.extend(C.node,C.offset)):(s.setEnd(C.node,C.offset),t.addRange(s)))}}for(s=[],t=n;t=t.parentNode;)t.nodeType===1&&s.push({element:t,left:t.scrollLeft,top:t.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,ra=null,sc=null,nl=null,rc=!1;function Sh(t,s,n){var i=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;rc||ra==null||ra!==Ve(i)||(i=ra,"selectionStart"in i&&tc(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),nl&&rl(nl,i)||(nl=i,i=ai(sc,"onSelect"),0oa||(t.current=xc[oa],xc[oa]=null,oa--)}function ut(t,s){oa++,xc[oa]=t.current,t.current=s}var Ur={},Qt=Br(Ur),is=Br(!1),Tn=Ur;function ca(t,s){var n=t.type.contextTypes;if(!n)return Ur;var i=t.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===s)return i.__reactInternalMemoizedMaskedChildContext;var d={},x;for(x in n)d[x]=s[x];return i&&(t=t.stateNode,t.__reactInternalMemoizedUnmaskedChildContext=s,t.__reactInternalMemoizedMaskedChildContext=d),d}function os(t){return t=t.childContextTypes,t!=null}function ci(){gt(is),gt(Qt)}function zh(t,s,n){if(Qt.current!==Ur)throw Error(l(168));ut(Qt,s),ut(is,n)}function $h(t,s,n){var i=t.stateNode;if(s=s.childContextTypes,typeof i.getChildContext!="function")return n;i=i.getChildContext();for(var d in i)if(!(d in s))throw Error(l(108,Q(t)||"Unknown",d));return K({},n,i)}function di(t){return t=(t=t.stateNode)&&t.__reactInternalMemoizedMergedChildContext||Ur,Tn=Qt.current,ut(Qt,t),ut(is,is.current),!0}function Bh(t,s,n){var i=t.stateNode;if(!i)throw Error(l(169));n?(t=$h(t,s,Tn),i.__reactInternalMemoizedMergedChildContext=t,gt(is),gt(Qt),ut(Qt,t)):gt(is),ut(is,n)}var gr=null,ui=!1,pc=!1;function Uh(t){gr===null?gr=[t]:gr.push(t)}function Oy(t){ui=!0,Uh(t)}function Vr(){if(!pc&&gr!==null){pc=!0;var t=0,s=it;try{var n=gr;for(it=1;t>=C,d-=C,yr=1<<32-Bs(s)+d|n<Ue?(Wt=Fe,Fe=null):Wt=Fe.sibling;var rt=ue(X,Fe,ee[Ue],je);if(rt===null){Fe===null&&(Fe=Wt);break}t&&Fe&&rt.alternate===null&&s(X,Fe),W=x(rt,W,Ue),Oe===null?De=rt:Oe.sibling=rt,Oe=rt,Fe=Wt}if(Ue===ee.length)return n(X,Fe),bt&&In(X,Ue),De;if(Fe===null){for(;UeUe?(Wt=Fe,Fe=null):Wt=Fe.sibling;var Jr=ue(X,Fe,rt.value,je);if(Jr===null){Fe===null&&(Fe=Wt);break}t&&Fe&&Jr.alternate===null&&s(X,Fe),W=x(Jr,W,Ue),Oe===null?De=Jr:Oe.sibling=Jr,Oe=Jr,Fe=Wt}if(rt.done)return n(X,Fe),bt&&In(X,Ue),De;if(Fe===null){for(;!rt.done;Ue++,rt=ee.next())rt=ye(X,rt.value,je),rt!==null&&(W=x(rt,W,Ue),Oe===null?De=rt:Oe.sibling=rt,Oe=rt);return bt&&In(X,Ue),De}for(Fe=i(X,Fe);!rt.done;Ue++,rt=ee.next())rt=Te(Fe,X,Ue,rt.value,je),rt!==null&&(t&&rt.alternate!==null&&Fe.delete(rt.key===null?Ue:rt.key),W=x(rt,W,Ue),Oe===null?De=rt:Oe.sibling=rt,Oe=rt);return t&&Fe.forEach(function(gv){return s(X,gv)}),bt&&In(X,Ue),De}function It(X,W,ee,je){if(typeof ee=="object"&&ee!==null&&ee.type===I&&ee.key===null&&(ee=ee.props.children),typeof ee=="object"&&ee!==null){switch(ee.$$typeof){case O:e:{for(var De=ee.key,Oe=W;Oe!==null;){if(Oe.key===De){if(De=ee.type,De===I){if(Oe.tag===7){n(X,Oe.sibling),W=d(Oe,ee.props.children),W.return=X,X=W;break e}}else if(Oe.elementType===De||typeof De=="object"&&De!==null&&De.$$typeof===ie&&Yh(De)===Oe.type){n(X,Oe.sibling),W=d(Oe,ee.props),W.ref=dl(X,Oe,ee),W.return=X,X=W;break e}n(X,Oe);break}else s(X,Oe);Oe=Oe.sibling}ee.type===I?(W=zn(ee.props.children,X.mode,je,ee.key),W.return=X,X=W):(je=zi(ee.type,ee.key,ee.props,null,X.mode,je),je.ref=dl(X,W,ee),je.return=X,X=je)}return C(X);case V:e:{for(Oe=ee.key;W!==null;){if(W.key===Oe)if(W.tag===4&&W.stateNode.containerInfo===ee.containerInfo&&W.stateNode.implementation===ee.implementation){n(X,W.sibling),W=d(W,ee.children||[]),W.return=X,X=W;break e}else{n(X,W);break}else s(X,W);W=W.sibling}W=md(ee,X.mode,je),W.return=X,X=W}return C(X);case ie:return Oe=ee._init,It(X,W,Oe(ee._payload),je)}if(ft(ee))return Ie(X,W,ee,je);if(ce(ee))return Ae(X,W,ee,je);xi(X,ee)}return typeof ee=="string"&&ee!==""||typeof ee=="number"?(ee=""+ee,W!==null&&W.tag===6?(n(X,W.sibling),W=d(W,ee),W.return=X,X=W):(n(X,W),W=hd(ee,X.mode,je),W.return=X,X=W),C(X)):n(X,W)}return It}var ma=Qh(!0),qh=Qh(!1),pi=Br(null),gi=null,fa=null,Nc=null;function wc(){Nc=fa=gi=null}function Sc(t){var s=pi.current;gt(pi),t._currentValue=s}function Cc(t,s,n){for(;t!==null;){var i=t.alternate;if((t.childLanes&s)!==s?(t.childLanes|=s,i!==null&&(i.childLanes|=s)):i!==null&&(i.childLanes&s)!==s&&(i.childLanes|=s),t===n)break;t=t.return}}function xa(t,s){gi=t,Nc=fa=null,t=t.dependencies,t!==null&&t.firstContext!==null&&((t.lanes&s)!==0&&(cs=!0),t.firstContext=null)}function Rs(t){var s=t._currentValue;if(Nc!==t)if(t={context:t,memoizedValue:s,next:null},fa===null){if(gi===null)throw Error(l(308));fa=t,gi.dependencies={lanes:0,firstContext:t}}else fa=fa.next=t;return s}var _n=null;function kc(t){_n===null?_n=[t]:_n.push(t)}function Xh(t,s,n,i){var d=s.interleaved;return d===null?(n.next=n,kc(s)):(n.next=d.next,d.next=n),s.interleaved=n,jr(t,i)}function jr(t,s){t.lanes|=s;var n=t.alternate;for(n!==null&&(n.lanes|=s),n=t,t=t.return;t!==null;)t.childLanes|=s,n=t.alternate,n!==null&&(n.childLanes|=s),n=t,t=t.return;return n.tag===3?n.stateNode:null}var Wr=!1;function Ec(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Jh(t,s){t=t.updateQueue,s.updateQueue===t&&(s.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,effects:t.effects})}function br(t,s){return{eventTime:t,lane:s,tag:0,payload:null,callback:null,next:null}}function Hr(t,s,n){var i=t.updateQueue;if(i===null)return null;if(i=i.shared,(st&2)!==0){var d=i.pending;return d===null?s.next=s:(s.next=d.next,d.next=s),i.pending=s,jr(t,n)}return d=i.interleaved,d===null?(s.next=s,kc(i)):(s.next=d.next,d.next=s),i.interleaved=s,jr(t,n)}function yi(t,s,n){if(s=s.updateQueue,s!==null&&(s=s.shared,(n&4194240)!==0)){var i=s.lanes;i&=t.pendingLanes,n|=i,s.lanes=n,Bo(t,n)}}function Zh(t,s){var n=t.updateQueue,i=t.alternate;if(i!==null&&(i=i.updateQueue,n===i)){var d=null,x=null;if(n=n.firstBaseUpdate,n!==null){do{var C={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};x===null?d=x=C:x=x.next=C,n=n.next}while(n!==null);x===null?d=x=s:x=x.next=s}else d=x=s;n={baseState:i.baseState,firstBaseUpdate:d,lastBaseUpdate:x,shared:i.shared,effects:i.effects},t.updateQueue=n;return}t=n.lastBaseUpdate,t===null?n.firstBaseUpdate=s:t.next=s,n.lastBaseUpdate=s}function vi(t,s,n,i){var d=t.updateQueue;Wr=!1;var x=d.firstBaseUpdate,C=d.lastBaseUpdate,M=d.shared.pending;if(M!==null){d.shared.pending=null;var B=M,re=B.next;B.next=null,C===null?x=re:C.next=re,C=B;var me=t.alternate;me!==null&&(me=me.updateQueue,M=me.lastBaseUpdate,M!==C&&(M===null?me.firstBaseUpdate=re:M.next=re,me.lastBaseUpdate=B))}if(x!==null){var ye=d.baseState;C=0,me=re=B=null,M=x;do{var ue=M.lane,Te=M.eventTime;if((i&ue)===ue){me!==null&&(me=me.next={eventTime:Te,lane:0,tag:M.tag,payload:M.payload,callback:M.callback,next:null});e:{var Ie=t,Ae=M;switch(ue=s,Te=n,Ae.tag){case 1:if(Ie=Ae.payload,typeof Ie=="function"){ye=Ie.call(Te,ye,ue);break e}ye=Ie;break e;case 3:Ie.flags=Ie.flags&-65537|128;case 0:if(Ie=Ae.payload,ue=typeof Ie=="function"?Ie.call(Te,ye,ue):Ie,ue==null)break e;ye=K({},ye,ue);break e;case 2:Wr=!0}}M.callback!==null&&M.lane!==0&&(t.flags|=64,ue=d.effects,ue===null?d.effects=[M]:ue.push(M))}else Te={eventTime:Te,lane:ue,tag:M.tag,payload:M.payload,callback:M.callback,next:null},me===null?(re=me=Te,B=ye):me=me.next=Te,C|=ue;if(M=M.next,M===null){if(M=d.shared.pending,M===null)break;ue=M,M=ue.next,ue.next=null,d.lastBaseUpdate=ue,d.shared.pending=null}}while(!0);if(me===null&&(B=ye),d.baseState=B,d.firstBaseUpdate=re,d.lastBaseUpdate=me,s=d.shared.interleaved,s!==null){d=s;do C|=d.lane,d=d.next;while(d!==s)}else x===null&&(d.shared.lanes=0);Dn|=C,t.lanes=C,t.memoizedState=ye}}function em(t,s,n){if(t=s.effects,s.effects=null,t!==null)for(s=0;sn?n:4,t(!0);var i=_c.transition;_c.transition={};try{t(!1),s()}finally{it=n,_c.transition=i}}function vm(){return Is().memoizedState}function By(t,s,n){var i=Qr(t);if(n={lane:i,action:n,hasEagerState:!1,eagerState:null,next:null},jm(t))bm(s,n);else if(n=Xh(t,s,n,i),n!==null){var d=rs();Gs(n,t,i,d),Nm(n,s,i)}}function Uy(t,s,n){var i=Qr(t),d={lane:i,action:n,hasEagerState:!1,eagerState:null,next:null};if(jm(t))bm(s,d);else{var x=t.alternate;if(t.lanes===0&&(x===null||x.lanes===0)&&(x=s.lastRenderedReducer,x!==null))try{var C=s.lastRenderedState,M=x(C,n);if(d.hasEagerState=!0,d.eagerState=M,Us(M,C)){var B=s.interleaved;B===null?(d.next=d,kc(s)):(d.next=B.next,B.next=d),s.interleaved=d;return}}catch{}finally{}n=Xh(t,s,d,i),n!==null&&(d=rs(),Gs(n,t,i,d),Nm(n,s,i))}}function jm(t){var s=t.alternate;return t===St||s!==null&&s===St}function bm(t,s){fl=Ni=!0;var n=t.pending;n===null?s.next=s:(s.next=n.next,n.next=s),t.pending=s}function Nm(t,s,n){if((n&4194240)!==0){var i=s.lanes;i&=t.pendingLanes,n|=i,s.lanes=n,Bo(t,n)}}var Ci={readContext:Rs,useCallback:qt,useContext:qt,useEffect:qt,useImperativeHandle:qt,useInsertionEffect:qt,useLayoutEffect:qt,useMemo:qt,useReducer:qt,useRef:qt,useState:qt,useDebugValue:qt,useDeferredValue:qt,useTransition:qt,useMutableSource:qt,useSyncExternalStore:qt,useId:qt,unstable_isNewReconciler:!1},Vy={readContext:Rs,useCallback:function(t,s){return nr().memoizedState=[t,s===void 0?null:s],t},useContext:Rs,useEffect:um,useImperativeHandle:function(t,s,n){return n=n!=null?n.concat([t]):null,wi(4194308,4,fm.bind(null,s,t),n)},useLayoutEffect:function(t,s){return wi(4194308,4,t,s)},useInsertionEffect:function(t,s){return wi(4,2,t,s)},useMemo:function(t,s){var n=nr();return s=s===void 0?null:s,t=t(),n.memoizedState=[t,s],t},useReducer:function(t,s,n){var i=nr();return s=n!==void 0?n(s):s,i.memoizedState=i.baseState=s,t={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:s},i.queue=t,t=t.dispatch=By.bind(null,St,t),[i.memoizedState,t]},useRef:function(t){var s=nr();return t={current:t},s.memoizedState=t},useState:cm,useDebugValue:zc,useDeferredValue:function(t){return nr().memoizedState=t},useTransition:function(){var t=cm(!1),s=t[0];return t=$y.bind(null,t[1]),nr().memoizedState=t,[s,t]},useMutableSource:function(){},useSyncExternalStore:function(t,s,n){var i=St,d=nr();if(bt){if(n===void 0)throw Error(l(407));n=n()}else{if(n=s(),Vt===null)throw Error(l(349));(An&30)!==0||nm(i,s,n)}d.memoizedState=n;var x={value:n,getSnapshot:s};return d.queue=x,um(lm.bind(null,i,x,t),[t]),i.flags|=2048,gl(9,am.bind(null,i,x,n,s),void 0,null),n},useId:function(){var t=nr(),s=Vt.identifierPrefix;if(bt){var n=vr,i=yr;n=(i&~(1<<32-Bs(i)-1)).toString(32)+n,s=":"+s+"R"+n,n=xl++,0<\/script>",t=t.removeChild(t.firstChild)):typeof i.is=="string"?t=S.createElement(n,{is:i.is}):(t=S.createElement(n),n==="select"&&(S=t,i.multiple?S.multiple=!0:i.size&&(S.size=i.size))):t=S.createElementNS(t,n),t[sr]=s,t[ol]=i,Um(t,s,!1,!1),s.stateNode=t;e:{switch(S=ys(n,i),n){case"dialog":pt("cancel",t),pt("close",t),d=i;break;case"iframe":case"object":case"embed":pt("load",t),d=i;break;case"video":case"audio":for(d=0;dva&&(s.flags|=128,i=!0,yl(x,!1),s.lanes=4194304)}else{if(!i)if(t=ji(S),t!==null){if(s.flags|=128,i=!0,n=t.updateQueue,n!==null&&(s.updateQueue=n,s.flags|=4),yl(x,!0),x.tail===null&&x.tailMode==="hidden"&&!S.alternate&&!bt)return Xt(s),null}else 2*dt()-x.renderingStartTime>va&&n!==1073741824&&(s.flags|=128,i=!0,yl(x,!1),s.lanes=4194304);x.isBackwards?(S.sibling=s.child,s.child=S):(n=x.last,n!==null?n.sibling=S:s.child=S,x.last=S)}return x.tail!==null?(s=x.tail,x.rendering=s,x.tail=s.sibling,x.renderingStartTime=dt(),s.sibling=null,n=wt.current,ut(wt,i?n&1|2:n&1),s):(Xt(s),null);case 22:case 23:return cd(),i=s.memoizedState!==null,t!==null&&t.memoizedState!==null!==i&&(s.flags|=8192),i&&(s.mode&1)!==0?(Ns&1073741824)!==0&&(Xt(s),s.subtreeFlags&6&&(s.flags|=8192)):Xt(s),null;case 24:return null;case 25:return null}throw Error(l(156,s.tag))}function Xy(t,s){switch(yc(s),s.tag){case 1:return os(s.type)&&ci(),t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 3:return xa(),gt(is),gt(Qt),Ic(),t=s.flags,(t&65536)!==0&&(t&128)===0?(s.flags=t&-65537|128,s):null;case 5:return Tc(s),null;case 13:if(gt(wt),t=s.memoizedState,t!==null&&t.dehydrated!==null){if(s.alternate===null)throw Error(l(340));ua()}return t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 19:return gt(wt),null;case 4:return xa(),null;case 10:return Sc(s.type._context),null;case 22:case 23:return cd(),null;case 24:return null;default:return null}}var Ti=!1,Jt=!1,Jy=typeof WeakSet=="function"?WeakSet:Set,Re=null;function ga(t,s){var n=t.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(i){Tt(t,s,i)}else n.current=null}function Xc(t,s,n){try{n()}catch(i){Tt(t,s,i)}}var Hm=!1;function Zy(t,s){if(cc=Ql,t=wh(),tc(t)){if("selectionStart"in t)var n={start:t.selectionStart,end:t.selectionEnd};else e:{n=(n=t.ownerDocument)&&n.defaultView||window;var i=n.getSelection&&n.getSelection();if(i&&i.rangeCount!==0){n=i.anchorNode;var d=i.anchorOffset,x=i.focusNode;i=i.focusOffset;try{n.nodeType,x.nodeType}catch{n=null;break e}var S=0,M=-1,$=-1,re=0,me=0,ye=t,ue=null;t:for(;;){for(var Te;ye!==n||d!==0&&ye.nodeType!==3||(M=S+d),ye!==x||i!==0&&ye.nodeType!==3||($=S+i),ye.nodeType===3&&(S+=ye.nodeValue.length),(Te=ye.firstChild)!==null;)ue=ye,ye=Te;for(;;){if(ye===t)break t;if(ue===n&&++re===d&&(M=S),ue===x&&++me===i&&($=S),(Te=ye.nextSibling)!==null)break;ye=ue,ue=ye.parentNode}ye=Te}n=M===-1||$===-1?null:{start:M,end:$}}else n=null}n=n||{start:0,end:0}}else n=null;for(dc={focusedElem:t,selectionRange:n},Ql=!1,Re=s;Re!==null;)if(s=Re,t=s.child,(s.subtreeFlags&1028)!==0&&t!==null)t.return=s,Re=t;else for(;Re!==null;){s=Re;try{var Ie=s.alternate;if((s.flags&1024)!==0)switch(s.tag){case 0:case 11:case 15:break;case 1:if(Ie!==null){var Ae=Ie.memoizedProps,It=Ie.memoizedState,q=s.stateNode,W=q.getSnapshotBeforeUpdate(s.elementType===s.type?Ae:Ws(s.type,Ae),It);q.__reactInternalSnapshotBeforeUpdate=W}break;case 3:var ee=s.stateNode.containerInfo;ee.nodeType===1?ee.textContent="":ee.nodeType===9&&ee.documentElement&&ee.removeChild(ee.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(l(163))}}catch(je){Tt(s,s.return,je)}if(t=s.sibling,t!==null){t.return=s.return,Re=t;break}Re=s.return}return Ie=Hm,Hm=!1,Ie}function vl(t,s,n){var i=s.updateQueue;if(i=i!==null?i.lastEffect:null,i!==null){var d=i=i.next;do{if((d.tag&t)===t){var x=d.destroy;d.destroy=void 0,x!==void 0&&Xc(s,n,x)}d=d.next}while(d!==i)}}function Ri(t,s){if(s=s.updateQueue,s=s!==null?s.lastEffect:null,s!==null){var n=s=s.next;do{if((n.tag&t)===t){var i=n.create;n.destroy=i()}n=n.next}while(n!==s)}}function Jc(t){var s=t.ref;if(s!==null){var n=t.stateNode;switch(t.tag){case 5:t=n;break;default:t=n}typeof s=="function"?s(t):s.current=t}}function Km(t){var s=t.alternate;s!==null&&(t.alternate=null,Km(s)),t.child=null,t.deletions=null,t.sibling=null,t.tag===5&&(s=t.stateNode,s!==null&&(delete s[sr],delete s[ol],delete s[fc],delete s[Dy],delete s[Ly])),t.stateNode=null,t.return=null,t.dependencies=null,t.memoizedProps=null,t.memoizedState=null,t.pendingProps=null,t.stateNode=null,t.updateQueue=null}function Gm(t){return t.tag===5||t.tag===3||t.tag===4}function Ym(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||Gm(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function Zc(t,s,n){var i=t.tag;if(i===5||i===6)t=t.stateNode,s?n.nodeType===8?n.parentNode.insertBefore(t,s):n.insertBefore(t,s):(n.nodeType===8?(s=n.parentNode,s.insertBefore(t,n)):(s=n,s.appendChild(t)),n=n._reactRootContainer,n!=null||s.onclick!==null||(s.onclick=ii));else if(i!==4&&(t=t.child,t!==null))for(Zc(t,s,n),t=t.sibling;t!==null;)Zc(t,s,n),t=t.sibling}function ed(t,s,n){var i=t.tag;if(i===5||i===6)t=t.stateNode,s?n.insertBefore(t,s):n.appendChild(t);else if(i!==4&&(t=t.child,t!==null))for(ed(t,s,n),t=t.sibling;t!==null;)ed(t,s,n),t=t.sibling}var Kt=null,Hs=!1;function Kr(t,s,n){for(n=n.child;n!==null;)Qm(t,s,n),n=n.sibling}function Qm(t,s,n){if(tr&&typeof tr.onCommitFiberUnmount=="function")try{tr.onCommitFiberUnmount(Vl,n)}catch{}switch(n.tag){case 5:Jt||ga(n,s);case 6:var i=Kt,d=Hs;Kt=null,Kr(t,s,n),Kt=i,Hs=d,Kt!==null&&(Hs?(t=Kt,n=n.stateNode,t.nodeType===8?t.parentNode.removeChild(n):t.removeChild(n)):Kt.removeChild(n.stateNode));break;case 18:Kt!==null&&(Hs?(t=Kt,n=n.stateNode,t.nodeType===8?mc(t.parentNode,n):t.nodeType===1&&mc(t,n),Xa(t)):mc(Kt,n.stateNode));break;case 4:i=Kt,d=Hs,Kt=n.stateNode.containerInfo,Hs=!0,Kr(t,s,n),Kt=i,Hs=d;break;case 0:case 11:case 14:case 15:if(!Jt&&(i=n.updateQueue,i!==null&&(i=i.lastEffect,i!==null))){d=i=i.next;do{var x=d,S=x.destroy;x=x.tag,S!==void 0&&((x&2)!==0||(x&4)!==0)&&Xc(n,s,S),d=d.next}while(d!==i)}Kr(t,s,n);break;case 1:if(!Jt&&(ga(n,s),i=n.stateNode,typeof i.componentWillUnmount=="function"))try{i.props=n.memoizedProps,i.state=n.memoizedState,i.componentWillUnmount()}catch(M){Tt(n,s,M)}Kr(t,s,n);break;case 21:Kr(t,s,n);break;case 22:n.mode&1?(Jt=(i=Jt)||n.memoizedState!==null,Kr(t,s,n),Jt=i):Kr(t,s,n);break;default:Kr(t,s,n)}}function qm(t){var s=t.updateQueue;if(s!==null){t.updateQueue=null;var n=t.stateNode;n===null&&(n=t.stateNode=new Jy),s.forEach(function(i){var d=ov.bind(null,t,i);n.has(i)||(n.add(i),i.then(d,d))})}}function Ks(t,s){var n=s.deletions;if(n!==null)for(var i=0;id&&(d=S),i&=~x}if(i=d,i=dt()-i,i=(120>i?120:480>i?480:1080>i?1080:1920>i?1920:3e3>i?3e3:4320>i?4320:1960*tv(i/1960))-i,10t?16:t,Yr===null)var i=!1;else{if(t=Yr,Yr=null,Di=0,(st&6)!==0)throw Error(l(331));var d=st;for(st|=4,Re=t.current;Re!==null;){var x=Re,S=x.child;if((Re.flags&16)!==0){var M=x.deletions;if(M!==null){for(var $=0;$dt()-rd?Ln(t,0):sd|=n),us(t,s)}function df(t,s){s===0&&((t.mode&1)===0?s=1:(s=Hl,Hl<<=1,(Hl&130023424)===0&&(Hl=4194304)));var n=rs();t=jr(t,s),t!==null&&(Ka(t,s,n),us(t,n))}function iv(t){var s=t.memoizedState,n=0;s!==null&&(n=s.retryLane),df(t,n)}function ov(t,s){var n=0;switch(t.tag){case 13:var i=t.stateNode,d=t.memoizedState;d!==null&&(n=d.retryLane);break;case 19:i=t.stateNode;break;default:throw Error(l(314))}i!==null&&i.delete(s),df(t,n)}var uf;uf=function(t,s,n){if(t!==null)if(t.memoizedProps!==s.pendingProps||is.current)cs=!0;else{if((t.lanes&n)===0&&(s.flags&128)===0)return cs=!1,Qy(t,s,n);cs=(t.flags&131072)!==0}else cs=!1,bt&&(s.flags&1048576)!==0&&Vh(s,mi,s.index);switch(s.lanes=0,s.tag){case 2:var i=s.type;Pi(t,s),t=s.pendingProps;var d=oa(s,Qt.current);fa(s,n),d=Ac(null,s,i,t,d,n);var x=Dc();return s.flags|=1,typeof d=="object"&&d!==null&&typeof d.render=="function"&&d.$$typeof===void 0?(s.tag=1,s.memoizedState=null,s.updateQueue=null,os(i)?(x=!0,di(s)):x=!1,s.memoizedState=d.state!==null&&d.state!==void 0?d.state:null,Ec(s),d.updater=ki,s.stateNode=d,d._reactInternals=s,Bc(s,i,t,n),s=Hc(null,s,i,!0,x,n)):(s.tag=0,bt&&x&&gc(s),ss(null,s,d,n),s=s.child),s;case 16:i=s.elementType;e:{switch(Pi(t,s),t=s.pendingProps,d=i._init,i=d(i._payload),s.type=i,d=s.tag=dv(i),t=Ws(i,t),d){case 0:s=Wc(null,s,i,t,n);break e;case 1:s=Lm(null,s,i,t,n);break e;case 11:s=Im(null,s,i,t,n);break e;case 14:s=_m(null,s,i,Ws(i.type,t),n);break e}throw Error(l(306,i,""))}return s;case 0:return i=s.type,d=s.pendingProps,d=s.elementType===i?d:Ws(i,d),Wc(t,s,i,d,n);case 1:return i=s.type,d=s.pendingProps,d=s.elementType===i?d:Ws(i,d),Lm(t,s,i,d,n);case 3:e:{if(Om(s),t===null)throw Error(l(387));i=s.pendingProps,x=s.memoizedState,d=x.element,Jh(t,s),vi(s,i,null,n);var S=s.memoizedState;if(i=S.element,x.isDehydrated)if(x={element:i,isDehydrated:!1,cache:S.cache,pendingSuspenseBoundaries:S.pendingSuspenseBoundaries,transitions:S.transitions},s.updateQueue.baseState=x,s.memoizedState=x,s.flags&256){d=pa(Error(l(423)),s),s=Fm(t,s,i,n,d);break e}else if(i!==d){d=pa(Error(l(424)),s),s=Fm(t,s,i,n,d);break e}else for(bs=$r(s.stateNode.containerInfo.firstChild),js=s,bt=!0,Vs=null,n=qh(s,null,i,n),s.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(ua(),i===d){s=Nr(t,s,n);break e}ss(t,s,i,n)}s=s.child}return s;case 5:return tm(s),t===null&&jc(s),i=s.type,d=s.pendingProps,x=t!==null?t.memoizedProps:null,S=d.children,uc(i,d)?S=null:x!==null&&uc(i,x)&&(s.flags|=32),Dm(t,s),ss(t,s,S,n),s.child;case 6:return t===null&&jc(s),null;case 13:return zm(t,s,n);case 4:return Pc(s,s.stateNode.containerInfo),i=s.pendingProps,t===null?s.child=ha(s,null,i,n):ss(t,s,i,n),s.child;case 11:return i=s.type,d=s.pendingProps,d=s.elementType===i?d:Ws(i,d),Im(t,s,i,d,n);case 7:return ss(t,s,s.pendingProps,n),s.child;case 8:return ss(t,s,s.pendingProps.children,n),s.child;case 12:return ss(t,s,s.pendingProps.children,n),s.child;case 10:e:{if(i=s.type._context,d=s.pendingProps,x=s.memoizedProps,S=d.value,ut(pi,i._currentValue),i._currentValue=S,x!==null)if(Us(x.value,S)){if(x.children===d.children&&!is.current){s=Nr(t,s,n);break e}}else for(x=s.child,x!==null&&(x.return=s);x!==null;){var M=x.dependencies;if(M!==null){S=x.child;for(var $=M.firstContext;$!==null;){if($.context===i){if(x.tag===1){$=br(-1,n&-n),$.tag=2;var re=x.updateQueue;if(re!==null){re=re.shared;var me=re.pending;me===null?$.next=$:($.next=me.next,me.next=$),re.pending=$}}x.lanes|=n,$=x.alternate,$!==null&&($.lanes|=n),Cc(x.return,n,s),M.lanes|=n;break}$=$.next}}else if(x.tag===10)S=x.type===s.type?null:x.child;else if(x.tag===18){if(S=x.return,S===null)throw Error(l(341));S.lanes|=n,M=S.alternate,M!==null&&(M.lanes|=n),Cc(S,n,s),S=x.sibling}else S=x.child;if(S!==null)S.return=x;else for(S=x;S!==null;){if(S===s){S=null;break}if(x=S.sibling,x!==null){x.return=S.return,S=x;break}S=S.return}x=S}ss(t,s,d.children,n),s=s.child}return s;case 9:return d=s.type,i=s.pendingProps.children,fa(s,n),d=Rs(d),i=i(d),s.flags|=1,ss(t,s,i,n),s.child;case 14:return i=s.type,d=Ws(i,s.pendingProps),d=Ws(i.type,d),_m(t,s,i,d,n);case 15:return Mm(t,s,s.type,s.pendingProps,n);case 17:return i=s.type,d=s.pendingProps,d=s.elementType===i?d:Ws(i,d),Pi(t,s),s.tag=1,os(i)?(t=!0,di(s)):t=!1,fa(s,n),Sm(s,i,d),Bc(s,i,d,n),Hc(null,s,i,!0,t,n);case 19:return Bm(t,s,n);case 22:return Am(t,s,n)}throw Error(l(156,s.tag))};function hf(t,s){return z(t,s)}function cv(t,s,n,i){this.tag=t,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=s,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ms(t,s,n,i){return new cv(t,s,n,i)}function ud(t){return t=t.prototype,!(!t||!t.isReactComponent)}function dv(t){if(typeof t=="function")return ud(t)?1:0;if(t!=null){if(t=t.$$typeof,t===ae)return 11;if(t===H)return 14}return 2}function Xr(t,s){var n=t.alternate;return n===null?(n=Ms(t.tag,s,t.key,t.mode),n.elementType=t.elementType,n.type=t.type,n.stateNode=t.stateNode,n.alternate=t,t.alternate=n):(n.pendingProps=s,n.type=t.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=t.flags&14680064,n.childLanes=t.childLanes,n.lanes=t.lanes,n.child=t.child,n.memoizedProps=t.memoizedProps,n.memoizedState=t.memoizedState,n.updateQueue=t.updateQueue,s=t.dependencies,n.dependencies=s===null?null:{lanes:s.lanes,firstContext:s.firstContext},n.sibling=t.sibling,n.index=t.index,n.ref=t.ref,n}function zi(t,s,n,i,d,x){var S=2;if(i=t,typeof t=="function")ud(t)&&(S=1);else if(typeof t=="string")S=5;else e:switch(t){case _:return Fn(n.children,d,x,s);case k:S=8,d|=8;break;case R:return t=Ms(12,n,s,d|2),t.elementType=R,t.lanes=x,t;case Q:return t=Ms(13,n,s,d),t.elementType=Q,t.lanes=x,t;case se:return t=Ms(19,n,s,d),t.elementType=se,t.lanes=x,t;case ve:return $i(n,d,x,s);default:if(typeof t=="object"&&t!==null)switch(t.$$typeof){case Z:S=10;break e;case ne:S=9;break e;case ae:S=11;break e;case H:S=14;break e;case oe:S=16,i=null;break e}throw Error(l(130,t==null?t:typeof t,""))}return s=Ms(S,n,s,d),s.elementType=t,s.type=i,s.lanes=x,s}function Fn(t,s,n,i){return t=Ms(7,t,i,s),t.lanes=n,t}function $i(t,s,n,i){return t=Ms(22,t,i,s),t.elementType=ve,t.lanes=n,t.stateNode={isHidden:!1},t}function hd(t,s,n){return t=Ms(6,t,null,s),t.lanes=n,t}function md(t,s,n){return s=Ms(4,t.children!==null?t.children:[],t.key,s),s.lanes=n,s.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation},s}function uv(t,s,n,i,d){this.tag=s,this.containerInfo=t,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=$o(0),this.expirationTimes=$o(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=$o(0),this.identifierPrefix=i,this.onRecoverableError=d,this.mutableSourceEagerHydrationData=null}function fd(t,s,n,i,d,x,S,M,$){return t=new uv(t,s,n,M,$),s===1?(s=1,x===!0&&(s|=8)):s=0,x=Ms(3,null,null,s),t.current=x,x.stateNode=t,x.memoizedState={element:i,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ec(x),t}function hv(t,s,n){var i=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(r)}catch(a){console.error(a)}}return r(),jd.exports=Sv(),jd.exports}var kf;function Cv(){if(kf)return Gi;kf=1;var r=Rx();return Gi.createRoot=r.createRoot,Gi.hydrateRoot=r.hydrateRoot,Gi}var kv=Cv(),Ol=Rx();const Ev=Tx(Ol);/** +`+x.stack}return{value:t,source:s,stack:d,digest:null}}function Uc(t,s,n){return{value:t,source:null,stack:n??null,digest:s??null}}function Vc(t,s){try{console.error(s.value)}catch(n){setTimeout(function(){throw n})}}var Ky=typeof WeakMap=="function"?WeakMap:Map;function km(t,s,n){n=br(-1,n),n.tag=3,n.payload={element:null};var i=s.value;return n.callback=function(){Mi||(Mi=!0,nd=i),Vc(t,s)},n}function Em(t,s,n){n=br(-1,n),n.tag=3;var i=t.type.getDerivedStateFromError;if(typeof i=="function"){var d=s.value;n.payload=function(){return i(d)},n.callback=function(){Vc(t,s)}}var x=t.stateNode;return x!==null&&typeof x.componentDidCatch=="function"&&(n.callback=function(){Vc(t,s),typeof i!="function"&&(Gr===null?Gr=new Set([this]):Gr.add(this));var C=s.stack;this.componentDidCatch(s.value,{componentStack:C!==null?C:""})}),n}function Pm(t,s,n){var i=t.pingCache;if(i===null){i=t.pingCache=new Ky;var d=new Set;i.set(s,d)}else d=i.get(s),d===void 0&&(d=new Set,i.set(s,d));d.has(n)||(d.add(n),t=lv.bind(null,t,s,n),s.then(t,t))}function Tm(t){do{var s;if((s=t.tag===13)&&(s=t.memoizedState,s=s!==null?s.dehydrated!==null:!0),s)return t;t=t.return}while(t!==null);return null}function Rm(t,s,n,i,d){return(t.mode&1)===0?(t===s?t.flags|=65536:(t.flags|=128,n.flags|=131072,n.flags&=-52805,n.tag===1&&(n.alternate===null?n.tag=17:(s=br(-1,1),s.tag=2,Hr(n,s,1))),n.lanes|=1),t):(t.flags|=65536,t.lanes=d,t)}var Gy=_.ReactCurrentOwner,cs=!1;function ss(t,s,n,i){s.child=t===null?qh(s,null,n,i):ma(s,t.child,n,i)}function Im(t,s,n,i,d){n=n.render;var x=s.ref;return xa(s,d),i=Ac(t,s,n,i,x,d),n=Dc(),t!==null&&!cs?(s.updateQueue=t.updateQueue,s.flags&=-2053,t.lanes&=~d,Nr(t,s,d)):(bt&&n&&gc(s),s.flags|=1,ss(t,s,i,d),s.child)}function _m(t,s,n,i,d){if(t===null){var x=n.type;return typeof x=="function"&&!ud(x)&&x.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(s.tag=15,s.type=x,Mm(t,s,x,i,d)):(t=zi(n.type,null,i,s,s.mode,d),t.ref=s.ref,t.return=s,s.child=t)}if(x=t.child,(t.lanes&d)===0){var C=x.memoizedProps;if(n=n.compare,n=n!==null?n:rl,n(C,i)&&t.ref===s.ref)return Nr(t,s,d)}return s.flags|=1,t=Xr(x,i),t.ref=s.ref,t.return=s,s.child=t}function Mm(t,s,n,i,d){if(t!==null){var x=t.memoizedProps;if(rl(x,i)&&t.ref===s.ref)if(cs=!1,s.pendingProps=i=x,(t.lanes&d)!==0)(t.flags&131072)!==0&&(cs=!0);else return s.lanes=t.lanes,Nr(t,s,d)}return Wc(t,s,n,i,d)}function Am(t,s,n){var i=s.pendingProps,d=i.children,x=t!==null?t.memoizedState:null;if(i.mode==="hidden")if((s.mode&1)===0)s.memoizedState={baseLanes:0,cachePool:null,transitions:null},ut(va,Ns),Ns|=n;else{if((n&1073741824)===0)return t=x!==null?x.baseLanes|n:n,s.lanes=s.childLanes=1073741824,s.memoizedState={baseLanes:t,cachePool:null,transitions:null},s.updateQueue=null,ut(va,Ns),Ns|=t,null;s.memoizedState={baseLanes:0,cachePool:null,transitions:null},i=x!==null?x.baseLanes:n,ut(va,Ns),Ns|=i}else x!==null?(i=x.baseLanes|n,s.memoizedState=null):i=n,ut(va,Ns),Ns|=i;return ss(t,s,d,n),s.child}function Dm(t,s){var n=s.ref;(t===null&&n!==null||t!==null&&t.ref!==n)&&(s.flags|=512,s.flags|=2097152)}function Wc(t,s,n,i,d){var x=os(n)?Tn:Qt.current;return x=ca(s,x),xa(s,d),n=Ac(t,s,n,i,x,d),i=Dc(),t!==null&&!cs?(s.updateQueue=t.updateQueue,s.flags&=-2053,t.lanes&=~d,Nr(t,s,d)):(bt&&i&&gc(s),s.flags|=1,ss(t,s,n,d),s.child)}function Lm(t,s,n,i,d){if(os(n)){var x=!0;di(s)}else x=!1;if(xa(s,d),s.stateNode===null)Pi(t,s),Sm(s,n,i),Bc(s,n,i,d),i=!0;else if(t===null){var C=s.stateNode,M=s.memoizedProps;C.props=M;var B=C.context,re=n.contextType;typeof re=="object"&&re!==null?re=Rs(re):(re=os(n)?Tn:Qt.current,re=ca(s,re));var me=n.getDerivedStateFromProps,ye=typeof me=="function"||typeof C.getSnapshotBeforeUpdate=="function";ye||typeof C.UNSAFE_componentWillReceiveProps!="function"&&typeof C.componentWillReceiveProps!="function"||(M!==i||B!==re)&&Cm(s,C,i,re),Wr=!1;var ue=s.memoizedState;C.state=ue,vi(s,i,C,d),B=s.memoizedState,M!==i||ue!==B||is.current||Wr?(typeof me=="function"&&($c(s,n,me,i),B=s.memoizedState),(M=Wr||wm(s,n,M,i,ue,B,re))?(ye||typeof C.UNSAFE_componentWillMount!="function"&&typeof C.componentWillMount!="function"||(typeof C.componentWillMount=="function"&&C.componentWillMount(),typeof C.UNSAFE_componentWillMount=="function"&&C.UNSAFE_componentWillMount()),typeof C.componentDidMount=="function"&&(s.flags|=4194308)):(typeof C.componentDidMount=="function"&&(s.flags|=4194308),s.memoizedProps=i,s.memoizedState=B),C.props=i,C.state=B,C.context=re,i=M):(typeof C.componentDidMount=="function"&&(s.flags|=4194308),i=!1)}else{C=s.stateNode,Jh(t,s),M=s.memoizedProps,re=s.type===s.elementType?M:Ws(s.type,M),C.props=re,ye=s.pendingProps,ue=C.context,B=n.contextType,typeof B=="object"&&B!==null?B=Rs(B):(B=os(n)?Tn:Qt.current,B=ca(s,B));var Te=n.getDerivedStateFromProps;(me=typeof Te=="function"||typeof C.getSnapshotBeforeUpdate=="function")||typeof C.UNSAFE_componentWillReceiveProps!="function"&&typeof C.componentWillReceiveProps!="function"||(M!==ye||ue!==B)&&Cm(s,C,i,B),Wr=!1,ue=s.memoizedState,C.state=ue,vi(s,i,C,d);var Ie=s.memoizedState;M!==ye||ue!==Ie||is.current||Wr?(typeof Te=="function"&&($c(s,n,Te,i),Ie=s.memoizedState),(re=Wr||wm(s,n,re,i,ue,Ie,B)||!1)?(me||typeof C.UNSAFE_componentWillUpdate!="function"&&typeof C.componentWillUpdate!="function"||(typeof C.componentWillUpdate=="function"&&C.componentWillUpdate(i,Ie,B),typeof C.UNSAFE_componentWillUpdate=="function"&&C.UNSAFE_componentWillUpdate(i,Ie,B)),typeof C.componentDidUpdate=="function"&&(s.flags|=4),typeof C.getSnapshotBeforeUpdate=="function"&&(s.flags|=1024)):(typeof C.componentDidUpdate!="function"||M===t.memoizedProps&&ue===t.memoizedState||(s.flags|=4),typeof C.getSnapshotBeforeUpdate!="function"||M===t.memoizedProps&&ue===t.memoizedState||(s.flags|=1024),s.memoizedProps=i,s.memoizedState=Ie),C.props=i,C.state=Ie,C.context=B,i=re):(typeof C.componentDidUpdate!="function"||M===t.memoizedProps&&ue===t.memoizedState||(s.flags|=4),typeof C.getSnapshotBeforeUpdate!="function"||M===t.memoizedProps&&ue===t.memoizedState||(s.flags|=1024),i=!1)}return Hc(t,s,n,i,x,d)}function Hc(t,s,n,i,d,x){Dm(t,s);var C=(s.flags&128)!==0;if(!i&&!C)return d&&Bh(s,n,!1),Nr(t,s,x);i=s.stateNode,Gy.current=s;var M=C&&typeof n.getDerivedStateFromError!="function"?null:i.render();return s.flags|=1,t!==null&&C?(s.child=ma(s,t.child,null,x),s.child=ma(s,null,M,x)):ss(t,s,M,x),s.memoizedState=i.state,d&&Bh(s,n,!0),s.child}function Om(t){var s=t.stateNode;s.pendingContext?zh(t,s.pendingContext,s.pendingContext!==s.context):s.context&&zh(t,s.context,!1),Pc(t,s.containerInfo)}function Fm(t,s,n,i,d){return ha(),bc(d),s.flags|=256,ss(t,s,n,i),s.child}var Kc={dehydrated:null,treeContext:null,retryLane:0};function Gc(t){return{baseLanes:t,cachePool:null,transitions:null}}function zm(t,s,n){var i=s.pendingProps,d=wt.current,x=!1,C=(s.flags&128)!==0,M;if((M=C)||(M=t!==null&&t.memoizedState===null?!1:(d&2)!==0),M?(x=!0,s.flags&=-129):(t===null||t.memoizedState!==null)&&(d|=1),ut(wt,d&1),t===null)return jc(s),t=s.memoizedState,t!==null&&(t=t.dehydrated,t!==null)?((s.mode&1)===0?s.lanes=1:t.data==="$!"?s.lanes=8:s.lanes=1073741824,null):(C=i.children,t=i.fallback,x?(i=s.mode,x=s.child,C={mode:"hidden",children:C},(i&1)===0&&x!==null?(x.childLanes=0,x.pendingProps=C):x=$i(C,i,0,null),t=zn(t,i,n,null),x.return=s,t.return=s,x.sibling=t,s.child=x,s.child.memoizedState=Gc(n),s.memoizedState=Kc,t):Yc(s,C));if(d=t.memoizedState,d!==null&&(M=d.dehydrated,M!==null))return Yy(t,s,C,i,M,d,n);if(x){x=i.fallback,C=s.mode,d=t.child,M=d.sibling;var B={mode:"hidden",children:i.children};return(C&1)===0&&s.child!==d?(i=s.child,i.childLanes=0,i.pendingProps=B,s.deletions=null):(i=Xr(d,B),i.subtreeFlags=d.subtreeFlags&14680064),M!==null?x=Xr(M,x):(x=zn(x,C,n,null),x.flags|=2),x.return=s,i.return=s,i.sibling=x,s.child=i,i=x,x=s.child,C=t.child.memoizedState,C=C===null?Gc(n):{baseLanes:C.baseLanes|n,cachePool:null,transitions:C.transitions},x.memoizedState=C,x.childLanes=t.childLanes&~n,s.memoizedState=Kc,i}return x=t.child,t=x.sibling,i=Xr(x,{mode:"visible",children:i.children}),(s.mode&1)===0&&(i.lanes=n),i.return=s,i.sibling=null,t!==null&&(n=s.deletions,n===null?(s.deletions=[t],s.flags|=16):n.push(t)),s.child=i,s.memoizedState=null,i}function Yc(t,s){return s=$i({mode:"visible",children:s},t.mode,0,null),s.return=t,t.child=s}function Ei(t,s,n,i){return i!==null&&bc(i),ma(s,t.child,null,n),t=Yc(s,s.pendingProps.children),t.flags|=2,s.memoizedState=null,t}function Yy(t,s,n,i,d,x,C){if(n)return s.flags&256?(s.flags&=-257,i=Uc(Error(l(422))),Ei(t,s,C,i)):s.memoizedState!==null?(s.child=t.child,s.flags|=128,null):(x=i.fallback,d=s.mode,i=$i({mode:"visible",children:i.children},d,0,null),x=zn(x,d,C,null),x.flags|=2,i.return=s,x.return=s,i.sibling=x,s.child=i,(s.mode&1)!==0&&ma(s,t.child,null,C),s.child.memoizedState=Gc(C),s.memoizedState=Kc,x);if((s.mode&1)===0)return Ei(t,s,C,null);if(d.data==="$!"){if(i=d.nextSibling&&d.nextSibling.dataset,i)var M=i.dgst;return i=M,x=Error(l(419)),i=Uc(x,i,void 0),Ei(t,s,C,i)}if(M=(C&t.childLanes)!==0,cs||M){if(i=Vt,i!==null){switch(C&-C){case 4:d=2;break;case 16:d=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:d=32;break;case 536870912:d=268435456;break;default:d=0}d=(d&(i.suspendedLanes|C))!==0?0:d,d!==0&&d!==x.retryLane&&(x.retryLane=d,jr(t,d),Gs(i,t,d,-1))}return dd(),i=Uc(Error(l(421))),Ei(t,s,C,i)}return d.data==="$?"?(s.flags|=128,s.child=t.child,s=iv.bind(null,t),d._reactRetry=s,null):(t=x.treeContext,bs=$r(d.nextSibling),js=s,bt=!0,Vs=null,t!==null&&(Ps[Ts++]=yr,Ps[Ts++]=vr,Ps[Ts++]=Rn,yr=t.id,vr=t.overflow,Rn=s),s=Yc(s,i.children),s.flags|=4096,s)}function $m(t,s,n){t.lanes|=s;var i=t.alternate;i!==null&&(i.lanes|=s),Cc(t.return,s,n)}function Qc(t,s,n,i,d){var x=t.memoizedState;x===null?t.memoizedState={isBackwards:s,rendering:null,renderingStartTime:0,last:i,tail:n,tailMode:d}:(x.isBackwards=s,x.rendering=null,x.renderingStartTime=0,x.last=i,x.tail=n,x.tailMode=d)}function Bm(t,s,n){var i=s.pendingProps,d=i.revealOrder,x=i.tail;if(ss(t,s,i.children,n),i=wt.current,(i&2)!==0)i=i&1|2,s.flags|=128;else{if(t!==null&&(t.flags&128)!==0)e:for(t=s.child;t!==null;){if(t.tag===13)t.memoizedState!==null&&$m(t,n,s);else if(t.tag===19)$m(t,n,s);else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===s)break e;for(;t.sibling===null;){if(t.return===null||t.return===s)break e;t=t.return}t.sibling.return=t.return,t=t.sibling}i&=1}if(ut(wt,i),(s.mode&1)===0)s.memoizedState=null;else switch(d){case"forwards":for(n=s.child,d=null;n!==null;)t=n.alternate,t!==null&&ji(t)===null&&(d=n),n=n.sibling;n=d,n===null?(d=s.child,s.child=null):(d=n.sibling,n.sibling=null),Qc(s,!1,d,n,x);break;case"backwards":for(n=null,d=s.child,s.child=null;d!==null;){if(t=d.alternate,t!==null&&ji(t)===null){s.child=d;break}t=d.sibling,d.sibling=n,n=d,d=t}Qc(s,!0,n,null,x);break;case"together":Qc(s,!1,null,null,void 0);break;default:s.memoizedState=null}return s.child}function Pi(t,s){(s.mode&1)===0&&t!==null&&(t.alternate=null,s.alternate=null,s.flags|=2)}function Nr(t,s,n){if(t!==null&&(s.dependencies=t.dependencies),Dn|=s.lanes,(n&s.childLanes)===0)return null;if(t!==null&&s.child!==t.child)throw Error(l(153));if(s.child!==null){for(t=s.child,n=Xr(t,t.pendingProps),s.child=n,n.return=s;t.sibling!==null;)t=t.sibling,n=n.sibling=Xr(t,t.pendingProps),n.return=s;n.sibling=null}return s.child}function Qy(t,s,n){switch(s.tag){case 3:Om(s),ha();break;case 5:tm(s);break;case 1:os(s.type)&&di(s);break;case 4:Pc(s,s.stateNode.containerInfo);break;case 10:var i=s.type._context,d=s.memoizedProps.value;ut(pi,i._currentValue),i._currentValue=d;break;case 13:if(i=s.memoizedState,i!==null)return i.dehydrated!==null?(ut(wt,wt.current&1),s.flags|=128,null):(n&s.child.childLanes)!==0?zm(t,s,n):(ut(wt,wt.current&1),t=Nr(t,s,n),t!==null?t.sibling:null);ut(wt,wt.current&1);break;case 19:if(i=(n&s.childLanes)!==0,(t.flags&128)!==0){if(i)return Bm(t,s,n);s.flags|=128}if(d=s.memoizedState,d!==null&&(d.rendering=null,d.tail=null,d.lastEffect=null),ut(wt,wt.current),i)break;return null;case 22:case 23:return s.lanes=0,Am(t,s,n)}return Nr(t,s,n)}var Um,qc,Vm,Wm;Um=function(t,s){for(var n=s.child;n!==null;){if(n.tag===5||n.tag===6)t.appendChild(n.stateNode);else if(n.tag!==4&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===s)break;for(;n.sibling===null;){if(n.return===null||n.return===s)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},qc=function(){},Vm=function(t,s,n,i){var d=t.memoizedProps;if(d!==i){t=s.stateNode,Mn(rr.current);var x=null;switch(n){case"input":d=We(t,d),i=We(t,i),x=[];break;case"select":d=K({},d,{value:void 0}),i=K({},i,{value:void 0}),x=[];break;case"textarea":d=hr(t,d),i=hr(t,i),x=[];break;default:typeof d.onClick!="function"&&typeof i.onClick=="function"&&(t.onclick=ii)}fr(n,i);var C;n=null;for(re in d)if(!i.hasOwnProperty(re)&&d.hasOwnProperty(re)&&d[re]!=null)if(re==="style"){var M=d[re];for(C in M)M.hasOwnProperty(C)&&(n||(n={}),n[C]="")}else re!=="dangerouslySetInnerHTML"&&re!=="children"&&re!=="suppressContentEditableWarning"&&re!=="suppressHydrationWarning"&&re!=="autoFocus"&&(c.hasOwnProperty(re)?x||(x=[]):(x=x||[]).push(re,null));for(re in i){var B=i[re];if(M=d!=null?d[re]:void 0,i.hasOwnProperty(re)&&B!==M&&(B!=null||M!=null))if(re==="style")if(M){for(C in M)!M.hasOwnProperty(C)||B&&B.hasOwnProperty(C)||(n||(n={}),n[C]="");for(C in B)B.hasOwnProperty(C)&&M[C]!==B[C]&&(n||(n={}),n[C]=B[C])}else n||(x||(x=[]),x.push(re,n)),n=B;else re==="dangerouslySetInnerHTML"?(B=B?B.__html:void 0,M=M?M.__html:void 0,B!=null&&M!==B&&(x=x||[]).push(re,B)):re==="children"?typeof B!="string"&&typeof B!="number"||(x=x||[]).push(re,""+B):re!=="suppressContentEditableWarning"&&re!=="suppressHydrationWarning"&&(c.hasOwnProperty(re)?(B!=null&&re==="onScroll"&&pt("scroll",t),x||M===B||(x=[])):(x=x||[]).push(re,B))}n&&(x=x||[]).push("style",n);var re=x;(s.updateQueue=re)&&(s.flags|=4)}},Wm=function(t,s,n,i){n!==i&&(s.flags|=4)};function yl(t,s){if(!bt)switch(t.tailMode){case"hidden":s=t.tail;for(var n=null;s!==null;)s.alternate!==null&&(n=s),s=s.sibling;n===null?t.tail=null:n.sibling=null;break;case"collapsed":n=t.tail;for(var i=null;n!==null;)n.alternate!==null&&(i=n),n=n.sibling;i===null?s||t.tail===null?t.tail=null:t.tail.sibling=null:i.sibling=null}}function Xt(t){var s=t.alternate!==null&&t.alternate.child===t.child,n=0,i=0;if(s)for(var d=t.child;d!==null;)n|=d.lanes|d.childLanes,i|=d.subtreeFlags&14680064,i|=d.flags&14680064,d.return=t,d=d.sibling;else for(d=t.child;d!==null;)n|=d.lanes|d.childLanes,i|=d.subtreeFlags,i|=d.flags,d.return=t,d=d.sibling;return t.subtreeFlags|=i,t.childLanes=n,s}function qy(t,s,n){var i=s.pendingProps;switch(yc(s),s.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Xt(s),null;case 1:return os(s.type)&&ci(),Xt(s),null;case 3:return i=s.stateNode,pa(),gt(is),gt(Qt),Ic(),i.pendingContext&&(i.context=i.pendingContext,i.pendingContext=null),(t===null||t.child===null)&&(fi(s)?s.flags|=4:t===null||t.memoizedState.isDehydrated&&(s.flags&256)===0||(s.flags|=1024,Vs!==null&&(id(Vs),Vs=null))),qc(t,s),Xt(s),null;case 5:Tc(s);var d=Mn(ml.current);if(n=s.type,t!==null&&s.stateNode!=null)Vm(t,s,n,i,d),t.ref!==s.ref&&(s.flags|=512,s.flags|=2097152);else{if(!i){if(s.stateNode===null)throw Error(l(166));return Xt(s),null}if(t=Mn(rr.current),fi(s)){i=s.stateNode,n=s.type;var x=s.memoizedProps;switch(i[sr]=s,i[ol]=x,t=(s.mode&1)!==0,n){case"dialog":pt("cancel",i),pt("close",i);break;case"iframe":case"object":case"embed":pt("load",i);break;case"video":case"audio":for(d=0;d<\/script>",t=t.removeChild(t.firstChild)):typeof i.is=="string"?t=C.createElement(n,{is:i.is}):(t=C.createElement(n),n==="select"&&(C=t,i.multiple?C.multiple=!0:i.size&&(C.size=i.size))):t=C.createElementNS(t,n),t[sr]=s,t[ol]=i,Um(t,s,!1,!1),s.stateNode=t;e:{switch(C=ys(n,i),n){case"dialog":pt("cancel",t),pt("close",t),d=i;break;case"iframe":case"object":case"embed":pt("load",t),d=i;break;case"video":case"audio":for(d=0;dja&&(s.flags|=128,i=!0,yl(x,!1),s.lanes=4194304)}else{if(!i)if(t=ji(C),t!==null){if(s.flags|=128,i=!0,n=t.updateQueue,n!==null&&(s.updateQueue=n,s.flags|=4),yl(x,!0),x.tail===null&&x.tailMode==="hidden"&&!C.alternate&&!bt)return Xt(s),null}else 2*dt()-x.renderingStartTime>ja&&n!==1073741824&&(s.flags|=128,i=!0,yl(x,!1),s.lanes=4194304);x.isBackwards?(C.sibling=s.child,s.child=C):(n=x.last,n!==null?n.sibling=C:s.child=C,x.last=C)}return x.tail!==null?(s=x.tail,x.rendering=s,x.tail=s.sibling,x.renderingStartTime=dt(),s.sibling=null,n=wt.current,ut(wt,i?n&1|2:n&1),s):(Xt(s),null);case 22:case 23:return cd(),i=s.memoizedState!==null,t!==null&&t.memoizedState!==null!==i&&(s.flags|=8192),i&&(s.mode&1)!==0?(Ns&1073741824)!==0&&(Xt(s),s.subtreeFlags&6&&(s.flags|=8192)):Xt(s),null;case 24:return null;case 25:return null}throw Error(l(156,s.tag))}function Xy(t,s){switch(yc(s),s.tag){case 1:return os(s.type)&&ci(),t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 3:return pa(),gt(is),gt(Qt),Ic(),t=s.flags,(t&65536)!==0&&(t&128)===0?(s.flags=t&-65537|128,s):null;case 5:return Tc(s),null;case 13:if(gt(wt),t=s.memoizedState,t!==null&&t.dehydrated!==null){if(s.alternate===null)throw Error(l(340));ha()}return t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 19:return gt(wt),null;case 4:return pa(),null;case 10:return Sc(s.type._context),null;case 22:case 23:return cd(),null;case 24:return null;default:return null}}var Ti=!1,Jt=!1,Jy=typeof WeakSet=="function"?WeakSet:Set,Re=null;function ya(t,s){var n=t.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(i){Tt(t,s,i)}else n.current=null}function Xc(t,s,n){try{n()}catch(i){Tt(t,s,i)}}var Hm=!1;function Zy(t,s){if(cc=Ql,t=wh(),tc(t)){if("selectionStart"in t)var n={start:t.selectionStart,end:t.selectionEnd};else e:{n=(n=t.ownerDocument)&&n.defaultView||window;var i=n.getSelection&&n.getSelection();if(i&&i.rangeCount!==0){n=i.anchorNode;var d=i.anchorOffset,x=i.focusNode;i=i.focusOffset;try{n.nodeType,x.nodeType}catch{n=null;break e}var C=0,M=-1,B=-1,re=0,me=0,ye=t,ue=null;t:for(;;){for(var Te;ye!==n||d!==0&&ye.nodeType!==3||(M=C+d),ye!==x||i!==0&&ye.nodeType!==3||(B=C+i),ye.nodeType===3&&(C+=ye.nodeValue.length),(Te=ye.firstChild)!==null;)ue=ye,ye=Te;for(;;){if(ye===t)break t;if(ue===n&&++re===d&&(M=C),ue===x&&++me===i&&(B=C),(Te=ye.nextSibling)!==null)break;ye=ue,ue=ye.parentNode}ye=Te}n=M===-1||B===-1?null:{start:M,end:B}}else n=null}n=n||{start:0,end:0}}else n=null;for(dc={focusedElem:t,selectionRange:n},Ql=!1,Re=s;Re!==null;)if(s=Re,t=s.child,(s.subtreeFlags&1028)!==0&&t!==null)t.return=s,Re=t;else for(;Re!==null;){s=Re;try{var Ie=s.alternate;if((s.flags&1024)!==0)switch(s.tag){case 0:case 11:case 15:break;case 1:if(Ie!==null){var Ae=Ie.memoizedProps,It=Ie.memoizedState,X=s.stateNode,W=X.getSnapshotBeforeUpdate(s.elementType===s.type?Ae:Ws(s.type,Ae),It);X.__reactInternalSnapshotBeforeUpdate=W}break;case 3:var ee=s.stateNode.containerInfo;ee.nodeType===1?ee.textContent="":ee.nodeType===9&&ee.documentElement&&ee.removeChild(ee.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(l(163))}}catch(je){Tt(s,s.return,je)}if(t=s.sibling,t!==null){t.return=s.return,Re=t;break}Re=s.return}return Ie=Hm,Hm=!1,Ie}function vl(t,s,n){var i=s.updateQueue;if(i=i!==null?i.lastEffect:null,i!==null){var d=i=i.next;do{if((d.tag&t)===t){var x=d.destroy;d.destroy=void 0,x!==void 0&&Xc(s,n,x)}d=d.next}while(d!==i)}}function Ri(t,s){if(s=s.updateQueue,s=s!==null?s.lastEffect:null,s!==null){var n=s=s.next;do{if((n.tag&t)===t){var i=n.create;n.destroy=i()}n=n.next}while(n!==s)}}function Jc(t){var s=t.ref;if(s!==null){var n=t.stateNode;switch(t.tag){case 5:t=n;break;default:t=n}typeof s=="function"?s(t):s.current=t}}function Km(t){var s=t.alternate;s!==null&&(t.alternate=null,Km(s)),t.child=null,t.deletions=null,t.sibling=null,t.tag===5&&(s=t.stateNode,s!==null&&(delete s[sr],delete s[ol],delete s[fc],delete s[Dy],delete s[Ly])),t.stateNode=null,t.return=null,t.dependencies=null,t.memoizedProps=null,t.memoizedState=null,t.pendingProps=null,t.stateNode=null,t.updateQueue=null}function Gm(t){return t.tag===5||t.tag===3||t.tag===4}function Ym(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||Gm(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function Zc(t,s,n){var i=t.tag;if(i===5||i===6)t=t.stateNode,s?n.nodeType===8?n.parentNode.insertBefore(t,s):n.insertBefore(t,s):(n.nodeType===8?(s=n.parentNode,s.insertBefore(t,n)):(s=n,s.appendChild(t)),n=n._reactRootContainer,n!=null||s.onclick!==null||(s.onclick=ii));else if(i!==4&&(t=t.child,t!==null))for(Zc(t,s,n),t=t.sibling;t!==null;)Zc(t,s,n),t=t.sibling}function ed(t,s,n){var i=t.tag;if(i===5||i===6)t=t.stateNode,s?n.insertBefore(t,s):n.appendChild(t);else if(i!==4&&(t=t.child,t!==null))for(ed(t,s,n),t=t.sibling;t!==null;)ed(t,s,n),t=t.sibling}var Kt=null,Hs=!1;function Kr(t,s,n){for(n=n.child;n!==null;)Qm(t,s,n),n=n.sibling}function Qm(t,s,n){if(tr&&typeof tr.onCommitFiberUnmount=="function")try{tr.onCommitFiberUnmount(Vl,n)}catch{}switch(n.tag){case 5:Jt||ya(n,s);case 6:var i=Kt,d=Hs;Kt=null,Kr(t,s,n),Kt=i,Hs=d,Kt!==null&&(Hs?(t=Kt,n=n.stateNode,t.nodeType===8?t.parentNode.removeChild(n):t.removeChild(n)):Kt.removeChild(n.stateNode));break;case 18:Kt!==null&&(Hs?(t=Kt,n=n.stateNode,t.nodeType===8?mc(t.parentNode,n):t.nodeType===1&&mc(t,n),Xa(t)):mc(Kt,n.stateNode));break;case 4:i=Kt,d=Hs,Kt=n.stateNode.containerInfo,Hs=!0,Kr(t,s,n),Kt=i,Hs=d;break;case 0:case 11:case 14:case 15:if(!Jt&&(i=n.updateQueue,i!==null&&(i=i.lastEffect,i!==null))){d=i=i.next;do{var x=d,C=x.destroy;x=x.tag,C!==void 0&&((x&2)!==0||(x&4)!==0)&&Xc(n,s,C),d=d.next}while(d!==i)}Kr(t,s,n);break;case 1:if(!Jt&&(ya(n,s),i=n.stateNode,typeof i.componentWillUnmount=="function"))try{i.props=n.memoizedProps,i.state=n.memoizedState,i.componentWillUnmount()}catch(M){Tt(n,s,M)}Kr(t,s,n);break;case 21:Kr(t,s,n);break;case 22:n.mode&1?(Jt=(i=Jt)||n.memoizedState!==null,Kr(t,s,n),Jt=i):Kr(t,s,n);break;default:Kr(t,s,n)}}function qm(t){var s=t.updateQueue;if(s!==null){t.updateQueue=null;var n=t.stateNode;n===null&&(n=t.stateNode=new Jy),s.forEach(function(i){var d=ov.bind(null,t,i);n.has(i)||(n.add(i),i.then(d,d))})}}function Ks(t,s){var n=s.deletions;if(n!==null)for(var i=0;id&&(d=C),i&=~x}if(i=d,i=dt()-i,i=(120>i?120:480>i?480:1080>i?1080:1920>i?1920:3e3>i?3e3:4320>i?4320:1960*tv(i/1960))-i,10t?16:t,Yr===null)var i=!1;else{if(t=Yr,Yr=null,Di=0,(st&6)!==0)throw Error(l(331));var d=st;for(st|=4,Re=t.current;Re!==null;){var x=Re,C=x.child;if((Re.flags&16)!==0){var M=x.deletions;if(M!==null){for(var B=0;Bdt()-rd?On(t,0):sd|=n),us(t,s)}function df(t,s){s===0&&((t.mode&1)===0?s=1:(s=Hl,Hl<<=1,(Hl&130023424)===0&&(Hl=4194304)));var n=rs();t=jr(t,s),t!==null&&(Ka(t,s,n),us(t,n))}function iv(t){var s=t.memoizedState,n=0;s!==null&&(n=s.retryLane),df(t,n)}function ov(t,s){var n=0;switch(t.tag){case 13:var i=t.stateNode,d=t.memoizedState;d!==null&&(n=d.retryLane);break;case 19:i=t.stateNode;break;default:throw Error(l(314))}i!==null&&i.delete(s),df(t,n)}var uf;uf=function(t,s,n){if(t!==null)if(t.memoizedProps!==s.pendingProps||is.current)cs=!0;else{if((t.lanes&n)===0&&(s.flags&128)===0)return cs=!1,Qy(t,s,n);cs=(t.flags&131072)!==0}else cs=!1,bt&&(s.flags&1048576)!==0&&Vh(s,mi,s.index);switch(s.lanes=0,s.tag){case 2:var i=s.type;Pi(t,s),t=s.pendingProps;var d=ca(s,Qt.current);xa(s,n),d=Ac(null,s,i,t,d,n);var x=Dc();return s.flags|=1,typeof d=="object"&&d!==null&&typeof d.render=="function"&&d.$$typeof===void 0?(s.tag=1,s.memoizedState=null,s.updateQueue=null,os(i)?(x=!0,di(s)):x=!1,s.memoizedState=d.state!==null&&d.state!==void 0?d.state:null,Ec(s),d.updater=ki,s.stateNode=d,d._reactInternals=s,Bc(s,i,t,n),s=Hc(null,s,i,!0,x,n)):(s.tag=0,bt&&x&&gc(s),ss(null,s,d,n),s=s.child),s;case 16:i=s.elementType;e:{switch(Pi(t,s),t=s.pendingProps,d=i._init,i=d(i._payload),s.type=i,d=s.tag=dv(i),t=Ws(i,t),d){case 0:s=Wc(null,s,i,t,n);break e;case 1:s=Lm(null,s,i,t,n);break e;case 11:s=Im(null,s,i,t,n);break e;case 14:s=_m(null,s,i,Ws(i.type,t),n);break e}throw Error(l(306,i,""))}return s;case 0:return i=s.type,d=s.pendingProps,d=s.elementType===i?d:Ws(i,d),Wc(t,s,i,d,n);case 1:return i=s.type,d=s.pendingProps,d=s.elementType===i?d:Ws(i,d),Lm(t,s,i,d,n);case 3:e:{if(Om(s),t===null)throw Error(l(387));i=s.pendingProps,x=s.memoizedState,d=x.element,Jh(t,s),vi(s,i,null,n);var C=s.memoizedState;if(i=C.element,x.isDehydrated)if(x={element:i,isDehydrated:!1,cache:C.cache,pendingSuspenseBoundaries:C.pendingSuspenseBoundaries,transitions:C.transitions},s.updateQueue.baseState=x,s.memoizedState=x,s.flags&256){d=ga(Error(l(423)),s),s=Fm(t,s,i,n,d);break e}else if(i!==d){d=ga(Error(l(424)),s),s=Fm(t,s,i,n,d);break e}else for(bs=$r(s.stateNode.containerInfo.firstChild),js=s,bt=!0,Vs=null,n=qh(s,null,i,n),s.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(ha(),i===d){s=Nr(t,s,n);break e}ss(t,s,i,n)}s=s.child}return s;case 5:return tm(s),t===null&&jc(s),i=s.type,d=s.pendingProps,x=t!==null?t.memoizedProps:null,C=d.children,uc(i,d)?C=null:x!==null&&uc(i,x)&&(s.flags|=32),Dm(t,s),ss(t,s,C,n),s.child;case 6:return t===null&&jc(s),null;case 13:return zm(t,s,n);case 4:return Pc(s,s.stateNode.containerInfo),i=s.pendingProps,t===null?s.child=ma(s,null,i,n):ss(t,s,i,n),s.child;case 11:return i=s.type,d=s.pendingProps,d=s.elementType===i?d:Ws(i,d),Im(t,s,i,d,n);case 7:return ss(t,s,s.pendingProps,n),s.child;case 8:return ss(t,s,s.pendingProps.children,n),s.child;case 12:return ss(t,s,s.pendingProps.children,n),s.child;case 10:e:{if(i=s.type._context,d=s.pendingProps,x=s.memoizedProps,C=d.value,ut(pi,i._currentValue),i._currentValue=C,x!==null)if(Us(x.value,C)){if(x.children===d.children&&!is.current){s=Nr(t,s,n);break e}}else for(x=s.child,x!==null&&(x.return=s);x!==null;){var M=x.dependencies;if(M!==null){C=x.child;for(var B=M.firstContext;B!==null;){if(B.context===i){if(x.tag===1){B=br(-1,n&-n),B.tag=2;var re=x.updateQueue;if(re!==null){re=re.shared;var me=re.pending;me===null?B.next=B:(B.next=me.next,me.next=B),re.pending=B}}x.lanes|=n,B=x.alternate,B!==null&&(B.lanes|=n),Cc(x.return,n,s),M.lanes|=n;break}B=B.next}}else if(x.tag===10)C=x.type===s.type?null:x.child;else if(x.tag===18){if(C=x.return,C===null)throw Error(l(341));C.lanes|=n,M=C.alternate,M!==null&&(M.lanes|=n),Cc(C,n,s),C=x.sibling}else C=x.child;if(C!==null)C.return=x;else for(C=x;C!==null;){if(C===s){C=null;break}if(x=C.sibling,x!==null){x.return=C.return,C=x;break}C=C.return}x=C}ss(t,s,d.children,n),s=s.child}return s;case 9:return d=s.type,i=s.pendingProps.children,xa(s,n),d=Rs(d),i=i(d),s.flags|=1,ss(t,s,i,n),s.child;case 14:return i=s.type,d=Ws(i,s.pendingProps),d=Ws(i.type,d),_m(t,s,i,d,n);case 15:return Mm(t,s,s.type,s.pendingProps,n);case 17:return i=s.type,d=s.pendingProps,d=s.elementType===i?d:Ws(i,d),Pi(t,s),s.tag=1,os(i)?(t=!0,di(s)):t=!1,xa(s,n),Sm(s,i,d),Bc(s,i,d,n),Hc(null,s,i,!0,t,n);case 19:return Bm(t,s,n);case 22:return Am(t,s,n)}throw Error(l(156,s.tag))};function hf(t,s){return $(t,s)}function cv(t,s,n,i){this.tag=t,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=s,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ms(t,s,n,i){return new cv(t,s,n,i)}function ud(t){return t=t.prototype,!(!t||!t.isReactComponent)}function dv(t){if(typeof t=="function")return ud(t)?1:0;if(t!=null){if(t=t.$$typeof,t===ae)return 11;if(t===H)return 14}return 2}function Xr(t,s){var n=t.alternate;return n===null?(n=Ms(t.tag,s,t.key,t.mode),n.elementType=t.elementType,n.type=t.type,n.stateNode=t.stateNode,n.alternate=t,t.alternate=n):(n.pendingProps=s,n.type=t.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=t.flags&14680064,n.childLanes=t.childLanes,n.lanes=t.lanes,n.child=t.child,n.memoizedProps=t.memoizedProps,n.memoizedState=t.memoizedState,n.updateQueue=t.updateQueue,s=t.dependencies,n.dependencies=s===null?null:{lanes:s.lanes,firstContext:s.firstContext},n.sibling=t.sibling,n.index=t.index,n.ref=t.ref,n}function zi(t,s,n,i,d,x){var C=2;if(i=t,typeof t=="function")ud(t)&&(C=1);else if(typeof t=="string")C=5;else e:switch(t){case I:return zn(n.children,d,x,s);case R:C=8,d|=8;break;case E:return t=Ms(12,n,s,d|2),t.elementType=E,t.lanes=x,t;case q:return t=Ms(13,n,s,d),t.elementType=q,t.lanes=x,t;case se:return t=Ms(19,n,s,d),t.elementType=se,t.lanes=x,t;case ve:return $i(n,d,x,s);default:if(typeof t=="object"&&t!==null)switch(t.$$typeof){case Y:C=10;break e;case ne:C=9;break e;case ae:C=11;break e;case H:C=14;break e;case ie:C=16,i=null;break e}throw Error(l(130,t==null?t:typeof t,""))}return s=Ms(C,n,s,d),s.elementType=t,s.type=i,s.lanes=x,s}function zn(t,s,n,i){return t=Ms(7,t,i,s),t.lanes=n,t}function $i(t,s,n,i){return t=Ms(22,t,i,s),t.elementType=ve,t.lanes=n,t.stateNode={isHidden:!1},t}function hd(t,s,n){return t=Ms(6,t,null,s),t.lanes=n,t}function md(t,s,n){return s=Ms(4,t.children!==null?t.children:[],t.key,s),s.lanes=n,s.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation},s}function uv(t,s,n,i,d){this.tag=s,this.containerInfo=t,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=$o(0),this.expirationTimes=$o(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=$o(0),this.identifierPrefix=i,this.onRecoverableError=d,this.mutableSourceEagerHydrationData=null}function fd(t,s,n,i,d,x,C,M,B){return t=new uv(t,s,n,M,B),s===1?(s=1,x===!0&&(s|=8)):s=0,x=Ms(3,null,null,s),t.current=x,x.stateNode=t,x.memoizedState={element:i,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ec(x),t}function hv(t,s,n){var i=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(r)}catch(a){console.error(a)}}return r(),jd.exports=Sv(),jd.exports}var kf;function Cv(){if(kf)return Gi;kf=1;var r=Rx();return Gi.createRoot=r.createRoot,Gi.hydrateRoot=r.hydrateRoot,Gi}var kv=Cv(),Ol=Rx();const Ev=Tx(Ol);/** * @remix-run/router v1.23.2 * * Copyright (c) Remix Software Inc. @@ -46,7 +46,7 @@ Error generating stack: `+x.message+` * LICENSE.md file in the root directory of this source tree. * * @license MIT - */function Rl(){return Rl=Object.assign?Object.assign.bind():function(r){for(var a=1;a"u")throw new Error(a)}function fu(r,a){if(!r){typeof console<"u"&&console.warn(a);try{throw new Error(a)}catch{}}}function Tv(){return Math.random().toString(36).substr(2,8)}function Pf(r,a){return{usr:r.state,key:r.key,idx:a}}function Ud(r,a,l,o){return l===void 0&&(l=null),Rl({pathname:typeof r=="string"?r:r.pathname,search:"",hash:""},typeof a=="string"?Da(a):a,{state:l,key:a&&a.key||o||Tv()})}function io(r){let{pathname:a="/",search:l="",hash:o=""}=r;return l&&l!=="?"&&(a+=l.charAt(0)==="?"?l:"?"+l),o&&o!=="#"&&(a+=o.charAt(0)==="#"?o:"#"+o),a}function Da(r){let a={};if(r){let l=r.indexOf("#");l>=0&&(a.hash=r.substr(l),r=r.substr(0,l));let o=r.indexOf("?");o>=0&&(a.search=r.substr(o),r=r.substr(0,o)),r&&(a.pathname=r)}return a}function Rv(r,a,l,o){o===void 0&&(o={});let{window:c=document.defaultView,v5Compat:u=!1}=o,m=c.history,f=nn.Pop,g=null,y=p();y==null&&(y=0,m.replaceState(Rl({},m.state,{idx:y}),""));function p(){return(m.state||{idx:null}).idx}function v(){f=nn.Pop;let b=p(),N=b==null?null:b-y;y=b,g&&g({action:f,location:w.location,delta:N})}function E(b,N){f=nn.Push;let C=Ud(w.location,b,N);y=p()+1;let j=Pf(C,y),I=w.createHref(C);try{m.pushState(j,"",I)}catch(U){if(U instanceof DOMException&&U.name==="DataCloneError")throw U;c.location.assign(I)}u&&g&&g({action:f,location:w.location,delta:1})}function P(b,N){f=nn.Replace;let C=Ud(w.location,b,N);y=p();let j=Pf(C,y),I=w.createHref(C);m.replaceState(j,"",I),u&&g&&g({action:f,location:w.location,delta:0})}function T(b){let N=c.location.origin!=="null"?c.location.origin:c.location.href,C=typeof b=="string"?b:io(b);return C=C.replace(/ $/,"%20"),_t(N,"No window.location.(origin|href) available to create URL for href: "+C),new URL(C,N)}let w={get action(){return f},get location(){return r(c,m)},listen(b){if(g)throw new Error("A history only accepts one active listener");return c.addEventListener(Ef,v),g=b,()=>{c.removeEventListener(Ef,v),g=null}},createHref(b){return a(c,b)},createURL:T,encodeLocation(b){let N=T(b);return{pathname:N.pathname,search:N.search,hash:N.hash}},push:E,replace:P,go(b){return m.go(b)}};return w}var Tf;(function(r){r.data="data",r.deferred="deferred",r.redirect="redirect",r.error="error"})(Tf||(Tf={}));function Iv(r,a,l){return l===void 0&&(l="/"),_v(r,a,l)}function _v(r,a,l,o){let c=typeof a=="string"?Da(a):a,u=xu(c.pathname||"/",l);if(u==null)return null;let m=Ix(r);Mv(m);let f=null;for(let g=0;f==null&&g{let g={relativePath:f===void 0?u.path||"":f,caseSensitive:u.caseSensitive===!0,childrenIndex:m,route:u};g.relativePath.startsWith("/")&&(_t(g.relativePath.startsWith(o),'Absolute route path "'+g.relativePath+'" nested under path '+('"'+o+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),g.relativePath=g.relativePath.slice(o.length));let y=ln([o,g.relativePath]),p=l.concat(g);u.children&&u.children.length>0&&(_t(u.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+y+'".')),Ix(u.children,a,p,y)),!(u.path==null&&!u.index)&&a.push({path:y,score:$v(y,u.index),routesMeta:p})};return r.forEach((u,m)=>{var f;if(u.path===""||!((f=u.path)!=null&&f.includes("?")))c(u,m);else for(let g of _x(u.path))c(u,m,g)}),a}function _x(r){let a=r.split("/");if(a.length===0)return[];let[l,...o]=a,c=l.endsWith("?"),u=l.replace(/\?$/,"");if(o.length===0)return c?[u,""]:[u];let m=_x(o.join("/")),f=[];return f.push(...m.map(g=>g===""?u:[u,g].join("/"))),c&&f.push(...m),f.map(g=>r.startsWith("/")&&g===""?"/":g)}function Mv(r){r.sort((a,l)=>a.score!==l.score?l.score-a.score:Bv(a.routesMeta.map(o=>o.childrenIndex),l.routesMeta.map(o=>o.childrenIndex)))}const Av=/^:[\w-]+$/,Dv=3,Lv=2,Ov=1,Fv=10,zv=-2,Rf=r=>r==="*";function $v(r,a){let l=r.split("/"),o=l.length;return l.some(Rf)&&(o+=zv),a&&(o+=Lv),l.filter(c=>!Rf(c)).reduce((c,u)=>c+(Av.test(u)?Dv:u===""?Ov:Fv),o)}function Bv(r,a){return r.length===a.length&&r.slice(0,-1).every((o,c)=>o===a[c])?r[r.length-1]-a[a.length-1]:0}function Uv(r,a,l){let{routesMeta:o}=r,c={},u="/",m=[];for(let f=0;f{let{paramName:E,isOptional:P}=p;if(E==="*"){let w=f[v]||"";m=u.slice(0,u.length-w.length).replace(/(.)\/+$/,"$1")}const T=f[v];return P&&!T?y[E]=void 0:y[E]=(T||"").replace(/%2F/g,"/"),y},{}),pathname:u,pathnameBase:m,pattern:r}}function Wv(r,a,l){a===void 0&&(a=!1),l===void 0&&(l=!0),fu(r==="*"||!r.endsWith("*")||r.endsWith("/*"),'Route path "'+r+'" will be treated as if it were '+('"'+r.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+r.replace(/\*$/,"/*")+'".'));let o=[],c="^"+r.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(m,f,g)=>(o.push({paramName:f,isOptional:g!=null}),g?"/?([^\\/]+)?":"/([^\\/]+)"));return r.endsWith("*")?(o.push({paramName:"*"}),c+=r==="*"||r==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):l?c+="\\/*$":r!==""&&r!=="/"&&(c+="(?:(?=\\/|$))"),[new RegExp(c,a?void 0:"i"),o]}function Hv(r){try{return r.split("/").map(a=>decodeURIComponent(a).replace(/\//g,"%2F")).join("/")}catch(a){return fu(!1,'The URL path "'+r+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+a+").")),r}}function xu(r,a){if(a==="/")return r;if(!r.toLowerCase().startsWith(a.toLowerCase()))return null;let l=a.endsWith("/")?a.length-1:a.length,o=r.charAt(l);return o&&o!=="/"?null:r.slice(l)||"/"}const Kv=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Gv=r=>Kv.test(r);function Yv(r,a){a===void 0&&(a="/");let{pathname:l,search:o="",hash:c=""}=typeof r=="string"?Da(r):r,u;if(l)if(Gv(l))u=l;else{if(l.includes("//")){let m=l;l=l.replace(/\/\/+/g,"/"),fu(!1,"Pathnames cannot have embedded double slashes - normalizing "+(m+" -> "+l))}l.startsWith("/")?u=If(l.substring(1),"/"):u=If(l,a)}else u=a;return{pathname:u,search:Xv(o),hash:Jv(c)}}function If(r,a){let l=a.replace(/\/+$/,"").split("/");return r.split("/").forEach(c=>{c===".."?l.length>1&&l.pop():c!=="."&&l.push(c)}),l.length>1?l.join("/"):"/"}function wd(r,a,l,o){return"Cannot include a '"+r+"' character in a manually specified "+("`to."+a+"` field ["+JSON.stringify(o)+"]. Please separate it out to the ")+("`to."+l+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function Qv(r){return r.filter((a,l)=>l===0||a.route.path&&a.route.path.length>0)}function pu(r,a){let l=Qv(r);return a?l.map((o,c)=>c===l.length-1?o.pathname:o.pathnameBase):l.map(o=>o.pathnameBase)}function gu(r,a,l,o){o===void 0&&(o=!1);let c;typeof r=="string"?c=Da(r):(c=Rl({},r),_t(!c.pathname||!c.pathname.includes("?"),wd("?","pathname","search",c)),_t(!c.pathname||!c.pathname.includes("#"),wd("#","pathname","hash",c)),_t(!c.search||!c.search.includes("#"),wd("#","search","hash",c)));let u=r===""||c.pathname==="",m=u?"/":c.pathname,f;if(m==null)f=l;else{let v=a.length-1;if(!o&&m.startsWith("..")){let E=m.split("/");for(;E[0]==="..";)E.shift(),v-=1;c.pathname=E.join("/")}f=v>=0?a[v]:"/"}let g=Yv(c,f),y=m&&m!=="/"&&m.endsWith("/"),p=(u||m===".")&&l.endsWith("/");return!g.pathname.endsWith("/")&&(y||p)&&(g.pathname+="/"),g}const ln=r=>r.join("/").replace(/\/\/+/g,"/"),qv=r=>r.replace(/\/+$/,"").replace(/^\/*/,"/"),Xv=r=>!r||r==="?"?"":r.startsWith("?")?r:"?"+r,Jv=r=>!r||r==="#"?"":r.startsWith("#")?r:"#"+r;function Zv(r){return r!=null&&typeof r.status=="number"&&typeof r.statusText=="string"&&typeof r.internal=="boolean"&&"data"in r}const Mx=["post","put","patch","delete"];new Set(Mx);const ej=["get",...Mx];new Set(ej);/** + */function Rl(){return Rl=Object.assign?Object.assign.bind():function(r){for(var a=1;a"u")throw new Error(a)}function fu(r,a){if(!r){typeof console<"u"&&console.warn(a);try{throw new Error(a)}catch{}}}function Tv(){return Math.random().toString(36).substr(2,8)}function Pf(r,a){return{usr:r.state,key:r.key,idx:a}}function Ud(r,a,l,o){return l===void 0&&(l=null),Rl({pathname:typeof r=="string"?r:r.pathname,search:"",hash:""},typeof a=="string"?La(a):a,{state:l,key:a&&a.key||o||Tv()})}function io(r){let{pathname:a="/",search:l="",hash:o=""}=r;return l&&l!=="?"&&(a+=l.charAt(0)==="?"?l:"?"+l),o&&o!=="#"&&(a+=o.charAt(0)==="#"?o:"#"+o),a}function La(r){let a={};if(r){let l=r.indexOf("#");l>=0&&(a.hash=r.substr(l),r=r.substr(0,l));let o=r.indexOf("?");o>=0&&(a.search=r.substr(o),r=r.substr(0,o)),r&&(a.pathname=r)}return a}function Rv(r,a,l,o){o===void 0&&(o={});let{window:c=document.defaultView,v5Compat:u=!1}=o,m=c.history,f=nn.Pop,p=null,y=g();y==null&&(y=0,m.replaceState(Rl({},m.state,{idx:y}),""));function g(){return(m.state||{idx:null}).idx}function v(){f=nn.Pop;let N=g(),b=N==null?null:N-y;y=N,p&&p({action:f,location:w.location,delta:b})}function k(N,b){f=nn.Push;let S=Ud(w.location,N,b);y=g()+1;let j=Pf(S,y),_=w.createHref(S);try{m.pushState(j,"",_)}catch(O){if(O instanceof DOMException&&O.name==="DataCloneError")throw O;c.location.assign(_)}u&&p&&p({action:f,location:w.location,delta:1})}function P(N,b){f=nn.Replace;let S=Ud(w.location,N,b);y=g();let j=Pf(S,y),_=w.createHref(S);m.replaceState(j,"",_),u&&p&&p({action:f,location:w.location,delta:0})}function T(N){let b=c.location.origin!=="null"?c.location.origin:c.location.href,S=typeof N=="string"?N:io(N);return S=S.replace(/ $/,"%20"),_t(b,"No window.location.(origin|href) available to create URL for href: "+S),new URL(S,b)}let w={get action(){return f},get location(){return r(c,m)},listen(N){if(p)throw new Error("A history only accepts one active listener");return c.addEventListener(Ef,v),p=N,()=>{c.removeEventListener(Ef,v),p=null}},createHref(N){return a(c,N)},createURL:T,encodeLocation(N){let b=T(N);return{pathname:b.pathname,search:b.search,hash:b.hash}},push:k,replace:P,go(N){return m.go(N)}};return w}var Tf;(function(r){r.data="data",r.deferred="deferred",r.redirect="redirect",r.error="error"})(Tf||(Tf={}));function Iv(r,a,l){return l===void 0&&(l="/"),_v(r,a,l)}function _v(r,a,l,o){let c=typeof a=="string"?La(a):a,u=xu(c.pathname||"/",l);if(u==null)return null;let m=Ix(r);Mv(m);let f=null;for(let p=0;f==null&&p{let p={relativePath:f===void 0?u.path||"":f,caseSensitive:u.caseSensitive===!0,childrenIndex:m,route:u};p.relativePath.startsWith("/")&&(_t(p.relativePath.startsWith(o),'Absolute route path "'+p.relativePath+'" nested under path '+('"'+o+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),p.relativePath=p.relativePath.slice(o.length));let y=ln([o,p.relativePath]),g=l.concat(p);u.children&&u.children.length>0&&(_t(u.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+y+'".')),Ix(u.children,a,g,y)),!(u.path==null&&!u.index)&&a.push({path:y,score:$v(y,u.index),routesMeta:g})};return r.forEach((u,m)=>{var f;if(u.path===""||!((f=u.path)!=null&&f.includes("?")))c(u,m);else for(let p of _x(u.path))c(u,m,p)}),a}function _x(r){let a=r.split("/");if(a.length===0)return[];let[l,...o]=a,c=l.endsWith("?"),u=l.replace(/\?$/,"");if(o.length===0)return c?[u,""]:[u];let m=_x(o.join("/")),f=[];return f.push(...m.map(p=>p===""?u:[u,p].join("/"))),c&&f.push(...m),f.map(p=>r.startsWith("/")&&p===""?"/":p)}function Mv(r){r.sort((a,l)=>a.score!==l.score?l.score-a.score:Bv(a.routesMeta.map(o=>o.childrenIndex),l.routesMeta.map(o=>o.childrenIndex)))}const Av=/^:[\w-]+$/,Dv=3,Lv=2,Ov=1,Fv=10,zv=-2,Rf=r=>r==="*";function $v(r,a){let l=r.split("/"),o=l.length;return l.some(Rf)&&(o+=zv),a&&(o+=Lv),l.filter(c=>!Rf(c)).reduce((c,u)=>c+(Av.test(u)?Dv:u===""?Ov:Fv),o)}function Bv(r,a){return r.length===a.length&&r.slice(0,-1).every((o,c)=>o===a[c])?r[r.length-1]-a[a.length-1]:0}function Uv(r,a,l){let{routesMeta:o}=r,c={},u="/",m=[];for(let f=0;f{let{paramName:k,isOptional:P}=g;if(k==="*"){let w=f[v]||"";m=u.slice(0,u.length-w.length).replace(/(.)\/+$/,"$1")}const T=f[v];return P&&!T?y[k]=void 0:y[k]=(T||"").replace(/%2F/g,"/"),y},{}),pathname:u,pathnameBase:m,pattern:r}}function Wv(r,a,l){a===void 0&&(a=!1),l===void 0&&(l=!0),fu(r==="*"||!r.endsWith("*")||r.endsWith("/*"),'Route path "'+r+'" will be treated as if it were '+('"'+r.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+r.replace(/\*$/,"/*")+'".'));let o=[],c="^"+r.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(m,f,p)=>(o.push({paramName:f,isOptional:p!=null}),p?"/?([^\\/]+)?":"/([^\\/]+)"));return r.endsWith("*")?(o.push({paramName:"*"}),c+=r==="*"||r==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):l?c+="\\/*$":r!==""&&r!=="/"&&(c+="(?:(?=\\/|$))"),[new RegExp(c,a?void 0:"i"),o]}function Hv(r){try{return r.split("/").map(a=>decodeURIComponent(a).replace(/\//g,"%2F")).join("/")}catch(a){return fu(!1,'The URL path "'+r+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+a+").")),r}}function xu(r,a){if(a==="/")return r;if(!r.toLowerCase().startsWith(a.toLowerCase()))return null;let l=a.endsWith("/")?a.length-1:a.length,o=r.charAt(l);return o&&o!=="/"?null:r.slice(l)||"/"}const Kv=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Gv=r=>Kv.test(r);function Yv(r,a){a===void 0&&(a="/");let{pathname:l,search:o="",hash:c=""}=typeof r=="string"?La(r):r,u;if(l)if(Gv(l))u=l;else{if(l.includes("//")){let m=l;l=l.replace(/\/\/+/g,"/"),fu(!1,"Pathnames cannot have embedded double slashes - normalizing "+(m+" -> "+l))}l.startsWith("/")?u=If(l.substring(1),"/"):u=If(l,a)}else u=a;return{pathname:u,search:Xv(o),hash:Jv(c)}}function If(r,a){let l=a.replace(/\/+$/,"").split("/");return r.split("/").forEach(c=>{c===".."?l.length>1&&l.pop():c!=="."&&l.push(c)}),l.length>1?l.join("/"):"/"}function wd(r,a,l,o){return"Cannot include a '"+r+"' character in a manually specified "+("`to."+a+"` field ["+JSON.stringify(o)+"]. Please separate it out to the ")+("`to."+l+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function Qv(r){return r.filter((a,l)=>l===0||a.route.path&&a.route.path.length>0)}function pu(r,a){let l=Qv(r);return a?l.map((o,c)=>c===l.length-1?o.pathname:o.pathnameBase):l.map(o=>o.pathnameBase)}function gu(r,a,l,o){o===void 0&&(o=!1);let c;typeof r=="string"?c=La(r):(c=Rl({},r),_t(!c.pathname||!c.pathname.includes("?"),wd("?","pathname","search",c)),_t(!c.pathname||!c.pathname.includes("#"),wd("#","pathname","hash",c)),_t(!c.search||!c.search.includes("#"),wd("#","search","hash",c)));let u=r===""||c.pathname==="",m=u?"/":c.pathname,f;if(m==null)f=l;else{let v=a.length-1;if(!o&&m.startsWith("..")){let k=m.split("/");for(;k[0]==="..";)k.shift(),v-=1;c.pathname=k.join("/")}f=v>=0?a[v]:"/"}let p=Yv(c,f),y=m&&m!=="/"&&m.endsWith("/"),g=(u||m===".")&&l.endsWith("/");return!p.pathname.endsWith("/")&&(y||g)&&(p.pathname+="/"),p}const ln=r=>r.join("/").replace(/\/\/+/g,"/"),qv=r=>r.replace(/\/+$/,"").replace(/^\/*/,"/"),Xv=r=>!r||r==="?"?"":r.startsWith("?")?r:"?"+r,Jv=r=>!r||r==="#"?"":r.startsWith("#")?r:"#"+r;function Zv(r){return r!=null&&typeof r.status=="number"&&typeof r.statusText=="string"&&typeof r.internal=="boolean"&&"data"in r}const Mx=["post","put","patch","delete"];new Set(Mx);const ej=["get",...Mx];new Set(ej);/** * React Router v6.30.3 * * Copyright (c) Remix Software Inc. @@ -55,7 +55,7 @@ Error generating stack: `+x.message+` * LICENSE.md file in the root directory of this source tree. * * @license MIT - */function Il(){return Il=Object.assign?Object.assign.bind():function(r){for(var a=1;a{f.current=!0}),h.useCallback(function(y,p){if(p===void 0&&(p={}),!f.current)return;if(typeof y=="number"){o.go(y);return}let v=gu(y,JSON.parse(m),u,p.relative==="path");r==null&&a!=="/"&&(v.pathname=v.pathname==="/"?a:ln([a,v.pathname])),(p.replace?o.replace:o.push)(v,p.state,p)},[a,o,m,u,r])}const nj=h.createContext(null);function aj(r){let a=h.useContext(Ir).outlet;return a&&h.createElement(nj.Provider,{value:r},a)}function Lx(r,a){let{relative:l}=a===void 0?{}:a,{future:o}=h.useContext(xn),{matches:c}=h.useContext(Ir),{pathname:u}=pn(),m=JSON.stringify(pu(c,o.v7_relativeSplatPath));return h.useMemo(()=>gu(r,JSON.parse(m),u,l==="path"),[r,m,u,l])}function lj(r,a){return ij(r,a)}function ij(r,a,l,o){La()||_t(!1);let{navigator:c}=h.useContext(xn),{matches:u}=h.useContext(Ir),m=u[u.length-1],f=m?m.params:{};m&&m.pathname;let g=m?m.pathnameBase:"/";m&&m.route;let y=pn(),p;if(a){var v;let b=typeof a=="string"?Da(a):a;g==="/"||(v=b.pathname)!=null&&v.startsWith(g)||_t(!1),p=b}else p=y;let E=p.pathname||"/",P=E;if(g!=="/"){let b=g.replace(/^\//,"").split("/");P="/"+E.replace(/^\//,"").split("/").slice(b.length).join("/")}let T=Iv(r,{pathname:P}),w=hj(T&&T.map(b=>Object.assign({},b,{params:Object.assign({},f,b.params),pathname:ln([g,c.encodeLocation?c.encodeLocation(b.pathname).pathname:b.pathname]),pathnameBase:b.pathnameBase==="/"?g:ln([g,c.encodeLocation?c.encodeLocation(b.pathnameBase).pathname:b.pathnameBase])})),u,l,o);return a&&w?h.createElement(No.Provider,{value:{location:Il({pathname:"/",search:"",hash:"",state:null,key:"default"},p),navigationType:nn.Pop}},w):w}function oj(){let r=pj(),a=Zv(r)?r.status+" "+r.statusText:r instanceof Error?r.message:JSON.stringify(r),l=r instanceof Error?r.stack:null,c={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return h.createElement(h.Fragment,null,h.createElement("h2",null,"Unexpected Application Error!"),h.createElement("h3",{style:{fontStyle:"italic"}},a),l?h.createElement("pre",{style:c},l):null,null)}const cj=h.createElement(oj,null);class dj extends h.Component{constructor(a){super(a),this.state={location:a.location,revalidation:a.revalidation,error:a.error}}static getDerivedStateFromError(a){return{error:a}}static getDerivedStateFromProps(a,l){return l.location!==a.location||l.revalidation!=="idle"&&a.revalidation==="idle"?{error:a.error,location:a.location,revalidation:a.revalidation}:{error:a.error!==void 0?a.error:l.error,location:l.location,revalidation:a.revalidation||l.revalidation}}componentDidCatch(a,l){console.error("React Router caught the following error during render",a,l)}render(){return this.state.error!==void 0?h.createElement(Ir.Provider,{value:this.props.routeContext},h.createElement(Ax.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function uj(r){let{routeContext:a,match:l,children:o}=r,c=h.useContext(yu);return c&&c.static&&c.staticContext&&(l.route.errorElement||l.route.ErrorBoundary)&&(c.staticContext._deepestRenderedBoundaryId=l.route.id),h.createElement(Ir.Provider,{value:a},o)}function hj(r,a,l,o){var c;if(a===void 0&&(a=[]),l===void 0&&(l=null),o===void 0&&(o=null),r==null){var u;if(!l)return null;if(l.errors)r=l.matches;else if((u=o)!=null&&u.v7_partialHydration&&a.length===0&&!l.initialized&&l.matches.length>0)r=l.matches;else return null}let m=r,f=(c=l)==null?void 0:c.errors;if(f!=null){let p=m.findIndex(v=>v.route.id&&(f==null?void 0:f[v.route.id])!==void 0);p>=0||_t(!1),m=m.slice(0,Math.min(m.length,p+1))}let g=!1,y=-1;if(l&&o&&o.v7_partialHydration)for(let p=0;p=0?m=m.slice(0,y+1):m=[m[0]];break}}}return m.reduceRight((p,v,E)=>{let P,T=!1,w=null,b=null;l&&(P=f&&v.route.id?f[v.route.id]:void 0,w=v.route.errorElement||cj,g&&(y<0&&E===0?(yj("route-fallback"),T=!0,b=null):y===E&&(T=!0,b=v.route.hydrateFallbackElement||null)));let N=a.concat(m.slice(0,E+1)),C=()=>{let j;return P?j=w:T?j=b:v.route.Component?j=h.createElement(v.route.Component,null):v.route.element?j=v.route.element:j=p,h.createElement(uj,{match:v,routeContext:{outlet:p,matches:N,isDataRoute:l!=null},children:j})};return l&&(v.route.ErrorBoundary||v.route.errorElement||E===0)?h.createElement(dj,{location:l.location,revalidation:l.revalidation,component:w,error:P,children:C(),routeContext:{outlet:null,matches:N,isDataRoute:!0}}):C()},null)}var Ox=(function(r){return r.UseBlocker="useBlocker",r.UseRevalidator="useRevalidator",r.UseNavigateStable="useNavigate",r})(Ox||{}),Fx=(function(r){return r.UseBlocker="useBlocker",r.UseLoaderData="useLoaderData",r.UseActionData="useActionData",r.UseRouteError="useRouteError",r.UseNavigation="useNavigation",r.UseRouteLoaderData="useRouteLoaderData",r.UseMatches="useMatches",r.UseRevalidator="useRevalidator",r.UseNavigateStable="useNavigate",r.UseRouteId="useRouteId",r})(Fx||{});function mj(r){let a=h.useContext(yu);return a||_t(!1),a}function fj(r){let a=h.useContext(tj);return a||_t(!1),a}function xj(r){let a=h.useContext(Ir);return a||_t(!1),a}function zx(r){let a=xj(),l=a.matches[a.matches.length-1];return l.route.id||_t(!1),l.route.id}function pj(){var r;let a=h.useContext(Ax),l=fj(),o=zx();return a!==void 0?a:(r=l.errors)==null?void 0:r[o]}function gj(){let{router:r}=mj(Ox.UseNavigateStable),a=zx(Fx.UseNavigateStable),l=h.useRef(!1);return Dx(()=>{l.current=!0}),h.useCallback(function(c,u){u===void 0&&(u={}),l.current&&(typeof c=="number"?r.navigate(c):r.navigate(c,Il({fromRouteId:a},u)))},[r,a])}const _f={};function yj(r,a,l){_f[r]||(_f[r]=!0)}function vj(r,a){r==null||r.v7_startTransition,r==null||r.v7_relativeSplatPath}function Sd(r){let{to:a,replace:l,state:o,relative:c}=r;La()||_t(!1);let{future:u,static:m}=h.useContext(xn),{matches:f}=h.useContext(Ir),{pathname:g}=pn(),y=Oa(),p=gu(a,pu(f,u.v7_relativeSplatPath),g,c==="path"),v=JSON.stringify(p);return h.useEffect(()=>y(JSON.parse(v),{replace:l,state:o,relative:c}),[y,v,c,l,o]),null}function jj(r){return aj(r.context)}function yt(r){_t(!1)}function bj(r){let{basename:a="/",children:l=null,location:o,navigationType:c=nn.Pop,navigator:u,static:m=!1,future:f}=r;La()&&_t(!1);let g=a.replace(/^\/*/,"/"),y=h.useMemo(()=>({basename:g,navigator:u,static:m,future:Il({v7_relativeSplatPath:!1},f)}),[g,f,u,m]);typeof o=="string"&&(o=Da(o));let{pathname:p="/",search:v="",hash:E="",state:P=null,key:T="default"}=o,w=h.useMemo(()=>{let b=xu(p,g);return b==null?null:{location:{pathname:b,search:v,hash:E,state:P,key:T},navigationType:c}},[g,p,v,E,P,T,c]);return w==null?null:h.createElement(xn.Provider,{value:y},h.createElement(No.Provider,{children:l,value:w}))}function Nj(r){let{children:a,location:l}=r;return lj(Vd(a),l)}new Promise(()=>{});function Vd(r,a){a===void 0&&(a=[]);let l=[];return h.Children.forEach(r,(o,c)=>{if(!h.isValidElement(o))return;let u=[...a,c];if(o.type===h.Fragment){l.push.apply(l,Vd(o.props.children,u));return}o.type!==yt&&_t(!1),!o.props.index||!o.props.children||_t(!1);let m={id:o.props.id||u.join("-"),caseSensitive:o.props.caseSensitive,element:o.props.element,Component:o.props.Component,index:o.props.index,path:o.props.path,loader:o.props.loader,action:o.props.action,errorElement:o.props.errorElement,ErrorBoundary:o.props.ErrorBoundary,hasErrorBoundary:o.props.ErrorBoundary!=null||o.props.errorElement!=null,shouldRevalidate:o.props.shouldRevalidate,handle:o.props.handle,lazy:o.props.lazy};o.props.children&&(m.children=Vd(o.props.children,u)),l.push(m)}),l}/** + */function Il(){return Il=Object.assign?Object.assign.bind():function(r){for(var a=1;a{f.current=!0}),h.useCallback(function(y,g){if(g===void 0&&(g={}),!f.current)return;if(typeof y=="number"){o.go(y);return}let v=gu(y,JSON.parse(m),u,g.relative==="path");r==null&&a!=="/"&&(v.pathname=v.pathname==="/"?a:ln([a,v.pathname])),(g.replace?o.replace:o.push)(v,g.state,g)},[a,o,m,u,r])}const nj=h.createContext(null);function aj(r){let a=h.useContext(Ir).outlet;return a&&h.createElement(nj.Provider,{value:r},a)}function Lx(r,a){let{relative:l}=a===void 0?{}:a,{future:o}=h.useContext(xn),{matches:c}=h.useContext(Ir),{pathname:u}=pn(),m=JSON.stringify(pu(c,o.v7_relativeSplatPath));return h.useMemo(()=>gu(r,JSON.parse(m),u,l==="path"),[r,m,u,l])}function lj(r,a){return ij(r,a)}function ij(r,a,l,o){Oa()||_t(!1);let{navigator:c}=h.useContext(xn),{matches:u}=h.useContext(Ir),m=u[u.length-1],f=m?m.params:{};m&&m.pathname;let p=m?m.pathnameBase:"/";m&&m.route;let y=pn(),g;if(a){var v;let N=typeof a=="string"?La(a):a;p==="/"||(v=N.pathname)!=null&&v.startsWith(p)||_t(!1),g=N}else g=y;let k=g.pathname||"/",P=k;if(p!=="/"){let N=p.replace(/^\//,"").split("/");P="/"+k.replace(/^\//,"").split("/").slice(N.length).join("/")}let T=Iv(r,{pathname:P}),w=hj(T&&T.map(N=>Object.assign({},N,{params:Object.assign({},f,N.params),pathname:ln([p,c.encodeLocation?c.encodeLocation(N.pathname).pathname:N.pathname]),pathnameBase:N.pathnameBase==="/"?p:ln([p,c.encodeLocation?c.encodeLocation(N.pathnameBase).pathname:N.pathnameBase])})),u,l,o);return a&&w?h.createElement(No.Provider,{value:{location:Il({pathname:"/",search:"",hash:"",state:null,key:"default"},g),navigationType:nn.Pop}},w):w}function oj(){let r=pj(),a=Zv(r)?r.status+" "+r.statusText:r instanceof Error?r.message:JSON.stringify(r),l=r instanceof Error?r.stack:null,c={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return h.createElement(h.Fragment,null,h.createElement("h2",null,"Unexpected Application Error!"),h.createElement("h3",{style:{fontStyle:"italic"}},a),l?h.createElement("pre",{style:c},l):null,null)}const cj=h.createElement(oj,null);class dj extends h.Component{constructor(a){super(a),this.state={location:a.location,revalidation:a.revalidation,error:a.error}}static getDerivedStateFromError(a){return{error:a}}static getDerivedStateFromProps(a,l){return l.location!==a.location||l.revalidation!=="idle"&&a.revalidation==="idle"?{error:a.error,location:a.location,revalidation:a.revalidation}:{error:a.error!==void 0?a.error:l.error,location:l.location,revalidation:a.revalidation||l.revalidation}}componentDidCatch(a,l){console.error("React Router caught the following error during render",a,l)}render(){return this.state.error!==void 0?h.createElement(Ir.Provider,{value:this.props.routeContext},h.createElement(Ax.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function uj(r){let{routeContext:a,match:l,children:o}=r,c=h.useContext(yu);return c&&c.static&&c.staticContext&&(l.route.errorElement||l.route.ErrorBoundary)&&(c.staticContext._deepestRenderedBoundaryId=l.route.id),h.createElement(Ir.Provider,{value:a},o)}function hj(r,a,l,o){var c;if(a===void 0&&(a=[]),l===void 0&&(l=null),o===void 0&&(o=null),r==null){var u;if(!l)return null;if(l.errors)r=l.matches;else if((u=o)!=null&&u.v7_partialHydration&&a.length===0&&!l.initialized&&l.matches.length>0)r=l.matches;else return null}let m=r,f=(c=l)==null?void 0:c.errors;if(f!=null){let g=m.findIndex(v=>v.route.id&&(f==null?void 0:f[v.route.id])!==void 0);g>=0||_t(!1),m=m.slice(0,Math.min(m.length,g+1))}let p=!1,y=-1;if(l&&o&&o.v7_partialHydration)for(let g=0;g=0?m=m.slice(0,y+1):m=[m[0]];break}}}return m.reduceRight((g,v,k)=>{let P,T=!1,w=null,N=null;l&&(P=f&&v.route.id?f[v.route.id]:void 0,w=v.route.errorElement||cj,p&&(y<0&&k===0?(yj("route-fallback"),T=!0,N=null):y===k&&(T=!0,N=v.route.hydrateFallbackElement||null)));let b=a.concat(m.slice(0,k+1)),S=()=>{let j;return P?j=w:T?j=N:v.route.Component?j=h.createElement(v.route.Component,null):v.route.element?j=v.route.element:j=g,h.createElement(uj,{match:v,routeContext:{outlet:g,matches:b,isDataRoute:l!=null},children:j})};return l&&(v.route.ErrorBoundary||v.route.errorElement||k===0)?h.createElement(dj,{location:l.location,revalidation:l.revalidation,component:w,error:P,children:S(),routeContext:{outlet:null,matches:b,isDataRoute:!0}}):S()},null)}var Ox=(function(r){return r.UseBlocker="useBlocker",r.UseRevalidator="useRevalidator",r.UseNavigateStable="useNavigate",r})(Ox||{}),Fx=(function(r){return r.UseBlocker="useBlocker",r.UseLoaderData="useLoaderData",r.UseActionData="useActionData",r.UseRouteError="useRouteError",r.UseNavigation="useNavigation",r.UseRouteLoaderData="useRouteLoaderData",r.UseMatches="useMatches",r.UseRevalidator="useRevalidator",r.UseNavigateStable="useNavigate",r.UseRouteId="useRouteId",r})(Fx||{});function mj(r){let a=h.useContext(yu);return a||_t(!1),a}function fj(r){let a=h.useContext(tj);return a||_t(!1),a}function xj(r){let a=h.useContext(Ir);return a||_t(!1),a}function zx(r){let a=xj(),l=a.matches[a.matches.length-1];return l.route.id||_t(!1),l.route.id}function pj(){var r;let a=h.useContext(Ax),l=fj(),o=zx();return a!==void 0?a:(r=l.errors)==null?void 0:r[o]}function gj(){let{router:r}=mj(Ox.UseNavigateStable),a=zx(Fx.UseNavigateStable),l=h.useRef(!1);return Dx(()=>{l.current=!0}),h.useCallback(function(c,u){u===void 0&&(u={}),l.current&&(typeof c=="number"?r.navigate(c):r.navigate(c,Il({fromRouteId:a},u)))},[r,a])}const _f={};function yj(r,a,l){_f[r]||(_f[r]=!0)}function vj(r,a){r==null||r.v7_startTransition,r==null||r.v7_relativeSplatPath}function Sd(r){let{to:a,replace:l,state:o,relative:c}=r;Oa()||_t(!1);let{future:u,static:m}=h.useContext(xn),{matches:f}=h.useContext(Ir),{pathname:p}=pn(),y=gn(),g=gu(a,pu(f,u.v7_relativeSplatPath),p,c==="path"),v=JSON.stringify(g);return h.useEffect(()=>y(JSON.parse(v),{replace:l,state:o,relative:c}),[y,v,c,l,o]),null}function jj(r){return aj(r.context)}function yt(r){_t(!1)}function bj(r){let{basename:a="/",children:l=null,location:o,navigationType:c=nn.Pop,navigator:u,static:m=!1,future:f}=r;Oa()&&_t(!1);let p=a.replace(/^\/*/,"/"),y=h.useMemo(()=>({basename:p,navigator:u,static:m,future:Il({v7_relativeSplatPath:!1},f)}),[p,f,u,m]);typeof o=="string"&&(o=La(o));let{pathname:g="/",search:v="",hash:k="",state:P=null,key:T="default"}=o,w=h.useMemo(()=>{let N=xu(g,p);return N==null?null:{location:{pathname:N,search:v,hash:k,state:P,key:T},navigationType:c}},[p,g,v,k,P,T,c]);return w==null?null:h.createElement(xn.Provider,{value:y},h.createElement(No.Provider,{children:l,value:w}))}function Nj(r){let{children:a,location:l}=r;return lj(Vd(a),l)}new Promise(()=>{});function Vd(r,a){a===void 0&&(a=[]);let l=[];return h.Children.forEach(r,(o,c)=>{if(!h.isValidElement(o))return;let u=[...a,c];if(o.type===h.Fragment){l.push.apply(l,Vd(o.props.children,u));return}o.type!==yt&&_t(!1),!o.props.index||!o.props.children||_t(!1);let m={id:o.props.id||u.join("-"),caseSensitive:o.props.caseSensitive,element:o.props.element,Component:o.props.Component,index:o.props.index,path:o.props.path,loader:o.props.loader,action:o.props.action,errorElement:o.props.errorElement,ErrorBoundary:o.props.ErrorBoundary,hasErrorBoundary:o.props.ErrorBoundary!=null||o.props.errorElement!=null,shouldRevalidate:o.props.shouldRevalidate,handle:o.props.handle,lazy:o.props.lazy};o.props.children&&(m.children=Vd(o.props.children,u)),l.push(m)}),l}/** * React Router DOM v6.30.3 * * Copyright (c) Remix Software Inc. @@ -64,7 +64,7 @@ Error generating stack: `+x.message+` * LICENSE.md file in the root directory of this source tree. * * @license MIT - */function Wd(){return Wd=Object.assign?Object.assign.bind():function(r){for(var a=1;a=0)&&(l[c]=r[c]);return l}function Sj(r){return!!(r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)}function Cj(r,a){return r.button===0&&(!a||a==="_self")&&!Sj(r)}function Hd(r){return r===void 0&&(r=""),new URLSearchParams(typeof r=="string"||Array.isArray(r)||r instanceof URLSearchParams?r:Object.keys(r).reduce((a,l)=>{let o=r[l];return a.concat(Array.isArray(o)?o.map(c=>[l,c]):[[l,o]])},[]))}function kj(r,a){let l=Hd(r);return a&&a.forEach((o,c)=>{l.has(c)||a.getAll(c).forEach(u=>{l.append(c,u)})}),l}const Ej=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],Pj="6";try{window.__reactRouterVersion=Pj}catch{}const Tj="startTransition",Mf=bo[Tj];function Rj(r){let{basename:a,children:l,future:o,window:c}=r,u=h.useRef();u.current==null&&(u.current=Pv({window:c,v5Compat:!0}));let m=u.current,[f,g]=h.useState({action:m.action,location:m.location}),{v7_startTransition:y}=o||{},p=h.useCallback(v=>{y&&Mf?Mf(()=>g(v)):g(v)},[g,y]);return h.useLayoutEffect(()=>m.listen(p),[m,p]),h.useEffect(()=>vj(o),[o]),h.createElement(bj,{basename:a,children:l,location:f.location,navigationType:f.action,navigator:m,future:o})}const Ij=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",_j=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Kd=h.forwardRef(function(a,l){let{onClick:o,relative:c,reloadDocument:u,replace:m,state:f,target:g,to:y,preventScrollReset:p,viewTransition:v}=a,E=wj(a,Ej),{basename:P}=h.useContext(xn),T,w=!1;if(typeof y=="string"&&_j.test(y)&&(T=y,Ij))try{let j=new URL(window.location.href),I=y.startsWith("//")?new URL(j.protocol+y):new URL(y),U=xu(I.pathname,P);I.origin===j.origin&&U!=null?y=U+I.search+I.hash:w=!0}catch{}let b=sj(y,{relative:c}),N=Mj(y,{replace:m,state:f,target:g,preventScrollReset:p,relative:c,viewTransition:v});function C(j){o&&o(j),j.defaultPrevented||N(j)}return h.createElement("a",Wd({},E,{href:T||b,onClick:w||u?o:C,ref:l,target:g}))});var Af;(function(r){r.UseScrollRestoration="useScrollRestoration",r.UseSubmit="useSubmit",r.UseSubmitFetcher="useSubmitFetcher",r.UseFetcher="useFetcher",r.useViewTransitionState="useViewTransitionState"})(Af||(Af={}));var Df;(function(r){r.UseFetcher="useFetcher",r.UseFetchers="useFetchers",r.UseScrollRestoration="useScrollRestoration"})(Df||(Df={}));function Mj(r,a){let{target:l,replace:o,state:c,preventScrollReset:u,relative:m,viewTransition:f}=a===void 0?{}:a,g=Oa(),y=pn(),p=Lx(r,{relative:m});return h.useCallback(v=>{if(Cj(v,l)){v.preventDefault();let E=o!==void 0?o:io(y)===io(p);g(r,{replace:E,state:c,preventScrollReset:u,relative:m,viewTransition:f})}},[y,g,p,o,c,l,r,u,m,f])}function $x(r){let a=h.useRef(Hd(r)),l=h.useRef(!1),o=pn(),c=h.useMemo(()=>kj(o.search,l.current?null:a.current),[o.search]),u=Oa(),m=h.useCallback((f,g)=>{const y=Hd(typeof f=="function"?f(c):f);l.current=!0,u("?"+y,g)},[u,c]);return[c,m]}/** + */function Wd(){return Wd=Object.assign?Object.assign.bind():function(r){for(var a=1;a=0)&&(l[c]=r[c]);return l}function Sj(r){return!!(r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)}function Cj(r,a){return r.button===0&&(!a||a==="_self")&&!Sj(r)}function Hd(r){return r===void 0&&(r=""),new URLSearchParams(typeof r=="string"||Array.isArray(r)||r instanceof URLSearchParams?r:Object.keys(r).reduce((a,l)=>{let o=r[l];return a.concat(Array.isArray(o)?o.map(c=>[l,c]):[[l,o]])},[]))}function kj(r,a){let l=Hd(r);return a&&a.forEach((o,c)=>{l.has(c)||a.getAll(c).forEach(u=>{l.append(c,u)})}),l}const Ej=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],Pj="6";try{window.__reactRouterVersion=Pj}catch{}const Tj="startTransition",Mf=bo[Tj];function Rj(r){let{basename:a,children:l,future:o,window:c}=r,u=h.useRef();u.current==null&&(u.current=Pv({window:c,v5Compat:!0}));let m=u.current,[f,p]=h.useState({action:m.action,location:m.location}),{v7_startTransition:y}=o||{},g=h.useCallback(v=>{y&&Mf?Mf(()=>p(v)):p(v)},[p,y]);return h.useLayoutEffect(()=>m.listen(g),[m,g]),h.useEffect(()=>vj(o),[o]),h.createElement(bj,{basename:a,children:l,location:f.location,navigationType:f.action,navigator:m,future:o})}const Ij=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",_j=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Kd=h.forwardRef(function(a,l){let{onClick:o,relative:c,reloadDocument:u,replace:m,state:f,target:p,to:y,preventScrollReset:g,viewTransition:v}=a,k=wj(a,Ej),{basename:P}=h.useContext(xn),T,w=!1;if(typeof y=="string"&&_j.test(y)&&(T=y,Ij))try{let j=new URL(window.location.href),_=y.startsWith("//")?new URL(j.protocol+y):new URL(y),O=xu(_.pathname,P);_.origin===j.origin&&O!=null?y=O+_.search+_.hash:w=!0}catch{}let N=sj(y,{relative:c}),b=Mj(y,{replace:m,state:f,target:p,preventScrollReset:g,relative:c,viewTransition:v});function S(j){o&&o(j),j.defaultPrevented||b(j)}return h.createElement("a",Wd({},k,{href:T||N,onClick:w||u?o:S,ref:l,target:p}))});var Af;(function(r){r.UseScrollRestoration="useScrollRestoration",r.UseSubmit="useSubmit",r.UseSubmitFetcher="useSubmitFetcher",r.UseFetcher="useFetcher",r.useViewTransitionState="useViewTransitionState"})(Af||(Af={}));var Df;(function(r){r.UseFetcher="useFetcher",r.UseFetchers="useFetchers",r.UseScrollRestoration="useScrollRestoration"})(Df||(Df={}));function Mj(r,a){let{target:l,replace:o,state:c,preventScrollReset:u,relative:m,viewTransition:f}=a===void 0?{}:a,p=gn(),y=pn(),g=Lx(r,{relative:m});return h.useCallback(v=>{if(Cj(v,l)){v.preventDefault();let k=o!==void 0?o:io(y)===io(g);p(r,{replace:k,state:c,preventScrollReset:u,relative:m,viewTransition:f})}},[y,p,g,o,c,l,r,u,m,f])}function $x(r){let a=h.useRef(Hd(r)),l=h.useRef(!1),o=pn(),c=h.useMemo(()=>kj(o.search,l.current?null:a.current),[o.search]),u=gn(),m=h.useCallback((f,p)=>{const y=Hd(typeof f=="function"?f(c):f);l.current=!0,u("?"+y,p)},[u,c]);return[c,m]}/** * @license lucide-react v0.562.0 - ISC * * This source code is licensed under the ISC license. @@ -79,7 +79,7 @@ Error generating stack: `+x.message+` * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Fj=h.forwardRef(({color:r="currentColor",size:a=24,strokeWidth:l=2,absoluteStrokeWidth:o,className:c="",children:u,iconNode:m,...f},g)=>h.createElement("svg",{ref:g,...Oj,width:a,height:a,stroke:r,strokeWidth:o?Number(l)*24/Number(a):l,className:Bx("lucide",c),...!u&&!Lj(f)&&{"aria-hidden":"true"},...f},[...m.map(([y,p])=>h.createElement(y,p)),...Array.isArray(u)?u:[u]]));/** + */const Fj=h.forwardRef(({color:r="currentColor",size:a=24,strokeWidth:l=2,absoluteStrokeWidth:o,className:c="",children:u,iconNode:m,...f},p)=>h.createElement("svg",{ref:p,...Oj,width:a,height:a,stroke:r,strokeWidth:o?Number(l)*24/Number(a):l,className:Bx("lucide",c),...!u&&!Lj(f)&&{"aria-hidden":"true"},...f},[...m.map(([y,g])=>h.createElement(y,g)),...Array.isArray(u)?u:[u]]));/** * @license lucide-react v0.562.0 - ISC * * This source code is licensed under the ISC license. @@ -309,7 +309,7 @@ Error generating stack: `+x.message+` * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Hb=[["polygon",{points:"3 11 22 2 13 21 11 13 3 11",key:"1ltx0t"}]],Ea=Ee("navigation",Hb);/** + */const Hb=[["polygon",{points:"3 11 22 2 13 21 11 13 3 11",key:"1ltx0t"}]],Pa=Ee("navigation",Hb);/** * @license lucide-react v0.562.0 - ISC * * This source code is licensed under the ISC license. @@ -364,7 +364,7 @@ Error generating stack: `+x.message+` * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const lN=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],$n=Ee("settings",lN);/** + */const lN=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],Bn=Ee("settings",lN);/** * @license lucide-react v0.562.0 - ISC * * This source code is licensed under the ISC license. @@ -399,7 +399,7 @@ Error generating stack: `+x.message+` * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const mN=[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]],Pa=Ee("trending-up",mN);/** + */const mN=[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]],Ta=Ee("trending-up",mN);/** * @license lucide-react v0.562.0 - ISC * * This source code is licensed under the ISC license. @@ -424,7 +424,7 @@ Error generating stack: `+x.message+` * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const vN=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],Ta=Ee("user",vN);/** + */const vN=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],Ra=Ee("user",vN);/** * @license lucide-react v0.562.0 - ISC * * This source code is licensed under the ISC license. @@ -434,7 +434,7 @@ Error generating stack: `+x.message+` * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const bN=[["path",{d:"M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1",key:"18etb6"}],["path",{d:"M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4",key:"xoc0q4"}]],_a=Ee("wallet",bN);/** + */const bN=[["path",{d:"M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1",key:"18etb6"}],["path",{d:"M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4",key:"xoc0q4"}]],Ma=Ee("wallet",bN);/** * @license lucide-react v0.562.0 - ISC * * This source code is licensed under the ISC license. @@ -444,12 +444,12 @@ Error generating stack: `+x.message+` * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const wN=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],an=Ee("zap",wN),ju="admin_token";function bu(){try{return localStorage.getItem(ju)}catch{return null}}function SN(r){try{localStorage.setItem(ju,r)}catch{}}function CN(){try{localStorage.removeItem(ju)}catch{}}const kN="https://soulapi.quwanzhi.com",EN=15e3,PN=()=>{const r="https://soulapi.quwanzhi.com";return r.length>0?r.replace(/\/$/,""):kN};function Ma(r){const a=PN(),l=r.startsWith("/")?r:`/${r}`;return a?`${a}${l}`:l}async function So(r,a={}){const{data:l,...o}=a,c=Ma(r),u=new Headers(o.headers),m=bu();m&&u.set("Authorization",`Bearer ${m}`),l!=null&&!u.has("Content-Type")&&u.set("Content-Type","application/json");const f=l!=null?JSON.stringify(l):o.body,g=new AbortController,y=setTimeout(()=>g.abort(),EN),p=await fetch(c,{...o,headers:u,body:f,credentials:"include",signal:g.signal}).finally(()=>clearTimeout(y)),E=(p.headers.get("Content-Type")||"").includes("application/json")?await p.json():p;if(!p.ok){const P=new Error((E==null?void 0:E.error)||`HTTP ${p.status}`);throw P.status=p.status,P.data=E,P}return E}function Be(r,a){return So(r,{...a,method:"GET"})}function mt(r,a,l){return So(r,{...l,method:"POST",data:a})}function vt(r,a,l){return So(r,{...l,method:"PUT",data:a})}function Pr(r,a){return So(r,{...a,method:"DELETE"})}const TN=[{icon:Mb,label:"数据概览",href:"/dashboard"},{icon:qs,label:"内容管理",href:"/content"},{icon:Yt,label:"用户管理",href:"/users"},{icon:jb,label:"找伙伴",href:"/find-partner"},{icon:_a,label:"推广中心",href:"/distribution"}];function RN(){const r=pn(),a=Oa(),[l,o]=h.useState(!1),[c,u]=h.useState(!1);h.useEffect(()=>{o(!0)},[]),h.useEffect(()=>{if(!l)return;u(!1);let f=!1;return Be("/api/admin").then(g=>{f||(g&&g.success!==!1?u(!0):a("/login",{replace:!0}))}).catch(()=>{f||a("/login",{replace:!0})}),()=>{f=!0}},[l,a]);const m=async()=>{CN();try{await mt("/api/admin/logout",{})}catch{}a("/login",{replace:!0})};return!l||!c?e.jsxs("div",{className:"flex min-h-screen bg-[#0a1628]",children:[e.jsx("div",{className:"w-64 bg-[#0f2137] border-r border-gray-700/50"}),e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsx("div",{className:"text-[#38bdac]",children:"加载中..."})})]}):e.jsxs("div",{className:"flex min-h-screen bg-[#0a1628]",children:[e.jsxs("div",{className:"w-64 bg-[#0f2137] flex flex-col border-r border-gray-700/50 shadow-xl",children:[e.jsxs("div",{className:"p-6 border-b border-gray-700/50",children:[e.jsx("h1",{className:"text-xl font-bold text-[#38bdac]",children:"管理后台"}),e.jsx("p",{className:"text-xs text-gray-400 mt-1",children:"Soul创业派对"})]}),e.jsxs("nav",{className:"flex-1 p-4 space-y-1 overflow-y-auto",children:[TN.map(f=>{const g=r.pathname===f.href;return e.jsxs(Kd,{to:f.href,className:`flex items-center gap-3 px-4 py-3 rounded-lg transition-colors ${g?"bg-[#38bdac]/20 text-[#38bdac] font-medium":"text-gray-400 hover:bg-gray-700/50 hover:text-white"}`,children:[e.jsx(f.icon,{className:"w-5 h-5 shrink-0"}),e.jsx("span",{className:"text-sm",children:f.label})]},f.href)}),e.jsx("div",{className:"pt-4 mt-4 border-t border-gray-700/50",children:e.jsxs(Kd,{to:"/settings",className:`flex items-center gap-3 px-4 py-3 rounded-lg transition-colors ${r.pathname==="/settings"?"bg-[#38bdac]/20 text-[#38bdac] font-medium":"text-gray-400 hover:bg-gray-700/50 hover:text-white"}`,children:[e.jsx($n,{className:"w-5 h-5 shrink-0"}),e.jsx("span",{className:"text-sm",children:"系统设置"})]})})]}),e.jsx("div",{className:"p-4 border-t border-gray-700/50 space-y-1",children:e.jsxs("button",{type:"button",onClick:m,className:"w-full flex items-center gap-3 px-4 py-3 text-gray-400 hover:text-white rounded-lg hover:bg-gray-700/50 transition-colors",children:[e.jsx(zb,{className:"w-5 h-5"}),e.jsx("span",{className:"text-sm",children:"退出登录"})]})})]}),e.jsx("div",{className:"flex-1 overflow-auto bg-[#0a1628] min-w-0",children:e.jsx("div",{className:"w-full min-w-[1024px] min-h-full",children:e.jsx(jj,{})})})]})}function Vf(r,a){if(typeof r=="function")return r(a);r!=null&&(r.current=a)}function Nu(...r){return a=>{let l=!1;const o=r.map(c=>{const u=Vf(c,a);return!l&&typeof u=="function"&&(l=!0),u});if(l)return()=>{for(let c=0;c{let{children:u,...m}=o;qx(u)&&typeof ho=="function"&&(u=ho(u._payload));const f=h.Children.toArray(u),g=f.find(DN);if(g){const y=g.props.children,p=f.map(v=>v===g?h.Children.count(y)>1?h.Children.only(null):h.isValidElement(y)?y.props.children:null:v);return e.jsx(a,{...m,ref:c,children:h.isValidElement(y)?h.cloneElement(y,void 0,p):null})}return e.jsx(a,{...m,ref:c,children:u})});return l.displayName=`${r}.Slot`,l}var Jx=Xx("Slot");function MN(r){const a=h.forwardRef((l,o)=>{let{children:c,...u}=l;if(qx(c)&&typeof ho=="function"&&(c=ho(c._payload)),h.isValidElement(c)){const m=ON(c),f=LN(u,c.props);return c.type!==h.Fragment&&(f.ref=o?Nu(o,m):m),h.cloneElement(c,f)}return h.Children.count(c)>1?h.Children.only(null):null});return a.displayName=`${r}.SlotClone`,a}var AN=Symbol("radix.slottable");function DN(r){return h.isValidElement(r)&&typeof r.type=="function"&&"__radixId"in r.type&&r.type.__radixId===AN}function LN(r,a){const l={...a};for(const o in a){const c=r[o],u=a[o];/^on[A-Z]/.test(o)?c&&u?l[o]=(...f)=>{const g=u(...f);return c(...f),g}:c&&(l[o]=c):o==="style"?l[o]={...c,...u}:o==="className"&&(l[o]=[c,u].filter(Boolean).join(" "))}return{...r,...l}}function ON(r){var o,c;let a=(o=Object.getOwnPropertyDescriptor(r.props,"ref"))==null?void 0:o.get,l=a&&"isReactWarning"in a&&a.isReactWarning;return l?r.ref:(a=(c=Object.getOwnPropertyDescriptor(r,"ref"))==null?void 0:c.get,l=a&&"isReactWarning"in a&&a.isReactWarning,l?r.props.ref:r.props.ref||r.ref)}function Zx(r){var a,l,o="";if(typeof r=="string"||typeof r=="number")o+=r;else if(typeof r=="object")if(Array.isArray(r)){var c=r.length;for(a=0;atypeof r=="boolean"?`${r}`:r===0?"0":r,Hf=ep,tp=(r,a)=>l=>{var o;if((a==null?void 0:a.variants)==null)return Hf(r,l==null?void 0:l.class,l==null?void 0:l.className);const{variants:c,defaultVariants:u}=a,m=Object.keys(c).map(y=>{const p=l==null?void 0:l[y],v=u==null?void 0:u[y];if(p===null)return null;const E=Wf(p)||Wf(v);return c[y][E]}),f=l&&Object.entries(l).reduce((y,p)=>{let[v,E]=p;return E===void 0||(y[v]=E),y},{}),g=a==null||(o=a.compoundVariants)===null||o===void 0?void 0:o.reduce((y,p)=>{let{class:v,className:E,...P}=p;return Object.entries(P).every(T=>{let[w,b]=T;return Array.isArray(b)?b.includes({...u,...f}[w]):{...u,...f}[w]===b})?[...y,v,E]:y},[]);return Hf(r,m,g,l==null?void 0:l.class,l==null?void 0:l.className)},FN=(r,a)=>{const l=new Array(r.length+a.length);for(let o=0;o({classGroupId:r,validator:a}),sp=(r=new Map,a=null,l)=>({nextPart:r,validators:a,classGroupId:l}),mo="-",Kf=[],$N="arbitrary..",BN=r=>{const a=VN(r),{conflictingClassGroups:l,conflictingClassGroupModifiers:o}=r;return{getClassGroupId:m=>{if(m.startsWith("[")&&m.endsWith("]"))return UN(m);const f=m.split(mo),g=f[0]===""&&f.length>1?1:0;return rp(f,g,a)},getConflictingClassGroupIds:(m,f)=>{if(f){const g=o[m],y=l[m];return g?y?FN(y,g):g:y||Kf}return l[m]||Kf}}},rp=(r,a,l)=>{if(r.length-a===0)return l.classGroupId;const c=r[a],u=l.nextPart.get(c);if(u){const y=rp(r,a+1,u);if(y)return y}const m=l.validators;if(m===null)return;const f=a===0?r.join(mo):r.slice(a).join(mo),g=m.length;for(let y=0;yr.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const a=r.slice(1,-1),l=a.indexOf(":"),o=a.slice(0,l);return o?$N+o:void 0})(),VN=r=>{const{theme:a,classGroups:l}=r;return WN(l,a)},WN=(r,a)=>{const l=sp();for(const o in r){const c=r[o];wu(c,l,o,a)}return l},wu=(r,a,l,o)=>{const c=r.length;for(let u=0;u{if(typeof r=="string"){KN(r,a,l);return}if(typeof r=="function"){GN(r,a,l,o);return}YN(r,a,l,o)},KN=(r,a,l)=>{const o=r===""?a:np(a,r);o.classGroupId=l},GN=(r,a,l,o)=>{if(QN(r)){wu(r(o),a,l,o);return}a.validators===null&&(a.validators=[]),a.validators.push(zN(l,r))},YN=(r,a,l,o)=>{const c=Object.entries(r),u=c.length;for(let m=0;m{let l=r;const o=a.split(mo),c=o.length;for(let u=0;u"isThemeGetter"in r&&r.isThemeGetter===!0,qN=r=>{if(r<1)return{get:()=>{},set:()=>{}};let a=0,l=Object.create(null),o=Object.create(null);const c=(u,m)=>{l[u]=m,a++,a>r&&(a=0,o=l,l=Object.create(null))};return{get(u){let m=l[u];if(m!==void 0)return m;if((m=o[u])!==void 0)return c(u,m),m},set(u,m){u in l?l[u]=m:c(u,m)}}},Jd="!",Gf=":",XN=[],Yf=(r,a,l,o,c)=>({modifiers:r,hasImportantModifier:a,baseClassName:l,maybePostfixModifierPosition:o,isExternal:c}),JN=r=>{const{prefix:a,experimentalParseClassName:l}=r;let o=c=>{const u=[];let m=0,f=0,g=0,y;const p=c.length;for(let w=0;wg?y-g:void 0;return Yf(u,P,E,T)};if(a){const c=a+Gf,u=o;o=m=>m.startsWith(c)?u(m.slice(c.length)):Yf(XN,!1,m,void 0,!0)}if(l){const c=o;o=u=>l({className:u,parseClassName:c})}return o},ZN=r=>{const a=new Map;return r.orderSensitiveModifiers.forEach((l,o)=>{a.set(l,1e6+o)}),l=>{const o=[];let c=[];for(let u=0;u0&&(c.sort(),o.push(...c),c=[]),o.push(m)):c.push(m)}return c.length>0&&(c.sort(),o.push(...c)),o}},ew=r=>({cache:qN(r.cacheSize),parseClassName:JN(r),sortModifiers:ZN(r),...BN(r)}),tw=/\s+/,sw=(r,a)=>{const{parseClassName:l,getClassGroupId:o,getConflictingClassGroupIds:c,sortModifiers:u}=a,m=[],f=r.trim().split(tw);let g="";for(let y=f.length-1;y>=0;y-=1){const p=f[y],{isExternal:v,modifiers:E,hasImportantModifier:P,baseClassName:T,maybePostfixModifierPosition:w}=l(p);if(v){g=p+(g.length>0?" "+g:g);continue}let b=!!w,N=o(b?T.substring(0,w):T);if(!N){if(!b){g=p+(g.length>0?" "+g:g);continue}if(N=o(T),!N){g=p+(g.length>0?" "+g:g);continue}b=!1}const C=E.length===0?"":E.length===1?E[0]:u(E).join(":"),j=P?C+Jd:C,I=j+N;if(m.indexOf(I)>-1)continue;m.push(I);const U=c(N,b);for(let V=0;V0?" "+g:g)}return g},rw=(...r)=>{let a=0,l,o,c="";for(;a{if(typeof r=="string")return r;let a,l="";for(let o=0;o{let l,o,c,u;const m=g=>{const y=a.reduce((p,v)=>v(p),r());return l=ew(y),o=l.cache.get,c=l.cache.set,u=f,f(g)},f=g=>{const y=o(g);if(y)return y;const p=sw(g,l);return c(g,p),p};return u=m,(...g)=>u(rw(...g))},aw=[],$t=r=>{const a=l=>l[r]||aw;return a.isThemeGetter=!0,a},lp=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,ip=/^\((?:(\w[\w-]*):)?(.+)\)$/i,lw=/^\d+\/\d+$/,iw=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,ow=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,cw=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,dw=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,uw=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ba=r=>lw.test(r),qe=r=>!!r&&!Number.isNaN(Number(r)),Zr=r=>!!r&&Number.isInteger(Number(r)),Pd=r=>r.endsWith("%")&&qe(r.slice(0,-1)),Cr=r=>iw.test(r),hw=()=>!0,mw=r=>ow.test(r)&&!cw.test(r),op=()=>!1,fw=r=>dw.test(r),xw=r=>uw.test(r),pw=r=>!_e(r)&&!Me(r),gw=r=>Fa(r,up,op),_e=r=>lp.test(r),zn=r=>Fa(r,hp,mw),Td=r=>Fa(r,Nw,qe),Qf=r=>Fa(r,cp,op),yw=r=>Fa(r,dp,xw),Qi=r=>Fa(r,mp,fw),Me=r=>ip.test(r),Cl=r=>za(r,hp),vw=r=>za(r,ww),qf=r=>za(r,cp),jw=r=>za(r,up),bw=r=>za(r,dp),qi=r=>za(r,mp,!0),Fa=(r,a,l)=>{const o=lp.exec(r);return o?o[1]?a(o[1]):l(o[2]):!1},za=(r,a,l=!1)=>{const o=ip.exec(r);return o?o[1]?a(o[1]):l:!1},cp=r=>r==="position"||r==="percentage",dp=r=>r==="image"||r==="url",up=r=>r==="length"||r==="size"||r==="bg-size",hp=r=>r==="length",Nw=r=>r==="number",ww=r=>r==="family-name",mp=r=>r==="shadow",Sw=()=>{const r=$t("color"),a=$t("font"),l=$t("text"),o=$t("font-weight"),c=$t("tracking"),u=$t("leading"),m=$t("breakpoint"),f=$t("container"),g=$t("spacing"),y=$t("radius"),p=$t("shadow"),v=$t("inset-shadow"),E=$t("text-shadow"),P=$t("drop-shadow"),T=$t("blur"),w=$t("perspective"),b=$t("aspect"),N=$t("ease"),C=$t("animate"),j=()=>["auto","avoid","all","avoid-page","page","left","right","column"],I=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],U=()=>[...I(),Me,_e],V=()=>["auto","hidden","clip","visible","scroll"],_=()=>["auto","contain","none"],k=()=>[Me,_e,g],R=()=>[ba,"full","auto",...k()],Z=()=>[Zr,"none","subgrid",Me,_e],ne=()=>["auto",{span:["full",Zr,Me,_e]},Zr,Me,_e],ae=()=>[Zr,"auto",Me,_e],Q=()=>["auto","min","max","fr",Me,_e],se=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],H=()=>["start","end","center","stretch","center-safe","end-safe"],oe=()=>["auto",...k()],ve=()=>[ba,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...k()],B=()=>[r,Me,_e],ce=()=>[...I(),qf,Qf,{position:[Me,_e]}],K=()=>["no-repeat",{repeat:["","x","y","space","round"]}],A=()=>["auto","cover","contain",jw,gw,{size:[Me,_e]}],O=()=>[Pd,Cl,zn],L=()=>["","none","full",y,Me,_e],J=()=>["",qe,Cl,zn],G=()=>["solid","dashed","dotted","double"],de=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Y=()=>[qe,Pd,qf,Qf],ge=()=>["","none",T,Me,_e],Se=()=>["none",qe,Me,_e],D=()=>["none",qe,Me,_e],fe=()=>[qe,Me,_e],ke=()=>[ba,"full",...k()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Cr],breakpoint:[Cr],color:[hw],container:[Cr],"drop-shadow":[Cr],ease:["in","out","in-out"],font:[pw],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Cr],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Cr],shadow:[Cr],spacing:["px",qe],text:[Cr],"text-shadow":[Cr],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",ba,_e,Me,b]}],container:["container"],columns:[{columns:[qe,_e,Me,f]}],"break-after":[{"break-after":j()}],"break-before":[{"break-before":j()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:U()}],overflow:[{overflow:V()}],"overflow-x":[{"overflow-x":V()}],"overflow-y":[{"overflow-y":V()}],overscroll:[{overscroll:_()}],"overscroll-x":[{"overscroll-x":_()}],"overscroll-y":[{"overscroll-y":_()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:R()}],"inset-x":[{"inset-x":R()}],"inset-y":[{"inset-y":R()}],start:[{start:R()}],end:[{end:R()}],top:[{top:R()}],right:[{right:R()}],bottom:[{bottom:R()}],left:[{left:R()}],visibility:["visible","invisible","collapse"],z:[{z:[Zr,"auto",Me,_e]}],basis:[{basis:[ba,"full","auto",f,...k()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[qe,ba,"auto","initial","none",_e]}],grow:[{grow:["",qe,Me,_e]}],shrink:[{shrink:["",qe,Me,_e]}],order:[{order:[Zr,"first","last","none",Me,_e]}],"grid-cols":[{"grid-cols":Z()}],"col-start-end":[{col:ne()}],"col-start":[{"col-start":ae()}],"col-end":[{"col-end":ae()}],"grid-rows":[{"grid-rows":Z()}],"row-start-end":[{row:ne()}],"row-start":[{"row-start":ae()}],"row-end":[{"row-end":ae()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":Q()}],"auto-rows":[{"auto-rows":Q()}],gap:[{gap:k()}],"gap-x":[{"gap-x":k()}],"gap-y":[{"gap-y":k()}],"justify-content":[{justify:[...se(),"normal"]}],"justify-items":[{"justify-items":[...H(),"normal"]}],"justify-self":[{"justify-self":["auto",...H()]}],"align-content":[{content:["normal",...se()]}],"align-items":[{items:[...H(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...H(),{baseline:["","last"]}]}],"place-content":[{"place-content":se()}],"place-items":[{"place-items":[...H(),"baseline"]}],"place-self":[{"place-self":["auto",...H()]}],p:[{p:k()}],px:[{px:k()}],py:[{py:k()}],ps:[{ps:k()}],pe:[{pe:k()}],pt:[{pt:k()}],pr:[{pr:k()}],pb:[{pb:k()}],pl:[{pl:k()}],m:[{m:oe()}],mx:[{mx:oe()}],my:[{my:oe()}],ms:[{ms:oe()}],me:[{me:oe()}],mt:[{mt:oe()}],mr:[{mr:oe()}],mb:[{mb:oe()}],ml:[{ml:oe()}],"space-x":[{"space-x":k()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":k()}],"space-y-reverse":["space-y-reverse"],size:[{size:ve()}],w:[{w:[f,"screen",...ve()]}],"min-w":[{"min-w":[f,"screen","none",...ve()]}],"max-w":[{"max-w":[f,"screen","none","prose",{screen:[m]},...ve()]}],h:[{h:["screen","lh",...ve()]}],"min-h":[{"min-h":["screen","lh","none",...ve()]}],"max-h":[{"max-h":["screen","lh",...ve()]}],"font-size":[{text:["base",l,Cl,zn]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[o,Me,Td]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Pd,_e]}],"font-family":[{font:[vw,_e,a]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[c,Me,_e]}],"line-clamp":[{"line-clamp":[qe,"none",Me,Td]}],leading:[{leading:[u,...k()]}],"list-image":[{"list-image":["none",Me,_e]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Me,_e]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:B()}],"text-color":[{text:B()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...G(),"wavy"]}],"text-decoration-thickness":[{decoration:[qe,"from-font","auto",Me,zn]}],"text-decoration-color":[{decoration:B()}],"underline-offset":[{"underline-offset":[qe,"auto",Me,_e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:k()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Me,_e]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Me,_e]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ce()}],"bg-repeat":[{bg:K()}],"bg-size":[{bg:A()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Zr,Me,_e],radial:["",Me,_e],conic:[Zr,Me,_e]},bw,yw]}],"bg-color":[{bg:B()}],"gradient-from-pos":[{from:O()}],"gradient-via-pos":[{via:O()}],"gradient-to-pos":[{to:O()}],"gradient-from":[{from:B()}],"gradient-via":[{via:B()}],"gradient-to":[{to:B()}],rounded:[{rounded:L()}],"rounded-s":[{"rounded-s":L()}],"rounded-e":[{"rounded-e":L()}],"rounded-t":[{"rounded-t":L()}],"rounded-r":[{"rounded-r":L()}],"rounded-b":[{"rounded-b":L()}],"rounded-l":[{"rounded-l":L()}],"rounded-ss":[{"rounded-ss":L()}],"rounded-se":[{"rounded-se":L()}],"rounded-ee":[{"rounded-ee":L()}],"rounded-es":[{"rounded-es":L()}],"rounded-tl":[{"rounded-tl":L()}],"rounded-tr":[{"rounded-tr":L()}],"rounded-br":[{"rounded-br":L()}],"rounded-bl":[{"rounded-bl":L()}],"border-w":[{border:J()}],"border-w-x":[{"border-x":J()}],"border-w-y":[{"border-y":J()}],"border-w-s":[{"border-s":J()}],"border-w-e":[{"border-e":J()}],"border-w-t":[{"border-t":J()}],"border-w-r":[{"border-r":J()}],"border-w-b":[{"border-b":J()}],"border-w-l":[{"border-l":J()}],"divide-x":[{"divide-x":J()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":J()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...G(),"hidden","none"]}],"divide-style":[{divide:[...G(),"hidden","none"]}],"border-color":[{border:B()}],"border-color-x":[{"border-x":B()}],"border-color-y":[{"border-y":B()}],"border-color-s":[{"border-s":B()}],"border-color-e":[{"border-e":B()}],"border-color-t":[{"border-t":B()}],"border-color-r":[{"border-r":B()}],"border-color-b":[{"border-b":B()}],"border-color-l":[{"border-l":B()}],"divide-color":[{divide:B()}],"outline-style":[{outline:[...G(),"none","hidden"]}],"outline-offset":[{"outline-offset":[qe,Me,_e]}],"outline-w":[{outline:["",qe,Cl,zn]}],"outline-color":[{outline:B()}],shadow:[{shadow:["","none",p,qi,Qi]}],"shadow-color":[{shadow:B()}],"inset-shadow":[{"inset-shadow":["none",v,qi,Qi]}],"inset-shadow-color":[{"inset-shadow":B()}],"ring-w":[{ring:J()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:B()}],"ring-offset-w":[{"ring-offset":[qe,zn]}],"ring-offset-color":[{"ring-offset":B()}],"inset-ring-w":[{"inset-ring":J()}],"inset-ring-color":[{"inset-ring":B()}],"text-shadow":[{"text-shadow":["none",E,qi,Qi]}],"text-shadow-color":[{"text-shadow":B()}],opacity:[{opacity:[qe,Me,_e]}],"mix-blend":[{"mix-blend":[...de(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":de()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[qe]}],"mask-image-linear-from-pos":[{"mask-linear-from":Y()}],"mask-image-linear-to-pos":[{"mask-linear-to":Y()}],"mask-image-linear-from-color":[{"mask-linear-from":B()}],"mask-image-linear-to-color":[{"mask-linear-to":B()}],"mask-image-t-from-pos":[{"mask-t-from":Y()}],"mask-image-t-to-pos":[{"mask-t-to":Y()}],"mask-image-t-from-color":[{"mask-t-from":B()}],"mask-image-t-to-color":[{"mask-t-to":B()}],"mask-image-r-from-pos":[{"mask-r-from":Y()}],"mask-image-r-to-pos":[{"mask-r-to":Y()}],"mask-image-r-from-color":[{"mask-r-from":B()}],"mask-image-r-to-color":[{"mask-r-to":B()}],"mask-image-b-from-pos":[{"mask-b-from":Y()}],"mask-image-b-to-pos":[{"mask-b-to":Y()}],"mask-image-b-from-color":[{"mask-b-from":B()}],"mask-image-b-to-color":[{"mask-b-to":B()}],"mask-image-l-from-pos":[{"mask-l-from":Y()}],"mask-image-l-to-pos":[{"mask-l-to":Y()}],"mask-image-l-from-color":[{"mask-l-from":B()}],"mask-image-l-to-color":[{"mask-l-to":B()}],"mask-image-x-from-pos":[{"mask-x-from":Y()}],"mask-image-x-to-pos":[{"mask-x-to":Y()}],"mask-image-x-from-color":[{"mask-x-from":B()}],"mask-image-x-to-color":[{"mask-x-to":B()}],"mask-image-y-from-pos":[{"mask-y-from":Y()}],"mask-image-y-to-pos":[{"mask-y-to":Y()}],"mask-image-y-from-color":[{"mask-y-from":B()}],"mask-image-y-to-color":[{"mask-y-to":B()}],"mask-image-radial":[{"mask-radial":[Me,_e]}],"mask-image-radial-from-pos":[{"mask-radial-from":Y()}],"mask-image-radial-to-pos":[{"mask-radial-to":Y()}],"mask-image-radial-from-color":[{"mask-radial-from":B()}],"mask-image-radial-to-color":[{"mask-radial-to":B()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":I()}],"mask-image-conic-pos":[{"mask-conic":[qe]}],"mask-image-conic-from-pos":[{"mask-conic-from":Y()}],"mask-image-conic-to-pos":[{"mask-conic-to":Y()}],"mask-image-conic-from-color":[{"mask-conic-from":B()}],"mask-image-conic-to-color":[{"mask-conic-to":B()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ce()}],"mask-repeat":[{mask:K()}],"mask-size":[{mask:A()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Me,_e]}],filter:[{filter:["","none",Me,_e]}],blur:[{blur:ge()}],brightness:[{brightness:[qe,Me,_e]}],contrast:[{contrast:[qe,Me,_e]}],"drop-shadow":[{"drop-shadow":["","none",P,qi,Qi]}],"drop-shadow-color":[{"drop-shadow":B()}],grayscale:[{grayscale:["",qe,Me,_e]}],"hue-rotate":[{"hue-rotate":[qe,Me,_e]}],invert:[{invert:["",qe,Me,_e]}],saturate:[{saturate:[qe,Me,_e]}],sepia:[{sepia:["",qe,Me,_e]}],"backdrop-filter":[{"backdrop-filter":["","none",Me,_e]}],"backdrop-blur":[{"backdrop-blur":ge()}],"backdrop-brightness":[{"backdrop-brightness":[qe,Me,_e]}],"backdrop-contrast":[{"backdrop-contrast":[qe,Me,_e]}],"backdrop-grayscale":[{"backdrop-grayscale":["",qe,Me,_e]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[qe,Me,_e]}],"backdrop-invert":[{"backdrop-invert":["",qe,Me,_e]}],"backdrop-opacity":[{"backdrop-opacity":[qe,Me,_e]}],"backdrop-saturate":[{"backdrop-saturate":[qe,Me,_e]}],"backdrop-sepia":[{"backdrop-sepia":["",qe,Me,_e]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":k()}],"border-spacing-x":[{"border-spacing-x":k()}],"border-spacing-y":[{"border-spacing-y":k()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Me,_e]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[qe,"initial",Me,_e]}],ease:[{ease:["linear","initial",N,Me,_e]}],delay:[{delay:[qe,Me,_e]}],animate:[{animate:["none",C,Me,_e]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,Me,_e]}],"perspective-origin":[{"perspective-origin":U()}],rotate:[{rotate:Se()}],"rotate-x":[{"rotate-x":Se()}],"rotate-y":[{"rotate-y":Se()}],"rotate-z":[{"rotate-z":Se()}],scale:[{scale:D()}],"scale-x":[{"scale-x":D()}],"scale-y":[{"scale-y":D()}],"scale-z":[{"scale-z":D()}],"scale-3d":["scale-3d"],skew:[{skew:fe()}],"skew-x":[{"skew-x":fe()}],"skew-y":[{"skew-y":fe()}],transform:[{transform:[Me,_e,"","none","gpu","cpu"]}],"transform-origin":[{origin:U()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:ke()}],"translate-x":[{"translate-x":ke()}],"translate-y":[{"translate-y":ke()}],"translate-z":[{"translate-z":ke()}],"translate-none":["translate-none"],accent:[{accent:B()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:B()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Me,_e]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":k()}],"scroll-mx":[{"scroll-mx":k()}],"scroll-my":[{"scroll-my":k()}],"scroll-ms":[{"scroll-ms":k()}],"scroll-me":[{"scroll-me":k()}],"scroll-mt":[{"scroll-mt":k()}],"scroll-mr":[{"scroll-mr":k()}],"scroll-mb":[{"scroll-mb":k()}],"scroll-ml":[{"scroll-ml":k()}],"scroll-p":[{"scroll-p":k()}],"scroll-px":[{"scroll-px":k()}],"scroll-py":[{"scroll-py":k()}],"scroll-ps":[{"scroll-ps":k()}],"scroll-pe":[{"scroll-pe":k()}],"scroll-pt":[{"scroll-pt":k()}],"scroll-pr":[{"scroll-pr":k()}],"scroll-pb":[{"scroll-pb":k()}],"scroll-pl":[{"scroll-pl":k()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Me,_e]}],fill:[{fill:["none",...B()]}],"stroke-w":[{stroke:[qe,Cl,zn,Td]}],stroke:[{stroke:["none",...B()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Cw=nw(Sw);function lt(...r){return Cw(ep(r))}const kw=tp("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function X({className:r,variant:a,size:l,asChild:o=!1,...c}){const u=o?Jx:"button";return e.jsx(u,{"data-slot":"button",className:lt(kw({variant:a,size:l,className:r})),...c})}function le({className:r,type:a,...l}){return e.jsx("input",{type:a,"data-slot":"input",className:lt("h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs outline-none placeholder:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 md:text-sm focus-visible:ring-2 focus-visible:ring-ring",r),...l})}function Ew(){const r=Oa(),[a,l]=h.useState(""),[o,c]=h.useState(""),[u,m]=h.useState(""),[f,g]=h.useState(!1),y=async()=>{m(""),g(!0);try{const p=await mt("/api/admin",{username:a.trim(),password:o});if((p==null?void 0:p.success)!==!1&&(p!=null&&p.token)){SN(p.token),r("/dashboard",{replace:!0});return}m(p.error||"用户名或密码错误")}catch(p){const v=p;m(v.status===401?"用户名或密码错误":(v==null?void 0:v.message)||"网络错误,请重试")}finally{g(!1)}};return e.jsxs("div",{className:"min-h-screen bg-[#0a1628] flex items-center justify-center p-4",children:[e.jsxs("div",{className:"absolute inset-0 overflow-hidden",children:[e.jsx("div",{className:"absolute top-1/4 left-1/4 w-96 h-96 bg-[#38bdac]/5 rounded-full blur-3xl"}),e.jsx("div",{className:"absolute bottom-1/4 right-1/4 w-96 h-96 bg-blue-500/5 rounded-full blur-3xl"})]}),e.jsxs("div",{className:"w-full max-w-md relative z-10",children:[e.jsxs("div",{className:"text-center mb-8",children:[e.jsx("div",{className:"w-16 h-16 bg-[#38bdac]/20 rounded-2xl flex items-center justify-center mx-auto mb-4 border border-[#38bdac]/30",children:e.jsx(vu,{className:"w-8 h-8 text-[#38bdac]"})}),e.jsx("h1",{className:"text-2xl font-bold text-white mb-2",children:"管理后台"}),e.jsx("p",{className:"text-gray-400",children:"一场SOUL的创业实验场"})]}),e.jsxs("div",{className:"bg-[#0f2137] rounded-2xl p-8 shadow-xl border border-gray-700/50 backdrop-blur-xl",children:[e.jsx("h2",{className:"text-xl font-semibold text-white mb-6 text-center",children:"管理员登录"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-gray-400 text-sm mb-2",children:"用户名"}),e.jsxs("div",{className:"relative",children:[e.jsx(Ta,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-5 h-5 text-gray-500"}),e.jsx(le,{type:"text",value:a,onChange:p=>l(p.target.value),placeholder:"请输入用户名",className:"pl-10 bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500 focus:border-[#38bdac]"})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-gray-400 text-sm mb-2",children:"密码"}),e.jsxs("div",{className:"relative",children:[e.jsx(Ob,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-5 h-5 text-gray-500"}),e.jsx(le,{type:"password",value:o,onChange:p=>c(p.target.value),placeholder:"请输入密码",className:"pl-10 bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500 focus:border-[#38bdac]",onKeyDown:p=>p.key==="Enter"&&y()})]})]}),u&&e.jsx("div",{className:"bg-red-500/10 text-red-400 text-sm p-3 rounded-lg border border-red-500/20",children:u}),e.jsx(X,{onClick:y,disabled:f,className:"w-full bg-[#38bdac] hover:bg-[#2da396] text-white py-5 disabled:opacity-50",children:f?"登录中...":"登录"})]})]}),e.jsx("p",{className:"text-center text-gray-500 text-xs mt-6",children:"Soul创业实验场 · 后台管理系统"})]})]})}const Ne=h.forwardRef(({className:r,...a},l)=>e.jsx("div",{ref:l,className:lt("rounded-xl border bg-card text-card-foreground shadow",r),...a}));Ne.displayName="Card";const Ke=h.forwardRef(({className:r,...a},l)=>e.jsx("div",{ref:l,className:lt("flex flex-col space-y-1.5 p-6",r),...a}));Ke.displayName="CardHeader";const Ge=h.forwardRef(({className:r,...a},l)=>e.jsx("h3",{ref:l,className:lt("font-semibold leading-none tracking-tight",r),...a}));Ge.displayName="CardTitle";const jt=h.forwardRef(({className:r,...a},l)=>e.jsx("p",{ref:l,className:lt("text-sm text-muted-foreground",r),...a}));jt.displayName="CardDescription";const we=h.forwardRef(({className:r,...a},l)=>e.jsx("div",{ref:l,className:lt("p-6 pt-0",r),...a}));we.displayName="CardContent";const Pw=h.forwardRef(({className:r,...a},l)=>e.jsx("div",{ref:l,className:lt("flex items-center p-6 pt-0",r),...a}));Pw.displayName="CardFooter";function Tw(){const r=Oa(),[a,l]=h.useState(!0),[o,c]=h.useState([]),[u,m]=h.useState([]),[f,g]=h.useState(0),[y,p]=h.useState(0),[v,E]=h.useState(0),[P,T]=h.useState(0),[w,b]=h.useState(null);async function N(){var U;l(!0),b(null);try{try{const H=await Be("/api/admin/dashboard/overview");if(H!=null&&H.success){g(H.totalUsers??0),p(H.paidOrderCount??0),E(H.totalRevenue??0),T(H.conversionRate??0),m(H.recentOrders??[]),c(H.newUsers??[]);return}}catch(H){console.error("数据概览接口失败,尝试降级拉取",H)}const[V,_]=await Promise.all([Be("/api/db/users?page=1&pageSize=10"),Be("/api/orders?page=1&pageSize=20&status=paid")]),k=typeof(V==null?void 0:V.total)=="number"?V.total:((U=V==null?void 0:V.users)==null?void 0:U.length)??0,R=(_==null?void 0:_.orders)??[],Z=typeof(_==null?void 0:_.total)=="number"?_.total:R.length,ne=R.filter(H=>H.status==="paid"||H.status==="completed"||H.status==="success"),ae=ne.reduce((H,oe)=>H+Number(oe.amount||0),0),Q=new Set(ne.map(H=>H.userId).filter(Boolean)),se=k>0&&Q.size>0?Q.size/k*100:0;g(k),p(Z),E(ae),T(se),m(R.slice(0,5)),c((V==null?void 0:V.users)??[])}catch(V){console.error("降级拉取失败",V);const _=V;(_==null?void 0:_.status)===401?b("登录已过期,请重新登录"):(_==null?void 0:_.name)==="AbortError"?b("请求超时,请检查网络后点击重试"):b("加载失败,请检查网络或联系管理员")}finally{l(!1)}}if(h.useEffect(()=>{N();const U=setInterval(N,3e4);return()=>clearInterval(U)},[]),a)return e.jsxs("div",{className:"p-8 w-full",children:[e.jsx("h1",{className:"text-2xl font-bold mb-8 text-white",children:"数据概览"}),e.jsxs("div",{className:"flex flex-col items-center justify-center py-24",children:[e.jsx($e,{className:"w-12 h-12 text-[#38bdac] animate-spin mb-4"}),e.jsx("span",{className:"text-gray-400",children:"加载中..."})]})]});const C=f,j=U=>{const V=U.productType||"",_=U.description||"";if(_){if(V==="section"&&_.includes("章节")){if(_.includes("-")){const k=_.split("-");if(k.length>=3)return{title:`第${k[1]}章 第${k[2]}节`,subtitle:"《一场Soul的创业实验》"}}return{title:_,subtitle:"章节购买"}}return V==="fullbook"||_.includes("全书")?{title:"《一场Soul的创业实验》",subtitle:"全书购买"}:V==="match"||_.includes("伙伴")?{title:"找伙伴匹配",subtitle:"功能服务"}:{title:_,subtitle:V==="section"?"单章":V==="fullbook"?"全书":"其他"}}return V==="section"?{title:`章节 ${U.productId||""}`,subtitle:"单章购买"}:V==="fullbook"?{title:"《一场Soul的创业实验》",subtitle:"全书购买"}:V==="match"?{title:"找伙伴匹配",subtitle:"功能服务"}:{title:"未知商品",subtitle:V||"其他"}},I=[{title:"总用户数",value:C,icon:Yt,color:"text-blue-400",bg:"bg-blue-500/20",link:"/users"},{title:"总收入",value:`¥${(v??0).toFixed(2)}`,icon:Pa,color:"text-[#38bdac]",bg:"bg-[#38bdac]/20",link:"/orders"},{title:"订单数",value:y,icon:qd,color:"text-purple-400",bg:"bg-purple-500/20",link:"/orders"},{title:"转化率",value:`${typeof P=="number"?P.toFixed(1):0}%`,icon:qs,color:"text-orange-400",bg:"bg-orange-500/20",link:"/distribution"}];return e.jsxs("div",{className:"p-8 w-full",children:[e.jsx("h1",{className:"text-2xl font-bold mb-8 text-white",children:"数据概览"}),w&&e.jsxs("div",{className:"mb-6 px-4 py-3 rounded-lg bg-amber-500/20 border border-amber-500/50 text-amber-200 text-sm flex items-center justify-between",children:[e.jsx("span",{children:w}),e.jsx("button",{type:"button",onClick:()=>N(),className:"text-amber-400 hover:text-amber-300 underline",children:"重试"})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8",children:I.map((U,V)=>e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl cursor-pointer hover:border-[#38bdac]/50 transition-colors group",onClick:()=>U.link&&r(U.link),children:[e.jsxs(Ke,{className:"flex flex-row items-center justify-between pb-2",children:[e.jsx(Ge,{className:"text-sm font-medium text-gray-400",children:U.title}),e.jsx("div",{className:`p-2 rounded-lg ${U.bg}`,children:e.jsx(U.icon,{className:`w-4 h-4 ${U.color}`})})]}),e.jsx(we,{children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"text-2xl font-bold text-white",children:U.value}),e.jsx(tn,{className:"w-5 h-5 text-gray-600 group-hover:text-[#38bdac] transition-colors"})]})})]},V))}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-8",children:[e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{className:"flex flex-row items-center justify-between",children:[e.jsx(Ge,{className:"text-white",children:"最近订单"}),e.jsxs("button",{type:"button",onClick:()=>N(),className:"text-xs text-gray-400 hover:text-[#38bdac] flex items-center gap-1",title:"刷新",children:[e.jsx($e,{className:"w-3.5 h-3.5"}),"刷新(每 30 秒自动更新)"]})]}),e.jsx(we,{children:e.jsxs("div",{className:"space-y-3",children:[u.slice(0,5).map(U=>{var Z;const V=U.referrerId?o.find(ne=>ne.id===U.referrerId):void 0,_=U.referralCode||(V==null?void 0:V.referralCode)||(V==null?void 0:V.nickname)||(U.referrerId?String(U.referrerId).slice(0,8):""),k=j(U),R=U.userNickname||((Z=o.find(ne=>ne.id===U.userId))==null?void 0:Z.nickname)||"匿名用户";return e.jsxs("div",{className:"flex items-start justify-between p-4 bg-[#0a1628] rounded-lg border border-gray-700/30 hover:border-[#38bdac]/30 transition-colors",children:[e.jsxs("div",{className:"flex items-start gap-3 flex-1",children:[U.userAvatar?e.jsx("img",{src:U.userAvatar,alt:R,className:"w-9 h-9 rounded-full object-cover flex-shrink-0 mt-0.5",onError:ne=>{ne.currentTarget.style.display="none";const ae=ne.currentTarget.nextElementSibling;ae&&ae.classList.remove("hidden")}}):null,e.jsx("div",{className:`w-9 h-9 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac] flex-shrink-0 mt-0.5 ${U.userAvatar?"hidden":""}`,children:R.charAt(0)}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("span",{className:"text-sm text-gray-300",children:R}),e.jsx("span",{className:"text-gray-600",children:"·"}),e.jsx("span",{className:"text-sm font-medium text-white truncate",children:k.title})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs text-gray-500",children:[e.jsx("span",{className:"px-1.5 py-0.5 bg-gray-700/50 rounded",children:k.subtitle}),e.jsx("span",{children:new Date(U.createdAt||0).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})})]}),_&&e.jsxs("p",{className:"text-xs text-gray-600 mt-1",children:["推荐: ",_]})]})]}),e.jsxs("div",{className:"text-right ml-4 flex-shrink-0",children:[e.jsxs("p",{className:"text-sm font-bold text-[#38bdac]",children:["+¥",Number(U.amount).toFixed(2)]}),e.jsx("p",{className:"text-xs text-gray-500 mt-0.5",children:U.paymentMethod||"微信"})]})]},U.id)}),u.length===0&&e.jsxs("div",{className:"text-center py-12",children:[e.jsx(qd,{className:"w-12 h-12 text-gray-600 mx-auto mb-3"}),e.jsx("p",{className:"text-gray-500",children:"暂无订单数据"})]})]})})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsx(Ke,{children:e.jsx(Ge,{className:"text-white",children:"新注册用户"})}),e.jsx(we,{children:e.jsxs("div",{className:"space-y-3",children:[o.slice(0,5).map(U=>{var V;return e.jsxs("div",{className:"flex items-center justify-between p-4 bg-[#0a1628] rounded-lg border border-gray-700/30",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac]",children:((V=U.nickname)==null?void 0:V.charAt(0))||"?"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-white",children:U.nickname||"匿名用户"}),e.jsx("p",{className:"text-xs text-gray-500",children:U.phone||"-"})]})]}),e.jsx("p",{className:"text-xs text-gray-400",children:U.createdAt?new Date(U.createdAt).toLocaleDateString():"-"})]},U.id)}),o.length===0&&e.jsx("p",{className:"text-gray-500 text-center py-8",children:"暂无用户数据"})]})})]})]})]})}const fs=h.forwardRef(({className:r,...a},l)=>e.jsx("div",{className:"relative w-full overflow-auto",children:e.jsx("table",{ref:l,className:lt("w-full caption-bottom text-sm",r),...a})}));fs.displayName="Table";const xs=h.forwardRef(({className:r,...a},l)=>e.jsx("thead",{ref:l,className:lt("[&_tr]:border-b",r),...a}));xs.displayName="TableHeader";const ps=h.forwardRef(({className:r,...a},l)=>e.jsx("tbody",{ref:l,className:lt("[&_tr:last-child]:border-0",r),...a}));ps.displayName="TableBody";const et=h.forwardRef(({className:r,...a},l)=>e.jsx("tr",{ref:l,className:lt("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",r),...a}));et.displayName="TableRow";const be=h.forwardRef(({className:r,...a},l)=>e.jsx("th",{ref:l,className:lt("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",r),...a}));be.displayName="TableHead";const pe=h.forwardRef(({className:r,...a},l)=>e.jsx("td",{ref:l,className:lt("p-4 align-middle [&:has([role=checkbox])]:pr-0",r),...a}));pe.displayName="TableCell";const Rw=tp("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 transition-colors",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground",secondary:"border-transparent bg-secondary text-secondary-foreground",destructive:"border-transparent bg-destructive text-white",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Le({className:r,variant:a,asChild:l=!1,...o}){const c=l?Jx:"span";return e.jsx(c,{className:lt(Rw({variant:a}),r),...o})}function Qe(r,a,{checkForDefaultPrevented:l=!0}={}){return function(c){if(r==null||r(c),l===!1||!c.defaultPrevented)return a==null?void 0:a(c)}}function Iw(r,a){const l=h.createContext(a),o=u=>{const{children:m,...f}=u,g=h.useMemo(()=>f,Object.values(f));return e.jsx(l.Provider,{value:g,children:m})};o.displayName=r+"Provider";function c(u){const m=h.useContext(l);if(m)return m;if(a!==void 0)return a;throw new Error(`\`${u}\` must be used within \`${r}\``)}return[o,c]}function gn(r,a=[]){let l=[];function o(u,m){const f=h.createContext(m),g=l.length;l=[...l,m];const y=v=>{var N;const{scope:E,children:P,...T}=v,w=((N=E==null?void 0:E[r])==null?void 0:N[g])||f,b=h.useMemo(()=>T,Object.values(T));return e.jsx(w.Provider,{value:b,children:P})};y.displayName=u+"Provider";function p(v,E){var w;const P=((w=E==null?void 0:E[r])==null?void 0:w[g])||f,T=h.useContext(P);if(T)return T;if(m!==void 0)return m;throw new Error(`\`${v}\` must be used within \`${u}\``)}return[y,p]}const c=()=>{const u=l.map(m=>h.createContext(m));return function(f){const g=(f==null?void 0:f[r])||u;return h.useMemo(()=>({[`__scope${r}`]:{...f,[r]:g}}),[f,g])}};return c.scopeName=r,[o,_w(c,...a)]}function _w(...r){const a=r[0];if(r.length===1)return a;const l=()=>{const o=r.map(c=>({useScope:c(),scopeName:c.scopeName}));return function(u){const m=o.reduce((f,{useScope:g,scopeName:y})=>{const v=g(u)[`__scope${y}`];return{...f,...v}},{});return h.useMemo(()=>({[`__scope${a.scopeName}`]:m}),[m])}};return l.scopeName=a.scopeName,l}var Zt=globalThis!=null&&globalThis.document?h.useLayoutEffect:()=>{},Mw=bo[" useId ".trim().toString()]||(()=>{}),Aw=0;function dn(r){const[a,l]=h.useState(Mw());return Zt(()=>{l(o=>o??String(Aw++))},[r]),a?`radix-${a}`:""}var Dw=bo[" useInsertionEffect ".trim().toString()]||Zt;function Bn({prop:r,defaultProp:a,onChange:l=()=>{},caller:o}){const[c,u,m]=Lw({defaultProp:a,onChange:l}),f=r!==void 0,g=f?r:c;{const p=h.useRef(r!==void 0);h.useEffect(()=>{const v=p.current;v!==f&&console.warn(`${o} is changing from ${v?"controlled":"uncontrolled"} to ${f?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),p.current=f},[f,o])}const y=h.useCallback(p=>{var v;if(f){const E=Ow(p)?p(r):p;E!==r&&((v=m.current)==null||v.call(m,E))}else u(p)},[f,r,u,m]);return[g,y]}function Lw({defaultProp:r,onChange:a}){const[l,o]=h.useState(r),c=h.useRef(l),u=h.useRef(a);return Dw(()=>{u.current=a},[a]),h.useEffect(()=>{var m;c.current!==l&&((m=u.current)==null||m.call(u,l),c.current=l)},[l,c]),[l,o,u]}function Ow(r){return typeof r=="function"}function Dl(r){const a=Fw(r),l=h.forwardRef((o,c)=>{const{children:u,...m}=o,f=h.Children.toArray(u),g=f.find($w);if(g){const y=g.props.children,p=f.map(v=>v===g?h.Children.count(y)>1?h.Children.only(null):h.isValidElement(y)?y.props.children:null:v);return e.jsx(a,{...m,ref:c,children:h.isValidElement(y)?h.cloneElement(y,void 0,p):null})}return e.jsx(a,{...m,ref:c,children:u})});return l.displayName=`${r}.Slot`,l}function Fw(r){const a=h.forwardRef((l,o)=>{const{children:c,...u}=l;if(h.isValidElement(c)){const m=Uw(c),f=Bw(u,c.props);return c.type!==h.Fragment&&(f.ref=o?Nu(o,m):m),h.cloneElement(c,f)}return h.Children.count(c)>1?h.Children.only(null):null});return a.displayName=`${r}.SlotClone`,a}var zw=Symbol("radix.slottable");function $w(r){return h.isValidElement(r)&&typeof r.type=="function"&&"__radixId"in r.type&&r.type.__radixId===zw}function Bw(r,a){const l={...a};for(const o in a){const c=r[o],u=a[o];/^on[A-Z]/.test(o)?c&&u?l[o]=(...f)=>{const g=u(...f);return c(...f),g}:c&&(l[o]=c):o==="style"?l[o]={...c,...u}:o==="className"&&(l[o]=[c,u].filter(Boolean).join(" "))}return{...r,...l}}function Uw(r){var o,c;let a=(o=Object.getOwnPropertyDescriptor(r.props,"ref"))==null?void 0:o.get,l=a&&"isReactWarning"in a&&a.isReactWarning;return l?r.ref:(a=(c=Object.getOwnPropertyDescriptor(r,"ref"))==null?void 0:c.get,l=a&&"isReactWarning"in a&&a.isReactWarning,l?r.props.ref:r.props.ref||r.ref)}var Vw=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Xe=Vw.reduce((r,a)=>{const l=Dl(`Primitive.${a}`),o=h.forwardRef((c,u)=>{const{asChild:m,...f}=c,g=m?l:a;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),e.jsx(g,{...f,ref:u})});return o.displayName=`Primitive.${a}`,{...r,[a]:o}},{});function Ww(r,a){r&&Ol.flushSync(()=>r.dispatchEvent(a))}function hn(r){const a=h.useRef(r);return h.useEffect(()=>{a.current=r}),h.useMemo(()=>(...l)=>{var o;return(o=a.current)==null?void 0:o.call(a,...l)},[])}function Hw(r,a=globalThis==null?void 0:globalThis.document){const l=hn(r);h.useEffect(()=>{const o=c=>{c.key==="Escape"&&l(c)};return a.addEventListener("keydown",o,{capture:!0}),()=>a.removeEventListener("keydown",o,{capture:!0})},[l,a])}var Kw="DismissableLayer",Zd="dismissableLayer.update",Gw="dismissableLayer.pointerDownOutside",Yw="dismissableLayer.focusOutside",Xf,fp=h.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Su=h.forwardRef((r,a)=>{const{disableOutsidePointerEvents:l=!1,onEscapeKeyDown:o,onPointerDownOutside:c,onFocusOutside:u,onInteractOutside:m,onDismiss:f,...g}=r,y=h.useContext(fp),[p,v]=h.useState(null),E=(p==null?void 0:p.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,P]=h.useState({}),T=at(a,_=>v(_)),w=Array.from(y.layers),[b]=[...y.layersWithOutsidePointerEventsDisabled].slice(-1),N=w.indexOf(b),C=p?w.indexOf(p):-1,j=y.layersWithOutsidePointerEventsDisabled.size>0,I=C>=N,U=Xw(_=>{const k=_.target,R=[...y.branches].some(Z=>Z.contains(k));!I||R||(c==null||c(_),m==null||m(_),_.defaultPrevented||f==null||f())},E),V=Jw(_=>{const k=_.target;[...y.branches].some(Z=>Z.contains(k))||(u==null||u(_),m==null||m(_),_.defaultPrevented||f==null||f())},E);return Hw(_=>{C===y.layers.size-1&&(o==null||o(_),!_.defaultPrevented&&f&&(_.preventDefault(),f()))},E),h.useEffect(()=>{if(p)return l&&(y.layersWithOutsidePointerEventsDisabled.size===0&&(Xf=E.body.style.pointerEvents,E.body.style.pointerEvents="none"),y.layersWithOutsidePointerEventsDisabled.add(p)),y.layers.add(p),Jf(),()=>{l&&y.layersWithOutsidePointerEventsDisabled.size===1&&(E.body.style.pointerEvents=Xf)}},[p,E,l,y]),h.useEffect(()=>()=>{p&&(y.layers.delete(p),y.layersWithOutsidePointerEventsDisabled.delete(p),Jf())},[p,y]),h.useEffect(()=>{const _=()=>P({});return document.addEventListener(Zd,_),()=>document.removeEventListener(Zd,_)},[]),e.jsx(Xe.div,{...g,ref:T,style:{pointerEvents:j?I?"auto":"none":void 0,...r.style},onFocusCapture:Qe(r.onFocusCapture,V.onFocusCapture),onBlurCapture:Qe(r.onBlurCapture,V.onBlurCapture),onPointerDownCapture:Qe(r.onPointerDownCapture,U.onPointerDownCapture)})});Su.displayName=Kw;var Qw="DismissableLayerBranch",qw=h.forwardRef((r,a)=>{const l=h.useContext(fp),o=h.useRef(null),c=at(a,o);return h.useEffect(()=>{const u=o.current;if(u)return l.branches.add(u),()=>{l.branches.delete(u)}},[l.branches]),e.jsx(Xe.div,{...r,ref:c})});qw.displayName=Qw;function Xw(r,a=globalThis==null?void 0:globalThis.document){const l=hn(r),o=h.useRef(!1),c=h.useRef(()=>{});return h.useEffect(()=>{const u=f=>{if(f.target&&!o.current){let g=function(){xp(Gw,l,y,{discrete:!0})};const y={originalEvent:f};f.pointerType==="touch"?(a.removeEventListener("click",c.current),c.current=g,a.addEventListener("click",c.current,{once:!0})):g()}else a.removeEventListener("click",c.current);o.current=!1},m=window.setTimeout(()=>{a.addEventListener("pointerdown",u)},0);return()=>{window.clearTimeout(m),a.removeEventListener("pointerdown",u),a.removeEventListener("click",c.current)}},[a,l]),{onPointerDownCapture:()=>o.current=!0}}function Jw(r,a=globalThis==null?void 0:globalThis.document){const l=hn(r),o=h.useRef(!1);return h.useEffect(()=>{const c=u=>{u.target&&!o.current&&xp(Yw,l,{originalEvent:u},{discrete:!1})};return a.addEventListener("focusin",c),()=>a.removeEventListener("focusin",c)},[a,l]),{onFocusCapture:()=>o.current=!0,onBlurCapture:()=>o.current=!1}}function Jf(){const r=new CustomEvent(Zd);document.dispatchEvent(r)}function xp(r,a,l,{discrete:o}){const c=l.originalEvent.target,u=new CustomEvent(r,{bubbles:!1,cancelable:!0,detail:l});a&&c.addEventListener(r,a,{once:!0}),o?Ww(c,u):c.dispatchEvent(u)}var Rd="focusScope.autoFocusOnMount",Id="focusScope.autoFocusOnUnmount",Zf={bubbles:!1,cancelable:!0},Zw="FocusScope",Cu=h.forwardRef((r,a)=>{const{loop:l=!1,trapped:o=!1,onMountAutoFocus:c,onUnmountAutoFocus:u,...m}=r,[f,g]=h.useState(null),y=hn(c),p=hn(u),v=h.useRef(null),E=at(a,w=>g(w)),P=h.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;h.useEffect(()=>{if(o){let w=function(j){if(P.paused||!f)return;const I=j.target;f.contains(I)?v.current=I:sn(v.current,{select:!0})},b=function(j){if(P.paused||!f)return;const I=j.relatedTarget;I!==null&&(f.contains(I)||sn(v.current,{select:!0}))},N=function(j){if(document.activeElement===document.body)for(const U of j)U.removedNodes.length>0&&sn(f)};document.addEventListener("focusin",w),document.addEventListener("focusout",b);const C=new MutationObserver(N);return f&&C.observe(f,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",w),document.removeEventListener("focusout",b),C.disconnect()}}},[o,f,P.paused]),h.useEffect(()=>{if(f){tx.add(P);const w=document.activeElement;if(!f.contains(w)){const N=new CustomEvent(Rd,Zf);f.addEventListener(Rd,y),f.dispatchEvent(N),N.defaultPrevented||(e1(a1(pp(f)),{select:!0}),document.activeElement===w&&sn(f))}return()=>{f.removeEventListener(Rd,y),setTimeout(()=>{const N=new CustomEvent(Id,Zf);f.addEventListener(Id,p),f.dispatchEvent(N),N.defaultPrevented||sn(w??document.body,{select:!0}),f.removeEventListener(Id,p),tx.remove(P)},0)}}},[f,y,p,P]);const T=h.useCallback(w=>{if(!l&&!o||P.paused)return;const b=w.key==="Tab"&&!w.altKey&&!w.ctrlKey&&!w.metaKey,N=document.activeElement;if(b&&N){const C=w.currentTarget,[j,I]=t1(C);j&&I?!w.shiftKey&&N===I?(w.preventDefault(),l&&sn(j,{select:!0})):w.shiftKey&&N===j&&(w.preventDefault(),l&&sn(I,{select:!0})):N===C&&w.preventDefault()}},[l,o,P.paused]);return e.jsx(Xe.div,{tabIndex:-1,...m,ref:E,onKeyDown:T})});Cu.displayName=Zw;function e1(r,{select:a=!1}={}){const l=document.activeElement;for(const o of r)if(sn(o,{select:a}),document.activeElement!==l)return}function t1(r){const a=pp(r),l=ex(a,r),o=ex(a.reverse(),r);return[l,o]}function pp(r){const a=[],l=document.createTreeWalker(r,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{const c=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||c?NodeFilter.FILTER_SKIP:o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;l.nextNode();)a.push(l.currentNode);return a}function ex(r,a){for(const l of r)if(!s1(l,{upTo:a}))return l}function s1(r,{upTo:a}){if(getComputedStyle(r).visibility==="hidden")return!0;for(;r;){if(a!==void 0&&r===a)return!1;if(getComputedStyle(r).display==="none")return!0;r=r.parentElement}return!1}function r1(r){return r instanceof HTMLInputElement&&"select"in r}function sn(r,{select:a=!1}={}){if(r&&r.focus){const l=document.activeElement;r.focus({preventScroll:!0}),r!==l&&r1(r)&&a&&r.select()}}var tx=n1();function n1(){let r=[];return{add(a){const l=r[0];a!==l&&(l==null||l.pause()),r=sx(r,a),r.unshift(a)},remove(a){var l;r=sx(r,a),(l=r[0])==null||l.resume()}}}function sx(r,a){const l=[...r],o=l.indexOf(a);return o!==-1&&l.splice(o,1),l}function a1(r){return r.filter(a=>a.tagName!=="A")}var l1="Portal",ku=h.forwardRef((r,a)=>{var f;const{container:l,...o}=r,[c,u]=h.useState(!1);Zt(()=>u(!0),[]);const m=l||c&&((f=globalThis==null?void 0:globalThis.document)==null?void 0:f.body);return m?Ev.createPortal(e.jsx(Xe.div,{...o,ref:a}),m):null});ku.displayName=l1;function i1(r,a){return h.useReducer((l,o)=>a[l][o]??l,r)}var Fl=r=>{const{present:a,children:l}=r,o=o1(a),c=typeof l=="function"?l({present:o.isPresent}):h.Children.only(l),u=at(o.ref,c1(c));return typeof l=="function"||o.isPresent?h.cloneElement(c,{ref:u}):null};Fl.displayName="Presence";function o1(r){const[a,l]=h.useState(),o=h.useRef(null),c=h.useRef(r),u=h.useRef("none"),m=r?"mounted":"unmounted",[f,g]=i1(m,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return h.useEffect(()=>{const y=Xi(o.current);u.current=f==="mounted"?y:"none"},[f]),Zt(()=>{const y=o.current,p=c.current;if(p!==r){const E=u.current,P=Xi(y);r?g("MOUNT"):P==="none"||(y==null?void 0:y.display)==="none"?g("UNMOUNT"):g(p&&E!==P?"ANIMATION_OUT":"UNMOUNT"),c.current=r}},[r,g]),Zt(()=>{if(a){let y;const p=a.ownerDocument.defaultView??window,v=P=>{const w=Xi(o.current).includes(CSS.escape(P.animationName));if(P.target===a&&w&&(g("ANIMATION_END"),!c.current)){const b=a.style.animationFillMode;a.style.animationFillMode="forwards",y=p.setTimeout(()=>{a.style.animationFillMode==="forwards"&&(a.style.animationFillMode=b)})}},E=P=>{P.target===a&&(u.current=Xi(o.current))};return a.addEventListener("animationstart",E),a.addEventListener("animationcancel",v),a.addEventListener("animationend",v),()=>{p.clearTimeout(y),a.removeEventListener("animationstart",E),a.removeEventListener("animationcancel",v),a.removeEventListener("animationend",v)}}else g("ANIMATION_END")},[a,g]),{isPresent:["mounted","unmountSuspended"].includes(f),ref:h.useCallback(y=>{o.current=y?getComputedStyle(y):null,l(y)},[])}}function Xi(r){return(r==null?void 0:r.animationName)||"none"}function c1(r){var o,c;let a=(o=Object.getOwnPropertyDescriptor(r.props,"ref"))==null?void 0:o.get,l=a&&"isReactWarning"in a&&a.isReactWarning;return l?r.ref:(a=(c=Object.getOwnPropertyDescriptor(r,"ref"))==null?void 0:c.get,l=a&&"isReactWarning"in a&&a.isReactWarning,l?r.props.ref:r.props.ref||r.ref)}var _d=0;function gp(){h.useEffect(()=>{const r=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",r[0]??rx()),document.body.insertAdjacentElement("beforeend",r[1]??rx()),_d++,()=>{_d===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(a=>a.remove()),_d--}},[])}function rx(){const r=document.createElement("span");return r.setAttribute("data-radix-focus-guard",""),r.tabIndex=0,r.style.outline="none",r.style.opacity="0",r.style.position="fixed",r.style.pointerEvents="none",r}var ir=function(){return ir=Object.assign||function(a){for(var l,o=1,c=arguments.length;o"u")return k1;var a=E1(r),l=document.documentElement.clientWidth,o=window.innerWidth;return{left:a[0],top:a[1],right:a[2],gap:Math.max(0,o-l+a[2]-a[0])}},T1=bp(),Ra="data-scroll-locked",R1=function(r,a,l,o){var c=r.left,u=r.top,m=r.right,f=r.gap;return l===void 0&&(l="margin"),` + */const wN=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],an=Ee("zap",wN),ju="admin_token";function bu(){try{return localStorage.getItem(ju)}catch{return null}}function SN(r){try{localStorage.setItem(ju,r)}catch{}}function CN(){try{localStorage.removeItem(ju)}catch{}}const kN="https://soulapi.quwanzhi.com",EN=15e3,PN=()=>{const r="https://soulapi.quwanzhi.com";return r.length>0?r.replace(/\/$/,""):kN};function Aa(r){const a=PN(),l=r.startsWith("/")?r:`/${r}`;return a?`${a}${l}`:l}async function So(r,a={}){const{data:l,...o}=a,c=Aa(r),u=new Headers(o.headers),m=bu();m&&u.set("Authorization",`Bearer ${m}`),l!=null&&!u.has("Content-Type")&&u.set("Content-Type","application/json");const f=l!=null?JSON.stringify(l):o.body,p=new AbortController,y=setTimeout(()=>p.abort(),EN),g=await fetch(c,{...o,headers:u,body:f,credentials:"include",signal:p.signal}).finally(()=>clearTimeout(y)),k=(g.headers.get("Content-Type")||"").includes("application/json")?await g.json():g;if(!g.ok){const P=new Error((k==null?void 0:k.error)||`HTTP ${g.status}`);throw P.status=g.status,P.data=k,P}return k}function Be(r,a){return So(r,{...a,method:"GET"})}function mt(r,a,l){return So(r,{...l,method:"POST",data:a})}function vt(r,a,l){return So(r,{...l,method:"PUT",data:a})}function Pr(r,a){return So(r,{...a,method:"DELETE"})}const TN=[{icon:Mb,label:"数据概览",href:"/dashboard"},{icon:qs,label:"内容管理",href:"/content"},{icon:Yt,label:"用户管理",href:"/users"},{icon:jb,label:"找伙伴",href:"/find-partner"},{icon:Ma,label:"推广中心",href:"/distribution"}];function RN(){const r=pn(),a=gn(),[l,o]=h.useState(!1),[c,u]=h.useState(!1);h.useEffect(()=>{o(!0)},[]),h.useEffect(()=>{if(!l)return;u(!1);let f=!1;return Be("/api/admin").then(p=>{f||(p&&p.success!==!1?u(!0):a("/login",{replace:!0}))}).catch(()=>{f||a("/login",{replace:!0})}),()=>{f=!0}},[l,a]);const m=async()=>{CN();try{await mt("/api/admin/logout",{})}catch{}a("/login",{replace:!0})};return!l||!c?e.jsxs("div",{className:"flex min-h-screen bg-[#0a1628]",children:[e.jsx("div",{className:"w-64 bg-[#0f2137] border-r border-gray-700/50"}),e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsx("div",{className:"text-[#38bdac]",children:"加载中..."})})]}):e.jsxs("div",{className:"flex min-h-screen bg-[#0a1628]",children:[e.jsxs("div",{className:"w-64 bg-[#0f2137] flex flex-col border-r border-gray-700/50 shadow-xl",children:[e.jsxs("div",{className:"p-6 border-b border-gray-700/50",children:[e.jsx("h1",{className:"text-xl font-bold text-[#38bdac]",children:"管理后台"}),e.jsx("p",{className:"text-xs text-gray-400 mt-1",children:"Soul创业派对"})]}),e.jsxs("nav",{className:"flex-1 p-4 space-y-1 overflow-y-auto",children:[TN.map(f=>{const p=r.pathname===f.href;return e.jsxs(Kd,{to:f.href,className:`flex items-center gap-3 px-4 py-3 rounded-lg transition-colors ${p?"bg-[#38bdac]/20 text-[#38bdac] font-medium":"text-gray-400 hover:bg-gray-700/50 hover:text-white"}`,children:[e.jsx(f.icon,{className:"w-5 h-5 shrink-0"}),e.jsx("span",{className:"text-sm",children:f.label})]},f.href)}),e.jsx("div",{className:"pt-4 mt-4 border-t border-gray-700/50",children:e.jsxs(Kd,{to:"/settings",className:`flex items-center gap-3 px-4 py-3 rounded-lg transition-colors ${r.pathname==="/settings"?"bg-[#38bdac]/20 text-[#38bdac] font-medium":"text-gray-400 hover:bg-gray-700/50 hover:text-white"}`,children:[e.jsx(Bn,{className:"w-5 h-5 shrink-0"}),e.jsx("span",{className:"text-sm",children:"系统设置"})]})})]}),e.jsx("div",{className:"p-4 border-t border-gray-700/50 space-y-1",children:e.jsxs("button",{type:"button",onClick:m,className:"w-full flex items-center gap-3 px-4 py-3 text-gray-400 hover:text-white rounded-lg hover:bg-gray-700/50 transition-colors",children:[e.jsx(zb,{className:"w-5 h-5"}),e.jsx("span",{className:"text-sm",children:"退出登录"})]})})]}),e.jsx("div",{className:"flex-1 overflow-auto bg-[#0a1628] min-w-0",children:e.jsx("div",{className:"w-full min-w-[1024px] min-h-full",children:e.jsx(jj,{})})})]})}function Vf(r,a){if(typeof r=="function")return r(a);r!=null&&(r.current=a)}function Nu(...r){return a=>{let l=!1;const o=r.map(c=>{const u=Vf(c,a);return!l&&typeof u=="function"&&(l=!0),u});if(l)return()=>{for(let c=0;c{let{children:u,...m}=o;qx(u)&&typeof ho=="function"&&(u=ho(u._payload));const f=h.Children.toArray(u),p=f.find(DN);if(p){const y=p.props.children,g=f.map(v=>v===p?h.Children.count(y)>1?h.Children.only(null):h.isValidElement(y)?y.props.children:null:v);return e.jsx(a,{...m,ref:c,children:h.isValidElement(y)?h.cloneElement(y,void 0,g):null})}return e.jsx(a,{...m,ref:c,children:u})});return l.displayName=`${r}.Slot`,l}var Jx=Xx("Slot");function MN(r){const a=h.forwardRef((l,o)=>{let{children:c,...u}=l;if(qx(c)&&typeof ho=="function"&&(c=ho(c._payload)),h.isValidElement(c)){const m=ON(c),f=LN(u,c.props);return c.type!==h.Fragment&&(f.ref=o?Nu(o,m):m),h.cloneElement(c,f)}return h.Children.count(c)>1?h.Children.only(null):null});return a.displayName=`${r}.SlotClone`,a}var AN=Symbol("radix.slottable");function DN(r){return h.isValidElement(r)&&typeof r.type=="function"&&"__radixId"in r.type&&r.type.__radixId===AN}function LN(r,a){const l={...a};for(const o in a){const c=r[o],u=a[o];/^on[A-Z]/.test(o)?c&&u?l[o]=(...f)=>{const p=u(...f);return c(...f),p}:c&&(l[o]=c):o==="style"?l[o]={...c,...u}:o==="className"&&(l[o]=[c,u].filter(Boolean).join(" "))}return{...r,...l}}function ON(r){var o,c;let a=(o=Object.getOwnPropertyDescriptor(r.props,"ref"))==null?void 0:o.get,l=a&&"isReactWarning"in a&&a.isReactWarning;return l?r.ref:(a=(c=Object.getOwnPropertyDescriptor(r,"ref"))==null?void 0:c.get,l=a&&"isReactWarning"in a&&a.isReactWarning,l?r.props.ref:r.props.ref||r.ref)}function Zx(r){var a,l,o="";if(typeof r=="string"||typeof r=="number")o+=r;else if(typeof r=="object")if(Array.isArray(r)){var c=r.length;for(a=0;atypeof r=="boolean"?`${r}`:r===0?"0":r,Hf=ep,tp=(r,a)=>l=>{var o;if((a==null?void 0:a.variants)==null)return Hf(r,l==null?void 0:l.class,l==null?void 0:l.className);const{variants:c,defaultVariants:u}=a,m=Object.keys(c).map(y=>{const g=l==null?void 0:l[y],v=u==null?void 0:u[y];if(g===null)return null;const k=Wf(g)||Wf(v);return c[y][k]}),f=l&&Object.entries(l).reduce((y,g)=>{let[v,k]=g;return k===void 0||(y[v]=k),y},{}),p=a==null||(o=a.compoundVariants)===null||o===void 0?void 0:o.reduce((y,g)=>{let{class:v,className:k,...P}=g;return Object.entries(P).every(T=>{let[w,N]=T;return Array.isArray(N)?N.includes({...u,...f}[w]):{...u,...f}[w]===N})?[...y,v,k]:y},[]);return Hf(r,m,p,l==null?void 0:l.class,l==null?void 0:l.className)},FN=(r,a)=>{const l=new Array(r.length+a.length);for(let o=0;o({classGroupId:r,validator:a}),sp=(r=new Map,a=null,l)=>({nextPart:r,validators:a,classGroupId:l}),mo="-",Kf=[],$N="arbitrary..",BN=r=>{const a=VN(r),{conflictingClassGroups:l,conflictingClassGroupModifiers:o}=r;return{getClassGroupId:m=>{if(m.startsWith("[")&&m.endsWith("]"))return UN(m);const f=m.split(mo),p=f[0]===""&&f.length>1?1:0;return rp(f,p,a)},getConflictingClassGroupIds:(m,f)=>{if(f){const p=o[m],y=l[m];return p?y?FN(y,p):p:y||Kf}return l[m]||Kf}}},rp=(r,a,l)=>{if(r.length-a===0)return l.classGroupId;const c=r[a],u=l.nextPart.get(c);if(u){const y=rp(r,a+1,u);if(y)return y}const m=l.validators;if(m===null)return;const f=a===0?r.join(mo):r.slice(a).join(mo),p=m.length;for(let y=0;yr.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const a=r.slice(1,-1),l=a.indexOf(":"),o=a.slice(0,l);return o?$N+o:void 0})(),VN=r=>{const{theme:a,classGroups:l}=r;return WN(l,a)},WN=(r,a)=>{const l=sp();for(const o in r){const c=r[o];wu(c,l,o,a)}return l},wu=(r,a,l,o)=>{const c=r.length;for(let u=0;u{if(typeof r=="string"){KN(r,a,l);return}if(typeof r=="function"){GN(r,a,l,o);return}YN(r,a,l,o)},KN=(r,a,l)=>{const o=r===""?a:np(a,r);o.classGroupId=l},GN=(r,a,l,o)=>{if(QN(r)){wu(r(o),a,l,o);return}a.validators===null&&(a.validators=[]),a.validators.push(zN(l,r))},YN=(r,a,l,o)=>{const c=Object.entries(r),u=c.length;for(let m=0;m{let l=r;const o=a.split(mo),c=o.length;for(let u=0;u"isThemeGetter"in r&&r.isThemeGetter===!0,qN=r=>{if(r<1)return{get:()=>{},set:()=>{}};let a=0,l=Object.create(null),o=Object.create(null);const c=(u,m)=>{l[u]=m,a++,a>r&&(a=0,o=l,l=Object.create(null))};return{get(u){let m=l[u];if(m!==void 0)return m;if((m=o[u])!==void 0)return c(u,m),m},set(u,m){u in l?l[u]=m:c(u,m)}}},Jd="!",Gf=":",XN=[],Yf=(r,a,l,o,c)=>({modifiers:r,hasImportantModifier:a,baseClassName:l,maybePostfixModifierPosition:o,isExternal:c}),JN=r=>{const{prefix:a,experimentalParseClassName:l}=r;let o=c=>{const u=[];let m=0,f=0,p=0,y;const g=c.length;for(let w=0;wp?y-p:void 0;return Yf(u,P,k,T)};if(a){const c=a+Gf,u=o;o=m=>m.startsWith(c)?u(m.slice(c.length)):Yf(XN,!1,m,void 0,!0)}if(l){const c=o;o=u=>l({className:u,parseClassName:c})}return o},ZN=r=>{const a=new Map;return r.orderSensitiveModifiers.forEach((l,o)=>{a.set(l,1e6+o)}),l=>{const o=[];let c=[];for(let u=0;u0&&(c.sort(),o.push(...c),c=[]),o.push(m)):c.push(m)}return c.length>0&&(c.sort(),o.push(...c)),o}},ew=r=>({cache:qN(r.cacheSize),parseClassName:JN(r),sortModifiers:ZN(r),...BN(r)}),tw=/\s+/,sw=(r,a)=>{const{parseClassName:l,getClassGroupId:o,getConflictingClassGroupIds:c,sortModifiers:u}=a,m=[],f=r.trim().split(tw);let p="";for(let y=f.length-1;y>=0;y-=1){const g=f[y],{isExternal:v,modifiers:k,hasImportantModifier:P,baseClassName:T,maybePostfixModifierPosition:w}=l(g);if(v){p=g+(p.length>0?" "+p:p);continue}let N=!!w,b=o(N?T.substring(0,w):T);if(!b){if(!N){p=g+(p.length>0?" "+p:p);continue}if(b=o(T),!b){p=g+(p.length>0?" "+p:p);continue}N=!1}const S=k.length===0?"":k.length===1?k[0]:u(k).join(":"),j=P?S+Jd:S,_=j+b;if(m.indexOf(_)>-1)continue;m.push(_);const O=c(b,N);for(let V=0;V0?" "+p:p)}return p},rw=(...r)=>{let a=0,l,o,c="";for(;a{if(typeof r=="string")return r;let a,l="";for(let o=0;o{let l,o,c,u;const m=p=>{const y=a.reduce((g,v)=>v(g),r());return l=ew(y),o=l.cache.get,c=l.cache.set,u=f,f(p)},f=p=>{const y=o(p);if(y)return y;const g=sw(p,l);return c(p,g),g};return u=m,(...p)=>u(rw(...p))},aw=[],$t=r=>{const a=l=>l[r]||aw;return a.isThemeGetter=!0,a},lp=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,ip=/^\((?:(\w[\w-]*):)?(.+)\)$/i,lw=/^\d+\/\d+$/,iw=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,ow=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,cw=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,dw=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,uw=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Na=r=>lw.test(r),qe=r=>!!r&&!Number.isNaN(Number(r)),Zr=r=>!!r&&Number.isInteger(Number(r)),Pd=r=>r.endsWith("%")&&qe(r.slice(0,-1)),Cr=r=>iw.test(r),hw=()=>!0,mw=r=>ow.test(r)&&!cw.test(r),op=()=>!1,fw=r=>dw.test(r),xw=r=>uw.test(r),pw=r=>!_e(r)&&!Me(r),gw=r=>Fa(r,up,op),_e=r=>lp.test(r),$n=r=>Fa(r,hp,mw),Td=r=>Fa(r,Nw,qe),Qf=r=>Fa(r,cp,op),yw=r=>Fa(r,dp,xw),Qi=r=>Fa(r,mp,fw),Me=r=>ip.test(r),Cl=r=>za(r,hp),vw=r=>za(r,ww),qf=r=>za(r,cp),jw=r=>za(r,up),bw=r=>za(r,dp),qi=r=>za(r,mp,!0),Fa=(r,a,l)=>{const o=lp.exec(r);return o?o[1]?a(o[1]):l(o[2]):!1},za=(r,a,l=!1)=>{const o=ip.exec(r);return o?o[1]?a(o[1]):l:!1},cp=r=>r==="position"||r==="percentage",dp=r=>r==="image"||r==="url",up=r=>r==="length"||r==="size"||r==="bg-size",hp=r=>r==="length",Nw=r=>r==="number",ww=r=>r==="family-name",mp=r=>r==="shadow",Sw=()=>{const r=$t("color"),a=$t("font"),l=$t("text"),o=$t("font-weight"),c=$t("tracking"),u=$t("leading"),m=$t("breakpoint"),f=$t("container"),p=$t("spacing"),y=$t("radius"),g=$t("shadow"),v=$t("inset-shadow"),k=$t("text-shadow"),P=$t("drop-shadow"),T=$t("blur"),w=$t("perspective"),N=$t("aspect"),b=$t("ease"),S=$t("animate"),j=()=>["auto","avoid","all","avoid-page","page","left","right","column"],_=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],O=()=>[..._(),Me,_e],V=()=>["auto","hidden","clip","visible","scroll"],I=()=>["auto","contain","none"],R=()=>[Me,_e,p],E=()=>[Na,"full","auto",...R()],Y=()=>[Zr,"none","subgrid",Me,_e],ne=()=>["auto",{span:["full",Zr,Me,_e]},Zr,Me,_e],ae=()=>[Zr,"auto",Me,_e],q=()=>["auto","min","max","fr",Me,_e],se=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],H=()=>["start","end","center","stretch","center-safe","end-safe"],ie=()=>["auto",...R()],ve=()=>[Na,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...R()],U=()=>[r,Me,_e],ce=()=>[..._(),qf,Qf,{position:[Me,_e]}],K=()=>["no-repeat",{repeat:["","x","y","space","round"]}],A=()=>["auto","cover","contain",jw,gw,{size:[Me,_e]}],F=()=>[Pd,Cl,$n],L=()=>["","none","full",y,Me,_e],Z=()=>["",qe,Cl,$n],G=()=>["solid","dashed","dotted","double"],de=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Q=()=>[qe,Pd,qf,Qf],ge=()=>["","none",T,Me,_e],Se=()=>["none",qe,Me,_e],D=()=>["none",qe,Me,_e],fe=()=>[qe,Me,_e],ke=()=>[Na,"full",...R()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Cr],breakpoint:[Cr],color:[hw],container:[Cr],"drop-shadow":[Cr],ease:["in","out","in-out"],font:[pw],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Cr],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Cr],shadow:[Cr],spacing:["px",qe],text:[Cr],"text-shadow":[Cr],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Na,_e,Me,N]}],container:["container"],columns:[{columns:[qe,_e,Me,f]}],"break-after":[{"break-after":j()}],"break-before":[{"break-before":j()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:O()}],overflow:[{overflow:V()}],"overflow-x":[{"overflow-x":V()}],"overflow-y":[{"overflow-y":V()}],overscroll:[{overscroll:I()}],"overscroll-x":[{"overscroll-x":I()}],"overscroll-y":[{"overscroll-y":I()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:E()}],"inset-x":[{"inset-x":E()}],"inset-y":[{"inset-y":E()}],start:[{start:E()}],end:[{end:E()}],top:[{top:E()}],right:[{right:E()}],bottom:[{bottom:E()}],left:[{left:E()}],visibility:["visible","invisible","collapse"],z:[{z:[Zr,"auto",Me,_e]}],basis:[{basis:[Na,"full","auto",f,...R()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[qe,Na,"auto","initial","none",_e]}],grow:[{grow:["",qe,Me,_e]}],shrink:[{shrink:["",qe,Me,_e]}],order:[{order:[Zr,"first","last","none",Me,_e]}],"grid-cols":[{"grid-cols":Y()}],"col-start-end":[{col:ne()}],"col-start":[{"col-start":ae()}],"col-end":[{"col-end":ae()}],"grid-rows":[{"grid-rows":Y()}],"row-start-end":[{row:ne()}],"row-start":[{"row-start":ae()}],"row-end":[{"row-end":ae()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":q()}],"auto-rows":[{"auto-rows":q()}],gap:[{gap:R()}],"gap-x":[{"gap-x":R()}],"gap-y":[{"gap-y":R()}],"justify-content":[{justify:[...se(),"normal"]}],"justify-items":[{"justify-items":[...H(),"normal"]}],"justify-self":[{"justify-self":["auto",...H()]}],"align-content":[{content:["normal",...se()]}],"align-items":[{items:[...H(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...H(),{baseline:["","last"]}]}],"place-content":[{"place-content":se()}],"place-items":[{"place-items":[...H(),"baseline"]}],"place-self":[{"place-self":["auto",...H()]}],p:[{p:R()}],px:[{px:R()}],py:[{py:R()}],ps:[{ps:R()}],pe:[{pe:R()}],pt:[{pt:R()}],pr:[{pr:R()}],pb:[{pb:R()}],pl:[{pl:R()}],m:[{m:ie()}],mx:[{mx:ie()}],my:[{my:ie()}],ms:[{ms:ie()}],me:[{me:ie()}],mt:[{mt:ie()}],mr:[{mr:ie()}],mb:[{mb:ie()}],ml:[{ml:ie()}],"space-x":[{"space-x":R()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":R()}],"space-y-reverse":["space-y-reverse"],size:[{size:ve()}],w:[{w:[f,"screen",...ve()]}],"min-w":[{"min-w":[f,"screen","none",...ve()]}],"max-w":[{"max-w":[f,"screen","none","prose",{screen:[m]},...ve()]}],h:[{h:["screen","lh",...ve()]}],"min-h":[{"min-h":["screen","lh","none",...ve()]}],"max-h":[{"max-h":["screen","lh",...ve()]}],"font-size":[{text:["base",l,Cl,$n]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[o,Me,Td]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Pd,_e]}],"font-family":[{font:[vw,_e,a]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[c,Me,_e]}],"line-clamp":[{"line-clamp":[qe,"none",Me,Td]}],leading:[{leading:[u,...R()]}],"list-image":[{"list-image":["none",Me,_e]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Me,_e]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:U()}],"text-color":[{text:U()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...G(),"wavy"]}],"text-decoration-thickness":[{decoration:[qe,"from-font","auto",Me,$n]}],"text-decoration-color":[{decoration:U()}],"underline-offset":[{"underline-offset":[qe,"auto",Me,_e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:R()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Me,_e]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Me,_e]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ce()}],"bg-repeat":[{bg:K()}],"bg-size":[{bg:A()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Zr,Me,_e],radial:["",Me,_e],conic:[Zr,Me,_e]},bw,yw]}],"bg-color":[{bg:U()}],"gradient-from-pos":[{from:F()}],"gradient-via-pos":[{via:F()}],"gradient-to-pos":[{to:F()}],"gradient-from":[{from:U()}],"gradient-via":[{via:U()}],"gradient-to":[{to:U()}],rounded:[{rounded:L()}],"rounded-s":[{"rounded-s":L()}],"rounded-e":[{"rounded-e":L()}],"rounded-t":[{"rounded-t":L()}],"rounded-r":[{"rounded-r":L()}],"rounded-b":[{"rounded-b":L()}],"rounded-l":[{"rounded-l":L()}],"rounded-ss":[{"rounded-ss":L()}],"rounded-se":[{"rounded-se":L()}],"rounded-ee":[{"rounded-ee":L()}],"rounded-es":[{"rounded-es":L()}],"rounded-tl":[{"rounded-tl":L()}],"rounded-tr":[{"rounded-tr":L()}],"rounded-br":[{"rounded-br":L()}],"rounded-bl":[{"rounded-bl":L()}],"border-w":[{border:Z()}],"border-w-x":[{"border-x":Z()}],"border-w-y":[{"border-y":Z()}],"border-w-s":[{"border-s":Z()}],"border-w-e":[{"border-e":Z()}],"border-w-t":[{"border-t":Z()}],"border-w-r":[{"border-r":Z()}],"border-w-b":[{"border-b":Z()}],"border-w-l":[{"border-l":Z()}],"divide-x":[{"divide-x":Z()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":Z()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...G(),"hidden","none"]}],"divide-style":[{divide:[...G(),"hidden","none"]}],"border-color":[{border:U()}],"border-color-x":[{"border-x":U()}],"border-color-y":[{"border-y":U()}],"border-color-s":[{"border-s":U()}],"border-color-e":[{"border-e":U()}],"border-color-t":[{"border-t":U()}],"border-color-r":[{"border-r":U()}],"border-color-b":[{"border-b":U()}],"border-color-l":[{"border-l":U()}],"divide-color":[{divide:U()}],"outline-style":[{outline:[...G(),"none","hidden"]}],"outline-offset":[{"outline-offset":[qe,Me,_e]}],"outline-w":[{outline:["",qe,Cl,$n]}],"outline-color":[{outline:U()}],shadow:[{shadow:["","none",g,qi,Qi]}],"shadow-color":[{shadow:U()}],"inset-shadow":[{"inset-shadow":["none",v,qi,Qi]}],"inset-shadow-color":[{"inset-shadow":U()}],"ring-w":[{ring:Z()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:U()}],"ring-offset-w":[{"ring-offset":[qe,$n]}],"ring-offset-color":[{"ring-offset":U()}],"inset-ring-w":[{"inset-ring":Z()}],"inset-ring-color":[{"inset-ring":U()}],"text-shadow":[{"text-shadow":["none",k,qi,Qi]}],"text-shadow-color":[{"text-shadow":U()}],opacity:[{opacity:[qe,Me,_e]}],"mix-blend":[{"mix-blend":[...de(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":de()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[qe]}],"mask-image-linear-from-pos":[{"mask-linear-from":Q()}],"mask-image-linear-to-pos":[{"mask-linear-to":Q()}],"mask-image-linear-from-color":[{"mask-linear-from":U()}],"mask-image-linear-to-color":[{"mask-linear-to":U()}],"mask-image-t-from-pos":[{"mask-t-from":Q()}],"mask-image-t-to-pos":[{"mask-t-to":Q()}],"mask-image-t-from-color":[{"mask-t-from":U()}],"mask-image-t-to-color":[{"mask-t-to":U()}],"mask-image-r-from-pos":[{"mask-r-from":Q()}],"mask-image-r-to-pos":[{"mask-r-to":Q()}],"mask-image-r-from-color":[{"mask-r-from":U()}],"mask-image-r-to-color":[{"mask-r-to":U()}],"mask-image-b-from-pos":[{"mask-b-from":Q()}],"mask-image-b-to-pos":[{"mask-b-to":Q()}],"mask-image-b-from-color":[{"mask-b-from":U()}],"mask-image-b-to-color":[{"mask-b-to":U()}],"mask-image-l-from-pos":[{"mask-l-from":Q()}],"mask-image-l-to-pos":[{"mask-l-to":Q()}],"mask-image-l-from-color":[{"mask-l-from":U()}],"mask-image-l-to-color":[{"mask-l-to":U()}],"mask-image-x-from-pos":[{"mask-x-from":Q()}],"mask-image-x-to-pos":[{"mask-x-to":Q()}],"mask-image-x-from-color":[{"mask-x-from":U()}],"mask-image-x-to-color":[{"mask-x-to":U()}],"mask-image-y-from-pos":[{"mask-y-from":Q()}],"mask-image-y-to-pos":[{"mask-y-to":Q()}],"mask-image-y-from-color":[{"mask-y-from":U()}],"mask-image-y-to-color":[{"mask-y-to":U()}],"mask-image-radial":[{"mask-radial":[Me,_e]}],"mask-image-radial-from-pos":[{"mask-radial-from":Q()}],"mask-image-radial-to-pos":[{"mask-radial-to":Q()}],"mask-image-radial-from-color":[{"mask-radial-from":U()}],"mask-image-radial-to-color":[{"mask-radial-to":U()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":_()}],"mask-image-conic-pos":[{"mask-conic":[qe]}],"mask-image-conic-from-pos":[{"mask-conic-from":Q()}],"mask-image-conic-to-pos":[{"mask-conic-to":Q()}],"mask-image-conic-from-color":[{"mask-conic-from":U()}],"mask-image-conic-to-color":[{"mask-conic-to":U()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ce()}],"mask-repeat":[{mask:K()}],"mask-size":[{mask:A()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Me,_e]}],filter:[{filter:["","none",Me,_e]}],blur:[{blur:ge()}],brightness:[{brightness:[qe,Me,_e]}],contrast:[{contrast:[qe,Me,_e]}],"drop-shadow":[{"drop-shadow":["","none",P,qi,Qi]}],"drop-shadow-color":[{"drop-shadow":U()}],grayscale:[{grayscale:["",qe,Me,_e]}],"hue-rotate":[{"hue-rotate":[qe,Me,_e]}],invert:[{invert:["",qe,Me,_e]}],saturate:[{saturate:[qe,Me,_e]}],sepia:[{sepia:["",qe,Me,_e]}],"backdrop-filter":[{"backdrop-filter":["","none",Me,_e]}],"backdrop-blur":[{"backdrop-blur":ge()}],"backdrop-brightness":[{"backdrop-brightness":[qe,Me,_e]}],"backdrop-contrast":[{"backdrop-contrast":[qe,Me,_e]}],"backdrop-grayscale":[{"backdrop-grayscale":["",qe,Me,_e]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[qe,Me,_e]}],"backdrop-invert":[{"backdrop-invert":["",qe,Me,_e]}],"backdrop-opacity":[{"backdrop-opacity":[qe,Me,_e]}],"backdrop-saturate":[{"backdrop-saturate":[qe,Me,_e]}],"backdrop-sepia":[{"backdrop-sepia":["",qe,Me,_e]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":R()}],"border-spacing-x":[{"border-spacing-x":R()}],"border-spacing-y":[{"border-spacing-y":R()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Me,_e]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[qe,"initial",Me,_e]}],ease:[{ease:["linear","initial",b,Me,_e]}],delay:[{delay:[qe,Me,_e]}],animate:[{animate:["none",S,Me,_e]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,Me,_e]}],"perspective-origin":[{"perspective-origin":O()}],rotate:[{rotate:Se()}],"rotate-x":[{"rotate-x":Se()}],"rotate-y":[{"rotate-y":Se()}],"rotate-z":[{"rotate-z":Se()}],scale:[{scale:D()}],"scale-x":[{"scale-x":D()}],"scale-y":[{"scale-y":D()}],"scale-z":[{"scale-z":D()}],"scale-3d":["scale-3d"],skew:[{skew:fe()}],"skew-x":[{"skew-x":fe()}],"skew-y":[{"skew-y":fe()}],transform:[{transform:[Me,_e,"","none","gpu","cpu"]}],"transform-origin":[{origin:O()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:ke()}],"translate-x":[{"translate-x":ke()}],"translate-y":[{"translate-y":ke()}],"translate-z":[{"translate-z":ke()}],"translate-none":["translate-none"],accent:[{accent:U()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:U()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Me,_e]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":R()}],"scroll-mx":[{"scroll-mx":R()}],"scroll-my":[{"scroll-my":R()}],"scroll-ms":[{"scroll-ms":R()}],"scroll-me":[{"scroll-me":R()}],"scroll-mt":[{"scroll-mt":R()}],"scroll-mr":[{"scroll-mr":R()}],"scroll-mb":[{"scroll-mb":R()}],"scroll-ml":[{"scroll-ml":R()}],"scroll-p":[{"scroll-p":R()}],"scroll-px":[{"scroll-px":R()}],"scroll-py":[{"scroll-py":R()}],"scroll-ps":[{"scroll-ps":R()}],"scroll-pe":[{"scroll-pe":R()}],"scroll-pt":[{"scroll-pt":R()}],"scroll-pr":[{"scroll-pr":R()}],"scroll-pb":[{"scroll-pb":R()}],"scroll-pl":[{"scroll-pl":R()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Me,_e]}],fill:[{fill:["none",...U()]}],"stroke-w":[{stroke:[qe,Cl,$n,Td]}],stroke:[{stroke:["none",...U()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Cw=nw(Sw);function lt(...r){return Cw(ep(r))}const kw=tp("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function J({className:r,variant:a,size:l,asChild:o=!1,...c}){const u=o?Jx:"button";return e.jsx(u,{"data-slot":"button",className:lt(kw({variant:a,size:l,className:r})),...c})}function le({className:r,type:a,...l}){return e.jsx("input",{type:a,"data-slot":"input",className:lt("h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs outline-none placeholder:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 md:text-sm focus-visible:ring-2 focus-visible:ring-ring",r),...l})}function Ew(){const r=gn(),[a,l]=h.useState(""),[o,c]=h.useState(""),[u,m]=h.useState(""),[f,p]=h.useState(!1),y=async()=>{m(""),p(!0);try{const g=await mt("/api/admin",{username:a.trim(),password:o});if((g==null?void 0:g.success)!==!1&&(g!=null&&g.token)){SN(g.token),r("/dashboard",{replace:!0});return}m(g.error||"用户名或密码错误")}catch(g){const v=g;m(v.status===401?"用户名或密码错误":(v==null?void 0:v.message)||"网络错误,请重试")}finally{p(!1)}};return e.jsxs("div",{className:"min-h-screen bg-[#0a1628] flex items-center justify-center p-4",children:[e.jsxs("div",{className:"absolute inset-0 overflow-hidden",children:[e.jsx("div",{className:"absolute top-1/4 left-1/4 w-96 h-96 bg-[#38bdac]/5 rounded-full blur-3xl"}),e.jsx("div",{className:"absolute bottom-1/4 right-1/4 w-96 h-96 bg-blue-500/5 rounded-full blur-3xl"})]}),e.jsxs("div",{className:"w-full max-w-md relative z-10",children:[e.jsxs("div",{className:"text-center mb-8",children:[e.jsx("div",{className:"w-16 h-16 bg-[#38bdac]/20 rounded-2xl flex items-center justify-center mx-auto mb-4 border border-[#38bdac]/30",children:e.jsx(vu,{className:"w-8 h-8 text-[#38bdac]"})}),e.jsx("h1",{className:"text-2xl font-bold text-white mb-2",children:"管理后台"}),e.jsx("p",{className:"text-gray-400",children:"一场SOUL的创业实验场"})]}),e.jsxs("div",{className:"bg-[#0f2137] rounded-2xl p-8 shadow-xl border border-gray-700/50 backdrop-blur-xl",children:[e.jsx("h2",{className:"text-xl font-semibold text-white mb-6 text-center",children:"管理员登录"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-gray-400 text-sm mb-2",children:"用户名"}),e.jsxs("div",{className:"relative",children:[e.jsx(Ra,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-5 h-5 text-gray-500"}),e.jsx(le,{type:"text",value:a,onChange:g=>l(g.target.value),placeholder:"请输入用户名",className:"pl-10 bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500 focus:border-[#38bdac]"})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-gray-400 text-sm mb-2",children:"密码"}),e.jsxs("div",{className:"relative",children:[e.jsx(Ob,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-5 h-5 text-gray-500"}),e.jsx(le,{type:"password",value:o,onChange:g=>c(g.target.value),placeholder:"请输入密码",className:"pl-10 bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500 focus:border-[#38bdac]",onKeyDown:g=>g.key==="Enter"&&y()})]})]}),u&&e.jsx("div",{className:"bg-red-500/10 text-red-400 text-sm p-3 rounded-lg border border-red-500/20",children:u}),e.jsx(J,{onClick:y,disabled:f,className:"w-full bg-[#38bdac] hover:bg-[#2da396] text-white py-5 disabled:opacity-50",children:f?"登录中...":"登录"})]})]}),e.jsx("p",{className:"text-center text-gray-500 text-xs mt-6",children:"Soul创业实验场 · 后台管理系统"})]})]})}const Ne=h.forwardRef(({className:r,...a},l)=>e.jsx("div",{ref:l,className:lt("rounded-xl border bg-card text-card-foreground shadow",r),...a}));Ne.displayName="Card";const Ke=h.forwardRef(({className:r,...a},l)=>e.jsx("div",{ref:l,className:lt("flex flex-col space-y-1.5 p-6",r),...a}));Ke.displayName="CardHeader";const Ge=h.forwardRef(({className:r,...a},l)=>e.jsx("h3",{ref:l,className:lt("font-semibold leading-none tracking-tight",r),...a}));Ge.displayName="CardTitle";const jt=h.forwardRef(({className:r,...a},l)=>e.jsx("p",{ref:l,className:lt("text-sm text-muted-foreground",r),...a}));jt.displayName="CardDescription";const we=h.forwardRef(({className:r,...a},l)=>e.jsx("div",{ref:l,className:lt("p-6 pt-0",r),...a}));we.displayName="CardContent";const Pw=h.forwardRef(({className:r,...a},l)=>e.jsx("div",{ref:l,className:lt("flex items-center p-6 pt-0",r),...a}));Pw.displayName="CardFooter";function Tw(){const r=gn(),[a,l]=h.useState(!0),[o,c]=h.useState([]),[u,m]=h.useState([]),[f,p]=h.useState(0),[y,g]=h.useState(0),[v,k]=h.useState(0),[P,T]=h.useState(0),[w,N]=h.useState(null);async function b(){var O;l(!0),N(null);try{try{const H=await Be("/api/admin/dashboard/overview");if(H!=null&&H.success){p(H.totalUsers??0),g(H.paidOrderCount??0),k(H.totalRevenue??0),T(H.conversionRate??0),m(H.recentOrders??[]),c(H.newUsers??[]);return}}catch(H){console.error("数据概览接口失败,尝试降级拉取",H)}const[V,I]=await Promise.all([Be("/api/db/users?page=1&pageSize=10"),Be("/api/orders?page=1&pageSize=20&status=paid")]),R=typeof(V==null?void 0:V.total)=="number"?V.total:((O=V==null?void 0:V.users)==null?void 0:O.length)??0,E=(I==null?void 0:I.orders)??[],Y=typeof(I==null?void 0:I.total)=="number"?I.total:E.length,ne=E.filter(H=>H.status==="paid"||H.status==="completed"||H.status==="success"),ae=ne.reduce((H,ie)=>H+Number(ie.amount||0),0),q=new Set(ne.map(H=>H.userId).filter(Boolean)),se=R>0&&q.size>0?q.size/R*100:0;p(R),g(Y),k(ae),T(se),m(E.slice(0,5)),c((V==null?void 0:V.users)??[])}catch(V){console.error("降级拉取失败",V);const I=V;(I==null?void 0:I.status)===401?N("登录已过期,请重新登录"):(I==null?void 0:I.name)==="AbortError"?N("请求超时,请检查网络后点击重试"):N("加载失败,请检查网络或联系管理员")}finally{l(!1)}}if(h.useEffect(()=>{b();const O=setInterval(b,3e4);return()=>clearInterval(O)},[]),a)return e.jsxs("div",{className:"p-8 w-full",children:[e.jsx("h1",{className:"text-2xl font-bold mb-8 text-white",children:"数据概览"}),e.jsxs("div",{className:"flex flex-col items-center justify-center py-24",children:[e.jsx($e,{className:"w-12 h-12 text-[#38bdac] animate-spin mb-4"}),e.jsx("span",{className:"text-gray-400",children:"加载中..."})]})]});const S=f,j=O=>{const V=O.productType||"",I=O.description||"";if(I){if(V==="section"&&I.includes("章节")){if(I.includes("-")){const R=I.split("-");if(R.length>=3)return{title:`第${R[1]}章 第${R[2]}节`,subtitle:"《一场Soul的创业实验》"}}return{title:I,subtitle:"章节购买"}}return V==="fullbook"||I.includes("全书")?{title:"《一场Soul的创业实验》",subtitle:"全书购买"}:V==="match"||I.includes("伙伴")?{title:"找伙伴匹配",subtitle:"功能服务"}:{title:I,subtitle:V==="section"?"单章":V==="fullbook"?"全书":"其他"}}return V==="section"?{title:`章节 ${O.productId||""}`,subtitle:"单章购买"}:V==="fullbook"?{title:"《一场Soul的创业实验》",subtitle:"全书购买"}:V==="match"?{title:"找伙伴匹配",subtitle:"功能服务"}:{title:"未知商品",subtitle:V||"其他"}},_=[{title:"总用户数",value:S,icon:Yt,color:"text-blue-400",bg:"bg-blue-500/20",link:"/users"},{title:"总收入",value:`¥${(v??0).toFixed(2)}`,icon:Ta,color:"text-[#38bdac]",bg:"bg-[#38bdac]/20",link:"/orders"},{title:"订单数",value:y,icon:qd,color:"text-purple-400",bg:"bg-purple-500/20",link:"/orders"},{title:"转化率",value:`${typeof P=="number"?P.toFixed(1):0}%`,icon:qs,color:"text-orange-400",bg:"bg-orange-500/20",link:"/distribution"}];return e.jsxs("div",{className:"p-8 w-full",children:[e.jsx("h1",{className:"text-2xl font-bold mb-8 text-white",children:"数据概览"}),w&&e.jsxs("div",{className:"mb-6 px-4 py-3 rounded-lg bg-amber-500/20 border border-amber-500/50 text-amber-200 text-sm flex items-center justify-between",children:[e.jsx("span",{children:w}),e.jsx("button",{type:"button",onClick:()=>b(),className:"text-amber-400 hover:text-amber-300 underline",children:"重试"})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8",children:_.map((O,V)=>e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl cursor-pointer hover:border-[#38bdac]/50 transition-colors group",onClick:()=>O.link&&r(O.link),children:[e.jsxs(Ke,{className:"flex flex-row items-center justify-between pb-2",children:[e.jsx(Ge,{className:"text-sm font-medium text-gray-400",children:O.title}),e.jsx("div",{className:`p-2 rounded-lg ${O.bg}`,children:e.jsx(O.icon,{className:`w-4 h-4 ${O.color}`})})]}),e.jsx(we,{children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"text-2xl font-bold text-white",children:O.value}),e.jsx(tn,{className:"w-5 h-5 text-gray-600 group-hover:text-[#38bdac] transition-colors"})]})})]},V))}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-8",children:[e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{className:"flex flex-row items-center justify-between",children:[e.jsx(Ge,{className:"text-white",children:"最近订单"}),e.jsxs("button",{type:"button",onClick:()=>b(),className:"text-xs text-gray-400 hover:text-[#38bdac] flex items-center gap-1",title:"刷新",children:[e.jsx($e,{className:"w-3.5 h-3.5"}),"刷新(每 30 秒自动更新)"]})]}),e.jsx(we,{children:e.jsxs("div",{className:"space-y-3",children:[u.slice(0,5).map(O=>{var Y;const V=O.referrerId?o.find(ne=>ne.id===O.referrerId):void 0,I=O.referralCode||(V==null?void 0:V.referralCode)||(V==null?void 0:V.nickname)||(O.referrerId?String(O.referrerId).slice(0,8):""),R=j(O),E=O.userNickname||((Y=o.find(ne=>ne.id===O.userId))==null?void 0:Y.nickname)||"匿名用户";return e.jsxs("div",{className:"flex items-start justify-between p-4 bg-[#0a1628] rounded-lg border border-gray-700/30 hover:border-[#38bdac]/30 transition-colors",children:[e.jsxs("div",{className:"flex items-start gap-3 flex-1",children:[O.userAvatar?e.jsx("img",{src:O.userAvatar,alt:E,className:"w-9 h-9 rounded-full object-cover flex-shrink-0 mt-0.5",onError:ne=>{ne.currentTarget.style.display="none";const ae=ne.currentTarget.nextElementSibling;ae&&ae.classList.remove("hidden")}}):null,e.jsx("div",{className:`w-9 h-9 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac] flex-shrink-0 mt-0.5 ${O.userAvatar?"hidden":""}`,children:E.charAt(0)}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("span",{className:"text-sm text-gray-300",children:E}),e.jsx("span",{className:"text-gray-600",children:"·"}),e.jsx("span",{className:"text-sm font-medium text-white truncate",children:R.title})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs text-gray-500",children:[e.jsx("span",{className:"px-1.5 py-0.5 bg-gray-700/50 rounded",children:R.subtitle}),e.jsx("span",{children:new Date(O.createdAt||0).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})})]}),I&&e.jsxs("p",{className:"text-xs text-gray-600 mt-1",children:["推荐: ",I]})]})]}),e.jsxs("div",{className:"text-right ml-4 flex-shrink-0",children:[e.jsxs("p",{className:"text-sm font-bold text-[#38bdac]",children:["+¥",Number(O.amount).toFixed(2)]}),e.jsx("p",{className:"text-xs text-gray-500 mt-0.5",children:O.paymentMethod||"微信"})]})]},O.id)}),u.length===0&&e.jsxs("div",{className:"text-center py-12",children:[e.jsx(qd,{className:"w-12 h-12 text-gray-600 mx-auto mb-3"}),e.jsx("p",{className:"text-gray-500",children:"暂无订单数据"})]})]})})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsx(Ke,{children:e.jsx(Ge,{className:"text-white",children:"新注册用户"})}),e.jsx(we,{children:e.jsxs("div",{className:"space-y-3",children:[o.slice(0,5).map(O=>{var V;return e.jsxs("div",{className:"flex items-center justify-between p-4 bg-[#0a1628] rounded-lg border border-gray-700/30",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac]",children:((V=O.nickname)==null?void 0:V.charAt(0))||"?"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-white",children:O.nickname||"匿名用户"}),e.jsx("p",{className:"text-xs text-gray-500",children:O.phone||"-"})]})]}),e.jsx("p",{className:"text-xs text-gray-400",children:O.createdAt?new Date(O.createdAt).toLocaleDateString():"-"})]},O.id)}),o.length===0&&e.jsx("p",{className:"text-gray-500 text-center py-8",children:"暂无用户数据"})]})})]})]})]})}const fs=h.forwardRef(({className:r,...a},l)=>e.jsx("div",{className:"relative w-full overflow-auto",children:e.jsx("table",{ref:l,className:lt("w-full caption-bottom text-sm",r),...a})}));fs.displayName="Table";const xs=h.forwardRef(({className:r,...a},l)=>e.jsx("thead",{ref:l,className:lt("[&_tr]:border-b",r),...a}));xs.displayName="TableHeader";const ps=h.forwardRef(({className:r,...a},l)=>e.jsx("tbody",{ref:l,className:lt("[&_tr:last-child]:border-0",r),...a}));ps.displayName="TableBody";const et=h.forwardRef(({className:r,...a},l)=>e.jsx("tr",{ref:l,className:lt("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",r),...a}));et.displayName="TableRow";const be=h.forwardRef(({className:r,...a},l)=>e.jsx("th",{ref:l,className:lt("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",r),...a}));be.displayName="TableHead";const pe=h.forwardRef(({className:r,...a},l)=>e.jsx("td",{ref:l,className:lt("p-4 align-middle [&:has([role=checkbox])]:pr-0",r),...a}));pe.displayName="TableCell";const Rw=tp("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 transition-colors",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground",secondary:"border-transparent bg-secondary text-secondary-foreground",destructive:"border-transparent bg-destructive text-white",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Le({className:r,variant:a,asChild:l=!1,...o}){const c=l?Jx:"span";return e.jsx(c,{className:lt(Rw({variant:a}),r),...o})}function Qe(r,a,{checkForDefaultPrevented:l=!0}={}){return function(c){if(r==null||r(c),l===!1||!c.defaultPrevented)return a==null?void 0:a(c)}}function Iw(r,a){const l=h.createContext(a),o=u=>{const{children:m,...f}=u,p=h.useMemo(()=>f,Object.values(f));return e.jsx(l.Provider,{value:p,children:m})};o.displayName=r+"Provider";function c(u){const m=h.useContext(l);if(m)return m;if(a!==void 0)return a;throw new Error(`\`${u}\` must be used within \`${r}\``)}return[o,c]}function yn(r,a=[]){let l=[];function o(u,m){const f=h.createContext(m),p=l.length;l=[...l,m];const y=v=>{var b;const{scope:k,children:P,...T}=v,w=((b=k==null?void 0:k[r])==null?void 0:b[p])||f,N=h.useMemo(()=>T,Object.values(T));return e.jsx(w.Provider,{value:N,children:P})};y.displayName=u+"Provider";function g(v,k){var w;const P=((w=k==null?void 0:k[r])==null?void 0:w[p])||f,T=h.useContext(P);if(T)return T;if(m!==void 0)return m;throw new Error(`\`${v}\` must be used within \`${u}\``)}return[y,g]}const c=()=>{const u=l.map(m=>h.createContext(m));return function(f){const p=(f==null?void 0:f[r])||u;return h.useMemo(()=>({[`__scope${r}`]:{...f,[r]:p}}),[f,p])}};return c.scopeName=r,[o,_w(c,...a)]}function _w(...r){const a=r[0];if(r.length===1)return a;const l=()=>{const o=r.map(c=>({useScope:c(),scopeName:c.scopeName}));return function(u){const m=o.reduce((f,{useScope:p,scopeName:y})=>{const v=p(u)[`__scope${y}`];return{...f,...v}},{});return h.useMemo(()=>({[`__scope${a.scopeName}`]:m}),[m])}};return l.scopeName=a.scopeName,l}var Zt=globalThis!=null&&globalThis.document?h.useLayoutEffect:()=>{},Mw=bo[" useId ".trim().toString()]||(()=>{}),Aw=0;function dn(r){const[a,l]=h.useState(Mw());return Zt(()=>{l(o=>o??String(Aw++))},[r]),a?`radix-${a}`:""}var Dw=bo[" useInsertionEffect ".trim().toString()]||Zt;function Un({prop:r,defaultProp:a,onChange:l=()=>{},caller:o}){const[c,u,m]=Lw({defaultProp:a,onChange:l}),f=r!==void 0,p=f?r:c;{const g=h.useRef(r!==void 0);h.useEffect(()=>{const v=g.current;v!==f&&console.warn(`${o} is changing from ${v?"controlled":"uncontrolled"} to ${f?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),g.current=f},[f,o])}const y=h.useCallback(g=>{var v;if(f){const k=Ow(g)?g(r):g;k!==r&&((v=m.current)==null||v.call(m,k))}else u(g)},[f,r,u,m]);return[p,y]}function Lw({defaultProp:r,onChange:a}){const[l,o]=h.useState(r),c=h.useRef(l),u=h.useRef(a);return Dw(()=>{u.current=a},[a]),h.useEffect(()=>{var m;c.current!==l&&((m=u.current)==null||m.call(u,l),c.current=l)},[l,c]),[l,o,u]}function Ow(r){return typeof r=="function"}function Dl(r){const a=Fw(r),l=h.forwardRef((o,c)=>{const{children:u,...m}=o,f=h.Children.toArray(u),p=f.find($w);if(p){const y=p.props.children,g=f.map(v=>v===p?h.Children.count(y)>1?h.Children.only(null):h.isValidElement(y)?y.props.children:null:v);return e.jsx(a,{...m,ref:c,children:h.isValidElement(y)?h.cloneElement(y,void 0,g):null})}return e.jsx(a,{...m,ref:c,children:u})});return l.displayName=`${r}.Slot`,l}function Fw(r){const a=h.forwardRef((l,o)=>{const{children:c,...u}=l;if(h.isValidElement(c)){const m=Uw(c),f=Bw(u,c.props);return c.type!==h.Fragment&&(f.ref=o?Nu(o,m):m),h.cloneElement(c,f)}return h.Children.count(c)>1?h.Children.only(null):null});return a.displayName=`${r}.SlotClone`,a}var zw=Symbol("radix.slottable");function $w(r){return h.isValidElement(r)&&typeof r.type=="function"&&"__radixId"in r.type&&r.type.__radixId===zw}function Bw(r,a){const l={...a};for(const o in a){const c=r[o],u=a[o];/^on[A-Z]/.test(o)?c&&u?l[o]=(...f)=>{const p=u(...f);return c(...f),p}:c&&(l[o]=c):o==="style"?l[o]={...c,...u}:o==="className"&&(l[o]=[c,u].filter(Boolean).join(" "))}return{...r,...l}}function Uw(r){var o,c;let a=(o=Object.getOwnPropertyDescriptor(r.props,"ref"))==null?void 0:o.get,l=a&&"isReactWarning"in a&&a.isReactWarning;return l?r.ref:(a=(c=Object.getOwnPropertyDescriptor(r,"ref"))==null?void 0:c.get,l=a&&"isReactWarning"in a&&a.isReactWarning,l?r.props.ref:r.props.ref||r.ref)}var Vw=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Xe=Vw.reduce((r,a)=>{const l=Dl(`Primitive.${a}`),o=h.forwardRef((c,u)=>{const{asChild:m,...f}=c,p=m?l:a;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),e.jsx(p,{...f,ref:u})});return o.displayName=`Primitive.${a}`,{...r,[a]:o}},{});function Ww(r,a){r&&Ol.flushSync(()=>r.dispatchEvent(a))}function hn(r){const a=h.useRef(r);return h.useEffect(()=>{a.current=r}),h.useMemo(()=>(...l)=>{var o;return(o=a.current)==null?void 0:o.call(a,...l)},[])}function Hw(r,a=globalThis==null?void 0:globalThis.document){const l=hn(r);h.useEffect(()=>{const o=c=>{c.key==="Escape"&&l(c)};return a.addEventListener("keydown",o,{capture:!0}),()=>a.removeEventListener("keydown",o,{capture:!0})},[l,a])}var Kw="DismissableLayer",Zd="dismissableLayer.update",Gw="dismissableLayer.pointerDownOutside",Yw="dismissableLayer.focusOutside",Xf,fp=h.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Su=h.forwardRef((r,a)=>{const{disableOutsidePointerEvents:l=!1,onEscapeKeyDown:o,onPointerDownOutside:c,onFocusOutside:u,onInteractOutside:m,onDismiss:f,...p}=r,y=h.useContext(fp),[g,v]=h.useState(null),k=(g==null?void 0:g.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,P]=h.useState({}),T=at(a,I=>v(I)),w=Array.from(y.layers),[N]=[...y.layersWithOutsidePointerEventsDisabled].slice(-1),b=w.indexOf(N),S=g?w.indexOf(g):-1,j=y.layersWithOutsidePointerEventsDisabled.size>0,_=S>=b,O=Xw(I=>{const R=I.target,E=[...y.branches].some(Y=>Y.contains(R));!_||E||(c==null||c(I),m==null||m(I),I.defaultPrevented||f==null||f())},k),V=Jw(I=>{const R=I.target;[...y.branches].some(Y=>Y.contains(R))||(u==null||u(I),m==null||m(I),I.defaultPrevented||f==null||f())},k);return Hw(I=>{S===y.layers.size-1&&(o==null||o(I),!I.defaultPrevented&&f&&(I.preventDefault(),f()))},k),h.useEffect(()=>{if(g)return l&&(y.layersWithOutsidePointerEventsDisabled.size===0&&(Xf=k.body.style.pointerEvents,k.body.style.pointerEvents="none"),y.layersWithOutsidePointerEventsDisabled.add(g)),y.layers.add(g),Jf(),()=>{l&&y.layersWithOutsidePointerEventsDisabled.size===1&&(k.body.style.pointerEvents=Xf)}},[g,k,l,y]),h.useEffect(()=>()=>{g&&(y.layers.delete(g),y.layersWithOutsidePointerEventsDisabled.delete(g),Jf())},[g,y]),h.useEffect(()=>{const I=()=>P({});return document.addEventListener(Zd,I),()=>document.removeEventListener(Zd,I)},[]),e.jsx(Xe.div,{...p,ref:T,style:{pointerEvents:j?_?"auto":"none":void 0,...r.style},onFocusCapture:Qe(r.onFocusCapture,V.onFocusCapture),onBlurCapture:Qe(r.onBlurCapture,V.onBlurCapture),onPointerDownCapture:Qe(r.onPointerDownCapture,O.onPointerDownCapture)})});Su.displayName=Kw;var Qw="DismissableLayerBranch",qw=h.forwardRef((r,a)=>{const l=h.useContext(fp),o=h.useRef(null),c=at(a,o);return h.useEffect(()=>{const u=o.current;if(u)return l.branches.add(u),()=>{l.branches.delete(u)}},[l.branches]),e.jsx(Xe.div,{...r,ref:c})});qw.displayName=Qw;function Xw(r,a=globalThis==null?void 0:globalThis.document){const l=hn(r),o=h.useRef(!1),c=h.useRef(()=>{});return h.useEffect(()=>{const u=f=>{if(f.target&&!o.current){let p=function(){xp(Gw,l,y,{discrete:!0})};const y={originalEvent:f};f.pointerType==="touch"?(a.removeEventListener("click",c.current),c.current=p,a.addEventListener("click",c.current,{once:!0})):p()}else a.removeEventListener("click",c.current);o.current=!1},m=window.setTimeout(()=>{a.addEventListener("pointerdown",u)},0);return()=>{window.clearTimeout(m),a.removeEventListener("pointerdown",u),a.removeEventListener("click",c.current)}},[a,l]),{onPointerDownCapture:()=>o.current=!0}}function Jw(r,a=globalThis==null?void 0:globalThis.document){const l=hn(r),o=h.useRef(!1);return h.useEffect(()=>{const c=u=>{u.target&&!o.current&&xp(Yw,l,{originalEvent:u},{discrete:!1})};return a.addEventListener("focusin",c),()=>a.removeEventListener("focusin",c)},[a,l]),{onFocusCapture:()=>o.current=!0,onBlurCapture:()=>o.current=!1}}function Jf(){const r=new CustomEvent(Zd);document.dispatchEvent(r)}function xp(r,a,l,{discrete:o}){const c=l.originalEvent.target,u=new CustomEvent(r,{bubbles:!1,cancelable:!0,detail:l});a&&c.addEventListener(r,a,{once:!0}),o?Ww(c,u):c.dispatchEvent(u)}var Rd="focusScope.autoFocusOnMount",Id="focusScope.autoFocusOnUnmount",Zf={bubbles:!1,cancelable:!0},Zw="FocusScope",Cu=h.forwardRef((r,a)=>{const{loop:l=!1,trapped:o=!1,onMountAutoFocus:c,onUnmountAutoFocus:u,...m}=r,[f,p]=h.useState(null),y=hn(c),g=hn(u),v=h.useRef(null),k=at(a,w=>p(w)),P=h.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;h.useEffect(()=>{if(o){let w=function(j){if(P.paused||!f)return;const _=j.target;f.contains(_)?v.current=_:sn(v.current,{select:!0})},N=function(j){if(P.paused||!f)return;const _=j.relatedTarget;_!==null&&(f.contains(_)||sn(v.current,{select:!0}))},b=function(j){if(document.activeElement===document.body)for(const O of j)O.removedNodes.length>0&&sn(f)};document.addEventListener("focusin",w),document.addEventListener("focusout",N);const S=new MutationObserver(b);return f&&S.observe(f,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",w),document.removeEventListener("focusout",N),S.disconnect()}}},[o,f,P.paused]),h.useEffect(()=>{if(f){tx.add(P);const w=document.activeElement;if(!f.contains(w)){const b=new CustomEvent(Rd,Zf);f.addEventListener(Rd,y),f.dispatchEvent(b),b.defaultPrevented||(e1(a1(pp(f)),{select:!0}),document.activeElement===w&&sn(f))}return()=>{f.removeEventListener(Rd,y),setTimeout(()=>{const b=new CustomEvent(Id,Zf);f.addEventListener(Id,g),f.dispatchEvent(b),b.defaultPrevented||sn(w??document.body,{select:!0}),f.removeEventListener(Id,g),tx.remove(P)},0)}}},[f,y,g,P]);const T=h.useCallback(w=>{if(!l&&!o||P.paused)return;const N=w.key==="Tab"&&!w.altKey&&!w.ctrlKey&&!w.metaKey,b=document.activeElement;if(N&&b){const S=w.currentTarget,[j,_]=t1(S);j&&_?!w.shiftKey&&b===_?(w.preventDefault(),l&&sn(j,{select:!0})):w.shiftKey&&b===j&&(w.preventDefault(),l&&sn(_,{select:!0})):b===S&&w.preventDefault()}},[l,o,P.paused]);return e.jsx(Xe.div,{tabIndex:-1,...m,ref:k,onKeyDown:T})});Cu.displayName=Zw;function e1(r,{select:a=!1}={}){const l=document.activeElement;for(const o of r)if(sn(o,{select:a}),document.activeElement!==l)return}function t1(r){const a=pp(r),l=ex(a,r),o=ex(a.reverse(),r);return[l,o]}function pp(r){const a=[],l=document.createTreeWalker(r,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{const c=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||c?NodeFilter.FILTER_SKIP:o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;l.nextNode();)a.push(l.currentNode);return a}function ex(r,a){for(const l of r)if(!s1(l,{upTo:a}))return l}function s1(r,{upTo:a}){if(getComputedStyle(r).visibility==="hidden")return!0;for(;r;){if(a!==void 0&&r===a)return!1;if(getComputedStyle(r).display==="none")return!0;r=r.parentElement}return!1}function r1(r){return r instanceof HTMLInputElement&&"select"in r}function sn(r,{select:a=!1}={}){if(r&&r.focus){const l=document.activeElement;r.focus({preventScroll:!0}),r!==l&&r1(r)&&a&&r.select()}}var tx=n1();function n1(){let r=[];return{add(a){const l=r[0];a!==l&&(l==null||l.pause()),r=sx(r,a),r.unshift(a)},remove(a){var l;r=sx(r,a),(l=r[0])==null||l.resume()}}}function sx(r,a){const l=[...r],o=l.indexOf(a);return o!==-1&&l.splice(o,1),l}function a1(r){return r.filter(a=>a.tagName!=="A")}var l1="Portal",ku=h.forwardRef((r,a)=>{var f;const{container:l,...o}=r,[c,u]=h.useState(!1);Zt(()=>u(!0),[]);const m=l||c&&((f=globalThis==null?void 0:globalThis.document)==null?void 0:f.body);return m?Ev.createPortal(e.jsx(Xe.div,{...o,ref:a}),m):null});ku.displayName=l1;function i1(r,a){return h.useReducer((l,o)=>a[l][o]??l,r)}var Fl=r=>{const{present:a,children:l}=r,o=o1(a),c=typeof l=="function"?l({present:o.isPresent}):h.Children.only(l),u=at(o.ref,c1(c));return typeof l=="function"||o.isPresent?h.cloneElement(c,{ref:u}):null};Fl.displayName="Presence";function o1(r){const[a,l]=h.useState(),o=h.useRef(null),c=h.useRef(r),u=h.useRef("none"),m=r?"mounted":"unmounted",[f,p]=i1(m,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return h.useEffect(()=>{const y=Xi(o.current);u.current=f==="mounted"?y:"none"},[f]),Zt(()=>{const y=o.current,g=c.current;if(g!==r){const k=u.current,P=Xi(y);r?p("MOUNT"):P==="none"||(y==null?void 0:y.display)==="none"?p("UNMOUNT"):p(g&&k!==P?"ANIMATION_OUT":"UNMOUNT"),c.current=r}},[r,p]),Zt(()=>{if(a){let y;const g=a.ownerDocument.defaultView??window,v=P=>{const w=Xi(o.current).includes(CSS.escape(P.animationName));if(P.target===a&&w&&(p("ANIMATION_END"),!c.current)){const N=a.style.animationFillMode;a.style.animationFillMode="forwards",y=g.setTimeout(()=>{a.style.animationFillMode==="forwards"&&(a.style.animationFillMode=N)})}},k=P=>{P.target===a&&(u.current=Xi(o.current))};return a.addEventListener("animationstart",k),a.addEventListener("animationcancel",v),a.addEventListener("animationend",v),()=>{g.clearTimeout(y),a.removeEventListener("animationstart",k),a.removeEventListener("animationcancel",v),a.removeEventListener("animationend",v)}}else p("ANIMATION_END")},[a,p]),{isPresent:["mounted","unmountSuspended"].includes(f),ref:h.useCallback(y=>{o.current=y?getComputedStyle(y):null,l(y)},[])}}function Xi(r){return(r==null?void 0:r.animationName)||"none"}function c1(r){var o,c;let a=(o=Object.getOwnPropertyDescriptor(r.props,"ref"))==null?void 0:o.get,l=a&&"isReactWarning"in a&&a.isReactWarning;return l?r.ref:(a=(c=Object.getOwnPropertyDescriptor(r,"ref"))==null?void 0:c.get,l=a&&"isReactWarning"in a&&a.isReactWarning,l?r.props.ref:r.props.ref||r.ref)}var _d=0;function gp(){h.useEffect(()=>{const r=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",r[0]??rx()),document.body.insertAdjacentElement("beforeend",r[1]??rx()),_d++,()=>{_d===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(a=>a.remove()),_d--}},[])}function rx(){const r=document.createElement("span");return r.setAttribute("data-radix-focus-guard",""),r.tabIndex=0,r.style.outline="none",r.style.opacity="0",r.style.position="fixed",r.style.pointerEvents="none",r}var ir=function(){return ir=Object.assign||function(a){for(var l,o=1,c=arguments.length;o"u")return k1;var a=E1(r),l=document.documentElement.clientWidth,o=window.innerWidth;return{left:a[0],top:a[1],right:a[2],gap:Math.max(0,o-l+a[2]-a[0])}},T1=bp(),Ia="data-scroll-locked",R1=function(r,a,l,o){var c=r.left,u=r.top,m=r.right,f=r.gap;return l===void 0&&(l="margin"),` .`.concat(u1,` { overflow: hidden `).concat(o,`; padding-right: `).concat(f,"px ").concat(o,`; } - body[`).concat(Ra,`] { + body[`).concat(Ia,`] { overflow: hidden `).concat(o,`; overscroll-behavior: contain; `).concat([a&&"position: relative ".concat(o,";"),l==="margin"&&` @@ -478,28 +478,28 @@ Error generating stack: `+x.message+` margin-right: 0 `).concat(o,`; } - body[`).concat(Ra,`] { + body[`).concat(Ia,`] { `).concat(h1,": ").concat(f,`px; } -`)},ax=function(){var r=parseInt(document.body.getAttribute(Ra)||"0",10);return isFinite(r)?r:0},I1=function(){h.useEffect(function(){return document.body.setAttribute(Ra,(ax()+1).toString()),function(){var r=ax()-1;r<=0?document.body.removeAttribute(Ra):document.body.setAttribute(Ra,r.toString())}},[])},_1=function(r){var a=r.noRelative,l=r.noImportant,o=r.gapMode,c=o===void 0?"margin":o;I1();var u=h.useMemo(function(){return P1(c)},[c]);return h.createElement(T1,{styles:R1(u,!a,c,l?"":"!important")})},eu=!1;if(typeof window<"u")try{var Ji=Object.defineProperty({},"passive",{get:function(){return eu=!0,!0}});window.addEventListener("test",Ji,Ji),window.removeEventListener("test",Ji,Ji)}catch{eu=!1}var Na=eu?{passive:!1}:!1,M1=function(r){return r.tagName==="TEXTAREA"},Np=function(r,a){if(!(r instanceof Element))return!1;var l=window.getComputedStyle(r);return l[a]!=="hidden"&&!(l.overflowY===l.overflowX&&!M1(r)&&l[a]==="visible")},A1=function(r){return Np(r,"overflowY")},D1=function(r){return Np(r,"overflowX")},lx=function(r,a){var l=a.ownerDocument,o=a;do{typeof ShadowRoot<"u"&&o instanceof ShadowRoot&&(o=o.host);var c=wp(r,o);if(c){var u=Sp(r,o),m=u[1],f=u[2];if(m>f)return!0}o=o.parentNode}while(o&&o!==l.body);return!1},L1=function(r){var a=r.scrollTop,l=r.scrollHeight,o=r.clientHeight;return[a,l,o]},O1=function(r){var a=r.scrollLeft,l=r.scrollWidth,o=r.clientWidth;return[a,l,o]},wp=function(r,a){return r==="v"?A1(a):D1(a)},Sp=function(r,a){return r==="v"?L1(a):O1(a)},F1=function(r,a){return r==="h"&&a==="rtl"?-1:1},z1=function(r,a,l,o,c){var u=F1(r,window.getComputedStyle(a).direction),m=u*o,f=l.target,g=a.contains(f),y=!1,p=m>0,v=0,E=0;do{if(!f)break;var P=Sp(r,f),T=P[0],w=P[1],b=P[2],N=w-b-u*T;(T||N)&&wp(r,f)&&(v+=N,E+=T);var C=f.parentNode;f=C&&C.nodeType===Node.DOCUMENT_FRAGMENT_NODE?C.host:C}while(!g&&f!==document.body||g&&(a.contains(f)||a===f));return(p&&Math.abs(v)<1||!p&&Math.abs(E)<1)&&(y=!0),y},Zi=function(r){return"changedTouches"in r?[r.changedTouches[0].clientX,r.changedTouches[0].clientY]:[0,0]},ix=function(r){return[r.deltaX,r.deltaY]},ox=function(r){return r&&"current"in r?r.current:r},$1=function(r,a){return r[0]===a[0]&&r[1]===a[1]},B1=function(r){return` +`)},ax=function(){var r=parseInt(document.body.getAttribute(Ia)||"0",10);return isFinite(r)?r:0},I1=function(){h.useEffect(function(){return document.body.setAttribute(Ia,(ax()+1).toString()),function(){var r=ax()-1;r<=0?document.body.removeAttribute(Ia):document.body.setAttribute(Ia,r.toString())}},[])},_1=function(r){var a=r.noRelative,l=r.noImportant,o=r.gapMode,c=o===void 0?"margin":o;I1();var u=h.useMemo(function(){return P1(c)},[c]);return h.createElement(T1,{styles:R1(u,!a,c,l?"":"!important")})},eu=!1;if(typeof window<"u")try{var Ji=Object.defineProperty({},"passive",{get:function(){return eu=!0,!0}});window.addEventListener("test",Ji,Ji),window.removeEventListener("test",Ji,Ji)}catch{eu=!1}var wa=eu?{passive:!1}:!1,M1=function(r){return r.tagName==="TEXTAREA"},Np=function(r,a){if(!(r instanceof Element))return!1;var l=window.getComputedStyle(r);return l[a]!=="hidden"&&!(l.overflowY===l.overflowX&&!M1(r)&&l[a]==="visible")},A1=function(r){return Np(r,"overflowY")},D1=function(r){return Np(r,"overflowX")},lx=function(r,a){var l=a.ownerDocument,o=a;do{typeof ShadowRoot<"u"&&o instanceof ShadowRoot&&(o=o.host);var c=wp(r,o);if(c){var u=Sp(r,o),m=u[1],f=u[2];if(m>f)return!0}o=o.parentNode}while(o&&o!==l.body);return!1},L1=function(r){var a=r.scrollTop,l=r.scrollHeight,o=r.clientHeight;return[a,l,o]},O1=function(r){var a=r.scrollLeft,l=r.scrollWidth,o=r.clientWidth;return[a,l,o]},wp=function(r,a){return r==="v"?A1(a):D1(a)},Sp=function(r,a){return r==="v"?L1(a):O1(a)},F1=function(r,a){return r==="h"&&a==="rtl"?-1:1},z1=function(r,a,l,o,c){var u=F1(r,window.getComputedStyle(a).direction),m=u*o,f=l.target,p=a.contains(f),y=!1,g=m>0,v=0,k=0;do{if(!f)break;var P=Sp(r,f),T=P[0],w=P[1],N=P[2],b=w-N-u*T;(T||b)&&wp(r,f)&&(v+=b,k+=T);var S=f.parentNode;f=S&&S.nodeType===Node.DOCUMENT_FRAGMENT_NODE?S.host:S}while(!p&&f!==document.body||p&&(a.contains(f)||a===f));return(g&&Math.abs(v)<1||!g&&Math.abs(k)<1)&&(y=!0),y},Zi=function(r){return"changedTouches"in r?[r.changedTouches[0].clientX,r.changedTouches[0].clientY]:[0,0]},ix=function(r){return[r.deltaX,r.deltaY]},ox=function(r){return r&&"current"in r?r.current:r},$1=function(r,a){return r[0]===a[0]&&r[1]===a[1]},B1=function(r){return` .block-interactivity-`.concat(r,` {pointer-events: none;} .allow-interactivity-`).concat(r,` {pointer-events: all;} -`)},U1=0,wa=[];function V1(r){var a=h.useRef([]),l=h.useRef([0,0]),o=h.useRef(),c=h.useState(U1++)[0],u=h.useState(bp)[0],m=h.useRef(r);h.useEffect(function(){m.current=r},[r]),h.useEffect(function(){if(r.inert){document.body.classList.add("block-interactivity-".concat(c));var w=d1([r.lockRef.current],(r.shards||[]).map(ox),!0).filter(Boolean);return w.forEach(function(b){return b.classList.add("allow-interactivity-".concat(c))}),function(){document.body.classList.remove("block-interactivity-".concat(c)),w.forEach(function(b){return b.classList.remove("allow-interactivity-".concat(c))})}}},[r.inert,r.lockRef.current,r.shards]);var f=h.useCallback(function(w,b){if("touches"in w&&w.touches.length===2||w.type==="wheel"&&w.ctrlKey)return!m.current.allowPinchZoom;var N=Zi(w),C=l.current,j="deltaX"in w?w.deltaX:C[0]-N[0],I="deltaY"in w?w.deltaY:C[1]-N[1],U,V=w.target,_=Math.abs(j)>Math.abs(I)?"h":"v";if("touches"in w&&_==="h"&&V.type==="range")return!1;var k=window.getSelection(),R=k&&k.anchorNode,Z=R?R===V||R.contains(V):!1;if(Z)return!1;var ne=lx(_,V);if(!ne)return!0;if(ne?U=_:(U=_==="v"?"h":"v",ne=lx(_,V)),!ne)return!1;if(!o.current&&"changedTouches"in w&&(j||I)&&(o.current=U),!U)return!0;var ae=o.current||U;return z1(ae,b,w,ae==="h"?j:I)},[]),g=h.useCallback(function(w){var b=w;if(!(!wa.length||wa[wa.length-1]!==u)){var N="deltaY"in b?ix(b):Zi(b),C=a.current.filter(function(U){return U.name===b.type&&(U.target===b.target||b.target===U.shadowParent)&&$1(U.delta,N)})[0];if(C&&C.should){b.cancelable&&b.preventDefault();return}if(!C){var j=(m.current.shards||[]).map(ox).filter(Boolean).filter(function(U){return U.contains(b.target)}),I=j.length>0?f(b,j[0]):!m.current.noIsolation;I&&b.cancelable&&b.preventDefault()}}},[]),y=h.useCallback(function(w,b,N,C){var j={name:w,delta:b,target:N,should:C,shadowParent:W1(N)};a.current.push(j),setTimeout(function(){a.current=a.current.filter(function(I){return I!==j})},1)},[]),p=h.useCallback(function(w){l.current=Zi(w),o.current=void 0},[]),v=h.useCallback(function(w){y(w.type,ix(w),w.target,f(w,r.lockRef.current))},[]),E=h.useCallback(function(w){y(w.type,Zi(w),w.target,f(w,r.lockRef.current))},[]);h.useEffect(function(){return wa.push(u),r.setCallbacks({onScrollCapture:v,onWheelCapture:v,onTouchMoveCapture:E}),document.addEventListener("wheel",g,Na),document.addEventListener("touchmove",g,Na),document.addEventListener("touchstart",p,Na),function(){wa=wa.filter(function(w){return w!==u}),document.removeEventListener("wheel",g,Na),document.removeEventListener("touchmove",g,Na),document.removeEventListener("touchstart",p,Na)}},[]);var P=r.removeScrollBar,T=r.inert;return h.createElement(h.Fragment,null,T?h.createElement(u,{styles:B1(c)}):null,P?h.createElement(_1,{noRelative:r.noRelative,gapMode:r.gapMode}):null)}function W1(r){for(var a=null;r!==null;)r instanceof ShadowRoot&&(a=r.host,r=r.host),r=r.parentNode;return a}const H1=v1(jp,V1);var Eu=h.forwardRef(function(r,a){return h.createElement(Co,ir({},r,{ref:a,sideCar:H1}))});Eu.classNames=Co.classNames;var K1=function(r){if(typeof document>"u")return null;var a=Array.isArray(r)?r[0]:r;return a.ownerDocument.body},Sa=new WeakMap,eo=new WeakMap,to={},Ld=0,Cp=function(r){return r&&(r.host||Cp(r.parentNode))},G1=function(r,a){return a.map(function(l){if(r.contains(l))return l;var o=Cp(l);return o&&r.contains(o)?o:(console.error("aria-hidden",l,"in not contained inside",r,". Doing nothing"),null)}).filter(function(l){return!!l})},Y1=function(r,a,l,o){var c=G1(a,Array.isArray(r)?r:[r]);to[l]||(to[l]=new WeakMap);var u=to[l],m=[],f=new Set,g=new Set(c),y=function(v){!v||f.has(v)||(f.add(v),y(v.parentNode))};c.forEach(y);var p=function(v){!v||g.has(v)||Array.prototype.forEach.call(v.children,function(E){if(f.has(E))p(E);else try{var P=E.getAttribute(o),T=P!==null&&P!=="false",w=(Sa.get(E)||0)+1,b=(u.get(E)||0)+1;Sa.set(E,w),u.set(E,b),m.push(E),w===1&&T&&eo.set(E,!0),b===1&&E.setAttribute(l,"true"),T||E.setAttribute(o,"true")}catch(N){console.error("aria-hidden: cannot operate on ",E,N)}})};return p(a),f.clear(),Ld++,function(){m.forEach(function(v){var E=Sa.get(v)-1,P=u.get(v)-1;Sa.set(v,E),u.set(v,P),E||(eo.has(v)||v.removeAttribute(o),eo.delete(v)),P||v.removeAttribute(l)}),Ld--,Ld||(Sa=new WeakMap,Sa=new WeakMap,eo=new WeakMap,to={})}},kp=function(r,a,l){l===void 0&&(l="data-aria-hidden");var o=Array.from(Array.isArray(r)?r:[r]),c=K1(r);return c?(o.push.apply(o,Array.from(c.querySelectorAll("[aria-live], script"))),Y1(o,c,l,"aria-hidden")):function(){return null}},ko="Dialog",[Ep]=gn(ko),[Q1,Zs]=Ep(ko),Pp=r=>{const{__scopeDialog:a,children:l,open:o,defaultOpen:c,onOpenChange:u,modal:m=!0}=r,f=h.useRef(null),g=h.useRef(null),[y,p]=Bn({prop:o,defaultProp:c??!1,onChange:u,caller:ko});return e.jsx(Q1,{scope:a,triggerRef:f,contentRef:g,contentId:dn(),titleId:dn(),descriptionId:dn(),open:y,onOpenChange:p,onOpenToggle:h.useCallback(()=>p(v=>!v),[p]),modal:m,children:l})};Pp.displayName=ko;var Tp="DialogTrigger",q1=h.forwardRef((r,a)=>{const{__scopeDialog:l,...o}=r,c=Zs(Tp,l),u=at(a,c.triggerRef);return e.jsx(Xe.button,{type:"button","aria-haspopup":"dialog","aria-expanded":c.open,"aria-controls":c.contentId,"data-state":Ru(c.open),...o,ref:u,onClick:Qe(r.onClick,c.onOpenToggle)})});q1.displayName=Tp;var Pu="DialogPortal",[X1,Rp]=Ep(Pu,{forceMount:void 0}),Ip=r=>{const{__scopeDialog:a,forceMount:l,children:o,container:c}=r,u=Zs(Pu,a);return e.jsx(X1,{scope:a,forceMount:l,children:h.Children.map(o,m=>e.jsx(Fl,{present:l||u.open,children:e.jsx(ku,{asChild:!0,container:c,children:m})}))})};Ip.displayName=Pu;var fo="DialogOverlay",_p=h.forwardRef((r,a)=>{const l=Rp(fo,r.__scopeDialog),{forceMount:o=l.forceMount,...c}=r,u=Zs(fo,r.__scopeDialog);return u.modal?e.jsx(Fl,{present:o||u.open,children:e.jsx(Z1,{...c,ref:a})}):null});_p.displayName=fo;var J1=Dl("DialogOverlay.RemoveScroll"),Z1=h.forwardRef((r,a)=>{const{__scopeDialog:l,...o}=r,c=Zs(fo,l);return e.jsx(Eu,{as:J1,allowPinchZoom:!0,shards:[c.contentRef],children:e.jsx(Xe.div,{"data-state":Ru(c.open),...o,ref:a,style:{pointerEvents:"auto",...o.style}})})}),Un="DialogContent",Mp=h.forwardRef((r,a)=>{const l=Rp(Un,r.__scopeDialog),{forceMount:o=l.forceMount,...c}=r,u=Zs(Un,r.__scopeDialog);return e.jsx(Fl,{present:o||u.open,children:u.modal?e.jsx(e2,{...c,ref:a}):e.jsx(t2,{...c,ref:a})})});Mp.displayName=Un;var e2=h.forwardRef((r,a)=>{const l=Zs(Un,r.__scopeDialog),o=h.useRef(null),c=at(a,l.contentRef,o);return h.useEffect(()=>{const u=o.current;if(u)return kp(u)},[]),e.jsx(Ap,{...r,ref:c,trapFocus:l.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Qe(r.onCloseAutoFocus,u=>{var m;u.preventDefault(),(m=l.triggerRef.current)==null||m.focus()}),onPointerDownOutside:Qe(r.onPointerDownOutside,u=>{const m=u.detail.originalEvent,f=m.button===0&&m.ctrlKey===!0;(m.button===2||f)&&u.preventDefault()}),onFocusOutside:Qe(r.onFocusOutside,u=>u.preventDefault())})}),t2=h.forwardRef((r,a)=>{const l=Zs(Un,r.__scopeDialog),o=h.useRef(!1),c=h.useRef(!1);return e.jsx(Ap,{...r,ref:a,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:u=>{var m,f;(m=r.onCloseAutoFocus)==null||m.call(r,u),u.defaultPrevented||(o.current||(f=l.triggerRef.current)==null||f.focus(),u.preventDefault()),o.current=!1,c.current=!1},onInteractOutside:u=>{var g,y;(g=r.onInteractOutside)==null||g.call(r,u),u.defaultPrevented||(o.current=!0,u.detail.originalEvent.type==="pointerdown"&&(c.current=!0));const m=u.target;((y=l.triggerRef.current)==null?void 0:y.contains(m))&&u.preventDefault(),u.detail.originalEvent.type==="focusin"&&c.current&&u.preventDefault()}})}),Ap=h.forwardRef((r,a)=>{const{__scopeDialog:l,trapFocus:o,onOpenAutoFocus:c,onCloseAutoFocus:u,...m}=r,f=Zs(Un,l),g=h.useRef(null),y=at(a,g);return gp(),e.jsxs(e.Fragment,{children:[e.jsx(Cu,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:c,onUnmountAutoFocus:u,children:e.jsx(Su,{role:"dialog",id:f.contentId,"aria-describedby":f.descriptionId,"aria-labelledby":f.titleId,"data-state":Ru(f.open),...m,ref:y,onDismiss:()=>f.onOpenChange(!1)})}),e.jsxs(e.Fragment,{children:[e.jsx(s2,{titleId:f.titleId}),e.jsx(n2,{contentRef:g,descriptionId:f.descriptionId})]})]})}),Tu="DialogTitle",Dp=h.forwardRef((r,a)=>{const{__scopeDialog:l,...o}=r,c=Zs(Tu,l);return e.jsx(Xe.h2,{id:c.titleId,...o,ref:a})});Dp.displayName=Tu;var Lp="DialogDescription",Op=h.forwardRef((r,a)=>{const{__scopeDialog:l,...o}=r,c=Zs(Lp,l);return e.jsx(Xe.p,{id:c.descriptionId,...o,ref:a})});Op.displayName=Lp;var Fp="DialogClose",zp=h.forwardRef((r,a)=>{const{__scopeDialog:l,...o}=r,c=Zs(Fp,l);return e.jsx(Xe.button,{type:"button",...o,ref:a,onClick:Qe(r.onClick,()=>c.onOpenChange(!1))})});zp.displayName=Fp;function Ru(r){return r?"open":"closed"}var $p="DialogTitleWarning",[ZC,Bp]=Iw($p,{contentName:Un,titleName:Tu,docsSlug:"dialog"}),s2=({titleId:r})=>{const a=Bp($p),l=`\`${a.contentName}\` requires a \`${a.titleName}\` for the component to be accessible for screen reader users. +`)},U1=0,Sa=[];function V1(r){var a=h.useRef([]),l=h.useRef([0,0]),o=h.useRef(),c=h.useState(U1++)[0],u=h.useState(bp)[0],m=h.useRef(r);h.useEffect(function(){m.current=r},[r]),h.useEffect(function(){if(r.inert){document.body.classList.add("block-interactivity-".concat(c));var w=d1([r.lockRef.current],(r.shards||[]).map(ox),!0).filter(Boolean);return w.forEach(function(N){return N.classList.add("allow-interactivity-".concat(c))}),function(){document.body.classList.remove("block-interactivity-".concat(c)),w.forEach(function(N){return N.classList.remove("allow-interactivity-".concat(c))})}}},[r.inert,r.lockRef.current,r.shards]);var f=h.useCallback(function(w,N){if("touches"in w&&w.touches.length===2||w.type==="wheel"&&w.ctrlKey)return!m.current.allowPinchZoom;var b=Zi(w),S=l.current,j="deltaX"in w?w.deltaX:S[0]-b[0],_="deltaY"in w?w.deltaY:S[1]-b[1],O,V=w.target,I=Math.abs(j)>Math.abs(_)?"h":"v";if("touches"in w&&I==="h"&&V.type==="range")return!1;var R=window.getSelection(),E=R&&R.anchorNode,Y=E?E===V||E.contains(V):!1;if(Y)return!1;var ne=lx(I,V);if(!ne)return!0;if(ne?O=I:(O=I==="v"?"h":"v",ne=lx(I,V)),!ne)return!1;if(!o.current&&"changedTouches"in w&&(j||_)&&(o.current=O),!O)return!0;var ae=o.current||O;return z1(ae,N,w,ae==="h"?j:_)},[]),p=h.useCallback(function(w){var N=w;if(!(!Sa.length||Sa[Sa.length-1]!==u)){var b="deltaY"in N?ix(N):Zi(N),S=a.current.filter(function(O){return O.name===N.type&&(O.target===N.target||N.target===O.shadowParent)&&$1(O.delta,b)})[0];if(S&&S.should){N.cancelable&&N.preventDefault();return}if(!S){var j=(m.current.shards||[]).map(ox).filter(Boolean).filter(function(O){return O.contains(N.target)}),_=j.length>0?f(N,j[0]):!m.current.noIsolation;_&&N.cancelable&&N.preventDefault()}}},[]),y=h.useCallback(function(w,N,b,S){var j={name:w,delta:N,target:b,should:S,shadowParent:W1(b)};a.current.push(j),setTimeout(function(){a.current=a.current.filter(function(_){return _!==j})},1)},[]),g=h.useCallback(function(w){l.current=Zi(w),o.current=void 0},[]),v=h.useCallback(function(w){y(w.type,ix(w),w.target,f(w,r.lockRef.current))},[]),k=h.useCallback(function(w){y(w.type,Zi(w),w.target,f(w,r.lockRef.current))},[]);h.useEffect(function(){return Sa.push(u),r.setCallbacks({onScrollCapture:v,onWheelCapture:v,onTouchMoveCapture:k}),document.addEventListener("wheel",p,wa),document.addEventListener("touchmove",p,wa),document.addEventListener("touchstart",g,wa),function(){Sa=Sa.filter(function(w){return w!==u}),document.removeEventListener("wheel",p,wa),document.removeEventListener("touchmove",p,wa),document.removeEventListener("touchstart",g,wa)}},[]);var P=r.removeScrollBar,T=r.inert;return h.createElement(h.Fragment,null,T?h.createElement(u,{styles:B1(c)}):null,P?h.createElement(_1,{noRelative:r.noRelative,gapMode:r.gapMode}):null)}function W1(r){for(var a=null;r!==null;)r instanceof ShadowRoot&&(a=r.host,r=r.host),r=r.parentNode;return a}const H1=v1(jp,V1);var Eu=h.forwardRef(function(r,a){return h.createElement(Co,ir({},r,{ref:a,sideCar:H1}))});Eu.classNames=Co.classNames;var K1=function(r){if(typeof document>"u")return null;var a=Array.isArray(r)?r[0]:r;return a.ownerDocument.body},Ca=new WeakMap,eo=new WeakMap,to={},Ld=0,Cp=function(r){return r&&(r.host||Cp(r.parentNode))},G1=function(r,a){return a.map(function(l){if(r.contains(l))return l;var o=Cp(l);return o&&r.contains(o)?o:(console.error("aria-hidden",l,"in not contained inside",r,". Doing nothing"),null)}).filter(function(l){return!!l})},Y1=function(r,a,l,o){var c=G1(a,Array.isArray(r)?r:[r]);to[l]||(to[l]=new WeakMap);var u=to[l],m=[],f=new Set,p=new Set(c),y=function(v){!v||f.has(v)||(f.add(v),y(v.parentNode))};c.forEach(y);var g=function(v){!v||p.has(v)||Array.prototype.forEach.call(v.children,function(k){if(f.has(k))g(k);else try{var P=k.getAttribute(o),T=P!==null&&P!=="false",w=(Ca.get(k)||0)+1,N=(u.get(k)||0)+1;Ca.set(k,w),u.set(k,N),m.push(k),w===1&&T&&eo.set(k,!0),N===1&&k.setAttribute(l,"true"),T||k.setAttribute(o,"true")}catch(b){console.error("aria-hidden: cannot operate on ",k,b)}})};return g(a),f.clear(),Ld++,function(){m.forEach(function(v){var k=Ca.get(v)-1,P=u.get(v)-1;Ca.set(v,k),u.set(v,P),k||(eo.has(v)||v.removeAttribute(o),eo.delete(v)),P||v.removeAttribute(l)}),Ld--,Ld||(Ca=new WeakMap,Ca=new WeakMap,eo=new WeakMap,to={})}},kp=function(r,a,l){l===void 0&&(l="data-aria-hidden");var o=Array.from(Array.isArray(r)?r:[r]),c=K1(r);return c?(o.push.apply(o,Array.from(c.querySelectorAll("[aria-live], script"))),Y1(o,c,l,"aria-hidden")):function(){return null}},ko="Dialog",[Ep]=yn(ko),[Q1,Zs]=Ep(ko),Pp=r=>{const{__scopeDialog:a,children:l,open:o,defaultOpen:c,onOpenChange:u,modal:m=!0}=r,f=h.useRef(null),p=h.useRef(null),[y,g]=Un({prop:o,defaultProp:c??!1,onChange:u,caller:ko});return e.jsx(Q1,{scope:a,triggerRef:f,contentRef:p,contentId:dn(),titleId:dn(),descriptionId:dn(),open:y,onOpenChange:g,onOpenToggle:h.useCallback(()=>g(v=>!v),[g]),modal:m,children:l})};Pp.displayName=ko;var Tp="DialogTrigger",q1=h.forwardRef((r,a)=>{const{__scopeDialog:l,...o}=r,c=Zs(Tp,l),u=at(a,c.triggerRef);return e.jsx(Xe.button,{type:"button","aria-haspopup":"dialog","aria-expanded":c.open,"aria-controls":c.contentId,"data-state":Ru(c.open),...o,ref:u,onClick:Qe(r.onClick,c.onOpenToggle)})});q1.displayName=Tp;var Pu="DialogPortal",[X1,Rp]=Ep(Pu,{forceMount:void 0}),Ip=r=>{const{__scopeDialog:a,forceMount:l,children:o,container:c}=r,u=Zs(Pu,a);return e.jsx(X1,{scope:a,forceMount:l,children:h.Children.map(o,m=>e.jsx(Fl,{present:l||u.open,children:e.jsx(ku,{asChild:!0,container:c,children:m})}))})};Ip.displayName=Pu;var fo="DialogOverlay",_p=h.forwardRef((r,a)=>{const l=Rp(fo,r.__scopeDialog),{forceMount:o=l.forceMount,...c}=r,u=Zs(fo,r.__scopeDialog);return u.modal?e.jsx(Fl,{present:o||u.open,children:e.jsx(Z1,{...c,ref:a})}):null});_p.displayName=fo;var J1=Dl("DialogOverlay.RemoveScroll"),Z1=h.forwardRef((r,a)=>{const{__scopeDialog:l,...o}=r,c=Zs(fo,l);return e.jsx(Eu,{as:J1,allowPinchZoom:!0,shards:[c.contentRef],children:e.jsx(Xe.div,{"data-state":Ru(c.open),...o,ref:a,style:{pointerEvents:"auto",...o.style}})})}),Vn="DialogContent",Mp=h.forwardRef((r,a)=>{const l=Rp(Vn,r.__scopeDialog),{forceMount:o=l.forceMount,...c}=r,u=Zs(Vn,r.__scopeDialog);return e.jsx(Fl,{present:o||u.open,children:u.modal?e.jsx(e2,{...c,ref:a}):e.jsx(t2,{...c,ref:a})})});Mp.displayName=Vn;var e2=h.forwardRef((r,a)=>{const l=Zs(Vn,r.__scopeDialog),o=h.useRef(null),c=at(a,l.contentRef,o);return h.useEffect(()=>{const u=o.current;if(u)return kp(u)},[]),e.jsx(Ap,{...r,ref:c,trapFocus:l.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Qe(r.onCloseAutoFocus,u=>{var m;u.preventDefault(),(m=l.triggerRef.current)==null||m.focus()}),onPointerDownOutside:Qe(r.onPointerDownOutside,u=>{const m=u.detail.originalEvent,f=m.button===0&&m.ctrlKey===!0;(m.button===2||f)&&u.preventDefault()}),onFocusOutside:Qe(r.onFocusOutside,u=>u.preventDefault())})}),t2=h.forwardRef((r,a)=>{const l=Zs(Vn,r.__scopeDialog),o=h.useRef(!1),c=h.useRef(!1);return e.jsx(Ap,{...r,ref:a,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:u=>{var m,f;(m=r.onCloseAutoFocus)==null||m.call(r,u),u.defaultPrevented||(o.current||(f=l.triggerRef.current)==null||f.focus(),u.preventDefault()),o.current=!1,c.current=!1},onInteractOutside:u=>{var p,y;(p=r.onInteractOutside)==null||p.call(r,u),u.defaultPrevented||(o.current=!0,u.detail.originalEvent.type==="pointerdown"&&(c.current=!0));const m=u.target;((y=l.triggerRef.current)==null?void 0:y.contains(m))&&u.preventDefault(),u.detail.originalEvent.type==="focusin"&&c.current&&u.preventDefault()}})}),Ap=h.forwardRef((r,a)=>{const{__scopeDialog:l,trapFocus:o,onOpenAutoFocus:c,onCloseAutoFocus:u,...m}=r,f=Zs(Vn,l),p=h.useRef(null),y=at(a,p);return gp(),e.jsxs(e.Fragment,{children:[e.jsx(Cu,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:c,onUnmountAutoFocus:u,children:e.jsx(Su,{role:"dialog",id:f.contentId,"aria-describedby":f.descriptionId,"aria-labelledby":f.titleId,"data-state":Ru(f.open),...m,ref:y,onDismiss:()=>f.onOpenChange(!1)})}),e.jsxs(e.Fragment,{children:[e.jsx(s2,{titleId:f.titleId}),e.jsx(n2,{contentRef:p,descriptionId:f.descriptionId})]})]})}),Tu="DialogTitle",Dp=h.forwardRef((r,a)=>{const{__scopeDialog:l,...o}=r,c=Zs(Tu,l);return e.jsx(Xe.h2,{id:c.titleId,...o,ref:a})});Dp.displayName=Tu;var Lp="DialogDescription",Op=h.forwardRef((r,a)=>{const{__scopeDialog:l,...o}=r,c=Zs(Lp,l);return e.jsx(Xe.p,{id:c.descriptionId,...o,ref:a})});Op.displayName=Lp;var Fp="DialogClose",zp=h.forwardRef((r,a)=>{const{__scopeDialog:l,...o}=r,c=Zs(Fp,l);return e.jsx(Xe.button,{type:"button",...o,ref:a,onClick:Qe(r.onClick,()=>c.onOpenChange(!1))})});zp.displayName=Fp;function Ru(r){return r?"open":"closed"}var $p="DialogTitleWarning",[ZC,Bp]=Iw($p,{contentName:Vn,titleName:Tu,docsSlug:"dialog"}),s2=({titleId:r})=>{const a=Bp($p),l=`\`${a.contentName}\` requires a \`${a.titleName}\` for the component to be accessible for screen reader users. If you want to hide the \`${a.titleName}\`, you can wrap it with our VisuallyHidden component. -For more information, see https://radix-ui.com/primitives/docs/components/${a.docsSlug}`;return h.useEffect(()=>{r&&(document.getElementById(r)||console.error(l))},[l,r]),null},r2="DialogDescriptionWarning",n2=({contentRef:r,descriptionId:a})=>{const o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Bp(r2).contentName}}.`;return h.useEffect(()=>{var u;const c=(u=r.current)==null?void 0:u.getAttribute("aria-describedby");a&&c&&(document.getElementById(a)||console.warn(o))},[o,r,a]),null},a2=Pp,l2=Ip,i2=_p,o2=Mp,c2=Dp,d2=Op,u2=zp;function Ct(r){return e.jsx(a2,{"data-slot":"dialog",...r})}function h2(r){return e.jsx(l2,{...r})}const Up=h.forwardRef(({className:r,...a},l)=>e.jsx(i2,{ref:l,className:lt("fixed inset-0 z-50 bg-black/50",r),...a}));Up.displayName="DialogOverlay";const Nt=h.forwardRef(({className:r,children:a,showCloseButton:l=!0,...o},c)=>e.jsxs(h2,{children:[e.jsx(Up,{}),e.jsxs(o2,{ref:c,"aria-describedby":void 0,className:lt("fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-lg border bg-background p-6 shadow-lg sm:max-w-lg",r),...o,children:[a,l&&e.jsxs(u2,{className:"absolute right-4 top-4 rounded-sm opacity-70 hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",children:[e.jsx(ms,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Nt.displayName="DialogContent";function kt({className:r,...a}){return e.jsx("div",{className:lt("flex flex-col gap-2 text-center sm:text-left",r),...a})}function Dt({className:r,...a}){return e.jsx("div",{className:lt("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",r),...a})}function Et(r){return e.jsx(c2,{className:"text-lg font-semibold leading-none",...r})}function m2(r){return e.jsx(d2,{className:"text-sm text-muted-foreground",...r})}function Iu(r,a){const[l,o]=h.useState(r);return h.useEffect(()=>{const c=setTimeout(()=>o(r),a);return()=>clearTimeout(c)},[r,a]),l}function Qs({page:r,totalPages:a,total:l,pageSize:o,onPageChange:c,onPageSizeChange:u,pageSizeOptions:m=[10,20,50,100]}){return a<=1&&!u?null:e.jsxs("div",{className:"flex items-center justify-between gap-4 py-4 px-5 border-t border-gray-700/50",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm text-gray-400",children:[e.jsxs("span",{children:["共 ",l," 条"]}),u&&e.jsx("select",{value:o,onChange:f=>u(Number(f.target.value)),className:"bg-[#0f2137] border border-gray-600 rounded px-2 py-1 text-gray-300 text-sm",children:m.map(f=>e.jsxs("option",{value:f,children:[f," 条/页"]},f))})]}),a>1&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{type:"button",onClick:()=>c(1),disabled:r<=1,className:"px-2 py-1 rounded border border-gray-600 text-gray-400 hover:bg-gray-700/50 disabled:opacity-40 text-sm",children:"首页"}),e.jsx("button",{type:"button",onClick:()=>c(r-1),disabled:r<=1,className:"px-3 py-1 rounded border border-gray-600 text-gray-400 hover:bg-gray-700/50 disabled:opacity-40 text-sm",children:"上一页"}),e.jsxs("span",{className:"px-3 py-1 text-gray-400 text-sm",children:[r," / ",a]}),e.jsx("button",{type:"button",onClick:()=>c(r+1),disabled:r>=a,className:"px-3 py-1 rounded border border-gray-600 text-gray-400 hover:bg-gray-700/50 disabled:opacity-40 text-sm",children:"下一页"}),e.jsx("button",{type:"button",onClick:()=>c(a),disabled:r>=a,className:"px-2 py-1 rounded border border-gray-600 text-gray-400 hover:bg-gray-700/50 disabled:opacity-40 text-sm",children:"末页"})]})]})}function f2(){const[r,a]=h.useState([]),[l,o]=h.useState([]),[c,u]=h.useState(0),[m,f]=h.useState(0),[g,y]=h.useState(0),[p,v]=h.useState(1),[E,P]=h.useState(10),[T,w]=h.useState(""),b=Iu(T,300),[N,C]=h.useState("all"),[j,I]=h.useState(!0),[U,V]=h.useState(null),[_,k]=h.useState(null),[R,Z]=h.useState(""),[ne,ae]=h.useState(!1);async function Q(){I(!0),V(null);try{const K=N==="all"?"":N==="completed"?"completed":N,A=new URLSearchParams({page:String(p),pageSize:String(E),...K&&{status:K},...b&&{search:b}}),[O,L]=await Promise.all([Be(`/api/orders?${A}`),Be("/api/db/users?page=1&pageSize=500")]);O!=null&&O.success&&(a(O.orders||[]),u(O.total??0),f(O.totalRevenue??0),y(O.todayRevenue??0)),L!=null&&L.success&&L.users&&o(L.users)}catch(K){console.error("加载订单失败",K),V("加载订单失败,请检查网络后重试")}finally{I(!1)}}h.useEffect(()=>{v(1)},[b,N]),h.useEffect(()=>{Q()},[p,E,b,N]);const se=K=>{var A;return K.userNickname||((A=l.find(O=>O.id===K.userId))==null?void 0:A.nickname)||"匿名用户"},H=K=>{var A;return((A=l.find(O=>O.id===K))==null?void 0:A.phone)||"-"},oe=K=>{const A=K.productType||K.type||"",O=K.description||"";if(O){if(A==="section"&&O.includes("章节")){if(O.includes("-")){const L=O.split("-");if(L.length>=3)return{name:`第${L[1]}章 第${L[2]}节`,type:"《一场Soul的创业实验》"}}return{name:O,type:"章节购买"}}return A==="fullbook"||O.includes("全书")?{name:"《一场Soul的创业实验》",type:"全书购买"}:A==="vip"||O.includes("VIP")?{name:"VIP年度会员",type:"VIP"}:A==="match"||O.includes("伙伴")?{name:"找伙伴匹配",type:"功能服务"}:{name:O,type:"其他"}}return A==="section"?{name:`章节 ${K.productId||K.sectionId||""}`,type:"单章"}:A==="fullbook"?{name:"《一场Soul的创业实验》",type:"全书"}:A==="vip"?{name:"VIP年度会员",type:"VIP"}:A==="match"?{name:"找伙伴匹配",type:"功能"}:{name:"未知商品",type:A||"其他"}},ve=Math.ceil(c/E)||1;async function B(){var K;if(!(!(_!=null&&_.orderSn)&&!(_!=null&&_.id))){ae(!0),V(null);try{const A=await vt("/api/admin/orders/refund",{orderSn:_.orderSn||_.id,reason:R||void 0});A!=null&&A.success?(k(null),Z(""),Q()):V((A==null?void 0:A.error)||"退款失败")}catch(A){const O=A;V(((K=O==null?void 0:O.data)==null?void 0:K.error)||"退款失败,请检查网络后重试")}finally{ae(!1)}}}function ce(){if(r.length===0){alert("暂无数据可导出");return}const K=["订单号","用户","手机号","商品","金额","支付方式","状态","退款原因","分销佣金","下单时间"],A=r.map(de=>{const Y=oe(de);return[de.orderSn||de.id||"",se(de),H(de.userId),Y.name,Number(de.amount||0).toFixed(2),de.paymentMethod==="wechat"?"微信支付":de.paymentMethod==="alipay"?"支付宝":de.paymentMethod||"微信支付",de.status==="refunded"?"已退款":de.status==="paid"||de.status==="completed"?"已完成":de.status==="pending"||de.status==="created"?"待支付":"已失败",de.status==="refunded"&&de.refundReason?de.refundReason:"-",de.referrerEarnings?Number(de.referrerEarnings).toFixed(2):"-",de.createdAt?new Date(de.createdAt).toLocaleString("zh-CN"):""].join(",")}),O="\uFEFF"+[K.join(","),...A].join(` -`),L=new Blob([O],{type:"text/csv;charset=utf-8"}),J=URL.createObjectURL(L),G=document.createElement("a");G.href=J,G.download=`订单列表_${new Date().toISOString().slice(0,10)}.csv`,G.click(),URL.revokeObjectURL(J)}return e.jsxs("div",{className:"p-8 w-full",children:[U&&e.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[e.jsx("span",{children:U}),e.jsx("button",{type:"button",onClick:()=>V(null),className:"hover:text-red-300",children:"×"})]}),e.jsxs("div",{className:"flex justify-between items-center mb-8",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-white",children:"订单管理"}),e.jsxs("p",{className:"text-gray-400 mt-1",children:["共 ",r.length," 笔订单"]})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(X,{variant:"outline",onClick:Q,disabled:j,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${j?"animate-spin":""}`}),"刷新"]}),e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[e.jsx("span",{className:"text-gray-400",children:"总收入:"}),e.jsxs("span",{className:"text-[#38bdac] font-bold",children:["¥",m.toFixed(2)]}),e.jsx("span",{className:"text-gray-600",children:"|"}),e.jsx("span",{className:"text-gray-400",children:"今日:"}),e.jsxs("span",{className:"text-[#FFD700] font-bold",children:["¥",g.toFixed(2)]})]})]})]}),e.jsxs("div",{className:"flex items-center gap-4 mb-6",children:[e.jsxs("div",{className:"relative flex-1 max-w-md",children:[e.jsx(cn,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-500"}),e.jsx(le,{type:"text",placeholder:"搜索订单号/用户/章节...",className:"pl-10 bg-[#0f2137] border-gray-700 text-white placeholder:text-gray-500",value:T,onChange:K=>w(K.target.value)})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Kx,{className:"w-4 h-4 text-gray-400"}),e.jsxs("select",{value:N,onChange:K=>C(K.target.value),className:"bg-[#0f2137] border border-gray-700 text-white rounded-lg px-3 py-2 text-sm",children:[e.jsx("option",{value:"all",children:"全部状态"}),e.jsx("option",{value:"completed",children:"已完成"}),e.jsx("option",{value:"pending",children:"待支付"}),e.jsx("option",{value:"created",children:"已创建"}),e.jsx("option",{value:"failed",children:"已失败"}),e.jsx("option",{value:"refunded",children:"已退款"})]})]}),e.jsxs(X,{variant:"outline",onClick:ce,disabled:r.length===0,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx(ub,{className:"w-4 h-4 mr-2"}),"导出 CSV"]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:e.jsx(we,{className:"p-0",children:j?e.jsxs("div",{className:"flex items-center justify-center py-12",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):e.jsxs("div",{children:[e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"订单号"}),e.jsx(be,{className:"text-gray-400",children:"用户"}),e.jsx(be,{className:"text-gray-400",children:"商品"}),e.jsx(be,{className:"text-gray-400",children:"金额"}),e.jsx(be,{className:"text-gray-400",children:"支付方式"}),e.jsx(be,{className:"text-gray-400",children:"状态"}),e.jsx(be,{className:"text-gray-400",children:"退款原因"}),e.jsx(be,{className:"text-gray-400",children:"分销佣金"}),e.jsx(be,{className:"text-gray-400",children:"下单时间"}),e.jsx(be,{className:"text-gray-400",children:"操作"})]})}),e.jsxs(ps,{children:[r.map(K=>{const A=oe(K);return e.jsxs(et,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[e.jsxs(pe,{className:"font-mono text-xs text-gray-400",children:[(K.orderSn||K.id||"").slice(0,12),"..."]}),e.jsx(pe,{children:e.jsxs("div",{children:[e.jsx("p",{className:"text-white text-sm",children:se(K)}),e.jsx("p",{className:"text-gray-500 text-xs",children:H(K.userId)})]})}),e.jsx(pe,{children:e.jsxs("div",{children:[e.jsxs("p",{className:"text-white text-sm flex items-center gap-2",children:[A.name,(K.productType||K.type)==="vip"&&e.jsx(Le,{className:"bg-amber-500/20 text-amber-400 hover:bg-amber-500/20 border-0 text-xs",children:"VIP"})]}),e.jsx("p",{className:"text-gray-500 text-xs",children:A.type})]})}),e.jsxs(pe,{className:"text-[#38bdac] font-bold",children:["¥",Number(K.amount||0).toFixed(2)]}),e.jsx(pe,{className:"text-gray-300",children:K.paymentMethod==="wechat"?"微信支付":K.paymentMethod==="alipay"?"支付宝":K.paymentMethod||"微信支付"}),e.jsx(pe,{children:K.status==="refunded"?e.jsx(Le,{className:"bg-gray-500/20 text-gray-400 hover:bg-gray-500/20 border-0",children:"已退款"}):K.status==="paid"||K.status==="completed"?e.jsx(Le,{className:"bg-green-500/20 text-green-400 hover:bg-green-500/20 border-0",children:"已完成"}):K.status==="pending"||K.status==="created"?e.jsx(Le,{className:"bg-yellow-500/20 text-yellow-400 hover:bg-yellow-500/20 border-0",children:"待支付"}):e.jsx(Le,{className:"bg-red-500/20 text-red-400 hover:bg-red-500/20 border-0",children:"已失败"})}),e.jsx(pe,{className:"text-gray-400 text-sm max-w-[120px] truncate",title:K.refundReason,children:K.status==="refunded"&&K.refundReason?K.refundReason:"-"}),e.jsx(pe,{className:"text-[#FFD700]",children:K.referrerEarnings?`¥${Number(K.referrerEarnings).toFixed(2)}`:"-"}),e.jsx(pe,{className:"text-gray-400 text-sm",children:new Date(K.createdAt).toLocaleString("zh-CN")}),e.jsx(pe,{children:(K.status==="paid"||K.status==="completed")&&e.jsxs(X,{variant:"outline",size:"sm",className:"border-orange-500/50 text-orange-400 hover:bg-orange-500/20",onClick:()=>{k(K),Z("")},children:[e.jsx(Qx,{className:"w-3 h-3 mr-1"}),"退款"]})})]},K.id)}),r.length===0&&e.jsx(et,{children:e.jsx(pe,{colSpan:10,className:"text-center py-12 text-gray-500",children:"暂无订单数据"})})]})]}),e.jsx(Qs,{page:p,totalPages:ve,total:c,pageSize:E,onPageChange:v,onPageSizeChange:K=>{P(K),v(1)}})]})})}),e.jsx(Ct,{open:!!_,onOpenChange:K=>!K&&k(null),children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",children:[e.jsx(kt,{children:e.jsx(Et,{className:"text-white",children:"订单退款"})}),_&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("p",{className:"text-gray-400 text-sm",children:["订单号:",_.orderSn||_.id]}),e.jsxs("p",{className:"text-gray-400 text-sm",children:["退款金额:¥",Number(_.amount||0).toFixed(2)]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm text-gray-400 block mb-2",children:"退款原因(选填)"}),e.jsx("div",{className:"form-input",children:e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",placeholder:"如:用户申请退款",value:R,onChange:K=>Z(K.target.value)})})]}),e.jsx("p",{className:"text-orange-400/80 text-xs",children:"退款将原路退回至用户微信,且无法撤销,请确认后再操作。"})]}),e.jsxs(Dt,{children:[e.jsx(X,{variant:"outline",className:"border-gray-600 text-gray-300",onClick:()=>k(null),disabled:ne,children:"取消"}),e.jsx(X,{className:"bg-orange-500 hover:bg-orange-600 text-white",onClick:B,disabled:ne,children:ne?"退款中...":"确认退款"})]})]})})]})}var x2=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],p2=x2.reduce((r,a)=>{const l=Xx(`Primitive.${a}`),o=h.forwardRef((c,u)=>{const{asChild:m,...f}=c,g=m?l:a;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),e.jsx(g,{...f,ref:u})});return o.displayName=`Primitive.${a}`,{...r,[a]:o}},{}),g2="Label",Vp=h.forwardRef((r,a)=>e.jsx(p2.label,{...r,ref:a,onMouseDown:l=>{var c;l.target.closest("button, input, select, textarea")||((c=r.onMouseDown)==null||c.call(r,l),!l.defaultPrevented&&l.detail>1&&l.preventDefault())}}));Vp.displayName=g2;var Wp=Vp;const te=h.forwardRef(({className:r,...a},l)=>e.jsx(Wp,{ref:l,className:lt("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",r),...a}));te.displayName=Wp.displayName;function _u(r){const a=r+"CollectionProvider",[l,o]=gn(a),[c,u]=l(a,{collectionRef:{current:null},itemMap:new Map}),m=w=>{const{scope:b,children:N}=w,C=en.useRef(null),j=en.useRef(new Map).current;return e.jsx(c,{scope:b,itemMap:j,collectionRef:C,children:N})};m.displayName=a;const f=r+"CollectionSlot",g=Dl(f),y=en.forwardRef((w,b)=>{const{scope:N,children:C}=w,j=u(f,N),I=at(b,j.collectionRef);return e.jsx(g,{ref:I,children:C})});y.displayName=f;const p=r+"CollectionItemSlot",v="data-radix-collection-item",E=Dl(p),P=en.forwardRef((w,b)=>{const{scope:N,children:C,...j}=w,I=en.useRef(null),U=at(b,I),V=u(p,N);return en.useEffect(()=>(V.itemMap.set(I,{ref:I,...j}),()=>void V.itemMap.delete(I))),e.jsx(E,{[v]:"",ref:U,children:C})});P.displayName=p;function T(w){const b=u(r+"CollectionConsumer",w);return en.useCallback(()=>{const C=b.collectionRef.current;if(!C)return[];const j=Array.from(C.querySelectorAll(`[${v}]`));return Array.from(b.itemMap.values()).sort((V,_)=>j.indexOf(V.ref.current)-j.indexOf(_.ref.current))},[b.collectionRef,b.itemMap])}return[{Provider:m,Slot:y,ItemSlot:P},T,o]}var y2=h.createContext(void 0);function Eo(r){const a=h.useContext(y2);return r||a||"ltr"}var Od="rovingFocusGroup.onEntryFocus",v2={bubbles:!1,cancelable:!0},zl="RovingFocusGroup",[tu,Hp,j2]=_u(zl),[b2,Kp]=gn(zl,[j2]),[N2,w2]=b2(zl),Gp=h.forwardRef((r,a)=>e.jsx(tu.Provider,{scope:r.__scopeRovingFocusGroup,children:e.jsx(tu.Slot,{scope:r.__scopeRovingFocusGroup,children:e.jsx(S2,{...r,ref:a})})}));Gp.displayName=zl;var S2=h.forwardRef((r,a)=>{const{__scopeRovingFocusGroup:l,orientation:o,loop:c=!1,dir:u,currentTabStopId:m,defaultCurrentTabStopId:f,onCurrentTabStopIdChange:g,onEntryFocus:y,preventScrollOnEntryFocus:p=!1,...v}=r,E=h.useRef(null),P=at(a,E),T=Eo(u),[w,b]=Bn({prop:m,defaultProp:f??null,onChange:g,caller:zl}),[N,C]=h.useState(!1),j=hn(y),I=Hp(l),U=h.useRef(!1),[V,_]=h.useState(0);return h.useEffect(()=>{const k=E.current;if(k)return k.addEventListener(Od,j),()=>k.removeEventListener(Od,j)},[j]),e.jsx(N2,{scope:l,orientation:o,dir:T,loop:c,currentTabStopId:w,onItemFocus:h.useCallback(k=>b(k),[b]),onItemShiftTab:h.useCallback(()=>C(!0),[]),onFocusableItemAdd:h.useCallback(()=>_(k=>k+1),[]),onFocusableItemRemove:h.useCallback(()=>_(k=>k-1),[]),children:e.jsx(Xe.div,{tabIndex:N||V===0?-1:0,"data-orientation":o,...v,ref:P,style:{outline:"none",...r.style},onMouseDown:Qe(r.onMouseDown,()=>{U.current=!0}),onFocus:Qe(r.onFocus,k=>{const R=!U.current;if(k.target===k.currentTarget&&R&&!N){const Z=new CustomEvent(Od,v2);if(k.currentTarget.dispatchEvent(Z),!Z.defaultPrevented){const ne=I().filter(oe=>oe.focusable),ae=ne.find(oe=>oe.active),Q=ne.find(oe=>oe.id===w),H=[ae,Q,...ne].filter(Boolean).map(oe=>oe.ref.current);qp(H,p)}}U.current=!1}),onBlur:Qe(r.onBlur,()=>C(!1))})})}),Yp="RovingFocusGroupItem",Qp=h.forwardRef((r,a)=>{const{__scopeRovingFocusGroup:l,focusable:o=!0,active:c=!1,tabStopId:u,children:m,...f}=r,g=dn(),y=u||g,p=w2(Yp,l),v=p.currentTabStopId===y,E=Hp(l),{onFocusableItemAdd:P,onFocusableItemRemove:T,currentTabStopId:w}=p;return h.useEffect(()=>{if(o)return P(),()=>T()},[o,P,T]),e.jsx(tu.ItemSlot,{scope:l,id:y,focusable:o,active:c,children:e.jsx(Xe.span,{tabIndex:v?0:-1,"data-orientation":p.orientation,...f,ref:a,onMouseDown:Qe(r.onMouseDown,b=>{o?p.onItemFocus(y):b.preventDefault()}),onFocus:Qe(r.onFocus,()=>p.onItemFocus(y)),onKeyDown:Qe(r.onKeyDown,b=>{if(b.key==="Tab"&&b.shiftKey){p.onItemShiftTab();return}if(b.target!==b.currentTarget)return;const N=E2(b,p.orientation,p.dir);if(N!==void 0){if(b.metaKey||b.ctrlKey||b.altKey||b.shiftKey)return;b.preventDefault();let j=E().filter(I=>I.focusable).map(I=>I.ref.current);if(N==="last")j.reverse();else if(N==="prev"||N==="next"){N==="prev"&&j.reverse();const I=j.indexOf(b.currentTarget);j=p.loop?P2(j,I+1):j.slice(I+1)}setTimeout(()=>qp(j))}}),children:typeof m=="function"?m({isCurrentTabStop:v,hasTabStop:w!=null}):m})})});Qp.displayName=Yp;var C2={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function k2(r,a){return a!=="rtl"?r:r==="ArrowLeft"?"ArrowRight":r==="ArrowRight"?"ArrowLeft":r}function E2(r,a,l){const o=k2(r.key,l);if(!(a==="vertical"&&["ArrowLeft","ArrowRight"].includes(o))&&!(a==="horizontal"&&["ArrowUp","ArrowDown"].includes(o)))return C2[o]}function qp(r,a=!1){const l=document.activeElement;for(const o of r)if(o===l||(o.focus({preventScroll:a}),document.activeElement!==l))return}function P2(r,a){return r.map((l,o)=>r[(a+o)%r.length])}var T2=Gp,R2=Qp,Po="Tabs",[I2]=gn(Po,[Kp]),Xp=Kp(),[_2,Mu]=I2(Po),Jp=h.forwardRef((r,a)=>{const{__scopeTabs:l,value:o,onValueChange:c,defaultValue:u,orientation:m="horizontal",dir:f,activationMode:g="automatic",...y}=r,p=Eo(f),[v,E]=Bn({prop:o,onChange:c,defaultProp:u??"",caller:Po});return e.jsx(_2,{scope:l,baseId:dn(),value:v,onValueChange:E,orientation:m,dir:p,activationMode:g,children:e.jsx(Xe.div,{dir:p,"data-orientation":m,...y,ref:a})})});Jp.displayName=Po;var Zp="TabsList",e0=h.forwardRef((r,a)=>{const{__scopeTabs:l,loop:o=!0,...c}=r,u=Mu(Zp,l),m=Xp(l);return e.jsx(T2,{asChild:!0,...m,orientation:u.orientation,dir:u.dir,loop:o,children:e.jsx(Xe.div,{role:"tablist","aria-orientation":u.orientation,...c,ref:a})})});e0.displayName=Zp;var t0="TabsTrigger",s0=h.forwardRef((r,a)=>{const{__scopeTabs:l,value:o,disabled:c=!1,...u}=r,m=Mu(t0,l),f=Xp(l),g=a0(m.baseId,o),y=l0(m.baseId,o),p=o===m.value;return e.jsx(R2,{asChild:!0,...f,focusable:!c,active:p,children:e.jsx(Xe.button,{type:"button",role:"tab","aria-selected":p,"aria-controls":y,"data-state":p?"active":"inactive","data-disabled":c?"":void 0,disabled:c,id:g,...u,ref:a,onMouseDown:Qe(r.onMouseDown,v=>{!c&&v.button===0&&v.ctrlKey===!1?m.onValueChange(o):v.preventDefault()}),onKeyDown:Qe(r.onKeyDown,v=>{[" ","Enter"].includes(v.key)&&m.onValueChange(o)}),onFocus:Qe(r.onFocus,()=>{const v=m.activationMode!=="manual";!p&&!c&&v&&m.onValueChange(o)})})})});s0.displayName=t0;var r0="TabsContent",n0=h.forwardRef((r,a)=>{const{__scopeTabs:l,value:o,forceMount:c,children:u,...m}=r,f=Mu(r0,l),g=a0(f.baseId,o),y=l0(f.baseId,o),p=o===f.value,v=h.useRef(p);return h.useEffect(()=>{const E=requestAnimationFrame(()=>v.current=!1);return()=>cancelAnimationFrame(E)},[]),e.jsx(Fl,{present:c||p,children:({present:E})=>e.jsx(Xe.div,{"data-state":p?"active":"inactive","data-orientation":f.orientation,role:"tabpanel","aria-labelledby":g,hidden:!E,id:y,tabIndex:0,...m,ref:a,style:{...r.style,animationDuration:v.current?"0s":void 0},children:E&&u})})});n0.displayName=r0;function a0(r,a){return`${r}-trigger-${a}`}function l0(r,a){return`${r}-content-${a}`}var M2=Jp,i0=e0,o0=s0,c0=n0;const $l=M2,$a=h.forwardRef(({className:r,...a},l)=>e.jsx(i0,{ref:l,className:lt("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",r),...a}));$a.displayName=i0.displayName;const Lt=h.forwardRef(({className:r,...a},l)=>e.jsx(o0,{ref:l,className:lt("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",r),...a}));Lt.displayName=o0.displayName;const Ot=h.forwardRef(({className:r,...a},l)=>e.jsx(c0,{ref:l,className:lt("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",r),...a}));Ot.displayName=c0.displayName;function Au(r){const a=h.useRef({value:r,previous:r});return h.useMemo(()=>(a.current.value!==r&&(a.current.previous=a.current.value,a.current.value=r),a.current.previous),[r])}function Du(r){const[a,l]=h.useState(void 0);return Zt(()=>{if(r){l({width:r.offsetWidth,height:r.offsetHeight});const o=new ResizeObserver(c=>{if(!Array.isArray(c)||!c.length)return;const u=c[0];let m,f;if("borderBoxSize"in u){const g=u.borderBoxSize,y=Array.isArray(g)?g[0]:g;m=y.inlineSize,f=y.blockSize}else m=r.offsetWidth,f=r.offsetHeight;l({width:m,height:f})});return o.observe(r,{box:"border-box"}),()=>o.unobserve(r)}else l(void 0)},[r]),a}var To="Switch",[A2]=gn(To),[D2,L2]=A2(To),d0=h.forwardRef((r,a)=>{const{__scopeSwitch:l,name:o,checked:c,defaultChecked:u,required:m,disabled:f,value:g="on",onCheckedChange:y,form:p,...v}=r,[E,P]=h.useState(null),T=at(a,j=>P(j)),w=h.useRef(!1),b=E?p||!!E.closest("form"):!0,[N,C]=Bn({prop:c,defaultProp:u??!1,onChange:y,caller:To});return e.jsxs(D2,{scope:l,checked:N,disabled:f,children:[e.jsx(Xe.button,{type:"button",role:"switch","aria-checked":N,"aria-required":m,"data-state":f0(N),"data-disabled":f?"":void 0,disabled:f,value:g,...v,ref:T,onClick:Qe(r.onClick,j=>{C(I=>!I),b&&(w.current=j.isPropagationStopped(),w.current||j.stopPropagation())})}),b&&e.jsx(m0,{control:E,bubbles:!w.current,name:o,value:g,checked:N,required:m,disabled:f,form:p,style:{transform:"translateX(-100%)"}})]})});d0.displayName=To;var u0="SwitchThumb",h0=h.forwardRef((r,a)=>{const{__scopeSwitch:l,...o}=r,c=L2(u0,l);return e.jsx(Xe.span,{"data-state":f0(c.checked),"data-disabled":c.disabled?"":void 0,...o,ref:a})});h0.displayName=u0;var O2="SwitchBubbleInput",m0=h.forwardRef(({__scopeSwitch:r,control:a,checked:l,bubbles:o=!0,...c},u)=>{const m=h.useRef(null),f=at(m,u),g=Au(l),y=Du(a);return h.useEffect(()=>{const p=m.current;if(!p)return;const v=window.HTMLInputElement.prototype,P=Object.getOwnPropertyDescriptor(v,"checked").set;if(g!==l&&P){const T=new Event("click",{bubbles:o});P.call(p,l),p.dispatchEvent(T)}},[g,l,o]),e.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:l,...c,tabIndex:-1,ref:f,style:{...c.style,...y,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});m0.displayName=O2;function f0(r){return r?"checked":"unchecked"}var x0=d0,F2=h0;const ot=h.forwardRef(({className:r,...a},l)=>e.jsx(x0,{className:lt("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#38bdac] focus-visible:ring-offset-2 focus-visible:ring-offset-[#0a1628] disabled:cursor-not-allowed disabled:opacity-50 data-[state=unchecked]:bg-gray-600 data-[state=checked]:bg-[#38bdac]",r),...a,ref:l,children:e.jsx(F2,{className:lt("pointer-events-none block h-4 w-4 rounded-full bg-white shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));ot.displayName=x0.displayName;const un=h.forwardRef(({className:r,...a},l)=>e.jsx("textarea",{className:lt("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",r),ref:l,...a}));un.displayName="Textarea";function p0({open:r,onClose:a,userId:l,onUserUpdated:o}){var ze;const[c,u]=h.useState(null),[m,f]=h.useState([]),[g,y]=h.useState([]),[p,v]=h.useState(!1),[E,P]=h.useState(!1),[T,w]=h.useState(!1),[b,N]=h.useState("info"),[C,j]=h.useState(""),[I,U]=h.useState(""),[V,_]=h.useState([]),[k,R]=h.useState(""),[Z,ne]=h.useState(!1),[ae,Q]=h.useState(null),[se,H]=h.useState(null),[oe,ve]=h.useState(""),[B,ce]=h.useState(""),[K,A]=h.useState(""),[O,L]=h.useState(!1),[J,G]=h.useState(null),[de,Y]=h.useState("");h.useEffect(()=>{r&&l&&(N("info"),Q(null),H(null),G(null),Y(""),ge())},[r,l]);async function ge(){if(l){v(!0);try{const he=await Be(`/api/db/users?id=${encodeURIComponent(l)}`);if(he!=null&&he.success&&he.user){const xe=he.user;u(xe),j(xe.phone||""),U(xe.nickname||""),ve(xe.phone||""),ce(xe.wechatId||""),A(xe.openId||"");try{_(typeof xe.tags=="string"?JSON.parse(xe.tags||"[]"):[])}catch{_([])}}try{const xe=await Be(`/api/user/track?userId=${encodeURIComponent(l)}&limit=50`);xe!=null&&xe.success&&xe.tracks&&f(xe.tracks)}catch{f([])}try{const xe=await Be(`/api/db/users/referrals?userId=${encodeURIComponent(l)}`);xe!=null&&xe.success&&xe.referrals&&y(xe.referrals)}catch{y([])}}catch(he){console.error("Load user detail error:",he)}finally{v(!1)}}}async function Se(){if(!(c!=null&&c.phone)){alert("用户未绑定手机号,无法同步");return}P(!0);try{const he=await mt("/api/ckb/sync",{action:"full_sync",phone:c.phone,userId:c.id});he!=null&&he.success?(alert("同步成功"),ge()):alert("同步失败: "+(he==null?void 0:he.error))}catch(he){console.error("Sync CKB error:",he),alert("同步失败")}finally{P(!1)}}async function D(){if(c){w(!0);try{const he={id:c.id,phone:C||void 0,nickname:I||void 0,tags:JSON.stringify(V)},xe=await vt("/api/db/users",he);xe!=null&&xe.success?(alert("保存成功"),ge(),o==null||o()):alert("保存失败: "+(xe==null?void 0:xe.error))}catch(he){console.error("Save user error:",he),alert("保存失败")}finally{w(!1)}}}const fe=()=>{k&&!V.includes(k)&&(_([...V,k]),R(""))},ke=he=>_(V.filter(xe=>xe!==he));async function Ve(){if(!oe&&!K&&!B){H("请至少输入手机号、微信号或 OpenID 中的一项");return}ne(!0),H(null),Q(null);try{const he=new URLSearchParams;oe&&he.set("phone",oe),K&&he.set("openId",K),B&&he.set("wechatId",B);const xe=await Be(`/api/admin/shensheshou/query?${he}`);xe!=null&&xe.success&&xe.data?(Q(xe.data),c&&await We(xe.data)):H((xe==null?void 0:xe.error)||"未查询到数据,该用户可能未在神射手收录")}catch(he){console.error("SSS query error:",he),H("请求失败,请检查神射手接口配置")}finally{ne(!1)}}async function We(he){if(c)try{await mt("/api/admin/shensheshou/enrich",{userId:c.id,phone:oe||c.phone||"",openId:K||c.openId||"",wechatId:B||c.wechatId||""}),ge()}catch(xe){console.error("SSS enrich error:",xe)}}async function Ye(){if(c){L(!0),G(null);try{const he={users:[{phone:c.phone||"",name:c.nickname||"",openId:c.openId||"",tags:V}]},xe=await mt("/api/admin/shensheshou/ingest",he);xe!=null&&xe.success&&xe.data?G(xe.data):G({error:(xe==null?void 0:xe.error)||"推送失败"})}catch(he){console.error("SSS ingest error:",he),G({error:"请求失败"})}finally{L(!1)}}}const tt=he=>{const ft={view_chapter:qs,purchase:qd,match:Yt,login:Ta,register:Ta,share:on,bind_phone:Jb,bind_wechat:Wb,fill_profile:Ed,visit_page:Ea}[he]||Yd;return e.jsx(ft,{className:"w-4 h-4"})};return r?e.jsx(Ct,{open:r,onOpenChange:()=>a(),children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-4xl max-h-[90vh] overflow-hidden",children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(Ta,{className:"w-5 h-5 text-[#38bdac]"}),"用户详情",(c==null?void 0:c.phone)&&e.jsx(Le,{className:"bg-green-500/20 text-green-400 border-0 ml-2",children:"已绑定手机"}),(c==null?void 0:c.isVip)&&e.jsx(Le,{className:"bg-amber-500/20 text-amber-400 border-0",children:"VIP"})]})}),p?e.jsxs("div",{className:"flex items-center justify-center py-20",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):c?e.jsxs("div",{className:"flex flex-col h-[75vh]",children:[e.jsxs("div",{className:"flex items-center gap-4 p-4 bg-[#0a1628] rounded-lg mb-3",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-2xl text-[#38bdac] shrink-0",children:c.avatar?e.jsx("img",{src:c.avatar,className:"w-full h-full rounded-full object-cover",alt:""}):((ze=c.nickname)==null?void 0:ze.charAt(0))||"?"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("h3",{className:"text-lg font-bold text-white",children:c.nickname}),c.isAdmin&&e.jsx(Le,{className:"bg-purple-500/20 text-purple-400 border-0",children:"管理员"}),c.hasFullBook&&e.jsx(Le,{className:"bg-green-500/20 text-green-400 border-0",children:"全书已购"}),c.vipRole&&e.jsx(Le,{className:"bg-amber-500/20 text-amber-400 border-0",children:c.vipRole})]}),e.jsxs("p",{className:"text-gray-400 text-sm mt-1",children:[c.phone?`📱 ${c.phone}`:"未绑定手机",c.wechatId&&` · 💬 ${c.wechatId}`,c.mbti&&` · ${c.mbti}`]}),e.jsxs("div",{className:"flex items-center gap-4 mt-1",children:[e.jsxs("p",{className:"text-gray-600 text-xs",children:["ID: ",c.id.slice(0,16),"…"]}),c.referralCode&&e.jsxs("p",{className:"text-xs",children:[e.jsx("span",{className:"text-gray-500",children:"推广码:"}),e.jsx("code",{className:"text-[#38bdac] bg-[#38bdac]/10 px-1.5 py-0.5 rounded",children:c.referralCode})]})]})]}),e.jsxs("div",{className:"text-right shrink-0",children:[e.jsxs("p",{className:"text-[#38bdac] font-bold text-lg",children:["¥",(c.earnings||0).toFixed(2)]}),e.jsx("p",{className:"text-gray-500 text-xs",children:"累计收益"})]})]}),e.jsxs($l,{value:b,onValueChange:N,className:"flex-1 flex flex-col overflow-hidden",children:[e.jsxs($a,{className:"bg-[#0a1628] border border-gray-700/50 p-1 mb-3 flex-wrap h-auto gap-1",children:[e.jsx(Lt,{value:"info",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-xs",children:"基础信息"}),e.jsx(Lt,{value:"tags",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-xs",children:"标签体系"}),e.jsxs(Lt,{value:"journey",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-xs",children:[e.jsx(Ea,{className:"w-3 h-3 mr-1"}),"用户旅程"]}),e.jsx(Lt,{value:"relations",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-xs",children:"关系链路"}),e.jsxs(Lt,{value:"shensheshou",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-xs",children:[e.jsx(an,{className:"w-3 h-3 mr-1"}),"用户资料完善"]})]}),e.jsxs(Ot,{value:"info",className:"flex-1 overflow-auto space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"手机号"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"输入手机号",value:C,onChange:he=>j(he.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"昵称"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"输入昵称",value:I,onChange:he=>U(he.target.value)})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3 text-sm",children:[c.openId&&e.jsxs("div",{className:"p-3 bg-[#0a1628] rounded-lg",children:[e.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"微信 OpenID"}),e.jsx("p",{className:"text-gray-300 font-mono text-xs break-all",children:c.openId})]}),c.region&&e.jsxs("div",{className:"p-3 bg-[#0a1628] rounded-lg flex items-center gap-2",children:[e.jsx(Yx,{className:"w-4 h-4 text-gray-500"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-500 text-xs",children:"地区"}),e.jsx("p",{className:"text-white",children:c.region})]})]}),c.industry&&e.jsxs("div",{className:"p-3 bg-[#0a1628] rounded-lg",children:[e.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"行业"}),e.jsx("p",{className:"text-white",children:c.industry})]}),c.position&&e.jsxs("div",{className:"p-3 bg-[#0a1628] rounded-lg",children:[e.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"职位"}),e.jsx("p",{className:"text-white",children:c.position})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"推荐人数"}),e.jsx("p",{className:"text-2xl font-bold text-white",children:c.referralCount??0})]}),e.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"待提现"}),e.jsxs("p",{className:"text-2xl font-bold text-yellow-400",children:["¥",(c.pendingEarnings??0).toFixed(2)]})]}),e.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"创建时间"}),e.jsx("p",{className:"text-sm text-white",children:c.createdAt?new Date(c.createdAt).toLocaleDateString():"-"})]})]}),c.isVip&&e.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg border border-amber-500/20",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(rn,{className:"w-4 h-4 text-amber-400"}),e.jsx("span",{className:"text-white font-medium",children:"VIP 信息"}),e.jsx(Le,{className:"bg-amber-500/20 text-amber-400 border-0 text-xs",children:c.vipRole||"VIP"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3 text-sm",children:[c.vipName&&e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-500",children:"展示名:"}),e.jsx("span",{className:"text-white",children:c.vipName})]}),c.vipProject&&e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-500",children:"项目:"}),e.jsx("span",{className:"text-white",children:c.vipProject})]}),c.vipContact&&e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-500",children:"联系方式:"}),e.jsx("span",{className:"text-white",children:c.vipContact})]}),c.vipExpireDate&&e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-500",children:"到期时间:"}),e.jsx("span",{className:"text-white",children:new Date(c.vipExpireDate).toLocaleDateString()})]})]}),c.vipBio&&e.jsx("p",{className:"text-gray-400 text-sm mt-2",children:c.vipBio})]}),e.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg border border-purple-500/20",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(Al,{className:"w-4 h-4 text-purple-400"}),e.jsx("span",{className:"text-white font-medium",children:"微信归属"}),e.jsx("span",{className:"text-gray-500 text-xs",children:"该用户归属在哪个微信号下"})]}),e.jsxs("div",{className:"flex gap-2 items-center",children:[e.jsx(le,{className:"bg-[#162840] border-gray-700 text-white flex-1",placeholder:"输入归属微信号(如 wxid_xxxx)",value:de,onChange:he=>Y(he.target.value)}),e.jsxs(X,{size:"sm",onClick:async()=>{if(!(!de||!c))try{await vt("/api/db/users",{id:c.id,wechatId:de}),alert("已保存微信归属"),ge()}catch{alert("保存失败")}},className:"bg-purple-500/20 hover:bg-purple-500/30 text-purple-400 border border-purple-500/30 shrink-0",children:[e.jsx(Mt,{className:"w-4 h-4 mr-1"})," 保存"]})]}),c.wechatId&&e.jsxs("p",{className:"text-gray-500 text-xs mt-2",children:["当前归属:",e.jsx("span",{className:"text-purple-400",children:c.wechatId})]})]}),e.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(on,{className:"w-4 h-4 text-[#38bdac]"}),e.jsx("span",{className:"text-white font-medium",children:"存客宝同步"})]}),e.jsx(X,{size:"sm",onClick:Se,disabled:E||!c.phone,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:E?e.jsxs(e.Fragment,{children:[e.jsx($e,{className:"w-4 h-4 mr-1 animate-spin"})," 同步中..."]}):e.jsxs(e.Fragment,{children:[e.jsx($e,{className:"w-4 h-4 mr-1"})," 同步数据"]})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-500",children:"同步状态:"}),c.ckbSyncedAt?e.jsx(Le,{className:"bg-green-500/20 text-green-400 border-0 ml-1",children:"已同步"}):e.jsx(Le,{className:"bg-gray-500/20 text-gray-400 border-0 ml-1",children:"未同步"})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-500",children:"最后同步:"}),e.jsx("span",{className:"text-gray-300 ml-1",children:c.ckbSyncedAt?new Date(c.ckbSyncedAt).toLocaleString():"-"})]})]})]})]}),e.jsxs(Ot,{value:"tags",className:"flex-1 overflow-auto space-y-4",children:[e.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(Ed,{className:"w-4 h-4 text-[#38bdac]"}),e.jsx("span",{className:"text-white font-medium",children:"用户标签"}),e.jsx("span",{className:"text-gray-500 text-xs",children:"基于《一场 Soul 的创业实验》维度打标"})]}),e.jsxs("div",{className:"mb-3 p-2.5 bg-[#38bdac]/5 border border-[#38bdac]/20 rounded-lg flex items-center gap-2 text-xs text-gray-400",children:[e.jsx(Gd,{className:"w-3.5 h-3.5 text-[#38bdac] shrink-0"}),"命中的标签自动高亮 · 系统根据行为轨迹和填写资料自动打标 · 手动点击补充或取消"]}),e.jsx("div",{className:"mb-4 space-y-3",children:[{category:"身份类型",tags:["创业者","打工人","自由职业","学生","投资人","合伙人"]},{category:"行业背景",tags:["电商","内容","传统行业","科技/AI","金融","教育","餐饮"]},{category:"痛点标签",tags:["找资源","找方向","找合伙人","想赚钱","想学习","找情感出口"]},{category:"付费意愿",tags:["高意向","已付费","观望中","薅羊毛"]},{category:"MBTI",tags:["ENTJ","INTJ","ENFP","INFP","ENTP","INTP","ESTJ","ISFJ"]}].map(he=>e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-500 text-xs mb-1.5",children:he.category}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:he.tags.map(xe=>e.jsxs("button",{type:"button",onClick:()=>{V.includes(xe)?ke(xe):_([...V,xe])},className:`px-2 py-0.5 rounded text-xs border transition-all ${V.includes(xe)?"bg-[#38bdac]/20 border-[#38bdac]/50 text-[#38bdac]":"bg-transparent border-gray-700 text-gray-500 hover:border-gray-500 hover:text-gray-300"}`,children:[V.includes(xe)?"✓ ":"",xe]},xe))})]},he.category))}),e.jsxs("div",{className:"border-t border-gray-700/50 pt-3",children:[e.jsx("p",{className:"text-gray-500 text-xs mb-2",children:"已选标签"}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-3 min-h-[32px]",children:[V.map((he,xe)=>e.jsxs(Le,{className:"bg-[#38bdac]/20 text-[#38bdac] border-0 pr-1",children:[he,e.jsx("button",{type:"button",onClick:()=>ke(he),className:"ml-1 hover:text-red-400",children:e.jsx(ms,{className:"w-3 h-3"})})]},xe)),V.length===0&&e.jsx("span",{className:"text-gray-600 text-sm",children:"暂未选择标签"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(le,{className:"bg-[#162840] border-gray-700 text-white flex-1",placeholder:"自定义标签(回车添加)",value:k,onChange:he=>R(he.target.value),onKeyDown:he=>he.key==="Enter"&&fe()}),e.jsx(X,{onClick:fe,className:"bg-[#38bdac] hover:bg-[#2da396]",children:"添加"})]})]})]}),c.ckbTags&&e.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx(Ed,{className:"w-4 h-4 text-purple-400"}),e.jsx("span",{className:"text-white font-medium",children:"存客宝标签"})]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:(typeof c.ckbTags=="string"?c.ckbTags.split(","):[]).map((he,xe)=>e.jsx(Le,{className:"bg-purple-500/20 text-purple-400 border-0",children:he.trim()},xe))})]})]}),e.jsxs(Ot,{value:"journey",className:"flex-1 overflow-auto",children:[e.jsxs("div",{className:"mb-3 p-3 bg-[#0a1628] rounded-lg flex items-center gap-2",children:[e.jsx(Ea,{className:"w-4 h-4 text-[#38bdac]"}),e.jsxs("span",{className:"text-gray-400 text-sm",children:["记录用户从注册到付费的完整行动路径,共 ",m.length," 条记录"]})]}),e.jsx("div",{className:"space-y-2",children:m.length>0?m.map((he,xe)=>e.jsxs("div",{className:"flex items-start gap-3 p-3 bg-[#0a1628] rounded-lg",children:[e.jsxs("div",{className:"flex flex-col items-center",children:[e.jsx("div",{className:"w-8 h-8 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-[#38bdac]",children:tt(he.action)}),xe0?g.map((he,xe)=>{var es;const ft=he;return e.jsxs("div",{className:"flex items-center justify-between p-2 bg-[#162840] rounded",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-6 h-6 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-xs text-[#38bdac]",children:((es=ft.nickname)==null?void 0:es.charAt(0))||"?"}),e.jsx("span",{className:"text-white text-sm",children:ft.nickname})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[ft.status==="vip"&&e.jsx(Le,{className:"bg-green-500/20 text-green-400 border-0 text-xs",children:"已购"}),e.jsx("span",{className:"text-gray-500 text-xs",children:ft.createdAt?new Date(ft.createdAt).toLocaleDateString():""})]})]},ft.id||xe)}):e.jsx("p",{className:"text-gray-500 text-sm text-center py-4",children:"暂无推荐用户"})})]})}),e.jsxs(Ot,{value:"shensheshou",className:"flex-1 overflow-auto space-y-4",children:[e.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(an,{className:"w-5 h-5 text-[#38bdac]"}),e.jsx("span",{className:"text-white font-medium",children:"用户资料完善"}),e.jsx("span",{className:"text-gray-500 text-xs",children:"通过多维度查询神射手数据,自动回填用户基础信息"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 mb-3",children:[e.jsxs("div",{children:[e.jsx(te,{className:"text-gray-500 text-xs mb-1 block",children:"手机号"}),e.jsx(le,{className:"bg-[#162840] border-gray-700 text-white",placeholder:"11位手机号",value:oe,onChange:he=>ve(he.target.value)})]}),e.jsxs("div",{children:[e.jsx(te,{className:"text-gray-500 text-xs mb-1 block",children:"微信号"}),e.jsx(le,{className:"bg-[#162840] border-gray-700 text-white",placeholder:"微信 ID",value:B,onChange:he=>ce(he.target.value)})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx(te,{className:"text-gray-500 text-xs mb-1 block",children:"微信 OpenID"}),e.jsx(le,{className:"bg-[#162840] border-gray-700 text-white",placeholder:"openid_xxxx(自动填入)",value:K,onChange:he=>A(he.target.value)})]})]}),e.jsx(X,{onClick:Ve,disabled:Z,className:"w-full bg-[#38bdac] hover:bg-[#2da396] text-white",children:Z?e.jsxs(e.Fragment,{children:[e.jsx($e,{className:"w-4 h-4 mr-1 animate-spin"})," 查询并自动回填中..."]}):e.jsxs(e.Fragment,{children:[e.jsx(cn,{className:"w-4 h-4 mr-1"})," 查询并自动完善用户资料"]})}),e.jsx("p",{className:"text-gray-600 text-xs mt-2",children:"查询成功后,神射手返回的标签将自动同步到该用户"}),se&&e.jsx("div",{className:"mt-3 p-3 bg-red-500/10 border border-red-500/30 rounded-lg text-red-400 text-sm",children:se}),ae&&e.jsxs("div",{className:"mt-3 space-y-3",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{className:"p-3 bg-[#162840] rounded-lg",children:[e.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"神射手 RFM 分"}),e.jsx("p",{className:"text-2xl font-bold text-[#38bdac]",children:ae.rfm_score??"-"})]}),e.jsxs("div",{className:"p-3 bg-[#162840] rounded-lg",children:[e.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"用户等级"}),e.jsx("p",{className:"text-2xl font-bold text-white",children:ae.user_level??"-"})]})]}),ae.tags&&ae.tags.length>0&&e.jsxs("div",{className:"p-3 bg-[#162840] rounded-lg",children:[e.jsx("p",{className:"text-gray-500 text-xs mb-2",children:"神射手标签"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:ae.tags.map((he,xe)=>e.jsx(Le,{className:"bg-[#38bdac]/10 text-[#38bdac] border border-[#38bdac]/20",children:he},xe))})]}),ae.last_active&&e.jsxs("div",{className:"text-sm text-gray-500",children:["最近活跃:",ae.last_active]})]})]}),e.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(an,{className:"w-4 h-4 text-purple-400"}),e.jsx("span",{className:"text-white font-medium",children:"推送用户数据到神射手"})]}),e.jsx("p",{className:"text-gray-500 text-xs",children:"将本用户信息(手机号、昵称、标签等)同步至神射手,自动完善用户画像"})]}),e.jsx(X,{onClick:Ye,disabled:O||!c.phone,variant:"outline",className:"border-purple-500/40 text-purple-400 hover:bg-purple-500/10 bg-transparent shrink-0 ml-4",children:O?e.jsxs(e.Fragment,{children:[e.jsx($e,{className:"w-4 h-4 mr-1 animate-spin"})," 推送中"]}):e.jsxs(e.Fragment,{children:[e.jsx(an,{className:"w-4 h-4 mr-1"})," 推送"]})})]}),!c.phone&&e.jsx("p",{className:"text-yellow-500/70 text-xs",children:"⚠ 用户未绑定手机号,无法推送"}),J&&e.jsx("div",{className:"mt-3 p-3 bg-[#162840] rounded-lg text-sm",children:J.error?e.jsx("p",{className:"text-red-400",children:String(J.error)}):e.jsxs("div",{className:"space-y-1",children:[e.jsxs("p",{className:"text-green-400 flex items-center gap-1",children:[e.jsx(Gd,{className:"w-4 h-4"})," 推送成功"]}),J.enriched!==void 0&&e.jsxs("p",{className:"text-gray-400",children:["自动补全标签数:",String(J.new_tags_added??0)]})]})})]})]})]}),e.jsxs("div",{className:"flex justify-end gap-2 pt-3 border-t border-gray-700 mt-3",children:[e.jsxs(X,{variant:"outline",onClick:a,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx(ms,{className:"w-4 h-4 mr-2"}),"关闭"]}),e.jsxs(X,{onClick:D,disabled:T,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),T?"保存中...":"保存修改"]})]})]}):e.jsx("div",{className:"text-center py-12 text-gray-500",children:"用户不存在"})]})}):null}const Fd={isVip:!1,vipExpireDate:"",vipSort:"",vipRole:"",vipRoleCustom:"",vipName:"",vipProject:"",vipContact:"",vipBio:""};function z2({open:r,onClose:a,userId:l,userNickname:o="",onSaved:c}){const[u,m]=h.useState(Fd),[f,g]=h.useState([]),[y,p]=h.useState(!1),[v,E]=h.useState(!1);h.useEffect(()=>{if(!r){m(Fd);return}let T=!1;return p(!0),Promise.all([Be("/api/db/vip-roles"),l?Be(`/api/db/users?id=${encodeURIComponent(l)}`):Promise.resolve(null)]).then(([w,b])=>{if(T)return;const N=w!=null&&w.success&&w.data?w.data:[];g(N);const C=b&&b.user?b.user:null;if(C){const j=String(C.vipRole??""),I=N.some(U=>U.name===j);m({isVip:!!(C.isVip??!1),vipExpireDate:C.vipExpireDate?String(C.vipExpireDate).slice(0,10):"",vipSort:typeof C.vipSort=="number"?C.vipSort:"",vipRole:I?j:j?"__custom__":"",vipRoleCustom:I?"":j,vipName:String(C.vipName??""),vipProject:String(C.vipProject??""),vipContact:String(C.vipContact??""),vipBio:String(C.vipBio??"")})}else m(Fd)}).catch(w=>{T||console.error("Load error:",w)}).finally(()=>{T||p(!1)}),()=>{T=!0}},[r,l]);async function P(){if(l){if(u.isVip&&!u.vipExpireDate.trim()){alert("开启 VIP 时请填写有效到期日");return}if(u.isVip&&u.vipExpireDate.trim()){const T=new Date(u.vipExpireDate);if(isNaN(T.getTime())){alert("到期日格式无效,请使用 YYYY-MM-DD");return}}E(!0);try{const T=u.vipRole==="__custom__"?u.vipRoleCustom.trim():u.vipRole,w={id:l,isVip:u.isVip,vipExpireDate:u.isVip?u.vipExpireDate:void 0,vipSort:u.vipSort===""?void 0:u.vipSort,vipRole:T||void 0,vipName:u.vipName||void 0,vipProject:u.vipProject||void 0,vipContact:u.vipContact||void 0,vipBio:u.vipBio||void 0},b=await vt("/api/db/users",w);b!=null&&b.success?(alert("VIP 设置已保存"),c==null||c(),a()):alert("保存失败: "+(b==null?void 0:b.error))}catch(T){console.error("Save VIP error:",T),alert("保存失败")}finally{E(!1)}}}return r?e.jsx(Ct,{open:r,onOpenChange:()=>a(),children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(rn,{className:"w-5 h-5 text-amber-400"}),"设置 VIP - ",o||l]})}),y?e.jsx("div",{className:"py-8 text-center text-gray-400",children:"加载中..."}):e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(te,{className:"text-gray-300",children:"VIP 会员"}),e.jsx(ot,{checked:u.isVip,onCheckedChange:T=>m(w=>({...w,isVip:T}))})]}),u.isVip&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{className:"text-gray-300",children:["到期日 (YYYY-MM-DD) ",e.jsx("span",{className:"text-amber-400",children:"*"})]}),e.jsx(le,{type:"date",className:"bg-[#0a1628] border-gray-700 text-white",value:u.vipExpireDate,onChange:T=>m(w=>({...w,vipExpireDate:T.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"排序"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"数字越小越靠前,留空按时间",value:u.vipSort===""?"":u.vipSort,onChange:T=>{const w=T.target.value;m(b=>({...b,vipSort:w===""?"":parseInt(w,10)||0}))}})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"角色"}),e.jsxs("select",{className:"w-full bg-[#0a1628] border border-gray-700 text-white rounded-md px-3 py-2",value:u.vipRole,onChange:T=>m(w=>({...w,vipRole:T.target.value})),children:[e.jsx("option",{value:"",children:"请选择或下方手动填写"}),f.map(T=>e.jsx("option",{value:T.name,children:T.name},T.id)),e.jsx("option",{value:"__custom__",children:"其他(手动填写)"})]}),u.vipRole==="__custom__"&&e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white mt-1",placeholder:"输入自定义角色",value:u.vipRoleCustom,onChange:T=>m(w=>({...w,vipRoleCustom:T.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"VIP 展示名"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"创业老板排行展示名",value:u.vipName,onChange:T=>m(w=>({...w,vipName:T.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"项目/公司"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"项目名称",value:u.vipProject,onChange:T=>m(w=>({...w,vipProject:T.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"联系方式"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"微信号或手机",value:u.vipContact,onChange:T=>m(w=>({...w,vipContact:T.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"一句话简介"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"简要描述业务",value:u.vipBio,onChange:T=>m(w=>({...w,vipBio:T.target.value}))})]})]}),e.jsxs(Dt,{children:[e.jsxs(X,{variant:"outline",onClick:a,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx(ms,{className:"w-4 h-4 mr-2"}),"取消"]}),e.jsxs(X,{onClick:P,disabled:v||y,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),v?"保存中...":"保存"]})]})]})}):null}const so=[{id:"register",label:"注册/登录",icon:"👤",color:"bg-blue-500/20 border-blue-500/40 text-blue-400",desc:"微信授权登录或手机号注册"},{id:"browse",label:"浏览章节",icon:"📖",color:"bg-purple-500/20 border-purple-500/40 text-purple-400",desc:"点击免费/付费章节预览"},{id:"bind_phone",label:"绑定手机",icon:"📱",color:"bg-cyan-500/20 border-cyan-500/40 text-cyan-400",desc:"触发付费章节后绑定手机"},{id:"first_pay",label:"首次付款",icon:"💳",color:"bg-green-500/20 border-green-500/40 text-green-400",desc:"购买单章或全书"},{id:"fill_profile",label:"完善资料",icon:"✍️",color:"bg-yellow-500/20 border-yellow-500/40 text-yellow-400",desc:"填写头像、MBTI、行业等"},{id:"match",label:"派对房匹配",icon:"🤝",color:"bg-orange-500/20 border-orange-500/40 text-orange-400",desc:"参与 Soul 派对房"},{id:"vip",label:"升级 VIP",icon:"👑",color:"bg-amber-500/20 border-amber-500/40 text-amber-400",desc:"付款 ¥1980 购买全书"},{id:"distribution",label:"开启分销",icon:"🔗",color:"bg-[#38bdac]/20 border-[#38bdac]/40 text-[#38bdac]",desc:"生成推广码并推荐好友"}];function $2(){var as,kn,er,xr,Pt;const[r,a]=$x(),l=r.get("pool"),[o,c]=h.useState([]),[u,m]=h.useState(0),[f,g]=h.useState(1),[y,p]=h.useState(10),[v,E]=h.useState(""),P=Iu(v,300),T=l==="vip"?"vip":"all",[w,b]=h.useState(T),[N,C]=h.useState(!0),[j,I]=h.useState(null),[U,V]=h.useState(!1),[_,k]=h.useState("desc");h.useEffect(()=>{l==="vip"?b("vip"):l==="complete"?b("complete"):l==="all"&&b("all")},[l]);const[R,Z]=h.useState(!1),[ne,ae]=h.useState(!1),[Q,se]=h.useState(null),[H,oe]=h.useState(""),[ve,B]=h.useState(""),[ce,K]=h.useState(!1),[A,O]=h.useState(!1),[L,J]=h.useState({referrals:[],stats:{}}),[G,de]=h.useState(!1),[Y,ge]=h.useState(null),[Se,D]=h.useState(!1),[fe,ke]=h.useState(null),[Ve,We]=h.useState(!1),[Ye,tt]=h.useState(null),[ze,he]=h.useState({phone:"",nickname:"",password:"",isAdmin:!1,hasFullBook:!1}),[xe,ft]=h.useState([]),[es,hr]=h.useState(!1),[jn,As]=h.useState(!1),[Bt,_r]=h.useState(null),[ct,gs]=h.useState({title:"",description:"",trigger:"",sort:0,enabled:!0}),[bn,mr]=h.useState([]),[Cs,Kn]=h.useState(!1),[Gn,ks]=h.useState(!1),[Nn,fr]=h.useState(null),[ys,Ds]=h.useState({name:"",sort:0}),[Ls,wn]=h.useState({}),[Es,Os]=h.useState(!1);async function Fs(){var z;C(!0),I(null);try{if(U){const He=new URLSearchParams({search:P,limit:String(y*5)}),Je=await Be(`/api/db/users/rfm?${He}`);if(Je!=null&&Je.success){let ls=Je.users||[];_==="asc"&&(ls=[...ls].reverse());const dt=(f-1)*y;c(ls.slice(dt,dt+y)),m(((z=Je.users)==null?void 0:z.length)??0),ls.length===0&&(V(!1),I("暂无订单数据,RFM 排序需要用户有购买记录后才能生效"))}else V(!1),I((Je==null?void 0:Je.error)||"RFM 加载失败,已切回普通模式")}else{const He=new URLSearchParams({page:String(f),pageSize:String(y),search:P,...w==="vip"&&{vip:"true"},...w==="complete"&&{pool:"complete"}}),Je=await Be(`/api/db/users?${He}`);Je!=null&&Je.success?(c(Je.users||[]),m(Je.total??0)):I((Je==null?void 0:Je.error)||"加载失败")}}catch(He){console.error("Load users error:",He),I("网络错误")}finally{C(!1)}}h.useEffect(()=>{g(1)},[P,w,U]),h.useEffect(()=>{Fs()},[f,y,P,w,U,_]);const Yn=Math.ceil(u/y)||1,Qn=()=>{U?_==="desc"?k("asc"):(V(!1),k("desc")):(V(!0),k("desc"))},qn=z=>({S:"bg-amber-500/20 text-amber-400",A:"bg-green-500/20 text-green-400",B:"bg-blue-500/20 text-blue-400",C:"bg-gray-500/20 text-gray-400",D:"bg-red-500/20 text-red-400"})[z||""]||"bg-gray-500/20 text-gray-400";async function Xn(z){if(confirm("确定要删除这个用户吗?"))try{const He=await Pr(`/api/db/users?id=${encodeURIComponent(z)}`);He!=null&&He.success?Fs():alert("删除失败: "+((He==null?void 0:He.error)||""))}catch{alert("删除失败")}}const Sn=z=>{se(z),he({phone:z.phone||"",nickname:z.nickname||"",password:"",isAdmin:!!(z.isAdmin??!1),hasFullBook:!!(z.hasFullBook??!1)}),Z(!0)},Cn=()=>{se(null),he({phone:"",nickname:"",password:"",isAdmin:!1,hasFullBook:!1}),Z(!0)};async function zs(){if(!ze.phone||!ze.nickname){alert("请填写手机号和昵称");return}K(!0);try{if(Q){const z=await vt("/api/db/users",{id:Q.id,nickname:ze.nickname,isAdmin:ze.isAdmin,hasFullBook:ze.hasFullBook,...ze.password&&{password:ze.password}});if(!(z!=null&&z.success)){alert("更新失败: "+((z==null?void 0:z.error)||""));return}}else{const z=await mt("/api/db/users",{phone:ze.phone,nickname:ze.nickname,password:ze.password,isAdmin:ze.isAdmin});if(!(z!=null&&z.success)){alert("创建失败: "+((z==null?void 0:z.error)||""));return}}Z(!1),Fs()}catch{alert("保存失败")}finally{K(!1)}}const Mr=z=>{se(z),oe(""),B(""),ae(!0)};async function $s(z){ge(z),O(!0),de(!0);try{const He=await Be(`/api/db/users/referrals?userId=${encodeURIComponent(z.id)}`);He!=null&&He.success?J({referrals:He.referrals||[],stats:He.stats||{}}):J({referrals:[],stats:{}})}catch{J({referrals:[],stats:{}})}finally{de(!1)}}async function Jn(){if(!H){alert("请输入新密码");return}if(H!==ve){alert("两次密码不一致");return}if(H.length<6){alert("密码至少6位");return}K(!0);try{const z=await vt("/api/db/users",{id:Q==null?void 0:Q.id,password:H});z!=null&&z.success?(alert("修改成功"),ae(!1)):alert("修改失败: "+((z==null?void 0:z.error)||""))}catch{alert("修改失败")}finally{K(!1)}}const ts=h.useCallback(async()=>{hr(!0);try{const z=await Be("/api/db/user-rules");z!=null&&z.success&&ft(z.rules||[])}catch{}finally{hr(!1)}},[]);async function F(){if(!ct.title){alert("请填写规则标题");return}K(!0);try{if(Bt){const z=await vt("/api/db/user-rules",{id:Bt.id,...ct});if(!(z!=null&&z.success)){alert("更新失败: "+((z==null?void 0:z.error)||""));return}}else{const z=await mt("/api/db/user-rules",ct);if(!(z!=null&&z.success)){alert("创建失败: "+((z==null?void 0:z.error)||""));return}}As(!1),ts()}catch{alert("保存失败")}finally{K(!1)}}async function ie(z){if(confirm("确定删除?"))try{const He=await Pr(`/api/db/user-rules?id=${z}`);He!=null&&He.success&&ts()}catch{}}async function Ce(z){try{await vt("/api/db/user-rules",{id:z.id,enabled:!z.enabled}),ts()}catch{}}const Pe=h.useCallback(async()=>{Kn(!0);try{const z=await Be("/api/db/vip-roles");z!=null&&z.success&&mr(z.roles||[])}catch{}finally{Kn(!1)}},[]);async function xt(){if(!ys.name){alert("请填写角色名称");return}K(!0);try{if(Nn){const z=await vt("/api/db/vip-roles",{id:Nn.id,...ys});if(!(z!=null&&z.success)){alert("更新失败");return}}else{const z=await mt("/api/db/vip-roles",ys);if(!(z!=null&&z.success)){alert("创建失败");return}}ks(!1),Pe()}catch{alert("保存失败")}finally{K(!1)}}async function ns(z){if(confirm("确定删除?"))try{const He=await Pr(`/api/db/vip-roles?id=${z}`);He!=null&&He.success&&Pe()}catch{}}const nt=h.useCallback(async()=>{Os(!0);try{const z=await Be("/api/db/users/journey-stats");z!=null&&z.success&&z.stats&&wn(z.stats)}catch{}finally{Os(!1)}},[]);return e.jsxs("div",{className:"p-8 w-full",children:[j&&e.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[e.jsx("span",{children:j}),e.jsx("button",{type:"button",onClick:()=>I(null),children:"×"})]}),e.jsx("div",{className:"flex justify-between items-center mb-6",children:e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-white",children:"用户管理"}),e.jsxs("p",{className:"text-gray-400 mt-1 text-sm",children:["共 ",u," 位注册用户",U&&" · RFM 排序中"]})]})}),e.jsxs($l,{defaultValue:"users",className:"w-full",children:[e.jsxs($a,{className:"bg-[#0a1628] border border-gray-700/50 p-1 mb-6 flex-wrap h-auto gap-1",children:[e.jsxs(Lt,{value:"users",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] flex items-center gap-1.5",children:[e.jsx(Yt,{className:"w-4 h-4"})," 用户列表"]}),e.jsxs(Lt,{value:"journey",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] flex items-center gap-1.5",onClick:nt,children:[e.jsx(Ea,{className:"w-4 h-4"})," 用户旅程总览"]}),e.jsxs(Lt,{value:"rules",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] flex items-center gap-1.5",onClick:ts,children:[e.jsx($n,{className:"w-4 h-4"})," 规则配置"]}),e.jsxs(Lt,{value:"vip-roles",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] flex items-center gap-1.5",onClick:Pe,children:[e.jsx(rn,{className:"w-4 h-4"})," VIP 角色"]})]}),e.jsxs(Ot,{value:"users",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4 justify-end flex-wrap",children:[e.jsxs(X,{variant:"outline",onClick:Fs,disabled:N,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${N?"animate-spin":""}`})," 刷新"]}),e.jsxs("select",{value:w,onChange:z=>{const He=z.target.value;b(He),g(1),l&&(r.delete("pool"),a(r))},className:"bg-[#0f2137] border border-gray-700 text-white rounded-lg px-3 py-2 text-sm",disabled:U,children:[e.jsx("option",{value:"all",children:"全部用户"}),e.jsx("option",{value:"vip",children:"VIP会员(超级个体)"}),e.jsx("option",{value:"complete",children:"完善资料用户"})]}),e.jsxs("div",{className:"relative",children:[e.jsx(cn,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-500"}),e.jsx(le,{type:"text",placeholder:"搜索用户...",className:"pl-10 bg-[#0f2137] border-gray-700 text-white placeholder:text-gray-500 w-56",value:v,onChange:z=>E(z.target.value)})]}),e.jsxs(X,{onClick:Cn,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Xd,{className:"w-4 h-4 mr-2"})," 添加用户"]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:e.jsx(we,{className:"p-0",children:N?e.jsxs("div",{className:"flex items-center justify-center py-12",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):e.jsxs("div",{children:[e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"用户信息"}),e.jsx(be,{className:"text-gray-400",children:"绑定信息"}),e.jsx(be,{className:"text-gray-400",children:"购买状态"}),e.jsx(be,{className:"text-gray-400",children:"分销收益"}),e.jsxs(be,{className:"text-gray-400 cursor-pointer select-none",onClick:Qn,children:[e.jsxs("div",{className:"flex items-center gap-1 group",children:[e.jsx(Pa,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"RFM分值"}),U?_==="desc"?e.jsx(_l,{className:"w-3.5 h-3.5 text-[#38bdac]"}):e.jsx(Ux,{className:"w-3.5 h-3.5 text-[#38bdac]"}):e.jsx(Uj,{className:"w-3.5 h-3.5 text-gray-600 group-hover:text-gray-400"})]}),U&&e.jsx("div",{className:"text-[10px] text-[#38bdac] font-normal mt-0.5",children:"点击切换方向/关闭"})]}),e.jsx(be,{className:"text-gray-400",children:"注册时间"}),e.jsx(be,{className:"text-right text-gray-400",children:"操作"})]})}),e.jsxs(ps,{children:[o.map(z=>{var He,Je,ls;return e.jsxs(et,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[e.jsx(pe,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac]",children:z.avatar?e.jsx("img",{src:z.avatar,className:"w-full h-full rounded-full object-cover",alt:""}):((He=z.nickname)==null?void 0:He.charAt(0))||"?"}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("p",{className:"font-medium text-white",children:z.nickname}),z.isAdmin&&e.jsx(Le,{className:"bg-purple-500/20 text-purple-400 hover:bg-purple-500/20 border-0 text-xs",children:"管理员"}),z.openId&&!((Je=z.id)!=null&&Je.startsWith("user_"))&&e.jsx(Le,{className:"bg-green-500/20 text-green-400 hover:bg-green-500/20 border-0 text-xs",children:"微信"})]}),e.jsx("p",{className:"text-xs text-gray-500 font-mono",children:z.openId?z.openId.slice(0,12)+"...":(ls=z.id)==null?void 0:ls.slice(0,12)})]})]})}),e.jsx(pe,{children:e.jsxs("div",{className:"space-y-1",children:[z.phone&&e.jsxs("div",{className:"flex items-center gap-1 text-xs",children:[e.jsx("span",{className:"text-gray-500",children:"📱"}),e.jsx("span",{className:"text-gray-300",children:z.phone})]}),z.wechatId&&e.jsxs("div",{className:"flex items-center gap-1 text-xs",children:[e.jsx("span",{className:"text-gray-500",children:"💬"}),e.jsx("span",{className:"text-gray-300",children:z.wechatId})]}),z.openId&&e.jsxs("div",{className:"flex items-center gap-1 text-xs",children:[e.jsx("span",{className:"text-gray-500",children:"🔗"}),e.jsxs("span",{className:"text-gray-500 truncate max-w-[100px]",title:z.openId,children:[z.openId.slice(0,12),"..."]})]}),!z.phone&&!z.wechatId&&!z.openId&&e.jsx("span",{className:"text-gray-600 text-xs",children:"未绑定"})]})}),e.jsx(pe,{children:z.hasFullBook?e.jsx(Le,{className:"bg-amber-500/20 text-amber-400 hover:bg-amber-500/20 border-0",children:"VIP"}):e.jsx(Le,{variant:"outline",className:"text-gray-500 border-gray-600",children:"未购买"})}),e.jsx(pe,{children:e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"text-white font-medium",children:["¥",parseFloat(String(z.earnings||0)).toFixed(2)]}),parseFloat(String(z.pendingEarnings||0))>0&&e.jsxs("div",{className:"text-xs text-yellow-400",children:["待提现: ¥",parseFloat(String(z.pendingEarnings||0)).toFixed(2)]}),e.jsxs("div",{className:"text-xs text-[#38bdac] cursor-pointer hover:underline flex items-center gap-1",onClick:()=>$s(z),role:"button",tabIndex:0,onKeyDown:dt=>dt.key==="Enter"&&$s(z),children:[e.jsx(Yt,{className:"w-3 h-3"})," 绑定",z.referralCount||0,"人"]})]})}),e.jsx(pe,{children:z.rfmScore!==void 0?e.jsx("div",{className:"flex flex-col gap-1",children:e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-white font-bold text-base",children:z.rfmScore}),e.jsx(Le,{className:`border-0 text-xs ${qn(z.rfmLevel)}`,children:z.rfmLevel})]})}):e.jsxs("span",{className:"text-gray-600 text-sm",children:["— ",e.jsx("span",{className:"text-xs text-gray-700",children:"点列头排序"})]})}),e.jsx(pe,{className:"text-gray-400",children:z.createdAt?new Date(z.createdAt).toLocaleDateString():"-"}),e.jsx(pe,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-1",children:[e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>{tt(z),We(!0)},className:"text-gray-400 hover:text-amber-400 hover:bg-amber-400/10",title:"设置 VIP",children:e.jsx(rn,{className:"w-4 h-4"})}),e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>{ke(z.id),D(!0)},className:"text-gray-400 hover:text-blue-400 hover:bg-blue-400/10",title:"查看详情",children:e.jsx(Er,{className:"w-4 h-4"})}),e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>Sn(z),className:"text-gray-400 hover:text-[#38bdac] hover:bg-[#38bdac]/10",title:"编辑",children:e.jsx(ht,{className:"w-4 h-4"})}),e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>Mr(z),className:"text-gray-400 hover:text-yellow-400 hover:bg-yellow-400/10",title:"修改密码",children:e.jsx($f,{className:"w-4 h-4"})}),e.jsx(X,{variant:"ghost",size:"sm",className:"text-red-400 hover:text-red-300 hover:bg-red-500/10",onClick:()=>Xn(z.id),title:"删除",children:e.jsx(Ht,{className:"w-4 h-4"})})]})})]},z.id)}),o.length===0&&e.jsx(et,{children:e.jsx(pe,{colSpan:7,className:"text-center py-12 text-gray-500",children:"暂无用户数据"})})]})]}),e.jsx(Qs,{page:f,totalPages:Yn,total:u,pageSize:y,onPageChange:g,onPageSizeChange:z=>{p(z),g(1)}})]})})})]}),e.jsxs(Ot,{value:"journey",children:[e.jsxs("div",{className:"flex items-center justify-between mb-5",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"用户从注册到 VIP 的完整行动路径,点击各阶段查看用户动态"}),e.jsxs(X,{variant:"outline",onClick:nt,disabled:Es,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${Es?"animate-spin":""}`})," 刷新数据"]})]}),e.jsxs("div",{className:"relative mb-8",children:[e.jsx("div",{className:"absolute top-16 left-0 right-0 h-0.5 bg-gradient-to-r from-blue-500/20 via-[#38bdac]/30 to-amber-500/20 mx-20"}),e.jsx("div",{className:"grid grid-cols-4 gap-4 lg:grid-cols-8",children:so.map((z,He)=>e.jsxs("div",{className:"relative flex flex-col items-center",children:[e.jsxs("div",{className:`relative w-full p-3 rounded-xl border ${z.color} text-center cursor-default`,children:[e.jsx("div",{className:"text-2xl mb-1",children:z.icon}),e.jsx("div",{className:`text-xs font-medium ${z.color.split(" ").find(Je=>Je.startsWith("text-"))}`,children:z.label}),Ls[z.id]!==void 0&&e.jsxs("div",{className:"mt-1.5 text-xs text-gray-400",children:[e.jsx("span",{className:"font-bold text-white",children:Ls[z.id]})," 人"]}),e.jsx("div",{className:"absolute -top-2.5 -left-2.5 w-5 h-5 rounded-full bg-[#0a1628] border border-gray-700 flex items-center justify-center text-[10px] text-gray-500",children:He+1})]}),Hee.jsxs("div",{className:"flex items-start gap-3 p-2 bg-[#0a1628] rounded",children:[e.jsx("span",{className:"text-[#38bdac] font-mono text-xs shrink-0 mt-0.5",children:z.step}),e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-300",children:z.action}),e.jsxs("p",{className:"text-gray-600 text-xs",children:["→ ",z.next]})]})]},z.step))})]}),e.jsxs("div",{className:"bg-[#0f2137] border border-gray-700/50 rounded-lg p-4",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(qs,{className:"w-4 h-4 text-purple-400"}),e.jsx("span",{className:"text-white font-medium",children:"行为锚点统计"}),e.jsx("span",{className:"text-gray-500 text-xs ml-auto",children:"实时更新"})]}),Es?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx($e,{className:"w-5 h-5 text-[#38bdac] animate-spin"})}):Object.keys(Ls).length>0?e.jsx("div",{className:"space-y-2",children:so.map(z=>{const He=Ls[z.id]||0,Je=Math.max(...so.map(dt=>Ls[dt.id]||0),1),ls=Math.round(He/Je*100);return e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{className:"text-gray-500 text-xs w-20 shrink-0",children:[z.icon," ",z.label]}),e.jsx("div",{className:"flex-1 h-2 bg-[#0a1628] rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full bg-[#38bdac]/60 rounded-full transition-all",style:{width:`${ls}%`}})}),e.jsx("span",{className:"text-gray-400 text-xs w-10 text-right",children:He})]},z.id)})}):e.jsx("div",{className:"text-center py-8",children:e.jsx("p",{className:"text-gray-500 text-sm",children:"点击「刷新数据」加载统计"})})]})]})]}),e.jsxs(Ot,{value:"rules",children:[e.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"用户旅程引导规则,定义各行为节点的触发条件与引导内容"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(X,{variant:"outline",onClick:ts,disabled:es,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${es?"animate-spin":""}`})," 刷新"]}),e.jsxs(X,{onClick:()=>{_r(null),gs({title:"",description:"",trigger:"",sort:0,enabled:!0}),As(!0)},className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"})," 添加规则"]})]})]}),es?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"})}):xe.length===0?e.jsxs("div",{className:"text-center py-16 bg-[#0f2137] rounded-lg border border-gray-700/50",children:[e.jsx(qs,{className:"w-12 h-12 text-[#38bdac]/30 mx-auto mb-4"}),e.jsx("p",{className:"text-gray-400 mb-4",children:"暂无规则(重启服务将自动写入10条默认规则)"}),e.jsxs(X,{onClick:ts,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx($e,{className:"w-4 h-4 mr-2"})," 重新加载"]})]}):e.jsx("div",{className:"space-y-2",children:xe.map(z=>e.jsx("div",{className:`p-4 rounded-lg border transition-all ${z.enabled?"bg-[#0f2137] border-gray-700/50":"bg-[#0a1628]/50 border-gray-700/30 opacity-55"}`,children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap mb-1",children:[e.jsx(ht,{className:"w-4 h-4 text-[#38bdac] shrink-0"}),e.jsx("span",{className:"text-white font-medium",children:z.title}),z.trigger&&e.jsxs(Le,{className:"bg-[#38bdac]/10 text-[#38bdac] border border-[#38bdac]/30 text-xs",children:["触发:",z.trigger]}),e.jsx(Le,{className:`text-xs border-0 ${z.enabled?"bg-green-500/20 text-green-400":"bg-gray-500/20 text-gray-400"}`,children:z.enabled?"启用":"禁用"})]}),z.description&&e.jsx("p",{className:"text-gray-400 text-sm ml-6",children:z.description})]}),e.jsxs("div",{className:"flex items-center gap-2 ml-4 shrink-0",children:[e.jsx(ot,{checked:z.enabled,onCheckedChange:()=>Ce(z)}),e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>{_r(z),gs({title:z.title,description:z.description,trigger:z.trigger,sort:z.sort,enabled:z.enabled}),As(!0)},className:"text-gray-400 hover:text-[#38bdac] hover:bg-[#38bdac]/10",children:e.jsx(ht,{className:"w-4 h-4"})}),e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>ie(z.id),className:"text-red-400 hover:text-red-300 hover:bg-red-500/10",children:e.jsx(Ht,{className:"w-4 h-4"})})]})]})},z.id))})]}),e.jsxs(Ot,{value:"vip-roles",children:[e.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"管理用户 VIP 角色分类,这些角色将在用户详情和会员展示中使用"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(X,{variant:"outline",onClick:Pe,disabled:Cs,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${Cs?"animate-spin":""}`})," 刷新"]}),e.jsxs(X,{onClick:()=>{fr(null),Ds({name:"",sort:0}),ks(!0)},className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"})," 添加角色"]})]})]}),Cs?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"})}):bn.length===0?e.jsxs("div",{className:"text-center py-16 bg-[#0f2137] rounded-lg border border-gray-700/50",children:[e.jsx(rn,{className:"w-12 h-12 text-amber-400/30 mx-auto mb-4"}),e.jsx("p",{className:"text-gray-400 mb-4",children:"暂无 VIP 角色"}),e.jsxs(X,{onClick:()=>{fr(null),Ds({name:"",sort:0}),ks(!0)},className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"})," 添加第一个角色"]})]}):e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-3",children:bn.map(z=>e.jsxs("div",{className:"p-4 bg-[#0f2137] border border-amber-500/20 rounded-xl hover:border-amber-500/40 transition-all group",children:[e.jsxs("div",{className:"flex items-start justify-between mb-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(rn,{className:"w-4 h-4 text-amber-400"}),e.jsx("span",{className:"text-white font-medium",children:z.name})]}),e.jsxs("div",{className:"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[e.jsx("button",{type:"button",onClick:()=>{fr(z),Ds({name:z.name,sort:z.sort}),ks(!0)},className:"text-gray-500 hover:text-[#38bdac]",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),e.jsx("button",{type:"button",onClick:()=>ns(z.id),className:"text-gray-500 hover:text-red-400",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})})]})]}),e.jsxs("p",{className:"text-gray-600 text-xs",children:["排序: ",z.sort]})]},z.id))})]})]}),e.jsx(Ct,{open:R,onOpenChange:Z,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-lg",children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[Q?e.jsx(ht,{className:"w-5 h-5 text-[#38bdac]"}):e.jsx(Xd,{className:"w-5 h-5 text-[#38bdac]"}),Q?"编辑用户":"添加用户"]})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"手机号"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"请输入手机号",value:ze.phone,onChange:z=>he({...ze,phone:z.target.value}),disabled:!!Q})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"昵称"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"请输入昵称",value:ze.nickname,onChange:z=>he({...ze,nickname:z.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:Q?"新密码 (留空则不修改)":"密码"}),e.jsx(le,{type:"password",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:Q?"留空则不修改":"请输入密码",value:ze.password,onChange:z=>he({...ze,password:z.target.value})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(te,{className:"text-gray-300",children:"管理员权限"}),e.jsx(ot,{checked:ze.isAdmin,onCheckedChange:z=>he({...ze,isAdmin:z})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(te,{className:"text-gray-300",children:"已购全书"}),e.jsx(ot,{checked:ze.hasFullBook,onCheckedChange:z=>he({...ze,hasFullBook:z})})]})]}),e.jsxs(Dt,{children:[e.jsxs(X,{variant:"outline",onClick:()=>Z(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx(ms,{className:"w-4 h-4 mr-2"}),"取消"]}),e.jsxs(X,{onClick:zs,disabled:ce,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),ce?"保存中...":"保存"]})]})]})}),e.jsx(Ct,{open:ne,onOpenChange:ae,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx($f,{className:"w-5 h-5 text-[#38bdac]"}),"修改密码"]})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"bg-[#0a1628] rounded-lg p-3",children:[e.jsxs("p",{className:"text-gray-400 text-sm",children:["用户:",Q==null?void 0:Q.nickname]}),e.jsxs("p",{className:"text-gray-400 text-sm",children:["手机号:",Q==null?void 0:Q.phone]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"新密码"}),e.jsx(le,{type:"password",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"请输入新密码 (至少6位)",value:H,onChange:z=>oe(z.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"确认密码"}),e.jsx(le,{type:"password",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"请再次输入",value:ve,onChange:z=>B(z.target.value)})]})]}),e.jsxs(Dt,{children:[e.jsx(X,{variant:"outline",onClick:()=>ae(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),e.jsx(X,{onClick:Jn,disabled:ce,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:ce?"保存中...":"确认修改"})]})]})}),e.jsx(Ct,{open:jn,onOpenChange:As,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-lg",children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(ht,{className:"w-5 h-5 text-[#38bdac]"}),Bt?"编辑规则":"添加规则"]})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"规则标题 *"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例:匹配后填写头像、付款1980需填写信息",value:ct.title,onChange:z=>gs({...ct,title:z.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"规则描述"}),e.jsx(un,{className:"bg-[#0a1628] border-gray-700 text-white min-h-[80px] resize-none",placeholder:"详细说明规则内容...",value:ct.description,onChange:z=>gs({...ct,description:z.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"触发条件"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例:完成匹配、付款后、注册时",value:ct.trigger,onChange:z=>gs({...ct,trigger:z.target.value})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{children:e.jsx(te,{className:"text-gray-300",children:"启用状态"})}),e.jsx(ot,{checked:ct.enabled,onCheckedChange:z=>gs({...ct,enabled:z})})]})]}),e.jsxs(Dt,{children:[e.jsxs(X,{variant:"outline",onClick:()=>As(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx(ms,{className:"w-4 h-4 mr-2"}),"取消"]}),e.jsxs(X,{onClick:F,disabled:ce,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),ce?"保存中...":"保存"]})]})]})}),e.jsx(Ct,{open:Gn,onOpenChange:ks,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(rn,{className:"w-5 h-5 text-amber-400"}),Nn?"编辑 VIP 角色":"添加 VIP 角色"]})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"角色名称 *"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例:创业者、资源整合者、技术咖",value:ys.name,onChange:z=>Ds({...ys,name:z.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"排序(越小越前)"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:ys.sort,onChange:z=>Ds({...ys,sort:parseInt(z.target.value)||0})})]})]}),e.jsxs(Dt,{children:[e.jsxs(X,{variant:"outline",onClick:()=>ks(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx(ms,{className:"w-4 h-4 mr-2"}),"取消"]}),e.jsxs(X,{onClick:xt,disabled:ce,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),ce?"保存中...":"保存"]})]})]})}),e.jsx(Ct,{open:A,onOpenChange:O,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-2xl max-h-[80vh] overflow-auto",children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(Yt,{className:"w-5 h-5 text-[#38bdac]"}),"绑定关系 - ",Y==null?void 0:Y.nickname]})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"grid grid-cols-4 gap-3",children:[e.jsxs("div",{className:"bg-[#0a1628] rounded-lg p-3 text-center",children:[e.jsx("div",{className:"text-2xl font-bold text-[#38bdac]",children:((as=L.stats)==null?void 0:as.total)||0}),e.jsx("div",{className:"text-xs text-gray-400",children:"绑定总数"})]}),e.jsxs("div",{className:"bg-[#0a1628] rounded-lg p-3 text-center",children:[e.jsx("div",{className:"text-2xl font-bold text-green-400",children:((kn=L.stats)==null?void 0:kn.purchased)||0}),e.jsx("div",{className:"text-xs text-gray-400",children:"已付费"})]}),e.jsxs("div",{className:"bg-[#0a1628] rounded-lg p-3 text-center",children:[e.jsxs("div",{className:"text-2xl font-bold text-yellow-400",children:["¥",(((er=L.stats)==null?void 0:er.earnings)||0).toFixed(2)]}),e.jsx("div",{className:"text-xs text-gray-400",children:"累计收益"})]}),e.jsxs("div",{className:"bg-[#0a1628] rounded-lg p-3 text-center",children:[e.jsxs("div",{className:"text-2xl font-bold text-orange-400",children:["¥",(((xr=L.stats)==null?void 0:xr.pendingEarnings)||0).toFixed(2)]}),e.jsx("div",{className:"text-xs text-gray-400",children:"待提现"})]})]}),G?e.jsxs("div",{className:"flex items-center justify-center py-8",children:[e.jsx($e,{className:"w-5 h-5 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):(((Pt=L.referrals)==null?void 0:Pt.length)??0)>0?e.jsx("div",{className:"space-y-2 max-h-[300px] overflow-y-auto",children:(L.referrals??[]).map((z,He)=>{var ls;const Je=z;return e.jsxs("div",{className:"flex items-center justify-between bg-[#0a1628] rounded-lg p-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-8 h-8 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm text-[#38bdac]",children:((ls=Je.nickname)==null?void 0:ls.charAt(0))||"?"}),e.jsxs("div",{children:[e.jsx("div",{className:"text-white text-sm",children:Je.nickname}),e.jsx("div",{className:"text-xs text-gray-500",children:Je.phone||(Je.hasOpenId?"微信用户":"未绑定")})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[Je.status==="vip"&&e.jsx(Le,{className:"bg-green-500/20 text-green-400 border-0 text-xs",children:"全书已购"}),Je.status==="paid"&&e.jsxs(Le,{className:"bg-blue-500/20 text-blue-400 border-0 text-xs",children:["已付费",Je.purchasedSections,"章"]}),Je.status==="free"&&e.jsx(Le,{className:"bg-gray-500/20 text-gray-400 border-0 text-xs",children:"未付费"}),e.jsx("span",{className:"text-xs text-gray-500",children:Je.createdAt?new Date(Je.createdAt).toLocaleDateString():""})]})]},Je.id||He)})}):e.jsx("div",{className:"text-center py-8 text-gray-500",children:"暂无绑定用户"})]}),e.jsx(Dt,{children:e.jsx(X,{variant:"outline",onClick:()=>O(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"关闭"})})]})}),e.jsx(p0,{open:Se,onClose:()=>D(!1),userId:fe,onUserUpdated:Fs}),e.jsx(z2,{open:Ve,onClose:()=>{We(!1),tt(null)},userId:(Ye==null?void 0:Ye.id)??null,userNickname:Ye==null?void 0:Ye.nickname,onSaved:Fs})]})}function xo(r,[a,l]){return Math.min(l,Math.max(a,r))}var g0=["PageUp","PageDown"],y0=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],v0={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},Ba="Slider",[su,B2,U2]=_u(Ba),[j0]=gn(Ba,[U2]),[V2,Ro]=j0(Ba),b0=h.forwardRef((r,a)=>{const{name:l,min:o=0,max:c=100,step:u=1,orientation:m="horizontal",disabled:f=!1,minStepsBetweenThumbs:g=0,defaultValue:y=[o],value:p,onValueChange:v=()=>{},onValueCommit:E=()=>{},inverted:P=!1,form:T,...w}=r,b=h.useRef(new Set),N=h.useRef(0),j=m==="horizontal"?W2:H2,[I=[],U]=Bn({prop:p,defaultProp:y,onChange:ne=>{var Q;(Q=[...b.current][N.current])==null||Q.focus(),v(ne)}}),V=h.useRef(I);function _(ne){const ae=q2(I,ne);Z(ne,ae)}function k(ne){Z(ne,N.current)}function R(){const ne=V.current[N.current];I[N.current]!==ne&&E(I)}function Z(ne,ae,{commit:Q}={commit:!1}){const se=e4(u),H=t4(Math.round((ne-o)/u)*u+o,se),oe=xo(H,[o,c]);U((ve=[])=>{const B=Y2(ve,oe,ae);if(Z2(B,g*u)){N.current=B.indexOf(oe);const ce=String(B)!==String(ve);return ce&&Q&&E(B),ce?B:ve}else return ve})}return e.jsx(V2,{scope:r.__scopeSlider,name:l,disabled:f,min:o,max:c,valueIndexToChangeRef:N,thumbs:b.current,values:I,orientation:m,form:T,children:e.jsx(su.Provider,{scope:r.__scopeSlider,children:e.jsx(su.Slot,{scope:r.__scopeSlider,children:e.jsx(j,{"aria-disabled":f,"data-disabled":f?"":void 0,...w,ref:a,onPointerDown:Qe(w.onPointerDown,()=>{f||(V.current=I)}),min:o,max:c,inverted:P,onSlideStart:f?void 0:_,onSlideMove:f?void 0:k,onSlideEnd:f?void 0:R,onHomeKeyDown:()=>!f&&Z(o,0,{commit:!0}),onEndKeyDown:()=>!f&&Z(c,I.length-1,{commit:!0}),onStepKeyDown:({event:ne,direction:ae})=>{if(!f){const H=g0.includes(ne.key)||ne.shiftKey&&y0.includes(ne.key)?10:1,oe=N.current,ve=I[oe],B=u*H*ae;Z(ve+B,oe,{commit:!0})}}})})})})});b0.displayName=Ba;var[N0,w0]=j0(Ba,{startEdge:"left",endEdge:"right",size:"width",direction:1}),W2=h.forwardRef((r,a)=>{const{min:l,max:o,dir:c,inverted:u,onSlideStart:m,onSlideMove:f,onSlideEnd:g,onStepKeyDown:y,...p}=r,[v,E]=h.useState(null),P=at(a,j=>E(j)),T=h.useRef(void 0),w=Eo(c),b=w==="ltr",N=b&&!u||!b&&u;function C(j){const I=T.current||v.getBoundingClientRect(),U=[0,I.width],_=Lu(U,N?[l,o]:[o,l]);return T.current=I,_(j-I.left)}return e.jsx(N0,{scope:r.__scopeSlider,startEdge:N?"left":"right",endEdge:N?"right":"left",direction:N?1:-1,size:"width",children:e.jsx(S0,{dir:w,"data-orientation":"horizontal",...p,ref:P,style:{...p.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:j=>{const I=C(j.clientX);m==null||m(I)},onSlideMove:j=>{const I=C(j.clientX);f==null||f(I)},onSlideEnd:()=>{T.current=void 0,g==null||g()},onStepKeyDown:j=>{const U=v0[N?"from-left":"from-right"].includes(j.key);y==null||y({event:j,direction:U?-1:1})}})})}),H2=h.forwardRef((r,a)=>{const{min:l,max:o,inverted:c,onSlideStart:u,onSlideMove:m,onSlideEnd:f,onStepKeyDown:g,...y}=r,p=h.useRef(null),v=at(a,p),E=h.useRef(void 0),P=!c;function T(w){const b=E.current||p.current.getBoundingClientRect(),N=[0,b.height],j=Lu(N,P?[o,l]:[l,o]);return E.current=b,j(w-b.top)}return e.jsx(N0,{scope:r.__scopeSlider,startEdge:P?"bottom":"top",endEdge:P?"top":"bottom",size:"height",direction:P?1:-1,children:e.jsx(S0,{"data-orientation":"vertical",...y,ref:v,style:{...y.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:w=>{const b=T(w.clientY);u==null||u(b)},onSlideMove:w=>{const b=T(w.clientY);m==null||m(b)},onSlideEnd:()=>{E.current=void 0,f==null||f()},onStepKeyDown:w=>{const N=v0[P?"from-bottom":"from-top"].includes(w.key);g==null||g({event:w,direction:N?-1:1})}})})}),S0=h.forwardRef((r,a)=>{const{__scopeSlider:l,onSlideStart:o,onSlideMove:c,onSlideEnd:u,onHomeKeyDown:m,onEndKeyDown:f,onStepKeyDown:g,...y}=r,p=Ro(Ba,l);return e.jsx(Xe.span,{...y,ref:a,onKeyDown:Qe(r.onKeyDown,v=>{v.key==="Home"?(m(v),v.preventDefault()):v.key==="End"?(f(v),v.preventDefault()):g0.concat(y0).includes(v.key)&&(g(v),v.preventDefault())}),onPointerDown:Qe(r.onPointerDown,v=>{const E=v.target;E.setPointerCapture(v.pointerId),v.preventDefault(),p.thumbs.has(E)?E.focus():o(v)}),onPointerMove:Qe(r.onPointerMove,v=>{v.target.hasPointerCapture(v.pointerId)&&c(v)}),onPointerUp:Qe(r.onPointerUp,v=>{const E=v.target;E.hasPointerCapture(v.pointerId)&&(E.releasePointerCapture(v.pointerId),u(v))})})}),C0="SliderTrack",k0=h.forwardRef((r,a)=>{const{__scopeSlider:l,...o}=r,c=Ro(C0,l);return e.jsx(Xe.span,{"data-disabled":c.disabled?"":void 0,"data-orientation":c.orientation,...o,ref:a})});k0.displayName=C0;var ru="SliderRange",E0=h.forwardRef((r,a)=>{const{__scopeSlider:l,...o}=r,c=Ro(ru,l),u=w0(ru,l),m=h.useRef(null),f=at(a,m),g=c.values.length,y=c.values.map(E=>R0(E,c.min,c.max)),p=g>1?Math.min(...y):0,v=100-Math.max(...y);return e.jsx(Xe.span,{"data-orientation":c.orientation,"data-disabled":c.disabled?"":void 0,...o,ref:f,style:{...r.style,[u.startEdge]:p+"%",[u.endEdge]:v+"%"}})});E0.displayName=ru;var nu="SliderThumb",P0=h.forwardRef((r,a)=>{const l=B2(r.__scopeSlider),[o,c]=h.useState(null),u=at(a,f=>c(f)),m=h.useMemo(()=>o?l().findIndex(f=>f.ref.current===o):-1,[l,o]);return e.jsx(K2,{...r,ref:u,index:m})}),K2=h.forwardRef((r,a)=>{const{__scopeSlider:l,index:o,name:c,...u}=r,m=Ro(nu,l),f=w0(nu,l),[g,y]=h.useState(null),p=at(a,C=>y(C)),v=g?m.form||!!g.closest("form"):!0,E=Du(g),P=m.values[o],T=P===void 0?0:R0(P,m.min,m.max),w=Q2(o,m.values.length),b=E==null?void 0:E[f.size],N=b?X2(b,T,f.direction):0;return h.useEffect(()=>{if(g)return m.thumbs.add(g),()=>{m.thumbs.delete(g)}},[g,m.thumbs]),e.jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[f.startEdge]:`calc(${T}% + ${N}px)`},children:[e.jsx(su.ItemSlot,{scope:r.__scopeSlider,children:e.jsx(Xe.span,{role:"slider","aria-label":r["aria-label"]||w,"aria-valuemin":m.min,"aria-valuenow":P,"aria-valuemax":m.max,"aria-orientation":m.orientation,"data-orientation":m.orientation,"data-disabled":m.disabled?"":void 0,tabIndex:m.disabled?void 0:0,...u,ref:p,style:P===void 0?{display:"none"}:r.style,onFocus:Qe(r.onFocus,()=>{m.valueIndexToChangeRef.current=o})})}),v&&e.jsx(T0,{name:c??(m.name?m.name+(m.values.length>1?"[]":""):void 0),form:m.form,value:P},o)]})});P0.displayName=nu;var G2="RadioBubbleInput",T0=h.forwardRef(({__scopeSlider:r,value:a,...l},o)=>{const c=h.useRef(null),u=at(c,o),m=Au(a);return h.useEffect(()=>{const f=c.current;if(!f)return;const g=window.HTMLInputElement.prototype,p=Object.getOwnPropertyDescriptor(g,"value").set;if(m!==a&&p){const v=new Event("input",{bubbles:!0});p.call(f,a),f.dispatchEvent(v)}},[m,a]),e.jsx(Xe.input,{style:{display:"none"},...l,ref:u,defaultValue:a})});T0.displayName=G2;function Y2(r=[],a,l){const o=[...r];return o[l]=a,o.sort((c,u)=>c-u)}function R0(r,a,l){const u=100/(l-a)*(r-a);return xo(u,[0,100])}function Q2(r,a){return a>2?`Value ${r+1} of ${a}`:a===2?["Minimum","Maximum"][r]:void 0}function q2(r,a){if(r.length===1)return 0;const l=r.map(c=>Math.abs(c-a)),o=Math.min(...l);return l.indexOf(o)}function X2(r,a,l){const o=r/2,u=Lu([0,50],[0,o]);return(o-u(a)*l)*l}function J2(r){return r.slice(0,-1).map((a,l)=>r[l+1]-a)}function Z2(r,a){if(a>0){const l=J2(r);return Math.min(...l)>=a}return!0}function Lu(r,a){return l=>{if(r[0]===r[1]||a[0]===a[1])return a[0];const o=(a[1]-a[0])/(r[1]-r[0]);return a[0]+o*(l-r[0])}}function e4(r){return(String(r).split(".")[1]||"").length}function t4(r,a){const l=Math.pow(10,a);return Math.round(r*l)/l}var s4=b0,r4=k0,n4=E0,a4=P0;function l4({className:r,defaultValue:a,value:l,min:o=0,max:c=100,...u}){const m=h.useMemo(()=>Array.isArray(l)?l:Array.isArray(a)?a:[o,c],[l,a,o,c]);return e.jsxs(s4,{defaultValue:a,value:l,min:o,max:c,className:lt("relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50",r),...u,children:[e.jsx(r4,{className:"bg-gray-600 relative grow overflow-hidden rounded-full h-1.5 w-full",children:e.jsx(n4,{className:"bg-[#38bdac] absolute h-full rounded-full"})}),Array.from({length:m.length},(f,g)=>e.jsx(a4,{className:"block size-4 shrink-0 rounded-full border-2 border-[#38bdac] bg-white shadow-sm focus-visible:ring-2 focus-visible:ring-[#38bdac] focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50"},g))]})}const i4={distributorShare:90,minWithdrawAmount:10,bindingDays:30,userDiscount:5,enableAutoWithdraw:!1,vipOrderShareVip:20,vipOrderShareNonVip:10};function I0({embedded:r=!1}){const[a,l]=h.useState(i4),[o,c]=h.useState(!0),[u,m]=h.useState(!1);h.useEffect(()=>{Be("/api/admin/referral-settings").then(y=>{const p=y==null?void 0:y.data;p&&typeof p=="object"&&l({distributorShare:p.distributorShare??90,minWithdrawAmount:p.minWithdrawAmount??10,bindingDays:p.bindingDays??30,userDiscount:p.userDiscount??5,enableAutoWithdraw:p.enableAutoWithdraw??!1,vipOrderShareVip:p.vipOrderShareVip??20,vipOrderShareNonVip:p.vipOrderShareNonVip??10})}).catch(console.error).finally(()=>c(!1))},[]);const f=async()=>{m(!0);try{const y={distributorShare:Number(a.distributorShare)||0,minWithdrawAmount:Number(a.minWithdrawAmount)||0,bindingDays:Number(a.bindingDays)||0,userDiscount:Number(a.userDiscount)||0,enableAutoWithdraw:!!a.enableAutoWithdraw,vipOrderShareVip:Number(a.vipOrderShareVip)||20,vipOrderShareNonVip:Number(a.vipOrderShareNonVip)||10},p=await mt("/api/admin/referral-settings",y);if(!p||p.success===!1){alert("保存失败: "+(p&&typeof p=="object"&&"error"in p?p.error:""));return}alert(`✅ 分销配置已保存成功! +For more information, see https://radix-ui.com/primitives/docs/components/${a.docsSlug}`;return h.useEffect(()=>{r&&(document.getElementById(r)||console.error(l))},[l,r]),null},r2="DialogDescriptionWarning",n2=({contentRef:r,descriptionId:a})=>{const o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Bp(r2).contentName}}.`;return h.useEffect(()=>{var u;const c=(u=r.current)==null?void 0:u.getAttribute("aria-describedby");a&&c&&(document.getElementById(a)||console.warn(o))},[o,r,a]),null},a2=Pp,l2=Ip,i2=_p,o2=Mp,c2=Dp,d2=Op,u2=zp;function Ct(r){return e.jsx(a2,{"data-slot":"dialog",...r})}function h2(r){return e.jsx(l2,{...r})}const Up=h.forwardRef(({className:r,...a},l)=>e.jsx(i2,{ref:l,className:lt("fixed inset-0 z-50 bg-black/50",r),...a}));Up.displayName="DialogOverlay";const Nt=h.forwardRef(({className:r,children:a,showCloseButton:l=!0,...o},c)=>e.jsxs(h2,{children:[e.jsx(Up,{}),e.jsxs(o2,{ref:c,"aria-describedby":void 0,className:lt("fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-lg border bg-background p-6 shadow-lg sm:max-w-lg",r),...o,children:[a,l&&e.jsxs(u2,{className:"absolute right-4 top-4 rounded-sm opacity-70 hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",children:[e.jsx(ms,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Nt.displayName="DialogContent";function kt({className:r,...a}){return e.jsx("div",{className:lt("flex flex-col gap-2 text-center sm:text-left",r),...a})}function Dt({className:r,...a}){return e.jsx("div",{className:lt("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",r),...a})}function Et(r){return e.jsx(c2,{className:"text-lg font-semibold leading-none",...r})}function m2(r){return e.jsx(d2,{className:"text-sm text-muted-foreground",...r})}function Iu(r,a){const[l,o]=h.useState(r);return h.useEffect(()=>{const c=setTimeout(()=>o(r),a);return()=>clearTimeout(c)},[r,a]),l}function Qs({page:r,totalPages:a,total:l,pageSize:o,onPageChange:c,onPageSizeChange:u,pageSizeOptions:m=[10,20,50,100]}){return a<=1&&!u?null:e.jsxs("div",{className:"flex items-center justify-between gap-4 py-4 px-5 border-t border-gray-700/50",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm text-gray-400",children:[e.jsxs("span",{children:["共 ",l," 条"]}),u&&e.jsx("select",{value:o,onChange:f=>u(Number(f.target.value)),className:"bg-[#0f2137] border border-gray-600 rounded px-2 py-1 text-gray-300 text-sm",children:m.map(f=>e.jsxs("option",{value:f,children:[f," 条/页"]},f))})]}),a>1&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{type:"button",onClick:()=>c(1),disabled:r<=1,className:"px-2 py-1 rounded border border-gray-600 text-gray-400 hover:bg-gray-700/50 disabled:opacity-40 text-sm",children:"首页"}),e.jsx("button",{type:"button",onClick:()=>c(r-1),disabled:r<=1,className:"px-3 py-1 rounded border border-gray-600 text-gray-400 hover:bg-gray-700/50 disabled:opacity-40 text-sm",children:"上一页"}),e.jsxs("span",{className:"px-3 py-1 text-gray-400 text-sm",children:[r," / ",a]}),e.jsx("button",{type:"button",onClick:()=>c(r+1),disabled:r>=a,className:"px-3 py-1 rounded border border-gray-600 text-gray-400 hover:bg-gray-700/50 disabled:opacity-40 text-sm",children:"下一页"}),e.jsx("button",{type:"button",onClick:()=>c(a),disabled:r>=a,className:"px-2 py-1 rounded border border-gray-600 text-gray-400 hover:bg-gray-700/50 disabled:opacity-40 text-sm",children:"末页"})]})]})}function f2(){const[r,a]=h.useState([]),[l,o]=h.useState([]),[c,u]=h.useState(0),[m,f]=h.useState(0),[p,y]=h.useState(0),[g,v]=h.useState(1),[k,P]=h.useState(10),[T,w]=h.useState(""),N=Iu(T,300),[b,S]=h.useState("all"),[j,_]=h.useState(!0),[O,V]=h.useState(null),[I,R]=h.useState(null),[E,Y]=h.useState(""),[ne,ae]=h.useState(!1);async function q(){_(!0),V(null);try{const K=b==="all"?"":b==="completed"?"completed":b,A=new URLSearchParams({page:String(g),pageSize:String(k),...K&&{status:K},...N&&{search:N}}),[F,L]=await Promise.all([Be(`/api/orders?${A}`),Be("/api/db/users?page=1&pageSize=500")]);F!=null&&F.success&&(a(F.orders||[]),u(F.total??0),f(F.totalRevenue??0),y(F.todayRevenue??0)),L!=null&&L.success&&L.users&&o(L.users)}catch(K){console.error("加载订单失败",K),V("加载订单失败,请检查网络后重试")}finally{_(!1)}}h.useEffect(()=>{v(1)},[N,b]),h.useEffect(()=>{q()},[g,k,N,b]);const se=K=>{var A;return K.userNickname||((A=l.find(F=>F.id===K.userId))==null?void 0:A.nickname)||"匿名用户"},H=K=>{var A;return((A=l.find(F=>F.id===K))==null?void 0:A.phone)||"-"},ie=K=>{const A=K.productType||K.type||"",F=K.description||"";if(F){if(A==="section"&&F.includes("章节")){if(F.includes("-")){const L=F.split("-");if(L.length>=3)return{name:`第${L[1]}章 第${L[2]}节`,type:"《一场Soul的创业实验》"}}return{name:F,type:"章节购买"}}return A==="fullbook"||F.includes("全书")?{name:"《一场Soul的创业实验》",type:"全书购买"}:A==="vip"||F.includes("VIP")?{name:"VIP年度会员",type:"VIP"}:A==="match"||F.includes("伙伴")?{name:"找伙伴匹配",type:"功能服务"}:{name:F,type:"其他"}}return A==="section"?{name:`章节 ${K.productId||K.sectionId||""}`,type:"单章"}:A==="fullbook"?{name:"《一场Soul的创业实验》",type:"全书"}:A==="vip"?{name:"VIP年度会员",type:"VIP"}:A==="match"?{name:"找伙伴匹配",type:"功能"}:{name:"未知商品",type:A||"其他"}},ve=Math.ceil(c/k)||1;async function U(){var K;if(!(!(I!=null&&I.orderSn)&&!(I!=null&&I.id))){ae(!0),V(null);try{const A=await vt("/api/admin/orders/refund",{orderSn:I.orderSn||I.id,reason:E||void 0});A!=null&&A.success?(R(null),Y(""),q()):V((A==null?void 0:A.error)||"退款失败")}catch(A){const F=A;V(((K=F==null?void 0:F.data)==null?void 0:K.error)||"退款失败,请检查网络后重试")}finally{ae(!1)}}}function ce(){if(r.length===0){alert("暂无数据可导出");return}const K=["订单号","用户","手机号","商品","金额","支付方式","状态","退款原因","分销佣金","下单时间"],A=r.map(de=>{const Q=ie(de);return[de.orderSn||de.id||"",se(de),H(de.userId),Q.name,Number(de.amount||0).toFixed(2),de.paymentMethod==="wechat"?"微信支付":de.paymentMethod==="alipay"?"支付宝":de.paymentMethod||"微信支付",de.status==="refunded"?"已退款":de.status==="paid"||de.status==="completed"?"已完成":de.status==="pending"||de.status==="created"?"待支付":"已失败",de.status==="refunded"&&de.refundReason?de.refundReason:"-",de.referrerEarnings?Number(de.referrerEarnings).toFixed(2):"-",de.createdAt?new Date(de.createdAt).toLocaleString("zh-CN"):""].join(",")}),F="\uFEFF"+[K.join(","),...A].join(` +`),L=new Blob([F],{type:"text/csv;charset=utf-8"}),Z=URL.createObjectURL(L),G=document.createElement("a");G.href=Z,G.download=`订单列表_${new Date().toISOString().slice(0,10)}.csv`,G.click(),URL.revokeObjectURL(Z)}return e.jsxs("div",{className:"p-8 w-full",children:[O&&e.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[e.jsx("span",{children:O}),e.jsx("button",{type:"button",onClick:()=>V(null),className:"hover:text-red-300",children:"×"})]}),e.jsxs("div",{className:"flex justify-between items-center mb-8",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-white",children:"订单管理"}),e.jsxs("p",{className:"text-gray-400 mt-1",children:["共 ",r.length," 笔订单"]})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(J,{variant:"outline",onClick:q,disabled:j,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${j?"animate-spin":""}`}),"刷新"]}),e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[e.jsx("span",{className:"text-gray-400",children:"总收入:"}),e.jsxs("span",{className:"text-[#38bdac] font-bold",children:["¥",m.toFixed(2)]}),e.jsx("span",{className:"text-gray-600",children:"|"}),e.jsx("span",{className:"text-gray-400",children:"今日:"}),e.jsxs("span",{className:"text-[#FFD700] font-bold",children:["¥",p.toFixed(2)]})]})]})]}),e.jsxs("div",{className:"flex items-center gap-4 mb-6",children:[e.jsxs("div",{className:"relative flex-1 max-w-md",children:[e.jsx(cn,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-500"}),e.jsx(le,{type:"text",placeholder:"搜索订单号/用户/章节...",className:"pl-10 bg-[#0f2137] border-gray-700 text-white placeholder:text-gray-500",value:T,onChange:K=>w(K.target.value)})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Kx,{className:"w-4 h-4 text-gray-400"}),e.jsxs("select",{value:b,onChange:K=>S(K.target.value),className:"bg-[#0f2137] border border-gray-700 text-white rounded-lg px-3 py-2 text-sm",children:[e.jsx("option",{value:"all",children:"全部状态"}),e.jsx("option",{value:"completed",children:"已完成"}),e.jsx("option",{value:"pending",children:"待支付"}),e.jsx("option",{value:"created",children:"已创建"}),e.jsx("option",{value:"failed",children:"已失败"}),e.jsx("option",{value:"refunded",children:"已退款"})]})]}),e.jsxs(J,{variant:"outline",onClick:ce,disabled:r.length===0,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx(ub,{className:"w-4 h-4 mr-2"}),"导出 CSV"]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:e.jsx(we,{className:"p-0",children:j?e.jsxs("div",{className:"flex items-center justify-center py-12",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):e.jsxs("div",{children:[e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"订单号"}),e.jsx(be,{className:"text-gray-400",children:"用户"}),e.jsx(be,{className:"text-gray-400",children:"商品"}),e.jsx(be,{className:"text-gray-400",children:"金额"}),e.jsx(be,{className:"text-gray-400",children:"支付方式"}),e.jsx(be,{className:"text-gray-400",children:"状态"}),e.jsx(be,{className:"text-gray-400",children:"退款原因"}),e.jsx(be,{className:"text-gray-400",children:"分销佣金"}),e.jsx(be,{className:"text-gray-400",children:"下单时间"}),e.jsx(be,{className:"text-gray-400",children:"操作"})]})}),e.jsxs(ps,{children:[r.map(K=>{const A=ie(K);return e.jsxs(et,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[e.jsxs(pe,{className:"font-mono text-xs text-gray-400",children:[(K.orderSn||K.id||"").slice(0,12),"..."]}),e.jsx(pe,{children:e.jsxs("div",{children:[e.jsx("p",{className:"text-white text-sm",children:se(K)}),e.jsx("p",{className:"text-gray-500 text-xs",children:H(K.userId)})]})}),e.jsx(pe,{children:e.jsxs("div",{children:[e.jsxs("p",{className:"text-white text-sm flex items-center gap-2",children:[A.name,(K.productType||K.type)==="vip"&&e.jsx(Le,{className:"bg-amber-500/20 text-amber-400 hover:bg-amber-500/20 border-0 text-xs",children:"VIP"})]}),e.jsx("p",{className:"text-gray-500 text-xs",children:A.type})]})}),e.jsxs(pe,{className:"text-[#38bdac] font-bold",children:["¥",Number(K.amount||0).toFixed(2)]}),e.jsx(pe,{className:"text-gray-300",children:K.paymentMethod==="wechat"?"微信支付":K.paymentMethod==="alipay"?"支付宝":K.paymentMethod||"微信支付"}),e.jsx(pe,{children:K.status==="refunded"?e.jsx(Le,{className:"bg-gray-500/20 text-gray-400 hover:bg-gray-500/20 border-0",children:"已退款"}):K.status==="paid"||K.status==="completed"?e.jsx(Le,{className:"bg-green-500/20 text-green-400 hover:bg-green-500/20 border-0",children:"已完成"}):K.status==="pending"||K.status==="created"?e.jsx(Le,{className:"bg-yellow-500/20 text-yellow-400 hover:bg-yellow-500/20 border-0",children:"待支付"}):e.jsx(Le,{className:"bg-red-500/20 text-red-400 hover:bg-red-500/20 border-0",children:"已失败"})}),e.jsx(pe,{className:"text-gray-400 text-sm max-w-[120px] truncate",title:K.refundReason,children:K.status==="refunded"&&K.refundReason?K.refundReason:"-"}),e.jsx(pe,{className:"text-[#FFD700]",children:K.referrerEarnings?`¥${Number(K.referrerEarnings).toFixed(2)}`:"-"}),e.jsx(pe,{className:"text-gray-400 text-sm",children:new Date(K.createdAt).toLocaleString("zh-CN")}),e.jsx(pe,{children:(K.status==="paid"||K.status==="completed")&&e.jsxs(J,{variant:"outline",size:"sm",className:"border-orange-500/50 text-orange-400 hover:bg-orange-500/20",onClick:()=>{R(K),Y("")},children:[e.jsx(Qx,{className:"w-3 h-3 mr-1"}),"退款"]})})]},K.id)}),r.length===0&&e.jsx(et,{children:e.jsx(pe,{colSpan:10,className:"text-center py-12 text-gray-500",children:"暂无订单数据"})})]})]}),e.jsx(Qs,{page:g,totalPages:ve,total:c,pageSize:k,onPageChange:v,onPageSizeChange:K=>{P(K),v(1)}})]})})}),e.jsx(Ct,{open:!!I,onOpenChange:K=>!K&&R(null),children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",children:[e.jsx(kt,{children:e.jsx(Et,{className:"text-white",children:"订单退款"})}),I&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("p",{className:"text-gray-400 text-sm",children:["订单号:",I.orderSn||I.id]}),e.jsxs("p",{className:"text-gray-400 text-sm",children:["退款金额:¥",Number(I.amount||0).toFixed(2)]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm text-gray-400 block mb-2",children:"退款原因(选填)"}),e.jsx("div",{className:"form-input",children:e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",placeholder:"如:用户申请退款",value:E,onChange:K=>Y(K.target.value)})})]}),e.jsx("p",{className:"text-orange-400/80 text-xs",children:"退款将原路退回至用户微信,且无法撤销,请确认后再操作。"})]}),e.jsxs(Dt,{children:[e.jsx(J,{variant:"outline",className:"border-gray-600 text-gray-300",onClick:()=>R(null),disabled:ne,children:"取消"}),e.jsx(J,{className:"bg-orange-500 hover:bg-orange-600 text-white",onClick:U,disabled:ne,children:ne?"退款中...":"确认退款"})]})]})})]})}var x2=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],p2=x2.reduce((r,a)=>{const l=Xx(`Primitive.${a}`),o=h.forwardRef((c,u)=>{const{asChild:m,...f}=c,p=m?l:a;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),e.jsx(p,{...f,ref:u})});return o.displayName=`Primitive.${a}`,{...r,[a]:o}},{}),g2="Label",Vp=h.forwardRef((r,a)=>e.jsx(p2.label,{...r,ref:a,onMouseDown:l=>{var c;l.target.closest("button, input, select, textarea")||((c=r.onMouseDown)==null||c.call(r,l),!l.defaultPrevented&&l.detail>1&&l.preventDefault())}}));Vp.displayName=g2;var Wp=Vp;const te=h.forwardRef(({className:r,...a},l)=>e.jsx(Wp,{ref:l,className:lt("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",r),...a}));te.displayName=Wp.displayName;function _u(r){const a=r+"CollectionProvider",[l,o]=yn(a),[c,u]=l(a,{collectionRef:{current:null},itemMap:new Map}),m=w=>{const{scope:N,children:b}=w,S=en.useRef(null),j=en.useRef(new Map).current;return e.jsx(c,{scope:N,itemMap:j,collectionRef:S,children:b})};m.displayName=a;const f=r+"CollectionSlot",p=Dl(f),y=en.forwardRef((w,N)=>{const{scope:b,children:S}=w,j=u(f,b),_=at(N,j.collectionRef);return e.jsx(p,{ref:_,children:S})});y.displayName=f;const g=r+"CollectionItemSlot",v="data-radix-collection-item",k=Dl(g),P=en.forwardRef((w,N)=>{const{scope:b,children:S,...j}=w,_=en.useRef(null),O=at(N,_),V=u(g,b);return en.useEffect(()=>(V.itemMap.set(_,{ref:_,...j}),()=>void V.itemMap.delete(_))),e.jsx(k,{[v]:"",ref:O,children:S})});P.displayName=g;function T(w){const N=u(r+"CollectionConsumer",w);return en.useCallback(()=>{const S=N.collectionRef.current;if(!S)return[];const j=Array.from(S.querySelectorAll(`[${v}]`));return Array.from(N.itemMap.values()).sort((V,I)=>j.indexOf(V.ref.current)-j.indexOf(I.ref.current))},[N.collectionRef,N.itemMap])}return[{Provider:m,Slot:y,ItemSlot:P},T,o]}var y2=h.createContext(void 0);function Eo(r){const a=h.useContext(y2);return r||a||"ltr"}var Od="rovingFocusGroup.onEntryFocus",v2={bubbles:!1,cancelable:!0},zl="RovingFocusGroup",[tu,Hp,j2]=_u(zl),[b2,Kp]=yn(zl,[j2]),[N2,w2]=b2(zl),Gp=h.forwardRef((r,a)=>e.jsx(tu.Provider,{scope:r.__scopeRovingFocusGroup,children:e.jsx(tu.Slot,{scope:r.__scopeRovingFocusGroup,children:e.jsx(S2,{...r,ref:a})})}));Gp.displayName=zl;var S2=h.forwardRef((r,a)=>{const{__scopeRovingFocusGroup:l,orientation:o,loop:c=!1,dir:u,currentTabStopId:m,defaultCurrentTabStopId:f,onCurrentTabStopIdChange:p,onEntryFocus:y,preventScrollOnEntryFocus:g=!1,...v}=r,k=h.useRef(null),P=at(a,k),T=Eo(u),[w,N]=Un({prop:m,defaultProp:f??null,onChange:p,caller:zl}),[b,S]=h.useState(!1),j=hn(y),_=Hp(l),O=h.useRef(!1),[V,I]=h.useState(0);return h.useEffect(()=>{const R=k.current;if(R)return R.addEventListener(Od,j),()=>R.removeEventListener(Od,j)},[j]),e.jsx(N2,{scope:l,orientation:o,dir:T,loop:c,currentTabStopId:w,onItemFocus:h.useCallback(R=>N(R),[N]),onItemShiftTab:h.useCallback(()=>S(!0),[]),onFocusableItemAdd:h.useCallback(()=>I(R=>R+1),[]),onFocusableItemRemove:h.useCallback(()=>I(R=>R-1),[]),children:e.jsx(Xe.div,{tabIndex:b||V===0?-1:0,"data-orientation":o,...v,ref:P,style:{outline:"none",...r.style},onMouseDown:Qe(r.onMouseDown,()=>{O.current=!0}),onFocus:Qe(r.onFocus,R=>{const E=!O.current;if(R.target===R.currentTarget&&E&&!b){const Y=new CustomEvent(Od,v2);if(R.currentTarget.dispatchEvent(Y),!Y.defaultPrevented){const ne=_().filter(ie=>ie.focusable),ae=ne.find(ie=>ie.active),q=ne.find(ie=>ie.id===w),H=[ae,q,...ne].filter(Boolean).map(ie=>ie.ref.current);qp(H,g)}}O.current=!1}),onBlur:Qe(r.onBlur,()=>S(!1))})})}),Yp="RovingFocusGroupItem",Qp=h.forwardRef((r,a)=>{const{__scopeRovingFocusGroup:l,focusable:o=!0,active:c=!1,tabStopId:u,children:m,...f}=r,p=dn(),y=u||p,g=w2(Yp,l),v=g.currentTabStopId===y,k=Hp(l),{onFocusableItemAdd:P,onFocusableItemRemove:T,currentTabStopId:w}=g;return h.useEffect(()=>{if(o)return P(),()=>T()},[o,P,T]),e.jsx(tu.ItemSlot,{scope:l,id:y,focusable:o,active:c,children:e.jsx(Xe.span,{tabIndex:v?0:-1,"data-orientation":g.orientation,...f,ref:a,onMouseDown:Qe(r.onMouseDown,N=>{o?g.onItemFocus(y):N.preventDefault()}),onFocus:Qe(r.onFocus,()=>g.onItemFocus(y)),onKeyDown:Qe(r.onKeyDown,N=>{if(N.key==="Tab"&&N.shiftKey){g.onItemShiftTab();return}if(N.target!==N.currentTarget)return;const b=E2(N,g.orientation,g.dir);if(b!==void 0){if(N.metaKey||N.ctrlKey||N.altKey||N.shiftKey)return;N.preventDefault();let j=k().filter(_=>_.focusable).map(_=>_.ref.current);if(b==="last")j.reverse();else if(b==="prev"||b==="next"){b==="prev"&&j.reverse();const _=j.indexOf(N.currentTarget);j=g.loop?P2(j,_+1):j.slice(_+1)}setTimeout(()=>qp(j))}}),children:typeof m=="function"?m({isCurrentTabStop:v,hasTabStop:w!=null}):m})})});Qp.displayName=Yp;var C2={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function k2(r,a){return a!=="rtl"?r:r==="ArrowLeft"?"ArrowRight":r==="ArrowRight"?"ArrowLeft":r}function E2(r,a,l){const o=k2(r.key,l);if(!(a==="vertical"&&["ArrowLeft","ArrowRight"].includes(o))&&!(a==="horizontal"&&["ArrowUp","ArrowDown"].includes(o)))return C2[o]}function qp(r,a=!1){const l=document.activeElement;for(const o of r)if(o===l||(o.focus({preventScroll:a}),document.activeElement!==l))return}function P2(r,a){return r.map((l,o)=>r[(a+o)%r.length])}var T2=Gp,R2=Qp,Po="Tabs",[I2]=yn(Po,[Kp]),Xp=Kp(),[_2,Mu]=I2(Po),Jp=h.forwardRef((r,a)=>{const{__scopeTabs:l,value:o,onValueChange:c,defaultValue:u,orientation:m="horizontal",dir:f,activationMode:p="automatic",...y}=r,g=Eo(f),[v,k]=Un({prop:o,onChange:c,defaultProp:u??"",caller:Po});return e.jsx(_2,{scope:l,baseId:dn(),value:v,onValueChange:k,orientation:m,dir:g,activationMode:p,children:e.jsx(Xe.div,{dir:g,"data-orientation":m,...y,ref:a})})});Jp.displayName=Po;var Zp="TabsList",e0=h.forwardRef((r,a)=>{const{__scopeTabs:l,loop:o=!0,...c}=r,u=Mu(Zp,l),m=Xp(l);return e.jsx(T2,{asChild:!0,...m,orientation:u.orientation,dir:u.dir,loop:o,children:e.jsx(Xe.div,{role:"tablist","aria-orientation":u.orientation,...c,ref:a})})});e0.displayName=Zp;var t0="TabsTrigger",s0=h.forwardRef((r,a)=>{const{__scopeTabs:l,value:o,disabled:c=!1,...u}=r,m=Mu(t0,l),f=Xp(l),p=a0(m.baseId,o),y=l0(m.baseId,o),g=o===m.value;return e.jsx(R2,{asChild:!0,...f,focusable:!c,active:g,children:e.jsx(Xe.button,{type:"button",role:"tab","aria-selected":g,"aria-controls":y,"data-state":g?"active":"inactive","data-disabled":c?"":void 0,disabled:c,id:p,...u,ref:a,onMouseDown:Qe(r.onMouseDown,v=>{!c&&v.button===0&&v.ctrlKey===!1?m.onValueChange(o):v.preventDefault()}),onKeyDown:Qe(r.onKeyDown,v=>{[" ","Enter"].includes(v.key)&&m.onValueChange(o)}),onFocus:Qe(r.onFocus,()=>{const v=m.activationMode!=="manual";!g&&!c&&v&&m.onValueChange(o)})})})});s0.displayName=t0;var r0="TabsContent",n0=h.forwardRef((r,a)=>{const{__scopeTabs:l,value:o,forceMount:c,children:u,...m}=r,f=Mu(r0,l),p=a0(f.baseId,o),y=l0(f.baseId,o),g=o===f.value,v=h.useRef(g);return h.useEffect(()=>{const k=requestAnimationFrame(()=>v.current=!1);return()=>cancelAnimationFrame(k)},[]),e.jsx(Fl,{present:c||g,children:({present:k})=>e.jsx(Xe.div,{"data-state":g?"active":"inactive","data-orientation":f.orientation,role:"tabpanel","aria-labelledby":p,hidden:!k,id:y,tabIndex:0,...m,ref:a,style:{...r.style,animationDuration:v.current?"0s":void 0},children:k&&u})})});n0.displayName=r0;function a0(r,a){return`${r}-trigger-${a}`}function l0(r,a){return`${r}-content-${a}`}var M2=Jp,i0=e0,o0=s0,c0=n0;const $l=M2,$a=h.forwardRef(({className:r,...a},l)=>e.jsx(i0,{ref:l,className:lt("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",r),...a}));$a.displayName=i0.displayName;const Lt=h.forwardRef(({className:r,...a},l)=>e.jsx(o0,{ref:l,className:lt("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",r),...a}));Lt.displayName=o0.displayName;const Ot=h.forwardRef(({className:r,...a},l)=>e.jsx(c0,{ref:l,className:lt("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",r),...a}));Ot.displayName=c0.displayName;function Au(r){const a=h.useRef({value:r,previous:r});return h.useMemo(()=>(a.current.value!==r&&(a.current.previous=a.current.value,a.current.value=r),a.current.previous),[r])}function Du(r){const[a,l]=h.useState(void 0);return Zt(()=>{if(r){l({width:r.offsetWidth,height:r.offsetHeight});const o=new ResizeObserver(c=>{if(!Array.isArray(c)||!c.length)return;const u=c[0];let m,f;if("borderBoxSize"in u){const p=u.borderBoxSize,y=Array.isArray(p)?p[0]:p;m=y.inlineSize,f=y.blockSize}else m=r.offsetWidth,f=r.offsetHeight;l({width:m,height:f})});return o.observe(r,{box:"border-box"}),()=>o.unobserve(r)}else l(void 0)},[r]),a}var To="Switch",[A2]=yn(To),[D2,L2]=A2(To),d0=h.forwardRef((r,a)=>{const{__scopeSwitch:l,name:o,checked:c,defaultChecked:u,required:m,disabled:f,value:p="on",onCheckedChange:y,form:g,...v}=r,[k,P]=h.useState(null),T=at(a,j=>P(j)),w=h.useRef(!1),N=k?g||!!k.closest("form"):!0,[b,S]=Un({prop:c,defaultProp:u??!1,onChange:y,caller:To});return e.jsxs(D2,{scope:l,checked:b,disabled:f,children:[e.jsx(Xe.button,{type:"button",role:"switch","aria-checked":b,"aria-required":m,"data-state":f0(b),"data-disabled":f?"":void 0,disabled:f,value:p,...v,ref:T,onClick:Qe(r.onClick,j=>{S(_=>!_),N&&(w.current=j.isPropagationStopped(),w.current||j.stopPropagation())})}),N&&e.jsx(m0,{control:k,bubbles:!w.current,name:o,value:p,checked:b,required:m,disabled:f,form:g,style:{transform:"translateX(-100%)"}})]})});d0.displayName=To;var u0="SwitchThumb",h0=h.forwardRef((r,a)=>{const{__scopeSwitch:l,...o}=r,c=L2(u0,l);return e.jsx(Xe.span,{"data-state":f0(c.checked),"data-disabled":c.disabled?"":void 0,...o,ref:a})});h0.displayName=u0;var O2="SwitchBubbleInput",m0=h.forwardRef(({__scopeSwitch:r,control:a,checked:l,bubbles:o=!0,...c},u)=>{const m=h.useRef(null),f=at(m,u),p=Au(l),y=Du(a);return h.useEffect(()=>{const g=m.current;if(!g)return;const v=window.HTMLInputElement.prototype,P=Object.getOwnPropertyDescriptor(v,"checked").set;if(p!==l&&P){const T=new Event("click",{bubbles:o});P.call(g,l),g.dispatchEvent(T)}},[p,l,o]),e.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:l,...c,tabIndex:-1,ref:f,style:{...c.style,...y,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});m0.displayName=O2;function f0(r){return r?"checked":"unchecked"}var x0=d0,F2=h0;const ot=h.forwardRef(({className:r,...a},l)=>e.jsx(x0,{className:lt("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#38bdac] focus-visible:ring-offset-2 focus-visible:ring-offset-[#0a1628] disabled:cursor-not-allowed disabled:opacity-50 data-[state=unchecked]:bg-gray-600 data-[state=checked]:bg-[#38bdac]",r),...a,ref:l,children:e.jsx(F2,{className:lt("pointer-events-none block h-4 w-4 rounded-full bg-white shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));ot.displayName=x0.displayName;const un=h.forwardRef(({className:r,...a},l)=>e.jsx("textarea",{className:lt("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",r),ref:l,...a}));un.displayName="Textarea";function p0({open:r,onClose:a,userId:l,onUserUpdated:o}){var ze;const[c,u]=h.useState(null),[m,f]=h.useState([]),[p,y]=h.useState([]),[g,v]=h.useState(!1),[k,P]=h.useState(!1),[T,w]=h.useState(!1),[N,b]=h.useState("info"),[S,j]=h.useState(""),[_,O]=h.useState(""),[V,I]=h.useState([]),[R,E]=h.useState(""),[Y,ne]=h.useState(!1),[ae,q]=h.useState(null),[se,H]=h.useState(null),[ie,ve]=h.useState(""),[U,ce]=h.useState(""),[K,A]=h.useState(""),[F,L]=h.useState(!1),[Z,G]=h.useState(null),[de,Q]=h.useState("");h.useEffect(()=>{r&&l&&(b("info"),q(null),H(null),G(null),Q(""),ge())},[r,l]);async function ge(){if(l){v(!0);try{const he=await Be(`/api/db/users?id=${encodeURIComponent(l)}`);if(he!=null&&he.success&&he.user){const xe=he.user;u(xe),j(xe.phone||""),O(xe.nickname||""),ve(xe.phone||""),ce(xe.wechatId||""),A(xe.openId||"");try{I(typeof xe.tags=="string"?JSON.parse(xe.tags||"[]"):[])}catch{I([])}}try{const xe=await Be(`/api/user/track?userId=${encodeURIComponent(l)}&limit=50`);xe!=null&&xe.success&&xe.tracks&&f(xe.tracks)}catch{f([])}try{const xe=await Be(`/api/db/users/referrals?userId=${encodeURIComponent(l)}`);xe!=null&&xe.success&&xe.referrals&&y(xe.referrals)}catch{y([])}}catch(he){console.error("Load user detail error:",he)}finally{v(!1)}}}async function Se(){if(!(c!=null&&c.phone)){alert("用户未绑定手机号,无法同步");return}P(!0);try{const he=await mt("/api/ckb/sync",{action:"full_sync",phone:c.phone,userId:c.id});he!=null&&he.success?(alert("同步成功"),ge()):alert("同步失败: "+(he==null?void 0:he.error))}catch(he){console.error("Sync CKB error:",he),alert("同步失败")}finally{P(!1)}}async function D(){if(c){w(!0);try{const he={id:c.id,phone:S||void 0,nickname:_||void 0,tags:JSON.stringify(V)},xe=await vt("/api/db/users",he);xe!=null&&xe.success?(alert("保存成功"),ge(),o==null||o()):alert("保存失败: "+(xe==null?void 0:xe.error))}catch(he){console.error("Save user error:",he),alert("保存失败")}finally{w(!1)}}}const fe=()=>{R&&!V.includes(R)&&(I([...V,R]),E(""))},ke=he=>I(V.filter(xe=>xe!==he));async function Ve(){if(!ie&&!K&&!U){H("请至少输入手机号、微信号或 OpenID 中的一项");return}ne(!0),H(null),q(null);try{const he=new URLSearchParams;ie&&he.set("phone",ie),K&&he.set("openId",K),U&&he.set("wechatId",U);const xe=await Be(`/api/admin/shensheshou/query?${he}`);xe!=null&&xe.success&&xe.data?(q(xe.data),c&&await We(xe.data)):H((xe==null?void 0:xe.error)||"未查询到数据,该用户可能未在神射手收录")}catch(he){console.error("SSS query error:",he),H("请求失败,请检查神射手接口配置")}finally{ne(!1)}}async function We(he){if(c)try{await mt("/api/admin/shensheshou/enrich",{userId:c.id,phone:ie||c.phone||"",openId:K||c.openId||"",wechatId:U||c.wechatId||""}),ge()}catch(xe){console.error("SSS enrich error:",xe)}}async function Ye(){if(c){L(!0),G(null);try{const he={users:[{phone:c.phone||"",name:c.nickname||"",openId:c.openId||"",tags:V}]},xe=await mt("/api/admin/shensheshou/ingest",he);xe!=null&&xe.success&&xe.data?G(xe.data):G({error:(xe==null?void 0:xe.error)||"推送失败"})}catch(he){console.error("SSS ingest error:",he),G({error:"请求失败"})}finally{L(!1)}}}const tt=he=>{const ft={view_chapter:qs,purchase:qd,match:Yt,login:Ra,register:Ra,share:on,bind_phone:Jb,bind_wechat:Wb,fill_profile:Ed,visit_page:Pa}[he]||Yd;return e.jsx(ft,{className:"w-4 h-4"})};return r?e.jsx(Ct,{open:r,onOpenChange:()=>a(),children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-4xl max-h-[90vh] overflow-hidden",children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(Ra,{className:"w-5 h-5 text-[#38bdac]"}),"用户详情",(c==null?void 0:c.phone)&&e.jsx(Le,{className:"bg-green-500/20 text-green-400 border-0 ml-2",children:"已绑定手机"}),(c==null?void 0:c.isVip)&&e.jsx(Le,{className:"bg-amber-500/20 text-amber-400 border-0",children:"VIP"})]})}),g?e.jsxs("div",{className:"flex items-center justify-center py-20",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):c?e.jsxs("div",{className:"flex flex-col h-[75vh]",children:[e.jsxs("div",{className:"flex items-center gap-4 p-4 bg-[#0a1628] rounded-lg mb-3",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-2xl text-[#38bdac] shrink-0",children:c.avatar?e.jsx("img",{src:c.avatar,className:"w-full h-full rounded-full object-cover",alt:""}):((ze=c.nickname)==null?void 0:ze.charAt(0))||"?"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("h3",{className:"text-lg font-bold text-white",children:c.nickname}),c.isAdmin&&e.jsx(Le,{className:"bg-purple-500/20 text-purple-400 border-0",children:"管理员"}),c.hasFullBook&&e.jsx(Le,{className:"bg-green-500/20 text-green-400 border-0",children:"全书已购"}),c.vipRole&&e.jsx(Le,{className:"bg-amber-500/20 text-amber-400 border-0",children:c.vipRole})]}),e.jsxs("p",{className:"text-gray-400 text-sm mt-1",children:[c.phone?`📱 ${c.phone}`:"未绑定手机",c.wechatId&&` · 💬 ${c.wechatId}`,c.mbti&&` · ${c.mbti}`]}),e.jsxs("div",{className:"flex items-center gap-4 mt-1",children:[e.jsxs("p",{className:"text-gray-600 text-xs",children:["ID: ",c.id.slice(0,16),"…"]}),c.referralCode&&e.jsxs("p",{className:"text-xs",children:[e.jsx("span",{className:"text-gray-500",children:"推广码:"}),e.jsx("code",{className:"text-[#38bdac] bg-[#38bdac]/10 px-1.5 py-0.5 rounded",children:c.referralCode})]})]})]}),e.jsxs("div",{className:"text-right shrink-0",children:[e.jsxs("p",{className:"text-[#38bdac] font-bold text-lg",children:["¥",(c.earnings||0).toFixed(2)]}),e.jsx("p",{className:"text-gray-500 text-xs",children:"累计收益"})]})]}),e.jsxs($l,{value:N,onValueChange:b,className:"flex-1 flex flex-col overflow-hidden",children:[e.jsxs($a,{className:"bg-[#0a1628] border border-gray-700/50 p-1 mb-3 flex-wrap h-auto gap-1",children:[e.jsx(Lt,{value:"info",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-xs",children:"基础信息"}),e.jsx(Lt,{value:"tags",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-xs",children:"标签体系"}),e.jsxs(Lt,{value:"journey",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-xs",children:[e.jsx(Pa,{className:"w-3 h-3 mr-1"}),"用户旅程"]}),e.jsx(Lt,{value:"relations",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-xs",children:"关系链路"}),e.jsxs(Lt,{value:"shensheshou",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-xs",children:[e.jsx(an,{className:"w-3 h-3 mr-1"}),"用户资料完善"]})]}),e.jsxs(Ot,{value:"info",className:"flex-1 overflow-auto space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"手机号"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"输入手机号",value:S,onChange:he=>j(he.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"昵称"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"输入昵称",value:_,onChange:he=>O(he.target.value)})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3 text-sm",children:[c.openId&&e.jsxs("div",{className:"p-3 bg-[#0a1628] rounded-lg",children:[e.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"微信 OpenID"}),e.jsx("p",{className:"text-gray-300 font-mono text-xs break-all",children:c.openId})]}),c.region&&e.jsxs("div",{className:"p-3 bg-[#0a1628] rounded-lg flex items-center gap-2",children:[e.jsx(Yx,{className:"w-4 h-4 text-gray-500"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-500 text-xs",children:"地区"}),e.jsx("p",{className:"text-white",children:c.region})]})]}),c.industry&&e.jsxs("div",{className:"p-3 bg-[#0a1628] rounded-lg",children:[e.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"行业"}),e.jsx("p",{className:"text-white",children:c.industry})]}),c.position&&e.jsxs("div",{className:"p-3 bg-[#0a1628] rounded-lg",children:[e.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"职位"}),e.jsx("p",{className:"text-white",children:c.position})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"推荐人数"}),e.jsx("p",{className:"text-2xl font-bold text-white",children:c.referralCount??0})]}),e.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"待提现"}),e.jsxs("p",{className:"text-2xl font-bold text-yellow-400",children:["¥",(c.pendingEarnings??0).toFixed(2)]})]}),e.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"创建时间"}),e.jsx("p",{className:"text-sm text-white",children:c.createdAt?new Date(c.createdAt).toLocaleDateString():"-"})]})]}),c.isVip&&e.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg border border-amber-500/20",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(rn,{className:"w-4 h-4 text-amber-400"}),e.jsx("span",{className:"text-white font-medium",children:"VIP 信息"}),e.jsx(Le,{className:"bg-amber-500/20 text-amber-400 border-0 text-xs",children:c.vipRole||"VIP"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3 text-sm",children:[c.vipName&&e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-500",children:"展示名:"}),e.jsx("span",{className:"text-white",children:c.vipName})]}),c.vipProject&&e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-500",children:"项目:"}),e.jsx("span",{className:"text-white",children:c.vipProject})]}),c.vipContact&&e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-500",children:"联系方式:"}),e.jsx("span",{className:"text-white",children:c.vipContact})]}),c.vipExpireDate&&e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-500",children:"到期时间:"}),e.jsx("span",{className:"text-white",children:new Date(c.vipExpireDate).toLocaleDateString()})]})]}),c.vipBio&&e.jsx("p",{className:"text-gray-400 text-sm mt-2",children:c.vipBio})]}),e.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg border border-purple-500/20",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(Al,{className:"w-4 h-4 text-purple-400"}),e.jsx("span",{className:"text-white font-medium",children:"微信归属"}),e.jsx("span",{className:"text-gray-500 text-xs",children:"该用户归属在哪个微信号下"})]}),e.jsxs("div",{className:"flex gap-2 items-center",children:[e.jsx(le,{className:"bg-[#162840] border-gray-700 text-white flex-1",placeholder:"输入归属微信号(如 wxid_xxxx)",value:de,onChange:he=>Q(he.target.value)}),e.jsxs(J,{size:"sm",onClick:async()=>{if(!(!de||!c))try{await vt("/api/db/users",{id:c.id,wechatId:de}),alert("已保存微信归属"),ge()}catch{alert("保存失败")}},className:"bg-purple-500/20 hover:bg-purple-500/30 text-purple-400 border border-purple-500/30 shrink-0",children:[e.jsx(Mt,{className:"w-4 h-4 mr-1"})," 保存"]})]}),c.wechatId&&e.jsxs("p",{className:"text-gray-500 text-xs mt-2",children:["当前归属:",e.jsx("span",{className:"text-purple-400",children:c.wechatId})]})]}),e.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(on,{className:"w-4 h-4 text-[#38bdac]"}),e.jsx("span",{className:"text-white font-medium",children:"存客宝同步"})]}),e.jsx(J,{size:"sm",onClick:Se,disabled:k||!c.phone,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:k?e.jsxs(e.Fragment,{children:[e.jsx($e,{className:"w-4 h-4 mr-1 animate-spin"})," 同步中..."]}):e.jsxs(e.Fragment,{children:[e.jsx($e,{className:"w-4 h-4 mr-1"})," 同步数据"]})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-500",children:"同步状态:"}),c.ckbSyncedAt?e.jsx(Le,{className:"bg-green-500/20 text-green-400 border-0 ml-1",children:"已同步"}):e.jsx(Le,{className:"bg-gray-500/20 text-gray-400 border-0 ml-1",children:"未同步"})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-500",children:"最后同步:"}),e.jsx("span",{className:"text-gray-300 ml-1",children:c.ckbSyncedAt?new Date(c.ckbSyncedAt).toLocaleString():"-"})]})]})]})]}),e.jsxs(Ot,{value:"tags",className:"flex-1 overflow-auto space-y-4",children:[e.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(Ed,{className:"w-4 h-4 text-[#38bdac]"}),e.jsx("span",{className:"text-white font-medium",children:"用户标签"}),e.jsx("span",{className:"text-gray-500 text-xs",children:"基于《一场 Soul 的创业实验》维度打标"})]}),e.jsxs("div",{className:"mb-3 p-2.5 bg-[#38bdac]/5 border border-[#38bdac]/20 rounded-lg flex items-center gap-2 text-xs text-gray-400",children:[e.jsx(Gd,{className:"w-3.5 h-3.5 text-[#38bdac] shrink-0"}),"命中的标签自动高亮 · 系统根据行为轨迹和填写资料自动打标 · 手动点击补充或取消"]}),e.jsx("div",{className:"mb-4 space-y-3",children:[{category:"身份类型",tags:["创业者","打工人","自由职业","学生","投资人","合伙人"]},{category:"行业背景",tags:["电商","内容","传统行业","科技/AI","金融","教育","餐饮"]},{category:"痛点标签",tags:["找资源","找方向","找合伙人","想赚钱","想学习","找情感出口"]},{category:"付费意愿",tags:["高意向","已付费","观望中","薅羊毛"]},{category:"MBTI",tags:["ENTJ","INTJ","ENFP","INFP","ENTP","INTP","ESTJ","ISFJ"]}].map(he=>e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-500 text-xs mb-1.5",children:he.category}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:he.tags.map(xe=>e.jsxs("button",{type:"button",onClick:()=>{V.includes(xe)?ke(xe):I([...V,xe])},className:`px-2 py-0.5 rounded text-xs border transition-all ${V.includes(xe)?"bg-[#38bdac]/20 border-[#38bdac]/50 text-[#38bdac]":"bg-transparent border-gray-700 text-gray-500 hover:border-gray-500 hover:text-gray-300"}`,children:[V.includes(xe)?"✓ ":"",xe]},xe))})]},he.category))}),e.jsxs("div",{className:"border-t border-gray-700/50 pt-3",children:[e.jsx("p",{className:"text-gray-500 text-xs mb-2",children:"已选标签"}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-3 min-h-[32px]",children:[V.map((he,xe)=>e.jsxs(Le,{className:"bg-[#38bdac]/20 text-[#38bdac] border-0 pr-1",children:[he,e.jsx("button",{type:"button",onClick:()=>ke(he),className:"ml-1 hover:text-red-400",children:e.jsx(ms,{className:"w-3 h-3"})})]},xe)),V.length===0&&e.jsx("span",{className:"text-gray-600 text-sm",children:"暂未选择标签"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(le,{className:"bg-[#162840] border-gray-700 text-white flex-1",placeholder:"自定义标签(回车添加)",value:R,onChange:he=>E(he.target.value),onKeyDown:he=>he.key==="Enter"&&fe()}),e.jsx(J,{onClick:fe,className:"bg-[#38bdac] hover:bg-[#2da396]",children:"添加"})]})]})]}),c.ckbTags&&e.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx(Ed,{className:"w-4 h-4 text-purple-400"}),e.jsx("span",{className:"text-white font-medium",children:"存客宝标签"})]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:(typeof c.ckbTags=="string"?c.ckbTags.split(","):[]).map((he,xe)=>e.jsx(Le,{className:"bg-purple-500/20 text-purple-400 border-0",children:he.trim()},xe))})]})]}),e.jsxs(Ot,{value:"journey",className:"flex-1 overflow-auto",children:[e.jsxs("div",{className:"mb-3 p-3 bg-[#0a1628] rounded-lg flex items-center gap-2",children:[e.jsx(Pa,{className:"w-4 h-4 text-[#38bdac]"}),e.jsxs("span",{className:"text-gray-400 text-sm",children:["记录用户从注册到付费的完整行动路径,共 ",m.length," 条记录"]})]}),e.jsx("div",{className:"space-y-2",children:m.length>0?m.map((he,xe)=>e.jsxs("div",{className:"flex items-start gap-3 p-3 bg-[#0a1628] rounded-lg",children:[e.jsxs("div",{className:"flex flex-col items-center",children:[e.jsx("div",{className:"w-8 h-8 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-[#38bdac]",children:tt(he.action)}),xe0?p.map((he,xe)=>{var es;const ft=he;return e.jsxs("div",{className:"flex items-center justify-between p-2 bg-[#162840] rounded",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-6 h-6 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-xs text-[#38bdac]",children:((es=ft.nickname)==null?void 0:es.charAt(0))||"?"}),e.jsx("span",{className:"text-white text-sm",children:ft.nickname})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[ft.status==="vip"&&e.jsx(Le,{className:"bg-green-500/20 text-green-400 border-0 text-xs",children:"已购"}),e.jsx("span",{className:"text-gray-500 text-xs",children:ft.createdAt?new Date(ft.createdAt).toLocaleDateString():""})]})]},ft.id||xe)}):e.jsx("p",{className:"text-gray-500 text-sm text-center py-4",children:"暂无推荐用户"})})]})}),e.jsxs(Ot,{value:"shensheshou",className:"flex-1 overflow-auto space-y-4",children:[e.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(an,{className:"w-5 h-5 text-[#38bdac]"}),e.jsx("span",{className:"text-white font-medium",children:"用户资料完善"}),e.jsx("span",{className:"text-gray-500 text-xs",children:"通过多维度查询神射手数据,自动回填用户基础信息"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 mb-3",children:[e.jsxs("div",{children:[e.jsx(te,{className:"text-gray-500 text-xs mb-1 block",children:"手机号"}),e.jsx(le,{className:"bg-[#162840] border-gray-700 text-white",placeholder:"11位手机号",value:ie,onChange:he=>ve(he.target.value)})]}),e.jsxs("div",{children:[e.jsx(te,{className:"text-gray-500 text-xs mb-1 block",children:"微信号"}),e.jsx(le,{className:"bg-[#162840] border-gray-700 text-white",placeholder:"微信 ID",value:U,onChange:he=>ce(he.target.value)})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx(te,{className:"text-gray-500 text-xs mb-1 block",children:"微信 OpenID"}),e.jsx(le,{className:"bg-[#162840] border-gray-700 text-white",placeholder:"openid_xxxx(自动填入)",value:K,onChange:he=>A(he.target.value)})]})]}),e.jsx(J,{onClick:Ve,disabled:Y,className:"w-full bg-[#38bdac] hover:bg-[#2da396] text-white",children:Y?e.jsxs(e.Fragment,{children:[e.jsx($e,{className:"w-4 h-4 mr-1 animate-spin"})," 查询并自动回填中..."]}):e.jsxs(e.Fragment,{children:[e.jsx(cn,{className:"w-4 h-4 mr-1"})," 查询并自动完善用户资料"]})}),e.jsx("p",{className:"text-gray-600 text-xs mt-2",children:"查询成功后,神射手返回的标签将自动同步到该用户"}),se&&e.jsx("div",{className:"mt-3 p-3 bg-red-500/10 border border-red-500/30 rounded-lg text-red-400 text-sm",children:se}),ae&&e.jsxs("div",{className:"mt-3 space-y-3",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{className:"p-3 bg-[#162840] rounded-lg",children:[e.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"神射手 RFM 分"}),e.jsx("p",{className:"text-2xl font-bold text-[#38bdac]",children:ae.rfm_score??"-"})]}),e.jsxs("div",{className:"p-3 bg-[#162840] rounded-lg",children:[e.jsx("p",{className:"text-gray-500 text-xs mb-1",children:"用户等级"}),e.jsx("p",{className:"text-2xl font-bold text-white",children:ae.user_level??"-"})]})]}),ae.tags&&ae.tags.length>0&&e.jsxs("div",{className:"p-3 bg-[#162840] rounded-lg",children:[e.jsx("p",{className:"text-gray-500 text-xs mb-2",children:"神射手标签"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:ae.tags.map((he,xe)=>e.jsx(Le,{className:"bg-[#38bdac]/10 text-[#38bdac] border border-[#38bdac]/20",children:he},xe))})]}),ae.last_active&&e.jsxs("div",{className:"text-sm text-gray-500",children:["最近活跃:",ae.last_active]})]})]}),e.jsxs("div",{className:"p-4 bg-[#0a1628] rounded-lg",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(an,{className:"w-4 h-4 text-purple-400"}),e.jsx("span",{className:"text-white font-medium",children:"推送用户数据到神射手"})]}),e.jsx("p",{className:"text-gray-500 text-xs",children:"将本用户信息(手机号、昵称、标签等)同步至神射手,自动完善用户画像"})]}),e.jsx(J,{onClick:Ye,disabled:F||!c.phone,variant:"outline",className:"border-purple-500/40 text-purple-400 hover:bg-purple-500/10 bg-transparent shrink-0 ml-4",children:F?e.jsxs(e.Fragment,{children:[e.jsx($e,{className:"w-4 h-4 mr-1 animate-spin"})," 推送中"]}):e.jsxs(e.Fragment,{children:[e.jsx(an,{className:"w-4 h-4 mr-1"})," 推送"]})})]}),!c.phone&&e.jsx("p",{className:"text-yellow-500/70 text-xs",children:"⚠ 用户未绑定手机号,无法推送"}),Z&&e.jsx("div",{className:"mt-3 p-3 bg-[#162840] rounded-lg text-sm",children:Z.error?e.jsx("p",{className:"text-red-400",children:String(Z.error)}):e.jsxs("div",{className:"space-y-1",children:[e.jsxs("p",{className:"text-green-400 flex items-center gap-1",children:[e.jsx(Gd,{className:"w-4 h-4"})," 推送成功"]}),Z.enriched!==void 0&&e.jsxs("p",{className:"text-gray-400",children:["自动补全标签数:",String(Z.new_tags_added??0)]})]})})]})]})]}),e.jsxs("div",{className:"flex justify-end gap-2 pt-3 border-t border-gray-700 mt-3",children:[e.jsxs(J,{variant:"outline",onClick:a,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx(ms,{className:"w-4 h-4 mr-2"}),"关闭"]}),e.jsxs(J,{onClick:D,disabled:T,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),T?"保存中...":"保存修改"]})]})]}):e.jsx("div",{className:"text-center py-12 text-gray-500",children:"用户不存在"})]})}):null}const Fd={isVip:!1,vipExpireDate:"",vipSort:"",vipRole:"",vipRoleCustom:"",vipName:"",vipProject:"",vipContact:"",vipBio:""};function z2({open:r,onClose:a,userId:l,userNickname:o="",onSaved:c}){const[u,m]=h.useState(Fd),[f,p]=h.useState([]),[y,g]=h.useState(!1),[v,k]=h.useState(!1);h.useEffect(()=>{if(!r){m(Fd);return}let T=!1;return g(!0),Promise.all([Be("/api/db/vip-roles"),l?Be(`/api/db/users?id=${encodeURIComponent(l)}`):Promise.resolve(null)]).then(([w,N])=>{if(T)return;const b=w!=null&&w.success&&w.data?w.data:[];p(b);const S=N&&N.user?N.user:null;if(S){const j=String(S.vipRole??""),_=b.some(O=>O.name===j);m({isVip:!!(S.isVip??!1),vipExpireDate:S.vipExpireDate?String(S.vipExpireDate).slice(0,10):"",vipSort:typeof S.vipSort=="number"?S.vipSort:"",vipRole:_?j:j?"__custom__":"",vipRoleCustom:_?"":j,vipName:String(S.vipName??""),vipProject:String(S.vipProject??""),vipContact:String(S.vipContact??""),vipBio:String(S.vipBio??"")})}else m(Fd)}).catch(w=>{T||console.error("Load error:",w)}).finally(()=>{T||g(!1)}),()=>{T=!0}},[r,l]);async function P(){if(l){if(u.isVip&&!u.vipExpireDate.trim()){alert("开启 VIP 时请填写有效到期日");return}if(u.isVip&&u.vipExpireDate.trim()){const T=new Date(u.vipExpireDate);if(isNaN(T.getTime())){alert("到期日格式无效,请使用 YYYY-MM-DD");return}}k(!0);try{const T=u.vipRole==="__custom__"?u.vipRoleCustom.trim():u.vipRole,w={id:l,isVip:u.isVip,vipExpireDate:u.isVip?u.vipExpireDate:void 0,vipSort:u.vipSort===""?void 0:u.vipSort,vipRole:T||void 0,vipName:u.vipName||void 0,vipProject:u.vipProject||void 0,vipContact:u.vipContact||void 0,vipBio:u.vipBio||void 0},N=await vt("/api/db/users",w);N!=null&&N.success?(alert("VIP 设置已保存"),c==null||c(),a()):alert("保存失败: "+(N==null?void 0:N.error))}catch(T){console.error("Save VIP error:",T),alert("保存失败")}finally{k(!1)}}}return r?e.jsx(Ct,{open:r,onOpenChange:()=>a(),children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(rn,{className:"w-5 h-5 text-amber-400"}),"设置 VIP - ",o||l]})}),y?e.jsx("div",{className:"py-8 text-center text-gray-400",children:"加载中..."}):e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(te,{className:"text-gray-300",children:"VIP 会员"}),e.jsx(ot,{checked:u.isVip,onCheckedChange:T=>m(w=>({...w,isVip:T}))})]}),u.isVip&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{className:"text-gray-300",children:["到期日 (YYYY-MM-DD) ",e.jsx("span",{className:"text-amber-400",children:"*"})]}),e.jsx(le,{type:"date",className:"bg-[#0a1628] border-gray-700 text-white",value:u.vipExpireDate,onChange:T=>m(w=>({...w,vipExpireDate:T.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"排序"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"数字越小越靠前,留空按时间",value:u.vipSort===""?"":u.vipSort,onChange:T=>{const w=T.target.value;m(N=>({...N,vipSort:w===""?"":parseInt(w,10)||0}))}})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"角色"}),e.jsxs("select",{className:"w-full bg-[#0a1628] border border-gray-700 text-white rounded-md px-3 py-2",value:u.vipRole,onChange:T=>m(w=>({...w,vipRole:T.target.value})),children:[e.jsx("option",{value:"",children:"请选择或下方手动填写"}),f.map(T=>e.jsx("option",{value:T.name,children:T.name},T.id)),e.jsx("option",{value:"__custom__",children:"其他(手动填写)"})]}),u.vipRole==="__custom__"&&e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white mt-1",placeholder:"输入自定义角色",value:u.vipRoleCustom,onChange:T=>m(w=>({...w,vipRoleCustom:T.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"VIP 展示名"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"创业老板排行展示名",value:u.vipName,onChange:T=>m(w=>({...w,vipName:T.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"项目/公司"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"项目名称",value:u.vipProject,onChange:T=>m(w=>({...w,vipProject:T.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"联系方式"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"微信号或手机",value:u.vipContact,onChange:T=>m(w=>({...w,vipContact:T.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"一句话简介"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"简要描述业务",value:u.vipBio,onChange:T=>m(w=>({...w,vipBio:T.target.value}))})]})]}),e.jsxs(Dt,{children:[e.jsxs(J,{variant:"outline",onClick:a,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx(ms,{className:"w-4 h-4 mr-2"}),"取消"]}),e.jsxs(J,{onClick:P,disabled:v||y,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),v?"保存中...":"保存"]})]})]})}):null}const so=[{id:"register",label:"注册/登录",icon:"👤",color:"bg-blue-500/20 border-blue-500/40 text-blue-400",desc:"微信授权登录或手机号注册"},{id:"browse",label:"浏览章节",icon:"📖",color:"bg-purple-500/20 border-purple-500/40 text-purple-400",desc:"点击免费/付费章节预览"},{id:"bind_phone",label:"绑定手机",icon:"📱",color:"bg-cyan-500/20 border-cyan-500/40 text-cyan-400",desc:"触发付费章节后绑定手机"},{id:"first_pay",label:"首次付款",icon:"💳",color:"bg-green-500/20 border-green-500/40 text-green-400",desc:"购买单章或全书"},{id:"fill_profile",label:"完善资料",icon:"✍️",color:"bg-yellow-500/20 border-yellow-500/40 text-yellow-400",desc:"填写头像、MBTI、行业等"},{id:"match",label:"派对房匹配",icon:"🤝",color:"bg-orange-500/20 border-orange-500/40 text-orange-400",desc:"参与 Soul 派对房"},{id:"vip",label:"升级 VIP",icon:"👑",color:"bg-amber-500/20 border-amber-500/40 text-amber-400",desc:"付款 ¥1980 购买全书"},{id:"distribution",label:"开启分销",icon:"🔗",color:"bg-[#38bdac]/20 border-[#38bdac]/40 text-[#38bdac]",desc:"生成推广码并推荐好友"}];function $2(){var as,En,er,xr,Pt;const[r,a]=$x(),l=r.get("pool"),[o,c]=h.useState([]),[u,m]=h.useState(0),[f,p]=h.useState(1),[y,g]=h.useState(10),[v,k]=h.useState(""),P=Iu(v,300),T=l==="vip"?"vip":l==="complete"?"complete":"all",[w,N]=h.useState(T),[b,S]=h.useState(!0),[j,_]=h.useState(null),[O,V]=h.useState(!1),[I,R]=h.useState("desc");h.useEffect(()=>{l==="vip"?N("vip"):l==="complete"?N("complete"):l==="all"&&N("all")},[l]);const[E,Y]=h.useState(!1),[ne,ae]=h.useState(!1),[q,se]=h.useState(null),[H,ie]=h.useState(""),[ve,U]=h.useState(""),[ce,K]=h.useState(!1),[A,F]=h.useState(!1),[L,Z]=h.useState({referrals:[],stats:{}}),[G,de]=h.useState(!1),[Q,ge]=h.useState(null),[Se,D]=h.useState(!1),[fe,ke]=h.useState(null),[Ve,We]=h.useState(!1),[Ye,tt]=h.useState(null),[ze,he]=h.useState({phone:"",nickname:"",password:"",isAdmin:!1,hasFullBook:!1}),[xe,ft]=h.useState([]),[es,hr]=h.useState(!1),[bn,As]=h.useState(!1),[Bt,_r]=h.useState(null),[ct,gs]=h.useState({title:"",description:"",trigger:"",sort:0,enabled:!0}),[Nn,mr]=h.useState([]),[Cs,Gn]=h.useState(!1),[Yn,ks]=h.useState(!1),[wn,fr]=h.useState(null),[ys,Ds]=h.useState({name:"",sort:0}),[Ls,Sn]=h.useState({}),[Es,Os]=h.useState(!1);async function Fs(){var $;S(!0),_(null);try{if(O){const He=new URLSearchParams({search:P,limit:String(y*5)}),Je=await Be(`/api/db/users/rfm?${He}`);if(Je!=null&&Je.success){let ls=Je.users||[];I==="asc"&&(ls=[...ls].reverse());const dt=(f-1)*y;c(ls.slice(dt,dt+y)),m((($=Je.users)==null?void 0:$.length)??0),ls.length===0&&(V(!1),_("暂无订单数据,RFM 排序需要用户有购买记录后才能生效"))}else V(!1),_((Je==null?void 0:Je.error)||"RFM 加载失败,已切回普通模式")}else{const He=new URLSearchParams({page:String(f),pageSize:String(y),search:P,...w==="vip"&&{vip:"true"},...w==="complete"&&{pool:"complete"}}),Je=await Be(`/api/db/users?${He}`);Je!=null&&Je.success?(c(Je.users||[]),m(Je.total??0)):_((Je==null?void 0:Je.error)||"加载失败")}}catch(He){console.error("Load users error:",He),_("网络错误")}finally{S(!1)}}h.useEffect(()=>{p(1)},[P,w,O]),h.useEffect(()=>{Fs()},[f,y,P,w,O,I]);const Qn=Math.ceil(u/y)||1,qn=()=>{O?I==="desc"?R("asc"):(V(!1),R("desc")):(V(!0),R("desc"))},Xn=$=>({S:"bg-amber-500/20 text-amber-400",A:"bg-green-500/20 text-green-400",B:"bg-blue-500/20 text-blue-400",C:"bg-gray-500/20 text-gray-400",D:"bg-red-500/20 text-red-400"})[$||""]||"bg-gray-500/20 text-gray-400";async function Jn($){if(confirm("确定要删除这个用户吗?"))try{const He=await Pr(`/api/db/users?id=${encodeURIComponent($)}`);He!=null&&He.success?Fs():alert("删除失败: "+((He==null?void 0:He.error)||""))}catch{alert("删除失败")}}const Cn=$=>{se($),he({phone:$.phone||"",nickname:$.nickname||"",password:"",isAdmin:!!($.isAdmin??!1),hasFullBook:!!($.hasFullBook??!1)}),Y(!0)},kn=()=>{se(null),he({phone:"",nickname:"",password:"",isAdmin:!1,hasFullBook:!1}),Y(!0)};async function zs(){if(!ze.phone||!ze.nickname){alert("请填写手机号和昵称");return}K(!0);try{if(q){const $=await vt("/api/db/users",{id:q.id,nickname:ze.nickname,isAdmin:ze.isAdmin,hasFullBook:ze.hasFullBook,...ze.password&&{password:ze.password}});if(!($!=null&&$.success)){alert("更新失败: "+(($==null?void 0:$.error)||""));return}}else{const $=await mt("/api/db/users",{phone:ze.phone,nickname:ze.nickname,password:ze.password,isAdmin:ze.isAdmin});if(!($!=null&&$.success)){alert("创建失败: "+(($==null?void 0:$.error)||""));return}}Y(!1),Fs()}catch{alert("保存失败")}finally{K(!1)}}const Mr=$=>{se($),ie(""),U(""),ae(!0)};async function $s($){ge($),F(!0),de(!0);try{const He=await Be(`/api/db/users/referrals?userId=${encodeURIComponent($.id)}`);He!=null&&He.success?Z({referrals:He.referrals||[],stats:He.stats||{}}):Z({referrals:[],stats:{}})}catch{Z({referrals:[],stats:{}})}finally{de(!1)}}async function Zn(){if(!H){alert("请输入新密码");return}if(H!==ve){alert("两次密码不一致");return}if(H.length<6){alert("密码至少6位");return}K(!0);try{const $=await vt("/api/db/users",{id:q==null?void 0:q.id,password:H});$!=null&&$.success?(alert("修改成功"),ae(!1)):alert("修改失败: "+(($==null?void 0:$.error)||""))}catch{alert("修改失败")}finally{K(!1)}}const ts=h.useCallback(async()=>{hr(!0);try{const $=await Be("/api/db/user-rules");$!=null&&$.success&&ft($.rules||[])}catch{}finally{hr(!1)}},[]);async function z(){if(!ct.title){alert("请填写规则标题");return}K(!0);try{if(Bt){const $=await vt("/api/db/user-rules",{id:Bt.id,...ct});if(!($!=null&&$.success)){alert("更新失败: "+(($==null?void 0:$.error)||""));return}}else{const $=await mt("/api/db/user-rules",ct);if(!($!=null&&$.success)){alert("创建失败: "+(($==null?void 0:$.error)||""));return}}As(!1),ts()}catch{alert("保存失败")}finally{K(!1)}}async function oe($){if(confirm("确定删除?"))try{const He=await Pr(`/api/db/user-rules?id=${$}`);He!=null&&He.success&&ts()}catch{}}async function Ce($){try{await vt("/api/db/user-rules",{id:$.id,enabled:!$.enabled}),ts()}catch{}}const Pe=h.useCallback(async()=>{Gn(!0);try{const $=await Be("/api/db/vip-roles");$!=null&&$.success&&mr($.roles||[])}catch{}finally{Gn(!1)}},[]);async function xt(){if(!ys.name){alert("请填写角色名称");return}K(!0);try{if(wn){const $=await vt("/api/db/vip-roles",{id:wn.id,...ys});if(!($!=null&&$.success)){alert("更新失败");return}}else{const $=await mt("/api/db/vip-roles",ys);if(!($!=null&&$.success)){alert("创建失败");return}}ks(!1),Pe()}catch{alert("保存失败")}finally{K(!1)}}async function ns($){if(confirm("确定删除?"))try{const He=await Pr(`/api/db/vip-roles?id=${$}`);He!=null&&He.success&&Pe()}catch{}}const nt=h.useCallback(async()=>{Os(!0);try{const $=await Be("/api/db/users/journey-stats");$!=null&&$.success&&$.stats&&Sn($.stats)}catch{}finally{Os(!1)}},[]);return e.jsxs("div",{className:"p-8 w-full",children:[j&&e.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[e.jsx("span",{children:j}),e.jsx("button",{type:"button",onClick:()=>_(null),children:"×"})]}),e.jsx("div",{className:"flex justify-between items-center mb-6",children:e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-white",children:"用户管理"}),e.jsxs("p",{className:"text-gray-400 mt-1 text-sm",children:["共 ",u," 位注册用户",O&&" · RFM 排序中"]})]})}),e.jsxs($l,{defaultValue:"users",className:"w-full",children:[e.jsxs($a,{className:"bg-[#0a1628] border border-gray-700/50 p-1 mb-6 flex-wrap h-auto gap-1",children:[e.jsxs(Lt,{value:"users",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] flex items-center gap-1.5",children:[e.jsx(Yt,{className:"w-4 h-4"})," 用户列表"]}),e.jsxs(Lt,{value:"journey",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] flex items-center gap-1.5",onClick:nt,children:[e.jsx(Pa,{className:"w-4 h-4"})," 用户旅程总览"]}),e.jsxs(Lt,{value:"rules",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] flex items-center gap-1.5",onClick:ts,children:[e.jsx(Bn,{className:"w-4 h-4"})," 规则配置"]}),e.jsxs(Lt,{value:"vip-roles",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] flex items-center gap-1.5",onClick:Pe,children:[e.jsx(rn,{className:"w-4 h-4"})," VIP 角色"]})]}),e.jsxs(Ot,{value:"users",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4 justify-end flex-wrap",children:[e.jsxs(J,{variant:"outline",onClick:Fs,disabled:b,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${b?"animate-spin":""}`})," 刷新"]}),e.jsxs("select",{value:w,onChange:$=>{const He=$.target.value;N(He),p(1),l&&(r.delete("pool"),a(r))},className:"bg-[#0f2137] border border-gray-700 text-white rounded-lg px-3 py-2 text-sm",disabled:O,children:[e.jsx("option",{value:"all",children:"全部用户"}),e.jsx("option",{value:"vip",children:"VIP会员(超级个体)"}),e.jsx("option",{value:"complete",children:"完善资料用户"})]}),e.jsxs("div",{className:"relative",children:[e.jsx(cn,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-500"}),e.jsx(le,{type:"text",placeholder:"搜索用户...",className:"pl-10 bg-[#0f2137] border-gray-700 text-white placeholder:text-gray-500 w-56",value:v,onChange:$=>k($.target.value)})]}),e.jsxs(J,{onClick:kn,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Xd,{className:"w-4 h-4 mr-2"})," 添加用户"]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:e.jsx(we,{className:"p-0",children:b?e.jsxs("div",{className:"flex items-center justify-center py-12",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):e.jsxs("div",{children:[e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"用户信息"}),e.jsx(be,{className:"text-gray-400",children:"绑定信息"}),e.jsx(be,{className:"text-gray-400",children:"购买状态"}),e.jsx(be,{className:"text-gray-400",children:"分销收益"}),e.jsxs(be,{className:"text-gray-400 cursor-pointer select-none",onClick:qn,children:[e.jsxs("div",{className:"flex items-center gap-1 group",children:[e.jsx(Ta,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"RFM分值"}),O?I==="desc"?e.jsx(_l,{className:"w-3.5 h-3.5 text-[#38bdac]"}):e.jsx(Ux,{className:"w-3.5 h-3.5 text-[#38bdac]"}):e.jsx(Uj,{className:"w-3.5 h-3.5 text-gray-600 group-hover:text-gray-400"})]}),O&&e.jsx("div",{className:"text-[10px] text-[#38bdac] font-normal mt-0.5",children:"点击切换方向/关闭"})]}),e.jsx(be,{className:"text-gray-400",children:"注册时间"}),e.jsx(be,{className:"text-right text-gray-400",children:"操作"})]})}),e.jsxs(ps,{children:[o.map($=>{var He,Je,ls;return e.jsxs(et,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[e.jsx(pe,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac]",children:$.avatar?e.jsx("img",{src:$.avatar,className:"w-full h-full rounded-full object-cover",alt:""}):((He=$.nickname)==null?void 0:He.charAt(0))||"?"}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("p",{className:"font-medium text-white",children:$.nickname}),$.isAdmin&&e.jsx(Le,{className:"bg-purple-500/20 text-purple-400 hover:bg-purple-500/20 border-0 text-xs",children:"管理员"}),$.openId&&!((Je=$.id)!=null&&Je.startsWith("user_"))&&e.jsx(Le,{className:"bg-green-500/20 text-green-400 hover:bg-green-500/20 border-0 text-xs",children:"微信"})]}),e.jsx("p",{className:"text-xs text-gray-500 font-mono",children:$.openId?$.openId.slice(0,12)+"...":(ls=$.id)==null?void 0:ls.slice(0,12)})]})]})}),e.jsx(pe,{children:e.jsxs("div",{className:"space-y-1",children:[$.phone&&e.jsxs("div",{className:"flex items-center gap-1 text-xs",children:[e.jsx("span",{className:"text-gray-500",children:"📱"}),e.jsx("span",{className:"text-gray-300",children:$.phone})]}),$.wechatId&&e.jsxs("div",{className:"flex items-center gap-1 text-xs",children:[e.jsx("span",{className:"text-gray-500",children:"💬"}),e.jsx("span",{className:"text-gray-300",children:$.wechatId})]}),$.openId&&e.jsxs("div",{className:"flex items-center gap-1 text-xs",children:[e.jsx("span",{className:"text-gray-500",children:"🔗"}),e.jsxs("span",{className:"text-gray-500 truncate max-w-[100px]",title:$.openId,children:[$.openId.slice(0,12),"..."]})]}),!$.phone&&!$.wechatId&&!$.openId&&e.jsx("span",{className:"text-gray-600 text-xs",children:"未绑定"})]})}),e.jsx(pe,{children:$.hasFullBook?e.jsx(Le,{className:"bg-amber-500/20 text-amber-400 hover:bg-amber-500/20 border-0",children:"VIP"}):e.jsx(Le,{variant:"outline",className:"text-gray-500 border-gray-600",children:"未购买"})}),e.jsx(pe,{children:e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"text-white font-medium",children:["¥",parseFloat(String($.earnings||0)).toFixed(2)]}),parseFloat(String($.pendingEarnings||0))>0&&e.jsxs("div",{className:"text-xs text-yellow-400",children:["待提现: ¥",parseFloat(String($.pendingEarnings||0)).toFixed(2)]}),e.jsxs("div",{className:"text-xs text-[#38bdac] cursor-pointer hover:underline flex items-center gap-1",onClick:()=>$s($),role:"button",tabIndex:0,onKeyDown:dt=>dt.key==="Enter"&&$s($),children:[e.jsx(Yt,{className:"w-3 h-3"})," 绑定",$.referralCount||0,"人"]})]})}),e.jsx(pe,{children:$.rfmScore!==void 0?e.jsx("div",{className:"flex flex-col gap-1",children:e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-white font-bold text-base",children:$.rfmScore}),e.jsx(Le,{className:`border-0 text-xs ${Xn($.rfmLevel)}`,children:$.rfmLevel})]})}):e.jsxs("span",{className:"text-gray-600 text-sm",children:["— ",e.jsx("span",{className:"text-xs text-gray-700",children:"点列头排序"})]})}),e.jsx(pe,{className:"text-gray-400",children:$.createdAt?new Date($.createdAt).toLocaleDateString():"-"}),e.jsx(pe,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-1",children:[e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>{tt($),We(!0)},className:"text-gray-400 hover:text-amber-400 hover:bg-amber-400/10",title:"设置 VIP",children:e.jsx(rn,{className:"w-4 h-4"})}),e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>{ke($.id),D(!0)},className:"text-gray-400 hover:text-blue-400 hover:bg-blue-400/10",title:"查看详情",children:e.jsx(Er,{className:"w-4 h-4"})}),e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>Cn($),className:"text-gray-400 hover:text-[#38bdac] hover:bg-[#38bdac]/10",title:"编辑",children:e.jsx(ht,{className:"w-4 h-4"})}),e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>Mr($),className:"text-gray-400 hover:text-yellow-400 hover:bg-yellow-400/10",title:"修改密码",children:e.jsx($f,{className:"w-4 h-4"})}),e.jsx(J,{variant:"ghost",size:"sm",className:"text-red-400 hover:text-red-300 hover:bg-red-500/10",onClick:()=>Jn($.id),title:"删除",children:e.jsx(Ht,{className:"w-4 h-4"})})]})})]},$.id)}),o.length===0&&e.jsx(et,{children:e.jsx(pe,{colSpan:7,className:"text-center py-12 text-gray-500",children:"暂无用户数据"})})]})]}),e.jsx(Qs,{page:f,totalPages:Qn,total:u,pageSize:y,onPageChange:p,onPageSizeChange:$=>{g($),p(1)}})]})})})]}),e.jsxs(Ot,{value:"journey",children:[e.jsxs("div",{className:"flex items-center justify-between mb-5",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"用户从注册到 VIP 的完整行动路径,点击各阶段查看用户动态"}),e.jsxs(J,{variant:"outline",onClick:nt,disabled:Es,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${Es?"animate-spin":""}`})," 刷新数据"]})]}),e.jsxs("div",{className:"relative mb-8",children:[e.jsx("div",{className:"absolute top-16 left-0 right-0 h-0.5 bg-gradient-to-r from-blue-500/20 via-[#38bdac]/30 to-amber-500/20 mx-20"}),e.jsx("div",{className:"grid grid-cols-4 gap-4 lg:grid-cols-8",children:so.map(($,He)=>e.jsxs("div",{className:"relative flex flex-col items-center",children:[e.jsxs("div",{className:`relative w-full p-3 rounded-xl border ${$.color} text-center cursor-default`,children:[e.jsx("div",{className:"text-2xl mb-1",children:$.icon}),e.jsx("div",{className:`text-xs font-medium ${$.color.split(" ").find(Je=>Je.startsWith("text-"))}`,children:$.label}),Ls[$.id]!==void 0&&e.jsxs("div",{className:"mt-1.5 text-xs text-gray-400",children:[e.jsx("span",{className:"font-bold text-white",children:Ls[$.id]})," 人"]}),e.jsx("div",{className:"absolute -top-2.5 -left-2.5 w-5 h-5 rounded-full bg-[#0a1628] border border-gray-700 flex items-center justify-center text-[10px] text-gray-500",children:He+1})]}),Hee.jsxs("div",{className:"flex items-start gap-3 p-2 bg-[#0a1628] rounded",children:[e.jsx("span",{className:"text-[#38bdac] font-mono text-xs shrink-0 mt-0.5",children:$.step}),e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-300",children:$.action}),e.jsxs("p",{className:"text-gray-600 text-xs",children:["→ ",$.next]})]})]},$.step))})]}),e.jsxs("div",{className:"bg-[#0f2137] border border-gray-700/50 rounded-lg p-4",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(qs,{className:"w-4 h-4 text-purple-400"}),e.jsx("span",{className:"text-white font-medium",children:"行为锚点统计"}),e.jsx("span",{className:"text-gray-500 text-xs ml-auto",children:"实时更新"})]}),Es?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx($e,{className:"w-5 h-5 text-[#38bdac] animate-spin"})}):Object.keys(Ls).length>0?e.jsx("div",{className:"space-y-2",children:so.map($=>{const He=Ls[$.id]||0,Je=Math.max(...so.map(dt=>Ls[dt.id]||0),1),ls=Math.round(He/Je*100);return e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{className:"text-gray-500 text-xs w-20 shrink-0",children:[$.icon," ",$.label]}),e.jsx("div",{className:"flex-1 h-2 bg-[#0a1628] rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full bg-[#38bdac]/60 rounded-full transition-all",style:{width:`${ls}%`}})}),e.jsx("span",{className:"text-gray-400 text-xs w-10 text-right",children:He})]},$.id)})}):e.jsx("div",{className:"text-center py-8",children:e.jsx("p",{className:"text-gray-500 text-sm",children:"点击「刷新数据」加载统计"})})]})]})]}),e.jsxs(Ot,{value:"rules",children:[e.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"用户旅程引导规则,定义各行为节点的触发条件与引导内容"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(J,{variant:"outline",onClick:ts,disabled:es,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${es?"animate-spin":""}`})," 刷新"]}),e.jsxs(J,{onClick:()=>{_r(null),gs({title:"",description:"",trigger:"",sort:0,enabled:!0}),As(!0)},className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"})," 添加规则"]})]})]}),es?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"})}):xe.length===0?e.jsxs("div",{className:"text-center py-16 bg-[#0f2137] rounded-lg border border-gray-700/50",children:[e.jsx(qs,{className:"w-12 h-12 text-[#38bdac]/30 mx-auto mb-4"}),e.jsx("p",{className:"text-gray-400 mb-4",children:"暂无规则(重启服务将自动写入10条默认规则)"}),e.jsxs(J,{onClick:ts,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx($e,{className:"w-4 h-4 mr-2"})," 重新加载"]})]}):e.jsx("div",{className:"space-y-2",children:xe.map($=>e.jsx("div",{className:`p-4 rounded-lg border transition-all ${$.enabled?"bg-[#0f2137] border-gray-700/50":"bg-[#0a1628]/50 border-gray-700/30 opacity-55"}`,children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap mb-1",children:[e.jsx(ht,{className:"w-4 h-4 text-[#38bdac] shrink-0"}),e.jsx("span",{className:"text-white font-medium",children:$.title}),$.trigger&&e.jsxs(Le,{className:"bg-[#38bdac]/10 text-[#38bdac] border border-[#38bdac]/30 text-xs",children:["触发:",$.trigger]}),e.jsx(Le,{className:`text-xs border-0 ${$.enabled?"bg-green-500/20 text-green-400":"bg-gray-500/20 text-gray-400"}`,children:$.enabled?"启用":"禁用"})]}),$.description&&e.jsx("p",{className:"text-gray-400 text-sm ml-6",children:$.description})]}),e.jsxs("div",{className:"flex items-center gap-2 ml-4 shrink-0",children:[e.jsx(ot,{checked:$.enabled,onCheckedChange:()=>Ce($)}),e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>{_r($),gs({title:$.title,description:$.description,trigger:$.trigger,sort:$.sort,enabled:$.enabled}),As(!0)},className:"text-gray-400 hover:text-[#38bdac] hover:bg-[#38bdac]/10",children:e.jsx(ht,{className:"w-4 h-4"})}),e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>oe($.id),className:"text-red-400 hover:text-red-300 hover:bg-red-500/10",children:e.jsx(Ht,{className:"w-4 h-4"})})]})]})},$.id))})]}),e.jsxs(Ot,{value:"vip-roles",children:[e.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"管理用户 VIP 角色分类,这些角色将在用户详情和会员展示中使用"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(J,{variant:"outline",onClick:Pe,disabled:Cs,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${Cs?"animate-spin":""}`})," 刷新"]}),e.jsxs(J,{onClick:()=>{fr(null),Ds({name:"",sort:0}),ks(!0)},className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"})," 添加角色"]})]})]}),Cs?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"})}):Nn.length===0?e.jsxs("div",{className:"text-center py-16 bg-[#0f2137] rounded-lg border border-gray-700/50",children:[e.jsx(rn,{className:"w-12 h-12 text-amber-400/30 mx-auto mb-4"}),e.jsx("p",{className:"text-gray-400 mb-4",children:"暂无 VIP 角色"}),e.jsxs(J,{onClick:()=>{fr(null),Ds({name:"",sort:0}),ks(!0)},className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"})," 添加第一个角色"]})]}):e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-3",children:Nn.map($=>e.jsxs("div",{className:"p-4 bg-[#0f2137] border border-amber-500/20 rounded-xl hover:border-amber-500/40 transition-all group",children:[e.jsxs("div",{className:"flex items-start justify-between mb-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(rn,{className:"w-4 h-4 text-amber-400"}),e.jsx("span",{className:"text-white font-medium",children:$.name})]}),e.jsxs("div",{className:"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[e.jsx("button",{type:"button",onClick:()=>{fr($),Ds({name:$.name,sort:$.sort}),ks(!0)},className:"text-gray-500 hover:text-[#38bdac]",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),e.jsx("button",{type:"button",onClick:()=>ns($.id),className:"text-gray-500 hover:text-red-400",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})})]})]}),e.jsxs("p",{className:"text-gray-600 text-xs",children:["排序: ",$.sort]})]},$.id))})]})]}),e.jsx(Ct,{open:E,onOpenChange:Y,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-lg",children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[q?e.jsx(ht,{className:"w-5 h-5 text-[#38bdac]"}):e.jsx(Xd,{className:"w-5 h-5 text-[#38bdac]"}),q?"编辑用户":"添加用户"]})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"手机号"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"请输入手机号",value:ze.phone,onChange:$=>he({...ze,phone:$.target.value}),disabled:!!q})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"昵称"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"请输入昵称",value:ze.nickname,onChange:$=>he({...ze,nickname:$.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:q?"新密码 (留空则不修改)":"密码"}),e.jsx(le,{type:"password",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:q?"留空则不修改":"请输入密码",value:ze.password,onChange:$=>he({...ze,password:$.target.value})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(te,{className:"text-gray-300",children:"管理员权限"}),e.jsx(ot,{checked:ze.isAdmin,onCheckedChange:$=>he({...ze,isAdmin:$})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(te,{className:"text-gray-300",children:"已购全书"}),e.jsx(ot,{checked:ze.hasFullBook,onCheckedChange:$=>he({...ze,hasFullBook:$})})]})]}),e.jsxs(Dt,{children:[e.jsxs(J,{variant:"outline",onClick:()=>Y(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx(ms,{className:"w-4 h-4 mr-2"}),"取消"]}),e.jsxs(J,{onClick:zs,disabled:ce,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),ce?"保存中...":"保存"]})]})]})}),e.jsx(Ct,{open:ne,onOpenChange:ae,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx($f,{className:"w-5 h-5 text-[#38bdac]"}),"修改密码"]})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"bg-[#0a1628] rounded-lg p-3",children:[e.jsxs("p",{className:"text-gray-400 text-sm",children:["用户:",q==null?void 0:q.nickname]}),e.jsxs("p",{className:"text-gray-400 text-sm",children:["手机号:",q==null?void 0:q.phone]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"新密码"}),e.jsx(le,{type:"password",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"请输入新密码 (至少6位)",value:H,onChange:$=>ie($.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"确认密码"}),e.jsx(le,{type:"password",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"请再次输入",value:ve,onChange:$=>U($.target.value)})]})]}),e.jsxs(Dt,{children:[e.jsx(J,{variant:"outline",onClick:()=>ae(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),e.jsx(J,{onClick:Zn,disabled:ce,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:ce?"保存中...":"确认修改"})]})]})}),e.jsx(Ct,{open:bn,onOpenChange:As,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-lg",children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(ht,{className:"w-5 h-5 text-[#38bdac]"}),Bt?"编辑规则":"添加规则"]})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"规则标题 *"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例:匹配后填写头像、付款1980需填写信息",value:ct.title,onChange:$=>gs({...ct,title:$.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"规则描述"}),e.jsx(un,{className:"bg-[#0a1628] border-gray-700 text-white min-h-[80px] resize-none",placeholder:"详细说明规则内容...",value:ct.description,onChange:$=>gs({...ct,description:$.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"触发条件"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例:完成匹配、付款后、注册时",value:ct.trigger,onChange:$=>gs({...ct,trigger:$.target.value})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{children:e.jsx(te,{className:"text-gray-300",children:"启用状态"})}),e.jsx(ot,{checked:ct.enabled,onCheckedChange:$=>gs({...ct,enabled:$})})]})]}),e.jsxs(Dt,{children:[e.jsxs(J,{variant:"outline",onClick:()=>As(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx(ms,{className:"w-4 h-4 mr-2"}),"取消"]}),e.jsxs(J,{onClick:z,disabled:ce,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),ce?"保存中...":"保存"]})]})]})}),e.jsx(Ct,{open:Yn,onOpenChange:ks,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(rn,{className:"w-5 h-5 text-amber-400"}),wn?"编辑 VIP 角色":"添加 VIP 角色"]})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"角色名称 *"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例:创业者、资源整合者、技术咖",value:ys.name,onChange:$=>Ds({...ys,name:$.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"排序(越小越前)"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:ys.sort,onChange:$=>Ds({...ys,sort:parseInt($.target.value)||0})})]})]}),e.jsxs(Dt,{children:[e.jsxs(J,{variant:"outline",onClick:()=>ks(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx(ms,{className:"w-4 h-4 mr-2"}),"取消"]}),e.jsxs(J,{onClick:xt,disabled:ce,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),ce?"保存中...":"保存"]})]})]})}),e.jsx(Ct,{open:A,onOpenChange:F,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-2xl max-h-[80vh] overflow-auto",children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(Yt,{className:"w-5 h-5 text-[#38bdac]"}),"绑定关系 - ",Q==null?void 0:Q.nickname]})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"grid grid-cols-4 gap-3",children:[e.jsxs("div",{className:"bg-[#0a1628] rounded-lg p-3 text-center",children:[e.jsx("div",{className:"text-2xl font-bold text-[#38bdac]",children:((as=L.stats)==null?void 0:as.total)||0}),e.jsx("div",{className:"text-xs text-gray-400",children:"绑定总数"})]}),e.jsxs("div",{className:"bg-[#0a1628] rounded-lg p-3 text-center",children:[e.jsx("div",{className:"text-2xl font-bold text-green-400",children:((En=L.stats)==null?void 0:En.purchased)||0}),e.jsx("div",{className:"text-xs text-gray-400",children:"已付费"})]}),e.jsxs("div",{className:"bg-[#0a1628] rounded-lg p-3 text-center",children:[e.jsxs("div",{className:"text-2xl font-bold text-yellow-400",children:["¥",(((er=L.stats)==null?void 0:er.earnings)||0).toFixed(2)]}),e.jsx("div",{className:"text-xs text-gray-400",children:"累计收益"})]}),e.jsxs("div",{className:"bg-[#0a1628] rounded-lg p-3 text-center",children:[e.jsxs("div",{className:"text-2xl font-bold text-orange-400",children:["¥",(((xr=L.stats)==null?void 0:xr.pendingEarnings)||0).toFixed(2)]}),e.jsx("div",{className:"text-xs text-gray-400",children:"待提现"})]})]}),G?e.jsxs("div",{className:"flex items-center justify-center py-8",children:[e.jsx($e,{className:"w-5 h-5 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):(((Pt=L.referrals)==null?void 0:Pt.length)??0)>0?e.jsx("div",{className:"space-y-2 max-h-[300px] overflow-y-auto",children:(L.referrals??[]).map(($,He)=>{var ls;const Je=$;return e.jsxs("div",{className:"flex items-center justify-between bg-[#0a1628] rounded-lg p-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-8 h-8 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm text-[#38bdac]",children:((ls=Je.nickname)==null?void 0:ls.charAt(0))||"?"}),e.jsxs("div",{children:[e.jsx("div",{className:"text-white text-sm",children:Je.nickname}),e.jsx("div",{className:"text-xs text-gray-500",children:Je.phone||(Je.hasOpenId?"微信用户":"未绑定")})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[Je.status==="vip"&&e.jsx(Le,{className:"bg-green-500/20 text-green-400 border-0 text-xs",children:"全书已购"}),Je.status==="paid"&&e.jsxs(Le,{className:"bg-blue-500/20 text-blue-400 border-0 text-xs",children:["已付费",Je.purchasedSections,"章"]}),Je.status==="free"&&e.jsx(Le,{className:"bg-gray-500/20 text-gray-400 border-0 text-xs",children:"未付费"}),e.jsx("span",{className:"text-xs text-gray-500",children:Je.createdAt?new Date(Je.createdAt).toLocaleDateString():""})]})]},Je.id||He)})}):e.jsx("div",{className:"text-center py-8 text-gray-500",children:"暂无绑定用户"})]}),e.jsx(Dt,{children:e.jsx(J,{variant:"outline",onClick:()=>F(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"关闭"})})]})}),e.jsx(p0,{open:Se,onClose:()=>D(!1),userId:fe,onUserUpdated:Fs}),e.jsx(z2,{open:Ve,onClose:()=>{We(!1),tt(null)},userId:(Ye==null?void 0:Ye.id)??null,userNickname:Ye==null?void 0:Ye.nickname,onSaved:Fs})]})}function xo(r,[a,l]){return Math.min(l,Math.max(a,r))}var g0=["PageUp","PageDown"],y0=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],v0={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},Ba="Slider",[su,B2,U2]=_u(Ba),[j0]=yn(Ba,[U2]),[V2,Ro]=j0(Ba),b0=h.forwardRef((r,a)=>{const{name:l,min:o=0,max:c=100,step:u=1,orientation:m="horizontal",disabled:f=!1,minStepsBetweenThumbs:p=0,defaultValue:y=[o],value:g,onValueChange:v=()=>{},onValueCommit:k=()=>{},inverted:P=!1,form:T,...w}=r,N=h.useRef(new Set),b=h.useRef(0),j=m==="horizontal"?W2:H2,[_=[],O]=Un({prop:g,defaultProp:y,onChange:ne=>{var q;(q=[...N.current][b.current])==null||q.focus(),v(ne)}}),V=h.useRef(_);function I(ne){const ae=q2(_,ne);Y(ne,ae)}function R(ne){Y(ne,b.current)}function E(){const ne=V.current[b.current];_[b.current]!==ne&&k(_)}function Y(ne,ae,{commit:q}={commit:!1}){const se=e4(u),H=t4(Math.round((ne-o)/u)*u+o,se),ie=xo(H,[o,c]);O((ve=[])=>{const U=Y2(ve,ie,ae);if(Z2(U,p*u)){b.current=U.indexOf(ie);const ce=String(U)!==String(ve);return ce&&q&&k(U),ce?U:ve}else return ve})}return e.jsx(V2,{scope:r.__scopeSlider,name:l,disabled:f,min:o,max:c,valueIndexToChangeRef:b,thumbs:N.current,values:_,orientation:m,form:T,children:e.jsx(su.Provider,{scope:r.__scopeSlider,children:e.jsx(su.Slot,{scope:r.__scopeSlider,children:e.jsx(j,{"aria-disabled":f,"data-disabled":f?"":void 0,...w,ref:a,onPointerDown:Qe(w.onPointerDown,()=>{f||(V.current=_)}),min:o,max:c,inverted:P,onSlideStart:f?void 0:I,onSlideMove:f?void 0:R,onSlideEnd:f?void 0:E,onHomeKeyDown:()=>!f&&Y(o,0,{commit:!0}),onEndKeyDown:()=>!f&&Y(c,_.length-1,{commit:!0}),onStepKeyDown:({event:ne,direction:ae})=>{if(!f){const H=g0.includes(ne.key)||ne.shiftKey&&y0.includes(ne.key)?10:1,ie=b.current,ve=_[ie],U=u*H*ae;Y(ve+U,ie,{commit:!0})}}})})})})});b0.displayName=Ba;var[N0,w0]=j0(Ba,{startEdge:"left",endEdge:"right",size:"width",direction:1}),W2=h.forwardRef((r,a)=>{const{min:l,max:o,dir:c,inverted:u,onSlideStart:m,onSlideMove:f,onSlideEnd:p,onStepKeyDown:y,...g}=r,[v,k]=h.useState(null),P=at(a,j=>k(j)),T=h.useRef(void 0),w=Eo(c),N=w==="ltr",b=N&&!u||!N&&u;function S(j){const _=T.current||v.getBoundingClientRect(),O=[0,_.width],I=Lu(O,b?[l,o]:[o,l]);return T.current=_,I(j-_.left)}return e.jsx(N0,{scope:r.__scopeSlider,startEdge:b?"left":"right",endEdge:b?"right":"left",direction:b?1:-1,size:"width",children:e.jsx(S0,{dir:w,"data-orientation":"horizontal",...g,ref:P,style:{...g.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:j=>{const _=S(j.clientX);m==null||m(_)},onSlideMove:j=>{const _=S(j.clientX);f==null||f(_)},onSlideEnd:()=>{T.current=void 0,p==null||p()},onStepKeyDown:j=>{const O=v0[b?"from-left":"from-right"].includes(j.key);y==null||y({event:j,direction:O?-1:1})}})})}),H2=h.forwardRef((r,a)=>{const{min:l,max:o,inverted:c,onSlideStart:u,onSlideMove:m,onSlideEnd:f,onStepKeyDown:p,...y}=r,g=h.useRef(null),v=at(a,g),k=h.useRef(void 0),P=!c;function T(w){const N=k.current||g.current.getBoundingClientRect(),b=[0,N.height],j=Lu(b,P?[o,l]:[l,o]);return k.current=N,j(w-N.top)}return e.jsx(N0,{scope:r.__scopeSlider,startEdge:P?"bottom":"top",endEdge:P?"top":"bottom",size:"height",direction:P?1:-1,children:e.jsx(S0,{"data-orientation":"vertical",...y,ref:v,style:{...y.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:w=>{const N=T(w.clientY);u==null||u(N)},onSlideMove:w=>{const N=T(w.clientY);m==null||m(N)},onSlideEnd:()=>{k.current=void 0,f==null||f()},onStepKeyDown:w=>{const b=v0[P?"from-bottom":"from-top"].includes(w.key);p==null||p({event:w,direction:b?-1:1})}})})}),S0=h.forwardRef((r,a)=>{const{__scopeSlider:l,onSlideStart:o,onSlideMove:c,onSlideEnd:u,onHomeKeyDown:m,onEndKeyDown:f,onStepKeyDown:p,...y}=r,g=Ro(Ba,l);return e.jsx(Xe.span,{...y,ref:a,onKeyDown:Qe(r.onKeyDown,v=>{v.key==="Home"?(m(v),v.preventDefault()):v.key==="End"?(f(v),v.preventDefault()):g0.concat(y0).includes(v.key)&&(p(v),v.preventDefault())}),onPointerDown:Qe(r.onPointerDown,v=>{const k=v.target;k.setPointerCapture(v.pointerId),v.preventDefault(),g.thumbs.has(k)?k.focus():o(v)}),onPointerMove:Qe(r.onPointerMove,v=>{v.target.hasPointerCapture(v.pointerId)&&c(v)}),onPointerUp:Qe(r.onPointerUp,v=>{const k=v.target;k.hasPointerCapture(v.pointerId)&&(k.releasePointerCapture(v.pointerId),u(v))})})}),C0="SliderTrack",k0=h.forwardRef((r,a)=>{const{__scopeSlider:l,...o}=r,c=Ro(C0,l);return e.jsx(Xe.span,{"data-disabled":c.disabled?"":void 0,"data-orientation":c.orientation,...o,ref:a})});k0.displayName=C0;var ru="SliderRange",E0=h.forwardRef((r,a)=>{const{__scopeSlider:l,...o}=r,c=Ro(ru,l),u=w0(ru,l),m=h.useRef(null),f=at(a,m),p=c.values.length,y=c.values.map(k=>R0(k,c.min,c.max)),g=p>1?Math.min(...y):0,v=100-Math.max(...y);return e.jsx(Xe.span,{"data-orientation":c.orientation,"data-disabled":c.disabled?"":void 0,...o,ref:f,style:{...r.style,[u.startEdge]:g+"%",[u.endEdge]:v+"%"}})});E0.displayName=ru;var nu="SliderThumb",P0=h.forwardRef((r,a)=>{const l=B2(r.__scopeSlider),[o,c]=h.useState(null),u=at(a,f=>c(f)),m=h.useMemo(()=>o?l().findIndex(f=>f.ref.current===o):-1,[l,o]);return e.jsx(K2,{...r,ref:u,index:m})}),K2=h.forwardRef((r,a)=>{const{__scopeSlider:l,index:o,name:c,...u}=r,m=Ro(nu,l),f=w0(nu,l),[p,y]=h.useState(null),g=at(a,S=>y(S)),v=p?m.form||!!p.closest("form"):!0,k=Du(p),P=m.values[o],T=P===void 0?0:R0(P,m.min,m.max),w=Q2(o,m.values.length),N=k==null?void 0:k[f.size],b=N?X2(N,T,f.direction):0;return h.useEffect(()=>{if(p)return m.thumbs.add(p),()=>{m.thumbs.delete(p)}},[p,m.thumbs]),e.jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[f.startEdge]:`calc(${T}% + ${b}px)`},children:[e.jsx(su.ItemSlot,{scope:r.__scopeSlider,children:e.jsx(Xe.span,{role:"slider","aria-label":r["aria-label"]||w,"aria-valuemin":m.min,"aria-valuenow":P,"aria-valuemax":m.max,"aria-orientation":m.orientation,"data-orientation":m.orientation,"data-disabled":m.disabled?"":void 0,tabIndex:m.disabled?void 0:0,...u,ref:g,style:P===void 0?{display:"none"}:r.style,onFocus:Qe(r.onFocus,()=>{m.valueIndexToChangeRef.current=o})})}),v&&e.jsx(T0,{name:c??(m.name?m.name+(m.values.length>1?"[]":""):void 0),form:m.form,value:P},o)]})});P0.displayName=nu;var G2="RadioBubbleInput",T0=h.forwardRef(({__scopeSlider:r,value:a,...l},o)=>{const c=h.useRef(null),u=at(c,o),m=Au(a);return h.useEffect(()=>{const f=c.current;if(!f)return;const p=window.HTMLInputElement.prototype,g=Object.getOwnPropertyDescriptor(p,"value").set;if(m!==a&&g){const v=new Event("input",{bubbles:!0});g.call(f,a),f.dispatchEvent(v)}},[m,a]),e.jsx(Xe.input,{style:{display:"none"},...l,ref:u,defaultValue:a})});T0.displayName=G2;function Y2(r=[],a,l){const o=[...r];return o[l]=a,o.sort((c,u)=>c-u)}function R0(r,a,l){const u=100/(l-a)*(r-a);return xo(u,[0,100])}function Q2(r,a){return a>2?`Value ${r+1} of ${a}`:a===2?["Minimum","Maximum"][r]:void 0}function q2(r,a){if(r.length===1)return 0;const l=r.map(c=>Math.abs(c-a)),o=Math.min(...l);return l.indexOf(o)}function X2(r,a,l){const o=r/2,u=Lu([0,50],[0,o]);return(o-u(a)*l)*l}function J2(r){return r.slice(0,-1).map((a,l)=>r[l+1]-a)}function Z2(r,a){if(a>0){const l=J2(r);return Math.min(...l)>=a}return!0}function Lu(r,a){return l=>{if(r[0]===r[1]||a[0]===a[1])return a[0];const o=(a[1]-a[0])/(r[1]-r[0]);return a[0]+o*(l-r[0])}}function e4(r){return(String(r).split(".")[1]||"").length}function t4(r,a){const l=Math.pow(10,a);return Math.round(r*l)/l}var s4=b0,r4=k0,n4=E0,a4=P0;function l4({className:r,defaultValue:a,value:l,min:o=0,max:c=100,...u}){const m=h.useMemo(()=>Array.isArray(l)?l:Array.isArray(a)?a:[o,c],[l,a,o,c]);return e.jsxs(s4,{defaultValue:a,value:l,min:o,max:c,className:lt("relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50",r),...u,children:[e.jsx(r4,{className:"bg-gray-600 relative grow overflow-hidden rounded-full h-1.5 w-full",children:e.jsx(n4,{className:"bg-[#38bdac] absolute h-full rounded-full"})}),Array.from({length:m.length},(f,p)=>e.jsx(a4,{className:"block size-4 shrink-0 rounded-full border-2 border-[#38bdac] bg-white shadow-sm focus-visible:ring-2 focus-visible:ring-[#38bdac] focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50"},p))]})}const i4={distributorShare:90,minWithdrawAmount:10,bindingDays:30,userDiscount:5,enableAutoWithdraw:!1,vipOrderShareVip:20,vipOrderShareNonVip:10};function I0({embedded:r=!1}){const[a,l]=h.useState(i4),[o,c]=h.useState(!0),[u,m]=h.useState(!1);h.useEffect(()=>{Be("/api/admin/referral-settings").then(y=>{const g=y==null?void 0:y.data;g&&typeof g=="object"&&l({distributorShare:g.distributorShare??90,minWithdrawAmount:g.minWithdrawAmount??10,bindingDays:g.bindingDays??30,userDiscount:g.userDiscount??5,enableAutoWithdraw:g.enableAutoWithdraw??!1,vipOrderShareVip:g.vipOrderShareVip??20,vipOrderShareNonVip:g.vipOrderShareNonVip??10})}).catch(console.error).finally(()=>c(!1))},[]);const f=async()=>{m(!0);try{const y={distributorShare:Number(a.distributorShare)||0,minWithdrawAmount:Number(a.minWithdrawAmount)||0,bindingDays:Number(a.bindingDays)||0,userDiscount:Number(a.userDiscount)||0,enableAutoWithdraw:!!a.enableAutoWithdraw,vipOrderShareVip:Number(a.vipOrderShareVip)||20,vipOrderShareNonVip:Number(a.vipOrderShareNonVip)||10},g=await mt("/api/admin/referral-settings",y);if(!g||g.success===!1){alert("保存失败: "+(g&&typeof g=="object"&&"error"in g?g.error:""));return}alert(`✅ 分销配置已保存成功! • 小程序与网站的推广规则会一起生效 • 绑定关系会使用新的天数配置 • 佣金比例会立即应用到新订单 -如有缓存,请刷新前台/小程序页面。`)}catch(y){console.error(y),alert("保存失败: "+(y instanceof Error?y.message:String(y)))}finally{m(!1)}},g=y=>p=>{const v=parseFloat(p.target.value||"0");l(E=>({...E,[y]:isNaN(v)?0:v}))};return o?e.jsx("div",{className:"p-8 text-gray-500",children:"加载中..."}):e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-8",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[e.jsx(_a,{className:"w-5 h-5 text-[#38bdac]"}),"推广 / 分销设置"]}),e.jsx("p",{className:"text-gray-400 mt-1",children:"统一管理「好友优惠」「你得 90% 收益」「绑定期 30 天」「提现门槛」等规则,小程序和 Web 共用这套配置。"})]}),e.jsxs(X,{onClick:f,disabled:u||o,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),u?"保存中...":"保存配置"]})]}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"flex items-center gap-2 text-white",children:[e.jsx(qb,{className:"w-4 h-4 text-[#38bdac]"}),"推广规则"]}),e.jsx(jt,{className:"text-gray-400",children:"这三项会直接体现在小程序「推广规则」卡片上,同时影响实收佣金计算。"})]}),e.jsx(we,{className:"space-y-6",children:e.jsxs("div",{className:"grid grid-cols-3 gap-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{className:"text-gray-300 flex items-center gap-2",children:[e.jsx(Yi,{className:"w-3 h-3 text-[#38bdac]"}),"好友优惠(%)"]}),e.jsx(le,{type:"number",min:0,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:a.userDiscount,onChange:g("userDiscount")}),e.jsx("p",{className:"text-xs text-gray-500",children:"例如 5 表示好友立减 5%(在价格配置基础上生效)。"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{className:"text-gray-300 flex items-center gap-2",children:[e.jsx(Yt,{className:"w-3 h-3 text-[#38bdac]"}),"推广者分成(%)"]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(l4,{className:"flex-1",min:10,max:100,step:1,value:[a.distributorShare],onValueChange:([y])=>l(p=>({...p,distributorShare:y}))}),e.jsx(le,{type:"number",min:0,max:100,className:"w-20 bg-[#0a1628] border-gray-700 text-white text-center",value:a.distributorShare,onChange:g("distributorShare")})]}),e.jsxs("p",{className:"text-xs text-gray-500",children:["内容订单佣金 = 订单金额 ×"," ",e.jsxs("span",{className:"text-[#38bdac] font-mono",children:[a.distributorShare,"%"]}),";会员订单见下方。"]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{className:"text-gray-300 flex items-center gap-2",children:[e.jsx(Yi,{className:"w-3 h-3 text-[#38bdac]"}),"会员订单分润(推广者是会员 %)"]}),e.jsx(le,{type:"number",min:0,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:a.vipOrderShareVip,onChange:g("vipOrderShareVip")}),e.jsx("p",{className:"text-xs text-gray-500",children:"推广者已是会员时,会员订单佣金比例,默认 20%。"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{className:"text-gray-300 flex items-center gap-2",children:[e.jsx(Yi,{className:"w-3 h-3 text-[#38bdac]"}),"会员订单分润(推广者非会员 %)"]}),e.jsx(le,{type:"number",min:0,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:a.vipOrderShareNonVip,onChange:g("vipOrderShareNonVip")}),e.jsx("p",{className:"text-xs text-gray-500",children:"推广者非会员时,会员订单佣金比例,默认 10%。"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{className:"text-gray-300 flex items-center gap-2",children:[e.jsx(Yt,{className:"w-3 h-3 text-[#38bdac]"}),"绑定有效期(天)"]}),e.jsx(le,{type:"number",min:1,max:365,className:"bg-[#0a1628] border-gray-700 text-white",value:a.bindingDays,onChange:g("bindingDays")}),e.jsx("p",{className:"text-xs text-gray-500",children:"好友通过你的链接进来并登录后,绑定在你名下的天数。"})]})]})})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"flex items-center gap-2 text-white",children:[e.jsx(_a,{className:"w-4 h-4 text-[#38bdac]"}),"提现规则"]}),e.jsx(jt,{className:"text-gray-400",children:"与「提现中心」「自动提现」相关的参数,影响推广者看到的可提现金额和最低门槛。"})]}),e.jsx(we,{className:"space-y-6",children:e.jsxs("div",{className:"grid grid-cols-2 gap-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"最低提现金额(元)"}),e.jsx(le,{type:"number",min:0,step:1,className:"bg-[#0a1628] border-gray-700 text-white",value:a.minWithdrawAmount,onChange:g("minWithdrawAmount")}),e.jsx("p",{className:"text-xs text-gray-500",children:"小程序「满 X 元可提现」展示的门槛,同时用于后端接口校验。"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{className:"text-gray-300 flex items-center gap-2",children:["自动提现开关",e.jsx(Le,{variant:"outline",className:"border-[#38bdac]/40 text-[#38bdac] text-[10px]",children:"预留"})]}),e.jsxs("div",{className:"flex items-center gap-3 mt-1",children:[e.jsx(ot,{checked:a.enableAutoWithdraw,onCheckedChange:y=>l(p=>({...p,enableAutoWithdraw:y}))}),e.jsx("span",{className:"text-sm text-gray-400",children:"开启后,可结合定时任务实现「收益自动打款到微信零钱」。"})]})]})]})})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsx(Ke,{children:e.jsxs(Ge,{className:"flex items-center gap-2 text-gray-200 text-sm",children:[e.jsx(Yi,{className:"w-4 h-4 text-[#38bdac]"}),"使用说明"]})}),e.jsxs(we,{className:"space-y-2 text-xs text-gray-400 leading-relaxed",children:[e.jsxs("p",{children:["1. 以上配置会写入"," ",e.jsx("code",{className:"font-mono text-[11px] text-[#38bdac]",children:"system_config.referral_config"}),",小程序「推广中心」、Web 推广页以及支付回调都会读取同一份配置。"]}),e.jsx("p",{children:"2. 修改后新订单立即生效;旧订单的历史佣金不会自动重算,只影响之后产生的订单。"}),e.jsx("p",{children:"3. 如遇前端展示与实际结算不一致,优先以此处配置为准,再排查缓存和小程序版本。"})]})]})]})]})}function o4(){var Se;const[r,a]=h.useState("overview"),[l,o]=h.useState([]),[c,u]=h.useState(null),[m,f]=h.useState([]),[g,y]=h.useState([]),[p,v]=h.useState([]),[E,P]=h.useState(!0),[T,w]=h.useState(null),[b,N]=h.useState(""),[C,j]=h.useState("all"),[I,U]=h.useState(1),[V,_]=h.useState(10),[k,R]=h.useState(0),[Z,ne]=h.useState(new Set),[ae,Q]=h.useState(null),[se,H]=h.useState(""),[oe,ve]=h.useState(!1);h.useEffect(()=>{B()},[]),h.useEffect(()=>{U(1)},[r,C]),h.useEffect(()=>{ce(r)},[r]),h.useEffect(()=>{["orders","bindings","withdrawals"].includes(r)&&ce(r,!0)},[I,V,C,b]);async function B(){w(null);try{const D=await Be("/api/admin/distribution/overview");D!=null&&D.success&&D.overview&&u(D.overview)}catch(D){console.error("[Admin] 概览接口异常:",D),w("加载概览失败")}try{const D=await Be("/api/db/users");v((D==null?void 0:D.users)||[])}catch(D){console.error("[Admin] 用户数据加载失败:",D)}}async function ce(D,fe=!1){var ke;if(!(!fe&&Z.has(D))){P(!0);try{const Ve=p;switch(D){case"overview":break;case"orders":{try{const We=new URLSearchParams({page:String(I),pageSize:String(V),...C!=="all"&&{status:C},...b&&{search:b}}),Ye=await Be(`/api/orders?${We}`);if(Ye!=null&&Ye.success&&Ye.orders){const tt=Ye.orders.map(ze=>{const he=Ve.find(ft=>ft.id===ze.userId),xe=ze.referrerId?Ve.find(ft=>ft.id===ze.referrerId):null;return{...ze,amount:parseFloat(String(ze.amount))||0,userNickname:(he==null?void 0:he.nickname)||ze.userNickname||"未知用户",userPhone:(he==null?void 0:he.phone)||ze.userPhone||"-",referrerNickname:(xe==null?void 0:xe.nickname)||null,referrerCode:(xe==null?void 0:xe.referralCode)??null,type:ze.productType||ze.type}});o(tt),R(Ye.total??tt.length)}else o([]),R(0)}catch(We){console.error(We),w("加载订单失败"),o([])}break}case"bindings":{try{const We=new URLSearchParams({page:String(I),pageSize:String(V),...C!=="all"&&{status:C}}),Ye=await Be(`/api/db/distribution?${We}`);f((Ye==null?void 0:Ye.bindings)||[]),R((Ye==null?void 0:Ye.total)??((ke=Ye==null?void 0:Ye.bindings)==null?void 0:ke.length)??0)}catch(We){console.error(We),w("加载绑定数据失败"),f([])}break}case"withdrawals":{try{const We=C==="completed"?"success":C==="rejected"?"failed":C,Ye=new URLSearchParams({...We&&We!=="all"&&{status:We},page:String(I),pageSize:String(V)}),tt=await Be(`/api/admin/withdrawals?${Ye}`);if(tt!=null&&tt.success&&tt.withdrawals){const ze=tt.withdrawals.map(he=>({...he,account:he.account??"未绑定微信号",status:he.status==="success"?"completed":he.status==="failed"?"rejected":he.status}));y(ze),R((tt==null?void 0:tt.total)??ze.length)}else tt!=null&&tt.success||w(`获取提现记录失败: ${(tt==null?void 0:tt.error)||"未知错误"}`),y([])}catch(We){console.error(We),w("加载提现数据失败"),y([])}break}}ne(We=>new Set(We).add(D))}catch(Ve){console.error(Ve)}finally{P(!1)}}}async function K(){w(null),ne(D=>{const fe=new Set(D);return fe.delete(r),fe}),r==="overview"&&B(),await ce(r,!0)}async function A(D){if(confirm("确认审核通过并打款?"))try{const fe=await vt("/api/admin/withdrawals",{id:D,action:"approve"});if(!(fe!=null&&fe.success)){const ke=(fe==null?void 0:fe.message)||(fe==null?void 0:fe.error)||"操作失败";alert(ke);return}await K()}catch(fe){console.error(fe),alert("操作失败")}}async function O(D){const fe=prompt("请输入拒绝原因:");if(fe)try{const ke=await vt("/api/admin/withdrawals",{id:D,action:"reject",errorMessage:fe});if(!(ke!=null&&ke.success)){alert((ke==null?void 0:ke.error)||"操作失败");return}await K()}catch(ke){console.error(ke),alert("操作失败")}}async function L(){var D;if(!(!(ae!=null&&ae.orderSn)&&!(ae!=null&&ae.id))){ve(!0),w(null);try{const fe=await vt("/api/admin/orders/refund",{orderSn:ae.orderSn||ae.id,reason:se||void 0});fe!=null&&fe.success?(Q(null),H(""),await ce("orders",!0)):w((fe==null?void 0:fe.error)||"退款失败")}catch(fe){const ke=fe;w(((D=ke==null?void 0:ke.data)==null?void 0:D.error)||"退款失败,请检查网络后重试")}finally{ve(!1)}}}function J(D){const fe={active:"bg-green-500/20 text-green-400",converted:"bg-blue-500/20 text-blue-400",expired:"bg-gray-500/20 text-gray-400",cancelled:"bg-red-500/20 text-red-400",pending:"bg-orange-500/20 text-orange-400",pending_confirm:"bg-orange-500/20 text-orange-400",processing:"bg-blue-500/20 text-blue-400",completed:"bg-green-500/20 text-green-400",rejected:"bg-red-500/20 text-red-400"},ke={active:"有效",converted:"已转化",expired:"已过期",cancelled:"已取消",pending:"待审核",pending_confirm:"待用户确认",processing:"处理中",completed:"已完成",rejected:"已拒绝"};return e.jsx(Le,{className:`${fe[D]||"bg-gray-500/20 text-gray-400"} border-0`,children:ke[D]||D})}const G=Math.ceil(k/V)||1,de=l,Y=m.filter(D=>{var ke,Ve,We,Ye;if(!b)return!0;const fe=b.toLowerCase();return((ke=D.refereeNickname)==null?void 0:ke.toLowerCase().includes(fe))||((Ve=D.refereePhone)==null?void 0:Ve.includes(fe))||((We=D.referrerName)==null?void 0:We.toLowerCase().includes(fe))||((Ye=D.referrerCode)==null?void 0:Ye.toLowerCase().includes(fe))}),ge=g.filter(D=>{var ke;if(!b)return!0;const fe=b.toLowerCase();return((ke=D.userName)==null?void 0:ke.toLowerCase().includes(fe))||D.account&&D.account.toLowerCase().includes(fe)});return e.jsxs("div",{className:"p-8 w-full",children:[T&&e.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[e.jsx("span",{children:T}),e.jsx("button",{type:"button",onClick:()=>w(null),className:"hover:text-red-300",children:"×"})]}),e.jsxs("div",{className:"flex items-center justify-between mb-8",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-white",children:"推广中心"}),e.jsx("p",{className:"text-gray-400 mt-1",children:"统一管理:订单、分销绑定、提现审核"})]}),e.jsxs(X,{onClick:K,disabled:E,variant:"outline",className:"border-gray-700 text-gray-300 hover:bg-gray-800",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${E?"animate-spin":""}`}),"刷新数据"]})]}),e.jsx("div",{className:"flex gap-2 mb-6 border-b border-gray-700 pb-4 flex-wrap",children:[{key:"overview",label:"数据概览",icon:Pa},{key:"orders",label:"订单管理",icon:Ml},{key:"bindings",label:"绑定管理",icon:on},{key:"withdrawals",label:"提现审核",icon:_a},{key:"settings",label:"推广设置",icon:$n}].map(D=>e.jsxs("button",{type:"button",onClick:()=>{a(D.key),j("all"),N("")},className:`flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-medium transition-colors ${r===D.key?"bg-[#38bdac] text-white":"text-gray-400 hover:text-white hover:bg-gray-800"}`,children:[e.jsx(D.icon,{className:"w-4 h-4"}),D.label]},D.key))}),E?e.jsxs("div",{className:"flex items-center justify-center py-20",children:[e.jsx($e,{className:"w-8 h-8 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):e.jsxs(e.Fragment,{children:[r==="overview"&&c&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-4 gap-4",children:[e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-6",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"今日点击"}),e.jsx("p",{className:"text-2xl font-bold text-white mt-1",children:c.todayClicks}),e.jsx("p",{className:"text-xs text-gray-500 mt-0.5",children:"总点击次数(实时)"})]}),e.jsx("div",{className:"w-12 h-12 rounded-xl bg-blue-500/20 flex items-center justify-center",children:e.jsx(Er,{className:"w-6 h-6 text-blue-400"})})]})})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-6",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"今日独立用户"}),e.jsx("p",{className:"text-2xl font-bold text-white mt-1",children:c.todayUniqueVisitors??0}),e.jsx("p",{className:"text-xs text-gray-500 mt-0.5",children:"去重访客数(实时)"})]}),e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-500/20 flex items-center justify-center",children:e.jsx(Yt,{className:"w-6 h-6 text-cyan-400"})})]})})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-6",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"今日总文章点击率"}),e.jsx("p",{className:"text-2xl font-bold text-white mt-1",children:(c.todayClickRate??0).toFixed(2)}),e.jsx("p",{className:"text-xs text-gray-500 mt-0.5",children:"人均点击(总点击/独立用户)"})]}),e.jsx("div",{className:"w-12 h-12 rounded-xl bg-amber-500/20 flex items-center justify-center",children:e.jsx(Pa,{className:"w-6 h-6 text-amber-400"})})]})})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-6",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"今日绑定"}),e.jsx("p",{className:"text-2xl font-bold text-white mt-1",children:c.todayBindings})]}),e.jsx("div",{className:"w-12 h-12 rounded-xl bg-green-500/20 flex items-center justify-center",children:e.jsx(on,{className:"w-6 h-6 text-green-400"})})]})})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-6",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"今日转化"}),e.jsx("p",{className:"text-2xl font-bold text-white mt-1",children:c.todayConversions})]}),e.jsx("div",{className:"w-12 h-12 rounded-xl bg-purple-500/20 flex items-center justify-center",children:e.jsx(Ff,{className:"w-6 h-6 text-purple-400"})})]})})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-6",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"今日佣金"}),e.jsxs("p",{className:"text-2xl font-bold text-[#38bdac] mt-1",children:["¥",c.todayEarnings.toFixed(2)]})]}),e.jsx("div",{className:"w-12 h-12 rounded-xl bg-[#38bdac]/20 flex items-center justify-center",children:e.jsx(Ml,{className:"w-6 h-6 text-[#38bdac]"})})]})})})]}),(((Se=c.todayClicksByPage)==null?void 0:Se.length)??0)>0&&e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Er,{className:"w-5 h-5 text-[#38bdac]"}),"每篇文章今日点击(按来源页/文章统计)"]}),e.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"实际用户与实际文章的点击均计入;今日总点击与上表一致"})]}),e.jsx(we,{children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gray-700 text-left text-gray-400",children:[e.jsx("th",{className:"pb-3 pr-4",children:"来源页/文章"}),e.jsx("th",{className:"pb-3 pr-4 text-right",children:"今日点击"}),e.jsx("th",{className:"pb-3 text-right",children:"占比"})]})}),e.jsx("tbody",{children:[...c.todayClicksByPage??[]].sort((D,fe)=>fe.clicks-D.clicks).map((D,fe)=>e.jsxs("tr",{className:"border-b border-gray-700/50",children:[e.jsx("td",{className:"py-2 pr-4 text-white font-mono",children:D.page||"(未区分)"}),e.jsx("td",{className:"py-2 pr-4 text-right text-white",children:D.clicks}),e.jsxs("td",{className:"py-2 text-right text-gray-400",children:[c.todayClicks>0?(D.clicks/c.todayClicks*100).toFixed(1):0,"%"]})]},fe))})]})})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(Ne,{className:"bg-orange-500/10 border-orange-500/30",children:e.jsx(we,{className:"p-6",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-orange-500/20 flex items-center justify-center",children:e.jsx(Yd,{className:"w-6 h-6 text-orange-400"})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("p",{className:"text-orange-300 font-medium",children:"即将过期绑定"}),e.jsxs("p",{className:"text-2xl font-bold text-white",children:[c.expiringBindings," 个"]}),e.jsx("p",{className:"text-orange-300/60 text-sm",children:"7天内到期,需关注转化"})]})]})})}),e.jsx(Ne,{className:"bg-blue-500/10 border-blue-500/30",children:e.jsx(we,{className:"p-6",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-blue-500/20 flex items-center justify-center",children:e.jsx(_a,{className:"w-6 h-6 text-blue-400"})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("p",{className:"text-blue-300 font-medium",children:"待审核提现"}),e.jsxs("p",{className:"text-2xl font-bold text-white",children:[c.pendingWithdrawals," 笔"]}),e.jsxs("p",{className:"text-blue-300/60 text-sm",children:["共 ¥",c.pendingWithdrawAmount.toFixed(2)]})]}),e.jsx(X,{onClick:()=>a("withdrawals"),variant:"outline",className:"border-blue-500/50 text-blue-400 hover:bg-blue-500/20",children:"去审核"})]})})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-6",children:[e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsx(Ke,{children:e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(oo,{className:"w-5 h-5 text-[#38bdac]"}),"本月统计"]})}),e.jsx(we,{children:e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"点击量"}),e.jsx("p",{className:"text-xl font-bold text-white",children:c.monthClicks})]}),e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"绑定数"}),e.jsx("p",{className:"text-xl font-bold text-white",children:c.monthBindings})]}),e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"转化数"}),e.jsx("p",{className:"text-xl font-bold text-white",children:c.monthConversions})]}),e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"佣金"}),e.jsxs("p",{className:"text-xl font-bold text-[#38bdac]",children:["¥",c.monthEarnings.toFixed(2)]})]})]})})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsx(Ke,{children:e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Pa,{className:"w-5 h-5 text-[#38bdac]"}),"累计统计"]})}),e.jsxs(we,{children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"总点击"}),e.jsx("p",{className:"text-xl font-bold text-white",children:c.totalClicks.toLocaleString()})]}),e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"总绑定"}),e.jsx("p",{className:"text-xl font-bold text-white",children:c.totalBindings.toLocaleString()})]}),e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"总转化"}),e.jsx("p",{className:"text-xl font-bold text-white",children:c.totalConversions})]}),e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"总佣金"}),e.jsxs("p",{className:"text-xl font-bold text-[#38bdac]",children:["¥",c.totalEarnings.toFixed(2)]})]})]}),e.jsxs("div",{className:"mt-4 p-4 bg-[#38bdac]/10 rounded-lg flex items-center justify-between",children:[e.jsx("span",{className:"text-gray-300",children:"点击转化率"}),e.jsxs("span",{className:"text-[#38bdac] font-bold text-xl",children:[c.conversionRate,"%"]})]})]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsx(Ke,{children:e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Yt,{className:"w-5 h-5 text-[#38bdac]"}),"推广统计"]})}),e.jsx(we,{children:e.jsxs("div",{className:"grid grid-cols-4 gap-4",children:[e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg text-center",children:[e.jsx("p",{className:"text-3xl font-bold text-white",children:c.totalDistributors}),e.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"推广用户数"})]}),e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg text-center",children:[e.jsx("p",{className:"text-3xl font-bold text-green-400",children:c.activeDistributors}),e.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"有收益用户"})]}),e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg text-center",children:[e.jsx("p",{className:"text-3xl font-bold text-[#38bdac]",children:"90%"}),e.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"佣金比例"})]}),e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg text-center",children:[e.jsx("p",{className:"text-3xl font-bold text-orange-400",children:"30天"}),e.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"绑定有效期"})]})]})})]})]}),r==="orders"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex gap-4",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(cn,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"}),e.jsx(le,{value:b,onChange:D=>N(D.target.value),placeholder:"搜索订单号、用户名、手机号...",className:"pl-10 bg-[#0f2137] border-gray-700 text-white"})]}),e.jsxs("select",{value:C,onChange:D=>j(D.target.value),className:"px-4 py-2 bg-[#0f2137] border border-gray-700 rounded-lg text-white",children:[e.jsx("option",{value:"all",children:"全部状态"}),e.jsx("option",{value:"completed",children:"已完成"}),e.jsx("option",{value:"pending",children:"待支付"}),e.jsx("option",{value:"failed",children:"已失败"}),e.jsx("option",{value:"refunded",children:"已退款"})]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsxs(we,{className:"p-0",children:[l.length===0?e.jsx("div",{className:"py-12 text-center text-gray-500",children:"暂无订单数据"}):e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-[#0a1628] text-gray-400",children:[e.jsx("th",{className:"p-4 text-left font-medium",children:"订单号"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"用户"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"商品"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"金额"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"支付方式"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"状态"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"退款原因"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"推荐人/邀请码"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"分销佣金"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"下单时间"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"操作"})]})}),e.jsx("tbody",{className:"divide-y divide-gray-700/50",children:de.map(D=>{var fe,ke;return e.jsxs("tr",{className:"hover:bg-[#0a1628] transition-colors",children:[e.jsxs("td",{className:"p-4 font-mono text-xs text-gray-400",children:[(fe=D.id)==null?void 0:fe.slice(0,12),"..."]}),e.jsx("td",{className:"p-4",children:e.jsxs("div",{children:[e.jsx("p",{className:"text-white text-sm",children:D.userNickname}),e.jsx("p",{className:"text-gray-500 text-xs",children:D.userPhone})]})}),e.jsx("td",{className:"p-4",children:e.jsxs("div",{children:[e.jsx("p",{className:"text-white text-sm",children:(()=>{const Ve=D.productType||D.type;return Ve==="fullbook"?`${D.bookName||"《底层逻辑》"} - 全本`:Ve==="match"?"匹配次数购买":`${D.bookName||"《底层逻辑》"} - ${D.sectionTitle||D.chapterTitle||`章节${D.productId||D.sectionId||""}`}`})()}),e.jsx("p",{className:"text-gray-500 text-xs",children:(()=>{const Ve=D.productType||D.type;return Ve==="fullbook"?"全书解锁":Ve==="match"?"功能权益":D.chapterTitle||"单章购买"})()})]})}),e.jsxs("td",{className:"p-4 text-[#38bdac] font-bold",children:["¥",typeof D.amount=="number"?D.amount.toFixed(2):parseFloat(String(D.amount||"0")).toFixed(2)]}),e.jsx("td",{className:"p-4 text-gray-300",children:D.paymentMethod==="wechat"?"微信支付":D.paymentMethod==="alipay"?"支付宝":D.paymentMethod||"微信支付"}),e.jsx("td",{className:"p-4",children:D.status==="refunded"?e.jsx(Le,{className:"bg-gray-500/20 text-gray-400 border-0",children:"已退款"}):D.status==="completed"||D.status==="paid"?e.jsx(Le,{className:"bg-green-500/20 text-green-400 border-0",children:"已完成"}):D.status==="pending"||D.status==="created"?e.jsx(Le,{className:"bg-yellow-500/20 text-yellow-400 border-0",children:"待支付"}):e.jsx(Le,{className:"bg-red-500/20 text-red-400 border-0",children:"已失败"})}),e.jsx("td",{className:"p-4 text-gray-400 text-sm max-w-[120px]",title:D.refundReason,children:D.status==="refunded"&&D.refundReason?D.refundReason:"-"}),e.jsx("td",{className:"p-4 text-gray-300 text-sm",children:D.referrerId||D.referralCode?e.jsxs("span",{title:D.referralCode||D.referrerCode||D.referrerId||"",children:[D.referrerNickname||D.referralCode||D.referrerCode||((ke=D.referrerId)==null?void 0:ke.slice(0,8)),(D.referralCode||D.referrerCode)&&` (${D.referralCode||D.referrerCode})`]}):"-"}),e.jsx("td",{className:"p-4 text-[#FFD700]",children:D.referrerEarnings?`¥${(typeof D.referrerEarnings=="number"?D.referrerEarnings:parseFloat(String(D.referrerEarnings))).toFixed(2)}`:"-"}),e.jsx("td",{className:"p-4 text-gray-400 text-sm",children:D.createdAt?new Date(D.createdAt).toLocaleString("zh-CN"):"-"}),e.jsx("td",{className:"p-4",children:(D.status==="paid"||D.status==="completed")&&e.jsxs(X,{variant:"outline",size:"sm",className:"border-orange-500/50 text-orange-400 hover:bg-orange-500/20",onClick:()=>{Q(D),H("")},children:[e.jsx(Qx,{className:"w-3 h-3 mr-1"}),"退款"]})})]},D.id)})})]})}),r==="orders"&&e.jsx(Qs,{page:I,totalPages:G,total:k,pageSize:V,onPageChange:U,onPageSizeChange:D=>{_(D),U(1)}})]})})]}),r==="bindings"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex gap-4",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(cn,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"}),e.jsx(le,{value:b,onChange:D=>N(D.target.value),placeholder:"搜索用户昵称、手机号、推广码...",className:"pl-10 bg-[#0f2137] border-gray-700 text-white"})]}),e.jsxs("select",{value:C,onChange:D=>j(D.target.value),className:"px-4 py-2 bg-[#0f2137] border border-gray-700 rounded-lg text-white",children:[e.jsx("option",{value:"all",children:"全部状态"}),e.jsx("option",{value:"active",children:"有效"}),e.jsx("option",{value:"converted",children:"已转化"}),e.jsx("option",{value:"expired",children:"已过期"})]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsxs(we,{className:"p-0",children:[Y.length===0?e.jsx("div",{className:"py-12 text-center text-gray-500",children:"暂无绑定数据"}):e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-[#0a1628] text-gray-400",children:[e.jsx("th",{className:"p-4 text-left font-medium",children:"访客"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"分销商"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"绑定时间"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"到期时间"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"状态"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"佣金"})]})}),e.jsx("tbody",{className:"divide-y divide-gray-700/50",children:Y.map(D=>e.jsxs("tr",{className:"hover:bg-[#0a1628] transition-colors",children:[e.jsx("td",{className:"p-4",children:e.jsxs("div",{children:[e.jsx("p",{className:"text-white font-medium",children:D.refereeNickname||"匿名用户"}),e.jsx("p",{className:"text-gray-500 text-xs",children:D.refereePhone})]})}),e.jsx("td",{className:"p-4",children:e.jsxs("div",{children:[e.jsx("p",{className:"text-white",children:D.referrerName||"-"}),e.jsx("p",{className:"text-gray-500 text-xs font-mono",children:D.referrerCode})]})}),e.jsx("td",{className:"p-4 text-gray-400",children:D.boundAt?new Date(D.boundAt).toLocaleDateString("zh-CN"):"-"}),e.jsx("td",{className:"p-4 text-gray-400",children:D.expiresAt?new Date(D.expiresAt).toLocaleDateString("zh-CN"):"-"}),e.jsx("td",{className:"p-4",children:J(D.status)}),e.jsx("td",{className:"p-4",children:D.commission?e.jsxs("span",{className:"text-[#38bdac] font-medium",children:["¥",D.commission.toFixed(2)]}):e.jsx("span",{className:"text-gray-500",children:"-"})})]},D.id))})]})}),r==="bindings"&&e.jsx(Qs,{page:I,totalPages:G,total:k,pageSize:V,onPageChange:U,onPageSizeChange:D=>{_(D),U(1)}})]})})]}),r==="withdrawals"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex gap-4",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(cn,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"}),e.jsx(le,{value:b,onChange:D=>N(D.target.value),placeholder:"搜索用户名称、账号...",className:"pl-10 bg-[#0f2137] border-gray-700 text-white"})]}),e.jsxs("select",{value:C,onChange:D=>j(D.target.value),className:"px-4 py-2 bg-[#0f2137] border border-gray-700 rounded-lg text-white",children:[e.jsx("option",{value:"all",children:"全部状态"}),e.jsx("option",{value:"pending",children:"待审核"}),e.jsx("option",{value:"completed",children:"已完成"}),e.jsx("option",{value:"rejected",children:"已拒绝"})]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsxs(we,{className:"p-0",children:[ge.length===0?e.jsx("div",{className:"py-12 text-center text-gray-500",children:"暂无提现记录"}):e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-[#0a1628] text-gray-400",children:[e.jsx("th",{className:"p-4 text-left font-medium",children:"申请人"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"金额"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"收款方式"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"收款账号"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"申请时间"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"状态"}),e.jsx("th",{className:"p-4 text-right font-medium",children:"操作"})]})}),e.jsx("tbody",{className:"divide-y divide-gray-700/50",children:ge.map(D=>e.jsxs("tr",{className:"hover:bg-[#0a1628] transition-colors",children:[e.jsx("td",{className:"p-4",children:e.jsxs("div",{className:"flex items-center gap-2",children:[D.userAvatar?e.jsx("img",{src:D.userAvatar,alt:"",className:"w-8 h-8 rounded-full object-cover"}):e.jsx("div",{className:"w-8 h-8 rounded-full bg-gray-600 flex items-center justify-center text-white text-sm font-medium",children:(D.userName||D.name||"?").slice(0,1)}),e.jsx("p",{className:"text-white font-medium",children:D.userName||D.name})]})}),e.jsx("td",{className:"p-4",children:e.jsxs("span",{className:"text-[#38bdac] font-bold",children:["¥",D.amount.toFixed(2)]})}),e.jsx("td",{className:"p-4",children:e.jsx(Le,{className:D.method==="wechat"?"bg-green-500/20 text-green-400 border-0":"bg-blue-500/20 text-blue-400 border-0",children:D.method==="wechat"?"微信":"支付宝"})}),e.jsx("td",{className:"p-4",children:e.jsxs("div",{children:[e.jsx("p",{className:"text-white font-mono text-xs",children:D.account}),e.jsx("p",{className:"text-gray-500 text-xs",children:D.name})]})}),e.jsx("td",{className:"p-4 text-gray-400",children:D.createdAt?new Date(D.createdAt).toLocaleString("zh-CN"):"-"}),e.jsx("td",{className:"p-4",children:J(D.status)}),e.jsx("td",{className:"p-4 text-right",children:D.status==="pending"&&e.jsxs("div",{className:"flex gap-2 justify-end",children:[e.jsxs(X,{size:"sm",onClick:()=>A(D.id),className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Ff,{className:"w-4 h-4 mr-1"}),"通过"]}),e.jsxs(X,{size:"sm",variant:"outline",onClick:()=>O(D.id),className:"border-red-500/50 text-red-400 hover:bg-red-500/20",children:[e.jsx(Wx,{className:"w-4 h-4 mr-1"}),"拒绝"]})]})})]},D.id))})]})}),r==="withdrawals"&&e.jsx(Qs,{page:I,totalPages:G,total:k,pageSize:V,onPageChange:U,onPageSizeChange:D=>{_(D),U(1)}})]})})]})]}),e.jsx(Ct,{open:!!ae,onOpenChange:D=>!D&&Q(null),children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",children:[e.jsx(kt,{children:e.jsx(Et,{className:"text-white",children:"订单退款"})}),ae&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("p",{className:"text-gray-400 text-sm",children:["订单号:",ae.orderSn||ae.id]}),e.jsxs("p",{className:"text-gray-400 text-sm",children:["退款金额:¥",typeof ae.amount=="number"?ae.amount.toFixed(2):parseFloat(String(ae.amount||"0")).toFixed(2)]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm text-gray-400 block mb-2",children:"退款原因(选填)"}),e.jsx("div",{className:"form-input",children:e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",placeholder:"如:用户申请退款",value:se,onChange:D=>H(D.target.value)})})]}),e.jsx("p",{className:"text-orange-400/80 text-xs",children:"退款将原路退回至用户微信,且无法撤销,请确认后再操作。"})]}),e.jsxs(Dt,{children:[e.jsx(X,{variant:"outline",className:"border-gray-600 text-gray-300",onClick:()=>Q(null),disabled:oe,children:"取消"}),e.jsx(X,{className:"bg-orange-500 hover:bg-orange-600 text-white",onClick:L,disabled:oe,children:oe?"退款中...":"确认退款"})]})]})}),r==="settings"&&e.jsx("div",{className:"-mx-8 -mt-6",children:e.jsx(I0,{embedded:!0})})]})}function c4(){const[r,a]=h.useState([]),[l,o]=h.useState({total:0,pendingCount:0,pendingAmount:0,successCount:0,successAmount:0,failedCount:0}),[c,u]=h.useState(!0),[m,f]=h.useState(null),[g,y]=h.useState("all"),[p,v]=h.useState(1),[E,P]=h.useState(10),[T,w]=h.useState(0),[b,N]=h.useState(null);async function C(){var _,k,R,Z,ne,ae,Q;u(!0),f(null);try{const se=new URLSearchParams({status:g,page:String(p),pageSize:String(E)}),H=await Be(`/api/admin/withdrawals?${se}`);if(H!=null&&H.success){const oe=H.withdrawals||[];a(oe),w(H.total??((_=H.stats)==null?void 0:_.total)??oe.length),o({total:((k=H.stats)==null?void 0:k.total)??H.total??oe.length,pendingCount:((R=H.stats)==null?void 0:R.pendingCount)??0,pendingAmount:((Z=H.stats)==null?void 0:Z.pendingAmount)??0,successCount:((ne=H.stats)==null?void 0:ne.successCount)??0,successAmount:((ae=H.stats)==null?void 0:ae.successAmount)??0,failedCount:((Q=H.stats)==null?void 0:Q.failedCount)??0})}else f("加载提现记录失败")}catch(se){console.error("Load withdrawals error:",se),f("加载失败,请检查网络后重试")}finally{u(!1)}}h.useEffect(()=>{v(1)},[g]),h.useEffect(()=>{C()},[g,p,E]);const j=Math.ceil(T/E)||1;async function I(_){const k=r.find(R=>R.id===_);if(k!=null&&k.userCommissionInfo&&k.userCommissionInfo.availableAfterThis<0){if(!confirm(`⚠️ 风险警告:该用户审核后余额为负数(¥${k.userCommissionInfo.availableAfterThis.toFixed(2)}),可能存在超额提现。 +如有缓存,请刷新前台/小程序页面。`)}catch(y){console.error(y),alert("保存失败: "+(y instanceof Error?y.message:String(y)))}finally{m(!1)}},p=y=>g=>{const v=parseFloat(g.target.value||"0");l(k=>({...k,[y]:isNaN(v)?0:v}))};return o?e.jsx("div",{className:"p-8 text-gray-500",children:"加载中..."}):e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-8",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[e.jsx(Ma,{className:"w-5 h-5 text-[#38bdac]"}),"推广 / 分销设置"]}),e.jsx("p",{className:"text-gray-400 mt-1",children:"统一管理「好友优惠」「你得 90% 收益」「绑定期 30 天」「提现门槛」等规则,小程序和 Web 共用这套配置。"})]}),e.jsxs(J,{onClick:f,disabled:u||o,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),u?"保存中...":"保存配置"]})]}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"flex items-center gap-2 text-white",children:[e.jsx(qb,{className:"w-4 h-4 text-[#38bdac]"}),"推广规则"]}),e.jsx(jt,{className:"text-gray-400",children:"这三项会直接体现在小程序「推广规则」卡片上,同时影响实收佣金计算。"})]}),e.jsx(we,{className:"space-y-6",children:e.jsxs("div",{className:"grid grid-cols-3 gap-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{className:"text-gray-300 flex items-center gap-2",children:[e.jsx(Yi,{className:"w-3 h-3 text-[#38bdac]"}),"好友优惠(%)"]}),e.jsx(le,{type:"number",min:0,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:a.userDiscount,onChange:p("userDiscount")}),e.jsx("p",{className:"text-xs text-gray-500",children:"例如 5 表示好友立减 5%(在价格配置基础上生效)。"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{className:"text-gray-300 flex items-center gap-2",children:[e.jsx(Yt,{className:"w-3 h-3 text-[#38bdac]"}),"推广者分成(%)"]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(l4,{className:"flex-1",min:10,max:100,step:1,value:[a.distributorShare],onValueChange:([y])=>l(g=>({...g,distributorShare:y}))}),e.jsx(le,{type:"number",min:0,max:100,className:"w-20 bg-[#0a1628] border-gray-700 text-white text-center",value:a.distributorShare,onChange:p("distributorShare")})]}),e.jsxs("p",{className:"text-xs text-gray-500",children:["内容订单佣金 = 订单金额 ×"," ",e.jsxs("span",{className:"text-[#38bdac] font-mono",children:[a.distributorShare,"%"]}),";会员订单见下方。"]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{className:"text-gray-300 flex items-center gap-2",children:[e.jsx(Yi,{className:"w-3 h-3 text-[#38bdac]"}),"会员订单分润(推广者是会员 %)"]}),e.jsx(le,{type:"number",min:0,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:a.vipOrderShareVip,onChange:p("vipOrderShareVip")}),e.jsx("p",{className:"text-xs text-gray-500",children:"推广者已是会员时,会员订单佣金比例,默认 20%。"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{className:"text-gray-300 flex items-center gap-2",children:[e.jsx(Yi,{className:"w-3 h-3 text-[#38bdac]"}),"会员订单分润(推广者非会员 %)"]}),e.jsx(le,{type:"number",min:0,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:a.vipOrderShareNonVip,onChange:p("vipOrderShareNonVip")}),e.jsx("p",{className:"text-xs text-gray-500",children:"推广者非会员时,会员订单佣金比例,默认 10%。"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{className:"text-gray-300 flex items-center gap-2",children:[e.jsx(Yt,{className:"w-3 h-3 text-[#38bdac]"}),"绑定有效期(天)"]}),e.jsx(le,{type:"number",min:1,max:365,className:"bg-[#0a1628] border-gray-700 text-white",value:a.bindingDays,onChange:p("bindingDays")}),e.jsx("p",{className:"text-xs text-gray-500",children:"好友通过你的链接进来并登录后,绑定在你名下的天数。"})]})]})})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"flex items-center gap-2 text-white",children:[e.jsx(Ma,{className:"w-4 h-4 text-[#38bdac]"}),"提现规则"]}),e.jsx(jt,{className:"text-gray-400",children:"与「提现中心」「自动提现」相关的参数,影响推广者看到的可提现金额和最低门槛。"})]}),e.jsx(we,{className:"space-y-6",children:e.jsxs("div",{className:"grid grid-cols-2 gap-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"最低提现金额(元)"}),e.jsx(le,{type:"number",min:0,step:1,className:"bg-[#0a1628] border-gray-700 text-white",value:a.minWithdrawAmount,onChange:p("minWithdrawAmount")}),e.jsx("p",{className:"text-xs text-gray-500",children:"小程序「满 X 元可提现」展示的门槛,同时用于后端接口校验。"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{className:"text-gray-300 flex items-center gap-2",children:["自动提现开关",e.jsx(Le,{variant:"outline",className:"border-[#38bdac]/40 text-[#38bdac] text-[10px]",children:"预留"})]}),e.jsxs("div",{className:"flex items-center gap-3 mt-1",children:[e.jsx(ot,{checked:a.enableAutoWithdraw,onCheckedChange:y=>l(g=>({...g,enableAutoWithdraw:y}))}),e.jsx("span",{className:"text-sm text-gray-400",children:"开启后,可结合定时任务实现「收益自动打款到微信零钱」。"})]})]})]})})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsx(Ke,{children:e.jsxs(Ge,{className:"flex items-center gap-2 text-gray-200 text-sm",children:[e.jsx(Yi,{className:"w-4 h-4 text-[#38bdac]"}),"使用说明"]})}),e.jsxs(we,{className:"space-y-2 text-xs text-gray-400 leading-relaxed",children:[e.jsxs("p",{children:["1. 以上配置会写入"," ",e.jsx("code",{className:"font-mono text-[11px] text-[#38bdac]",children:"system_config.referral_config"}),",小程序「推广中心」、Web 推广页以及支付回调都会读取同一份配置。"]}),e.jsx("p",{children:"2. 修改后新订单立即生效;旧订单的历史佣金不会自动重算,只影响之后产生的订单。"}),e.jsx("p",{children:"3. 如遇前端展示与实际结算不一致,优先以此处配置为准,再排查缓存和小程序版本。"})]})]})]})]})}function o4(){var Se;const[r,a]=h.useState("overview"),[l,o]=h.useState([]),[c,u]=h.useState(null),[m,f]=h.useState([]),[p,y]=h.useState([]),[g,v]=h.useState([]),[k,P]=h.useState(!0),[T,w]=h.useState(null),[N,b]=h.useState(""),[S,j]=h.useState("all"),[_,O]=h.useState(1),[V,I]=h.useState(10),[R,E]=h.useState(0),[Y,ne]=h.useState(new Set),[ae,q]=h.useState(null),[se,H]=h.useState(""),[ie,ve]=h.useState(!1);h.useEffect(()=>{U()},[]),h.useEffect(()=>{O(1)},[r,S]),h.useEffect(()=>{ce(r)},[r]),h.useEffect(()=>{["orders","bindings","withdrawals"].includes(r)&&ce(r,!0)},[_,V,S,N]);async function U(){w(null);try{const D=await Be("/api/admin/distribution/overview");D!=null&&D.success&&D.overview&&u(D.overview)}catch(D){console.error("[Admin] 概览接口异常:",D),w("加载概览失败")}try{const D=await Be("/api/db/users");v((D==null?void 0:D.users)||[])}catch(D){console.error("[Admin] 用户数据加载失败:",D)}}async function ce(D,fe=!1){var ke;if(!(!fe&&Y.has(D))){P(!0);try{const Ve=g;switch(D){case"overview":break;case"orders":{try{const We=new URLSearchParams({page:String(_),pageSize:String(V),...S!=="all"&&{status:S},...N&&{search:N}}),Ye=await Be(`/api/orders?${We}`);if(Ye!=null&&Ye.success&&Ye.orders){const tt=Ye.orders.map(ze=>{const he=Ve.find(ft=>ft.id===ze.userId),xe=ze.referrerId?Ve.find(ft=>ft.id===ze.referrerId):null;return{...ze,amount:parseFloat(String(ze.amount))||0,userNickname:(he==null?void 0:he.nickname)||ze.userNickname||"未知用户",userPhone:(he==null?void 0:he.phone)||ze.userPhone||"-",referrerNickname:(xe==null?void 0:xe.nickname)||null,referrerCode:(xe==null?void 0:xe.referralCode)??null,type:ze.productType||ze.type}});o(tt),E(Ye.total??tt.length)}else o([]),E(0)}catch(We){console.error(We),w("加载订单失败"),o([])}break}case"bindings":{try{const We=new URLSearchParams({page:String(_),pageSize:String(V),...S!=="all"&&{status:S}}),Ye=await Be(`/api/db/distribution?${We}`);f((Ye==null?void 0:Ye.bindings)||[]),E((Ye==null?void 0:Ye.total)??((ke=Ye==null?void 0:Ye.bindings)==null?void 0:ke.length)??0)}catch(We){console.error(We),w("加载绑定数据失败"),f([])}break}case"withdrawals":{try{const We=S==="completed"?"success":S==="rejected"?"failed":S,Ye=new URLSearchParams({...We&&We!=="all"&&{status:We},page:String(_),pageSize:String(V)}),tt=await Be(`/api/admin/withdrawals?${Ye}`);if(tt!=null&&tt.success&&tt.withdrawals){const ze=tt.withdrawals.map(he=>({...he,account:he.account??"未绑定微信号",status:he.status==="success"?"completed":he.status==="failed"?"rejected":he.status}));y(ze),E((tt==null?void 0:tt.total)??ze.length)}else tt!=null&&tt.success||w(`获取提现记录失败: ${(tt==null?void 0:tt.error)||"未知错误"}`),y([])}catch(We){console.error(We),w("加载提现数据失败"),y([])}break}}ne(We=>new Set(We).add(D))}catch(Ve){console.error(Ve)}finally{P(!1)}}}async function K(){w(null),ne(D=>{const fe=new Set(D);return fe.delete(r),fe}),r==="overview"&&U(),await ce(r,!0)}async function A(D){if(confirm("确认审核通过并打款?"))try{const fe=await vt("/api/admin/withdrawals",{id:D,action:"approve"});if(!(fe!=null&&fe.success)){const ke=(fe==null?void 0:fe.message)||(fe==null?void 0:fe.error)||"操作失败";alert(ke);return}await K()}catch(fe){console.error(fe),alert("操作失败")}}async function F(D){const fe=prompt("请输入拒绝原因:");if(fe)try{const ke=await vt("/api/admin/withdrawals",{id:D,action:"reject",errorMessage:fe});if(!(ke!=null&&ke.success)){alert((ke==null?void 0:ke.error)||"操作失败");return}await K()}catch(ke){console.error(ke),alert("操作失败")}}async function L(){var D;if(!(!(ae!=null&&ae.orderSn)&&!(ae!=null&&ae.id))){ve(!0),w(null);try{const fe=await vt("/api/admin/orders/refund",{orderSn:ae.orderSn||ae.id,reason:se||void 0});fe!=null&&fe.success?(q(null),H(""),await ce("orders",!0)):w((fe==null?void 0:fe.error)||"退款失败")}catch(fe){const ke=fe;w(((D=ke==null?void 0:ke.data)==null?void 0:D.error)||"退款失败,请检查网络后重试")}finally{ve(!1)}}}function Z(D){const fe={active:"bg-green-500/20 text-green-400",converted:"bg-blue-500/20 text-blue-400",expired:"bg-gray-500/20 text-gray-400",cancelled:"bg-red-500/20 text-red-400",pending:"bg-orange-500/20 text-orange-400",pending_confirm:"bg-orange-500/20 text-orange-400",processing:"bg-blue-500/20 text-blue-400",completed:"bg-green-500/20 text-green-400",rejected:"bg-red-500/20 text-red-400"},ke={active:"有效",converted:"已转化",expired:"已过期",cancelled:"已取消",pending:"待审核",pending_confirm:"待用户确认",processing:"处理中",completed:"已完成",rejected:"已拒绝"};return e.jsx(Le,{className:`${fe[D]||"bg-gray-500/20 text-gray-400"} border-0`,children:ke[D]||D})}const G=Math.ceil(R/V)||1,de=l,Q=m.filter(D=>{var ke,Ve,We,Ye;if(!N)return!0;const fe=N.toLowerCase();return((ke=D.refereeNickname)==null?void 0:ke.toLowerCase().includes(fe))||((Ve=D.refereePhone)==null?void 0:Ve.includes(fe))||((We=D.referrerName)==null?void 0:We.toLowerCase().includes(fe))||((Ye=D.referrerCode)==null?void 0:Ye.toLowerCase().includes(fe))}),ge=p.filter(D=>{var ke;if(!N)return!0;const fe=N.toLowerCase();return((ke=D.userName)==null?void 0:ke.toLowerCase().includes(fe))||D.account&&D.account.toLowerCase().includes(fe)});return e.jsxs("div",{className:"p-8 w-full",children:[T&&e.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[e.jsx("span",{children:T}),e.jsx("button",{type:"button",onClick:()=>w(null),className:"hover:text-red-300",children:"×"})]}),e.jsxs("div",{className:"flex items-center justify-between mb-8",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-white",children:"推广中心"}),e.jsx("p",{className:"text-gray-400 mt-1",children:"统一管理:订单、分销绑定、提现审核"})]}),e.jsxs(J,{onClick:K,disabled:k,variant:"outline",className:"border-gray-700 text-gray-300 hover:bg-gray-800",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${k?"animate-spin":""}`}),"刷新数据"]})]}),e.jsx("div",{className:"flex gap-2 mb-6 border-b border-gray-700 pb-4 flex-wrap",children:[{key:"overview",label:"数据概览",icon:Ta},{key:"orders",label:"订单管理",icon:Ml},{key:"bindings",label:"绑定管理",icon:on},{key:"withdrawals",label:"提现审核",icon:Ma},{key:"settings",label:"推广设置",icon:Bn}].map(D=>e.jsxs("button",{type:"button",onClick:()=>{a(D.key),j("all"),b("")},className:`flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-medium transition-colors ${r===D.key?"bg-[#38bdac] text-white":"text-gray-400 hover:text-white hover:bg-gray-800"}`,children:[e.jsx(D.icon,{className:"w-4 h-4"}),D.label]},D.key))}),k?e.jsxs("div",{className:"flex items-center justify-center py-20",children:[e.jsx($e,{className:"w-8 h-8 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):e.jsxs(e.Fragment,{children:[r==="overview"&&c&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-4 gap-4",children:[e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-6",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"今日点击"}),e.jsx("p",{className:"text-2xl font-bold text-white mt-1",children:c.todayClicks}),e.jsx("p",{className:"text-xs text-gray-500 mt-0.5",children:"总点击次数(实时)"})]}),e.jsx("div",{className:"w-12 h-12 rounded-xl bg-blue-500/20 flex items-center justify-center",children:e.jsx(Er,{className:"w-6 h-6 text-blue-400"})})]})})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-6",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"今日独立用户"}),e.jsx("p",{className:"text-2xl font-bold text-white mt-1",children:c.todayUniqueVisitors??0}),e.jsx("p",{className:"text-xs text-gray-500 mt-0.5",children:"去重访客数(实时)"})]}),e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-500/20 flex items-center justify-center",children:e.jsx(Yt,{className:"w-6 h-6 text-cyan-400"})})]})})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-6",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"今日总文章点击率"}),e.jsx("p",{className:"text-2xl font-bold text-white mt-1",children:(c.todayClickRate??0).toFixed(2)}),e.jsx("p",{className:"text-xs text-gray-500 mt-0.5",children:"人均点击(总点击/独立用户)"})]}),e.jsx("div",{className:"w-12 h-12 rounded-xl bg-amber-500/20 flex items-center justify-center",children:e.jsx(Ta,{className:"w-6 h-6 text-amber-400"})})]})})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-6",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"今日绑定"}),e.jsx("p",{className:"text-2xl font-bold text-white mt-1",children:c.todayBindings})]}),e.jsx("div",{className:"w-12 h-12 rounded-xl bg-green-500/20 flex items-center justify-center",children:e.jsx(on,{className:"w-6 h-6 text-green-400"})})]})})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-6",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"今日转化"}),e.jsx("p",{className:"text-2xl font-bold text-white mt-1",children:c.todayConversions})]}),e.jsx("div",{className:"w-12 h-12 rounded-xl bg-purple-500/20 flex items-center justify-center",children:e.jsx(Ff,{className:"w-6 h-6 text-purple-400"})})]})})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-6",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"今日佣金"}),e.jsxs("p",{className:"text-2xl font-bold text-[#38bdac] mt-1",children:["¥",c.todayEarnings.toFixed(2)]})]}),e.jsx("div",{className:"w-12 h-12 rounded-xl bg-[#38bdac]/20 flex items-center justify-center",children:e.jsx(Ml,{className:"w-6 h-6 text-[#38bdac]"})})]})})})]}),(((Se=c.todayClicksByPage)==null?void 0:Se.length)??0)>0&&e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Er,{className:"w-5 h-5 text-[#38bdac]"}),"每篇文章今日点击(按来源页/文章统计)"]}),e.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"实际用户与实际文章的点击均计入;今日总点击与上表一致"})]}),e.jsx(we,{children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gray-700 text-left text-gray-400",children:[e.jsx("th",{className:"pb-3 pr-4",children:"来源页/文章"}),e.jsx("th",{className:"pb-3 pr-4 text-right",children:"今日点击"}),e.jsx("th",{className:"pb-3 text-right",children:"占比"})]})}),e.jsx("tbody",{children:[...c.todayClicksByPage??[]].sort((D,fe)=>fe.clicks-D.clicks).map((D,fe)=>e.jsxs("tr",{className:"border-b border-gray-700/50",children:[e.jsx("td",{className:"py-2 pr-4 text-white font-mono",children:D.page||"(未区分)"}),e.jsx("td",{className:"py-2 pr-4 text-right text-white",children:D.clicks}),e.jsxs("td",{className:"py-2 text-right text-gray-400",children:[c.todayClicks>0?(D.clicks/c.todayClicks*100).toFixed(1):0,"%"]})]},fe))})]})})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(Ne,{className:"bg-orange-500/10 border-orange-500/30",children:e.jsx(we,{className:"p-6",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-orange-500/20 flex items-center justify-center",children:e.jsx(Yd,{className:"w-6 h-6 text-orange-400"})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("p",{className:"text-orange-300 font-medium",children:"即将过期绑定"}),e.jsxs("p",{className:"text-2xl font-bold text-white",children:[c.expiringBindings," 个"]}),e.jsx("p",{className:"text-orange-300/60 text-sm",children:"7天内到期,需关注转化"})]})]})})}),e.jsx(Ne,{className:"bg-blue-500/10 border-blue-500/30",children:e.jsx(we,{className:"p-6",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-blue-500/20 flex items-center justify-center",children:e.jsx(Ma,{className:"w-6 h-6 text-blue-400"})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("p",{className:"text-blue-300 font-medium",children:"待审核提现"}),e.jsxs("p",{className:"text-2xl font-bold text-white",children:[c.pendingWithdrawals," 笔"]}),e.jsxs("p",{className:"text-blue-300/60 text-sm",children:["共 ¥",c.pendingWithdrawAmount.toFixed(2)]})]}),e.jsx(J,{onClick:()=>a("withdrawals"),variant:"outline",className:"border-blue-500/50 text-blue-400 hover:bg-blue-500/20",children:"去审核"})]})})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-6",children:[e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsx(Ke,{children:e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(oo,{className:"w-5 h-5 text-[#38bdac]"}),"本月统计"]})}),e.jsx(we,{children:e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"点击量"}),e.jsx("p",{className:"text-xl font-bold text-white",children:c.monthClicks})]}),e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"绑定数"}),e.jsx("p",{className:"text-xl font-bold text-white",children:c.monthBindings})]}),e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"转化数"}),e.jsx("p",{className:"text-xl font-bold text-white",children:c.monthConversions})]}),e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"佣金"}),e.jsxs("p",{className:"text-xl font-bold text-[#38bdac]",children:["¥",c.monthEarnings.toFixed(2)]})]})]})})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsx(Ke,{children:e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Ta,{className:"w-5 h-5 text-[#38bdac]"}),"累计统计"]})}),e.jsxs(we,{children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"总点击"}),e.jsx("p",{className:"text-xl font-bold text-white",children:c.totalClicks.toLocaleString()})]}),e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"总绑定"}),e.jsx("p",{className:"text-xl font-bold text-white",children:c.totalBindings.toLocaleString()})]}),e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"总转化"}),e.jsx("p",{className:"text-xl font-bold text-white",children:c.totalConversions})]}),e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg",children:[e.jsx("p",{className:"text-gray-400 text-sm",children:"总佣金"}),e.jsxs("p",{className:"text-xl font-bold text-[#38bdac]",children:["¥",c.totalEarnings.toFixed(2)]})]})]}),e.jsxs("div",{className:"mt-4 p-4 bg-[#38bdac]/10 rounded-lg flex items-center justify-between",children:[e.jsx("span",{className:"text-gray-300",children:"点击转化率"}),e.jsxs("span",{className:"text-[#38bdac] font-bold text-xl",children:[c.conversionRate,"%"]})]})]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsx(Ke,{children:e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Yt,{className:"w-5 h-5 text-[#38bdac]"}),"推广统计"]})}),e.jsx(we,{children:e.jsxs("div",{className:"grid grid-cols-4 gap-4",children:[e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg text-center",children:[e.jsx("p",{className:"text-3xl font-bold text-white",children:c.totalDistributors}),e.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"推广用户数"})]}),e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg text-center",children:[e.jsx("p",{className:"text-3xl font-bold text-green-400",children:c.activeDistributors}),e.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"有收益用户"})]}),e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg text-center",children:[e.jsx("p",{className:"text-3xl font-bold text-[#38bdac]",children:"90%"}),e.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"佣金比例"})]}),e.jsxs("div",{className:"p-4 bg-white/5 rounded-lg text-center",children:[e.jsx("p",{className:"text-3xl font-bold text-orange-400",children:"30天"}),e.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"绑定有效期"})]})]})})]})]}),r==="orders"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex gap-4",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(cn,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"}),e.jsx(le,{value:N,onChange:D=>b(D.target.value),placeholder:"搜索订单号、用户名、手机号...",className:"pl-10 bg-[#0f2137] border-gray-700 text-white"})]}),e.jsxs("select",{value:S,onChange:D=>j(D.target.value),className:"px-4 py-2 bg-[#0f2137] border border-gray-700 rounded-lg text-white",children:[e.jsx("option",{value:"all",children:"全部状态"}),e.jsx("option",{value:"completed",children:"已完成"}),e.jsx("option",{value:"pending",children:"待支付"}),e.jsx("option",{value:"failed",children:"已失败"}),e.jsx("option",{value:"refunded",children:"已退款"})]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsxs(we,{className:"p-0",children:[l.length===0?e.jsx("div",{className:"py-12 text-center text-gray-500",children:"暂无订单数据"}):e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-[#0a1628] text-gray-400",children:[e.jsx("th",{className:"p-4 text-left font-medium",children:"订单号"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"用户"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"商品"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"金额"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"支付方式"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"状态"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"退款原因"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"推荐人/邀请码"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"分销佣金"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"下单时间"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"操作"})]})}),e.jsx("tbody",{className:"divide-y divide-gray-700/50",children:de.map(D=>{var fe,ke;return e.jsxs("tr",{className:"hover:bg-[#0a1628] transition-colors",children:[e.jsxs("td",{className:"p-4 font-mono text-xs text-gray-400",children:[(fe=D.id)==null?void 0:fe.slice(0,12),"..."]}),e.jsx("td",{className:"p-4",children:e.jsxs("div",{children:[e.jsx("p",{className:"text-white text-sm",children:D.userNickname}),e.jsx("p",{className:"text-gray-500 text-xs",children:D.userPhone})]})}),e.jsx("td",{className:"p-4",children:e.jsxs("div",{children:[e.jsx("p",{className:"text-white text-sm",children:(()=>{const Ve=D.productType||D.type;return Ve==="fullbook"?`${D.bookName||"《底层逻辑》"} - 全本`:Ve==="match"?"匹配次数购买":`${D.bookName||"《底层逻辑》"} - ${D.sectionTitle||D.chapterTitle||`章节${D.productId||D.sectionId||""}`}`})()}),e.jsx("p",{className:"text-gray-500 text-xs",children:(()=>{const Ve=D.productType||D.type;return Ve==="fullbook"?"全书解锁":Ve==="match"?"功能权益":D.chapterTitle||"单章购买"})()})]})}),e.jsxs("td",{className:"p-4 text-[#38bdac] font-bold",children:["¥",typeof D.amount=="number"?D.amount.toFixed(2):parseFloat(String(D.amount||"0")).toFixed(2)]}),e.jsx("td",{className:"p-4 text-gray-300",children:D.paymentMethod==="wechat"?"微信支付":D.paymentMethod==="alipay"?"支付宝":D.paymentMethod||"微信支付"}),e.jsx("td",{className:"p-4",children:D.status==="refunded"?e.jsx(Le,{className:"bg-gray-500/20 text-gray-400 border-0",children:"已退款"}):D.status==="completed"||D.status==="paid"?e.jsx(Le,{className:"bg-green-500/20 text-green-400 border-0",children:"已完成"}):D.status==="pending"||D.status==="created"?e.jsx(Le,{className:"bg-yellow-500/20 text-yellow-400 border-0",children:"待支付"}):e.jsx(Le,{className:"bg-red-500/20 text-red-400 border-0",children:"已失败"})}),e.jsx("td",{className:"p-4 text-gray-400 text-sm max-w-[120px]",title:D.refundReason,children:D.status==="refunded"&&D.refundReason?D.refundReason:"-"}),e.jsx("td",{className:"p-4 text-gray-300 text-sm",children:D.referrerId||D.referralCode?e.jsxs("span",{title:D.referralCode||D.referrerCode||D.referrerId||"",children:[D.referrerNickname||D.referralCode||D.referrerCode||((ke=D.referrerId)==null?void 0:ke.slice(0,8)),(D.referralCode||D.referrerCode)&&` (${D.referralCode||D.referrerCode})`]}):"-"}),e.jsx("td",{className:"p-4 text-[#FFD700]",children:D.referrerEarnings?`¥${(typeof D.referrerEarnings=="number"?D.referrerEarnings:parseFloat(String(D.referrerEarnings))).toFixed(2)}`:"-"}),e.jsx("td",{className:"p-4 text-gray-400 text-sm",children:D.createdAt?new Date(D.createdAt).toLocaleString("zh-CN"):"-"}),e.jsx("td",{className:"p-4",children:(D.status==="paid"||D.status==="completed")&&e.jsxs(J,{variant:"outline",size:"sm",className:"border-orange-500/50 text-orange-400 hover:bg-orange-500/20",onClick:()=>{q(D),H("")},children:[e.jsx(Qx,{className:"w-3 h-3 mr-1"}),"退款"]})})]},D.id)})})]})}),r==="orders"&&e.jsx(Qs,{page:_,totalPages:G,total:R,pageSize:V,onPageChange:O,onPageSizeChange:D=>{I(D),O(1)}})]})})]}),r==="bindings"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex gap-4",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(cn,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"}),e.jsx(le,{value:N,onChange:D=>b(D.target.value),placeholder:"搜索用户昵称、手机号、推广码...",className:"pl-10 bg-[#0f2137] border-gray-700 text-white"})]}),e.jsxs("select",{value:S,onChange:D=>j(D.target.value),className:"px-4 py-2 bg-[#0f2137] border border-gray-700 rounded-lg text-white",children:[e.jsx("option",{value:"all",children:"全部状态"}),e.jsx("option",{value:"active",children:"有效"}),e.jsx("option",{value:"converted",children:"已转化"}),e.jsx("option",{value:"expired",children:"已过期"})]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsxs(we,{className:"p-0",children:[Q.length===0?e.jsx("div",{className:"py-12 text-center text-gray-500",children:"暂无绑定数据"}):e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-[#0a1628] text-gray-400",children:[e.jsx("th",{className:"p-4 text-left font-medium",children:"访客"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"分销商"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"绑定时间"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"到期时间"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"状态"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"佣金"})]})}),e.jsx("tbody",{className:"divide-y divide-gray-700/50",children:Q.map(D=>e.jsxs("tr",{className:"hover:bg-[#0a1628] transition-colors",children:[e.jsx("td",{className:"p-4",children:e.jsxs("div",{children:[e.jsx("p",{className:"text-white font-medium",children:D.refereeNickname||"匿名用户"}),e.jsx("p",{className:"text-gray-500 text-xs",children:D.refereePhone})]})}),e.jsx("td",{className:"p-4",children:e.jsxs("div",{children:[e.jsx("p",{className:"text-white",children:D.referrerName||"-"}),e.jsx("p",{className:"text-gray-500 text-xs font-mono",children:D.referrerCode})]})}),e.jsx("td",{className:"p-4 text-gray-400",children:D.boundAt?new Date(D.boundAt).toLocaleDateString("zh-CN"):"-"}),e.jsx("td",{className:"p-4 text-gray-400",children:D.expiresAt?new Date(D.expiresAt).toLocaleDateString("zh-CN"):"-"}),e.jsx("td",{className:"p-4",children:Z(D.status)}),e.jsx("td",{className:"p-4",children:D.commission?e.jsxs("span",{className:"text-[#38bdac] font-medium",children:["¥",D.commission.toFixed(2)]}):e.jsx("span",{className:"text-gray-500",children:"-"})})]},D.id))})]})}),r==="bindings"&&e.jsx(Qs,{page:_,totalPages:G,total:R,pageSize:V,onPageChange:O,onPageSizeChange:D=>{I(D),O(1)}})]})})]}),r==="withdrawals"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex gap-4",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(cn,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"}),e.jsx(le,{value:N,onChange:D=>b(D.target.value),placeholder:"搜索用户名称、账号...",className:"pl-10 bg-[#0f2137] border-gray-700 text-white"})]}),e.jsxs("select",{value:S,onChange:D=>j(D.target.value),className:"px-4 py-2 bg-[#0f2137] border border-gray-700 rounded-lg text-white",children:[e.jsx("option",{value:"all",children:"全部状态"}),e.jsx("option",{value:"pending",children:"待审核"}),e.jsx("option",{value:"completed",children:"已完成"}),e.jsx("option",{value:"rejected",children:"已拒绝"})]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsxs(we,{className:"p-0",children:[ge.length===0?e.jsx("div",{className:"py-12 text-center text-gray-500",children:"暂无提现记录"}):e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-[#0a1628] text-gray-400",children:[e.jsx("th",{className:"p-4 text-left font-medium",children:"申请人"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"金额"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"收款方式"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"收款账号"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"申请时间"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"状态"}),e.jsx("th",{className:"p-4 text-right font-medium",children:"操作"})]})}),e.jsx("tbody",{className:"divide-y divide-gray-700/50",children:ge.map(D=>e.jsxs("tr",{className:"hover:bg-[#0a1628] transition-colors",children:[e.jsx("td",{className:"p-4",children:e.jsxs("div",{className:"flex items-center gap-2",children:[D.userAvatar?e.jsx("img",{src:D.userAvatar,alt:"",className:"w-8 h-8 rounded-full object-cover"}):e.jsx("div",{className:"w-8 h-8 rounded-full bg-gray-600 flex items-center justify-center text-white text-sm font-medium",children:(D.userName||D.name||"?").slice(0,1)}),e.jsx("p",{className:"text-white font-medium",children:D.userName||D.name})]})}),e.jsx("td",{className:"p-4",children:e.jsxs("span",{className:"text-[#38bdac] font-bold",children:["¥",D.amount.toFixed(2)]})}),e.jsx("td",{className:"p-4",children:e.jsx(Le,{className:D.method==="wechat"?"bg-green-500/20 text-green-400 border-0":"bg-blue-500/20 text-blue-400 border-0",children:D.method==="wechat"?"微信":"支付宝"})}),e.jsx("td",{className:"p-4",children:e.jsxs("div",{children:[e.jsx("p",{className:"text-white font-mono text-xs",children:D.account}),e.jsx("p",{className:"text-gray-500 text-xs",children:D.name})]})}),e.jsx("td",{className:"p-4 text-gray-400",children:D.createdAt?new Date(D.createdAt).toLocaleString("zh-CN"):"-"}),e.jsx("td",{className:"p-4",children:Z(D.status)}),e.jsx("td",{className:"p-4 text-right",children:D.status==="pending"&&e.jsxs("div",{className:"flex gap-2 justify-end",children:[e.jsxs(J,{size:"sm",onClick:()=>A(D.id),className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Ff,{className:"w-4 h-4 mr-1"}),"通过"]}),e.jsxs(J,{size:"sm",variant:"outline",onClick:()=>F(D.id),className:"border-red-500/50 text-red-400 hover:bg-red-500/20",children:[e.jsx(Wx,{className:"w-4 h-4 mr-1"}),"拒绝"]})]})})]},D.id))})]})}),r==="withdrawals"&&e.jsx(Qs,{page:_,totalPages:G,total:R,pageSize:V,onPageChange:O,onPageSizeChange:D=>{I(D),O(1)}})]})})]})]}),e.jsx(Ct,{open:!!ae,onOpenChange:D=>!D&&q(null),children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",children:[e.jsx(kt,{children:e.jsx(Et,{className:"text-white",children:"订单退款"})}),ae&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("p",{className:"text-gray-400 text-sm",children:["订单号:",ae.orderSn||ae.id]}),e.jsxs("p",{className:"text-gray-400 text-sm",children:["退款金额:¥",typeof ae.amount=="number"?ae.amount.toFixed(2):parseFloat(String(ae.amount||"0")).toFixed(2)]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm text-gray-400 block mb-2",children:"退款原因(选填)"}),e.jsx("div",{className:"form-input",children:e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",placeholder:"如:用户申请退款",value:se,onChange:D=>H(D.target.value)})})]}),e.jsx("p",{className:"text-orange-400/80 text-xs",children:"退款将原路退回至用户微信,且无法撤销,请确认后再操作。"})]}),e.jsxs(Dt,{children:[e.jsx(J,{variant:"outline",className:"border-gray-600 text-gray-300",onClick:()=>q(null),disabled:ie,children:"取消"}),e.jsx(J,{className:"bg-orange-500 hover:bg-orange-600 text-white",onClick:L,disabled:ie,children:ie?"退款中...":"确认退款"})]})]})}),r==="settings"&&e.jsx("div",{className:"-mx-8 -mt-6",children:e.jsx(I0,{embedded:!0})})]})}function c4(){const[r,a]=h.useState([]),[l,o]=h.useState({total:0,pendingCount:0,pendingAmount:0,successCount:0,successAmount:0,failedCount:0}),[c,u]=h.useState(!0),[m,f]=h.useState(null),[p,y]=h.useState("all"),[g,v]=h.useState(1),[k,P]=h.useState(10),[T,w]=h.useState(0),[N,b]=h.useState(null);async function S(){var I,R,E,Y,ne,ae,q;u(!0),f(null);try{const se=new URLSearchParams({status:p,page:String(g),pageSize:String(k)}),H=await Be(`/api/admin/withdrawals?${se}`);if(H!=null&&H.success){const ie=H.withdrawals||[];a(ie),w(H.total??((I=H.stats)==null?void 0:I.total)??ie.length),o({total:((R=H.stats)==null?void 0:R.total)??H.total??ie.length,pendingCount:((E=H.stats)==null?void 0:E.pendingCount)??0,pendingAmount:((Y=H.stats)==null?void 0:Y.pendingAmount)??0,successCount:((ne=H.stats)==null?void 0:ne.successCount)??0,successAmount:((ae=H.stats)==null?void 0:ae.successAmount)??0,failedCount:((q=H.stats)==null?void 0:q.failedCount)??0})}else f("加载提现记录失败")}catch(se){console.error("Load withdrawals error:",se),f("加载失败,请检查网络后重试")}finally{u(!1)}}h.useEffect(()=>{v(1)},[p]),h.useEffect(()=>{S()},[p,g,k]);const j=Math.ceil(T/k)||1;async function _(I){const R=r.find(E=>E.id===I);if(R!=null&&R.userCommissionInfo&&R.userCommissionInfo.availableAfterThis<0){if(!confirm(`⚠️ 风险警告:该用户审核后余额为负数(¥${R.userCommissionInfo.availableAfterThis.toFixed(2)}),可能存在超额提现。 -确认已核实用户账户并完成打款?`))return}else if(!confirm("确认已完成打款?批准后将更新用户提现记录。"))return;N(_);try{const R=await vt("/api/admin/withdrawals",{id:_,action:"approve"});R!=null&&R.success?C():alert("操作失败: "+((R==null?void 0:R.error)??""))}catch{alert("操作失败")}finally{N(null)}}async function U(_){const k=prompt("请输入拒绝原因(将返还用户余额):");if(k){N(_);try{const R=await vt("/api/admin/withdrawals",{id:_,action:"reject",errorMessage:k});R!=null&&R.success?C():alert("操作失败: "+((R==null?void 0:R.error)??""))}catch{alert("操作失败")}finally{N(null)}}}function V(_){switch(_){case"pending":return e.jsx(Le,{className:"bg-orange-500/20 text-orange-400 hover:bg-orange-500/20 border-0",children:"待处理"});case"pending_confirm":return e.jsx(Le,{className:"bg-orange-500/20 text-orange-400 hover:bg-orange-500/20 border-0",children:"待用户确认"});case"processing":return e.jsx(Le,{className:"bg-blue-500/20 text-blue-400 hover:bg-blue-500/20 border-0",children:"已审批等待打款"});case"success":case"completed":return e.jsx(Le,{className:"bg-green-500/20 text-green-400 hover:bg-green-500/20 border-0",children:"已完成"});case"failed":case"rejected":return e.jsx(Le,{className:"bg-red-500/20 text-red-400 hover:bg-red-500/20 border-0",children:"已拒绝"});default:return e.jsx(Le,{className:"bg-gray-500/20 text-gray-400 border-0",children:_})}}return e.jsxs("div",{className:"p-8 w-full",children:[m&&e.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[e.jsx("span",{children:m}),e.jsx("button",{type:"button",onClick:()=>f(null),className:"hover:text-red-300",children:"×"})]}),e.jsxs("div",{className:"flex justify-between items-start mb-8",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-white",children:"分账提现管理"}),e.jsx("p",{className:"text-gray-400 mt-1",children:"管理用户分销收益的提现申请"})]}),e.jsxs(X,{variant:"outline",onClick:C,disabled:c,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${c?"animate-spin":""}`}),"刷新"]})]}),e.jsx(Ne,{className:"bg-gradient-to-r from-[#38bdac]/10 to-[#0f2137] border-[#38bdac]/30 mb-6",children:e.jsx(we,{className:"p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Ml,{className:"w-5 h-5 text-[#38bdac] mt-0.5"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-white font-medium mb-2",children:"自动分账规则"}),e.jsxs("div",{className:"text-sm text-gray-400 space-y-1",children:[e.jsxs("p",{children:["• ",e.jsx("span",{className:"text-[#38bdac]",children:"分销比例"}),":推广者获得订单金额的"," ",e.jsx("span",{className:"text-white font-medium",children:"90%"})]}),e.jsxs("p",{children:["• ",e.jsx("span",{className:"text-[#38bdac]",children:"结算方式"}),":用户付款后,分销收益自动计入推广者账户"]}),e.jsxs("p",{children:["• ",e.jsx("span",{className:"text-[#38bdac]",children:"提现方式"}),":用户在小程序端点击提现,系统自动转账到微信零钱"]}),e.jsxs("p",{children:["• ",e.jsx("span",{className:"text-[#38bdac]",children:"审批流程"}),":待处理的提现需管理员手动确认打款后批准"]})]})]})]})})}),e.jsxs("div",{className:"grid grid-cols-4 gap-4 mb-6",children:[e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsxs(we,{className:"p-4 text-center",children:[e.jsx("div",{className:"text-3xl font-bold text-[#38bdac]",children:l.total}),e.jsx("div",{className:"text-sm text-gray-400",children:"总申请"})]})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsxs(we,{className:"p-4 text-center",children:[e.jsx("div",{className:"text-3xl font-bold text-orange-400",children:l.pendingCount}),e.jsx("div",{className:"text-sm text-gray-400",children:"待处理"}),e.jsxs("div",{className:"text-xs text-orange-400 mt-1",children:["¥",l.pendingAmount.toFixed(2)]})]})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsxs(we,{className:"p-4 text-center",children:[e.jsx("div",{className:"text-3xl font-bold text-green-400",children:l.successCount}),e.jsx("div",{className:"text-sm text-gray-400",children:"已完成"}),e.jsxs("div",{className:"text-xs text-green-400 mt-1",children:["¥",l.successAmount.toFixed(2)]})]})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsxs(we,{className:"p-4 text-center",children:[e.jsx("div",{className:"text-3xl font-bold text-red-400",children:l.failedCount}),e.jsx("div",{className:"text-sm text-gray-400",children:"已拒绝"})]})})]}),e.jsx("div",{className:"flex gap-2 mb-4",children:["all","pending","success","failed"].map(_=>e.jsx(X,{variant:g===_?"default":"outline",size:"sm",onClick:()=>y(_),className:g===_?"bg-[#38bdac] hover:bg-[#2da396] text-white":"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:_==="all"?"全部":_==="pending"?"待处理":_==="success"?"已完成":"已拒绝"},_))}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:e.jsx(we,{className:"p-0",children:c?e.jsxs("div",{className:"flex items-center justify-center py-12",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):r.length===0?e.jsxs("div",{className:"text-center py-12",children:[e.jsx(_a,{className:"w-12 h-12 text-gray-600 mx-auto mb-3"}),e.jsx("p",{className:"text-gray-500",children:"暂无提现记录"})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-[#0a1628] text-gray-400",children:[e.jsx("th",{className:"p-4 text-left font-medium",children:"申请时间"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"用户"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"提现金额"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"用户佣金信息"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"状态"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"处理时间"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"确认收款"}),e.jsx("th",{className:"p-4 text-right font-medium",children:"操作"})]})}),e.jsx("tbody",{className:"divide-y divide-gray-700/50",children:r.map(_=>e.jsxs("tr",{className:"hover:bg-[#0a1628] transition-colors",children:[e.jsx("td",{className:"p-4 text-gray-400",children:new Date(_.createdAt??"").toLocaleString()}),e.jsx("td",{className:"p-4",children:e.jsxs("div",{className:"flex items-center gap-2",children:[_.userAvatar?e.jsx("img",{src:_.userAvatar,alt:_.userName??"",className:"w-8 h-8 rounded-full object-cover"}):e.jsx("div",{className:"w-8 h-8 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm text-[#38bdac]",children:(_.userName??"?").charAt(0)}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-white",children:_.userName??"未知"}),e.jsx("p",{className:"text-xs text-gray-500",children:_.userPhone??_.referralCode??(_.userId??"").slice(0,10)})]})]})}),e.jsx("td",{className:"p-4",children:e.jsxs("span",{className:"font-bold text-orange-400",children:["¥",Number(_.amount).toFixed(2)]})}),e.jsx("td",{className:"p-4",children:_.userCommissionInfo?e.jsxs("div",{className:"text-xs space-y-1",children:[e.jsxs("div",{className:"flex justify-between gap-4",children:[e.jsx("span",{className:"text-gray-500",children:"累计佣金:"}),e.jsxs("span",{className:"text-[#38bdac] font-medium",children:["¥",_.userCommissionInfo.totalCommission.toFixed(2)]})]}),e.jsxs("div",{className:"flex justify-between gap-4",children:[e.jsx("span",{className:"text-gray-500",children:"已提现:"}),e.jsxs("span",{className:"text-gray-400",children:["¥",_.userCommissionInfo.withdrawnEarnings.toFixed(2)]})]}),e.jsxs("div",{className:"flex justify-between gap-4",children:[e.jsx("span",{className:"text-gray-500",children:"待审核:"}),e.jsxs("span",{className:"text-orange-400",children:["¥",_.userCommissionInfo.pendingWithdrawals.toFixed(2)]})]}),e.jsxs("div",{className:"flex justify-between gap-4 pt-1 border-t border-gray-700/30",children:[e.jsx("span",{className:"text-gray-500",children:"审核后余额:"}),e.jsxs("span",{className:_.userCommissionInfo.availableAfterThis>=0?"text-green-400 font-medium":"text-red-400 font-medium",children:["¥",_.userCommissionInfo.availableAfterThis.toFixed(2)]})]})]}):e.jsx("span",{className:"text-gray-500 text-xs",children:"暂无数据"})}),e.jsxs("td",{className:"p-4",children:[V(_.status),_.errorMessage&&e.jsx("p",{className:"text-xs text-red-400 mt-1",children:_.errorMessage})]}),e.jsx("td",{className:"p-4 text-gray-400",children:_.processedAt?new Date(_.processedAt).toLocaleString():"-"}),e.jsx("td",{className:"p-4 text-gray-400",children:_.userConfirmedAt?e.jsxs("span",{className:"text-green-400",title:_.userConfirmedAt,children:["已确认 ",new Date(_.userConfirmedAt).toLocaleString()]}):"-"}),e.jsxs("td",{className:"p-4 text-right",children:[(_.status==="pending"||_.status==="pending_confirm")&&e.jsxs("div",{className:"flex items-center justify-end gap-2",children:[e.jsxs(X,{size:"sm",onClick:()=>I(_.id),disabled:b===_.id,className:"bg-green-600 hover:bg-green-700 text-white",children:[e.jsx(wo,{className:"w-4 h-4 mr-1"}),"批准"]}),e.jsxs(X,{size:"sm",variant:"outline",onClick:()=>U(_.id),disabled:b===_.id,className:"border-red-500/50 text-red-400 hover:bg-red-500/10 bg-transparent",children:[e.jsx(ms,{className:"w-4 h-4 mr-1"}),"拒绝"]})]}),(_.status==="success"||_.status==="completed")&&_.transactionId&&e.jsx("span",{className:"text-xs text-gray-500 font-mono",children:_.transactionId})]})]},_.id))})]})}),e.jsx(Qs,{page:p,totalPages:j,total:T,pageSize:E,onPageChange:v,onPageSizeChange:_=>{P(_),v(1)}})]})})})]})}const d4=["top","right","bottom","left"],mn=Math.min,ws=Math.max,po=Math.round,ro=Math.floor,cr=r=>({x:r,y:r}),u4={left:"right",right:"left",bottom:"top",top:"bottom"},h4={start:"end",end:"start"};function au(r,a,l){return ws(r,mn(a,l))}function Tr(r,a){return typeof r=="function"?r(a):r}function Rr(r){return r.split("-")[0]}function Ua(r){return r.split("-")[1]}function Ou(r){return r==="x"?"y":"x"}function Fu(r){return r==="y"?"height":"width"}const m4=new Set(["top","bottom"]);function or(r){return m4.has(Rr(r))?"y":"x"}function zu(r){return Ou(or(r))}function f4(r,a,l){l===void 0&&(l=!1);const o=Ua(r),c=zu(r),u=Fu(c);let m=c==="x"?o===(l?"end":"start")?"right":"left":o==="start"?"bottom":"top";return a.reference[u]>a.floating[u]&&(m=go(m)),[m,go(m)]}function x4(r){const a=go(r);return[lu(r),a,lu(a)]}function lu(r){return r.replace(/start|end/g,a=>h4[a])}const cx=["left","right"],dx=["right","left"],p4=["top","bottom"],g4=["bottom","top"];function y4(r,a,l){switch(r){case"top":case"bottom":return l?a?dx:cx:a?cx:dx;case"left":case"right":return a?p4:g4;default:return[]}}function v4(r,a,l,o){const c=Ua(r);let u=y4(Rr(r),l==="start",o);return c&&(u=u.map(m=>m+"-"+c),a&&(u=u.concat(u.map(lu)))),u}function go(r){return r.replace(/left|right|bottom|top/g,a=>u4[a])}function j4(r){return{top:0,right:0,bottom:0,left:0,...r}}function _0(r){return typeof r!="number"?j4(r):{top:r,right:r,bottom:r,left:r}}function yo(r){const{x:a,y:l,width:o,height:c}=r;return{width:o,height:c,top:l,left:a,right:a+o,bottom:l+c,x:a,y:l}}function ux(r,a,l){let{reference:o,floating:c}=r;const u=or(a),m=zu(a),f=Fu(m),g=Rr(a),y=u==="y",p=o.x+o.width/2-c.width/2,v=o.y+o.height/2-c.height/2,E=o[f]/2-c[f]/2;let P;switch(g){case"top":P={x:p,y:o.y-c.height};break;case"bottom":P={x:p,y:o.y+o.height};break;case"right":P={x:o.x+o.width,y:v};break;case"left":P={x:o.x-c.width,y:v};break;default:P={x:o.x,y:o.y}}switch(Ua(a)){case"start":P[m]-=E*(l&&y?-1:1);break;case"end":P[m]+=E*(l&&y?-1:1);break}return P}async function b4(r,a){var l;a===void 0&&(a={});const{x:o,y:c,platform:u,rects:m,elements:f,strategy:g}=r,{boundary:y="clippingAncestors",rootBoundary:p="viewport",elementContext:v="floating",altBoundary:E=!1,padding:P=0}=Tr(a,r),T=_0(P),b=f[E?v==="floating"?"reference":"floating":v],N=yo(await u.getClippingRect({element:(l=await(u.isElement==null?void 0:u.isElement(b)))==null||l?b:b.contextElement||await(u.getDocumentElement==null?void 0:u.getDocumentElement(f.floating)),boundary:y,rootBoundary:p,strategy:g})),C=v==="floating"?{x:o,y:c,width:m.floating.width,height:m.floating.height}:m.reference,j=await(u.getOffsetParent==null?void 0:u.getOffsetParent(f.floating)),I=await(u.isElement==null?void 0:u.isElement(j))?await(u.getScale==null?void 0:u.getScale(j))||{x:1,y:1}:{x:1,y:1},U=yo(u.convertOffsetParentRelativeRectToViewportRelativeRect?await u.convertOffsetParentRelativeRectToViewportRelativeRect({elements:f,rect:C,offsetParent:j,strategy:g}):C);return{top:(N.top-U.top+T.top)/I.y,bottom:(U.bottom-N.bottom+T.bottom)/I.y,left:(N.left-U.left+T.left)/I.x,right:(U.right-N.right+T.right)/I.x}}const N4=async(r,a,l)=>{const{placement:o="bottom",strategy:c="absolute",middleware:u=[],platform:m}=l,f=u.filter(Boolean),g=await(m.isRTL==null?void 0:m.isRTL(a));let y=await m.getElementRects({reference:r,floating:a,strategy:c}),{x:p,y:v}=ux(y,o,g),E=o,P={},T=0;for(let b=0;b({name:"arrow",options:r,async fn(a){const{x:l,y:o,placement:c,rects:u,platform:m,elements:f,middlewareData:g}=a,{element:y,padding:p=0}=Tr(r,a)||{};if(y==null)return{};const v=_0(p),E={x:l,y:o},P=zu(c),T=Fu(P),w=await m.getDimensions(y),b=P==="y",N=b?"top":"left",C=b?"bottom":"right",j=b?"clientHeight":"clientWidth",I=u.reference[T]+u.reference[P]-E[P]-u.floating[T],U=E[P]-u.reference[P],V=await(m.getOffsetParent==null?void 0:m.getOffsetParent(y));let _=V?V[j]:0;(!_||!await(m.isElement==null?void 0:m.isElement(V)))&&(_=f.floating[j]||u.floating[T]);const k=I/2-U/2,R=_/2-w[T]/2-1,Z=mn(v[N],R),ne=mn(v[C],R),ae=Z,Q=_-w[T]-ne,se=_/2-w[T]/2+k,H=au(ae,se,Q),oe=!g.arrow&&Ua(c)!=null&&se!==H&&u.reference[T]/2-(sese<=0)){var ne,ae;const se=(((ne=u.flip)==null?void 0:ne.index)||0)+1,H=_[se];if(H&&(!(v==="alignment"?C!==or(H):!1)||Z.every(B=>or(B.placement)===C?B.overflows[0]>0:!0)))return{data:{index:se,overflows:Z},reset:{placement:H}};let oe=(ae=Z.filter(ve=>ve.overflows[0]<=0).sort((ve,B)=>ve.overflows[1]-B.overflows[1])[0])==null?void 0:ae.placement;if(!oe)switch(P){case"bestFit":{var Q;const ve=(Q=Z.filter(B=>{if(V){const ce=or(B.placement);return ce===C||ce==="y"}return!0}).map(B=>[B.placement,B.overflows.filter(ce=>ce>0).reduce((ce,K)=>ce+K,0)]).sort((B,ce)=>B[1]-ce[1])[0])==null?void 0:Q[0];ve&&(oe=ve);break}case"initialPlacement":oe=f;break}if(c!==oe)return{reset:{placement:oe}}}return{}}}};function hx(r,a){return{top:r.top-a.height,right:r.right-a.width,bottom:r.bottom-a.height,left:r.left-a.width}}function mx(r){return d4.some(a=>r[a]>=0)}const C4=function(r){return r===void 0&&(r={}),{name:"hide",options:r,async fn(a){const{rects:l,platform:o}=a,{strategy:c="referenceHidden",...u}=Tr(r,a);switch(c){case"referenceHidden":{const m=await o.detectOverflow(a,{...u,elementContext:"reference"}),f=hx(m,l.reference);return{data:{referenceHiddenOffsets:f,referenceHidden:mx(f)}}}case"escaped":{const m=await o.detectOverflow(a,{...u,altBoundary:!0}),f=hx(m,l.floating);return{data:{escapedOffsets:f,escaped:mx(f)}}}default:return{}}}}},M0=new Set(["left","top"]);async function k4(r,a){const{placement:l,platform:o,elements:c}=r,u=await(o.isRTL==null?void 0:o.isRTL(c.floating)),m=Rr(l),f=Ua(l),g=or(l)==="y",y=M0.has(m)?-1:1,p=u&&g?-1:1,v=Tr(a,r);let{mainAxis:E,crossAxis:P,alignmentAxis:T}=typeof v=="number"?{mainAxis:v,crossAxis:0,alignmentAxis:null}:{mainAxis:v.mainAxis||0,crossAxis:v.crossAxis||0,alignmentAxis:v.alignmentAxis};return f&&typeof T=="number"&&(P=f==="end"?T*-1:T),g?{x:P*p,y:E*y}:{x:E*y,y:P*p}}const E4=function(r){return r===void 0&&(r=0),{name:"offset",options:r,async fn(a){var l,o;const{x:c,y:u,placement:m,middlewareData:f}=a,g=await k4(a,r);return m===((l=f.offset)==null?void 0:l.placement)&&(o=f.arrow)!=null&&o.alignmentOffset?{}:{x:c+g.x,y:u+g.y,data:{...g,placement:m}}}}},P4=function(r){return r===void 0&&(r={}),{name:"shift",options:r,async fn(a){const{x:l,y:o,placement:c,platform:u}=a,{mainAxis:m=!0,crossAxis:f=!1,limiter:g={fn:N=>{let{x:C,y:j}=N;return{x:C,y:j}}},...y}=Tr(r,a),p={x:l,y:o},v=await u.detectOverflow(a,y),E=or(Rr(c)),P=Ou(E);let T=p[P],w=p[E];if(m){const N=P==="y"?"top":"left",C=P==="y"?"bottom":"right",j=T+v[N],I=T-v[C];T=au(j,T,I)}if(f){const N=E==="y"?"top":"left",C=E==="y"?"bottom":"right",j=w+v[N],I=w-v[C];w=au(j,w,I)}const b=g.fn({...a,[P]:T,[E]:w});return{...b,data:{x:b.x-l,y:b.y-o,enabled:{[P]:m,[E]:f}}}}}},T4=function(r){return r===void 0&&(r={}),{options:r,fn(a){const{x:l,y:o,placement:c,rects:u,middlewareData:m}=a,{offset:f=0,mainAxis:g=!0,crossAxis:y=!0}=Tr(r,a),p={x:l,y:o},v=or(c),E=Ou(v);let P=p[E],T=p[v];const w=Tr(f,a),b=typeof w=="number"?{mainAxis:w,crossAxis:0}:{mainAxis:0,crossAxis:0,...w};if(g){const j=E==="y"?"height":"width",I=u.reference[E]-u.floating[j]+b.mainAxis,U=u.reference[E]+u.reference[j]-b.mainAxis;PU&&(P=U)}if(y){var N,C;const j=E==="y"?"width":"height",I=M0.has(Rr(c)),U=u.reference[v]-u.floating[j]+(I&&((N=m.offset)==null?void 0:N[v])||0)+(I?0:b.crossAxis),V=u.reference[v]+u.reference[j]+(I?0:((C=m.offset)==null?void 0:C[v])||0)-(I?b.crossAxis:0);TV&&(T=V)}return{[E]:P,[v]:T}}}},R4=function(r){return r===void 0&&(r={}),{name:"size",options:r,async fn(a){var l,o;const{placement:c,rects:u,platform:m,elements:f}=a,{apply:g=()=>{},...y}=Tr(r,a),p=await m.detectOverflow(a,y),v=Rr(c),E=Ua(c),P=or(c)==="y",{width:T,height:w}=u.floating;let b,N;v==="top"||v==="bottom"?(b=v,N=E===(await(m.isRTL==null?void 0:m.isRTL(f.floating))?"start":"end")?"left":"right"):(N=v,b=E==="end"?"top":"bottom");const C=w-p.top-p.bottom,j=T-p.left-p.right,I=mn(w-p[b],C),U=mn(T-p[N],j),V=!a.middlewareData.shift;let _=I,k=U;if((l=a.middlewareData.shift)!=null&&l.enabled.x&&(k=j),(o=a.middlewareData.shift)!=null&&o.enabled.y&&(_=C),V&&!E){const Z=ws(p.left,0),ne=ws(p.right,0),ae=ws(p.top,0),Q=ws(p.bottom,0);P?k=T-2*(Z!==0||ne!==0?Z+ne:ws(p.left,p.right)):_=w-2*(ae!==0||Q!==0?ae+Q:ws(p.top,p.bottom))}await g({...a,availableWidth:k,availableHeight:_});const R=await m.getDimensions(f.floating);return T!==R.width||w!==R.height?{reset:{rects:!0}}:{}}}};function Io(){return typeof window<"u"}function Va(r){return A0(r)?(r.nodeName||"").toLowerCase():"#document"}function Ss(r){var a;return(r==null||(a=r.ownerDocument)==null?void 0:a.defaultView)||window}function ur(r){var a;return(a=(A0(r)?r.ownerDocument:r.document)||window.document)==null?void 0:a.documentElement}function A0(r){return Io()?r instanceof Node||r instanceof Ss(r).Node:!1}function Xs(r){return Io()?r instanceof Element||r instanceof Ss(r).Element:!1}function dr(r){return Io()?r instanceof HTMLElement||r instanceof Ss(r).HTMLElement:!1}function fx(r){return!Io()||typeof ShadowRoot>"u"?!1:r instanceof ShadowRoot||r instanceof Ss(r).ShadowRoot}const I4=new Set(["inline","contents"]);function Bl(r){const{overflow:a,overflowX:l,overflowY:o,display:c}=Js(r);return/auto|scroll|overlay|hidden|clip/.test(a+o+l)&&!I4.has(c)}const _4=new Set(["table","td","th"]);function M4(r){return _4.has(Va(r))}const A4=[":popover-open",":modal"];function _o(r){return A4.some(a=>{try{return r.matches(a)}catch{return!1}})}const D4=["transform","translate","scale","rotate","perspective"],L4=["transform","translate","scale","rotate","perspective","filter"],O4=["paint","layout","strict","content"];function $u(r){const a=Bu(),l=Xs(r)?Js(r):r;return D4.some(o=>l[o]?l[o]!=="none":!1)||(l.containerType?l.containerType!=="normal":!1)||!a&&(l.backdropFilter?l.backdropFilter!=="none":!1)||!a&&(l.filter?l.filter!=="none":!1)||L4.some(o=>(l.willChange||"").includes(o))||O4.some(o=>(l.contain||"").includes(o))}function F4(r){let a=fn(r);for(;dr(a)&&!Aa(a);){if($u(a))return a;if(_o(a))return null;a=fn(a)}return null}function Bu(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const z4=new Set(["html","body","#document"]);function Aa(r){return z4.has(Va(r))}function Js(r){return Ss(r).getComputedStyle(r)}function Mo(r){return Xs(r)?{scrollLeft:r.scrollLeft,scrollTop:r.scrollTop}:{scrollLeft:r.scrollX,scrollTop:r.scrollY}}function fn(r){if(Va(r)==="html")return r;const a=r.assignedSlot||r.parentNode||fx(r)&&r.host||ur(r);return fx(a)?a.host:a}function D0(r){const a=fn(r);return Aa(a)?r.ownerDocument?r.ownerDocument.body:r.body:dr(a)&&Bl(a)?a:D0(a)}function Ll(r,a,l){var o;a===void 0&&(a=[]),l===void 0&&(l=!0);const c=D0(r),u=c===((o=r.ownerDocument)==null?void 0:o.body),m=Ss(c);if(u){const f=iu(m);return a.concat(m,m.visualViewport||[],Bl(c)?c:[],f&&l?Ll(f):[])}return a.concat(c,Ll(c,[],l))}function iu(r){return r.parent&&Object.getPrototypeOf(r.parent)?r.frameElement:null}function L0(r){const a=Js(r);let l=parseFloat(a.width)||0,o=parseFloat(a.height)||0;const c=dr(r),u=c?r.offsetWidth:l,m=c?r.offsetHeight:o,f=po(l)!==u||po(o)!==m;return f&&(l=u,o=m),{width:l,height:o,$:f}}function Uu(r){return Xs(r)?r:r.contextElement}function Ia(r){const a=Uu(r);if(!dr(a))return cr(1);const l=a.getBoundingClientRect(),{width:o,height:c,$:u}=L0(a);let m=(u?po(l.width):l.width)/o,f=(u?po(l.height):l.height)/c;return(!m||!Number.isFinite(m))&&(m=1),(!f||!Number.isFinite(f))&&(f=1),{x:m,y:f}}const $4=cr(0);function O0(r){const a=Ss(r);return!Bu()||!a.visualViewport?$4:{x:a.visualViewport.offsetLeft,y:a.visualViewport.offsetTop}}function B4(r,a,l){return a===void 0&&(a=!1),!l||a&&l!==Ss(r)?!1:a}function Vn(r,a,l,o){a===void 0&&(a=!1),l===void 0&&(l=!1);const c=r.getBoundingClientRect(),u=Uu(r);let m=cr(1);a&&(o?Xs(o)&&(m=Ia(o)):m=Ia(r));const f=B4(u,l,o)?O0(u):cr(0);let g=(c.left+f.x)/m.x,y=(c.top+f.y)/m.y,p=c.width/m.x,v=c.height/m.y;if(u){const E=Ss(u),P=o&&Xs(o)?Ss(o):o;let T=E,w=iu(T);for(;w&&o&&P!==T;){const b=Ia(w),N=w.getBoundingClientRect(),C=Js(w),j=N.left+(w.clientLeft+parseFloat(C.paddingLeft))*b.x,I=N.top+(w.clientTop+parseFloat(C.paddingTop))*b.y;g*=b.x,y*=b.y,p*=b.x,v*=b.y,g+=j,y+=I,T=Ss(w),w=iu(T)}}return yo({width:p,height:v,x:g,y})}function Ao(r,a){const l=Mo(r).scrollLeft;return a?a.left+l:Vn(ur(r)).left+l}function F0(r,a){const l=r.getBoundingClientRect(),o=l.left+a.scrollLeft-Ao(r,l),c=l.top+a.scrollTop;return{x:o,y:c}}function U4(r){let{elements:a,rect:l,offsetParent:o,strategy:c}=r;const u=c==="fixed",m=ur(o),f=a?_o(a.floating):!1;if(o===m||f&&u)return l;let g={scrollLeft:0,scrollTop:0},y=cr(1);const p=cr(0),v=dr(o);if((v||!v&&!u)&&((Va(o)!=="body"||Bl(m))&&(g=Mo(o)),dr(o))){const P=Vn(o);y=Ia(o),p.x=P.x+o.clientLeft,p.y=P.y+o.clientTop}const E=m&&!v&&!u?F0(m,g):cr(0);return{width:l.width*y.x,height:l.height*y.y,x:l.x*y.x-g.scrollLeft*y.x+p.x+E.x,y:l.y*y.y-g.scrollTop*y.y+p.y+E.y}}function V4(r){return Array.from(r.getClientRects())}function W4(r){const a=ur(r),l=Mo(r),o=r.ownerDocument.body,c=ws(a.scrollWidth,a.clientWidth,o.scrollWidth,o.clientWidth),u=ws(a.scrollHeight,a.clientHeight,o.scrollHeight,o.clientHeight);let m=-l.scrollLeft+Ao(r);const f=-l.scrollTop;return Js(o).direction==="rtl"&&(m+=ws(a.clientWidth,o.clientWidth)-c),{width:c,height:u,x:m,y:f}}const xx=25;function H4(r,a){const l=Ss(r),o=ur(r),c=l.visualViewport;let u=o.clientWidth,m=o.clientHeight,f=0,g=0;if(c){u=c.width,m=c.height;const p=Bu();(!p||p&&a==="fixed")&&(f=c.offsetLeft,g=c.offsetTop)}const y=Ao(o);if(y<=0){const p=o.ownerDocument,v=p.body,E=getComputedStyle(v),P=p.compatMode==="CSS1Compat"&&parseFloat(E.marginLeft)+parseFloat(E.marginRight)||0,T=Math.abs(o.clientWidth-v.clientWidth-P);T<=xx&&(u-=T)}else y<=xx&&(u+=y);return{width:u,height:m,x:f,y:g}}const K4=new Set(["absolute","fixed"]);function G4(r,a){const l=Vn(r,!0,a==="fixed"),o=l.top+r.clientTop,c=l.left+r.clientLeft,u=dr(r)?Ia(r):cr(1),m=r.clientWidth*u.x,f=r.clientHeight*u.y,g=c*u.x,y=o*u.y;return{width:m,height:f,x:g,y}}function px(r,a,l){let o;if(a==="viewport")o=H4(r,l);else if(a==="document")o=W4(ur(r));else if(Xs(a))o=G4(a,l);else{const c=O0(r);o={x:a.x-c.x,y:a.y-c.y,width:a.width,height:a.height}}return yo(o)}function z0(r,a){const l=fn(r);return l===a||!Xs(l)||Aa(l)?!1:Js(l).position==="fixed"||z0(l,a)}function Y4(r,a){const l=a.get(r);if(l)return l;let o=Ll(r,[],!1).filter(f=>Xs(f)&&Va(f)!=="body"),c=null;const u=Js(r).position==="fixed";let m=u?fn(r):r;for(;Xs(m)&&!Aa(m);){const f=Js(m),g=$u(m);!g&&f.position==="fixed"&&(c=null),(u?!g&&!c:!g&&f.position==="static"&&!!c&&K4.has(c.position)||Bl(m)&&!g&&z0(r,m))?o=o.filter(p=>p!==m):c=f,m=fn(m)}return a.set(r,o),o}function Q4(r){let{element:a,boundary:l,rootBoundary:o,strategy:c}=r;const m=[...l==="clippingAncestors"?_o(a)?[]:Y4(a,this._c):[].concat(l),o],f=m[0],g=m.reduce((y,p)=>{const v=px(a,p,c);return y.top=ws(v.top,y.top),y.right=mn(v.right,y.right),y.bottom=mn(v.bottom,y.bottom),y.left=ws(v.left,y.left),y},px(a,f,c));return{width:g.right-g.left,height:g.bottom-g.top,x:g.left,y:g.top}}function q4(r){const{width:a,height:l}=L0(r);return{width:a,height:l}}function X4(r,a,l){const o=dr(a),c=ur(a),u=l==="fixed",m=Vn(r,!0,u,a);let f={scrollLeft:0,scrollTop:0};const g=cr(0);function y(){g.x=Ao(c)}if(o||!o&&!u)if((Va(a)!=="body"||Bl(c))&&(f=Mo(a)),o){const P=Vn(a,!0,u,a);g.x=P.x+a.clientLeft,g.y=P.y+a.clientTop}else c&&y();u&&!o&&c&&y();const p=c&&!o&&!u?F0(c,f):cr(0),v=m.left+f.scrollLeft-g.x-p.x,E=m.top+f.scrollTop-g.y-p.y;return{x:v,y:E,width:m.width,height:m.height}}function zd(r){return Js(r).position==="static"}function gx(r,a){if(!dr(r)||Js(r).position==="fixed")return null;if(a)return a(r);let l=r.offsetParent;return ur(r)===l&&(l=l.ownerDocument.body),l}function $0(r,a){const l=Ss(r);if(_o(r))return l;if(!dr(r)){let c=fn(r);for(;c&&!Aa(c);){if(Xs(c)&&!zd(c))return c;c=fn(c)}return l}let o=gx(r,a);for(;o&&M4(o)&&zd(o);)o=gx(o,a);return o&&Aa(o)&&zd(o)&&!$u(o)?l:o||F4(r)||l}const J4=async function(r){const a=this.getOffsetParent||$0,l=this.getDimensions,o=await l(r.floating);return{reference:X4(r.reference,await a(r.floating),r.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}};function Z4(r){return Js(r).direction==="rtl"}const eS={convertOffsetParentRelativeRectToViewportRelativeRect:U4,getDocumentElement:ur,getClippingRect:Q4,getOffsetParent:$0,getElementRects:J4,getClientRects:V4,getDimensions:q4,getScale:Ia,isElement:Xs,isRTL:Z4};function B0(r,a){return r.x===a.x&&r.y===a.y&&r.width===a.width&&r.height===a.height}function tS(r,a){let l=null,o;const c=ur(r);function u(){var f;clearTimeout(o),(f=l)==null||f.disconnect(),l=null}function m(f,g){f===void 0&&(f=!1),g===void 0&&(g=1),u();const y=r.getBoundingClientRect(),{left:p,top:v,width:E,height:P}=y;if(f||a(),!E||!P)return;const T=ro(v),w=ro(c.clientWidth-(p+E)),b=ro(c.clientHeight-(v+P)),N=ro(p),j={rootMargin:-T+"px "+-w+"px "+-b+"px "+-N+"px",threshold:ws(0,mn(1,g))||1};let I=!0;function U(V){const _=V[0].intersectionRatio;if(_!==g){if(!I)return m();_?m(!1,_):o=setTimeout(()=>{m(!1,1e-7)},1e3)}_===1&&!B0(y,r.getBoundingClientRect())&&m(),I=!1}try{l=new IntersectionObserver(U,{...j,root:c.ownerDocument})}catch{l=new IntersectionObserver(U,j)}l.observe(r)}return m(!0),u}function sS(r,a,l,o){o===void 0&&(o={});const{ancestorScroll:c=!0,ancestorResize:u=!0,elementResize:m=typeof ResizeObserver=="function",layoutShift:f=typeof IntersectionObserver=="function",animationFrame:g=!1}=o,y=Uu(r),p=c||u?[...y?Ll(y):[],...Ll(a)]:[];p.forEach(N=>{c&&N.addEventListener("scroll",l,{passive:!0}),u&&N.addEventListener("resize",l)});const v=y&&f?tS(y,l):null;let E=-1,P=null;m&&(P=new ResizeObserver(N=>{let[C]=N;C&&C.target===y&&P&&(P.unobserve(a),cancelAnimationFrame(E),E=requestAnimationFrame(()=>{var j;(j=P)==null||j.observe(a)})),l()}),y&&!g&&P.observe(y),P.observe(a));let T,w=g?Vn(r):null;g&&b();function b(){const N=Vn(r);w&&!B0(w,N)&&l(),w=N,T=requestAnimationFrame(b)}return l(),()=>{var N;p.forEach(C=>{c&&C.removeEventListener("scroll",l),u&&C.removeEventListener("resize",l)}),v==null||v(),(N=P)==null||N.disconnect(),P=null,g&&cancelAnimationFrame(T)}}const rS=E4,nS=P4,aS=S4,lS=R4,iS=C4,yx=w4,oS=T4,cS=(r,a,l)=>{const o=new Map,c={platform:eS,...l},u={...c.platform,_c:o};return N4(r,a,{...c,platform:u})};var dS=typeof document<"u",uS=function(){},lo=dS?h.useLayoutEffect:uS;function vo(r,a){if(r===a)return!0;if(typeof r!=typeof a)return!1;if(typeof r=="function"&&r.toString()===a.toString())return!0;let l,o,c;if(r&&a&&typeof r=="object"){if(Array.isArray(r)){if(l=r.length,l!==a.length)return!1;for(o=l;o--!==0;)if(!vo(r[o],a[o]))return!1;return!0}if(c=Object.keys(r),l=c.length,l!==Object.keys(a).length)return!1;for(o=l;o--!==0;)if(!{}.hasOwnProperty.call(a,c[o]))return!1;for(o=l;o--!==0;){const u=c[o];if(!(u==="_owner"&&r.$$typeof)&&!vo(r[u],a[u]))return!1}return!0}return r!==r&&a!==a}function U0(r){return typeof window>"u"?1:(r.ownerDocument.defaultView||window).devicePixelRatio||1}function vx(r,a){const l=U0(r);return Math.round(a*l)/l}function $d(r){const a=h.useRef(r);return lo(()=>{a.current=r}),a}function hS(r){r===void 0&&(r={});const{placement:a="bottom",strategy:l="absolute",middleware:o=[],platform:c,elements:{reference:u,floating:m}={},transform:f=!0,whileElementsMounted:g,open:y}=r,[p,v]=h.useState({x:0,y:0,strategy:l,placement:a,middlewareData:{},isPositioned:!1}),[E,P]=h.useState(o);vo(E,o)||P(o);const[T,w]=h.useState(null),[b,N]=h.useState(null),C=h.useCallback(B=>{B!==V.current&&(V.current=B,w(B))},[]),j=h.useCallback(B=>{B!==_.current&&(_.current=B,N(B))},[]),I=u||T,U=m||b,V=h.useRef(null),_=h.useRef(null),k=h.useRef(p),R=g!=null,Z=$d(g),ne=$d(c),ae=$d(y),Q=h.useCallback(()=>{if(!V.current||!_.current)return;const B={placement:a,strategy:l,middleware:E};ne.current&&(B.platform=ne.current),cS(V.current,_.current,B).then(ce=>{const K={...ce,isPositioned:ae.current!==!1};se.current&&!vo(k.current,K)&&(k.current=K,Ol.flushSync(()=>{v(K)}))})},[E,a,l,ne,ae]);lo(()=>{y===!1&&k.current.isPositioned&&(k.current.isPositioned=!1,v(B=>({...B,isPositioned:!1})))},[y]);const se=h.useRef(!1);lo(()=>(se.current=!0,()=>{se.current=!1}),[]),lo(()=>{if(I&&(V.current=I),U&&(_.current=U),I&&U){if(Z.current)return Z.current(I,U,Q);Q()}},[I,U,Q,Z,R]);const H=h.useMemo(()=>({reference:V,floating:_,setReference:C,setFloating:j}),[C,j]),oe=h.useMemo(()=>({reference:I,floating:U}),[I,U]),ve=h.useMemo(()=>{const B={position:l,left:0,top:0};if(!oe.floating)return B;const ce=vx(oe.floating,p.x),K=vx(oe.floating,p.y);return f?{...B,transform:"translate("+ce+"px, "+K+"px)",...U0(oe.floating)>=1.5&&{willChange:"transform"}}:{position:l,left:ce,top:K}},[l,f,oe.floating,p.x,p.y]);return h.useMemo(()=>({...p,update:Q,refs:H,elements:oe,floatingStyles:ve}),[p,Q,H,oe,ve])}const mS=r=>{function a(l){return{}.hasOwnProperty.call(l,"current")}return{name:"arrow",options:r,fn(l){const{element:o,padding:c}=typeof r=="function"?r(l):r;return o&&a(o)?o.current!=null?yx({element:o.current,padding:c}).fn(l):{}:o?yx({element:o,padding:c}).fn(l):{}}}},fS=(r,a)=>({...rS(r),options:[r,a]}),xS=(r,a)=>({...nS(r),options:[r,a]}),pS=(r,a)=>({...oS(r),options:[r,a]}),gS=(r,a)=>({...aS(r),options:[r,a]}),yS=(r,a)=>({...lS(r),options:[r,a]}),vS=(r,a)=>({...iS(r),options:[r,a]}),jS=(r,a)=>({...mS(r),options:[r,a]});var bS="Arrow",V0=h.forwardRef((r,a)=>{const{children:l,width:o=10,height:c=5,...u}=r;return e.jsx(Xe.svg,{...u,ref:a,width:o,height:c,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:r.asChild?l:e.jsx("polygon",{points:"0,0 30,0 15,10"})})});V0.displayName=bS;var NS=V0,Vu="Popper",[W0,H0]=gn(Vu),[wS,K0]=W0(Vu),G0=r=>{const{__scopePopper:a,children:l}=r,[o,c]=h.useState(null);return e.jsx(wS,{scope:a,anchor:o,onAnchorChange:c,children:l})};G0.displayName=Vu;var Y0="PopperAnchor",Q0=h.forwardRef((r,a)=>{const{__scopePopper:l,virtualRef:o,...c}=r,u=K0(Y0,l),m=h.useRef(null),f=at(a,m),g=h.useRef(null);return h.useEffect(()=>{const y=g.current;g.current=(o==null?void 0:o.current)||m.current,y!==g.current&&u.onAnchorChange(g.current)}),o?null:e.jsx(Xe.div,{...c,ref:f})});Q0.displayName=Y0;var Wu="PopperContent",[SS,CS]=W0(Wu),q0=h.forwardRef((r,a)=>{var Y,ge,Se,D,fe,ke;const{__scopePopper:l,side:o="bottom",sideOffset:c=0,align:u="center",alignOffset:m=0,arrowPadding:f=0,avoidCollisions:g=!0,collisionBoundary:y=[],collisionPadding:p=0,sticky:v="partial",hideWhenDetached:E=!1,updatePositionStrategy:P="optimized",onPlaced:T,...w}=r,b=K0(Wu,l),[N,C]=h.useState(null),j=at(a,Ve=>C(Ve)),[I,U]=h.useState(null),V=Du(I),_=(V==null?void 0:V.width)??0,k=(V==null?void 0:V.height)??0,R=o+(u!=="center"?"-"+u:""),Z=typeof p=="number"?p:{top:0,right:0,bottom:0,left:0,...p},ne=Array.isArray(y)?y:[y],ae=ne.length>0,Q={padding:Z,boundary:ne.filter(ES),altBoundary:ae},{refs:se,floatingStyles:H,placement:oe,isPositioned:ve,middlewareData:B}=hS({strategy:"fixed",placement:R,whileElementsMounted:(...Ve)=>sS(...Ve,{animationFrame:P==="always"}),elements:{reference:b.anchor},middleware:[fS({mainAxis:c+k,alignmentAxis:m}),g&&xS({mainAxis:!0,crossAxis:!1,limiter:v==="partial"?pS():void 0,...Q}),g&&gS({...Q}),yS({...Q,apply:({elements:Ve,rects:We,availableWidth:Ye,availableHeight:tt})=>{const{width:ze,height:he}=We.reference,xe=Ve.floating.style;xe.setProperty("--radix-popper-available-width",`${Ye}px`),xe.setProperty("--radix-popper-available-height",`${tt}px`),xe.setProperty("--radix-popper-anchor-width",`${ze}px`),xe.setProperty("--radix-popper-anchor-height",`${he}px`)}}),I&&jS({element:I,padding:f}),PS({arrowWidth:_,arrowHeight:k}),E&&vS({strategy:"referenceHidden",...Q})]}),[ce,K]=Z0(oe),A=hn(T);Zt(()=>{ve&&(A==null||A())},[ve,A]);const O=(Y=B.arrow)==null?void 0:Y.x,L=(ge=B.arrow)==null?void 0:ge.y,J=((Se=B.arrow)==null?void 0:Se.centerOffset)!==0,[G,de]=h.useState();return Zt(()=>{N&&de(window.getComputedStyle(N).zIndex)},[N]),e.jsx("div",{ref:se.setFloating,"data-radix-popper-content-wrapper":"",style:{...H,transform:ve?H.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:G,"--radix-popper-transform-origin":[(D=B.transformOrigin)==null?void 0:D.x,(fe=B.transformOrigin)==null?void 0:fe.y].join(" "),...((ke=B.hide)==null?void 0:ke.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:r.dir,children:e.jsx(SS,{scope:l,placedSide:ce,onArrowChange:U,arrowX:O,arrowY:L,shouldHideArrow:J,children:e.jsx(Xe.div,{"data-side":ce,"data-align":K,...w,ref:j,style:{...w.style,animation:ve?void 0:"none"}})})})});q0.displayName=Wu;var X0="PopperArrow",kS={top:"bottom",right:"left",bottom:"top",left:"right"},J0=h.forwardRef(function(a,l){const{__scopePopper:o,...c}=a,u=CS(X0,o),m=kS[u.placedSide];return e.jsx("span",{ref:u.onArrowChange,style:{position:"absolute",left:u.arrowX,top:u.arrowY,[m]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[u.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[u.placedSide],visibility:u.shouldHideArrow?"hidden":void 0},children:e.jsx(NS,{...c,ref:l,style:{...c.style,display:"block"}})})});J0.displayName=X0;function ES(r){return r!==null}var PS=r=>({name:"transformOrigin",options:r,fn(a){var b,N,C;const{placement:l,rects:o,middlewareData:c}=a,m=((b=c.arrow)==null?void 0:b.centerOffset)!==0,f=m?0:r.arrowWidth,g=m?0:r.arrowHeight,[y,p]=Z0(l),v={start:"0%",center:"50%",end:"100%"}[p],E=(((N=c.arrow)==null?void 0:N.x)??0)+f/2,P=(((C=c.arrow)==null?void 0:C.y)??0)+g/2;let T="",w="";return y==="bottom"?(T=m?v:`${E}px`,w=`${-g}px`):y==="top"?(T=m?v:`${E}px`,w=`${o.floating.height+g}px`):y==="right"?(T=`${-g}px`,w=m?v:`${P}px`):y==="left"&&(T=`${o.floating.width+g}px`,w=m?v:`${P}px`),{data:{x:T,y:w}}}});function Z0(r){const[a,l="center"]=r.split("-");return[a,l]}var TS=G0,RS=Q0,IS=q0,_S=J0,eg=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),MS="VisuallyHidden",AS=h.forwardRef((r,a)=>e.jsx(Xe.span,{...r,ref:a,style:{...eg,...r.style}}));AS.displayName=MS;var DS=[" ","Enter","ArrowUp","ArrowDown"],LS=[" ","Enter"],Wn="Select",[Do,Lo,OS]=_u(Wn),[Wa]=gn(Wn,[OS,H0]),Oo=H0(),[FS,yn]=Wa(Wn),[zS,$S]=Wa(Wn),tg=r=>{const{__scopeSelect:a,children:l,open:o,defaultOpen:c,onOpenChange:u,value:m,defaultValue:f,onValueChange:g,dir:y,name:p,autoComplete:v,disabled:E,required:P,form:T}=r,w=Oo(a),[b,N]=h.useState(null),[C,j]=h.useState(null),[I,U]=h.useState(!1),V=Eo(y),[_,k]=Bn({prop:o,defaultProp:c??!1,onChange:u,caller:Wn}),[R,Z]=Bn({prop:m,defaultProp:f,onChange:g,caller:Wn}),ne=h.useRef(null),ae=b?T||!!b.closest("form"):!0,[Q,se]=h.useState(new Set),H=Array.from(Q).map(oe=>oe.props.value).join(";");return e.jsx(TS,{...w,children:e.jsxs(FS,{required:P,scope:a,trigger:b,onTriggerChange:N,valueNode:C,onValueNodeChange:j,valueNodeHasChildren:I,onValueNodeHasChildrenChange:U,contentId:dn(),value:R,onValueChange:Z,open:_,onOpenChange:k,dir:V,triggerPointerDownPosRef:ne,disabled:E,children:[e.jsx(Do.Provider,{scope:a,children:e.jsx(zS,{scope:r.__scopeSelect,onNativeOptionAdd:h.useCallback(oe=>{se(ve=>new Set(ve).add(oe))},[]),onNativeOptionRemove:h.useCallback(oe=>{se(ve=>{const B=new Set(ve);return B.delete(oe),B})},[]),children:l})}),ae?e.jsxs(wg,{"aria-hidden":!0,required:P,tabIndex:-1,name:p,autoComplete:v,value:R,onChange:oe=>Z(oe.target.value),disabled:E,form:T,children:[R===void 0?e.jsx("option",{value:""}):null,Array.from(Q)]},H):null]})})};tg.displayName=Wn;var sg="SelectTrigger",rg=h.forwardRef((r,a)=>{const{__scopeSelect:l,disabled:o=!1,...c}=r,u=Oo(l),m=yn(sg,l),f=m.disabled||o,g=at(a,m.onTriggerChange),y=Lo(l),p=h.useRef("touch"),[v,E,P]=Cg(w=>{const b=y().filter(j=>!j.disabled),N=b.find(j=>j.value===m.value),C=kg(b,w,N);C!==void 0&&m.onValueChange(C.value)}),T=w=>{f||(m.onOpenChange(!0),P()),w&&(m.triggerPointerDownPosRef.current={x:Math.round(w.pageX),y:Math.round(w.pageY)})};return e.jsx(RS,{asChild:!0,...u,children:e.jsx(Xe.button,{type:"button",role:"combobox","aria-controls":m.contentId,"aria-expanded":m.open,"aria-required":m.required,"aria-autocomplete":"none",dir:m.dir,"data-state":m.open?"open":"closed",disabled:f,"data-disabled":f?"":void 0,"data-placeholder":Sg(m.value)?"":void 0,...c,ref:g,onClick:Qe(c.onClick,w=>{w.currentTarget.focus(),p.current!=="mouse"&&T(w)}),onPointerDown:Qe(c.onPointerDown,w=>{p.current=w.pointerType;const b=w.target;b.hasPointerCapture(w.pointerId)&&b.releasePointerCapture(w.pointerId),w.button===0&&w.ctrlKey===!1&&w.pointerType==="mouse"&&(T(w),w.preventDefault())}),onKeyDown:Qe(c.onKeyDown,w=>{const b=v.current!=="";!(w.ctrlKey||w.altKey||w.metaKey)&&w.key.length===1&&E(w.key),!(b&&w.key===" ")&&DS.includes(w.key)&&(T(),w.preventDefault())})})})});rg.displayName=sg;var ng="SelectValue",ag=h.forwardRef((r,a)=>{const{__scopeSelect:l,className:o,style:c,children:u,placeholder:m="",...f}=r,g=yn(ng,l),{onValueNodeHasChildrenChange:y}=g,p=u!==void 0,v=at(a,g.onValueNodeChange);return Zt(()=>{y(p)},[y,p]),e.jsx(Xe.span,{...f,ref:v,style:{pointerEvents:"none"},children:Sg(g.value)?e.jsx(e.Fragment,{children:m}):u})});ag.displayName=ng;var BS="SelectIcon",lg=h.forwardRef((r,a)=>{const{__scopeSelect:l,children:o,...c}=r;return e.jsx(Xe.span,{"aria-hidden":!0,...c,ref:a,children:o||"▼"})});lg.displayName=BS;var US="SelectPortal",ig=r=>e.jsx(ku,{asChild:!0,...r});ig.displayName=US;var Hn="SelectContent",og=h.forwardRef((r,a)=>{const l=yn(Hn,r.__scopeSelect),[o,c]=h.useState();if(Zt(()=>{c(new DocumentFragment)},[]),!l.open){const u=o;return u?Ol.createPortal(e.jsx(cg,{scope:r.__scopeSelect,children:e.jsx(Do.Slot,{scope:r.__scopeSelect,children:e.jsx("div",{children:r.children})})}),u):null}return e.jsx(dg,{...r,ref:a})});og.displayName=Hn;var Ys=10,[cg,vn]=Wa(Hn),VS="SelectContentImpl",WS=Dl("SelectContent.RemoveScroll"),dg=h.forwardRef((r,a)=>{const{__scopeSelect:l,position:o="item-aligned",onCloseAutoFocus:c,onEscapeKeyDown:u,onPointerDownOutside:m,side:f,sideOffset:g,align:y,alignOffset:p,arrowPadding:v,collisionBoundary:E,collisionPadding:P,sticky:T,hideWhenDetached:w,avoidCollisions:b,...N}=r,C=yn(Hn,l),[j,I]=h.useState(null),[U,V]=h.useState(null),_=at(a,Y=>I(Y)),[k,R]=h.useState(null),[Z,ne]=h.useState(null),ae=Lo(l),[Q,se]=h.useState(!1),H=h.useRef(!1);h.useEffect(()=>{if(j)return kp(j)},[j]),gp();const oe=h.useCallback(Y=>{const[ge,...Se]=ae().map(ke=>ke.ref.current),[D]=Se.slice(-1),fe=document.activeElement;for(const ke of Y)if(ke===fe||(ke==null||ke.scrollIntoView({block:"nearest"}),ke===ge&&U&&(U.scrollTop=0),ke===D&&U&&(U.scrollTop=U.scrollHeight),ke==null||ke.focus(),document.activeElement!==fe))return},[ae,U]),ve=h.useCallback(()=>oe([k,j]),[oe,k,j]);h.useEffect(()=>{Q&&ve()},[Q,ve]);const{onOpenChange:B,triggerPointerDownPosRef:ce}=C;h.useEffect(()=>{if(j){let Y={x:0,y:0};const ge=D=>{var fe,ke;Y={x:Math.abs(Math.round(D.pageX)-(((fe=ce.current)==null?void 0:fe.x)??0)),y:Math.abs(Math.round(D.pageY)-(((ke=ce.current)==null?void 0:ke.y)??0))}},Se=D=>{Y.x<=10&&Y.y<=10?D.preventDefault():j.contains(D.target)||B(!1),document.removeEventListener("pointermove",ge),ce.current=null};return ce.current!==null&&(document.addEventListener("pointermove",ge),document.addEventListener("pointerup",Se,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",ge),document.removeEventListener("pointerup",Se,{capture:!0})}}},[j,B,ce]),h.useEffect(()=>{const Y=()=>B(!1);return window.addEventListener("blur",Y),window.addEventListener("resize",Y),()=>{window.removeEventListener("blur",Y),window.removeEventListener("resize",Y)}},[B]);const[K,A]=Cg(Y=>{const ge=ae().filter(fe=>!fe.disabled),Se=ge.find(fe=>fe.ref.current===document.activeElement),D=kg(ge,Y,Se);D&&setTimeout(()=>D.ref.current.focus())}),O=h.useCallback((Y,ge,Se)=>{const D=!H.current&&!Se;(C.value!==void 0&&C.value===ge||D)&&(R(Y),D&&(H.current=!0))},[C.value]),L=h.useCallback(()=>j==null?void 0:j.focus(),[j]),J=h.useCallback((Y,ge,Se)=>{const D=!H.current&&!Se;(C.value!==void 0&&C.value===ge||D)&&ne(Y)},[C.value]),G=o==="popper"?ou:ug,de=G===ou?{side:f,sideOffset:g,align:y,alignOffset:p,arrowPadding:v,collisionBoundary:E,collisionPadding:P,sticky:T,hideWhenDetached:w,avoidCollisions:b}:{};return e.jsx(cg,{scope:l,content:j,viewport:U,onViewportChange:V,itemRefCallback:O,selectedItem:k,onItemLeave:L,itemTextRefCallback:J,focusSelectedItem:ve,selectedItemText:Z,position:o,isPositioned:Q,searchRef:K,children:e.jsx(Eu,{as:WS,allowPinchZoom:!0,children:e.jsx(Cu,{asChild:!0,trapped:C.open,onMountAutoFocus:Y=>{Y.preventDefault()},onUnmountAutoFocus:Qe(c,Y=>{var ge;(ge=C.trigger)==null||ge.focus({preventScroll:!0}),Y.preventDefault()}),children:e.jsx(Su,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:u,onPointerDownOutside:m,onFocusOutside:Y=>Y.preventDefault(),onDismiss:()=>C.onOpenChange(!1),children:e.jsx(G,{role:"listbox",id:C.contentId,"data-state":C.open?"open":"closed",dir:C.dir,onContextMenu:Y=>Y.preventDefault(),...N,...de,onPlaced:()=>se(!0),ref:_,style:{display:"flex",flexDirection:"column",outline:"none",...N.style},onKeyDown:Qe(N.onKeyDown,Y=>{const ge=Y.ctrlKey||Y.altKey||Y.metaKey;if(Y.key==="Tab"&&Y.preventDefault(),!ge&&Y.key.length===1&&A(Y.key),["ArrowUp","ArrowDown","Home","End"].includes(Y.key)){let D=ae().filter(fe=>!fe.disabled).map(fe=>fe.ref.current);if(["ArrowUp","End"].includes(Y.key)&&(D=D.slice().reverse()),["ArrowUp","ArrowDown"].includes(Y.key)){const fe=Y.target,ke=D.indexOf(fe);D=D.slice(ke+1)}setTimeout(()=>oe(D)),Y.preventDefault()}})})})})})})});dg.displayName=VS;var HS="SelectItemAlignedPosition",ug=h.forwardRef((r,a)=>{const{__scopeSelect:l,onPlaced:o,...c}=r,u=yn(Hn,l),m=vn(Hn,l),[f,g]=h.useState(null),[y,p]=h.useState(null),v=at(a,_=>p(_)),E=Lo(l),P=h.useRef(!1),T=h.useRef(!0),{viewport:w,selectedItem:b,selectedItemText:N,focusSelectedItem:C}=m,j=h.useCallback(()=>{if(u.trigger&&u.valueNode&&f&&y&&w&&b&&N){const _=u.trigger.getBoundingClientRect(),k=y.getBoundingClientRect(),R=u.valueNode.getBoundingClientRect(),Z=N.getBoundingClientRect();if(u.dir!=="rtl"){const fe=Z.left-k.left,ke=R.left-fe,Ve=_.left-ke,We=_.width+Ve,Ye=Math.max(We,k.width),tt=window.innerWidth-Ys,ze=xo(ke,[Ys,Math.max(Ys,tt-Ye)]);f.style.minWidth=We+"px",f.style.left=ze+"px"}else{const fe=k.right-Z.right,ke=window.innerWidth-R.right-fe,Ve=window.innerWidth-_.right-ke,We=_.width+Ve,Ye=Math.max(We,k.width),tt=window.innerWidth-Ys,ze=xo(ke,[Ys,Math.max(Ys,tt-Ye)]);f.style.minWidth=We+"px",f.style.right=ze+"px"}const ne=E(),ae=window.innerHeight-Ys*2,Q=w.scrollHeight,se=window.getComputedStyle(y),H=parseInt(se.borderTopWidth,10),oe=parseInt(se.paddingTop,10),ve=parseInt(se.borderBottomWidth,10),B=parseInt(se.paddingBottom,10),ce=H+oe+Q+B+ve,K=Math.min(b.offsetHeight*5,ce),A=window.getComputedStyle(w),O=parseInt(A.paddingTop,10),L=parseInt(A.paddingBottom,10),J=_.top+_.height/2-Ys,G=ae-J,de=b.offsetHeight/2,Y=b.offsetTop+de,ge=H+oe+Y,Se=ce-ge;if(ge<=J){const fe=ne.length>0&&b===ne[ne.length-1].ref.current;f.style.bottom="0px";const ke=y.clientHeight-w.offsetTop-w.offsetHeight,Ve=Math.max(G,de+(fe?L:0)+ke+ve),We=ge+Ve;f.style.height=We+"px"}else{const fe=ne.length>0&&b===ne[0].ref.current;f.style.top="0px";const Ve=Math.max(J,H+w.offsetTop+(fe?O:0)+de)+Se;f.style.height=Ve+"px",w.scrollTop=ge-J+w.offsetTop}f.style.margin=`${Ys}px 0`,f.style.minHeight=K+"px",f.style.maxHeight=ae+"px",o==null||o(),requestAnimationFrame(()=>P.current=!0)}},[E,u.trigger,u.valueNode,f,y,w,b,N,u.dir,o]);Zt(()=>j(),[j]);const[I,U]=h.useState();Zt(()=>{y&&U(window.getComputedStyle(y).zIndex)},[y]);const V=h.useCallback(_=>{_&&T.current===!0&&(j(),C==null||C(),T.current=!1)},[j,C]);return e.jsx(GS,{scope:l,contentWrapper:f,shouldExpandOnScrollRef:P,onScrollButtonChange:V,children:e.jsx("div",{ref:g,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:I},children:e.jsx(Xe.div,{...c,ref:v,style:{boxSizing:"border-box",maxHeight:"100%",...c.style}})})})});ug.displayName=HS;var KS="SelectPopperPosition",ou=h.forwardRef((r,a)=>{const{__scopeSelect:l,align:o="start",collisionPadding:c=Ys,...u}=r,m=Oo(l);return e.jsx(IS,{...m,...u,ref:a,align:o,collisionPadding:c,style:{boxSizing:"border-box",...u.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});ou.displayName=KS;var[GS,Hu]=Wa(Hn,{}),cu="SelectViewport",hg=h.forwardRef((r,a)=>{const{__scopeSelect:l,nonce:o,...c}=r,u=vn(cu,l),m=Hu(cu,l),f=at(a,u.onViewportChange),g=h.useRef(0);return e.jsxs(e.Fragment,{children:[e.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:o}),e.jsx(Do.Slot,{scope:l,children:e.jsx(Xe.div,{"data-radix-select-viewport":"",role:"presentation",...c,ref:f,style:{position:"relative",flex:1,overflow:"hidden auto",...c.style},onScroll:Qe(c.onScroll,y=>{const p=y.currentTarget,{contentWrapper:v,shouldExpandOnScrollRef:E}=m;if(E!=null&&E.current&&v){const P=Math.abs(g.current-p.scrollTop);if(P>0){const T=window.innerHeight-Ys*2,w=parseFloat(v.style.minHeight),b=parseFloat(v.style.height),N=Math.max(w,b);if(N0?I:0,v.style.justifyContent="flex-end")}}}g.current=p.scrollTop})})})]})});hg.displayName=cu;var mg="SelectGroup",[YS,QS]=Wa(mg),qS=h.forwardRef((r,a)=>{const{__scopeSelect:l,...o}=r,c=dn();return e.jsx(YS,{scope:l,id:c,children:e.jsx(Xe.div,{role:"group","aria-labelledby":c,...o,ref:a})})});qS.displayName=mg;var fg="SelectLabel",XS=h.forwardRef((r,a)=>{const{__scopeSelect:l,...o}=r,c=QS(fg,l);return e.jsx(Xe.div,{id:c.id,...o,ref:a})});XS.displayName=fg;var jo="SelectItem",[JS,xg]=Wa(jo),pg=h.forwardRef((r,a)=>{const{__scopeSelect:l,value:o,disabled:c=!1,textValue:u,...m}=r,f=yn(jo,l),g=vn(jo,l),y=f.value===o,[p,v]=h.useState(u??""),[E,P]=h.useState(!1),T=at(a,C=>{var j;return(j=g.itemRefCallback)==null?void 0:j.call(g,C,o,c)}),w=dn(),b=h.useRef("touch"),N=()=>{c||(f.onValueChange(o),f.onOpenChange(!1))};if(o==="")throw new Error("A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return e.jsx(JS,{scope:l,value:o,disabled:c,textId:w,isSelected:y,onItemTextChange:h.useCallback(C=>{v(j=>j||((C==null?void 0:C.textContent)??"").trim())},[]),children:e.jsx(Do.ItemSlot,{scope:l,value:o,disabled:c,textValue:p,children:e.jsx(Xe.div,{role:"option","aria-labelledby":w,"data-highlighted":E?"":void 0,"aria-selected":y&&E,"data-state":y?"checked":"unchecked","aria-disabled":c||void 0,"data-disabled":c?"":void 0,tabIndex:c?void 0:-1,...m,ref:T,onFocus:Qe(m.onFocus,()=>P(!0)),onBlur:Qe(m.onBlur,()=>P(!1)),onClick:Qe(m.onClick,()=>{b.current!=="mouse"&&N()}),onPointerUp:Qe(m.onPointerUp,()=>{b.current==="mouse"&&N()}),onPointerDown:Qe(m.onPointerDown,C=>{b.current=C.pointerType}),onPointerMove:Qe(m.onPointerMove,C=>{var j;b.current=C.pointerType,c?(j=g.onItemLeave)==null||j.call(g):b.current==="mouse"&&C.currentTarget.focus({preventScroll:!0})}),onPointerLeave:Qe(m.onPointerLeave,C=>{var j;C.currentTarget===document.activeElement&&((j=g.onItemLeave)==null||j.call(g))}),onKeyDown:Qe(m.onKeyDown,C=>{var I;((I=g.searchRef)==null?void 0:I.current)!==""&&C.key===" "||(LS.includes(C.key)&&N(),C.key===" "&&C.preventDefault())})})})})});pg.displayName=jo;var Pl="SelectItemText",gg=h.forwardRef((r,a)=>{const{__scopeSelect:l,className:o,style:c,...u}=r,m=yn(Pl,l),f=vn(Pl,l),g=xg(Pl,l),y=$S(Pl,l),[p,v]=h.useState(null),E=at(a,N=>v(N),g.onItemTextChange,N=>{var C;return(C=f.itemTextRefCallback)==null?void 0:C.call(f,N,g.value,g.disabled)}),P=p==null?void 0:p.textContent,T=h.useMemo(()=>e.jsx("option",{value:g.value,disabled:g.disabled,children:P},g.value),[g.disabled,g.value,P]),{onNativeOptionAdd:w,onNativeOptionRemove:b}=y;return Zt(()=>(w(T),()=>b(T)),[w,b,T]),e.jsxs(e.Fragment,{children:[e.jsx(Xe.span,{id:g.textId,...u,ref:E}),g.isSelected&&m.valueNode&&!m.valueNodeHasChildren?Ol.createPortal(u.children,m.valueNode):null]})});gg.displayName=Pl;var yg="SelectItemIndicator",vg=h.forwardRef((r,a)=>{const{__scopeSelect:l,...o}=r;return xg(yg,l).isSelected?e.jsx(Xe.span,{"aria-hidden":!0,...o,ref:a}):null});vg.displayName=yg;var du="SelectScrollUpButton",jg=h.forwardRef((r,a)=>{const l=vn(du,r.__scopeSelect),o=Hu(du,r.__scopeSelect),[c,u]=h.useState(!1),m=at(a,o.onScrollButtonChange);return Zt(()=>{if(l.viewport&&l.isPositioned){let f=function(){const y=g.scrollTop>0;u(y)};const g=l.viewport;return f(),g.addEventListener("scroll",f),()=>g.removeEventListener("scroll",f)}},[l.viewport,l.isPositioned]),c?e.jsx(Ng,{...r,ref:m,onAutoScroll:()=>{const{viewport:f,selectedItem:g}=l;f&&g&&(f.scrollTop=f.scrollTop-g.offsetHeight)}}):null});jg.displayName=du;var uu="SelectScrollDownButton",bg=h.forwardRef((r,a)=>{const l=vn(uu,r.__scopeSelect),o=Hu(uu,r.__scopeSelect),[c,u]=h.useState(!1),m=at(a,o.onScrollButtonChange);return Zt(()=>{if(l.viewport&&l.isPositioned){let f=function(){const y=g.scrollHeight-g.clientHeight,p=Math.ceil(g.scrollTop)g.removeEventListener("scroll",f)}},[l.viewport,l.isPositioned]),c?e.jsx(Ng,{...r,ref:m,onAutoScroll:()=>{const{viewport:f,selectedItem:g}=l;f&&g&&(f.scrollTop=f.scrollTop+g.offsetHeight)}}):null});bg.displayName=uu;var Ng=h.forwardRef((r,a)=>{const{__scopeSelect:l,onAutoScroll:o,...c}=r,u=vn("SelectScrollButton",l),m=h.useRef(null),f=Lo(l),g=h.useCallback(()=>{m.current!==null&&(window.clearInterval(m.current),m.current=null)},[]);return h.useEffect(()=>()=>g(),[g]),Zt(()=>{var p;const y=f().find(v=>v.ref.current===document.activeElement);(p=y==null?void 0:y.ref.current)==null||p.scrollIntoView({block:"nearest"})},[f]),e.jsx(Xe.div,{"aria-hidden":!0,...c,ref:a,style:{flexShrink:0,...c.style},onPointerDown:Qe(c.onPointerDown,()=>{m.current===null&&(m.current=window.setInterval(o,50))}),onPointerMove:Qe(c.onPointerMove,()=>{var y;(y=u.onItemLeave)==null||y.call(u),m.current===null&&(m.current=window.setInterval(o,50))}),onPointerLeave:Qe(c.onPointerLeave,()=>{g()})})}),ZS="SelectSeparator",eC=h.forwardRef((r,a)=>{const{__scopeSelect:l,...o}=r;return e.jsx(Xe.div,{"aria-hidden":!0,...o,ref:a})});eC.displayName=ZS;var hu="SelectArrow",tC=h.forwardRef((r,a)=>{const{__scopeSelect:l,...o}=r,c=Oo(l),u=yn(hu,l),m=vn(hu,l);return u.open&&m.position==="popper"?e.jsx(_S,{...c,...o,ref:a}):null});tC.displayName=hu;var sC="SelectBubbleInput",wg=h.forwardRef(({__scopeSelect:r,value:a,...l},o)=>{const c=h.useRef(null),u=at(o,c),m=Au(a);return h.useEffect(()=>{const f=c.current;if(!f)return;const g=window.HTMLSelectElement.prototype,p=Object.getOwnPropertyDescriptor(g,"value").set;if(m!==a&&p){const v=new Event("change",{bubbles:!0});p.call(f,a),f.dispatchEvent(v)}},[m,a]),e.jsx(Xe.select,{...l,style:{...eg,...l.style},ref:u,defaultValue:a})});wg.displayName=sC;function Sg(r){return r===""||r===void 0}function Cg(r){const a=hn(r),l=h.useRef(""),o=h.useRef(0),c=h.useCallback(m=>{const f=l.current+m;a(f),(function g(y){l.current=y,window.clearTimeout(o.current),y!==""&&(o.current=window.setTimeout(()=>g(""),1e3))})(f)},[a]),u=h.useCallback(()=>{l.current="",window.clearTimeout(o.current)},[]);return h.useEffect(()=>()=>window.clearTimeout(o.current),[]),[l,c,u]}function kg(r,a,l){const c=a.length>1&&Array.from(a).every(y=>y===a[0])?a[0]:a,u=l?r.indexOf(l):-1;let m=rC(r,Math.max(u,0));c.length===1&&(m=m.filter(y=>y!==l));const g=m.find(y=>y.textValue.toLowerCase().startsWith(c.toLowerCase()));return g!==l?g:void 0}function rC(r,a){return r.map((l,o)=>r[(a+o)%r.length])}var nC=tg,Eg=rg,aC=ag,lC=lg,iC=ig,Pg=og,oC=hg,Tg=pg,cC=gg,dC=vg,uC=jg,hC=bg;const kl=nC,El=aC,Ca=h.forwardRef(({className:r,children:a,...l},o)=>e.jsxs(Eg,{ref:o,className:lt("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",r),...l,children:[a,e.jsx(lC,{asChild:!0,children:e.jsx(_l,{className:"h-4 w-4 opacity-50"})})]}));Ca.displayName=Eg.displayName;const ka=h.forwardRef(({className:r,children:a,position:l="popper",...o},c)=>e.jsx(iC,{children:e.jsxs(Pg,{ref:c,className:lt("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md",l==="popper"&&"data-[side=bottom]:translate-y-1",r),position:l,...o,children:[e.jsx(uC,{className:"flex cursor-default items-center justify-center py-1",children:e.jsx(Ux,{className:"h-4 w-4"})}),e.jsx(oC,{className:"p-1",children:a}),e.jsx(hC,{className:"flex cursor-default items-center justify-center py-1",children:e.jsx(_l,{className:"h-4 w-4"})})]})}));ka.displayName=Pg.displayName;const lr=h.forwardRef(({className:r,children:a,...l},o)=>e.jsxs(Tg,{ref:o,className:lt("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",r),...l,children:[e.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(dC,{children:e.jsx(wo,{className:"h-4 w-4"})})}),e.jsx(cC,{children:a})]}));lr.displayName=Tg.displayName;const mC=["一","二","三","四","五","六","七","八","九","十"];function Bd(r){return r.startsWith("part:")?{type:"part",id:r.slice(5)}:r.startsWith("chapter:")?{type:"chapter",id:r.slice(8)}:r.startsWith("section:")?{type:"section",id:r.slice(8)}:null}function fC({parts:r,expandedParts:a,onTogglePart:l,onReorder:o,onReadSection:c,onDeleteSection:u,onAddSectionInPart:m,onAddChapterInPart:f,onDeleteChapter:g,onEditPart:y,onDeletePart:p,onEditChapter:v,selectedSectionIds:E=[],onToggleSectionSelect:P,onShowSectionOrders:T}){const[w,b]=h.useState(null),[N,C]=h.useState(null),j=(R,Z)=>(w==null?void 0:w.type)===R&&(w==null?void 0:w.id)===Z,I=(R,Z)=>(N==null?void 0:N.type)===R&&(N==null?void 0:N.id)===Z,U=h.useCallback(()=>{const R=[];for(const Z of r)for(const ne of Z.chapters)for(const ae of ne.sections)R.push({id:ae.id,partId:Z.id,partTitle:Z.title,chapterId:ne.id,chapterTitle:ne.title});return R},[r]),V=h.useCallback(async(R,Z,ne,ae)=>{var ve;R.preventDefault(),R.stopPropagation();const Q=R.dataTransfer.getData("text/plain"),se=Bd(Q);if(!se||se.type===Z&&se.id===ne)return;const H=U(),oe=new Map(H.map(B=>[B.id,B]));if(se.type==="part"&&Z==="part"){const B=r.map(L=>L.id),ce=B.indexOf(se.id),K=B.indexOf(ne);if(ce===-1||K===-1)return;const A=[...B];A.splice(ce,1),A.splice(ceG.id===L);if(J)for(const G of J.chapters)for(const de of G.sections){const Y=oe.get(de.id);Y&&O.push(Y)}}await o(O);return}if(se.type==="chapter"&&(Z==="chapter"||Z==="section"||Z==="part")){const B=r.find(Y=>Y.chapters.some(ge=>ge.id===se.id)),ce=B==null?void 0:B.chapters.find(Y=>Y.id===se.id);if(!B||!ce)return;let K,A,O=null;if(Z==="section"){const Y=oe.get(ne);if(!Y)return;K=Y.partId,A=Y.partTitle,O=ne}else if(Z==="chapter"){const Y=r.find(D=>D.chapters.some(fe=>fe.id===ne)),ge=Y==null?void 0:Y.chapters.find(D=>D.id===ne);if(!Y||!ge)return;K=Y.id,A=Y.title;const Se=H.filter(D=>D.chapterId===ne).pop();O=(Se==null?void 0:Se.id)??null}else{const Y=r.find(Se=>Se.id===ne);if(!Y||!Y.chapters[0])return;K=Y.id,A=Y.title;const ge=H.filter(Se=>Se.partId===Y.id&&Se.chapterId===Y.chapters[0].id);O=((ve=ge[ge.length-1])==null?void 0:ve.id)??null}const L=ce.sections.map(Y=>Y.id),J=H.filter(Y=>!L.includes(Y.id));let G=J.length;if(O){const Y=J.findIndex(ge=>ge.id===O);Y>=0&&(G=Y+1)}const de=L.map(Y=>({...oe.get(Y),partId:K,partTitle:A,chapterId:ce.id,chapterTitle:ce.title}));await o([...J.slice(0,G),...de,...J.slice(G)]);return}if(se.type==="section"&&(Z==="section"||Z==="chapter"||Z==="part")){if(!ae)return;const{partId:B,partTitle:ce,chapterId:K,chapterTitle:A}=ae;let O;if(Z==="section")O=H.findIndex(ge=>ge.id===ne);else if(Z==="chapter"){const ge=H.filter(Se=>Se.chapterId===ne).pop();O=ge?H.findIndex(Se=>Se.id===ge.id)+1:H.length}else{const ge=r.find(fe=>fe.id===ne);if(!(ge!=null&&ge.chapters[0]))return;const Se=H.filter(fe=>fe.partId===ge.id&&fe.chapterId===ge.chapters[0].id),D=Se[Se.length-1];O=D?H.findIndex(fe=>fe.id===D.id)+1:0}const L=H.findIndex(ge=>ge.id===se.id);if(L===-1)return;const J=H.filter(ge=>ge.id!==se.id),G=L({onDragEnter:ae=>{ae.preventDefault(),ae.stopPropagation(),ae.dataTransfer.dropEffect="move",C({type:R,id:Z})},onDragOver:ae=>{ae.preventDefault(),ae.stopPropagation(),ae.dataTransfer.dropEffect="move",C({type:R,id:Z})},onDragLeave:()=>C(null),onDrop:ae=>{C(null);const Q=Bd(ae.dataTransfer.getData("text/plain"));if(Q&&!(R==="section"&&Q.type==="section"&&Q.id===Z))if(R==="part")if(Q.type==="part")V(ae,"part",Z);else{const se=r.find(oe=>oe.id===Z);(se==null?void 0:se.chapters[0])&&ne&&V(ae,"part",Z,ne)}else R==="chapter"&&ne?(Q.type==="section"||Q.type==="chapter")&&V(ae,"chapter",Z,ne):R==="section"&&ne&&V(ae,"section",Z,ne)}}),k=R=>mC[R]??String(R+1);return e.jsx("div",{className:"space-y-3",children:r.map((R,Z)=>{var ce,K,A,O;const ne=R.title==="序言"||R.title.includes("序言"),ae=R.title==="尾声"||R.title.includes("尾声"),Q=R.title==="附录"||R.title.includes("附录"),se=I("part",R.id),H=a.includes(R.id),oe=R.chapters.length,ve=R.chapters.reduce((L,J)=>L+J.sections.length,0);if(ne&&R.chapters.length===1&&R.chapters[0].sections.length===1){const L=R.chapters[0].sections[0],J=I("section",L.id),G={partId:R.id,partTitle:R.title,chapterId:R.chapters[0].id,chapterTitle:R.chapters[0].title};return e.jsxs("div",{draggable:!0,onDragStart:de=>{de.stopPropagation(),de.dataTransfer.setData("text/plain","section:"+L.id),de.dataTransfer.effectAllowed="move",b({type:"section",id:L.id})},onDragEnd:()=>{b(null),C(null)},className:`rounded-xl border border-gray-700/50 bg-[#1C1C1E] p-4 flex items-center justify-between hover:border-[#38bdac]/30 transition-colors cursor-grab active:cursor-grabbing select-none min-h-[40px] ${J?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":""} ${j("section",L.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":""}`,..._("section",L.id,G),children:[e.jsxs("div",{className:"flex items-center gap-3 flex-1 min-w-0 select-none",children:[e.jsx(Sr,{className:"w-5 h-5 text-gray-500 shrink-0 opacity-60"}),P&&e.jsx("label",{className:"shrink-0 flex items-center",onClick:de=>de.stopPropagation(),children:e.jsx("input",{type:"checkbox",checked:E.includes(L.id),onChange:()=>P(L.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),e.jsx("div",{className:"w-8 h-8 rounded-lg bg-gray-600/50 flex items-center justify-center shrink-0",children:e.jsx(qs,{className:"w-4 h-4 text-gray-400"})}),e.jsxs("span",{className:"font-medium text-gray-200 truncate",children:[R.chapters[0].title," | ",L.title]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",onMouseDown:de=>de.stopPropagation(),onClick:de=>de.stopPropagation(),children:[L.price===0||L.isFree?e.jsx("span",{className:"px-2 py-1 bg-[#38bdac]/20 text-[#38bdac] text-[10px] font-medium rounded",children:"免费"}):e.jsxs("span",{className:"text-xs text-gray-500",children:["¥",L.price]}),e.jsxs("span",{className:"text-[10px] text-gray-500",children:["点击 ",L.clickCount??0," · 付款 ",L.payCount??0]}),e.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(L.hotScore??0).toFixed(1)," · 第",L.hotRank&&L.hotRank>0?L.hotRank:"-","名"]}),T&&e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>T(L),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:"付款记录"}),e.jsxs("div",{className:"flex gap-1",children:[e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>c(L),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",children:e.jsx(Er,{className:"w-3.5 h-3.5"})}),e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>c(L),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>u(L),className:"text-gray-500 hover:text-red-400 h-7 px-2",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})})]}),e.jsx(tn,{className:"w-4 h-4 text-gray-500"})]})]},R.id)}if(R.title==="2026每日派对干货"||R.title.includes("2026每日派对干货")){const L=I("part",R.id);return e.jsxs("div",{className:`rounded-xl border overflow-hidden transition-all duration-200 ${L?"border-[#38bdac] ring-2 ring-[#38bdac]/40 bg-[#38bdac]/5":"border-gray-700/50 bg-[#1C1C1E]"}`,..._("part",R.id,{partId:R.id,partTitle:R.title,chapterId:((ce=R.chapters[0])==null?void 0:ce.id)??"",chapterTitle:((K=R.chapters[0])==null?void 0:K.title)??""}),children:[e.jsxs("div",{draggable:!0,onDragStart:J=>{J.stopPropagation(),J.dataTransfer.setData("text/plain","part:"+R.id),J.dataTransfer.effectAllowed="move",b({type:"part",id:R.id})},onDragEnd:()=>{b(null),C(null)},className:`flex items-center justify-between p-4 cursor-grab active:cursor-grabbing select-none transition-all duration-200 ${j("part",R.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":"hover:bg-[#162840]/50"}`,onClick:()=>l(R.id),children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx(Sr,{className:"w-5 h-5 text-gray-500 shrink-0 opacity-60"}),e.jsx("div",{className:"w-10 h-10 rounded-xl bg-[#38bdac]/80 flex items-center justify-center text-white font-bold shrink-0",children:"派"}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-bold text-white text-base",children:R.title}),e.jsxs("p",{className:"text-xs text-gray-500 mt-0.5",children:["共 ",ve," 节"]})]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",onMouseDown:J=>J.stopPropagation(),onClick:J=>J.stopPropagation(),children:[m&&e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>m(R),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"在本篇下新增章节",children:e.jsx(Rt,{className:"w-3.5 h-3.5"})}),y&&e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>y(R),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"编辑篇名",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),p&&e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>p(R),className:"text-gray-500 hover:text-red-400 h-7 px-2",title:"删除本篇",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})}),e.jsxs("span",{className:"text-xs text-gray-500",children:[oe,"章"]}),H?e.jsx(_l,{className:"w-5 h-5 text-gray-500"}):e.jsx(tn,{className:"w-5 h-5 text-gray-500"})]})]}),H&&R.chapters.length>0&&e.jsx("div",{className:"border-t border-gray-700/50 pl-4 pr-4 pb-4 pt-3 space-y-4",children:R.chapters.map(J=>e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2 w-full",children:[e.jsx("p",{className:"text-xs text-gray-500 pb-1 flex-1",children:J.title}),e.jsxs("div",{className:"flex gap-0.5 shrink-0",onClick:G=>G.stopPropagation(),children:[v&&e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>v(R,J),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"编辑章节名称",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),f&&e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>f(R),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"新增第X章",children:e.jsx(Rt,{className:"w-3.5 h-3.5"})}),g&&e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>g(R,J),className:"text-gray-500 hover:text-red-400 h-7 px-1.5",title:"删除本章",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})})]})]}),e.jsx("div",{className:"space-y-1 pl-2",children:J.sections.map(G=>{const de=I("section",G.id);return e.jsxs("div",{draggable:!0,onDragStart:Y=>{Y.stopPropagation(),Y.dataTransfer.setData("text/plain","section:"+G.id),Y.dataTransfer.effectAllowed="move",b({type:"section",id:G.id})},onDragEnd:()=>{b(null),C(null)},className:`flex items-center justify-between py-2 px-3 rounded-lg min-h-[40px] cursor-grab active:cursor-grabbing select-none transition-all duration-200 ${de?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":"hover:bg-[#162840]/50"} ${j("section",G.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":""}`,..._("section",G.id,{partId:R.id,partTitle:R.title,chapterId:J.id,chapterTitle:J.title}),children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[e.jsx(Sr,{className:"w-4 h-4 text-gray-500 shrink-0 opacity-50"}),P&&e.jsx("label",{className:"shrink-0 flex items-center",onClick:Y=>Y.stopPropagation(),children:e.jsx("input",{type:"checkbox",checked:E.includes(G.id),onChange:()=>P(G.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),e.jsxs("span",{className:"text-sm text-gray-200 truncate",children:[G.id," ",G.title]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[e.jsxs("span",{className:"text-[10px] text-gray-500",children:["点击 ",G.clickCount??0," · 付款 ",G.payCount??0]}),e.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(G.hotScore??0).toFixed(1)," · 第",G.hotRank&&G.hotRank>0?G.hotRank:"-","名"]}),T&&e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>T(G),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:"付款记录"}),e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>c(G),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:e.jsx(Er,{className:"w-3.5 h-3.5"})}),e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>c(G),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>u(G),className:"text-gray-500 hover:text-red-400 h-7 px-1.5",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})})]})]},G.id)})})]},J.id))})]},R.id)}if(Q)return e.jsxs("div",{className:"rounded-xl border border-gray-700/50 bg-[#1C1C1E] p-5",children:[e.jsx("h3",{className:"text-sm font-medium text-gray-400 mb-4",children:"附录"}),e.jsx("div",{className:"space-y-3",children:R.chapters.map((L,J)=>L.sections.length>0?L.sections.map(G=>{const de=I("section",G.id);return e.jsxs("div",{draggable:!0,onDragStart:Y=>{Y.stopPropagation(),Y.dataTransfer.setData("text/plain","section:"+G.id),Y.dataTransfer.effectAllowed="move",b({type:"section",id:G.id})},onDragEnd:()=>{b(null),C(null)},className:`flex justify-between items-center py-2 select-none rounded px-2 -mx-2 group cursor-grab active:cursor-grabbing min-h-[40px] transition-all duration-200 ${de?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":"hover:bg-[#162840]/50"} ${j("section",G.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":""}`,..._("section",G.id,{partId:R.id,partTitle:R.title,chapterId:L.id,chapterTitle:L.title}),children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[e.jsx(Sr,{className:"w-4 h-4 text-gray-500 shrink-0 opacity-50"}),P&&e.jsx("label",{className:"shrink-0 flex items-center",onClick:Y=>Y.stopPropagation(),children:e.jsx("input",{type:"checkbox",checked:E.includes(G.id),onChange:()=>P(G.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),e.jsxs("span",{className:"text-sm text-gray-300 truncate",children:["附录",J+1," | ",L.title," | ",G.title]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[e.jsxs("span",{className:"text-[10px] text-gray-500",children:["点击 ",G.clickCount??0," · 付款 ",G.payCount??0]}),e.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(G.hotScore??0).toFixed(1)," · 第",G.hotRank&&G.hotRank>0?G.hotRank:"-","名"]}),T&&e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>T(G),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:"付款记录"}),e.jsxs("div",{className:"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>c(G),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:e.jsx(Er,{className:"w-3.5 h-3.5"})}),e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>c(G),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>u(G),className:"text-gray-500 hover:text-red-400 h-7 px-1.5",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})})]})]}),e.jsx(tn,{className:"w-4 h-4 text-gray-500 shrink-0"})]},G.id)}):e.jsxs("div",{className:"flex justify-between items-center py-2 select-none hover:bg-[#162840]/50 rounded px-2 -mx-2",children:[e.jsxs("span",{className:"text-sm text-gray-500",children:["附录",J+1," | ",L.title,"(空)"]}),e.jsx(tn,{className:"w-4 h-4 text-gray-500 shrink-0"})]},L.id))})]},R.id);if(ae&&R.chapters.length===1&&R.chapters[0].sections.length===1){const L=R.chapters[0].sections[0],J=I("section",L.id),G={partId:R.id,partTitle:R.title,chapterId:R.chapters[0].id,chapterTitle:R.chapters[0].title};return e.jsxs("div",{draggable:!0,onDragStart:de=>{de.stopPropagation(),de.dataTransfer.setData("text/plain","section:"+L.id),de.dataTransfer.effectAllowed="move",b({type:"section",id:L.id})},onDragEnd:()=>{b(null),C(null)},className:`rounded-xl border border-gray-700/50 bg-[#1C1C1E] p-4 flex items-center justify-between hover:border-[#38bdac]/30 transition-colors cursor-grab active:cursor-grabbing select-none min-h-[40px] ${J?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":""} ${j("section",L.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":""}`,..._("section",L.id,G),children:[e.jsxs("div",{className:"flex items-center gap-3 flex-1 min-w-0 select-none",children:[e.jsx(Sr,{className:"w-5 h-5 text-gray-500 shrink-0 opacity-60"}),P&&e.jsx("label",{className:"shrink-0 flex items-center",onClick:de=>de.stopPropagation(),children:e.jsx("input",{type:"checkbox",checked:E.includes(L.id),onChange:()=>P(L.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),e.jsx("div",{className:"w-8 h-8 rounded-lg bg-gray-600/50 flex items-center justify-center shrink-0",children:e.jsx(qs,{className:"w-4 h-4 text-gray-400"})}),e.jsxs("span",{className:"font-medium text-gray-200 truncate",children:[R.chapters[0].title," | ",L.title]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",onMouseDown:de=>de.stopPropagation(),onClick:de=>de.stopPropagation(),children:[L.price===0||L.isFree?e.jsx("span",{className:"px-2 py-1 bg-[#38bdac]/20 text-[#38bdac] text-[10px] font-medium rounded",children:"免费"}):e.jsxs("span",{className:"text-xs text-gray-500",children:["¥",L.price]}),e.jsxs("span",{className:"text-[10px] text-gray-500",children:["点击 ",L.clickCount??0," · 付款 ",L.payCount??0]}),e.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(L.hotScore??0).toFixed(1)," · 第",L.hotRank&&L.hotRank>0?L.hotRank:"-","名"]}),T&&e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>T(L),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:"付款记录"}),e.jsxs("div",{className:"flex gap-1",children:[e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>c(L),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",children:e.jsx(Er,{className:"w-3.5 h-3.5"})}),e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>c(L),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>u(L),className:"text-gray-500 hover:text-red-400 h-7 px-2",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})})]}),e.jsx(tn,{className:"w-4 h-4 text-gray-500"})]})]},R.id)}return ae?e.jsxs("div",{className:"rounded-xl border border-gray-700/50 bg-[#1C1C1E] p-5",children:[e.jsx("h3",{className:"text-sm font-medium text-gray-400 mb-4",children:"尾声"}),e.jsx("div",{className:"space-y-3",children:R.chapters.map(L=>L.sections.map(J=>{const G=I("section",J.id);return e.jsxs("div",{draggable:!0,onDragStart:de=>{de.stopPropagation(),de.dataTransfer.setData("text/plain","section:"+J.id),de.dataTransfer.effectAllowed="move",b({type:"section",id:J.id})},onDragEnd:()=>{b(null),C(null)},className:`flex justify-between items-center py-2 select-none rounded px-2 -mx-2 cursor-grab active:cursor-grabbing min-h-[40px] transition-all duration-200 ${G?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":"hover:bg-[#162840]/50"} ${j("section",J.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":""}`,..._("section",J.id,{partId:R.id,partTitle:R.title,chapterId:L.id,chapterTitle:L.title}),children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[e.jsx(Sr,{className:"w-4 h-4 text-gray-500 shrink-0 opacity-50"}),P&&e.jsx("label",{className:"shrink-0 flex items-center",onClick:de=>de.stopPropagation(),children:e.jsx("input",{type:"checkbox",checked:E.includes(J.id),onChange:()=>P(J.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),e.jsxs("span",{className:"text-sm text-gray-300",children:[L.title," | ",J.title]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[e.jsxs("span",{className:"text-[10px] text-gray-500",children:["点击 ",J.clickCount??0," · 付款 ",J.payCount??0]}),e.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(J.hotScore??0).toFixed(1)," · 第",J.hotRank&&J.hotRank>0?J.hotRank:"-","名"]}),T&&e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>T(J),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:"付款记录"}),e.jsxs("div",{className:"flex gap-1",children:[e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>c(J),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",children:e.jsx(Er,{className:"w-3.5 h-3.5"})}),e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>c(J),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>u(J),className:"text-gray-500 hover:text-red-400 h-7 px-2",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})})]})]})]},J.id)}))})]},R.id):e.jsxs("div",{className:`rounded-xl border bg-[#1C1C1E] overflow-hidden transition-all duration-200 ${se?"border-[#38bdac] ring-2 ring-[#38bdac]/40 bg-[#38bdac]/5":"border-gray-700/50"}`,..._("part",R.id,{partId:R.id,partTitle:R.title,chapterId:((A=R.chapters[0])==null?void 0:A.id)??"",chapterTitle:((O=R.chapters[0])==null?void 0:O.title)??""}),children:[e.jsxs("div",{draggable:!0,onDragStart:L=>{L.stopPropagation(),L.dataTransfer.setData("text/plain","part:"+R.id),L.dataTransfer.effectAllowed="move",b({type:"part",id:R.id})},onDragEnd:()=>{b(null),C(null)},className:`flex items-center justify-between p-4 cursor-grab active:cursor-grabbing select-none transition-all duration-200 ${j("part",R.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac] rounded-xl shadow-xl shadow-[#38bdac]/20":"hover:bg-[#162840]/50"}`,onClick:()=>l(R.id),children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx(Sr,{className:"w-5 h-5 text-gray-500 shrink-0 opacity-60"}),e.jsx("div",{className:"w-10 h-10 rounded-xl bg-[#38bdac] flex items-center justify-center text-white font-bold shadow-lg shadow-[#38bdac]/30 shrink-0",children:k(Z)}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-bold text-white text-base",children:R.title}),e.jsxs("p",{className:"text-xs text-gray-500 mt-0.5",children:["共 ",ve," 节"]})]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",onMouseDown:L=>L.stopPropagation(),onClick:L=>L.stopPropagation(),children:[m&&e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>m(R),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"在本篇下新增章节",children:e.jsx(Rt,{className:"w-3.5 h-3.5"})}),y&&e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>y(R),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"编辑篇名",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),p&&e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>p(R),className:"text-gray-500 hover:text-red-400 h-7 px-2",title:"删除本篇",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})}),e.jsxs("span",{className:"text-xs text-gray-500",children:[oe,"章"]}),H?e.jsx(_l,{className:"w-5 h-5 text-gray-500"}):e.jsx(tn,{className:"w-5 h-5 text-gray-500"})]})]}),H&&e.jsx("div",{className:"border-t border-gray-700/50 pl-4 pr-4 pb-4 pt-3 space-y-4",children:R.chapters.map(L=>{const J=I("chapter",L.id);return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2 w-full",children:[e.jsxs("div",{draggable:!0,onDragStart:G=>{G.stopPropagation(),G.dataTransfer.setData("text/plain","chapter:"+L.id),G.dataTransfer.effectAllowed="move",b({type:"chapter",id:L.id})},onDragEnd:()=>{b(null),C(null)},onDragEnter:G=>{G.preventDefault(),G.stopPropagation(),G.dataTransfer.dropEffect="move",C({type:"chapter",id:L.id})},onDragOver:G=>{G.preventDefault(),G.stopPropagation(),G.dataTransfer.dropEffect="move",C({type:"chapter",id:L.id})},onDragLeave:()=>C(null),onDrop:G=>{C(null);const de=Bd(G.dataTransfer.getData("text/plain"));if(!de)return;const Y={partId:R.id,partTitle:R.title,chapterId:L.id,chapterTitle:L.title};(de.type==="section"||de.type==="chapter")&&V(G,"chapter",L.id,Y)},className:`flex-1 min-w-0 py-2 px-2 rounded cursor-grab active:cursor-grabbing select-none -mx-2 transition-all duration-200 flex items-center gap-2 ${J?"bg-[#38bdac]/15 ring-1 ring-[#38bdac]/50":""} ${j("chapter",L.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":"hover:bg-[#162840]/30"}`,children:[e.jsx(Sr,{className:"w-4 h-4 text-gray-500 shrink-0 opacity-50"}),e.jsx("p",{className:"text-xs text-gray-500 pb-1 flex-1",children:L.title})]}),e.jsxs("div",{className:"flex gap-0.5 shrink-0",onClick:G=>G.stopPropagation(),children:[v&&e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>v(R,L),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"编辑章节名称",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),f&&e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>f(R),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"新增第X章",children:e.jsx(Rt,{className:"w-3.5 h-3.5"})}),g&&e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>g(R,L),className:"text-gray-500 hover:text-red-400 h-7 px-1.5",title:"删除本章",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})})]})]}),e.jsx("div",{className:"space-y-1 pl-2",children:L.sections.map(G=>{const de=I("section",G.id);return e.jsxs("div",{draggable:!0,onDragStart:Y=>{Y.stopPropagation(),Y.dataTransfer.setData("text/plain","section:"+G.id),Y.dataTransfer.effectAllowed="move",b({type:"section",id:G.id})},onDragEnd:()=>{b(null),C(null)},className:`flex items-center justify-between py-2 px-3 rounded-lg group cursor-grab active:cursor-grabbing select-none min-h-[40px] transition-all duration-200 ${de?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":""} ${j("section",G.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac] shadow-lg":"hover:bg-[#162840]/50"}`,..._("section",G.id,{partId:R.id,partTitle:R.title,chapterId:L.id,chapterTitle:L.title}),children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0 flex-1",children:[P&&e.jsx("label",{className:"shrink-0 flex items-center",onClick:Y=>Y.stopPropagation(),children:e.jsx("input",{type:"checkbox",checked:E.includes(G.id),onChange:()=>P(G.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),e.jsx(Sr,{className:"w-4 h-4 text-gray-500 shrink-0 opacity-50"}),e.jsx("div",{className:`w-2 h-2 rounded-full shrink-0 ${G.price===0||G.isFree?"border-2 border-[#38bdac] bg-transparent":"bg-gray-500"}`}),e.jsxs("span",{className:"text-sm text-gray-200 truncate",children:[G.id," ",G.title]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",onMouseDown:Y=>Y.stopPropagation(),onClick:Y=>Y.stopPropagation(),children:[G.isNew&&e.jsx("span",{className:"px-2 py-1 bg-[#38bdac]/20 text-[#38bdac] text-[10px] font-medium rounded",children:"NEW"}),G.price===0||G.isFree?e.jsx("span",{className:"px-2 py-1 bg-[#38bdac]/20 text-[#38bdac] text-[10px] font-medium rounded",children:"免费"}):e.jsxs("span",{className:"text-xs text-gray-500",children:["¥",G.price]}),e.jsxs("span",{className:"text-[10px] text-gray-500",title:"点击次数 · 付款笔数",children:["点击 ",G.clickCount??0," · 付款 ",G.payCount??0]}),e.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(G.hotScore??0).toFixed(1)," · 第",G.hotRank&&G.hotRank>0?G.hotRank:"-","名"]}),T&&e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>T(G),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5 shrink-0",children:"付款记录"}),e.jsxs("div",{className:"flex gap-0.5 opacity-0 group-hover:opacity-100 transition-opacity",children:[e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>c(G),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:e.jsx(Er,{className:"w-3.5 h-3.5"})}),e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>c(G),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),e.jsx(X,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>u(G),className:"text-gray-500 hover:text-red-400 h-7 px-1.5",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})})]}),e.jsx(tn,{className:"w-4 h-4 text-gray-500"})]})]},G.id)})})]},L.id)})})]},R.id)})})}function xC(r){const a=new Map;for(const f of r){const g=f.partId||"part-1",y=f.partTitle||"未分类",p=f.chapterId||"chapter-1",v=f.chapterTitle||"未分类";a.has(g)||a.set(g,{id:g,title:y,chapters:new Map});const E=a.get(g);E.chapters.has(p)||E.chapters.set(p,{id:p,title:v,sections:[]}),E.chapters.get(p).sections.push({id:f.id,title:f.title,price:f.price??1,filePath:f.filePath,isFree:f.isFree,isNew:f.isNew,clickCount:f.clickCount??0,payCount:f.payCount??0,hotScore:f.hotScore??0,hotRank:f.hotRank??0})}const l="part-2026-daily",o="2026每日派对干货";Array.from(a.values()).some(f=>f.title===o||f.title.includes(o))||a.set(l,{id:l,title:o,chapters:new Map([["chapter-2026-daily",{id:"chapter-2026-daily",title:o,sections:[]}]])});const u=Array.from(a.values()).map(f=>({...f,chapters:Array.from(f.chapters.values())})),m=f=>f.includes("序言")?0:f.includes(o)?1.5:f.includes("附录")?2:f.includes("尾声")?3:1;return u.sort((f,g)=>{const y=m(f.title),p=m(g.title);return y!==p?y-p:0})}function pC(){var $s,Jn,ts;const[r,a]=h.useState([]),[l,o]=h.useState(!0),[c,u]=h.useState([]),[m,f]=h.useState(null),[g,y]=h.useState(!1),[p,v]=h.useState(!1),[E,P]=h.useState(!1),[T,w]=h.useState(""),[b,N]=h.useState([]),[C,j]=h.useState(!1),[I,U]=h.useState(!1),V=h.useRef(null),[_,k]=h.useState({id:"",title:"",price:1,partId:"part-1",chapterId:"chapter-1",content:""}),[R,Z]=h.useState(null),[ne,ae]=h.useState(!1),[Q,se]=h.useState(!1),[H,oe]=h.useState(null),[ve,B]=h.useState(!1),[ce,K]=h.useState([]),[A,O]=h.useState(!1),[L,J]=h.useState(""),[G,de]=h.useState(""),[Y,ge]=h.useState(!1),[Se,D]=h.useState(""),[fe,ke]=h.useState(!1),[Ve,We]=h.useState(null),[Ye,tt]=h.useState(!1),[ze,he]=h.useState(!1),[xe,ft]=h.useState({readWeight:.5,recencyWeight:.3,payWeight:.2}),[es,hr]=h.useState(!1),[jn,As]=h.useState(!1),Bt=xC(r),_r=r.length,ct=async()=>{o(!0);try{const F=await Be("/api/db/book?action=list",{cache:"no-store"});a(Array.isArray(F==null?void 0:F.sections)?F.sections:[])}catch(F){console.error(F),a([])}finally{o(!1)}};h.useEffect(()=>{ct()},[]);const gs=F=>{u(ie=>ie.includes(F)?ie.filter(Ce=>Ce!==F):[...ie,F])},bn=h.useCallback(F=>{const ie=r,Ce=F.flatMap(Pe=>{const xt=ie.find(ns=>ns.id===Pe.id);return xt?[{...xt,partId:Pe.partId,partTitle:Pe.partTitle,chapterId:Pe.chapterId,chapterTitle:Pe.chapterTitle}]:[]});return a(Ce),vt("/api/db/book",{action:"reorder",items:F}).then(Pe=>{Pe&&Pe.success===!1&&(a(ie),alert("排序失败: "+(Pe&&typeof Pe=="object"&&"error"in Pe?Pe.error:"未知错误")))}).catch(Pe=>{a(ie),console.error("排序失败:",Pe),alert("排序失败: "+(Pe instanceof Error?Pe.message:"网络或服务异常"))}),Promise.resolve()},[r]),mr=async F=>{if(confirm(`确定要删除章节「${F.title}」吗?此操作不可恢复。`))try{const ie=await Pr(`/api/db/book?id=${encodeURIComponent(F.id)}`);ie&&ie.success!==!1?(alert("已删除"),ct()):alert("删除失败: "+(ie&&typeof ie=="object"&&"error"in ie?ie.error:"未知错误"))}catch(ie){console.error(ie),alert("删除失败")}},Cs=h.useCallback(async()=>{hr(!0);try{const F=await Be("/api/db/config/full?key=article_ranking_weights",{cache:"no-store"}),ie=F&&F.data;ie&&typeof ie.readWeight=="number"&&typeof ie.recencyWeight=="number"&&typeof ie.payWeight=="number"&&ft({readWeight:Math.max(0,Math.min(1,ie.readWeight)),recencyWeight:Math.max(0,Math.min(1,ie.recencyWeight)),payWeight:Math.max(0,Math.min(1,ie.payWeight))})}catch{}finally{hr(!1)}},[]);h.useEffect(()=>{ze&&Cs()},[ze,Cs]);const Kn=async()=>{const{readWeight:F,recencyWeight:ie,payWeight:Ce}=xe,Pe=F+ie+Ce;if(Math.abs(Pe-1)>.001){alert("三个权重之和必须等于 1");return}As(!0);try{const xt=await mt("/api/db/config",{key:"article_ranking_weights",value:{readWeight:F,recencyWeight:ie,payWeight:Ce},description:"文章排名算法权重"});xt&&xt.success!==!1?(alert("已保存"),ct()):alert("保存失败: "+(xt&&typeof xt=="object"&&"error"in xt?xt.error:""))}catch(xt){console.error(xt),alert("保存失败")}finally{As(!1)}},Gn=async F=>{We({section:F,orders:[]}),tt(!0);try{const ie=await Be(`/api/db/book?action=section-orders&id=${encodeURIComponent(F.id)}`),Ce=ie!=null&&ie.success&&Array.isArray(ie.orders)?ie.orders:[];We(Pe=>Pe?{...Pe,orders:Ce}:null)}catch(ie){console.error(ie),We(Ce=>Ce?{...Ce,orders:[]}:null)}finally{tt(!1)}},ks=async F=>{v(!0);try{const ie=await Be(`/api/db/book?action=read&id=${encodeURIComponent(F.id)}`);if(ie!=null&&ie.success&&ie.section){const Ce=ie.section;f({id:F.id,title:ie.section.title??F.title,price:ie.section.price??F.price,content:ie.section.content??"",filePath:F.filePath,isFree:F.isFree||F.price===0,isNew:Ce.isNew??F.isNew})}else f({id:F.id,title:F.title,price:F.price,content:"",filePath:F.filePath,isFree:F.isFree,isNew:F.isNew}),ie&&!ie.success&&alert("无法读取文件内容: "+(ie.error||"未知错误"))}catch(ie){console.error(ie),f({id:F.id,title:F.title,price:F.price,content:"",filePath:F.filePath,isFree:F.isFree})}finally{v(!1)}},Nn=async()=>{var F;if(m){P(!0);try{let ie=m.content||"";const Ce=[new RegExp(`^#+\\s*${m.id.replace(".","\\.")}\\s+.*$`,"gm"),new RegExp(`^#+\\s*${m.id.replace(".","\\.")}[::].*$`,"gm"),new RegExp(`^#\\s+.*${(F=m.title)==null?void 0:F.slice(0,10).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}.*$`,"gm")];for(const xt of Ce)ie=ie.replace(xt,"");ie=ie.replace(/^\s*\n+/,"").trim();const Pe=await vt("/api/db/book",{id:m.id,title:m.title,price:m.isFree?0:m.price,content:ie,isFree:m.isFree||m.price===0,isNew:m.isNew,saveToFile:!0});Pe&&Pe.success!==!1?(alert(`已保存章节: ${m.title}`),f(null),ct()):alert("保存失败: "+(Pe&&typeof Pe=="object"&&"error"in Pe?Pe.error:"未知错误"))}catch(ie){console.error(ie),alert("保存失败")}finally{P(!1)}}},fr=async()=>{if(!_.id||!_.title){alert("请填写章节ID和标题");return}P(!0);try{const F=await vt("/api/db/book",{id:_.id,title:_.title,price:_.price,content:_.content,partId:_.partId,chapterId:_.chapterId,saveToFile:!1});F&&F.success!==!1?(alert(`章节创建成功: ${_.title}`),y(!1),k({id:"",title:"",price:1,partId:"part-1",chapterId:"chapter-1",content:""}),ct()):alert("创建失败: "+(F&&typeof F=="object"&&"error"in F?F.error:"未知错误"))}catch(F){console.error(F),alert("创建失败")}finally{P(!1)}},ys=F=>{k(ie=>{var Ce;return{...ie,partId:F.id,chapterId:((Ce=F.chapters[0])==null?void 0:Ce.id)??"chapter-1"}}),y(!0)},Ds=F=>{Z({id:F.id,title:F.title})},Ls=async()=>{var F;if((F=R==null?void 0:R.title)!=null&&F.trim()){ae(!0);try{const ie=r.map(Pe=>({id:Pe.id,partId:Pe.partId||"part-1",partTitle:Pe.partId===R.id?R.title.trim():Pe.partTitle||"",chapterId:Pe.chapterId||"chapter-1",chapterTitle:Pe.chapterTitle||""})),Ce=await vt("/api/db/book",{action:"reorder",items:ie});Ce&&Ce.success!==!1?(Z(null),ct()):alert("更新篇名失败: "+(Ce&&typeof Ce=="object"&&"error"in Ce?Ce.error:"未知错误"))}catch(ie){console.error(ie),alert("更新篇名失败")}finally{ae(!1)}}},wn=F=>{const ie=F.chapters.length+1,Ce=`chapter-${F.id}-${ie}-${Date.now()}`;k({id:`${ie}.1`,title:"新章节",price:1,partId:F.id,chapterId:Ce,content:""}),y(!0)},Es=(F,ie)=>{oe({part:F,chapter:ie,title:ie.title})},Os=async()=>{var F;if((F=H==null?void 0:H.title)!=null&&F.trim()){B(!0);try{const ie=r.map(Pe=>({id:Pe.id,partId:Pe.partId||H.part.id,partTitle:Pe.partId===H.part.id?H.part.title:Pe.partTitle||"",chapterId:Pe.chapterId||H.chapter.id,chapterTitle:Pe.partId===H.part.id&&Pe.chapterId===H.chapter.id?H.title.trim():Pe.chapterTitle||""})),Ce=await vt("/api/db/book",{action:"reorder",items:ie});Ce&&Ce.success!==!1?(oe(null),ct()):alert("保存失败: "+(Ce&&typeof Ce=="object"&&"error"in Ce?Ce.error:"未知错误"))}catch(ie){console.error(ie),alert("保存失败")}finally{B(!1)}}},Fs=async(F,ie)=>{const Ce=ie.sections.map(Pe=>Pe.id);if(Ce.length===0){alert("该章下无小节,无需删除");return}if(confirm(`确定要删除「第${F.chapters.indexOf(ie)+1}章 | ${ie.title}」吗?将删除共 ${Ce.length} 节,此操作不可恢复。`))try{for(const Pe of Ce)await Pr(`/api/db/book?id=${encodeURIComponent(Pe)}`);ct()}catch(Pe){console.error(Pe),alert("删除失败")}},Yn=async()=>{if(!Se.trim()){alert("请输入篇名");return}ke(!0);try{const F=`part-new-${Date.now()}`,ie="chapter-1",Ce=`part-placeholder-${Date.now()}`,Pe=await vt("/api/db/book",{id:Ce,title:"占位节(可编辑)",price:0,content:"",partId:F,partTitle:Se.trim(),chapterId:ie,chapterTitle:"第1章 | 待编辑",saveToFile:!1});Pe&&Pe.success!==!1?(alert(`篇「${Se}」创建成功,请编辑占位节`),se(!1),D(""),ct()):alert("创建失败: "+(Pe&&typeof Pe=="object"&&"error"in Pe?Pe.error:"未知错误"))}catch(F){console.error(F),alert("创建失败")}finally{ke(!1)}},Qn=async()=>{if(ce.length===0){alert("请先勾选要移动的章节");return}const F=Bt.find(Ce=>Ce.id===L),ie=F==null?void 0:F.chapters.find(Ce=>Ce.id===G);if(!F||!ie||!L||!G){alert("请选择目标篇和章");return}ge(!0);try{const Ce=()=>{const nt=new Set(ce),as=r.map(Pt=>({id:Pt.id,partId:Pt.partId||"",partTitle:Pt.partTitle||"",chapterId:Pt.chapterId||"",chapterTitle:Pt.chapterTitle||""})),kn=as.filter(Pt=>nt.has(Pt.id)).map(Pt=>({...Pt,partId:L,partTitle:F.title||L,chapterId:G,chapterTitle:ie.title||G})),er=as.filter(Pt=>!nt.has(Pt.id));let xr=er.length;for(let Pt=er.length-1;Pt>=0;Pt-=1){const z=er[Pt];if(z.partId===L&&z.chapterId===G){xr=Pt+1;break}}return[...er.slice(0,xr),...kn,...er.slice(xr)]},Pe=async()=>{const nt=Ce(),as=await vt("/api/db/book",{action:"reorder",items:nt});return as&&as.success!==!1?(alert(`已移动 ${ce.length} 节到「${F.title}」-「${ie.title}」`),O(!1),K([]),await ct(),!0):!1},xt={action:"move-sections",sectionIds:ce,targetPartId:L,targetChapterId:G,targetPartTitle:F.title||L,targetChapterTitle:ie.title||G},ns=await vt("/api/db/book",xt);if(ns&&ns.success!==!1)alert(`已移动 ${ns.count??ce.length} 节到「${F.title}」-「${ie.title}」`),O(!1),K([]),await ct();else{const nt=ns&&typeof ns=="object"&&"error"in ns?ns.error||"":"未知错误";if((nt.includes("缺少 id")||nt.includes("无效的 action"))&&await Pe())return;alert("移动失败: "+nt)}}catch(Ce){console.error(Ce),alert("移动失败: "+(Ce instanceof Error?Ce.message:"网络或服务异常"))}finally{ge(!1)}},qn=F=>{K(ie=>ie.includes(F)?ie.filter(Ce=>Ce!==F):[...ie,F])},Xn=async F=>{const ie=r.filter(Ce=>Ce.partId===F.id).map(Ce=>Ce.id);if(ie.length===0){alert("该篇下暂无小节可删除");return}if(confirm(`确定要删除「${F.title}」整篇吗?将删除共 ${ie.length} 节内容,此操作不可恢复。`))try{for(const Ce of ie)await Pr(`/api/db/book?id=${encodeURIComponent(Ce)}`);ct()}catch(Ce){console.error(Ce),alert("删除失败")}},Sn=async F=>{var Ce,Pe;const ie=(Ce=F.target.files)==null?void 0:Ce[0];if(ie){U(!0);try{const xt=new FormData;xt.append("file",ie),xt.append("folder","book-images");const nt=await(await fetch(Ma("/api/upload"),{method:"POST",body:xt,credentials:"include"})).json();if(nt!=null&&nt.success&&((Pe=nt==null?void 0:nt.data)!=null&&Pe.url)){const as=`![${ie.name}](${nt.data.url})`;m&&f({...m,content:(m.content||"")+` +确认已核实用户账户并完成打款?`))return}else if(!confirm("确认已完成打款?批准后将更新用户提现记录。"))return;b(I);try{const E=await vt("/api/admin/withdrawals",{id:I,action:"approve"});E!=null&&E.success?S():alert("操作失败: "+((E==null?void 0:E.error)??""))}catch{alert("操作失败")}finally{b(null)}}async function O(I){const R=prompt("请输入拒绝原因(将返还用户余额):");if(R){b(I);try{const E=await vt("/api/admin/withdrawals",{id:I,action:"reject",errorMessage:R});E!=null&&E.success?S():alert("操作失败: "+((E==null?void 0:E.error)??""))}catch{alert("操作失败")}finally{b(null)}}}function V(I){switch(I){case"pending":return e.jsx(Le,{className:"bg-orange-500/20 text-orange-400 hover:bg-orange-500/20 border-0",children:"待处理"});case"pending_confirm":return e.jsx(Le,{className:"bg-orange-500/20 text-orange-400 hover:bg-orange-500/20 border-0",children:"待用户确认"});case"processing":return e.jsx(Le,{className:"bg-blue-500/20 text-blue-400 hover:bg-blue-500/20 border-0",children:"已审批等待打款"});case"success":case"completed":return e.jsx(Le,{className:"bg-green-500/20 text-green-400 hover:bg-green-500/20 border-0",children:"已完成"});case"failed":case"rejected":return e.jsx(Le,{className:"bg-red-500/20 text-red-400 hover:bg-red-500/20 border-0",children:"已拒绝"});default:return e.jsx(Le,{className:"bg-gray-500/20 text-gray-400 border-0",children:I})}}return e.jsxs("div",{className:"p-8 w-full",children:[m&&e.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[e.jsx("span",{children:m}),e.jsx("button",{type:"button",onClick:()=>f(null),className:"hover:text-red-300",children:"×"})]}),e.jsxs("div",{className:"flex justify-between items-start mb-8",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-white",children:"分账提现管理"}),e.jsx("p",{className:"text-gray-400 mt-1",children:"管理用户分销收益的提现申请"})]}),e.jsxs(J,{variant:"outline",onClick:S,disabled:c,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${c?"animate-spin":""}`}),"刷新"]})]}),e.jsx(Ne,{className:"bg-gradient-to-r from-[#38bdac]/10 to-[#0f2137] border-[#38bdac]/30 mb-6",children:e.jsx(we,{className:"p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Ml,{className:"w-5 h-5 text-[#38bdac] mt-0.5"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-white font-medium mb-2",children:"自动分账规则"}),e.jsxs("div",{className:"text-sm text-gray-400 space-y-1",children:[e.jsxs("p",{children:["• ",e.jsx("span",{className:"text-[#38bdac]",children:"分销比例"}),":推广者获得订单金额的"," ",e.jsx("span",{className:"text-white font-medium",children:"90%"})]}),e.jsxs("p",{children:["• ",e.jsx("span",{className:"text-[#38bdac]",children:"结算方式"}),":用户付款后,分销收益自动计入推广者账户"]}),e.jsxs("p",{children:["• ",e.jsx("span",{className:"text-[#38bdac]",children:"提现方式"}),":用户在小程序端点击提现,系统自动转账到微信零钱"]}),e.jsxs("p",{children:["• ",e.jsx("span",{className:"text-[#38bdac]",children:"审批流程"}),":待处理的提现需管理员手动确认打款后批准"]})]})]})]})})}),e.jsxs("div",{className:"grid grid-cols-4 gap-4 mb-6",children:[e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsxs(we,{className:"p-4 text-center",children:[e.jsx("div",{className:"text-3xl font-bold text-[#38bdac]",children:l.total}),e.jsx("div",{className:"text-sm text-gray-400",children:"总申请"})]})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsxs(we,{className:"p-4 text-center",children:[e.jsx("div",{className:"text-3xl font-bold text-orange-400",children:l.pendingCount}),e.jsx("div",{className:"text-sm text-gray-400",children:"待处理"}),e.jsxs("div",{className:"text-xs text-orange-400 mt-1",children:["¥",l.pendingAmount.toFixed(2)]})]})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsxs(we,{className:"p-4 text-center",children:[e.jsx("div",{className:"text-3xl font-bold text-green-400",children:l.successCount}),e.jsx("div",{className:"text-sm text-gray-400",children:"已完成"}),e.jsxs("div",{className:"text-xs text-green-400 mt-1",children:["¥",l.successAmount.toFixed(2)]})]})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsxs(we,{className:"p-4 text-center",children:[e.jsx("div",{className:"text-3xl font-bold text-red-400",children:l.failedCount}),e.jsx("div",{className:"text-sm text-gray-400",children:"已拒绝"})]})})]}),e.jsx("div",{className:"flex gap-2 mb-4",children:["all","pending","success","failed"].map(I=>e.jsx(J,{variant:p===I?"default":"outline",size:"sm",onClick:()=>y(I),className:p===I?"bg-[#38bdac] hover:bg-[#2da396] text-white":"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:I==="all"?"全部":I==="pending"?"待处理":I==="success"?"已完成":"已拒绝"},I))}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:e.jsx(we,{className:"p-0",children:c?e.jsxs("div",{className:"flex items-center justify-center py-12",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):r.length===0?e.jsxs("div",{className:"text-center py-12",children:[e.jsx(Ma,{className:"w-12 h-12 text-gray-600 mx-auto mb-3"}),e.jsx("p",{className:"text-gray-500",children:"暂无提现记录"})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-[#0a1628] text-gray-400",children:[e.jsx("th",{className:"p-4 text-left font-medium",children:"申请时间"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"用户"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"提现金额"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"用户佣金信息"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"状态"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"处理时间"}),e.jsx("th",{className:"p-4 text-left font-medium",children:"确认收款"}),e.jsx("th",{className:"p-4 text-right font-medium",children:"操作"})]})}),e.jsx("tbody",{className:"divide-y divide-gray-700/50",children:r.map(I=>e.jsxs("tr",{className:"hover:bg-[#0a1628] transition-colors",children:[e.jsx("td",{className:"p-4 text-gray-400",children:new Date(I.createdAt??"").toLocaleString()}),e.jsx("td",{className:"p-4",children:e.jsxs("div",{className:"flex items-center gap-2",children:[I.userAvatar?e.jsx("img",{src:I.userAvatar,alt:I.userName??"",className:"w-8 h-8 rounded-full object-cover"}):e.jsx("div",{className:"w-8 h-8 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm text-[#38bdac]",children:(I.userName??"?").charAt(0)}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-white",children:I.userName??"未知"}),e.jsx("p",{className:"text-xs text-gray-500",children:I.userPhone??I.referralCode??(I.userId??"").slice(0,10)})]})]})}),e.jsx("td",{className:"p-4",children:e.jsxs("span",{className:"font-bold text-orange-400",children:["¥",Number(I.amount).toFixed(2)]})}),e.jsx("td",{className:"p-4",children:I.userCommissionInfo?e.jsxs("div",{className:"text-xs space-y-1",children:[e.jsxs("div",{className:"flex justify-between gap-4",children:[e.jsx("span",{className:"text-gray-500",children:"累计佣金:"}),e.jsxs("span",{className:"text-[#38bdac] font-medium",children:["¥",I.userCommissionInfo.totalCommission.toFixed(2)]})]}),e.jsxs("div",{className:"flex justify-between gap-4",children:[e.jsx("span",{className:"text-gray-500",children:"已提现:"}),e.jsxs("span",{className:"text-gray-400",children:["¥",I.userCommissionInfo.withdrawnEarnings.toFixed(2)]})]}),e.jsxs("div",{className:"flex justify-between gap-4",children:[e.jsx("span",{className:"text-gray-500",children:"待审核:"}),e.jsxs("span",{className:"text-orange-400",children:["¥",I.userCommissionInfo.pendingWithdrawals.toFixed(2)]})]}),e.jsxs("div",{className:"flex justify-between gap-4 pt-1 border-t border-gray-700/30",children:[e.jsx("span",{className:"text-gray-500",children:"审核后余额:"}),e.jsxs("span",{className:I.userCommissionInfo.availableAfterThis>=0?"text-green-400 font-medium":"text-red-400 font-medium",children:["¥",I.userCommissionInfo.availableAfterThis.toFixed(2)]})]})]}):e.jsx("span",{className:"text-gray-500 text-xs",children:"暂无数据"})}),e.jsxs("td",{className:"p-4",children:[V(I.status),I.errorMessage&&e.jsx("p",{className:"text-xs text-red-400 mt-1",children:I.errorMessage})]}),e.jsx("td",{className:"p-4 text-gray-400",children:I.processedAt?new Date(I.processedAt).toLocaleString():"-"}),e.jsx("td",{className:"p-4 text-gray-400",children:I.userConfirmedAt?e.jsxs("span",{className:"text-green-400",title:I.userConfirmedAt,children:["已确认 ",new Date(I.userConfirmedAt).toLocaleString()]}):"-"}),e.jsxs("td",{className:"p-4 text-right",children:[(I.status==="pending"||I.status==="pending_confirm")&&e.jsxs("div",{className:"flex items-center justify-end gap-2",children:[e.jsxs(J,{size:"sm",onClick:()=>_(I.id),disabled:N===I.id,className:"bg-green-600 hover:bg-green-700 text-white",children:[e.jsx(wo,{className:"w-4 h-4 mr-1"}),"批准"]}),e.jsxs(J,{size:"sm",variant:"outline",onClick:()=>O(I.id),disabled:N===I.id,className:"border-red-500/50 text-red-400 hover:bg-red-500/10 bg-transparent",children:[e.jsx(ms,{className:"w-4 h-4 mr-1"}),"拒绝"]})]}),(I.status==="success"||I.status==="completed")&&I.transactionId&&e.jsx("span",{className:"text-xs text-gray-500 font-mono",children:I.transactionId})]})]},I.id))})]})}),e.jsx(Qs,{page:g,totalPages:j,total:T,pageSize:k,onPageChange:v,onPageSizeChange:I=>{P(I),v(1)}})]})})})]})}const d4=["top","right","bottom","left"],mn=Math.min,ws=Math.max,po=Math.round,ro=Math.floor,cr=r=>({x:r,y:r}),u4={left:"right",right:"left",bottom:"top",top:"bottom"},h4={start:"end",end:"start"};function au(r,a,l){return ws(r,mn(a,l))}function Tr(r,a){return typeof r=="function"?r(a):r}function Rr(r){return r.split("-")[0]}function Ua(r){return r.split("-")[1]}function Ou(r){return r==="x"?"y":"x"}function Fu(r){return r==="y"?"height":"width"}const m4=new Set(["top","bottom"]);function or(r){return m4.has(Rr(r))?"y":"x"}function zu(r){return Ou(or(r))}function f4(r,a,l){l===void 0&&(l=!1);const o=Ua(r),c=zu(r),u=Fu(c);let m=c==="x"?o===(l?"end":"start")?"right":"left":o==="start"?"bottom":"top";return a.reference[u]>a.floating[u]&&(m=go(m)),[m,go(m)]}function x4(r){const a=go(r);return[lu(r),a,lu(a)]}function lu(r){return r.replace(/start|end/g,a=>h4[a])}const cx=["left","right"],dx=["right","left"],p4=["top","bottom"],g4=["bottom","top"];function y4(r,a,l){switch(r){case"top":case"bottom":return l?a?dx:cx:a?cx:dx;case"left":case"right":return a?p4:g4;default:return[]}}function v4(r,a,l,o){const c=Ua(r);let u=y4(Rr(r),l==="start",o);return c&&(u=u.map(m=>m+"-"+c),a&&(u=u.concat(u.map(lu)))),u}function go(r){return r.replace(/left|right|bottom|top/g,a=>u4[a])}function j4(r){return{top:0,right:0,bottom:0,left:0,...r}}function _0(r){return typeof r!="number"?j4(r):{top:r,right:r,bottom:r,left:r}}function yo(r){const{x:a,y:l,width:o,height:c}=r;return{width:o,height:c,top:l,left:a,right:a+o,bottom:l+c,x:a,y:l}}function ux(r,a,l){let{reference:o,floating:c}=r;const u=or(a),m=zu(a),f=Fu(m),p=Rr(a),y=u==="y",g=o.x+o.width/2-c.width/2,v=o.y+o.height/2-c.height/2,k=o[f]/2-c[f]/2;let P;switch(p){case"top":P={x:g,y:o.y-c.height};break;case"bottom":P={x:g,y:o.y+o.height};break;case"right":P={x:o.x+o.width,y:v};break;case"left":P={x:o.x-c.width,y:v};break;default:P={x:o.x,y:o.y}}switch(Ua(a)){case"start":P[m]-=k*(l&&y?-1:1);break;case"end":P[m]+=k*(l&&y?-1:1);break}return P}async function b4(r,a){var l;a===void 0&&(a={});const{x:o,y:c,platform:u,rects:m,elements:f,strategy:p}=r,{boundary:y="clippingAncestors",rootBoundary:g="viewport",elementContext:v="floating",altBoundary:k=!1,padding:P=0}=Tr(a,r),T=_0(P),N=f[k?v==="floating"?"reference":"floating":v],b=yo(await u.getClippingRect({element:(l=await(u.isElement==null?void 0:u.isElement(N)))==null||l?N:N.contextElement||await(u.getDocumentElement==null?void 0:u.getDocumentElement(f.floating)),boundary:y,rootBoundary:g,strategy:p})),S=v==="floating"?{x:o,y:c,width:m.floating.width,height:m.floating.height}:m.reference,j=await(u.getOffsetParent==null?void 0:u.getOffsetParent(f.floating)),_=await(u.isElement==null?void 0:u.isElement(j))?await(u.getScale==null?void 0:u.getScale(j))||{x:1,y:1}:{x:1,y:1},O=yo(u.convertOffsetParentRelativeRectToViewportRelativeRect?await u.convertOffsetParentRelativeRectToViewportRelativeRect({elements:f,rect:S,offsetParent:j,strategy:p}):S);return{top:(b.top-O.top+T.top)/_.y,bottom:(O.bottom-b.bottom+T.bottom)/_.y,left:(b.left-O.left+T.left)/_.x,right:(O.right-b.right+T.right)/_.x}}const N4=async(r,a,l)=>{const{placement:o="bottom",strategy:c="absolute",middleware:u=[],platform:m}=l,f=u.filter(Boolean),p=await(m.isRTL==null?void 0:m.isRTL(a));let y=await m.getElementRects({reference:r,floating:a,strategy:c}),{x:g,y:v}=ux(y,o,p),k=o,P={},T=0;for(let N=0;N({name:"arrow",options:r,async fn(a){const{x:l,y:o,placement:c,rects:u,platform:m,elements:f,middlewareData:p}=a,{element:y,padding:g=0}=Tr(r,a)||{};if(y==null)return{};const v=_0(g),k={x:l,y:o},P=zu(c),T=Fu(P),w=await m.getDimensions(y),N=P==="y",b=N?"top":"left",S=N?"bottom":"right",j=N?"clientHeight":"clientWidth",_=u.reference[T]+u.reference[P]-k[P]-u.floating[T],O=k[P]-u.reference[P],V=await(m.getOffsetParent==null?void 0:m.getOffsetParent(y));let I=V?V[j]:0;(!I||!await(m.isElement==null?void 0:m.isElement(V)))&&(I=f.floating[j]||u.floating[T]);const R=_/2-O/2,E=I/2-w[T]/2-1,Y=mn(v[b],E),ne=mn(v[S],E),ae=Y,q=I-w[T]-ne,se=I/2-w[T]/2+R,H=au(ae,se,q),ie=!p.arrow&&Ua(c)!=null&&se!==H&&u.reference[T]/2-(sese<=0)){var ne,ae;const se=(((ne=u.flip)==null?void 0:ne.index)||0)+1,H=I[se];if(H&&(!(v==="alignment"?S!==or(H):!1)||Y.every(U=>or(U.placement)===S?U.overflows[0]>0:!0)))return{data:{index:se,overflows:Y},reset:{placement:H}};let ie=(ae=Y.filter(ve=>ve.overflows[0]<=0).sort((ve,U)=>ve.overflows[1]-U.overflows[1])[0])==null?void 0:ae.placement;if(!ie)switch(P){case"bestFit":{var q;const ve=(q=Y.filter(U=>{if(V){const ce=or(U.placement);return ce===S||ce==="y"}return!0}).map(U=>[U.placement,U.overflows.filter(ce=>ce>0).reduce((ce,K)=>ce+K,0)]).sort((U,ce)=>U[1]-ce[1])[0])==null?void 0:q[0];ve&&(ie=ve);break}case"initialPlacement":ie=f;break}if(c!==ie)return{reset:{placement:ie}}}return{}}}};function hx(r,a){return{top:r.top-a.height,right:r.right-a.width,bottom:r.bottom-a.height,left:r.left-a.width}}function mx(r){return d4.some(a=>r[a]>=0)}const C4=function(r){return r===void 0&&(r={}),{name:"hide",options:r,async fn(a){const{rects:l,platform:o}=a,{strategy:c="referenceHidden",...u}=Tr(r,a);switch(c){case"referenceHidden":{const m=await o.detectOverflow(a,{...u,elementContext:"reference"}),f=hx(m,l.reference);return{data:{referenceHiddenOffsets:f,referenceHidden:mx(f)}}}case"escaped":{const m=await o.detectOverflow(a,{...u,altBoundary:!0}),f=hx(m,l.floating);return{data:{escapedOffsets:f,escaped:mx(f)}}}default:return{}}}}},M0=new Set(["left","top"]);async function k4(r,a){const{placement:l,platform:o,elements:c}=r,u=await(o.isRTL==null?void 0:o.isRTL(c.floating)),m=Rr(l),f=Ua(l),p=or(l)==="y",y=M0.has(m)?-1:1,g=u&&p?-1:1,v=Tr(a,r);let{mainAxis:k,crossAxis:P,alignmentAxis:T}=typeof v=="number"?{mainAxis:v,crossAxis:0,alignmentAxis:null}:{mainAxis:v.mainAxis||0,crossAxis:v.crossAxis||0,alignmentAxis:v.alignmentAxis};return f&&typeof T=="number"&&(P=f==="end"?T*-1:T),p?{x:P*g,y:k*y}:{x:k*y,y:P*g}}const E4=function(r){return r===void 0&&(r=0),{name:"offset",options:r,async fn(a){var l,o;const{x:c,y:u,placement:m,middlewareData:f}=a,p=await k4(a,r);return m===((l=f.offset)==null?void 0:l.placement)&&(o=f.arrow)!=null&&o.alignmentOffset?{}:{x:c+p.x,y:u+p.y,data:{...p,placement:m}}}}},P4=function(r){return r===void 0&&(r={}),{name:"shift",options:r,async fn(a){const{x:l,y:o,placement:c,platform:u}=a,{mainAxis:m=!0,crossAxis:f=!1,limiter:p={fn:b=>{let{x:S,y:j}=b;return{x:S,y:j}}},...y}=Tr(r,a),g={x:l,y:o},v=await u.detectOverflow(a,y),k=or(Rr(c)),P=Ou(k);let T=g[P],w=g[k];if(m){const b=P==="y"?"top":"left",S=P==="y"?"bottom":"right",j=T+v[b],_=T-v[S];T=au(j,T,_)}if(f){const b=k==="y"?"top":"left",S=k==="y"?"bottom":"right",j=w+v[b],_=w-v[S];w=au(j,w,_)}const N=p.fn({...a,[P]:T,[k]:w});return{...N,data:{x:N.x-l,y:N.y-o,enabled:{[P]:m,[k]:f}}}}}},T4=function(r){return r===void 0&&(r={}),{options:r,fn(a){const{x:l,y:o,placement:c,rects:u,middlewareData:m}=a,{offset:f=0,mainAxis:p=!0,crossAxis:y=!0}=Tr(r,a),g={x:l,y:o},v=or(c),k=Ou(v);let P=g[k],T=g[v];const w=Tr(f,a),N=typeof w=="number"?{mainAxis:w,crossAxis:0}:{mainAxis:0,crossAxis:0,...w};if(p){const j=k==="y"?"height":"width",_=u.reference[k]-u.floating[j]+N.mainAxis,O=u.reference[k]+u.reference[j]-N.mainAxis;P<_?P=_:P>O&&(P=O)}if(y){var b,S;const j=k==="y"?"width":"height",_=M0.has(Rr(c)),O=u.reference[v]-u.floating[j]+(_&&((b=m.offset)==null?void 0:b[v])||0)+(_?0:N.crossAxis),V=u.reference[v]+u.reference[j]+(_?0:((S=m.offset)==null?void 0:S[v])||0)-(_?N.crossAxis:0);TV&&(T=V)}return{[k]:P,[v]:T}}}},R4=function(r){return r===void 0&&(r={}),{name:"size",options:r,async fn(a){var l,o;const{placement:c,rects:u,platform:m,elements:f}=a,{apply:p=()=>{},...y}=Tr(r,a),g=await m.detectOverflow(a,y),v=Rr(c),k=Ua(c),P=or(c)==="y",{width:T,height:w}=u.floating;let N,b;v==="top"||v==="bottom"?(N=v,b=k===(await(m.isRTL==null?void 0:m.isRTL(f.floating))?"start":"end")?"left":"right"):(b=v,N=k==="end"?"top":"bottom");const S=w-g.top-g.bottom,j=T-g.left-g.right,_=mn(w-g[N],S),O=mn(T-g[b],j),V=!a.middlewareData.shift;let I=_,R=O;if((l=a.middlewareData.shift)!=null&&l.enabled.x&&(R=j),(o=a.middlewareData.shift)!=null&&o.enabled.y&&(I=S),V&&!k){const Y=ws(g.left,0),ne=ws(g.right,0),ae=ws(g.top,0),q=ws(g.bottom,0);P?R=T-2*(Y!==0||ne!==0?Y+ne:ws(g.left,g.right)):I=w-2*(ae!==0||q!==0?ae+q:ws(g.top,g.bottom))}await p({...a,availableWidth:R,availableHeight:I});const E=await m.getDimensions(f.floating);return T!==E.width||w!==E.height?{reset:{rects:!0}}:{}}}};function Io(){return typeof window<"u"}function Va(r){return A0(r)?(r.nodeName||"").toLowerCase():"#document"}function Ss(r){var a;return(r==null||(a=r.ownerDocument)==null?void 0:a.defaultView)||window}function ur(r){var a;return(a=(A0(r)?r.ownerDocument:r.document)||window.document)==null?void 0:a.documentElement}function A0(r){return Io()?r instanceof Node||r instanceof Ss(r).Node:!1}function Xs(r){return Io()?r instanceof Element||r instanceof Ss(r).Element:!1}function dr(r){return Io()?r instanceof HTMLElement||r instanceof Ss(r).HTMLElement:!1}function fx(r){return!Io()||typeof ShadowRoot>"u"?!1:r instanceof ShadowRoot||r instanceof Ss(r).ShadowRoot}const I4=new Set(["inline","contents"]);function Bl(r){const{overflow:a,overflowX:l,overflowY:o,display:c}=Js(r);return/auto|scroll|overlay|hidden|clip/.test(a+o+l)&&!I4.has(c)}const _4=new Set(["table","td","th"]);function M4(r){return _4.has(Va(r))}const A4=[":popover-open",":modal"];function _o(r){return A4.some(a=>{try{return r.matches(a)}catch{return!1}})}const D4=["transform","translate","scale","rotate","perspective"],L4=["transform","translate","scale","rotate","perspective","filter"],O4=["paint","layout","strict","content"];function $u(r){const a=Bu(),l=Xs(r)?Js(r):r;return D4.some(o=>l[o]?l[o]!=="none":!1)||(l.containerType?l.containerType!=="normal":!1)||!a&&(l.backdropFilter?l.backdropFilter!=="none":!1)||!a&&(l.filter?l.filter!=="none":!1)||L4.some(o=>(l.willChange||"").includes(o))||O4.some(o=>(l.contain||"").includes(o))}function F4(r){let a=fn(r);for(;dr(a)&&!Da(a);){if($u(a))return a;if(_o(a))return null;a=fn(a)}return null}function Bu(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const z4=new Set(["html","body","#document"]);function Da(r){return z4.has(Va(r))}function Js(r){return Ss(r).getComputedStyle(r)}function Mo(r){return Xs(r)?{scrollLeft:r.scrollLeft,scrollTop:r.scrollTop}:{scrollLeft:r.scrollX,scrollTop:r.scrollY}}function fn(r){if(Va(r)==="html")return r;const a=r.assignedSlot||r.parentNode||fx(r)&&r.host||ur(r);return fx(a)?a.host:a}function D0(r){const a=fn(r);return Da(a)?r.ownerDocument?r.ownerDocument.body:r.body:dr(a)&&Bl(a)?a:D0(a)}function Ll(r,a,l){var o;a===void 0&&(a=[]),l===void 0&&(l=!0);const c=D0(r),u=c===((o=r.ownerDocument)==null?void 0:o.body),m=Ss(c);if(u){const f=iu(m);return a.concat(m,m.visualViewport||[],Bl(c)?c:[],f&&l?Ll(f):[])}return a.concat(c,Ll(c,[],l))}function iu(r){return r.parent&&Object.getPrototypeOf(r.parent)?r.frameElement:null}function L0(r){const a=Js(r);let l=parseFloat(a.width)||0,o=parseFloat(a.height)||0;const c=dr(r),u=c?r.offsetWidth:l,m=c?r.offsetHeight:o,f=po(l)!==u||po(o)!==m;return f&&(l=u,o=m),{width:l,height:o,$:f}}function Uu(r){return Xs(r)?r:r.contextElement}function _a(r){const a=Uu(r);if(!dr(a))return cr(1);const l=a.getBoundingClientRect(),{width:o,height:c,$:u}=L0(a);let m=(u?po(l.width):l.width)/o,f=(u?po(l.height):l.height)/c;return(!m||!Number.isFinite(m))&&(m=1),(!f||!Number.isFinite(f))&&(f=1),{x:m,y:f}}const $4=cr(0);function O0(r){const a=Ss(r);return!Bu()||!a.visualViewport?$4:{x:a.visualViewport.offsetLeft,y:a.visualViewport.offsetTop}}function B4(r,a,l){return a===void 0&&(a=!1),!l||a&&l!==Ss(r)?!1:a}function Wn(r,a,l,o){a===void 0&&(a=!1),l===void 0&&(l=!1);const c=r.getBoundingClientRect(),u=Uu(r);let m=cr(1);a&&(o?Xs(o)&&(m=_a(o)):m=_a(r));const f=B4(u,l,o)?O0(u):cr(0);let p=(c.left+f.x)/m.x,y=(c.top+f.y)/m.y,g=c.width/m.x,v=c.height/m.y;if(u){const k=Ss(u),P=o&&Xs(o)?Ss(o):o;let T=k,w=iu(T);for(;w&&o&&P!==T;){const N=_a(w),b=w.getBoundingClientRect(),S=Js(w),j=b.left+(w.clientLeft+parseFloat(S.paddingLeft))*N.x,_=b.top+(w.clientTop+parseFloat(S.paddingTop))*N.y;p*=N.x,y*=N.y,g*=N.x,v*=N.y,p+=j,y+=_,T=Ss(w),w=iu(T)}}return yo({width:g,height:v,x:p,y})}function Ao(r,a){const l=Mo(r).scrollLeft;return a?a.left+l:Wn(ur(r)).left+l}function F0(r,a){const l=r.getBoundingClientRect(),o=l.left+a.scrollLeft-Ao(r,l),c=l.top+a.scrollTop;return{x:o,y:c}}function U4(r){let{elements:a,rect:l,offsetParent:o,strategy:c}=r;const u=c==="fixed",m=ur(o),f=a?_o(a.floating):!1;if(o===m||f&&u)return l;let p={scrollLeft:0,scrollTop:0},y=cr(1);const g=cr(0),v=dr(o);if((v||!v&&!u)&&((Va(o)!=="body"||Bl(m))&&(p=Mo(o)),dr(o))){const P=Wn(o);y=_a(o),g.x=P.x+o.clientLeft,g.y=P.y+o.clientTop}const k=m&&!v&&!u?F0(m,p):cr(0);return{width:l.width*y.x,height:l.height*y.y,x:l.x*y.x-p.scrollLeft*y.x+g.x+k.x,y:l.y*y.y-p.scrollTop*y.y+g.y+k.y}}function V4(r){return Array.from(r.getClientRects())}function W4(r){const a=ur(r),l=Mo(r),o=r.ownerDocument.body,c=ws(a.scrollWidth,a.clientWidth,o.scrollWidth,o.clientWidth),u=ws(a.scrollHeight,a.clientHeight,o.scrollHeight,o.clientHeight);let m=-l.scrollLeft+Ao(r);const f=-l.scrollTop;return Js(o).direction==="rtl"&&(m+=ws(a.clientWidth,o.clientWidth)-c),{width:c,height:u,x:m,y:f}}const xx=25;function H4(r,a){const l=Ss(r),o=ur(r),c=l.visualViewport;let u=o.clientWidth,m=o.clientHeight,f=0,p=0;if(c){u=c.width,m=c.height;const g=Bu();(!g||g&&a==="fixed")&&(f=c.offsetLeft,p=c.offsetTop)}const y=Ao(o);if(y<=0){const g=o.ownerDocument,v=g.body,k=getComputedStyle(v),P=g.compatMode==="CSS1Compat"&&parseFloat(k.marginLeft)+parseFloat(k.marginRight)||0,T=Math.abs(o.clientWidth-v.clientWidth-P);T<=xx&&(u-=T)}else y<=xx&&(u+=y);return{width:u,height:m,x:f,y:p}}const K4=new Set(["absolute","fixed"]);function G4(r,a){const l=Wn(r,!0,a==="fixed"),o=l.top+r.clientTop,c=l.left+r.clientLeft,u=dr(r)?_a(r):cr(1),m=r.clientWidth*u.x,f=r.clientHeight*u.y,p=c*u.x,y=o*u.y;return{width:m,height:f,x:p,y}}function px(r,a,l){let o;if(a==="viewport")o=H4(r,l);else if(a==="document")o=W4(ur(r));else if(Xs(a))o=G4(a,l);else{const c=O0(r);o={x:a.x-c.x,y:a.y-c.y,width:a.width,height:a.height}}return yo(o)}function z0(r,a){const l=fn(r);return l===a||!Xs(l)||Da(l)?!1:Js(l).position==="fixed"||z0(l,a)}function Y4(r,a){const l=a.get(r);if(l)return l;let o=Ll(r,[],!1).filter(f=>Xs(f)&&Va(f)!=="body"),c=null;const u=Js(r).position==="fixed";let m=u?fn(r):r;for(;Xs(m)&&!Da(m);){const f=Js(m),p=$u(m);!p&&f.position==="fixed"&&(c=null),(u?!p&&!c:!p&&f.position==="static"&&!!c&&K4.has(c.position)||Bl(m)&&!p&&z0(r,m))?o=o.filter(g=>g!==m):c=f,m=fn(m)}return a.set(r,o),o}function Q4(r){let{element:a,boundary:l,rootBoundary:o,strategy:c}=r;const m=[...l==="clippingAncestors"?_o(a)?[]:Y4(a,this._c):[].concat(l),o],f=m[0],p=m.reduce((y,g)=>{const v=px(a,g,c);return y.top=ws(v.top,y.top),y.right=mn(v.right,y.right),y.bottom=mn(v.bottom,y.bottom),y.left=ws(v.left,y.left),y},px(a,f,c));return{width:p.right-p.left,height:p.bottom-p.top,x:p.left,y:p.top}}function q4(r){const{width:a,height:l}=L0(r);return{width:a,height:l}}function X4(r,a,l){const o=dr(a),c=ur(a),u=l==="fixed",m=Wn(r,!0,u,a);let f={scrollLeft:0,scrollTop:0};const p=cr(0);function y(){p.x=Ao(c)}if(o||!o&&!u)if((Va(a)!=="body"||Bl(c))&&(f=Mo(a)),o){const P=Wn(a,!0,u,a);p.x=P.x+a.clientLeft,p.y=P.y+a.clientTop}else c&&y();u&&!o&&c&&y();const g=c&&!o&&!u?F0(c,f):cr(0),v=m.left+f.scrollLeft-p.x-g.x,k=m.top+f.scrollTop-p.y-g.y;return{x:v,y:k,width:m.width,height:m.height}}function zd(r){return Js(r).position==="static"}function gx(r,a){if(!dr(r)||Js(r).position==="fixed")return null;if(a)return a(r);let l=r.offsetParent;return ur(r)===l&&(l=l.ownerDocument.body),l}function $0(r,a){const l=Ss(r);if(_o(r))return l;if(!dr(r)){let c=fn(r);for(;c&&!Da(c);){if(Xs(c)&&!zd(c))return c;c=fn(c)}return l}let o=gx(r,a);for(;o&&M4(o)&&zd(o);)o=gx(o,a);return o&&Da(o)&&zd(o)&&!$u(o)?l:o||F4(r)||l}const J4=async function(r){const a=this.getOffsetParent||$0,l=this.getDimensions,o=await l(r.floating);return{reference:X4(r.reference,await a(r.floating),r.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}};function Z4(r){return Js(r).direction==="rtl"}const eS={convertOffsetParentRelativeRectToViewportRelativeRect:U4,getDocumentElement:ur,getClippingRect:Q4,getOffsetParent:$0,getElementRects:J4,getClientRects:V4,getDimensions:q4,getScale:_a,isElement:Xs,isRTL:Z4};function B0(r,a){return r.x===a.x&&r.y===a.y&&r.width===a.width&&r.height===a.height}function tS(r,a){let l=null,o;const c=ur(r);function u(){var f;clearTimeout(o),(f=l)==null||f.disconnect(),l=null}function m(f,p){f===void 0&&(f=!1),p===void 0&&(p=1),u();const y=r.getBoundingClientRect(),{left:g,top:v,width:k,height:P}=y;if(f||a(),!k||!P)return;const T=ro(v),w=ro(c.clientWidth-(g+k)),N=ro(c.clientHeight-(v+P)),b=ro(g),j={rootMargin:-T+"px "+-w+"px "+-N+"px "+-b+"px",threshold:ws(0,mn(1,p))||1};let _=!0;function O(V){const I=V[0].intersectionRatio;if(I!==p){if(!_)return m();I?m(!1,I):o=setTimeout(()=>{m(!1,1e-7)},1e3)}I===1&&!B0(y,r.getBoundingClientRect())&&m(),_=!1}try{l=new IntersectionObserver(O,{...j,root:c.ownerDocument})}catch{l=new IntersectionObserver(O,j)}l.observe(r)}return m(!0),u}function sS(r,a,l,o){o===void 0&&(o={});const{ancestorScroll:c=!0,ancestorResize:u=!0,elementResize:m=typeof ResizeObserver=="function",layoutShift:f=typeof IntersectionObserver=="function",animationFrame:p=!1}=o,y=Uu(r),g=c||u?[...y?Ll(y):[],...Ll(a)]:[];g.forEach(b=>{c&&b.addEventListener("scroll",l,{passive:!0}),u&&b.addEventListener("resize",l)});const v=y&&f?tS(y,l):null;let k=-1,P=null;m&&(P=new ResizeObserver(b=>{let[S]=b;S&&S.target===y&&P&&(P.unobserve(a),cancelAnimationFrame(k),k=requestAnimationFrame(()=>{var j;(j=P)==null||j.observe(a)})),l()}),y&&!p&&P.observe(y),P.observe(a));let T,w=p?Wn(r):null;p&&N();function N(){const b=Wn(r);w&&!B0(w,b)&&l(),w=b,T=requestAnimationFrame(N)}return l(),()=>{var b;g.forEach(S=>{c&&S.removeEventListener("scroll",l),u&&S.removeEventListener("resize",l)}),v==null||v(),(b=P)==null||b.disconnect(),P=null,p&&cancelAnimationFrame(T)}}const rS=E4,nS=P4,aS=S4,lS=R4,iS=C4,yx=w4,oS=T4,cS=(r,a,l)=>{const o=new Map,c={platform:eS,...l},u={...c.platform,_c:o};return N4(r,a,{...c,platform:u})};var dS=typeof document<"u",uS=function(){},lo=dS?h.useLayoutEffect:uS;function vo(r,a){if(r===a)return!0;if(typeof r!=typeof a)return!1;if(typeof r=="function"&&r.toString()===a.toString())return!0;let l,o,c;if(r&&a&&typeof r=="object"){if(Array.isArray(r)){if(l=r.length,l!==a.length)return!1;for(o=l;o--!==0;)if(!vo(r[o],a[o]))return!1;return!0}if(c=Object.keys(r),l=c.length,l!==Object.keys(a).length)return!1;for(o=l;o--!==0;)if(!{}.hasOwnProperty.call(a,c[o]))return!1;for(o=l;o--!==0;){const u=c[o];if(!(u==="_owner"&&r.$$typeof)&&!vo(r[u],a[u]))return!1}return!0}return r!==r&&a!==a}function U0(r){return typeof window>"u"?1:(r.ownerDocument.defaultView||window).devicePixelRatio||1}function vx(r,a){const l=U0(r);return Math.round(a*l)/l}function $d(r){const a=h.useRef(r);return lo(()=>{a.current=r}),a}function hS(r){r===void 0&&(r={});const{placement:a="bottom",strategy:l="absolute",middleware:o=[],platform:c,elements:{reference:u,floating:m}={},transform:f=!0,whileElementsMounted:p,open:y}=r,[g,v]=h.useState({x:0,y:0,strategy:l,placement:a,middlewareData:{},isPositioned:!1}),[k,P]=h.useState(o);vo(k,o)||P(o);const[T,w]=h.useState(null),[N,b]=h.useState(null),S=h.useCallback(U=>{U!==V.current&&(V.current=U,w(U))},[]),j=h.useCallback(U=>{U!==I.current&&(I.current=U,b(U))},[]),_=u||T,O=m||N,V=h.useRef(null),I=h.useRef(null),R=h.useRef(g),E=p!=null,Y=$d(p),ne=$d(c),ae=$d(y),q=h.useCallback(()=>{if(!V.current||!I.current)return;const U={placement:a,strategy:l,middleware:k};ne.current&&(U.platform=ne.current),cS(V.current,I.current,U).then(ce=>{const K={...ce,isPositioned:ae.current!==!1};se.current&&!vo(R.current,K)&&(R.current=K,Ol.flushSync(()=>{v(K)}))})},[k,a,l,ne,ae]);lo(()=>{y===!1&&R.current.isPositioned&&(R.current.isPositioned=!1,v(U=>({...U,isPositioned:!1})))},[y]);const se=h.useRef(!1);lo(()=>(se.current=!0,()=>{se.current=!1}),[]),lo(()=>{if(_&&(V.current=_),O&&(I.current=O),_&&O){if(Y.current)return Y.current(_,O,q);q()}},[_,O,q,Y,E]);const H=h.useMemo(()=>({reference:V,floating:I,setReference:S,setFloating:j}),[S,j]),ie=h.useMemo(()=>({reference:_,floating:O}),[_,O]),ve=h.useMemo(()=>{const U={position:l,left:0,top:0};if(!ie.floating)return U;const ce=vx(ie.floating,g.x),K=vx(ie.floating,g.y);return f?{...U,transform:"translate("+ce+"px, "+K+"px)",...U0(ie.floating)>=1.5&&{willChange:"transform"}}:{position:l,left:ce,top:K}},[l,f,ie.floating,g.x,g.y]);return h.useMemo(()=>({...g,update:q,refs:H,elements:ie,floatingStyles:ve}),[g,q,H,ie,ve])}const mS=r=>{function a(l){return{}.hasOwnProperty.call(l,"current")}return{name:"arrow",options:r,fn(l){const{element:o,padding:c}=typeof r=="function"?r(l):r;return o&&a(o)?o.current!=null?yx({element:o.current,padding:c}).fn(l):{}:o?yx({element:o,padding:c}).fn(l):{}}}},fS=(r,a)=>({...rS(r),options:[r,a]}),xS=(r,a)=>({...nS(r),options:[r,a]}),pS=(r,a)=>({...oS(r),options:[r,a]}),gS=(r,a)=>({...aS(r),options:[r,a]}),yS=(r,a)=>({...lS(r),options:[r,a]}),vS=(r,a)=>({...iS(r),options:[r,a]}),jS=(r,a)=>({...mS(r),options:[r,a]});var bS="Arrow",V0=h.forwardRef((r,a)=>{const{children:l,width:o=10,height:c=5,...u}=r;return e.jsx(Xe.svg,{...u,ref:a,width:o,height:c,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:r.asChild?l:e.jsx("polygon",{points:"0,0 30,0 15,10"})})});V0.displayName=bS;var NS=V0,Vu="Popper",[W0,H0]=yn(Vu),[wS,K0]=W0(Vu),G0=r=>{const{__scopePopper:a,children:l}=r,[o,c]=h.useState(null);return e.jsx(wS,{scope:a,anchor:o,onAnchorChange:c,children:l})};G0.displayName=Vu;var Y0="PopperAnchor",Q0=h.forwardRef((r,a)=>{const{__scopePopper:l,virtualRef:o,...c}=r,u=K0(Y0,l),m=h.useRef(null),f=at(a,m),p=h.useRef(null);return h.useEffect(()=>{const y=p.current;p.current=(o==null?void 0:o.current)||m.current,y!==p.current&&u.onAnchorChange(p.current)}),o?null:e.jsx(Xe.div,{...c,ref:f})});Q0.displayName=Y0;var Wu="PopperContent",[SS,CS]=W0(Wu),q0=h.forwardRef((r,a)=>{var Q,ge,Se,D,fe,ke;const{__scopePopper:l,side:o="bottom",sideOffset:c=0,align:u="center",alignOffset:m=0,arrowPadding:f=0,avoidCollisions:p=!0,collisionBoundary:y=[],collisionPadding:g=0,sticky:v="partial",hideWhenDetached:k=!1,updatePositionStrategy:P="optimized",onPlaced:T,...w}=r,N=K0(Wu,l),[b,S]=h.useState(null),j=at(a,Ve=>S(Ve)),[_,O]=h.useState(null),V=Du(_),I=(V==null?void 0:V.width)??0,R=(V==null?void 0:V.height)??0,E=o+(u!=="center"?"-"+u:""),Y=typeof g=="number"?g:{top:0,right:0,bottom:0,left:0,...g},ne=Array.isArray(y)?y:[y],ae=ne.length>0,q={padding:Y,boundary:ne.filter(ES),altBoundary:ae},{refs:se,floatingStyles:H,placement:ie,isPositioned:ve,middlewareData:U}=hS({strategy:"fixed",placement:E,whileElementsMounted:(...Ve)=>sS(...Ve,{animationFrame:P==="always"}),elements:{reference:N.anchor},middleware:[fS({mainAxis:c+R,alignmentAxis:m}),p&&xS({mainAxis:!0,crossAxis:!1,limiter:v==="partial"?pS():void 0,...q}),p&&gS({...q}),yS({...q,apply:({elements:Ve,rects:We,availableWidth:Ye,availableHeight:tt})=>{const{width:ze,height:he}=We.reference,xe=Ve.floating.style;xe.setProperty("--radix-popper-available-width",`${Ye}px`),xe.setProperty("--radix-popper-available-height",`${tt}px`),xe.setProperty("--radix-popper-anchor-width",`${ze}px`),xe.setProperty("--radix-popper-anchor-height",`${he}px`)}}),_&&jS({element:_,padding:f}),PS({arrowWidth:I,arrowHeight:R}),k&&vS({strategy:"referenceHidden",...q})]}),[ce,K]=Z0(ie),A=hn(T);Zt(()=>{ve&&(A==null||A())},[ve,A]);const F=(Q=U.arrow)==null?void 0:Q.x,L=(ge=U.arrow)==null?void 0:ge.y,Z=((Se=U.arrow)==null?void 0:Se.centerOffset)!==0,[G,de]=h.useState();return Zt(()=>{b&&de(window.getComputedStyle(b).zIndex)},[b]),e.jsx("div",{ref:se.setFloating,"data-radix-popper-content-wrapper":"",style:{...H,transform:ve?H.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:G,"--radix-popper-transform-origin":[(D=U.transformOrigin)==null?void 0:D.x,(fe=U.transformOrigin)==null?void 0:fe.y].join(" "),...((ke=U.hide)==null?void 0:ke.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:r.dir,children:e.jsx(SS,{scope:l,placedSide:ce,onArrowChange:O,arrowX:F,arrowY:L,shouldHideArrow:Z,children:e.jsx(Xe.div,{"data-side":ce,"data-align":K,...w,ref:j,style:{...w.style,animation:ve?void 0:"none"}})})})});q0.displayName=Wu;var X0="PopperArrow",kS={top:"bottom",right:"left",bottom:"top",left:"right"},J0=h.forwardRef(function(a,l){const{__scopePopper:o,...c}=a,u=CS(X0,o),m=kS[u.placedSide];return e.jsx("span",{ref:u.onArrowChange,style:{position:"absolute",left:u.arrowX,top:u.arrowY,[m]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[u.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[u.placedSide],visibility:u.shouldHideArrow?"hidden":void 0},children:e.jsx(NS,{...c,ref:l,style:{...c.style,display:"block"}})})});J0.displayName=X0;function ES(r){return r!==null}var PS=r=>({name:"transformOrigin",options:r,fn(a){var N,b,S;const{placement:l,rects:o,middlewareData:c}=a,m=((N=c.arrow)==null?void 0:N.centerOffset)!==0,f=m?0:r.arrowWidth,p=m?0:r.arrowHeight,[y,g]=Z0(l),v={start:"0%",center:"50%",end:"100%"}[g],k=(((b=c.arrow)==null?void 0:b.x)??0)+f/2,P=(((S=c.arrow)==null?void 0:S.y)??0)+p/2;let T="",w="";return y==="bottom"?(T=m?v:`${k}px`,w=`${-p}px`):y==="top"?(T=m?v:`${k}px`,w=`${o.floating.height+p}px`):y==="right"?(T=`${-p}px`,w=m?v:`${P}px`):y==="left"&&(T=`${o.floating.width+p}px`,w=m?v:`${P}px`),{data:{x:T,y:w}}}});function Z0(r){const[a,l="center"]=r.split("-");return[a,l]}var TS=G0,RS=Q0,IS=q0,_S=J0,eg=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),MS="VisuallyHidden",AS=h.forwardRef((r,a)=>e.jsx(Xe.span,{...r,ref:a,style:{...eg,...r.style}}));AS.displayName=MS;var DS=[" ","Enter","ArrowUp","ArrowDown"],LS=[" ","Enter"],Hn="Select",[Do,Lo,OS]=_u(Hn),[Wa]=yn(Hn,[OS,H0]),Oo=H0(),[FS,vn]=Wa(Hn),[zS,$S]=Wa(Hn),tg=r=>{const{__scopeSelect:a,children:l,open:o,defaultOpen:c,onOpenChange:u,value:m,defaultValue:f,onValueChange:p,dir:y,name:g,autoComplete:v,disabled:k,required:P,form:T}=r,w=Oo(a),[N,b]=h.useState(null),[S,j]=h.useState(null),[_,O]=h.useState(!1),V=Eo(y),[I,R]=Un({prop:o,defaultProp:c??!1,onChange:u,caller:Hn}),[E,Y]=Un({prop:m,defaultProp:f,onChange:p,caller:Hn}),ne=h.useRef(null),ae=N?T||!!N.closest("form"):!0,[q,se]=h.useState(new Set),H=Array.from(q).map(ie=>ie.props.value).join(";");return e.jsx(TS,{...w,children:e.jsxs(FS,{required:P,scope:a,trigger:N,onTriggerChange:b,valueNode:S,onValueNodeChange:j,valueNodeHasChildren:_,onValueNodeHasChildrenChange:O,contentId:dn(),value:E,onValueChange:Y,open:I,onOpenChange:R,dir:V,triggerPointerDownPosRef:ne,disabled:k,children:[e.jsx(Do.Provider,{scope:a,children:e.jsx(zS,{scope:r.__scopeSelect,onNativeOptionAdd:h.useCallback(ie=>{se(ve=>new Set(ve).add(ie))},[]),onNativeOptionRemove:h.useCallback(ie=>{se(ve=>{const U=new Set(ve);return U.delete(ie),U})},[]),children:l})}),ae?e.jsxs(wg,{"aria-hidden":!0,required:P,tabIndex:-1,name:g,autoComplete:v,value:E,onChange:ie=>Y(ie.target.value),disabled:k,form:T,children:[E===void 0?e.jsx("option",{value:""}):null,Array.from(q)]},H):null]})})};tg.displayName=Hn;var sg="SelectTrigger",rg=h.forwardRef((r,a)=>{const{__scopeSelect:l,disabled:o=!1,...c}=r,u=Oo(l),m=vn(sg,l),f=m.disabled||o,p=at(a,m.onTriggerChange),y=Lo(l),g=h.useRef("touch"),[v,k,P]=Cg(w=>{const N=y().filter(j=>!j.disabled),b=N.find(j=>j.value===m.value),S=kg(N,w,b);S!==void 0&&m.onValueChange(S.value)}),T=w=>{f||(m.onOpenChange(!0),P()),w&&(m.triggerPointerDownPosRef.current={x:Math.round(w.pageX),y:Math.round(w.pageY)})};return e.jsx(RS,{asChild:!0,...u,children:e.jsx(Xe.button,{type:"button",role:"combobox","aria-controls":m.contentId,"aria-expanded":m.open,"aria-required":m.required,"aria-autocomplete":"none",dir:m.dir,"data-state":m.open?"open":"closed",disabled:f,"data-disabled":f?"":void 0,"data-placeholder":Sg(m.value)?"":void 0,...c,ref:p,onClick:Qe(c.onClick,w=>{w.currentTarget.focus(),g.current!=="mouse"&&T(w)}),onPointerDown:Qe(c.onPointerDown,w=>{g.current=w.pointerType;const N=w.target;N.hasPointerCapture(w.pointerId)&&N.releasePointerCapture(w.pointerId),w.button===0&&w.ctrlKey===!1&&w.pointerType==="mouse"&&(T(w),w.preventDefault())}),onKeyDown:Qe(c.onKeyDown,w=>{const N=v.current!=="";!(w.ctrlKey||w.altKey||w.metaKey)&&w.key.length===1&&k(w.key),!(N&&w.key===" ")&&DS.includes(w.key)&&(T(),w.preventDefault())})})})});rg.displayName=sg;var ng="SelectValue",ag=h.forwardRef((r,a)=>{const{__scopeSelect:l,className:o,style:c,children:u,placeholder:m="",...f}=r,p=vn(ng,l),{onValueNodeHasChildrenChange:y}=p,g=u!==void 0,v=at(a,p.onValueNodeChange);return Zt(()=>{y(g)},[y,g]),e.jsx(Xe.span,{...f,ref:v,style:{pointerEvents:"none"},children:Sg(p.value)?e.jsx(e.Fragment,{children:m}):u})});ag.displayName=ng;var BS="SelectIcon",lg=h.forwardRef((r,a)=>{const{__scopeSelect:l,children:o,...c}=r;return e.jsx(Xe.span,{"aria-hidden":!0,...c,ref:a,children:o||"▼"})});lg.displayName=BS;var US="SelectPortal",ig=r=>e.jsx(ku,{asChild:!0,...r});ig.displayName=US;var Kn="SelectContent",og=h.forwardRef((r,a)=>{const l=vn(Kn,r.__scopeSelect),[o,c]=h.useState();if(Zt(()=>{c(new DocumentFragment)},[]),!l.open){const u=o;return u?Ol.createPortal(e.jsx(cg,{scope:r.__scopeSelect,children:e.jsx(Do.Slot,{scope:r.__scopeSelect,children:e.jsx("div",{children:r.children})})}),u):null}return e.jsx(dg,{...r,ref:a})});og.displayName=Kn;var Ys=10,[cg,jn]=Wa(Kn),VS="SelectContentImpl",WS=Dl("SelectContent.RemoveScroll"),dg=h.forwardRef((r,a)=>{const{__scopeSelect:l,position:o="item-aligned",onCloseAutoFocus:c,onEscapeKeyDown:u,onPointerDownOutside:m,side:f,sideOffset:p,align:y,alignOffset:g,arrowPadding:v,collisionBoundary:k,collisionPadding:P,sticky:T,hideWhenDetached:w,avoidCollisions:N,...b}=r,S=vn(Kn,l),[j,_]=h.useState(null),[O,V]=h.useState(null),I=at(a,Q=>_(Q)),[R,E]=h.useState(null),[Y,ne]=h.useState(null),ae=Lo(l),[q,se]=h.useState(!1),H=h.useRef(!1);h.useEffect(()=>{if(j)return kp(j)},[j]),gp();const ie=h.useCallback(Q=>{const[ge,...Se]=ae().map(ke=>ke.ref.current),[D]=Se.slice(-1),fe=document.activeElement;for(const ke of Q)if(ke===fe||(ke==null||ke.scrollIntoView({block:"nearest"}),ke===ge&&O&&(O.scrollTop=0),ke===D&&O&&(O.scrollTop=O.scrollHeight),ke==null||ke.focus(),document.activeElement!==fe))return},[ae,O]),ve=h.useCallback(()=>ie([R,j]),[ie,R,j]);h.useEffect(()=>{q&&ve()},[q,ve]);const{onOpenChange:U,triggerPointerDownPosRef:ce}=S;h.useEffect(()=>{if(j){let Q={x:0,y:0};const ge=D=>{var fe,ke;Q={x:Math.abs(Math.round(D.pageX)-(((fe=ce.current)==null?void 0:fe.x)??0)),y:Math.abs(Math.round(D.pageY)-(((ke=ce.current)==null?void 0:ke.y)??0))}},Se=D=>{Q.x<=10&&Q.y<=10?D.preventDefault():j.contains(D.target)||U(!1),document.removeEventListener("pointermove",ge),ce.current=null};return ce.current!==null&&(document.addEventListener("pointermove",ge),document.addEventListener("pointerup",Se,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",ge),document.removeEventListener("pointerup",Se,{capture:!0})}}},[j,U,ce]),h.useEffect(()=>{const Q=()=>U(!1);return window.addEventListener("blur",Q),window.addEventListener("resize",Q),()=>{window.removeEventListener("blur",Q),window.removeEventListener("resize",Q)}},[U]);const[K,A]=Cg(Q=>{const ge=ae().filter(fe=>!fe.disabled),Se=ge.find(fe=>fe.ref.current===document.activeElement),D=kg(ge,Q,Se);D&&setTimeout(()=>D.ref.current.focus())}),F=h.useCallback((Q,ge,Se)=>{const D=!H.current&&!Se;(S.value!==void 0&&S.value===ge||D)&&(E(Q),D&&(H.current=!0))},[S.value]),L=h.useCallback(()=>j==null?void 0:j.focus(),[j]),Z=h.useCallback((Q,ge,Se)=>{const D=!H.current&&!Se;(S.value!==void 0&&S.value===ge||D)&&ne(Q)},[S.value]),G=o==="popper"?ou:ug,de=G===ou?{side:f,sideOffset:p,align:y,alignOffset:g,arrowPadding:v,collisionBoundary:k,collisionPadding:P,sticky:T,hideWhenDetached:w,avoidCollisions:N}:{};return e.jsx(cg,{scope:l,content:j,viewport:O,onViewportChange:V,itemRefCallback:F,selectedItem:R,onItemLeave:L,itemTextRefCallback:Z,focusSelectedItem:ve,selectedItemText:Y,position:o,isPositioned:q,searchRef:K,children:e.jsx(Eu,{as:WS,allowPinchZoom:!0,children:e.jsx(Cu,{asChild:!0,trapped:S.open,onMountAutoFocus:Q=>{Q.preventDefault()},onUnmountAutoFocus:Qe(c,Q=>{var ge;(ge=S.trigger)==null||ge.focus({preventScroll:!0}),Q.preventDefault()}),children:e.jsx(Su,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:u,onPointerDownOutside:m,onFocusOutside:Q=>Q.preventDefault(),onDismiss:()=>S.onOpenChange(!1),children:e.jsx(G,{role:"listbox",id:S.contentId,"data-state":S.open?"open":"closed",dir:S.dir,onContextMenu:Q=>Q.preventDefault(),...b,...de,onPlaced:()=>se(!0),ref:I,style:{display:"flex",flexDirection:"column",outline:"none",...b.style},onKeyDown:Qe(b.onKeyDown,Q=>{const ge=Q.ctrlKey||Q.altKey||Q.metaKey;if(Q.key==="Tab"&&Q.preventDefault(),!ge&&Q.key.length===1&&A(Q.key),["ArrowUp","ArrowDown","Home","End"].includes(Q.key)){let D=ae().filter(fe=>!fe.disabled).map(fe=>fe.ref.current);if(["ArrowUp","End"].includes(Q.key)&&(D=D.slice().reverse()),["ArrowUp","ArrowDown"].includes(Q.key)){const fe=Q.target,ke=D.indexOf(fe);D=D.slice(ke+1)}setTimeout(()=>ie(D)),Q.preventDefault()}})})})})})})});dg.displayName=VS;var HS="SelectItemAlignedPosition",ug=h.forwardRef((r,a)=>{const{__scopeSelect:l,onPlaced:o,...c}=r,u=vn(Kn,l),m=jn(Kn,l),[f,p]=h.useState(null),[y,g]=h.useState(null),v=at(a,I=>g(I)),k=Lo(l),P=h.useRef(!1),T=h.useRef(!0),{viewport:w,selectedItem:N,selectedItemText:b,focusSelectedItem:S}=m,j=h.useCallback(()=>{if(u.trigger&&u.valueNode&&f&&y&&w&&N&&b){const I=u.trigger.getBoundingClientRect(),R=y.getBoundingClientRect(),E=u.valueNode.getBoundingClientRect(),Y=b.getBoundingClientRect();if(u.dir!=="rtl"){const fe=Y.left-R.left,ke=E.left-fe,Ve=I.left-ke,We=I.width+Ve,Ye=Math.max(We,R.width),tt=window.innerWidth-Ys,ze=xo(ke,[Ys,Math.max(Ys,tt-Ye)]);f.style.minWidth=We+"px",f.style.left=ze+"px"}else{const fe=R.right-Y.right,ke=window.innerWidth-E.right-fe,Ve=window.innerWidth-I.right-ke,We=I.width+Ve,Ye=Math.max(We,R.width),tt=window.innerWidth-Ys,ze=xo(ke,[Ys,Math.max(Ys,tt-Ye)]);f.style.minWidth=We+"px",f.style.right=ze+"px"}const ne=k(),ae=window.innerHeight-Ys*2,q=w.scrollHeight,se=window.getComputedStyle(y),H=parseInt(se.borderTopWidth,10),ie=parseInt(se.paddingTop,10),ve=parseInt(se.borderBottomWidth,10),U=parseInt(se.paddingBottom,10),ce=H+ie+q+U+ve,K=Math.min(N.offsetHeight*5,ce),A=window.getComputedStyle(w),F=parseInt(A.paddingTop,10),L=parseInt(A.paddingBottom,10),Z=I.top+I.height/2-Ys,G=ae-Z,de=N.offsetHeight/2,Q=N.offsetTop+de,ge=H+ie+Q,Se=ce-ge;if(ge<=Z){const fe=ne.length>0&&N===ne[ne.length-1].ref.current;f.style.bottom="0px";const ke=y.clientHeight-w.offsetTop-w.offsetHeight,Ve=Math.max(G,de+(fe?L:0)+ke+ve),We=ge+Ve;f.style.height=We+"px"}else{const fe=ne.length>0&&N===ne[0].ref.current;f.style.top="0px";const Ve=Math.max(Z,H+w.offsetTop+(fe?F:0)+de)+Se;f.style.height=Ve+"px",w.scrollTop=ge-Z+w.offsetTop}f.style.margin=`${Ys}px 0`,f.style.minHeight=K+"px",f.style.maxHeight=ae+"px",o==null||o(),requestAnimationFrame(()=>P.current=!0)}},[k,u.trigger,u.valueNode,f,y,w,N,b,u.dir,o]);Zt(()=>j(),[j]);const[_,O]=h.useState();Zt(()=>{y&&O(window.getComputedStyle(y).zIndex)},[y]);const V=h.useCallback(I=>{I&&T.current===!0&&(j(),S==null||S(),T.current=!1)},[j,S]);return e.jsx(GS,{scope:l,contentWrapper:f,shouldExpandOnScrollRef:P,onScrollButtonChange:V,children:e.jsx("div",{ref:p,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:_},children:e.jsx(Xe.div,{...c,ref:v,style:{boxSizing:"border-box",maxHeight:"100%",...c.style}})})})});ug.displayName=HS;var KS="SelectPopperPosition",ou=h.forwardRef((r,a)=>{const{__scopeSelect:l,align:o="start",collisionPadding:c=Ys,...u}=r,m=Oo(l);return e.jsx(IS,{...m,...u,ref:a,align:o,collisionPadding:c,style:{boxSizing:"border-box",...u.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});ou.displayName=KS;var[GS,Hu]=Wa(Kn,{}),cu="SelectViewport",hg=h.forwardRef((r,a)=>{const{__scopeSelect:l,nonce:o,...c}=r,u=jn(cu,l),m=Hu(cu,l),f=at(a,u.onViewportChange),p=h.useRef(0);return e.jsxs(e.Fragment,{children:[e.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:o}),e.jsx(Do.Slot,{scope:l,children:e.jsx(Xe.div,{"data-radix-select-viewport":"",role:"presentation",...c,ref:f,style:{position:"relative",flex:1,overflow:"hidden auto",...c.style},onScroll:Qe(c.onScroll,y=>{const g=y.currentTarget,{contentWrapper:v,shouldExpandOnScrollRef:k}=m;if(k!=null&&k.current&&v){const P=Math.abs(p.current-g.scrollTop);if(P>0){const T=window.innerHeight-Ys*2,w=parseFloat(v.style.minHeight),N=parseFloat(v.style.height),b=Math.max(w,N);if(b0?_:0,v.style.justifyContent="flex-end")}}}p.current=g.scrollTop})})})]})});hg.displayName=cu;var mg="SelectGroup",[YS,QS]=Wa(mg),qS=h.forwardRef((r,a)=>{const{__scopeSelect:l,...o}=r,c=dn();return e.jsx(YS,{scope:l,id:c,children:e.jsx(Xe.div,{role:"group","aria-labelledby":c,...o,ref:a})})});qS.displayName=mg;var fg="SelectLabel",XS=h.forwardRef((r,a)=>{const{__scopeSelect:l,...o}=r,c=QS(fg,l);return e.jsx(Xe.div,{id:c.id,...o,ref:a})});XS.displayName=fg;var jo="SelectItem",[JS,xg]=Wa(jo),pg=h.forwardRef((r,a)=>{const{__scopeSelect:l,value:o,disabled:c=!1,textValue:u,...m}=r,f=vn(jo,l),p=jn(jo,l),y=f.value===o,[g,v]=h.useState(u??""),[k,P]=h.useState(!1),T=at(a,S=>{var j;return(j=p.itemRefCallback)==null?void 0:j.call(p,S,o,c)}),w=dn(),N=h.useRef("touch"),b=()=>{c||(f.onValueChange(o),f.onOpenChange(!1))};if(o==="")throw new Error("A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return e.jsx(JS,{scope:l,value:o,disabled:c,textId:w,isSelected:y,onItemTextChange:h.useCallback(S=>{v(j=>j||((S==null?void 0:S.textContent)??"").trim())},[]),children:e.jsx(Do.ItemSlot,{scope:l,value:o,disabled:c,textValue:g,children:e.jsx(Xe.div,{role:"option","aria-labelledby":w,"data-highlighted":k?"":void 0,"aria-selected":y&&k,"data-state":y?"checked":"unchecked","aria-disabled":c||void 0,"data-disabled":c?"":void 0,tabIndex:c?void 0:-1,...m,ref:T,onFocus:Qe(m.onFocus,()=>P(!0)),onBlur:Qe(m.onBlur,()=>P(!1)),onClick:Qe(m.onClick,()=>{N.current!=="mouse"&&b()}),onPointerUp:Qe(m.onPointerUp,()=>{N.current==="mouse"&&b()}),onPointerDown:Qe(m.onPointerDown,S=>{N.current=S.pointerType}),onPointerMove:Qe(m.onPointerMove,S=>{var j;N.current=S.pointerType,c?(j=p.onItemLeave)==null||j.call(p):N.current==="mouse"&&S.currentTarget.focus({preventScroll:!0})}),onPointerLeave:Qe(m.onPointerLeave,S=>{var j;S.currentTarget===document.activeElement&&((j=p.onItemLeave)==null||j.call(p))}),onKeyDown:Qe(m.onKeyDown,S=>{var _;((_=p.searchRef)==null?void 0:_.current)!==""&&S.key===" "||(LS.includes(S.key)&&b(),S.key===" "&&S.preventDefault())})})})})});pg.displayName=jo;var Pl="SelectItemText",gg=h.forwardRef((r,a)=>{const{__scopeSelect:l,className:o,style:c,...u}=r,m=vn(Pl,l),f=jn(Pl,l),p=xg(Pl,l),y=$S(Pl,l),[g,v]=h.useState(null),k=at(a,b=>v(b),p.onItemTextChange,b=>{var S;return(S=f.itemTextRefCallback)==null?void 0:S.call(f,b,p.value,p.disabled)}),P=g==null?void 0:g.textContent,T=h.useMemo(()=>e.jsx("option",{value:p.value,disabled:p.disabled,children:P},p.value),[p.disabled,p.value,P]),{onNativeOptionAdd:w,onNativeOptionRemove:N}=y;return Zt(()=>(w(T),()=>N(T)),[w,N,T]),e.jsxs(e.Fragment,{children:[e.jsx(Xe.span,{id:p.textId,...u,ref:k}),p.isSelected&&m.valueNode&&!m.valueNodeHasChildren?Ol.createPortal(u.children,m.valueNode):null]})});gg.displayName=Pl;var yg="SelectItemIndicator",vg=h.forwardRef((r,a)=>{const{__scopeSelect:l,...o}=r;return xg(yg,l).isSelected?e.jsx(Xe.span,{"aria-hidden":!0,...o,ref:a}):null});vg.displayName=yg;var du="SelectScrollUpButton",jg=h.forwardRef((r,a)=>{const l=jn(du,r.__scopeSelect),o=Hu(du,r.__scopeSelect),[c,u]=h.useState(!1),m=at(a,o.onScrollButtonChange);return Zt(()=>{if(l.viewport&&l.isPositioned){let f=function(){const y=p.scrollTop>0;u(y)};const p=l.viewport;return f(),p.addEventListener("scroll",f),()=>p.removeEventListener("scroll",f)}},[l.viewport,l.isPositioned]),c?e.jsx(Ng,{...r,ref:m,onAutoScroll:()=>{const{viewport:f,selectedItem:p}=l;f&&p&&(f.scrollTop=f.scrollTop-p.offsetHeight)}}):null});jg.displayName=du;var uu="SelectScrollDownButton",bg=h.forwardRef((r,a)=>{const l=jn(uu,r.__scopeSelect),o=Hu(uu,r.__scopeSelect),[c,u]=h.useState(!1),m=at(a,o.onScrollButtonChange);return Zt(()=>{if(l.viewport&&l.isPositioned){let f=function(){const y=p.scrollHeight-p.clientHeight,g=Math.ceil(p.scrollTop)p.removeEventListener("scroll",f)}},[l.viewport,l.isPositioned]),c?e.jsx(Ng,{...r,ref:m,onAutoScroll:()=>{const{viewport:f,selectedItem:p}=l;f&&p&&(f.scrollTop=f.scrollTop+p.offsetHeight)}}):null});bg.displayName=uu;var Ng=h.forwardRef((r,a)=>{const{__scopeSelect:l,onAutoScroll:o,...c}=r,u=jn("SelectScrollButton",l),m=h.useRef(null),f=Lo(l),p=h.useCallback(()=>{m.current!==null&&(window.clearInterval(m.current),m.current=null)},[]);return h.useEffect(()=>()=>p(),[p]),Zt(()=>{var g;const y=f().find(v=>v.ref.current===document.activeElement);(g=y==null?void 0:y.ref.current)==null||g.scrollIntoView({block:"nearest"})},[f]),e.jsx(Xe.div,{"aria-hidden":!0,...c,ref:a,style:{flexShrink:0,...c.style},onPointerDown:Qe(c.onPointerDown,()=>{m.current===null&&(m.current=window.setInterval(o,50))}),onPointerMove:Qe(c.onPointerMove,()=>{var y;(y=u.onItemLeave)==null||y.call(u),m.current===null&&(m.current=window.setInterval(o,50))}),onPointerLeave:Qe(c.onPointerLeave,()=>{p()})})}),ZS="SelectSeparator",eC=h.forwardRef((r,a)=>{const{__scopeSelect:l,...o}=r;return e.jsx(Xe.div,{"aria-hidden":!0,...o,ref:a})});eC.displayName=ZS;var hu="SelectArrow",tC=h.forwardRef((r,a)=>{const{__scopeSelect:l,...o}=r,c=Oo(l),u=vn(hu,l),m=jn(hu,l);return u.open&&m.position==="popper"?e.jsx(_S,{...c,...o,ref:a}):null});tC.displayName=hu;var sC="SelectBubbleInput",wg=h.forwardRef(({__scopeSelect:r,value:a,...l},o)=>{const c=h.useRef(null),u=at(o,c),m=Au(a);return h.useEffect(()=>{const f=c.current;if(!f)return;const p=window.HTMLSelectElement.prototype,g=Object.getOwnPropertyDescriptor(p,"value").set;if(m!==a&&g){const v=new Event("change",{bubbles:!0});g.call(f,a),f.dispatchEvent(v)}},[m,a]),e.jsx(Xe.select,{...l,style:{...eg,...l.style},ref:u,defaultValue:a})});wg.displayName=sC;function Sg(r){return r===""||r===void 0}function Cg(r){const a=hn(r),l=h.useRef(""),o=h.useRef(0),c=h.useCallback(m=>{const f=l.current+m;a(f),(function p(y){l.current=y,window.clearTimeout(o.current),y!==""&&(o.current=window.setTimeout(()=>p(""),1e3))})(f)},[a]),u=h.useCallback(()=>{l.current="",window.clearTimeout(o.current)},[]);return h.useEffect(()=>()=>window.clearTimeout(o.current),[]),[l,c,u]}function kg(r,a,l){const c=a.length>1&&Array.from(a).every(y=>y===a[0])?a[0]:a,u=l?r.indexOf(l):-1;let m=rC(r,Math.max(u,0));c.length===1&&(m=m.filter(y=>y!==l));const p=m.find(y=>y.textValue.toLowerCase().startsWith(c.toLowerCase()));return p!==l?p:void 0}function rC(r,a){return r.map((l,o)=>r[(a+o)%r.length])}var nC=tg,Eg=rg,aC=ag,lC=lg,iC=ig,Pg=og,oC=hg,Tg=pg,cC=gg,dC=vg,uC=jg,hC=bg;const kl=nC,El=aC,ka=h.forwardRef(({className:r,children:a,...l},o)=>e.jsxs(Eg,{ref:o,className:lt("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",r),...l,children:[a,e.jsx(lC,{asChild:!0,children:e.jsx(_l,{className:"h-4 w-4 opacity-50"})})]}));ka.displayName=Eg.displayName;const Ea=h.forwardRef(({className:r,children:a,position:l="popper",...o},c)=>e.jsx(iC,{children:e.jsxs(Pg,{ref:c,className:lt("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md",l==="popper"&&"data-[side=bottom]:translate-y-1",r),position:l,...o,children:[e.jsx(uC,{className:"flex cursor-default items-center justify-center py-1",children:e.jsx(Ux,{className:"h-4 w-4"})}),e.jsx(oC,{className:"p-1",children:a}),e.jsx(hC,{className:"flex cursor-default items-center justify-center py-1",children:e.jsx(_l,{className:"h-4 w-4"})})]})}));Ea.displayName=Pg.displayName;const lr=h.forwardRef(({className:r,children:a,...l},o)=>e.jsxs(Tg,{ref:o,className:lt("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",r),...l,children:[e.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(dC,{children:e.jsx(wo,{className:"h-4 w-4"})})}),e.jsx(cC,{children:a})]}));lr.displayName=Tg.displayName;const mC=["一","二","三","四","五","六","七","八","九","十"];function Bd(r){return r.startsWith("part:")?{type:"part",id:r.slice(5)}:r.startsWith("chapter:")?{type:"chapter",id:r.slice(8)}:r.startsWith("section:")?{type:"section",id:r.slice(8)}:null}function fC({parts:r,expandedParts:a,onTogglePart:l,onReorder:o,onReadSection:c,onDeleteSection:u,onAddSectionInPart:m,onAddChapterInPart:f,onDeleteChapter:p,onEditPart:y,onDeletePart:g,onEditChapter:v,selectedSectionIds:k=[],onToggleSectionSelect:P,onShowSectionOrders:T}){const[w,N]=h.useState(null),[b,S]=h.useState(null),j=(E,Y)=>(w==null?void 0:w.type)===E&&(w==null?void 0:w.id)===Y,_=(E,Y)=>(b==null?void 0:b.type)===E&&(b==null?void 0:b.id)===Y,O=h.useCallback(()=>{const E=[];for(const Y of r)for(const ne of Y.chapters)for(const ae of ne.sections)E.push({id:ae.id,partId:Y.id,partTitle:Y.title,chapterId:ne.id,chapterTitle:ne.title});return E},[r]),V=h.useCallback(async(E,Y,ne,ae)=>{var ve;E.preventDefault(),E.stopPropagation();const q=E.dataTransfer.getData("text/plain"),se=Bd(q);if(!se||se.type===Y&&se.id===ne)return;const H=O(),ie=new Map(H.map(U=>[U.id,U]));if(se.type==="part"&&Y==="part"){const U=r.map(L=>L.id),ce=U.indexOf(se.id),K=U.indexOf(ne);if(ce===-1||K===-1)return;const A=[...U];A.splice(ce,1),A.splice(ceG.id===L);if(Z)for(const G of Z.chapters)for(const de of G.sections){const Q=ie.get(de.id);Q&&F.push(Q)}}await o(F);return}if(se.type==="chapter"&&(Y==="chapter"||Y==="section"||Y==="part")){const U=r.find(Q=>Q.chapters.some(ge=>ge.id===se.id)),ce=U==null?void 0:U.chapters.find(Q=>Q.id===se.id);if(!U||!ce)return;let K,A,F=null;if(Y==="section"){const Q=ie.get(ne);if(!Q)return;K=Q.partId,A=Q.partTitle,F=ne}else if(Y==="chapter"){const Q=r.find(D=>D.chapters.some(fe=>fe.id===ne)),ge=Q==null?void 0:Q.chapters.find(D=>D.id===ne);if(!Q||!ge)return;K=Q.id,A=Q.title;const Se=H.filter(D=>D.chapterId===ne).pop();F=(Se==null?void 0:Se.id)??null}else{const Q=r.find(Se=>Se.id===ne);if(!Q||!Q.chapters[0])return;K=Q.id,A=Q.title;const ge=H.filter(Se=>Se.partId===Q.id&&Se.chapterId===Q.chapters[0].id);F=((ve=ge[ge.length-1])==null?void 0:ve.id)??null}const L=ce.sections.map(Q=>Q.id),Z=H.filter(Q=>!L.includes(Q.id));let G=Z.length;if(F){const Q=Z.findIndex(ge=>ge.id===F);Q>=0&&(G=Q+1)}const de=L.map(Q=>({...ie.get(Q),partId:K,partTitle:A,chapterId:ce.id,chapterTitle:ce.title}));await o([...Z.slice(0,G),...de,...Z.slice(G)]);return}if(se.type==="section"&&(Y==="section"||Y==="chapter"||Y==="part")){if(!ae)return;const{partId:U,partTitle:ce,chapterId:K,chapterTitle:A}=ae;let F;if(Y==="section")F=H.findIndex(ge=>ge.id===ne);else if(Y==="chapter"){const ge=H.filter(Se=>Se.chapterId===ne).pop();F=ge?H.findIndex(Se=>Se.id===ge.id)+1:H.length}else{const ge=r.find(fe=>fe.id===ne);if(!(ge!=null&&ge.chapters[0]))return;const Se=H.filter(fe=>fe.partId===ge.id&&fe.chapterId===ge.chapters[0].id),D=Se[Se.length-1];F=D?H.findIndex(fe=>fe.id===D.id)+1:0}const L=H.findIndex(ge=>ge.id===se.id);if(L===-1)return;const Z=H.filter(ge=>ge.id!==se.id),G=L({onDragEnter:ae=>{ae.preventDefault(),ae.stopPropagation(),ae.dataTransfer.dropEffect="move",S({type:E,id:Y})},onDragOver:ae=>{ae.preventDefault(),ae.stopPropagation(),ae.dataTransfer.dropEffect="move",S({type:E,id:Y})},onDragLeave:()=>S(null),onDrop:ae=>{S(null);const q=Bd(ae.dataTransfer.getData("text/plain"));if(q&&!(E==="section"&&q.type==="section"&&q.id===Y))if(E==="part")if(q.type==="part")V(ae,"part",Y);else{const se=r.find(ie=>ie.id===Y);(se==null?void 0:se.chapters[0])&&ne&&V(ae,"part",Y,ne)}else E==="chapter"&&ne?(q.type==="section"||q.type==="chapter")&&V(ae,"chapter",Y,ne):E==="section"&&ne&&V(ae,"section",Y,ne)}}),R=E=>mC[E]??String(E+1);return e.jsx("div",{className:"space-y-3",children:r.map((E,Y)=>{var ce,K,A,F;const ne=E.title==="序言"||E.title.includes("序言"),ae=E.title==="尾声"||E.title.includes("尾声"),q=E.title==="附录"||E.title.includes("附录"),se=_("part",E.id),H=a.includes(E.id),ie=E.chapters.length,ve=E.chapters.reduce((L,Z)=>L+Z.sections.length,0);if(ne&&E.chapters.length===1&&E.chapters[0].sections.length===1){const L=E.chapters[0].sections[0],Z=_("section",L.id),G={partId:E.id,partTitle:E.title,chapterId:E.chapters[0].id,chapterTitle:E.chapters[0].title};return e.jsxs("div",{draggable:!0,onDragStart:de=>{de.stopPropagation(),de.dataTransfer.setData("text/plain","section:"+L.id),de.dataTransfer.effectAllowed="move",N({type:"section",id:L.id})},onDragEnd:()=>{N(null),S(null)},className:`rounded-xl border border-gray-700/50 bg-[#1C1C1E] p-4 flex items-center justify-between hover:border-[#38bdac]/30 transition-colors cursor-grab active:cursor-grabbing select-none min-h-[40px] ${Z?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":""} ${j("section",L.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":""}`,...I("section",L.id,G),children:[e.jsxs("div",{className:"flex items-center gap-3 flex-1 min-w-0 select-none",children:[e.jsx(Sr,{className:"w-5 h-5 text-gray-500 shrink-0 opacity-60"}),P&&e.jsx("label",{className:"shrink-0 flex items-center",onClick:de=>de.stopPropagation(),children:e.jsx("input",{type:"checkbox",checked:k.includes(L.id),onChange:()=>P(L.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),e.jsx("div",{className:"w-8 h-8 rounded-lg bg-gray-600/50 flex items-center justify-center shrink-0",children:e.jsx(qs,{className:"w-4 h-4 text-gray-400"})}),e.jsxs("span",{className:"font-medium text-gray-200 truncate",children:[E.chapters[0].title," | ",L.title]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",onMouseDown:de=>de.stopPropagation(),onClick:de=>de.stopPropagation(),children:[L.price===0||L.isFree?e.jsx("span",{className:"px-2 py-1 bg-[#38bdac]/20 text-[#38bdac] text-[10px] font-medium rounded",children:"免费"}):e.jsxs("span",{className:"text-xs text-gray-500",children:["¥",L.price]}),e.jsxs("span",{className:"text-[10px] text-gray-500",children:["点击 ",L.clickCount??0," · 付款 ",L.payCount??0]}),e.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(L.hotScore??0).toFixed(1)," · 第",L.hotRank&&L.hotRank>0?L.hotRank:"-","名"]}),T&&e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>T(L),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:"付款记录"}),e.jsxs("div",{className:"flex gap-1",children:[e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>c(L),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",children:e.jsx(Er,{className:"w-3.5 h-3.5"})}),e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>c(L),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>u(L),className:"text-gray-500 hover:text-red-400 h-7 px-2",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})})]}),e.jsx(tn,{className:"w-4 h-4 text-gray-500"})]})]},E.id)}if(E.title==="2026每日派对干货"||E.title.includes("2026每日派对干货")){const L=_("part",E.id);return e.jsxs("div",{className:`rounded-xl border overflow-hidden transition-all duration-200 ${L?"border-[#38bdac] ring-2 ring-[#38bdac]/40 bg-[#38bdac]/5":"border-gray-700/50 bg-[#1C1C1E]"}`,...I("part",E.id,{partId:E.id,partTitle:E.title,chapterId:((ce=E.chapters[0])==null?void 0:ce.id)??"",chapterTitle:((K=E.chapters[0])==null?void 0:K.title)??""}),children:[e.jsxs("div",{draggable:!0,onDragStart:Z=>{Z.stopPropagation(),Z.dataTransfer.setData("text/plain","part:"+E.id),Z.dataTransfer.effectAllowed="move",N({type:"part",id:E.id})},onDragEnd:()=>{N(null),S(null)},className:`flex items-center justify-between p-4 cursor-grab active:cursor-grabbing select-none transition-all duration-200 ${j("part",E.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":"hover:bg-[#162840]/50"}`,onClick:()=>l(E.id),children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx(Sr,{className:"w-5 h-5 text-gray-500 shrink-0 opacity-60"}),e.jsx("div",{className:"w-10 h-10 rounded-xl bg-[#38bdac]/80 flex items-center justify-center text-white font-bold shrink-0",children:"派"}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-bold text-white text-base",children:E.title}),e.jsxs("p",{className:"text-xs text-gray-500 mt-0.5",children:["共 ",ve," 节"]})]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",onMouseDown:Z=>Z.stopPropagation(),onClick:Z=>Z.stopPropagation(),children:[m&&e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>m(E),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"在本篇下新增章节",children:e.jsx(Rt,{className:"w-3.5 h-3.5"})}),y&&e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>y(E),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"编辑篇名",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),g&&e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>g(E),className:"text-gray-500 hover:text-red-400 h-7 px-2",title:"删除本篇",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})}),e.jsxs("span",{className:"text-xs text-gray-500",children:[ie,"章"]}),H?e.jsx(_l,{className:"w-5 h-5 text-gray-500"}):e.jsx(tn,{className:"w-5 h-5 text-gray-500"})]})]}),H&&E.chapters.length>0&&e.jsx("div",{className:"border-t border-gray-700/50 pl-4 pr-4 pb-4 pt-3 space-y-4",children:E.chapters.map(Z=>e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2 w-full",children:[e.jsx("p",{className:"text-xs text-gray-500 pb-1 flex-1",children:Z.title}),e.jsxs("div",{className:"flex gap-0.5 shrink-0",onClick:G=>G.stopPropagation(),children:[v&&e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>v(E,Z),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"编辑章节名称",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),f&&e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>f(E),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"新增第X章",children:e.jsx(Rt,{className:"w-3.5 h-3.5"})}),p&&e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>p(E,Z),className:"text-gray-500 hover:text-red-400 h-7 px-1.5",title:"删除本章",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})})]})]}),e.jsx("div",{className:"space-y-1 pl-2",children:Z.sections.map(G=>{const de=_("section",G.id);return e.jsxs("div",{draggable:!0,onDragStart:Q=>{Q.stopPropagation(),Q.dataTransfer.setData("text/plain","section:"+G.id),Q.dataTransfer.effectAllowed="move",N({type:"section",id:G.id})},onDragEnd:()=>{N(null),S(null)},className:`flex items-center justify-between py-2 px-3 rounded-lg min-h-[40px] cursor-grab active:cursor-grabbing select-none transition-all duration-200 ${de?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":"hover:bg-[#162840]/50"} ${j("section",G.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":""}`,...I("section",G.id,{partId:E.id,partTitle:E.title,chapterId:Z.id,chapterTitle:Z.title}),children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[e.jsx(Sr,{className:"w-4 h-4 text-gray-500 shrink-0 opacity-50"}),P&&e.jsx("label",{className:"shrink-0 flex items-center",onClick:Q=>Q.stopPropagation(),children:e.jsx("input",{type:"checkbox",checked:k.includes(G.id),onChange:()=>P(G.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),e.jsxs("span",{className:"text-sm text-gray-200 truncate",children:[G.id," ",G.title]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[e.jsxs("span",{className:"text-[10px] text-gray-500",children:["点击 ",G.clickCount??0," · 付款 ",G.payCount??0]}),e.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(G.hotScore??0).toFixed(1)," · 第",G.hotRank&&G.hotRank>0?G.hotRank:"-","名"]}),T&&e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>T(G),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:"付款记录"}),e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>c(G),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:e.jsx(Er,{className:"w-3.5 h-3.5"})}),e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>c(G),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>u(G),className:"text-gray-500 hover:text-red-400 h-7 px-1.5",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})})]})]},G.id)})})]},Z.id))})]},E.id)}if(q)return e.jsxs("div",{className:"rounded-xl border border-gray-700/50 bg-[#1C1C1E] p-5",children:[e.jsx("h3",{className:"text-sm font-medium text-gray-400 mb-4",children:"附录"}),e.jsx("div",{className:"space-y-3",children:E.chapters.map((L,Z)=>L.sections.length>0?L.sections.map(G=>{const de=_("section",G.id);return e.jsxs("div",{draggable:!0,onDragStart:Q=>{Q.stopPropagation(),Q.dataTransfer.setData("text/plain","section:"+G.id),Q.dataTransfer.effectAllowed="move",N({type:"section",id:G.id})},onDragEnd:()=>{N(null),S(null)},className:`flex justify-between items-center py-2 select-none rounded px-2 -mx-2 group cursor-grab active:cursor-grabbing min-h-[40px] transition-all duration-200 ${de?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":"hover:bg-[#162840]/50"} ${j("section",G.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":""}`,...I("section",G.id,{partId:E.id,partTitle:E.title,chapterId:L.id,chapterTitle:L.title}),children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[e.jsx(Sr,{className:"w-4 h-4 text-gray-500 shrink-0 opacity-50"}),P&&e.jsx("label",{className:"shrink-0 flex items-center",onClick:Q=>Q.stopPropagation(),children:e.jsx("input",{type:"checkbox",checked:k.includes(G.id),onChange:()=>P(G.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),e.jsxs("span",{className:"text-sm text-gray-300 truncate",children:["附录",Z+1," | ",L.title," | ",G.title]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[e.jsxs("span",{className:"text-[10px] text-gray-500",children:["点击 ",G.clickCount??0," · 付款 ",G.payCount??0]}),e.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(G.hotScore??0).toFixed(1)," · 第",G.hotRank&&G.hotRank>0?G.hotRank:"-","名"]}),T&&e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>T(G),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:"付款记录"}),e.jsxs("div",{className:"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>c(G),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:e.jsx(Er,{className:"w-3.5 h-3.5"})}),e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>c(G),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>u(G),className:"text-gray-500 hover:text-red-400 h-7 px-1.5",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})})]})]}),e.jsx(tn,{className:"w-4 h-4 text-gray-500 shrink-0"})]},G.id)}):e.jsxs("div",{className:"flex justify-between items-center py-2 select-none hover:bg-[#162840]/50 rounded px-2 -mx-2",children:[e.jsxs("span",{className:"text-sm text-gray-500",children:["附录",Z+1," | ",L.title,"(空)"]}),e.jsx(tn,{className:"w-4 h-4 text-gray-500 shrink-0"})]},L.id))})]},E.id);if(ae&&E.chapters.length===1&&E.chapters[0].sections.length===1){const L=E.chapters[0].sections[0],Z=_("section",L.id),G={partId:E.id,partTitle:E.title,chapterId:E.chapters[0].id,chapterTitle:E.chapters[0].title};return e.jsxs("div",{draggable:!0,onDragStart:de=>{de.stopPropagation(),de.dataTransfer.setData("text/plain","section:"+L.id),de.dataTransfer.effectAllowed="move",N({type:"section",id:L.id})},onDragEnd:()=>{N(null),S(null)},className:`rounded-xl border border-gray-700/50 bg-[#1C1C1E] p-4 flex items-center justify-between hover:border-[#38bdac]/30 transition-colors cursor-grab active:cursor-grabbing select-none min-h-[40px] ${Z?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":""} ${j("section",L.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":""}`,...I("section",L.id,G),children:[e.jsxs("div",{className:"flex items-center gap-3 flex-1 min-w-0 select-none",children:[e.jsx(Sr,{className:"w-5 h-5 text-gray-500 shrink-0 opacity-60"}),P&&e.jsx("label",{className:"shrink-0 flex items-center",onClick:de=>de.stopPropagation(),children:e.jsx("input",{type:"checkbox",checked:k.includes(L.id),onChange:()=>P(L.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),e.jsx("div",{className:"w-8 h-8 rounded-lg bg-gray-600/50 flex items-center justify-center shrink-0",children:e.jsx(qs,{className:"w-4 h-4 text-gray-400"})}),e.jsxs("span",{className:"font-medium text-gray-200 truncate",children:[E.chapters[0].title," | ",L.title]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",onMouseDown:de=>de.stopPropagation(),onClick:de=>de.stopPropagation(),children:[L.price===0||L.isFree?e.jsx("span",{className:"px-2 py-1 bg-[#38bdac]/20 text-[#38bdac] text-[10px] font-medium rounded",children:"免费"}):e.jsxs("span",{className:"text-xs text-gray-500",children:["¥",L.price]}),e.jsxs("span",{className:"text-[10px] text-gray-500",children:["点击 ",L.clickCount??0," · 付款 ",L.payCount??0]}),e.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(L.hotScore??0).toFixed(1)," · 第",L.hotRank&&L.hotRank>0?L.hotRank:"-","名"]}),T&&e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>T(L),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:"付款记录"}),e.jsxs("div",{className:"flex gap-1",children:[e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>c(L),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",children:e.jsx(Er,{className:"w-3.5 h-3.5"})}),e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>c(L),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>u(L),className:"text-gray-500 hover:text-red-400 h-7 px-2",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})})]}),e.jsx(tn,{className:"w-4 h-4 text-gray-500"})]})]},E.id)}return ae?e.jsxs("div",{className:"rounded-xl border border-gray-700/50 bg-[#1C1C1E] p-5",children:[e.jsx("h3",{className:"text-sm font-medium text-gray-400 mb-4",children:"尾声"}),e.jsx("div",{className:"space-y-3",children:E.chapters.map(L=>L.sections.map(Z=>{const G=_("section",Z.id);return e.jsxs("div",{draggable:!0,onDragStart:de=>{de.stopPropagation(),de.dataTransfer.setData("text/plain","section:"+Z.id),de.dataTransfer.effectAllowed="move",N({type:"section",id:Z.id})},onDragEnd:()=>{N(null),S(null)},className:`flex justify-between items-center py-2 select-none rounded px-2 -mx-2 cursor-grab active:cursor-grabbing min-h-[40px] transition-all duration-200 ${G?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":"hover:bg-[#162840]/50"} ${j("section",Z.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":""}`,...I("section",Z.id,{partId:E.id,partTitle:E.title,chapterId:L.id,chapterTitle:L.title}),children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[e.jsx(Sr,{className:"w-4 h-4 text-gray-500 shrink-0 opacity-50"}),P&&e.jsx("label",{className:"shrink-0 flex items-center",onClick:de=>de.stopPropagation(),children:e.jsx("input",{type:"checkbox",checked:k.includes(Z.id),onChange:()=>P(Z.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),e.jsxs("span",{className:"text-sm text-gray-300",children:[L.title," | ",Z.title]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[e.jsxs("span",{className:"text-[10px] text-gray-500",children:["点击 ",Z.clickCount??0," · 付款 ",Z.payCount??0]}),e.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(Z.hotScore??0).toFixed(1)," · 第",Z.hotRank&&Z.hotRank>0?Z.hotRank:"-","名"]}),T&&e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>T(Z),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:"付款记录"}),e.jsxs("div",{className:"flex gap-1",children:[e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>c(Z),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",children:e.jsx(Er,{className:"w-3.5 h-3.5"})}),e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>c(Z),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>u(Z),className:"text-gray-500 hover:text-red-400 h-7 px-2",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})})]})]})]},Z.id)}))})]},E.id):e.jsxs("div",{className:`rounded-xl border bg-[#1C1C1E] overflow-hidden transition-all duration-200 ${se?"border-[#38bdac] ring-2 ring-[#38bdac]/40 bg-[#38bdac]/5":"border-gray-700/50"}`,...I("part",E.id,{partId:E.id,partTitle:E.title,chapterId:((A=E.chapters[0])==null?void 0:A.id)??"",chapterTitle:((F=E.chapters[0])==null?void 0:F.title)??""}),children:[e.jsxs("div",{draggable:!0,onDragStart:L=>{L.stopPropagation(),L.dataTransfer.setData("text/plain","part:"+E.id),L.dataTransfer.effectAllowed="move",N({type:"part",id:E.id})},onDragEnd:()=>{N(null),S(null)},className:`flex items-center justify-between p-4 cursor-grab active:cursor-grabbing select-none transition-all duration-200 ${j("part",E.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac] rounded-xl shadow-xl shadow-[#38bdac]/20":"hover:bg-[#162840]/50"}`,onClick:()=>l(E.id),children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx(Sr,{className:"w-5 h-5 text-gray-500 shrink-0 opacity-60"}),e.jsx("div",{className:"w-10 h-10 rounded-xl bg-[#38bdac] flex items-center justify-center text-white font-bold shadow-lg shadow-[#38bdac]/30 shrink-0",children:R(Y)}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-bold text-white text-base",children:E.title}),e.jsxs("p",{className:"text-xs text-gray-500 mt-0.5",children:["共 ",ve," 节"]})]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",onMouseDown:L=>L.stopPropagation(),onClick:L=>L.stopPropagation(),children:[m&&e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>m(E),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"在本篇下新增章节",children:e.jsx(Rt,{className:"w-3.5 h-3.5"})}),y&&e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>y(E),className:"text-gray-500 hover:text-[#38bdac] h-7 px-2",title:"编辑篇名",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),g&&e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>g(E),className:"text-gray-500 hover:text-red-400 h-7 px-2",title:"删除本篇",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})}),e.jsxs("span",{className:"text-xs text-gray-500",children:[ie,"章"]}),H?e.jsx(_l,{className:"w-5 h-5 text-gray-500"}):e.jsx(tn,{className:"w-5 h-5 text-gray-500"})]})]}),H&&e.jsx("div",{className:"border-t border-gray-700/50 pl-4 pr-4 pb-4 pt-3 space-y-4",children:E.chapters.map(L=>{const Z=_("chapter",L.id);return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2 w-full",children:[e.jsxs("div",{draggable:!0,onDragStart:G=>{G.stopPropagation(),G.dataTransfer.setData("text/plain","chapter:"+L.id),G.dataTransfer.effectAllowed="move",N({type:"chapter",id:L.id})},onDragEnd:()=>{N(null),S(null)},onDragEnter:G=>{G.preventDefault(),G.stopPropagation(),G.dataTransfer.dropEffect="move",S({type:"chapter",id:L.id})},onDragOver:G=>{G.preventDefault(),G.stopPropagation(),G.dataTransfer.dropEffect="move",S({type:"chapter",id:L.id})},onDragLeave:()=>S(null),onDrop:G=>{S(null);const de=Bd(G.dataTransfer.getData("text/plain"));if(!de)return;const Q={partId:E.id,partTitle:E.title,chapterId:L.id,chapterTitle:L.title};(de.type==="section"||de.type==="chapter")&&V(G,"chapter",L.id,Q)},className:`flex-1 min-w-0 py-2 px-2 rounded cursor-grab active:cursor-grabbing select-none -mx-2 transition-all duration-200 flex items-center gap-2 ${Z?"bg-[#38bdac]/15 ring-1 ring-[#38bdac]/50":""} ${j("chapter",L.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac]":"hover:bg-[#162840]/30"}`,children:[e.jsx(Sr,{className:"w-4 h-4 text-gray-500 shrink-0 opacity-50"}),e.jsx("p",{className:"text-xs text-gray-500 pb-1 flex-1",children:L.title})]}),e.jsxs("div",{className:"flex gap-0.5 shrink-0",onClick:G=>G.stopPropagation(),children:[v&&e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>v(E,L),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"编辑章节名称",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),f&&e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>f(E),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",title:"新增第X章",children:e.jsx(Rt,{className:"w-3.5 h-3.5"})}),p&&e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>p(E,L),className:"text-gray-500 hover:text-red-400 h-7 px-1.5",title:"删除本章",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})})]})]}),e.jsx("div",{className:"space-y-1 pl-2",children:L.sections.map(G=>{const de=_("section",G.id);return e.jsxs("div",{draggable:!0,onDragStart:Q=>{Q.stopPropagation(),Q.dataTransfer.setData("text/plain","section:"+G.id),Q.dataTransfer.effectAllowed="move",N({type:"section",id:G.id})},onDragEnd:()=>{N(null),S(null)},className:`flex items-center justify-between py-2 px-3 rounded-lg group cursor-grab active:cursor-grabbing select-none min-h-[40px] transition-all duration-200 ${de?"bg-[#38bdac]/15 ring-2 ring-[#38bdac]/50":""} ${j("section",G.id)?"opacity-60 scale-[0.98] ring-2 ring-[#38bdac] shadow-lg":"hover:bg-[#162840]/50"}`,...I("section",G.id,{partId:E.id,partTitle:E.title,chapterId:L.id,chapterTitle:L.title}),children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0 flex-1",children:[P&&e.jsx("label",{className:"shrink-0 flex items-center",onClick:Q=>Q.stopPropagation(),children:e.jsx("input",{type:"checkbox",checked:k.includes(G.id),onChange:()=>P(G.id),className:"w-4 h-4 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"})}),e.jsx(Sr,{className:"w-4 h-4 text-gray-500 shrink-0 opacity-50"}),e.jsx("div",{className:`w-2 h-2 rounded-full shrink-0 ${G.price===0||G.isFree?"border-2 border-[#38bdac] bg-transparent":"bg-gray-500"}`}),e.jsxs("span",{className:"text-sm text-gray-200 truncate",children:[G.id," ",G.title]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",onMouseDown:Q=>Q.stopPropagation(),onClick:Q=>Q.stopPropagation(),children:[G.isNew&&e.jsx("span",{className:"px-2 py-1 bg-[#38bdac]/20 text-[#38bdac] text-[10px] font-medium rounded",children:"NEW"}),G.price===0||G.isFree?e.jsx("span",{className:"px-2 py-1 bg-[#38bdac]/20 text-[#38bdac] text-[10px] font-medium rounded",children:"免费"}):e.jsxs("span",{className:"text-xs text-gray-500",children:["¥",G.price]}),e.jsxs("span",{className:"text-[10px] text-gray-500",title:"点击次数 · 付款笔数",children:["点击 ",G.clickCount??0," · 付款 ",G.payCount??0]}),e.jsxs("span",{className:"text-[10px] text-amber-400/90",title:"热度积分与排名",children:["热度 ",(G.hotScore??0).toFixed(1)," · 第",G.hotRank&&G.hotRank>0?G.hotRank:"-","名"]}),T&&e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>T(G),className:"text-[10px] text-gray-500 hover:text-[#38bdac] h-7 px-1.5 shrink-0",children:"付款记录"}),e.jsxs("div",{className:"flex gap-0.5 opacity-0 group-hover:opacity-100 transition-opacity",children:[e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>c(G),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:e.jsx(Er,{className:"w-3.5 h-3.5"})}),e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>c(G),className:"text-gray-500 hover:text-[#38bdac] h-7 px-1.5",children:e.jsx(ht,{className:"w-3.5 h-3.5"})}),e.jsx(J,{draggable:!1,variant:"ghost",size:"sm",onClick:()=>u(G),className:"text-gray-500 hover:text-red-400 h-7 px-1.5",children:e.jsx(Ht,{className:"w-3.5 h-3.5"})})]}),e.jsx(tn,{className:"w-4 h-4 text-gray-500"})]})]},G.id)})})]},L.id)})})]},E.id)})})}function xC(r){const a=new Map;for(const f of r){const p=f.partId||"part-1",y=f.partTitle||"未分类",g=f.chapterId||"chapter-1",v=f.chapterTitle||"未分类";a.has(p)||a.set(p,{id:p,title:y,chapters:new Map});const k=a.get(p);k.chapters.has(g)||k.chapters.set(g,{id:g,title:v,sections:[]}),k.chapters.get(g).sections.push({id:f.id,title:f.title,price:f.price??1,filePath:f.filePath,isFree:f.isFree,isNew:f.isNew,clickCount:f.clickCount??0,payCount:f.payCount??0,hotScore:f.hotScore??0,hotRank:f.hotRank??0})}const l="part-2026-daily",o="2026每日派对干货";Array.from(a.values()).some(f=>f.title===o||f.title.includes(o))||a.set(l,{id:l,title:o,chapters:new Map([["chapter-2026-daily",{id:"chapter-2026-daily",title:o,sections:[]}]])});const u=Array.from(a.values()).map(f=>({...f,chapters:Array.from(f.chapters.values())})),m=f=>f.includes("序言")?0:f.includes(o)?1.5:f.includes("附录")?2:f.includes("尾声")?3:1;return u.sort((f,p)=>{const y=m(f.title),g=m(p.title);return y!==g?y-g:0})}function pC(){var $s,Zn,ts;const[r,a]=h.useState([]),[l,o]=h.useState(!0),[c,u]=h.useState([]),[m,f]=h.useState(null),[p,y]=h.useState(!1),[g,v]=h.useState(!1),[k,P]=h.useState(!1),[T,w]=h.useState(""),[N,b]=h.useState([]),[S,j]=h.useState(!1),[_,O]=h.useState(!1),V=h.useRef(null),[I,R]=h.useState({id:"",title:"",price:1,partId:"part-1",chapterId:"chapter-1",content:""}),[E,Y]=h.useState(null),[ne,ae]=h.useState(!1),[q,se]=h.useState(!1),[H,ie]=h.useState(null),[ve,U]=h.useState(!1),[ce,K]=h.useState([]),[A,F]=h.useState(!1),[L,Z]=h.useState(""),[G,de]=h.useState(""),[Q,ge]=h.useState(!1),[Se,D]=h.useState(""),[fe,ke]=h.useState(!1),[Ve,We]=h.useState(null),[Ye,tt]=h.useState(!1),[ze,he]=h.useState(!1),[xe,ft]=h.useState({readWeight:.5,recencyWeight:.3,payWeight:.2}),[es,hr]=h.useState(!1),[bn,As]=h.useState(!1),Bt=xC(r),_r=r.length,ct=async()=>{o(!0);try{const z=await Be("/api/db/book?action=list",{cache:"no-store"});a(Array.isArray(z==null?void 0:z.sections)?z.sections:[])}catch(z){console.error(z),a([])}finally{o(!1)}};h.useEffect(()=>{ct()},[]);const gs=z=>{u(oe=>oe.includes(z)?oe.filter(Ce=>Ce!==z):[...oe,z])},Nn=h.useCallback(z=>{const oe=r,Ce=z.flatMap(Pe=>{const xt=oe.find(ns=>ns.id===Pe.id);return xt?[{...xt,partId:Pe.partId,partTitle:Pe.partTitle,chapterId:Pe.chapterId,chapterTitle:Pe.chapterTitle}]:[]});return a(Ce),vt("/api/db/book",{action:"reorder",items:z}).then(Pe=>{Pe&&Pe.success===!1&&(a(oe),alert("排序失败: "+(Pe&&typeof Pe=="object"&&"error"in Pe?Pe.error:"未知错误")))}).catch(Pe=>{a(oe),console.error("排序失败:",Pe),alert("排序失败: "+(Pe instanceof Error?Pe.message:"网络或服务异常"))}),Promise.resolve()},[r]),mr=async z=>{if(confirm(`确定要删除章节「${z.title}」吗?此操作不可恢复。`))try{const oe=await Pr(`/api/db/book?id=${encodeURIComponent(z.id)}`);oe&&oe.success!==!1?(alert("已删除"),ct()):alert("删除失败: "+(oe&&typeof oe=="object"&&"error"in oe?oe.error:"未知错误"))}catch(oe){console.error(oe),alert("删除失败")}},Cs=h.useCallback(async()=>{hr(!0);try{const z=await Be("/api/db/config/full?key=article_ranking_weights",{cache:"no-store"}),oe=z&&z.data;oe&&typeof oe.readWeight=="number"&&typeof oe.recencyWeight=="number"&&typeof oe.payWeight=="number"&&ft({readWeight:Math.max(0,Math.min(1,oe.readWeight)),recencyWeight:Math.max(0,Math.min(1,oe.recencyWeight)),payWeight:Math.max(0,Math.min(1,oe.payWeight))})}catch{}finally{hr(!1)}},[]);h.useEffect(()=>{ze&&Cs()},[ze,Cs]);const Gn=async()=>{const{readWeight:z,recencyWeight:oe,payWeight:Ce}=xe,Pe=z+oe+Ce;if(Math.abs(Pe-1)>.001){alert("三个权重之和必须等于 1");return}As(!0);try{const xt=await mt("/api/db/config",{key:"article_ranking_weights",value:{readWeight:z,recencyWeight:oe,payWeight:Ce},description:"文章排名算法权重"});xt&&xt.success!==!1?(alert("已保存"),ct()):alert("保存失败: "+(xt&&typeof xt=="object"&&"error"in xt?xt.error:""))}catch(xt){console.error(xt),alert("保存失败")}finally{As(!1)}},Yn=async z=>{We({section:z,orders:[]}),tt(!0);try{const oe=await Be(`/api/db/book?action=section-orders&id=${encodeURIComponent(z.id)}`),Ce=oe!=null&&oe.success&&Array.isArray(oe.orders)?oe.orders:[];We(Pe=>Pe?{...Pe,orders:Ce}:null)}catch(oe){console.error(oe),We(Ce=>Ce?{...Ce,orders:[]}:null)}finally{tt(!1)}},ks=async z=>{v(!0);try{const oe=await Be(`/api/db/book?action=read&id=${encodeURIComponent(z.id)}`);if(oe!=null&&oe.success&&oe.section){const Ce=oe.section;f({id:z.id,title:oe.section.title??z.title,price:oe.section.price??z.price,content:oe.section.content??"",filePath:z.filePath,isFree:z.isFree||z.price===0,isNew:Ce.isNew??z.isNew})}else f({id:z.id,title:z.title,price:z.price,content:"",filePath:z.filePath,isFree:z.isFree,isNew:z.isNew}),oe&&!oe.success&&alert("无法读取文件内容: "+(oe.error||"未知错误"))}catch(oe){console.error(oe),f({id:z.id,title:z.title,price:z.price,content:"",filePath:z.filePath,isFree:z.isFree})}finally{v(!1)}},wn=async()=>{var z;if(m){P(!0);try{let oe=m.content||"";const Ce=[new RegExp(`^#+\\s*${m.id.replace(".","\\.")}\\s+.*$`,"gm"),new RegExp(`^#+\\s*${m.id.replace(".","\\.")}[::].*$`,"gm"),new RegExp(`^#\\s+.*${(z=m.title)==null?void 0:z.slice(0,10).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}.*$`,"gm")];for(const xt of Ce)oe=oe.replace(xt,"");oe=oe.replace(/^\s*\n+/,"").trim();const Pe=await vt("/api/db/book",{id:m.id,title:m.title,price:m.isFree?0:m.price,content:oe,isFree:m.isFree||m.price===0,isNew:m.isNew,saveToFile:!0});Pe&&Pe.success!==!1?(alert(`已保存章节: ${m.title}`),f(null),ct()):alert("保存失败: "+(Pe&&typeof Pe=="object"&&"error"in Pe?Pe.error:"未知错误"))}catch(oe){console.error(oe),alert("保存失败")}finally{P(!1)}}},fr=async()=>{if(!I.id||!I.title){alert("请填写章节ID和标题");return}P(!0);try{const z=await vt("/api/db/book",{id:I.id,title:I.title,price:I.price,content:I.content,partId:I.partId,chapterId:I.chapterId,saveToFile:!1});z&&z.success!==!1?(alert(`章节创建成功: ${I.title}`),y(!1),R({id:"",title:"",price:1,partId:"part-1",chapterId:"chapter-1",content:""}),ct()):alert("创建失败: "+(z&&typeof z=="object"&&"error"in z?z.error:"未知错误"))}catch(z){console.error(z),alert("创建失败")}finally{P(!1)}},ys=z=>{R(oe=>{var Ce;return{...oe,partId:z.id,chapterId:((Ce=z.chapters[0])==null?void 0:Ce.id)??"chapter-1"}}),y(!0)},Ds=z=>{Y({id:z.id,title:z.title})},Ls=async()=>{var z;if((z=E==null?void 0:E.title)!=null&&z.trim()){ae(!0);try{const oe=r.map(Pe=>({id:Pe.id,partId:Pe.partId||"part-1",partTitle:Pe.partId===E.id?E.title.trim():Pe.partTitle||"",chapterId:Pe.chapterId||"chapter-1",chapterTitle:Pe.chapterTitle||""})),Ce=await vt("/api/db/book",{action:"reorder",items:oe});Ce&&Ce.success!==!1?(Y(null),ct()):alert("更新篇名失败: "+(Ce&&typeof Ce=="object"&&"error"in Ce?Ce.error:"未知错误"))}catch(oe){console.error(oe),alert("更新篇名失败")}finally{ae(!1)}}},Sn=z=>{const oe=z.chapters.length+1,Ce=`chapter-${z.id}-${oe}-${Date.now()}`;R({id:`${oe}.1`,title:"新章节",price:1,partId:z.id,chapterId:Ce,content:""}),y(!0)},Es=(z,oe)=>{ie({part:z,chapter:oe,title:oe.title})},Os=async()=>{var z;if((z=H==null?void 0:H.title)!=null&&z.trim()){U(!0);try{const oe=r.map(Pe=>({id:Pe.id,partId:Pe.partId||H.part.id,partTitle:Pe.partId===H.part.id?H.part.title:Pe.partTitle||"",chapterId:Pe.chapterId||H.chapter.id,chapterTitle:Pe.partId===H.part.id&&Pe.chapterId===H.chapter.id?H.title.trim():Pe.chapterTitle||""})),Ce=await vt("/api/db/book",{action:"reorder",items:oe});Ce&&Ce.success!==!1?(ie(null),ct()):alert("保存失败: "+(Ce&&typeof Ce=="object"&&"error"in Ce?Ce.error:"未知错误"))}catch(oe){console.error(oe),alert("保存失败")}finally{U(!1)}}},Fs=async(z,oe)=>{const Ce=oe.sections.map(Pe=>Pe.id);if(Ce.length===0){alert("该章下无小节,无需删除");return}if(confirm(`确定要删除「第${z.chapters.indexOf(oe)+1}章 | ${oe.title}」吗?将删除共 ${Ce.length} 节,此操作不可恢复。`))try{for(const Pe of Ce)await Pr(`/api/db/book?id=${encodeURIComponent(Pe)}`);ct()}catch(Pe){console.error(Pe),alert("删除失败")}},Qn=async()=>{if(!Se.trim()){alert("请输入篇名");return}ke(!0);try{const z=`part-new-${Date.now()}`,oe="chapter-1",Ce=`part-placeholder-${Date.now()}`,Pe=await vt("/api/db/book",{id:Ce,title:"占位节(可编辑)",price:0,content:"",partId:z,partTitle:Se.trim(),chapterId:oe,chapterTitle:"第1章 | 待编辑",saveToFile:!1});Pe&&Pe.success!==!1?(alert(`篇「${Se}」创建成功,请编辑占位节`),se(!1),D(""),ct()):alert("创建失败: "+(Pe&&typeof Pe=="object"&&"error"in Pe?Pe.error:"未知错误"))}catch(z){console.error(z),alert("创建失败")}finally{ke(!1)}},qn=async()=>{if(ce.length===0){alert("请先勾选要移动的章节");return}const z=Bt.find(Ce=>Ce.id===L),oe=z==null?void 0:z.chapters.find(Ce=>Ce.id===G);if(!z||!oe||!L||!G){alert("请选择目标篇和章");return}ge(!0);try{const Ce=()=>{const nt=new Set(ce),as=r.map(Pt=>({id:Pt.id,partId:Pt.partId||"",partTitle:Pt.partTitle||"",chapterId:Pt.chapterId||"",chapterTitle:Pt.chapterTitle||""})),En=as.filter(Pt=>nt.has(Pt.id)).map(Pt=>({...Pt,partId:L,partTitle:z.title||L,chapterId:G,chapterTitle:oe.title||G})),er=as.filter(Pt=>!nt.has(Pt.id));let xr=er.length;for(let Pt=er.length-1;Pt>=0;Pt-=1){const $=er[Pt];if($.partId===L&&$.chapterId===G){xr=Pt+1;break}}return[...er.slice(0,xr),...En,...er.slice(xr)]},Pe=async()=>{const nt=Ce(),as=await vt("/api/db/book",{action:"reorder",items:nt});return as&&as.success!==!1?(alert(`已移动 ${ce.length} 节到「${z.title}」-「${oe.title}」`),F(!1),K([]),await ct(),!0):!1},xt={action:"move-sections",sectionIds:ce,targetPartId:L,targetChapterId:G,targetPartTitle:z.title||L,targetChapterTitle:oe.title||G},ns=await vt("/api/db/book",xt);if(ns&&ns.success!==!1)alert(`已移动 ${ns.count??ce.length} 节到「${z.title}」-「${oe.title}」`),F(!1),K([]),await ct();else{const nt=ns&&typeof ns=="object"&&"error"in ns?ns.error||"":"未知错误";if((nt.includes("缺少 id")||nt.includes("无效的 action"))&&await Pe())return;alert("移动失败: "+nt)}}catch(Ce){console.error(Ce),alert("移动失败: "+(Ce instanceof Error?Ce.message:"网络或服务异常"))}finally{ge(!1)}},Xn=z=>{K(oe=>oe.includes(z)?oe.filter(Ce=>Ce!==z):[...oe,z])},Jn=async z=>{const oe=r.filter(Ce=>Ce.partId===z.id).map(Ce=>Ce.id);if(oe.length===0){alert("该篇下暂无小节可删除");return}if(confirm(`确定要删除「${z.title}」整篇吗?将删除共 ${oe.length} 节内容,此操作不可恢复。`))try{for(const Ce of oe)await Pr(`/api/db/book?id=${encodeURIComponent(Ce)}`);ct()}catch(Ce){console.error(Ce),alert("删除失败")}},Cn=async z=>{var Ce,Pe;const oe=(Ce=z.target.files)==null?void 0:Ce[0];if(oe){O(!0);try{const xt=new FormData;xt.append("file",oe),xt.append("folder","book-images");const nt=await(await fetch(Aa("/api/upload"),{method:"POST",body:xt,credentials:"include"})).json();if(nt!=null&&nt.success&&((Pe=nt==null?void 0:nt.data)!=null&&Pe.url)){const as=`![${oe.name}](${nt.data.url})`;m&&f({...m,content:(m.content||"")+` -`+as}),alert(`图片上传成功: ${nt.data.url}`)}else alert("上传失败: "+((nt==null?void 0:nt.error)||"未知错误"))}catch(xt){console.error(xt),alert("上传失败")}finally{U(!1),V.current&&(V.current.value="")}}},Cn=async()=>{var F;if(T.trim()){j(!0);try{const ie=await Be(`/api/search?q=${encodeURIComponent(T)}`);ie!=null&&ie.success&&((F=ie.data)!=null&&F.results)?N(ie.data.results):(N([]),ie&&!ie.success&&alert("搜索失败: "+ie.error))}catch(ie){console.error(ie),N([]),alert("搜索失败")}finally{j(!1)}}},zs=Bt.find(F=>F.id===_.partId),Mr=(zs==null?void 0:zs.chapters)??[];return e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-8",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-white",children:"内容管理"}),e.jsxs("p",{className:"text-gray-400 mt-1",children:["共 ",Bt.length," 篇 · ",_r," 节内容"]})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(X,{onClick:()=>he(!0),variant:"outline",className:"border-amber-500/50 text-amber-400 hover:bg-amber-500/10 bg-transparent",children:[e.jsx(kd,{className:"w-4 h-4 mr-2"}),"排名算法"]}),e.jsxs(X,{onClick:()=>{const F=typeof window<"u"?`${window.location.origin}/api-doc`:"";F&&window.open(F,"_blank","noopener,noreferrer")},variant:"outline",className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx(on,{className:"w-4 h-4 mr-2"}),"API 接口"]})]})]}),e.jsx(Ct,{open:g,onOpenChange:y,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-2xl max-h-[90vh] overflow-y-auto",showCloseButton:!0,children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(Rt,{className:"w-5 h-5 text-[#38bdac]"}),"新建章节"]})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"章节ID *"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: 9.15",value:_.id,onChange:F=>k({..._,id:F.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"价格 (元)"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:_.price,onChange:F=>k({..._,price:Number(F.target.value)})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"章节标题 *"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"输入章节标题",value:_.title,onChange:F=>k({..._,title:F.target.value})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"所属篇"}),e.jsxs(kl,{value:_.partId,onValueChange:F=>k({..._,partId:F,chapterId:"chapter-1"}),children:[e.jsx(Ca,{className:"bg-[#0a1628] border-gray-700 text-white",children:e.jsx(El,{})}),e.jsxs(ka,{className:"bg-[#0f2137] border-gray-700",children:[Bt.map(F=>e.jsx(lr,{value:F.id,className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:F.title},F.id)),Bt.length===0&&e.jsx(lr,{value:"part-1",className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:"默认篇"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"所属章"}),e.jsxs(kl,{value:_.chapterId,onValueChange:F=>k({..._,chapterId:F}),children:[e.jsx(Ca,{className:"bg-[#0a1628] border-gray-700 text-white",children:e.jsx(El,{})}),e.jsxs(ka,{className:"bg-[#0f2137] border-gray-700",children:[Mr.map(F=>e.jsx(lr,{value:F.id,className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:F.title},F.id)),Mr.length===0&&e.jsx(lr,{value:"chapter-1",className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:"默认章"})]})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"内容 (Markdown格式)"}),e.jsx(un,{className:"bg-[#0a1628] border-gray-700 text-white min-h-[300px] font-mono text-sm placeholder:text-gray-500",placeholder:"输入章节内容...",value:_.content,onChange:F=>k({..._,content:F.target.value})})]})]}),e.jsxs(Dt,{children:[e.jsx(X,{variant:"outline",onClick:()=>y(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),e.jsx(X,{onClick:fr,disabled:E||!_.id||!_.title,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:E?e.jsxs(e.Fragment,{children:[e.jsx($e,{className:"w-4 h-4 mr-2 animate-spin"}),"创建中..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"}),"创建章节"]})})]})]})}),e.jsx(Ct,{open:!!R,onOpenChange:F=>!F&&Z(null),children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",showCloseButton:!0,children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(ht,{className:"w-5 h-5 text-[#38bdac]"}),"编辑篇名"]})}),R&&e.jsx("div",{className:"space-y-4 py-4",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"篇名"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:R.title,onChange:F=>Z({...R,title:F.target.value}),placeholder:"输入篇名"})]})}),e.jsxs(Dt,{children:[e.jsx(X,{variant:"outline",onClick:()=>Z(null),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),e.jsx(X,{onClick:Ls,disabled:ne||!(($s=R==null?void 0:R.title)!=null&&$s.trim()),className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:ne?e.jsxs(e.Fragment,{children:[e.jsx($e,{className:"w-4 h-4 mr-2 animate-spin"}),"保存中..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),"保存"]})})]})]})}),e.jsx(Ct,{open:!!H,onOpenChange:F=>!F&&oe(null),children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",showCloseButton:!0,children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(ht,{className:"w-5 h-5 text-[#38bdac]"}),"编辑章节名称"]})}),H&&e.jsx("div",{className:"space-y-4 py-4",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"章节名称(如:第8章|底层结构)"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:H.title,onChange:F=>oe({...H,title:F.target.value}),placeholder:"输入章节名称"})]})}),e.jsxs(Dt,{children:[e.jsx(X,{variant:"outline",onClick:()=>oe(null),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),e.jsx(X,{onClick:Os,disabled:ve||!((Jn=H==null?void 0:H.title)!=null&&Jn.trim()),className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:ve?e.jsxs(e.Fragment,{children:[e.jsx($e,{className:"w-4 h-4 mr-2 animate-spin"}),"保存中..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),"保存"]})})]})]})}),e.jsx(Ct,{open:A,onOpenChange:F=>{var ie;if(O(F),F&&Bt.length>0){const Ce=Bt[0];J(Ce.id),de(((ie=Ce.chapters[0])==null?void 0:ie.id)??"")}},children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",showCloseButton:!0,children:[e.jsx(kt,{children:e.jsx(Et,{className:"text-white",children:"批量移动至指定目录"})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("p",{className:"text-gray-400 text-sm",children:["已选 ",e.jsx("span",{className:"text-[#38bdac] font-medium",children:ce.length})," 节,请选择目标篇与章。"]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"目标篇"}),e.jsxs(kl,{value:L,onValueChange:F=>{var Ce;J(F);const ie=Bt.find(Pe=>Pe.id===F);de(((Ce=ie==null?void 0:ie.chapters[0])==null?void 0:Ce.id)??"")},children:[e.jsx(Ca,{className:"bg-[#0a1628] border-gray-700 text-white",children:e.jsx(El,{placeholder:"选择篇"})}),e.jsx(ka,{className:"bg-[#0f2137] border-gray-700",children:Bt.map(F=>e.jsx(lr,{value:F.id,className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:F.title},F.id))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"目标章"}),e.jsxs(kl,{value:G,onValueChange:de,children:[e.jsx(Ca,{className:"bg-[#0a1628] border-gray-700 text-white",children:e.jsx(El,{placeholder:"选择章"})}),e.jsx(ka,{className:"bg-[#0f2137] border-gray-700",children:(((ts=Bt.find(F=>F.id===L))==null?void 0:ts.chapters)??[]).map(F=>e.jsx(lr,{value:F.id,className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:F.title},F.id))})]})]})]}),e.jsxs(Dt,{children:[e.jsx(X,{variant:"outline",onClick:()=>O(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),e.jsx(X,{onClick:Qn,disabled:Y||ce.length===0,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:Y?e.jsxs(e.Fragment,{children:[e.jsx($e,{className:"w-4 h-4 mr-2 animate-spin"}),"移动中..."]}):"确认移动"})]})]})}),e.jsx(Ct,{open:!!Ve,onOpenChange:F=>!F&&We(null),children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-3xl max-h-[85vh] overflow-hidden flex flex-col",showCloseButton:!0,children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white",children:["付款记录 — ",(Ve==null?void 0:Ve.section.title)??""]})}),e.jsx("div",{className:"flex-1 overflow-y-auto py-2",children:Ye?e.jsxs("div",{className:"flex items-center justify-center py-8",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):Ve&&Ve.orders.length===0?e.jsx("p",{className:"text-gray-500 text-center py-6",children:"暂无付款记录"}):Ve?e.jsxs("table",{className:"w-full text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gray-700 text-left text-gray-400",children:[e.jsx("th",{className:"py-2 pr-2",children:"订单号"}),e.jsx("th",{className:"py-2 pr-2",children:"用户ID"}),e.jsx("th",{className:"py-2 pr-2",children:"金额"}),e.jsx("th",{className:"py-2 pr-2",children:"状态"}),e.jsx("th",{className:"py-2 pr-2",children:"支付时间"})]})}),e.jsx("tbody",{children:Ve.orders.map(F=>e.jsxs("tr",{className:"border-b border-gray-700/50",children:[e.jsx("td",{className:"py-2 pr-2 text-gray-300",children:F.orderSn??"-"}),e.jsx("td",{className:"py-2 pr-2 text-gray-300",children:F.userId??F.openId??"-"}),e.jsxs("td",{className:"py-2 pr-2 text-gray-300",children:["¥",F.amount??0]}),e.jsx("td",{className:"py-2 pr-2 text-gray-300",children:F.status??"-"}),e.jsx("td",{className:"py-2 pr-2 text-gray-500",children:F.payTime??F.createdAt??"-"})]},F.id??F.orderSn??""))})]}):null})]})}),e.jsx(Ct,{open:ze,onOpenChange:he,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",showCloseButton:!0,children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(kd,{className:"w-5 h-5 text-amber-400"}),"文章排名算法"]})}),e.jsxs("div",{className:"space-y-4 py-2",children:[e.jsx("p",{className:"text-sm text-gray-400",children:"热度积分 = 阅读权重×阅读排名分 + 新度权重×新度排名分 + 付款权重×付款排名分(三权重之和须为 1)"}),es?e.jsx("p",{className:"text-gray-500",children:"加载中..."}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(te,{className:"text-gray-400 text-xs",children:"阅读权重"}),e.jsx(le,{type:"number",step:"0.1",min:"0",max:"1",className:"bg-[#0a1628] border-gray-700 text-white",value:xe.readWeight,onChange:F=>ft(ie=>({...ie,readWeight:Math.max(0,Math.min(1,parseFloat(F.target.value)||0))}))})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(te,{className:"text-gray-400 text-xs",children:"新度权重"}),e.jsx(le,{type:"number",step:"0.1",min:"0",max:"1",className:"bg-[#0a1628] border-gray-700 text-white",value:xe.recencyWeight,onChange:F=>ft(ie=>({...ie,recencyWeight:Math.max(0,Math.min(1,parseFloat(F.target.value)||0))}))})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(te,{className:"text-gray-400 text-xs",children:"付款权重"}),e.jsx(le,{type:"number",step:"0.1",min:"0",max:"1",className:"bg-[#0a1628] border-gray-700 text-white",value:xe.payWeight,onChange:F=>ft(ie=>({...ie,payWeight:Math.max(0,Math.min(1,parseFloat(F.target.value)||0))}))})]})]}),e.jsxs("p",{className:"text-xs text-gray-500",children:["当前之和: ",(xe.readWeight+xe.recencyWeight+xe.payWeight).toFixed(1)]}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-xs text-gray-400",children:[e.jsx("li",{children:"阅读量前 20 名:得分 20~1"}),e.jsx("li",{children:"最近更新前 30 篇:得分 30~1"}),e.jsx("li",{children:"付款数前 20 名:得分 20~1"})]}),e.jsx(X,{onClick:Kn,disabled:jn||Math.abs(xe.readWeight+xe.recencyWeight+xe.payWeight-1)>.001,className:"w-full bg-amber-500 hover:bg-amber-600 text-white",children:jn?"保存中...":"保存权重"})]})]})]})}),e.jsx(Ct,{open:Q,onOpenChange:se,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",showCloseButton:!0,children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(Rt,{className:"w-5 h-5 text-amber-400"}),"新建篇"]})}),e.jsx("div",{className:"space-y-4 py-4",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"篇名(如:第六篇|真实的社会)"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:Se,onChange:F=>D(F.target.value),placeholder:"输入篇名"})]})}),e.jsxs(Dt,{children:[e.jsx(X,{variant:"outline",onClick:()=>{se(!1),D("")},className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),e.jsx(X,{onClick:Yn,disabled:fe||!Se.trim(),className:"bg-amber-500 hover:bg-amber-600 text-white",children:fe?e.jsxs(e.Fragment,{children:[e.jsx($e,{className:"w-4 h-4 mr-2 animate-spin"}),"创建中..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"}),"创建篇"]})})]})]})}),e.jsx(Ct,{open:!!m,onOpenChange:()=>f(null),children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-4xl max-h-[90vh] flex flex-col p-0 gap-0",showCloseButton:!0,children:[e.jsx(kt,{className:"shrink-0 px-6 pt-6 pb-2",children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(ht,{className:"w-5 h-5 text-[#38bdac]"}),"编辑章节"]})}),m&&e.jsxs("div",{className:"flex-1 overflow-y-auto min-h-0 px-6 space-y-4 py-4",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"章节ID"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:m.id,disabled:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"价格 (元)"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:m.isFree?0:m.price,onChange:F=>f({...m,price:Number(F.target.value),isFree:Number(F.target.value)===0}),disabled:m.isFree})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"免费章节(唯一入口,小程序以 is_free 或 price=0 为准)"}),e.jsx("div",{className:"flex items-center h-10",children:e.jsxs("label",{className:"flex items-center cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:m.isFree||m.price===0,onChange:F=>f({...m,isFree:F.target.checked,price:F.target.checked?0:1}),className:"w-5 h-5 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"}),e.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"设为免费"})]})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"最新新增"}),e.jsx("div",{className:"flex items-center h-10",children:e.jsxs("label",{className:"flex items-center cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:m.isNew??!1,onChange:F=>f({...m,isNew:F.target.checked}),className:"w-5 h-5 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"}),e.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"标记 NEW"})]})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"章节标题"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:m.title,onChange:F=>f({...m,title:F.target.value})})]}),m.filePath&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"文件路径"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-gray-400 text-sm",value:m.filePath,disabled:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(te,{className:"text-gray-300",children:"内容 (Markdown格式)"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("input",{ref:V,type:"file",accept:"image/*",onChange:Sn,className:"hidden"}),e.jsxs(X,{variant:"outline",size:"sm",onClick:()=>{var F;return(F=V.current)==null?void 0:F.click()},disabled:I,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[I?e.jsx($e,{className:"w-4 h-4 mr-1 animate-spin"}):e.jsx(Gx,{className:"w-4 h-4 mr-1"}),"上传图片"]})]})]}),p?e.jsxs("div",{className:"bg-[#0a1628] border border-gray-700 rounded-md min-h-[400px] flex items-center justify-center",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):e.jsx(un,{className:"bg-[#0a1628] border-gray-700 text-white min-h-[400px] font-mono text-sm placeholder:text-gray-500",placeholder:"此处输入章节内容,支持Markdown格式...",value:m.content,onChange:F=>f({...m,content:F.target.value})})]})]}),e.jsxs(Dt,{className:"shrink-0 px-6 py-4 border-t border-gray-700/50",children:[e.jsxs(X,{variant:"outline",onClick:()=>f(null),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx(ms,{className:"w-4 h-4 mr-2"}),"取消"]}),e.jsx(X,{onClick:Nn,disabled:E,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:E?e.jsxs(e.Fragment,{children:[e.jsx($e,{className:"w-4 h-4 mr-2 animate-spin"}),"保存中..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),"保存修改"]})})]})]})}),e.jsxs($l,{defaultValue:"chapters",className:"space-y-6",children:[e.jsxs($a,{className:"bg-[#0f2137] border border-gray-700/50 p-1",children:[e.jsxs(Lt,{value:"chapters",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400",children:[e.jsx(qs,{className:"w-4 h-4 mr-2"}),"章节管理"]}),e.jsxs(Lt,{value:"search",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400",children:[e.jsx(cn,{className:"w-4 h-4 mr-2"}),"内容搜索"]}),e.jsxs(Lt,{value:"hooks",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400",children:[e.jsx(kd,{className:"w-4 h-4 mr-2"}),"钩子配置"]})]}),e.jsxs(Ot,{value:"chapters",className:"space-y-4",children:[e.jsxs("div",{className:"rounded-2xl border border-gray-700/50 bg-[#1C1C1E] p-4 flex items-center justify-between shadow-sm",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-[#38bdac] flex items-center justify-center text-white shadow-lg shadow-[#38bdac]/20 shrink-0",children:e.jsx(qs,{className:"w-6 h-6"})}),e.jsxs("div",{children:[e.jsx("h2",{className:"font-bold text-base text-white leading-tight mb-1",children:"一场SOUL的创业实验场"}),e.jsx("p",{className:"text-xs text-gray-500",children:"来自Soul派对房的真实商业故事"})]})]}),e.jsxs("div",{className:"text-center shrink-0",children:[e.jsx("span",{className:"block text-2xl font-bold text-[#38bdac]",children:_r}),e.jsx("span",{className:"text-xs text-gray-500",children:"章节"})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(X,{onClick:()=>y(!0),className:"flex-1 min-w-[120px] bg-[#38bdac]/10 hover:bg-[#38bdac]/20 text-[#38bdac] border border-[#38bdac]/30",children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"}),"新建章节"]}),e.jsxs(X,{onClick:()=>se(!0),className:"flex-1 min-w-[120px] bg-amber-500/10 hover:bg-amber-500/20 text-amber-400 border border-amber-500/30",children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"}),"新建篇"]}),e.jsxs(X,{variant:"outline",onClick:()=>O(!0),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:["批量移动(已选 ",ce.length," 节)"]})]}),l?e.jsxs("div",{className:"flex items-center justify-center py-12",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):e.jsx(fC,{parts:Bt,expandedParts:c,onTogglePart:gs,onReorder:bn,onReadSection:ks,onDeleteSection:mr,onAddSectionInPart:ys,onAddChapterInPart:wn,onDeleteChapter:Fs,onEditPart:Ds,onDeletePart:Xn,onEditChapter:Es,selectedSectionIds:ce,onToggleSectionSelect:qn,onShowSectionOrders:Gn})]}),e.jsx(Ot,{value:"search",className:"space-y-4",children:e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsx(Ke,{children:e.jsx(Ge,{className:"text-white",children:"内容搜索"})}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500 flex-1",placeholder:"搜索标题或内容...",value:T,onChange:F=>w(F.target.value),onKeyDown:F=>F.key==="Enter"&&Cn()}),e.jsx(X,{onClick:Cn,disabled:C||!T.trim(),className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:C?e.jsx($e,{className:"w-4 h-4 animate-spin"}):e.jsx(cn,{className:"w-4 h-4"})})]}),b.length>0&&e.jsxs("div",{className:"space-y-2 mt-4",children:[e.jsxs("p",{className:"text-gray-400 text-sm",children:["找到 ",b.length," 个结果"]}),b.map(F=>e.jsxs("div",{className:"p-3 rounded-lg bg-[#162840] hover:bg-[#1a3050] cursor-pointer transition-colors",onClick:()=>ks({id:F.id,title:F.title,price:F.price??1,filePath:""}),children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-[#38bdac] font-mono text-xs mr-2",children:F.id}),e.jsx("span",{className:"text-white",children:F.title})]}),e.jsx(Le,{variant:"outline",className:"text-gray-400 border-gray-600 text-xs",children:F.matchType==="title"?"标题匹配":"内容匹配"})]}),F.snippet&&e.jsx("p",{className:"text-gray-500 text-xs mt-2 line-clamp-2",children:F.snippet}),(F.partTitle||F.chapterTitle)&&e.jsxs("p",{className:"text-gray-600 text-xs mt-1",children:[F.partTitle," · ",F.chapterTitle]})]},F.id))]})]})]})}),e.jsx(Ot,{value:"hooks",className:"space-y-4",children:e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsx(Ke,{children:e.jsx(Ge,{className:"text-white",children:"引流钩子配置"})}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"grid w-full max-w-sm items-center gap-1.5",children:[e.jsx(te,{htmlFor:"hook-chapter",className:"text-gray-300",children:"触发章节"}),e.jsxs(kl,{defaultValue:"3",children:[e.jsx(Ca,{id:"hook-chapter",className:"bg-[#0a1628] border-gray-700 text-white",children:e.jsx(El,{placeholder:"选择章节"})}),e.jsxs(ka,{className:"bg-[#0f2137] border-gray-700",children:[e.jsx(lr,{value:"1",className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:"第一章"}),e.jsx(lr,{value:"2",className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:"第二章"}),e.jsx(lr,{value:"3",className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:"第三章 (默认)"})]})]})]}),e.jsxs("div",{className:"grid w-full gap-1.5",children:[e.jsx(te,{htmlFor:"message",className:"text-gray-300",children:"引流文案"}),e.jsx(un,{placeholder:"输入引导用户加群的文案...",id:"message",className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",defaultValue:"阅读更多精彩内容,请加入Soul创业实验派对群..."})]}),e.jsx(X,{className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:"保存配置"})]})]})})]})]})}const kr={name:"卡若",avatar:"K",avatarImg:"",title:"Soul派对房主理人 · 私域运营专家",bio:'每天早上6点到9点,在Soul派对房分享真实的创业故事。专注私域运营与项目变现,用"云阿米巴"模式帮助创业者构建可持续的商业体系。',stats:[{label:"商业案例",value:"62"},{label:"连续直播",value:"365天"},{label:"派对分享",value:"1000+"}],highlights:["5年私域运营经验","帮助100+品牌从0到1增长","连续创业者,擅长商业模式设计"]};function jx(r){return Array.isArray(r)?r.map(a=>a&&typeof a=="object"&&"label"in a&&"value"in a?{label:String(a.label),value:String(a.value)}:{label:"",value:""}).filter(a=>a.label||a.value):kr.stats}function bx(r){return Array.isArray(r)?r.map(a=>typeof a=="string"?a:String(a??"")).filter(Boolean):kr.highlights}function gC(){const[r,a]=h.useState(kr),[l,o]=h.useState(!0),[c,u]=h.useState(!1),[m,f]=h.useState(!1),g=h.useRef(null);h.useEffect(()=>{Be("/api/admin/author-settings").then(N=>{const C=N==null?void 0:N.data;C&&typeof C=="object"&&a({name:String(C.name??kr.name),avatar:String(C.avatar??kr.avatar),avatarImg:String(C.avatarImg??""),title:String(C.title??kr.title),bio:String(C.bio??kr.bio),stats:jx(C.stats).length?jx(C.stats):kr.stats,highlights:bx(C.highlights).length?bx(C.highlights):kr.highlights})}).catch(console.error).finally(()=>o(!1))},[]);const y=async()=>{u(!0);try{const N={name:r.name,avatar:r.avatar||"K",avatarImg:r.avatarImg,title:r.title,bio:r.bio,stats:r.stats.filter(I=>I.label||I.value),highlights:r.highlights.filter(Boolean)},C=await mt("/api/admin/author-settings",N);if(!C||C.success===!1){alert("保存失败: "+(C&&typeof C=="object"&&"error"in C?C.error:""));return}u(!1);const j=document.createElement("div");j.className="fixed top-4 right-4 z-50 px-4 py-2 rounded-lg bg-[#38bdac] text-white text-sm shadow-lg",j.textContent="作者设置已保存",document.body.appendChild(j),setTimeout(()=>j.remove(),2e3)}catch(N){console.error(N),alert("保存失败: "+(N instanceof Error?N.message:String(N)))}finally{u(!1)}},p=async N=>{var j;const C=(j=N.target.files)==null?void 0:j[0];if(C){f(!0);try{const I=new FormData;I.append("file",C),I.append("folder","avatars");const U=bu(),V={};U&&(V.Authorization=`Bearer ${U}`);const k=await(await fetch(Ma("/api/upload"),{method:"POST",body:I,credentials:"include",headers:V})).json();k!=null&&k.success&&(k!=null&&k.url)?a(R=>({...R,avatarImg:k.url})):alert("上传失败: "+((k==null?void 0:k.error)||"未知错误"))}catch(I){console.error(I),alert("上传失败")}finally{f(!1),g.current&&(g.current.value="")}}},v=()=>a(N=>({...N,stats:[...N.stats,{label:"",value:""}]})),E=N=>a(C=>({...C,stats:C.stats.filter((j,I)=>I!==N)})),P=(N,C,j)=>a(I=>({...I,stats:I.stats.map((U,V)=>V===N?{...U,[C]:j}:U)})),T=()=>a(N=>({...N,highlights:[...N.highlights,""]})),w=N=>a(C=>({...C,highlights:C.highlights.filter((j,I)=>I!==N)})),b=(N,C)=>a(j=>({...j,highlights:j.highlights.map((I,U)=>U===N?C:I)}));return l?e.jsx("div",{className:"p-8 text-gray-500",children:"加载中..."}):e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-8",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[e.jsx(Ta,{className:"w-5 h-5 text-[#38bdac]"}),"作者详情"]}),e.jsx("p",{className:"text-gray-400 mt-1",children:"配置小程序「关于作者」页展示的作者信息,包括头像、简介、统计数据与亮点标签。"})]}),e.jsxs(X,{onClick:y,disabled:c||l,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),c?"保存中...":"保存"]})]}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"flex items-center gap-2 text-white",children:[e.jsx(Ta,{className:"w-4 h-4 text-[#38bdac]"}),"基本信息"]}),e.jsx(jt,{className:"text-gray-400",children:"作者姓名、头像、头衔与个人简介,将展示在「关于作者」页顶部。"})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"姓名"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:r.name,onChange:N=>a(C=>({...C,name:N.target.value})),placeholder:"卡若"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"首字母占位(无头像时显示)"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white w-20",value:r.avatar,onChange:N=>a(C=>({...C,avatar:N.target.value.slice(0,1)||"K"})),placeholder:"K"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{className:"text-gray-300 flex items-center gap-2",children:[e.jsx(Gx,{className:"w-3 h-3 text-[#38bdac]"}),"头像图片"]}),e.jsxs("div",{className:"flex gap-3 items-center",children:[e.jsx(le,{className:"flex-1 bg-[#0a1628] border-gray-700 text-white",value:r.avatarImg,onChange:N=>a(C=>({...C,avatarImg:N.target.value})),placeholder:"上传或粘贴 URL,如 /uploads/avatars/xxx.png"}),e.jsx("input",{ref:g,type:"file",accept:"image/*",className:"hidden",onChange:p}),e.jsxs(X,{type:"button",variant:"outline",size:"sm",className:"border-gray-600 text-gray-400 shrink-0",disabled:m,onClick:()=>{var N;return(N=g.current)==null?void 0:N.click()},children:[e.jsx(uo,{className:"w-4 h-4 mr-2"}),m?"上传中...":"上传"]})]}),r.avatarImg&&e.jsx("div",{className:"mt-2",children:e.jsx("img",{src:r.avatarImg.startsWith("http")?r.avatarImg:Ma(r.avatarImg),alt:"头像预览",className:"w-20 h-20 rounded-full object-cover border border-gray-600"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"头衔"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:r.title,onChange:N=>a(C=>({...C,title:N.target.value})),placeholder:"Soul派对房主理人 · 私域运营专家"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"个人简介"}),e.jsx(un,{className:"bg-[#0a1628] border-gray-700 text-white min-h-[120px]",value:r.bio,onChange:N=>a(C=>({...C,bio:N.target.value})),placeholder:"每天早上6点到9点..."})]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsx(Ge,{className:"text-white",children:"统计数据"}),e.jsx(jt,{className:"text-gray-400",children:"展示在作者卡片中的数字指标,如「商业案例 62」「连续直播 365天」。第一个「商业案例」的值可由书籍统计自动更新。"})]}),e.jsxs(we,{className:"space-y-3",children:[r.stats.map((N,C)=>e.jsxs("div",{className:"flex gap-3 items-center",children:[e.jsx(le,{className:"flex-1 bg-[#0a1628] border-gray-700 text-white",value:N.label,onChange:j=>P(C,"label",j.target.value),placeholder:"标签"}),e.jsx(le,{className:"flex-1 bg-[#0a1628] border-gray-700 text-white",value:N.value,onChange:j=>P(C,"value",j.target.value),placeholder:"数值"}),e.jsx(X,{variant:"ghost",size:"icon",className:"text-gray-400 hover:text-red-400",onClick:()=>E(C),children:e.jsx(ms,{className:"w-4 h-4"})})]},C)),e.jsxs(X,{variant:"outline",size:"sm",onClick:v,className:"border-gray-600 text-gray-400",children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"}),"添加统计项"]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsx(Ge,{className:"text-white",children:"亮点标签"}),e.jsx(jt,{className:"text-gray-400",children:"作者优势或成就的简短描述,以标签形式展示。"})]}),e.jsxs(we,{className:"space-y-3",children:[r.highlights.map((N,C)=>e.jsxs("div",{className:"flex gap-3 items-center",children:[e.jsx(le,{className:"flex-1 bg-[#0a1628] border-gray-700 text-white",value:N,onChange:j=>b(C,j.target.value),placeholder:"5年私域运营经验"}),e.jsx(X,{variant:"ghost",size:"icon",className:"text-gray-400 hover:text-red-400",onClick:()=>w(C),children:e.jsx(ms,{className:"w-4 h-4"})})]},C)),e.jsxs(X,{variant:"outline",size:"sm",onClick:T,className:"border-gray-600 text-gray-400",children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"}),"添加亮点"]})]})]})]})]})}function yC(){const[r,a]=h.useState([]),[l,o]=h.useState(0),[c,u]=h.useState(1),[m]=h.useState(10),[f,g]=h.useState(0),[y,p]=h.useState(""),v=Iu(y,300),[E,P]=h.useState(!0),[T,w]=h.useState(null),[b,N]=h.useState(!1),[C,j]=h.useState(null),[I,U]=h.useState(""),[V,_]=h.useState(""),[k,R]=h.useState(""),[Z,ne]=h.useState("admin"),[ae,Q]=h.useState("active"),[se,H]=h.useState(!1);async function oe(){var O;P(!0),w(null);try{const L=new URLSearchParams({page:String(c),pageSize:String(m)});v.trim()&&L.set("search",v.trim());const J=await Be(`/api/admin/users?${L}`);J!=null&&J.success?(a(J.records||[]),o(J.total??0),g(J.totalPages??0)):w(J.error||"加载失败")}catch(L){const J=L;w(J.status===403?"无权限访问":((O=J==null?void 0:J.data)==null?void 0:O.error)||"加载失败"),a([])}finally{P(!1)}}h.useEffect(()=>{oe()},[c,m,v]);const ve=()=>{j(null),U(""),_(""),R(""),ne("admin"),Q("active"),N(!0)},B=O=>{j(O),U(O.username),_(""),R(O.name||""),ne(O.role==="super_admin"?"super_admin":"admin"),Q(O.status==="disabled"?"disabled":"active"),N(!0)},ce=async()=>{var O;if(!I.trim()){w("用户名不能为空");return}if(!C&&!V){w("新建时密码必填,至少 6 位");return}if(V&&V.length<6){w("密码至少 6 位");return}w(null),H(!0);try{if(C){const L=await vt("/api/admin/users",{id:C.id,password:V||void 0,name:k.trim(),role:Z,status:ae});L!=null&&L.success?(N(!1),oe()):w((L==null?void 0:L.error)||"保存失败")}else{const L=await mt("/api/admin/users",{username:I.trim(),password:V,name:k.trim(),role:Z});L!=null&&L.success?(N(!1),oe()):w((L==null?void 0:L.error)||"保存失败")}}catch(L){const J=L;w(((O=J==null?void 0:J.data)==null?void 0:O.error)||"保存失败")}finally{H(!1)}},K=async O=>{var L;if(confirm("确定删除该管理员?"))try{const J=await Pr(`/api/admin/users?id=${O}`);J!=null&&J.success?oe():w((J==null?void 0:J.error)||"删除失败")}catch(J){const G=J;w(((L=G==null?void 0:G.data)==null?void 0:L.error)||"删除失败")}},A=O=>{if(!O)return"-";try{const L=new Date(O);return isNaN(L.getTime())?O:L.toLocaleString("zh-CN")}catch{return O}};return e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-6",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[e.jsx(vu,{className:"w-5 h-5 text-[#38bdac]"}),"管理员用户"]}),e.jsx("p",{className:"text-gray-400 mt-1",children:"后台登录账号管理,仅超级管理员可操作"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(le,{placeholder:"搜索用户名/昵称",value:y,onChange:O=>p(O.target.value),className:"w-48 bg-[#0f2137] border-gray-700 text-white placeholder:text-gray-500"}),e.jsx(X,{variant:"outline",size:"sm",onClick:oe,disabled:E,className:"border-gray-600 text-gray-300",children:e.jsx($e,{className:`w-4 h-4 ${E?"animate-spin":""}`})}),e.jsxs(X,{onClick:ve,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"}),"新增管理员"]})]})]}),T&&e.jsxs("div",{className:"mb-4 p-3 rounded-lg bg-red-500/10 border border-red-500/20 text-red-400 text-sm flex justify-between items-center",children:[e.jsx("span",{children:T}),e.jsx("button",{type:"button",onClick:()=>w(null),className:"text-red-400 hover:text-red-300",children:"×"})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-0",children:E?e.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):e.jsxs(e.Fragment,{children:[e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"ID"}),e.jsx(be,{className:"text-gray-400",children:"用户名"}),e.jsx(be,{className:"text-gray-400",children:"昵称"}),e.jsx(be,{className:"text-gray-400",children:"角色"}),e.jsx(be,{className:"text-gray-400",children:"状态"}),e.jsx(be,{className:"text-gray-400",children:"创建时间"}),e.jsx(be,{className:"text-right text-gray-400",children:"操作"})]})}),e.jsxs(ps,{children:[r.map(O=>e.jsxs(et,{className:"border-gray-700/50",children:[e.jsx(pe,{className:"text-gray-300",children:O.id}),e.jsx(pe,{className:"text-white font-medium",children:O.username}),e.jsx(pe,{className:"text-gray-400",children:O.name||"-"}),e.jsx(pe,{children:e.jsx(Le,{variant:"outline",className:O.role==="super_admin"?"border-amber-500/50 text-amber-400":"border-gray-600 text-gray-400",children:O.role==="super_admin"?"超级管理员":"管理员"})}),e.jsx(pe,{children:e.jsx(Le,{variant:"outline",className:O.status==="active"?"border-[#38bdac]/50 text-[#38bdac]":"border-gray-500 text-gray-500",children:O.status==="active"?"正常":"已禁用"})}),e.jsx(pe,{className:"text-gray-500 text-sm",children:A(O.createdAt)}),e.jsxs(pe,{className:"text-right",children:[e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>B(O),className:"text-gray-400 hover:text-[#38bdac]",children:e.jsx(ht,{className:"w-4 h-4"})}),e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>K(O.id),className:"text-gray-400 hover:text-red-400",children:e.jsx(Ht,{className:"w-4 h-4"})})]})]},O.id)),r.length===0&&!E&&e.jsx(et,{children:e.jsx(pe,{colSpan:7,className:"text-center py-12 text-gray-500",children:T==="无权限访问"?"仅超级管理员可查看":"暂无管理员"})})]})]}),f>1&&e.jsx("div",{className:"p-4 border-t border-gray-700/50",children:e.jsx(Qs,{page:c,pageSize:m,total:l,totalPages:f,onPageChange:u})})]})})}),e.jsx(Ct,{open:b,onOpenChange:N,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-sm",children:[e.jsx(kt,{children:e.jsx(Et,{className:"text-white",children:C?"编辑管理员":"新增管理员"})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"用户名"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"登录用户名",value:I,onChange:O=>U(O.target.value),disabled:!!C}),C&&e.jsx("p",{className:"text-xs text-gray-500",children:"用户名不可修改"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:C?"新密码(留空不改)":"密码"}),e.jsx(le,{type:"password",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:C?"留空表示不修改":"至少 6 位",value:V,onChange:O=>_(O.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"昵称"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"显示名称",value:k,onChange:O=>R(O.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"角色"}),e.jsxs("select",{value:Z,onChange:O=>ne(O.target.value),className:"w-full h-10 px-3 rounded-md bg-[#0a1628] border border-gray-700 text-white",children:[e.jsx("option",{value:"admin",children:"管理员"}),e.jsx("option",{value:"super_admin",children:"超级管理员"})]})]}),C&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"状态"}),e.jsxs("select",{value:ae,onChange:O=>Q(O.target.value),className:"w-full h-10 px-3 rounded-md bg-[#0a1628] border border-gray-700 text-white",children:[e.jsx("option",{value:"active",children:"正常"}),e.jsx("option",{value:"disabled",children:"禁用"})]})]})]}),e.jsxs(Dt,{children:[e.jsxs(X,{variant:"outline",onClick:()=>N(!1),className:"border-gray-600 text-gray-300",children:[e.jsx(ms,{className:"w-4 h-4 mr-2"}),"取消"]}),e.jsxs(X,{onClick:ce,disabled:se,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),se?"保存中...":"保存"]})]})]})})]})}const vC={appId:"wxb8bbb2b10dec74aa",withdrawSubscribeTmplId:"u3MbZGPRkrZIk-I7QdpwzFxnO_CeQPaCWF2FkiIablE",mchId:"1318592501",minWithdraw:10},jC={name:"卡若",startDate:"2025年10月15日",bio:"连续创业者,私域运营专家,每天早上6-9点在Soul派对房分享真实商业故事",liveTime:"06:00-09:00",platform:"Soul派对房",description:"连续创业者,私域运营专家"},bC={sectionPrice:1,baseBookPrice:9.9,distributorShare:90,authorInfo:{...jC}},NC={matchEnabled:!0,referralEnabled:!0,searchEnabled:!0,aboutEnabled:!0},wC=["system","author","admin"];function SC(){const[r,a]=$x(),l=r.get("tab")??"system",o=wC.includes(l)?l:"system",[c,u]=h.useState(bC),[m,f]=h.useState(NC),[g,y]=h.useState(vC),[p,v]=h.useState(!1),[E,P]=h.useState(!0),[T,w]=h.useState(!1),[b,N]=h.useState(""),[C,j]=h.useState(""),[I,U]=h.useState(!1),[V,_]=h.useState(!1),k=(Q,se,H=!1)=>{N(Q),j(se),U(H),w(!0)};h.useEffect(()=>{(async()=>{try{const se=await Be("/api/admin/settings");if(!se||se.success===!1)return;if(se.featureConfig&&Object.keys(se.featureConfig).length&&f(H=>({...H,...se.featureConfig})),se.mpConfig&&typeof se.mpConfig=="object"&&y(H=>({...H,...se.mpConfig})),se.siteSettings&&typeof se.siteSettings=="object"){const H=se.siteSettings;u(oe=>({...oe,...typeof H.sectionPrice=="number"&&{sectionPrice:H.sectionPrice},...typeof H.baseBookPrice=="number"&&{baseBookPrice:H.baseBookPrice},...typeof H.distributorShare=="number"&&{distributorShare:H.distributorShare},...H.authorInfo&&typeof H.authorInfo=="object"&&{authorInfo:{...oe.authorInfo,...H.authorInfo}}}))}}catch(se){console.error("Load settings error:",se)}finally{P(!1)}})()},[]);const R=async(Q,se)=>{_(!0);try{const H=await mt("/api/admin/settings",{featureConfig:Q});if(!H||H.success===!1){se(),k("保存失败",(H==null?void 0:H.error)??"未知错误",!0);return}k("已保存","功能开关已更新,相关入口将随之显示或隐藏。")}catch(H){console.error("Save feature config error:",H),se(),k("保存失败",H instanceof Error?H.message:String(H),!0)}finally{_(!1)}},Z=(Q,se)=>{const H=m,oe={...H,[Q]:se};f(oe),R(oe,()=>f(H))},ne=async()=>{v(!0);try{const Q=await mt("/api/admin/settings",{featureConfig:m,siteSettings:{sectionPrice:c.sectionPrice,baseBookPrice:c.baseBookPrice,distributorShare:c.distributorShare,authorInfo:c.authorInfo},mpConfig:{...g,appId:g.appId||"",withdrawSubscribeTmplId:g.withdrawSubscribeTmplId||"",mchId:g.mchId||"",minWithdraw:typeof g.minWithdraw=="number"?g.minWithdraw:10}});if(!Q||Q.success===!1){k("保存失败",(Q==null?void 0:Q.error)??"未知错误",!0);return}k("已保存","设置已保存成功。")}catch(Q){console.error("Save settings error:",Q),k("保存失败",Q instanceof Error?Q.message:String(Q),!0)}finally{v(!1)}},ae=Q=>{a(Q==="system"?{}:{tab:Q})};return E?e.jsx("div",{className:"p-8 text-gray-500",children:"加载中..."}):e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-white",children:"系统设置"}),e.jsx("p",{className:"text-gray-400 mt-1",children:"配置全站基础参数与开关"})]}),o==="system"&&e.jsxs(X,{onClick:ne,disabled:p,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),p?"保存中...":"保存设置"]})]}),e.jsxs($l,{value:o,onValueChange:ae,className:"w-full",children:[e.jsxs($a,{className:"mb-6 bg-[#0f2137] border border-gray-700/50 p-1",children:[e.jsxs(Lt,{value:"system",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400 data-[state=active]:font-medium",children:[e.jsx($n,{className:"w-4 h-4 mr-2"}),"系统设置"]}),e.jsxs(Lt,{value:"author",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400 data-[state=active]:font-medium",children:[e.jsx(Cd,{className:"w-4 h-4 mr-2"}),"作者详情"]}),e.jsxs(Lt,{value:"admin",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400 data-[state=active]:font-medium",children:[e.jsx(vu,{className:"w-4 h-4 mr-2"}),"管理员"]})]}),e.jsx(Ot,{value:"system",className:"mt-0",children:e.jsxs("div",{className:"space-y-6",children:[e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Cd,{className:"w-5 h-5 text-[#38bdac]"}),"关于作者"]}),e.jsx(jt,{className:"text-gray-400",children:'配置作者信息,将在"关于作者"页面显示'})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{htmlFor:"author-name",className:"text-gray-300 flex items-center gap-1",children:[e.jsx(Cd,{className:"w-3 h-3"}),"主理人名称"]}),e.jsx(le,{id:"author-name",className:"bg-[#0a1628] border-gray-700 text-white",value:c.authorInfo.name??"",onChange:Q=>u(se=>({...se,authorInfo:{...se.authorInfo,name:Q.target.value}}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{htmlFor:"start-date",className:"text-gray-300 flex items-center gap-1",children:[e.jsx(oo,{className:"w-3 h-3"}),"开播日期"]}),e.jsx(le,{id:"start-date",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例如: 2025年10月15日",value:c.authorInfo.startDate??"",onChange:Q=>u(se=>({...se,authorInfo:{...se.authorInfo,startDate:Q.target.value}}))})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{htmlFor:"live-time",className:"text-gray-300 flex items-center gap-1",children:[e.jsx(oo,{className:"w-3 h-3"}),"直播时间"]}),e.jsx(le,{id:"live-time",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例如: 06:00-09:00",value:c.authorInfo.liveTime??"",onChange:Q=>u(se=>({...se,authorInfo:{...se.authorInfo,liveTime:Q.target.value}}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{htmlFor:"platform",className:"text-gray-300 flex items-center gap-1",children:[e.jsx(Yx,{className:"w-3 h-3"}),"直播平台"]}),e.jsx(le,{id:"platform",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例如: Soul派对房",value:c.authorInfo.platform??"",onChange:Q=>u(se=>({...se,authorInfo:{...se.authorInfo,platform:Q.target.value}}))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{htmlFor:"description",className:"text-gray-300 flex items-center gap-1",children:[e.jsx(qs,{className:"w-3 h-3"}),"简介描述"]}),e.jsx(le,{id:"description",className:"bg-[#0a1628] border-gray-700 text-white",value:c.authorInfo.description??"",onChange:Q=>u(se=>({...se,authorInfo:{...se.authorInfo,description:Q.target.value}}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{htmlFor:"bio",className:"text-gray-300",children:"详细介绍"}),e.jsx(un,{id:"bio",className:"bg-[#0a1628] border-gray-700 text-white min-h-[100px]",placeholder:"输入作者详细介绍...",value:c.authorInfo.bio??"",onChange:Q=>u(se=>({...se,authorInfo:{...se.authorInfo,bio:Q.target.value}}))})]}),e.jsxs("div",{className:"mt-4 p-4 rounded-xl bg-[#0a1628] border border-[#38bdac]/30",children:[e.jsx("p",{className:"text-xs text-gray-500 mb-2",children:"预览效果"}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-12 h-12 rounded-full bg-gradient-to-br from-[#00CED1] to-[#20B2AA] flex items-center justify-center text-xl font-bold text-white",children:(c.authorInfo.name??"K").charAt(0)}),e.jsxs("div",{children:[e.jsx("p",{className:"text-white font-semibold",children:c.authorInfo.name}),e.jsx("p",{className:"text-gray-400 text-xs",children:c.authorInfo.description}),e.jsxs("p",{className:"text-[#38bdac] text-xs mt-1",children:["每日 ",c.authorInfo.liveTime," · ",c.authorInfo.platform]})]})]})]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Ml,{className:"w-5 h-5 text-[#38bdac]"}),"价格设置"]}),e.jsx(jt,{className:"text-gray-400",children:"配置书籍和章节的定价"})]}),e.jsx(we,{className:"space-y-4",children:e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"单节价格 (元)"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:c.sectionPrice,onChange:Q=>u(se=>({...se,sectionPrice:Number.parseFloat(Q.target.value)||1}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"整本价格 (元)"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:c.baseBookPrice,onChange:Q=>u(se=>({...se,baseBookPrice:Number.parseFloat(Q.target.value)||9.9}))})]})]})})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Al,{className:"w-5 h-5 text-[#38bdac]"}),"小程序配置"]}),e.jsx(jt,{className:"text-gray-400",children:"订阅消息模板、支付商户号等,小程序从 /api/miniprogram/config 读取(API 地址由 app.js baseUrl 控制)"})]}),e.jsx(we,{className:"space-y-4",children:e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"小程序 AppID"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"wxb8bbb2b10dec74aa",value:g.appId??"",onChange:Q=>y(se=>({...se,appId:Q.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"提现订阅模板 ID"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"用户申请提现时需授权",value:g.withdrawSubscribeTmplId??"",onChange:Q=>y(se=>({...se,withdrawSubscribeTmplId:Q.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"微信支付商户号"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"1318592501",value:g.mchId??"",onChange:Q=>y(se=>({...se,mchId:Q.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"最低提现金额 (元)"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:g.minWithdraw??10,onChange:Q=>y(se=>({...se,minWithdraw:Number.parseFloat(Q.target.value)||10}))})]})]})})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx($n,{className:"w-5 h-5 text-[#38bdac]"}),"功能开关"]}),e.jsx(jt,{className:"text-gray-400",children:"控制各个功能模块的显示/隐藏"})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg bg-[#0a1628] border border-gray-700/50",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Yt,{className:"w-4 h-4 text-[#38bdac]"}),e.jsx(te,{htmlFor:"match-enabled",className:"text-white font-medium cursor-pointer",children:"找伙伴功能"})]}),e.jsx("p",{className:"text-xs text-gray-400 ml-6",children:"控制小程序和Web端的找伙伴功能显示"})]}),e.jsx(ot,{id:"match-enabled",checked:m.matchEnabled,disabled:V,onCheckedChange:Q=>Z("matchEnabled",Q)})]}),e.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg bg-[#0a1628] border border-gray-700/50",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(yb,{className:"w-4 h-4 text-[#38bdac]"}),e.jsx(te,{htmlFor:"referral-enabled",className:"text-white font-medium cursor-pointer",children:"推广功能"})]}),e.jsx("p",{className:"text-xs text-gray-400 ml-6",children:"控制推广中心的显示(我的页面入口)"})]}),e.jsx(ot,{id:"referral-enabled",checked:m.referralEnabled,disabled:V,onCheckedChange:Q=>Z("referralEnabled",Q)})]}),e.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg bg-[#0a1628] border border-gray-700/50",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(qs,{className:"w-4 h-4 text-[#38bdac]"}),e.jsx(te,{htmlFor:"search-enabled",className:"text-white font-medium cursor-pointer",children:"搜索功能"})]}),e.jsx("p",{className:"text-xs text-gray-400 ml-6",children:"控制首页搜索栏的显示"})]}),e.jsx(ot,{id:"search-enabled",checked:m.searchEnabled,disabled:V,onCheckedChange:Q=>Z("searchEnabled",Q)})]}),e.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg bg-[#0a1628] border border-gray-700/50",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx($n,{className:"w-4 h-4 text-[#38bdac]"}),e.jsx(te,{htmlFor:"about-enabled",className:"text-white font-medium cursor-pointer",children:"关于页面"})]}),e.jsx("p",{className:"text-xs text-gray-400 ml-6",children:"控制关于页面的访问"})]}),e.jsx(ot,{id:"about-enabled",checked:m.aboutEnabled,disabled:V,onCheckedChange:Q=>Z("aboutEnabled",Q)})]})]}),e.jsx("div",{className:"p-3 rounded-lg bg-blue-500/10 border border-blue-500/30",children:e.jsx("p",{className:"text-xs text-blue-300",children:"💡 关闭功能后,相关入口会自动隐藏。建议在功能开发完成后再开启。"})})]})]})]})}),e.jsx(Ot,{value:"author",className:"mt-0",children:e.jsx(gC,{})}),e.jsx(Ot,{value:"admin",className:"mt-0",children:e.jsx(yC,{})})]}),e.jsx(Ct,{open:T,onOpenChange:w,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white",showCloseButton:!0,children:[e.jsxs(kt,{children:[e.jsx(Et,{className:I?"text-red-400":"text-[#38bdac]",children:b}),e.jsx(m2,{className:"text-gray-400 whitespace-pre-wrap pt-2",children:C})]}),e.jsx(Dt,{className:"mt-4",children:e.jsx(X,{onClick:()=>w(!1),className:I?"bg-gray-600 hover:bg-gray-500":"bg-[#38bdac] hover:bg-[#2da396]",children:"确定"})})]})})]})}const Nx={wechat:{enabled:!0,qrCode:"/images/wechat-pay.png",account:"卡若",websiteAppId:"",merchantId:"",groupQrCode:"/images/party-group-qr.png"},alipay:{enabled:!0,qrCode:"/images/alipay.png",account:"卡若",partnerId:"",securityKey:""},usdt:{enabled:!1,network:"TRC20",address:"",exchangeRate:7.2},paypal:{enabled:!1,email:"",exchangeRate:7.2}};function CC(){const[r,a]=h.useState(!1),[l,o]=h.useState(Nx),[c,u]=h.useState(""),m=async()=>{a(!0);try{const N=await Be("/api/config");N!=null&&N.paymentMethods&&o({...Nx,...N.paymentMethods})}catch(N){console.error(N)}finally{a(!1)}};h.useEffect(()=>{m()},[]);const f=async()=>{a(!0);try{await mt("/api/db/config",{key:"payment_methods",value:l,description:"支付方式配置"}),alert("配置已保存!")}catch(N){console.error("保存失败:",N),alert("保存失败: "+(N instanceof Error?N.message:String(N)))}finally{a(!1)}},g=(N,C)=>{navigator.clipboard.writeText(N),u(C),setTimeout(()=>u(""),2e3)},y=(N,C)=>{o(j=>({...j,wechat:{...j.wechat,[N]:C}}))},p=(N,C)=>{o(j=>({...j,alipay:{...j.alipay,[N]:C}}))},v=(N,C)=>{o(j=>({...j,usdt:{...j.usdt,[N]:C}}))},E=(N,C)=>{o(j=>({...j,paypal:{...j.paypal,[N]:C}}))},P=l.wechat,T=l.alipay,w=l.usdt,b=l.paypal;return e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-8",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold mb-2 text-white",children:"支付配置"}),e.jsx("p",{className:"text-gray-400",children:"配置微信、支付宝、USDT、PayPal等支付参数"})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsxs(X,{variant:"outline",onClick:m,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${r?"animate-spin":""}`}),"同步配置"]}),e.jsxs(X,{onClick:f,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),"保存配置"]})]})]}),e.jsx("div",{className:"mb-6 bg-[#07C160]/10 border border-[#07C160]/30 rounded-xl p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Vx,{className:"w-5 h-5 text-[#07C160] flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm",children:[e.jsx("p",{className:"font-medium mb-2 text-[#07C160]",children:"如何获取微信群跳转链接?"}),e.jsxs("ol",{className:"text-[#07C160]/80 space-y-1 list-decimal list-inside",children:[e.jsx("li",{children:"打开微信,进入目标微信群"}),e.jsx("li",{children:'点击右上角"..." → "群二维码"'}),e.jsx("li",{children:'点击右上角"..." → "发送到电脑"'}),e.jsx("li",{children:"在电脑上保存二维码图片,上传到图床获取URL"}),e.jsx("li",{children:"或使用草料二维码等工具解析二维码获取链接"})]}),e.jsx("p",{className:"text-[#07C160]/60 mt-2",children:"提示:微信群二维码7天后失效,建议使用活码工具"})]})]})}),e.jsxs($l,{defaultValue:"wechat",className:"space-y-6",children:[e.jsxs($a,{className:"bg-[#0f2137] border border-gray-700/50 p-1 grid grid-cols-4 w-full",children:[e.jsxs(Lt,{value:"wechat",className:"data-[state=active]:bg-[#07C160]/20 data-[state=active]:text-[#07C160] text-gray-400",children:[e.jsx(Al,{className:"w-4 h-4 mr-2"}),"微信"]}),e.jsxs(Lt,{value:"alipay",className:"data-[state=active]:bg-[#1677FF]/20 data-[state=active]:text-[#1677FF] text-gray-400",children:[e.jsx(zf,{className:"w-4 h-4 mr-2"}),"支付宝"]}),e.jsxs(Lt,{value:"usdt",className:"data-[state=active]:bg-[#26A17B]/20 data-[state=active]:text-[#26A17B] text-gray-400",children:[e.jsx(Of,{className:"w-4 h-4 mr-2"}),"USDT"]}),e.jsxs(Lt,{value:"paypal",className:"data-[state=active]:bg-[#003087]/20 data-[state=active]:text-[#169BD7] text-gray-400",children:[e.jsx(Qd,{className:"w-4 h-4 mr-2"}),"PayPal"]})]}),e.jsx(Ot,{value:"wechat",className:"space-y-4",children:e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{className:"flex flex-row items-center justify-between pb-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs(Ge,{className:"text-[#07C160] flex items-center gap-2",children:[e.jsx(Al,{className:"w-5 h-5"}),"微信支付配置"]}),e.jsx(jt,{className:"text-gray-400",children:"配置微信支付参数和跳转链接"})]}),e.jsx(ot,{checked:!!P.enabled,onCheckedChange:N=>y("enabled",N)})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"网站AppID"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white font-mono text-sm",value:String(P.websiteAppId??""),onChange:N=>y("websiteAppId",N.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"商户号"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white font-mono text-sm",value:String(P.merchantId??""),onChange:N=>y("merchantId",N.target.value)})]})]}),e.jsxs("div",{className:"border-t border-gray-700/50 pt-4 space-y-4",children:[e.jsxs("h4",{className:"text-white font-medium flex items-center gap-2",children:[e.jsx(co,{className:"w-4 h-4 text-[#38bdac]"}),"跳转链接配置(核心功能)"]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"微信收款码/支付链接"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",placeholder:"https://收款码图片URL 或 weixin://支付链接",value:String(P.qrCode??""),onChange:N=>y("qrCode",N.target.value)}),e.jsx("p",{className:"text-xs text-gray-500",children:"用户点击微信支付后显示的二维码图片URL"})]}),e.jsxs("div",{className:"space-y-2 bg-[#07C160]/5 p-4 rounded-xl border border-[#07C160]/20",children:[e.jsx(te,{className:"text-[#07C160] font-medium",children:"微信群跳转链接(支付成功后跳转)"}),e.jsx(le,{className:"bg-[#0a1628] border-[#07C160]/30 text-white placeholder:text-gray-500",placeholder:"https://weixin.qq.com/g/... 或微信群二维码图片URL",value:String(P.groupQrCode??""),onChange:N=>y("groupQrCode",N.target.value)}),e.jsx("p",{className:"text-xs text-[#07C160]/70",children:"用户支付成功后将自动跳转到此链接,进入指定微信群"})]})]})]})]})}),e.jsx(Ot,{value:"alipay",className:"space-y-4",children:e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{className:"flex flex-row items-center justify-between pb-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs(Ge,{className:"text-[#1677FF] flex items-center gap-2",children:[e.jsx(zf,{className:"w-5 h-5"}),"支付宝配置"]}),e.jsx(jt,{className:"text-gray-400",children:"已加载真实支付宝参数"})]}),e.jsx(ot,{checked:!!T.enabled,onCheckedChange:N=>p("enabled",N)})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"合作者身份 (PID)"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white font-mono text-sm",value:String(T.partnerId??""),onChange:N=>p("partnerId",N.target.value)}),e.jsx(X,{size:"icon",variant:"outline",className:"border-gray-700 bg-transparent",onClick:()=>g(String(T.partnerId??""),"pid"),children:c==="pid"?e.jsx(wo,{className:"w-4 h-4 text-green-500"}):e.jsx(Hx,{className:"w-4 h-4 text-gray-400"})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"安全校验码 (Key)"}),e.jsx(le,{type:"password",className:"bg-[#0a1628] border-gray-700 text-white font-mono text-sm",value:String(T.securityKey??""),onChange:N=>p("securityKey",N.target.value)})]})]}),e.jsxs("div",{className:"border-t border-gray-700/50 pt-4 space-y-4",children:[e.jsxs("h4",{className:"text-white font-medium flex items-center gap-2",children:[e.jsx(co,{className:"w-4 h-4 text-[#38bdac]"}),"跳转链接配置"]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"支付宝收款码/跳转链接"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",placeholder:"https://qr.alipay.com/... 或收款码图片URL",value:String(T.qrCode??""),onChange:N=>p("qrCode",N.target.value)}),e.jsx("p",{className:"text-xs text-gray-500",children:"用户点击支付宝支付后显示的二维码"})]})]})]})]})}),e.jsx(Ot,{value:"usdt",className:"space-y-4",children:e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{className:"flex flex-row items-center justify-between pb-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs(Ge,{className:"text-[#26A17B] flex items-center gap-2",children:[e.jsx(Of,{className:"w-5 h-5"}),"USDT配置"]}),e.jsx(jt,{className:"text-gray-400",children:"配置加密货币收款地址"})]}),e.jsx(ot,{checked:!!w.enabled,onCheckedChange:N=>v("enabled",N)})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"网络类型"}),e.jsxs("select",{className:"w-full bg-[#0a1628] border border-gray-700 text-white rounded-md p-2",value:String(w.network??"TRC20"),onChange:N=>v("network",N.target.value),children:[e.jsx("option",{value:"TRC20",children:"TRC20 (波场)"}),e.jsx("option",{value:"ERC20",children:"ERC20 (以太坊)"}),e.jsx("option",{value:"BEP20",children:"BEP20 (币安链)"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"收款地址"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white font-mono text-sm",placeholder:"T... (TRC20地址)",value:String(w.address??""),onChange:N=>v("address",N.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"汇率 (1 USD = ? CNY)"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:Number(w.exchangeRate)??7.2,onChange:N=>v("exchangeRate",Number.parseFloat(N.target.value)||7.2)})]})]})]})}),e.jsx(Ot,{value:"paypal",className:"space-y-4",children:e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{className:"flex flex-row items-center justify-between pb-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs(Ge,{className:"text-[#169BD7] flex items-center gap-2",children:[e.jsx(Qd,{className:"w-5 h-5"}),"PayPal配置"]}),e.jsx(jt,{className:"text-gray-400",children:"配置PayPal收款账户"})]}),e.jsx(ot,{checked:!!b.enabled,onCheckedChange:N=>E("enabled",N)})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"PayPal邮箱"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"your@email.com",value:String(b.email??""),onChange:N=>E("email",N.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"汇率 (1 USD = ? CNY)"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:Number(b.exchangeRate)??7.2,onChange:N=>E("exchangeRate",Number(N.target.value)||7.2)})]})]})]})})]})]})}const kC={siteName:"卡若日记",siteTitle:"一场SOUL的创业实验场",siteDescription:"来自Soul派对房的真实商业故事",logo:"/logo.png",favicon:"/favicon.ico",primaryColor:"#00CED1"},EC={home:{enabled:!0,label:"首页"},chapters:{enabled:!0,label:"目录"},match:{enabled:!0,label:"匹配"},my:{enabled:!0,label:"我的"}},PC={homeTitle:"一场SOUL的创业实验场",homeSubtitle:"来自Soul派对房的真实商业故事",chaptersTitle:"我要看",matchTitle:"语音匹配",myTitle:"我的",aboutTitle:"关于作者"};function TC(){const[r,a]=h.useState({siteConfig:{...kC},menuConfig:{...EC},pageConfig:{...PC}}),[l,o]=h.useState(!1),[c,u]=h.useState(!1);h.useEffect(()=>{Be("/api/config").then(p=>{p!=null&&p.siteConfig&&a(v=>({...v,siteConfig:{...v.siteConfig,...p.siteConfig}})),p!=null&&p.menuConfig&&a(v=>({...v,menuConfig:{...v.menuConfig,...p.menuConfig}})),p!=null&&p.pageConfig&&a(v=>({...v,pageConfig:{...v.pageConfig,...p.pageConfig}}))}).catch(console.error)},[]);const m=async()=>{u(!0);try{await mt("/api/db/config",{key:"site_config",value:r.siteConfig,description:"网站基础配置"}),await mt("/api/db/config",{key:"menu_config",value:r.menuConfig,description:"底部菜单配置"}),await mt("/api/db/config",{key:"page_config",value:r.pageConfig,description:"页面标题配置"}),o(!0),setTimeout(()=>o(!1),2e3),alert("配置已保存")}catch(p){console.error(p),alert("保存失败: "+(p instanceof Error?p.message:String(p)))}finally{u(!1)}},f=r.siteConfig,g=r.menuConfig,y=r.pageConfig;return e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-8",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-white",children:"网站配置"}),e.jsx("p",{className:"text-gray-400 mt-1",children:"配置网站名称、图标、菜单和页面标题"})]}),e.jsxs(X,{onClick:m,disabled:c,className:`${l?"bg-green-500":"bg-[#00CED1]"} hover:bg-[#20B2AA] text-white transition-colors`,children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),c?"保存中...":l?"已保存":"保存设置"]})]}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Qd,{className:"w-5 h-5 text-[#00CED1]"}),"网站基础信息"]}),e.jsx(jt,{className:"text-gray-400",children:"配置网站名称、标题和描述"})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{htmlFor:"site-name",className:"text-gray-300",children:"网站名称"}),e.jsx(le,{id:"site-name",className:"bg-[#0a1628] border-gray-700 text-white",value:f.siteName??"",onChange:p=>a(v=>({...v,siteConfig:{...v.siteConfig,siteName:p.target.value}}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{htmlFor:"site-title",className:"text-gray-300",children:"网站标题"}),e.jsx(le,{id:"site-title",className:"bg-[#0a1628] border-gray-700 text-white",value:f.siteTitle??"",onChange:p=>a(v=>({...v,siteConfig:{...v.siteConfig,siteTitle:p.target.value}}))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{htmlFor:"site-desc",className:"text-gray-300",children:"网站描述"}),e.jsx(le,{id:"site-desc",className:"bg-[#0a1628] border-gray-700 text-white",value:f.siteDescription??"",onChange:p=>a(v=>({...v,siteConfig:{...v.siteConfig,siteDescription:p.target.value}}))})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{htmlFor:"logo",className:"text-gray-300",children:"Logo地址"}),e.jsx(le,{id:"logo",className:"bg-[#0a1628] border-gray-700 text-white",value:f.logo??"",onChange:p=>a(v=>({...v,siteConfig:{...v.siteConfig,logo:p.target.value}}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{htmlFor:"favicon",className:"text-gray-300",children:"Favicon地址"}),e.jsx(le,{id:"favicon",className:"bg-[#0a1628] border-gray-700 text-white",value:f.favicon??"",onChange:p=>a(v=>({...v,siteConfig:{...v.siteConfig,favicon:p.target.value}}))})]})]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Gb,{className:"w-5 h-5 text-[#00CED1]"}),"主题颜色"]}),e.jsx(jt,{className:"text-gray-400",children:"配置网站主题色"})]}),e.jsx(we,{children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"space-y-2 flex-1",children:[e.jsx(te,{htmlFor:"primary-color",className:"text-gray-300",children:"主色调"}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(le,{id:"primary-color",type:"color",className:"w-16 h-10 bg-[#0a1628] border-gray-700 cursor-pointer p-1",value:f.primaryColor??"#00CED1",onChange:p=>a(v=>({...v,siteConfig:{...v.siteConfig,primaryColor:p.target.value}}))}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white flex-1",value:f.primaryColor??"#00CED1",onChange:p=>a(v=>({...v,siteConfig:{...v.siteConfig,primaryColor:p.target.value}}))})]})]}),e.jsx("div",{className:"w-24 h-24 rounded-xl flex items-center justify-center text-white font-bold",style:{backgroundColor:f.primaryColor??"#00CED1"},children:"预览"})]})})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Ub,{className:"w-5 h-5 text-[#00CED1]"}),"底部菜单配置"]}),e.jsx(jt,{className:"text-gray-400",children:"控制底部导航栏菜单的显示和名称"})]}),e.jsx(we,{className:"space-y-4",children:Object.entries(g).map(([p,v])=>e.jsxs("div",{className:"flex items-center justify-between p-4 bg-[#0a1628] rounded-lg",children:[e.jsxs("div",{className:"flex items-center gap-4 flex-1",children:[e.jsx(ot,{checked:(v==null?void 0:v.enabled)??!0,onCheckedChange:E=>a(P=>({...P,menuConfig:{...P.menuConfig,[p]:{...v,enabled:E}}}))}),e.jsx("span",{className:"text-gray-300 w-16 capitalize",children:p}),e.jsx(le,{className:"bg-[#0f2137] border-gray-700 text-white max-w-[200px]",value:(v==null?void 0:v.label)??"",onChange:E=>a(P=>({...P,menuConfig:{...P.menuConfig,[p]:{...v,label:E.target.value}}}))})]}),e.jsx("span",{className:`text-sm ${v!=null&&v.enabled?"text-green-400":"text-gray-500"}`,children:v!=null&&v.enabled?"显示":"隐藏"})]},p))})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(xb,{className:"w-5 h-5 text-[#00CED1]"}),"页面标题配置"]}),e.jsx(jt,{className:"text-gray-400",children:"配置各个页面的标题和副标题"})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"首页标题"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:y.homeTitle??"",onChange:p=>a(v=>({...v,pageConfig:{...v.pageConfig,homeTitle:p.target.value}}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"首页副标题"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:y.homeSubtitle??"",onChange:p=>a(v=>({...v,pageConfig:{...v.pageConfig,homeSubtitle:p.target.value}}))})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"目录页标题"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:y.chaptersTitle??"",onChange:p=>a(v=>({...v,pageConfig:{...v.pageConfig,chaptersTitle:p.target.value}}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"匹配页标题"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:y.matchTitle??"",onChange:p=>a(v=>({...v,pageConfig:{...v.pageConfig,matchTitle:p.target.value}}))})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"我的页标题"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:y.myTitle??"",onChange:p=>a(v=>({...v,pageConfig:{...v.pageConfig,myTitle:p.target.value}}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"关于作者标题"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:y.aboutTitle??"",onChange:p=>a(v=>({...v,pageConfig:{...v.pageConfig,aboutTitle:p.target.value}}))})]})]})]})]})]})]})}function RC(){const[r,a]=h.useState(""),[l,o]=h.useState(""),[c,u]=h.useState(""),[m,f]=h.useState({}),g=async()=>{var P,T,w,b;try{const N=await Be("/api/config"),C=(T=(P=N==null?void 0:N.liveQRCodes)==null?void 0:P[0])==null?void 0:T.urls;Array.isArray(C)&&a(C.join(` -`));const j=(b=(w=N==null?void 0:N.paymentMethods)==null?void 0:w.wechat)==null?void 0:b.groupQrCode;j&&o(j),f({paymentMethods:N==null?void 0:N.paymentMethods,liveQRCodes:N==null?void 0:N.liveQRCodes})}catch(N){console.error(N)}};h.useEffect(()=>{g()},[]);const y=(P,T)=>{navigator.clipboard.writeText(P),u(T),setTimeout(()=>u(""),2e3)},p=async()=>{try{const P=r.split(` -`).map(w=>w.trim()).filter(Boolean),T=[...m.liveQRCodes||[]];T[0]?T[0].urls=P:T.push({id:"live-1",name:"微信群活码",urls:P,clickCount:0}),await mt("/api/db/config",{key:"live_qr_codes",value:T,description:"群活码配置"}),alert("群活码配置已保存!"),await g()}catch(P){console.error(P),alert("保存失败: "+(P instanceof Error?P.message:String(P)))}},v=async()=>{var P;try{await mt("/api/db/config",{key:"payment_methods",value:{...m.paymentMethods||{},wechat:{...((P=m.paymentMethods)==null?void 0:P.wechat)||{},groupQrCode:l}},description:"支付方式配置"}),alert("微信群链接已保存!用户支付成功后将自动跳转"),await g()}catch(T){console.error(T),alert("保存失败: "+(T instanceof Error?T.message:String(T)))}},E=()=>{l?window.open(l,"_blank"):alert("请先配置微信群链接")};return e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"mb-8",children:[e.jsx("h2",{className:"text-2xl font-bold text-white",children:"微信群活码管理"}),e.jsx("p",{className:"text-gray-400 mt-1",children:"配置微信群跳转链接,用户支付后自动跳转加群"})]}),e.jsx("div",{className:"mb-6 bg-[#07C160]/10 border border-[#07C160]/30 rounded-xl p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Vx,{className:"w-5 h-5 text-[#07C160] flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm",children:[e.jsx("p",{className:"font-medium mb-2 text-[#07C160]",children:"微信群活码配置指南"}),e.jsxs("div",{className:"text-[#07C160]/80 space-y-2",children:[e.jsx("p",{className:"font-medium",children:"方法一:使用草料活码(推荐)"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 pl-2",children:[e.jsx("li",{children:"访问草料二维码创建活码"}),e.jsx("li",{children:"上传微信群二维码图片,生成永久链接"}),e.jsx("li",{children:"复制生成的短链接填入下方配置"}),e.jsx("li",{children:"群满后可直接在草料后台更换新群码,链接不变"})]}),e.jsx("p",{className:"font-medium mt-3",children:"方法二:直接使用微信群链接"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 pl-2",children:[e.jsx("li",{children:'微信打开目标群 → 右上角"..." → 群二维码'}),e.jsx("li",{children:"长按二维码 → 识别二维码 → 复制链接"})]}),e.jsx("p",{className:"text-[#07C160]/60 mt-2",children:"注意:微信原生群二维码7天后失效,建议使用草料活码"})]})]})]})}),e.jsxs("div",{className:"grid gap-6 md:grid-cols-2",children:[e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl md:col-span-2",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-[#07C160] flex items-center gap-2",children:[e.jsx(Uf,{className:"w-5 h-5"}),"支付成功跳转链接(核心配置)"]}),e.jsx(jt,{className:"text-gray-400",children:"用户支付完成后自动跳转到此链接,进入指定微信群"})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{className:"text-gray-300 flex items-center gap-2",children:[e.jsx(Bf,{className:"w-4 h-4"}),"微信群链接 / 活码链接"]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(le,{placeholder:"https://cli.im/xxxxx 或 https://weixin.qq.com/g/...",className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500 flex-1",value:l,onChange:P=>o(P.target.value)}),e.jsx(X,{variant:"outline",size:"icon",className:"border-gray-700 bg-transparent hover:bg-gray-700/50",onClick:()=>y(l,"group"),children:c==="group"?e.jsx(wo,{className:"w-4 h-4 text-green-500"}):e.jsx(Hx,{className:"w-4 h-4 text-gray-400"})})]}),e.jsxs("p",{className:"text-xs text-gray-500 flex items-center gap-1",children:[e.jsx(co,{className:"w-3 h-3"}),"支持格式:草料短链、微信群链接(https://weixin.qq.com/g/...)、企业微信链接等"]})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsxs(X,{onClick:v,className:"flex-1 bg-[#07C160] hover:bg-[#06AD51] text-white",children:[e.jsx(uo,{className:"w-4 h-4 mr-2"}),"保存配置"]}),e.jsxs(X,{onClick:E,variant:"outline",className:"border-[#07C160] text-[#07C160] hover:bg-[#07C160]/10 bg-transparent",children:[e.jsx(co,{className:"w-4 h-4 mr-2"}),"测试跳转"]})]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl md:col-span-2",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Uf,{className:"w-5 h-5 text-[#38bdac]"}),"多群轮换(高级配置)"]}),e.jsx(jt,{className:"text-gray-400",children:"配置多个群链接,系统自动轮换分配,避免单群满员"})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{className:"text-gray-300 flex items-center gap-2",children:[e.jsx(Bf,{className:"w-4 h-4"}),"多个群链接(每行一个)"]}),e.jsx(un,{placeholder:"https://cli.im/group1\\nhttps://cli.im/group2",className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500 min-h-[120px] font-mono text-sm",value:r,onChange:P=>a(P.target.value)}),e.jsx("p",{className:"text-xs text-gray-500",children:"每行填写一个群链接,系统将按顺序或随机分配"})]}),e.jsxs("div",{className:"flex items-center justify-between p-3 bg-[#0a1628] rounded-lg border border-gray-700/50",children:[e.jsx("span",{className:"text-sm text-gray-400",children:"已配置群数量"}),e.jsxs("span",{className:"font-bold text-[#38bdac]",children:[r.split(` -`).filter(Boolean).length," 个"]})]}),e.jsxs(X,{onClick:p,className:"w-full bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(uo,{className:"w-4 h-4 mr-2"}),"保存多群配置"]})]})]})]}),e.jsxs("div",{className:"mt-6 bg-[#0f2137] rounded-xl p-4 border border-gray-700/50",children:[e.jsx("h4",{className:"text-white font-medium mb-3",children:"常见问题"}),e.jsxs("div",{className:"space-y-3 text-sm",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[#38bdac]",children:"Q: 为什么推荐使用草料活码?"}),e.jsx("p",{className:"text-gray-400",children:"A: 草料活码是永久链接,群满后可直接在后台更换新群码,无需修改网站配置。微信原生群码7天失效。"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[#38bdac]",children:"Q: 支付后没有跳转怎么办?"}),e.jsx("p",{className:"text-gray-400",children:"A: 1) 检查链接是否正确填写 2) 部分浏览器可能拦截弹窗,用户需手动允许 3) 建议使用https开头的链接"})]})]})]})]})}const wx={matchTypes:[{id:"partner",label:"创业合伙",matchLabel:"创业伙伴",icon:"⭐",matchFromDB:!0,showJoinAfterMatch:!1,price:1,enabled:!0},{id:"investor",label:"资源对接",matchLabel:"资源对接",icon:"👥",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0},{id:"mentor",label:"导师顾问",matchLabel:"导师顾问",icon:"❤️",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0},{id:"team",label:"团队招募",matchLabel:"加入项目",icon:"🎮",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}],freeMatchLimit:3,matchPrice:1,settings:{enableFreeMatches:!0,enablePaidMatches:!0,maxMatchesPerDay:10}},IC=["⭐","👥","❤️","🎮","💼","🚀","💡","🎯","🔥","✨"];function _C(){const[r,a]=h.useState(wx),[l,o]=h.useState(!0),[c,u]=h.useState(!1),[m,f]=h.useState(!1),[g,y]=h.useState(null),[p,v]=h.useState({id:"",label:"",matchLabel:"",icon:"⭐",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}),E=async()=>{o(!0);try{const j=await Be("/api/db/config/full?key=match_config"),I=(j==null?void 0:j.data)??(j==null?void 0:j.config);I&&a({...wx,...I})}catch(j){console.error("加载匹配配置失败:",j)}finally{o(!1)}};h.useEffect(()=>{E()},[]);const P=async()=>{u(!0);try{const j=await mt("/api/db/config",{key:"match_config",value:r,description:"匹配功能配置"});j&&j.success!==!1?alert("配置保存成功!"):alert("保存失败: "+(j&&typeof j=="object"&&"error"in j?j.error:"未知错误"))}catch(j){console.error("保存配置失败:",j),alert("保存失败")}finally{u(!1)}},T=j=>{y(j),v({id:j.id,label:j.label,matchLabel:j.matchLabel,icon:j.icon,matchFromDB:j.matchFromDB,showJoinAfterMatch:j.showJoinAfterMatch,price:j.price,enabled:j.enabled}),f(!0)},w=()=>{y(null),v({id:"",label:"",matchLabel:"",icon:"⭐",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}),f(!0)},b=()=>{if(!p.id||!p.label){alert("请填写类型ID和名称");return}const j=[...r.matchTypes];if(g){const I=j.findIndex(U=>U.id===g.id);I!==-1&&(j[I]={...p})}else{if(j.some(I=>I.id===p.id)){alert("类型ID已存在");return}j.push({...p})}a({...r,matchTypes:j}),f(!1)},N=j=>{confirm("确定要删除这个匹配类型吗?")&&a({...r,matchTypes:r.matchTypes.filter(I=>I.id!==j)})},C=j=>{a({...r,matchTypes:r.matchTypes.map(I=>I.id===j?{...I,enabled:!I.enabled}:I)})};return e.jsxs("div",{className:"p-8 w-full space-y-6",children:[e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[e.jsx($n,{className:"w-6 h-6 text-[#38bdac]"}),"匹配功能配置"]}),e.jsx("p",{className:"text-gray-400 mt-1",children:"管理找伙伴功能的匹配类型和价格"})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsxs(X,{variant:"outline",onClick:E,disabled:l,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${l?"animate-spin":""}`}),"刷新"]}),e.jsxs(X,{onClick:P,disabled:c,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),c?"保存中...":"保存配置"]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(an,{className:"w-5 h-5 text-yellow-400"}),"基础设置"]}),e.jsx(jt,{className:"text-gray-400",children:"配置免费匹配次数和付费规则"})]}),e.jsxs(we,{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"每日免费匹配次数"}),e.jsx(le,{type:"number",min:0,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:r.freeMatchLimit,onChange:j=>a({...r,freeMatchLimit:parseInt(j.target.value,10)||0})}),e.jsx("p",{className:"text-xs text-gray-500",children:"用户每天可免费匹配的次数"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"付费匹配价格(元)"}),e.jsx(le,{type:"number",min:.01,step:.01,className:"bg-[#0a1628] border-gray-700 text-white",value:r.matchPrice,onChange:j=>a({...r,matchPrice:parseFloat(j.target.value)||1})}),e.jsx("p",{className:"text-xs text-gray-500",children:"免费次数用完后的单次匹配价格"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"每日最大匹配次数"}),e.jsx(le,{type:"number",min:1,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:r.settings.maxMatchesPerDay,onChange:j=>a({...r,settings:{...r.settings,maxMatchesPerDay:parseInt(j.target.value,10)||10}})}),e.jsx("p",{className:"text-xs text-gray-500",children:"包含免费和付费的总次数"})]})]}),e.jsxs("div",{className:"flex gap-8 pt-4 border-t border-gray-700/50",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ot,{checked:r.settings.enableFreeMatches,onCheckedChange:j=>a({...r,settings:{...r.settings,enableFreeMatches:j}})}),e.jsx(te,{className:"text-gray-300",children:"启用免费匹配"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ot,{checked:r.settings.enablePaidMatches,onCheckedChange:j=>a({...r,settings:{...r.settings,enablePaidMatches:j}})}),e.jsx(te,{className:"text-gray-300",children:"启用付费匹配"})]})]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsxs(Ke,{className:"flex flex-row items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Yt,{className:"w-5 h-5 text-[#38bdac]"}),"匹配类型管理"]}),e.jsx(jt,{className:"text-gray-400",children:"配置不同的匹配类型及其价格"})]}),e.jsxs(X,{onClick:w,size:"sm",className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Rt,{className:"w-4 h-4 mr-1"}),"添加类型"]})]}),e.jsx(we,{children:e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"图标"}),e.jsx(be,{className:"text-gray-400",children:"类型ID"}),e.jsx(be,{className:"text-gray-400",children:"显示名称"}),e.jsx(be,{className:"text-gray-400",children:"匹配标签"}),e.jsx(be,{className:"text-gray-400",children:"价格"}),e.jsx(be,{className:"text-gray-400",children:"数据库匹配"}),e.jsx(be,{className:"text-gray-400",children:"状态"}),e.jsx(be,{className:"text-right text-gray-400",children:"操作"})]})}),e.jsx(ps,{children:r.matchTypes.map(j=>e.jsxs(et,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[e.jsx(pe,{children:e.jsx("span",{className:"text-2xl",children:j.icon})}),e.jsx(pe,{className:"font-mono text-gray-300",children:j.id}),e.jsx(pe,{className:"text-white font-medium",children:j.label}),e.jsx(pe,{className:"text-gray-300",children:j.matchLabel}),e.jsx(pe,{children:e.jsxs(Le,{className:"bg-yellow-500/20 text-yellow-400 hover:bg-yellow-500/20 border-0",children:["¥",j.price]})}),e.jsx(pe,{children:j.matchFromDB?e.jsx(Le,{className:"bg-green-500/20 text-green-400 hover:bg-green-500/20 border-0",children:"是"}):e.jsx(Le,{variant:"outline",className:"text-gray-500 border-gray-600",children:"否"})}),e.jsx(pe,{children:e.jsx(ot,{checked:j.enabled,onCheckedChange:()=>C(j.id)})}),e.jsx(pe,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-1",children:[e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>T(j),className:"text-gray-400 hover:text-[#38bdac] hover:bg-[#38bdac]/10",children:e.jsx(ht,{className:"w-4 h-4"})}),e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>N(j.id),className:"text-red-400 hover:text-red-300 hover:bg-red-500/10",children:e.jsx(Ht,{className:"w-4 h-4"})})]})})]},j.id))})]})})]}),e.jsx(Ct,{open:m,onOpenChange:f,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-lg",showCloseButton:!0,children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[g?e.jsx(ht,{className:"w-5 h-5 text-[#38bdac]"}):e.jsx(Rt,{className:"w-5 h-5 text-[#38bdac]"}),g?"编辑匹配类型":"添加匹配类型"]})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"类型ID(英文)"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: partner",value:p.id,onChange:j=>v({...p,id:j.target.value}),disabled:!!g})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"图标"}),e.jsx("div",{className:"flex gap-1 flex-wrap",children:IC.map(j=>e.jsx("button",{type:"button",className:`w-8 h-8 text-lg rounded ${p.icon===j?"bg-[#38bdac]/30 ring-1 ring-[#38bdac]":"bg-[#0a1628]"}`,onClick:()=>v({...p,icon:j}),children:j},j))})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"显示名称"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: 创业合伙",value:p.label,onChange:j=>v({...p,label:j.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"匹配标签"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: 创业伙伴",value:p.matchLabel,onChange:j=>v({...p,matchLabel:j.target.value})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"单次匹配价格(元)"}),e.jsx(le,{type:"number",min:.01,step:.01,className:"bg-[#0a1628] border-gray-700 text-white",value:p.price,onChange:j=>v({...p,price:parseFloat(j.target.value)||1})})]}),e.jsxs("div",{className:"flex gap-6 pt-2",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ot,{checked:p.matchFromDB,onCheckedChange:j=>v({...p,matchFromDB:j})}),e.jsx(te,{className:"text-gray-300 text-sm",children:"从数据库匹配"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ot,{checked:p.showJoinAfterMatch,onCheckedChange:j=>v({...p,showJoinAfterMatch:j})}),e.jsx(te,{className:"text-gray-300 text-sm",children:"匹配后显示加入"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ot,{checked:p.enabled,onCheckedChange:j=>v({...p,enabled:j})}),e.jsx(te,{className:"text-gray-300 text-sm",children:"启用"})]})]})]}),e.jsxs(Dt,{children:[e.jsx(X,{variant:"outline",onClick:()=>f(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),e.jsxs(X,{onClick:b,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),"保存"]})]})]})})]})}const Sx={partner:"找伙伴",investor:"资源对接",mentor:"导师顾问",team:"团队招募"};function MC(){const[r,a]=h.useState([]),[l,o]=h.useState(0),[c,u]=h.useState(1),[m,f]=h.useState(10),[g,y]=h.useState(""),[p,v]=h.useState(!0),[E,P]=h.useState(null);async function T(){v(!0),P(null);try{const b=new URLSearchParams({page:String(c),pageSize:String(m)});g&&b.set("matchType",g);const N=await Be(`/api/db/match-records?${b}`);N!=null&&N.success?(a(N.records||[]),o(N.total??0)):P("加载匹配记录失败")}catch(b){console.error("加载匹配记录失败",b),P("加载失败,请检查网络后重试")}finally{v(!1)}}h.useEffect(()=>{T()},[c,g]);const w=Math.ceil(l/m)||1;return e.jsxs("div",{className:"p-8 w-full",children:[E&&e.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[e.jsx("span",{children:E}),e.jsx("button",{type:"button",onClick:()=>P(null),className:"hover:text-red-300",children:"×"})]}),e.jsxs("div",{className:"flex justify-between items-center mb-8",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-white",children:"匹配记录"}),e.jsxs("p",{className:"text-gray-400 mt-1",children:["找伙伴匹配统计,共 ",l," 条记录"]})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("select",{value:g,onChange:b=>{y(b.target.value),u(1)},className:"bg-[#0f2137] border border-gray-700 text-white rounded-lg px-3 py-2 text-sm",children:[e.jsx("option",{value:"",children:"全部类型"}),Object.entries(Sx).map(([b,N])=>e.jsx("option",{value:b,children:N},b))]}),e.jsxs("button",{type:"button",onClick:T,disabled:p,className:"flex items-center gap-2 px-4 py-2 rounded-lg border border-gray-600 text-gray-300 hover:bg-gray-700/50 transition-colors disabled:opacity-50",children:[e.jsx($e,{className:`w-4 h-4 ${p?"animate-spin":""}`}),"刷新"]})]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:e.jsx(we,{className:"p-0",children:p?e.jsxs("div",{className:"flex justify-center py-12",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):e.jsxs(e.Fragment,{children:[e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"发起人"}),e.jsx(be,{className:"text-gray-400",children:"匹配到"}),e.jsx(be,{className:"text-gray-400",children:"类型"}),e.jsx(be,{className:"text-gray-400",children:"联系方式"}),e.jsx(be,{className:"text-gray-400",children:"匹配时间"})]})}),e.jsxs(ps,{children:[r.map(b=>e.jsxs(et,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[e.jsx(pe,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"w-9 h-9 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac] flex-shrink-0 overflow-hidden",children:[b.userAvatar?e.jsx("img",{src:b.userAvatar,alt:"",className:"w-full h-full object-cover",onError:N=>{N.currentTarget.style.display="none";const C=N.currentTarget.nextElementSibling;C&&C.classList.remove("hidden")}}):null,e.jsx("span",{className:b.userAvatar?"hidden":"",children:(b.userNickname||b.userId||"?").charAt(0)})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-white",children:b.userNickname||b.userId}),e.jsxs("div",{className:"text-xs text-gray-500 font-mono",children:[b.userId.slice(0,16),"..."]})]})]})}),e.jsx(pe,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"w-9 h-9 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac] flex-shrink-0 overflow-hidden",children:[b.matchedUserAvatar?e.jsx("img",{src:b.matchedUserAvatar,alt:"",className:"w-full h-full object-cover",onError:N=>{N.currentTarget.style.display="none";const C=N.currentTarget.nextElementSibling;C&&C.classList.remove("hidden")}}):null,e.jsx("span",{className:b.matchedUserAvatar?"hidden":"",children:(b.matchedNickname||b.matchedUserId||"?").charAt(0)})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-white",children:b.matchedNickname||b.matchedUserId}),e.jsxs("div",{className:"text-xs text-gray-500 font-mono",children:[b.matchedUserId.slice(0,16),"..."]})]})]})}),e.jsx(pe,{children:e.jsx(Le,{className:"bg-[#38bdac]/20 text-[#38bdac] border-0",children:Sx[b.matchType]||b.matchType})}),e.jsxs(pe,{className:"text-gray-400 text-sm",children:[b.phone&&e.jsxs("div",{children:["📱 ",b.phone]}),b.wechatId&&e.jsxs("div",{children:["💬 ",b.wechatId]}),!b.phone&&!b.wechatId&&"-"]}),e.jsx(pe,{className:"text-gray-400",children:b.createdAt?new Date(b.createdAt).toLocaleString():"-"})]},b.id)),r.length===0&&e.jsx(et,{children:e.jsx(pe,{colSpan:5,className:"text-center py-12 text-gray-500",children:"暂无匹配记录"})})]})]}),e.jsx(Qs,{page:c,totalPages:w,total:l,pageSize:m,onPageChange:u,onPageSizeChange:b=>{f(b),u(1)}})]})})})]})}function AC(){const[r,a]=h.useState([]),[l,o]=h.useState(!0),[c,u]=h.useState(!1),[m,f]=h.useState(null),[g,y]=h.useState(""),[p,v]=h.useState(0),[E,P]=h.useState(!1);async function T(){o(!0);try{const j=await Be("/api/db/vip-roles");j!=null&&j.success&&j.data&&a(j.data)}catch(j){console.error("Load roles error:",j)}finally{o(!1)}}h.useEffect(()=>{T()},[]);const w=()=>{f(null),y(""),v(r.length>0?Math.max(...r.map(j=>j.sort))+1:0),u(!0)},b=j=>{f(j),y(j.name),v(j.sort),u(!0)},N=async()=>{if(!g.trim()){alert("角色名称不能为空");return}P(!0);try{if(m){const j=await vt("/api/db/vip-roles",{id:m.id,name:g.trim(),sort:p});j!=null&&j.success?(u(!1),T()):alert("更新失败: "+(j==null?void 0:j.error))}else{const j=await mt("/api/db/vip-roles",{name:g.trim(),sort:p});j!=null&&j.success?(u(!1),T()):alert("新增失败: "+(j==null?void 0:j.error))}}catch(j){console.error("Save error:",j),alert("保存失败")}finally{P(!1)}},C=async j=>{if(confirm("确定删除该角色?已设置该角色的 VIP 用户将保留角色名称。"))try{const I=await Pr(`/api/db/vip-roles?id=${j}`);I!=null&&I.success?T():alert("删除失败: "+(I==null?void 0:I.error))}catch(I){console.error("Delete error:",I),alert("删除失败")}};return e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-8",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[e.jsx(rn,{className:"w-5 h-5 text-amber-400"}),"VIP 角色管理"]}),e.jsx("p",{className:"text-gray-400 mt-1",children:"超级个体固定角色,在「设置 VIP」时可选择或手动填写"})]}),e.jsxs(X,{onClick:w,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"}),"新增角色"]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-0",children:l?e.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"ID"}),e.jsx(be,{className:"text-gray-400",children:"角色名称"}),e.jsx(be,{className:"text-gray-400",children:"排序"}),e.jsx(be,{className:"text-right text-gray-400",children:"操作"})]})}),e.jsxs(ps,{children:[r.map(j=>e.jsxs(et,{className:"border-gray-700/50",children:[e.jsx(pe,{className:"text-gray-300",children:j.id}),e.jsx(pe,{className:"text-white",children:j.name}),e.jsx(pe,{className:"text-gray-400",children:j.sort}),e.jsxs(pe,{className:"text-right",children:[e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>b(j),className:"text-gray-400 hover:text-[#38bdac]",children:e.jsx(ht,{className:"w-4 h-4"})}),e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>C(j.id),className:"text-gray-400 hover:text-red-400",children:e.jsx(Ht,{className:"w-4 h-4"})})]})]},j.id)),r.length===0&&e.jsx(et,{children:e.jsx(pe,{colSpan:4,className:"text-center py-12 text-gray-500",children:"暂无角色,点击「新增角色」添加"})})]})]})})}),e.jsx(Ct,{open:c,onOpenChange:u,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-sm",children:[e.jsx(kt,{children:e.jsx(Et,{className:"text-white",children:m?"编辑角色":"新增角色"})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"角色名称"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:创始人、投资人",value:g,onChange:j=>y(j.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"排序(下拉展示顺序,越小越前)"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:p,onChange:j=>v(parseInt(j.target.value,10)||0)})]})]}),e.jsxs(Dt,{children:[e.jsxs(X,{variant:"outline",onClick:()=>u(!1),className:"border-gray-600 text-gray-300",children:[e.jsx(ms,{className:"w-4 h-4 mr-2"}),"取消"]}),e.jsxs(X,{onClick:N,disabled:E,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),E?"保存中...":"保存"]})]})]})})]})}function Rg({embedded:r=!1}){const[a,l]=h.useState([]),[o,c]=h.useState(!0),[u,m]=h.useState(!1),[f,g]=h.useState(null),[y,p]=h.useState({name:"",avatar:"",intro:"",tags:"",priceSingle:"",priceHalfYear:"",priceYear:"",quote:"",whyFind:"",offering:"",judgmentStyle:"",sort:0,enabled:!0}),[v,E]=h.useState(!1),[P,T]=h.useState(!1),w=h.useRef(null),b=async k=>{var Z;const R=(Z=k.target.files)==null?void 0:Z[0];if(R){T(!0);try{const ne=new FormData;ne.append("file",R),ne.append("folder","mentors");const ae=bu(),Q={};ae&&(Q.Authorization=`Bearer ${ae}`);const H=await(await fetch(Ma("/api/upload"),{method:"POST",body:ne,credentials:"include",headers:Q})).json();H!=null&&H.success&&(H!=null&&H.url)?p(oe=>({...oe,avatar:H.url})):alert("上传失败: "+((H==null?void 0:H.error)||"未知错误"))}catch(ne){console.error(ne),alert("上传失败")}finally{T(!1),w.current&&(w.current.value="")}}};async function N(){c(!0);try{const k=await Be("/api/db/mentors");k!=null&&k.success&&k.data&&l(k.data)}catch(k){console.error("Load mentors error:",k)}finally{c(!1)}}h.useEffect(()=>{N()},[]);const C=()=>{p({name:"",avatar:"",intro:"",tags:"",priceSingle:"",priceHalfYear:"",priceYear:"",quote:"",whyFind:"",offering:"",judgmentStyle:"",sort:a.length>0?Math.max(...a.map(k=>k.sort))+1:0,enabled:!0})},j=()=>{g(null),C(),m(!0)},I=k=>{g(k),p({name:k.name,avatar:k.avatar||"",intro:k.intro||"",tags:k.tags||"",priceSingle:k.priceSingle!=null?String(k.priceSingle):"",priceHalfYear:k.priceHalfYear!=null?String(k.priceHalfYear):"",priceYear:k.priceYear!=null?String(k.priceYear):"",quote:k.quote||"",whyFind:k.whyFind||"",offering:k.offering||"",judgmentStyle:k.judgmentStyle||"",sort:k.sort,enabled:k.enabled??!0}),m(!0)},U=async()=>{if(!y.name.trim()){alert("导师姓名不能为空");return}E(!0);try{const k=Z=>Z===""?void 0:parseFloat(Z),R={name:y.name.trim(),avatar:y.avatar.trim()||void 0,intro:y.intro.trim()||void 0,tags:y.tags.trim()||void 0,priceSingle:k(y.priceSingle),priceHalfYear:k(y.priceHalfYear),priceYear:k(y.priceYear),quote:y.quote.trim()||void 0,whyFind:y.whyFind.trim()||void 0,offering:y.offering.trim()||void 0,judgmentStyle:y.judgmentStyle.trim()||void 0,sort:y.sort,enabled:y.enabled};if(f){const Z=await vt("/api/db/mentors",{id:f.id,...R});Z!=null&&Z.success?(m(!1),N()):alert("更新失败: "+(Z==null?void 0:Z.error))}else{const Z=await mt("/api/db/mentors",R);Z!=null&&Z.success?(m(!1),N()):alert("新增失败: "+(Z==null?void 0:Z.error))}}catch(k){console.error("Save error:",k),alert("保存失败")}finally{E(!1)}},V=async k=>{if(confirm("确定删除该导师?"))try{const R=await Pr(`/api/db/mentors?id=${k}`);R!=null&&R.success?N():alert("删除失败: "+(R==null?void 0:R.error))}catch(R){console.error("Delete error:",R),alert("删除失败")}},_=k=>k!=null?`¥${k}`:"-";return e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-8",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[e.jsx(Yt,{className:"w-5 h-5 text-[#38bdac]"}),"导师管理"]}),e.jsx("p",{className:"text-gray-400 mt-1",children:"stitch_soul 导师列表,支持每个导师独立配置单次/半年/年度价格"})]}),e.jsxs(X,{onClick:j,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"}),"新增导师"]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-0",children:o?e.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"ID"}),e.jsx(be,{className:"text-gray-400",children:"姓名"}),e.jsx(be,{className:"text-gray-400",children:"简介"}),e.jsx(be,{className:"text-gray-400",children:"单次"}),e.jsx(be,{className:"text-gray-400",children:"半年"}),e.jsx(be,{className:"text-gray-400",children:"年度"}),e.jsx(be,{className:"text-gray-400",children:"排序"}),e.jsx(be,{className:"text-right text-gray-400",children:"操作"})]})}),e.jsxs(ps,{children:[a.map(k=>e.jsxs(et,{className:"border-gray-700/50",children:[e.jsx(pe,{className:"text-gray-300",children:k.id}),e.jsx(pe,{className:"text-white",children:k.name}),e.jsx(pe,{className:"text-gray-400 max-w-[200px] truncate",children:k.intro||"-"}),e.jsx(pe,{className:"text-gray-400",children:_(k.priceSingle)}),e.jsx(pe,{className:"text-gray-400",children:_(k.priceHalfYear)}),e.jsx(pe,{className:"text-gray-400",children:_(k.priceYear)}),e.jsx(pe,{className:"text-gray-400",children:k.sort}),e.jsxs(pe,{className:"text-right",children:[e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>I(k),className:"text-gray-400 hover:text-[#38bdac]",children:e.jsx(ht,{className:"w-4 h-4"})}),e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>V(k.id),className:"text-gray-400 hover:text-red-400",children:e.jsx(Ht,{className:"w-4 h-4"})})]})]},k.id)),a.length===0&&e.jsx(et,{children:e.jsx(pe,{colSpan:8,className:"text-center py-12 text-gray-500",children:"暂无导师,点击「新增导师」添加"})})]})]})})}),e.jsx(Ct,{open:u,onOpenChange:m,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-lg max-h-[90vh] overflow-y-auto",children:[e.jsx(kt,{children:e.jsx(Et,{className:"text-white",children:f?"编辑导师":"新增导师"})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"姓名 *"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:卡若",value:y.name,onChange:k=>p(R=>({...R,name:k.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"排序"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:y.sort,onChange:k=>p(R=>({...R,sort:parseInt(k.target.value,10)||0}))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"头像"}),e.jsxs("div",{className:"flex gap-3 items-center",children:[e.jsx(le,{className:"flex-1 bg-[#0a1628] border-gray-700 text-white",value:y.avatar,onChange:k=>p(R=>({...R,avatar:k.target.value})),placeholder:"点击上传或粘贴图片地址"}),e.jsx("input",{ref:w,type:"file",accept:"image/*",className:"hidden",onChange:b}),e.jsxs(X,{type:"button",variant:"outline",size:"sm",className:"border-gray-600 text-gray-400 shrink-0",disabled:P,onClick:()=>{var k;return(k=w.current)==null?void 0:k.click()},children:[e.jsx(uo,{className:"w-4 h-4 mr-2"}),P?"上传中...":"上传"]})]}),y.avatar&&e.jsx("div",{className:"mt-2",children:e.jsx("img",{src:y.avatar.startsWith("http")?y.avatar:Ma(y.avatar),alt:"头像预览",className:"w-20 h-20 rounded-full object-cover border border-gray-600"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"简介"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:结构判断型咨询 · Decision > Execution",value:y.intro,onChange:k=>p(R=>({...R,intro:k.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"技能标签(逗号分隔)"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:项目结构判断、风险止损、人×项目匹配",value:y.tags,onChange:k=>p(R=>({...R,tags:k.target.value}))})]}),e.jsxs("div",{className:"border-t border-gray-700 pt-4",children:[e.jsx(te,{className:"text-gray-300 block mb-2",children:"价格配置(每个导师独立)"}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-500 text-xs",children:"单次咨询 ¥"}),e.jsx(le,{type:"number",step:"0.01",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"980",value:y.priceSingle,onChange:k=>p(R=>({...R,priceSingle:k.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-500 text-xs",children:"半年咨询 ¥"}),e.jsx(le,{type:"number",step:"0.01",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"19800",value:y.priceHalfYear,onChange:k=>p(R=>({...R,priceHalfYear:k.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-500 text-xs",children:"年度咨询 ¥"}),e.jsx(le,{type:"number",step:"0.01",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"29800",value:y.priceYear,onChange:k=>p(R=>({...R,priceYear:k.target.value}))})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"引言"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:大多数人失败,不是因为不努力...",value:y.quote,onChange:k=>p(R=>({...R,quote:k.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"为什么找(文本)"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"",value:y.whyFind,onChange:k=>p(R=>({...R,whyFind:k.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"提供什么(文本)"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"",value:y.offering,onChange:k=>p(R=>({...R,offering:k.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"判断风格(逗号分隔)"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:冷静、克制、偏风险视角",value:y.judgmentStyle,onChange:k=>p(R=>({...R,judgmentStyle:k.target.value}))})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("input",{type:"checkbox",id:"enabled",checked:y.enabled,onChange:k=>p(R=>({...R,enabled:k.target.checked})),className:"rounded border-gray-600 bg-[#0a1628]"}),e.jsx(te,{htmlFor:"enabled",className:"text-gray-300 cursor-pointer",children:"上架(小程序可见)"})]})]}),e.jsxs(Dt,{children:[e.jsxs(X,{variant:"outline",onClick:()=>m(!1),className:"border-gray-600 text-gray-300",children:[e.jsx(ms,{className:"w-4 h-4 mr-2"}),"取消"]}),e.jsxs(X,{onClick:U,disabled:v,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),v?"保存中...":"保存"]})]})]})})]})}function DC(){const[r,a]=h.useState([]),[l,o]=h.useState(!0),[c,u]=h.useState("");async function m(){o(!0);try{const y=c?`/api/db/mentor-consultations?status=${c}`:"/api/db/mentor-consultations",p=await Be(y);p!=null&&p.success&&p.data&&a(p.data)}catch(y){console.error("Load consultations error:",y)}finally{o(!1)}}h.useEffect(()=>{m()},[c]);const f={created:"已创建",pending_pay:"待支付",paid:"已支付",completed:"已完成",cancelled:"已取消"},g={single:"单次",half_year:"半年",year:"年度"};return e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-8",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[e.jsx(oo,{className:"w-5 h-5 text-[#38bdac]"}),"导师预约列表"]}),e.jsx("p",{className:"text-gray-400 mt-1",children:"stitch_soul 导师咨询预约记录"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("select",{value:c,onChange:y=>u(y.target.value),className:"bg-[#0f2137] border border-gray-700 rounded-lg px-3 py-2 text-gray-300 text-sm",children:[e.jsx("option",{value:"",children:"全部状态"}),Object.entries(f).map(([y,p])=>e.jsx("option",{value:y,children:p},y))]}),e.jsxs(X,{onClick:m,disabled:l,variant:"outline",className:"border-gray-600 text-gray-300",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${l?"animate-spin":""}`}),"刷新"]})]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-0",children:l?e.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"ID"}),e.jsx(be,{className:"text-gray-400",children:"用户ID"}),e.jsx(be,{className:"text-gray-400",children:"导师ID"}),e.jsx(be,{className:"text-gray-400",children:"类型"}),e.jsx(be,{className:"text-gray-400",children:"金额"}),e.jsx(be,{className:"text-gray-400",children:"状态"}),e.jsx(be,{className:"text-gray-400",children:"创建时间"})]})}),e.jsxs(ps,{children:[r.map(y=>e.jsxs(et,{className:"border-gray-700/50",children:[e.jsx(pe,{className:"text-gray-300",children:y.id}),e.jsx(pe,{className:"text-gray-400",children:y.userId}),e.jsx(pe,{className:"text-gray-400",children:y.mentorId}),e.jsx(pe,{className:"text-gray-400",children:g[y.consultationType]||y.consultationType}),e.jsxs(pe,{className:"text-white",children:["¥",y.amount]}),e.jsx(pe,{className:"text-gray-400",children:f[y.status]||y.status}),e.jsx(pe,{className:"text-gray-500 text-sm",children:y.createdAt})]},y.id)),r.length===0&&e.jsx(et,{children:e.jsx(pe,{colSpan:7,className:"text-center py-12 text-gray-500",children:"暂无预约记录"})})]})]})})})]})}const Tl={poolSource:["vip"],requirePhone:!0,requireNickname:!0,requireAvatar:!1,requireBusiness:!1},Cx={matchTypes:[{id:"partner",label:"找伙伴",matchLabel:"找伙伴",icon:"⭐",matchFromDB:!0,showJoinAfterMatch:!1,price:1,enabled:!0},{id:"investor",label:"资源对接",matchLabel:"资源对接",icon:"👥",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0},{id:"mentor",label:"导师顾问",matchLabel:"导师顾问",icon:"❤️",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0},{id:"team",label:"团队招募",matchLabel:"加入项目",icon:"🎮",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}],freeMatchLimit:3,matchPrice:1,settings:{enableFreeMatches:!0,enablePaidMatches:!0,maxMatchesPerDay:10},poolSettings:Tl},LC=["⭐","👥","❤️","🎮","💼","🚀","💡","🎯","🔥","✨"];function OC(){const[r,a]=h.useState(Cx),[l,o]=h.useState(!0),[c,u]=h.useState(!1),[m,f]=h.useState(!1),[g,y]=h.useState(null),[p,v]=h.useState({id:"",label:"",matchLabel:"",icon:"⭐",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}),[E,P]=h.useState(null),[T,w]=h.useState(!1),b=async()=>{w(!0);try{const k=await Be("/api/db/match-pool-counts");k!=null&&k.success&&k.data&&P(k.data)}catch(k){console.error("加载池子人数失败:",k)}finally{w(!1)}},N=async()=>{o(!0);try{const k=await Be("/api/db/config/full?key=match_config"),R=(k==null?void 0:k.data)??(k==null?void 0:k.config);if(R){let Z=R.poolSettings??Tl;Z.poolSource&&!Array.isArray(Z.poolSource)&&(Z={...Z,poolSource:[Z.poolSource]}),a({...Cx,...R,poolSettings:Z})}}catch(k){console.error("加载匹配配置失败:",k)}finally{o(!1)}};h.useEffect(()=>{N(),b()},[]);const C=async()=>{u(!0);try{const k=await mt("/api/db/config",{key:"match_config",value:r,description:"匹配功能配置"});alert((k==null?void 0:k.success)!==!1?"配置保存成功!":"保存失败: "+((k==null?void 0:k.error)||"未知错误"))}catch(k){console.error(k),alert("保存失败")}finally{u(!1)}},j=k=>{y(k),v({...k}),f(!0)},I=()=>{y(null),v({id:"",label:"",matchLabel:"",icon:"⭐",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}),f(!0)},U=()=>{if(!p.id||!p.label){alert("请填写类型ID和名称");return}const k=[...r.matchTypes];if(g){const R=k.findIndex(Z=>Z.id===g.id);R!==-1&&(k[R]={...p})}else{if(k.some(R=>R.id===p.id)){alert("类型ID已存在");return}k.push({...p})}a({...r,matchTypes:k}),f(!1)},V=k=>{confirm("确定要删除这个匹配类型吗?")&&a({...r,matchTypes:r.matchTypes.filter(R=>R.id!==k)})},_=k=>{a({...r,matchTypes:r.matchTypes.map(R=>R.id===k?{...R,enabled:!R.enabled}:R)})};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex justify-end gap-3",children:[e.jsxs(X,{variant:"outline",onClick:N,disabled:l,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${l?"animate-spin":""}`})," 刷新"]}),e.jsxs(X,{onClick:C,disabled:c,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"})," ",c?"保存中...":"保存配置"]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Kx,{className:"w-5 h-5 text-blue-400"})," 匹配池选择"]}),e.jsx(jt,{className:"text-gray-400",children:"选择匹配的用户池和完善程度要求,只有满足条件的用户才可被匹配到"})]}),e.jsxs(we,{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(te,{className:"text-gray-300",children:"匹配来源池"}),e.jsx("p",{className:"text-gray-500 text-xs",children:"可同时勾选多个池子(取并集匹配)"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3",children:[{value:"vip",label:"超级个体(VIP会员)",desc:"付费 ¥1980 的VIP会员",icon:"👑",countKey:"vip"},{value:"complete",label:"完善资料用户",desc:"符合下方完善度要求的用户",icon:"✅",countKey:"complete"},{value:"all",label:"全部用户",desc:"所有已注册用户",icon:"👥",countKey:"all"}].map(k=>{const R=r.poolSettings??Tl,ne=(Array.isArray(R.poolSource)?R.poolSource:[R.poolSource]).includes(k.value),ae=E==null?void 0:E[k.countKey],Q=()=>{const se=Array.isArray(R.poolSource)?[...R.poolSource]:[R.poolSource],H=ne?se.filter(oe=>oe!==k.value):[...se,k.value];H.length===0&&H.push(k.value),a({...r,poolSettings:{...R,poolSource:H}})};return e.jsxs("button",{type:"button",onClick:Q,className:`p-4 rounded-lg border text-left transition-all ${ne?"border-[#38bdac] bg-[#38bdac]/10":"border-gray-700 bg-[#0a1628] hover:border-gray-600"}`,children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:`w-5 h-5 rounded border-2 flex items-center justify-center text-xs ${ne?"border-[#38bdac] bg-[#38bdac] text-white":"border-gray-600"}`,children:ne&&"✓"}),e.jsx("span",{className:"text-xl",children:k.icon}),e.jsx("span",{className:`text-sm font-medium ${ne?"text-[#38bdac]":"text-gray-300"}`,children:k.label})]}),e.jsxs("span",{className:"text-lg font-bold text-white",children:[T?"...":ae??"-",e.jsx("span",{className:"text-xs text-gray-500 font-normal ml-1",children:"人"})]})]}),e.jsx("p",{className:"text-gray-500 text-xs mt-2",children:k.desc}),e.jsx("a",{href:`/users?pool=${k.value}`,onClick:se=>se.stopPropagation(),className:"text-[#38bdac] text-xs mt-2 inline-block hover:underline",children:"查看用户列表 →"})]},k.value)})})]}),e.jsxs("div",{className:"space-y-3 pt-4 border-t border-gray-700/50",children:[e.jsx(te,{className:"text-gray-300",children:"用户资料完善要求(被匹配用户必须满足以下条件)"}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{key:"requirePhone",label:"有手机号",icon:"📱"},{key:"requireNickname",label:"有昵称",icon:"👤"},{key:"requireAvatar",label:"有头像",icon:"🖼️"},{key:"requireBusiness",label:"有业务需求",icon:"💼"}].map(k=>{const Z=(r.poolSettings??Tl)[k.key];return e.jsxs("div",{className:"flex items-center gap-3 bg-[#0a1628] rounded-lg p-3",children:[e.jsx(ot,{checked:Z,onCheckedChange:ne=>a({...r,poolSettings:{...r.poolSettings??Tl,[k.key]:ne}})}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{children:k.icon}),e.jsx(te,{className:"text-gray-300 text-sm",children:k.label})]})]},k.key)})})]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(an,{className:"w-5 h-5 text-yellow-400"})," 基础设置"]}),e.jsx(jt,{className:"text-gray-400",children:"配置免费匹配次数和付费规则"})]}),e.jsxs(we,{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"每日免费匹配次数"}),e.jsx(le,{type:"number",min:0,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:r.freeMatchLimit,onChange:k=>a({...r,freeMatchLimit:parseInt(k.target.value,10)||0})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"付费匹配价格(元)"}),e.jsx(le,{type:"number",min:.01,step:.01,className:"bg-[#0a1628] border-gray-700 text-white",value:r.matchPrice,onChange:k=>a({...r,matchPrice:parseFloat(k.target.value)||1})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"每日最大匹配次数"}),e.jsx(le,{type:"number",min:1,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:r.settings.maxMatchesPerDay,onChange:k=>a({...r,settings:{...r.settings,maxMatchesPerDay:parseInt(k.target.value,10)||10}})})]})]}),e.jsxs("div",{className:"flex gap-8 pt-4 border-t border-gray-700/50",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ot,{checked:r.settings.enableFreeMatches,onCheckedChange:k=>a({...r,settings:{...r.settings,enableFreeMatches:k}})}),e.jsx(te,{className:"text-gray-300",children:"启用免费匹配"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ot,{checked:r.settings.enablePaidMatches,onCheckedChange:k=>a({...r,settings:{...r.settings,enablePaidMatches:k}})}),e.jsx(te,{className:"text-gray-300",children:"启用付费匹配"})]})]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsxs(Ke,{className:"flex flex-row items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Yt,{className:"w-5 h-5 text-[#38bdac]"})," 匹配类型管理"]}),e.jsx(jt,{className:"text-gray-400",children:"配置不同的匹配类型及其价格"})]}),e.jsxs(X,{onClick:I,size:"sm",className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Rt,{className:"w-4 h-4 mr-1"})," 添加类型"]})]}),e.jsx(we,{children:e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"图标"}),e.jsx(be,{className:"text-gray-400",children:"类型ID"}),e.jsx(be,{className:"text-gray-400",children:"显示名称"}),e.jsx(be,{className:"text-gray-400",children:"匹配标签"}),e.jsx(be,{className:"text-gray-400",children:"价格"}),e.jsx(be,{className:"text-gray-400",children:"数据库匹配"}),e.jsx(be,{className:"text-gray-400",children:"状态"}),e.jsx(be,{className:"text-right text-gray-400",children:"操作"})]})}),e.jsx(ps,{children:r.matchTypes.map(k=>e.jsxs(et,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[e.jsx(pe,{children:e.jsx("span",{className:"text-2xl",children:k.icon})}),e.jsx(pe,{className:"font-mono text-gray-300",children:k.id}),e.jsx(pe,{className:"text-white font-medium",children:k.label}),e.jsx(pe,{className:"text-gray-300",children:k.matchLabel}),e.jsx(pe,{children:e.jsxs(Le,{className:"bg-yellow-500/20 text-yellow-400 hover:bg-yellow-500/20 border-0",children:["¥",k.price]})}),e.jsx(pe,{children:k.matchFromDB?e.jsx(Le,{className:"bg-green-500/20 text-green-400 hover:bg-green-500/20 border-0",children:"是"}):e.jsx(Le,{variant:"outline",className:"text-gray-500 border-gray-600",children:"否"})}),e.jsx(pe,{children:e.jsx(ot,{checked:k.enabled,onCheckedChange:()=>_(k.id)})}),e.jsx(pe,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-1",children:[e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>j(k),className:"text-gray-400 hover:text-[#38bdac] hover:bg-[#38bdac]/10",children:e.jsx(ht,{className:"w-4 h-4"})}),e.jsx(X,{variant:"ghost",size:"sm",onClick:()=>V(k.id),className:"text-red-400 hover:text-red-300 hover:bg-red-500/10",children:e.jsx(Ht,{className:"w-4 h-4"})})]})})]},k.id))})]})})]}),e.jsx(Ct,{open:m,onOpenChange:f,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-lg",showCloseButton:!0,children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[g?e.jsx(ht,{className:"w-5 h-5 text-[#38bdac]"}):e.jsx(Rt,{className:"w-5 h-5 text-[#38bdac]"}),g?"编辑匹配类型":"添加匹配类型"]})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"类型ID(英文)"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: partner",value:p.id,onChange:k=>v({...p,id:k.target.value}),disabled:!!g})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"图标"}),e.jsx("div",{className:"flex gap-1 flex-wrap",children:LC.map(k=>e.jsx("button",{type:"button",className:`w-8 h-8 text-lg rounded ${p.icon===k?"bg-[#38bdac]/30 ring-1 ring-[#38bdac]":"bg-[#0a1628]"}`,onClick:()=>v({...p,icon:k}),children:k},k))})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"显示名称"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: 超级个体",value:p.label,onChange:k=>v({...p,label:k.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"匹配标签"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: 超级个体",value:p.matchLabel,onChange:k=>v({...p,matchLabel:k.target.value})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"单次匹配价格(元)"}),e.jsx(le,{type:"number",min:.01,step:.01,className:"bg-[#0a1628] border-gray-700 text-white",value:p.price,onChange:k=>v({...p,price:parseFloat(k.target.value)||1})})]}),e.jsxs("div",{className:"flex gap-6 pt-2",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ot,{checked:p.matchFromDB,onCheckedChange:k=>v({...p,matchFromDB:k})}),e.jsx(te,{className:"text-gray-300 text-sm",children:"从数据库匹配"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ot,{checked:p.showJoinAfterMatch,onCheckedChange:k=>v({...p,showJoinAfterMatch:k})}),e.jsx(te,{className:"text-gray-300 text-sm",children:"匹配后显示加入"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ot,{checked:p.enabled,onCheckedChange:k=>v({...p,enabled:k})}),e.jsx(te,{className:"text-gray-300 text-sm",children:"启用"})]})]})]}),e.jsxs(Dt,{children:[e.jsx(X,{variant:"outline",onClick:()=>f(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),e.jsxs(X,{onClick:U,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"})," 保存"]})]})]})})]})}const kx={partner:"找伙伴",investor:"资源对接",mentor:"导师顾问",team:"团队招募"};function FC(){const[r,a]=h.useState([]),[l,o]=h.useState(0),[c,u]=h.useState(1),[m,f]=h.useState(10),[g,y]=h.useState(""),[p,v]=h.useState(!0),[E,P]=h.useState(null),[T,w]=h.useState(null);async function b(){v(!0),P(null);try{const j=new URLSearchParams({page:String(c),pageSize:String(m)});g&&j.set("matchType",g);const I=await Be(`/api/db/match-records?${j}`);I!=null&&I.success?(a(I.records||[]),o(I.total??0)):P("加载匹配记录失败")}catch{P("加载失败,请检查网络后重试")}finally{v(!1)}}h.useEffect(()=>{b()},[c,g]);const N=Math.ceil(l/m)||1,C=({userId:j,nickname:I,avatar:U})=>e.jsxs("div",{className:"flex items-center gap-3 cursor-pointer group",onClick:()=>w(j),children:[e.jsxs("div",{className:"w-9 h-9 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac] flex-shrink-0 overflow-hidden",children:[U?e.jsx("img",{src:U,alt:"",className:"w-full h-full object-cover",onError:V=>{V.currentTarget.style.display="none"}}):null,e.jsx("span",{className:U?"hidden":"",children:(I||j||"?").charAt(0)})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-white group-hover:text-[#38bdac] transition-colors",children:I||j}),e.jsxs("div",{className:"text-xs text-gray-500 font-mono",children:[j==null?void 0:j.slice(0,16),(j==null?void 0:j.length)>16?"...":""]})]})]});return e.jsxs("div",{children:[E&&e.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[e.jsx("span",{children:E}),e.jsx("button",{type:"button",onClick:()=>P(null),className:"hover:text-red-300",children:"×"})]}),e.jsxs("div",{className:"flex justify-between items-center mb-4",children:[e.jsxs("p",{className:"text-gray-400",children:["共 ",l," 条匹配记录 · 点击用户名查看详情"]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("select",{value:g,onChange:j=>{y(j.target.value),u(1)},className:"bg-[#0f2137] border border-gray-700 text-white rounded-lg px-3 py-2 text-sm",children:[e.jsx("option",{value:"",children:"全部类型"}),Object.entries(kx).map(([j,I])=>e.jsx("option",{value:j,children:I},j))]}),e.jsxs("button",{type:"button",onClick:b,disabled:p,className:"flex items-center gap-2 px-4 py-2 rounded-lg border border-gray-600 text-gray-300 hover:bg-gray-700/50 transition-colors disabled:opacity-50",children:[e.jsx($e,{className:`w-4 h-4 ${p?"animate-spin":""}`})," 刷新"]})]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:e.jsx(we,{className:"p-0",children:p?e.jsxs("div",{className:"flex justify-center py-12",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):e.jsxs(e.Fragment,{children:[e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"发起人"}),e.jsx(be,{className:"text-gray-400",children:"匹配到"}),e.jsx(be,{className:"text-gray-400",children:"类型"}),e.jsx(be,{className:"text-gray-400",children:"联系方式"}),e.jsx(be,{className:"text-gray-400",children:"匹配时间"})]})}),e.jsxs(ps,{children:[r.map(j=>e.jsxs(et,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[e.jsx(pe,{children:e.jsx(C,{userId:j.userId,nickname:j.userNickname,avatar:j.userAvatar})}),e.jsx(pe,{children:j.matchedUserId?e.jsx(C,{userId:j.matchedUserId,nickname:j.matchedNickname,avatar:j.matchedUserAvatar}):e.jsx("span",{className:"text-gray-500",children:"—"})}),e.jsx(pe,{children:e.jsx(Le,{className:"bg-[#38bdac]/20 text-[#38bdac] border-0",children:kx[j.matchType]||j.matchType})}),e.jsxs(pe,{className:"text-sm",children:[j.phone&&e.jsxs("div",{className:"text-green-400",children:["📱 ",j.phone]}),j.wechatId&&e.jsxs("div",{className:"text-blue-400",children:["💬 ",j.wechatId]}),!j.phone&&!j.wechatId&&e.jsx("span",{className:"text-gray-600",children:"-"})]}),e.jsx(pe,{className:"text-gray-400",children:j.createdAt?new Date(j.createdAt).toLocaleString():"-"})]},j.id)),r.length===0&&e.jsx(et,{children:e.jsx(pe,{colSpan:5,className:"text-center py-12 text-gray-500",children:"暂无匹配记录"})})]})]}),e.jsx(Qs,{page:c,totalPages:N,total:l,pageSize:m,onPageChange:u,onPageSizeChange:j=>{f(j),u(1)}})]})})}),e.jsx(p0,{open:!!T,onClose:()=>w(null),userId:T,onUserUpdated:b})]})}function zC(){const[r,a]=h.useState("records");return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{type:"button",onClick:()=>a("records"),className:`px-4 py-2 rounded-lg text-sm font-medium transition-all ${r==="records"?"bg-[#38bdac]/20 text-[#38bdac] border border-[#38bdac]/50":"bg-[#0a1628] text-gray-400 border border-gray-700 hover:text-white"}`,children:"匹配记录"}),e.jsx("button",{type:"button",onClick:()=>a("pool"),className:`px-4 py-2 rounded-lg text-sm font-medium transition-all ${r==="pool"?"bg-[#38bdac]/20 text-[#38bdac] border border-[#38bdac]/50":"bg-[#0a1628] text-gray-400 border border-gray-700 hover:text-white"}`,children:"匹配池设置"})]}),r==="records"&&e.jsx(FC,{}),r==="pool"&&e.jsx(OC,{})]})}const Ex={investor:"资源对接",mentor:"导师顾问",team:"团队招募"};function $C(){const[r,a]=h.useState([]),[l,o]=h.useState(0),[c,u]=h.useState(1),[m,f]=h.useState(10),[g,y]=h.useState(!0),[p,v]=h.useState("investor"),[E,P]=h.useState(null);async function T(){y(!0);try{const C=new URLSearchParams({page:String(c),pageSize:String(m),matchType:p}),j=await Be(`/api/db/match-records?${C}`);j!=null&&j.success&&(a(j.records||[]),o(j.total??0))}catch(C){console.error(C)}finally{y(!1)}}h.useEffect(()=>{T()},[c,p]);const w=async C=>{if(!C.phone&&!C.wechatId){alert("该记录无联系方式,无法推送到存客宝");return}P(C.id);try{const j=await mt("/api/ckb/join",{type:C.matchType||"investor",phone:C.phone||"",wechat:C.wechatId||"",userId:C.userId,name:C.userNickname||""});alert((j==null?void 0:j.message)||(j!=null&&j.success?"推送成功":"推送失败"))}catch(j){alert("推送失败: "+(j instanceof Error?j.message:"网络错误"))}finally{P(null)}},b=Math.ceil(l/m)||1,N=C=>!!(C.phone||C.wechatId);return e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between items-center mb-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400",children:"点击获客:有人填写手机号/微信号的直接显示,可一键推送到存客宝"}),e.jsxs("p",{className:"text-gray-500 text-xs mt-1",children:["共 ",l," 条记录 — 有联系方式的可触发存客宝添加好友"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("select",{value:p,onChange:C=>{v(C.target.value),u(1)},className:"bg-[#0f2137] border border-gray-700 text-white rounded-lg px-3 py-2 text-sm",children:Object.entries(Ex).map(([C,j])=>e.jsx("option",{value:C,children:j},C))}),e.jsxs(X,{onClick:T,disabled:g,variant:"outline",className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${g?"animate-spin":""}`})," 刷新"]})]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:e.jsx(we,{className:"p-0",children:g?e.jsxs("div",{className:"flex justify-center py-12",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):e.jsxs(e.Fragment,{children:[e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"发起人"}),e.jsx(be,{className:"text-gray-400",children:"匹配到"}),e.jsx(be,{className:"text-gray-400",children:"类型"}),e.jsx(be,{className:"text-gray-400",children:"联系方式"}),e.jsx(be,{className:"text-gray-400",children:"时间"}),e.jsx(be,{className:"text-gray-400 text-right",children:"操作"})]})}),e.jsxs(ps,{children:[r.map(C=>{var j,I;return e.jsxs(et,{className:`border-gray-700/50 ${N(C)?"hover:bg-[#0a1628]":"opacity-60"}`,children:[e.jsx(pe,{className:"text-white",children:C.userNickname||((j=C.userId)==null?void 0:j.slice(0,12))}),e.jsx(pe,{className:"text-white",children:C.matchedNickname||((I=C.matchedUserId)==null?void 0:I.slice(0,12))}),e.jsx(pe,{children:e.jsx(Le,{className:"bg-[#38bdac]/20 text-[#38bdac] border-0",children:Ex[C.matchType]||C.matchType})}),e.jsxs(pe,{className:"text-sm",children:[C.phone&&e.jsxs("div",{className:"text-green-400",children:["📱 ",C.phone]}),C.wechatId&&e.jsxs("div",{className:"text-blue-400",children:["💬 ",C.wechatId]}),!C.phone&&!C.wechatId&&e.jsx("span",{className:"text-gray-600",children:"无联系方式"})]}),e.jsx(pe,{className:"text-gray-400 text-sm",children:C.createdAt?new Date(C.createdAt).toLocaleString():"-"}),e.jsx(pe,{className:"text-right",children:N(C)?e.jsxs(X,{size:"sm",onClick:()=>w(C),disabled:E===C.id,className:"bg-[#38bdac] hover:bg-[#2da396] text-white text-xs h-7 px-3",children:[e.jsx(aN,{className:"w-3 h-3 mr-1"}),E===C.id?"推送中...":"推送CKB"]}):e.jsx("span",{className:"text-gray-600 text-xs",children:"—"})})]},C.id)}),r.length===0&&e.jsx(et,{children:e.jsx(pe,{colSpan:6,className:"text-center py-12 text-gray-500",children:"暂无记录"})})]})]}),e.jsx(Qs,{page:c,totalPages:b,total:l,pageSize:m,onPageChange:u,onPageSizeChange:C=>{f(C),u(1)}})]})})})]})}const Px={created:"已创建",pending_pay:"待支付",paid:"已支付",completed:"已完成",cancelled:"已取消"},BC={single:"单次",half_year:"半年",year:"年度"};function UC(){const[r,a]=h.useState([]),[l,o]=h.useState(!0),[c,u]=h.useState("");async function m(){o(!0);try{const f=c?`/api/db/mentor-consultations?status=${c}`:"/api/db/mentor-consultations",g=await Be(f);g!=null&&g.success&&g.data&&a(g.data)}catch(f){console.error(f)}finally{o(!1)}}return h.useEffect(()=>{m()},[c]),e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between items-center mb-4",children:[e.jsx("p",{className:"text-gray-400",children:"导师咨询预约记录"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("select",{value:c,onChange:f=>u(f.target.value),className:"bg-[#0f2137] border border-gray-700 rounded-lg px-3 py-2 text-gray-300 text-sm",children:[e.jsx("option",{value:"",children:"全部状态"}),Object.entries(Px).map(([f,g])=>e.jsx("option",{value:f,children:g},f))]}),e.jsxs(X,{onClick:m,disabled:l,variant:"outline",className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${l?"animate-spin":""}`})," 刷新"]})]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-0",children:l?e.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"ID"}),e.jsx(be,{className:"text-gray-400",children:"用户ID"}),e.jsx(be,{className:"text-gray-400",children:"导师ID"}),e.jsx(be,{className:"text-gray-400",children:"类型"}),e.jsx(be,{className:"text-gray-400",children:"金额"}),e.jsx(be,{className:"text-gray-400",children:"状态"}),e.jsx(be,{className:"text-gray-400",children:"创建时间"})]})}),e.jsxs(ps,{children:[r.map(f=>e.jsxs(et,{className:"border-gray-700/50",children:[e.jsx(pe,{className:"text-gray-300",children:f.id}),e.jsx(pe,{className:"text-gray-400",children:f.userId}),e.jsx(pe,{className:"text-gray-400",children:f.mentorId}),e.jsx(pe,{className:"text-gray-400",children:BC[f.consultationType]||f.consultationType}),e.jsxs(pe,{className:"text-white",children:["¥",f.amount]}),e.jsx(pe,{className:"text-gray-400",children:Px[f.status]||f.status}),e.jsx(pe,{className:"text-gray-500 text-sm",children:f.createdAt?new Date(f.createdAt).toLocaleString():"-"})]},f.id)),r.length===0&&e.jsx(et,{children:e.jsx(pe,{colSpan:7,className:"text-center py-12 text-gray-500",children:"暂无预约记录"})})]})]})})})]})}function VC(){const[r,a]=h.useState("booking");return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{type:"button",onClick:()=>a("booking"),className:`px-4 py-2 rounded-lg text-sm font-medium transition-all ${r==="booking"?"bg-[#38bdac]/20 text-[#38bdac] border border-[#38bdac]/50":"bg-[#0a1628] text-gray-400 border border-gray-700 hover:text-white"}`,children:"预约记录"}),e.jsx("button",{type:"button",onClick:()=>a("manage"),className:`px-4 py-2 rounded-lg text-sm font-medium transition-all ${r==="manage"?"bg-[#38bdac]/20 text-[#38bdac] border border-[#38bdac]/50":"bg-[#0a1628] text-gray-400 border border-gray-700 hover:text-white"}`,children:"导师管理"})]}),r==="booking"&&e.jsx(UC,{}),r==="manage"&&e.jsx("div",{className:"-mx-8",children:e.jsx(Rg,{embedded:!0})})]})}function WC(){const[r,a]=h.useState([]),[l,o]=h.useState(0),[c,u]=h.useState(1),[m,f]=h.useState(10),[g,y]=h.useState(!0);async function p(){y(!0);try{const E=new URLSearchParams({page:String(c),pageSize:String(m),matchType:"team"}),P=await Be(`/api/db/match-records?${E}`);P!=null&&P.success&&(a(P.records||[]),o(P.total??0))}catch(E){console.error(E)}finally{y(!1)}}h.useEffect(()=>{p()},[c]);const v=Math.ceil(l/m)||1;return e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between items-center mb-4",children:[e.jsxs("div",{children:[e.jsxs("p",{className:"text-gray-400",children:["团队招募匹配记录,共 ",l," 条"]}),e.jsx("p",{className:"text-gray-500 text-xs mt-1",children:"用户通过「团队招募」提交联系方式到存客宝"})]}),e.jsxs("button",{type:"button",onClick:p,disabled:g,className:"flex items-center gap-2 px-4 py-2 rounded-lg border border-gray-600 text-gray-300 hover:bg-gray-700/50 transition-colors disabled:opacity-50",children:[e.jsx($e,{className:`w-4 h-4 ${g?"animate-spin":""}`})," 刷新"]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:e.jsx(we,{className:"p-0",children:g?e.jsxs("div",{className:"flex justify-center py-12",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):e.jsxs(e.Fragment,{children:[e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"发起人"}),e.jsx(be,{className:"text-gray-400",children:"匹配到"}),e.jsx(be,{className:"text-gray-400",children:"联系方式"}),e.jsx(be,{className:"text-gray-400",children:"时间"})]})}),e.jsxs(ps,{children:[r.map(E=>e.jsxs(et,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[e.jsx(pe,{className:"text-white",children:E.userNickname||E.userId}),e.jsx(pe,{className:"text-white",children:E.matchedNickname||E.matchedUserId}),e.jsxs(pe,{className:"text-gray-400 text-sm",children:[E.phone&&e.jsxs("div",{children:["📱 ",E.phone]}),E.wechatId&&e.jsxs("div",{children:["💬 ",E.wechatId]}),!E.phone&&!E.wechatId&&"-"]}),e.jsx(pe,{className:"text-gray-400",children:E.createdAt?new Date(E.createdAt).toLocaleString():"-"})]},E.id)),r.length===0&&e.jsx(et,{children:e.jsx(pe,{colSpan:4,className:"text-center py-12 text-gray-500",children:"暂无团队招募记录"})})]})]}),e.jsx(Qs,{page:c,totalPages:v,total:l,pageSize:m,onPageChange:u,onPageSizeChange:E=>{f(E),u(1)}})]})})})]})}const HC={partner:"超级个体",investor:"资源对接",mentor:"导师顾问",team:"团队招募"},KC={partner:"⭐",investor:"👥",mentor:"❤️",team:"🎮"};function GC({onSwitchTab:r}={}){const[a,l]=h.useState(null),[o,c]=h.useState(!0),[u,m]=h.useState("13800000000"),[f,g]=h.useState(""),[y,p]=h.useState([{endpoint:"/api/ckb/join",label:"场景获客 — 加入(partner)",description:"用测试手机号添加到存客宝「创业合伙」计划",method:"POST",status:"idle"},{endpoint:"/api/ckb/join",label:"场景获客 — 加入(investor)",description:"用测试手机号添加到存客宝「资源对接」计划",method:"POST",status:"idle"},{endpoint:"/api/ckb/join",label:"场景获客 — 加入(mentor)",description:"用测试手机号添加到存客宝「导师顾问」计划",method:"POST",status:"idle"},{endpoint:"/api/ckb/join",label:"场景获客 — 加入(team)",description:"用测试手机号添加到存客宝「团队招募」计划",method:"POST",status:"idle"},{endpoint:"/api/ckb/match",label:"匹配上报",description:"上报匹配行为到存客宝",method:"POST",status:"idle"},{endpoint:"/api/miniprogram/ckb/lead",label:"链接卡若",description:"首页「链接卡若」留资到存客宝",method:"POST",status:"idle"},{endpoint:"/api/match/config",label:"匹配配置",description:"获取匹配类型、价格等配置",method:"GET",status:"idle"}]),v=h.useCallback(async()=>{c(!0);try{const b=await Be("/api/db/match-records?stats=true");if(b!=null&&b.success&&b.data)l(b.data);else{const N=await Be("/api/db/match-records?page=1&pageSize=1");N!=null&&N.success&&l({totalMatches:N.total??0,todayMatches:0,byType:[],uniqueUsers:0})}}catch(b){console.error("加载统计失败:",b)}finally{c(!1)}},[]);h.useEffect(()=>{v()},[v]);const E=b=>{const N=u.trim(),C=f.trim(),j=["partner","investor","mentor","team"];return b<=3?{type:j[b],phone:N||void 0,wechat:C||void 0,userId:"admin_test",name:"后台测试",canHelp:b===1?"测试-我能帮到你":"",needHelp:b===1?"测试-我需要什么帮助":""}:b===4?{matchType:"partner",phone:N||void 0,wechat:C||void 0,userId:"admin_test",nickname:"后台测试",matchedUser:{id:"test_matched",nickname:"测试匹配用户",matchScore:88}}:b===5?{phone:N||void 0,wechatId:C||void 0,userId:"admin_test",name:"后台测试"}:{}},P=async b=>{const N=y[b];if(N.method==="POST"&&!u.trim()&&!f.trim()){alert("请至少填写测试手机号或微信号");return}const C=[...y];C[b]={...N,status:"testing",message:void 0,responseTime:void 0,ckbResponse:void 0},p(C);const j=performance.now();try{let I;N.method==="GET"?I=await Be(N.endpoint):I=await mt(N.endpoint,E(b));const U=Math.round(performance.now()-j),V=[...y],_=(I==null?void 0:I.message)||"",k=_.includes("已存在")||_.includes("已加入"),R=(I==null?void 0:I.success)===!0||(I==null?void 0:I.code)===200||k;V[b]={...N,status:R?"success":"error",message:_||(R?"接口正常":"返回异常"),responseTime:U,ckbResponse:I!=null&&I.data?JSON.stringify(I.data).slice(0,100):void 0},p(V)}catch(I){const U=Math.round(performance.now()-j),V=[...y];V[b]={...N,status:"error",message:I instanceof Error?I.message:"请求失败",responseTime:U},p(V)}},T=async()=>{if(!u.trim()&&!f.trim()){alert("请至少填写测试手机号或微信号");return}for(let b=0;bo?"-":b??0;return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4",children:[e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50 cursor-pointer hover:border-[#38bdac]/50 transition-colors",onClick:()=>r==null?void 0:r("partner"),children:e.jsxs(we,{className:"p-5",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-lg bg-[#38bdac]/20 flex items-center justify-center",children:e.jsx(Yt,{className:"w-5 h-5 text-[#38bdac]"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-xs",children:"总匹配次数"}),e.jsx("p",{className:"text-xl font-bold text-white",children:w(a==null?void 0:a.totalMatches)})]})]}),e.jsx("p",{className:"text-[#38bdac] text-[10px] mt-2",children:"点击查看匹配记录 →"})]})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50 cursor-pointer hover:border-yellow-500/50 transition-colors",onClick:()=>r==null?void 0:r("partner"),children:e.jsxs(we,{className:"p-5",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-lg bg-yellow-500/20 flex items-center justify-center",children:e.jsx(an,{className:"w-5 h-5 text-yellow-400"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-xs",children:"今日匹配"}),e.jsx("p",{className:"text-xl font-bold text-white",children:w(a==null?void 0:a.todayMatches)})]})]}),e.jsx("p",{className:"text-yellow-400/60 text-[10px] mt-2",children:"点击查看匹配记录 →"})]})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50 cursor-pointer hover:border-blue-500/50 transition-colors",onClick:()=>window.location.href="/users",children:e.jsxs(we,{className:"p-5",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-lg bg-blue-500/20 flex items-center justify-center",children:e.jsx(gN,{className:"w-5 h-5 text-blue-400"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-xs",children:"匹配用户数"}),e.jsx("p",{className:"text-xl font-bold text-white",children:w(a==null?void 0:a.uniqueUsers)})]})]}),e.jsx("p",{className:"text-blue-400/60 text-[10px] mt-2",children:"点击查看用户管理 →"})]})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-5",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-lg bg-green-500/20 flex items-center justify-center",children:e.jsx(Pa,{className:"w-5 h-5 text-green-400"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-xs",children:"人均匹配"}),e.jsx("p",{className:"text-xl font-bold text-white",children:o?"-":a!=null&&a.uniqueUsers?(a.totalMatches/a.uniqueUsers).toFixed(1):"0"})]})]})})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-5",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-lg bg-purple-500/20 flex items-center justify-center",children:e.jsx(Ml,{className:"w-5 h-5 text-purple-400"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-xs",children:"匹配收益"}),e.jsxs("p",{className:"text-xl font-bold text-white",children:["¥",w(a==null?void 0:a.matchRevenue)]})]})]})})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-5",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-lg bg-orange-500/20 flex items-center justify-center",children:e.jsx($j,{className:"w-5 h-5 text-orange-400"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-xs",children:"付费匹配"}),e.jsx("p",{className:"text-xl font-bold text-white",children:w(a==null?void 0:a.paidMatchCount)})]})]})})})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsxs(Ke,{className:"flex flex-row items-center justify-between pb-3",children:[e.jsx(Ge,{className:"text-white text-lg",children:"各类型匹配分布"}),e.jsxs(X,{onClick:v,disabled:o,variant:"outline",size:"sm",className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${o?"animate-spin":""}`})," 刷新数据"]})]}),e.jsx(we,{children:a!=null&&a.byType&&a.byType.length>0?e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:a.byType.map(b=>{const N=a.totalMatches>0?b.count/a.totalMatches*100:0;return e.jsxs("div",{className:"bg-[#0a1628] rounded-lg p-4",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"text-xl",children:KC[b.matchType]||"📊"}),e.jsx("span",{className:"text-gray-300 text-sm font-medium",children:HC[b.matchType]||b.matchType})]}),e.jsx("p",{className:"text-2xl font-bold text-white",children:b.count}),e.jsxs("div",{className:"mt-2",children:[e.jsx("div",{className:"w-full h-2 bg-gray-700 rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full bg-[#38bdac] rounded-full transition-all",style:{width:`${Math.min(N,100)}%`}})}),e.jsxs("p",{className:"text-gray-500 text-xs mt-1",children:[N.toFixed(1),"% 占比"]})]})]},b.matchType)})}):e.jsx("p",{className:"text-gray-500 text-center py-8",children:o?"加载中...":"暂无匹配数据"})})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsxs(Ke,{children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center md:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(on,{className:"w-5 h-5 text-[#38bdac]"}),"存客宝接口联通测试"]}),e.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"点击测试会用下方手机号/微信号真实添加到存客宝对应计划中"})]}),e.jsxs(X,{onClick:T,className:"bg-[#38bdac] hover:bg-[#2da396] text-white shrink-0",children:[e.jsx(an,{className:"w-4 h-4 mr-2"})," 全部测试"]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 mt-4 p-4 bg-[#0a1628] rounded-lg border border-gray-700/50",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-1",children:[e.jsx(Al,{className:"w-4 h-4 text-gray-400 shrink-0"}),e.jsxs("div",{className:"flex-1 space-y-1",children:[e.jsx(te,{className:"text-gray-400 text-xs",children:"测试手机号"}),e.jsx(le,{className:"bg-[#0f2137] border-gray-700 text-white h-9",placeholder:"填写真实手机号添加到存客宝",value:u,onChange:b=>m(b.target.value)})]})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-1",children:[e.jsx("span",{className:"text-gray-400 shrink-0 text-sm",children:"💬"}),e.jsxs("div",{className:"flex-1 space-y-1",children:[e.jsx(te,{className:"text-gray-400 text-xs",children:"测试微信号(可选)"}),e.jsx(le,{className:"bg-[#0f2137] border-gray-700 text-white h-9",placeholder:"填写微信号(可选)",value:f,onChange:b=>g(b.target.value)})]})]})]})]}),e.jsx(we,{children:e.jsx("div",{className:"space-y-2",children:y.map((b,N)=>e.jsxs("div",{className:"flex items-center justify-between bg-[#0a1628] rounded-lg px-4 py-3 gap-4",children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0 flex-1",children:[b.status==="idle"&&e.jsx("div",{className:"w-3 h-3 rounded-full bg-gray-500 shrink-0"}),b.status==="testing"&&e.jsx($e,{className:"w-4 h-4 text-yellow-400 animate-spin shrink-0"}),b.status==="success"&&e.jsx(Gd,{className:"w-4 h-4 text-green-400 shrink-0"}),b.status==="error"&&e.jsx(Wx,{className:"w-4 h-4 text-red-400 shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-white text-sm font-medium",children:b.label}),e.jsx("p",{className:"text-gray-500 text-xs truncate",children:b.description})]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[b.message&&e.jsx("span",{className:`text-xs max-w-[200px] truncate ${b.status==="success"?"text-green-400":b.status==="error"?"text-red-400":"text-gray-400"}`,children:b.message}),b.responseTime!==void 0&&e.jsxs(Le,{className:"bg-gray-700 text-gray-300 border-0 text-xs",children:[b.responseTime,"ms"]}),e.jsx(X,{size:"sm",variant:"outline",onClick:()=>P(N),disabled:b.status==="testing",className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent text-xs h-8 px-3",children:"测试"})]})]},`${b.endpoint}-${N}`))})})]})]})}const YC=[{id:"stats",label:"数据统计",icon:Gj},{id:"partner",label:"找伙伴",icon:Yt},{id:"resource",label:"资源对接",icon:kb},{id:"mentor",label:"导师预约",icon:wb},{id:"team",label:"团队招募",icon:Xd}];function QC(){const[r,a]=h.useState("stats");return e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"mb-6",children:[e.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[e.jsx(Yt,{className:"w-6 h-6 text-[#38bdac]"}),"找伙伴"]}),e.jsx("p",{className:"text-gray-400 mt-1",children:"数据统计、匹配池与记录、资源对接、导师预约、团队招募"})]}),e.jsx("div",{className:"flex flex-wrap gap-1 mb-6 bg-[#0f2137] rounded-lg p-1 border border-gray-700/50",children:YC.map(l=>{const o=r===l.id;return e.jsxs("button",{type:"button",onClick:()=>a(l.id),className:`flex items-center gap-2 px-5 py-2.5 rounded-md text-sm font-medium transition-all ${o?"bg-[#38bdac] text-white shadow-lg":"text-gray-400 hover:text-white hover:bg-gray-700/50"}`,children:[e.jsx(l.icon,{className:"w-4 h-4"}),l.label]},l.id)})}),r==="stats"&&e.jsx(GC,{onSwitchTab:l=>a(l)}),r==="partner"&&e.jsx(zC,{}),r==="resource"&&e.jsx($C,{}),r==="mentor"&&e.jsx(VC,{}),r==="team"&&e.jsx(WC,{})]})}function qC(){return e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-8",children:[e.jsx(on,{className:"w-8 h-8 text-[#38bdac]"}),e.jsx("h1",{className:"text-2xl font-bold text-white",children:"API 接口文档"})]}),e.jsx("p",{className:"text-gray-400 mb-6",children:"API 风格:RESTful · 版本 v1.0 · 基础路径 /api · 简单、清晰、易用。"}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl mb-6",children:[e.jsx(Ke,{children:e.jsx(Ge,{className:"text-white",children:"1. 接口总览"})}),e.jsxs(we,{className:"space-y-4 text-sm",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 mb-2",children:"接口分类"}),e.jsxs("ul",{className:"space-y-1 text-gray-300 font-mono",children:[e.jsx("li",{children:"/api/book — 书籍内容(章节列表、内容获取、同步)"}),e.jsx("li",{children:"/api/payment — 支付系统(订单创建、回调、状态查询)"}),e.jsx("li",{children:"/api/referral — 分销系统(邀请码、收益、提现)"}),e.jsx("li",{children:"/api/user — 用户系统(登录、注册、信息更新)"}),e.jsx("li",{children:"/api/match — 匹配系统(寻找匹配、匹配历史)"}),e.jsx("li",{children:"/api/admin — 管理后台(内容/订单/用户/分销管理)"}),e.jsx("li",{children:"/api/config — 配置系统"})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 mb-2",children:"认证方式"}),e.jsx("p",{className:"text-gray-300",children:"用户:Cookie session_id(可选)"}),e.jsx("p",{className:"text-gray-300",children:"管理端:Authorization: Bearer admin-token-secret"})]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl mb-6",children:[e.jsx(Ke,{children:e.jsx(Ge,{className:"text-white",children:"2. 书籍内容"})}),e.jsxs(we,{className:"space-y-2 text-sm text-gray-300 font-mono",children:[e.jsx("p",{children:"GET /api/book/all-chapters — 获取所有章节"}),e.jsx("p",{children:"GET /api/book/chapter/:id — 获取单章内容"}),e.jsx("p",{children:"POST /api/book/sync — 同步章节(需管理员认证)"})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl mb-6",children:[e.jsx(Ke,{children:e.jsx(Ge,{className:"text-white",children:"3. 支付"})}),e.jsxs(we,{className:"space-y-2 text-sm text-gray-300 font-mono",children:[e.jsx("p",{children:"POST /api/payment/create-order — 创建订单"}),e.jsx("p",{children:"POST /api/payment/alipay/notify — 支付宝回调"}),e.jsx("p",{children:"POST /api/payment/wechat/notify — 微信回调"})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl mb-6",children:[e.jsx(Ke,{children:e.jsx(Ge,{className:"text-white",children:"4. 分销与用户"})}),e.jsxs(we,{className:"space-y-2 text-sm text-gray-300 font-mono",children:[e.jsx("p",{children:"/api/referral/* — 邀请码、收益查询、提现"}),e.jsx("p",{children:"/api/user/* — 登录、注册、信息更新"}),e.jsx("p",{children:"/api/match/* — 匹配、匹配历史"})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl mb-6",children:[e.jsx(Ke,{children:e.jsx(Ge,{className:"text-white",children:"5. 管理后台"})}),e.jsxs(we,{className:"space-y-2 text-sm text-gray-300 font-mono",children:[e.jsx("p",{children:"GET/POST /api/admin/referral-settings — 推广/分销设置(含 VIP 配置)"}),e.jsx("p",{children:"GET /api/db/users、/api/db/book — 用户与章节数据"}),e.jsx("p",{children:"GET /api/orders — 订单列表"})]})]}),e.jsx("p",{className:"text-gray-500 text-xs",children:"完整说明见项目内 开发文档/5、接口/API接口完整文档.md"})]})}function XC(){const r=pn();return e.jsx("div",{className:"min-h-screen bg-[#0a1628] flex items-center justify-center p-8",children:e.jsxs("div",{className:"text-center max-w-md",children:[e.jsx("div",{className:"inline-flex items-center justify-center w-20 h-20 rounded-full bg-red-500/20 text-red-400 mb-6",children:e.jsx(Zj,{className:"w-10 h-10"})}),e.jsx("h1",{className:"text-4xl font-bold text-white mb-2",children:"404"}),e.jsx("p",{className:"text-gray-400 mb-1",children:"页面不存在"}),e.jsx("p",{className:"text-sm text-gray-500 font-mono mb-8 break-all",children:r.pathname}),e.jsx(X,{asChild:!0,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:e.jsxs(Kd,{to:"/",children:[e.jsx(Pb,{className:"w-4 h-4 mr-2"}),"返回首页"]})})]})})}function JC(){return e.jsxs(Nj,{children:[e.jsx(yt,{path:"/login",element:e.jsx(Ew,{})}),e.jsxs(yt,{path:"/",element:e.jsx(RN,{}),children:[e.jsx(yt,{index:!0,element:e.jsx(Sd,{to:"/dashboard",replace:!0})}),e.jsx(yt,{path:"dashboard",element:e.jsx(Tw,{})}),e.jsx(yt,{path:"orders",element:e.jsx(f2,{})}),e.jsx(yt,{path:"users",element:e.jsx($2,{})}),e.jsx(yt,{path:"distribution",element:e.jsx(o4,{})}),e.jsx(yt,{path:"withdrawals",element:e.jsx(c4,{})}),e.jsx(yt,{path:"content",element:e.jsx(pC,{})}),e.jsx(yt,{path:"referral-settings",element:e.jsx(I0,{})}),e.jsx(yt,{path:"author-settings",element:e.jsx(Sd,{to:"/settings?tab=author",replace:!0})}),e.jsx(yt,{path:"admin-users",element:e.jsx(Sd,{to:"/settings?tab=admin",replace:!0})}),e.jsx(yt,{path:"vip-roles",element:e.jsx(AC,{})}),e.jsx(yt,{path:"mentors",element:e.jsx(Rg,{})}),e.jsx(yt,{path:"mentor-consultations",element:e.jsx(DC,{})}),e.jsx(yt,{path:"settings",element:e.jsx(SC,{})}),e.jsx(yt,{path:"payment",element:e.jsx(CC,{})}),e.jsx(yt,{path:"site",element:e.jsx(TC,{})}),e.jsx(yt,{path:"qrcodes",element:e.jsx(RC,{})}),e.jsx(yt,{path:"find-partner",element:e.jsx(QC,{})}),e.jsx(yt,{path:"match",element:e.jsx(_C,{})}),e.jsx(yt,{path:"match-records",element:e.jsx(MC,{})}),e.jsx(yt,{path:"api-doc",element:e.jsx(qC,{})})]}),e.jsx(yt,{path:"*",element:e.jsx(XC,{})})]})}kv.createRoot(document.getElementById("root")).render(e.jsx(h.StrictMode,{children:e.jsx(Rj,{future:{v7_startTransition:!0,v7_relativeSplatPath:!0},children:e.jsx(JC,{})})})); +`+as}),alert(`图片上传成功: ${nt.data.url}`)}else alert("上传失败: "+((nt==null?void 0:nt.error)||"未知错误"))}catch(xt){console.error(xt),alert("上传失败")}finally{O(!1),V.current&&(V.current.value="")}}},kn=async()=>{var z;if(T.trim()){j(!0);try{const oe=await Be(`/api/search?q=${encodeURIComponent(T)}`);oe!=null&&oe.success&&((z=oe.data)!=null&&z.results)?b(oe.data.results):(b([]),oe&&!oe.success&&alert("搜索失败: "+oe.error))}catch(oe){console.error(oe),b([]),alert("搜索失败")}finally{j(!1)}}},zs=Bt.find(z=>z.id===I.partId),Mr=(zs==null?void 0:zs.chapters)??[];return e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-8",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-white",children:"内容管理"}),e.jsxs("p",{className:"text-gray-400 mt-1",children:["共 ",Bt.length," 篇 · ",_r," 节内容"]})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(J,{onClick:()=>he(!0),variant:"outline",className:"border-amber-500/50 text-amber-400 hover:bg-amber-500/10 bg-transparent",children:[e.jsx(kd,{className:"w-4 h-4 mr-2"}),"排名算法"]}),e.jsxs(J,{onClick:()=>{const z=typeof window<"u"?`${window.location.origin}/api-doc`:"";z&&window.open(z,"_blank","noopener,noreferrer")},variant:"outline",className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx(on,{className:"w-4 h-4 mr-2"}),"API 接口"]})]})]}),e.jsx(Ct,{open:p,onOpenChange:y,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-2xl max-h-[90vh] overflow-y-auto",showCloseButton:!0,children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(Rt,{className:"w-5 h-5 text-[#38bdac]"}),"新建章节"]})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"章节ID *"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: 9.15",value:I.id,onChange:z=>R({...I,id:z.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"价格 (元)"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:I.price,onChange:z=>R({...I,price:Number(z.target.value)})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"章节标题 *"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"输入章节标题",value:I.title,onChange:z=>R({...I,title:z.target.value})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"所属篇"}),e.jsxs(kl,{value:I.partId,onValueChange:z=>R({...I,partId:z,chapterId:"chapter-1"}),children:[e.jsx(ka,{className:"bg-[#0a1628] border-gray-700 text-white",children:e.jsx(El,{})}),e.jsxs(Ea,{className:"bg-[#0f2137] border-gray-700",children:[Bt.map(z=>e.jsx(lr,{value:z.id,className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:z.title},z.id)),Bt.length===0&&e.jsx(lr,{value:"part-1",className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:"默认篇"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"所属章"}),e.jsxs(kl,{value:I.chapterId,onValueChange:z=>R({...I,chapterId:z}),children:[e.jsx(ka,{className:"bg-[#0a1628] border-gray-700 text-white",children:e.jsx(El,{})}),e.jsxs(Ea,{className:"bg-[#0f2137] border-gray-700",children:[Mr.map(z=>e.jsx(lr,{value:z.id,className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:z.title},z.id)),Mr.length===0&&e.jsx(lr,{value:"chapter-1",className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:"默认章"})]})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"内容 (Markdown格式)"}),e.jsx(un,{className:"bg-[#0a1628] border-gray-700 text-white min-h-[300px] font-mono text-sm placeholder:text-gray-500",placeholder:"输入章节内容...",value:I.content,onChange:z=>R({...I,content:z.target.value})})]})]}),e.jsxs(Dt,{children:[e.jsx(J,{variant:"outline",onClick:()=>y(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),e.jsx(J,{onClick:fr,disabled:k||!I.id||!I.title,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:k?e.jsxs(e.Fragment,{children:[e.jsx($e,{className:"w-4 h-4 mr-2 animate-spin"}),"创建中..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"}),"创建章节"]})})]})]})}),e.jsx(Ct,{open:!!E,onOpenChange:z=>!z&&Y(null),children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",showCloseButton:!0,children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(ht,{className:"w-5 h-5 text-[#38bdac]"}),"编辑篇名"]})}),E&&e.jsx("div",{className:"space-y-4 py-4",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"篇名"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:E.title,onChange:z=>Y({...E,title:z.target.value}),placeholder:"输入篇名"})]})}),e.jsxs(Dt,{children:[e.jsx(J,{variant:"outline",onClick:()=>Y(null),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),e.jsx(J,{onClick:Ls,disabled:ne||!(($s=E==null?void 0:E.title)!=null&&$s.trim()),className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:ne?e.jsxs(e.Fragment,{children:[e.jsx($e,{className:"w-4 h-4 mr-2 animate-spin"}),"保存中..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),"保存"]})})]})]})}),e.jsx(Ct,{open:!!H,onOpenChange:z=>!z&&ie(null),children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",showCloseButton:!0,children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(ht,{className:"w-5 h-5 text-[#38bdac]"}),"编辑章节名称"]})}),H&&e.jsx("div",{className:"space-y-4 py-4",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"章节名称(如:第8章|底层结构)"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:H.title,onChange:z=>ie({...H,title:z.target.value}),placeholder:"输入章节名称"})]})}),e.jsxs(Dt,{children:[e.jsx(J,{variant:"outline",onClick:()=>ie(null),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),e.jsx(J,{onClick:Os,disabled:ve||!((Zn=H==null?void 0:H.title)!=null&&Zn.trim()),className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:ve?e.jsxs(e.Fragment,{children:[e.jsx($e,{className:"w-4 h-4 mr-2 animate-spin"}),"保存中..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),"保存"]})})]})]})}),e.jsx(Ct,{open:A,onOpenChange:z=>{var oe;if(F(z),z&&Bt.length>0){const Ce=Bt[0];Z(Ce.id),de(((oe=Ce.chapters[0])==null?void 0:oe.id)??"")}},children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",showCloseButton:!0,children:[e.jsx(kt,{children:e.jsx(Et,{className:"text-white",children:"批量移动至指定目录"})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("p",{className:"text-gray-400 text-sm",children:["已选 ",e.jsx("span",{className:"text-[#38bdac] font-medium",children:ce.length})," 节,请选择目标篇与章。"]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"目标篇"}),e.jsxs(kl,{value:L,onValueChange:z=>{var Ce;Z(z);const oe=Bt.find(Pe=>Pe.id===z);de(((Ce=oe==null?void 0:oe.chapters[0])==null?void 0:Ce.id)??"")},children:[e.jsx(ka,{className:"bg-[#0a1628] border-gray-700 text-white",children:e.jsx(El,{placeholder:"选择篇"})}),e.jsx(Ea,{className:"bg-[#0f2137] border-gray-700",children:Bt.map(z=>e.jsx(lr,{value:z.id,className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:z.title},z.id))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"目标章"}),e.jsxs(kl,{value:G,onValueChange:de,children:[e.jsx(ka,{className:"bg-[#0a1628] border-gray-700 text-white",children:e.jsx(El,{placeholder:"选择章"})}),e.jsx(Ea,{className:"bg-[#0f2137] border-gray-700",children:(((ts=Bt.find(z=>z.id===L))==null?void 0:ts.chapters)??[]).map(z=>e.jsx(lr,{value:z.id,className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:z.title},z.id))})]})]})]}),e.jsxs(Dt,{children:[e.jsx(J,{variant:"outline",onClick:()=>F(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),e.jsx(J,{onClick:qn,disabled:Q||ce.length===0,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:Q?e.jsxs(e.Fragment,{children:[e.jsx($e,{className:"w-4 h-4 mr-2 animate-spin"}),"移动中..."]}):"确认移动"})]})]})}),e.jsx(Ct,{open:!!Ve,onOpenChange:z=>!z&&We(null),children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-3xl max-h-[85vh] overflow-hidden flex flex-col",showCloseButton:!0,children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white",children:["付款记录 — ",(Ve==null?void 0:Ve.section.title)??""]})}),e.jsx("div",{className:"flex-1 overflow-y-auto py-2",children:Ye?e.jsxs("div",{className:"flex items-center justify-center py-8",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):Ve&&Ve.orders.length===0?e.jsx("p",{className:"text-gray-500 text-center py-6",children:"暂无付款记录"}):Ve?e.jsxs("table",{className:"w-full text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gray-700 text-left text-gray-400",children:[e.jsx("th",{className:"py-2 pr-2",children:"订单号"}),e.jsx("th",{className:"py-2 pr-2",children:"用户ID"}),e.jsx("th",{className:"py-2 pr-2",children:"金额"}),e.jsx("th",{className:"py-2 pr-2",children:"状态"}),e.jsx("th",{className:"py-2 pr-2",children:"支付时间"})]})}),e.jsx("tbody",{children:Ve.orders.map(z=>e.jsxs("tr",{className:"border-b border-gray-700/50",children:[e.jsx("td",{className:"py-2 pr-2 text-gray-300",children:z.orderSn??"-"}),e.jsx("td",{className:"py-2 pr-2 text-gray-300",children:z.userId??z.openId??"-"}),e.jsxs("td",{className:"py-2 pr-2 text-gray-300",children:["¥",z.amount??0]}),e.jsx("td",{className:"py-2 pr-2 text-gray-300",children:z.status??"-"}),e.jsx("td",{className:"py-2 pr-2 text-gray-500",children:z.payTime??z.createdAt??"-"})]},z.id??z.orderSn??""))})]}):null})]})}),e.jsx(Ct,{open:ze,onOpenChange:he,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",showCloseButton:!0,children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(kd,{className:"w-5 h-5 text-amber-400"}),"文章排名算法"]})}),e.jsxs("div",{className:"space-y-4 py-2",children:[e.jsx("p",{className:"text-sm text-gray-400",children:"热度积分 = 阅读权重×阅读排名分 + 新度权重×新度排名分 + 付款权重×付款排名分(三权重之和须为 1)"}),es?e.jsx("p",{className:"text-gray-500",children:"加载中..."}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(te,{className:"text-gray-400 text-xs",children:"阅读权重"}),e.jsx(le,{type:"number",step:"0.1",min:"0",max:"1",className:"bg-[#0a1628] border-gray-700 text-white",value:xe.readWeight,onChange:z=>ft(oe=>({...oe,readWeight:Math.max(0,Math.min(1,parseFloat(z.target.value)||0))}))})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(te,{className:"text-gray-400 text-xs",children:"新度权重"}),e.jsx(le,{type:"number",step:"0.1",min:"0",max:"1",className:"bg-[#0a1628] border-gray-700 text-white",value:xe.recencyWeight,onChange:z=>ft(oe=>({...oe,recencyWeight:Math.max(0,Math.min(1,parseFloat(z.target.value)||0))}))})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(te,{className:"text-gray-400 text-xs",children:"付款权重"}),e.jsx(le,{type:"number",step:"0.1",min:"0",max:"1",className:"bg-[#0a1628] border-gray-700 text-white",value:xe.payWeight,onChange:z=>ft(oe=>({...oe,payWeight:Math.max(0,Math.min(1,parseFloat(z.target.value)||0))}))})]})]}),e.jsxs("p",{className:"text-xs text-gray-500",children:["当前之和: ",(xe.readWeight+xe.recencyWeight+xe.payWeight).toFixed(1)]}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-xs text-gray-400",children:[e.jsx("li",{children:"阅读量前 20 名:得分 20~1"}),e.jsx("li",{children:"最近更新前 30 篇:得分 30~1"}),e.jsx("li",{children:"付款数前 20 名:得分 20~1"})]}),e.jsx(J,{onClick:Gn,disabled:bn||Math.abs(xe.readWeight+xe.recencyWeight+xe.payWeight-1)>.001,className:"w-full bg-amber-500 hover:bg-amber-600 text-white",children:bn?"保存中...":"保存权重"})]})]})]})}),e.jsx(Ct,{open:q,onOpenChange:se,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-md",showCloseButton:!0,children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(Rt,{className:"w-5 h-5 text-amber-400"}),"新建篇"]})}),e.jsx("div",{className:"space-y-4 py-4",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"篇名(如:第六篇|真实的社会)"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:Se,onChange:z=>D(z.target.value),placeholder:"输入篇名"})]})}),e.jsxs(Dt,{children:[e.jsx(J,{variant:"outline",onClick:()=>{se(!1),D("")},className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),e.jsx(J,{onClick:Qn,disabled:fe||!Se.trim(),className:"bg-amber-500 hover:bg-amber-600 text-white",children:fe?e.jsxs(e.Fragment,{children:[e.jsx($e,{className:"w-4 h-4 mr-2 animate-spin"}),"创建中..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"}),"创建篇"]})})]})]})}),e.jsx(Ct,{open:!!m,onOpenChange:()=>f(null),children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-4xl max-h-[90vh] flex flex-col p-0 gap-0",showCloseButton:!0,children:[e.jsx(kt,{className:"shrink-0 px-6 pt-6 pb-2",children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[e.jsx(ht,{className:"w-5 h-5 text-[#38bdac]"}),"编辑章节"]})}),m&&e.jsxs("div",{className:"flex-1 overflow-y-auto min-h-0 px-6 space-y-4 py-4",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"章节ID"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:m.id,disabled:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"价格 (元)"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:m.isFree?0:m.price,onChange:z=>f({...m,price:Number(z.target.value),isFree:Number(z.target.value)===0}),disabled:m.isFree})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"免费章节(唯一入口,小程序以 is_free 或 price=0 为准)"}),e.jsx("div",{className:"flex items-center h-10",children:e.jsxs("label",{className:"flex items-center cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:m.isFree||m.price===0,onChange:z=>f({...m,isFree:z.target.checked,price:z.target.checked?0:1}),className:"w-5 h-5 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"}),e.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"设为免费"})]})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"最新新增"}),e.jsx("div",{className:"flex items-center h-10",children:e.jsxs("label",{className:"flex items-center cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:m.isNew??!1,onChange:z=>f({...m,isNew:z.target.checked}),className:"w-5 h-5 rounded border-gray-600 bg-[#0a1628] text-[#38bdac] focus:ring-[#38bdac]"}),e.jsx("span",{className:"ml-2 text-gray-400 text-sm",children:"标记 NEW"})]})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"章节标题"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:m.title,onChange:z=>f({...m,title:z.target.value})})]}),m.filePath&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"文件路径"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-gray-400 text-sm",value:m.filePath,disabled:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(te,{className:"text-gray-300",children:"内容 (Markdown格式)"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("input",{ref:V,type:"file",accept:"image/*",onChange:Cn,className:"hidden"}),e.jsxs(J,{variant:"outline",size:"sm",onClick:()=>{var z;return(z=V.current)==null?void 0:z.click()},disabled:_,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[_?e.jsx($e,{className:"w-4 h-4 mr-1 animate-spin"}):e.jsx(Gx,{className:"w-4 h-4 mr-1"}),"上传图片"]})]})]}),g?e.jsxs("div",{className:"bg-[#0a1628] border border-gray-700 rounded-md min-h-[400px] flex items-center justify-center",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):e.jsx(un,{className:"bg-[#0a1628] border-gray-700 text-white min-h-[400px] font-mono text-sm placeholder:text-gray-500",placeholder:"此处输入章节内容,支持Markdown格式...",value:m.content,onChange:z=>f({...m,content:z.target.value})})]})]}),e.jsxs(Dt,{className:"shrink-0 px-6 py-4 border-t border-gray-700/50",children:[e.jsxs(J,{variant:"outline",onClick:()=>f(null),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx(ms,{className:"w-4 h-4 mr-2"}),"取消"]}),e.jsx(J,{onClick:wn,disabled:k,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:k?e.jsxs(e.Fragment,{children:[e.jsx($e,{className:"w-4 h-4 mr-2 animate-spin"}),"保存中..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),"保存修改"]})})]})]})}),e.jsxs($l,{defaultValue:"chapters",className:"space-y-6",children:[e.jsxs($a,{className:"bg-[#0f2137] border border-gray-700/50 p-1",children:[e.jsxs(Lt,{value:"chapters",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400",children:[e.jsx(qs,{className:"w-4 h-4 mr-2"}),"章节管理"]}),e.jsxs(Lt,{value:"search",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400",children:[e.jsx(cn,{className:"w-4 h-4 mr-2"}),"内容搜索"]}),e.jsxs(Lt,{value:"hooks",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400",children:[e.jsx(kd,{className:"w-4 h-4 mr-2"}),"钩子配置"]})]}),e.jsxs(Ot,{value:"chapters",className:"space-y-4",children:[e.jsxs("div",{className:"rounded-2xl border border-gray-700/50 bg-[#1C1C1E] p-4 flex items-center justify-between shadow-sm",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-[#38bdac] flex items-center justify-center text-white shadow-lg shadow-[#38bdac]/20 shrink-0",children:e.jsx(qs,{className:"w-6 h-6"})}),e.jsxs("div",{children:[e.jsx("h2",{className:"font-bold text-base text-white leading-tight mb-1",children:"一场SOUL的创业实验场"}),e.jsx("p",{className:"text-xs text-gray-500",children:"来自Soul派对房的真实商业故事"})]})]}),e.jsxs("div",{className:"text-center shrink-0",children:[e.jsx("span",{className:"block text-2xl font-bold text-[#38bdac]",children:_r}),e.jsx("span",{className:"text-xs text-gray-500",children:"章节"})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(J,{onClick:()=>y(!0),className:"flex-1 min-w-[120px] bg-[#38bdac]/10 hover:bg-[#38bdac]/20 text-[#38bdac] border border-[#38bdac]/30",children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"}),"新建章节"]}),e.jsxs(J,{onClick:()=>se(!0),className:"flex-1 min-w-[120px] bg-amber-500/10 hover:bg-amber-500/20 text-amber-400 border border-amber-500/30",children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"}),"新建篇"]}),e.jsxs(J,{variant:"outline",onClick:()=>F(!0),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:["批量移动(已选 ",ce.length," 节)"]})]}),l?e.jsxs("div",{className:"flex items-center justify-center py-12",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):e.jsx(fC,{parts:Bt,expandedParts:c,onTogglePart:gs,onReorder:Nn,onReadSection:ks,onDeleteSection:mr,onAddSectionInPart:ys,onAddChapterInPart:Sn,onDeleteChapter:Fs,onEditPart:Ds,onDeletePart:Jn,onEditChapter:Es,selectedSectionIds:ce,onToggleSectionSelect:Xn,onShowSectionOrders:Yn})]}),e.jsx(Ot,{value:"search",className:"space-y-4",children:e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsx(Ke,{children:e.jsx(Ge,{className:"text-white",children:"内容搜索"})}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500 flex-1",placeholder:"搜索标题或内容...",value:T,onChange:z=>w(z.target.value),onKeyDown:z=>z.key==="Enter"&&kn()}),e.jsx(J,{onClick:kn,disabled:S||!T.trim(),className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:S?e.jsx($e,{className:"w-4 h-4 animate-spin"}):e.jsx(cn,{className:"w-4 h-4"})})]}),N.length>0&&e.jsxs("div",{className:"space-y-2 mt-4",children:[e.jsxs("p",{className:"text-gray-400 text-sm",children:["找到 ",N.length," 个结果"]}),N.map(z=>e.jsxs("div",{className:"p-3 rounded-lg bg-[#162840] hover:bg-[#1a3050] cursor-pointer transition-colors",onClick:()=>ks({id:z.id,title:z.title,price:z.price??1,filePath:""}),children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-[#38bdac] font-mono text-xs mr-2",children:z.id}),e.jsx("span",{className:"text-white",children:z.title})]}),e.jsx(Le,{variant:"outline",className:"text-gray-400 border-gray-600 text-xs",children:z.matchType==="title"?"标题匹配":"内容匹配"})]}),z.snippet&&e.jsx("p",{className:"text-gray-500 text-xs mt-2 line-clamp-2",children:z.snippet}),(z.partTitle||z.chapterTitle)&&e.jsxs("p",{className:"text-gray-600 text-xs mt-1",children:[z.partTitle," · ",z.chapterTitle]})]},z.id))]})]})]})}),e.jsx(Ot,{value:"hooks",className:"space-y-4",children:e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsx(Ke,{children:e.jsx(Ge,{className:"text-white",children:"引流钩子配置"})}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"grid w-full max-w-sm items-center gap-1.5",children:[e.jsx(te,{htmlFor:"hook-chapter",className:"text-gray-300",children:"触发章节"}),e.jsxs(kl,{defaultValue:"3",children:[e.jsx(ka,{id:"hook-chapter",className:"bg-[#0a1628] border-gray-700 text-white",children:e.jsx(El,{placeholder:"选择章节"})}),e.jsxs(Ea,{className:"bg-[#0f2137] border-gray-700",children:[e.jsx(lr,{value:"1",className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:"第一章"}),e.jsx(lr,{value:"2",className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:"第二章"}),e.jsx(lr,{value:"3",className:"text-white hover:bg-[#38bdac]/20 focus:bg-[#38bdac]/20",children:"第三章 (默认)"})]})]})]}),e.jsxs("div",{className:"grid w-full gap-1.5",children:[e.jsx(te,{htmlFor:"message",className:"text-gray-300",children:"引流文案"}),e.jsx(un,{placeholder:"输入引导用户加群的文案...",id:"message",className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",defaultValue:"阅读更多精彩内容,请加入Soul创业实验派对群..."})]}),e.jsx(J,{className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:"保存配置"})]})]})})]})]})}const kr={name:"卡若",avatar:"K",avatarImg:"",title:"Soul派对房主理人 · 私域运营专家",bio:'每天早上6点到9点,在Soul派对房分享真实的创业故事。专注私域运营与项目变现,用"云阿米巴"模式帮助创业者构建可持续的商业体系。',stats:[{label:"商业案例",value:"62"},{label:"连续直播",value:"365天"},{label:"派对分享",value:"1000+"}],highlights:["5年私域运营经验","帮助100+品牌从0到1增长","连续创业者,擅长商业模式设计"]};function jx(r){return Array.isArray(r)?r.map(a=>a&&typeof a=="object"&&"label"in a&&"value"in a?{label:String(a.label),value:String(a.value)}:{label:"",value:""}).filter(a=>a.label||a.value):kr.stats}function bx(r){return Array.isArray(r)?r.map(a=>typeof a=="string"?a:String(a??"")).filter(Boolean):kr.highlights}function gC(){const[r,a]=h.useState(kr),[l,o]=h.useState(!0),[c,u]=h.useState(!1),[m,f]=h.useState(!1),p=h.useRef(null);h.useEffect(()=>{Be("/api/admin/author-settings").then(b=>{const S=b==null?void 0:b.data;S&&typeof S=="object"&&a({name:String(S.name??kr.name),avatar:String(S.avatar??kr.avatar),avatarImg:String(S.avatarImg??""),title:String(S.title??kr.title),bio:String(S.bio??kr.bio),stats:jx(S.stats).length?jx(S.stats):kr.stats,highlights:bx(S.highlights).length?bx(S.highlights):kr.highlights})}).catch(console.error).finally(()=>o(!1))},[]);const y=async()=>{u(!0);try{const b={name:r.name,avatar:r.avatar||"K",avatarImg:r.avatarImg,title:r.title,bio:r.bio,stats:r.stats.filter(_=>_.label||_.value),highlights:r.highlights.filter(Boolean)},S=await mt("/api/admin/author-settings",b);if(!S||S.success===!1){alert("保存失败: "+(S&&typeof S=="object"&&"error"in S?S.error:""));return}u(!1);const j=document.createElement("div");j.className="fixed top-4 right-4 z-50 px-4 py-2 rounded-lg bg-[#38bdac] text-white text-sm shadow-lg",j.textContent="作者设置已保存",document.body.appendChild(j),setTimeout(()=>j.remove(),2e3)}catch(b){console.error(b),alert("保存失败: "+(b instanceof Error?b.message:String(b)))}finally{u(!1)}},g=async b=>{var j;const S=(j=b.target.files)==null?void 0:j[0];if(S){f(!0);try{const _=new FormData;_.append("file",S),_.append("folder","avatars");const O=bu(),V={};O&&(V.Authorization=`Bearer ${O}`);const R=await(await fetch(Aa("/api/upload"),{method:"POST",body:_,credentials:"include",headers:V})).json();R!=null&&R.success&&(R!=null&&R.url)?a(E=>({...E,avatarImg:R.url})):alert("上传失败: "+((R==null?void 0:R.error)||"未知错误"))}catch(_){console.error(_),alert("上传失败")}finally{f(!1),p.current&&(p.current.value="")}}},v=()=>a(b=>({...b,stats:[...b.stats,{label:"",value:""}]})),k=b=>a(S=>({...S,stats:S.stats.filter((j,_)=>_!==b)})),P=(b,S,j)=>a(_=>({..._,stats:_.stats.map((O,V)=>V===b?{...O,[S]:j}:O)})),T=()=>a(b=>({...b,highlights:[...b.highlights,""]})),w=b=>a(S=>({...S,highlights:S.highlights.filter((j,_)=>_!==b)})),N=(b,S)=>a(j=>({...j,highlights:j.highlights.map((_,O)=>O===b?S:_)}));return l?e.jsx("div",{className:"p-8 text-gray-500",children:"加载中..."}):e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-8",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[e.jsx(Ra,{className:"w-5 h-5 text-[#38bdac]"}),"作者详情"]}),e.jsx("p",{className:"text-gray-400 mt-1",children:"配置小程序「关于作者」页展示的作者信息,包括头像、简介、统计数据与亮点标签。"})]}),e.jsxs(J,{onClick:y,disabled:c||l,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),c?"保存中...":"保存"]})]}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"flex items-center gap-2 text-white",children:[e.jsx(Ra,{className:"w-4 h-4 text-[#38bdac]"}),"基本信息"]}),e.jsx(jt,{className:"text-gray-400",children:"作者姓名、头像、头衔与个人简介,将展示在「关于作者」页顶部。"})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"姓名"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:r.name,onChange:b=>a(S=>({...S,name:b.target.value})),placeholder:"卡若"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"首字母占位(无头像时显示)"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white w-20",value:r.avatar,onChange:b=>a(S=>({...S,avatar:b.target.value.slice(0,1)||"K"})),placeholder:"K"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{className:"text-gray-300 flex items-center gap-2",children:[e.jsx(Gx,{className:"w-3 h-3 text-[#38bdac]"}),"头像图片"]}),e.jsxs("div",{className:"flex gap-3 items-center",children:[e.jsx(le,{className:"flex-1 bg-[#0a1628] border-gray-700 text-white",value:r.avatarImg,onChange:b=>a(S=>({...S,avatarImg:b.target.value})),placeholder:"上传或粘贴 URL,如 /uploads/avatars/xxx.png"}),e.jsx("input",{ref:p,type:"file",accept:"image/*",className:"hidden",onChange:g}),e.jsxs(J,{type:"button",variant:"outline",size:"sm",className:"border-gray-600 text-gray-400 shrink-0",disabled:m,onClick:()=>{var b;return(b=p.current)==null?void 0:b.click()},children:[e.jsx(uo,{className:"w-4 h-4 mr-2"}),m?"上传中...":"上传"]})]}),r.avatarImg&&e.jsx("div",{className:"mt-2",children:e.jsx("img",{src:r.avatarImg.startsWith("http")?r.avatarImg:Aa(r.avatarImg),alt:"头像预览",className:"w-20 h-20 rounded-full object-cover border border-gray-600"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"头衔"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:r.title,onChange:b=>a(S=>({...S,title:b.target.value})),placeholder:"Soul派对房主理人 · 私域运营专家"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"个人简介"}),e.jsx(un,{className:"bg-[#0a1628] border-gray-700 text-white min-h-[120px]",value:r.bio,onChange:b=>a(S=>({...S,bio:b.target.value})),placeholder:"每天早上6点到9点..."})]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsx(Ge,{className:"text-white",children:"统计数据"}),e.jsx(jt,{className:"text-gray-400",children:"展示在作者卡片中的数字指标,如「商业案例 62」「连续直播 365天」。第一个「商业案例」的值可由书籍统计自动更新。"})]}),e.jsxs(we,{className:"space-y-3",children:[r.stats.map((b,S)=>e.jsxs("div",{className:"flex gap-3 items-center",children:[e.jsx(le,{className:"flex-1 bg-[#0a1628] border-gray-700 text-white",value:b.label,onChange:j=>P(S,"label",j.target.value),placeholder:"标签"}),e.jsx(le,{className:"flex-1 bg-[#0a1628] border-gray-700 text-white",value:b.value,onChange:j=>P(S,"value",j.target.value),placeholder:"数值"}),e.jsx(J,{variant:"ghost",size:"icon",className:"text-gray-400 hover:text-red-400",onClick:()=>k(S),children:e.jsx(ms,{className:"w-4 h-4"})})]},S)),e.jsxs(J,{variant:"outline",size:"sm",onClick:v,className:"border-gray-600 text-gray-400",children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"}),"添加统计项"]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsx(Ge,{className:"text-white",children:"亮点标签"}),e.jsx(jt,{className:"text-gray-400",children:"作者优势或成就的简短描述,以标签形式展示。"})]}),e.jsxs(we,{className:"space-y-3",children:[r.highlights.map((b,S)=>e.jsxs("div",{className:"flex gap-3 items-center",children:[e.jsx(le,{className:"flex-1 bg-[#0a1628] border-gray-700 text-white",value:b,onChange:j=>N(S,j.target.value),placeholder:"5年私域运营经验"}),e.jsx(J,{variant:"ghost",size:"icon",className:"text-gray-400 hover:text-red-400",onClick:()=>w(S),children:e.jsx(ms,{className:"w-4 h-4"})})]},S)),e.jsxs(J,{variant:"outline",size:"sm",onClick:T,className:"border-gray-600 text-gray-400",children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"}),"添加亮点"]})]})]})]})]})}function yC(){const[r,a]=h.useState([]),[l,o]=h.useState(0),[c,u]=h.useState(1),[m]=h.useState(10),[f,p]=h.useState(0),[y,g]=h.useState(""),v=Iu(y,300),[k,P]=h.useState(!0),[T,w]=h.useState(null),[N,b]=h.useState(!1),[S,j]=h.useState(null),[_,O]=h.useState(""),[V,I]=h.useState(""),[R,E]=h.useState(""),[Y,ne]=h.useState("admin"),[ae,q]=h.useState("active"),[se,H]=h.useState(!1);async function ie(){var F;P(!0),w(null);try{const L=new URLSearchParams({page:String(c),pageSize:String(m)});v.trim()&&L.set("search",v.trim());const Z=await Be(`/api/admin/users?${L}`);Z!=null&&Z.success?(a(Z.records||[]),o(Z.total??0),p(Z.totalPages??0)):w(Z.error||"加载失败")}catch(L){const Z=L;w(Z.status===403?"无权限访问":((F=Z==null?void 0:Z.data)==null?void 0:F.error)||"加载失败"),a([])}finally{P(!1)}}h.useEffect(()=>{ie()},[c,m,v]);const ve=()=>{j(null),O(""),I(""),E(""),ne("admin"),q("active"),b(!0)},U=F=>{j(F),O(F.username),I(""),E(F.name||""),ne(F.role==="super_admin"?"super_admin":"admin"),q(F.status==="disabled"?"disabled":"active"),b(!0)},ce=async()=>{var F;if(!_.trim()){w("用户名不能为空");return}if(!S&&!V){w("新建时密码必填,至少 6 位");return}if(V&&V.length<6){w("密码至少 6 位");return}w(null),H(!0);try{if(S){const L=await vt("/api/admin/users",{id:S.id,password:V||void 0,name:R.trim(),role:Y,status:ae});L!=null&&L.success?(b(!1),ie()):w((L==null?void 0:L.error)||"保存失败")}else{const L=await mt("/api/admin/users",{username:_.trim(),password:V,name:R.trim(),role:Y});L!=null&&L.success?(b(!1),ie()):w((L==null?void 0:L.error)||"保存失败")}}catch(L){const Z=L;w(((F=Z==null?void 0:Z.data)==null?void 0:F.error)||"保存失败")}finally{H(!1)}},K=async F=>{var L;if(confirm("确定删除该管理员?"))try{const Z=await Pr(`/api/admin/users?id=${F}`);Z!=null&&Z.success?ie():w((Z==null?void 0:Z.error)||"删除失败")}catch(Z){const G=Z;w(((L=G==null?void 0:G.data)==null?void 0:L.error)||"删除失败")}},A=F=>{if(!F)return"-";try{const L=new Date(F);return isNaN(L.getTime())?F:L.toLocaleString("zh-CN")}catch{return F}};return e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-6",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[e.jsx(vu,{className:"w-5 h-5 text-[#38bdac]"}),"管理员用户"]}),e.jsx("p",{className:"text-gray-400 mt-1",children:"后台登录账号管理,仅超级管理员可操作"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(le,{placeholder:"搜索用户名/昵称",value:y,onChange:F=>g(F.target.value),className:"w-48 bg-[#0f2137] border-gray-700 text-white placeholder:text-gray-500"}),e.jsx(J,{variant:"outline",size:"sm",onClick:ie,disabled:k,className:"border-gray-600 text-gray-300",children:e.jsx($e,{className:`w-4 h-4 ${k?"animate-spin":""}`})}),e.jsxs(J,{onClick:ve,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"}),"新增管理员"]})]})]}),T&&e.jsxs("div",{className:"mb-4 p-3 rounded-lg bg-red-500/10 border border-red-500/20 text-red-400 text-sm flex justify-between items-center",children:[e.jsx("span",{children:T}),e.jsx("button",{type:"button",onClick:()=>w(null),className:"text-red-400 hover:text-red-300",children:"×"})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-0",children:k?e.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):e.jsxs(e.Fragment,{children:[e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"ID"}),e.jsx(be,{className:"text-gray-400",children:"用户名"}),e.jsx(be,{className:"text-gray-400",children:"昵称"}),e.jsx(be,{className:"text-gray-400",children:"角色"}),e.jsx(be,{className:"text-gray-400",children:"状态"}),e.jsx(be,{className:"text-gray-400",children:"创建时间"}),e.jsx(be,{className:"text-right text-gray-400",children:"操作"})]})}),e.jsxs(ps,{children:[r.map(F=>e.jsxs(et,{className:"border-gray-700/50",children:[e.jsx(pe,{className:"text-gray-300",children:F.id}),e.jsx(pe,{className:"text-white font-medium",children:F.username}),e.jsx(pe,{className:"text-gray-400",children:F.name||"-"}),e.jsx(pe,{children:e.jsx(Le,{variant:"outline",className:F.role==="super_admin"?"border-amber-500/50 text-amber-400":"border-gray-600 text-gray-400",children:F.role==="super_admin"?"超级管理员":"管理员"})}),e.jsx(pe,{children:e.jsx(Le,{variant:"outline",className:F.status==="active"?"border-[#38bdac]/50 text-[#38bdac]":"border-gray-500 text-gray-500",children:F.status==="active"?"正常":"已禁用"})}),e.jsx(pe,{className:"text-gray-500 text-sm",children:A(F.createdAt)}),e.jsxs(pe,{className:"text-right",children:[e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>U(F),className:"text-gray-400 hover:text-[#38bdac]",children:e.jsx(ht,{className:"w-4 h-4"})}),e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>K(F.id),className:"text-gray-400 hover:text-red-400",children:e.jsx(Ht,{className:"w-4 h-4"})})]})]},F.id)),r.length===0&&!k&&e.jsx(et,{children:e.jsx(pe,{colSpan:7,className:"text-center py-12 text-gray-500",children:T==="无权限访问"?"仅超级管理员可查看":"暂无管理员"})})]})]}),f>1&&e.jsx("div",{className:"p-4 border-t border-gray-700/50",children:e.jsx(Qs,{page:c,pageSize:m,total:l,totalPages:f,onPageChange:u})})]})})}),e.jsx(Ct,{open:N,onOpenChange:b,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-sm",children:[e.jsx(kt,{children:e.jsx(Et,{className:"text-white",children:S?"编辑管理员":"新增管理员"})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"用户名"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"登录用户名",value:_,onChange:F=>O(F.target.value),disabled:!!S}),S&&e.jsx("p",{className:"text-xs text-gray-500",children:"用户名不可修改"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:S?"新密码(留空不改)":"密码"}),e.jsx(le,{type:"password",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:S?"留空表示不修改":"至少 6 位",value:V,onChange:F=>I(F.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"昵称"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"显示名称",value:R,onChange:F=>E(F.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"角色"}),e.jsxs("select",{value:Y,onChange:F=>ne(F.target.value),className:"w-full h-10 px-3 rounded-md bg-[#0a1628] border border-gray-700 text-white",children:[e.jsx("option",{value:"admin",children:"管理员"}),e.jsx("option",{value:"super_admin",children:"超级管理员"})]})]}),S&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"状态"}),e.jsxs("select",{value:ae,onChange:F=>q(F.target.value),className:"w-full h-10 px-3 rounded-md bg-[#0a1628] border border-gray-700 text-white",children:[e.jsx("option",{value:"active",children:"正常"}),e.jsx("option",{value:"disabled",children:"禁用"})]})]})]}),e.jsxs(Dt,{children:[e.jsxs(J,{variant:"outline",onClick:()=>b(!1),className:"border-gray-600 text-gray-300",children:[e.jsx(ms,{className:"w-4 h-4 mr-2"}),"取消"]}),e.jsxs(J,{onClick:ce,disabled:se,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),se?"保存中...":"保存"]})]})]})})]})}const vC={appId:"wxb8bbb2b10dec74aa",withdrawSubscribeTmplId:"u3MbZGPRkrZIk-I7QdpwzFxnO_CeQPaCWF2FkiIablE",mchId:"1318592501",minWithdraw:10},jC={name:"卡若",startDate:"2025年10月15日",bio:"连续创业者,私域运营专家,每天早上6-9点在Soul派对房分享真实商业故事",liveTime:"06:00-09:00",platform:"Soul派对房",description:"连续创业者,私域运营专家"},bC={sectionPrice:1,baseBookPrice:9.9,distributorShare:90,authorInfo:{...jC}},NC={matchEnabled:!0,referralEnabled:!0,searchEnabled:!0,aboutEnabled:!0},wC=["system","author","admin"];function SC(){const[r,a]=$x(),l=r.get("tab")??"system",o=wC.includes(l)?l:"system",[c,u]=h.useState(bC),[m,f]=h.useState(NC),[p,y]=h.useState(vC),[g,v]=h.useState(!1),[k,P]=h.useState(!0),[T,w]=h.useState(!1),[N,b]=h.useState(""),[S,j]=h.useState(""),[_,O]=h.useState(!1),[V,I]=h.useState(!1),R=(q,se,H=!1)=>{b(q),j(se),O(H),w(!0)};h.useEffect(()=>{(async()=>{try{const se=await Be("/api/admin/settings");if(!se||se.success===!1)return;if(se.featureConfig&&Object.keys(se.featureConfig).length&&f(H=>({...H,...se.featureConfig})),se.mpConfig&&typeof se.mpConfig=="object"&&y(H=>({...H,...se.mpConfig})),se.siteSettings&&typeof se.siteSettings=="object"){const H=se.siteSettings;u(ie=>({...ie,...typeof H.sectionPrice=="number"&&{sectionPrice:H.sectionPrice},...typeof H.baseBookPrice=="number"&&{baseBookPrice:H.baseBookPrice},...typeof H.distributorShare=="number"&&{distributorShare:H.distributorShare},...H.authorInfo&&typeof H.authorInfo=="object"&&{authorInfo:{...ie.authorInfo,...H.authorInfo}}}))}}catch(se){console.error("Load settings error:",se)}finally{P(!1)}})()},[]);const E=async(q,se)=>{I(!0);try{const H=await mt("/api/admin/settings",{featureConfig:q});if(!H||H.success===!1){se(),R("保存失败",(H==null?void 0:H.error)??"未知错误",!0);return}R("已保存","功能开关已更新,相关入口将随之显示或隐藏。")}catch(H){console.error("Save feature config error:",H),se(),R("保存失败",H instanceof Error?H.message:String(H),!0)}finally{I(!1)}},Y=(q,se)=>{const H=m,ie={...H,[q]:se};f(ie),E(ie,()=>f(H))},ne=async()=>{v(!0);try{const q=await mt("/api/admin/settings",{featureConfig:m,siteSettings:{sectionPrice:c.sectionPrice,baseBookPrice:c.baseBookPrice,distributorShare:c.distributorShare,authorInfo:c.authorInfo},mpConfig:{...p,appId:p.appId||"",withdrawSubscribeTmplId:p.withdrawSubscribeTmplId||"",mchId:p.mchId||"",minWithdraw:typeof p.minWithdraw=="number"?p.minWithdraw:10}});if(!q||q.success===!1){R("保存失败",(q==null?void 0:q.error)??"未知错误",!0);return}R("已保存","设置已保存成功。")}catch(q){console.error("Save settings error:",q),R("保存失败",q instanceof Error?q.message:String(q),!0)}finally{v(!1)}},ae=q=>{a(q==="system"?{}:{tab:q})};return k?e.jsx("div",{className:"p-8 text-gray-500",children:"加载中..."}):e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-white",children:"系统设置"}),e.jsx("p",{className:"text-gray-400 mt-1",children:"配置全站基础参数与开关"})]}),o==="system"&&e.jsxs(J,{onClick:ne,disabled:g,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),g?"保存中...":"保存设置"]})]}),e.jsxs($l,{value:o,onValueChange:ae,className:"w-full",children:[e.jsxs($a,{className:"mb-6 bg-[#0f2137] border border-gray-700/50 p-1",children:[e.jsxs(Lt,{value:"system",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400 data-[state=active]:font-medium",children:[e.jsx(Bn,{className:"w-4 h-4 mr-2"}),"系统设置"]}),e.jsxs(Lt,{value:"author",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400 data-[state=active]:font-medium",children:[e.jsx(Cd,{className:"w-4 h-4 mr-2"}),"作者详情"]}),e.jsxs(Lt,{value:"admin",className:"data-[state=active]:bg-[#38bdac]/20 data-[state=active]:text-[#38bdac] text-gray-400 data-[state=active]:font-medium",children:[e.jsx(vu,{className:"w-4 h-4 mr-2"}),"管理员"]})]}),e.jsx(Ot,{value:"system",className:"mt-0",children:e.jsxs("div",{className:"space-y-6",children:[e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Cd,{className:"w-5 h-5 text-[#38bdac]"}),"关于作者"]}),e.jsx(jt,{className:"text-gray-400",children:'配置作者信息,将在"关于作者"页面显示'})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{htmlFor:"author-name",className:"text-gray-300 flex items-center gap-1",children:[e.jsx(Cd,{className:"w-3 h-3"}),"主理人名称"]}),e.jsx(le,{id:"author-name",className:"bg-[#0a1628] border-gray-700 text-white",value:c.authorInfo.name??"",onChange:q=>u(se=>({...se,authorInfo:{...se.authorInfo,name:q.target.value}}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{htmlFor:"start-date",className:"text-gray-300 flex items-center gap-1",children:[e.jsx(oo,{className:"w-3 h-3"}),"开播日期"]}),e.jsx(le,{id:"start-date",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例如: 2025年10月15日",value:c.authorInfo.startDate??"",onChange:q=>u(se=>({...se,authorInfo:{...se.authorInfo,startDate:q.target.value}}))})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{htmlFor:"live-time",className:"text-gray-300 flex items-center gap-1",children:[e.jsx(oo,{className:"w-3 h-3"}),"直播时间"]}),e.jsx(le,{id:"live-time",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例如: 06:00-09:00",value:c.authorInfo.liveTime??"",onChange:q=>u(se=>({...se,authorInfo:{...se.authorInfo,liveTime:q.target.value}}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{htmlFor:"platform",className:"text-gray-300 flex items-center gap-1",children:[e.jsx(Yx,{className:"w-3 h-3"}),"直播平台"]}),e.jsx(le,{id:"platform",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"例如: Soul派对房",value:c.authorInfo.platform??"",onChange:q=>u(se=>({...se,authorInfo:{...se.authorInfo,platform:q.target.value}}))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{htmlFor:"description",className:"text-gray-300 flex items-center gap-1",children:[e.jsx(qs,{className:"w-3 h-3"}),"简介描述"]}),e.jsx(le,{id:"description",className:"bg-[#0a1628] border-gray-700 text-white",value:c.authorInfo.description??"",onChange:q=>u(se=>({...se,authorInfo:{...se.authorInfo,description:q.target.value}}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{htmlFor:"bio",className:"text-gray-300",children:"详细介绍"}),e.jsx(un,{id:"bio",className:"bg-[#0a1628] border-gray-700 text-white min-h-[100px]",placeholder:"输入作者详细介绍...",value:c.authorInfo.bio??"",onChange:q=>u(se=>({...se,authorInfo:{...se.authorInfo,bio:q.target.value}}))})]}),e.jsxs("div",{className:"mt-4 p-4 rounded-xl bg-[#0a1628] border border-[#38bdac]/30",children:[e.jsx("p",{className:"text-xs text-gray-500 mb-2",children:"预览效果"}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-12 h-12 rounded-full bg-gradient-to-br from-[#00CED1] to-[#20B2AA] flex items-center justify-center text-xl font-bold text-white",children:(c.authorInfo.name??"K").charAt(0)}),e.jsxs("div",{children:[e.jsx("p",{className:"text-white font-semibold",children:c.authorInfo.name}),e.jsx("p",{className:"text-gray-400 text-xs",children:c.authorInfo.description}),e.jsxs("p",{className:"text-[#38bdac] text-xs mt-1",children:["每日 ",c.authorInfo.liveTime," · ",c.authorInfo.platform]})]})]})]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Ml,{className:"w-5 h-5 text-[#38bdac]"}),"价格设置"]}),e.jsx(jt,{className:"text-gray-400",children:"配置书籍和章节的定价"})]}),e.jsx(we,{className:"space-y-4",children:e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"单节价格 (元)"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:c.sectionPrice,onChange:q=>u(se=>({...se,sectionPrice:Number.parseFloat(q.target.value)||1}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"整本价格 (元)"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:c.baseBookPrice,onChange:q=>u(se=>({...se,baseBookPrice:Number.parseFloat(q.target.value)||9.9}))})]})]})})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Al,{className:"w-5 h-5 text-[#38bdac]"}),"小程序配置"]}),e.jsx(jt,{className:"text-gray-400",children:"订阅消息模板、支付商户号等,小程序从 /api/miniprogram/config 读取(API 地址由 app.js baseUrl 控制)"})]}),e.jsx(we,{className:"space-y-4",children:e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"小程序 AppID"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"wxb8bbb2b10dec74aa",value:p.appId??"",onChange:q=>y(se=>({...se,appId:q.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"提现订阅模板 ID"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"用户申请提现时需授权",value:p.withdrawSubscribeTmplId??"",onChange:q=>y(se=>({...se,withdrawSubscribeTmplId:q.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"微信支付商户号"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"1318592501",value:p.mchId??"",onChange:q=>y(se=>({...se,mchId:q.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"最低提现金额 (元)"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:p.minWithdraw??10,onChange:q=>y(se=>({...se,minWithdraw:Number.parseFloat(q.target.value)||10}))})]})]})})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Bn,{className:"w-5 h-5 text-[#38bdac]"}),"功能开关"]}),e.jsx(jt,{className:"text-gray-400",children:"控制各个功能模块的显示/隐藏"})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg bg-[#0a1628] border border-gray-700/50",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Yt,{className:"w-4 h-4 text-[#38bdac]"}),e.jsx(te,{htmlFor:"match-enabled",className:"text-white font-medium cursor-pointer",children:"找伙伴功能"})]}),e.jsx("p",{className:"text-xs text-gray-400 ml-6",children:"控制小程序和Web端的找伙伴功能显示"})]}),e.jsx(ot,{id:"match-enabled",checked:m.matchEnabled,disabled:V,onCheckedChange:q=>Y("matchEnabled",q)})]}),e.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg bg-[#0a1628] border border-gray-700/50",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(yb,{className:"w-4 h-4 text-[#38bdac]"}),e.jsx(te,{htmlFor:"referral-enabled",className:"text-white font-medium cursor-pointer",children:"推广功能"})]}),e.jsx("p",{className:"text-xs text-gray-400 ml-6",children:"控制推广中心的显示(我的页面入口)"})]}),e.jsx(ot,{id:"referral-enabled",checked:m.referralEnabled,disabled:V,onCheckedChange:q=>Y("referralEnabled",q)})]}),e.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg bg-[#0a1628] border border-gray-700/50",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(qs,{className:"w-4 h-4 text-[#38bdac]"}),e.jsx(te,{htmlFor:"search-enabled",className:"text-white font-medium cursor-pointer",children:"搜索功能"})]}),e.jsx("p",{className:"text-xs text-gray-400 ml-6",children:"控制首页搜索栏的显示"})]}),e.jsx(ot,{id:"search-enabled",checked:m.searchEnabled,disabled:V,onCheckedChange:q=>Y("searchEnabled",q)})]}),e.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg bg-[#0a1628] border border-gray-700/50",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Bn,{className:"w-4 h-4 text-[#38bdac]"}),e.jsx(te,{htmlFor:"about-enabled",className:"text-white font-medium cursor-pointer",children:"关于页面"})]}),e.jsx("p",{className:"text-xs text-gray-400 ml-6",children:"控制关于页面的访问"})]}),e.jsx(ot,{id:"about-enabled",checked:m.aboutEnabled,disabled:V,onCheckedChange:q=>Y("aboutEnabled",q)})]})]}),e.jsx("div",{className:"p-3 rounded-lg bg-blue-500/10 border border-blue-500/30",children:e.jsx("p",{className:"text-xs text-blue-300",children:"💡 关闭功能后,相关入口会自动隐藏。建议在功能开发完成后再开启。"})})]})]})]})}),e.jsx(Ot,{value:"author",className:"mt-0",children:e.jsx(gC,{})}),e.jsx(Ot,{value:"admin",className:"mt-0",children:e.jsx(yC,{})})]}),e.jsx(Ct,{open:T,onOpenChange:w,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white",showCloseButton:!0,children:[e.jsxs(kt,{children:[e.jsx(Et,{className:_?"text-red-400":"text-[#38bdac]",children:N}),e.jsx(m2,{className:"text-gray-400 whitespace-pre-wrap pt-2",children:S})]}),e.jsx(Dt,{className:"mt-4",children:e.jsx(J,{onClick:()=>w(!1),className:_?"bg-gray-600 hover:bg-gray-500":"bg-[#38bdac] hover:bg-[#2da396]",children:"确定"})})]})})]})}const Nx={wechat:{enabled:!0,qrCode:"/images/wechat-pay.png",account:"卡若",websiteAppId:"",merchantId:"",groupQrCode:"/images/party-group-qr.png"},alipay:{enabled:!0,qrCode:"/images/alipay.png",account:"卡若",partnerId:"",securityKey:""},usdt:{enabled:!1,network:"TRC20",address:"",exchangeRate:7.2},paypal:{enabled:!1,email:"",exchangeRate:7.2}};function CC(){const[r,a]=h.useState(!1),[l,o]=h.useState(Nx),[c,u]=h.useState(""),m=async()=>{a(!0);try{const b=await Be("/api/config");b!=null&&b.paymentMethods&&o({...Nx,...b.paymentMethods})}catch(b){console.error(b)}finally{a(!1)}};h.useEffect(()=>{m()},[]);const f=async()=>{a(!0);try{await mt("/api/db/config",{key:"payment_methods",value:l,description:"支付方式配置"}),alert("配置已保存!")}catch(b){console.error("保存失败:",b),alert("保存失败: "+(b instanceof Error?b.message:String(b)))}finally{a(!1)}},p=(b,S)=>{navigator.clipboard.writeText(b),u(S),setTimeout(()=>u(""),2e3)},y=(b,S)=>{o(j=>({...j,wechat:{...j.wechat,[b]:S}}))},g=(b,S)=>{o(j=>({...j,alipay:{...j.alipay,[b]:S}}))},v=(b,S)=>{o(j=>({...j,usdt:{...j.usdt,[b]:S}}))},k=(b,S)=>{o(j=>({...j,paypal:{...j.paypal,[b]:S}}))},P=l.wechat,T=l.alipay,w=l.usdt,N=l.paypal;return e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-8",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold mb-2 text-white",children:"支付配置"}),e.jsx("p",{className:"text-gray-400",children:"配置微信、支付宝、USDT、PayPal等支付参数"})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsxs(J,{variant:"outline",onClick:m,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${r?"animate-spin":""}`}),"同步配置"]}),e.jsxs(J,{onClick:f,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),"保存配置"]})]})]}),e.jsx("div",{className:"mb-6 bg-[#07C160]/10 border border-[#07C160]/30 rounded-xl p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Vx,{className:"w-5 h-5 text-[#07C160] flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm",children:[e.jsx("p",{className:"font-medium mb-2 text-[#07C160]",children:"如何获取微信群跳转链接?"}),e.jsxs("ol",{className:"text-[#07C160]/80 space-y-1 list-decimal list-inside",children:[e.jsx("li",{children:"打开微信,进入目标微信群"}),e.jsx("li",{children:'点击右上角"..." → "群二维码"'}),e.jsx("li",{children:'点击右上角"..." → "发送到电脑"'}),e.jsx("li",{children:"在电脑上保存二维码图片,上传到图床获取URL"}),e.jsx("li",{children:"或使用草料二维码等工具解析二维码获取链接"})]}),e.jsx("p",{className:"text-[#07C160]/60 mt-2",children:"提示:微信群二维码7天后失效,建议使用活码工具"})]})]})}),e.jsxs($l,{defaultValue:"wechat",className:"space-y-6",children:[e.jsxs($a,{className:"bg-[#0f2137] border border-gray-700/50 p-1 grid grid-cols-4 w-full",children:[e.jsxs(Lt,{value:"wechat",className:"data-[state=active]:bg-[#07C160]/20 data-[state=active]:text-[#07C160] text-gray-400",children:[e.jsx(Al,{className:"w-4 h-4 mr-2"}),"微信"]}),e.jsxs(Lt,{value:"alipay",className:"data-[state=active]:bg-[#1677FF]/20 data-[state=active]:text-[#1677FF] text-gray-400",children:[e.jsx(zf,{className:"w-4 h-4 mr-2"}),"支付宝"]}),e.jsxs(Lt,{value:"usdt",className:"data-[state=active]:bg-[#26A17B]/20 data-[state=active]:text-[#26A17B] text-gray-400",children:[e.jsx(Of,{className:"w-4 h-4 mr-2"}),"USDT"]}),e.jsxs(Lt,{value:"paypal",className:"data-[state=active]:bg-[#003087]/20 data-[state=active]:text-[#169BD7] text-gray-400",children:[e.jsx(Qd,{className:"w-4 h-4 mr-2"}),"PayPal"]})]}),e.jsx(Ot,{value:"wechat",className:"space-y-4",children:e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{className:"flex flex-row items-center justify-between pb-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs(Ge,{className:"text-[#07C160] flex items-center gap-2",children:[e.jsx(Al,{className:"w-5 h-5"}),"微信支付配置"]}),e.jsx(jt,{className:"text-gray-400",children:"配置微信支付参数和跳转链接"})]}),e.jsx(ot,{checked:!!P.enabled,onCheckedChange:b=>y("enabled",b)})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"网站AppID"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white font-mono text-sm",value:String(P.websiteAppId??""),onChange:b=>y("websiteAppId",b.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"商户号"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white font-mono text-sm",value:String(P.merchantId??""),onChange:b=>y("merchantId",b.target.value)})]})]}),e.jsxs("div",{className:"border-t border-gray-700/50 pt-4 space-y-4",children:[e.jsxs("h4",{className:"text-white font-medium flex items-center gap-2",children:[e.jsx(co,{className:"w-4 h-4 text-[#38bdac]"}),"跳转链接配置(核心功能)"]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"微信收款码/支付链接"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",placeholder:"https://收款码图片URL 或 weixin://支付链接",value:String(P.qrCode??""),onChange:b=>y("qrCode",b.target.value)}),e.jsx("p",{className:"text-xs text-gray-500",children:"用户点击微信支付后显示的二维码图片URL"})]}),e.jsxs("div",{className:"space-y-2 bg-[#07C160]/5 p-4 rounded-xl border border-[#07C160]/20",children:[e.jsx(te,{className:"text-[#07C160] font-medium",children:"微信群跳转链接(支付成功后跳转)"}),e.jsx(le,{className:"bg-[#0a1628] border-[#07C160]/30 text-white placeholder:text-gray-500",placeholder:"https://weixin.qq.com/g/... 或微信群二维码图片URL",value:String(P.groupQrCode??""),onChange:b=>y("groupQrCode",b.target.value)}),e.jsx("p",{className:"text-xs text-[#07C160]/70",children:"用户支付成功后将自动跳转到此链接,进入指定微信群"})]})]})]})]})}),e.jsx(Ot,{value:"alipay",className:"space-y-4",children:e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{className:"flex flex-row items-center justify-between pb-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs(Ge,{className:"text-[#1677FF] flex items-center gap-2",children:[e.jsx(zf,{className:"w-5 h-5"}),"支付宝配置"]}),e.jsx(jt,{className:"text-gray-400",children:"已加载真实支付宝参数"})]}),e.jsx(ot,{checked:!!T.enabled,onCheckedChange:b=>g("enabled",b)})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"合作者身份 (PID)"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white font-mono text-sm",value:String(T.partnerId??""),onChange:b=>g("partnerId",b.target.value)}),e.jsx(J,{size:"icon",variant:"outline",className:"border-gray-700 bg-transparent",onClick:()=>p(String(T.partnerId??""),"pid"),children:c==="pid"?e.jsx(wo,{className:"w-4 h-4 text-green-500"}):e.jsx(Hx,{className:"w-4 h-4 text-gray-400"})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"安全校验码 (Key)"}),e.jsx(le,{type:"password",className:"bg-[#0a1628] border-gray-700 text-white font-mono text-sm",value:String(T.securityKey??""),onChange:b=>g("securityKey",b.target.value)})]})]}),e.jsxs("div",{className:"border-t border-gray-700/50 pt-4 space-y-4",children:[e.jsxs("h4",{className:"text-white font-medium flex items-center gap-2",children:[e.jsx(co,{className:"w-4 h-4 text-[#38bdac]"}),"跳转链接配置"]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"支付宝收款码/跳转链接"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500",placeholder:"https://qr.alipay.com/... 或收款码图片URL",value:String(T.qrCode??""),onChange:b=>g("qrCode",b.target.value)}),e.jsx("p",{className:"text-xs text-gray-500",children:"用户点击支付宝支付后显示的二维码"})]})]})]})]})}),e.jsx(Ot,{value:"usdt",className:"space-y-4",children:e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{className:"flex flex-row items-center justify-between pb-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs(Ge,{className:"text-[#26A17B] flex items-center gap-2",children:[e.jsx(Of,{className:"w-5 h-5"}),"USDT配置"]}),e.jsx(jt,{className:"text-gray-400",children:"配置加密货币收款地址"})]}),e.jsx(ot,{checked:!!w.enabled,onCheckedChange:b=>v("enabled",b)})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"网络类型"}),e.jsxs("select",{className:"w-full bg-[#0a1628] border border-gray-700 text-white rounded-md p-2",value:String(w.network??"TRC20"),onChange:b=>v("network",b.target.value),children:[e.jsx("option",{value:"TRC20",children:"TRC20 (波场)"}),e.jsx("option",{value:"ERC20",children:"ERC20 (以太坊)"}),e.jsx("option",{value:"BEP20",children:"BEP20 (币安链)"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"收款地址"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white font-mono text-sm",placeholder:"T... (TRC20地址)",value:String(w.address??""),onChange:b=>v("address",b.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"汇率 (1 USD = ? CNY)"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:Number(w.exchangeRate)??7.2,onChange:b=>v("exchangeRate",Number.parseFloat(b.target.value)||7.2)})]})]})]})}),e.jsx(Ot,{value:"paypal",className:"space-y-4",children:e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{className:"flex flex-row items-center justify-between pb-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs(Ge,{className:"text-[#169BD7] flex items-center gap-2",children:[e.jsx(Qd,{className:"w-5 h-5"}),"PayPal配置"]}),e.jsx(jt,{className:"text-gray-400",children:"配置PayPal收款账户"})]}),e.jsx(ot,{checked:!!N.enabled,onCheckedChange:b=>k("enabled",b)})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"PayPal邮箱"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"your@email.com",value:String(N.email??""),onChange:b=>k("email",b.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"汇率 (1 USD = ? CNY)"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:Number(N.exchangeRate)??7.2,onChange:b=>k("exchangeRate",Number(b.target.value)||7.2)})]})]})]})})]})]})}const kC={siteName:"卡若日记",siteTitle:"一场SOUL的创业实验场",siteDescription:"来自Soul派对房的真实商业故事",logo:"/logo.png",favicon:"/favicon.ico",primaryColor:"#00CED1"},EC={home:{enabled:!0,label:"首页"},chapters:{enabled:!0,label:"目录"},match:{enabled:!0,label:"匹配"},my:{enabled:!0,label:"我的"}},PC={homeTitle:"一场SOUL的创业实验场",homeSubtitle:"来自Soul派对房的真实商业故事",chaptersTitle:"我要看",matchTitle:"语音匹配",myTitle:"我的",aboutTitle:"关于作者"};function TC(){const[r,a]=h.useState({siteConfig:{...kC},menuConfig:{...EC},pageConfig:{...PC}}),[l,o]=h.useState(!1),[c,u]=h.useState(!1);h.useEffect(()=>{Be("/api/config").then(g=>{g!=null&&g.siteConfig&&a(v=>({...v,siteConfig:{...v.siteConfig,...g.siteConfig}})),g!=null&&g.menuConfig&&a(v=>({...v,menuConfig:{...v.menuConfig,...g.menuConfig}})),g!=null&&g.pageConfig&&a(v=>({...v,pageConfig:{...v.pageConfig,...g.pageConfig}}))}).catch(console.error)},[]);const m=async()=>{u(!0);try{await mt("/api/db/config",{key:"site_config",value:r.siteConfig,description:"网站基础配置"}),await mt("/api/db/config",{key:"menu_config",value:r.menuConfig,description:"底部菜单配置"}),await mt("/api/db/config",{key:"page_config",value:r.pageConfig,description:"页面标题配置"}),o(!0),setTimeout(()=>o(!1),2e3),alert("配置已保存")}catch(g){console.error(g),alert("保存失败: "+(g instanceof Error?g.message:String(g)))}finally{u(!1)}},f=r.siteConfig,p=r.menuConfig,y=r.pageConfig;return e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-8",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-white",children:"网站配置"}),e.jsx("p",{className:"text-gray-400 mt-1",children:"配置网站名称、图标、菜单和页面标题"})]}),e.jsxs(J,{onClick:m,disabled:c,className:`${l?"bg-green-500":"bg-[#00CED1]"} hover:bg-[#20B2AA] text-white transition-colors`,children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),c?"保存中...":l?"已保存":"保存设置"]})]}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Qd,{className:"w-5 h-5 text-[#00CED1]"}),"网站基础信息"]}),e.jsx(jt,{className:"text-gray-400",children:"配置网站名称、标题和描述"})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{htmlFor:"site-name",className:"text-gray-300",children:"网站名称"}),e.jsx(le,{id:"site-name",className:"bg-[#0a1628] border-gray-700 text-white",value:f.siteName??"",onChange:g=>a(v=>({...v,siteConfig:{...v.siteConfig,siteName:g.target.value}}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{htmlFor:"site-title",className:"text-gray-300",children:"网站标题"}),e.jsx(le,{id:"site-title",className:"bg-[#0a1628] border-gray-700 text-white",value:f.siteTitle??"",onChange:g=>a(v=>({...v,siteConfig:{...v.siteConfig,siteTitle:g.target.value}}))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{htmlFor:"site-desc",className:"text-gray-300",children:"网站描述"}),e.jsx(le,{id:"site-desc",className:"bg-[#0a1628] border-gray-700 text-white",value:f.siteDescription??"",onChange:g=>a(v=>({...v,siteConfig:{...v.siteConfig,siteDescription:g.target.value}}))})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{htmlFor:"logo",className:"text-gray-300",children:"Logo地址"}),e.jsx(le,{id:"logo",className:"bg-[#0a1628] border-gray-700 text-white",value:f.logo??"",onChange:g=>a(v=>({...v,siteConfig:{...v.siteConfig,logo:g.target.value}}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{htmlFor:"favicon",className:"text-gray-300",children:"Favicon地址"}),e.jsx(le,{id:"favicon",className:"bg-[#0a1628] border-gray-700 text-white",value:f.favicon??"",onChange:g=>a(v=>({...v,siteConfig:{...v.siteConfig,favicon:g.target.value}}))})]})]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Gb,{className:"w-5 h-5 text-[#00CED1]"}),"主题颜色"]}),e.jsx(jt,{className:"text-gray-400",children:"配置网站主题色"})]}),e.jsx(we,{children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"space-y-2 flex-1",children:[e.jsx(te,{htmlFor:"primary-color",className:"text-gray-300",children:"主色调"}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(le,{id:"primary-color",type:"color",className:"w-16 h-10 bg-[#0a1628] border-gray-700 cursor-pointer p-1",value:f.primaryColor??"#00CED1",onChange:g=>a(v=>({...v,siteConfig:{...v.siteConfig,primaryColor:g.target.value}}))}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white flex-1",value:f.primaryColor??"#00CED1",onChange:g=>a(v=>({...v,siteConfig:{...v.siteConfig,primaryColor:g.target.value}}))})]})]}),e.jsx("div",{className:"w-24 h-24 rounded-xl flex items-center justify-center text-white font-bold",style:{backgroundColor:f.primaryColor??"#00CED1"},children:"预览"})]})})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Ub,{className:"w-5 h-5 text-[#00CED1]"}),"底部菜单配置"]}),e.jsx(jt,{className:"text-gray-400",children:"控制底部导航栏菜单的显示和名称"})]}),e.jsx(we,{className:"space-y-4",children:Object.entries(p).map(([g,v])=>e.jsxs("div",{className:"flex items-center justify-between p-4 bg-[#0a1628] rounded-lg",children:[e.jsxs("div",{className:"flex items-center gap-4 flex-1",children:[e.jsx(ot,{checked:(v==null?void 0:v.enabled)??!0,onCheckedChange:k=>a(P=>({...P,menuConfig:{...P.menuConfig,[g]:{...v,enabled:k}}}))}),e.jsx("span",{className:"text-gray-300 w-16 capitalize",children:g}),e.jsx(le,{className:"bg-[#0f2137] border-gray-700 text-white max-w-[200px]",value:(v==null?void 0:v.label)??"",onChange:k=>a(P=>({...P,menuConfig:{...P.menuConfig,[g]:{...v,label:k.target.value}}}))})]}),e.jsx("span",{className:`text-sm ${v!=null&&v.enabled?"text-green-400":"text-gray-500"}`,children:v!=null&&v.enabled?"显示":"隐藏"})]},g))})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(xb,{className:"w-5 h-5 text-[#00CED1]"}),"页面标题配置"]}),e.jsx(jt,{className:"text-gray-400",children:"配置各个页面的标题和副标题"})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"首页标题"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:y.homeTitle??"",onChange:g=>a(v=>({...v,pageConfig:{...v.pageConfig,homeTitle:g.target.value}}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"首页副标题"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:y.homeSubtitle??"",onChange:g=>a(v=>({...v,pageConfig:{...v.pageConfig,homeSubtitle:g.target.value}}))})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"目录页标题"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:y.chaptersTitle??"",onChange:g=>a(v=>({...v,pageConfig:{...v.pageConfig,chaptersTitle:g.target.value}}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"匹配页标题"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:y.matchTitle??"",onChange:g=>a(v=>({...v,pageConfig:{...v.pageConfig,matchTitle:g.target.value}}))})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"我的页标题"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:y.myTitle??"",onChange:g=>a(v=>({...v,pageConfig:{...v.pageConfig,myTitle:g.target.value}}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"关于作者标题"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",value:y.aboutTitle??"",onChange:g=>a(v=>({...v,pageConfig:{...v.pageConfig,aboutTitle:g.target.value}}))})]})]})]})]})]})]})}function RC(){const[r,a]=h.useState(""),[l,o]=h.useState(""),[c,u]=h.useState(""),[m,f]=h.useState({}),p=async()=>{var P,T,w,N;try{const b=await Be("/api/config"),S=(T=(P=b==null?void 0:b.liveQRCodes)==null?void 0:P[0])==null?void 0:T.urls;Array.isArray(S)&&a(S.join(` +`));const j=(N=(w=b==null?void 0:b.paymentMethods)==null?void 0:w.wechat)==null?void 0:N.groupQrCode;j&&o(j),f({paymentMethods:b==null?void 0:b.paymentMethods,liveQRCodes:b==null?void 0:b.liveQRCodes})}catch(b){console.error(b)}};h.useEffect(()=>{p()},[]);const y=(P,T)=>{navigator.clipboard.writeText(P),u(T),setTimeout(()=>u(""),2e3)},g=async()=>{try{const P=r.split(` +`).map(w=>w.trim()).filter(Boolean),T=[...m.liveQRCodes||[]];T[0]?T[0].urls=P:T.push({id:"live-1",name:"微信群活码",urls:P,clickCount:0}),await mt("/api/db/config",{key:"live_qr_codes",value:T,description:"群活码配置"}),alert("群活码配置已保存!"),await p()}catch(P){console.error(P),alert("保存失败: "+(P instanceof Error?P.message:String(P)))}},v=async()=>{var P;try{await mt("/api/db/config",{key:"payment_methods",value:{...m.paymentMethods||{},wechat:{...((P=m.paymentMethods)==null?void 0:P.wechat)||{},groupQrCode:l}},description:"支付方式配置"}),alert("微信群链接已保存!用户支付成功后将自动跳转"),await p()}catch(T){console.error(T),alert("保存失败: "+(T instanceof Error?T.message:String(T)))}},k=()=>{l?window.open(l,"_blank"):alert("请先配置微信群链接")};return e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"mb-8",children:[e.jsx("h2",{className:"text-2xl font-bold text-white",children:"微信群活码管理"}),e.jsx("p",{className:"text-gray-400 mt-1",children:"配置微信群跳转链接,用户支付后自动跳转加群"})]}),e.jsx("div",{className:"mb-6 bg-[#07C160]/10 border border-[#07C160]/30 rounded-xl p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Vx,{className:"w-5 h-5 text-[#07C160] flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm",children:[e.jsx("p",{className:"font-medium mb-2 text-[#07C160]",children:"微信群活码配置指南"}),e.jsxs("div",{className:"text-[#07C160]/80 space-y-2",children:[e.jsx("p",{className:"font-medium",children:"方法一:使用草料活码(推荐)"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 pl-2",children:[e.jsx("li",{children:"访问草料二维码创建活码"}),e.jsx("li",{children:"上传微信群二维码图片,生成永久链接"}),e.jsx("li",{children:"复制生成的短链接填入下方配置"}),e.jsx("li",{children:"群满后可直接在草料后台更换新群码,链接不变"})]}),e.jsx("p",{className:"font-medium mt-3",children:"方法二:直接使用微信群链接"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 pl-2",children:[e.jsx("li",{children:'微信打开目标群 → 右上角"..." → 群二维码'}),e.jsx("li",{children:"长按二维码 → 识别二维码 → 复制链接"})]}),e.jsx("p",{className:"text-[#07C160]/60 mt-2",children:"注意:微信原生群二维码7天后失效,建议使用草料活码"})]})]})]})}),e.jsxs("div",{className:"grid gap-6 md:grid-cols-2",children:[e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl md:col-span-2",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-[#07C160] flex items-center gap-2",children:[e.jsx(Uf,{className:"w-5 h-5"}),"支付成功跳转链接(核心配置)"]}),e.jsx(jt,{className:"text-gray-400",children:"用户支付完成后自动跳转到此链接,进入指定微信群"})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{className:"text-gray-300 flex items-center gap-2",children:[e.jsx(Bf,{className:"w-4 h-4"}),"微信群链接 / 活码链接"]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(le,{placeholder:"https://cli.im/xxxxx 或 https://weixin.qq.com/g/...",className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500 flex-1",value:l,onChange:P=>o(P.target.value)}),e.jsx(J,{variant:"outline",size:"icon",className:"border-gray-700 bg-transparent hover:bg-gray-700/50",onClick:()=>y(l,"group"),children:c==="group"?e.jsx(wo,{className:"w-4 h-4 text-green-500"}):e.jsx(Hx,{className:"w-4 h-4 text-gray-400"})})]}),e.jsxs("p",{className:"text-xs text-gray-500 flex items-center gap-1",children:[e.jsx(co,{className:"w-3 h-3"}),"支持格式:草料短链、微信群链接(https://weixin.qq.com/g/...)、企业微信链接等"]})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsxs(J,{onClick:v,className:"flex-1 bg-[#07C160] hover:bg-[#06AD51] text-white",children:[e.jsx(uo,{className:"w-4 h-4 mr-2"}),"保存配置"]}),e.jsxs(J,{onClick:k,variant:"outline",className:"border-[#07C160] text-[#07C160] hover:bg-[#07C160]/10 bg-transparent",children:[e.jsx(co,{className:"w-4 h-4 mr-2"}),"测试跳转"]})]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl md:col-span-2",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Uf,{className:"w-5 h-5 text-[#38bdac]"}),"多群轮换(高级配置)"]}),e.jsx(jt,{className:"text-gray-400",children:"配置多个群链接,系统自动轮换分配,避免单群满员"})]}),e.jsxs(we,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(te,{className:"text-gray-300 flex items-center gap-2",children:[e.jsx(Bf,{className:"w-4 h-4"}),"多个群链接(每行一个)"]}),e.jsx(un,{placeholder:"https://cli.im/group1\\nhttps://cli.im/group2",className:"bg-[#0a1628] border-gray-700 text-white placeholder:text-gray-500 min-h-[120px] font-mono text-sm",value:r,onChange:P=>a(P.target.value)}),e.jsx("p",{className:"text-xs text-gray-500",children:"每行填写一个群链接,系统将按顺序或随机分配"})]}),e.jsxs("div",{className:"flex items-center justify-between p-3 bg-[#0a1628] rounded-lg border border-gray-700/50",children:[e.jsx("span",{className:"text-sm text-gray-400",children:"已配置群数量"}),e.jsxs("span",{className:"font-bold text-[#38bdac]",children:[r.split(` +`).filter(Boolean).length," 个"]})]}),e.jsxs(J,{onClick:g,className:"w-full bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(uo,{className:"w-4 h-4 mr-2"}),"保存多群配置"]})]})]})]}),e.jsxs("div",{className:"mt-6 bg-[#0f2137] rounded-xl p-4 border border-gray-700/50",children:[e.jsx("h4",{className:"text-white font-medium mb-3",children:"常见问题"}),e.jsxs("div",{className:"space-y-3 text-sm",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[#38bdac]",children:"Q: 为什么推荐使用草料活码?"}),e.jsx("p",{className:"text-gray-400",children:"A: 草料活码是永久链接,群满后可直接在后台更换新群码,无需修改网站配置。微信原生群码7天失效。"})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[#38bdac]",children:"Q: 支付后没有跳转怎么办?"}),e.jsx("p",{className:"text-gray-400",children:"A: 1) 检查链接是否正确填写 2) 部分浏览器可能拦截弹窗,用户需手动允许 3) 建议使用https开头的链接"})]})]})]})]})}const wx={matchTypes:[{id:"partner",label:"创业合伙",matchLabel:"创业伙伴",icon:"⭐",matchFromDB:!0,showJoinAfterMatch:!1,price:1,enabled:!0},{id:"investor",label:"资源对接",matchLabel:"资源对接",icon:"👥",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0},{id:"mentor",label:"导师顾问",matchLabel:"导师顾问",icon:"❤️",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0},{id:"team",label:"团队招募",matchLabel:"加入项目",icon:"🎮",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}],freeMatchLimit:3,matchPrice:1,settings:{enableFreeMatches:!0,enablePaidMatches:!0,maxMatchesPerDay:10}},IC=["⭐","👥","❤️","🎮","💼","🚀","💡","🎯","🔥","✨"];function _C(){const[r,a]=h.useState(wx),[l,o]=h.useState(!0),[c,u]=h.useState(!1),[m,f]=h.useState(!1),[p,y]=h.useState(null),[g,v]=h.useState({id:"",label:"",matchLabel:"",icon:"⭐",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}),k=async()=>{o(!0);try{const j=await Be("/api/db/config/full?key=match_config"),_=(j==null?void 0:j.data)??(j==null?void 0:j.config);_&&a({...wx,..._})}catch(j){console.error("加载匹配配置失败:",j)}finally{o(!1)}};h.useEffect(()=>{k()},[]);const P=async()=>{u(!0);try{const j=await mt("/api/db/config",{key:"match_config",value:r,description:"匹配功能配置"});j&&j.success!==!1?alert("配置保存成功!"):alert("保存失败: "+(j&&typeof j=="object"&&"error"in j?j.error:"未知错误"))}catch(j){console.error("保存配置失败:",j),alert("保存失败")}finally{u(!1)}},T=j=>{y(j),v({id:j.id,label:j.label,matchLabel:j.matchLabel,icon:j.icon,matchFromDB:j.matchFromDB,showJoinAfterMatch:j.showJoinAfterMatch,price:j.price,enabled:j.enabled}),f(!0)},w=()=>{y(null),v({id:"",label:"",matchLabel:"",icon:"⭐",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}),f(!0)},N=()=>{if(!g.id||!g.label){alert("请填写类型ID和名称");return}const j=[...r.matchTypes];if(p){const _=j.findIndex(O=>O.id===p.id);_!==-1&&(j[_]={...g})}else{if(j.some(_=>_.id===g.id)){alert("类型ID已存在");return}j.push({...g})}a({...r,matchTypes:j}),f(!1)},b=j=>{confirm("确定要删除这个匹配类型吗?")&&a({...r,matchTypes:r.matchTypes.filter(_=>_.id!==j)})},S=j=>{a({...r,matchTypes:r.matchTypes.map(_=>_.id===j?{..._,enabled:!_.enabled}:_)})};return e.jsxs("div",{className:"p-8 w-full space-y-6",children:[e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[e.jsx(Bn,{className:"w-6 h-6 text-[#38bdac]"}),"匹配功能配置"]}),e.jsx("p",{className:"text-gray-400 mt-1",children:"管理找伙伴功能的匹配类型和价格"})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsxs(J,{variant:"outline",onClick:k,disabled:l,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${l?"animate-spin":""}`}),"刷新"]}),e.jsxs(J,{onClick:P,disabled:c,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),c?"保存中...":"保存配置"]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(an,{className:"w-5 h-5 text-yellow-400"}),"基础设置"]}),e.jsx(jt,{className:"text-gray-400",children:"配置免费匹配次数和付费规则"})]}),e.jsxs(we,{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"每日免费匹配次数"}),e.jsx(le,{type:"number",min:0,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:r.freeMatchLimit,onChange:j=>a({...r,freeMatchLimit:parseInt(j.target.value,10)||0})}),e.jsx("p",{className:"text-xs text-gray-500",children:"用户每天可免费匹配的次数"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"付费匹配价格(元)"}),e.jsx(le,{type:"number",min:.01,step:.01,className:"bg-[#0a1628] border-gray-700 text-white",value:r.matchPrice,onChange:j=>a({...r,matchPrice:parseFloat(j.target.value)||1})}),e.jsx("p",{className:"text-xs text-gray-500",children:"免费次数用完后的单次匹配价格"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"每日最大匹配次数"}),e.jsx(le,{type:"number",min:1,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:r.settings.maxMatchesPerDay,onChange:j=>a({...r,settings:{...r.settings,maxMatchesPerDay:parseInt(j.target.value,10)||10}})}),e.jsx("p",{className:"text-xs text-gray-500",children:"包含免费和付费的总次数"})]})]}),e.jsxs("div",{className:"flex gap-8 pt-4 border-t border-gray-700/50",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ot,{checked:r.settings.enableFreeMatches,onCheckedChange:j=>a({...r,settings:{...r.settings,enableFreeMatches:j}})}),e.jsx(te,{className:"text-gray-300",children:"启用免费匹配"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ot,{checked:r.settings.enablePaidMatches,onCheckedChange:j=>a({...r,settings:{...r.settings,enablePaidMatches:j}})}),e.jsx(te,{className:"text-gray-300",children:"启用付费匹配"})]})]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsxs(Ke,{className:"flex flex-row items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Yt,{className:"w-5 h-5 text-[#38bdac]"}),"匹配类型管理"]}),e.jsx(jt,{className:"text-gray-400",children:"配置不同的匹配类型及其价格"})]}),e.jsxs(J,{onClick:w,size:"sm",className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Rt,{className:"w-4 h-4 mr-1"}),"添加类型"]})]}),e.jsx(we,{children:e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"图标"}),e.jsx(be,{className:"text-gray-400",children:"类型ID"}),e.jsx(be,{className:"text-gray-400",children:"显示名称"}),e.jsx(be,{className:"text-gray-400",children:"匹配标签"}),e.jsx(be,{className:"text-gray-400",children:"价格"}),e.jsx(be,{className:"text-gray-400",children:"数据库匹配"}),e.jsx(be,{className:"text-gray-400",children:"状态"}),e.jsx(be,{className:"text-right text-gray-400",children:"操作"})]})}),e.jsx(ps,{children:r.matchTypes.map(j=>e.jsxs(et,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[e.jsx(pe,{children:e.jsx("span",{className:"text-2xl",children:j.icon})}),e.jsx(pe,{className:"font-mono text-gray-300",children:j.id}),e.jsx(pe,{className:"text-white font-medium",children:j.label}),e.jsx(pe,{className:"text-gray-300",children:j.matchLabel}),e.jsx(pe,{children:e.jsxs(Le,{className:"bg-yellow-500/20 text-yellow-400 hover:bg-yellow-500/20 border-0",children:["¥",j.price]})}),e.jsx(pe,{children:j.matchFromDB?e.jsx(Le,{className:"bg-green-500/20 text-green-400 hover:bg-green-500/20 border-0",children:"是"}):e.jsx(Le,{variant:"outline",className:"text-gray-500 border-gray-600",children:"否"})}),e.jsx(pe,{children:e.jsx(ot,{checked:j.enabled,onCheckedChange:()=>S(j.id)})}),e.jsx(pe,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-1",children:[e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>T(j),className:"text-gray-400 hover:text-[#38bdac] hover:bg-[#38bdac]/10",children:e.jsx(ht,{className:"w-4 h-4"})}),e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>b(j.id),className:"text-red-400 hover:text-red-300 hover:bg-red-500/10",children:e.jsx(Ht,{className:"w-4 h-4"})})]})})]},j.id))})]})})]}),e.jsx(Ct,{open:m,onOpenChange:f,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-lg",showCloseButton:!0,children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[p?e.jsx(ht,{className:"w-5 h-5 text-[#38bdac]"}):e.jsx(Rt,{className:"w-5 h-5 text-[#38bdac]"}),p?"编辑匹配类型":"添加匹配类型"]})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"类型ID(英文)"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: partner",value:g.id,onChange:j=>v({...g,id:j.target.value}),disabled:!!p})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"图标"}),e.jsx("div",{className:"flex gap-1 flex-wrap",children:IC.map(j=>e.jsx("button",{type:"button",className:`w-8 h-8 text-lg rounded ${g.icon===j?"bg-[#38bdac]/30 ring-1 ring-[#38bdac]":"bg-[#0a1628]"}`,onClick:()=>v({...g,icon:j}),children:j},j))})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"显示名称"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: 创业合伙",value:g.label,onChange:j=>v({...g,label:j.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"匹配标签"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: 创业伙伴",value:g.matchLabel,onChange:j=>v({...g,matchLabel:j.target.value})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"单次匹配价格(元)"}),e.jsx(le,{type:"number",min:.01,step:.01,className:"bg-[#0a1628] border-gray-700 text-white",value:g.price,onChange:j=>v({...g,price:parseFloat(j.target.value)||1})})]}),e.jsxs("div",{className:"flex gap-6 pt-2",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ot,{checked:g.matchFromDB,onCheckedChange:j=>v({...g,matchFromDB:j})}),e.jsx(te,{className:"text-gray-300 text-sm",children:"从数据库匹配"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ot,{checked:g.showJoinAfterMatch,onCheckedChange:j=>v({...g,showJoinAfterMatch:j})}),e.jsx(te,{className:"text-gray-300 text-sm",children:"匹配后显示加入"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ot,{checked:g.enabled,onCheckedChange:j=>v({...g,enabled:j})}),e.jsx(te,{className:"text-gray-300 text-sm",children:"启用"})]})]})]}),e.jsxs(Dt,{children:[e.jsx(J,{variant:"outline",onClick:()=>f(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),e.jsxs(J,{onClick:N,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),"保存"]})]})]})})]})}const Sx={partner:"找伙伴",investor:"资源对接",mentor:"导师顾问",team:"团队招募"};function MC(){const[r,a]=h.useState([]),[l,o]=h.useState(0),[c,u]=h.useState(1),[m,f]=h.useState(10),[p,y]=h.useState(""),[g,v]=h.useState(!0),[k,P]=h.useState(null);async function T(){v(!0),P(null);try{const N=new URLSearchParams({page:String(c),pageSize:String(m)});p&&N.set("matchType",p);const b=await Be(`/api/db/match-records?${N}`);b!=null&&b.success?(a(b.records||[]),o(b.total??0)):P("加载匹配记录失败")}catch(N){console.error("加载匹配记录失败",N),P("加载失败,请检查网络后重试")}finally{v(!1)}}h.useEffect(()=>{T()},[c,p]);const w=Math.ceil(l/m)||1;return e.jsxs("div",{className:"p-8 w-full",children:[k&&e.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[e.jsx("span",{children:k}),e.jsx("button",{type:"button",onClick:()=>P(null),className:"hover:text-red-300",children:"×"})]}),e.jsxs("div",{className:"flex justify-between items-center mb-8",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-white",children:"匹配记录"}),e.jsxs("p",{className:"text-gray-400 mt-1",children:["找伙伴匹配统计,共 ",l," 条记录"]})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("select",{value:p,onChange:N=>{y(N.target.value),u(1)},className:"bg-[#0f2137] border border-gray-700 text-white rounded-lg px-3 py-2 text-sm",children:[e.jsx("option",{value:"",children:"全部类型"}),Object.entries(Sx).map(([N,b])=>e.jsx("option",{value:N,children:b},N))]}),e.jsxs("button",{type:"button",onClick:T,disabled:g,className:"flex items-center gap-2 px-4 py-2 rounded-lg border border-gray-600 text-gray-300 hover:bg-gray-700/50 transition-colors disabled:opacity-50",children:[e.jsx($e,{className:`w-4 h-4 ${g?"animate-spin":""}`}),"刷新"]})]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:e.jsx(we,{className:"p-0",children:g?e.jsxs("div",{className:"flex justify-center py-12",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):e.jsxs(e.Fragment,{children:[e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"发起人"}),e.jsx(be,{className:"text-gray-400",children:"匹配到"}),e.jsx(be,{className:"text-gray-400",children:"类型"}),e.jsx(be,{className:"text-gray-400",children:"联系方式"}),e.jsx(be,{className:"text-gray-400",children:"匹配时间"})]})}),e.jsxs(ps,{children:[r.map(N=>e.jsxs(et,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[e.jsx(pe,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"w-9 h-9 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac] flex-shrink-0 overflow-hidden",children:[N.userAvatar?e.jsx("img",{src:N.userAvatar,alt:"",className:"w-full h-full object-cover",onError:b=>{b.currentTarget.style.display="none";const S=b.currentTarget.nextElementSibling;S&&S.classList.remove("hidden")}}):null,e.jsx("span",{className:N.userAvatar?"hidden":"",children:(N.userNickname||N.userId||"?").charAt(0)})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-white",children:N.userNickname||N.userId}),e.jsxs("div",{className:"text-xs text-gray-500 font-mono",children:[N.userId.slice(0,16),"..."]})]})]})}),e.jsx(pe,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"w-9 h-9 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac] flex-shrink-0 overflow-hidden",children:[N.matchedUserAvatar?e.jsx("img",{src:N.matchedUserAvatar,alt:"",className:"w-full h-full object-cover",onError:b=>{b.currentTarget.style.display="none";const S=b.currentTarget.nextElementSibling;S&&S.classList.remove("hidden")}}):null,e.jsx("span",{className:N.matchedUserAvatar?"hidden":"",children:(N.matchedNickname||N.matchedUserId||"?").charAt(0)})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-white",children:N.matchedNickname||N.matchedUserId}),e.jsxs("div",{className:"text-xs text-gray-500 font-mono",children:[N.matchedUserId.slice(0,16),"..."]})]})]})}),e.jsx(pe,{children:e.jsx(Le,{className:"bg-[#38bdac]/20 text-[#38bdac] border-0",children:Sx[N.matchType]||N.matchType})}),e.jsxs(pe,{className:"text-gray-400 text-sm",children:[N.phone&&e.jsxs("div",{children:["📱 ",N.phone]}),N.wechatId&&e.jsxs("div",{children:["💬 ",N.wechatId]}),!N.phone&&!N.wechatId&&"-"]}),e.jsx(pe,{className:"text-gray-400",children:N.createdAt?new Date(N.createdAt).toLocaleString():"-"})]},N.id)),r.length===0&&e.jsx(et,{children:e.jsx(pe,{colSpan:5,className:"text-center py-12 text-gray-500",children:"暂无匹配记录"})})]})]}),e.jsx(Qs,{page:c,totalPages:w,total:l,pageSize:m,onPageChange:u,onPageSizeChange:N=>{f(N),u(1)}})]})})})]})}function AC(){const[r,a]=h.useState([]),[l,o]=h.useState(!0),[c,u]=h.useState(!1),[m,f]=h.useState(null),[p,y]=h.useState(""),[g,v]=h.useState(0),[k,P]=h.useState(!1);async function T(){o(!0);try{const j=await Be("/api/db/vip-roles");j!=null&&j.success&&j.data&&a(j.data)}catch(j){console.error("Load roles error:",j)}finally{o(!1)}}h.useEffect(()=>{T()},[]);const w=()=>{f(null),y(""),v(r.length>0?Math.max(...r.map(j=>j.sort))+1:0),u(!0)},N=j=>{f(j),y(j.name),v(j.sort),u(!0)},b=async()=>{if(!p.trim()){alert("角色名称不能为空");return}P(!0);try{if(m){const j=await vt("/api/db/vip-roles",{id:m.id,name:p.trim(),sort:g});j!=null&&j.success?(u(!1),T()):alert("更新失败: "+(j==null?void 0:j.error))}else{const j=await mt("/api/db/vip-roles",{name:p.trim(),sort:g});j!=null&&j.success?(u(!1),T()):alert("新增失败: "+(j==null?void 0:j.error))}}catch(j){console.error("Save error:",j),alert("保存失败")}finally{P(!1)}},S=async j=>{if(confirm("确定删除该角色?已设置该角色的 VIP 用户将保留角色名称。"))try{const _=await Pr(`/api/db/vip-roles?id=${j}`);_!=null&&_.success?T():alert("删除失败: "+(_==null?void 0:_.error))}catch(_){console.error("Delete error:",_),alert("删除失败")}};return e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-8",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[e.jsx(rn,{className:"w-5 h-5 text-amber-400"}),"VIP 角色管理"]}),e.jsx("p",{className:"text-gray-400 mt-1",children:"超级个体固定角色,在「设置 VIP」时可选择或手动填写"})]}),e.jsxs(J,{onClick:w,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"}),"新增角色"]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-0",children:l?e.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"ID"}),e.jsx(be,{className:"text-gray-400",children:"角色名称"}),e.jsx(be,{className:"text-gray-400",children:"排序"}),e.jsx(be,{className:"text-right text-gray-400",children:"操作"})]})}),e.jsxs(ps,{children:[r.map(j=>e.jsxs(et,{className:"border-gray-700/50",children:[e.jsx(pe,{className:"text-gray-300",children:j.id}),e.jsx(pe,{className:"text-white",children:j.name}),e.jsx(pe,{className:"text-gray-400",children:j.sort}),e.jsxs(pe,{className:"text-right",children:[e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>N(j),className:"text-gray-400 hover:text-[#38bdac]",children:e.jsx(ht,{className:"w-4 h-4"})}),e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>S(j.id),className:"text-gray-400 hover:text-red-400",children:e.jsx(Ht,{className:"w-4 h-4"})})]})]},j.id)),r.length===0&&e.jsx(et,{children:e.jsx(pe,{colSpan:4,className:"text-center py-12 text-gray-500",children:"暂无角色,点击「新增角色」添加"})})]})]})})}),e.jsx(Ct,{open:c,onOpenChange:u,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-sm",children:[e.jsx(kt,{children:e.jsx(Et,{className:"text-white",children:m?"编辑角色":"新增角色"})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"角色名称"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:创始人、投资人",value:p,onChange:j=>y(j.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"排序(下拉展示顺序,越小越前)"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:g,onChange:j=>v(parseInt(j.target.value,10)||0)})]})]}),e.jsxs(Dt,{children:[e.jsxs(J,{variant:"outline",onClick:()=>u(!1),className:"border-gray-600 text-gray-300",children:[e.jsx(ms,{className:"w-4 h-4 mr-2"}),"取消"]}),e.jsxs(J,{onClick:b,disabled:k,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),k?"保存中...":"保存"]})]})]})})]})}function Rg({embedded:r=!1}){const[a,l]=h.useState([]),[o,c]=h.useState(!0),[u,m]=h.useState(!1),[f,p]=h.useState(null),[y,g]=h.useState({name:"",avatar:"",intro:"",tags:"",priceSingle:"",priceHalfYear:"",priceYear:"",quote:"",whyFind:"",offering:"",judgmentStyle:"",sort:0,enabled:!0}),[v,k]=h.useState(!1),[P,T]=h.useState(!1),w=h.useRef(null),N=async R=>{var Y;const E=(Y=R.target.files)==null?void 0:Y[0];if(E){T(!0);try{const ne=new FormData;ne.append("file",E),ne.append("folder","mentors");const ae=bu(),q={};ae&&(q.Authorization=`Bearer ${ae}`);const H=await(await fetch(Aa("/api/upload"),{method:"POST",body:ne,credentials:"include",headers:q})).json();H!=null&&H.success&&(H!=null&&H.url)?g(ie=>({...ie,avatar:H.url})):alert("上传失败: "+((H==null?void 0:H.error)||"未知错误"))}catch(ne){console.error(ne),alert("上传失败")}finally{T(!1),w.current&&(w.current.value="")}}};async function b(){c(!0);try{const R=await Be("/api/db/mentors");R!=null&&R.success&&R.data&&l(R.data)}catch(R){console.error("Load mentors error:",R)}finally{c(!1)}}h.useEffect(()=>{b()},[]);const S=()=>{g({name:"",avatar:"",intro:"",tags:"",priceSingle:"",priceHalfYear:"",priceYear:"",quote:"",whyFind:"",offering:"",judgmentStyle:"",sort:a.length>0?Math.max(...a.map(R=>R.sort))+1:0,enabled:!0})},j=()=>{p(null),S(),m(!0)},_=R=>{p(R),g({name:R.name,avatar:R.avatar||"",intro:R.intro||"",tags:R.tags||"",priceSingle:R.priceSingle!=null?String(R.priceSingle):"",priceHalfYear:R.priceHalfYear!=null?String(R.priceHalfYear):"",priceYear:R.priceYear!=null?String(R.priceYear):"",quote:R.quote||"",whyFind:R.whyFind||"",offering:R.offering||"",judgmentStyle:R.judgmentStyle||"",sort:R.sort,enabled:R.enabled??!0}),m(!0)},O=async()=>{if(!y.name.trim()){alert("导师姓名不能为空");return}k(!0);try{const R=Y=>Y===""?void 0:parseFloat(Y),E={name:y.name.trim(),avatar:y.avatar.trim()||void 0,intro:y.intro.trim()||void 0,tags:y.tags.trim()||void 0,priceSingle:R(y.priceSingle),priceHalfYear:R(y.priceHalfYear),priceYear:R(y.priceYear),quote:y.quote.trim()||void 0,whyFind:y.whyFind.trim()||void 0,offering:y.offering.trim()||void 0,judgmentStyle:y.judgmentStyle.trim()||void 0,sort:y.sort,enabled:y.enabled};if(f){const Y=await vt("/api/db/mentors",{id:f.id,...E});Y!=null&&Y.success?(m(!1),b()):alert("更新失败: "+(Y==null?void 0:Y.error))}else{const Y=await mt("/api/db/mentors",E);Y!=null&&Y.success?(m(!1),b()):alert("新增失败: "+(Y==null?void 0:Y.error))}}catch(R){console.error("Save error:",R),alert("保存失败")}finally{k(!1)}},V=async R=>{if(confirm("确定删除该导师?"))try{const E=await Pr(`/api/db/mentors?id=${R}`);E!=null&&E.success?b():alert("删除失败: "+(E==null?void 0:E.error))}catch(E){console.error("Delete error:",E),alert("删除失败")}},I=R=>R!=null?`¥${R}`:"-";return e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-8",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[e.jsx(Yt,{className:"w-5 h-5 text-[#38bdac]"}),"导师管理"]}),e.jsx("p",{className:"text-gray-400 mt-1",children:"stitch_soul 导师列表,支持每个导师独立配置单次/半年/年度价格"})]}),e.jsxs(J,{onClick:j,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Rt,{className:"w-4 h-4 mr-2"}),"新增导师"]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-0",children:o?e.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"ID"}),e.jsx(be,{className:"text-gray-400",children:"姓名"}),e.jsx(be,{className:"text-gray-400",children:"简介"}),e.jsx(be,{className:"text-gray-400",children:"单次"}),e.jsx(be,{className:"text-gray-400",children:"半年"}),e.jsx(be,{className:"text-gray-400",children:"年度"}),e.jsx(be,{className:"text-gray-400",children:"排序"}),e.jsx(be,{className:"text-right text-gray-400",children:"操作"})]})}),e.jsxs(ps,{children:[a.map(R=>e.jsxs(et,{className:"border-gray-700/50",children:[e.jsx(pe,{className:"text-gray-300",children:R.id}),e.jsx(pe,{className:"text-white",children:R.name}),e.jsx(pe,{className:"text-gray-400 max-w-[200px] truncate",children:R.intro||"-"}),e.jsx(pe,{className:"text-gray-400",children:I(R.priceSingle)}),e.jsx(pe,{className:"text-gray-400",children:I(R.priceHalfYear)}),e.jsx(pe,{className:"text-gray-400",children:I(R.priceYear)}),e.jsx(pe,{className:"text-gray-400",children:R.sort}),e.jsxs(pe,{className:"text-right",children:[e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>_(R),className:"text-gray-400 hover:text-[#38bdac]",children:e.jsx(ht,{className:"w-4 h-4"})}),e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>V(R.id),className:"text-gray-400 hover:text-red-400",children:e.jsx(Ht,{className:"w-4 h-4"})})]})]},R.id)),a.length===0&&e.jsx(et,{children:e.jsx(pe,{colSpan:8,className:"text-center py-12 text-gray-500",children:"暂无导师,点击「新增导师」添加"})})]})]})})}),e.jsx(Ct,{open:u,onOpenChange:m,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-lg max-h-[90vh] overflow-y-auto",children:[e.jsx(kt,{children:e.jsx(Et,{className:"text-white",children:f?"编辑导师":"新增导师"})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"姓名 *"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:卡若",value:y.name,onChange:R=>g(E=>({...E,name:R.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"排序"}),e.jsx(le,{type:"number",className:"bg-[#0a1628] border-gray-700 text-white",value:y.sort,onChange:R=>g(E=>({...E,sort:parseInt(R.target.value,10)||0}))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"头像"}),e.jsxs("div",{className:"flex gap-3 items-center",children:[e.jsx(le,{className:"flex-1 bg-[#0a1628] border-gray-700 text-white",value:y.avatar,onChange:R=>g(E=>({...E,avatar:R.target.value})),placeholder:"点击上传或粘贴图片地址"}),e.jsx("input",{ref:w,type:"file",accept:"image/*",className:"hidden",onChange:N}),e.jsxs(J,{type:"button",variant:"outline",size:"sm",className:"border-gray-600 text-gray-400 shrink-0",disabled:P,onClick:()=>{var R;return(R=w.current)==null?void 0:R.click()},children:[e.jsx(uo,{className:"w-4 h-4 mr-2"}),P?"上传中...":"上传"]})]}),y.avatar&&e.jsx("div",{className:"mt-2",children:e.jsx("img",{src:y.avatar.startsWith("http")?y.avatar:Aa(y.avatar),alt:"头像预览",className:"w-20 h-20 rounded-full object-cover border border-gray-600"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"简介"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:结构判断型咨询 · Decision > Execution",value:y.intro,onChange:R=>g(E=>({...E,intro:R.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"技能标签(逗号分隔)"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:项目结构判断、风险止损、人×项目匹配",value:y.tags,onChange:R=>g(E=>({...E,tags:R.target.value}))})]}),e.jsxs("div",{className:"border-t border-gray-700 pt-4",children:[e.jsx(te,{className:"text-gray-300 block mb-2",children:"价格配置(每个导师独立)"}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-500 text-xs",children:"单次咨询 ¥"}),e.jsx(le,{type:"number",step:"0.01",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"980",value:y.priceSingle,onChange:R=>g(E=>({...E,priceSingle:R.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-500 text-xs",children:"半年咨询 ¥"}),e.jsx(le,{type:"number",step:"0.01",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"19800",value:y.priceHalfYear,onChange:R=>g(E=>({...E,priceHalfYear:R.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-500 text-xs",children:"年度咨询 ¥"}),e.jsx(le,{type:"number",step:"0.01",className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"29800",value:y.priceYear,onChange:R=>g(E=>({...E,priceYear:R.target.value}))})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"引言"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:大多数人失败,不是因为不努力...",value:y.quote,onChange:R=>g(E=>({...E,quote:R.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"为什么找(文本)"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"",value:y.whyFind,onChange:R=>g(E=>({...E,whyFind:R.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"提供什么(文本)"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"",value:y.offering,onChange:R=>g(E=>({...E,offering:R.target.value}))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"判断风格(逗号分隔)"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如:冷静、克制、偏风险视角",value:y.judgmentStyle,onChange:R=>g(E=>({...E,judgmentStyle:R.target.value}))})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("input",{type:"checkbox",id:"enabled",checked:y.enabled,onChange:R=>g(E=>({...E,enabled:R.target.checked})),className:"rounded border-gray-600 bg-[#0a1628]"}),e.jsx(te,{htmlFor:"enabled",className:"text-gray-300 cursor-pointer",children:"上架(小程序可见)"})]})]}),e.jsxs(Dt,{children:[e.jsxs(J,{variant:"outline",onClick:()=>m(!1),className:"border-gray-600 text-gray-300",children:[e.jsx(ms,{className:"w-4 h-4 mr-2"}),"取消"]}),e.jsxs(J,{onClick:O,disabled:v,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"}),v?"保存中...":"保存"]})]})]})})]})}function DC(){const[r,a]=h.useState([]),[l,o]=h.useState(!0),[c,u]=h.useState("");async function m(){o(!0);try{const y=c?`/api/db/mentor-consultations?status=${c}`:"/api/db/mentor-consultations",g=await Be(y);g!=null&&g.success&&g.data&&a(g.data)}catch(y){console.error("Load consultations error:",y)}finally{o(!1)}}h.useEffect(()=>{m()},[c]);const f={created:"已创建",pending_pay:"待支付",paid:"已支付",completed:"已完成",cancelled:"已取消"},p={single:"单次",half_year:"半年",year:"年度"};return e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex justify-between items-center mb-8",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[e.jsx(oo,{className:"w-5 h-5 text-[#38bdac]"}),"导师预约列表"]}),e.jsx("p",{className:"text-gray-400 mt-1",children:"stitch_soul 导师咨询预约记录"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("select",{value:c,onChange:y=>u(y.target.value),className:"bg-[#0f2137] border border-gray-700 rounded-lg px-3 py-2 text-gray-300 text-sm",children:[e.jsx("option",{value:"",children:"全部状态"}),Object.entries(f).map(([y,g])=>e.jsx("option",{value:y,children:g},y))]}),e.jsxs(J,{onClick:m,disabled:l,variant:"outline",className:"border-gray-600 text-gray-300",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${l?"animate-spin":""}`}),"刷新"]})]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-0",children:l?e.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"ID"}),e.jsx(be,{className:"text-gray-400",children:"用户ID"}),e.jsx(be,{className:"text-gray-400",children:"导师ID"}),e.jsx(be,{className:"text-gray-400",children:"类型"}),e.jsx(be,{className:"text-gray-400",children:"金额"}),e.jsx(be,{className:"text-gray-400",children:"状态"}),e.jsx(be,{className:"text-gray-400",children:"创建时间"})]})}),e.jsxs(ps,{children:[r.map(y=>e.jsxs(et,{className:"border-gray-700/50",children:[e.jsx(pe,{className:"text-gray-300",children:y.id}),e.jsx(pe,{className:"text-gray-400",children:y.userId}),e.jsx(pe,{className:"text-gray-400",children:y.mentorId}),e.jsx(pe,{className:"text-gray-400",children:p[y.consultationType]||y.consultationType}),e.jsxs(pe,{className:"text-white",children:["¥",y.amount]}),e.jsx(pe,{className:"text-gray-400",children:f[y.status]||y.status}),e.jsx(pe,{className:"text-gray-500 text-sm",children:y.createdAt})]},y.id)),r.length===0&&e.jsx(et,{children:e.jsx(pe,{colSpan:7,className:"text-center py-12 text-gray-500",children:"暂无预约记录"})})]})]})})})]})}const Tl={poolSource:["vip"],requirePhone:!0,requireNickname:!0,requireAvatar:!1,requireBusiness:!1},Cx={matchTypes:[{id:"partner",label:"找伙伴",matchLabel:"找伙伴",icon:"⭐",matchFromDB:!0,showJoinAfterMatch:!1,price:1,enabled:!0},{id:"investor",label:"资源对接",matchLabel:"资源对接",icon:"👥",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0},{id:"mentor",label:"导师顾问",matchLabel:"导师顾问",icon:"❤️",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0},{id:"team",label:"团队招募",matchLabel:"加入项目",icon:"🎮",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}],freeMatchLimit:3,matchPrice:1,settings:{enableFreeMatches:!0,enablePaidMatches:!0,maxMatchesPerDay:10},poolSettings:Tl},LC=["⭐","👥","❤️","🎮","💼","🚀","💡","🎯","🔥","✨"];function OC(){const r=gn(),[a,l]=h.useState(Cx),[o,c]=h.useState(!0),[u,m]=h.useState(!1),[f,p]=h.useState(!1),[y,g]=h.useState(null),[v,k]=h.useState({id:"",label:"",matchLabel:"",icon:"⭐",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}),[P,T]=h.useState(null),[w,N]=h.useState(!1),b=async()=>{N(!0);try{const E=await Be("/api/db/match-pool-counts");E!=null&&E.success&&E.data&&T(E.data)}catch(E){console.error("加载池子人数失败:",E)}finally{N(!1)}},S=async()=>{c(!0);try{const E=await Be("/api/db/config/full?key=match_config"),Y=(E==null?void 0:E.data)??(E==null?void 0:E.config);if(Y){let ne=Y.poolSettings??Tl;ne.poolSource&&!Array.isArray(ne.poolSource)&&(ne={...ne,poolSource:[ne.poolSource]}),l({...Cx,...Y,poolSettings:ne})}}catch(E){console.error("加载匹配配置失败:",E)}finally{c(!1)}};h.useEffect(()=>{S(),b()},[]);const j=async()=>{m(!0);try{const E=await mt("/api/db/config",{key:"match_config",value:a,description:"匹配功能配置"});alert((E==null?void 0:E.success)!==!1?"配置保存成功!":"保存失败: "+((E==null?void 0:E.error)||"未知错误"))}catch(E){console.error(E),alert("保存失败")}finally{m(!1)}},_=E=>{g(E),k({...E}),p(!0)},O=()=>{g(null),k({id:"",label:"",matchLabel:"",icon:"⭐",matchFromDB:!1,showJoinAfterMatch:!0,price:1,enabled:!0}),p(!0)},V=()=>{if(!v.id||!v.label){alert("请填写类型ID和名称");return}const E=[...a.matchTypes];if(y){const Y=E.findIndex(ne=>ne.id===y.id);Y!==-1&&(E[Y]={...v})}else{if(E.some(Y=>Y.id===v.id)){alert("类型ID已存在");return}E.push({...v})}l({...a,matchTypes:E}),p(!1)},I=E=>{confirm("确定要删除这个匹配类型吗?")&&l({...a,matchTypes:a.matchTypes.filter(Y=>Y.id!==E)})},R=E=>{l({...a,matchTypes:a.matchTypes.map(Y=>Y.id===E?{...Y,enabled:!Y.enabled}:Y)})};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex justify-end gap-3",children:[e.jsxs(J,{variant:"outline",onClick:S,disabled:o,className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${o?"animate-spin":""}`})," 刷新"]}),e.jsxs(J,{onClick:j,disabled:u,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"})," ",u?"保存中...":"保存配置"]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Kx,{className:"w-5 h-5 text-blue-400"})," 匹配池选择"]}),e.jsx(jt,{className:"text-gray-400",children:"选择匹配的用户池和完善程度要求,只有满足条件的用户才可被匹配到"})]}),e.jsxs(we,{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(te,{className:"text-gray-300",children:"匹配来源池"}),e.jsx("p",{className:"text-gray-500 text-xs",children:"可同时勾选多个池子(取并集匹配)"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3",children:[{value:"vip",label:"超级个体(VIP会员)",desc:"付费 ¥1980 的VIP会员",icon:"👑",countKey:"vip"},{value:"complete",label:"完善资料用户",desc:"符合下方完善度要求的用户",icon:"✅",countKey:"complete"},{value:"all",label:"全部用户",desc:"所有已注册用户",icon:"👥",countKey:"all"}].map(E=>{const Y=a.poolSettings??Tl,ae=(Array.isArray(Y.poolSource)?Y.poolSource:[Y.poolSource]).includes(E.value),q=P==null?void 0:P[E.countKey],se=()=>{const H=Array.isArray(Y.poolSource)?[...Y.poolSource]:[Y.poolSource],ie=ae?H.filter(ve=>ve!==E.value):[...H,E.value];ie.length===0&&ie.push(E.value),l({...a,poolSettings:{...Y,poolSource:ie}})};return e.jsxs("button",{type:"button",onClick:se,className:`p-4 rounded-lg border text-left transition-all ${ae?"border-[#38bdac] bg-[#38bdac]/10":"border-gray-700 bg-[#0a1628] hover:border-gray-600"}`,children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:`w-5 h-5 rounded border-2 flex items-center justify-center text-xs ${ae?"border-[#38bdac] bg-[#38bdac] text-white":"border-gray-600"}`,children:ae&&"✓"}),e.jsx("span",{className:"text-xl",children:E.icon}),e.jsx("span",{className:`text-sm font-medium ${ae?"text-[#38bdac]":"text-gray-300"}`,children:E.label})]}),e.jsxs("span",{className:"text-lg font-bold text-white",children:[w?"...":q??"-",e.jsx("span",{className:"text-xs text-gray-500 font-normal ml-1",children:"人"})]})]}),e.jsx("p",{className:"text-gray-500 text-xs mt-2",children:E.desc}),e.jsx("span",{role:"link",tabIndex:0,onClick:H=>{H.stopPropagation(),r(`/users?pool=${E.value}`)},onKeyDown:H=>{H.key==="Enter"&&(H.stopPropagation(),r(`/users?pool=${E.value}`))},className:"text-[#38bdac] text-xs mt-2 inline-block hover:underline cursor-pointer",children:"查看用户列表 →"})]},E.value)})})]}),e.jsxs("div",{className:"space-y-3 pt-4 border-t border-gray-700/50",children:[e.jsx(te,{className:"text-gray-300",children:"用户资料完善要求(被匹配用户必须满足以下条件)"}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{key:"requirePhone",label:"有手机号",icon:"📱"},{key:"requireNickname",label:"有昵称",icon:"👤"},{key:"requireAvatar",label:"有头像",icon:"🖼️"},{key:"requireBusiness",label:"有业务需求",icon:"💼"}].map(E=>{const ne=(a.poolSettings??Tl)[E.key];return e.jsxs("div",{className:"flex items-center gap-3 bg-[#0a1628] rounded-lg p-3",children:[e.jsx(ot,{checked:ne,onCheckedChange:ae=>l({...a,poolSettings:{...a.poolSettings??Tl,[E.key]:ae}})}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{children:E.icon}),e.jsx(te,{className:"text-gray-300 text-sm",children:E.label})]})]},E.key)})})]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsxs(Ke,{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(an,{className:"w-5 h-5 text-yellow-400"})," 基础设置"]}),e.jsx(jt,{className:"text-gray-400",children:"配置免费匹配次数和付费规则"})]}),e.jsxs(we,{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"每日免费匹配次数"}),e.jsx(le,{type:"number",min:0,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:a.freeMatchLimit,onChange:E=>l({...a,freeMatchLimit:parseInt(E.target.value,10)||0})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"付费匹配价格(元)"}),e.jsx(le,{type:"number",min:.01,step:.01,className:"bg-[#0a1628] border-gray-700 text-white",value:a.matchPrice,onChange:E=>l({...a,matchPrice:parseFloat(E.target.value)||1})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"每日最大匹配次数"}),e.jsx(le,{type:"number",min:1,max:100,className:"bg-[#0a1628] border-gray-700 text-white",value:a.settings.maxMatchesPerDay,onChange:E=>l({...a,settings:{...a.settings,maxMatchesPerDay:parseInt(E.target.value,10)||10}})})]})]}),e.jsxs("div",{className:"flex gap-8 pt-4 border-t border-gray-700/50",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ot,{checked:a.settings.enableFreeMatches,onCheckedChange:E=>l({...a,settings:{...a.settings,enableFreeMatches:E}})}),e.jsx(te,{className:"text-gray-300",children:"启用免费匹配"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ot,{checked:a.settings.enablePaidMatches,onCheckedChange:E=>l({...a,settings:{...a.settings,enablePaidMatches:E}})}),e.jsx(te,{className:"text-gray-300",children:"启用付费匹配"})]})]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsxs(Ke,{className:"flex flex-row items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(Yt,{className:"w-5 h-5 text-[#38bdac]"})," 匹配类型管理"]}),e.jsx(jt,{className:"text-gray-400",children:"配置不同的匹配类型及其价格"})]}),e.jsxs(J,{onClick:O,size:"sm",className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Rt,{className:"w-4 h-4 mr-1"})," 添加类型"]})]}),e.jsx(we,{children:e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"图标"}),e.jsx(be,{className:"text-gray-400",children:"类型ID"}),e.jsx(be,{className:"text-gray-400",children:"显示名称"}),e.jsx(be,{className:"text-gray-400",children:"匹配标签"}),e.jsx(be,{className:"text-gray-400",children:"价格"}),e.jsx(be,{className:"text-gray-400",children:"数据库匹配"}),e.jsx(be,{className:"text-gray-400",children:"状态"}),e.jsx(be,{className:"text-right text-gray-400",children:"操作"})]})}),e.jsx(ps,{children:a.matchTypes.map(E=>e.jsxs(et,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[e.jsx(pe,{children:e.jsx("span",{className:"text-2xl",children:E.icon})}),e.jsx(pe,{className:"font-mono text-gray-300",children:E.id}),e.jsx(pe,{className:"text-white font-medium",children:E.label}),e.jsx(pe,{className:"text-gray-300",children:E.matchLabel}),e.jsx(pe,{children:e.jsxs(Le,{className:"bg-yellow-500/20 text-yellow-400 hover:bg-yellow-500/20 border-0",children:["¥",E.price]})}),e.jsx(pe,{children:E.matchFromDB?e.jsx(Le,{className:"bg-green-500/20 text-green-400 hover:bg-green-500/20 border-0",children:"是"}):e.jsx(Le,{variant:"outline",className:"text-gray-500 border-gray-600",children:"否"})}),e.jsx(pe,{children:e.jsx(ot,{checked:E.enabled,onCheckedChange:()=>R(E.id)})}),e.jsx(pe,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-1",children:[e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>_(E),className:"text-gray-400 hover:text-[#38bdac] hover:bg-[#38bdac]/10",children:e.jsx(ht,{className:"w-4 h-4"})}),e.jsx(J,{variant:"ghost",size:"sm",onClick:()=>I(E.id),className:"text-red-400 hover:text-red-300 hover:bg-red-500/10",children:e.jsx(Ht,{className:"w-4 h-4"})})]})})]},E.id))})]})})]}),e.jsx(Ct,{open:f,onOpenChange:p,children:e.jsxs(Nt,{className:"bg-[#0f2137] border-gray-700 text-white max-w-lg",showCloseButton:!0,children:[e.jsx(kt,{children:e.jsxs(Et,{className:"text-white flex items-center gap-2",children:[y?e.jsx(ht,{className:"w-5 h-5 text-[#38bdac]"}):e.jsx(Rt,{className:"w-5 h-5 text-[#38bdac]"}),y?"编辑匹配类型":"添加匹配类型"]})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"类型ID(英文)"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: partner",value:v.id,onChange:E=>k({...v,id:E.target.value}),disabled:!!y})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"图标"}),e.jsx("div",{className:"flex gap-1 flex-wrap",children:LC.map(E=>e.jsx("button",{type:"button",className:`w-8 h-8 text-lg rounded ${v.icon===E?"bg-[#38bdac]/30 ring-1 ring-[#38bdac]":"bg-[#0a1628]"}`,onClick:()=>k({...v,icon:E}),children:E},E))})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"显示名称"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: 超级个体",value:v.label,onChange:E=>k({...v,label:E.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"匹配标签"}),e.jsx(le,{className:"bg-[#0a1628] border-gray-700 text-white",placeholder:"如: 超级个体",value:v.matchLabel,onChange:E=>k({...v,matchLabel:E.target.value})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{className:"text-gray-300",children:"单次匹配价格(元)"}),e.jsx(le,{type:"number",min:.01,step:.01,className:"bg-[#0a1628] border-gray-700 text-white",value:v.price,onChange:E=>k({...v,price:parseFloat(E.target.value)||1})})]}),e.jsxs("div",{className:"flex gap-6 pt-2",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ot,{checked:v.matchFromDB,onCheckedChange:E=>k({...v,matchFromDB:E})}),e.jsx(te,{className:"text-gray-300 text-sm",children:"从数据库匹配"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ot,{checked:v.showJoinAfterMatch,onCheckedChange:E=>k({...v,showJoinAfterMatch:E})}),e.jsx(te,{className:"text-gray-300 text-sm",children:"匹配后显示加入"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ot,{checked:v.enabled,onCheckedChange:E=>k({...v,enabled:E})}),e.jsx(te,{className:"text-gray-300 text-sm",children:"启用"})]})]})]}),e.jsxs(Dt,{children:[e.jsx(J,{variant:"outline",onClick:()=>p(!1),className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:"取消"}),e.jsxs(J,{onClick:V,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:[e.jsx(Mt,{className:"w-4 h-4 mr-2"})," 保存"]})]})]})})]})}const kx={partner:"找伙伴",investor:"资源对接",mentor:"导师顾问",team:"团队招募"};function FC(){const[r,a]=h.useState([]),[l,o]=h.useState(0),[c,u]=h.useState(1),[m,f]=h.useState(10),[p,y]=h.useState(""),[g,v]=h.useState(!0),[k,P]=h.useState(null),[T,w]=h.useState(null);async function N(){v(!0),P(null);try{const j=new URLSearchParams({page:String(c),pageSize:String(m)});p&&j.set("matchType",p);const _=await Be(`/api/db/match-records?${j}`);_!=null&&_.success?(a(_.records||[]),o(_.total??0)):P("加载匹配记录失败")}catch{P("加载失败,请检查网络后重试")}finally{v(!1)}}h.useEffect(()=>{N()},[c,p]);const b=Math.ceil(l/m)||1,S=({userId:j,nickname:_,avatar:O})=>e.jsxs("div",{className:"flex items-center gap-3 cursor-pointer group",onClick:()=>w(j),children:[e.jsxs("div",{className:"w-9 h-9 rounded-full bg-[#38bdac]/20 flex items-center justify-center text-sm font-medium text-[#38bdac] flex-shrink-0 overflow-hidden",children:[O?e.jsx("img",{src:O,alt:"",className:"w-full h-full object-cover",onError:V=>{V.currentTarget.style.display="none"}}):null,e.jsx("span",{className:O?"hidden":"",children:(_||j||"?").charAt(0)})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-white group-hover:text-[#38bdac] transition-colors",children:_||j}),e.jsxs("div",{className:"text-xs text-gray-500 font-mono",children:[j==null?void 0:j.slice(0,16),(j==null?void 0:j.length)>16?"...":""]})]})]});return e.jsxs("div",{children:[k&&e.jsxs("div",{className:"mb-4 px-4 py-3 rounded-lg bg-red-500/20 border border-red-500/50 text-red-400 text-sm flex items-center justify-between",children:[e.jsx("span",{children:k}),e.jsx("button",{type:"button",onClick:()=>P(null),className:"hover:text-red-300",children:"×"})]}),e.jsxs("div",{className:"flex justify-between items-center mb-4",children:[e.jsxs("p",{className:"text-gray-400",children:["共 ",l," 条匹配记录 · 点击用户名查看详情"]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("select",{value:p,onChange:j=>{y(j.target.value),u(1)},className:"bg-[#0f2137] border border-gray-700 text-white rounded-lg px-3 py-2 text-sm",children:[e.jsx("option",{value:"",children:"全部类型"}),Object.entries(kx).map(([j,_])=>e.jsx("option",{value:j,children:_},j))]}),e.jsxs("button",{type:"button",onClick:N,disabled:g,className:"flex items-center gap-2 px-4 py-2 rounded-lg border border-gray-600 text-gray-300 hover:bg-gray-700/50 transition-colors disabled:opacity-50",children:[e.jsx($e,{className:`w-4 h-4 ${g?"animate-spin":""}`})," 刷新"]})]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:e.jsx(we,{className:"p-0",children:g?e.jsxs("div",{className:"flex justify-center py-12",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):e.jsxs(e.Fragment,{children:[e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"发起人"}),e.jsx(be,{className:"text-gray-400",children:"匹配到"}),e.jsx(be,{className:"text-gray-400",children:"类型"}),e.jsx(be,{className:"text-gray-400",children:"联系方式"}),e.jsx(be,{className:"text-gray-400",children:"匹配时间"})]})}),e.jsxs(ps,{children:[r.map(j=>e.jsxs(et,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[e.jsx(pe,{children:e.jsx(S,{userId:j.userId,nickname:j.userNickname,avatar:j.userAvatar})}),e.jsx(pe,{children:j.matchedUserId?e.jsx(S,{userId:j.matchedUserId,nickname:j.matchedNickname,avatar:j.matchedUserAvatar}):e.jsx("span",{className:"text-gray-500",children:"—"})}),e.jsx(pe,{children:e.jsx(Le,{className:"bg-[#38bdac]/20 text-[#38bdac] border-0",children:kx[j.matchType]||j.matchType})}),e.jsxs(pe,{className:"text-sm",children:[j.phone&&e.jsxs("div",{className:"text-green-400",children:["📱 ",j.phone]}),j.wechatId&&e.jsxs("div",{className:"text-blue-400",children:["💬 ",j.wechatId]}),!j.phone&&!j.wechatId&&e.jsx("span",{className:"text-gray-600",children:"-"})]}),e.jsx(pe,{className:"text-gray-400",children:j.createdAt?new Date(j.createdAt).toLocaleString():"-"})]},j.id)),r.length===0&&e.jsx(et,{children:e.jsx(pe,{colSpan:5,className:"text-center py-12 text-gray-500",children:"暂无匹配记录"})})]})]}),e.jsx(Qs,{page:c,totalPages:b,total:l,pageSize:m,onPageChange:u,onPageSizeChange:j=>{f(j),u(1)}})]})})}),e.jsx(p0,{open:!!T,onClose:()=>w(null),userId:T,onUserUpdated:N})]})}function zC(){const[r,a]=h.useState("records");return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{type:"button",onClick:()=>a("records"),className:`px-4 py-2 rounded-lg text-sm font-medium transition-all ${r==="records"?"bg-[#38bdac]/20 text-[#38bdac] border border-[#38bdac]/50":"bg-[#0a1628] text-gray-400 border border-gray-700 hover:text-white"}`,children:"匹配记录"}),e.jsx("button",{type:"button",onClick:()=>a("pool"),className:`px-4 py-2 rounded-lg text-sm font-medium transition-all ${r==="pool"?"bg-[#38bdac]/20 text-[#38bdac] border border-[#38bdac]/50":"bg-[#0a1628] text-gray-400 border border-gray-700 hover:text-white"}`,children:"匹配池设置"})]}),r==="records"&&e.jsx(FC,{}),r==="pool"&&e.jsx(OC,{})]})}const Ex={investor:"资源对接",mentor:"导师顾问",team:"团队招募"};function $C(){const[r,a]=h.useState([]),[l,o]=h.useState(0),[c,u]=h.useState(1),[m,f]=h.useState(10),[p,y]=h.useState(!0),[g,v]=h.useState("investor"),[k,P]=h.useState(null);async function T(){y(!0);try{const S=new URLSearchParams({page:String(c),pageSize:String(m),matchType:g}),j=await Be(`/api/db/match-records?${S}`);j!=null&&j.success&&(a(j.records||[]),o(j.total??0))}catch(S){console.error(S)}finally{y(!1)}}h.useEffect(()=>{T()},[c,g]);const w=async S=>{if(!S.phone&&!S.wechatId){alert("该记录无联系方式,无法推送到存客宝");return}P(S.id);try{const j=await mt("/api/ckb/join",{type:S.matchType||"investor",phone:S.phone||"",wechat:S.wechatId||"",userId:S.userId,name:S.userNickname||""});alert((j==null?void 0:j.message)||(j!=null&&j.success?"推送成功":"推送失败"))}catch(j){alert("推送失败: "+(j instanceof Error?j.message:"网络错误"))}finally{P(null)}},N=Math.ceil(l/m)||1,b=S=>!!(S.phone||S.wechatId);return e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between items-center mb-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400",children:"点击获客:有人填写手机号/微信号的直接显示,可一键推送到存客宝"}),e.jsxs("p",{className:"text-gray-500 text-xs mt-1",children:["共 ",l," 条记录 — 有联系方式的可触发存客宝添加好友"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("select",{value:g,onChange:S=>{v(S.target.value),u(1)},className:"bg-[#0f2137] border border-gray-700 text-white rounded-lg px-3 py-2 text-sm",children:Object.entries(Ex).map(([S,j])=>e.jsx("option",{value:S,children:j},S))}),e.jsxs(J,{onClick:T,disabled:p,variant:"outline",className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${p?"animate-spin":""}`})," 刷新"]})]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:e.jsx(we,{className:"p-0",children:p?e.jsxs("div",{className:"flex justify-center py-12",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):e.jsxs(e.Fragment,{children:[e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"发起人"}),e.jsx(be,{className:"text-gray-400",children:"匹配到"}),e.jsx(be,{className:"text-gray-400",children:"类型"}),e.jsx(be,{className:"text-gray-400",children:"联系方式"}),e.jsx(be,{className:"text-gray-400",children:"时间"}),e.jsx(be,{className:"text-gray-400 text-right",children:"操作"})]})}),e.jsxs(ps,{children:[r.map(S=>{var j,_;return e.jsxs(et,{className:`border-gray-700/50 ${b(S)?"hover:bg-[#0a1628]":"opacity-60"}`,children:[e.jsx(pe,{className:"text-white",children:S.userNickname||((j=S.userId)==null?void 0:j.slice(0,12))}),e.jsx(pe,{className:"text-white",children:S.matchedNickname||((_=S.matchedUserId)==null?void 0:_.slice(0,12))}),e.jsx(pe,{children:e.jsx(Le,{className:"bg-[#38bdac]/20 text-[#38bdac] border-0",children:Ex[S.matchType]||S.matchType})}),e.jsxs(pe,{className:"text-sm",children:[S.phone&&e.jsxs("div",{className:"text-green-400",children:["📱 ",S.phone]}),S.wechatId&&e.jsxs("div",{className:"text-blue-400",children:["💬 ",S.wechatId]}),!S.phone&&!S.wechatId&&e.jsx("span",{className:"text-gray-600",children:"无联系方式"})]}),e.jsx(pe,{className:"text-gray-400 text-sm",children:S.createdAt?new Date(S.createdAt).toLocaleString():"-"}),e.jsx(pe,{className:"text-right",children:b(S)?e.jsxs(J,{size:"sm",onClick:()=>w(S),disabled:k===S.id,className:"bg-[#38bdac] hover:bg-[#2da396] text-white text-xs h-7 px-3",children:[e.jsx(aN,{className:"w-3 h-3 mr-1"}),k===S.id?"推送中...":"推送CKB"]}):e.jsx("span",{className:"text-gray-600 text-xs",children:"—"})})]},S.id)}),r.length===0&&e.jsx(et,{children:e.jsx(pe,{colSpan:6,className:"text-center py-12 text-gray-500",children:"暂无记录"})})]})]}),e.jsx(Qs,{page:c,totalPages:N,total:l,pageSize:m,onPageChange:u,onPageSizeChange:S=>{f(S),u(1)}})]})})})]})}const Px={created:"已创建",pending_pay:"待支付",paid:"已支付",completed:"已完成",cancelled:"已取消"},BC={single:"单次",half_year:"半年",year:"年度"};function UC(){const[r,a]=h.useState([]),[l,o]=h.useState(!0),[c,u]=h.useState("");async function m(){o(!0);try{const f=c?`/api/db/mentor-consultations?status=${c}`:"/api/db/mentor-consultations",p=await Be(f);p!=null&&p.success&&p.data&&a(p.data)}catch(f){console.error(f)}finally{o(!1)}}return h.useEffect(()=>{m()},[c]),e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between items-center mb-4",children:[e.jsx("p",{className:"text-gray-400",children:"导师咨询预约记录"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("select",{value:c,onChange:f=>u(f.target.value),className:"bg-[#0f2137] border border-gray-700 rounded-lg px-3 py-2 text-gray-300 text-sm",children:[e.jsx("option",{value:"",children:"全部状态"}),Object.entries(Px).map(([f,p])=>e.jsx("option",{value:f,children:p},f))]}),e.jsxs(J,{onClick:m,disabled:l,variant:"outline",className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${l?"animate-spin":""}`})," 刷新"]})]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-0",children:l?e.jsx("div",{className:"py-12 text-center text-gray-400",children:"加载中..."}):e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"ID"}),e.jsx(be,{className:"text-gray-400",children:"用户ID"}),e.jsx(be,{className:"text-gray-400",children:"导师ID"}),e.jsx(be,{className:"text-gray-400",children:"类型"}),e.jsx(be,{className:"text-gray-400",children:"金额"}),e.jsx(be,{className:"text-gray-400",children:"状态"}),e.jsx(be,{className:"text-gray-400",children:"创建时间"})]})}),e.jsxs(ps,{children:[r.map(f=>e.jsxs(et,{className:"border-gray-700/50",children:[e.jsx(pe,{className:"text-gray-300",children:f.id}),e.jsx(pe,{className:"text-gray-400",children:f.userId}),e.jsx(pe,{className:"text-gray-400",children:f.mentorId}),e.jsx(pe,{className:"text-gray-400",children:BC[f.consultationType]||f.consultationType}),e.jsxs(pe,{className:"text-white",children:["¥",f.amount]}),e.jsx(pe,{className:"text-gray-400",children:Px[f.status]||f.status}),e.jsx(pe,{className:"text-gray-500 text-sm",children:f.createdAt?new Date(f.createdAt).toLocaleString():"-"})]},f.id)),r.length===0&&e.jsx(et,{children:e.jsx(pe,{colSpan:7,className:"text-center py-12 text-gray-500",children:"暂无预约记录"})})]})]})})})]})}function VC(){const[r,a]=h.useState("booking");return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{type:"button",onClick:()=>a("booking"),className:`px-4 py-2 rounded-lg text-sm font-medium transition-all ${r==="booking"?"bg-[#38bdac]/20 text-[#38bdac] border border-[#38bdac]/50":"bg-[#0a1628] text-gray-400 border border-gray-700 hover:text-white"}`,children:"预约记录"}),e.jsx("button",{type:"button",onClick:()=>a("manage"),className:`px-4 py-2 rounded-lg text-sm font-medium transition-all ${r==="manage"?"bg-[#38bdac]/20 text-[#38bdac] border border-[#38bdac]/50":"bg-[#0a1628] text-gray-400 border border-gray-700 hover:text-white"}`,children:"导师管理"})]}),r==="booking"&&e.jsx(UC,{}),r==="manage"&&e.jsx("div",{className:"-mx-8",children:e.jsx(Rg,{embedded:!0})})]})}function WC(){const[r,a]=h.useState([]),[l,o]=h.useState(0),[c,u]=h.useState(1),[m,f]=h.useState(10),[p,y]=h.useState(!0);async function g(){y(!0);try{const k=new URLSearchParams({page:String(c),pageSize:String(m),matchType:"team"}),P=await Be(`/api/db/match-records?${k}`);P!=null&&P.success&&(a(P.records||[]),o(P.total??0))}catch(k){console.error(k)}finally{y(!1)}}h.useEffect(()=>{g()},[c]);const v=Math.ceil(l/m)||1;return e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between items-center mb-4",children:[e.jsxs("div",{children:[e.jsxs("p",{className:"text-gray-400",children:["团队招募匹配记录,共 ",l," 条"]}),e.jsx("p",{className:"text-gray-500 text-xs mt-1",children:"用户通过「团队招募」提交联系方式到存客宝"})]}),e.jsxs("button",{type:"button",onClick:g,disabled:p,className:"flex items-center gap-2 px-4 py-2 rounded-lg border border-gray-600 text-gray-300 hover:bg-gray-700/50 transition-colors disabled:opacity-50",children:[e.jsx($e,{className:`w-4 h-4 ${p?"animate-spin":""}`})," 刷新"]})]}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl",children:e.jsx(we,{className:"p-0",children:p?e.jsxs("div",{className:"flex justify-center py-12",children:[e.jsx($e,{className:"w-6 h-6 text-[#38bdac] animate-spin"}),e.jsx("span",{className:"ml-2 text-gray-400",children:"加载中..."})]}):e.jsxs(e.Fragment,{children:[e.jsxs(fs,{children:[e.jsx(xs,{children:e.jsxs(et,{className:"bg-[#0a1628] hover:bg-[#0a1628] border-gray-700",children:[e.jsx(be,{className:"text-gray-400",children:"发起人"}),e.jsx(be,{className:"text-gray-400",children:"匹配到"}),e.jsx(be,{className:"text-gray-400",children:"联系方式"}),e.jsx(be,{className:"text-gray-400",children:"时间"})]})}),e.jsxs(ps,{children:[r.map(k=>e.jsxs(et,{className:"hover:bg-[#0a1628] border-gray-700/50",children:[e.jsx(pe,{className:"text-white",children:k.userNickname||k.userId}),e.jsx(pe,{className:"text-white",children:k.matchedNickname||k.matchedUserId}),e.jsxs(pe,{className:"text-gray-400 text-sm",children:[k.phone&&e.jsxs("div",{children:["📱 ",k.phone]}),k.wechatId&&e.jsxs("div",{children:["💬 ",k.wechatId]}),!k.phone&&!k.wechatId&&"-"]}),e.jsx(pe,{className:"text-gray-400",children:k.createdAt?new Date(k.createdAt).toLocaleString():"-"})]},k.id)),r.length===0&&e.jsx(et,{children:e.jsx(pe,{colSpan:4,className:"text-center py-12 text-gray-500",children:"暂无团队招募记录"})})]})]}),e.jsx(Qs,{page:c,totalPages:v,total:l,pageSize:m,onPageChange:u,onPageSizeChange:k=>{f(k),u(1)}})]})})})]})}const HC={partner:"超级个体",investor:"资源对接",mentor:"导师顾问",team:"团队招募"},KC={partner:"⭐",investor:"👥",mentor:"❤️",team:"🎮"};function GC({onSwitchTab:r}={}){const a=gn(),[l,o]=h.useState(null),[c,u]=h.useState(!0),[m,f]=h.useState("13800000000"),[p,y]=h.useState(""),[g,v]=h.useState([{endpoint:"/api/ckb/join",label:"场景获客 — 加入(partner)",description:"用测试手机号添加到存客宝「创业合伙」计划",method:"POST",status:"idle"},{endpoint:"/api/ckb/join",label:"场景获客 — 加入(investor)",description:"用测试手机号添加到存客宝「资源对接」计划",method:"POST",status:"idle"},{endpoint:"/api/ckb/join",label:"场景获客 — 加入(mentor)",description:"用测试手机号添加到存客宝「导师顾问」计划",method:"POST",status:"idle"},{endpoint:"/api/ckb/join",label:"场景获客 — 加入(team)",description:"用测试手机号添加到存客宝「团队招募」计划",method:"POST",status:"idle"},{endpoint:"/api/ckb/match",label:"匹配上报",description:"上报匹配行为到存客宝",method:"POST",status:"idle"},{endpoint:"/api/miniprogram/ckb/lead",label:"链接卡若",description:"首页「链接卡若」留资到存客宝",method:"POST",status:"idle"},{endpoint:"/api/match/config",label:"匹配配置",description:"获取匹配类型、价格等配置",method:"GET",status:"idle"}]),k=h.useCallback(async()=>{u(!0);try{const b=await Be("/api/db/match-records?stats=true");if(b!=null&&b.success&&b.data)o(b.data);else{const S=await Be("/api/db/match-records?page=1&pageSize=1");S!=null&&S.success&&o({totalMatches:S.total??0,todayMatches:0,byType:[],uniqueUsers:0})}}catch(b){console.error("加载统计失败:",b)}finally{u(!1)}},[]);h.useEffect(()=>{k()},[k]);const P=b=>{const S=m.trim(),j=p.trim(),_=["partner","investor","mentor","team"];return b<=3?{type:_[b],phone:S||void 0,wechat:j||void 0,userId:"admin_test",name:"后台测试",canHelp:b===1?"测试-我能帮到你":"",needHelp:b===1?"测试-我需要什么帮助":""}:b===4?{matchType:"partner",phone:S||void 0,wechat:j||void 0,userId:"admin_test",nickname:"后台测试",matchedUser:{id:"test_matched",nickname:"测试匹配用户",matchScore:88}}:b===5?{phone:S||void 0,wechatId:j||void 0,userId:"admin_test",name:"后台测试"}:{}},T=async b=>{const S=g[b];if(S.method==="POST"&&!m.trim()&&!p.trim()){alert("请至少填写测试手机号或微信号");return}const j=[...g];j[b]={...S,status:"testing",message:void 0,responseTime:void 0,ckbResponse:void 0},v(j);const _=performance.now();try{let O;S.method==="GET"?O=await Be(S.endpoint):O=await mt(S.endpoint,P(b));const V=Math.round(performance.now()-_),I=[...g],R=(O==null?void 0:O.message)||"",E=R.includes("已存在")||R.includes("已加入"),Y=(O==null?void 0:O.success)===!0||(O==null?void 0:O.code)===200||E;I[b]={...S,status:Y?"success":"error",message:R||(Y?"接口正常":"返回异常"),responseTime:V,ckbResponse:O!=null&&O.data?JSON.stringify(O.data).slice(0,100):void 0},v(I)}catch(O){const V=Math.round(performance.now()-_),I=[...g];I[b]={...S,status:"error",message:O instanceof Error?O.message:"请求失败",responseTime:V},v(I)}},w=async()=>{if(!m.trim()&&!p.trim()){alert("请至少填写测试手机号或微信号");return}for(let b=0;bc?"-":b??0;return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4",children:[e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50 cursor-pointer hover:border-[#38bdac]/50 transition-colors",onClick:()=>r==null?void 0:r("partner"),children:e.jsxs(we,{className:"p-5",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-lg bg-[#38bdac]/20 flex items-center justify-center",children:e.jsx(Yt,{className:"w-5 h-5 text-[#38bdac]"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-xs",children:"总匹配次数"}),e.jsx("p",{className:"text-xl font-bold text-white",children:N(l==null?void 0:l.totalMatches)})]})]}),e.jsx("p",{className:"text-[#38bdac] text-[10px] mt-2",children:"点击查看匹配记录 →"})]})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50 cursor-pointer hover:border-yellow-500/50 transition-colors",onClick:()=>r==null?void 0:r("partner"),children:e.jsxs(we,{className:"p-5",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-lg bg-yellow-500/20 flex items-center justify-center",children:e.jsx(an,{className:"w-5 h-5 text-yellow-400"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-xs",children:"今日匹配"}),e.jsx("p",{className:"text-xl font-bold text-white",children:N(l==null?void 0:l.todayMatches)})]})]}),e.jsx("p",{className:"text-yellow-400/60 text-[10px] mt-2",children:"点击查看匹配记录 →"})]})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50 cursor-pointer hover:border-blue-500/50 transition-colors",onClick:()=>a("/users"),children:e.jsxs(we,{className:"p-5",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-lg bg-blue-500/20 flex items-center justify-center",children:e.jsx(gN,{className:"w-5 h-5 text-blue-400"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-xs",children:"匹配用户数"}),e.jsx("p",{className:"text-xl font-bold text-white",children:N(l==null?void 0:l.uniqueUsers)})]})]}),e.jsx("p",{className:"text-blue-400/60 text-[10px] mt-2",children:"点击查看用户管理 →"})]})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-5",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-lg bg-green-500/20 flex items-center justify-center",children:e.jsx(Ta,{className:"w-5 h-5 text-green-400"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-xs",children:"人均匹配"}),e.jsx("p",{className:"text-xl font-bold text-white",children:c?"-":l!=null&&l.uniqueUsers?(l.totalMatches/l.uniqueUsers).toFixed(1):"0"})]})]})})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-5",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-lg bg-purple-500/20 flex items-center justify-center",children:e.jsx(Ml,{className:"w-5 h-5 text-purple-400"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-xs",children:"匹配收益"}),e.jsxs("p",{className:"text-xl font-bold text-white",children:["¥",N(l==null?void 0:l.matchRevenue)]})]})]})})}),e.jsx(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:e.jsx(we,{className:"p-5",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-lg bg-orange-500/20 flex items-center justify-center",children:e.jsx($j,{className:"w-5 h-5 text-orange-400"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 text-xs",children:"付费匹配"}),e.jsx("p",{className:"text-xl font-bold text-white",children:N(l==null?void 0:l.paidMatchCount)})]})]})})})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsxs(Ke,{className:"flex flex-row items-center justify-between pb-3",children:[e.jsx(Ge,{className:"text-white text-lg",children:"各类型匹配分布"}),e.jsxs(J,{onClick:k,disabled:c,variant:"outline",size:"sm",className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent",children:[e.jsx($e,{className:`w-4 h-4 mr-2 ${c?"animate-spin":""}`})," 刷新数据"]})]}),e.jsx(we,{children:l!=null&&l.byType&&l.byType.length>0?e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:l.byType.map(b=>{const S=l.totalMatches>0?b.count/l.totalMatches*100:0;return e.jsxs("div",{className:"bg-[#0a1628] rounded-lg p-4",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"text-xl",children:KC[b.matchType]||"📊"}),e.jsx("span",{className:"text-gray-300 text-sm font-medium",children:HC[b.matchType]||b.matchType})]}),e.jsx("p",{className:"text-2xl font-bold text-white",children:b.count}),e.jsxs("div",{className:"mt-2",children:[e.jsx("div",{className:"w-full h-2 bg-gray-700 rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full bg-[#38bdac] rounded-full transition-all",style:{width:`${Math.min(S,100)}%`}})}),e.jsxs("p",{className:"text-gray-500 text-xs mt-1",children:[S.toFixed(1),"% 占比"]})]})]},b.matchType)})}):e.jsx("p",{className:"text-gray-500 text-center py-8",children:c?"加载中...":"暂无匹配数据"})})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50",children:[e.jsxs(Ke,{children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center md:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsxs(Ge,{className:"text-white flex items-center gap-2",children:[e.jsx(on,{className:"w-5 h-5 text-[#38bdac]"}),"存客宝接口联通测试"]}),e.jsx("p",{className:"text-gray-400 text-sm mt-1",children:"点击测试会用下方手机号/微信号真实添加到存客宝对应计划中"})]}),e.jsxs(J,{onClick:w,className:"bg-[#38bdac] hover:bg-[#2da396] text-white shrink-0",children:[e.jsx(an,{className:"w-4 h-4 mr-2"})," 全部测试"]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 mt-4 p-4 bg-[#0a1628] rounded-lg border border-gray-700/50",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-1",children:[e.jsx(Al,{className:"w-4 h-4 text-gray-400 shrink-0"}),e.jsxs("div",{className:"flex-1 space-y-1",children:[e.jsx(te,{className:"text-gray-400 text-xs",children:"测试手机号"}),e.jsx(le,{className:"bg-[#0f2137] border-gray-700 text-white h-9",placeholder:"填写真实手机号添加到存客宝",value:m,onChange:b=>f(b.target.value)})]})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-1",children:[e.jsx("span",{className:"text-gray-400 shrink-0 text-sm",children:"💬"}),e.jsxs("div",{className:"flex-1 space-y-1",children:[e.jsx(te,{className:"text-gray-400 text-xs",children:"测试微信号(可选)"}),e.jsx(le,{className:"bg-[#0f2137] border-gray-700 text-white h-9",placeholder:"填写微信号(可选)",value:p,onChange:b=>y(b.target.value)})]})]})]})]}),e.jsx(we,{children:e.jsx("div",{className:"space-y-2",children:g.map((b,S)=>e.jsxs("div",{className:"flex items-center justify-between bg-[#0a1628] rounded-lg px-4 py-3 gap-4",children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0 flex-1",children:[b.status==="idle"&&e.jsx("div",{className:"w-3 h-3 rounded-full bg-gray-500 shrink-0"}),b.status==="testing"&&e.jsx($e,{className:"w-4 h-4 text-yellow-400 animate-spin shrink-0"}),b.status==="success"&&e.jsx(Gd,{className:"w-4 h-4 text-green-400 shrink-0"}),b.status==="error"&&e.jsx(Wx,{className:"w-4 h-4 text-red-400 shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-white text-sm font-medium",children:b.label}),e.jsx("p",{className:"text-gray-500 text-xs truncate",children:b.description})]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[b.message&&e.jsx("span",{className:`text-xs max-w-[200px] truncate ${b.status==="success"?"text-green-400":b.status==="error"?"text-red-400":"text-gray-400"}`,children:b.message}),b.responseTime!==void 0&&e.jsxs(Le,{className:"bg-gray-700 text-gray-300 border-0 text-xs",children:[b.responseTime,"ms"]}),e.jsx(J,{size:"sm",variant:"outline",onClick:()=>T(S),disabled:b.status==="testing",className:"border-gray-600 text-gray-300 hover:bg-gray-700/50 bg-transparent text-xs h-8 px-3",children:"测试"})]})]},`${b.endpoint}-${S}`))})})]})]})}const YC=[{id:"stats",label:"数据统计",icon:Gj},{id:"partner",label:"找伙伴",icon:Yt},{id:"resource",label:"资源对接",icon:kb},{id:"mentor",label:"导师预约",icon:wb},{id:"team",label:"团队招募",icon:Xd}];function QC(){const[r,a]=h.useState("stats");return e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"mb-6",children:[e.jsxs("h2",{className:"text-2xl font-bold text-white flex items-center gap-2",children:[e.jsx(Yt,{className:"w-6 h-6 text-[#38bdac]"}),"找伙伴"]}),e.jsx("p",{className:"text-gray-400 mt-1",children:"数据统计、匹配池与记录、资源对接、导师预约、团队招募"})]}),e.jsx("div",{className:"flex flex-wrap gap-1 mb-6 bg-[#0f2137] rounded-lg p-1 border border-gray-700/50",children:YC.map(l=>{const o=r===l.id;return e.jsxs("button",{type:"button",onClick:()=>a(l.id),className:`flex items-center gap-2 px-5 py-2.5 rounded-md text-sm font-medium transition-all ${o?"bg-[#38bdac] text-white shadow-lg":"text-gray-400 hover:text-white hover:bg-gray-700/50"}`,children:[e.jsx(l.icon,{className:"w-4 h-4"}),l.label]},l.id)})}),r==="stats"&&e.jsx(GC,{onSwitchTab:l=>a(l)}),r==="partner"&&e.jsx(zC,{}),r==="resource"&&e.jsx($C,{}),r==="mentor"&&e.jsx(VC,{}),r==="team"&&e.jsx(WC,{})]})}function qC(){return e.jsxs("div",{className:"p-8 w-full",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-8",children:[e.jsx(on,{className:"w-8 h-8 text-[#38bdac]"}),e.jsx("h1",{className:"text-2xl font-bold text-white",children:"API 接口文档"})]}),e.jsx("p",{className:"text-gray-400 mb-6",children:"API 风格:RESTful · 版本 v1.0 · 基础路径 /api · 简单、清晰、易用。"}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl mb-6",children:[e.jsx(Ke,{children:e.jsx(Ge,{className:"text-white",children:"1. 接口总览"})}),e.jsxs(we,{className:"space-y-4 text-sm",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 mb-2",children:"接口分类"}),e.jsxs("ul",{className:"space-y-1 text-gray-300 font-mono",children:[e.jsx("li",{children:"/api/book — 书籍内容(章节列表、内容获取、同步)"}),e.jsx("li",{children:"/api/payment — 支付系统(订单创建、回调、状态查询)"}),e.jsx("li",{children:"/api/referral — 分销系统(邀请码、收益、提现)"}),e.jsx("li",{children:"/api/user — 用户系统(登录、注册、信息更新)"}),e.jsx("li",{children:"/api/match — 匹配系统(寻找匹配、匹配历史)"}),e.jsx("li",{children:"/api/admin — 管理后台(内容/订单/用户/分销管理)"}),e.jsx("li",{children:"/api/config — 配置系统"})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-gray-400 mb-2",children:"认证方式"}),e.jsx("p",{className:"text-gray-300",children:"用户:Cookie session_id(可选)"}),e.jsx("p",{className:"text-gray-300",children:"管理端:Authorization: Bearer admin-token-secret"})]})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl mb-6",children:[e.jsx(Ke,{children:e.jsx(Ge,{className:"text-white",children:"2. 书籍内容"})}),e.jsxs(we,{className:"space-y-2 text-sm text-gray-300 font-mono",children:[e.jsx("p",{children:"GET /api/book/all-chapters — 获取所有章节"}),e.jsx("p",{children:"GET /api/book/chapter/:id — 获取单章内容"}),e.jsx("p",{children:"POST /api/book/sync — 同步章节(需管理员认证)"})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl mb-6",children:[e.jsx(Ke,{children:e.jsx(Ge,{className:"text-white",children:"3. 支付"})}),e.jsxs(we,{className:"space-y-2 text-sm text-gray-300 font-mono",children:[e.jsx("p",{children:"POST /api/payment/create-order — 创建订单"}),e.jsx("p",{children:"POST /api/payment/alipay/notify — 支付宝回调"}),e.jsx("p",{children:"POST /api/payment/wechat/notify — 微信回调"})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl mb-6",children:[e.jsx(Ke,{children:e.jsx(Ge,{className:"text-white",children:"4. 分销与用户"})}),e.jsxs(we,{className:"space-y-2 text-sm text-gray-300 font-mono",children:[e.jsx("p",{children:"/api/referral/* — 邀请码、收益查询、提现"}),e.jsx("p",{children:"/api/user/* — 登录、注册、信息更新"}),e.jsx("p",{children:"/api/match/* — 匹配、匹配历史"})]})]}),e.jsxs(Ne,{className:"bg-[#0f2137] border-gray-700/50 shadow-xl mb-6",children:[e.jsx(Ke,{children:e.jsx(Ge,{className:"text-white",children:"5. 管理后台"})}),e.jsxs(we,{className:"space-y-2 text-sm text-gray-300 font-mono",children:[e.jsx("p",{children:"GET/POST /api/admin/referral-settings — 推广/分销设置(含 VIP 配置)"}),e.jsx("p",{children:"GET /api/db/users、/api/db/book — 用户与章节数据"}),e.jsx("p",{children:"GET /api/orders — 订单列表"})]})]}),e.jsx("p",{className:"text-gray-500 text-xs",children:"完整说明见项目内 开发文档/5、接口/API接口完整文档.md"})]})}function XC(){const r=pn();return e.jsx("div",{className:"min-h-screen bg-[#0a1628] flex items-center justify-center p-8",children:e.jsxs("div",{className:"text-center max-w-md",children:[e.jsx("div",{className:"inline-flex items-center justify-center w-20 h-20 rounded-full bg-red-500/20 text-red-400 mb-6",children:e.jsx(Zj,{className:"w-10 h-10"})}),e.jsx("h1",{className:"text-4xl font-bold text-white mb-2",children:"404"}),e.jsx("p",{className:"text-gray-400 mb-1",children:"页面不存在"}),e.jsx("p",{className:"text-sm text-gray-500 font-mono mb-8 break-all",children:r.pathname}),e.jsx(J,{asChild:!0,className:"bg-[#38bdac] hover:bg-[#2da396] text-white",children:e.jsxs(Kd,{to:"/",children:[e.jsx(Pb,{className:"w-4 h-4 mr-2"}),"返回首页"]})})]})})}function JC(){return e.jsxs(Nj,{children:[e.jsx(yt,{path:"/login",element:e.jsx(Ew,{})}),e.jsxs(yt,{path:"/",element:e.jsx(RN,{}),children:[e.jsx(yt,{index:!0,element:e.jsx(Sd,{to:"/dashboard",replace:!0})}),e.jsx(yt,{path:"dashboard",element:e.jsx(Tw,{})}),e.jsx(yt,{path:"orders",element:e.jsx(f2,{})}),e.jsx(yt,{path:"users",element:e.jsx($2,{})}),e.jsx(yt,{path:"distribution",element:e.jsx(o4,{})}),e.jsx(yt,{path:"withdrawals",element:e.jsx(c4,{})}),e.jsx(yt,{path:"content",element:e.jsx(pC,{})}),e.jsx(yt,{path:"referral-settings",element:e.jsx(I0,{})}),e.jsx(yt,{path:"author-settings",element:e.jsx(Sd,{to:"/settings?tab=author",replace:!0})}),e.jsx(yt,{path:"admin-users",element:e.jsx(Sd,{to:"/settings?tab=admin",replace:!0})}),e.jsx(yt,{path:"vip-roles",element:e.jsx(AC,{})}),e.jsx(yt,{path:"mentors",element:e.jsx(Rg,{})}),e.jsx(yt,{path:"mentor-consultations",element:e.jsx(DC,{})}),e.jsx(yt,{path:"settings",element:e.jsx(SC,{})}),e.jsx(yt,{path:"payment",element:e.jsx(CC,{})}),e.jsx(yt,{path:"site",element:e.jsx(TC,{})}),e.jsx(yt,{path:"qrcodes",element:e.jsx(RC,{})}),e.jsx(yt,{path:"find-partner",element:e.jsx(QC,{})}),e.jsx(yt,{path:"match",element:e.jsx(_C,{})}),e.jsx(yt,{path:"match-records",element:e.jsx(MC,{})}),e.jsx(yt,{path:"api-doc",element:e.jsx(qC,{})})]}),e.jsx(yt,{path:"*",element:e.jsx(XC,{})})]})}kv.createRoot(document.getElementById("root")).render(e.jsx(h.StrictMode,{children:e.jsx(Rj,{future:{v7_startTransition:!0,v7_relativeSplatPath:!0},children:e.jsx(JC,{})})})); diff --git a/soul-admin/dist/index.html b/soul-admin/dist/index.html index e02ee626..f05ae661 100644 --- a/soul-admin/dist/index.html +++ b/soul-admin/dist/index.html @@ -4,7 +4,7 @@ 管理后台 - Soul创业派对 - + diff --git a/soul-admin/src/pages/find-partner/tabs/CKBStatsTab.tsx b/soul-admin/src/pages/find-partner/tabs/CKBStatsTab.tsx index 7d1a0639..dc05f17c 100644 --- a/soul-admin/src/pages/find-partner/tabs/CKBStatsTab.tsx +++ b/soul-admin/src/pages/find-partner/tabs/CKBStatsTab.tsx @@ -92,11 +92,37 @@ export function CKBStatsTab({ onSwitchTab }: CKBStatsTabProps = {}) { try { const data = await get<{ success?: boolean; data?: MatchStats }>('/api/db/match-records?stats=true') if (data?.success && data.data) { - setStats(data.data) + let result = data.data + // 后端 GORM bug 导致 uniqueUsers=0 时,前端自行计算 + if (result.totalMatches > 0 && (!result.uniqueUsers || result.uniqueUsers === 0)) { + try { + const allRec = await get<{ success?: boolean; records?: { userId: string }[]; total?: number }>( + '/api/db/match-records?page=1&pageSize=200' + ) + if (allRec?.success && allRec.records) { + const userSet = new Set(allRec.records.map(r => r.userId).filter(Boolean)) + result = { ...result, uniqueUsers: userSet.size, totalMatches: allRec.total ?? result.totalMatches } + } + } catch { /* ignore fallback error */ } + } + setStats(result) } else { - const fallback = await get<{ success?: boolean; total?: number }>('/api/db/match-records?page=1&pageSize=1') + const fallback = await get<{ success?: boolean; records?: { userId: string; matchType: string; createdAt: string }[]; total?: number }>( + '/api/db/match-records?page=1&pageSize=200' + ) if (fallback?.success) { - setStats({ totalMatches: fallback.total ?? 0, todayMatches: 0, byType: [], uniqueUsers: 0 }) + const records = fallback.records || [] + const userSet = new Set(records.map(r => r.userId).filter(Boolean)) + const today = new Date().toISOString().slice(0, 10) + const todayCount = records.filter(r => r.createdAt?.startsWith(today)).length + const typeMap: Record = {} + records.forEach(r => { if (r.matchType) typeMap[r.matchType] = (typeMap[r.matchType] || 0) + 1 }) + setStats({ + totalMatches: fallback.total ?? records.length, + todayMatches: todayCount, + byType: Object.entries(typeMap).map(([matchType, count]) => ({ matchType, count })), + uniqueUsers: userSet.size, + }) } } } catch (e) { console.error('加载统计失败:', e) }