@kitecd/cli 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/doctor.js +181 -0
  2. package/dist/export.js +144 -0
  3. package/dist/ignore.js +38 -0
  4. package/dist/import.js +333 -0
  5. package/dist/index.js +201 -3
  6. package/dist/ops.js +338 -0
  7. package/dist/pack.js +15 -5
  8. package/dist/serve.js +27 -1
  9. package/dist/server/index.js +14578 -5647
  10. package/dist/upload.js +9 -3
  11. package/dist/verify.js +161 -0
  12. package/dist/web/assets/AuditLog-BFmJfgzL.js +1 -0
  13. package/dist/web/assets/ConfirmDialog-CJ8lJeUc.js +1 -0
  14. package/dist/web/assets/ConfirmDialog-D8avT8FJ.css +1 -0
  15. package/dist/web/assets/Dashboard-BTliTkq1.js +1 -0
  16. package/dist/web/assets/DefaultLayout-BG_y85yG.js +1 -0
  17. package/dist/web/assets/DefaultLayout-CZENO67n.css +1 -0
  18. package/dist/web/assets/FileExplorer-Bf32_MMS.js +1 -0
  19. package/dist/web/assets/LogBoard-0so-XiW3.css +1 -0
  20. package/dist/web/assets/LogBoard-CDz4n0DY.js +6 -0
  21. package/dist/web/assets/Login-C3zfObzP.js +1 -0
  22. package/dist/web/assets/Migration-BaKlcCkB.js +1 -0
  23. package/dist/web/assets/ProjectDetail-BL_D0OJY.js +1 -0
  24. package/dist/web/assets/ProjectDetail-ia6-z1kZ.css +1 -0
  25. package/dist/web/assets/ProjectList-7AnhOS7h.css +1 -0
  26. package/dist/web/assets/ProjectList-C4KuZEq4.js +1 -0
  27. package/dist/web/assets/Settings-CzWG9312.js +1 -0
  28. package/dist/web/assets/Storage-BCao_e7Y.js +1 -0
  29. package/dist/web/assets/Storage-DNadqpUy.css +1 -0
  30. package/dist/web/assets/{activity-DItEGOtI.js → activity-Ba-YPfmn.js} +1 -1
  31. package/dist/web/assets/archive-CJ5gDBKY.js +1 -0
  32. package/dist/web/assets/arrow-left-WEOMLXIi.js +1 -0
  33. package/dist/web/assets/chevron-right-DLiDJVJl.js +1 -0
  34. package/dist/web/assets/{circle-alert-Bfrn_ovD.js → circle-alert-DQzM-U4P.js} +1 -1
  35. package/dist/web/assets/clock-IwxBKgP4.js +1 -0
  36. package/dist/web/assets/constants-Ch47JPs3.js +1 -0
  37. package/dist/web/assets/copy-C1rADgcQ.js +1 -0
  38. package/dist/web/assets/createLucideIcon-CE-ry2oA.js +1 -0
  39. package/dist/web/assets/database-CI6acTSY.js +1 -0
  40. package/dist/web/assets/eye-Cas8HsmK.js +1 -0
  41. package/dist/web/assets/eye-off-4PD31MPV.js +1 -0
  42. package/dist/web/assets/file-text-C6nzo1us.js +1 -0
  43. package/dist/web/assets/folder-D9pvA6oI.js +1 -0
  44. package/dist/web/assets/folder-open-CGeIri0U.js +1 -0
  45. package/dist/web/assets/hard-drive-CGWwV4Ei.js +1 -0
  46. package/dist/web/assets/house-8ZvvlaEh.js +1 -0
  47. package/dist/web/assets/index-BFE6PEIL.js +2 -0
  48. package/dist/web/assets/index-XrzJwjrk.css +1 -0
  49. package/dist/web/assets/loader-circle-uiC7GaCG.js +1 -0
  50. package/dist/web/assets/plus-CfMi1Jv1.js +1 -0
  51. package/dist/web/assets/refresh-cw-0yb8DZDc.js +1 -0
  52. package/dist/web/assets/rotate-ccw-YevaWXw9.js +1 -0
  53. package/dist/web/assets/save-BuzCP3T1.js +1 -0
  54. package/dist/web/assets/scroll-text-BIYMFNN5.js +1 -0
  55. package/dist/web/assets/{server-C33taHNn.js → server-B31hj0g7.js} +1 -1
  56. package/dist/web/assets/{square-terminal-C8toRwjx.js → square-terminal-DT6aoXm0.js} +1 -1
  57. package/dist/web/assets/sun-BaEbKNDV.js +1 -0
  58. package/dist/web/assets/trash-2-BWqtqkeW.js +1 -0
  59. package/dist/web/index.html +3 -3
  60. package/package.json +2 -2
  61. package/dist/web/assets/Dashboard-7wBCpwzp.js +0 -1
  62. package/dist/web/assets/DefaultLayout-Bj8fPWym.css +0 -1
  63. package/dist/web/assets/DefaultLayout-LaPhlICp.js +0 -1
  64. package/dist/web/assets/FileExplorer-DvzkxXvZ.js +0 -1
  65. package/dist/web/assets/LogBoard-BWAPesBz.js +0 -6
  66. package/dist/web/assets/LogBoard-DzW-cEqH.css +0 -1
  67. package/dist/web/assets/Login-BhNdUJs0.js +0 -1
  68. package/dist/web/assets/ProjectDetail-DZwMOEto.js +0 -1
  69. package/dist/web/assets/ProjectList-Czr-438J.js +0 -1
  70. package/dist/web/assets/Settings-OmPvcQbD.js +0 -1
  71. package/dist/web/assets/clock-BPXGSCIV.js +0 -1
  72. package/dist/web/assets/constants-iI5LEC2F.js +0 -1
  73. package/dist/web/assets/createLucideIcon-Cgv1AIRL.js +0 -1
  74. package/dist/web/assets/folder-open-jX-_Q7bA.js +0 -1
  75. package/dist/web/assets/index-C9LiRc31.css +0 -1
  76. package/dist/web/assets/index-eyx6wNyQ.js +0 -2
  77. package/dist/web/assets/project-BFuaDcvV.js +0 -1
  78. package/dist/web/assets/refresh-cw-DWmqwQRn.js +0 -1
  79. package/dist/web/assets/save-BkiMrL9q.js +0 -1
  80. package/dist/web/assets/settings-CrCWmNyB.js +0 -1
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Login-C3zfObzP.js","assets/createLucideIcon-CE-ry2oA.js","assets/DefaultLayout-BG_y85yG.js","assets/constants-Ch47JPs3.js","assets/database-CI6acTSY.js","assets/hard-drive-CGWwV4Ei.js","assets/sun-BaEbKNDV.js","assets/scroll-text-BIYMFNN5.js","assets/square-terminal-DT6aoXm0.js","assets/DefaultLayout-CZENO67n.css","assets/Dashboard-BTliTkq1.js","assets/activity-Ba-YPfmn.js","assets/circle-alert-DQzM-U4P.js","assets/clock-IwxBKgP4.js","assets/server-B31hj0g7.js","assets/ProjectList-C4KuZEq4.js","assets/chevron-right-DLiDJVJl.js","assets/eye-off-4PD31MPV.js","assets/eye-Cas8HsmK.js","assets/folder-open-CGeIri0U.js","assets/folder-D9pvA6oI.js","assets/house-8ZvvlaEh.js","assets/plus-CfMi1Jv1.js","assets/refresh-cw-0yb8DZDc.js","assets/trash-2-BWqtqkeW.js","assets/ProjectList-7AnhOS7h.css","assets/FileExplorer-Bf32_MMS.js","assets/arrow-left-WEOMLXIi.js","assets/file-text-C6nzo1us.js","assets/loader-circle-uiC7GaCG.js","assets/ProjectDetail-BL_D0OJY.js","assets/ConfirmDialog-CJ8lJeUc.js","assets/ConfirmDialog-D8avT8FJ.css","assets/rotate-ccw-YevaWXw9.js","assets/archive-CJ5gDBKY.js","assets/copy-C1rADgcQ.js","assets/save-BuzCP3T1.js","assets/ProjectDetail-ia6-z1kZ.css","assets/LogBoard-CDz4n0DY.js","assets/LogBoard-0so-XiW3.css","assets/AuditLog-BFmJfgzL.js","assets/Settings-CzWG9312.js","assets/Storage-BCao_e7Y.js","assets/Storage-DNadqpUy.css","assets/Migration-BaKlcCkB.js"])))=>i.map(i=>d[i]);
2
+ import{$ as e,A as t,C as n,F as r,G as i,H as a,I as o,J as s,K as c,L as l,N as u,O as d,P as f,Q as p,R as m,S as h,U as ee,V as g,W as te,X as _,Y as v,Z as y,a as ne,at as re,b as ie,c as ae,ct as b,d as x,dt as S,et as oe,f as se,h as ce,i as le,it as ue,j as de,k as C,l as fe,lt as w,m as pe,mt as me,n as he,nt as ge,o as _e,ot as T,p as E,pt as D,q as O,r as ve,rt as ye,s as be,st as xe,t as Se,tt as Ce,u as k,ut as we,v as Te,w as Ee,x as De,y as Oe,z as ke}from"./createLucideIcon-CE-ry2oA.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var Ae=void 0,je=typeof window<`u`&&window.trustedTypes;if(je)try{Ae=je.createPolicy(`vue`,{createHTML:e=>e})}catch{}var Me=Ae?e=>Ae.createHTML(e):e=>e,Ne=`http://www.w3.org/2000/svg`,Pe=`http://www.w3.org/1998/Math/MathML`,A=typeof document<`u`?document:null,Fe=A&&A.createElement(`template`),Ie={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{let i=t===`svg`?A.createElementNS(Ne,e):t===`mathml`?A.createElementNS(Pe,e):n?A.createElement(e,{is:n}):A.createElement(e);return e===`select`&&r&&r.multiple!=null&&i.setAttribute(`multiple`,r.multiple),i},createText:e=>A.createTextNode(e),createComment:e=>A.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>A.querySelector(e),setScopeId(e,t){e.setAttribute(t,``)},insertStaticContent(e,t,n,r,i,a){let o=n?n.previousSibling:t.lastChild;if(i&&(i===a||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),n),!(i===a||!(i=i.nextSibling)););else{Fe.innerHTML=Me(r===`svg`?`<svg>${e}</svg>`:r===`mathml`?`<math>${e}</math>`:e);let i=Fe.content;if(r===`svg`||r===`mathml`){let e=i.firstChild;for(;e.firstChild;)i.appendChild(e.firstChild);i.removeChild(e)}t.insertBefore(i,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},j=`transition`,M=`animation`,N=Symbol(`_vtc`),Le={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Re=v({},_e,Le),ze=(e=>(e.displayName=`Transition`,e.props=Re,e))((e,{slots:t})=>h(ne,Ve(e),t)),P=(t,n=[])=>{e(t)?t.forEach(e=>e(...n)):t&&t(...n)},Be=t=>t?e(t)?t.some(e=>e.length>1):t.length>1:!1;function Ve(e){let t={};for(let n in e)n in Le||(t[n]=e[n]);if(e.css===!1)return t;let{name:n=`v`,type:r,duration:i,enterFromClass:a=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:s=`${n}-enter-to`,appearFromClass:c=a,appearActiveClass:l=o,appearToClass:u=s,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:f=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,m=He(i),h=m&&m[0],ee=m&&m[1],{onBeforeEnter:g,onEnter:te,onEnterCancelled:_,onLeave:y,onLeaveCancelled:ne,onBeforeAppear:re=g,onAppear:ie=te,onAppearCancelled:ae=_}=t,b=(e,t,n,r)=>{e._enterCancelled=r,I(e,t?u:s),I(e,t?l:o),n&&n()},x=(e,t)=>{e._isLeaving=!1,I(e,d),I(e,p),I(e,f),t&&t()},S=e=>(t,n)=>{let i=e?ie:te,o=()=>b(t,e,n);P(i,[t,o]),We(()=>{I(t,e?c:a),F(t,e?u:s),Be(i)||Ke(t,r,h,o)})};return v(t,{onBeforeEnter(e){P(g,[e]),F(e,a),F(e,o)},onBeforeAppear(e){P(re,[e]),F(e,c),F(e,l)},onEnter:S(!1),onAppear:S(!0),onLeave(e,t){e._isLeaving=!0;let n=()=>x(e,t);F(e,d),e._enterCancelled?(F(e,f),Xe(e)):(Xe(e),F(e,f)),We(()=>{e._isLeaving&&(I(e,d),F(e,p),Be(y)||Ke(e,r,ee,n))}),P(y,[e,n])},onEnterCancelled(e){b(e,!1,void 0,!0),P(_,[e])},onAppearCancelled(e){b(e,!0,void 0,!0),P(ae,[e])},onLeaveCancelled(e){x(e),P(ne,[e])}})}function He(e){if(e==null)return null;if(ge(e))return[Ue(e.enter),Ue(e.leave)];{let t=Ue(e);return[t,t]}}function Ue(e){return me(e)}function F(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e[N]||(e[N]=new Set)).add(t)}function I(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.remove(t));let n=e[N];n&&(n.delete(t),n.size||(e[N]=void 0))}function We(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}var Ge=0;function Ke(e,t,n,r){let i=e._endId=++Ge,a=()=>{i===e._endId&&r()};if(n!=null)return setTimeout(a,n);let{type:o,timeout:s,propCount:c}=qe(e,t);if(!o)return r();let l=o+`end`,u=0,d=()=>{e.removeEventListener(l,f),a()},f=t=>{t.target===e&&++u>=c&&d()};setTimeout(()=>{u<c&&d()},s+1),e.addEventListener(l,f)}function qe(e,t){let n=window.getComputedStyle(e),r=e=>(n[e]||``).split(`, `),i=r(`${j}Delay`),a=r(`${j}Duration`),o=Je(i,a),s=r(`${M}Delay`),c=r(`${M}Duration`),l=Je(s,c),u=null,d=0,f=0;t===j?o>0&&(u=j,d=o,f=a.length):t===M?l>0&&(u=M,d=l,f=c.length):(d=Math.max(o,l),u=d>0?o>l?j:M:null,f=u?u===j?a.length:c.length:0);let p=u===j&&/\b(?:transform|all)(?:,|$)/.test(r(`${j}Property`).toString());return{type:u,timeout:d,propCount:f,hasTransform:p}}function Je(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((t,n)=>Ye(t)+Ye(e[n])))}function Ye(e){return e===`auto`?0:Number(e.slice(0,-1).replace(`,`,`.`))*1e3}function Xe(e){return(e?e.ownerDocument:document).body.offsetHeight}function Ze(e,t,n){let r=e[N];r&&(t=(t?[t,...r]:[...r]).join(` `)),t==null?e.removeAttribute(`class`):n?e.setAttribute(`class`,t):e.className=t}var Qe=Symbol(`_vod`),$e=Symbol(`_vsh`),et=Symbol(``),tt=/(?:^|;)\s*display\s*:/;function nt(e,t,n){let r=e.style,i=T(n),a=!1;if(n&&!i){if(t)if(T(t))for(let e of t.split(`;`)){let t=e.slice(0,e.indexOf(`:`)).trim();n[t]??it(r,t,``)}else for(let e in t)n[e]??it(r,e,``);for(let e in n)e===`display`&&(a=!0),it(r,e,n[e])}else if(i){if(t!==n){let e=r[et];e&&(n+=`;`+e),r.cssText=n,a=tt.test(n)}}else t&&e.removeAttribute(`style`);Qe in e&&(e[Qe]=a?r.display:``,e[$e]&&(r.display=`none`))}var rt=/\s*!important$/;function it(t,n,r){if(e(r))r.forEach(e=>it(t,n,e));else if(r??=``,n.startsWith(`--`))t.setProperty(n,r);else{let e=st(t,n);rt.test(r)?t.setProperty(_(e),r.replace(rt,``),`important`):t[e]=r}}var at=[`Webkit`,`Moz`,`ms`],ot={};function st(e,t){let n=ot[t];if(n)return n;let r=O(t);if(r!==`filter`&&r in e)return ot[t]=r;r=s(r);for(let n=0;n<at.length;n++){let i=at[n]+r;if(i in e)return ot[t]=i}return t}var ct=`http://www.w3.org/1999/xlink`;function lt(e,t,n,r,i,a=re(t)){r&&t.startsWith(`xlink:`)?n==null?e.removeAttributeNS(ct,t.slice(6,t.length)):e.setAttributeNS(ct,t,n):n==null||a&&!y(n)?e.removeAttribute(t):e.setAttribute(t,a?``:xe(n)?String(n):n)}function ut(e,t,n,r,i){if(t===`innerHTML`||t===`textContent`){n!=null&&(e[t]=t===`innerHTML`?Me(n):n);return}let a=e.tagName;if(t===`value`&&a!==`PROGRESS`&&!a.includes(`-`)){let r=a===`OPTION`?e.getAttribute(`value`)||``:e.value,i=n==null?e.type===`checkbox`?`on`:``:String(n);(r!==i||!(`_value`in e))&&(e.value=i),n??e.removeAttribute(t),e._value=n;return}let o=!1;if(n===``||n==null){let r=typeof e[t];r===`boolean`?n=y(n):n==null&&r===`string`?(n=``,o=!0):r===`number`&&(n=0,o=!0)}try{e[t]=n}catch{}o&&e.removeAttribute(i||t)}function L(e,t,n,r){e.addEventListener(t,n,r)}function dt(e,t,n,r){e.removeEventListener(t,n,r)}var ft=Symbol(`_vei`);function pt(e,t,n,r,i=null){let a=e[ft]||(e[ft]={}),o=a[t];if(r&&o)o.value=r;else{let[n,s]=ht(t);r?L(e,n,a[t]=yt(r,i),s):o&&(dt(e,n,o,s),a[t]=void 0)}}var mt=/(?:Once|Passive|Capture)$/;function ht(e){let t;if(mt.test(e)){t={};let n;for(;n=e.match(mt);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[e[2]===`:`?e.slice(3):_(e.slice(2)),t]}var gt=0,_t=Promise.resolve(),vt=()=>gt||=(_t.then(()=>gt=0),Date.now());function yt(e,t){let n=e=>{if(!e._vts)e._vts=Date.now();else if(e._vts<=n.attached)return;fe(bt(e,n.value),t,5,[e])};return n.value=e,n.attached=vt(),n}function bt(t,n){if(e(n)){let e=t.stopImmediatePropagation;return t.stopImmediatePropagation=()=>{e.call(t),t._stopped=!0},n.map(e=>t=>!t._stopped&&e&&e(t))}else return n}var xt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,St=(e,t,n,r,i,a)=>{let o=i===`svg`;t===`class`?Ze(e,r,o):t===`style`?nt(e,n,r):ye(t)?Ce(t)||pt(e,t,n,r,a):(t[0]===`.`?(t=t.slice(1),!0):t[0]===`^`?(t=t.slice(1),!1):Ct(e,t,r,o))?(ut(e,t,r),!e.tagName.includes(`-`)&&(t===`value`||t===`checked`||t===`selected`)&&lt(e,t,r,o,a,t!==`value`)):e._isVueCE&&(wt(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!T(r)))?ut(e,O(t),r,a,t):(t===`true-value`?e._trueValue=r:t===`false-value`&&(e._falseValue=r),lt(e,t,r,o))};function Ct(e,t,n,r){if(r)return!!(t===`innerHTML`||t===`textContent`||t in e&&xt(t)&&oe(n));if(t===`spellcheck`||t===`draggable`||t===`translate`||t===`autocorrect`||t===`sandbox`&&e.tagName===`IFRAME`||t===`form`||t===`list`&&e.tagName===`INPUT`||t===`type`&&e.tagName===`TEXTAREA`)return!1;if(t===`width`||t===`height`){let t=e.tagName;if(t===`IMG`||t===`VIDEO`||t===`CANVAS`||t===`SOURCE`)return!1}return xt(t)&&T(n)?!1:t in e}function wt(e,t){let n=e._def.props;if(!n)return!1;let r=O(t);return Array.isArray(n)?n.some(e=>O(e)===r):Object.keys(n).some(e=>O(e)===r)}var Tt=new WeakMap,Et=new WeakMap,Dt=Symbol(`_moveCb`),Ot=Symbol(`_enterCb`),kt=(e=>(delete e.props.mode,e))({name:`TransitionGroup`,props:v({},Re,{tag:String,moveClass:String}),setup(e,{slots:t}){let n=ie(),a=l(),s,c;return d(()=>{if(!s.length)return;let t=e.moveClass||`${e.name||`v`}-move`;if(!Pt(s[0].el,n.vnode.el,t)){s=[];return}s.forEach(At),s.forEach(jt);let r=s.filter(Mt);Xe(n.vnode.el),r.forEach(e=>{let n=e.el,r=n.style;F(n,t),r.transform=r.webkitTransform=r.transitionDuration=``;let i=n[Dt]=e=>{e&&e.target!==n||(!e||e.propertyName.endsWith(`transform`))&&(n.removeEventListener(`transitionend`,i),n[Dt]=null,I(n,t))};n.addEventListener(`transitionend`,i)}),s=[]}),()=>{let l=i(e),u=Ve(l),d=l.tag||be;if(s=[],c)for(let e=0;e<c.length;e++){let t=c[e];t.el&&t.el instanceof Element&&(s.push(t),o(t,r(t,u,a,n)),Tt.set(t,Nt(t.el)))}c=t.default?De(t.default()):[];for(let e=0;e<c.length;e++){let t=c[e];t.key!=null&&o(t,r(t,u,a,n))}return Te(d,null,c)}}});function At(e){let t=e.el;t[Dt]&&t[Dt](),t[Ot]&&t[Ot]()}function jt(e){Et.set(e,Nt(e.el))}function Mt(e){let t=Tt.get(e),n=Et.get(e),r=t.left-n.left,i=t.top-n.top;if(r||i){let t=e.el,n=t.style,a=t.getBoundingClientRect(),o=1,s=1;return t.offsetWidth&&(o=a.width/t.offsetWidth),t.offsetHeight&&(s=a.height/t.offsetHeight),(!Number.isFinite(o)||o===0)&&(o=1),(!Number.isFinite(s)||s===0)&&(s=1),Math.abs(o-1)<.01&&(o=1),Math.abs(s-1)<.01&&(s=1),n.transform=n.webkitTransform=`translate(${r/o}px,${i/s}px)`,n.transitionDuration=`0s`,e}}function Nt(e){let t=e.getBoundingClientRect();return{left:t.left,top:t.top}}function Pt(e,t,n){let r=e.cloneNode(),i=e[N];i&&i.forEach(e=>{e.split(/\s+/).forEach(e=>e&&r.classList.remove(e))}),n.split(/\s+/).forEach(e=>e&&r.classList.add(e)),r.style.display=`none`;let a=t.nodeType===1?t:t.parentNode;a.appendChild(r);let{hasTransform:o}=qe(r);return a.removeChild(r),o}var R=t=>{let n=t.props[`onUpdate:modelValue`]||!1;return e(n)?e=>p(n,e):n};function Ft(e){e.target.composing=!0}function It(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event(`input`)))}var z=Symbol(`_assign`);function Lt(e,t,n){return t&&(e=e.trim()),n&&(e=we(e)),e}var Rt={created(e,{modifiers:{lazy:t,trim:n,number:r}},i){e[z]=R(i);let a=r||i.props&&i.props.type===`number`;L(e,t?`change`:`input`,t=>{t.target.composing||e[z](Lt(e.value,n,a))}),(n||a)&&L(e,`change`,()=>{e.value=Lt(e.value,n,a)}),t||(L(e,`compositionstart`,Ft),L(e,`compositionend`,It),L(e,`change`,It))},mounted(e,{value:t}){e.value=t??``},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:i,number:a}},o){if(e[z]=R(o),e.composing)return;let s=(a||e.type===`number`)&&!/^0\d/.test(e.value)?we(e.value):e.value,c=t??``;if(s===c)return;let l=e.getRootNode();(l instanceof Document||l instanceof ShadowRoot)&&l.activeElement===e&&e.type!==`range`&&(r&&t===n||i&&e.value.trim()===c)||(e.value=c)}},zt={deep:!0,created(t,n,r){t[z]=R(r),L(t,`change`,()=>{let n=t._modelValue,r=B(t),i=t.checked,a=t[z];if(e(n)){let e=w(n,r),t=e!==-1;if(i&&!t)a(n.concat(r));else if(!i&&t){let t=[...n];t.splice(e,1),a(t)}}else if(ue(n)){let e=new Set(n);i?e.add(r):e.delete(r),a(e)}else a(Wt(t,i))})},mounted:Bt,beforeUpdate(e,t,n){e[z]=R(n),Bt(e,t,n)}};function Bt(t,{value:n,oldValue:r},i){t._modelValue=n;let a;if(e(n))a=w(n,i.props.value)>-1;else if(ue(n))a=n.has(i.props.value);else{if(n===r)return;a=b(n,Wt(t,!0))}t.checked!==a&&(t.checked=a)}var Vt={created(e,{value:t},n){e.checked=b(t,n.props.value),e[z]=R(n),L(e,`change`,()=>{e[z](B(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e[z]=R(r),t!==n&&(e.checked=b(t,r.props.value))}},Ht={deep:!0,created(e,{value:t,modifiers:{number:n}},r){let i=ue(t);L(e,`change`,()=>{let t=Array.prototype.filter.call(e.options,e=>e.selected).map(e=>n?we(B(e)):B(e));e[z](e.multiple?i?new Set(t):t:t[0]),e._assigning=!0,Ee(()=>{e._assigning=!1})}),e[z]=R(r)},mounted(e,{value:t}){Ut(e,t)},beforeUpdate(e,t,n){e[z]=R(n)},updated(e,{value:t}){e._assigning||Ut(e,t)}};function Ut(t,n){let r=t.multiple,i=e(n);if(!(r&&!i&&!ue(n))){for(let e=0,a=t.options.length;e<a;e++){let a=t.options[e],o=B(a);if(r)if(i){let e=typeof o;e===`string`||e===`number`?a.selected=n.some(e=>String(e)===String(o)):a.selected=w(n,o)>-1}else a.selected=n.has(o);else if(b(B(a),n)){t.selectedIndex!==e&&(t.selectedIndex=e);return}}!r&&t.selectedIndex!==-1&&(t.selectedIndex=-1)}}function B(e){return`_value`in e?e._value:e.value}function Wt(e,t){let n=t?`_trueValue`:`_falseValue`;return n in e?e[n]:t}var Gt={created(e,t,n){qt(e,t,n,null,`created`)},mounted(e,t,n){qt(e,t,n,null,`mounted`)},beforeUpdate(e,t,n,r){qt(e,t,n,r,`beforeUpdate`)},updated(e,t,n,r){qt(e,t,n,r,`updated`)}};function Kt(e,t){switch(e){case`SELECT`:return Ht;case`TEXTAREA`:return Rt;default:switch(t){case`checkbox`:return zt;case`radio`:return Vt;default:return Rt}}}function qt(e,t,n,r,i){let a=Kt(e.tagName,n.props&&n.props.type)[i];a&&a(e,t,n,r)}var Jt=[`ctrl`,`shift`,`alt`,`meta`],Yt={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>`button`in e&&e.button!==0,middle:e=>`button`in e&&e.button!==1,right:e=>`button`in e&&e.button!==2,exact:(e,t)=>Jt.some(n=>e[`${n}Key`]&&!t.includes(n))},Xt=(e,t)=>{if(!e)return e;let n=e._withMods||={},r=t.join(`.`);return n[r]||(n[r]=((n,...r)=>{for(let e=0;e<t.length;e++){let r=Yt[t[e]];if(r&&r(n,t))return}return e(n,...r)}))},Zt={esc:`escape`,space:` `,up:`arrow-up`,left:`arrow-left`,right:`arrow-right`,down:`arrow-down`,delete:`backspace`},Qt=(e,t)=>{let n=e._withKeys||={},r=t.join(`.`);return n[r]||(n[r]=(n=>{if(!(`key`in n))return;let r=_(n.key);if(t.some(e=>e===r||Zt[e]===r))return e(n)}))},$t=v({patchProp:St},Ie),en;function tn(){return en||=ce($t)}var nn=((...e)=>{let t=tn().createApp(...e),{mount:n}=t;return t.mount=e=>{let r=an(e);if(!r)return;let i=t._component;!oe(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent=``);let a=n(r,!1,rn(r));return r instanceof Element&&(r.removeAttribute(`v-cloak`),r.setAttribute(`data-v-app`,``)),a},t});function rn(e){if(e instanceof SVGElement)return`svg`;if(typeof MathMLElement==`function`&&e instanceof MathMLElement)return`mathml`}function an(e){return T(e)?document.querySelector(e):e}var V=typeof document<`u`;function on(e){return typeof e==`object`||`displayName`in e||`props`in e||`__vccOpts`in e}function sn(e){return e.__esModule||e[Symbol.toStringTag]===`Module`||e.default&&on(e.default)}var H=Object.assign;function cn(e,t){let n={};for(let r in t){let i=t[r];n[r]=U(i)?i.map(e):e(i)}return n}var ln=()=>{},U=Array.isArray;function un(e,t){let n={};for(let r in e)n[r]=r in t?t[r]:e[r];return n}var W=function(e){return e[e.MATCHER_NOT_FOUND=1]=`MATCHER_NOT_FOUND`,e[e.NAVIGATION_GUARD_REDIRECT=2]=`NAVIGATION_GUARD_REDIRECT`,e[e.NAVIGATION_ABORTED=4]=`NAVIGATION_ABORTED`,e[e.NAVIGATION_CANCELLED=8]=`NAVIGATION_CANCELLED`,e[e.NAVIGATION_DUPLICATED=16]=`NAVIGATION_DUPLICATED`,e}({}),dn=Symbol(``);W.MATCHER_NOT_FOUND,W.NAVIGATION_GUARD_REDIRECT,W.NAVIGATION_ABORTED,W.NAVIGATION_CANCELLED,W.NAVIGATION_DUPLICATED;function G(e,t){return H(Error(),{type:e,[dn]:!0},t)}function K(e,t){return e instanceof Error&&dn in e&&(t==null||!!(e.type&t))}var fn=Symbol(``),pn=Symbol(``),mn=Symbol(``),hn=Symbol(``),gn=Symbol(``);function _n(){return n(mn)}function vn(e){return n(hn)}var yn=/#/g,bn=/&/g,xn=/\//g,Sn=/=/g,Cn=/\?/g,wn=/\+/g,Tn=/%5B/g,En=/%5D/g,Dn=/%5E/g,On=/%60/g,kn=/%7B/g,An=/%7C/g,jn=/%7D/g,Mn=/%20/g;function Nn(e){return e==null?``:encodeURI(``+e).replace(An,`|`).replace(Tn,`[`).replace(En,`]`)}function Pn(e){return Nn(e).replace(kn,`{`).replace(jn,`}`).replace(Dn,`^`)}function Fn(e){return Nn(e).replace(wn,`%2B`).replace(Mn,`+`).replace(yn,`%23`).replace(bn,`%26`).replace(On,"`").replace(kn,`{`).replace(jn,`}`).replace(Dn,`^`)}function In(e){return Fn(e).replace(Sn,`%3D`)}function Ln(e){return Nn(e).replace(yn,`%23`).replace(Cn,`%3F`)}function Rn(e){return Ln(e).replace(xn,`%2F`)}function zn(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var Bn=/\/$/,Vn=e=>e.replace(Bn,``);function Hn(e,t,n=`/`){let r,i={},a=``,o=``,s=t.indexOf(`#`),c=t.indexOf(`?`);return c=s>=0&&c>s?-1:c,c>=0&&(r=t.slice(0,c),a=t.slice(c,s>0?s:t.length),i=e(a.slice(1))),s>=0&&(r||=t.slice(0,s),o=t.slice(s,t.length)),r=Yn(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:zn(o)}}function Un(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function Wn(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function Gn(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&q(t.matched[r],n.matched[i])&&Kn(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function q(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Kn(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!qn(e[n],t[n]))return!1;return!0}function qn(e,t){return U(e)?Jn(e,t):U(t)?Jn(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function Jn(e,t){return U(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function Yn(e,t){if(e.startsWith(`/`))return e;if(!e)return t;let n=t.split(`/`),r=e.split(`/`),i=r[r.length-1];(i===`..`||i===`.`)&&r.push(``);let a=n.length-1,o,s;for(o=0;o<r.length;o++)if(s=r[o],s!==`.`)if(s===`..`)a>1&&a--;else break;return n.slice(0,a).join(`/`)+`/`+r.slice(o).join(`/`)}var J={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0},Xn=function(e){return e.pop=`pop`,e.push=`push`,e}({}),Zn=function(e){return e.back=`back`,e.forward=`forward`,e.unknown=``,e}({});function Qn(e){if(!e)if(V){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^\/]+/,``)}else e=`/`;return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),Vn(e)}var $n=/^[^#]+#/;function er(e,t){return e.replace($n,`#`)+t}function tr(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var nr=()=>({left:window.scrollX,top:window.scrollY});function rr(e){let t;if(`el`in e){let n=e.el,r=typeof n==`string`&&n.startsWith(`#`),i=typeof n==`string`?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;t=tr(i,e)}else t=e;`scrollBehavior`in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left==null?window.scrollX:t.left,t.top==null?window.scrollY:t.top)}function ir(e,t){return(history.state?history.state.position-t:-1)+e}var ar=new Map;function or(e,t){ar.set(e,t)}function sr(e){let t=ar.get(e);return ar.delete(e),t}function cr(e){return typeof e==`string`||e&&typeof e==`object`}function lr(e){return typeof e==`string`||typeof e==`symbol`}function ur(e){let t={};if(e===``||e===`?`)return t;let n=(e[0]===`?`?e.slice(1):e).split(`&`);for(let e=0;e<n.length;++e){let r=n[e].replace(wn,` `),i=r.indexOf(`=`),a=zn(i<0?r:r.slice(0,i)),o=i<0?null:zn(r.slice(i+1));if(a in t){let e=t[a];U(e)||(e=t[a]=[e]),e.push(o)}else t[a]=o}return t}function dr(e){let t=``;for(let n in e){let r=e[n];if(n=In(n),r==null){r!==void 0&&(t+=(t.length?`&`:``)+n);continue}(U(r)?r.map(e=>e&&Fn(e)):[r&&Fn(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function fr(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=U(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}function pr(){let e=[];function t(t){return e.push(t),()=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Y(e,t,n,r,i,a=e=>e()){let o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise((s,c)=>{let l=e=>{e===!1?c(G(W.NAVIGATION_ABORTED,{from:n,to:t})):e instanceof Error?c(e):cr(e)?c(G(W.NAVIGATION_GUARD_REDIRECT,{from:t,to:e})):(o&&r.enterCallbacks[i]===o&&typeof e==`function`&&o.push(e),s())},u=a(()=>e.call(r&&r.instances[i],t,n,l)),d=Promise.resolve(u);e.length<3&&(d=d.then(l)),d.catch(e=>c(e))})}function mr(e,t,n,r,i=e=>e()){let a=[];for(let o of e)for(let e in o.components){let s=o.components[e];if(!(t!==`beforeRouteEnter`&&!o.instances[e]))if(on(s)){let c=(s.__vccOpts||s)[t];c&&a.push(Y(c,n,r,o,e,i))}else{let c=s();a.push(()=>c.then(a=>{if(!a)throw Error(`Couldn't resolve component "${e}" at "${o.path}"`);let s=sn(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&Y(c,n,r,o,e,i)()}))}}return a}function hr(e,t){let n=[],r=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;o<a;o++){let a=t.matched[o];a&&(e.matched.find(e=>q(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>q(e,s))||i.push(s))}return[n,r,i]}var gr=()=>location.protocol+`//`+location.host;function _r(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),Wn(n,``)}return Wn(n,e)+r+i}function vr(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=_r(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:Xn.pop,direction:u?u>0?Zn.forward:Zn.back:Zn.unknown})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){if(document.visibilityState===`hidden`){let{history:e}=window;if(!e.state)return;e.replaceState(H({},e.state,{scroll:nr()}),``)}}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u),document.removeEventListener(`visibilitychange`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),document.addEventListener(`visibilitychange`,u),{pauseListeners:c,listen:l,destroy:d}}function yr(e,t,n,r=!1,i=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:i?nr():null}}function br(e){let{history:t,location:n}=window,r={value:_r(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:gr()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){a(e,H({},t.state,yr(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=H({},i.value,t.state,{forward:e,scroll:nr()});a(o.current,o,!0),a(e,H({},yr(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function xr(e){e=Qn(e);let t=br(e),n=vr(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=H({location:``,base:e,go:r,createHref:er.bind(null,e)},t,n);return Object.defineProperty(i,`location`,{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,`state`,{enumerable:!0,get:()=>t.state.value}),i}var X=function(e){return e[e.Static=0]=`Static`,e[e.Param=1]=`Param`,e[e.Group=2]=`Group`,e}({}),Z=function(e){return e[e.Static=0]=`Static`,e[e.Param=1]=`Param`,e[e.ParamRegExp=2]=`ParamRegExp`,e[e.ParamRegExpEnd=3]=`ParamRegExpEnd`,e[e.EscapeNext=4]=`EscapeNext`,e}(Z||{}),Sr={type:X.Static,value:``},Cr=/[a-zA-Z0-9_]/;function wr(e){if(!e)return[[]];if(e===`/`)return[[Sr]];if(!e.startsWith(`/`))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=Z.Static,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===Z.Static?a.push({type:X.Static,value:l}):n===Z.Param||n===Z.ParamRegExp||n===Z.ParamRegExpEnd?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:X.Param,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;s<e.length;){if(c=e[s++],c===`\\`&&n!==Z.ParamRegExp){r=n,n=Z.EscapeNext;continue}switch(n){case Z.Static:c===`/`?(l&&d(),o()):c===`:`?(d(),n=Z.Param):f();break;case Z.EscapeNext:f(),n=r;break;case Z.Param:c===`(`?n=Z.ParamRegExp:Cr.test(c)?f():(d(),n=Z.Static,c!==`*`&&c!==`?`&&c!==`+`&&s--);break;case Z.ParamRegExp:c===`)`?u[u.length-1]==`\\`?u=u.slice(0,-1)+c:n=Z.ParamRegExpEnd:u+=c;break;case Z.ParamRegExpEnd:d(),n=Z.Static,c!==`*`&&c!==`?`&&c!==`+`&&s--,u=``;break;default:t(`Unknown state`);break}}return n===Z.ParamRegExp&&t(`Unfinished custom RegExp for param "${l}"`),d(),o(),i}var Tr=`[^/]+?`,Er={sensitive:!1,strict:!1,start:!0,end:!0},Q=function(e){return e[e._multiplier=10]=`_multiplier`,e[e.Root=90]=`Root`,e[e.Segment=40]=`Segment`,e[e.SubSegment=30]=`SubSegment`,e[e.Static=40]=`Static`,e[e.Dynamic=20]=`Dynamic`,e[e.BonusCustomRegExp=10]=`BonusCustomRegExp`,e[e.BonusWildcard=-50]=`BonusWildcard`,e[e.BonusRepeatable=-20]=`BonusRepeatable`,e[e.BonusOptional=-8]=`BonusOptional`,e[e.BonusStrict=.7000000000000001]=`BonusStrict`,e[e.BonusCaseSensitive=.25]=`BonusCaseSensitive`,e}(Q||{}),Dr=/[.+*?^${}()[\]/\\]/g;function Or(e,t){let n=H({},Er,t),r=[],i=n.start?`^`:``,a=[];for(let t of e){let e=t.length?[]:[Q.Root];n.strict&&!t.length&&(i+=`/`);for(let r=0;r<t.length;r++){let o=t[r],s=Q.Segment+(n.sensitive?Q.BonusCaseSensitive:0);if(o.type===X.Static)r||(i+=`/`),i+=o.value.replace(Dr,`\\$&`),s+=Q.Static;else if(o.type===X.Param){let{value:e,repeatable:n,optional:c,regexp:l}=o;a.push({name:e,repeatable:n,optional:c});let u=l||Tr;if(u!==Tr){s+=Q.BonusCustomRegExp;try{RegExp(`(${u})`)}catch(t){throw Error(`Invalid custom RegExp for param "${e}" (${u}): `+t.message)}}let d=n?`((?:${u})(?:/(?:${u}))*)`:`(${u})`;r||(d=c&&t.length<2?`(?:/${d})`:`/`+d),c&&(d+=`?`),i+=d,s+=Q.Dynamic,c&&(s+=Q.BonusOptional),n&&(s+=Q.BonusRepeatable),u===`.*`&&(s+=Q.BonusWildcard)}e.push(s)}r.push(e)}if(n.strict&&n.end){let e=r.length-1;r[e][r[e].length-1]+=Q.BonusStrict}n.strict||(i+=`/?`),n.end?i+=`$`:n.strict&&!i.endsWith(`/`)&&(i+=`(?:/|$)`);let o=new RegExp(i,n.sensitive?``:`i`);function s(e){let t=e.match(o),n={};if(!t)return null;for(let e=1;e<t.length;e++){let r=t[e]||``,i=a[e-1];n[i.name]=r&&i.repeatable?r.split(`/`):r}return n}function c(t){let n=``,r=!1;for(let i of e){(!r||!n.endsWith(`/`))&&(n+=`/`),r=!1;for(let e of i)if(e.type===X.Static)n+=e.value;else if(e.type===X.Param){let{value:a,repeatable:o,optional:s}=e,c=a in t?t[a]:``;if(U(c)&&!o)throw Error(`Provided param "${a}" is an array but it is not repeatable (* or + modifiers)`);let l=U(c)?c.join(`/`):c;if(!l)if(s)i.length<2&&(n.endsWith(`/`)?n=n.slice(0,-1):r=!0);else throw Error(`Missing required param "${a}"`);n+=l}}return n||`/`}return{re:o,score:r,keys:a,parse:s,stringify:c}}function kr(e,t){let n=0;for(;n<e.length&&n<t.length;){let r=t[n]-e[n];if(r)return r;n++}return e.length<t.length?e.length===1&&e[0]===Q.Static+Q.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===Q.Static+Q.Segment?1:-1:0}function Ar(e,t){let n=0,r=e.score,i=t.score;for(;n<r.length&&n<i.length;){let e=kr(r[n],i[n]);if(e)return e;n++}if(Math.abs(i.length-r.length)===1){if(jr(r))return 1;if(jr(i))return-1}return i.length-r.length}function jr(e){let t=e[e.length-1];return e.length>0&&t[t.length-1]<0}var Mr={strict:!1,end:!0,sensitive:!1};function Nr(e,t,n){let r=H(Or(wr(e.path),n),{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Pr(e,t){let n=[],r=new Map;t=un(Mr,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=Ir(e);s.aliasOf=r&&r.record;let l=un(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push(Ir(H({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,f;for(let t of u){let{path:u}=t;if(n&&u[0]!==`/`){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=Nr(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!Rr(d)&&o(e.name)),Hr(d)&&c(d),s.children){let e=s.children;for(let t=0;t<e.length;t++)a(e[t],d,r&&r.children[t])}r||=d}return f?()=>{o(f)}:ln}function o(e){if(lr(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=Br(e,n);n.splice(t,0,e),e.record.name&&!Rr(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw G(W.MATCHER_NOT_FOUND,{location:e});s=i.record.name,a=H(Fr(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&Fr(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name);else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw G(W.MATCHER_NOT_FOUND,{location:e,currentLocation:t});s=i.record.name,a=H({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:zr(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function Fr(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function Ir(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Lr(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,`mods`,{value:{}}),t}function Lr(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function Rr(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function zr(e){return e.reduce((e,t)=>H(e,t.meta),{})}function Br(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;Ar(e,t[i])<0?r=i:n=i+1}let i=Vr(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function Vr(e){let t=e;for(;t=t.parent;)if(Hr(t)&&Ar(e,t)===0)return t}function Hr({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Ur(e){let t=n(mn),r=n(hn),i=k(()=>{let n=c(e.to);return t.resolve(n)}),a=k(()=>{let{matched:e}=i.value,{length:t}=e,n=e[t-1],a=r.matched;if(!n||!a.length)return-1;let o=a.findIndex(q.bind(null,n));if(o>-1)return o;let s=Jr(e[t-2]);return t>1&&Jr(n)===s&&a[a.length-1].path!==s?a.findIndex(q.bind(null,e[t-2])):o}),o=k(()=>a.value>-1&&qr(r.params,i.value.params)),s=k(()=>a.value>-1&&a.value===r.matched.length-1&&Kn(r.params,i.value.params));function l(n={}){if(Kr(n)){let n=t[c(e.replace)?`replace`:`push`](c(e.to)).catch(ln);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:i,href:k(()=>i.value.href),isActive:o,isExactActive:s,navigate:l}}function Wr(e){return e.length===1?e[0]:e}var Gr=Oe({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:Ur,setup(e,{slots:t}){let r=g(Ur(e)),{options:i}=n(mn),a=k(()=>({[Yr(e.activeClass,i.linkActiveClass,`router-link-active`)]:r.isActive,[Yr(e.exactActiveClass,i.linkExactActiveClass,`router-link-exact-active`)]:r.isExactActive}));return()=>{let n=t.default&&Wr(t.default(r));return e.custom?n:h(`a`,{"aria-current":r.isExactActive?e.ariaCurrentValue:null,href:r.href,onClick:r.navigate,class:a.value},n)}}});function Kr(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function qr(e,t){for(let n in t){let r=t[n],i=e[n];if(typeof r==`string`){if(r!==i)return!1}else if(!U(i)||i.length!==r.length||r.some((e,t)=>e.valueOf()!==i[t].valueOf()))return!1}return!0}function Jr(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var Yr=(e,t,n)=>e??t??n,Xr=Oe({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(e,{attrs:r,slots:i}){let o=n(gn),s=k(()=>e.route||o.value),l=n(pn,0),u=k(()=>{let e=c(l),{matched:t}=s.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),d=k(()=>s.value.matched[u.value]);t(pn,k(()=>u.value+1)),t(fn,d),t(gn,s);let f=a();return m(()=>[f.value,d.value,e.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!q(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let t=s.value,n=e.name,a=d.value,o=a&&a.components[n];if(!o)return Zr(i.default,{Component:o,route:t});let c=a.props[n],l=h(o,H({},c?c===!0?t.params:typeof c==`function`?c(t):c:null,r,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(a.instances[n]=null)},ref:f}));return Zr(i.default,{Component:l,route:t})||l}}});function Zr(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var Qr=Xr;function $r(e){let t=Pr(e.routes,e),n=e.parseQuery||ur,r=e.stringifyQuery||dr,i=e.history,a=pr(),o=pr(),s=pr(),l=te(J),u=J;V&&e.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let d=cn.bind(null,e=>``+e),f=cn.bind(null,Rn),p=cn.bind(null,zn);function m(e,n){let r,i;return lr(e)?(r=t.getRecordMatcher(e),i=n):i=e,t.addRoute(i,r)}function h(e){let n=t.getRecordMatcher(e);n&&t.removeRoute(n)}function g(){return t.getRoutes().map(e=>e.record)}function _(e){return!!t.getRecordMatcher(e)}function v(e,a){if(a=H({},a||l.value),typeof e==`string`){let r=Hn(n,e,a.path),o=t.resolve({path:r.path},a),s=i.createHref(r.fullPath);return H(r,o,{params:p(o.params),hash:zn(r.hash),redirectedFrom:void 0,href:s})}let o;if(e.path!=null)o=H({},e,{path:Hn(n,e.path,a.path).path});else{let t=H({},e.params);for(let e in t)t[e]??delete t[e];o=H({},e,{params:f(t)}),a.params=f(a.params)}let s=t.resolve(o,a),c=e.hash||``;s.params=d(p(s.params));let u=Un(r,H({},e,{hash:Pn(c),path:s.path})),m=i.createHref(u);return H({fullPath:u,hash:c,query:r===dr?fr(e.query):e.query||{}},s,{redirectedFrom:void 0,href:m})}function y(e){return typeof e==`string`?Hn(n,e,l.value.path):H({},e)}function ne(e,t){if(u!==e)return G(W.NAVIGATION_CANCELLED,{from:t,to:e})}function re(e){return b(e)}function ie(e){return re(H(y(e),{replace:!0}))}function ae(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=y(i):{path:i},i.params={}),H({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function b(e,t){let n=u=v(e),i=l.value,a=e.state,o=e.force,s=e.replace===!0,c=ae(n,i);if(c)return b(H(y(c),{state:typeof c==`object`?H({},a,c.state):a,force:o,replace:s}),t||n);let d=n;d.redirectedFrom=t;let f;return!o&&Gn(r,i,n)&&(f=G(W.NAVIGATION_DUPLICATED,{to:d,from:i}),he(i,i,!0,!1)),(f?Promise.resolve(f):oe(d,i)).catch(e=>K(e)?K(e,W.NAVIGATION_GUARD_REDIRECT)?e:me(e):w(e,d,i)).then(e=>{if(e){if(K(e,W.NAVIGATION_GUARD_REDIRECT))return b(H({replace:s},y(e.to),{state:typeof e.to==`object`?H({},a,e.to.state):a,force:o}),t||d)}else e=ce(d,i,!0,s,a);return se(d,i,e),e})}function x(e,t){let n=ne(e,t);return n?Promise.reject(n):Promise.resolve()}function S(e){let t=T.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function oe(e,t){let n,[r,i,s]=hr(e,t);n=mr(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push(Y(r,e,t))});let c=x.bind(null,e,t);return n.push(c),D(n).then(()=>{n=[];for(let r of a.list())n.push(Y(r,e,t));return n.push(c),D(n)}).then(()=>{n=mr(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push(Y(r,e,t))});return n.push(c),D(n)}).then(()=>{n=[];for(let r of s)if(r.beforeEnter)if(U(r.beforeEnter))for(let i of r.beforeEnter)n.push(Y(i,e,t));else n.push(Y(r.beforeEnter,e,t));return n.push(c),D(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=mr(s,`beforeRouteEnter`,e,t,S),n.push(c),D(n))).then(()=>{n=[];for(let r of o.list())n.push(Y(r,e,t));return n.push(c),D(n)}).catch(e=>K(e,W.NAVIGATION_CANCELLED)?e:Promise.reject(e))}function se(e,t,n){s.list().forEach(r=>S(()=>r(e,t,n)))}function ce(e,t,n,r,a){let o=ne(e,t);if(o)return o;let s=t===J,c=V?history.state:{};n&&(r||s?i.replace(e.fullPath,H({scroll:s&&c&&c.scroll},a)):i.push(e.fullPath,a)),l.value=e,he(e,t,n,s),me()}let le;function ue(){le||=i.listen((e,t,n)=>{if(!E.listening)return;let r=v(e),a=ae(r,E.currentRoute.value);if(a){b(H(a,{replace:!0,force:!0}),r).catch(ln);return}u=r;let o=l.value;V&&or(ir(o.fullPath,n.delta),nr()),oe(r,o).catch(e=>K(e,W.NAVIGATION_ABORTED|W.NAVIGATION_CANCELLED)?e:K(e,W.NAVIGATION_GUARD_REDIRECT)?(b(H(y(e.to),{force:!0}),r).then(e=>{K(e,W.NAVIGATION_ABORTED|W.NAVIGATION_DUPLICATED)&&!n.delta&&n.type===Xn.pop&&i.go(-1,!1)}).catch(ln),Promise.reject()):(n.delta&&i.go(-n.delta,!1),w(e,r,o))).then(e=>{e||=ce(r,o,!1),e&&(n.delta&&!K(e,W.NAVIGATION_CANCELLED)?i.go(-n.delta,!1):n.type===Xn.pop&&K(e,W.NAVIGATION_ABORTED|W.NAVIGATION_DUPLICATED)&&i.go(-1,!1)),se(r,o,e)}).catch(ln)})}let de=pr(),C=pr(),fe;function w(e,t,n){me(e);let r=C.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function pe(){return fe&&l.value!==J?Promise.resolve():new Promise((e,t)=>{de.add([e,t])})}function me(e){return fe||(fe=!e,ue(),de.list().forEach(([t,n])=>e?n(e):t()),de.reset()),e}function he(t,n,r,i){let{scrollBehavior:a}=e;if(!V||!a)return Promise.resolve();let o=!r&&sr(ir(t.fullPath,0))||(i||!r)&&history.state&&history.state.scroll||null;return Ee().then(()=>a(t,n,o)).then(e=>e&&rr(e)).catch(e=>w(e,t,n))}let ge=e=>i.go(e),_e,T=new Set,E={currentRoute:l,listening:!0,addRoute:m,removeRoute:h,clearRoutes:t.clearRoutes,hasRoute:_,getRoutes:g,resolve:v,options:e,push:re,replace:ie,go:ge,back:()=>ge(-1),forward:()=>ge(1),beforeEach:a.add,beforeResolve:o.add,afterEach:s.add,onError:C.add,isReady:pe,install(e){e.component(`RouterLink`,Gr),e.component(`RouterView`,Qr),e.config.globalProperties.$router=E,Object.defineProperty(e.config.globalProperties,`$route`,{enumerable:!0,get:()=>c(l)}),V&&!_e&&l.value===J&&(_e=!0,re(i.location).catch(e=>{}));let t={};for(let e in J)Object.defineProperty(t,e,{get:()=>l.value[e],enumerable:!0});e.provide(mn,E),e.provide(hn,ee(t)),e.provide(gn,l);let n=e.unmount;T.add(e),e.unmount=function(){T.delete(e),T.size<1&&(u=J,le&&le(),le=null,l.value=J,_e=!1,fe=!1),n()}}};function D(e){return e.reduce((e,t)=>e.then(()=>S(t)),Promise.resolve())}return E}var ei=`modulepreload`,ti=function(e){return`/`+e},ni={},$=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=ti(t,n),t in ni)return;ni[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:ei,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},ri=$r({history:xr(),routes:[{path:`/login`,name:`Login`,component:()=>$(()=>import(`./Login-C3zfObzP.js`),__vite__mapDeps([0,1]))},{path:`/`,component:()=>$(()=>import(`./DefaultLayout-BG_y85yG.js`),__vite__mapDeps([2,3,1,4,5,6,7,8,9])),meta:{requiresAuth:!0},children:[{path:``,name:`Dashboard`,component:()=>$(()=>import(`./Dashboard-BTliTkq1.js`),__vite__mapDeps([10,3,1,11,12,13,14]))},{path:`projects`,name:`ProjectList`,component:()=>$(()=>import(`./ProjectList-C4KuZEq4.js`),__vite__mapDeps([15,1,16,13,17,18,19,20,21,22,23,7,14,24,25]))},{path:`projects/:id/files`,name:`ProjectFiles`,component:()=>$(()=>import(`./FileExplorer-Bf32_MMS.js`),__vite__mapDeps([26,1,27,16,28,19,20,21,29]))},{path:`projects/:id`,name:`ProjectDetail`,component:()=>$(()=>import(`./ProjectDetail-BL_D0OJY.js`),__vite__mapDeps([30,31,1,23,32,33,34,27,16,35,18,28,19,20,36,29,22,7,8,24,37]))},{path:`logs`,name:`LogBoard`,component:()=>$(()=>import(`./LogBoard-CDz4n0DY.js`),__vite__mapDeps([38,31,1,23,32,33,34,12,13,35,39]))},{path:`audit`,name:`AuditLog`,component:()=>$(()=>import(`./AuditLog-BFmJfgzL.js`),__vite__mapDeps([40,1,16,12,28,23,7]))},{path:`settings`,name:`Settings`,component:()=>$(()=>import(`./Settings-CzWG9312.js`),__vite__mapDeps([41,1,11,35,17,18,5,36,6,23,14]))},{path:`storage`,name:`Storage`,component:()=>$(()=>import(`./Storage-BCao_e7Y.js`),__vite__mapDeps([42,31,1,23,32,34,16,4,28,20,5,24,43]))},{path:`migration`,name:`Migration`,component:()=>$(()=>import(`./Migration-BaKlcCkB.js`),__vite__mapDeps([44,31,1,23,32,4,29]))}]}]});ri.beforeEach((e,t,n)=>{let r=he();e.meta.requiresAuth&&!r.adminToken?n(`/login`):e.path===`/login`&&r.adminToken?n(`/`):n()});var ii=`kite-theme`,ai=le(`theme`,()=>{let e=a(localStorage.getItem(ii)||`dark`),t=()=>window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`,n=a(e.value===`system`?t():e.value),r=e=>{n.value=e,document.documentElement.classList.toggle(`dark`,e===`dark`)};return window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{e.value===`system`&&r(t())}),r(e.value===`system`?t():e.value),{mode:e,resolvedTheme:n,setMode:n=>{e.value=n,localStorage.setItem(ii,n),r(n===`system`?t():n)}}}),oi=Se(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),si=Se(`circle-x`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),ci=Se(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),li=Se(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),ui=Se(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),di=g({items:[]}),fi=1;function pi(e,t,n,r=3200){let i=fi++;return di.items.push({id:i,type:e,title:t,message:n,duration:r}),r>0&&setTimeout(()=>mi(i),r),i}function mi(e){let t=di.items.findIndex(t=>t.id===e);t>=0&&di.items.splice(t,1)}function hi(){return{items:di.items,dismiss:mi,success:(e,t,n)=>pi(`success`,e,t,n),error:(e,t,n)=>pi(`error`,e,t,n??5e3),info:(e,t,n)=>pi(`info`,e,t,n),warning:(e,t,n)=>pi(`warning`,e,t,n)}}var gi={class:`fixed top-4 right-4 z-[100] flex flex-col gap-2 w-80 pointer-events-none`},_i={class:`flex-1 min-w-0`},vi={class:`text-sm font-medium text-textMain`},yi={key:0,class:`text-xs text-textMuted mt-0.5 break-words`},bi=[`onClick`],xi=Oe({__name:`ToastContainer`,setup(e){let{items:t,dismiss:n}=hi(),r={success:oi,error:si,warning:li,info:ci},i={success:{border:`border-success/40`,icon:`text-success`,bg:`bg-success/10`},error:{border:`border-danger/40`,icon:`text-danger`,bg:`bg-danger/10`},warning:{border:`border-yellow-400/40`,icon:`text-yellow-400`,bg:`bg-yellow-400/10`},info:{border:`border-primary/40`,icon:`text-primary`,bg:`bg-primary/10`}},a=k(()=>t);return(e,t)=>(C(),se(ae,{to:`body`},[x(`div`,gi,[Te(kt,{name:`toast`,tag:`div`,class:`flex flex-col gap-2`},{default:ke(()=>[(C(!0),pe(be,null,de(a.value,e=>(C(),pe(`div`,{key:e.id,class:S([`pointer-events-auto bg-panel border rounded-lg shadow-xl p-3 flex items-start gap-3`,i[e.type].border])},[x(`div`,{class:S([`w-7 h-7 rounded-md flex items-center justify-center flex-shrink-0`,i[e.type].bg])},[(C(),se(f(r[e.type]),{class:S([`w-4 h-4`,i[e.type].icon])},null,8,[`class`]))],2),x(`div`,_i,[x(`div`,vi,D(e.title),1),e.message?(C(),pe(`div`,yi,D(e.message),1)):E(``,!0)]),x(`button`,{onClick:t=>c(n)(e.id),class:`text-textMuted hover:text-textMain p-0.5 rounded flex-shrink-0`},[Te(c(ui),{class:`w-3.5 h-3.5`})],8,bi)],2))),128))]),_:1})])]))}}),Si=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},Ci=Si(xi,[[`__scopeId`,`data-v-b945a2f9`]]),wi=nn(Oe({__name:`App`,setup(e){return(e,t)=>{let n=u(`router-view`);return C(),pe(be,null,[Te(n),Te(Ci)],64)}}})),Ti=ve();wi.use(Ti),wi.use(ri),ai(Ti),wi.mount(`#app`);export{Qt as _,ci as a,ai as c,ze as d,zt as f,Rt as g,Ht as h,li as i,vn as l,Vt as m,hi as n,si as o,Gt as p,ui as r,oi as s,Si as t,_n as u,Xt as v};
@@ -0,0 +1 @@
1
+ *,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:Inter,system-ui,sans-serif;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:JetBrains Mono,Fira Code,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}body{background-color:var(--color-base);color:var(--color-text-main);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0;font-family:Inter,system-ui,sans-serif;overflow-x:hidden}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-0{bottom:0}.left-0{left:0}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.right-full{right:100%}.top-0{top:0}.top-1\/2{top:50%}.top-2{top:.5rem}.top-4{top:1rem}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.z-\[60\]{z-index:60}.col-span-2{grid-column:span 2/span 2}.col-span-full{grid-column:1/-1}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.-ml-1{margin-left:-.25rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-7{margin-left:1.75rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-44{height:11rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-\[400px\]{height:400px}.h-\[500px\]{height:500px}.h-\[calc\(100vh-4rem\)\]{height:calc(100vh - 4rem)}.h-full{height:100%}.h-screen{height:100vh}.max-h-28{max-height:7rem}.max-h-64{max-height:16rem}.max-h-96{max-height:24rem}.max-h-\[85vh\]{max-height:85vh}.min-h-0{min-height:0}.min-h-\[100px\]{min-height:100px}.min-h-\[200px\]{min-height:200px}.min-h-\[280px\]{min-height:280px}.min-h-\[40px\]{min-height:40px}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-36{width:9rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-80{width:20rem}.w-\[10\%\]{width:10%}.w-\[14\%\]{width:14%}.w-\[18\%\]{width:18%}.w-\[22\%\]{width:22%}.w-\[36\%\]{width:36%}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\[160px\]{min-width:160px}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[180px\]{max-width:180px}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.table-fixed{table-layout:fixed}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;user-select:none}.resize-none{resize:none}.resize-y{resize:vertical}.resize{resize:both}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[3px\]{gap:3px}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-border>:not([hidden])~:not([hidden]){border-color:var(--color-border)}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-blue-500\/30{border-color:#3b82f64d}.border-border{border-color:var(--color-border)}.border-cyan-500\/30{border-color:#06b6d44d}.border-danger{border-color:var(--color-danger)}.border-gray-500\/30{border-color:#6b72804d}.border-green-500\/30{border-color:#22c55e4d}.border-pink-500\/30{border-color:#ec48994d}.border-primary{border-color:var(--color-primary)}.border-purple-500\/30{border-color:#a855f74d}.border-transparent{border-color:#0000}.border-yellow-400{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity,1))}.border-yellow-400\/30{border-color:#facc154d}.border-yellow-400\/40{border-color:#facc1566}.border-yellow-500\/30{border-color:#eab3084d}.bg-\[\#09090b\]{--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.bg-base{background-color:var(--color-base)}.bg-black\/40{background-color:#0006}.bg-black\/50{background-color:#00000080}.bg-black\/60{background-color:#0009}.bg-black\/\[0\.02\]{background-color:#00000005}.bg-blue-500\/15{background-color:#3b82f626}.bg-cyan-500\/15{background-color:#06b6d426}.bg-danger{background-color:var(--color-danger)}.bg-emerald-400{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity,1))}.bg-emerald-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity,1))}.bg-emerald-500\/80{background-color:#10b981cc}.bg-emerald-600\/70{background-color:#059669b3}.bg-emerald-700\/60{background-color:#04785799}.bg-gray-500\/15{background-color:#6b728026}.bg-green-500\/15{background-color:#22c55e26}.bg-panel{background-color:var(--color-panel)}.bg-pink-500\/15{background-color:#ec489926}.bg-primary{background-color:var(--color-primary)}.bg-purple-500\/15{background-color:#a855f726}.bg-success{background-color:var(--color-success)}.bg-textMain{background-color:var(--color-text-main)}.bg-textMuted{background-color:var(--color-text-muted)}.bg-transparent{background-color:#0000}.bg-white\/5{background-color:#ffffff0d}.bg-yellow-400{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity,1))}.bg-yellow-400\/10{background-color:#facc151a}.bg-yellow-400\/15{background-color:#facc1526}.bg-yellow-400\/5{background-color:#facc150d}.bg-yellow-500\/15{background-color:#eab30826}.bg-yellow-500\/80{background-color:#eab308cc}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-12{padding:3rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-1{padding-bottom:.25rem}.pb-12{padding-bottom:3rem}.pl-11{padding-left:2.75rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pr-10{padding-right:2.5rem}.pr-12{padding-right:3rem}.pr-4{padding-right:1rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.font-mono{font-family:JetBrains Mono,Fira Code,monospace}.font-sans{font-family:Inter,system-ui,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-3{line-height:.75rem}.leading-5{line-height:1.25rem}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-\[\#f4f4f5\]{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity,1))}.text-base{color:var(--color-base)}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.text-cyan-500{--tw-text-opacity:1;color:rgb(6 182 212/var(--tw-text-opacity,1))}.text-danger{color:var(--color-danger)}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.text-pink-500{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity,1))}.text-primary{color:var(--color-primary)}.text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.text-success{color:var(--color-success)}.text-textMain{color:var(--color-text-main)}.text-textMuted{color:var(--color-text-muted)}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity,1))}.text-yellow-800{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity,1))}.accent-primary{accent-color:var(--color-primary)}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.shadow-2xl{--tw-shadow:0 25px 50px -12px #00000040;--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_10px_rgba\(59\,130\,246\,0\.1\)\]{--tw-shadow:0 0 10px #3b82f61a;--tw-shadow-colored:0 0 10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_12px_rgba\(59\,130\,246\,0\.15\)\]{--tw-shadow:0 0 12px #3b82f626;--tw-shadow-colored:0 0 12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_15px_rgba\(59\,130\,246\,0\.3\)\]{--tw-shadow:0 0 15px #3b82f64d;--tw-shadow-colored:0 0 15px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_30px_rgba\(59\,130\,246\,0\.15\)\]{--tw-shadow:0 0 30px #3b82f626;--tw-shadow-colored:0 0 30px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_8px_\#10b981\]{--tw-shadow:0 0 8px #10b981;--tw-shadow-colored:0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_8px_currentColor\]{--tw-shadow:0 0 8px currentColor;--tw-shadow-colored:0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[inset_2px_0_0_0_\#3b82f6\]{--tw-shadow:inset 2px 0 0 0 #3b82f6;--tw-shadow-colored:inset 2px 0 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.blur-\[2px\]{--tw-blur:blur(2px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}:root{--color-base:#fff;--color-panel:#f8f9fa;--color-border:#e5e7eb;--color-primary:#3b82f6;--color-success:#10b981;--color-danger:#ef4444;--color-text-main:#18181b;--color-text-muted:#71717a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.dark{--color-base:#09090b;--color-panel:#18181b;--color-border:#27272a;--color-primary:#3b82f6;--color-success:#10b981;--color-danger:#ef4444;--color-text-main:#f4f4f5;--color-text-muted:#a1a1aa;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:9999px}::-webkit-scrollbar-thumb:hover{background-color:var(--color-text-muted)}.placeholder\:font-sans::placeholder{font-family:Inter,system-ui,sans-serif}.last\:border-0:last-child{border-width:0}.hover\:scale-125:hover{--tw-scale-x:1.25;--tw-scale-y:1.25;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-danger:hover{border-color:var(--color-danger)}.hover\:border-primary:hover{border-color:var(--color-primary)}.hover\:border-textMuted:hover{border-color:var(--color-text-muted)}.hover\:border-yellow-400\/50:hover{border-color:#facc1580}.hover\:bg-base:hover{background-color:var(--color-base)}.hover\:bg-black\/10:hover{background-color:#0000001a}.hover\:bg-black\/5:hover{background-color:#0000000d}.hover\:bg-black\/\[0\.02\]:hover{background-color:#00000005}.hover\:bg-danger:hover{background-color:var(--color-danger)}.hover\:bg-primary:hover{background-color:var(--color-primary)}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:bg-white\/\[0\.03\]:hover{background-color:#ffffff08}.hover\:bg-yellow-300:hover{--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity,1))}.hover\:bg-yellow-400:hover{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity,1))}.hover\:text-black:hover{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.hover\:text-danger:hover{color:var(--color-danger)}.hover\:text-primary:hover{color:var(--color-primary)}.hover\:text-textMain:hover{color:var(--color-text-main)}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.hover\:text-yellow-400:hover{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-\[0_0_15px_rgba\(59\,130\,246\,0\.4\)\]:hover{--tw-shadow:0 0 15px #3b82f666;--tw-shadow-colored:0 0 15px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.focus\:border-danger:focus{border-color:var(--color-danger)}.focus\:border-primary:focus{border-color:var(--color-primary)}.focus\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.group:hover .group-hover\:text-primary{color:var(--color-primary)}.group:hover .group-hover\:text-textMain{color:var(--color-text-main)}.group:hover .group-hover\:opacity-100{opacity:1}.dark\:bg-white\/\[0\.02\]:is(.dark *){background-color:#ffffff05}.dark\:bg-yellow-400\/5:is(.dark *){background-color:#facc150d}.dark\:text-yellow-200\/90:is(.dark *){color:#fef08ae6}.dark\:text-yellow-400:is(.dark *){--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.dark\:hover\:bg-white\/10:hover:is(.dark *){background-color:#ffffff1a}.dark\:hover\:bg-white\/5:hover:is(.dark *){background-color:#ffffff0d}.dark\:hover\:bg-white\/\[0\.02\]:hover:is(.dark *){background-color:#ffffff05}.dark\:hover\:bg-white\/\[0\.04\]:hover:is(.dark *){background-color:#ffffff0a}@media (width>=640px){.sm\:w-auto{width:auto}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}}@media (width>=768px){.md\:flex{display:flex}.md\:hidden{display:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:p-8{padding:2rem}}@media (width>=1024px){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:h-auto{height:auto}.lg\:w-1\/3{width:33.3333%}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}}.toast-enter-active[data-v-b945a2f9],.toast-leave-active[data-v-b945a2f9]{transition:all .25s}.toast-enter-from[data-v-b945a2f9],.toast-leave-to[data-v-b945a2f9]{opacity:0;transform:translate(20px)}.toast-move[data-v-b945a2f9]{transition:transform .25s}
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-CE-ry2oA.js";var t=e(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-CE-ry2oA.js";var t=e(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-CE-ry2oA.js";var t=e(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-CE-ry2oA.js";var t=e(`archive-x`,[[`rect`,{width:`20`,height:`5`,x:`2`,y:`3`,rx:`1`,key:`1wp1u1`}],[`path`,{d:`M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8`,key:`1s80jp`}],[`path`,{d:`m9.5 17 5-5`,key:`nakeu6`}],[`path`,{d:`m9.5 12 5 5`,key:`1hccrj`}]]),n=e(`check-check`,[[`path`,{d:`M18 6 7 17l-5-5`,key:`116fxf`}],[`path`,{d:`m22 10-7.5 7.5L13 16`,key:`ke71qq`}]]),r=e(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]);export{n,t as r,r as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-CE-ry2oA.js";var t=e(`key`,[[`path`,{d:`m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4`,key:`g0fldk`}],[`path`,{d:`m21 2-9.6 9.6`,key:`1j0ho8`}],[`circle`,{cx:`7.5`,cy:`15.5`,r:`5.5`,key:`yqb3hr`}]]),n=e(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]);export{t as n,n as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-CE-ry2oA.js";var t=e(`scroll-text`,[[`path`,{d:`M15 12h-5`,key:`r7krc0`}],[`path`,{d:`M15 8h-5`,key:`1khuty`}],[`path`,{d:`M19 17V5a2 2 0 0 0-2-2H4`,key:`zz82l3`}],[`path`,{d:`M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3`,key:`1ph1d7`}]]);export{t};
@@ -1 +1 @@
1
- import{t as e}from"./createLucideIcon-Cgv1AIRL.js";var t=e(`server`,[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`,key:`ngkwjq`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`,key:`iecqi9`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`,key:`16zg32`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`,key:`nzw8ys`}]]);export{t};
1
+ import{t as e}from"./createLucideIcon-CE-ry2oA.js";var t=e(`server`,[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`,key:`ngkwjq`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`,key:`iecqi9`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`,key:`16zg32`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`,key:`nzw8ys`}]]);export{t};
@@ -1 +1 @@
1
- import{t as e}from"./createLucideIcon-Cgv1AIRL.js";var t=e(`square-terminal`,[[`path`,{d:`m7 11 2-2-2-2`,key:`1lz0vl`}],[`path`,{d:`M11 13h4`,key:`1p7l4v`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}]]);export{t};
1
+ import{t as e}from"./createLucideIcon-CE-ry2oA.js";var t=e(`square-terminal`,[[`path`,{d:`m7 11 2-2-2-2`,key:`1lz0vl`}],[`path`,{d:`M11 13h4`,key:`1p7l4v`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-CE-ry2oA.js";var t=e(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),n=e(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),r=e(`settings`,[[`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`}]]),i=e(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]);export{t as i,r as n,n as r,i as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-CE-ry2oA.js";var t=e(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]);export{t};
@@ -5,9 +5,9 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>Kite Deploy Admin</title>
8
- <script type="module" crossorigin src="/assets/index-eyx6wNyQ.js"></script>
9
- <link rel="modulepreload" crossorigin href="/assets/project-BFuaDcvV.js">
10
- <link rel="stylesheet" crossorigin href="/assets/index-C9LiRc31.css">
8
+ <script type="module" crossorigin src="/assets/index-BFE6PEIL.js"></script>
9
+ <link rel="modulepreload" crossorigin href="/assets/createLucideIcon-CE-ry2oA.js">
10
+ <link rel="stylesheet" crossorigin href="/assets/index-XrzJwjrk.css">
11
11
  </head>
12
12
  <body>
13
13
  <div id="app"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kitecd/cli",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "kite": "./bin/kite.js"
@@ -15,7 +15,7 @@
15
15
  "scripts": {
16
16
  "build": "tsc && rm -rf dist/web && mkdir -p dist/web && cp -R ../../apps/web/dist/. dist/web/",
17
17
  "dev": "tsc -w",
18
- "release": "bumpp --execute='sh -c \"changelogen --output ../../CHANGELOG.md && git add ../../CHANGELOG.md && cd ../.. && bun run build\"' --tag --push"
18
+ "release": "bumpp package.json ../../apps/web/package.json ../../apps/server/package.json --execute='sh -c \"changelogen --output ../../CHANGELOG.md && git add ../../CHANGELOG.md && cd ../.. && bun run build\"' --tag --push"
19
19
  },
20
20
  "dependencies": {
21
21
  "adm-zip": "^0.5.17",
@@ -1 +0,0 @@
1
- import{C as e,D as t,F as n,T as r,_ as i,c as a,d as o,et as s,f as c,h as l,l as u,nt as d,o as f,t as p,u as m,x as h}from"./project-BFuaDcvV.js";import{t as g}from"./activity-DItEGOtI.js";import{t as _}from"./circle-alert-Bfrn_ovD.js";import{t as v}from"./clock-BPXGSCIV.js";import{t as y}from"./server-C33taHNn.js";import{t as b}from"./constants-iI5LEC2F.js";var x={class:`space-y-6 max-w-7xl mx-auto`},S={class:`flex justify-between items-center mb-8`},C={class:`text-sm text-textMuted bg-panel px-3 py-1 rounded-full border border-border`},w={class:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6`},T={class:`ml-4`},E={class:`text-sm font-medium text-textMuted`},D={class:`text-3xl font-bold text-textMain mt-1 font-mono`},O={class:`mt-8`},k={class:`bg-panel border border-border rounded-xl overflow-hidden shadow-sm`},A={class:`divide-y divide-border`},j={key:0,class:`px-6 py-8 text-center text-textMuted`},M={class:`flex items-center space-x-4`},N={class:`text-sm font-medium text-textMain`},P={class:`font-mono text-primary ml-1`},F={class:`text-xs text-textMuted mt-1`},I={class:`text-right`},L={class:`text-sm text-textMuted font-mono`},R=i({__name:`Dashboard`,setup(i){let R=p();h(()=>{R.fetchProjects(),R.fetchLogs()});let z=a(()=>R.logs.slice(0,5)),B=a(()=>[{label:`总计项目数`,value:R.projects.length,icon:y,color:`text-primary`},{label:`成功部署`,value:R.logs.filter(e=>e.status===`success`).length,icon:g,color:`text-success`},{label:`失败任务`,value:R.logs.filter(e=>e.status===`failed`).length,icon:_,color:`text-danger`},{label:`平均耗时`,value:`-`,icon:v,color:`text-blue-400`}]);return(i,a)=>(e(),c(`div`,x,[u(`div`,S,[a[0]||=u(`h1`,{class:`text-2xl font-bold text-textMain tracking-tight`},`Kite 概览`,-1),u(`div`,C,` 当前版本:v`+d(n(b)),1)]),u(`div`,w,[(e(!0),c(f,null,r(B.value,n=>(e(),c(`div`,{key:n.label,class:`bg-panel border border-border rounded-xl p-6 flex items-center shadow-sm hover:border-primary/50 transition-colors`},[u(`div`,{class:s([`w-12 h-12 rounded-lg bg-base flex items-center justify-center border border-border`,n.color])},[(e(),m(t(n.icon),{class:`w-6 h-6`}))],2),u(`div`,T,[u(`p`,E,d(n.label),1),u(`p`,D,d(n.value),1)])]))),128))]),u(`div`,O,[a[1]||=u(`h2`,{class:`text-lg font-semibold text-textMain mb-4`},`最近部署活动`,-1),u(`div`,k,[u(`ul`,A,[z.value.length===0?(e(),c(`li`,j,`暂无部署活动`)):o(``,!0),(e(!0),c(f,null,r(z.value,t=>(e(),c(`li`,{key:t.id,class:`px-6 py-4 flex items-center justify-between dark:hover:bg-white/5 hover:bg-black/5 transition-colors cursor-pointer`},[u(`div`,M,[u(`div`,{class:s([`w-2 h-2 rounded-full shadow-[0_0_8px_currentColor]`,t.status===`success`?`bg-success text-success`:t.status===`failed`?`bg-danger text-danger`:`bg-primary text-primary`])},null,2),u(`div`,null,[u(`p`,N,[l(`部署`+d(t.status===`success`?`完成`:t.status===`failed`?`失败`:`中`)+`: `,1),u(`span`,P,d(t.projectName),1)]),u(`p`,F,`触发源: `+d(t.triggerSource),1)])]),u(`div`,I,[u(`p`,L,d(new Date(t.startTime).toLocaleString()),1),u(`p`,{class:s([`text-xs mt-1`,t.status===`success`?`text-success`:`text-danger`])},d(t.duration||`-`),3)])]))),128))])])])]))}});export{R as default};
@@ -1 +0,0 @@
1
- .fade-enter-active[data-v-a9b15df0],.fade-leave-active[data-v-a9b15df0]{transition:opacity .2s,transform .2s}.fade-enter-from[data-v-a9b15df0],.fade-leave-to[data-v-a9b15df0]{opacity:0;transform:translateY(10px)}
@@ -1 +0,0 @@
1
- import{C as e,D as t,E as n,F as r,T as i,_ as a,et as o,f as s,g as c,h as l,k as u,l as d,nt as f,o as p,t as m,u as h}from"./project-BFuaDcvV.js";import{a as g,i as _,r as v,t as y}from"./index-eyx6wNyQ.js";import{t as b}from"./createLucideIcon-Cgv1AIRL.js";import{t as x}from"./settings-CrCWmNyB.js";import{t as S}from"./square-terminal-C8toRwjx.js";import{t as C}from"./constants-iI5LEC2F.js";var w=b(`folder-archive`,[[`circle`,{cx:`15`,cy:`19`,r:`2`,key:`u2pros`}],[`path`,{d:`M20.9 19.8A2 2 0 0 0 22 18V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2h5.1`,key:`1jj40k`}],[`path`,{d:`M15 11v-1`,key:`cntcp`}],[`path`,{d:`M15 17v-2`,key:`1279jj`}]]),T=b(`layout-dashboard`,[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]),E=b(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),D=`data:image/svg+xml,%3csvg%20width='32'%20height='32'%20viewBox='0%200%2032%2032'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20width='32'%20height='32'%20rx='8'%20fill='%2309090B'/%3e%3cpath%20d='M7%2022L16%205L25%2022L16%2018L7%2022Z'%20fill='%233B82F6'/%3e%3cpath%20d='M16%2018L12%2027L16%2024L20%2027L16%2018Z'%20fill='%2310B981'/%3e%3c/svg%3e`,O={class:`min-h-screen bg-base flex`},k={class:`w-64 border-r border-border bg-panel flex flex-col hidden md:flex`},A={class:`h-16 flex items-center px-6 border-b border-border`},j=[`src`],M={class:`ml-2 text-xs bg-primary/20 text-primary px-2 py-0.5 rounded-full`},N={class:`flex-1 py-6 px-3 space-y-1`},P={class:`font-medium text-sm`},F={class:`p-4 border-t border-border space-y-1`},I={class:`flex-1 flex flex-col h-screen overflow-hidden`},L={class:`h-16 border-b border-border bg-panel flex items-center px-4 md:hidden`},R=[`src`],z={class:`flex-1 overflow-auto p-6 md:p-8`},B=y(a({__name:`DefaultLayout`,setup(a){let y=v(),b=_(),B=m(),V=[{name:`概览`,path:`/`,icon:T},{name:`项目管理`,path:`/projects`,icon:w},{name:`部署日志`,path:`/logs`,icon:S}],H=()=>{B.logout(),b.push(`/login`)};return(a,m)=>{let _=n(`router-link`),v=n(`router-view`);return e(),s(`div`,O,[d(`aside`,k,[d(`div`,A,[d(`img`,{src:r(D),alt:`Kite Logo`,class:`w-6 h-6 mr-2`},null,8,j),m[0]||=d(`span`,{class:`text-lg font-bold text-textMain tracking-wide`},`KITE`,-1),d(`span`,M,`v`+f(r(C)),1)]),d(`nav`,N,[(e(),s(p,null,i(V,n=>c(_,{key:n.path,to:n.path,class:o([`flex items-center px-3 py-2.5 rounded-md transition-all duration-200 group`,[r(y).path===n.path||n.path!==`/`&&r(y).path.startsWith(n.path)?`bg-primary/10 text-primary shadow-[inset_2px_0_0_0_#3b82f6]`:`text-textMuted dark:hover:bg-white/5 hover:bg-black/5 hover:text-textMain`]])},{default:u(()=>[(e(),h(t(n.icon),{class:o([`w-5 h-5 mr-3`,r(y).path===n.path||n.path!==`/`&&r(y).path.startsWith(n.path)?`text-primary`:`text-textMuted group-hover:text-textMain`])},null,8,[`class`])),d(`span`,P,f(n.name),1)]),_:2},1032,[`to`,`class`])),64))]),d(`div`,F,[c(_,{to:`/settings`,class:o([`flex items-center w-full px-3 py-2 text-sm rounded-md transition-colors`,r(y).path===`/settings`?`bg-primary/10 text-primary shadow-[inset_2px_0_0_0_#3b82f6]`:`text-textMuted hover:text-textMain dark:hover:bg-white/5 hover:bg-black/5`])},{default:u(()=>[c(r(x),{class:o([`w-5 h-5 mr-3`,r(y).path===`/settings`?`text-primary`:`text-textMuted`])},null,8,[`class`]),m[1]||=l(` 系统设置 `,-1)]),_:1},8,[`class`]),d(`button`,{onClick:H,class:`flex items-center w-full px-3 py-2 text-sm text-danger hover:bg-danger/10 rounded-md transition-colors`},[c(r(E),{class:`w-5 h-5 mr-3`}),m[2]||=l(` 退出登录 `,-1)])])]),d(`main`,I,[d(`header`,L,[d(`img`,{src:r(D),alt:`Kite Logo`,class:`w-6 h-6 mr-2`},null,8,R),m[3]||=d(`span`,{class:`text-lg font-bold text-textMain`},`KITE`,-1)]),d(`div`,z,[c(v,null,{default:u(({Component:n})=>[c(g,{name:`fade`,mode:`out-in`},{default:u(()=>[(e(),h(t(n)))]),_:2},1024)]),_:1})])])])}}}),[[`__scopeId`,`data-v-a9b15df0`]]);export{B as default};
@@ -1 +0,0 @@
1
- import{C as e,D as t,E as n,F as r,M as i,T as a,_ as o,c as s,d as c,et as l,f as u,g as d,h as f,l as p,nt as m,o as h,t as g,tt as _,u as v,x as y}from"./project-BFuaDcvV.js";import{i as b,r as x}from"./index-eyx6wNyQ.js";import{t as S}from"./createLucideIcon-Cgv1AIRL.js";import{n as ee,t as C}from"./folder-open-jX-_Q7bA.js";var w=S(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),T=S(`file-braces`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1`,key:`1oajmo`}],[`path`,{d:`M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1`,key:`mpwhp6`}]]),E=S(`file-code`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 12.5 8 15l2 2.5`,key:`1tg20x`}],[`path`,{d:`m14 12.5 2 2.5-2 2.5`,key:`yinavb`}]]),D=S(`file-cog`,[[`path`,{d:`M15 8a1 1 0 0 1-1-1V2a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8z`,key:`1ckgky`}],[`path`,{d:`M20 8v12a2 2 0 0 1-2 2h-4.182`,key:`1726p0`}],[`path`,{d:`m3.305 19.53.923-.382`,key:`ao1pio`}],[`path`,{d:`M4 10.592V4a2 2 0 0 1 2-2h8`,key:`1foop0`}],[`path`,{d:`m4.228 16.852-.924-.383`,key:`1fv9zy`}],[`path`,{d:`m5.852 15.228-.383-.923`,key:`1a9hc2`}],[`path`,{d:`m5.852 20.772-.383.924`,key:`1sh9ke`}],[`path`,{d:`m8.148 15.228.383-.923`,key:`4yu6lf`}],[`path`,{d:`m8.53 21.696-.382-.924`,key:`18b0s9`}],[`path`,{d:`m9.773 16.852.922-.383`,key:`ti6xop`}],[`path`,{d:`m9.773 19.148.922.383`,key:`rws47d`}],[`circle`,{cx:`7`,cy:`18`,r:`3`,key:`lvkj7j`}]]),O=S(`file-image`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`circle`,{cx:`10`,cy:`12`,r:`2`,key:`737tya`}],[`path`,{d:`m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22`,key:`wt3hpn`}]]),k=S(`file-text`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]),A=S(`file`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}]]),j=S(`folder`,[[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),te=S(`house`,[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]]),M=S(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),N={key:1,class:`w-3.5 mr-1`},P={class:`truncate`},F={key:0},I=o({__name:`FileTreeNode`,props:{node:{},depth:{},selectedFile:{}},emits:[`toggle`,`select`],setup(i,{emit:o}){let s=o;function g(e,t,n){if(t)return n?C:j;let r=e.split(`.`).pop()?.toLowerCase()||``;return[`json`,`jsonc`].includes(r)?T:[`js`,`ts`,`jsx`,`tsx`,`vue`,`svelte`,`py`,`rb`,`go`,`rs`,`java`,`c`,`cpp`,`h`].includes(r)?E:[`png`,`jpg`,`jpeg`,`gif`,`svg`,`webp`,`ico`].includes(r)?O:[`yml`,`yaml`,`toml`,`ini`,`cfg`,`conf`,`env`].includes(r)?D:k}return(o,y)=>{let b=n(`FileTreeNode`,!0);return e(),u(`div`,null,[p(`button`,{class:l([`w-full flex items-center py-1.5 text-sm hover:bg-primary/5 transition-colors`,i.selectedFile===i.node.path&&!i.node.isDir?`bg-primary/10 text-primary`:`text-textMain`]),style:_({paddingLeft:i.depth*16+12+`px`}),onClick:y[0]||=e=>i.node.isDir?s(`toggle`,i.node):s(`select`,i.node)},[i.node.isDir?(e(),v(r(w),{key:0,class:l([`w-3.5 h-3.5 mr-1 shrink-0 transition-transform`,i.node.expanded?`rotate-90`:``])},null,8,[`class`])):(e(),u(`span`,N)),(e(),v(t(g(i.node.name,i.node.isDir,i.node.expanded)),{class:l([`w-4 h-4 mr-1.5 shrink-0`,i.node.isDir?`text-primary/70`:`text-textMuted`])},null,8,[`class`])),p(`span`,P,m(i.node.name),1)],6),i.node.isDir&&i.node.expanded?(e(),u(`div`,F,[i.node.loading?(e(),u(`div`,{key:0,class:`py-1 text-textMuted text-xs flex items-center`,style:_({paddingLeft:i.depth*16+28+`px`})},[d(r(M),{class:`w-3 h-3 animate-spin mr-1`}),y[3]||=f(` 加载中... `,-1)],4)):i.node.children?(e(!0),u(h,{key:1},a(i.node.children,t=>(e(),v(b,{key:t.path,node:t,depth:i.depth+1,"selected-file":i.selectedFile,onToggle:y[1]||=e=>s(`toggle`,e),onSelect:y[2]||=e=>s(`select`,e)},null,8,[`node`,`depth`,`selected-file`]))),128)):c(``,!0)])):c(``,!0)])}}}),L={class:`h-[calc(100vh-4rem)] flex flex-col`},R={class:`flex items-center space-x-4 mb-4`},z={class:`text-xl font-bold text-textMain tracking-tight`},B={class:`flex-1 flex border border-border rounded-xl overflow-hidden bg-panel min-h-0`},V={class:`w-64 border-r border-border overflow-auto bg-base/50 shrink-0`},H={key:0,class:`flex items-center justify-center py-8 text-textMuted`},U={key:1,class:`py-8 text-center text-textMuted text-sm`},W={key:2,class:`py-2`},G={class:`flex-1 flex flex-col min-w-0`},K={key:0,class:`flex items-center px-4 py-2 border-b border-border text-sm bg-base/30`},q={class:`flex-1 overflow-auto`},J={key:0,class:`h-full flex items-center justify-center text-textMuted`},Y={class:`text-center`},X={key:1,class:`h-full flex items-center justify-center text-textMuted`},Z={key:2,class:`h-full flex items-center justify-center text-textMuted`},ne={class:`text-center`},re={key:0,class:`text-xs mt-1`},ie={key:3,class:`p-4 text-sm font-mono text-textMain leading-relaxed whitespace-pre-wrap break-all overflow-x-auto`},Q=o({__name:`FileExplorer`,setup(t){let n=x(),o=b(),_=g(),S=n.params.id,C=s(()=>_.getProjectById(S)),T=i([]),E=i(``),D=i(null),O=i(!1),k=i(!0);y(async()=>{if(await _.fetchProjects(),!C.value){o.replace(`/projects`);return}await j(``)});async function j(e){k.value=!0,T.value=(await _.fetchFiles(S,e)).map(e=>({...e,expanded:!1,children:void 0,loading:!1})),k.value=!1}async function N(e){if(e.isDir){if(e.expanded){e.expanded=!1;return}e.expanded=!0,e.children||(e.loading=!0,e.children=(await _.fetchFiles(S,e.path)).map(e=>({...e,expanded:!1,children:void 0,loading:!1})),e.loading=!1)}}async function P(e){e.isDir||(E.value=e.path,O.value=!0,D.value=null,D.value=await _.fetchFileContent(S,e.path),O.value=!1)}function F(e){return e<1024?e+` B`:e<1024*1024?(e/1024).toFixed(1)+` KB`:(e/(1024*1024)).toFixed(1)+` MB`}function Q(e){return e?e.split(`/`).map((e,t,n)=>({name:e,path:n.slice(0,t+1).join(`/`)})):[]}let $=s(()=>Q(E.value));return(t,n)=>(e(),u(`div`,L,[p(`div`,R,[p(`button`,{onClick:n[0]||=e=>r(o).push(`/projects/${r(S)}`),class:`p-2 dark:hover:bg-white/10 hover:bg-black/10 rounded-full transition-colors text-textMuted hover:text-textMain`},[d(r(ee),{class:`w-5 h-5`})]),p(`div`,null,[p(`h1`,z,[f(m(C.value?.name||`项目`)+` `,1),n[1]||=p(`span`,{class:`text-textMuted font-normal`},`/ 文件浏览`,-1)])])]),p(`div`,B,[p(`aside`,V,[k.value?(e(),u(`div`,H,[d(r(M),{class:`w-5 h-5 animate-spin mr-2`}),n[2]||=p(`span`,{class:`text-sm`},`加载中...`,-1)])):T.value.length===0?(e(),u(`div`,U,` 暂无文件 `)):(e(),u(`div`,W,[(e(!0),u(h,null,a(T.value,t=>(e(),v(I,{key:t.path,node:t,depth:0,"selected-file":E.value,onToggle:N,onSelect:P},null,8,[`node`,`selected-file`]))),128))]))]),p(`div`,G,[E.value?(e(),u(`div`,K,[d(r(te),{class:`w-3.5 h-3.5 text-textMuted mr-1`}),(e(!0),u(h,null,a($.value,(t,n)=>(e(),u(`span`,{key:t.path,class:`flex items-center`},[d(r(w),{class:`w-3 h-3 text-textMuted mx-1`}),p(`span`,{class:l(n===$.value.length-1?`text-textMain font-medium`:`text-textMuted`)},m(t.name),3)]))),128))])):c(``,!0),p(`div`,q,[E.value?O.value?(e(),u(`div`,X,[d(r(M),{class:`w-6 h-6 animate-spin`})])):D.value?.type===`binary`?(e(),u(`div`,Z,[p(`div`,ne,[d(r(A),{class:`w-12 h-12 mx-auto mb-3 opacity-30`}),n[4]||=p(`p`,{class:`text-sm`},`二进制文件,无法预览`,-1),D.value.size?(e(),u(`p`,re,`大小: `+m(F(D.value.size)),1)):c(``,!0)])])):D.value?.type===`text`?(e(),u(`pre`,ie,[p(`code`,null,m(D.value.content),1)])):c(``,!0):(e(),u(`div`,J,[p(`div`,Y,[d(r(A),{class:`w-12 h-12 mx-auto mb-3 opacity-30`}),n[3]||=p(`p`,{class:`text-sm`},`选择左侧文件查看内容`,-1)])]))])])])]))}});export{Q as default};
@@ -1,6 +0,0 @@
1
- import{C as e,F as t,M as n,O as r,S as i,T as a,_ as o,c as s,d as c,et as l,f as u,g as d,h as f,l as p,nt as m,o as h,t as g,u as _,x as v}from"./project-BFuaDcvV.js";import{t as y}from"./index-eyx6wNyQ.js";import{t as b}from"./createLucideIcon-Cgv1AIRL.js";import{t as x}from"./circle-alert-Bfrn_ovD.js";import{n as S,t as C}from"./refresh-cw-DWmqwQRn.js";import{t as w}from"./clock-BPXGSCIV.js";var ee=b(`circle-x`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),T=b(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),E={30:`#1e1e1e`,31:`#e06c75`,32:`#98c379`,33:`#e5c07b`,34:`#61afef`,35:`#c678dd`,36:`#56b6c2`,37:`#abb2bf`,90:`#5c6370`,91:`#e06c75`,92:`#98c379`,93:`#e5c07b`,94:`#61afef`,95:`#c678dd`,96:`#56b6c2`,97:`#ffffff`},D={40:`#1e1e1e`,41:`#e06c75`,42:`#98c379`,43:`#e5c07b`,44:`#61afef`,45:`#c678dd`,46:`#56b6c2`,47:`#abb2bf`},O=/\x1b\[([0-9;]*)m/g;function k(e){let t=``,n=0,r=0;e=e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`);let i;for(O.lastIndex=0;(i=O.exec(e))!==null;){t+=e.slice(r,i.index),r=i.index+i[0].length;let a=i[1].split(`;`).map(Number);if(a.length===0||a.length===1&&a[0]===0){for(;n>0;)t+=`</span>`,n--;continue}for(let e of a)if(e===0)for(;n>0;)t+=`</span>`,n--;else e===1?(t+=`<span style="font-weight:bold">`,n++):e===2?(t+=`<span style="opacity:0.7">`,n++):e===3?(t+=`<span style="font-style:italic">`,n++):e===4?(t+=`<span style="text-decoration:underline">`,n++):E[e]?(t+=`<span style="color:${E[e]}">`,n++):D[e]&&(t+=`<span style="background-color:${D[e]}">`,n++)}for(t+=e.slice(r);n>0;)t+=`</span>`,n--;return t}function A(e,t){let a=n([]),o=n(``),s=null,c=!1;async function l(e){u(),a.value=[],o.value=``,c=!1,s=new AbortController;try{let n=await fetch(`/api/logs/${e}/stream`,{headers:{Authorization:`Bearer ${t.value}`},signal:s.signal});if(!n.ok||!n.body)return;let r=n.body.getReader(),i=new TextDecoder,l=``;for(;;){let{done:e,value:t}=await r.read();if(e)break;l+=i.decode(t,{stream:!0});let n=l.split(`
2
-
3
- `);l=n.pop();for(let e of n){if(!e.trim())continue;let t=`message`,n=``;for(let r of e.split(`
4
- `))r.startsWith(`event: `)?t=r.slice(7):r.startsWith(`data: `)&&(n=r.slice(6));if(t===`log`){let e=JSON.parse(n);c?a.value.push(e):(a.value=e.split(`
5
- `),c=!0)}else if(t===`status`){o.value=JSON.parse(n).status,u();return}}}}catch(e){e.name!==`AbortError`&&console.error(`SSE connection error:`,e)}}function u(){s&&=(s.abort(),null)}return r(e,e=>{e?l(e):u()}),i(u),{lines:a,status:o,disconnect:u}}var j={class:`h-full flex flex-col space-y-6 max-w-7xl mx-auto`},M={class:`flex justify-between items-center shrink-0`},N={class:`flex-1 flex flex-col lg:flex-row gap-6 min-h-0`},P={class:`w-full lg:w-1/3 bg-panel border border-border rounded-xl shadow-sm overflow-hidden flex flex-col h-[400px] lg:h-auto`},F={class:`flex-1 overflow-y-auto p-2 space-y-1`},I=[`onClick`],L={class:`mt-0.5`},R={class:`flex-1 min-w-0`},z={class:`flex justify-between items-center mb-1`},te={class:`font-medium text-textMain text-sm truncate`},B={class:`text-xs text-textMuted font-mono shrink-0`},V={class:`flex items-center text-xs text-textMuted space-x-3`},H={class:`flex items-center`},U={class:`flex items-center`},W={class:`flex-1 bg-[#09090b] border border-border rounded-xl shadow-sm flex flex-col overflow-hidden h-[500px] lg:h-auto font-mono text-sm`},G={class:`h-10 bg-panel border-b border-border flex items-center px-4 shrink-0`},K={class:`flex-1 text-center text-textMuted text-xs font-sans truncate`},q={class:`flex-1 p-4 overflow-y-auto bg-[#09090b] text-[#f4f4f5] leading-relaxed selection:bg-primary/30`},J={key:0,class:`space-y-1 whitespace-pre-wrap break-all`},Y={class:`w-8 text-right mr-4 text-textMuted/30 select-none group-hover:text-textMuted/50 transition-colors`},X=[`innerHTML`],Z={key:0,class:`flex px-2 -mx-2 mt-2`},Q={class:`w-8 text-right mr-4 text-textMuted/30 select-none`},ne={key:1,class:`h-full flex flex-col items-center justify-center text-textMuted font-sans`},$=y(o({__name:`LogBoard`,setup(i){let o=g();v(()=>{o.fetchLogs()});let y=s(()=>o.logs),b=n(null),E=s(()=>b.value?.status===`running`),{lines:D,status:O}=A(s(()=>E.value?b.value?.id:null),s(()=>o.adminToken));r(O,e=>{e&&o.fetchLogs().then(()=>{if(b.value){let e=o.logs.find(e=>e.id===b.value.id);e&&(b.value=e)}})});let $=s(()=>E.value&&D.value.length>0?D.value:b.value?.output?.split(`
6
- `)||[]),re=e=>{b.value=e},ie=async()=>{await o.fetchLogs(),b.value&&=y.value.find(e=>e.id===b.value.id)||null};function ae(e){return k(e)}return(n,r)=>(e(),u(`div`,j,[p(`div`,M,[r[1]||=p(`div`,null,[p(`h1`,{class:`text-2xl font-bold text-textMain tracking-tight`},`部署日志`),p(`p`,{class:`text-textMuted text-sm mt-1`},`实时查看所有项目的自动化部署过程及终端输出`)],-1),p(`button`,{onClick:ie,class:`flex items-center px-4 py-2 bg-panel dark:hover:bg-white/5 hover:bg-black/5 border border-border text-textMain rounded-md transition-colors text-sm font-medium shadow-sm`},[d(t(C),{class:`w-4 h-4 mr-2`}),r[0]||=f(` 刷新 `,-1)])]),p(`div`,N,[p(`div`,P,[r[2]||=p(`div`,{class:`p-4 border-b border-border bg-base/50 shrink-0`},[p(`input`,{type:`text`,placeholder:`搜索项目或记录 ID...`,class:`w-full bg-base border border-border rounded-md px-3 py-2 text-sm text-textMain focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary/50 transition-all`})],-1),p(`div`,F,[(e(!0),u(h,null,a(y.value,n=>(e(),u(`div`,{key:n.id,onClick:e=>re(n),class:l([`p-3 rounded-lg cursor-pointer transition-all border border-transparent flex items-start space-x-3`,b.value?.id===n.id?`bg-primary/10 border-primary/20 shadow-[inset_2px_0_0_0_#3b82f6]`:`dark:hover:bg-white/5 hover:bg-black/5`])},[p(`div`,L,[n.status===`success`?(e(),_(t(S),{key:0,class:`w-5 h-5 text-success`})):n.status===`failed`?(e(),_(t(ee),{key:1,class:`w-5 h-5 text-danger`})):(e(),_(t(C),{key:2,class:`w-5 h-5 text-primary animate-spin`}))]),p(`div`,R,[p(`div`,z,[p(`span`,te,m(n.projectName),1),p(`span`,B,m(new Date(n.startTime).toLocaleString()),1)]),p(`div`,V,[p(`span`,H,[d(t(T),{class:`w-3 h-3 mr-1`}),f(` `+m(n.triggerSource),1)]),p(`span`,U,[d(t(w),{class:`w-3 h-3 mr-1`}),f(` `+m(n.duration),1)])])])],10,I))),128))])]),p(`div`,W,[p(`div`,G,[r[3]||=p(`div`,{class:`flex space-x-2 mr-4`},[p(`div`,{class:`w-3 h-3 rounded-full bg-danger/80`}),p(`div`,{class:`w-3 h-3 rounded-full bg-yellow-500/80`}),p(`div`,{class:`w-3 h-3 rounded-full bg-success/80`})],-1),p(`div`,K,[b.value?(e(),u(h,{key:0},[f(`bash - `+m(b.value.projectName)+` (`+m(b.value.id)+`)`,1)],64)):(e(),u(h,{key:1},[f(`等待选择...`)],64))])]),p(`div`,q,[b.value?(e(),u(`div`,J,[(e(!0),u(h,null,a($.value,(t,n)=>(e(),u(`div`,{key:n,class:`flex dark:hover:bg-white/5 hover:bg-black/5 px-2 -mx-2 rounded transition-colors group`},[p(`span`,Y,m(Number(n)+1),1),p(`span`,{innerHTML:ae(t)},null,8,X)]))),128)),b.value.status===`running`?(e(),u(`div`,Z,[p(`span`,Q,m($.value.length+1),1),r[4]||=p(`span`,{class:`w-2 h-4 bg-textMain animate-pulse inline-block align-middle`},null,-1)])):c(``,!0)])):(e(),u(`div`,ne,[d(t(x),{class:`w-12 h-12 mb-4 opacity-50`}),r[5]||=p(`p`,null,`请选择左侧部署记录以查看详细终端输出`,-1)]))])])])]))}}),[[`__scopeId`,`data-v-48133efa`]]);export{$ as default};
@@ -1 +0,0 @@
1
- .overflow-y-auto[data-v-48133efa]::-webkit-scrollbar{width:10px}.overflow-y-auto[data-v-48133efa]::-webkit-scrollbar-track{background:#09090b}.overflow-y-auto[data-v-48133efa]::-webkit-scrollbar-thumb{background:#27272a;border:2px solid #09090b;border-radius:5px}.overflow-y-auto[data-v-48133efa]::-webkit-scrollbar-thumb:hover{background:#3f3f46}
@@ -1 +0,0 @@
1
- import{A as e,C as t,F as n,M as r,_ as i,d as a,et as o,f as s,g as c,h as l,l as u,nt as d,t as f,u as p,x as m}from"./project-BFuaDcvV.js";import{c as h,i as g,s as _}from"./index-eyx6wNyQ.js";import{t as v}from"./createLucideIcon-Cgv1AIRL.js";var y=v(`log-in`,[[`path`,{d:`m10 17 5-5-5-5`,key:`1bsop3`}],[`path`,{d:`M15 12H3`,key:`6jk70r`}],[`path`,{d:`M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4`,key:`u53s6r`}]]),b=v(`rocket`,[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`,key:`u4xsad`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`,key:`676m9`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`,key:`92ym6u`}]]),x={class:`min-h-screen bg-base flex flex-col items-center justify-center p-4`},S={class:`w-full max-w-md`},C={class:`flex flex-col items-center justify-center mb-8`},w={class:`w-16 h-16 bg-primary/10 border border-primary/20 rounded-2xl flex items-center justify-center mb-4 shadow-[0_0_30px_rgba(59,130,246,0.15)]`},T={class:`bg-panel border border-border rounded-2xl p-8 shadow-xl`},E={key:0,class:`text-danger text-xs mt-2 flex items-center`},D=[`disabled`],O={key:1,class:`animate-spin -ml-1 mr-3 h-5 w-5 text-white`,xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`},k=i({__name:`Login`,setup(i){let v=g(),k=f(),A=r(``),j=r(!1),M=r(``);m(()=>{k.adminToken&&v.replace(`/`)});let N=async()=>{if(A.value){j.value=!0,M.value=``;try{await k.login(A.value)?v.replace(`/`):M.value=`Token 校验失败,请检查配置。`}catch(e){M.value=e.message||`登录异常,请稍后重试。`}finally{j.value=!1}}};return(r,i)=>(t(),s(`div`,x,[u(`div`,S,[u(`div`,C,[u(`div`,w,[c(n(b),{class:`w-8 h-8 text-primary`})]),i[1]||=u(`h1`,{class:`text-3xl font-bold text-textMain tracking-tight`},`Kite Deploy`,-1),i[2]||=u(`p`,{class:`text-textMuted text-sm mt-2`},`云原生极简部署管理面板`,-1)]),u(`div`,T,[i[5]||=u(`h2`,{class:`text-lg font-medium text-textMain mb-6`},`管理员登录`,-1),u(`form`,{onSubmit:h(N,[`prevent`]),class:`space-y-5`},[u(`div`,null,[i[3]||=u(`label`,{class:`block text-sm font-medium text-textMuted mb-2`},`Admin Token`,-1),e(u(`input`,{"onUpdate:modelValue":i[0]||=e=>A.value=e,type:`password`,placeholder:`请输入服务端生成的 ADMIN_TOKEN`,class:o([`w-full bg-base border border-border rounded-lg px-4 py-3 text-textMain font-mono text-sm focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary/50 transition-all placeholder:text-textMuted/50 placeholder:font-sans`,{"border-danger focus:border-danger focus:ring-danger/50":M.value}])},null,2),[[_,A.value]]),M.value?(t(),s(`p`,E,d(M.value),1)):a(``,!0)]),u(`button`,{type:`submit`,disabled:!A.value||j.value,class:`w-full flex items-center justify-center px-4 py-3 bg-primary text-white rounded-lg font-medium transition-all hover:bg-primary/90 disabled:opacity-50 disabled:cursor-not-allowed shadow-[0_0_15px_rgba(59,130,246,0.3)]`},[j.value?(t(),s(`svg`,O,[...i[4]||=[u(`circle`,{class:`opacity-25`,cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,"stroke-width":`4`},null,-1),u(`path`,{class:`opacity-75`,fill:`currentColor`,d:`M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z`},null,-1)]])):(t(),p(n(y),{key:0,class:`w-5 h-5 mr-2`})),l(` `+d(j.value?`验证中...`:`进入控制台`),1)],8,D)],32),i[6]||=u(`div`,{class:`mt-6 text-center`},[u(`p`,{class:`text-xs text-textMuted`},[l(` Token 可以在服务端启动目录的 `),u(`code`,{class:`font-mono bg-base px-1 py-0.5 rounded border border-border`},`.env.local`),l(` 文件中找到。 `)])],-1)])])]))}});export{k as default};
@@ -1 +0,0 @@
1
- import{A as e,C as t,E as ee,F as n,M as r,T as te,_ as i,c as a,d as o,et as s,f as c,g as l,h as u,k as ne,l as d,m as re,nt as f,o as ie,t as ae,u as p,x as oe}from"./project-BFuaDcvV.js";import{i as se,r as ce,s as m}from"./index-eyx6wNyQ.js";import{t as h}from"./createLucideIcon-Cgv1AIRL.js";import{n as le,t as ue}from"./folder-open-jX-_Q7bA.js";import{n as de,t as fe}from"./refresh-cw-DWmqwQRn.js";import{n as pe,r as me,t as he}from"./save-BkiMrL9q.js";import{t as g}from"./square-terminal-C8toRwjx.js";var ge=h(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),_e={key:0,class:`max-w-4xl mx-auto space-y-6 pb-12`},ve={class:`flex items-center space-x-4 mb-8`},ye={class:`flex items-center space-x-3`},_={class:`text-2xl font-bold text-textMain tracking-tight`},v={class:`text-sm text-textMuted mt-1 font-mono`},y={class:`grid grid-cols-1 gap-8`},b={class:`bg-panel border border-border rounded-xl shadow-sm overflow-hidden`},x={class:`px-6 py-5 border-b border-border dark:bg-white/[0.02] bg-black/[0.02]`},S={class:`text-lg font-semibold text-textMain flex items-center`},C={class:`p-6`},w={class:`flex flex-col sm:flex-row items-stretch sm:items-center space-y-4 sm:space-y-0 sm:space-x-4`},T={class:`relative flex-1`},E=[`type`,`value`],D={class:`flex items-center space-x-2`},O=[`disabled`],k={class:`bg-panel border border-border rounded-xl shadow-sm overflow-hidden`},A={class:`px-6 py-5 border-b border-border dark:bg-white/[0.02] bg-black/[0.02]`},j={class:`text-lg font-semibold text-textMain flex items-center`},M={class:`p-6 space-y-5`},N={class:`rounded-lg border border-primary/20 bg-primary/5 p-4`},P={class:`flex items-center gap-3`},be={class:`text-xs text-textMuted mt-2`},xe={class:`font-mono text-textMain`},Se={class:`rounded-lg border border-border bg-base p-4`},Ce={class:`flex items-center gap-2`},we={class:`rounded-lg border border-border bg-base p-4`},Te={class:`flex items-center gap-2 mb-4`},Ee={class:`flex-1 text-xs text-success font-mono break-all`},De={class:`text-xs text-textMuted mb-3`},Oe={class:`font-mono text-textMain bg-panel px-1 py-0.5 rounded border border-border`},ke={class:`text-xs text-success font-mono whitespace-pre-wrap overflow-x-auto bg-panel rounded-md p-3 border border-border mb-3`},Ae={class:`space-y-2 text-xs text-textMuted`},je={class:`pl-3 space-y-1`},Me={class:`text-textMuted w-24 shrink-0`},Ne={class:`text-success font-mono`},Pe={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Fe={class:`rounded-lg border border-border bg-base p-4`},Ie={class:`flex items-center gap-2`},Le={class:`flex-1 text-xs text-success font-mono break-all`},Re={class:`rounded-lg border border-border bg-base p-4 space-y-3`},ze={class:`flex items-center gap-2`},Be={class:`flex-1 text-xs text-success font-mono break-all`},Ve={class:`flex items-center gap-2`},He={class:`flex-1 text-xs text-success font-mono break-all`},Ue={class:`bg-panel border border-border rounded-xl shadow-sm overflow-hidden`},We={class:`px-6 py-5 border-b border-border dark:bg-white/[0.02] bg-black/[0.02]`},Ge={class:`text-lg font-semibold text-textMain flex items-center`},Ke={class:`p-6 space-y-6`},qe={class:`relative`},Je={class:`relative`},Ye={class:`pt-4 border-t border-border flex justify-end`},Xe={class:`bg-panel border border-danger/20 rounded-xl shadow-sm overflow-hidden`},Ze={class:`px-6 py-4`},Qe={class:`text-danger font-medium flex items-center`},F=`npm install -g @kitecd/cli`,I=i({__name:`ProjectDetail`,setup(i){let h=ce(),I=se(),L=ae(),R=h.params.id,z=a(()=>L.getProjectById(R)),B=r({destPath:``,preDeploy:``,postDeploy:``}),V=r(!1),H=r(!1),U=r(``),W=r(`http://127.0.0.1:3000`),G=r(``);oe(async()=>{W.value=window.location.origin,await L.fetchProjects(),z.value?(B.value.destPath=z.value.destPath||``,B.value.preDeploy=z.value.preDeploy||``,B.value.postDeploy=z.value.postDeploy||``,G.value=z.value.env||``):I.replace(`/projects`)});let $e=async()=>{await L.updateProject(R,B.value),alert(`配置已保存`)},K=()=>{z.value?.token&&(navigator.clipboard.writeText(z.value.token),H.value=!0,setTimeout(()=>H.value=!1,2e3))},q=(e,t)=>{navigator.clipboard.writeText(t),U.value=e,setTimeout(()=>U.value=``,2e3)},J=a(()=>G.value.trim()?` --env ${G.value.trim()}`:``),Y=a(()=>G.value.trim()?`kite.config.${G.value.trim()}.json`:`kite.config.json`),X=a(()=>`kite init --project ${R}${J.value} --out ./dist --server ${W.value} --token ${z.value?.token||`<DEPLOY_TOKEN>`}`),Z=a(()=>`kite push${J.value}`),Q=a(()=>`kite push --server ${W.value} --project ${R}${J.value} --out ./dist`),$=a(()=>`kite push --server ${W.value} --project ${R} --token ${z.value?.token||`<DEPLOY_TOKEN>`}${J.value} --out ./dist`),et=a(()=>JSON.stringify({projectId:R,outputDir:`./dist`,files:[`**/*`],postDeploy:z.value?.postDeploy||`pm2 restart your-service`},null,2)),tt=[{label:`打包所有文件`,files:[`**/*`]},{label:`只上传 dist 目录`,files:[`dist/**/*`]},{label:`指定多个目录`,files:[`dist/**/*`,`public/**/*`]},{label:`单个文件`,files:[`index.html`]},{label:`混合配置`,files:[`dist/**/*`,`server.js`,`config/*.json`]}],nt=async()=>{confirm(`重新生成 Token 将导致旧 Token 立即失效,是否继续?`)&&(await L.generateToken(R),V.value=!0)},rt=async()=>{confirm(`确定要永久删除项目 ${z.value?.name} 吗?此操作不可恢复。`)&&(await L.removeProject(R)?I.replace(`/projects`):alert(`删除失败,请稍后重试`))};return(r,i)=>{let a=ee(`router-link`);return z.value?(t(),c(`div`,_e,[d(`div`,ve,[d(`button`,{onClick:i[0]||=e=>n(I).back(),class:`p-2 dark:hover:bg-white/10 hover:bg-black/10 rounded-full transition-colors text-textMuted hover:text-textMain`},[l(n(le),{class:`w-5 h-5`})]),d(`div`,null,[d(`div`,ye,[d(`h1`,_,f(z.value.name),1),d(`span`,{class:s([`px-2.5 py-0.5 text-xs rounded-md border`,z.value.status===`success`?`bg-success/10 border-success/20 text-success`:`bg-primary/10 border-primary/20 text-primary`])},f(z.value.status),3),l(a,{to:`/projects/${n(R)}/files`,class:`inline-flex items-center px-3 py-1.5 text-xs font-medium bg-base border border-border hover:border-primary/50 hover:text-primary text-textMuted rounded-md transition-all`},{default:ne(()=>[l(n(ue),{class:`w-3.5 h-3.5 mr-1.5`}),i[11]||=u(` 查看文件 `,-1)]),_:1},8,[`to`])]),d(`p`,v,f(z.value.id),1)])]),d(`div`,y,[d(`div`,b,[d(`div`,x,[d(`h2`,S,[l(n(pe),{class:`w-5 h-5 mr-2 text-primary`}),i[12]||=u(` 鉴权 Token 管理 `,-1)]),i[13]||=d(`p`,{class:`text-sm text-textMuted mt-1`},`用于 CLI 或 Webhook 触发自动化部署的专属凭证。`,-1)]),d(`div`,C,[d(`div`,w,[d(`div`,T,[d(`input`,{type:V.value?`text`:`password`,readonly:``,value:z.value.token||`暂无 Token,请生成`,class:s([`w-full bg-base border border-border rounded-md pl-4 pr-12 py-3 text-textMain font-mono text-sm focus:outline-none focus:border-primary/50 transition-colors`,{"opacity-50 blur-[2px] select-none":!V.value&&z.value.token}])},null,10,E),z.value.token?(t(),c(`button`,{key:0,onClick:i[1]||=e=>V.value=!V.value,class:`absolute right-3 top-1/2 -translate-y-1/2 text-textMuted hover:text-textMain text-xs font-medium px-2 py-1 rounded transition-colors`},f(V.value?`隐藏`:`显示`),1)):o(``,!0)]),d(`div`,D,[d(`button`,{onClick:K,disabled:!z.value.token,class:`flex items-center justify-center px-4 py-3 bg-base border border-border hover:border-primary/50 hover:text-primary text-textMain rounded-md transition-all disabled:opacity-50 disabled:cursor-not-allowed w-full sm:w-auto`},[H.value?(t(),p(n(de),{key:0,class:`w-4 h-4 mr-2 text-success`})):(t(),p(n(me),{key:1,class:`w-4 h-4 mr-2`})),u(` `+f(H.value?`已复制`:`复制`),1)],8,O),d(`button`,{onClick:nt,class:`flex items-center justify-center px-4 py-3 bg-primary/10 text-primary border border-primary/20 hover:bg-primary hover:text-white rounded-md transition-all w-full sm:w-auto font-medium shadow-[0_0_10px_rgba(59,130,246,0.1)] hover:shadow-[0_0_15px_rgba(59,130,246,0.4)]`},[l(n(fe),{class:`w-4 h-4 mr-2`}),i[14]||=u(` 重新生成 `,-1)])])]),i[15]||=d(`div`,{class:`mt-4 p-4 rounded-md bg-primary/5 border border-primary/10 text-sm`},[d(`p`,{class:`text-textMuted leading-relaxed`},[d(`strong`,{class:`text-primary font-medium`},`CLI 用法:`),u(` 将此 Token 保存到全局配置后,`),d(`code`,{class:`bg-base px-1 py-0.5 rounded font-mono text-xs text-textMain border border-border`},`kite push`),u(` 时无需再传。 `)])],-1)])]),d(`div`,k,[d(`div`,A,[d(`h2`,j,[l(n(g),{class:`w-5 h-5 mr-2 text-primary`}),i[16]||=u(` CLI 快速部署指引 `,-1)]),i[17]||=d(`p`,{class:`text-sm text-textMuted mt-1`},`三步完成部署:安装 CLI、初始化配置、推送部署。`,-1)]),d(`div`,M,[d(`div`,N,[i[22]||=d(`label`,{class:`block text-sm font-medium text-textMain mb-2`},`部署环境 (可选)`,-1),d(`div`,P,[e(d(`input`,{"onUpdate:modelValue":i[2]||=e=>G.value=e,type:`text`,class:`flex-1 bg-base border border-border rounded-md px-3 py-2 text-textMain font-mono text-sm focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary/50 transition-all`,placeholder:`留空为默认环境,或输入如 test、staging、prod`},null,512),[[m,G.value]])]),d(`p`,be,[i[18]||=u(` 填写后下方所有指令将自动带上 `,-1),i[19]||=d(`code`,{class:`font-mono text-textMain`},`--env`,-1),i[20]||=u(` 参数,生成的配置文件为 `,-1),d(`code`,xe,f(Y.value),1),i[21]||=u(`。 适用于同一项目需要部署到不同环境(测试/预发/生产)的场景。 `,-1)])]),d(`div`,Se,[i[23]||=d(`p`,{class:`text-sm font-medium text-textMain mb-2`},`1. 安装 CLI`,-1),d(`div`,Ce,[d(`code`,{class:`flex-1 text-xs text-success font-mono break-all`},f(F)),d(`button`,{onClick:i[3]||=e=>q(`install`,F),class:`text-xs text-primary hover:text-textMain`},f(U.value===`install`?`已复制`:`复制`),1)])]),d(`div`,we,[i[30]||=d(`p`,{class:`text-sm font-medium text-textMain mb-2`},`2. 初始化项目配置`,-1),d(`div`,Te,[d(`code`,Ee,f(X.value),1),d(`button`,{onClick:i[4]||=e=>q(`init`,X.value),class:`text-xs text-primary hover:text-textMain`},f(U.value===`init`?`已复制`:`复制`),1)]),d(`p`,De,[i[24]||=u(`执行后会在当前目录生成 `,-1),d(`code`,Oe,f(Y.value),1),i[25]||=u(`,请确认生成的配置:`,-1)]),d(`pre`,ke,f(et.value),1),d(`div`,Ae,[i[26]||=d(`p`,null,[d(`code`,{class:`font-mono text-textMain`},`projectId`),u(` — 项目唯一标识,由服务端分配`)],-1),i[27]||=d(`p`,null,[d(`code`,{class:`font-mono text-textMain`},`outputDir`),u(` — 本地打包输出目录,默认 `),d(`code`,{class:`font-mono`},`./dist`)],-1),i[28]||=d(`p`,null,[d(`code`,{class:`font-mono text-textMain`},`files`),u(` — 要打包上传的文件 glob 模式列表,示例:`)],-1),d(`div`,je,[(t(),c(ie,null,te(tt,e=>d(`div`,{key:e.label,class:`flex items-center gap-2`},[d(`span`,Me,f(e.label),1),d(`code`,Ne,`"files": `+f(JSON.stringify(e.files)),1)])),64))]),i[29]||=d(`p`,null,[d(`code`,{class:`font-mono text-textMain`},`postDeploy`),u(` — 服务端解压后执行的命令,如重启服务`)],-1)])]),d(`div`,Pe,[d(`div`,Fe,[i[31]||=d(`p`,{class:`text-sm font-medium text-textMain mb-2`},`3. 部署 — 使用已保存的配置`,-1),d(`div`,Ie,[d(`code`,Le,f(Z.value),1),d(`button`,{onClick:i[5]||=e=>q(`push`,Z.value),class:`text-xs text-primary hover:text-textMain`},f(U.value===`push`?`已复制`:`复制`),1)]),i[32]||=d(`p`,{class:`text-xs text-textMuted mt-2`},[u(`需先通过 `),d(`code`,{class:`font-mono`},`kite config:set token`),u(` 或 `),d(`code`,{class:`font-mono`},`--token-store global`),u(` 保存过 Token。`)],-1)]),d(`div`,Re,[i[35]||=d(`p`,{class:`text-sm font-medium text-textMain mb-2`},`3. 部署 — CLI 覆盖配置`,-1),d(`div`,ze,[i[33]||=d(`span`,{class:`text-xs text-textMuted w-20 shrink-0`},`使用全局 Token`,-1),d(`code`,Be,f(Q.value),1),d(`button`,{onClick:i[6]||=e=>q(`direct-push`,Q.value),class:`text-xs text-primary hover:text-textMain`},f(U.value===`direct-push`?`已复制`:`复制`),1)]),d(`div`,Ve,[i[34]||=d(`span`,{class:`text-xs text-textMuted w-20 shrink-0`},`指定项目 Token`,-1),d(`code`,He,f($.value),1),d(`button`,{onClick:i[7]||=e=>q(`direct-push-token`,$.value),class:`text-xs text-primary hover:text-textMain`},f(U.value===`direct-push-token`?`已复制`:`复制`),1)])])]),i[36]||=re(`<div class="rounded-lg border border-primary/20 bg-primary/5 p-4 space-y-2"><p class="text-sm text-textMuted leading-relaxed"><strong class="text-primary font-medium">Token 设置方式:</strong><code class="font-mono text-xs bg-base px-1 py-0.5 rounded border border-border">kite config:set token &lt;token&gt;</code> 按项目保存, <code class="font-mono text-xs bg-base px-1 py-0.5 rounded border border-border">kite config:set token &lt;token&gt; --global</code> 设置全局 fallback。 也可在 <code class="font-mono">.env.local</code> 中写入 <code class="font-mono">KITE_DEPLOY_TOKEN=&lt;token&gt;</code>。 </p><p class="text-sm text-textMuted leading-relaxed"> 配置优先级:<strong class="text-primary">CLI 参数</strong> &gt; <strong class="text-primary">.env.local</strong> &gt; <strong class="text-primary">项目级 Token</strong> &gt; <strong class="text-primary">全局 Token</strong>。未在 CLI 传入的部署脚本,会回退到本页保存的云端默认脚本。 </p></div>`,1)])]),d(`div`,Ue,[d(`div`,We,[d(`h2`,Ge,[l(n(g),{class:`w-5 h-5 mr-2 text-primary`}),i[37]||=u(` 部署脚本配置 (云端默认) `,-1)]),i[38]||=d(`p`,{class:`text-sm text-textMuted mt-1`},`配置此项目在服务端接收到文件后,默认执行的 Shell 指令。可被 CLI 参数覆盖。`,-1)]),d(`div`,Ke,[d(`div`,null,[i[39]||=d(`label`,{class:`block text-sm font-medium text-textMain mb-2`},`部署目录 (Destination Path)`,-1),e(d(`input`,{"onUpdate:modelValue":i[8]||=e=>B.value.destPath=e,type:`text`,class:`w-full bg-base border border-border rounded-md px-4 py-3 text-textMain font-mono text-sm focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary/50 transition-all`,placeholder:`e.g. /var/www/my-project`},null,512),[[m,B.value.destPath]]),i[40]||=d(`p`,{class:`text-xs text-textMuted mt-2`},`在服务端解压和部署该项目文件的绝对路径。`,-1)]),d(`div`,null,[i[42]||=d(`label`,{class:`block text-sm font-medium text-textMain mb-2`},`前置脚本 (Pre-Deploy)`,-1),d(`div`,qe,[i[41]||=d(`div`,{class:`absolute left-0 top-0 bottom-0 w-8 bg-base border-r border-border rounded-l-md flex flex-col items-center py-3 text-textMuted font-mono text-xs select-none`},[d(`span`,null,`1`)],-1),e(d(`textarea`,{"onUpdate:modelValue":i[9]||=e=>B.value.preDeploy=e,class:`w-full bg-base border border-border rounded-md pl-11 pr-4 py-3 text-success font-mono text-sm focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary/50 transition-all min-h-[100px] resize-y`,placeholder:`# e.g. npm install && npm run build`,spellcheck:`false`},null,512),[[m,B.value.preDeploy]])]),i[43]||=d(`p`,{class:`text-xs text-textMuted mt-2`},`在打包上传之前,于本地执行的构建命令(通常配置在本地 CLI,此处作为备用参考)。`,-1)]),d(`div`,null,[i[45]||=d(`label`,{class:`block text-sm font-medium text-textMain mb-2`},`后置脚本 (Post-Deploy)`,-1),d(`div`,Je,[i[44]||=d(`div`,{class:`absolute left-0 top-0 bottom-0 w-8 bg-base border-r border-border rounded-l-md flex flex-col items-center py-3 text-textMuted font-mono text-xs select-none`},[d(`span`,null,`1`)],-1),e(d(`textarea`,{"onUpdate:modelValue":i[10]||=e=>B.value.postDeploy=e,class:`w-full bg-base border border-border rounded-md pl-11 pr-4 py-3 text-success font-mono text-sm focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary/50 transition-all min-h-[100px] resize-y`,placeholder:`# e.g. pm2 restart api-server`,spellcheck:`false`},null,512),[[m,B.value.postDeploy]])]),i[46]||=d(`p`,{class:`text-xs text-textMuted mt-2`},`服务端解压文件后,在目标目录执行的重启或服务加载命令。`,-1)]),d(`div`,Ye,[d(`button`,{onClick:$e,class:`flex items-center px-6 py-2.5 bg-primary hover:bg-primary/90 text-white rounded-md transition-all font-medium shadow-[0_0_15px_rgba(59,130,246,0.3)]`},[l(n(he),{class:`w-4 h-4 mr-2`}),i[47]||=u(` 保存配置 `,-1)])])])]),d(`div`,Xe,[d(`div`,Ze,[d(`h3`,Qe,[l(n(ge),{class:`w-4 h-4 mr-2`}),i[48]||=u(` 危险操作区 `,-1)]),d(`div`,{class:`mt-4 flex items-center justify-between`},[i[49]||=d(`p`,{class:`text-sm text-textMuted`},`删除该项目将清空所有配置与日志,且不可恢复。`,-1),d(`button`,{onClick:rt,class:`px-4 py-2 bg-danger/10 hover:bg-danger text-danger hover:text-white border border-danger/20 hover:border-danger rounded-md transition-colors text-sm font-medium`},` 删除项目 `)])])])])])):o(``,!0)}}});export{I as default};
@@ -1 +0,0 @@
1
- import{A as e,C as t,F as n,M as r,T as i,_ as a,d as o,et as s,f as c,g as l,h as u,l as d,nt as f,o as p,t as m,x as h}from"./project-BFuaDcvV.js";import{c as g,i as _,s as v}from"./index-eyx6wNyQ.js";import{t as y}from"./createLucideIcon-Cgv1AIRL.js";import{t as b}from"./clock-BPXGSCIV.js";import{t as x}from"./server-C33taHNn.js";var S=y(`ellipsis-vertical`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`12`,cy:`5`,r:`1`,key:`gxeob9`}],[`circle`,{cx:`12`,cy:`19`,r:`1`,key:`lyex9k`}]]),C=y(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),w={class:`max-w-7xl mx-auto space-y-6`},T={class:`flex justify-between items-center mb-8`},E={class:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6`},D=[`onClick`],O={class:`flex justify-between items-start mb-4`},k={class:`flex items-center space-x-3`},A={class:`p-2 rounded-lg bg-base border border-border group-hover:border-primary/30 transition-colors`},j={class:`font-semibold text-textMain text-base`},M={class:`text-xs text-textMuted font-mono mt-0.5`},N={class:`text-sm text-textMuted mb-5 line-clamp-2 min-h-[40px]`},P={class:`flex items-center justify-between border-t border-border pt-4 text-xs text-textMuted`},F={class:`flex items-center`},I={class:`flex items-center space-x-2`},L={key:0,class:`fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm`},R={class:`bg-panel border border-border rounded-xl w-full max-w-md p-6 shadow-2xl transform transition-all`},z={class:`space-y-4`},B={class:`mt-8 flex justify-end space-x-3`},V=[`disabled`],H=a({__name:`ProjectList`,setup(a){let y=m(),H=_();h(()=>{y.fetchProjects()});let U=r(!1),W=r({name:``,description:``,destPath:``,env:``}),G=async()=>{!W.value.name||!W.value.destPath||(await y.addProject(W.value)?(U.value=!1,W.value={name:``,description:``,destPath:``,env:``}):alert(`创建失败,请稍后重试`))},K=e=>{H.push(`/projects/${e}`)};return(r,a)=>(t(),c(`div`,w,[d(`div`,T,[a[8]||=d(`div`,null,[d(`h1`,{class:`text-2xl font-bold text-textMain tracking-tight`},`项目管理`),d(`p`,{class:`text-textMuted text-sm mt-1`},`管理所有可部署的应用服务与脚本配置`)],-1),d(`button`,{onClick:a[0]||=e=>U.value=!0,class:`flex items-center px-4 py-2 bg-primary hover:bg-primary/90 text-white rounded-md shadow-[0_0_15px_rgba(59,130,246,0.3)] transition-all font-medium text-sm`},[l(n(C),{class:`w-4 h-4 mr-2`}),a[7]||=u(` 新建项目 `,-1)])]),d(`div`,E,[(t(!0),c(p,null,i(n(y).projects,e=>(t(),c(`div`,{key:e.id,class:`group bg-panel border border-border rounded-xl p-5 hover:border-primary/50 transition-all shadow-sm cursor-pointer relative overflow-hidden`,onClick:t=>K(e.id)},[d(`div`,{class:s([`absolute top-0 left-0 w-1 h-full`,e.status===`success`?`bg-success`:e.status===`failed`?`bg-danger`:`bg-primary`])},null,2),d(`div`,O,[d(`div`,k,[d(`div`,A,[l(n(x),{class:`w-5 h-5 text-textMain group-hover:text-primary transition-colors`})]),d(`div`,null,[d(`h3`,j,f(e.name),1),d(`p`,M,f(e.id),1)])]),d(`button`,{class:`p-1 dark:hover:bg-white/10 hover:bg-black/10 rounded-md transition-colors text-textMuted hover:text-textMain`,onClick:a[1]||=g(()=>{},[`stop`])},[l(n(S),{class:`w-4 h-4`})])]),d(`p`,N,f(e.description||`暂无描述`),1),d(`div`,P,[d(`div`,F,[l(n(b),{class:`w-3.5 h-3.5 mr-1.5`}),d(`span`,null,f(new Date(e.updatedAt).toLocaleDateString()),1)]),d(`div`,I,[d(`span`,{class:s([`flex items-center`,e.status===`success`?`text-success`:e.status===`failed`?`text-danger`:`text-primary`])},[d(`span`,{class:s([`w-2 h-2 rounded-full mr-1.5`,e.status===`success`?`bg-success shadow-[0_0_8px_#10b981]`:e.status===`failed`?`bg-danger`:`bg-primary`])},null,2),u(` `+f(e.status===`success`?`正常`:e.status===`failed`?`异常`:`空闲`),1)],2)])])],8,D))),128))]),U.value?(t(),c(`div`,L,[d(`div`,R,[a[14]||=d(`h2`,{class:`text-xl font-bold text-textMain mb-6`},`新建部署项目`,-1),d(`div`,z,[d(`div`,null,[a[9]||=d(`label`,{class:`block text-sm font-medium text-textMuted mb-1.5`},`项目名称`,-1),e(d(`input`,{"onUpdate:modelValue":a[2]||=e=>W.value.name=e,type:`text`,class:`w-full bg-base border border-border rounded-md px-3 py-2 text-textMain focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary/50 transition-all text-sm`,placeholder:`e.g. Kite Web Frontend`},null,512),[[v,W.value.name]])]),d(`div`,null,[a[10]||=d(`label`,{class:`block text-sm font-medium text-textMuted mb-1.5`},`部署目录绝对路径 (Destination Path)`,-1),e(d(`input`,{"onUpdate:modelValue":a[3]||=e=>W.value.destPath=e,type:`text`,class:`w-full bg-base border border-border rounded-md px-3 py-2 text-textMain font-mono focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary/50 transition-all text-sm`,placeholder:`e.g. /var/www/my-project`},null,512),[[v,W.value.destPath]])]),d(`div`,null,[a[11]||=d(`label`,{class:`block text-sm font-medium text-textMuted mb-1.5`},`部署环境标识 (可选)`,-1),e(d(`input`,{"onUpdate:modelValue":a[4]||=e=>W.value.env=e,type:`text`,class:`w-full bg-base border border-border rounded-md px-3 py-2 text-textMain font-mono focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary/50 transition-all text-sm`,placeholder:`e.g. test, staging, prod`},null,512),[[v,W.value.env]]),a[12]||=d(`p`,{class:`text-xs text-textMuted mt-1.5`},[u(` 用于区分同一项目的不同部署环境。设置后,CLI 会生成 `),d(`code`,{class:`font-mono text-textMain`},"kite.config.{`{env}`}.json"),u(` 配置文件, `),d(`code`,{class:`font-mono text-textMain`},"kite push --env {`{name}`}"),u(` 可精准推送到对应环境。 `),d(`span`,{class:`text-primary/80`},`常见场景:同一项目部署到测试/预发/生产等不同机器。`)],-1)]),d(`div`,null,[a[13]||=d(`label`,{class:`block text-sm font-medium text-textMuted mb-1.5`},`描述 (可选)`,-1),e(d(`textarea`,{"onUpdate:modelValue":a[5]||=e=>W.value.description=e,class:`w-full bg-base border border-border rounded-md px-3 py-2 text-textMain focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary/50 transition-all text-sm h-24 resize-none`,placeholder:`简要描述项目的用途...`},null,512),[[v,W.value.description]])])]),d(`div`,B,[d(`button`,{onClick:a[6]||=e=>U.value=!1,class:`px-4 py-2 text-sm font-medium text-textMuted hover:text-textMain dark:hover:bg-white/5 hover:bg-black/5 rounded-md transition-colors`},` 取消 `),d(`button`,{onClick:G,disabled:!W.value.name||!W.value.destPath,class:`px-4 py-2 text-sm font-medium bg-primary text-white rounded-md hover:bg-primary/90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors`},` 确认创建 `,8,V)])])])):o(``,!0)]))}});export{H as default};
@@ -1 +0,0 @@
1
- import{A as e,C as t,D as ee,F as n,M as r,T as i,_ as a,d as o,et as s,f as c,g as l,h as u,l as d,nt as f,o as p,t as te,u as m,x as ne}from"./project-BFuaDcvV.js";import{n as re,o as h,s as g}from"./index-eyx6wNyQ.js";import{t as _}from"./createLucideIcon-Cgv1AIRL.js";import{t as ie}from"./activity-DItEGOtI.js";import{n as v,t as ae}from"./refresh-cw-DWmqwQRn.js";import{n as y,r as oe,t as se}from"./save-BkiMrL9q.js";import{t as ce}from"./server-C33taHNn.js";import{t as le}from"./settings-CrCWmNyB.js";var ue=_(`eye-off`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),de=_(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),b=_(`hard-drive`,[[`path`,{d:`M10 16h.01`,key:`1bzywj`}],[`path`,{d:`M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`18tbho`}],[`path`,{d:`M21.946 12.013H2.054`,key:`zqlbp7`}],[`path`,{d:`M6 16h.01`,key:`1pmjb7`}]]),x=_(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),S=_(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),C=_(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),w=_(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),T=_(`webhook`,[[`path`,{d:`M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2`,key:`q3hayz`}],[`path`,{d:`m6 17 3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06`,key:`1go1hn`}],[`path`,{d:`m12 6 3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8`,key:`qlwsc0`}]]),E={class:`max-w-4xl mx-auto space-y-6 pb-12`},D={class:`flex items-center space-x-3 mb-8`},O={class:`bg-panel border border-border rounded-xl shadow-sm overflow-hidden`},k={class:`px-6 py-5 border-b border-border dark:bg-white/[0.02] bg-black/[0.02]`},A={class:`text-lg font-semibold text-textMain flex items-center`},j={class:`p-6`},M={key:0,class:`grid grid-cols-2 md:grid-cols-4 gap-4`},N={class:`bg-base border border-border rounded-lg p-4 text-center`},P={class:`text-2xl font-bold text-primary`},F={class:`bg-base border border-border rounded-lg p-4 text-center`},I={class:`text-2xl font-bold text-textMain`},L={class:`bg-base border border-border rounded-lg p-4 text-center`},R={class:`text-2xl font-bold text-textMain`},z={class:`bg-base border border-border rounded-lg p-4 text-center`},B={class:`text-2xl font-bold text-textMain`},V={class:`bg-base border border-border rounded-lg p-4 text-center`},H={class:`text-2xl font-bold text-success`},fe={class:`bg-base border border-border rounded-lg p-4 text-center`},pe={class:`text-2xl font-bold text-danger`},me={class:`bg-base border border-border rounded-lg p-4 text-center col-span-2`},he={class:`flex items-center justify-center space-x-2`},ge={class:`text-2xl font-bold text-textMain`},_e={key:1,class:`text-textMuted text-sm py-4 text-center`},ve={class:`bg-panel border border-border rounded-xl shadow-sm overflow-hidden`},ye={class:`px-6 py-5 border-b border-border dark:bg-white/[0.02] bg-black/[0.02]`},be={class:`text-lg font-semibold text-textMain flex items-center`},xe={class:`p-6`},U={class:`grid grid-cols-1 sm:grid-cols-3 gap-3`},Se=[`onClick`],Ce={class:`text-xs text-textMuted mt-1`},we={class:`bg-panel border border-border rounded-xl shadow-sm overflow-hidden`},Te={class:`px-6 py-5 border-b border-border dark:bg-white/[0.02] bg-black/[0.02]`},Ee={class:`text-lg font-semibold text-textMain flex items-center`},De={class:`p-6 space-y-4`},Oe={class:`pt-2 flex justify-end`},ke={class:`bg-panel border border-border rounded-xl shadow-sm overflow-hidden`},Ae={class:`px-6 py-5 border-b border-border dark:bg-white/[0.02] bg-black/[0.02]`},je={class:`text-lg font-semibold text-textMain flex items-center`},Me={class:`p-6 space-y-4`},Ne={class:`flex gap-2`},Pe={class:`relative flex-1`},Fe=[`type`],Ie=[`disabled`],Le={class:`bg-panel border border-border rounded-xl shadow-sm overflow-hidden`},Re={class:`px-6 py-5 border-b border-border dark:bg-white/[0.02] bg-black/[0.02]`},ze={class:`text-lg font-semibold text-textMain flex items-center`},Be={class:`p-6 space-y-4`},Ve={class:`flex flex-wrap gap-3`},He=[`onClick`],Ue={class:`flex items-center justify-end space-x-4 pt-4`},We=[`disabled`],W=a({__name:`Settings`,setup(a){let _=te(),W=re(),Ge=[{value:`light`,label:`浅色模式`,icon:C,desc:`始终使用浅色主题`},{value:`dark`,label:`深色模式`,icon:S,desc:`始终使用深色主题`},{value:`system`,label:`跟随系统`,icon:x,desc:`自动匹配系统外观设置`}],G=r(null),K=r({webhook_url:``,webhook_events:[],default_deploy_path:``,max_upload_size:`50`,global_deploy_token:``}),q=r(!1),J=r(!1),Ke=()=>{K.value.global_deploy_token&&(navigator.clipboard.writeText(K.value.global_deploy_token),J.value=!0,setTimeout(()=>J.value=!1,2e3))},Y=r({oldToken:``,newToken:``,confirmPassword:``}),X=r(``),Z=r(`success`),Q=r(!1),$=r(``),qe=[{key:`deploy_success`,label:`部署成功`},{key:`deploy_failure`,label:`部署失败`}];ne(async()=>{let[e,t]=await Promise.all([_.fetchSettings(),_.fetchSystemStatus()]);G.value=t,e&&(K.value.webhook_url=e.webhook_url||``,K.value.webhook_events=e.webhook_events?e.webhook_events.split(`,`):[],K.value.default_deploy_path=e.default_deploy_path||``,K.value.max_upload_size=e.max_upload_size||`50`,K.value.global_deploy_token=e.global_deploy_token||``)});let Je=async()=>{Q.value=!0,$.value=``,$.value=await _.updateSettings({webhook_url:K.value.webhook_url,webhook_events:K.value.webhook_events.join(`,`),default_deploy_path:K.value.default_deploy_path,max_upload_size:K.value.max_upload_size,global_deploy_token:K.value.global_deploy_token})?`保存成功`:`保存失败`,Q.value=!1,setTimeout(()=>$.value=``,3e3)},Ye=async()=>{if(X.value=``,Y.value.newToken!==Y.value.confirmPassword){X.value=`两次输入的新 Token 不一致`,Z.value=`error`;return}if(Y.value.newToken.length<8){X.value=`新 Token 长度不能少于 8 位`,Z.value=`error`;return}let e=await _.changeAdminToken(Y.value.oldToken,Y.value.newToken);e.success?(X.value=e.message||`Token 已更新`,Z.value=`success`,Y.value={oldToken:``,newToken:``,confirmPassword:``}):(X.value=e.error||`修改失败`,Z.value=`error`)},Xe=()=>{let e=crypto.randomUUID().replace(/-/g,``);K.value.global_deploy_token=`kt_${e}`},Ze=e=>{let t=K.value.webhook_events.indexOf(e);t>=0?K.value.webhook_events.splice(t,1):K.value.webhook_events.push(e)};return(r,a)=>(t(),c(`div`,E,[d(`div`,D,[l(n(le),{class:`w-7 h-7 text-primary`}),a[8]||=d(`h1`,{class:`text-2xl font-bold text-textMain tracking-tight`},`系统设置`,-1)]),d(`div`,O,[d(`div`,k,[d(`h2`,A,[l(n(ce),{class:`w-5 h-5 mr-2 text-primary`}),a[9]||=u(` 系统信息 `,-1)])]),d(`div`,j,[G.value?(t(),c(`div`,M,[d(`div`,N,[d(`p`,P,f(G.value.version),1),a[10]||=d(`p`,{class:`text-xs text-textMuted mt-1`},`版本号`,-1)]),d(`div`,F,[d(`p`,I,f(G.value.uptime),1),a[11]||=d(`p`,{class:`text-xs text-textMuted mt-1`},`运行时间`,-1)]),d(`div`,L,[d(`p`,R,f(G.value.projectCount),1),a[12]||=d(`p`,{class:`text-xs text-textMuted mt-1`},`项目总数`,-1)]),d(`div`,z,[d(`p`,B,f(G.value.deploymentCount),1),a[13]||=d(`p`,{class:`text-xs text-textMuted mt-1`},`部署总次数`,-1)]),d(`div`,V,[d(`p`,H,f(G.value.successCount),1),a[14]||=d(`p`,{class:`text-xs text-textMuted mt-1`},`成功部署`,-1)]),d(`div`,fe,[d(`p`,pe,f(G.value.failedCount),1),a[15]||=d(`p`,{class:`text-xs text-textMuted mt-1`},`失败次数`,-1)]),d(`div`,me,[d(`div`,he,[l(n(ie),{class:`w-5 h-5 text-primary`}),d(`p`,ge,f(G.value.successRate)+`%`,1)]),a[16]||=d(`p`,{class:`text-xs text-textMuted mt-1`},`部署成功率`,-1)])])):(t(),c(`div`,_e,`加载中...`))])]),d(`div`,ve,[d(`div`,ye,[d(`h2`,be,[l(n(C),{class:`w-5 h-5 mr-2 text-primary`}),a[17]||=u(` 外观设置 `,-1)]),a[18]||=d(`p`,{class:`text-sm text-textMuted mt-1`},`选择界面的色彩方案,或跟随系统自动切换。`,-1)]),d(`div`,xe,[d(`div`,U,[(t(),c(p,null,i(Ge,e=>d(`button`,{key:e.value,onClick:t=>n(W).setMode(e.value),class:s([`relative flex flex-col items-center p-4 rounded-lg border-2 transition-all`,n(W).mode===e.value?`border-primary bg-primary/5 shadow-[0_0_12px_rgba(59,130,246,0.15)]`:`border-border hover:border-textMuted/50 bg-base`])},[(t(),m(ee(e.icon),{class:s([`w-6 h-6 mb-2`,n(W).mode===e.value?`text-primary`:`text-textMuted`])},null,8,[`class`])),d(`span`,{class:s([`text-sm font-medium`,n(W).mode===e.value?`text-primary`:`text-textMain`])},f(e.label),3),d(`span`,Ce,f(e.desc),1),n(W).mode===e.value?(t(),m(n(v),{key:0,class:`absolute top-2 right-2 w-4 h-4 text-primary`})):o(``,!0)],10,Se)),64))])])]),d(`div`,we,[d(`div`,Te,[d(`h2`,Ee,[l(n(y),{class:`w-5 h-5 mr-2 text-primary`}),a[19]||=u(` 管理员 Token `,-1)]),a[20]||=d(`p`,{class:`text-sm text-textMuted mt-1`},`修改管理后台的登录凭证。修改后需使用新 Token 重新登录。`,-1)]),d(`div`,De,[d(`div`,null,[a[21]||=d(`label`,{class:`block text-sm font-medium text-textMain mb-2`},`当前 Token`,-1),e(d(`input`,{"onUpdate:modelValue":a[0]||=e=>Y.value.oldToken=e,type:`password`,class:`w-full bg-base border border-border rounded-md px-4 py-3 text-textMain font-mono text-sm focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary/50 transition-all`,placeholder:`请输入当前 Token`},null,512),[[g,Y.value.oldToken]])]),d(`div`,null,[a[22]||=d(`label`,{class:`block text-sm font-medium text-textMain mb-2`},`新 Token`,-1),e(d(`input`,{"onUpdate:modelValue":a[1]||=e=>Y.value.newToken=e,type:`password`,class:`w-full bg-base border border-border rounded-md px-4 py-3 text-textMain font-mono text-sm focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary/50 transition-all`,placeholder:`请输入新 Token(至少 8 位)`},null,512),[[g,Y.value.newToken]])]),d(`div`,null,[a[23]||=d(`label`,{class:`block text-sm font-medium text-textMain mb-2`},`确认新 Token`,-1),e(d(`input`,{"onUpdate:modelValue":a[2]||=e=>Y.value.confirmPassword=e,type:`password`,class:`w-full bg-base border border-border rounded-md px-4 py-3 text-textMain font-mono text-sm focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary/50 transition-all`,placeholder:`请再次输入新 Token`},null,512),[[g,Y.value.confirmPassword]])]),X.value?(t(),c(`div`,{key:0,class:s([`flex items-center space-x-2 text-sm`,Z.value===`success`?`text-success`:`text-danger`])},[Z.value===`success`?(t(),m(n(v),{key:0,class:`w-4 h-4`})):(t(),m(n(w),{key:1,class:`w-4 h-4`})),d(`span`,null,f(X.value),1)],2)):o(``,!0),d(`div`,Oe,[d(`button`,{onClick:Ye,class:`flex items-center px-6 py-2.5 bg-primary hover:bg-primary/90 text-white rounded-md transition-all font-medium shadow-[0_0_15px_rgba(59,130,246,0.3)]`},[l(n(y),{class:`w-4 h-4 mr-2`}),a[24]||=u(` 修改 Token `,-1)])])])]),d(`div`,ke,[d(`div`,Ae,[d(`h2`,je,[l(n(b),{class:`w-5 h-5 mr-2 text-primary`}),a[25]||=u(` 全局部署配置 `,-1)]),a[26]||=d(`p`,{class:`text-sm text-textMuted mt-1`},`设置全局默认的部署参数,可在项目级别覆盖。`,-1)]),d(`div`,Me,[d(`div`,null,[a[27]||=d(`label`,{class:`block text-sm font-medium text-textMain mb-2`},`全局部署 Token`,-1),d(`div`,Ne,[d(`div`,Pe,[e(d(`input`,{"onUpdate:modelValue":a[3]||=e=>K.value.global_deploy_token=e,type:q.value?`text`:`password`,class:`w-full bg-base border border-border rounded-md px-4 py-3 pr-10 text-textMain font-mono text-sm focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary/50 transition-all`,placeholder:`留空则不启用全局 Token`},null,8,Fe),[[h,K.value.global_deploy_token]]),d(`button`,{onClick:a[4]||=e=>q.value=!q.value,class:`absolute right-3 top-1/2 -translate-y-1/2 text-textMuted hover:text-textMain transition-colors`,type:`button`},[q.value?(t(),m(n(ue),{key:0,class:`w-4 h-4`})):(t(),m(n(de),{key:1,class:`w-4 h-4`}))])]),d(`button`,{onClick:Xe,class:`flex items-center px-3 bg-base border border-border rounded-md text-textMuted hover:text-textMain hover:border-primary/50 transition-all`,title:`生成随机 Token`,type:`button`},[l(n(ae),{class:`w-4 h-4`})]),d(`button`,{onClick:Ke,disabled:!K.value.global_deploy_token,class:`flex items-center px-3 bg-base border border-border rounded-md text-textMuted hover:text-textMain hover:border-primary/50 transition-all disabled:opacity-50 disabled:cursor-not-allowed`,title:`复制 Token`,type:`button`},[J.value?(t(),m(n(v),{key:0,class:`w-4 h-4 text-success`})):(t(),m(n(oe),{key:1,class:`w-4 h-4`}))],8,Ie)]),a[28]||=d(`p`,{class:`text-xs text-textMuted mt-2`},`所有项目共用的部署 Token。CLI 使用全局 Token 时,配合 --project 指定项目即可部署,无需为每个项目单独配置 Token。留空则禁用。`,-1)]),d(`div`,null,[a[29]||=d(`label`,{class:`block text-sm font-medium text-textMain mb-2`},`默认部署路径`,-1),e(d(`input`,{"onUpdate:modelValue":a[5]||=e=>K.value.default_deploy_path=e,type:`text`,class:`w-full bg-base border border-border rounded-md px-4 py-3 text-textMain font-mono text-sm focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary/50 transition-all`,placeholder:`e.g. .deployments`},null,512),[[g,K.value.default_deploy_path]]),a[30]||=d(`p`,{class:`text-xs text-textMuted mt-2`},`新项目创建时的默认部署目录(相对于工作目录)。`,-1)]),d(`div`,null,[a[31]||=d(`label`,{class:`block text-sm font-medium text-textMain mb-2`},`最大上传大小 (MB)`,-1),e(d(`input`,{"onUpdate:modelValue":a[6]||=e=>K.value.max_upload_size=e,type:`number`,min:`1`,max:`500`,class:`w-full bg-base border border-border rounded-md px-4 py-3 text-textMain font-mono text-sm focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary/50 transition-all`,placeholder:`50`},null,512),[[g,K.value.max_upload_size]]),a[32]||=d(`p`,{class:`text-xs text-textMuted mt-2`},`单次部署上传的 ZIP 文件大小上限。`,-1)])])]),d(`div`,Le,[d(`div`,Re,[d(`h2`,ze,[l(n(T),{class:`w-5 h-5 mr-2 text-primary`}),a[33]||=u(` Webhook 通知 `,-1)]),a[34]||=d(`p`,{class:`text-sm text-textMuted mt-1`},`部署事件发生时,向指定 URL 发送 POST 通知。`,-1)]),d(`div`,Be,[d(`div`,null,[a[35]||=d(`label`,{class:`block text-sm font-medium text-textMain mb-2`},`Webhook URL`,-1),e(d(`input`,{"onUpdate:modelValue":a[7]||=e=>K.value.webhook_url=e,type:`url`,class:`w-full bg-base border border-border rounded-md px-4 py-3 text-textMain font-mono text-sm focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary/50 transition-all`,placeholder:`https://example.com/webhook`},null,512),[[g,K.value.webhook_url]]),a[36]||=d(`p`,{class:`text-xs text-textMuted mt-2`},`留空则不发送通知。支持飞书、钉钉、Slack 等标准 Webhook。`,-1)]),d(`div`,null,[a[37]||=d(`label`,{class:`block text-sm font-medium text-textMain mb-3`},`触发事件`,-1),d(`div`,Ve,[(t(),c(p,null,i(qe,e=>d(`button`,{key:e.key,onClick:t=>Ze(e.key),class:s([`flex items-center px-4 py-2 rounded-md text-sm font-medium border transition-all`,K.value.webhook_events.includes(e.key)?`bg-primary/10 border-primary/30 text-primary`:`bg-base border-border text-textMuted hover:border-primary/30 hover:text-textMain`])},[K.value.webhook_events.includes(e.key)?(t(),m(n(v),{key:0,class:`w-4 h-4 mr-2`})):o(``,!0),u(` `+f(e.label),1)],10,He)),64))])])])]),d(`div`,Ue,[$.value?(t(),c(`span`,{key:0,class:s([`text-sm`,$.value===`保存成功`?`text-success`:`text-danger`])},f($.value),3)):o(``,!0),d(`button`,{onClick:Je,disabled:Q.value,class:`flex items-center px-6 py-2.5 bg-primary hover:bg-primary/90 text-white rounded-md transition-all font-medium shadow-[0_0_15px_rgba(59,130,246,0.3)] disabled:opacity-50`},[l(n(se),{class:`w-4 h-4 mr-2`}),u(` `+f(Q.value?`保存中...`:`保存配置`),1)],8,We)])]))}});export{W as default};
@@ -1 +0,0 @@
1
- import{t as e}from"./createLucideIcon-Cgv1AIRL.js";var t=e(`clock`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]);export{t};
@@ -1 +0,0 @@
1
- var e=`1.1.0`;export{e as t};
@@ -1 +0,0 @@
1
- import{v as e}from"./project-BFuaDcvV.js";var t=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},n=e=>e===``,r=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),i=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),a=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),o=e=>{let t=a(e);return t.charAt(0).toUpperCase()+t.slice(1)},s={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},c=({name:a,iconNode:c,absoluteStrokeWidth:l,"absolute-stroke-width":u,strokeWidth:d,"stroke-width":f,size:p=s.width,color:m=s.stroke,...h},{slots:g})=>e(`svg`,{...s,...h,width:p,height:p,stroke:m,"stroke-width":n(l)||n(u)||l===!0||u===!0?Number(d||f||s[`stroke-width`])*24/Number(p):d||f||s[`stroke-width`],class:r(`lucide`,h.class,...a?[`lucide-${i(o(a))}-icon`,`lucide-${i(a)}`]:[`lucide-icon`]),...!g.default&&!t(h)&&{"aria-hidden":`true`}},[...c.map(t=>e(...t)),...g.default?[g.default()]:[]]),l=(t,n)=>(r,{slots:i,attrs:a})=>e(c,{...a,...r,iconNode:n,name:t},i);export{l as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./createLucideIcon-Cgv1AIRL.js";var t=e(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),n=e(`folder-open`,[[`path`,{d:`m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2`,key:`usdka0`}]]);export{t as n,n as t};
@@ -1 +0,0 @@
1
- *,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:Inter,system-ui,sans-serif;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:JetBrains Mono,Fira Code,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}body{background-color:var(--color-base);color:var(--color-text-main);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0;font-family:Inter,system-ui,sans-serif;overflow-x:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.bottom-0{bottom:0}.left-0{left:0}.right-2{right:.5rem}.right-3{right:.75rem}.top-0{top:0}.top-1\/2{top:50%}.top-2{top:.5rem}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.-ml-1{margin-left:-.25rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-\[400px\]{height:400px}.h-\[500px\]{height:500px}.h-\[calc\(100vh-4rem\)\]{height:calc(100vh - 4rem)}.h-full{height:100%}.h-screen{height:100vh}.min-h-0{min-height:0}.min-h-\[100px\]{min-height:100px}.min-h-\[40px\]{min-height:40px}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-full{width:100%}.min-w-0{min-width:0}.max-w-4xl{max-width:56rem}.max-w-7xl{max-width:80rem}.max-w-md{max-width:28rem}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;user-select:none}.resize-none{resize:none}.resize-y{resize:vertical}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-border>:not([hidden])~:not([hidden]){border-color:var(--color-border)}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.whitespace-pre-wrap{white-space:pre-wrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-border{border-color:var(--color-border)}.border-danger{border-color:var(--color-danger)}.border-primary{border-color:var(--color-primary)}.border-transparent{border-color:#0000}.bg-\[\#09090b\]{--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.bg-base{background-color:var(--color-base)}.bg-black\/60{background-color:#0009}.bg-black\/\[0\.02\]{background-color:#00000005}.bg-danger{background-color:var(--color-danger)}.bg-panel{background-color:var(--color-panel)}.bg-primary{background-color:var(--color-primary)}.bg-success{background-color:var(--color-success)}.bg-textMain{background-color:var(--color-text-main)}.bg-yellow-500\/80{background-color:#eab308cc}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-12{padding-bottom:3rem}.pl-11{padding-left:2.75rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pr-10{padding-right:2.5rem}.pr-12{padding-right:3rem}.pr-4{padding-right:1rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:JetBrains Mono,Fira Code,monospace}.font-sans{font-family:Inter,system-ui,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.text-\[\#f4f4f5\]{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity,1))}.text-base{color:var(--color-base)}.text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.text-danger{color:var(--color-danger)}.text-primary{color:var(--color-primary)}.text-success{color:var(--color-success)}.text-textMain{color:var(--color-text-main)}.text-textMuted{color:var(--color-text-muted)}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow-2xl{--tw-shadow:0 25px 50px -12px #00000040;--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_10px_rgba\(59\,130\,246\,0\.1\)\]{--tw-shadow:0 0 10px #3b82f61a;--tw-shadow-colored:0 0 10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_12px_rgba\(59\,130\,246\,0\.15\)\]{--tw-shadow:0 0 12px #3b82f626;--tw-shadow-colored:0 0 12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_15px_rgba\(59\,130\,246\,0\.3\)\]{--tw-shadow:0 0 15px #3b82f64d;--tw-shadow-colored:0 0 15px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_30px_rgba\(59\,130\,246\,0\.15\)\]{--tw-shadow:0 0 30px #3b82f626;--tw-shadow-colored:0 0 30px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_8px_\#10b981\]{--tw-shadow:0 0 8px #10b981;--tw-shadow-colored:0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_8px_currentColor\]{--tw-shadow:0 0 8px currentColor;--tw-shadow-colored:0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[inset_2px_0_0_0_\#3b82f6\]{--tw-shadow:inset 2px 0 0 0 #3b82f6;--tw-shadow-colored:inset 2px 0 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.blur-\[2px\]{--tw-blur:blur(2px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}:root{--color-base:#fff;--color-panel:#f8f9fa;--color-border:#e5e7eb;--color-primary:#3b82f6;--color-success:#10b981;--color-danger:#ef4444;--color-text-main:#18181b;--color-text-muted:#71717a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.dark{--color-base:#09090b;--color-panel:#18181b;--color-border:#27272a;--color-primary:#3b82f6;--color-success:#10b981;--color-danger:#ef4444;--color-text-main:#f4f4f5;--color-text-muted:#a1a1aa;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:9999px}::-webkit-scrollbar-thumb:hover{background-color:var(--color-text-muted)}.placeholder\:font-sans::placeholder{font-family:Inter,system-ui,sans-serif}.hover\:border-danger:hover{border-color:var(--color-danger)}.hover\:bg-black\/10:hover{background-color:#0000001a}.hover\:bg-black\/5:hover{background-color:#0000000d}.hover\:bg-danger:hover{background-color:var(--color-danger)}.hover\:bg-primary:hover{background-color:var(--color-primary)}.hover\:text-primary:hover{color:var(--color-primary)}.hover\:text-textMain:hover{color:var(--color-text-main)}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.hover\:shadow-\[0_0_15px_rgba\(59\,130\,246\,0\.4\)\]:hover{--tw-shadow:0 0 15px #3b82f666;--tw-shadow-colored:0 0 15px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.focus\:border-danger:focus{border-color:var(--color-danger)}.focus\:border-primary:focus{border-color:var(--color-primary)}.focus\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:text-primary{color:var(--color-primary)}.group:hover .group-hover\:text-textMain{color:var(--color-text-main)}.dark\:bg-white\/\[0\.02\]:is(.dark *){background-color:#ffffff05}.dark\:hover\:bg-white\/10:hover:is(.dark *){background-color:#ffffff1a}.dark\:hover\:bg-white\/5:hover:is(.dark *){background-color:#ffffff0d}@media (width>=640px){.sm\:w-auto{width:auto}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}}@media (width>=768px){.md\:flex{display:flex}.md\:hidden{display:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:p-8{padding:2rem}}@media (width>=1024px){.lg\:h-auto{height:auto}.lg\:w-1\/3{width:33.3333%}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}}