feat(audit): F1+F2 告警静默规则标记完成 + 审计日志CSV导出实现

F1 告警静默规则 [done]:
- 后端 alert_silence.go: CRUD + Toggle (onetime/daily/weekly 三模式)
- 告警引擎 isSilenced 集成 (alert_engine.go)
- 前端 SilenceRuleTab + SilenceDialog
- 路由 /alerts/silences 已注册

F2 审计日志导出 [done]:
- 重写 ExportAuditLogs: 真正的 CSV 导出 (encoding/csv + UTF-8 BOM)
- 支持 module/action/username/startTime/endTime 筛选
- 导出限制 10000 条防溢出,自动记录审计日志
- JSON 格式向后兼容 (format=json)
- 前端 exportLogs 传递查询参数

同时包含累积的前期工作:
- 目录重构 internal/ -> controller/model/router (v0.55-v0.57)
- 后端分层架构 dto/repository/service/utils
- 审计模块全功能 (终端审计/操作审计/登录日志)
- asciicast v2 录制格式
- SFTP 文件浏览器
- StatStrip 紧凑统计条
- 在线会话自动刷新
- LiveMonitor WebSocket 诊断修复

验证: go build ✅ | npm run build ✅ | Docker 部署 ✅ | 10 回归端点 ✅ | CSV 导出 ✅ | 静默 CRUD ✅
This commit is contained in:
attacker committed 2026-06-25 20:16:30 +08:00
1 parent e57718998a
commit 77c234b060
314 files changed
+10050 -4065

No files matched your search

+103
View File
@@ -0,0 +1,103 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Dashboard-iCzLAtNG.js","./dashboard-BjQPIG2G.js","./server-CjDPBaTN.js","./kubernetes-J8O09fK7.js","./card-C55cvSHg.js","./trending-up-CdusV6gc.js","./trending-down-BGTWG_dA.js","./minus-UVrx3jLc.js","./badge-xNW8x0G1.js","./hard-drive-BbPmnARR.js","./generateCategoricalChart-6v9BPbG2.js","./AreaChart-B2zlWfdX.js","./BarChart-DlFprovY.js","./memory-stick-QMV-0CnU.js","./arrow-right-DyIltvNZ.js","./circle-DOZr6_68.js","./ServerManager-JxMW-hQt.js","./checkbox-CH0bpj6b.js","./index-CWVNW_qu.js","./table-5sHV4Akp.js","./select-D5qUzdAs.js","./rotate-cw-5qcj_h_q.js","./index-a3ybMjbR.js","./cloud-Dzoer-2i.js","./refresh-cw-DUB_tAG-.js","./xterm-DSqgeKvr.js","./xterm-DXOU9pbP.css","./deploy-B3Sg3N1U.js","./minimize-2-CiCQYRfn.js","./folder-open-IMBifk-r.js","./upload-Ba6rlaGS.js","./folder-DoMwqvzv.js","./arrow-left-BDgGyrD0.js","./download-DoZfYs2h.js","./trash-2-Dx32pOzT.js","./label-BK0h2apY.js","./textarea-NXY8u32k.js","./save-DoGGjfwC.js","./ellipsis-DU5enAwm.js","./square-pen-BxUFAe0F.js","./plus-CUG-9kpu.js","./CloudAccountManager-DU9759_X.js","./circle-check-DWcXrx2k.js","./circle-x-DK79Dhg2.js","./pencil-BqUotcjf.js","./DomainManager-CIA5bu9u.js","./RegionManager-Bj8EPK6w.js","./PlatformManager-DvSL1hbm.js","./external-link-CzIpMNu1.js","./CloudBilling-BUyc8wKP.js","./switch-CGiGgOnh.js","./KubernetesClusters-CsRHjVkA.js","./tabs-CIh_yD4s.js","./ClusterOverviewPage-CYcNLUM0.js","./use-toast-CrSOP4cJ.js","./NodeDetailPage-MBEvAdV0.js","./NamespaceOverviewPage-qjFlj_lA.js","./file-text-C9G5abwR.js","./NamespaceManagementPage-Do5kDmHW.js","./NamespaceResourcePage-Byljvm8v.js","./PodFileBrowser-BySN2XGN.js","./copy-DXW4LnkN.js","./sparkles-Bld4NX5y.js","./box-TTGA1p57.js","./DeploymentDetailPage--48QYro1.js","./history-D_9jPUQg.js","./play-cdPayOtJ.js","./zap-D2uWSK32.js","./disc-EsE6x5Oh.js","./pause-D_famo9P.js","./WorkloadViewPage-Koq6nkyo.js","./tag-0HCfq8kH.js","./TopologyView-scPjlVYA.js","./KubernetesNodes-DNrQwI__.js","./PodMetricsPage-DjvvN_IG.js","./EventsPage-Dbw7LuoJ.js","./layers-FW4KKJMi.js","./CapacityPage-Dz7l4ubk.js","./AlertManager-BaUrn6Bk.js","./monitor-BAaBXIsC.js","./AlertRuleDialog-DnF-_Zoj.js","./message-square-DyxabBvb.js","./phone-DgvWDdJl.js","./ApprovalFlow-5mIFjuJZ.js","./system-BgtMMm0X.js","./funnel-D2FHr15I.js","./ScriptManager-BFWlhlzw.js","./automation-mtL167W_.js","./SystemManager-D4SbaG04.js","./user-plus-BwUWtcQl.js","./AuditPage-BdPy-cgE.js","./CredentialManager-DlhOOSIa.js","./PipelineManager-C1vaTQ2Z.js","./shield-check-Dcx486cW.js","./code-L62jFLTC.js","./circle-stop-s4wxdTEV.js","./DeployCredentials-XbkP4xDn.js","./wrench-KfbhOOJm.js","./PipelineEditor-DrEZIuvh.js","./PipelineRunDetail-CwWLRhgo.js","./square-9TIYDO_t.js","./DeployRBAC-QV1xM1Jn.js","./UserGroupsManager-nOJ7di7Y.js","./CronJobManager-BMfKpm0z.js","./package-open-CUXo2Tda.js","./AIOpsAssistant-DFQDT-tz.js","./agent-DqqIRCQX.js","./ai-BTgmlP5Q.js","./wifi-FqsslTyA.js","./AIAlertAnalyzer-B9ptAIV7.js","./AIPredictiveAnalytics-Dr8sfqna.js","./AlertCenter-C3WMw6jA.js","./TraceManager-D4FRDBfs.js","./HostMonitor-C63FMElJ.js","./GrafanaDashboard-BoB6WmDi.js","./arrow-up-down-DnvTt5VG.js","./MonitorCenter-Cdfxw79h.js","./MetricsExplorer-CQYGy4Dt.js","./DatasourcePage-brk0z6d8.js"])))=>i.map(i=>d[i]);
function PS(n,r){for(var l=0;l<r.length;l++){const s=r[l];if(typeof s!="string"&&!Array.isArray(s)){for(const i in s)if(i!=="default"&&!(i in n)){const u=Object.getOwnPropertyDescriptor(s,i);u&&Object.defineProperty(n,i,u.get?u:{enumerable:!0,get:()=>s[i]})}}}return Object.freeze(Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}))}(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))s(i);new MutationObserver(i=>{for(const u of i)if(u.type==="childList")for(const f of u.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&s(f)}).observe(document,{childList:!0,subtree:!0});function l(i){const u={};return i.integrity&&(u.integrity=i.integrity),i.referrerPolicy&&(u.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?u.credentials="include":i.crossOrigin==="anonymous"?u.credentials="omit":u.credentials="same-origin",u}function s(i){if(i.ep)return;i.ep=!0;const u=l(i);fetch(i.href,u)}})();var IO=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ly(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var nd={exports:{}},Xo={};var Lg;function qS(){if(Lg)return Xo;Lg=1;var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function l(s,i,u){var f=null;if(u!==void 0&&(f=""+u),i.key!==void 0&&(f=""+i.key),"key"in i){u={};for(var p in i)p!=="key"&&(u[p]=i[p])}else u=i;return i=u.ref,{$$typeof:n,type:s,key:f,ref:i!==void 0?i:null,props:u}}return Xo.Fragment=r,Xo.jsx=l,Xo.jsxs=l,Xo}var Hg;function VS(){return Hg||(Hg=1,nd.exports=qS()),nd.exports}var h=VS(),ad={exports:{}},ye={};var Ug;function GS(){if(Ug)return ye;Ug=1;var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),l=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),u=Symbol.for("react.consumer"),f=Symbol.for("react.context"),p=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),v=Symbol.for("react.memo"),x=Symbol.for("react.lazy"),b=Symbol.for("react.activity"),w=Symbol.iterator;function A(T){return T===null||typeof T!="object"?null:(T=w&&T[w]||T["@@iterator"],typeof T=="function"?T:null)}var _={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,E={};function M(T,Y,F){this.props=T,this.context=Y,this.refs=E,this.updater=F||_}M.prototype.isReactComponent={},M.prototype.setState=function(T,Y){if(typeof T!="object"&&typeof T!="function"&&T!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,T,Y,"setState")},M.prototype.forceUpdate=function(T){this.updater.enqueueForceUpdate(this,T,"forceUpdate")};function H(){}H.prototype=M.prototype;function D(T,Y,F){this.props=T,this.context=Y,this.refs=E,this.updater=F||_}var j=D.prototype=new H;j.constructor=D,C(j,M.prototype),j.isPureReactComponent=!0;var q=Array.isArray;function Z(){}var G={H:null,A:null,T:null,S:null},K=Object.prototype.hasOwnProperty;function W(T,Y,F){var J=F.ref;return{$$typeof:n,type:T,key:Y,ref:J!==void 0?J:null,props:F}}function se(T,Y){return W(T.type,Y,T.props)}function he(T){return typeof T=="object"&&T!==null&&T.$$typeof===n}function ge(T){var Y={"=":"=0",":":"=2"};return"$"+T.replace(/[=:]/g,function(F){return Y[F]})}var Ae=/\/+/g;function xe(T,Y){return typeof T=="object"&&T!==null&&T.key!=null?ge(""+T.key):Y.toString(36)}function ve(T){switch(T.status){case"fulfilled":return T.value;case"rejected":throw T.reason;default:switch(typeof T.status=="string"?T.then(Z,Z):(T.status="pending",T.then(function(Y){T.status==="pending"&&(T.status="fulfilled",T.value=Y)},function(Y){T.status==="pending"&&(T.status="rejected",T.reason=Y)})),T.status){case"fulfilled":return T.value;case"rejected":throw T.reason}}throw T}function z(T,Y,F,J,ce){var me=typeof T;(me==="undefined"||me==="boolean")&&(T=null);var te=!1;if(T===null)te=!0;else switch(me){case"bigint":case"string":case"number":te=!0;break;case"object":switch(T.$$typeof){case n:case r:te=!0;break;case x:return te=T._init,z(te(T._payload),Y,F,J,ce)}}if(te)return ce=ce(T),te=J===""?"."+xe(T,0):J,q(ce)?(F="",te!=null&&(F=te.replace(Ae,"$&/")+"/"),z(ce,Y,F,"",function(qt){return qt})):ce!=null&&(he(ce)&&(ce=se(ce,F+(ce.key==null||T&&T.key===ce.key?"":(""+ce.key).replace(Ae,"$&/")+"/")+te)),Y.push(ce)),1;te=0;var Qe=J===""?".":J+":";if(q(T))for(var Le=0;Le<T.length;Le++)J=T[Le],me=Qe+xe(J,Le),te+=z(J,Y,F,me,ce);else if(Le=A(T),typeof Le=="function")for(T=Le.call(T),Le=0;!(J=T.next()).done;)J=J.value,me=Qe+xe(J,Le++),te+=z(J,Y,F,me,ce);else if(me==="object"){if(typeof T.then=="function")return z(ve(T),Y,F,J,ce);throw Y=String(T),Error("Objects are not valid as a React child (found: "+(Y==="[object Object]"?"object wLine truncated
at`)?" (<anonymous>)":-1<a.stack.indexOf("@")?"@unknown:0:0":""}return`
`+fn+e+Ca}var Bi=!1;function Pi(e,t){if(!e||Bi)return"";Bi=!0;var a=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var o={DetermineComponentFrameRoot:function(){try{if(t){var Q=function(){throw Error()};if(Object.defineProperty(Q.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(Q,[])}catch(B){var U=B}Reflect.construct(e,[],Q)}else{try{Q.call()}catch(B){U=B}e.call(Q.prototype)}}else{try{throw Error()}catch(B){U=B}(Q=e())&&typeof Q.catch=="function"&&Q.catch(function(){})}}catch(B){if(B&&U&&typeof B.stack=="string")return[B.stack,U.stack]}return[null,null]}};o.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var c=Object.getOwnPropertyDescriptor(o.DetermineComponentFrameRoot,"name");c&&c.configurable&&Object.defineProperty(o.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var d=o.DetermineComponentFrameRoot(),y=d[0],S=d[1];if(y&&S){var R=y.split(`
`),L=S.split(`
`);for(c=o=0;o<R.length&&!R[o].includes("DetermineComponentFrameRoot");)o++;for(;c<L.length&&!L[c].includes("DetermineComponentFrameRoot");)c++;if(o===R.length||c===L.length)for(o=R.length-1,c=L.length-1;1<=o&&0<=c&&R[o]!==L[c];)c--;for(;1<=o&&0<=c;o--,c--)if(R[o]!==L[c]){if(o!==1||c!==1)do if(o--,c--,0>c||R[o]!==L[c]){var V=`
`+R[o].replace(" at new "," at ");return e.displayName&&V.includes("<anonymous>")&&(V=V.replace("<anonymous>",e.displayName)),V}while(1<=o&&0<=c);break}}}finally{Bi=!1,Error.prepareStackTrace=a}return(a=e?e.displayName||e.name:"")?_a(a):""}function v0(e,t){switch(e.tag){case 26:case 27:case 5:return _a(e.type);case 16:return _a("Lazy");case 13:return e.child!==t&&t!==null?_a("Suspense Fallback"):_a("Suspense");case 19:return _a("SuspenseList");case 0:case 15:return Pi(e.type,!1);case 11:return Pi(e.type.render,!1);case 1:return Pi(e.type,!0);case 31:return _a("Activity");default:return""}}function Lf(e){try{var t="",a=null;do t+=v0(e,a),a=e,e=e.return;while(e);return t}catch(o){return`
Error generating stack: `+o.message+`
`+o.stack}}var qi=Object.prototype.hasOwnProperty,Vi=n.unstable_scheduleCallback,Gi=n.unstable_cancelCallback,y0=n.unstable_shouldYield,x0=n.unstable_requestPaint,Rt=n.unstable_now,b0=n.unstable_getCurrentPriorityLevel,Hf=n.unstable_ImmediatePriority,Uf=n.unstable_UserBlockingPriority,pl=n.unstable_NormalPriority,S0=n.unstable_LowPriority,Bf=n.unstable_IdlePriority,w0=n.log,E0=n.unstable_setDisableYieldValue,Jr=null,Tt=null;function $n(e){if(typeof w0=="function"&&E0(e),Tt&&typeof Tt.setStrictMode=="function")try{Tt.setStrictMode(Jr,e)}catch{}}var Mt=Math.clz32?Math.clz32:_0,A0=Math.log,C0=Math.LN2;function _0(e){return e>>>=0,e===0?32:31-(A0(e)/C0|0)|0}var ml=256,gl=262144,vl=4194304;function Ra(e){var t=e&42;if(t!==0)return t;switch(e&-e){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:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function yl(e,t,a){var o=e.pendingLanes;if(o===0)return 0;var c=0,d=e.suspendedLanes,y=e.pingedLanes;e=e.warmLanes;var S=o&134217727;return S!==0?(o=S&~d,o!==0?c=Ra(o):(y&=S,y!==0?c=Ra(y):a||(a=S&~e,a!==0&&(c=Ra(a))))):(S=o&~d,S!==0?c=Ra(S):y!==0?c=Ra(y):a||(a=o&~e,a!==0&&(c=Ra(a)))),c===0?0:t!==0&&t!==c&&(t&d)===0&&(d=c&-c,a=t&-t,d>=a||d===32&&(a&4194048)!==0)?t:c}function Wr(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function R0(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32: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+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Pf(){var e=vl;return vl<<=1,(vl&62914560)===0&&(vl=4194304),e}function Yi(e){for(var t=[],a=0;31>a;a++)t.push(e);return t}function eo(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function T0(e,t,a,o,c,d){var y=e.pendingLanes;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=a,e.entangledLanes&=a,e.errorRecoveryDisabledLanes&=a,e.shellSuspendCounter=0;var S=e.entanglements,R=e.expirationTimes,L=e.hiddenUpdates;for(a=y&~a;0<a;){var V=31-Mt(a),Q=1<<V;S[V]=0,R[V]=-1;var U=L[V];if(U!==null)for(L[V]=null,V=0;V<U.length;V++){var B=U[V];B!==null&&(B.lane&=-536870913)}a&=~Q}o!==0&&qf(e,o,0),d!==0&&c===0&&e.tag!==0&&(e.suspendedLanes|=d&~(y&~t))}function qf(e,t,a){e.pendingLanes|=t,e.suspendedLanes&=~t;var o=31-Mt(t);e.entangledLanes|=t,e.entanglements[o]=e.entanglements[o]|1073741824|a&261930}function Vf(e,t){var a=e.entangledLanes|=t;for(e=e.entanglements;a;){var o=31-Mt(a),c=1<<o;c&t|e[o]&t&&(e[o]|=t),a&=~c}}function Gf(e,t){var a=t&-t;return a=(a&42)!==0?1:Xi(a),(a&(e.suspendedLanes|t))!==0?0:a}function Xi(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;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:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function Qi(e){return e&=-e,2<e?8<e?(e&134217727)!==0?32:268435456:8:2}function Yf(){var e=$.p;return e!==0?e:(e=window.event,e===void 0?32:Mg(e.type))}function Xf(e,t){var a=$.p;try{return $.p=e,t()}finally{$.p=a}}var Fn=Math.random().toString(36).slice(2),st="__reactFiber$"+Fn,vt="__reactProps$"+Fn,Ia="__reactContainer$"+Fn,Ki="__reactEvents$"+Fn,M0="__reactListeners$"+Fn,O0="__reactHandles$"+Fn,Qf="__reactResources$"+Fn,to="__reactMarker$"+Fn;function $i(e){delete e[st],delete e[vt],delete e[Ki],delete e[M0],delete e[O0]}function Ja(e){var t=e[st];if(t)return t;for(var a=e.parentNode;a;){if(t=a[Ia]||a[st]){if(a=t.alternate,t.child!==null||a!==null&&a.child!==null)for(e=hg(e);e!==null;){if(a=e[st])return a;e=hg(e)}return t}e=a,a=e.parentNode}return null}function Wa(e){if(e=e[st]||e[Ia]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function no(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(s(33))}function er(e){var t=e[Qf];return t||(t=e[Qf]={hoistableStyles:new Map,hoistableScripts:new Map}),t}function ot(e){e[to]=!0}var Kf=new Set,$f={};function Ta(e,t){tr(e,t),tr(e+"Capture",t)}function tr(e,t){for($f[e]=t,e=0;e<t.length;e++)Kf.add(t[e])}var j0=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u21 Line truncated
`).replace(iS,"")}function ag(e,t){return t=ng(t),ng(e)===t}function Ue(e,t,a,o,c,d){switch(a){case"children":typeof o=="string"?t==="body"||t==="textarea"&&o===""||ar(e,o):(typeof o=="number"||typeof o=="bigint")&&t!=="body"&&ar(e,""+o);break;case"className":bl(e,"class",o);break;case"tabIndex":bl(e,"tabindex",o);break;case"dir":case"role":case"viewBox":case"width":case"height":bl(e,a,o);break;case"style":ah(e,o,d);break;case"data":if(t!=="object"){bl(e,"data",o);break}case"src":case"href":if(o===""&&(t!=="a"||a!=="href")){e.removeAttribute(a);break}if(o==null||typeof o=="function"||typeof o=="symbol"||typeof o=="boolean"){e.removeAttribute(a);break}o=wl(""+o),e.setAttribute(a,o);break;case"action":case"formAction":if(typeof o=="function"){e.setAttribute(a,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof d=="function"&&(a==="formAction"?(t!=="input"&&Ue(e,t,"name",c.name,c,null),Ue(e,t,"formEncType",c.formEncType,c,null),Ue(e,t,"formMethod",c.formMethod,c,null),Ue(e,t,"formTarget",c.formTarget,c,null)):(Ue(e,t,"encType",c.encType,c,null),Ue(e,t,"method",c.method,c,null),Ue(e,t,"target",c.target,c,null)));if(o==null||typeof o=="symbol"||typeof o=="boolean"){e.removeAttribute(a);break}o=wl(""+o),e.setAttribute(a,o);break;case"onClick":o!=null&&(e.onclick=_n);break;case"onScroll":o!=null&&Re("scroll",e);break;case"onScrollEnd":o!=null&&Re("scrollend",e);break;case"dangerouslySetInnerHTML":if(o!=null){if(typeof o!="object"||!("__html"in o))throw Error(s(61));if(a=o.__html,a!=null){if(c.children!=null)throw Error(s(60));e.innerHTML=a}}break;case"multiple":e.multiple=o&&typeof o!="function"&&typeof o!="symbol";break;case"muted":e.muted=o&&typeof o!="function"&&typeof o!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(o==null||typeof o=="function"||typeof o=="boolean"||typeof o=="symbol"){e.removeAttribute("xlink:href");break}a=wl(""+o),e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",a);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":o!=null&&typeof o!="function"&&typeof o!="symbol"?e.setAttribute(a,""+o):e.removeAttribute(a);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":o&&typeof o!="function"&&typeof o!="symbol"?e.setAttribute(a,""):e.removeAttribute(a);break;case"capture":case"download":o===!0?e.setAttribute(a,""):o!==!1&&o!=null&&typeof o!="function"&&typeof o!="symbol"?e.setAttribute(a,o):e.removeAttribute(a);break;case"cols":case"rows":case"size":case"span":o!=null&&typeof o!="function"&&typeof o!="symbol"&&!isNaN(o)&&1<=o?e.setAttribute(a,o):e.removeAttribute(a);break;case"rowSpan":case"start":o==null||typeof o=="function"||typeof o=="symbol"||isNaN(o)?e.removeAttribute(a):e.setAttribute(a,o);break;case"popover":Re("beforetoggle",e),Re("toggle",e),xl(e,"popover",o);break;case"xlinkActuate":Cn(e,"http://www.w3.org/1999/xlink","xlink:actuate",o);break;case"xlinkArcrole":Cn(e,"http://www.w3.org/1999/xlink","xlink:arcrole",o);break;case"xlinkRole":Cn(e,"http://www.w3.org/1999/xlink","xlink:role",o);break;case"xlinkShow":Cn(e,"http://www.w3.org/1999/xlink","xlink:show",o);break;case"xlinkTitle":Cn(e,"http://www.w3.org/1999/xlink","xlink:title",o);break;case"xlinkType":Cn(e,"http://www.w3.org/1999/xlink","xlink:type",o);break;case"xmlBase":Cn(e,"http://www.w3.org/XML/1998/namespace","xml:base",o);break;case"xmlLang":Cn(e,"http://www.w3.org/XML/1998/namespace","xml:lang",o);break;case"xmlSpace":Cn(e,"http://www.w3.org/XML/1998/namespace","xml:space",o);break;case"is":xl(e,"is",o);break;case"innerText":case"textContent":break;default:(!(2<a.length)||a[0]!=="o"&&a[0]!=="O"||a[1]!=="n"&&a[1]!=="N")&&(a=L0.get(a)||a,xl(e,a,o))}}function Uu(e,t,a,o,c,d){switch(a){case"style":ah(e,o,d);break;case"dangerouslySetInnerHTML":if(o!=null){if(typeof o!="object"||!("__html"in o))throw Error(s(61));if(a=o.__html,a!=null){if(c.children!=null)throw Error(s(60));e.innerHTML=a}}break;case"children":typeof o=="string"?ar(e,o):(typeof o=="number"||typeof o=="bigint")&&ar(e,""+o);break;case"onScroll":o!=null&&Re("scroll",e);break;case"onScrollEnd":o!=null&&Re("scrollend",e);break;case"onClick":o!=null&&(e.onclick=_n);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"inne Line truncated
Please change the parent <Route path="${E}"> to <Route path="${E==="/"?"*":`${E}/*`}">.`)}let x=Ct(),b;if(r){let E=typeof r=="string"?Yr(r):r;$e(g==="/"||E.pathname?.startsWith(g),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${g}" but pathname "${E.pathname}" was given in the \`location\` prop.`),b=E}else b=x;let w=b.pathname||"/",A=w;if(g!=="/"){let E=g.replace(/^\//,"").split("/");A="/"+w.replace(/^\//,"").split("/").slice(E.length).join("/")}let _=iy(n,{pathname:A});en(v||_!=null,`No routes matched location "${b.pathname}${b.search}${b.hash}" `),en(_==null||_[_.length-1].route.element!==void 0||_[_.length-1].route.Component!==void 0||_[_.length-1].route.lazy!==void 0,`Matched leaf route at location "${b.pathname}${b.search}${b.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let C=q2(_&&_.map(E=>Object.assign({},E,{params:Object.assign({},f,E.params),pathname:bn([g,s.encodeLocation?s.encodeLocation(E.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:E.pathname]),pathnameBase:E.pathnameBase==="/"?g:bn([g,s.encodeLocation?s.encodeLocation(E.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:E.pathnameBase])})),i,l);return r&&C?m.createElement(ll.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",unstable_mask:void 0,...b},navigationType:"POP"}},C):C}function H2(){let n=Q2(),r=w2(n)?`${n.status} ${n.statusText}`:n instanceof Error?n.message:JSON.stringify(n),l=n instanceof Error?n.stack:null,s="rgba(200,200,200, 0.5)",i={padding:"0.5rem",backgroundColor:s},u={padding:"2px 4px",backgroundColor:s},f=null;return console.error("Error handled by React Router default ErrorBoundary:",n),f=m.createElement(m.Fragment,null,m.createElement("p",null,"💿 Hey developer 👋"),m.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",m.createElement("code",{style:u},"ErrorBoundary")," or"," ",m.createElement("code",{style:u},"errorElement")," prop on your route.")),m.createElement(m.Fragment,null,m.createElement("h2",null,"Unexpected Application Error!"),m.createElement("h3",{style:{fontStyle:"italic"}},r),l?m.createElement("pre",{style:i},l):null,f)}var U2=m.createElement(H2,null),xy=class extends m.Component{constructor(n){super(n),this.state={location:n.location,revalidation:n.revalidation,error:n.error}}static getDerivedStateFromError(n){return{error:n}}static getDerivedStateFromProps(n,r){return r.location!==n.location||r.revalidation!=="idle"&&n.revalidation==="idle"?{error:n.error,location:n.location,revalidation:n.revalidation}:{error:n.error!==void 0?n.error:r.error,location:r.location,revalidation:n.revalidation||r.revalidation}}componentDidCatch(n,r){this.props.onError?this.props.onError(n,r):console.error("React Router caught the following error during render",n)}render(){let n=this.state.error;if(this.context&&typeof n=="object"&&n&&"digest"in n&&typeof n.digest=="string"){const l=j2(n.digest);l&&(n=l)}let r=n!==void 0?m.createElement(tn.Provider,{value:this.props.routeContext},m.createElement(Wd.Provider,{value:n,children:this.props.component})):this.props.children;return this.context?m.createElement(B2,{error:n},r):r}};xy.contextType=C2;var cd=new WeakMap;function B2({children:n,error:r}){let{basename:l}=m.useContext(Pt);if(typeof r=="object"&&r&&"digest"in r&&typeof r.digest=="string"){let s=O2(r.digest);if(s){let i=cd.get(r);if(i)throw i;let u=fy(s.location,l);if(dy&&!cd.get(r))if(u.isExternal||s.reloadDocument)window.location.href=u.absoluteURL||u.to;else{const f=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(u.to,{replace:s.replace}));throw cd.set(r,f),f}return m.createElement("meta",{httpEquiv:"refresh",content:`0;url=${u.absoluteURL||u.to}`})}}return n}function P2({routeContext:n,match:r,children:l}){let s=m.useContext(Xr);return s&&s.static&&s.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(s.staticContext._deepestRenderedBoundaryId=r.route.id),m.createElement(tn.Provider,{value:n},l)}function q2(n,r=[],l){let s=l?.state;if(n==null){if(!s)return null;if(s.errors)n=s.matches;else if(r.length===0&&!s.initialized&&s.matches.length>0)n=s.matches;else return null}let i=n,u=s?.errors;if(u!=null){let x=i.findIndex(b=>b.route.id&&u?.[b.route.id]!==void 0);$e(x>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(u).join(",")}`),i=i.slice(0,Math.min(i.length,x+1))}let f=!1,p=-1;if(l&&s){f=s.renderFallback;for(let x=0;x<i.length;x++){let b=i[x];if((b.route.HydrateFallback||b.route.hydrateFallbackElement)&&(p=x),b.route.id){let{loaderData:w,errors:A}=s,_=b.route.loader&&!w.hasOwnProperty(b.route.id)&&(!A||A[b.route.idLine truncated
.`.concat(ET,` {
overflow: hidden `).concat(s,`;
padding-right: `).concat(p,"px ").concat(s,`;
}
body[`).concat(Pr,`] {
overflow: hidden `).concat(s,`;
overscroll-behavior: contain;
`).concat([r&&"position: relative ".concat(s,";"),l==="margin"&&`
padding-left: `.concat(i,`px;
padding-top: `).concat(u,`px;
padding-right: `).concat(f,`px;
margin-left:0;
margin-top:0;
margin-right: `).concat(p,"px ").concat(s,`;
`),l==="padding"&&"padding-right: ".concat(p,"px ").concat(s,";")].filter(Boolean).join(""),`
}
.`).concat(Fs,` {
right: `).concat(p,"px ").concat(s,`;
}
.`).concat(Zs,` {
margin-right: `).concat(p,"px ").concat(s,`;
}
.`).concat(Fs," .").concat(Fs,` {
right: 0 `).concat(s,`;
}
.`).concat(Zs," .").concat(Zs,` {
margin-right: 0 `).concat(s,`;
}
body[`).concat(Pr,`] {
`).concat(AT,": ").concat(p,`px;
}
`)},Zv=function(){var n=parseInt(document.body.getAttribute(Pr)||"0",10);return isFinite(n)?n:0},GT=function(){m.useEffect(function(){return document.body.setAttribute(Pr,(Zv()+1).toString()),function(){var n=Zv()-1;n<=0?document.body.removeAttribute(Pr):document.body.setAttribute(Pr,n.toString())}},[])},YT=function(n){var r=n.noRelative,l=n.noImportant,s=n.gapMode,i=s===void 0?"margin":s;GT();var u=m.useMemo(function(){return PT(i)},[i]);return m.createElement(qT,{styles:VT(u,!r,i,l?"":"!important")})},Kd=!1;if(typeof window<"u")try{var qs=Object.defineProperty({},"passive",{get:function(){return Kd=!0,!0}});window.addEventListener("test",qs,qs),window.removeEventListener("test",qs,qs)}catch{Kd=!1}var Hr=Kd?{passive:!1}:!1,XT=function(n){return n.tagName==="TEXTAREA"},y1=function(n,r){if(!(n instanceof Element))return!1;var l=window.getComputedStyle(n);return l[r]!=="hidden"&&!(l.overflowY===l.overflowX&&!XT(n)&&l[r]==="visible")},QT=function(n){return y1(n,"overflowY")},KT=function(n){return y1(n,"overflowX")},Iv=function(n,r){var l=r.ownerDocument,s=r;do{typeof ShadowRoot<"u"&&s instanceof ShadowRoot&&(s=s.host);var i=x1(n,s);if(i){var u=b1(n,s),f=u[1],p=u[2];if(f>p)return!0}s=s.parentNode}while(s&&s!==l.body);return!1},$T=function(n){var r=n.scrollTop,l=n.scrollHeight,s=n.clientHeight;return[r,l,s]},FT=function(n){var r=n.scrollLeft,l=n.scrollWidth,s=n.clientWidth;return[r,l,s]},x1=function(n,r){return n==="v"?QT(r):KT(r)},b1=function(n,r){return n==="v"?$T(r):FT(r)},ZT=function(n,r){return n==="h"&&r==="rtl"?-1:1},IT=function(n,r,l,s,i){var u=ZT(n,window.getComputedStyle(r).direction),f=u*s,p=l.target,g=r.contains(p),v=!1,x=f>0,b=0,w=0;do{if(!p)break;var A=b1(n,p),_=A[0],C=A[1],E=A[2],M=C-E-u*_;(_||M)&&x1(n,p)&&(b+=M,w+=_);var H=p.parentNode;p=H&&H.nodeType===Node.DOCUMENT_FRAGMENT_NODE?H.host:H}while(!g&&p!==document.body||g&&(r.contains(p)||r===p));return(x&&Math.abs(b)<1||!x&&Math.abs(w)<1)&&(v=!0),v},Vs=function(n){return"changedTouches"in n?[n.changedTouches[0].clientX,n.changedTouches[0].clientY]:[0,0]},Jv=function(n){return[n.deltaX,n.deltaY]},Wv=function(n){return n&&"current"in n?n.current:n},JT=function(n,r){return n[0]===r[0]&&n[1]===r[1]},WT=function(n){return`
.block-interactivity-`.concat(n,` {pointer-events: none;}
.allow-interactivity-`).concat(n,` {pointer-events: all;}
`)},eM=0,Ur=[];function tM(n){var r=m.useRef([]),l=m.useRef([0,0]),s=m.useRef(),i=m.useState(eM++)[0],u=m.useState(v1)[0],f=m.useRef(n);m.useEffect(function(){f.current=n},[n]),m.useEffect(function(){if(n.inert){document.body.classList.add("block-interactivity-".concat(i));var C=wT([n.lockRef.current],(n.shards||[]).map(Wv),!0).filter(Boolean);return C.forEach(function(E){return E.classList.add("allow-interactivity-".concat(i))}),function(){document.body.classList.remove("block-interactivity-".concat(i)),C.forEach(function(E){return E.classList.remove("allow-interactivity-".concat(i))})}}},[n.inert,n.lockRef.current,n.shards]);var p=m.useCallback(function(C,E){if("touches"in C&&C.touches.length===2||C.type==="wheel"&&C.ctrlKey)return!f.current.allowPinchZoom;var M=Vs(C),H=l.current,D="deltaX"in C?C.deltaX:H[0]-M[0],j="deltaY"in C?C.deltaY:H[1]-M[1],q,Z=C.target,G=Math.abs(D)>Math.abs(j)?"h":"v";if("touches"in C&&G==="h"&&Z.type==="range")return!1;var K=window.getSelection(),W=K&&K.anchorNode,se=W?W===Z||W.contains(Z):!1;if(se)return!1;var he=Iv(G,Z);if(!he)return!0;if(he?q=G:(q=G==="v"?"h":"v",he=Iv(G,Z)),!he)return!1;if(!s.current&&"changedTouches"in C&&(D||j)&&(s.current=q),!q)return!0;var ge=s.current||q;return IT(ge,E,C,ge==="h"?D:j)},[]),g=m.useCallback(function(C){var E=C;if(!(!Ur.length||Ur[Ur.length-1]!==u)){var M="deltaY"in E?Jv(E):Vs(E),H=r.current.filter(function(q){return q.name===E.type&&(q.target===E.target||E.target===q.shadowParent)&&JT(q.delta,M)})[0];if(H&&H.should){E.cancelable&&E.preventDefault();return}if(!H){var D=(f.current.shards||[]).map(Wv).filter(Boolean).filter(function(q){return q.contains(E.target)}),j=D.length>0?p(E,D[0]):!f.current.noIsolation;j&&E.cancelable&&E.preventDefault()}}},[]),v=m.useCallback(function(C,E,M,H){var D={name:C,delta:E,target:M,should:H,shadowParent:nM(M)};r.current.push(D),setTimeout(function(){r.current=r.current.filter(function(j){return j!==D})},1)},[]),x=m.useCallback(function(C){l.current=Vs(C),s.current=void 0},[]),b=m.useCallback(function(C){v(C.type,Jv(C),C.target,p(C,n.lockRef.current))},[]),w=m.useCallback(function(C){v(C.type,Vs(C),C.target,p(C,n.lockRef.current))},[]);m.useEffect(function(){return Ur.push(u),n.setCallbacks({onScrollCapture:b,onWheelCapture:b,onTouchMoveCapture:w}),document.addEventListener("wheel",g,Hr),document.addEventListener("touchmove",g,Hr),document.addEventListener("touchstart",x,Hr),function(){Ur=Ur.filter(function(C){return C!==u}),document.removeEventListener("wheel",g,Hr),document.removeEventListener("touchmove",g,Hr),document.removeEventListener("touchstart",x,Hr)}},[]);var A=n.removeScrollBar,_=n.inert;return m.createElement(m.Fragment,null,_?m.createElement(u,{styles:WT(i)}):null,A?m.createElement(YT,{noRelative:n.noRelative,gapMode:n.gapMode}):null)}function nM(n){for(var r=null;n!==null;)n instanceof ShadowRoot&&(r=n.host,n=n.host),n=n.parentNode;return r}const aM=jT(g1,tM);var Cf=m.forwardRef(function(n,r){return m.createElement(zi,vn({},n,{ref:r,sideCar:aM}))});Cf.classNames=zi.classNames;var $d=["Enter"," "],rM=["ArrowDown","PageUp","Home"],S1=["ArrowUp","PageDown","End"],oM=[...rM,...S1],lM={ltr:[...$d,"ArrowRight"],rtl:[...$d,"ArrowLeft"]},sM={ltr:["ArrowLeft"],rtl:["ArrowRight"]},fl="Menu",[rl,iM,cM]=a1(fl),[Fa,w1]=Aa(fl,[cM,Mi,s1]),ki=Mi(),E1=s1(),[uM,Za]=Fa(fl),[dM,hl]=Fa(fl),A1=n=>{const{__scopeMenu:r,open:l=!1,children:s,dir:i,onOpenChange:u,modal:f=!0}=n,p=ki(r),[g,v]=m.useState(null),x=m.useRef(!1),b=ht(u),w=uf(i);return m.useEffect(()=>{const A=()=>{x.current=!0,document.addEventListener("pointerdown",_,{capture:!0,once:!0}),document.addEventListener("pointermove",_,{capture:!0,once:!0})},_=()=>x.current=!1;return document.addEventListener("keydown",A,{capture:!0}),()=>{document.removeEventListener("keydown",A,{capture:!0}),document.removeEventListener("pointerdown",_,{capture:!0}),document.removeEventListener("pointermove",_,{capture:!0})}},[]),h.jsx(Px,{...p,children:h.jsx(uM,{scope:r,open:l,onOpenChange:b,content:g,onContentChange:v,children:h.jsx(dM,{scope:r,onClose:m.useCallback(()=>b(!1),[b]),isUsingKeyboardRef:x,dir:w,modal:f,children:s})})})};A1.displayName=fl;var fM="MenuAnchor",_f=m.forwardRef((n,r)=>{const{__scopeMenu:l,...s}=n,i=ki(l);return h.jsx(qx,{...i,...s,ref:r})});_f.displayName=fM;var Rf="MenuPortal",[hM,C1]=Fa(Rf,{forceMount:void 0}),_1=n=>{const{__scopeMenu:r,forceMount:l,children:s,container:i}=n,u=Za(Rf,r);return h.jsx(hM,{scope:r,forceMount:l,children:h.jsx(_t,{present:l||u.open,children:h.jsx(Oi,{asChild:!0,container:i,children:s})})})};_1.displayName=Rf;var Wt="MenuContent",[pM,Tf]=Fa(Wt),R1=m.forwardRef((n,r)=>{const l=C1(Wt,n.__scopeMenu),{forceMount:s=l.forceMount,...i}=n,u=Za(Wt,n.__scopeMenu),f=hl(Wt,n.__scopeMenu);return h.jsx(rl.Provider,{scope:n.__scopeMenu,children:h.jsx(_t,{present:s||u.open,children:h.jsx(rl.Slot,{scope:n.__scopeMenu,children:f.modal?h.jsx(mM,{...i,ref:r}):h.jsx(gM,{...i,ref:r})})})})}),mM=m.forwardRef((n,r)=>{const l=Za(Wt,n.__scopeMenu),s= Line truncated
If you want to hide the \`${r.titleName}\`, you can wrap it with our VisuallyHidden component.
For more information, see https://radix-ui.com/primitives/docs/components/${r.docsSlug}`;return m.useEffect(()=>{n&&(document.getElementById(n)||console.error(l))},[l,n]),null},P5="DialogDescriptionWarning",q5=({contentRef:n,descriptionId:r})=>{const s=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${m0(P5).contentName}}.`;return m.useEffect(()=>{const i=n.current?.getAttribute("aria-describedby");r&&i&&(document.getElementById(r)||console.warn(s))},[s,n,r]),null},V5=t0,G5=a0,Y5=o0,X5=l0,Q5=s0,K5=c0,$5=d0,F5=h0;function Z5({...n}){return h.jsx(V5,{"code-path":"src/components/ui/dialog.tsx:10:10","data-slot":"dialog",...n})}function n4({...n}){return h.jsx(G5,{"code-path":"src/components/ui/dialog.tsx:16:10","data-slot":"dialog-trigger",...n})}function I5({...n}){return h.jsx(Y5,{"code-path":"src/components/ui/dialog.tsx:22:10","data-slot":"dialog-portal",...n})}function J5({className:n,...r}){return h.jsx(X5,{"code-path":"src/components/ui/dialog.tsx:36:5","data-slot":"dialog-overlay",className:Ce("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",n),...r})}function W5({className:n,children:r,showCloseButton:l=!0,showOverlay:s=!0,...i}){return h.jsxs(I5,{"code-path":"src/components/ui/dialog.tsx:58:5","data-slot":"dialog-portal",children:[s&&h.jsx(J5,{"code-path":"src/components/ui/dialog.tsx:59:23"}),h.jsxs(Q5,{"code-path":"src/components/ui/dialog.tsx:60:7","data-slot":"dialog-content",className:Ce("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg",n),...i,children:[r,l&&h.jsxs(F5,{"code-path":"src/components/ui/dialog.tsx:70:11","data-slot":"dialog-close",className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[h.jsx(UC,{"code-path":"src/components/ui/dialog.tsx:74:13"}),h.jsx("span",{"code-path":"src/components/ui/dialog.tsx:75:13",className:"sr-only",children:"Close"})]})]})]})}function eO({className:n,...r}){return h.jsx("div",{"code-path":"src/components/ui/dialog.tsx:85:5","data-slot":"dialog-header",className:Ce("flex flex-col gap-2 text-center sm:text-left",n),...r})}function tO({className:n,...r}){return h.jsx("div",{"code-path":"src/components/ui/dialog.tsx:95:5","data-slot":"dialog-footer",className:Ce("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",n),...r})}function nO({className:n,...r}){return h.jsx(K5,{"code-path":"src/components/ui/dialog.tsx:111:5","data-slot":"dialog-title",className:Ce("text-lg leading-none font-semibold",n),...r})}function aO({className:n,...r}){return h.jsx($5,{"code-path":"src/components/ui/dialog.tsx:124:5","data-slot":"dialog-description",className:Ce("text-muted-foreground text-sm",n),...r})}const g0=m.createContext(null);function a4(){const n=m.useContext(g0);if(!n)throw new Error("useConfirm must be used within ConfirmProvider");return n.confirm}function rO({children:n}){const[r,l]=m.useState(!1),[s,i]=m.useState({title:"确认操作",description:"",confirmText:"确认",cancelText:"取消",variant:"default"}),[u,f]=m.useState(null),p=m.useCallback(x=>{const b=typeof x=="string"?{title:"确认操作",description:x}:x;return i({title:b.title||"确认操作",description:b.description||"",confirmText:b.confirmText||"确认",cancelText:b.cancelText||"取消",variant:b.variant||"default"}),l(!0),new Promise(w=>f(()=>w))},[]),g=()=>{l(!1),u?.(!0),f(null)},v=()=>{l(!1),u?.(!1),f(null)};return h.jsxs(g0.Provider,{"code-path":"src/components/ui/confirm-dialog.tsx:68:5",value:{confirm:p},children:[n,h.jsx(Z5,{"code-path":"src/components/ui/confirm-dialog.tsx:70:7",open:r,onOpenChange:x=>{x||v()},children:h.jsxs(W5,{"code-path":"src/components/ui/confirm-dialog.tsx:71:9",className:"max-w-sm bg-slate-900 border-slate-800",onCloseAutoFocus:x=>x.preventDefault(),children:[h.jsxs(eO,{"code-path":"src/components/ui/confirm-dialog.tsx:72:11",children:[h.jsx(nO,{"code-path":"src/components/ui/confirm-dialog.tsx:73:13",className:"text-slate-100",children:s.title}),s.description&&h.jsx(aO,{"code-path":"src/components/ui/confirm-dialog.tsx:75:15",className:"text-slate-400",children:s.description})]}),h.jsxs(tO,{"code-path":"src/components/ui/confirm-dialog.tsx:78:11",className:"gap-2 sm:gap-2",children:[h.jsx(At,{"code-path":"src/components/ui/confirm-dialog.tsx:79:13",variant:"outline",className:"border-slate- Line truncated
@keyframes login-orb-1 {
0%, 100% { transform: translate(0, 0) scale(1); }
33% { transform: translate(40px, -50px) scale(1.12); }
66% { transform: translate(-30px, 35px) scale(0.92); }
}
@keyframes login-orb-2 {
0%, 100% { transform: translate(0, 0) scale(1); }
50% { transform: translate(-50px, 25px) scale(1.18); }
}
@keyframes login-orb-3 {
0%, 100% { transform: translate(0, 0) scale(1); }
50% { transform: translate(30px, 45px) scale(0.88); }
}
@keyframes login-orb-4 {
0%, 100% { transform: translate(0, 0) scale(1); }
50% { transform: translate(25px, -30px) scale(1.1); }
}
@keyframes login-card-enter {
from { opacity: 0; transform: translateY(24px) scale(0.97); }
to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes login-fade-in {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes login-input-focus {
from { box-shadow: 0 0 0 0px var(--dg-input-focus-ring); }
to { box-shadow: 0 0 0 4px var(--dg-input-focus-ring); }
}
`,iO=[{top:"-10%",left:"-5%",size:520,color:"var(--dg-blue)",opacity:.18,blur:90,animation:"login-orb-1 18s ease-in-out infinite"},{bottom:"-15%",right:"-8%",size:480,color:"var(--dg-purple)",opacity:.16,blur:100,animation:"login-orb-2 22s ease-in-out infinite"},{top:"30%",right:"10%",size:320,color:"var(--dg-cyan)",opacity:.12,blur:70,animation:"login-orb-3 16s ease-in-out infinite"},{bottom:"10%",left:"8%",size:380,color:"var(--dg-gradient-start)",opacity:.14,blur:80,animation:"login-orb-4 20s ease-in-out infinite"}];function cO(){const n=Kr(),{theme:r,setTheme:l}=zy(),[s,i]=m.useState("admin"),[u,f]=m.useState("123456"),[p,g]=m.useState(!1),[v,x]=m.useState(!1),[b,w]=m.useState(""),[A,_]=m.useState(!1);m.useEffect(()=>{_(!0)},[]);const C=async E=>{E.preventDefault(),w(""),x(!0);try{const M=await lO.login(s,u);yn.getState().login(M.user,M.token),localStorage.setItem("token",M.token),n("/",{replace:!0})}catch(M){const H=M instanceof Error?M.message:"登录失败,请检查用户名和密码";w(H)}finally{x(!1)}};return h.jsxs(h.Fragment,{children:[h.jsx("style",{"code-path":"src/components/auth/Login.tsx:102:7",children:sO}),h.jsxs("div",{"code-path":"src/components/auth/Login.tsx:104:7",className:"relative min-h-screen flex items-center justify-center px-4 overflow-hidden",style:{background:`radial-gradient(ellipse at 50% 0%, ${getComputedStyle(document.documentElement).getPropertyValue("--dg-bg-secondary")} 0%, ${getComputedStyle(document.documentElement).getPropertyValue("--dg-bg-primary")} 100%)`},children:[iO.map((E,M)=>h.jsx("div",{"code-path":"src/components/auth/Login.tsx:112:11","aria-hidden":"true",className:"pointer-events-none absolute",style:{top:E.top,left:E.left,bottom:E.bottom,right:E.right,width:E.size,height:E.size,borderRadius:"50%",background:`radial-gradient(circle, ${E.color} 0%, transparent 70%)`,opacity:A?E.opacity:0,filter:`blur(${E.blur}px)`,animation:E.animation,willChange:"transform",transition:"opacity 1s ease-out"}},`orb-${M}`)),h.jsx("div",{"code-path":"src/components/auth/Login.tsx:135:9",className:"fixed top-4 right-4 z-50",style:{animation:"login-fade-in 0.6s ease-out"},children:h.jsxs(Is,{"code-path":"src/components/auth/Login.tsx:139:11",children:[h.jsx(Js,{"code-path":"src/components/auth/Login.tsx:140:13",asChild:!0,children:h.jsx("button",{"code-path":"src/components/auth/Login.tsx:141:15",type:"button","aria-label":"切换主题",className:Ce("inline-flex items-center justify-center size-10 rounded-full","border border-[var(--dg-border)] transition-all duration-200","hover:scale-105 active:scale-95 hover:border-[var(--dg-border-hover)]","glass"),style:{color:"var(--dg-text-secondary)"},children:h.jsx(Wy,{"code-path":"src/components/auth/Login.tsx:152:17",className:"size-5"})})}),h.jsxs(Ws,{"code-path":"src/components/auth/Login.tsx:155:13",align:"end",className:"w-60 bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",style:{boxShadow:"var(--shadow-dropdown)"},children:[h.jsx(Fd,{"code-path":"src/components/auth/Login.tsx:160:15",className:"text-[var(--dg-text-secondary)]",children:"主题切换"}),h.jsx(ei,{"code-path":"src/components/auth/Login.tsx:161:15",className:"bg-[var(--dg-border)]"}),sf.map(E=>h.jsxs(Zo,{"code-path":"src/components/auth/Login.tsx:163:17",className:Ce("flex items-center gap-2.5 cursor-pointer transition-colors","focus:bg-[var(--dg-bg-hover)] focus:text-[var(--dg-text-primary)]",r===E.id?"text-[var(--dg-text-primary)]":"text-[var(--dg-text-secondary)]"),onClick:()=>l(E.id),children:[h.jsx("span",{"code-path":"src/components/auth/Login.tsx:172:19",className:"size-3.5 rounded-full shrink-0 ring-2",style:{backgroundColor:E.primaryColor,boxShadow:"0 0 0 2px var(--dg-bg-primary)"}}),h.jsxs("div",{"code-path":"src/components/auth/Login.tsx:179:19",className:"flex-1 min-w-0",children:[h.jsx("span",{"code-path":"src/components/auth/Login.tsx:180:21",className:"text-sm font-medium block",children:E.name}),h.jsx("span",{"code-path":"src/components/auth/Login.tsx:181:21",className:"text-xs opacity-60 block truncate",children:E.description})]}),r===E.id&&h.jsx(Zy,{"code-path":"src/components/auth/Login.tsx:183:43",className:"size-4 shrink-0 text-[var(--dg-blue)]"})]},E.id))]})]})}),h.jsxs("div",{"code-path":"src/components/auth/Login.tsx:191:9",className:"relative z-10 w-full max-w-md",style:{background:"color-mix(in srgb, var(--dg-bg-secondary) 80%, transparent)",backdropFilter:"blur(24px)",WebkitBackdropFilter:"blur(24px)",border:"1px solid var(--dg-border)",borderRadius:24,boxShadow:"var(--shadow-card-hover)",padding:"44px 40px",animation:"login-card-enter 0.6s cubic-bezier(0.16, 1, 0.3, 1)"},children:[h.jsxs("div",{"code-path":"src/components/auth/Login.tsx:205:11",className:"text-center mb-8",children:[h.jsx("div",{"code-path":"src/components/auth/Login.tsx:206:13",className:"inline-flex items-center justify-center size-16 rounded-2xl mb-5",style:{background:"linear-gradient(135deg, var(--dg-gradient-start), var(--dg-gradient-end))",boxShadow:" Line truncated
**时间:** ${new Date().toISOString()}
**URL:** ${window.location.href}
**用户代理:** ${navigator.userAgent}
### 错误信息
\`\`\`
${r?.name}: ${r?.message}
\`\`\`
### 组件堆栈
\`\`\`
${l?.componentStack}
\`\`\`
`;navigator.clipboard.writeText(s).then(()=>{alert("错误信息已复制到剪贴板,请粘贴到 Issue 中")})};render(){return this.state.hasError?this.props.fallback?this.props.fallback:h.jsx("div",{"code-path":"src/components/layout/ErrorBoundary.tsx:61:9",className:"min-h-[60vh] flex items-center justify-center p-6",children:h.jsxs("div",{"code-path":"src/components/layout/ErrorBoundary.tsx:62:11",className:"dg-card max-w-lg w-full p-8 text-center space-y-6",children:[h.jsx("div",{"code-path":"src/components/layout/ErrorBoundary.tsx:64:13",className:"mx-auto w-16 h-16 rounded-2xl bg-red-500/10 flex items-center justify-center",children:h.jsx(li,{"code-path":"src/components/layout/ErrorBoundary.tsx:65:15",className:"h-8 w-8 text-red-400"})}),h.jsxs("div",{"code-path":"src/components/layout/ErrorBoundary.tsx:69:13",children:[h.jsx("h2",{"code-path":"src/components/layout/ErrorBoundary.tsx:70:15",className:"text-xl font-bold text-[var(--dg-text-primary)]",children:"页面出现错误"}),h.jsx("p",{"code-path":"src/components/layout/ErrorBoundary.tsx:73:15",className:"text-sm text-[var(--dg-text-muted)] mt-2",children:"抱歉,该页面遇到了意外错误。您可以尝试重新加载或返回首页。"})]}),this.state.error&&h.jsx("div",{"code-path":"src/components/layout/ErrorBoundary.tsx:80:15",className:"text-left",children:h.jsxs("details",{"code-path":"src/components/layout/ErrorBoundary.tsx:81:17",className:"group",children:[h.jsxs("summary",{"code-path":"src/components/layout/ErrorBoundary.tsx:82:19",className:"cursor-pointer text-xs text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)] transition-colors flex items-center gap-1.5",children:[h.jsx(yv,{"code-path":"src/components/layout/ErrorBoundary.tsx:83:21",className:"h-3.5 w-3.5"}),"查看错误详情"]}),h.jsxs("div",{"code-path":"src/components/layout/ErrorBoundary.tsx:86:19",className:"mt-2 p-3 rounded-lg bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] overflow-auto max-h-48",children:[h.jsxs("code",{"code-path":"src/components/layout/ErrorBoundary.tsx:87:21",className:"text-xs text-red-400 font-mono block whitespace-pre-wrap",children:[this.state.error.name,": ",this.state.error.message]}),this.state.errorInfo&&h.jsx("pre",{"code-path":"src/components/layout/ErrorBoundary.tsx:91:23",className:"text-xs text-[var(--dg-text-muted)] mt-2 whitespace-pre-wrap",children:this.state.errorInfo.componentStack})]})]})}),h.jsxs("div",{"code-path":"src/components/layout/ErrorBoundary.tsx:101:13",className:"flex items-center justify-center gap-3",children:[h.jsxs(At,{"code-path":"src/components/layout/ErrorBoundary.tsx:102:15",variant:"outline",className:"dg-btn-secondary",onClick:this.handleGoHome,children:[h.jsx(Iy,{"code-path":"src/components/layout/ErrorBoundary.tsx:107:17",className:"h-4 w-4 mr-1.5"}),"返回首页"]}),h.jsxs(At,{"code-path":"src/components/layout/ErrorBoundary.tsx:110:15",className:"dg-btn-primary",onClick:this.handleRetry,children:[h.jsx(AC,{"code-path":"src/components/layout/ErrorBoundary.tsx:114:17",className:"h-4 w-4 mr-1.5"}),"重新加载"]}),h.jsxs(At,{"code-path":"src/components/layout/ErrorBoundary.tsx:117:15",variant:"outline",className:"dg-btn-ghost",onClick:this.handleReport,children:[h.jsx(yv,{"code-path":"src/components/layout/ErrorBoundary.tsx:122:17",className:"h-4 w-4 mr-1.5"}),"复制错误"]})]})]})}):this.props.children}}const hO=m.lazy(()=>be(()=>import("./Dashboard-iCzLAtNG.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url).then(n=>({default:n.Dashboard}))),pO=m.lazy(()=>be(()=>import("./ServerManager-JxMW-hQt.js"),__vite__mapDeps([16,4,17,18,19,20,2,21,22,8,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,9,38,39,40]),import.meta.url).then(n=>({default:n.ServerManager}))),mO=m.lazy(()=>be(()=>import("./CloudAccountManager-DU9759_X.js"),__vite__mapDeps([41,35,4,8,23,24,40,42,43,44,34]),import.meta.url).then(n=>({default:n.CloudAccountManager}))),gO=m.lazy(()=>be(()=>import("./DomainManager-CIA5bu9u.js"),__vite__mapDeps([45,35,4,8,23,24,40,42,43,34]),import.meta.url).then(n=>({default:n.DomainManager}))),vO=m.lazy(()=>be(()=>import("./RegionManager-Bj8EPK6w.js"),__vite__mapDeps([46,35,8,17,18,19,20,2,22,40,34,42,43,44]),import.meta.url).then(n=>({default:n.RegionManager}))),yO=m.lazy(()=>be(()=>import("./PlatformManager-DvSL1hbm.js"),__vite__mapDeps([47,35,8,20,18,23,40,48,44,34,42,43]),import.meta.url).then(n=>({default:n.PlatformManager}))),xO=m.lazy(()=>be(()=>import("./CloudBilling-BUyc8wKP.js"),__vite__mapDeps([49,35,4,8,50,18,20,22,23,5,6,24,40,44,34]),import.meta.url).then(n=>({default:n.CloudBilling}))),bO=m.lazy(()=>be(()=>import("./KubernetesClusters-CsRHjVkA.js"),__vite__mapDeps([51,4,8,3,22,52,43,10,11,36,35,18,15,25,26,28,24,40,38,33,34]),import.meta.url).then(n=>({default:n.KubernetesClusters}))),SO=m.lazy(()=>be(()=>import("./ClusterOverviewPage-CYcNLUM0.js"),__vite__mapDeps([53,4,8,19,3,54,24]),import.meta.url).then(n=>({default:n.default})) Line truncated