ninekit-cli 1.0.0-dev.4 → 1.1.0-dev.2
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.
|
@@ -18,7 +18,7 @@ var Tj=Object.defineProperty;var Rj=(t,e,n)=>e in t?Tj(t,e,{enumerable:!0,config
|
|
|
18
18
|
*/var Sv=t=>{throw TypeError(t)},Cv=(t,e,n)=>e.has(t)||Sv("Cannot "+n),kn=(t,e,n)=>(Cv(t,e,"read from private field"),n?n.call(t):e.get(t)),Do=(t,e,n)=>e.has(t)?Sv("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,n),rr=(t,e,n,r)=>(Cv(t,e,"write to private field"),e.set(t,n),n),fg="popstate";function pg(t){return typeof t=="object"&&t!=null&&"pathname"in t&&"search"in t&&"hash"in t&&"state"in t&&"key"in t}function Vj(t={}){function e(r,s){let i=s.state?.masked,{pathname:o,search:a,hash:l}=i||r.location;return Yo("",{pathname:o,search:a,hash:l},s.state&&s.state.usr||null,s.state&&s.state.key||"default",i?{pathname:r.location.pathname,search:r.location.search,hash:r.location.hash}:void 0)}function n(r,s){return typeof s=="string"?s:vr(s)}return Kj(e,n,null,t)}function De(t,e){if(t===!1||t===null||typeof t>"u")throw new Error(e)}function tt(t,e){if(!t){typeof console<"u"&&console.warn(e);try{throw new Error(e)}catch{}}}function Wj(){return Math.random().toString(36).substring(2,10)}function mg(t,e){return{usr:t.state,key:t.key,idx:e,masked:t.mask?{pathname:t.pathname,search:t.search,hash:t.hash}:void 0}}function Yo(t,e,n=null,r,s){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof e=="string"?wr(e):e,state:n,key:e&&e.key||r||Wj(),mask:s}}function vr({pathname:t="/",search:e="",hash:n=""}){return e&&e!=="?"&&(t+=e.charAt(0)==="?"?e:"?"+e),n&&n!=="#"&&(t+=n.charAt(0)==="#"?n:"#"+n),t}function wr(t){let e={};if(t){let n=t.indexOf("#");n>=0&&(e.hash=t.substring(n),t=t.substring(0,n));let r=t.indexOf("?");r>=0&&(e.search=t.substring(r),t=t.substring(0,r)),t&&(e.pathname=t)}return e}function Kj(t,e,n,r={}){let{window:s=document.defaultView,v5Compat:i=!1}=r,o=s.history,a="POP",l=null,d=u();d==null&&(d=0,o.replaceState({...o.state,idx:d},""));function u(){return(o.state||{idx:null}).idx}function h(){a="POP";let b=u(),y=b==null?null:b-d;d=b,l&&l({action:a,location:x.location,delta:y})}function f(b,y){a="PUSH";let w=pg(b)?b:Yo(x.location,b,y);d=u()+1;let v=mg(w,d),k=x.createHref(w.mask||w);try{o.pushState(v,"",k)}catch(C){if(C instanceof DOMException&&C.name==="DataCloneError")throw C;s.location.assign(k)}i&&l&&l({action:a,location:x.location,delta:1})}function p(b,y){a="REPLACE";let w=pg(b)?b:Yo(x.location,b,y);d=u();let v=mg(w,d),k=x.createHref(w.mask||w);o.replaceState(v,"",k),i&&l&&l({action:a,location:x.location,delta:0})}function m(b){return jv(s,b)}let x={get action(){return a},get location(){return t(s,o)},listen(b){if(l)throw new Error("A history only accepts one active listener");return s.addEventListener(fg,h),l=b,()=>{s.removeEventListener(fg,h),l=null}},createHref(b){return e(s,b)},createURL:m,encodeLocation(b){let y=m(b);return{pathname:y.pathname,search:y.search,hash:y.hash}},push:f,replace:p,go(b){return o.go(b)}};return x}function jv(t,e,n=!1){let r="http://localhost";t&&(r=t.location.origin!=="null"?t.location.origin:t.location.href),De(r,"No window.location.(origin|href) available to create URL");let s=typeof e=="string"?e:vr(e);return s=s.replace(/ $/,"%20"),!n&&s.startsWith("//")&&(s=r+s),new URL(s,r)}var Eo,gg=class{constructor(t){if(Do(this,Eo,new Map),t)for(let[e,n]of t)this.set(e,n)}get(t){if(kn(this,Eo).has(t))return kn(this,Eo).get(t);if(t.defaultValue!==void 0)return t.defaultValue;throw new Error("No value found for context")}set(t,e){kn(this,Eo).set(t,e)}};Eo=new WeakMap;var Uj=new Set(["lazy","caseSensitive","path","id","index","children"]);function Gj(t){return Uj.has(t)}var qj=new Set(["lazy","caseSensitive","path","id","index","middleware","children"]);function Yj(t){return qj.has(t)}function Xj(t){return t.index===!0}function Xo(t,e,n=[],r={},s=!1){return t.map((i,o)=>{let a=[...n,String(o)],l=typeof i.id=="string"?i.id:a.join("-");if(De(i.index!==!0||!i.children,"Cannot specify children on an index route"),De(s||!r[l],`Found a route id collision on id "${l}". Route id's must be globally unique within Data Router usages`),Xj(i)){let d={...i,id:l};return r[l]=xg(d,e(d)),d}else{let d={...i,id:l,children:void 0};return r[l]=xg(d,e(d)),i.children&&(d.children=Xo(i.children,e,a,r,s)),d}})}function xg(t,e){return Object.assign(t,{...e,...typeof e.lazy=="object"&&e.lazy!=null?{lazy:{...t.lazy,...e.lazy}}:{}})}function Nv(t,e,n="/"){return _n(t,e,n,!1)}function _n(t,e,n,r,s){let i=typeof e=="string"?wr(e):e,o=Tn(i.pathname||"/",n);if(o==null)return null;let a=s??Ec(t),l=null,d=c5(o);for(let u=0;l==null&&u<a.length;++u)l=a5(a[u],d,r);return l}function Qj(t,e){let{route:n,pathname:r,params:s}=t;return{id:n.id,pathname:r,params:s,data:e[n.id],loaderData:e[n.id],handle:n.handle}}function Ec(t){let e=Pv(t);return Jj(e),e}function Pv(t,e=[],n=[],r="",s=!1){let i=(o,a,l=s,d)=>{let u={relativePath:d===void 0?o.path||"":d,caseSensitive:o.caseSensitive===!0,childrenIndex:a,route:o};if(u.relativePath.startsWith("/")){if(!u.relativePath.startsWith(r)&&l)return;De(u.relativePath.startsWith(r),`Absolute route path "${u.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),u.relativePath=u.relativePath.slice(r.length)}let h=On([r,u.relativePath]),f=n.concat(u);o.children&&o.children.length>0&&(De(o.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${h}".`),Pv(o.children,e,f,h,l)),!(o.path==null&&!o.index)&&e.push({path:h,score:i5(h,o.index),routesMeta:f})};return t.forEach((o,a)=>{if(o.path===""||!o.path?.includes("?"))i(o,a);else for(let l of Dv(o.path))i(o,a,!0,l)}),e}function Dv(t){let e=t.split("/");if(e.length===0)return[];let[n,...r]=e,s=n.endsWith("?"),i=n.replace(/\?$/,"");if(r.length===0)return s?[i,""]:[i];let o=Dv(r.join("/")),a=[];return a.push(...o.map(l=>l===""?i:[i,l].join("/"))),s&&a.push(...o),a.map(l=>t.startsWith("/")&&l===""?"/":l)}function Jj(t){t.sort((e,n)=>e.score!==n.score?n.score-e.score:o5(e.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}var Zj=/^:[\w-]+$/,e5=3,t5=2,n5=1,r5=10,s5=-2,bg=t=>t==="*";function i5(t,e){let n=t.split("/"),r=n.length;return n.some(bg)&&(r+=s5),e&&(r+=t5),n.filter(s=>!bg(s)).reduce((s,i)=>s+(Zj.test(i)?e5:i===""?n5:r5),r)}function o5(t,e){return t.length===e.length&&t.slice(0,-1).every((r,s)=>r===e[s])?t[t.length-1]-e[e.length-1]:0}function a5(t,e,n=!1){let{routesMeta:r}=t,s={},i="/",o=[];for(let a=0;a<r.length;++a){let l=r[a],d=a===r.length-1,u=i==="/"?e:e.slice(i.length)||"/",h=Yc({path:l.relativePath,caseSensitive:l.caseSensitive,end:d},u),f=l.route;if(!h&&d&&n&&!r[r.length-1].route.index&&(h=Yc({path:l.relativePath,caseSensitive:l.caseSensitive,end:!1},u)),!h)return null;Object.assign(s,h.params),o.push({params:s,pathname:On([i,h.pathname]),pathnameBase:h5(On([i,h.pathnameBase])),route:f}),h.pathnameBase!=="/"&&(i=On([i,h.pathnameBase]))}return o}function Yc(t,e){typeof t=="string"&&(t={path:t,caseSensitive:!1,end:!0});let[n,r]=l5(t.path,t.caseSensitive,t.end),s=e.match(n);if(!s)return null;let i=s[0],o=i.replace(/(.)\/+$/,"$1"),a=s.slice(1);return{params:r.reduce((d,{paramName:u,isOptional:h},f)=>{if(u==="*"){let m=a[f]||"";o=i.slice(0,i.length-m.length).replace(/(.)\/+$/,"$1")}const p=a[f];return h&&!p?d[u]=void 0:d[u]=(p||"").replace(/%2F/g,"/"),d},{}),pathname:i,pathnameBase:o,pattern:t}}function l5(t,e=!1,n=!0){tt(t==="*"||!t.endsWith("*")||t.endsWith("/*"),`Route path "${t}" will be treated as if it were "${t.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${t.replace(/\*$/,"/*")}".`);let r=[],s="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(o,a,l,d,u)=>{if(r.push({paramName:a,isOptional:l!=null}),l){let h=u.charAt(d+o.length);return h&&h!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return t.endsWith("*")?(r.push({paramName:"*"}),s+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?s+="\\/*$":t!==""&&t!=="/"&&(s+="(?:(?=\\/|$))"),[new RegExp(s,e?void 0:"i"),r]}function c5(t){try{return t.split("/").map(e=>decodeURIComponent(e).replace(/\//g,"%2F")).join("/")}catch(e){return tt(!1,`The URL path "${t}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${e}).`),t}}function Tn(t,e){if(e==="/")return t;if(!t.toLowerCase().startsWith(e.toLowerCase()))return null;let n=e.endsWith("/")?e.length-1:e.length,r=t.charAt(n);return r&&r!=="/"?null:t.slice(n)||"/"}function d5({basename:t,pathname:e}){return e==="/"?t:On([t,e])}var Ev=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,jp=t=>Ev.test(t);function u5(t,e="/"){let{pathname:n,search:r="",hash:s=""}=typeof t=="string"?wr(t):t,i;return n?(n=Np(n),n.startsWith("/")?i=yg(n.substring(1),"/"):i=yg(n,e)):i=e,{pathname:i,search:f5(r),hash:p5(s)}}function yg(t,e){let n=Xc(e).split("/");return t.split("/").forEach(s=>{s===".."?n.length>1&&n.pop():s!=="."&&n.push(s)}),n.length>1?n.join("/"):"/"}function Tu(t,e,n,r){return`Cannot include a '${t}' character in a manually specified \`to.${e}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function Ov(t){return t.filter((e,n)=>n===0||e.route.path&&e.route.path.length>0)}function Ud(t){let e=Ov(t);return e.map((n,r)=>r===e.length-1?n.pathname:n.pathnameBase)}function dl(t,e,n,r=!1){let s;typeof t=="string"?s=wr(t):(s={...t},De(!s.pathname||!s.pathname.includes("?"),Tu("?","pathname","search",s)),De(!s.pathname||!s.pathname.includes("#"),Tu("#","pathname","hash",s)),De(!s.search||!s.search.includes("#"),Tu("#","search","hash",s)));let i=t===""||s.pathname==="",o=i?"/":s.pathname,a;if(o==null)a=n;else{let h=e.length-1;if(!r&&o.startsWith("..")){let f=o.split("/");for(;f[0]==="..";)f.shift(),h-=1;s.pathname=f.join("/")}a=h>=0?e[h]:"/"}let l=u5(s,a),d=o&&o!=="/"&&o.endsWith("/"),u=(i||o===".")&&n.endsWith("/");return!l.pathname.endsWith("/")&&(d||u)&&(l.pathname+="/"),l}var Np=t=>t.replace(/\/\/+/g,"/"),On=t=>Np(t.join("/")),Xc=t=>t.replace(/\/+$/,""),h5=t=>Xc(t).replace(/^\/*/,"/"),f5=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,p5=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t,ul=class{constructor(t,e,n,r=!1){this.status=t,this.statusText=e||"",this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function Qo(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}function hl(t){let e=t.map(n=>n.route.path).filter(Boolean);return On(e)||"/"}var Mv=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Av(t,e){let n=t;if(typeof n!="string"||!Ev.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,s=!1;if(Mv)try{let i=new URL(window.location.href),o=n.startsWith("//")?new URL(i.protocol+n):new URL(n),a=Tn(o.pathname,e);o.origin===i.origin&&a!=null?n=a+o.search+o.hash:s=!0}catch{tt(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:s,to:n}}var Jr=Symbol("Uninstrumented");function m5(t,e){let n={lazy:[],"lazy.loader":[],"lazy.action":[],"lazy.middleware":[],middleware:[],loader:[],action:[]};t.forEach(s=>s({id:e.id,index:e.index,path:e.path,instrument(i){let o=Object.keys(n);for(let a of o)i[a]&&n[a].push(i[a])}}));let r={};if(typeof e.lazy=="function"&&n.lazy.length>0){let s=hi(n.lazy,e.lazy,()=>{});s&&(r.lazy=s)}if(typeof e.lazy=="object"){let s=e.lazy;["middleware","loader","action"].forEach(i=>{let o=s[i],a=n[`lazy.${i}`];if(typeof o=="function"&&a.length>0){let l=hi(a,o,()=>{});l&&(r.lazy=Object.assign(r.lazy||{},{[i]:l}))}})}return["loader","action"].forEach(s=>{let i=e[s];if(typeof i=="function"&&n[s].length>0){let o=i[Jr]??i,a=hi(n[s],o,(...l)=>vg(l[0]));a&&(s==="loader"&&o.hydrate===!0&&(a.hydrate=!0),a[Jr]=o,r[s]=a)}}),e.middleware&&e.middleware.length>0&&n.middleware.length>0&&(r.middleware=e.middleware.map(s=>{let i=s[Jr]??s,o=hi(n.middleware,i,(...a)=>vg(a[0]));return o?(o[Jr]=i,o):s})),r}function g5(t,e){let n={navigate:[],fetch:[]};if(e.forEach(r=>r({instrument(s){let i=Object.keys(s);for(let o of i)s[o]&&n[o].push(s[o])}})),n.navigate.length>0){let r=t.navigate[Jr]??t.navigate,s=hi(n.navigate,r,(...i)=>{let[o,a]=i;return{to:typeof o=="number"||typeof o=="string"?o:o?vr(o):".",...wg(t,a??{})}});s&&(s[Jr]=r,t.navigate=s)}if(n.fetch.length>0){let r=t.fetch[Jr]??t.fetch,s=hi(n.fetch,r,(...i)=>{let[o,,a,l]=i;return{href:a??".",fetcherKey:o,...wg(t,l??{})}});s&&(s[Jr]=r,t.fetch=s)}return t}function hi(t,e,n){return t.length===0?null:async(...r)=>{let s=await Tv(t,n(...r),()=>e(...r),t.length-1);if(s.type==="error")throw s.value;return s.value}}async function Tv(t,e,n,r){let s=t[r],i;if(s){let o,a=async()=>(o?console.error("You cannot call instrumented handlers more than once"):o=Tv(t,e,n,r-1),i=await o,De(i,"Expected a result"),i.type==="error"&&i.value instanceof Error?{status:"error",error:i.value}:{status:"success",error:void 0});try{await s(a,e)}catch(l){console.error("An instrumentation function threw an error:",l)}o||await a(),await o}else try{i={type:"success",value:await n()}}catch(o){i={type:"error",value:o}}return i||{type:"error",value:new Error("No result assigned in instrumentation chain.")}}function vg(t){let{request:e,context:n,params:r,pattern:s}=t;return{request:x5(e),params:{...r},pattern:s,context:b5(n)}}function wg(t,e){return{currentUrl:vr(t.state.location),..."formMethod"in e?{formMethod:e.formMethod}:{},..."formEncType"in e?{formEncType:e.formEncType}:{},..."formData"in e?{formData:e.formData}:{},..."body"in e?{body:e.body}:{}}}function x5(t){return{method:t.method,url:t.url,headers:{get:(...e)=>t.headers.get(...e)}}}function b5(t){if(v5(t)){let e={...t};return Object.freeze(e),e}else return{get:e=>t.get(e)}}var y5=Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function v5(t){if(t===null||typeof t!="object")return!1;const e=Object.getPrototypeOf(t);return e===Object.prototype||e===null||Object.getOwnPropertyNames(e).sort().join("\0")===y5}var Rv=["POST","PUT","PATCH","DELETE"],w5=new Set(Rv),k5=["GET",...Rv],S5=new Set(k5),Lv=new Set([301,302,303,307,308]),C5=new Set([307,308]),Ru={state:"idle",location:void 0,matches:void 0,historyAction:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},j5={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},po={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},N5=t=>({hasErrorBoundary:!!t.hasErrorBoundary}),Iv="remix-router-transitions",$v=Symbol("ResetLoaderData"),ys,oi,Vr,ai,P5=class{constructor(t){Do(this,ys),Do(this,oi),Do(this,Vr),Do(this,ai),rr(this,ys,t),rr(this,oi,Ec(t))}get stableRoutes(){return kn(this,ys)}get activeRoutes(){return kn(this,Vr)??kn(this,ys)}get branches(){return kn(this,ai)??kn(this,oi)}get hasHMRRoutes(){return kn(this,Vr)!=null}setRoutes(t){rr(this,ys,t),rr(this,oi,Ec(t))}setHmrRoutes(t){rr(this,Vr,t),rr(this,ai,Ec(t))}commitHmrRoutes(){kn(this,Vr)&&(rr(this,ys,kn(this,Vr)),rr(this,oi,kn(this,ai)),rr(this,Vr,void 0),rr(this,ai,void 0))}};ys=new WeakMap;oi=new WeakMap;Vr=new WeakMap;ai=new WeakMap;function D5(t){const e=t.window?t.window:typeof window<"u"?window:void 0,n=typeof e<"u"&&typeof e.document<"u"&&typeof e.document.createElement<"u";De(t.routes.length>0,"You must provide a non-empty routes array to createRouter");let r=t.hydrationRouteProperties||[],s=t.mapRouteProperties||N5,i=s;if(t.instrumentations){let R=t.instrumentations;i=B=>({...s(B),...m5(R.map(z=>z.route).filter(Boolean),B)})}let o={},a=new P5(Xo(t.routes,i,void 0,o)),l=t.basename||"/";l.startsWith("/")||(l=`/${l}`);let d=t.dataStrategy||T5,u={...t.future},h=null,f=new Set,p=null,m=null,x=null,b=null,y=t.hydrationData!=null,w=_n(a.activeRoutes,t.history.location,l,!1,a.branches),v=!1,k=null,C,N;if(w==null&&!t.patchRoutesOnNavigation){let R=Sn(404,{pathname:t.history.location.pathname}),{matches:B,route:z}=zl(a.activeRoutes);C=!0,N=!C,w=B,k={[z.id]:R}}else if(w&&!t.hydrationData&&Ct(w,a.activeRoutes,t.history.location.pathname).active&&(w=null),w)if(w.some(R=>R.route.lazy))C=!1,N=!C;else if(!w.some(R=>Pp(R.route)))C=!0,N=!C;else{let R=t.hydrationData?t.hydrationData.loaderData:null,B=t.hydrationData?t.hydrationData.errors:null,z=w;if(B){let X=w.findIndex(Q=>B[Q.route.id]!==void 0);z=z.slice(0,X+1)}N=!1,C=!0,z.forEach(X=>{let Q=Bv(X.route,R,B);N=N||Q.renderFallback,C=C&&!Q.shouldLoad})}else{C=!1,N=!C,w=[];let R=Ct(null,a.activeRoutes,t.history.location.pathname);R.active&&R.matches&&(v=!0,w=R.matches)}let D,S={historyAction:t.history.action,location:t.history.location,matches:w,initialized:C,renderFallback:N,navigation:Ru,restoreScrollPosition:t.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:t.hydrationData&&t.hydrationData.loaderData||{},actionData:t.hydrationData&&t.hydrationData.actionData||null,errors:t.hydrationData&&t.hydrationData.errors||k,fetchers:new Map,blockers:new Map},E="POP",O=null,P=!1,A,I=!1,j=new Map,M=null,T=!1,L=!1,F=new Set,$=new Map,V=0,W=-1,H=new Map,J=new Set,G=new Map,Z=new Map,re=new Set,se=new Map,_,Y=null;function ee(){if(h=t.history.listen(({action:R,location:B,delta:z})=>{if(_){_(),_=void 0;return}tt(se.size===0||z!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let X=ot({currentLocation:S.location,nextLocation:B,historyAction:R});if(X&&z!=null){let Q=new Promise(pe=>{_=pe});t.history.go(z*-1),Br(X,{state:"blocked",location:B,proceed(){Br(X,{state:"proceeding",proceed:void 0,reset:void 0,location:B}),Q.then(()=>t.history.go(z))},reset(){let pe=new Map(S.blockers);pe.set(X,po),oe({blockers:pe})}}),O?.resolve(),O=null;return}return Ae(R,B)}),n){Q5(e,j);let R=()=>J5(e,j);e.addEventListener("pagehide",R),M=()=>e.removeEventListener("pagehide",R)}return S.initialized||Ae("POP",S.location,{initialHydration:!0}),D}function ce(){h&&h(),M&&M(),f.clear(),A&&A.abort(),S.fetchers.forEach((R,B)=>In(S.fetchers,B)),S.blockers.forEach((R,B)=>Zs(B))}function ie(R){if(f.add(R),p){let{newErrors:B}=p;p=null,R(S,{deletedFetchers:[],newErrors:B,viewTransitionOpts:void 0,flushSync:!1})}return()=>f.delete(R)}function oe(R,B={}){R.matches&&(R.matches=R.matches.map(Q=>{let pe=o[Q.route.id],ge=Q.route;return ge.element!==pe.element||ge.errorElement!==pe.errorElement||ge.hydrateFallbackElement!==pe.hydrateFallbackElement?{...Q,route:pe}:Q})),S={...S,...R};let z=[],X=[];S.fetchers.forEach((Q,pe)=>{Q.state==="idle"&&(re.has(pe)?z.push(pe):X.push(pe))}),re.forEach(Q=>{!S.fetchers.has(Q)&&!$.has(Q)&&z.push(Q)}),f.size===0&&(p={newErrors:R.errors??null}),[...f].forEach(Q=>Q(S,{deletedFetchers:z,newErrors:R.errors??null,viewTransitionOpts:B.viewTransitionOpts,flushSync:B.flushSync===!0})),z.forEach(Q=>In(S.fetchers,Q)),X.forEach(Q=>S.fetchers.delete(Q))}function fe(R,B,{flushSync:z}={}){let X=S.actionData!=null&&S.navigation.formMethod!=null&&At(S.navigation.formMethod)&&S.navigation.state==="loading"&&R.state?._isRedirect!==!0,Q;B.actionData?Object.keys(B.actionData).length>0?Q=B.actionData:Q=null:X?Q=S.actionData:Q=null;let pe=B.loaderData?Ag(S.loaderData,B.loaderData,B.matches||[],B.errors):S.loaderData,ge=S.blockers;ge.size>0&&(ge=new Map(ge),ge.forEach((ve,Ne)=>ge.set(Ne,po)));let be=T?!1:xt(R,B.matches||S.matches),he=P===!0||S.navigation.formMethod!=null&&At(S.navigation.formMethod)&&R.state?._isRedirect!==!0;a.commitHmrRoutes(),T||E==="POP"||(E==="PUSH"?t.history.push(R,R.state):E==="REPLACE"&&t.history.replace(R,R.state));let we;if(E==="POP"){let ve=j.get(S.location.pathname);ve&&ve.has(R.pathname)?we={currentLocation:S.location,nextLocation:R}:j.has(R.pathname)&&(we={currentLocation:R,nextLocation:S.location})}else if(I){let ve=j.get(S.location.pathname);ve?ve.add(R.pathname):(ve=new Set([R.pathname]),j.set(S.location.pathname,ve)),we={currentLocation:S.location,nextLocation:R}}oe({...B,actionData:Q,loaderData:pe,historyAction:E,location:R,initialized:!0,renderFallback:!1,navigation:Ru,revalidation:"idle",restoreScrollPosition:be,preventScrollReset:he,blockers:ge},{viewTransitionOpts:we,flushSync:z===!0}),E="POP",P=!1,I=!1,T=!1,L=!1,O?.resolve(),O=null,Y?.resolve(),Y=null}async function xe(R,B){if(O?.resolve(),O=null,typeof R=="number"){O||(O=Ig());let Be=O.promise;return t.history.go(R),Be}let z=rf(S.location,S.matches,l,R,B?.fromRouteId,B?.relative),{path:X,submission:Q,error:pe}=kg(!1,z,B),ge;B?.mask&&(ge={pathname:"",search:"",hash:"",...typeof B.mask=="string"?wr(B.mask):{...S.location.mask,...B.mask}});let be=S.location,he=Yo(be,X,B&&B.state,void 0,ge);he={...he,...t.history.encodeLocation(he)};let we=B&&B.replace!=null?B.replace:void 0,ve="PUSH";we===!0?ve="REPLACE":we===!1||Q!=null&&At(Q.formMethod)&&Q.formAction===S.location.pathname+S.location.search&&(ve="REPLACE");let Ne=B&&"preventScrollReset"in B?B.preventScrollReset===!0:void 0,Se=(B&&B.flushSync)===!0,Le=ot({currentLocation:be,nextLocation:he,historyAction:ve});if(Le){Br(Le,{state:"blocked",location:he,proceed(){Br(Le,{state:"proceeding",proceed:void 0,reset:void 0,location:he}),xe(R,B)},reset(){let Be=new Map(S.blockers);Be.set(Le,po),oe({blockers:Be})}});return}await Ae(ve,he,{submission:Q,pendingError:pe,preventScrollReset:Ne,replace:B&&B.replace,enableViewTransition:B&&B.viewTransition,flushSync:Se,callSiteDefaultShouldRevalidate:B&&B.defaultShouldRevalidate})}function Pe(){Y||(Y=Ig()),U(),oe({revalidation:"loading"});let R=Y.promise;return S.navigation.state==="submitting"?R:S.navigation.state==="idle"?(Ae(S.historyAction,S.location,{startUninterruptedRevalidation:!0}),R):(Ae(E||S.historyAction,S.navigation.location,{overrideNavigation:S.navigation,enableViewTransition:I===!0}),R)}async function Ae(R,B,z){A&&A.abort(),A=null,E=R,T=(z&&z.startUninterruptedRevalidation)===!0,Dt(S.location,S.matches),P=(z&&z.preventScrollReset)===!0,I=(z&&z.enableViewTransition)===!0;let X=a.activeRoutes,Q=z?.initialHydration&&S.matches&&S.matches.length>0&&!v?S.matches:_n(X,B,l,!1,a.branches),pe=(z&&z.flushSync)===!0;if(Q&&S.initialized&&!L&&z5(S.location,B)&&!(z&&z.submission&&At(z.submission.formMethod))){fe(B,{matches:Q},{flushSync:pe});return}let ge=Ct(Q,X,B.pathname);if(ge.active&&ge.matches&&(Q=ge.matches),!Q){let{error:Ge,notFoundMatches:_e,route:Et}=ut(B.pathname);fe(B,{matches:_e,loaderData:{},errors:{[Et.id]:Ge}},{flushSync:pe});return}let be=z&&z.overrideNavigation?{...z.overrideNavigation,matches:Q,historyAction:R}:void 0;A=new AbortController;let he=li(t.history,B,A.signal,z&&z.submission),we=t.getContext?await t.getContext():new gg,ve;if(z&&z.pendingError)ve=[qr(Q).route.id,{type:"error",error:z.pendingError}];else if(z&&z.submission&&At(z.submission.formMethod)){let Ge=await Je(he,B,z.submission,Q,R,we,ge.active,z&&z.initialHydration===!0,{replace:z.replace,flushSync:pe});if(Ge.shortCircuited)return;if(Ge.pendingActionResult){let[_e,Et]=Ge.pendingActionResult;if(un(Et)&&Qo(Et.error)&&Et.error.status===404){A=null,fe(B,{matches:Ge.matches,loaderData:{},errors:{[_e]:Et.error}});return}}Q=Ge.matches||Q,ve=Ge.pendingActionResult,be=Lu(B,Q,R,z.submission),pe=!1,ge.active=!1,he=li(t.history,he.url,he.signal)}let{shortCircuited:Ne,matches:Se,loaderData:Le,errors:Be,workingFetchers:ct}=await mt(he,B,Q,R,we,ge.active,be,z&&z.submission,z&&z.fetcherSubmission,z&&z.replace,z&&z.initialHydration===!0,pe,ve,z&&z.callSiteDefaultShouldRevalidate);Ne||(A=null,fe(B,{matches:Se||Q,...Tg(ve),loaderData:Le,errors:Be,...ct?{fetchers:ct}:{}}))}async function Je(R,B,z,X,Q,pe,ge,be,he={}){U();let we=Y5(B,X,Q,z);if(oe({navigation:we},{flushSync:he.flushSync===!0}),ge){let Se=await on(X,B.pathname,R.signal);if(Se.type==="aborted")return{shortCircuited:!0};if(Se.type==="error"){if(Se.partialMatches.length===0){let{matches:Be,route:ct}=zl(a.activeRoutes);return{matches:Be,pendingActionResult:[ct.id,{type:"error",error:Se.error}]}}let Le=qr(Se.partialMatches).route.id;return{matches:Se.partialMatches,pendingActionResult:[Le,{type:"error",error:Se.error}]}}else if(Se.matches)X=Se.matches;else{let{notFoundMatches:Le,error:Be,route:ct}=ut(B.pathname);return{matches:Le,pendingActionResult:[ct.id,{type:"error",error:Be}]}}}let ve,Ne=Oc(X,B);if(!Ne.route.action&&!Ne.route.lazy)ve={type:"error",error:Sn(405,{method:R.method,pathname:B.pathname,routeId:Ne.route.id})};else{let Se=vi(i,o,R,B,X,Ne,be?[]:r,pe),Le=await st(R,B,Se,pe,null);if(ve=Le[Ne.route.id],!ve){for(let Be of X)if(Le[Be.route.id]){ve=Le[Be.route.id];break}}if(R.signal.aborted)return{shortCircuited:!0}}if(Ps(ve)){let Se;return he&&he.replace!=null?Se=he.replace:Se=Eg(ve.response.headers.get("Location"),new URL(R.url),l,t.history)===S.location.pathname+S.location.search,await Ue(R,ve,!0,{submission:z,replace:Se}),{shortCircuited:!0}}if(un(ve)){let Se=qr(X,Ne.route.id);return(he&&he.replace)!==!0&&(E="PUSH"),{matches:X,pendingActionResult:[Se.route.id,ve,Ne.route.id]}}return{matches:X,pendingActionResult:[Ne.route.id,ve]}}async function mt(R,B,z,X,Q,pe,ge,be,he,we,ve,Ne,Se,Le){let Be=ge||Lu(B,z,X,be),ct=be||he||Lg(Be),Ge=!T&&!ve;if(pe){if(Ge){let Mt=qe(Se);oe({navigation:Be,...Mt!==void 0?{actionData:Mt}:{}},{flushSync:Ne})}let Me=await on(z,B.pathname,R.signal);if(Me.type==="aborted")return{shortCircuited:!0};if(Me.type==="error"){if(Me.partialMatches.length===0){let{matches:vn,route:Bn}=zl(a.activeRoutes);return{matches:vn,loaderData:{},errors:{[Bn.id]:Me.error}}}let Mt=qr(Me.partialMatches).route.id;return{matches:Me.partialMatches,loaderData:{},errors:{[Mt]:Me.error}}}else if(Me.matches)z=Me.matches;else{let{error:Mt,notFoundMatches:vn,route:Bn}=ut(B.pathname);return{matches:vn,loaderData:{},errors:{[Bn.id]:Mt}}}}let _e=a.activeRoutes,{dsMatches:Et,revalidatingFetchers:Ot}=Sg(R,Q,i,o,t.history,S,z,ct,B,ve?[]:r,ve===!0,L,F,re,G,J,_e,l,t.patchRoutesOnNavigation!=null,a.branches,Se,Le);if(W=++V,!t.dataStrategy&&!Et.some(Me=>Me.shouldLoad)&&!Et.some(Me=>Me.route.middleware&&Me.route.middleware.length>0)&&Ot.length===0){let Me=new Map(S.fetchers),Mt=Js(Me);return fe(B,{matches:z,loaderData:{},errors:Se&&un(Se[1])?{[Se[0]]:Se[1].error}:null,...Tg(Se),...Mt?{fetchers:Me}:{}},{flushSync:Ne}),{shortCircuited:!0}}if(Ge){let Me={};if(!pe){Me.navigation=Be;let Mt=qe(Se);Mt!==void 0&&(Me.actionData=Mt)}Ot.length>0&&(Me.fetchers=gt(Ot)),oe(Me,{flushSync:Ne})}Ot.forEach(Me=>{_t(Me.key),Me.controller&&$.set(Me.key,Me.controller)});let gs=()=>Ot.forEach(Me=>_t(Me.key));A&&A.signal.addEventListener("abort",gs);let{loaderResults:er,fetcherResults:_r}=await it(Et,Ot,R,B,Q);if(R.signal.aborted)return{shortCircuited:!0};A&&A.signal.removeEventListener("abort",gs),Ot.forEach(Me=>$.delete(Me.key));let tr=Hl(er);if(tr)return await Ue(R,tr.result,!0,{replace:we}),{shortCircuited:!0};if(tr=Hl(_r),tr)return J.add(tr.key),await Ue(R,tr.result,!0,{replace:we}),{shortCircuited:!0};let yn=new Map(S.fetchers),{loaderData:fo,errors:$n}=Mg(S,z,er,Se,Ot,_r,yn);ve&&S.errors&&($n={...S.errors,...$n});let ei=Js(yn),ti=ms(W,yn),ni=ei||ti||Ot.length>0;return{matches:z,loaderData:fo,errors:$n,...ni?{workingFetchers:yn}:{}}}function qe(R){if(R&&!un(R[1]))return{[R[0]]:R[1].data};if(S.actionData)return Object.keys(S.actionData).length===0?null:S.actionData}function gt(R){let B=new Map(S.fetchers);return R.forEach(z=>{let X=B.get(z.key),Q=mo(void 0,X?X.data:void 0);B.set(z.key,Q)}),B}async function Bt(R,B,z,X){_t(R);let Q=(X&&X.flushSync)===!0,pe=a.activeRoutes,ge=rf(S.location,S.matches,l,z,B,X?.relative),be=_n(pe,ge,l,!1,a.branches),he=Ct(be,pe,ge);if(he.active&&he.matches&&(be=he.matches),!be){me(R,B,Sn(404,{pathname:ge}),{flushSync:Q});return}let{path:we,submission:ve,error:Ne}=kg(!0,ge,X);if(Ne){me(R,B,Ne,{flushSync:Q});return}let Se=t.getContext?await t.getContext():new gg,Le=(X&&X.preventScrollReset)===!0;if(ve&&At(ve.formMethod)){await Kt(R,B,we,be,Se,he.active,Q,Le,ve,X&&X.defaultShouldRevalidate);return}G.set(R,{routeId:B,path:we}),await Ut(R,B,we,be,Se,he.active,Q,Le,ve)}async function Kt(R,B,z,X,Q,pe,ge,be,he,we){U(),G.delete(R);let ve=S.fetchers.get(R);ne(R,X5(he,ve),{flushSync:ge});let Ne=new AbortController,Se=li(t.history,z,Ne.signal,he);if(pe){let We=await on(X,new URL(Se.url).pathname,Se.signal,R);if(We.type==="aborted")return;if(We.type==="error"){me(R,B,We.error,{flushSync:ge});return}else if(We.matches)X=We.matches;else{me(R,B,Sn(404,{pathname:z}),{flushSync:ge});return}}let Le=Oc(X,z);if(!Le.route.action&&!Le.route.lazy){let We=Sn(405,{method:he.formMethod,pathname:z,routeId:B});me(R,B,We,{flushSync:ge});return}$.set(R,Ne);let Be=V,ct=vi(i,o,Se,z,X,Le,r,Q),Ge=await st(Se,z,ct,Q,R),_e=Ge[Le.route.id];if(!_e){for(let We of ct)if(Ge[We.route.id]){_e=Ge[We.route.id];break}}if(Se.signal.aborted){$.get(R)===Ne&&$.delete(R);return}if(re.has(R)){if(Ps(_e)||un(_e)){ne(R,lr(void 0));return}}else{if(Ps(_e))if($.delete(R),W>Be){ne(R,lr(void 0));return}else return J.add(R),ne(R,mo(he)),Ue(Se,_e,!1,{fetcherSubmission:he,preventScrollReset:be});if(un(_e)){me(R,B,_e.error);return}}let Et=S.navigation.location||S.location,Ot=li(t.history,Et,Ne.signal),gs=a.activeRoutes,er=S.navigation.state!=="idle"?_n(gs,S.navigation.location,l,!1,a.branches):S.matches;De(er,"Didn't find any matches after fetcher action");let _r=++V;H.set(R,_r);let{dsMatches:tr,revalidatingFetchers:yn}=Sg(Ot,Q,i,o,t.history,S,er,he,Et,r,!1,L,F,re,G,J,gs,l,t.patchRoutesOnNavigation!=null,a.branches,[Le.route.id,_e],we),fo=mo(he,_e.data),$n=new Map(S.fetchers);$n.set(R,fo),yn.filter(We=>We.key!==R).forEach(We=>{let nr=We.key,Fl=$n.get(nr),Mu=mo(void 0,Fl?Fl.data:void 0);$n.set(nr,Mu),_t(nr),We.controller&&$.set(nr,We.controller)}),oe({fetchers:$n});let ei=()=>yn.forEach(We=>_t(We.key));Ne.signal.addEventListener("abort",ei);let{loaderResults:ti,fetcherResults:ni}=await it(tr,yn,Ot,Et,Q);if(Ne.signal.aborted)return;Ne.signal.removeEventListener("abort",ei),H.delete(R),$.delete(R),yn.forEach(We=>$.delete(We.key));let Me=S.fetchers.has(R),Mt=We=>{if(!Me)return We;let nr=new Map(We.fetchers);return nr.set(R,lr(_e.data)),{...We,fetchers:nr}},vn=Hl(ti);if(vn)return S=Mt(S),Ue(Ot,vn.result,!1,{preventScrollReset:be});if(vn=Hl(ni),vn)return J.add(vn.key),S=Mt(S),Ue(Ot,vn.result,!1,{preventScrollReset:be});let Bn=new Map(S.fetchers);Me&&Bn.set(R,lr(_e.data));let{loaderData:_l,errors:ri}=Mg(S,er,ti,void 0,yn,ni,Bn);ms(_r,Bn),S.navigation.state==="loading"&&_r>W?(De(E,"Expected pending action"),A&&A.abort(),fe(S.navigation.location,{matches:er,loaderData:_l,errors:ri,fetchers:Bn})):(oe({errors:ri,loaderData:Ag(S.loaderData,_l,er,ri),fetchers:Bn}),L=!1)}async function Ut(R,B,z,X,Q,pe,ge,be,he){let we=S.fetchers.get(R);ne(R,mo(he,we?we.data:void 0),{flushSync:ge});let ve=new AbortController,Ne=li(t.history,z,ve.signal);if(pe){let _e=await on(X,new URL(Ne.url).pathname,Ne.signal,R);if(_e.type==="aborted")return;if(_e.type==="error"){me(R,B,_e.error,{flushSync:ge});return}else if(_e.matches)X=_e.matches;else{me(R,B,Sn(404,{pathname:z}),{flushSync:ge});return}}let Se=Oc(X,z);$.set(R,ve);let Le=V,Be=vi(i,o,Ne,z,X,Se,r,Q),ct=await st(Ne,z,Be,Q,R),Ge=ct[Se.route.id];if(!Ge){for(let _e of X)if(ct[_e.route.id]){Ge=ct[_e.route.id];break}}if($.get(R)===ve&&$.delete(R),!Ne.signal.aborted){if(re.has(R)){ne(R,lr(void 0));return}if(Ps(Ge))if(W>Le){ne(R,lr(void 0));return}else{J.add(R),await Ue(Ne,Ge,!1,{preventScrollReset:be});return}if(un(Ge)){me(R,B,Ge.error);return}ne(R,lr(Ge.data))}}async function Ue(R,B,z,{submission:X,fetcherSubmission:Q,preventScrollReset:pe,replace:ge}={}){z||(O?.resolve(),O=null),B.response.headers.has("X-Remix-Revalidate")&&(L=!0);let be=B.response.headers.get("Location");De(be,"Expected a Location header on the redirect Response"),be=Eg(be,new URL(R.url),l,t.history);let he=Yo(S.location,be,{_isRedirect:!0});if(n){let Be=!1;if(B.response.headers.has("X-Remix-Reload-Document"))Be=!0;else if(jp(be)){const ct=jv(e,be,!0);Be=ct.origin!==e.location.origin||Tn(ct.pathname,l)==null}if(Be){ge?e.location.replace(be):e.location.assign(be);return}}A=null;let we=ge===!0||B.response.headers.has("X-Remix-Replace")?"REPLACE":"PUSH",{formMethod:ve,formAction:Ne,formEncType:Se}=S.navigation;!X&&!Q&&ve&&Ne&&Se&&(X=Lg(S.navigation));let Le=X||Q;if(C5.has(B.response.status)&&Le&&At(Le.formMethod))await Ae(we,he,{submission:{...Le,formAction:be},preventScrollReset:pe||P,enableViewTransition:z?I:void 0});else{let Be=Lu(he,[],we,X);await Ae(we,he,{overrideNavigation:Be,fetcherSubmission:Q,preventScrollReset:pe||P,enableViewTransition:z?I:void 0})}}async function st(R,B,z,X,Q){let pe,ge={};try{pe=await L5(d,R,B,z,Q,X,!1)}catch(be){return z.filter(he=>he.shouldLoad).forEach(he=>{ge[he.route.id]={type:"error",error:be}}),ge}if(R.signal.aborted)return ge;if(!At(R.method))for(let be of z){if(pe[be.route.id]?.type==="error")break;!pe.hasOwnProperty(be.route.id)&&!S.loaderData.hasOwnProperty(be.route.id)&&(!S.errors||!S.errors.hasOwnProperty(be.route.id))&&be.shouldCallHandler()&&(pe[be.route.id]={type:"error",result:new Error(`No result returned from dataStrategy for route ${be.route.id}`)})}for(let[be,he]of Object.entries(pe))if(K5(he)){let we=he.result;ge[be]={type:"redirect",response:_5(we,R,be,z,l)}}else ge[be]=await B5(he);return ge}async function it(R,B,z,X,Q){let pe=st(z,X,R,Q,null),ge=Promise.all(B.map(async we=>{if(we.matches&&we.match&&we.request&&we.controller){let Ne=(await st(we.request,we.path,we.matches,Q,we.key))[we.match.route.id];return{[we.key]:Ne}}else return Promise.resolve({[we.key]:{type:"error",error:Sn(404,{pathname:we.path})}})})),be=await pe,he=(await ge).reduce((we,ve)=>Object.assign(we,ve),{});return{loaderResults:be,fetcherResults:he}}function U(){L=!0,G.forEach((R,B)=>{$.has(B)&&F.add(B),_t(B)})}function ne(R,B,z={}){let X=new Map(S.fetchers);X.set(R,B),oe({fetchers:X},{flushSync:(z&&z.flushSync)===!0})}function me(R,B,z,X={}){let Q=qr(S.matches,B),pe=new Map(S.fetchers);In(pe,R),oe({errors:{[Q.route.id]:z},fetchers:pe},{flushSync:(X&&X.flushSync)===!0})}function je(R){return Z.set(R,(Z.get(R)||0)+1),re.has(R)&&re.delete(R),S.fetchers.get(R)||j5}function kt(R,B){_t(R,B?.reason),ne(R,lr(null))}function In(R,B){let z=S.fetchers.get(B);$.has(B)&&!(z&&z.state==="loading"&&H.has(B))&&_t(B),G.delete(B),H.delete(B),J.delete(B),re.delete(B),F.delete(B),R.delete(B)}function rn(R){let B=(Z.get(R)||0)-1;B<=0?(Z.delete(R),re.add(R)):Z.set(R,B),oe({fetchers:new Map(S.fetchers)})}function _t(R,B){let z=$.get(R);z&&(z.abort(B),$.delete(R))}function ps(R,B){for(let z of R){let X=B.get(z);De(X,`Expected fetcher: ${z}`);let Q=lr(X.data);B.set(z,Q)}}function Js(R){let B=[],z=!1;for(let X of J){let Q=R.get(X);De(Q,`Expected fetcher: ${X}`),Q.state==="loading"&&(J.delete(X),B.push(X),z=!0)}return ps(B,R),z}function ms(R,B){let z=[];for(let[X,Q]of H)if(Q<R){let pe=B.get(X);De(pe,`Expected fetcher: ${X}`),pe.state==="loading"&&(_t(X),H.delete(X),z.push(X))}return ps(z,B),z.length>0}function ho(R,B){let z=S.blockers.get(R)||po;return se.get(R)!==B&&se.set(R,B),z}function Zs(R){S.blockers.delete(R),se.delete(R)}function Br(R,B){let z=S.blockers.get(R)||po;De(z.state==="unblocked"&&B.state==="blocked"||z.state==="blocked"&&B.state==="blocked"||z.state==="blocked"&&B.state==="proceeding"||z.state==="blocked"&&B.state==="unblocked"||z.state==="proceeding"&&B.state==="unblocked",`Invalid blocker state transition: ${z.state} -> ${B.state}`);let X=new Map(S.blockers);X.set(R,B),oe({blockers:X})}function ot({currentLocation:R,nextLocation:B,historyAction:z}){if(se.size===0)return;se.size>1&&tt(!1,"A router only supports one blocker at a time");let X=Array.from(se.entries()),[Q,pe]=X[X.length-1],ge=S.blockers.get(Q);if(!(ge&&ge.state==="proceeding")&&pe({currentLocation:R,nextLocation:B,historyAction:z}))return Q}function ut(R){let B=Sn(404,{pathname:R}),z=a.activeRoutes,{matches:X,route:Q}=zl(z);return{notFoundMatches:X,route:Q,error:B}}function St(R,B,z){if(m=R,b=B,x=z||null,!y&&S.navigation===Ru){y=!0;let X=xt(S.location,S.matches);X!=null&&oe({restoreScrollPosition:X})}return()=>{m=null,b=null,x=null}}function sn(R,B){return x&&x(R,B.map(X=>Qj(X,S.loaderData)))||R.key}function Dt(R,B){if(m&&b){let z=sn(R,B);m[z]=b()}}function xt(R,B){if(m){let z=sn(R,B),X=m[z];if(typeof X=="number")return X}return null}function Ct(R,B,z){if(t.patchRoutesOnNavigation){let X=a.branches;if(R){if(Object.keys(R[0].params).length>0)return{active:!0,matches:_n(B,z,l,!0,X)}}else return{active:!0,matches:_n(B,z,l,!0,X)||[]}}return{active:!1,matches:null}}async function on(R,B,z,X){if(!t.patchRoutesOnNavigation)return{type:"success",matches:R};let Q=R;for(;;){let pe=o;try{await t.patchRoutesOnNavigation({signal:z,path:B,matches:Q,fetcherKey:X,patch:(we,ve)=>{z.aborted||Cg(we,ve,a,pe,i,!1)}})}catch(we){return{type:"error",error:we,partialMatches:Q}}if(z.aborted)return{type:"aborted"};let ge=a.branches,be=_n(a.activeRoutes,B,l,!1,ge),he=null;if(be){if(Object.keys(be[0].params).length===0)return{type:"success",matches:be};if(he=_n(a.activeRoutes,B,l,!0,ge),!(he&&Q.length<he.length&&Ze(Q,he.slice(0,Q.length))))return{type:"success",matches:be}}if(he||(he=_n(a.activeRoutes,B,l,!0,ge)),!he||Ze(Q,he))return{type:"success",matches:null};Q=he}}function Ze(R,B){return R.length===B.length&&R.every((z,X)=>z.route.id===B[X].route.id)}function bn(R){o={},a.setHmrRoutes(Xo(R,i,void 0,o))}function Gt(R,B,z=!1){Cg(R,B,a,o,i,z),a.hasHMRRoutes||oe({})}return D={get basename(){return l},get future(){return u},get state(){return S},get routes(){return a.stableRoutes},get branches(){return a.branches},get manifest(){return o},get window(){return e},initialize:ee,subscribe:ie,enableScrollRestoration:St,navigate:xe,fetch:Bt,revalidate:Pe,createHref:R=>t.history.createHref(R),encodeLocation:R=>t.history.encodeLocation(R),getFetcher:je,resetFetcher:kt,deleteFetcher:rn,dispose:ce,getBlocker:ho,deleteBlocker:Zs,patchRoutes:Gt,_internalFetchControllers:$,_internalSetRoutes:bn,_internalSetStateDoNotUseOrYouWillBreakYourApp(R){oe(R)}},t.instrumentations&&(D=g5(D,t.instrumentations.map(R=>R.router).filter(Boolean))),D}function E5(t){return t!=null&&("formData"in t&&t.formData!=null||"body"in t&&t.body!==void 0)}function rf(t,e,n,r,s,i){let o,a;if(s){o=[];for(let d of e)if(o.push(d),d.route.id===s){a=d;break}}else o=e,a=e[e.length-1];let l=dl(r||".",Ud(o),Tn(t.pathname,n)||t.pathname,i==="path");if(r==null&&(l.search=t.search,l.hash=t.hash),(r==null||r===""||r===".")&&a){let d=Ep(l.search);if(a.route.index&&!d)l.search=l.search?l.search.replace(/^\?/,"?index&"):"?index";else if(!a.route.index&&d){let u=new URLSearchParams(l.search),h=u.getAll("index");u.delete("index"),h.filter(p=>p).forEach(p=>u.append("index",p));let f=u.toString();l.search=f?`?${f}`:""}}return n!=="/"&&(l.pathname=d5({basename:n,pathname:l.pathname})),vr(l)}function kg(t,e,n){if(!n||!E5(n))return{path:e};if(n.formMethod&&!q5(n.formMethod))return{path:e,error:Sn(405,{method:n.formMethod})};let r=()=>({path:e,error:Sn(400,{type:"invalid-body"})}),i=(n.formMethod||"get").toUpperCase(),o=Kv(e);if(n.body!==void 0){if(n.formEncType==="text/plain"){if(!At(i))return r();let h=typeof n.body=="string"?n.body:n.body instanceof FormData||n.body instanceof URLSearchParams?Array.from(n.body.entries()).reduce((f,[p,m])=>`${f}${p}=${m}
|
|
19
19
|
`,""):String(n.body);return{path:e,submission:{formMethod:i,formAction:o,formEncType:n.formEncType,formData:void 0,json:void 0,text:h}}}else if(n.formEncType==="application/json"){if(!At(i))return r();try{let h=typeof n.body=="string"?JSON.parse(n.body):n.body;return{path:e,submission:{formMethod:i,formAction:o,formEncType:n.formEncType,formData:void 0,json:h,text:void 0}}}catch{return r()}}}De(typeof FormData=="function","FormData is not available in this environment");let a,l;if(n.formData)a=of(n.formData),l=n.formData;else if(n.body instanceof FormData)a=of(n.body),l=n.body;else if(n.body instanceof URLSearchParams)a=n.body,l=Og(a);else if(n.body==null)a=new URLSearchParams,l=new FormData;else try{a=new URLSearchParams(n.body),l=Og(a)}catch{return r()}let d={formMethod:i,formAction:o,formEncType:n&&n.formEncType||"application/x-www-form-urlencoded",formData:l,json:void 0,text:void 0};if(At(d.formMethod))return{path:e,submission:d};let u=wr(e);return t&&u.search&&Ep(u.search)&&a.append("index",""),u.search=`?${a}`,{path:vr(u),submission:d}}function Sg(t,e,n,r,s,i,o,a,l,d,u,h,f,p,m,x,b,y,w,v,k,C){let N=k?un(k[1])?k[1].error:k[1].data:void 0,D=s.createURL(i.location),S=s.createURL(l),E;if(u&&i.errors){let T=Object.keys(i.errors)[0];E=o.findIndex(L=>L.route.id===T)}else if(k&&un(k[1])){let T=k[0];E=o.findIndex(L=>L.route.id===T)-1}let O=k?k[1].statusCode:void 0,P=O&&O>=400,A={currentUrl:D,currentParams:i.matches[0]?.params||{},nextUrl:S,nextParams:o[0].params,...a,actionResult:N,actionStatus:O},I=hl(o),j=o.map((T,L)=>{let{route:F}=T,$=null;if(E!=null&&L>E)$=!1;else if(F.lazy)$=!0;else if(!Pp(F))$=!1;else if(u){let{shouldLoad:J}=Bv(F,i.loaderData,i.errors);$=J}else O5(i.loaderData,i.matches[L],T)&&($=!0);if($!==null)return sf(n,r,t,l,I,T,d,e,$);let V=!1;typeof C=="boolean"?V=C:P?V=!1:(h||D.pathname+D.search===S.pathname+S.search||D.search!==S.search||M5(i.matches[L],T))&&(V=!0);let W={...A,defaultShouldRevalidate:V},H=Lo(T,W);return sf(n,r,t,l,I,T,d,e,H,W,C)}),M=[];return m.forEach((T,L)=>{if(u||!o.some(Z=>Z.route.id===T.routeId)||p.has(L))return;let F=i.fetchers.get(L),$=F&&F.state!=="idle"&&F.data===void 0,V=_n(b,T.path,y??"/",!1,v);if(!V){if(w&&$)return;M.push({key:L,routeId:T.routeId,path:T.path,matches:null,match:null,request:null,controller:null});return}if(x.has(L))return;let W=Oc(V,T.path),H=new AbortController,J=li(s,T.path,H.signal),G=null;if(f.has(L))f.delete(L),G=vi(n,r,J,T.path,V,W,d,e);else if($)h&&(G=vi(n,r,J,T.path,V,W,d,e));else{let Z;typeof C=="boolean"?Z=C:P?Z=!1:Z=h;let re={...A,defaultShouldRevalidate:Z};Lo(W,re)&&(G=vi(n,r,J,T.path,V,W,d,e,re))}G&&M.push({key:L,routeId:T.routeId,path:T.path,matches:G,match:W,request:J,controller:H})}),{dsMatches:j,revalidatingFetchers:M}}function Pp(t){return t.loader!=null||t.middleware!=null&&t.middleware.length>0}function Bv(t,e,n){if(t.lazy)return{shouldLoad:!0,renderFallback:!0};if(!Pp(t))return{shouldLoad:!1,renderFallback:!1};let r=e!=null&&t.id in e,s=n!=null&&n[t.id]!==void 0;if(!r&&s)return{shouldLoad:!1,renderFallback:!1};if(typeof t.loader=="function"&&t.loader.hydrate===!0)return{shouldLoad:!0,renderFallback:!r};let i=!r&&!s;return{shouldLoad:i,renderFallback:i}}function O5(t,e,n){let r=!e||n.route.id!==e.route.id,s=!t.hasOwnProperty(n.route.id);return r||s}function M5(t,e){let n=t.route.path;return t.pathname!==e.pathname||n!=null&&n.endsWith("*")&&t.params["*"]!==e.params["*"]}function Lo(t,e){if(t.route.shouldRevalidate){let n=t.route.shouldRevalidate(e);if(typeof n=="boolean")return n}return e.defaultShouldRevalidate}function Cg(t,e,n,r,s,i){let o;if(t){let d=r[t];De(d,`No route found to patch children into: routeId = ${t}`),d.children||(d.children=[]),o=d.children}else o=n.activeRoutes;let a=[],l=[];if(e.forEach(d=>{let u=o.find(h=>_v(d,h));u?l.push({existingRoute:u,newRoute:d}):a.push(d)}),a.length>0){let d=Xo(a,s,[t||"_","patch",String(o?.length||"0")],r);o.push(...d)}if(i&&l.length>0)for(let d=0;d<l.length;d++){let{existingRoute:u,newRoute:h}=l[d],f=u,[p]=Xo([h],s,[],{},!0);Object.assign(f,{element:p.element?p.element:f.element,errorElement:p.errorElement?p.errorElement:f.errorElement,hydrateFallbackElement:p.hydrateFallbackElement?p.hydrateFallbackElement:f.hydrateFallbackElement})}n.hasHMRRoutes||n.setRoutes([...n.activeRoutes])}function _v(t,e){return"id"in t&&"id"in e&&t.id===e.id?!0:t.index===e.index&&t.path===e.path&&t.caseSensitive===e.caseSensitive?(!t.children||t.children.length===0)&&(!e.children||e.children.length===0)?!0:t.children?.every((n,r)=>e.children?.some(s=>_v(n,s)))??!1:!1}var jg=new WeakMap,Fv=({key:t,route:e,manifest:n,mapRouteProperties:r})=>{let s=n[e.id];if(De(s,"No route found in manifest"),!s.lazy||typeof s.lazy!="object")return;let i=s.lazy[t];if(!i)return;let o=jg.get(s);o||(o={},jg.set(s,o));let a=o[t];if(a)return a;let l=(async()=>{let d=Gj(t),h=s[t]!==void 0&&t!=="hasErrorBoundary";if(d)tt(!d,"Route property "+t+" is not a supported lazy route property. This property will be ignored."),o[t]=Promise.resolve();else if(h)tt(!1,`Route "${s.id}" has a static property "${t}" defined. The lazy property will be ignored.`);else{let f=await i();f!=null&&(Object.assign(s,{[t]:f}),Object.assign(s,r(s)))}typeof s.lazy=="object"&&(s.lazy[t]=void 0,Object.values(s.lazy).every(f=>f===void 0)&&(s.lazy=void 0))})();return o[t]=l,l},Ng=new WeakMap;function A5(t,e,n,r,s){let i=n[t.id];if(De(i,"No route found in manifest"),!t.lazy)return{lazyRoutePromise:void 0,lazyHandlerPromise:void 0};if(typeof t.lazy=="function"){let u=Ng.get(i);if(u)return{lazyRoutePromise:u,lazyHandlerPromise:u};let h=(async()=>{De(typeof t.lazy=="function","No lazy route function found");let f=await t.lazy(),p={};for(let m in f){let x=f[m];if(x===void 0)continue;let b=Yj(m),w=i[m]!==void 0&&m!=="hasErrorBoundary";b?tt(!b,"Route property "+m+" is not a supported property to be returned from a lazy route function. This property will be ignored."):w?tt(!w,`Route "${i.id}" has a static property "${m}" defined but its lazy function is also returning a value for this property. The lazy route property "${m}" will be ignored.`):p[m]=x}Object.assign(i,p),Object.assign(i,{...r(i),lazy:void 0})})();return Ng.set(i,h),h.catch(()=>{}),{lazyRoutePromise:h,lazyHandlerPromise:h}}let o=Object.keys(t.lazy),a=[],l;for(let u of o){if(s&&s.includes(u))continue;let h=Fv({key:u,route:t,manifest:n,mapRouteProperties:r});h&&(a.push(h),u===e&&(l=h))}let d=a.length>0?Promise.all(a).then(()=>{}):void 0;return d?.catch(()=>{}),l?.catch(()=>{}),{lazyRoutePromise:d,lazyHandlerPromise:l}}async function Pg(t){let e=t.matches.filter(s=>s.shouldLoad),n={};return(await Promise.all(e.map(s=>s.resolve()))).forEach((s,i)=>{n[e[i].route.id]=s}),n}async function T5(t){return t.matches.some(e=>e.route.middleware)?zv(t,()=>Pg(t)):Pg(t)}function zv(t,e){return R5(t,e,r=>{if(G5(r))throw r;return r},V5,n);function n(r,s,i){if(i)return Promise.resolve(Object.assign(i.value,{[s]:{type:"error",result:r}}));{let{matches:o}=t,a=Math.min(Math.max(o.findIndex(d=>d.route.id===s),0),Math.max(o.findIndex(d=>d.shouldCallHandler()),0)),l=qr(o,o[a].route.id).route.id;return Promise.resolve({[l]:{type:"error",result:r}})}}}async function R5(t,e,n,r,s){let{matches:i,...o}=t,a=i.flatMap(d=>d.route.middleware?d.route.middleware.map(u=>[d.route.id,u]):[]);return await Hv(o,a,e,n,r,s)}async function Hv(t,e,n,r,s,i,o=0){let{request:a}=t;if(a.signal.aborted)throw a.signal.reason??new Error(`Request aborted: ${a.method} ${a.url}`);let l=e[o];if(!l)return await n();let[d,u]=l,h,f=async()=>{if(h)throw new Error("You may only call `next()` once per middleware");try{return h={value:await Hv(t,e,n,r,s,i,o+1)},h.value}catch(p){return h={value:await i(p,d,h)},h.value}};try{let p=await u(t,f),m=p!=null?r(p):void 0;return s(m)?m:h?m??h.value:(h={value:await f()},h.value)}catch(p){return await i(p,d,h)}}function Vv(t,e,n,r,s){let i=Fv({key:"middleware",route:r.route,manifest:e,mapRouteProperties:t}),o=A5(r.route,At(n.method)?"action":"loader",e,t,s);return{middleware:i,route:o.lazyRoutePromise,handler:o.lazyHandlerPromise}}function sf(t,e,n,r,s,i,o,a,l,d=null,u){let h=!1,f=Vv(t,e,n,i,o);return{...i,_lazyPromises:f,shouldLoad:l,shouldRevalidateArgs:d,shouldCallHandler(p){return h=!0,d?typeof u=="boolean"?Lo(i,{...d,defaultShouldRevalidate:u}):typeof p=="boolean"?Lo(i,{...d,defaultShouldRevalidate:p}):Lo(i,d):l},resolve(p){let{lazy:m,loader:x,middleware:b}=i.route,y=h||l||p&&!At(n.method)&&(m||x),w=b&&b.length>0&&!x&&!m;return y&&(At(n.method)||!w)?I5({request:n,path:r,pattern:s,match:i,lazyHandlerPromise:f?.handler,lazyRoutePromise:f?.route,handlerOverride:p,scopedContext:a}):Promise.resolve({type:"data",result:void 0})}}}function vi(t,e,n,r,s,i,o,a,l=null){return s.map(d=>d.route.id!==i.route.id?{...d,shouldLoad:!1,shouldRevalidateArgs:l,shouldCallHandler:()=>!1,_lazyPromises:Vv(t,e,n,d,o),resolve:()=>Promise.resolve({type:"data",result:void 0})}:sf(t,e,n,r,hl(s),d,o,a,!0,l))}async function L5(t,e,n,r,s,i,o){r.some(u=>u._lazyPromises?.middleware)&&await Promise.all(r.map(u=>u._lazyPromises?.middleware));let a={request:e,url:Wv(e,n),pattern:hl(r),params:r[0].params,context:i,matches:r},d=await t({...a,fetcherKey:s,runClientMiddleware:u=>{let h=a;return zv(h,()=>u({...h,fetcherKey:s,runClientMiddleware:()=>{throw new Error("Cannot call `runClientMiddleware()` from within an `runClientMiddleware` handler")}}))}});try{await Promise.all(r.flatMap(u=>[u._lazyPromises?.handler,u._lazyPromises?.route]))}catch{}return d}async function I5({request:t,path:e,pattern:n,match:r,lazyHandlerPromise:s,lazyRoutePromise:i,handlerOverride:o,scopedContext:a}){let l,d,u=At(t.method),h=u?"action":"loader",f=p=>{let m,x=new Promise((w,v)=>m=v);d=()=>m(),t.signal.addEventListener("abort",d);let b=w=>typeof p!="function"?Promise.reject(new Error(`You cannot call the handler for a route which defines a boolean "${h}" [routeId: ${r.route.id}]`)):p({request:t,url:Wv(t,e),pattern:n,params:r.params,context:a},...w!==void 0?[w]:[]),y=(async()=>{try{return{type:"data",result:await(o?o(v=>b(v)):b())}}catch(w){return{type:"error",result:w}}})();return Promise.race([y,x])};try{let p=u?r.route.action:r.route.loader;if(s||i)if(p){let m,[x]=await Promise.all([f(p).catch(b=>{m=b}),s,i]);if(m!==void 0)throw m;l=x}else{await s;let m=u?r.route.action:r.route.loader;if(m)[l]=await Promise.all([f(m),i]);else if(h==="action"){let x=new URL(t.url),b=x.pathname+x.search;throw Sn(405,{method:t.method,pathname:b,routeId:r.route.id})}else return{type:"data",result:void 0}}else if(p)l=await f(p);else{let m=new URL(t.url),x=m.pathname+m.search;throw Sn(404,{pathname:x})}}catch(p){return{type:"error",result:p}}finally{d&&t.signal.removeEventListener("abort",d)}return l}async function $5(t){let e=t.headers.get("Content-Type");return e&&/\bapplication\/json\b/.test(e)?t.body==null?null:t.json():t.text()}async function B5(t){let{result:e,type:n}=t;if(Dp(e)){let r;try{r=await $5(e)}catch(s){return{type:"error",error:s}}return n==="error"?{type:"error",error:new ul(e.status,e.statusText,r),statusCode:e.status,headers:e.headers}:{type:"data",data:r,statusCode:e.status,headers:e.headers}}return n==="error"?Rg(e)?e.data instanceof Error?{type:"error",error:e.data,statusCode:e.init?.status,headers:e.init?.headers?new Headers(e.init.headers):void 0}:{type:"error",error:H5(e),statusCode:Qo(e)?e.status:void 0,headers:e.init?.headers?new Headers(e.init.headers):void 0}:{type:"error",error:e,statusCode:Qo(e)?e.status:void 0}:Rg(e)?{type:"data",data:e.data,statusCode:e.init?.status,headers:e.init?.headers?new Headers(e.init.headers):void 0}:{type:"data",data:e}}function _5(t,e,n,r,s){let i=t.headers.get("Location");if(De(i,"Redirects returned/thrown from loaders/actions must have a Location header"),!jp(i)){let o=r.slice(0,r.findIndex(a=>a.route.id===n)+1);i=rf(new URL(e.url),o,s,i),t.headers.set("Location",i)}return t}var Dg=["about:","blob:","chrome:","chrome-untrusted:","content:","data:","devtools:","file:","filesystem:","javascript:"];function Eg(t,e,n,r){if(jp(t)){let s=t,i=s.startsWith("//")?new URL(e.protocol+s):new URL(s);if(Dg.includes(i.protocol))throw new Error("Invalid redirect location");let o=Tn(i.pathname,n)!=null;if(i.origin===e.origin&&o)return Np(i.pathname)+i.search+i.hash}try{let s=r.createURL(t);if(Dg.includes(s.protocol))throw new Error("Invalid redirect location")}catch{}return t}function li(t,e,n,r){let s=t.createURL(Kv(e)).toString(),i={signal:n};if(r&&At(r.formMethod)){let{formMethod:o,formEncType:a}=r;i.method=o.toUpperCase(),a==="application/json"?(i.headers=new Headers({"Content-Type":a}),i.body=JSON.stringify(r.json)):a==="text/plain"?i.body=r.text:a==="application/x-www-form-urlencoded"&&r.formData?i.body=of(r.formData):i.body=r.formData}return new Request(s,i)}function Wv(t,e){let n=new URL(t.url),r=typeof e=="string"?wr(e):e;if(n.pathname=r.pathname||"/",r.search){let s=new URLSearchParams(r.search),i=s.getAll("index");s.delete("index");for(let o of i.filter(Boolean))s.append("index",o);n.search=s.size?`?${s.toString()}`:""}else n.search="";return n.hash=r.hash||"",n}function of(t){let e=new URLSearchParams;for(let[n,r]of t.entries())e.append(n,typeof r=="string"?r:r.name);return e}function Og(t){let e=new FormData;for(let[n,r]of t.entries())e.append(n,r);return e}function F5(t,e,n,r=!1,s=!1){let i={},o=null,a,l=!1,d={},u=n&&un(n[1])?n[1].error:void 0;return t.forEach(h=>{if(!(h.route.id in e))return;let f=h.route.id,p=e[f];if(De(!Ps(p),"Cannot handle redirect results in processLoaderData"),un(p)){let m=p.error;if(u!==void 0&&(m=u,u=void 0),o=o||{},s)o[f]=m;else{let x=qr(t,f);o[x.route.id]==null&&(o[x.route.id]=m)}r||(i[f]=$v),l||(l=!0,a=Qo(p.error)?p.error.status:500),p.headers&&(d[f]=p.headers)}else i[f]=p.data,p.statusCode&&p.statusCode!==200&&!l&&(a=p.statusCode),p.headers&&(d[f]=p.headers)}),u!==void 0&&n&&(o={[n[0]]:u},n[2]&&(i[n[2]]=void 0)),{loaderData:i,errors:o,statusCode:a||200,loaderHeaders:d}}function Mg(t,e,n,r,s,i,o){let{loaderData:a,errors:l}=F5(e,n,r);return s.filter(d=>!d.matches||d.matches.some(u=>u.shouldLoad)).forEach(d=>{let{key:u,match:h,controller:f}=d;if(f&&f.signal.aborted)return;let p=i[u];if(De(p,"Did not find corresponding fetcher result"),un(p)){let m=qr(t.matches,h?.route.id);l&&l[m.route.id]||(l={...l,[m.route.id]:p.error}),o.delete(u)}else if(Ps(p))De(!1,"Unhandled fetcher revalidation redirect");else{let m=lr(p.data);o.set(u,m)}}),{loaderData:a,errors:l}}function Ag(t,e,n,r){let s=Object.entries(e).filter(([,i])=>i!==$v).reduce((i,[o,a])=>(i[o]=a,i),{});for(let i of n){let o=i.route.id;if(!e.hasOwnProperty(o)&&t.hasOwnProperty(o)&&i.route.loader&&(s[o]=t[o]),r&&r.hasOwnProperty(o))break}return s}function Tg(t){return t?un(t[1])?{actionData:{}}:{actionData:{[t[0]]:t[1].data}}:{}}function qr(t,e){return(e?t.slice(0,t.findIndex(r=>r.route.id===e)+1):[...t]).reverse().find(r=>r.route.hasErrorBoundary===!0)||t[0]}function zl(t){let e=t.length===1?t[0]:t.find(n=>n.index||!n.path||n.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:e}],route:e}}function Sn(t,{pathname:e,routeId:n,method:r,type:s,message:i}={}){let o="Unknown Server Error",a="Unknown @remix-run/router error";return t===400?(o="Bad Request",r&&e&&n?a=`You made a ${r} request to "${e}" but did not provide a \`loader\` for route "${n}", so there is no way to handle the request.`:s==="invalid-body"&&(a="Unable to encode submission body")):t===403?(o="Forbidden",a=`Route "${n}" does not match URL "${e}"`):t===404?(o="Not Found",a=`No route matches URL "${e}"`):t===405&&(o="Method Not Allowed",r&&e&&n?a=`You made a ${r.toUpperCase()} request to "${e}" but did not provide an \`action\` for route "${n}", so there is no way to handle the request.`:r&&(a=`Invalid request method "${r.toUpperCase()}"`)),new ul(t||500,o,new Error(a),!0)}function Hl(t){let e=Object.entries(t);for(let n=e.length-1;n>=0;n--){let[r,s]=e[n];if(Ps(s))return{key:r,result:s}}}function Kv(t){let e=typeof t=="string"?wr(t):t;return vr({...e,hash:""})}function z5(t,e){return t.pathname!==e.pathname||t.search!==e.search?!1:t.hash===""?e.hash!=="":t.hash===e.hash?!0:e.hash!==""}function H5(t){return new ul(t.init?.status??500,t.init?.statusText??"Internal Server Error",t.data)}function V5(t){return t!=null&&typeof t=="object"&&Object.entries(t).every(([e,n])=>typeof e=="string"&&W5(n))}function W5(t){return t!=null&&typeof t=="object"&&"type"in t&&"result"in t&&(t.type==="data"||t.type==="error")}function K5(t){return Dp(t.result)&&Lv.has(t.result.status)}function un(t){return t.type==="error"}function Ps(t){return(t&&t.type)==="redirect"}function Rg(t){return typeof t=="object"&&t!=null&&"type"in t&&"data"in t&&"init"in t&&t.type==="DataWithResponseInit"}function Dp(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.headers=="object"&&typeof t.body<"u"}function U5(t){return Lv.has(t)}function G5(t){return Dp(t)&&U5(t.status)&&t.headers.has("Location")}function q5(t){return S5.has(t.toUpperCase())}function At(t){return w5.has(t.toUpperCase())}function Ep(t){return new URLSearchParams(t).getAll("index").some(e=>e==="")}function Oc(t,e){let n=typeof e=="string"?wr(e).search:e.search;if(t[t.length-1].route.index&&Ep(n||""))return t[t.length-1];let r=Ov(t);return r[r.length-1]}function Lg(t){let{formMethod:e,formAction:n,formEncType:r,text:s,formData:i,json:o}=t;if(!(!e||!n||!r)){if(s!=null)return{formMethod:e,formAction:n,formEncType:r,formData:void 0,json:void 0,text:s};if(i!=null)return{formMethod:e,formAction:n,formEncType:r,formData:i,json:void 0,text:void 0};if(o!==void 0)return{formMethod:e,formAction:n,formEncType:r,formData:void 0,json:o,text:void 0}}}function Lu(t,e,n,r){return r?{state:"loading",location:t,matches:e,historyAction:n,formMethod:r.formMethod,formAction:r.formAction,formEncType:r.formEncType,formData:r.formData,json:r.json,text:r.text}:{state:"loading",location:t,matches:e,historyAction:n,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function Y5(t,e,n,r){return{state:"submitting",location:t,matches:e,historyAction:n,formMethod:r.formMethod,formAction:r.formAction,formEncType:r.formEncType,formData:r.formData,json:r.json,text:r.text}}function mo(t,e){return t?{state:"loading",formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text,data:e}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function X5(t,e){return{state:"submitting",formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text,data:e?e.data:void 0}}function lr(t){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function Q5(t,e){try{let n=t.sessionStorage.getItem(Iv);if(n){let r=JSON.parse(n);for(let[s,i]of Object.entries(r||{}))i&&Array.isArray(i)&&e.set(s,new Set(i||[]))}}catch{}}function J5(t,e){if(e.size>0){let n={};for(let[r,s]of e)n[r]=[...s];try{t.sessionStorage.setItem(Iv,JSON.stringify(n))}catch(r){tt(!1,`Failed to save applied view transitions in sessionStorage (${r}).`)}}}function Ig(){let t,e,n=new Promise((r,s)=>{t=async i=>{r(i);try{await n}catch{}},e=async i=>{s(i);try{await n}catch{}}});return{promise:n,resolve:t,reject:e}}var Gs=g.createContext(null);Gs.displayName="DataRouter";var fl=g.createContext(null);fl.displayName="DataRouterState";var Uv=g.createContext(!1);function Gv(){return g.useContext(Uv)}var Op=g.createContext({isTransitioning:!1});Op.displayName="ViewTransition";var qv=g.createContext(new Map);qv.displayName="Fetchers";var Z5=g.createContext(null);Z5.displayName="Await";var mn=g.createContext(null);mn.displayName="Navigation";var Gd=g.createContext(null);Gd.displayName="Location";var Rn=g.createContext({outlet:null,matches:[],isDataRoute:!1});Rn.displayName="Route";var Mp=g.createContext(null);Mp.displayName="RouteError";var Yv="REACT_ROUTER_ERROR",e3="REDIRECT",t3="ROUTE_ERROR_RESPONSE";function n3(t){if(t.startsWith(`${Yv}:${e3}:{`))try{let e=JSON.parse(t.slice(28));if(typeof e=="object"&&e&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.location=="string"&&typeof e.reloadDocument=="boolean"&&typeof e.replace=="boolean")return e}catch{}}function r3(t){if(t.startsWith(`${Yv}:${t3}:{`))try{let e=JSON.parse(t.slice(40));if(typeof e=="object"&&e&&typeof e.status=="number"&&typeof e.statusText=="string")return new ul(e.status,e.statusText,e.data)}catch{}}function s3(t,{relative:e}={}){De(Yi(),"useHref() may be used only in the context of a <Router> component.");let{basename:n,navigator:r}=g.useContext(mn),{hash:s,pathname:i,search:o}=ml(t,{relative:e}),a=i;return n!=="/"&&(a=i==="/"?n:On([n,i])),r.createHref({pathname:a,search:o,hash:s})}function Yi(){return g.useContext(Gd)!=null}function gn(){return De(Yi(),"useLocation() may be used only in the context of a <Router> component."),g.useContext(Gd).location}var Xv="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Qv(t){g.useContext(mn).static||g.useLayoutEffect(t)}function Lt(){let{isDataRoute:t}=g.useContext(Rn);return t?y3():i3()}function i3(){De(Yi(),"useNavigate() may be used only in the context of a <Router> component.");let t=g.useContext(Gs),{basename:e,navigator:n}=g.useContext(mn),{matches:r}=g.useContext(Rn),{pathname:s}=gn(),i=JSON.stringify(Ud(r)),o=g.useRef(!1);return Qv(()=>{o.current=!0}),g.useCallback((l,d={})=>{if(tt(o.current,Xv),!o.current)return;if(typeof l=="number"){n.go(l);return}let u=dl(l,JSON.parse(i),s,d.relative==="path");t==null&&e!=="/"&&(u.pathname=u.pathname==="/"?e:On([e,u.pathname])),(d.replace?n.replace:n.push)(u,d.state,d)},[e,n,i,s,t])}var Jv=g.createContext(null);function o3(){return g.useContext(Jv)}function a3(t){let e=g.useContext(Rn).outlet;return g.useMemo(()=>e&&g.createElement(Jv.Provider,{value:t},e),[e,t])}function pl(){let{matches:t}=g.useContext(Rn);return t[t.length-1]?.params??{}}function ml(t,{relative:e}={}){let{matches:n}=g.useContext(Rn),{pathname:r}=gn(),s=JSON.stringify(Ud(n));return g.useMemo(()=>dl(t,JSON.parse(s),r,e==="path"),[t,s,r,e])}function l3(t,e,n){De(Yi(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:r}=g.useContext(mn),{matches:s}=g.useContext(Rn),i=s[s.length-1],o=i?i.params:{},a=i?i.pathname:"/",l=i?i.pathnameBase:"/",d=i&&i.route;{let b=d&&d.path||"";e1(a,!d||b.endsWith("*")||b.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${a}" (under <Route path="${b}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
|
|
20
20
|
|
|
21
|
-
Please change the parent <Route path="${b}"> to <Route path="${b==="/"?"*":`${b}/*`}">.`)}let u=gn(),h;h=u;let f=h.pathname||"/",p=f;if(l!=="/"){let b=l.replace(/^\//,"").split("/");p="/"+f.replace(/^\//,"").split("/").slice(b.length).join("/")}let m=n&&n.state.matches.length?n.state.matches.map(b=>Object.assign(b,{route:n.manifest[b.route.id]||b.route})):Nv(t,{pathname:p});return tt(d||m!=null,`No routes matched location "${h.pathname}${h.search}${h.hash}" `),tt(m==null||m[m.length-1].route.element!==void 0||m[m.length-1].route.Component!==void 0||m[m.length-1].route.lazy!==void 0,`Matched leaf route at location "${h.pathname}${h.search}${h.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`),f3(m&&m.map(b=>Object.assign({},b,{params:Object.assign({},o,b.params),pathname:On([l,r.encodeLocation?r.encodeLocation(b.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:b.pathname]),pathnameBase:b.pathnameBase==="/"?l:On([l,r.encodeLocation?r.encodeLocation(b.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:b.pathnameBase])})),s,n)}function c3(){let t=b3(),e=Qo(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),n=t instanceof Error?t.stack:null,r="rgba(200,200,200, 0.5)",s={padding:"0.5rem",backgroundColor:r},i={padding:"2px 4px",backgroundColor:r},o=null;return console.error("Error handled by React Router default ErrorBoundary:",t),o=g.createElement(g.Fragment,null,g.createElement("p",null,"💿 Hey developer 👋"),g.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",g.createElement("code",{style:i},"ErrorBoundary")," or"," ",g.createElement("code",{style:i},"errorElement")," prop on your route.")),g.createElement(g.Fragment,null,g.createElement("h2",null,"Unexpected Application Error!"),g.createElement("h3",{style:{fontStyle:"italic"}},e),n?g.createElement("pre",{style:s},n):null,o)}var d3=g.createElement(c3,null),Zv=class extends g.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,e){return e.location!==t.location||e.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:e.error,location:e.location,revalidation:t.revalidation||e.revalidation}}componentDidCatch(t,e){this.props.onError?this.props.onError(t,e):console.error("React Router caught the following error during render",t)}render(){let t=this.state.error;if(this.context&&typeof t=="object"&&t&&"digest"in t&&typeof t.digest=="string"){const n=r3(t.digest);n&&(t=n)}let e=t!==void 0?g.createElement(Rn.Provider,{value:this.props.routeContext},g.createElement(Mp.Provider,{value:t,children:this.props.component})):this.props.children;return this.context?g.createElement(u3,{error:t},e):e}};Zv.contextType=Uv;var Iu=new WeakMap;function u3({children:t,error:e}){let{basename:n}=g.useContext(mn);if(typeof e=="object"&&e&&"digest"in e&&typeof e.digest=="string"){let r=n3(e.digest);if(r){let s=Iu.get(e);if(s)throw s;let i=Av(r.location,n);if(Mv&&!Iu.get(e))if(i.isExternal||r.reloadDocument)window.location.href=i.absoluteURL||i.to;else{const o=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:r.replace}));throw Iu.set(e,o),o}return g.createElement("meta",{httpEquiv:"refresh",content:`0;url=${i.absoluteURL||i.to}`})}}return t}function h3({routeContext:t,match:e,children:n}){let r=g.useContext(Gs);return r&&r.static&&r.staticContext&&(e.route.errorElement||e.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=e.route.id),g.createElement(Rn.Provider,{value:t},n)}function f3(t,e=[],n){let r=n?.state;if(t==null){if(!r)return null;if(r.errors)t=r.matches;else if(e.length===0&&!r.initialized&&r.matches.length>0)t=r.matches;else return null}let s=t,i=r?.errors;if(i!=null){let u=s.findIndex(h=>h.route.id&&i?.[h.route.id]!==void 0);De(u>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(i).join(",")}`),s=s.slice(0,Math.min(s.length,u+1))}let o=!1,a=-1;if(n&&r){o=r.renderFallback;for(let u=0;u<s.length;u++){let h=s[u];if((h.route.HydrateFallback||h.route.hydrateFallbackElement)&&(a=u),h.route.id){let{loaderData:f,errors:p}=r,m=h.route.loader&&!f.hasOwnProperty(h.route.id)&&(!p||p[h.route.id]===void 0);if(h.route.lazy||m){n.isStatic&&(o=!0),a>=0?s=s.slice(0,a+1):s=[s[0]];break}}}}let l=n?.onError,d=r&&l?(u,h)=>{l(u,{location:r.location,params:r.matches?.[0]?.params??{},pattern:hl(r.matches),errorInfo:h})}:void 0;return s.reduceRight((u,h,f)=>{let p,m=!1,x=null,b=null;r&&(p=i&&h.route.id?i[h.route.id]:void 0,x=h.route.errorElement||d3,o&&(a<0&&f===0?(e1("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),m=!0,b=null):a===f&&(m=!0,b=h.route.hydrateFallbackElement||null)));let y=e.concat(s.slice(0,f+1)),w=()=>{let v;return p?v=x:m?v=b:h.route.Component?v=g.createElement(h.route.Component,null):h.route.element?v=h.route.element:v=u,g.createElement(h3,{match:h,routeContext:{outlet:u,matches:y,isDataRoute:r!=null},children:v})};return r&&(h.route.ErrorBoundary||h.route.errorElement||f===0)?g.createElement(Zv,{location:r.location,revalidation:r.revalidation,component:x,error:p,children:w(),routeContext:{outlet:null,matches:y,isDataRoute:!0},onError:d}):w()},null)}function Ap(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function p3(t){let e=g.useContext(Gs);return De(e,Ap(t)),e}function m3(t){let e=g.useContext(fl);return De(e,Ap(t)),e}function g3(t){let e=g.useContext(Rn);return De(e,Ap(t)),e}function Tp(t){let e=g3(t),n=e.matches[e.matches.length-1];return De(n.route.id,`${t} can only be used on routes that contain a unique "id"`),n.route.id}function x3(){return Tp("useRouteId")}function b3(){let t=g.useContext(Mp),e=m3("useRouteError"),n=Tp("useRouteError");return t!==void 0?t:e.errors?.[n]}function y3(){let{router:t}=p3("useNavigate"),e=Tp("useNavigate"),n=g.useRef(!1);return Qv(()=>{n.current=!0}),g.useCallback(async(s,i={})=>{tt(n.current,Xv),n.current&&(typeof s=="number"?await t.navigate(s):await t.navigate(s,{fromRouteId:e,...i}))},[t,e])}var $g={};function e1(t,e,n){!e&&!$g[t]&&($g[t]=!0,tt(!1,n))}var Bg={};function _g(t,e){!t&&!Bg[e]&&(Bg[e]=!0,console.warn(e))}var v3="useOptimistic",Fg=Lj[v3],w3=()=>{};function k3(t){return Fg?Fg(t):[t,w3]}function S3(t){let e={hasErrorBoundary:t.hasErrorBoundary||t.ErrorBoundary!=null||t.errorElement!=null};return t.Component&&(t.element&&tt(!1,"You should not include both `Component` and `element` on your route - `Component` will be used."),Object.assign(e,{element:g.createElement(t.Component),Component:void 0})),t.HydrateFallback&&(t.hydrateFallbackElement&&tt(!1,"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used."),Object.assign(e,{hydrateFallbackElement:g.createElement(t.HydrateFallback),HydrateFallback:void 0})),t.ErrorBoundary&&(t.errorElement&&tt(!1,"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used."),Object.assign(e,{errorElement:g.createElement(t.ErrorBoundary),ErrorBoundary:void 0})),e}var C3=["HydrateFallback","hydrateFallbackElement"],j3=class{constructor(){this.status="pending",this.promise=new Promise((t,e)=>{this.resolve=n=>{this.status==="pending"&&(this.status="resolved",t(n))},this.reject=n=>{this.status==="pending"&&(this.status="rejected",e(n))}})}};function N3({router:t,flushSync:e,onError:n,useTransitions:r}){r=Gv()||r;let[i,o]=g.useState(t.state),[a,l]=k3(i),[d,u]=g.useState(),[h,f]=g.useState({isTransitioning:!1}),[p,m]=g.useState(),[x,b]=g.useState(),[y,w]=g.useState(),v=g.useRef(new Map),k=g.useCallback((S,{deletedFetchers:E,newErrors:O,flushSync:P,viewTransitionOpts:A})=>{O&&n&&Object.values(O).forEach(j=>n(j,{location:S.location,params:S.matches[0]?.params??{},pattern:hl(S.matches)})),S.fetchers.forEach((j,M)=>{j.data!==void 0&&v.current.set(M,j.data)}),E.forEach(j=>v.current.delete(j)),_g(P===!1||e!=null,'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from "react-router/dom"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.');let I=t.window!=null&&t.window.document!=null&&typeof t.window.document.startViewTransition=="function";if(_g(A==null||I,"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available."),!A||!I){e&&P?e(()=>o(S)):r===!1?o(S):g.startTransition(()=>{r===!0&&l(j=>zg(j,S)),o(S)});return}if(e&&P){e(()=>{x&&(p?.resolve(),x.skipTransition()),f({isTransitioning:!0,flushSync:!0,currentLocation:A.currentLocation,nextLocation:A.nextLocation})});let j=t.window.document.startViewTransition(()=>{e(()=>o(S))});j.finished.finally(()=>{e(()=>{m(void 0),b(void 0),u(void 0),f({isTransitioning:!1})})}),e(()=>b(j));return}x?(p?.resolve(),x.skipTransition(),w({state:S,currentLocation:A.currentLocation,nextLocation:A.nextLocation})):(u(S),f({isTransitioning:!0,flushSync:!1,currentLocation:A.currentLocation,nextLocation:A.nextLocation}))},[t.window,e,x,p,r,l,n]);g.useLayoutEffect(()=>t.subscribe(k),[t,k]),g.useEffect(()=>{h.isTransitioning&&!h.flushSync&&m(new j3)},[h]),g.useEffect(()=>{if(p&&d&&t.window){let S=d,E=p.promise,O=t.window.document.startViewTransition(async()=>{r===!1?o(S):g.startTransition(()=>{r===!0&&l(P=>zg(P,S)),o(S)}),await E});O.finished.finally(()=>{m(void 0),b(void 0),u(void 0),f({isTransitioning:!1})}),b(O)}},[d,p,t.window,r,l]),g.useEffect(()=>{p&&d&&a.location.key===d.location.key&&p.resolve()},[p,x,a.location,d]),g.useEffect(()=>{!h.isTransitioning&&y&&(u(y.state),f({isTransitioning:!0,flushSync:!1,currentLocation:y.currentLocation,nextLocation:y.nextLocation}),w(void 0))},[h.isTransitioning,y]);let C=g.useMemo(()=>({createHref:t.createHref,encodeLocation:t.encodeLocation,go:S=>t.navigate(S),push:(S,E,O)=>t.navigate(S,{state:E,preventScrollReset:O?.preventScrollReset}),replace:(S,E,O)=>t.navigate(S,{replace:!0,state:E,preventScrollReset:O?.preventScrollReset})}),[t]),N=t.basename||"/",D=g.useMemo(()=>({router:t,navigator:C,static:!1,basename:N,onError:n}),[t,C,N,n]);return g.createElement(g.Fragment,null,g.createElement(Gs.Provider,{value:D},g.createElement(fl.Provider,{value:a},g.createElement(qv.Provider,{value:v.current},g.createElement(Op.Provider,{value:h},g.createElement(O3,{basename:N,location:a.location,navigationType:a.historyAction,navigator:C,useTransitions:r},g.createElement(P3,{routes:t.routes,manifest:t.manifest,future:t.future,state:a,isStatic:!1,onError:n})))))),null)}function zg(t,e){return{...t,navigation:e.navigation.state!=="idle"?e.navigation:t.navigation,revalidation:e.revalidation!=="idle"?e.revalidation:t.revalidation,actionData:e.navigation.state!=="submitting"?e.actionData:t.actionData,fetchers:e.fetchers}}var P3=g.memo(D3);function D3({routes:t,manifest:e,future:n,state:r,isStatic:s,onError:i}){return l3(t,void 0,{manifest:e,state:r,isStatic:s,onError:i})}function t1({to:t,replace:e,state:n,relative:r}){De(Yi(),"<Navigate> may be used only in the context of a <Router> component.");let{static:s}=g.useContext(mn);tt(!s,"<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.");let{matches:i}=g.useContext(Rn),{pathname:o}=gn(),a=Lt(),l=dl(t,Ud(i),o,r==="path"),d=JSON.stringify(l);return g.useEffect(()=>{a(JSON.parse(d),{replace:e,state:n,relative:r})},[a,d,r,e,n]),null}function E3(t){return a3(t.context)}function O3({basename:t="/",children:e=null,location:n,navigationType:r="POP",navigator:s,static:i=!1,useTransitions:o}){De(!Yi(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let a=t.replace(/^\/*/,"/"),l=g.useMemo(()=>({basename:a,navigator:s,static:i,useTransitions:o,future:{}}),[a,s,i,o]);typeof n=="string"&&(n=wr(n));let{pathname:d="/",search:u="",hash:h="",state:f=null,key:p="default",mask:m}=n,x=g.useMemo(()=>{let b=Tn(d,a);return b==null?null:{location:{pathname:b,search:u,hash:h,state:f,key:p,mask:m},navigationType:r}},[a,d,u,h,f,p,r,m]);return tt(x!=null,`<Router basename="${a}"> is not able to match the URL "${d}${u}${h}" because it does not start with the basename, so the <Router> won't render anything.`),x==null?null:g.createElement(mn.Provider,{value:l},g.createElement(Gd.Provider,{children:e,value:x}))}var Mc="get",Ac="application/x-www-form-urlencoded";function qd(t){return typeof HTMLElement<"u"&&t instanceof HTMLElement}function M3(t){return qd(t)&&t.tagName.toLowerCase()==="button"}function A3(t){return qd(t)&&t.tagName.toLowerCase()==="form"}function T3(t){return qd(t)&&t.tagName.toLowerCase()==="input"}function R3(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function L3(t,e){return t.button===0&&(!e||e==="_self")&&!R3(t)}function af(t=""){return new URLSearchParams(typeof t=="string"||Array.isArray(t)||t instanceof URLSearchParams?t:Object.keys(t).reduce((e,n)=>{let r=t[n];return e.concat(Array.isArray(r)?r.map(s=>[n,s]):[[n,r]])},[]))}function I3(t,e){let n=af(t);return e&&e.forEach((r,s)=>{n.has(s)||e.getAll(s).forEach(i=>{n.append(s,i)})}),n}var Vl=null;function $3(){if(Vl===null)try{new FormData(document.createElement("form"),0),Vl=!1}catch{Vl=!0}return Vl}var B3=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function $u(t){return t!=null&&!B3.has(t)?(tt(!1,`"${t}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${Ac}"`),null):t}function _3(t,e){let n,r,s,i,o;if(A3(t)){let a=t.getAttribute("action");r=a?Tn(a,e):null,n=t.getAttribute("method")||Mc,s=$u(t.getAttribute("enctype"))||Ac,i=new FormData(t)}else if(M3(t)||T3(t)&&(t.type==="submit"||t.type==="image")){let a=t.form;if(a==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let l=t.getAttribute("formaction")||a.getAttribute("action");if(r=l?Tn(l,e):null,n=t.getAttribute("formmethod")||a.getAttribute("method")||Mc,s=$u(t.getAttribute("formenctype"))||$u(a.getAttribute("enctype"))||Ac,i=new FormData(a,t),!$3()){let{name:d,type:u,value:h}=t;if(u==="image"){let f=d?`${d}.`:"";i.append(`${f}x`,"0"),i.append(`${f}y`,"0")}else d&&i.append(d,h)}}else{if(qd(t))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');n=Mc,r=null,s=Ac,o=t}return i&&s==="text/plain"&&(o=i,i=void 0),{action:r,method:n.toLowerCase(),encType:s,formData:i,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function Rp(t,e){if(t===!1||t===null||typeof t>"u")throw new Error(e)}function n1(t,e,n,r){let s=typeof t=="string"?new URL(t,typeof window>"u"?"server://singlefetch/":window.location.origin):t;return n?s.pathname.endsWith("/")?s.pathname=`${s.pathname}_.${r}`:s.pathname=`${s.pathname}.${r}`:s.pathname==="/"?s.pathname=`_root.${r}`:e&&Tn(s.pathname,e)==="/"?s.pathname=`${Xc(e)}/_root.${r}`:s.pathname=`${Xc(s.pathname)}.${r}`,s}async function F3(t,e){if(t.id in e)return e[t.id];try{let n=await import(t.module);return e[t.id]=n,n}catch(n){return console.error(`Error loading route module \`${t.module}\`, reloading page...`),console.error(n),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function z3(t){return t==null?!1:t.href==null?t.rel==="preload"&&typeof t.imageSrcSet=="string"&&typeof t.imageSizes=="string":typeof t.rel=="string"&&typeof t.href=="string"}async function H3(t,e,n){let r=await Promise.all(t.map(async s=>{let i=e.routes[s.route.id];if(i){let o=await F3(i,n);return o.links?o.links():[]}return[]}));return U3(r.flat(1).filter(z3).filter(s=>s.rel==="stylesheet"||s.rel==="preload").map(s=>s.rel==="stylesheet"?{...s,rel:"prefetch",as:"style"}:{...s,rel:"prefetch"}))}function Hg(t,e,n,r,s,i){let o=(l,d)=>n[d]?l.route.id!==n[d].route.id:!0,a=(l,d)=>n[d].pathname!==l.pathname||n[d].route.path?.endsWith("*")&&n[d].params["*"]!==l.params["*"];return i==="assets"?e.filter((l,d)=>o(l,d)||a(l,d)):i==="data"?e.filter((l,d)=>{let u=r.routes[l.route.id];if(!u||!u.hasLoader)return!1;if(o(l,d)||a(l,d))return!0;if(l.route.shouldRevalidate){let h=l.route.shouldRevalidate({currentUrl:new URL(s.pathname+s.search+s.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(t,window.origin),nextParams:l.params,defaultShouldRevalidate:!0});if(typeof h=="boolean")return h}return!0}):[]}function V3(t,e,{includeHydrateFallback:n}={}){return W3(t.map(r=>{let s=e.routes[r.route.id];if(!s)return[];let i=[s.module];return s.clientActionModule&&(i=i.concat(s.clientActionModule)),s.clientLoaderModule&&(i=i.concat(s.clientLoaderModule)),n&&s.hydrateFallbackModule&&(i=i.concat(s.hydrateFallbackModule)),s.imports&&(i=i.concat(s.imports)),i}).flat(1))}function W3(t){return[...new Set(t)]}function K3(t){let e={},n=Object.keys(t).sort();for(let r of n)e[r]=t[r];return e}function U3(t,e){let n=new Set;return new Set(e),t.reduce((r,s)=>{let i=JSON.stringify(K3(s));return n.has(i)||(n.add(i),r.push({key:i,link:s})),r},[])}function Lp(){let t=g.useContext(Gs);return Rp(t,"You must render this element inside a <DataRouterContext.Provider> element"),t}function G3(){let t=g.useContext(fl);return Rp(t,"You must render this element inside a <DataRouterStateContext.Provider> element"),t}var Ip=g.createContext(void 0);Ip.displayName="FrameworkContext";function $p(){let t=g.useContext(Ip);return Rp(t,"You must render this element inside a <HydratedRouter> element"),t}function q3(t,e){let n=g.useContext(Ip),[r,s]=g.useState(!1),[i,o]=g.useState(!1),{onFocus:a,onBlur:l,onMouseEnter:d,onMouseLeave:u,onTouchStart:h}=e,f=g.useRef(null);g.useEffect(()=>{if(t==="render"&&o(!0),t==="viewport"){let x=y=>{y.forEach(w=>{o(w.isIntersecting)})},b=new IntersectionObserver(x,{threshold:.5});return f.current&&b.observe(f.current),()=>{b.disconnect()}}},[t]),g.useEffect(()=>{if(r){let x=setTimeout(()=>{o(!0)},100);return()=>{clearTimeout(x)}}},[r]);let p=()=>{s(!0)},m=()=>{s(!1),o(!1)};return n?t!=="intent"?[i,f,{}]:[i,f,{onFocus:go(a,p),onBlur:go(l,m),onMouseEnter:go(d,p),onMouseLeave:go(u,m),onTouchStart:go(h,p)}]:[!1,f,{}]}function go(t,e){return n=>{t&&t(n),n.defaultPrevented||e(n)}}function Y3({page:t,...e}){let n=Gv(),{router:r}=Lp(),s=g.useMemo(()=>Nv(r.routes,t,r.basename),[r.routes,t,r.basename]);return s?n?g.createElement(Q3,{page:t,matches:s,...e}):g.createElement(J3,{page:t,matches:s,...e}):null}function X3(t){let{manifest:e,routeModules:n}=$p(),[r,s]=g.useState([]);return g.useEffect(()=>{let i=!1;return H3(t,e,n).then(o=>{i||s(o)}),()=>{i=!0}},[t,e,n]),r}function Q3({page:t,matches:e,...n}){let r=gn(),{future:s}=$p(),{basename:i}=Lp(),o=g.useMemo(()=>{if(t===r.pathname+r.search+r.hash)return[];let a=n1(t,i,s.v8_trailingSlashAwareDataRequests,"rsc"),l=!1,d=[];for(let u of e)typeof u.route.shouldRevalidate=="function"?l=!0:d.push(u.route.id);return l&&d.length>0&&a.searchParams.set("_routes",d.join(",")),[a.pathname+a.search]},[i,s.v8_trailingSlashAwareDataRequests,t,r,e]);return g.createElement(g.Fragment,null,o.map(a=>g.createElement("link",{key:a,rel:"prefetch",as:"fetch",href:a,...n})))}function J3({page:t,matches:e,...n}){let r=gn(),{future:s,manifest:i,routeModules:o}=$p(),{basename:a}=Lp(),{loaderData:l,matches:d}=G3(),u=g.useMemo(()=>Hg(t,e,d,i,r,"data"),[t,e,d,i,r]),h=g.useMemo(()=>Hg(t,e,d,i,r,"assets"),[t,e,d,i,r]),f=g.useMemo(()=>{if(t===r.pathname+r.search+r.hash)return[];let x=new Set,b=!1;if(e.forEach(w=>{let v=i.routes[w.route.id];!v||!v.hasLoader||(!u.some(k=>k.route.id===w.route.id)&&w.route.id in l&&o[w.route.id]?.shouldRevalidate||v.hasClientLoader?b=!0:x.add(w.route.id))}),x.size===0)return[];let y=n1(t,a,s.v8_trailingSlashAwareDataRequests,"data");return b&&x.size>0&&y.searchParams.set("_routes",e.filter(w=>x.has(w.route.id)).map(w=>w.route.id).join(",")),[y.pathname+y.search]},[a,s.v8_trailingSlashAwareDataRequests,l,r,i,u,e,t,o]),p=g.useMemo(()=>V3(h,i),[h,i]),m=X3(h);return g.createElement(g.Fragment,null,f.map(x=>g.createElement("link",{key:x,rel:"prefetch",as:"fetch",href:x,...n})),p.map(x=>g.createElement("link",{key:x,rel:"modulepreload",href:x,...n})),m.map(({key:x,link:b})=>g.createElement("link",{key:x,nonce:n.nonce,...b,crossOrigin:b.crossOrigin??n.crossOrigin})))}function Z3(...t){return e=>{t.forEach(n=>{typeof n=="function"?n(e):n!=null&&(n.current=e)})}}var e4=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{e4&&(window.__reactRouterVersion="7.17.0")}catch{}function t4(t,e){return D5({basename:e?.basename,getContext:e?.getContext,future:e?.future,history:Vj({window:e?.window}),hydrationData:n4(),routes:t,mapRouteProperties:S3,hydrationRouteProperties:C3,dataStrategy:e?.dataStrategy,patchRoutesOnNavigation:e?.patchRoutesOnNavigation,window:e?.window,instrumentations:e?.instrumentations}).initialize()}function n4(){let t=window?.__staticRouterHydrationData;return t&&t.errors&&(t={...t,errors:r4(t.errors)}),t}function r4(t){if(!t)return null;let e=Object.entries(t),n={};for(let[r,s]of e)if(s&&s.__type==="RouteErrorResponse")n[r]=new ul(s.status,s.statusText,s.data,s.internal===!0);else if(s&&s.__type==="Error"){if(s.__subType){let i=window[s.__subType];if(typeof i=="function")try{let o=new i(s.message);o.stack="",n[r]=o}catch{}}if(n[r]==null){let i=new Error(s.message);i.stack="",n[r]=i}}else n[r]=s;return n}var r1=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,s1=g.forwardRef(function({onClick:e,discover:n="render",prefetch:r="none",relative:s,reloadDocument:i,replace:o,mask:a,state:l,target:d,to:u,preventScrollReset:h,viewTransition:f,defaultShouldRevalidate:p,...m},x){let{basename:b,navigator:y,useTransitions:w}=g.useContext(mn),v=typeof u=="string"&&r1.test(u),k=Av(u,b);u=k.to;let C=s3(u,{relative:s}),N=gn(),D=null;if(a){let M=dl(a,[],N.mask?N.mask.pathname:"/",!0);b!=="/"&&(M.pathname=M.pathname==="/"?b:On([b,M.pathname])),D=y.createHref(M)}let[S,E,O]=q3(r,m),P=a4(u,{replace:o,mask:a,state:l,target:d,preventScrollReset:h,relative:s,viewTransition:f,defaultShouldRevalidate:p,useTransitions:w});function A(M){e&&e(M),M.defaultPrevented||P(M)}let I=!(k.isExternal||i),j=g.createElement("a",{...m,...O,href:(I?D:void 0)||k.absoluteURL||C,onClick:I?A:e,ref:Z3(x,E),target:d,"data-discover":!v&&n==="render"?"true":void 0});return S&&!v?g.createElement(g.Fragment,null,j,g.createElement(Y3,{page:C})):j});s1.displayName="Link";var s4=g.forwardRef(function({"aria-current":e="page",caseSensitive:n=!1,className:r="",end:s=!1,style:i,to:o,viewTransition:a,children:l,...d},u){let h=ml(o,{relative:d.relative}),f=gn(),p=g.useContext(fl),{navigator:m,basename:x}=g.useContext(mn),b=p!=null&&h4(h)&&a===!0,y=m.encodeLocation?m.encodeLocation(h).pathname:h.pathname,w=f.pathname,v=p&&p.navigation&&p.navigation.location?p.navigation.location.pathname:null;n||(w=w.toLowerCase(),v=v?v.toLowerCase():null,y=y.toLowerCase()),v&&x&&(v=Tn(v,x)||v);const k=y!=="/"&&y.endsWith("/")?y.length-1:y.length;let C=w===y||!s&&w.startsWith(y)&&w.charAt(k)==="/",N=v!=null&&(v===y||!s&&v.startsWith(y)&&v.charAt(y.length)==="/"),D={isActive:C,isPending:N,isTransitioning:b},S=C?e:void 0,E;typeof r=="function"?E=r(D):E=[r,C?"active":null,N?"pending":null,b?"transitioning":null].filter(Boolean).join(" ");let O=typeof i=="function"?i(D):i;return g.createElement(s1,{...d,"aria-current":S,className:E,ref:u,style:O,to:o,viewTransition:a},typeof l=="function"?l(D):l)});s4.displayName="NavLink";var i4=g.forwardRef(({discover:t="render",fetcherKey:e,navigate:n,reloadDocument:r,replace:s,state:i,method:o=Mc,action:a,onSubmit:l,relative:d,preventScrollReset:u,viewTransition:h,defaultShouldRevalidate:f,...p},m)=>{let{useTransitions:x}=g.useContext(mn),b=d4(),y=u4(a,{relative:d}),w=o.toLowerCase()==="get"?"get":"post",v=typeof a=="string"&&r1.test(a),k=C=>{if(l&&l(C),C.defaultPrevented)return;C.preventDefault();let N=C.nativeEvent.submitter,D=N?.getAttribute("formmethod")||o,S=()=>b(N||C.currentTarget,{fetcherKey:e,method:D,navigate:n,replace:s,state:i,relative:d,preventScrollReset:u,viewTransition:h,defaultShouldRevalidate:f});x&&n!==!1?g.startTransition(()=>S()):S()};return g.createElement("form",{ref:m,method:w,action:y,onSubmit:r?l:k,...p,"data-discover":!v&&t==="render"?"true":void 0})});i4.displayName="Form";function o4(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function i1(t){let e=g.useContext(Gs);return De(e,o4(t)),e}function a4(t,{target:e,replace:n,mask:r,state:s,preventScrollReset:i,relative:o,viewTransition:a,defaultShouldRevalidate:l,useTransitions:d}={}){let u=Lt(),h=gn(),f=ml(t,{relative:o});return g.useCallback(p=>{if(L3(p,e)){p.preventDefault();let m=n!==void 0?n:vr(h)===vr(f),x=()=>u(t,{replace:m,mask:r,state:s,preventScrollReset:i,relative:o,viewTransition:a,defaultShouldRevalidate:l});d?g.startTransition(()=>x()):x()}},[h,u,f,n,r,s,e,t,i,o,a,l,d])}function gl(t){tt(typeof URLSearchParams<"u","You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let e=g.useRef(af(t)),n=g.useRef(!1),r=gn(),s=g.useMemo(()=>I3(r.search,n.current?null:e.current),[r.search]),i=Lt(),o=g.useCallback((a,l)=>{const d=af(typeof a=="function"?a(new URLSearchParams(s)):a);n.current=!0,i("?"+d,l)},[i,s]);return[s,o]}var l4=0,c4=()=>`__${String(++l4)}__`;function d4(){let{router:t}=i1("useSubmit"),{basename:e}=g.useContext(mn),n=x3(),r=t.fetch,s=t.navigate;return g.useCallback(async(i,o={})=>{let{action:a,method:l,encType:d,formData:u,body:h}=_3(i,e);if(o.navigate===!1){let f=o.fetcherKey||c4();await r(f,n,o.action||a,{defaultShouldRevalidate:o.defaultShouldRevalidate,preventScrollReset:o.preventScrollReset,formData:u,body:h,formMethod:o.method||l,formEncType:o.encType||d,flushSync:o.flushSync})}else await s(o.action||a,{defaultShouldRevalidate:o.defaultShouldRevalidate,preventScrollReset:o.preventScrollReset,formData:u,body:h,formMethod:o.method||l,formEncType:o.encType||d,replace:o.replace,state:o.state,fromRouteId:n,flushSync:o.flushSync,viewTransition:o.viewTransition})},[r,s,e,n])}function u4(t,{relative:e}={}){let{basename:n}=g.useContext(mn),r=g.useContext(Rn);De(r,"useFormAction must be used inside a RouteContext");let[s]=r.matches.slice(-1),i={...ml(t||".",{relative:e})},o=gn();if(t==null){i.search=o.search;let a=new URLSearchParams(i.search),l=a.getAll("index");if(l.some(u=>u==="")){a.delete("index"),l.filter(h=>h).forEach(h=>a.append("index",h));let u=a.toString();i.search=u?`?${u}`:""}}return(!t||t===".")&&s.route.index&&(i.search=i.search?i.search.replace(/^\?/,"?index&"):"?index"),n!=="/"&&(i.pathname=i.pathname==="/"?n:On([n,i.pathname])),vr(i)}function h4(t,{relative:e}={}){let n=g.useContext(Op);De(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=i1("useViewTransitionState"),s=ml(t,{relative:e});if(!n.isTransitioning)return!1;let i=Tn(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=Tn(n.nextLocation.pathname,r)||n.nextLocation.pathname;return Yc(s.pathname,o)!=null||Yc(s.pathname,i)!=null}function f4(t){return g.createElement(N3,{flushSync:Ns.flushSync,...t})}const p4={en:{loading:"Loading...",error:"Error",selectProject:"Select a project to view dashboard",controlCenter:"Control Center",settings:"Settings",sync:"Sync",offline:"Offline",switchToLight:"Switch to light mode",switchToDark:"Switch to dark mode",settingsSection:"Settings",overviewSection:"Overview",entitiesSection:"Entities",toolsSection:"Tools",configEditor:"Config Editor",projects:"Projects",addProject:"Add Project",global:"Global",skills:"Skills",skillsNav:"Skills",health:"Health",collapse:"Collapse",expand:"Expand",installing:"Installing...",manage:"Manage",uninstall:"Uninstall",installGlobally:"Install Globally",installGloballyDesc:"Available to all projects instead of current project only",selectAtLeastOneAgent:"Please select at least one agent",installationFailed:"Installation failed",allSkills:"All Skills",refresh:"Refresh",browseAndManageSkills:"Browse and manage skills for your agents",detected:"Detected",notDetected:"Not detected",sessions:"sessions",noSessions:"No sessions",terminal:"Terminal",terminalSub:"Open bash at path",editor:"Editor",editorSub:"Open in VS Code",useGlobalFallback:"Use global fallback",openAtPath:"Open at project path",openAppOnly:"Open app only",actionOptionsLoadFailed:"Could not load editor/terminal options",launch:"Launch",launchSub:"Start Claude Code",config:"Config",configSub:"Manage project settings",recentSessions:"Recent Sessions",viewAllHistory:"View All History",showLess:"Show Less",actionFailed:"Action failed",loadingSessions:"Loading sessions...",noSessionsFound:"No sessions found",configuration:"Claude Settings",planSettingsTitle:"Plan Settings",activeKit:"Active Kit",aiModel:"Model",hooks:"Hooks",active:"active",mcpServers:"MCP Servers",connected:"connected",plansDirectory:"Plans Directory",validationMode:"Validation Mode",planScopeLabel:"Scope",planScopeProject:"project",planScopeGlobal:"global",activePlansLabel:"Active Plans",activePlansTitle:"Active Plans",noActivePlansFound:"No active plans found",openPlan:"Open Plan",openKanban:"Open Kanban",blockedByLabel:"Blocked by",progressLabel:"Progress",editProjectConfig:"Edit Project Config",projectPreferenceSaveFailed:"Failed to save preference",globalSettings:"(Global)",globalSkills:"Global Skills",loadingSkills:"Loading skills...",noDescription:"No description",browseSkillsMarketplace:"Browse Skills Marketplace",backToDashboard:"Back to Dashboard",educationalConfigEditor:"Educational Config Editor",discard:"Discard",saveChanges:"Save Changes",mergedView:"Merged View",localConfig:"Local (.nk.json)",globalConfig:"Global",syntaxValid:"Syntax Valid",configurationHelp:"Configuration Help",field:"Field",type:"Type",default:"Default",description:"Description",validValues:"Valid Values",systemEffect:"System Effect",exampleUsage:"Example Usage",knowledgeBase:"Knowledge Base",clickToSeeHelp:"Click on any configuration field to see detailed documentation and usage examples.",extractedFrom:"Extracted from NineKit v2.x Specification",resetToDefault:"Reset",saving:"Saving...",saved:"Saved",confirmReset:"Reset to Default?",confirmResetMessage:"All changes will be lost and replaced with default values.",confirm:"Confirm",saveFailed:"Save failed",configTab:"Config",systemTab:"System",formTab:"Form",jsonTab:"JSON",readOnly:"Read-only",installedKit:"Installed Kit",kitVersion:"Kit Version",installedOn:"Installed On",noKitInstalled:"No kit installed",components:"Components",agents:"Agents",commands:"Commands",workflows:"Workflows",kitSkills:"Skills",fileOwnership:"File Ownership",ownershipCk:"kit-managed",ownershipUser:"user-owned",ownershipModified:"modified",componentInventory:"Component Inventory",installedHooks:"Installed Hooks",installedMcpServers:"MCP Servers",lastChecked:"Last update check",staleIndicator:"Stale",skippedVersion:"Skipped",filesModifiedFromDefaults:"files modified from kit defaults",cliCard:"NineKit CLI",checkForUpdates:"Check for Updates",checking:"Checking...",upToDate:"Up to date",updateAvailable:"Update available",updateNow:"Update Now",updating:"Updating...",updateSuccess:"Update Complete!",updateFailed:"Update Failed",closeModal:"Close",showDetails:"Show Details",hideDetails:"Hide Details",environment:"Environment",claudeConfigPath:"Claude config",nodeVersion:"Node",bunVersion:"Bun",osVersion:"OS",envShell:"Shell",envHomeDir:"Home",envCpuCores:"CPU Cores",envTotalMemory:"Memory",cliPackageManager:"Package Manager",cliInstallLocation:"Install Location",cliGitVersion:"Git",cliGhVersion:"GitHub CLI",channelStable:"Stable",channelBeta:"Beta",betaBadge:"Beta",latestVersion:"Latest",selectVersion:"Select version",loadingVersions:"Loading versions...",prereleaseLabel:"Pre",currentVersionLabel:"Current",checkAll:"Check All",checkingAll:"Checking...",updateAll:"Update All",updatesAvailable:"{count} updates available",allUpToDate:"All up to date",systemControlTower:"System Control Tower",systemOverviewTitle:"Update & Runtime Overview",systemOverviewDesc:"Track CLI and kit health, then run upgrades from one place.",installedComponentsHeading:"Installed Components",updateReadiness:"Update Readiness",checkedComponents:"Checked",activeChannel:"Channel",readyToScan:"Ready to scan",noTrackedFiles:"No tracked files detected",kitsLabel:"Kits",componentFilterAll:"All",componentFilterUpdates:"Updates",componentFilterUpdatesCount:"Updates ({count})",componentFilterUpToDate:"Up to date",componentFilterUpToDateCount:"Up to date ({count})",componentFilterCli:"CLI",componentFilterKits:"Kits",noComponentsMatchFilter:"No components match the current filter.",runCheckAllForFilter:"Run Check All to populate this filter.",noUpdatesFound:"No updates found. Checked components are up to date.",noUpToDateYet:"No components are up to date yet.",configWorkspaceHint:"Edit configuration or manage system updates from one workspace.",settingsJsonHeading:"Claude Settings JSON",settingsJsonMissing:"No settings file found at ~/.claude/settings.json.",settingsJsonLoadFailed:"Failed to load ~/.claude/settings.json.",settingsLoadFailedDetail:"Error detail:",configLoadFailed:"Failed to load configuration.",configLoadFailedDetail:"Error detail:",settingsBackupSaved:"Backup saved",hookDiagnosticsTitle:"Hook Diagnostics",hookDiagnosticsDesc:"Inspect recent hook activity and failures without opening JSONL files manually.",hookDiagnosticsPathPending:"Resolving log path...",hookDiagnosticsScopeGlobal:"Global hooks",hookDiagnosticsEntries:"Entries",hookDiagnosticsCrashes:"Crashes",hookDiagnosticsWarnings:"Warnings",hookDiagnosticsBlocks:"Blocks",hookDiagnosticsLastEvent:"Last event",hookDiagnosticsLoading:"Loading hook diagnostics...",hookDiagnosticsLoadFailed:"Failed to load hook diagnostics",hookDiagnosticsMissing:"No hook log file found for this scope yet.",hookDiagnosticsEmpty:"Hook log is present but contains no readable entries.",hookDiagnosticsParseErrorsNotice:"Skipped {count} malformed log line(s) while loading diagnostics.",hookDiagnosticsTruncatedNotice:"Showing a bounded recent window to keep diagnostics responsive on large logs.",hookDiagnosticsToolLabel:"tool",hookDiagnosticsTargetLabel:"target",hookDiagnosticsUnknown:"Unknown",hookDiagnostics:"Hook Diagnostics",hookEvent:"Event",hookExecutions:"Executions",hookAvgLatency:"Avg Latency",hookFailureRate:"Failure Rate",hookLastRun:"Last Run",hookLatencyWarning:"Latency > 500ms",activityMetrics:"Activity",activityTotalSessions:"Total Sessions",activityMostActive:"Most Active Projects",activityPeriod24h:"24h",activityPeriod7d:"7d",activityPeriod30d:"30d",activityNoData:"No activity data",addProjectTitle:"Add Project",addProjectDescription:"Add a new NineKit project to the control center",projectPath:"Project Path",pathPlaceholder:"/path/to/project",alias:"Alias",aliasOptional:"(optional)",aliasPlaceholder:"my-project",aliasDescription:"Custom display name for the project",pathRequired:"Path is required",failedToAdd:"Failed to add project",cancel:"Cancel",adding:"Adding...",somethingWentWrong:"Something went wrong",reloadApp:"Reload App",serverNotRunning:"Server Not Running",startServerMessage:"The Config UI requires the backend server to be running.",runThisCommand:"Run this command",tryAgain:"Try Again",projectConfig:"Project Config",inheritedFromGlobal:"Inherited from Global",localOverride:"Local Override",viewGlobalConfig:"This field inherits from global config. View",onboardingTitle:"Welcome to NineKit",onboardingSubtitle:"Choose your kit and get started in minutes",kitEngineerName:"NineKit Engineer",kitEngineerTagline:"AI-powered coding with skills, hooks, and multi-agent workflows",kitMarketingName:"NineKit Marketing",kitMarketingTagline:"Content automation: campaigns, social media, analytics",featureAgents:"AI Agents",featureAgentsDesc:"Specialized agents for different tasks",featureHooks:"Lifecycle Hooks",featureHooksDesc:"Customize Claude's behavior at key moments",featureSkills:"Skills Library",featureSkillsDesc:"Pre-built capabilities you can activate",featureMultiAgent:"Multi-Agent Workflows",featureMultiAgentDesc:"Coordinate multiple agents for complex tasks",featureContent:"Content Generation",featureContentDesc:"Automated content creation and optimization",featureSocial:"Social Media Tools",featureSocialDesc:"Scheduling, analytics, and engagement automation",stepChooseKit:"Choose Kit",stepConfigure:"Configure",stepInstall:"Install",back:"Back",next:"Next",install:"Install",installSuccess:"Installation Complete!",installSuccessDesc:"{kit} is ready to use",getStarted:"Get Started",goToDashboard:"Go to Dashboard",kitConfig:"Kit Config",kitConfigSubtitle:"Configure NineKit Engineer settings",scopeGlobal:"Global",scopeProject:"Project",sectionGeneral:"General",sectionPaths:"Paths",sectionPrivacy:"Privacy & Trust",sectionProject:"Project Detection",sectionIntegrations:"Integrations",sectionHooks:"Hooks",sectionAdvanced:"Advanced",fieldCodingLevel:"Coding Level",fieldCodingLevelDesc:"Your coding experience level (-1=auto, 0=beginner, 1=intermediate, 2=advanced, 3=expert, 4=tech-lead, 5=god-mode)",fieldStatusline:"Statusline Mode",fieldStatuslineDesc:"How much info to show in the status line",fieldStatuslineColors:"Statusline Colors",fieldStatuslineColorsDesc:"Enable ANSI color output in the statusline",fieldStatuslineQuota:"Statusline Quota Display",fieldStatuslineQuotaDesc:"Show the 5h / wk quota chips in the statusline",fieldThinkingLanguage:"Thinking Language",fieldThinkingLanguageDesc:"Language for Claude's internal reasoning (null=English)",fieldResponseLanguage:"Response Language",fieldResponseLanguageDesc:"Language for Claude's responses (null=match user)",fieldDocsPath:"Docs Directory",fieldDocsPathDesc:"Path to documentation directory",fieldPlansPath:"Plans Directory",fieldPlansPathDesc:"Path to plans directory",fieldGlobalPlansPath:"Global Plans Directory",fieldGlobalPlansPathDesc:"Path to global plans directory",fieldPrivacyBlock:"Privacy Block",fieldPrivacyBlockDesc:"Block access to sensitive files (.env, credentials)",fieldTrustEnabled:"Trust Mode",fieldTrustEnabledDesc:"Enable auto-approval for tool calls",fieldTrustPassphrase:"Trust Passphrase",fieldTrustPassphraseDesc:"Passphrase to enable trust mode",fieldProjectType:"Project Type",fieldProjectTypeDesc:"Override auto-detected project type",fieldPackageManager:"Package Manager",fieldPackageManagerDesc:"Override auto-detected package manager",fieldFramework:"Framework",fieldFrameworkDesc:"Override auto-detected framework",fieldGeminiModel:"Gemini Model",fieldGeminiModelDesc:"Gemini model for CLI commands; legacy gemini-3.0-* ids auto-map",geminiModel25Flash:"Gemini 2.5 Flash — All tiers",geminiModel25Pro:"Gemini 2.5 Pro — May hit capacity limits",geminiModel3FlashPreview:"Gemini 3 Flash Preview — Pro/Ultra only",geminiModel3ProPreview:"Gemini 3 Pro Preview — Pro/Ultra only",fieldResearchUseGemini:"Use Gemini for Research",fieldResearchUseGeminiDesc:"Use Gemini CLI instead of WebSearch",fieldDocsMaxLoc:"Max Lines per Doc",fieldDocsMaxLocDesc:"Maximum lines of code per documentation file",fieldPlanNamingFormat:"Plan Naming Format",fieldPlanNamingFormatDesc:"Format for plan directory names",fieldPlanDateFormat:"Plan Date Format",fieldPlanDateFormatDesc:"Date format for plan names (moment.js)",fieldPlanValidationMode:"Validation Mode",fieldPlanValidationModeDesc:"How to validate plans before implementation",fieldPlanMinQuestions:"Min Questions",fieldPlanMinQuestionsDesc:"Minimum validation questions",fieldPlanMaxQuestions:"Max Questions",fieldPlanMaxQuestionsDesc:"Maximum validation questions",fieldAssertions:"Assertions",fieldAssertionsDesc:"Code assertions and rules to enforce",fieldHookSessionInit:"Session Init",fieldHookSessionInitDesc:"Project detection and environment setup",fieldHookSubagentInit:"Subagent Init",fieldHookSubagentInitDesc:"Inject context to subagents",fieldHookSessionState:"Session State",fieldHookSessionStateDesc:"Persist session state for handoff and statusline context",fieldHookCookAfterPlanReminder:"Cook After Plan Reminder",fieldHookCookAfterPlanReminderDesc:"Remind agents to continue implementation after planning",fieldHookDescriptiveName:"Descriptive Name",fieldHookDescriptiveNameDesc:"Enforce kebab-case descriptive file naming for scripts",fieldHookDevRulesReminder:"Dev Rules Reminder",fieldHookDevRulesReminderDesc:"Inject development rules context",fieldHookPlanFormatKanban:"Plan Format Kanban",fieldHookPlanFormatKanbanDesc:"Keep plan kanban metadata synchronized after edits",fieldHookUsageQuotaCacheRefresh:"Usage Quota Cache",fieldHookUsageQuotaCacheRefreshDesc:"Refresh cached usage quota information",fieldHookUsageContextAwareness:"Usage Prompt Awareness",fieldHookUsageContextAwarenessDesc:"Inject usage-limit awareness into prompts",fieldHookContextTracking:"Context Tracking",fieldHookContextTrackingDesc:"Context window tracking (% used, token counts)",fieldHookScoutBlock:"Scout Block",fieldHookScoutBlockDesc:"Block heavy directories from exploration",fieldHookPrivacyBlock:"Privacy Block Hook",fieldHookPrivacyBlockDesc:"Block sensitive files from reading",fieldHookSimplifyGate:"Simplify Gate",fieldHookSimplifyGateDesc:"UserPromptSubmit hook — opt-in. When enabled (simplify.gate.enabled=true), hard-blocks ship/merge/pr/deploy/publish and soft-warns commit/finalize/release when live diff exceeds thresholds.",sectionSimplify:"Simplify Gate",fieldSimplifyThresholdLocDelta:"Total LOC threshold",fieldSimplifyThresholdLocDeltaDesc:"Total LOC change (across all files) above which the gate fires.",fieldSimplifyThresholdFileCount:"File count threshold",fieldSimplifyThresholdFileCountDesc:"Number of changed files above which the gate fires.",fieldSimplifyThresholdSingleFileLoc:"Per-file LOC threshold",fieldSimplifyThresholdSingleFileLocDesc:"Per-file LOC change above which the gate fires.",fieldSimplifyGateEnabled:"Enabled",fieldSimplifyGateEnabledDesc:"Master toggle. Off by default (opt-in). Enable to activate the gate; env NK_SIMPLIFY_DISABLED=1 always bypasses.",fieldSimplifyGateHardVerbs:"Hard-block verbs",fieldSimplifyGateHardVerbsDesc:"Verbs that hard-block when thresholds breached.",fieldSimplifyGateSoftVerbs:"Soft-warn verbs",fieldSimplifyGateSoftVerbsDesc:"Verbs that emit a non-blocking warning.",sectionUpdatePipeline:"Update Pipeline",fieldAutoInitAfterUpdate:"Auto Init After Update",fieldAutoInitAfterUpdateDesc:"Automatically run nk init after nk update when kit has new version",fieldAutoMigrateAfterUpdate:"Auto Migrate After Update",fieldAutoMigrateAfterUpdateDesc:"Automatically run nk migrate after nk update (independent of init)",fieldMigrateProviders:"Migrate Providers",fieldMigrateProvidersDesc:"Which providers to auto-migrate. Use 'auto' to scan filesystem or a comma-separated list.",skillsPageTitle:"Skills Management",skillsPageDesc:"Install NineKit skills to your coding agents",availableSkills:"Available Skills",installedSkills:"Installed Skills",noSkillsFound:"No skills found",installSkill:"Install",uninstallSkill:"Uninstall",manageSkill:"Manage",syncRegistry:"Sync",installSkillTitle:"Install Skill",selectAgents:"Select target agents",installLocation:"Installation location",globalInstall:"Global",projectInstall:"Project",confirmInstall:"Install to selected agents",installingSkill:"Installing...",skillInstallSuccess:"Skill installed successfully",skillInstallFailed:"Installation failed",agentClaudeCode:"Claude Code",agentCursor:"Cursor",agentCodex:"Codex",agentOpencode:"OpenCode",agentGoose:"Goose",agentGeminiCli:"Gemini CLI",agentAntigravity:"Antigravity",agentGithubCopilot:"GitHub Copilot",agentAmp:"Amp",agentKilo:"Kilo",agentRoo:"Roo",agentWindsurf:"Windsurf",agentCline:"Cline",agentOpenhands:"OpenHands",installed:"Installed",notInstalled:"Not installed",allAgents:"All Agents",filterByAgent:"Filter by agent",skillsTitle:"Skills",skillsSubtitle:"Browse, install, and manage skills for your coding agents",availableCount:"Available",installedCount:"Installed",agentsCount:"Agents",searchSkills:"Search skills...",searchShortcut:"/",sortAZ:"A-Z",sortCategory:"Category",sortInstalledFirst:"Installed first",listView:"List view",gridView:"Grid view",categoryAll:"All",categoryAI:"AI",categoryUIUX:"UI/UX",categoryBackend:"Backend",categorySecurity:"Security",categoryDevOps:"DevOps",categoryDatabase:"Database",categoryDevelopment:"Development",categoryResearch:"Research",categoryGeneral:"General",categoryCore:"Core",categoryDocumentation:"Documentation",categoryTooling:"Tooling",categoryMedia:"Media",categoryFrameworks:"Frameworks",skillsCountLabel:"{count} skills",installToAll:"Install to All Detected",scopeLabel:"Installation Scope",agentInstalled:"Installed",agentNotInstalled:"Not installed",skillSource:"Source location",skillSourceBadge:"Source",detailPanelClose:"Close",versionLabel:"v{version}",installAllToAllAgents:"Install All to All Agents",bulkInstallFailed:"Bulk install failed",noAgentsDetected:"No agents detected",kitBadgeEngineer:"Engineer",kitBadgeMarketing:"Marketing",customizedBadge:"Customized",installedVersionLabel:"Installed Version",installedAtLabel:"Installed At",sourceTimestampLabel:"Source Date",kitLabel:"Kit",skillMetadata:"Skill Info",migrate:"Migrate",migrateTitle:"Migrate",migrateSubtitle:"Migrate your Claude Code stack to other providers",migrateDetectedProviders:"Detected",migrateSelectedProviders:"Selected",migrateDiscovering:"Discovering migration sources...",migrateRefresh:"Refresh Discovery",migrateRun:"Run Migration",migrateRunning:"Migrating...",migrateSourceSummary:"Source Summary",migratePresetCodex:"Codex",migratePresetAntigravity:"Antigravity",migratePresetCore:"Codex + Antigravity + Droid",migratePresetDetected:"All Detected",migrateScope:"Scope",migrateScopeProject:"Project",migrateScopeGlobal:"Global",migrateTypes:"Portable Types",migrateTypeAgents:"Subagents",migrateTypeCommands:"Commands",migrateTypeSkills:"Skills",migrateTypeConfig:"Config",migrateTypeRules:"Rules",migrateTypeHooks:"Hooks",migrateSearchProviders:"Search providers...",migrateSelectVisible:"Select Visible",migrateClearSelection:"Clear Selection",migrateProvidersHeading:"Target Providers",migrateProvidersCountSuffix:"providers",migrateNoProvidersMatch:"No providers match current filters.",migrateSelectButton:"Select",migrateSelectedButton:"Selected",migrateSelectProviderAction:"Select Provider",migrateUnselectProvider:"Unselect Provider",migrateCapabilitiesLabel:"types",migrateCapabilitiesSection:"Capability Matrix",migrateSupported:"Supported",migrateUnsupportedShort:"Unsupported",migrateIncludedEnabled:"Enabled",migrateIncludedDisabled:"Disabled",migrateLatestTarget:"Latest Target",migrateNoResultForProvider:"No migration result for this provider yet.",migrateActionSummaryTitle:"Ready to Migrate",migrateGlobalOnlyCommandsShort:"Commands global only",migrateNoProviders:"No providers available.",migrateUnsupported:"Will be skipped (unsupported)",migrateGlobalForced:"Selected provider commands only support global scope. Use Global to install them.",migrateResults:"Migration Results",migrateInstalled:"Installed",migrateSkipped:"Skipped",migrateFailed:"Failed",migrateProvider:"Provider",migrateStatus:"Status",migratePath:"Path",migrateError:"Error",migrateStatusInstalled:"Installed",migrateStatusSkipped:"Skipped",migrateStatusFailed:"Failed",migrateNoResults:"No migration results yet.",migrateDetectFailed:"Failed to discover migration data",migrateExecuteFailed:"Migration execution failed",migrateSelectProvider:"Select at least one provider",migrateNoTypesEnabled:"Enable at least one portable type",migrateDetectedTag:"Detected",migrateNotDetectedTag:"Not detected",migrateFilterRecommended:"Recommended",migrateActionInstall:"Install",migrateActionUpdate:"Update",migrateActionSkip:"Skip",migrateActionConflict:"Conflict",migrateActionDelete:"Delete",migrateUnchanged:"unchanged",migrateConflictSectionTitle:"Conflicts",migrateConflictUseCK:"Use NK",migrateConflictKeepMine:"Keep Mine",migrateConflictSmartMerge:"Smart Merge",migrateConflictShowDiff:"Show Diff",migrateConflictHideDiff:"Hide Diff",migrateConflictResolved:"Resolved",migrateConflictManual:"Manual",migrateConflictOverwriteAll:"Overwrite All",migrateConflictKeepAll:"Keep All",migrateSummaryTitle:"Migration Complete",migrateSummaryNewMigration:"New Migration",migrateType:"Type",migrateItem:"Item",migrateReconciling:"Analyzing changes...",migrateReviewPlan:"Review Plan",migrateExecutePlan:"Execute Migration",migrateExecuting:"Executing migration...",migrateResolveConflicts:"Resolve all conflicts before executing",migrateReason_newItem:"New item from provider",migrateReason_newProviderForItem:"New provider for this item",migrateReason_targetDeletedSourceChanged:"Target was deleted but source has updates",migrateReason_targetDirEmptyReinstall:"Target directory is empty — reinstalling",migrateReason_forceReinstall:"Force reinstall requested",migrateReason_forceOverwrite:"Force overwrite (you edited this, --force active)",migrateReason_registryUpgradeReinstall:"Registry upgrade requires reinstall",migrateReason_sourceChanged:"Source has been updated",migrateReason_registryUpgradeHeal:"Healing stale target after registry upgrade",migrateReason_noChanges:"No changes detected",migrateReason_userEditsPreserved:"User edits preserved",migrateReason_userDeletedRespected:"User deletion respected",migrateReason_targetUpToDateBackfill:"Target is up to date",migrateReason_providerChecksumUnavailable:"Provider checksum unavailable",migrateReason_targetStateUnknown:"Target state could not be determined",migrateReason_sourceRemovedOrphan:"Source removed — cleaning up orphan",migrateReason_renamedCleanup:"Item renamed — removing old path",migrateReason_pathMigratedCleanup:"Path migrated — removing old location",migrateReason_bothChanged:"Both source and target changed",migrateReason_targetStateUnknownSourceChanged:"Source changed but target state unknown",migrateBanner_emptyDir_title:"Detected empty directory",migrateBanner_emptyDir_body:"items below will be reinstalled. Uncheck any to skip.",migrateBanner_emptyDirRespected_title:"Respecting your deletion",migrateBanner_emptyDirRespected_body:"is empty. Respecting your deletion.",migrateBanner_reinstallCta:"Reinstall these items",migrateModeLabel:"Migration mode",migrateModeReconcile:"Reconcile",migrateModeReconcileDesc:"Smart-detects drift",migrateModeInstall:"Install",migrateModeInstallDesc:"Pick items to install",migrateModeConfirmTitle:"Switch mode?",migrateModeConfirmBody:"You have {count} pending changes. Switching to {mode} mode will discard them.",migrateModeConfirmSwitch:"Switch & discard",migrateSmartDefaultInstall:"Fresh install detected — defaulting to Install mode",migrateSmartDefaultReconcile:"Existing registry found — defaulting to Reconcile mode",migrateInstallSelectAll:"Select all",migrateInstallDeselectAll:"Deselect all",migrateInstallDirItem:"dir",migrateInstallAlreadyInstalled:"installed",migrateInstallNoCandidates:"No installable items found for the selected providers.",migrateInstallSelectedCount:"{count} of {total} items selected",migrateInstallCta:"Install {count} selected items",migrateInstallInstalling:"Installing...",migrateInstallLoadingCandidates:"Fetching available items...",migrateFlip_moveToSkip:"Move to Skip",migrateFlip_moveToInstall:"Move to Install",migrateFlip_checkAll:"Check all",migrateFlip_uncheckAll:"Uncheck all",migrateFlip_toggleItem:"Toggle item",migrateConflictBanner_title:"Conflicts detected",migrateConflictBanner_cta:"Open conflict resolver",migrateConflictBanner_hide:"Hide conflict resolver",migrateShowSkippedItems:"Show skipped items",migrateHideSkippedItems:"Hide skipped items",migrateConflictBadge:"Conflict",migrateSummarySubtitle:"items migrated",migrateSummarySearchPlaceholder:"Search items...",migrateSummaryFilterAll:"All",migrateSummaryCollapseAll:"Collapse all",migrateSummaryExpandAll:"Expand all",migrateSummaryNoResults:"No items match your search",migrateSummaryProviders:"Providers",migrateTypeUnknown:"Other",kanbanTitle:"Plan Kanban",kanbanNoFile:"No plan file specified. Use ?file= parameter.",kanbanNoPhases:"No phases detected in this plan",kanbanError400:"Invalid request — missing file parameter",kanbanError403:"Access denied — file is outside the project directory",kanbanError404:"Plan file not found",kanbanComplete:"complete",kanbanStatus_pending:"Pending","kanbanStatus_in-progress":"In Progress",kanbanStatus_completed:"Completed",kanbanPhases:"phases",kanbanProgress:"Progress",kanbanLoadError:"Failed to load plan data",plansNav:"Plans",plansTitle:"Plans Dashboard",plansGlobalTitle:"All Projects",plansSubtitle:"Browse active plans, inspect phase timelines, and manage progress from one place.",plansEmpty:"No plans found",plansSearch:"Search plans...",plansProjectFilter:"Filter by project",plansAllProjects:"All projects",plansSortBy:"Sort by",plansViewGrid:"Grid",plansViewKanban:"Kanban",plansFilterAll:"All statuses",plansSortDateDesc:"Newest first",plansSortDateAsc:"Oldest first",plansSortNameAsc:"Name A-Z",plansSortNameDesc:"Name Z-A",plansSortProgress:"Highest progress",plansLabel:"Plan",plansStatusPending:"Pending",plansStatusInProgress:"In Progress",plansStatusInReview:"In Review",plansStatusDone:"Done",plansStatusCancelled:"Cancelled",plansCompletedCount:"{count} completed",plansProjectPlans:"{count} plans",plansProjectLoadIssues:"Some projects could not be scanned",plansStatusUnknown:"Unknown",plansBackToPlans:"Back to Plans",plansBackToPlan:"Back to Plan",plansPrevious:"Previous",plansNext:"Next",plansContents:"Contents",plansValidate:"Validate",plansStartNext:"Start Next",plansRestart:"Restart",plansStart:"Start",plansComplete:"Complete",plansReset:"Reset",plansTimeline:"Timeline",plansActivity:"Activity",plansActivitySubtitle:"Last 12 weeks",plansActivityCombined:"Combined",plansActivityCommits:"Commits",plansActivityFiles:"Files",plansActivityEmpty:"No activity data available.",plansHeatmapLoadError:"Failed to load activity heatmap.",plansHeatmapChanges:"{date} • {count} changes",plansRead:"Read",plansPhases:"Phases",plansPhase:"Phase",plansPhaseCountCompact:"PH-{count}",plansKanbanEmpty:"Empty",plansLoadingPlan:"Loading plan...",plansLoadingReader:"Loading document...",plansLoadPlanFailed:"Failed to load plan ({status})",plansLoadPlanFallback:"Failed to load plan",plansLoadFileFailed:"Failed to load document ({status})",plansLoadFileFallback:"Failed to load document",plansProgressComplete:"{count}% complete",plansPhaseCount:"{count} phases",plansPriority:"Priority",plansUpdated:"Updated",plansLastUpdated:"Last Updated",plansPriorityLabel:"Priority {value}",plansUpdatedLabel:"Updated {value}",plansTimelineAvgDays:"{count} avg days",plansNoEffort:"No effort",plansNotFound:"Plan not found",plansQuickInfoTitle:"Plan Overview",plansQuickInfoDescription:"Use this view to track phase progress, timeline coverage, and recent activity for this plan.",plansCurrentStatus:"Current Status",plansHeatmapMon:"Mon",plansHeatmapWed:"Wed",plansHeatmapFri:"Fri",developmentFeature:"Development",betaFeature:"Beta",experimentalFeature:"Experimental",sectionModelTaxonomy:"Model Taxonomy",taxonomyDescription:"Customize model mappings for portable migration to other coding agents.",taxonomyTierHeavy:"Heavy (opus)",taxonomyTierBalanced:"Balanced (sonnet)",taxonomyTierLight:"Light (haiku)",taxonomyModel:"Model",taxonomyEffort:"Effort",taxonomyResetProvider:"Reset",taxonomyTier:"Tier",statuslineBuilder:"Status Line Builder",statuslineBuilderDescription:"Visually design your Claude Code status-line using drag-and-drop",statuslineSections:"Sections",statuslinePreview:"Preview",statuslineTheme:"Color Theme",statuslineSettings:"General Settings",statuslineResetDefaults:"Reset to Defaults",statuslineSave:"Save",statuslineBaseMode:"Base Mode",statuslineBreakpoint:"Responsive Breakpoint",statuslineMaxAgents:"Max Agent Rows",statuslineTodoTruncation:"Todo Truncation",statuslineEnable:"Enable",statuslineDisable:"Disable",statuslineDragHint:"Drag to reorder, toggle to enable/disable sections",statuslinePresetDefault:"Default",statuslinePresetMonochrome:"Monochrome",statuslinePresetSolarized:"Solarized",statuslinePresetNord:"Nord",statuslinePresetDracula:"Dracula",statuslinePresetCatppuccin:"Catppuccin",statuslinePresetGruvbox:"Gruvbox",statuslinePresetTokyoNight:"Tokyo Night",statuslinePresetRosePine:"Rosé Pine",statuslinePresetOneDark:"One Dark",statuslinePresetAyu:"Ayu",statuslinePresetKanagawa:"Kanagawa",statuslinePresetStealth:"Stealth",statuslinePresetHacker:"Hacker",statuslineSaved:"Saved successfully",statuslineSaveError:"Save failed",statusline:"Status Line",statuslineCollapseSettings:"Collapse settings",statuslineExpandSettings:"Expand settings",statuslineIconOverride:"Icon override",statuslineLabelOverride:"Label override",statuslineMaxWidth:"Max width (chars)",statuslineIconPlaceholder:"e.g. 🤖",statuslineMaxWidthPlaceholder:"auto",statuslineCustomColors:"Custom colors",statuslineColorContextGroup:"Context Window",statuslineColorQuotaGroup:"Usage Quota",statuslineColorGeneralGroup:"General",statuslineColorSectionGroup:"Section Colors",statuslineColorContextLow:"Low (<50%)",statuslineColorContextMid:"Mid (50-75%)",statuslineColorContextHigh:"High (>75%)",statuslineColorAccent:"Accent",statuslineColorMuted:"Muted",statuslineColorSeparator:"Separator",statuslineModeFullDesc:"All sections visible",statuslineModeCompactDesc:"Condensed display",statuslineModeMinimalDesc:"Essential info only",statuslineModeNoneDesc:"Disabled",statuslinePreviewTitle:"Claude Code — statusline preview",statuslinePreviewEmptyLine:"(empty line)",statuslinePreviewNoLines:"(no lines configured)",statuslineSectionModelLabel:"Model",statuslineSectionContextLabel:"Context Window",statuslineSectionQuotaLabel:"Usage Quota",statuslineSectionDirectoryLabel:"Directory",statuslineSectionGitLabel:"Git Status",statuslineSectionCostLabel:"Cost",statuslineSectionChangesLabel:"Changes",statuslineSectionAgentsLabel:"Agents",statuslineSectionTodosLabel:"Tasks",statuslineSectionModelDesc:"AI model name and provider",statuslineSectionContextDesc:"Context window usage bar",statuslineSectionQuotaDesc:"5-hour and weekly usage quota",statuslineSectionDirectoryDesc:"Current working directory",statuslineSectionGitDesc:"Git branch, staged/unstaged changes",statuslineSectionCostDesc:"Session cost estimate",statuslineSectionChangesDesc:"Lines added and removed",statuslineSectionAgentsDesc:"Recent agent activity",statuslineSectionTodosDesc:"Current task progress",statuslineSectionsVisible:"sections visible",statuslineLoadErrorSaveDisabled:"Could not load saved layout. Saving is disabled to prevent data loss.",statuslineAddLine:"Add Line",statuslineRemoveLine:"Remove",statuslineHiddenSections:"Hidden Sections",statuslineDragToLine:"Drag sections to a line to show them",statuslineQuotaLow:"Quota Low",statuslineQuotaHigh:"Quota High",statuslineLine:"Line",sessionsTitle:"Sessions",sessionDetail:"Session Detail",sessionMessages:"messages",sessionToolCalls:"tool calls",sessionDuration:"Duration",noSessionsData:"No sessions found",sessionReadOnly:"Read-only view",sessionLastActive:"Last active",sessionProjectSessions:"Project Sessions",sessionBack:"Back",sessionLoading:"Loading...",sessionError:"Failed to load",sessionCount:"sessions",sessionToolInput:"Input",sessionToolResult:"Result",sessionToolsUsed:"Tools Used",sessionSystemContext:"System Context",sessionExpandAll:"Expand all",sessionCollapseAll:"Collapse all",sessionNoContent:"No text content",sessionUser:"User",sessionAssistant:"Assistant",sessionThinking:"Thinking...",sessionSearchPlaceholder:"Search in conversation...",sessionSearchResults:"results",sessionNoResults:"No matches",sessionGroupMessages:"messages",palettePlaceholder:"Search agents, commands, skills...",paletteNoResults:"No results found",paletteAgents:"Agents",paletteCommands:"Commands",paletteSkills:"Skills",paletteProjects:"Projects",paletteNavigation:"Navigation",skillsBrowser:"Skills",skillsCount:"{count} skills",skillDetail:"Skill Detail",searchSkillsBrowserPlaceholder:"Search skills...",noSkillsBrowserFound:"No skills found",backToSkillsBrowser:"Back to Skills",skillTriggers:"Triggers",skillLocal:"Local",skillGithub:"GitHub",systemNavLabel:"System",dashboardTitle:"Dashboard",dashboardAgents:"Agents",dashboardCommands:"Commands",dashboardSkills:"Skills",dashboardMcpServers:"MCP Servers",configured:"Configured",available:"Available",modelDistribution:"Model Distribution",recentAgents:"Recent Agents",suggestionsTitle:"Suggestions",acrossAgents:"across {count} agents",noAgentsConfigured:"No agents configured in ~/.claude/agents/",mcpTitle:"MCP Servers",mcpServerName:"Server",mcpCommand:"Command",mcpArgs:"Arguments",mcpSource:"Source",mcpStatus:"Status",mcpConfigured:"Configured",mcpNoServers:"No MCP servers configured",mcpSourceSettings:"settings.json",mcpSourceMcpJson:".mcp.json",mcpSourceProject:"Project",mcpToolCount:"Tools",agentsBrowser:"Agents",agentsBrowserCount:"{count} agents",filterAll:"All",agentDetail:"Agent Detail",agentInstructions:"Instructions",agentFrontmatter:"Configuration",searchAgentsPlaceholder:"Search agents...",noAgentsFound:"No agents found",backToAgents:"Back to Agents",commandsBrowser:"Commands",commandsCount:"{count} commands",commandDetail:"Command Detail",searchCommandsPlaceholder:"Search commands...",noCommandsFound:"No commands found",backToCommands:"Back to Commands",rootCommands:"Root",selectToView:"Select an item to view details",indexingFrom:"Indexing from",workflowsTitle:"Workflows",workflowsSubtitle:"Learn NineKit through interactive workflow visualization.",workflowsCredit:"Workflows data and visualization layout inspired by",workflowImplementationRecipe:"Implementation Recipe",workflowSearchPlaceholder:"Search workflows...",workflowNoResults:"No workflows found",loadingWorkflows:"Loading workflows...",workflowCategoryAll:"All",workflowCategoryGettingStarted:"Getting Started",workflowCategoryDesignFrontend:"Design & Frontend",workflowCategoryDebuggingFixes:"Debugging & Fixes",workflowCategoryPlanningReview:"Planning & Review",workflowCategoryResearchDocs:"Research & Docs",workflowCategoryShipping:"Shipping",workflowCategoryBackendInfra:"Backend & Infra",workflowCategoryMediaCreative:"Media & Creative",workflowCategoryAdvanced:"Advanced",workflowComplexityBeginner:"Beginner",workflowComplexityIntermediate:"Intermediate",workflowComplexityAdvanced:"Advanced",workflowBuildFeature:"Build a New Feature",workflowBuildFeatureDesc:"Add new functionality to applications systematically.",workflowQuickImplementation:"Quick Implementation",workflowQuickImplementationDesc:"Fast track implementation for small, understood features.",workflowStartNewProject:"Start New Project",workflowStartNewProjectDesc:"Bootstrap a brand new project with right foundations.",workflowFrontendDesign:"Frontend Design",workflowFrontendDesignDesc:"Create beautiful user interfaces guided by design taste bots.",workflowAiDesignStitch:"AI Design Stitch",workflowAiDesignStitchDesc:"Orchestrate Google Stitch for generating designs from prompt.",workflowExcalidraw:"Excalidraw Design",workflowExcalidrawDesc:"Visualize architectures or mockups using Excalidraw JSON.",workflowFixBug:"Fix Bug",workflowFixBugDesc:"Identify root cause and automatically fix codebase issues.",workflowSecurityAudit:"Security Audit",workflowSecurityAuditDesc:"Thorough security check on the repository.",workflowTestScenarios:"Test Scenarios",workflowTestScenariosDesc:"Generate edge cases and test scenarios by decomposing features.",workflowStride:"STRIDE Analysis",workflowStrideDesc:"Perform a STRIDE + OWASP-based security audit threat model.",workflowCodeReview:"Code Review",workflowCodeReviewDesc:"Review code quality with adversarial rigor.",workflowPlanValidate:"Plan + Validate",workflowPlanValidateDesc:"Draft an architectural plan and rigorously validate its technical feasible.",workflowAdversarialReview:"Adversarial Review",workflowAdversarialReviewDesc:"Trigger a harsh red-team review mapping out potential failure modes.",workflowAutoresearch:"Autonomous Loop",workflowAutoresearchDesc:"Run an autonomous iterative optimization loop for any metric.",workflowXia:"Extract/Port Feature",workflowXiaDesc:"Port or extract a feature algorithm from an external codebase.",workflowVisualDocumentation:"Visual Documentation",workflowVisualDocumentationDesc:"Build diagrams outlining current repo logic and architectures.",workflowTechnicalResearch:"Technical Research",workflowTechnicalResearchDesc:"Investigate technological solutions deeply before writing code.",workflowLlmsTxt:"Generate llms.txt",workflowLlmsTxtDesc:"Analyze the codebase and construct a comprehensive llms.txt file.",workflowDevops:"DevOps / Release",workflowDevopsDesc:"Configure Docker, CI/CD and deploy standard web platforms.",workflowShip:"Ship Pipeline",workflowShipDesc:"Merge, test, review, commit, bump semantic version and PR.",workflowDatabaseOps:"Database Operations",workflowDatabaseOpsDesc:"Write complex aggregation pipelines or optimize database performance.",workflowRemotion:"Remotion Video",workflowRemotionDesc:"Build programmatic video sequences internally.",workflowShowOff:"Show Off Demo",workflowShowOffDesc:"Build an interactive self-contained HTML showcase for a repo.",workflowAgentTeams:"Agent Teams",workflowAgentTeamsDesc:"Spawn isolated team members for parallel coordinated labor.",workflowWorktree:"Worktree Parallelism",workflowWorktreeDesc:"Instantly isolate feature iterations in new worktrees."},vi:{loading:"Đang tải...",error:"Lỗi",selectProject:"Chọn dự án để xem bảng điều khiển",controlCenter:"Trung tâm điều khiển",settings:"Cài đặt",sync:"Đồng bộ",offline:"Ngoại tuyến",switchToLight:"Chuyển sang chế độ sáng",switchToDark:"Chuyển sang chế độ tối",settingsSection:"Cài đặt",overviewSection:"Tổng quan",entitiesSection:"Thực thể",toolsSection:"Công cụ",configEditor:"Trình chỉnh sửa cấu hình",projects:"Dự án",addProject:"Thêm dự án",global:"Toàn cục",skills:"Kỹ năng",skillsNav:"Kỹ năng",health:"Sức khỏe",collapse:"Thu gọn",expand:"Mở rộng",installing:"Đang cài đặt...",manage:"Quản lý",uninstall:"Gỡ cài đặt",installGlobally:"Cài đặt toàn cục",installGloballyDesc:"Khả dụng cho tất cả dự án thay vì chỉ dự án hiện tại",selectAtLeastOneAgent:"Vui lòng chọn ít nhất một agent",installationFailed:"Cài đặt thất bại",allSkills:"Tất cả kỹ năng",refresh:"Làm mới",browseAndManageSkills:"Duyệt và quản lý kỹ năng cho agents của bạn",detected:"Đã phát hiện",notDetected:"Chưa phát hiện",sessions:"phiên",noSessions:"Không có phiên",terminal:"Terminal",terminalSub:"Mở bash tại đường dẫn",editor:"Trình soạn thảo",editorSub:"Mở trong VS Code",useGlobalFallback:"Dùng fallback global",openAtPath:"Mở tại đường dẫn dự án",openAppOnly:"Chỉ mở ứng dụng",actionOptionsLoadFailed:"Không thể tải tùy chọn editor/terminal",launch:"Khởi chạy",launchSub:"Bắt đầu Claude Code",config:"Cấu hình",configSub:"Quản lý cài đặt dự án",recentSessions:"Phiên gần đây",viewAllHistory:"Xem tất cả lịch sử",showLess:"Thu gọn",actionFailed:"Thao tác thất bại",loadingSessions:"Đang tải phiên...",noSessionsFound:"Không tìm thấy phiên nào",configuration:"Cài đặt Claude",planSettingsTitle:"Cài đặt Kế hoạch",activeKit:"Kit hoạt động",aiModel:"Mô hình",hooks:"Hooks",active:"hoạt động",mcpServers:"Máy chủ MCP",connected:"kết nối",plansDirectory:"Thư mục kế hoạch",validationMode:"Chế độ xác thực",planScopeLabel:"Phạm vi",planScopeProject:"dự án",planScopeGlobal:"toàn cục",activePlansLabel:"Kế hoạch đang hoạt động",activePlansTitle:"Kế hoạch đang hoạt động",noActivePlansFound:"Không có kế hoạch đang hoạt động",openPlan:"Mở kế hoạch",openKanban:"Mở Kanban",blockedByLabel:"Bị chặn bởi",progressLabel:"Tiến độ",editProjectConfig:"Chỉnh sửa cấu hình dự án",projectPreferenceSaveFailed:"Không thể lưu tùy chọn",globalSettings:"(Toàn cục)",globalSkills:"Kỹ năng toàn cục",loadingSkills:"Đang tải kỹ năng...",noDescription:"Không có mô tả",browseSkillsMarketplace:"Duyệt Skills Marketplace",backToDashboard:"Quay lại bảng điều khiển",educationalConfigEditor:"Trình chỉnh sửa cấu hình hướng dẫn",discard:"Hủy bỏ",saveChanges:"Lưu thay đổi",mergedView:"Chế độ gộp",localConfig:"Cục bộ (.nk.json)",globalConfig:"Toàn cục",syntaxValid:"Cú pháp hợp lệ",configurationHelp:"Hướng dẫn cấu hình",field:"Trường",type:"Kiểu",default:"Mặc định",description:"Mô tả",validValues:"Giá trị hợp lệ",systemEffect:"Hiệu ứng hệ thống",exampleUsage:"Ví dụ sử dụng",knowledgeBase:"Cơ sở kiến thức",clickToSeeHelp:"Nhấp vào bất kỳ trường cấu hình nào để xem tài liệu chi tiết và ví dụ sử dụng.",extractedFrom:"Trích xuất từ NineKit v2.x Specification",resetToDefault:"Đặt lại",saving:"Đang lưu...",saved:"Đã lưu",confirmReset:"Đặt lại về mặc định?",confirmResetMessage:"Tất cả thay đổi sẽ bị mất và được thay thế bằng giá trị mặc định.",confirm:"Xác nhận",saveFailed:"Lưu thất bại",configTab:"Cấu hình",systemTab:"Hệ thống",formTab:"Biểu mẫu",jsonTab:"JSON",readOnly:"Chỉ đọc",installedKit:"Kit đã cài",kitVersion:"Phiên bản Kit",installedOn:"Cài đặt vào",noKitInstalled:"Chưa cài kit",components:"Thành phần",agents:"Agents",commands:"Commands",workflows:"Workflows",kitSkills:"Skills",fileOwnership:"Quyền sở hữu tệp",ownershipCk:"do kit quản lý",ownershipUser:"do người dùng",ownershipModified:"đã chỉnh sửa",componentInventory:"Thành phần đã cài",installedHooks:"Hooks đã cài",installedMcpServers:"MCP Servers",lastChecked:"Kiểm tra cập nhật",staleIndicator:"Cũ",skippedVersion:"Đã bỏ qua",filesModifiedFromDefaults:"tệp đã sửa so với mặc định",cliCard:"NineKit CLI",checkForUpdates:"Kiểm tra cập nhật",checking:"Đang kiểm tra...",upToDate:"Đã cập nhật",updateAvailable:"Có bản cập nhật",updateNow:"Cập nhật ngay",updating:"Đang cập nhật...",updateSuccess:"Cập nhật hoàn tất!",updateFailed:"Cập nhật thất bại",closeModal:"Đóng",showDetails:"Xem chi tiết",hideDetails:"Ẩn chi tiết",environment:"Môi trường",claudeConfigPath:"Cấu hình Claude",nodeVersion:"Node",bunVersion:"Bun",osVersion:"Hệ điều hành",envShell:"Shell",envHomeDir:"Thư mục gốc",envCpuCores:"Nhân CPU",envTotalMemory:"Bộ nhớ",cliPackageManager:"Trình quản lý gói",cliInstallLocation:"Vị trí cài đặt",cliGitVersion:"Git",cliGhVersion:"GitHub CLI",channelStable:"Ổn định",channelBeta:"Beta",betaBadge:"Beta",latestVersion:"Mới nhất",selectVersion:"Chọn phiên bản",loadingVersions:"Đang tải...",prereleaseLabel:"Thử nghiệm",currentVersionLabel:"Hiện tại",checkAll:"Kiểm tra tất cả",checkingAll:"Đang kiểm tra...",updateAll:"Cập nhật tất cả",updatesAvailable:"{count} bản cập nhật",allUpToDate:"Tất cả đã cập nhật",systemControlTower:"Trung tâm hệ thống",systemOverviewTitle:"Tổng quan cập nhật & môi trường",systemOverviewDesc:"Theo dõi CLI và kit, rồi nâng cấp từ một nơi.",installedComponentsHeading:"Thành phần đã cài",updateReadiness:"Mức sẵn sàng cập nhật",checkedComponents:"Đã kiểm tra",activeChannel:"Kênh",readyToScan:"Sẵn sàng kiểm tra",noTrackedFiles:"Không phát hiện tệp theo dõi",kitsLabel:"Kit",componentFilterAll:"Tất cả",componentFilterUpdates:"Bản cập nhật",componentFilterUpdatesCount:"Bản cập nhật ({count})",componentFilterUpToDate:"Đã cập nhật",componentFilterUpToDateCount:"Đã cập nhật ({count})",componentFilterCli:"CLI",componentFilterKits:"Kit",noComponentsMatchFilter:"Không có thành phần phù hợp bộ lọc hiện tại.",runCheckAllForFilter:"Hãy chạy Kiểm tra tất cả để nạp dữ liệu cho bộ lọc này.",noUpdatesFound:"Không có bản cập nhật. Các thành phần đã kiểm tra đều mới nhất.",noUpToDateYet:"Chưa có thành phần nào ở trạng thái đã cập nhật.",configWorkspaceHint:"Chỉnh sửa cấu hình hoặc quản lý cập nhật hệ thống trong một màn hình.",settingsJsonHeading:"JSON Cài đặt Claude",settingsJsonMissing:"Không tìm thấy tệp ~/.claude/settings.json.",settingsJsonLoadFailed:"Không thể tải ~/.claude/settings.json.",settingsLoadFailedDetail:"Chi tiết lỗi:",configLoadFailed:"Không thể tải cấu hình.",configLoadFailedDetail:"Chi tiết lỗi:",settingsBackupSaved:"Đã lưu bản sao lưu",hookDiagnosticsTitle:"Chẩn đoán Hook",hookDiagnosticsDesc:"Xem hoạt động hook gần đây và lỗi mà không cần mở tệp JSONL thủ công.",hookDiagnosticsPathPending:"Đang xác định đường dẫn log...",hookDiagnosticsScopeGlobal:"Hook toàn cục",hookDiagnosticsEntries:"Bản ghi",hookDiagnosticsCrashes:"Sự cố",hookDiagnosticsWarnings:"Cảnh báo",hookDiagnosticsBlocks:"Chặn",hookDiagnosticsLastEvent:"Sự kiện cuối",hookDiagnosticsLoading:"Đang tải chẩn đoán hook...",hookDiagnosticsLoadFailed:"Không thể tải chẩn đoán hook",hookDiagnosticsMissing:"Chưa tìm thấy tệp log hook cho phạm vi này.",hookDiagnosticsEmpty:"Tệp log hook có tồn tại nhưng không có bản ghi đọc được.",hookDiagnosticsParseErrorsNotice:"Đã bỏ qua {count} dòng log bị lỗi khi tải chẩn đoán.",hookDiagnosticsTruncatedNotice:"Đang hiển thị cửa sổ bản ghi gần đây để giữ giao diện phản hồi tốt với log lớn.",hookDiagnosticsToolLabel:"công cụ",hookDiagnosticsTargetLabel:"mục tiêu",hookDiagnosticsUnknown:"Không rõ",hookDiagnostics:"Chẩn đoán Hook",hookEvent:"Sự kiện",hookExecutions:"Lần chạy",hookAvgLatency:"Trung bình",hookFailureRate:"Tỉ lệ lỗi",hookLastRun:"Lần cuối",hookLatencyWarning:"Độ trễ > 500ms",activityMetrics:"Hoạt động",activityTotalSessions:"Tổng phiên",activityMostActive:"Dự án hoạt động nhiều nhất",activityPeriod24h:"24h",activityPeriod7d:"7 ngày",activityPeriod30d:"30 ngày",activityNoData:"Không có dữ liệu",addProjectTitle:"Thêm dự án",addProjectDescription:"Thêm dự án NineKit mới vào trung tâm điều khiển",projectPath:"Đường dẫn dự án",pathPlaceholder:"/đường/dẫn/dự/án",alias:"Bí danh",aliasOptional:"(tùy chọn)",aliasPlaceholder:"dự-án-của-tôi",aliasDescription:"Tên hiển thị tùy chỉnh cho dự án",pathRequired:"Đường dẫn bắt buộc",failedToAdd:"Không thể thêm dự án",cancel:"Hủy",adding:"Đang thêm...",somethingWentWrong:"Đã xảy ra lỗi",reloadApp:"Tải lại ứng dụng",serverNotRunning:"Máy chủ không chạy",startServerMessage:"Config UI yêu cầu máy chủ backend đang chạy.",runThisCommand:"Chạy lệnh này",tryAgain:"Thử lại",projectConfig:"Cấu hình dự án",inheritedFromGlobal:"Kế thừa từ toàn cục",localOverride:"Ghi đè cục bộ",viewGlobalConfig:"Trường này kế thừa từ cấu hình toàn cục. Xem",onboardingTitle:"Chào mừng đến NineKit",onboardingSubtitle:"Chọn kit của bạn và bắt đầu trong vài phút",kitEngineerName:"NineKit Engineer",kitEngineerTagline:"Lập trình AI với skills, hooks và multi-agent",kitMarketingName:"NineKit Marketing",kitMarketingTagline:"Tự động hóa nội dung: chiến dịch, mạng xã hội, phân tích",featureAgents:"AI Agents",featureAgentsDesc:"Các agent chuyên biệt cho từng tác vụ",featureHooks:"Lifecycle Hooks",featureHooksDesc:"Tùy chỉnh hành vi của Claude tại các thời điểm quan trọng",featureSkills:"Thư viện Skills",featureSkillsDesc:"Các khả năng có sẵn bạn có thể kích hoạt",featureMultiAgent:"Multi-Agent Workflows",featureMultiAgentDesc:"Phối hợp nhiều agent cho các tác vụ phức tạp",featureContent:"Tạo nội dung",featureContentDesc:"Tự động tạo và tối ưu nội dung",featureSocial:"Công cụ mạng xã hội",featureSocialDesc:"Lên lịch, phân tích và tự động tương tác",stepChooseKit:"Chọn Kit",stepConfigure:"Cấu hình",stepInstall:"Cài đặt",back:"Quay lại",next:"Tiếp theo",install:"Cài đặt",installSuccess:"Cài đặt hoàn tất!",installSuccessDesc:"{kit} đã sẵn sàng sử dụng",getStarted:"Bắt đầu",goToDashboard:"Đi đến Dashboard",kitConfig:"Cấu hình Kit",kitConfigSubtitle:"Cấu hình NineKit Engineer",scopeGlobal:"Toàn cục",scopeProject:"Dự án",sectionGeneral:"Cài đặt chung",sectionPaths:"Đường dẫn",sectionPrivacy:"Bảo mật & Tin cậy",sectionProject:"Phát hiện dự án",sectionIntegrations:"Tích hợp",sectionHooks:"Hooks",sectionAdvanced:"Nâng cao",fieldCodingLevel:"Cấp độ lập trình",fieldCodingLevelDesc:"Cấp độ kinh nghiệm (-1=tự động, 0=mới bắt đầu, 1=trung cấp, 2=nâng cao, 3=chuyên gia, 4=tech-lead, 5=thần)",fieldStatusline:"Chế độ thanh trạng thái",fieldStatuslineDesc:"Lượng thông tin hiển thị trên thanh trạng thái",fieldStatuslineColors:"Màu thanh trạng thái",fieldStatuslineColorsDesc:"Bật màu ANSI trong thanh trạng thái",fieldStatuslineQuota:"Hiển thị Quota Statusline",fieldStatuslineQuotaDesc:"Hiển thị các nhãn quota 5h / wk trong statusline",fieldThinkingLanguage:"Ngôn ngữ suy nghĩ",fieldThinkingLanguageDesc:"Ngôn ngữ cho suy luận nội bộ của Claude (null=Tiếng Anh)",fieldResponseLanguage:"Ngôn ngữ phản hồi",fieldResponseLanguageDesc:"Ngôn ngữ cho phản hồi của Claude (null=theo người dùng)",fieldDocsPath:"Thư mục tài liệu",fieldDocsPathDesc:"Đường dẫn đến thư mục tài liệu",fieldPlansPath:"Thư mục kế hoạch",fieldPlansPathDesc:"Đường dẫn đến thư mục kế hoạch",fieldGlobalPlansPath:"Thư mục kế hoạch toàn cục",fieldGlobalPlansPathDesc:"Đường dẫn đến thư mục kế hoạch toàn cục",fieldPrivacyBlock:"Chặn quyền riêng tư",fieldPrivacyBlockDesc:"Chặn truy cập file nhạy cảm (.env, credentials)",fieldTrustEnabled:"Chế độ tin cậy",fieldTrustEnabledDesc:"Tự động phê duyệt các tool calls",fieldTrustPassphrase:"Mật khẩu tin cậy",fieldTrustPassphraseDesc:"Mật khẩu để bật chế độ tin cậy",fieldProjectType:"Loại dự án",fieldProjectTypeDesc:"Ghi đè loại dự án tự động phát hiện",fieldPackageManager:"Trình quản lý gói",fieldPackageManagerDesc:"Ghi đè trình quản lý gói tự động phát hiện",fieldFramework:"Framework",fieldFrameworkDesc:"Ghi đè framework tự động phát hiện",fieldGeminiModel:"Mô hình Gemini",fieldGeminiModelDesc:"Mô hình Gemini cho các lệnh CLI; id gemini-3.0-* cũ sẽ tự động ánh xạ",geminiModel25Flash:"Gemini 2.5 Flash — Mọi tài khoản",geminiModel25Pro:"Gemini 2.5 Pro — Có thể bị giới hạn dung lượng",geminiModel3FlashPreview:"Gemini 3 Flash Preview — Chỉ Pro/Ultra",geminiModel3ProPreview:"Gemini 3 Pro Preview — Chỉ Pro/Ultra",fieldResearchUseGemini:"Dùng Gemini cho nghiên cứu",fieldResearchUseGeminiDesc:"Dùng Gemini CLI thay vì WebSearch",fieldDocsMaxLoc:"Số dòng tối đa/tài liệu",fieldDocsMaxLocDesc:"Số dòng code tối đa cho mỗi file tài liệu",fieldPlanNamingFormat:"Định dạng tên kế hoạch",fieldPlanNamingFormatDesc:"Định dạng cho tên thư mục kế hoạch",fieldPlanDateFormat:"Định dạng ngày kế hoạch",fieldPlanDateFormatDesc:"Định dạng ngày cho tên kế hoạch (moment.js)",fieldPlanValidationMode:"Chế độ xác thực",fieldPlanValidationModeDesc:"Cách xác thực kế hoạch trước khi triển khai",fieldPlanMinQuestions:"Số câu hỏi tối thiểu",fieldPlanMinQuestionsDesc:"Số câu hỏi xác thực tối thiểu",fieldPlanMaxQuestions:"Số câu hỏi tối đa",fieldPlanMaxQuestionsDesc:"Số câu hỏi xác thực tối đa",fieldAssertions:"Assertions",fieldAssertionsDesc:"Các assertions và quy tắc cần thực thi",fieldHookSessionInit:"Khởi tạo phiên",fieldHookSessionInitDesc:"Phát hiện dự án và thiết lập môi trường",fieldHookSubagentInit:"Khởi tạo subagent",fieldHookSubagentInitDesc:"Inject context vào subagents",fieldHookSessionState:"Trạng thái phiên",fieldHookSessionStateDesc:"Lưu trạng thái phiên cho bàn giao và statusline",fieldHookCookAfterPlanReminder:"Nhắc cook sau plan",fieldHookCookAfterPlanReminderDesc:"Nhắc agent tiếp tục triển khai sau khi lập kế hoạch",fieldHookDescriptiveName:"Tên mô tả",fieldHookDescriptiveNameDesc:"Bắt buộc đặt tên file dạng kebab-case mô tả cho scripts",fieldHookDevRulesReminder:"Nhắc nhở quy tắc dev",fieldHookDevRulesReminderDesc:"Inject context quy tắc phát triển",fieldHookPlanFormatKanban:"Định dạng kanban plan",fieldHookPlanFormatKanbanDesc:"Đồng bộ metadata kanban của plan sau khi chỉnh sửa",fieldHookUsageQuotaCacheRefresh:"Cache hạn mức sử dụng",fieldHookUsageQuotaCacheRefreshDesc:"Làm mới cache thông tin hạn mức sử dụng",fieldHookUsageContextAwareness:"Nhận thức sử dụng cho prompt",fieldHookUsageContextAwarenessDesc:"Inject nhận thức giới hạn sử dụng vào prompt",fieldHookContextTracking:"Theo dõi ngữ cảnh",fieldHookContextTrackingDesc:"Theo dõi cửa sổ ngữ cảnh (% đã dùng, số token)",fieldHookScoutBlock:"Chặn Scout",fieldHookScoutBlockDesc:"Chặn thư mục nặng khỏi việc khám phá",fieldHookPrivacyBlock:"Hook chặn quyền riêng tư",fieldHookPrivacyBlockDesc:"Chặn đọc file nhạy cảm",fieldHookSimplifyGate:"Cổng đơn giản hóa",fieldHookSimplifyGateDesc:"Hook UserPromptSubmit — opt-in. Khi bật (simplify.gate.enabled=true), chặn cứng ship/merge/pr/deploy/publish và cảnh báo nhẹ commit/finalize/release khi diff vượt ngưỡng.",sectionSimplify:"Cổng đơn giản hóa",fieldSimplifyThresholdLocDelta:"Ngưỡng tổng LOC",fieldSimplifyThresholdLocDeltaDesc:"Tổng LOC thay đổi (toàn bộ file) vượt ngưỡng này thì cổng kích hoạt.",fieldSimplifyThresholdFileCount:"Ngưỡng số file",fieldSimplifyThresholdFileCountDesc:"Số file thay đổi vượt ngưỡng này thì cổng kích hoạt.",fieldSimplifyThresholdSingleFileLoc:"Ngưỡng LOC mỗi file",fieldSimplifyThresholdSingleFileLocDesc:"LOC thay đổi trong một file vượt ngưỡng này thì cổng kích hoạt.",fieldSimplifyGateEnabled:"Bật",fieldSimplifyGateEnabledDesc:"Công tắc chính. Tắt mặc định (opt-in). Bật để kích hoạt cổng; env NK_SIMPLIFY_DISABLED=1 luôn bỏ qua.",fieldSimplifyGateHardVerbs:"Động từ chặn cứng",fieldSimplifyGateHardVerbsDesc:"Động từ chặn cứng khi vượt ngưỡng.",fieldSimplifyGateSoftVerbs:"Động từ cảnh báo nhẹ",fieldSimplifyGateSoftVerbsDesc:"Động từ phát cảnh báo không chặn.",sectionUpdatePipeline:"Pipeline Cập nhật",fieldAutoInitAfterUpdate:"Tự động Init sau Update",fieldAutoInitAfterUpdateDesc:"Tự động chạy nk init sau nk update khi kit có phiên bản mới",fieldAutoMigrateAfterUpdate:"Tự động Migrate sau Update",fieldAutoMigrateAfterUpdateDesc:"Tự động chạy nk migrate sau nk update (độc lập với init)",fieldMigrateProviders:"Provider Migrate",fieldMigrateProvidersDesc:"Provider nào tự động migrate. Dùng 'auto' để quét hệ thống hoặc danh sách phân cách bằng dấu phẩy.",skillsPageTitle:"Quản lý Kỹ năng",skillsPageDesc:"Cài đặt kỹ năng NineKit cho các agent lập trình",availableSkills:"Kỹ năng có sẵn",installedSkills:"Kỹ năng đã cài",noSkillsFound:"Không tìm thấy kỹ năng",installSkill:"Cài đặt",uninstallSkill:"Gỡ cài đặt",manageSkill:"Quản lý",syncRegistry:"Đồng bộ",installSkillTitle:"Cài đặt Kỹ năng",selectAgents:"Chọn agent đích",installLocation:"Vị trí cài đặt",globalInstall:"Toàn cục",projectInstall:"Dự án",confirmInstall:"Cài đặt cho các agent đã chọn",installingSkill:"Đang cài đặt...",skillInstallSuccess:"Cài đặt kỹ năng thành công",skillInstallFailed:"Cài đặt thất bại",agentClaudeCode:"Claude Code",agentCursor:"Cursor",agentCodex:"Codex",agentOpencode:"OpenCode",agentGoose:"Goose",agentGeminiCli:"Gemini CLI",agentAntigravity:"Antigravity",agentGithubCopilot:"GitHub Copilot",agentAmp:"Amp",agentKilo:"Kilo",agentRoo:"Roo",agentWindsurf:"Windsurf",agentCline:"Cline",agentOpenhands:"OpenHands",installed:"Đã cài",notInstalled:"Chưa cài",allAgents:"Tất cả Agent",filterByAgent:"Lọc theo agent",skillsTitle:"Kỹ năng",skillsSubtitle:"Duyệt, cài đặt và quản lý kỹ năng cho coding agents",availableCount:"Có sẵn",installedCount:"Đã cài",agentsCount:"Agents",searchSkills:"Tìm kiếm kỹ năng...",searchShortcut:"/",sortAZ:"A-Z",sortCategory:"Danh mục",sortInstalledFirst:"Đã cài trước",listView:"Dạng danh sách",gridView:"Dạng lưới",categoryAll:"Tất cả",categoryAI:"AI",categoryUIUX:"UI/UX",categoryBackend:"Backend",categorySecurity:"Bảo mật",categoryDevOps:"DevOps",categoryDatabase:"Cơ sở dữ liệu",categoryDevelopment:"Phát triển",categoryResearch:"Nghiên cứu",categoryGeneral:"Tổng quát",categoryCore:"Cốt lõi",categoryDocumentation:"Tài liệu",categoryTooling:"Công cụ",categoryMedia:"Phương tiện",categoryFrameworks:"Framework",skillsCountLabel:"{count} kỹ năng",installToAll:"Cài cho tất cả đã phát hiện",scopeLabel:"Phạm vi cài đặt",agentInstalled:"Đã cài",agentNotInstalled:"Chưa cài",skillSource:"Vị trí nguồn",skillSourceBadge:"Nguồn",detailPanelClose:"Đóng",versionLabel:"v{version}",installAllToAllAgents:"Cài tất cả cho tất cả Agent",bulkInstallFailed:"Cài hàng loạt thất bại",noAgentsDetected:"Không phát hiện agent nào",kitBadgeEngineer:"Engineer",kitBadgeMarketing:"Marketing",customizedBadge:"Đã tùy chỉnh",installedVersionLabel:"Phiên bản cài đặt",installedAtLabel:"Cài đặt lúc",sourceTimestampLabel:"Ngày nguồn",kitLabel:"Kit",skillMetadata:"Thông tin Skill",migrate:"Di trú",migrateTitle:"Di trú",migrateSubtitle:"Chuyển toàn bộ stack Claude Code sang provider khác",migrateDetectedProviders:"Đã phát hiện",migrateSelectedProviders:"Đã chọn",migrateDiscovering:"Đang quét nguồn di trú...",migrateRefresh:"Làm mới quét",migrateRun:"Chạy di trú",migrateRunning:"Đang di trú...",migrateSourceSummary:"Tổng quan nguồn",migratePresetCodex:"Codex",migratePresetAntigravity:"Antigravity",migratePresetCore:"Codex + Antigravity + Droid",migratePresetDetected:"Tất cả đã phát hiện",migrateScope:"Phạm vi",migrateScopeProject:"Dự án",migrateScopeGlobal:"Toàn cục",migrateTypes:"Loại di trú",migrateTypeAgents:"Subagents",migrateTypeCommands:"Commands",migrateTypeSkills:"Skills",migrateTypeConfig:"Config",migrateTypeRules:"Rules",migrateTypeHooks:"Hooks",migrateSearchProviders:"Tìm provider...",migrateSelectVisible:"Chọn phần đang hiện",migrateClearSelection:"Bỏ chọn tất cả",migrateProvidersHeading:"Provider đích",migrateProvidersCountSuffix:"provider",migrateNoProvidersMatch:"Không có provider khớp bộ lọc hiện tại.",migrateSelectButton:"Chọn",migrateSelectedButton:"Đã chọn",migrateSelectProviderAction:"Chọn provider",migrateUnselectProvider:"Bỏ chọn provider",migrateCapabilitiesLabel:"loại",migrateCapabilitiesSection:"Ma trận khả năng",migrateSupported:"Hỗ trợ",migrateUnsupportedShort:"Không hỗ trợ",migrateIncludedEnabled:"Đang bật",migrateIncludedDisabled:"Đang tắt",migrateLatestTarget:"Đích gần nhất",migrateNoResultForProvider:"Chưa có kết quả di trú cho provider này.",migrateActionSummaryTitle:"Sẵn sàng di trú",migrateGlobalOnlyCommandsShort:"Commands chỉ hỗ trợ global",migrateNoProviders:"Không có provider khả dụng.",migrateUnsupported:"Sẽ bỏ qua (không hỗ trợ)",migrateGlobalForced:"Provider đã chọn chỉ hỗ trợ command ở global scope. Chọn Global để cài.",migrateResults:"Kết quả di trú",migrateInstalled:"Đã cài",migrateSkipped:"Đã bỏ qua",migrateFailed:"Lỗi",migrateProvider:"Provider",migrateStatus:"Trạng thái",migratePath:"Đường dẫn",migrateError:"Lỗi",migrateStatusInstalled:"Đã cài",migrateStatusSkipped:"Đã bỏ qua",migrateStatusFailed:"Lỗi",migrateNoResults:"Chưa có kết quả di trú.",migrateDetectFailed:"Không thể quét dữ liệu di trú",migrateExecuteFailed:"Chạy di trú thất bại",migrateSelectProvider:"Vui lòng chọn ít nhất một provider",migrateNoTypesEnabled:"Bật ít nhất một loại di trú",migrateDetectedTag:"Đã phát hiện",migrateNotDetectedTag:"Chưa phát hiện",migrateFilterRecommended:"Đề xuất",migrateActionInstall:"Cài",migrateActionUpdate:"Cập nhật",migrateActionSkip:"Bỏ qua",migrateActionConflict:"Xung đột",migrateActionDelete:"Xóa",migrateUnchanged:"chưa thay đổi",migrateConflictSectionTitle:"Xung đột",migrateConflictUseCK:"Dùng NK",migrateConflictKeepMine:"Giữ của tôi",migrateConflictSmartMerge:"Merge thông minh",migrateConflictShowDiff:"Hiện diff",migrateConflictHideDiff:"Ẩn diff",migrateConflictResolved:"Đã giải quyết",migrateConflictManual:"Thủ công",migrateConflictOverwriteAll:"Ghi đè tất cả",migrateConflictKeepAll:"Giữ tất cả",migrateSummaryTitle:"Di trú hoàn tất",migrateSummaryNewMigration:"Di trú mới",migrateType:"Loại",migrateItem:"Mục",migrateReconciling:"Đang phân tích thay đổi...",migrateReviewPlan:"Xem kế hoạch",migrateExecutePlan:"Thực hiện di trú",migrateExecuting:"Đang thực hiện di trú...",migrateResolveConflicts:"Giải quyết xung đột trước khi thực hiện",migrateReason_newItem:"Mục mới từ provider",migrateReason_newProviderForItem:"Provider mới cho mục này",migrateReason_targetDeletedSourceChanged:"Đích đã xóa nhưng nguồn có thay đổi mới",migrateReason_targetDirEmptyReinstall:"Thư mục đích trống — cài lại",migrateReason_forceReinstall:"Yêu cầu cài lại bắt buộc",migrateReason_forceOverwrite:"Ghi đè bắt buộc (bạn đã chỉnh sửa, --force đang bật)",migrateReason_registryUpgradeReinstall:"Nâng cấp registry yêu cầu cài lại",migrateReason_sourceChanged:"Nguồn đã được cập nhật",migrateReason_registryUpgradeHeal:"Sửa đích cũ sau nâng cấp registry",migrateReason_noChanges:"Không phát hiện thay đổi",migrateReason_userEditsPreserved:"Giữ nguyên chỉnh sửa của người dùng",migrateReason_userDeletedRespected:"Tôn trọng việc xóa của người dùng",migrateReason_targetUpToDateBackfill:"Đích đã cập nhật",migrateReason_providerChecksumUnavailable:"Không có checksum provider",migrateReason_targetStateUnknown:"Không xác định được trạng thái đích",migrateReason_sourceRemovedOrphan:"Nguồn đã xóa — dọn dẹp orphan",migrateReason_renamedCleanup:"Mục đã đổi tên — xóa đường dẫn cũ",migrateReason_pathMigratedCleanup:"Đường dẫn đã di chuyển — xóa vị trí cũ",migrateReason_bothChanged:"Cả nguồn và đích đều có thay đổi",migrateReason_targetStateUnknownSourceChanged:"Nguồn thay đổi nhưng trạng thái đích không rõ",migrateBanner_emptyDir_title:"Phát hiện thư mục trống",migrateBanner_emptyDir_body:"mục bên dưới sẽ được cài lại. Bỏ chọn để bỏ qua.",migrateBanner_emptyDirRespected_title:"Tôn trọng việc xóa của bạn",migrateBanner_emptyDirRespected_body:"đang trống. Tôn trọng việc xóa của bạn.",migrateBanner_reinstallCta:"Cài lại các mục này",migrateModeLabel:"Chế độ di chuyển",migrateModeReconcile:"Đồng bộ",migrateModeReconcileDesc:"Phát hiện thay đổi thông minh",migrateModeInstall:"Cài đặt",migrateModeInstallDesc:"Chọn mục để cài",migrateModeConfirmTitle:"Chuyển chế độ?",migrateModeConfirmBody:"Bạn có {count} thay đổi chờ xử lý. Chuyển sang chế độ {mode} sẽ hủy chúng.",migrateModeConfirmSwitch:"Chuyển & hủy",migrateSmartDefaultInstall:"Phát hiện cài đặt mới — mặc định chế độ Cài đặt",migrateSmartDefaultReconcile:"Đã có registry — mặc định chế độ Đồng bộ",migrateInstallSelectAll:"Chọn tất cả",migrateInstallDeselectAll:"Bỏ chọn tất cả",migrateInstallDirItem:"thư mục",migrateInstallAlreadyInstalled:"đã cài",migrateInstallNoCandidates:"Không tìm thấy mục cài đặt nào cho provider đã chọn.",migrateInstallSelectedCount:"Đã chọn {count} / {total} mục",migrateInstallCta:"Cài {count} mục đã chọn",migrateInstallInstalling:"Đang cài...",migrateInstallLoadingCandidates:"Đang tải danh sách mục...",migrateFlip_moveToSkip:"Chuyển sang Bỏ qua",migrateFlip_moveToInstall:"Chuyển sang Cài",migrateFlip_checkAll:"Chọn tất cả",migrateFlip_uncheckAll:"Bỏ chọn tất cả",migrateFlip_toggleItem:"Bật/tắt mục",migrateConflictBanner_title:"Phát hiện xung đột",migrateConflictBanner_cta:"Mở trình giải quyết xung đột",migrateConflictBanner_hide:"Ẩn trình giải quyết xung đột",migrateShowSkippedItems:"Hiện mục đã bỏ qua",migrateHideSkippedItems:"Ẩn mục đã bỏ qua",migrateConflictBadge:"Xung đột",migrateSummarySubtitle:"mục đã di trú",migrateSummarySearchPlaceholder:"Tìm kiếm...",migrateSummaryFilterAll:"Tất cả",migrateSummaryCollapseAll:"Thu gọn",migrateSummaryExpandAll:"Mở rộng",migrateSummaryNoResults:"Không tìm thấy mục nào",migrateSummaryProviders:"Provider",migrateTypeUnknown:"Khác",kanbanTitle:"Bảng Kanban Kế hoạch",kanbanNoFile:"Chưa chọn file kế hoạch. Dùng tham số ?file=.",kanbanNoPhases:"Không phát hiện giai đoạn nào trong kế hoạch này",kanbanError400:"Yêu cầu không hợp lệ — thiếu tham số file",kanbanError403:"Truy cập bị từ chối — file nằm ngoài thư mục dự án",kanbanError404:"Không tìm thấy file kế hoạch",kanbanComplete:"hoàn thành",kanbanStatus_pending:"Chờ xử lý","kanbanStatus_in-progress":"Đang thực hiện",kanbanStatus_completed:"Hoàn thành",kanbanPhases:"giai đoạn",kanbanProgress:"Tiến độ",kanbanLoadError:"Không thể tải dữ liệu kế hoạch",plansNav:"Kế hoạch",plansTitle:"Bảng điều khiển kế hoạch",plansGlobalTitle:"Tất cả dự án",plansSubtitle:"Xem mọi kế hoạch đang hoạt động, timeline giai đoạn và thao tác nhanh trong một nơi.",plansEmpty:"Không tìm thấy kế hoạch",plansSearch:"Tìm kế hoạch...",plansProjectFilter:"Lọc theo dự án",plansAllProjects:"Tất cả dự án",plansSortBy:"Sắp xếp theo",plansViewGrid:"Lưới",plansViewKanban:"Kanban",plansFilterAll:"Tất cả trạng thái",plansSortDateDesc:"Mới nhất",plansSortDateAsc:"Cũ nhất",plansSortNameAsc:"Tên A-Z",plansSortNameDesc:"Tên Z-A",plansSortProgress:"Tiến độ cao nhất",plansLabel:"Kế hoạch",plansStatusPending:"Chờ xử lý",plansStatusInProgress:"Đang thực hiện",plansStatusInReview:"Đang rà soát",plansStatusDone:"Hoàn tất",plansStatusCancelled:"Đã huỷ",plansCompletedCount:"{count} hoàn thành",plansProjectPlans:"{count} kế hoạch",plansProjectLoadIssues:"Một số dự án không thể quét",plansStatusUnknown:"Chưa rõ",plansBackToPlans:"Quay lại danh sách kế hoạch",plansBackToPlan:"Quay lại kế hoạch",plansPrevious:"Trước",plansNext:"Sau",plansContents:"Mục lục",plansValidate:"Kiểm tra",plansStartNext:"Bắt đầu tiếp theo",plansRestart:"Bắt đầu lại",plansStart:"Bắt đầu",plansComplete:"Hoàn thành",plansReset:"Đặt lại",plansTimeline:"Timeline",plansActivity:"Hoạt động",plansActivitySubtitle:"12 tuần gần đây",plansActivityCombined:"Tổng hợp",plansActivityCommits:"Commit",plansActivityFiles:"Tệp",plansActivityEmpty:"Chưa có dữ liệu hoạt động.",plansHeatmapLoadError:"Không thể tải heatmap hoạt động.",plansHeatmapChanges:"{date} • {count} thay đổi",plansRead:"Đọc",plansPhases:"Giai đoạn",plansPhase:"Giai đoạn",plansPhaseCountCompact:"GD-{count}",plansKanbanEmpty:"Trống",plansLoadingPlan:"Đang tải kế hoạch...",plansLoadingReader:"Đang tải tài liệu...",plansLoadPlanFailed:"Không thể tải kế hoạch ({status})",plansLoadPlanFallback:"Không thể tải kế hoạch",plansLoadFileFailed:"Không thể tải tài liệu ({status})",plansLoadFileFallback:"Không thể tải tài liệu",plansProgressComplete:"Hoàn thành {count}%",plansPhaseCount:"{count} giai đoạn",plansPriority:"Ưu tiên",plansUpdated:"Cập nhật",plansLastUpdated:"Cập nhật lần cuối",plansPriorityLabel:"Ưu tiên {value}",plansUpdatedLabel:"Cập nhật {value}",plansTimelineAvgDays:"Trung bình {count} ngày",plansNoEffort:"Chưa có effort",plansNotFound:"Không tìm thấy kế hoạch",plansQuickInfoTitle:"Tổng quan kế hoạch",plansQuickInfoDescription:"Dùng chế độ xem này để theo dõi tiến độ giai đoạn, phạm vi timeline và hoạt động gần đây của kế hoạch.",plansCurrentStatus:"Trạng thái hiện tại",plansHeatmapMon:"T Hai",plansHeatmapWed:"T Tư",plansHeatmapFri:"T Sáu",developmentFeature:"Đang phát triển",betaFeature:"Beta",experimentalFeature:"Thử nghiệm",sectionModelTaxonomy:"Phân loại mô hình",taxonomyDescription:"Tuỳ chỉnh ánh xạ mô hình cho migration portable sang coding agent khác.",taxonomyTierHeavy:"Nặng (opus)",taxonomyTierBalanced:"Cân bằng (sonnet)",taxonomyTierLight:"Nhẹ (haiku)",taxonomyModel:"Mô hình",taxonomyEffort:"Mức nỗ lực",taxonomyResetProvider:"Đặt lại",taxonomyTier:"Cấp độ",statuslineBuilder:"Trình tạo dòng trạng thái",statuslineBuilderDescription:"Thiết kế bố cục dòng trạng thái bằng kéo và thả",statuslineSections:"Các mục",statuslinePreview:"Xem trước",statuslineTheme:"Giao diện màu sắc",statuslineSettings:"Cài đặt chung",statuslineResetDefaults:"Đặt lại mặc định",statuslineSave:"Lưu",statuslineBaseMode:"Chế độ cơ bản",statuslineBreakpoint:"Điểm ngắt responsive",statuslineMaxAgents:"Số agent tối đa",statuslineTodoTruncation:"Cắt ngắn task",statuslineEnable:"Bật",statuslineDisable:"Tắt",statuslineDragHint:"Kéo để thay đổi thứ tự, bật/tắt từng mục",statuslinePresetDefault:"Mặc định",statuslinePresetMonochrome:"Đơn sắc",statuslinePresetSolarized:"Solarized",statuslinePresetNord:"Nord",statuslinePresetDracula:"Dracula",statuslinePresetCatppuccin:"Catppuccin",statuslinePresetGruvbox:"Gruvbox",statuslinePresetTokyoNight:"Tokyo Night",statuslinePresetRosePine:"Rosé Pine",statuslinePresetOneDark:"One Dark",statuslinePresetAyu:"Ayu",statuslinePresetKanagawa:"Kanagawa",statuslinePresetStealth:"Ẩn mình",statuslinePresetHacker:"Hacker",statuslineSaved:"Đã lưu thành công",statuslineSaveError:"Lưu thất bại",statusline:"Dòng trạng thái",statuslineCollapseSettings:"Thu gọn cài đặt",statuslineExpandSettings:"Mở rộng cài đặt",statuslineIconOverride:"Ghi đè biểu tượng",statuslineLabelOverride:"Ghi đè nhãn",statuslineMaxWidth:"Chiều rộng tối đa (ký tự)",statuslineIconPlaceholder:"vd. 🤖",statuslineMaxWidthPlaceholder:"tự động",statuslineCustomColors:"Màu tùy chỉnh",statuslineColorContextGroup:"Cửa sổ ngữ cảnh",statuslineColorQuotaGroup:"Hạn mức sử dụng",statuslineColorGeneralGroup:"Chung",statuslineColorSectionGroup:"Màu từng mục",statuslineColorContextLow:"Thấp (<50%)",statuslineColorContextMid:"Trung (50-75%)",statuslineColorContextHigh:"Cao (>75%)",statuslineColorAccent:"Nhấn mạnh",statuslineColorMuted:"Giảm nhạt",statuslineColorSeparator:"Dấu phân cách",statuslineModeFullDesc:"Hiển thị tất cả các mục",statuslineModeCompactDesc:"Hiển thị thu gọn",statuslineModeMinimalDesc:"Chỉ thông tin cần thiết",statuslineModeNoneDesc:"Đã tắt",statuslinePreviewTitle:"Claude Code — xem trước dòng trạng thái",statuslinePreviewEmptyLine:"(dòng trống)",statuslinePreviewNoLines:"(chưa cấu hình dòng nào)",statuslineSectionModelLabel:"Mô hình",statuslineSectionContextLabel:"Cửa sổ ngữ cảnh",statuslineSectionQuotaLabel:"Hạn mức sử dụng",statuslineSectionDirectoryLabel:"Thư mục",statuslineSectionGitLabel:"Trạng thái Git",statuslineSectionCostLabel:"Chi phí",statuslineSectionChangesLabel:"Thay đổi",statuslineSectionAgentsLabel:"Agents",statuslineSectionTodosLabel:"Nhiệm vụ",statuslineSectionModelDesc:"Tên mô hình AI và nhà cung cấp",statuslineSectionContextDesc:"Thanh sử dụng cửa sổ ngữ cảnh",statuslineSectionQuotaDesc:"Hạn mức sử dụng 5 giờ và hàng tuần",statuslineSectionDirectoryDesc:"Thư mục làm việc hiện tại",statuslineSectionGitDesc:"Nhánh Git, thay đổi đã/chưa staged",statuslineSectionCostDesc:"Ước tính chi phí phiên",statuslineSectionChangesDesc:"Dòng thêm và xóa",statuslineSectionAgentsDesc:"Hoạt động agent gần đây",statuslineSectionTodosDesc:"Tiến độ tác vụ hiện tại",statuslineSectionsVisible:"mục hiển thị",statuslineLoadErrorSaveDisabled:"Không thể tải bố cục đã lưu. Tính năng lưu đã bị tắt để tránh mất dữ liệu.",statuslineAddLine:"Thêm dòng",statuslineRemoveLine:"Xóa",statuslineHiddenSections:"Mục ẩn",statuslineDragToLine:"Kéo mục vào dòng để hiển thị",statuslineQuotaLow:"Hạn mức thấp",statuslineQuotaHigh:"Hạn mức cao",statuslineLine:"Dòng",sessionsTitle:"Phiên làm việc",sessionDetail:"Chi tiết phiên",sessionMessages:"tin nhắn",sessionToolCalls:"lệnh gọi",sessionDuration:"Thời lượng",noSessionsData:"Không tìm thấy phiên",sessionReadOnly:"Chế độ chỉ xem",sessionLastActive:"Hoạt động lần cuối",sessionProjectSessions:"Phiên dự án",sessionBack:"Quay lại",sessionLoading:"Đang tải...",sessionError:"Tải thất bại",sessionCount:"phiên",sessionToolInput:"Đầu vào",sessionToolResult:"Kết quả",sessionToolsUsed:"Công cụ đã dùng",sessionSystemContext:"Ngữ cảnh hệ thống",sessionExpandAll:"Mở rộng tất cả",sessionCollapseAll:"Thu gọn tất cả",sessionNoContent:"Không có nội dung",sessionUser:"Người dùng",sessionAssistant:"Trợ lý",sessionThinking:"Đang suy nghĩ...",sessionSearchPlaceholder:"Tìm trong hội thoại...",sessionSearchResults:"kết quả",sessionNoResults:"Không tìm thấy",sessionGroupMessages:"tin nhắn",palettePlaceholder:"Tìm agents, lệnh, skills...",paletteNoResults:"Không tìm thấy kết quả",paletteAgents:"Agents",paletteCommands:"Lệnh",paletteSkills:"Skills",paletteProjects:"Dự án",paletteNavigation:"Điều hướng",skillsBrowser:"Skills",skillsCount:"{count} skills",skillDetail:"Chi tiết Skill",searchSkillsBrowserPlaceholder:"Tìm skills...",noSkillsBrowserFound:"Không tìm thấy skill",backToSkillsBrowser:"Quay lại Skills",skillTriggers:"Kích hoạt",skillLocal:"Cục bộ",skillGithub:"GitHub",systemNavLabel:"Hệ thống",dashboardTitle:"Bảng điều khiển",dashboardAgents:"Agents",dashboardCommands:"Lệnh",dashboardSkills:"Skills",dashboardMcpServers:"MCP Servers",configured:"Đã cấu hình",available:"Có sẵn",modelDistribution:"Phân bổ Model",recentAgents:"Agents gần đây",suggestionsTitle:"Gợi ý",acrossAgents:"trên {count} agents",noAgentsConfigured:"Chưa có agents trong ~/.claude/agents/",mcpTitle:"MCP Servers",mcpServerName:"Server",mcpCommand:"Lệnh",mcpArgs:"Tham số",mcpSource:"Nguồn",mcpStatus:"Trạng thái",mcpConfigured:"Đã cấu hình",mcpNoServers:"Chưa cấu hình MCP server",mcpSourceSettings:"settings.json",mcpSourceMcpJson:".mcp.json",mcpSourceProject:"Dự án",mcpToolCount:"Công cụ",agentsBrowser:"Agents",agentsBrowserCount:"{count} agents",filterAll:"Tất cả",agentDetail:"Chi tiết Agent",agentInstructions:"Hướng dẫn",agentFrontmatter:"Cấu hình",searchAgentsPlaceholder:"Tìm agents...",noAgentsFound:"Không tìm thấy agent",backToAgents:"Quay lại Agents",commandsBrowser:"Lệnh",commandsCount:"{count} lệnh",commandDetail:"Chi tiết lệnh",searchCommandsPlaceholder:"Tìm lệnh...",noCommandsFound:"Không tìm thấy lệnh",backToCommands:"Quay lại Lệnh",rootCommands:"Gốc",selectToView:"Chọn mục để xem chi tiết",indexingFrom:"Lấy từ",workflowsTitle:"Quy trình",workflowsSubtitle:"Tìm hiểu NineKit thông qua hình ảnh hóa quy trình tương tác.",workflowsCredit:"Dữ liệu quy trình và giao diện được lấy cảm hứng từ",workflowImplementationRecipe:"Công thức triển khai",workflowSearchPlaceholder:"Tìm quy trình...",workflowNoResults:"Không tìm thấy quy trình",loadingWorkflows:"Đang tải quy trình...",workflowCategoryAll:"Tất cả",workflowCategoryGettingStarted:"Bắt đầu",workflowCategoryDesignFrontend:"Thiết kế & Frontend",workflowCategoryDebuggingFixes:"Xóa lỗi & Kiểm thử",workflowCategoryPlanningReview:"Lập kế hoạch & Đánh giá",workflowCategoryResearchDocs:"Nghiên cứu & Tài liệu",workflowCategoryShipping:"Triển khai",workflowCategoryBackendInfra:"Backend & Hạ tầng",workflowCategoryMediaCreative:"Truyền thông & Sáng tạo",workflowCategoryAdvanced:"Nâng cao",workflowComplexityBeginner:"Cơ bản",workflowComplexityIntermediate:"Trung bình",workflowComplexityAdvanced:"Nâng cao",workflowBuildFeature:"Xây dựng tính năng mới",workflowBuildFeatureDesc:"Thêm chức năng mới vào ứng dụng một cách hệ thống.",workflowQuickImplementation:"Triển khai nhanh",workflowQuickImplementationDesc:"Triển khai nhanh chóng các tính năng nhỏ gọn.",workflowStartNewProject:"Bắt đầu dự án mới",workflowStartNewProjectDesc:"Tạo lập một dự án mới hoàn toàn với nền tảng tiêu chuẩn.",workflowFrontendDesign:"Thiết kế Frontend",workflowFrontendDesignDesc:"Tạo giao diện người dùng dựa trên nguyên tắc thẩm mỹ cao.",workflowAiDesignStitch:"Thiết kế bằng AI Stitch",workflowAiDesignStitchDesc:"Điều khiển Google Stitch để tạo bản thiết kế từ văn bản.",workflowExcalidraw:"Bản vẽ Excalidraw",workflowExcalidrawDesc:"Diễn họa kiến trúc hoạt động sử dụng Excalidraw JSON.",workflowFixBug:"Sửa lỗi (Fix Bug)",workflowFixBugDesc:"Xác định nguyên nhân gốc rễ và tự động sửa các lỗi trong mã nguồn.",workflowSecurityAudit:"Kiểm toán Bảo mật",workflowSecurityAuditDesc:"Kiểm tra bảo mật toàn diện trên kho ứng dụng.",workflowTestScenarios:"Tình huống thử nghiệm",workflowTestScenariosDesc:"Tạo các trường hợp biên và tình huống thử nghiệm tính năng con.",workflowStride:"Phân tích STRIDE",workflowStrideDesc:"Thực hiện mô hình hóa và phân tích rủi ro bảo mật theo chuẩn STRIDE.",workflowCodeReview:"Code Review",workflowCodeReviewDesc:"Đánh giá chất lượng mã nguồn một cách kỹ lưỡng.",workflowPlanValidate:"Lập Kế hoạch + Kiểm chứng",workflowPlanValidateDesc:"Lập bản thảo thiết kế kiến trúc và đánh giá tính khả thi kỹ thuật.",workflowAdversarialReview:"Đánh giá Đối kháng",workflowAdversarialReviewDesc:"Kích hoạt chức năng đánh giá mức độ rủi ro hệ thống.",workflowAutoresearch:"Vòng lặp tự động (Autoloop)",workflowAutoresearchDesc:"Chạy vòng lặp tối ưu hóa tự động cho bất kỳ chỉ số nào.",workflowXia:"Chuyển giao thuật toán",workflowXiaDesc:"Chuyển giao hoặc tách rời thuật toán từ một kho lưu trữ bên ngoài.",workflowVisualDocumentation:"Diễn họa Tài liệu",workflowVisualDocumentationDesc:"Tạo sơ đồ mô tả logic và kiến trúc trong hệ thống hiện tại.",workflowTechnicalResearch:"Nghiên cứu Kỹ thuật",workflowTechnicalResearchDesc:"Phân tích sâu rộng cho các giải pháp kiến trúc trước khi triển khai.",workflowLlmsTxt:"Tạo cấu trúc llms.txt",workflowLlmsTxtDesc:"Phân tích mã nguồn và sinh tập tin llms.txt tiêu chuẩn.",workflowDevops:"DevOps / Triển khai",workflowDevopsDesc:"Cấu hình Docker, CI/CD và triển khai quy trình nền tảng web.",workflowShip:"Cập bến (Ship Pipeline)",workflowShipDesc:"Hợp nhất, kiểm thử, đánh giá, commit, và tạo Pull Request mới.",workflowDatabaseOps:"Thao tác CSDL",workflowDatabaseOpsDesc:"Tái cấu trúc các pipeline dữ liệu phức tạp tăng cường hiệu năng CSDL.",workflowRemotion:"Remotion Video",workflowRemotionDesc:"Xây dựng chuỗi video code thông qua thư viện Remotion.",workflowShowOff:"Show-Off Demo",workflowShowOffDesc:"Tạo file demo HTML tĩnh và trực quan cho mục đích showcase ứng dụng.",workflowAgentTeams:"Đội ngũ Agents",workflowAgentTeamsDesc:"Sinh các agent song song thực hiện nhiều tác vụ kết nối với nhau.",workflowWorktree:"Worktree Song song",workflowWorktreeDesc:"Cách ly và làm việc đồng thời trên nhiều luồng phát triển bằng worktrees."}},Bp=g.createContext(null),o1="nk-dashboard-lang";function m4(){const t=localStorage.getItem(o1);return t==="en"||t==="vi"?t:navigator.language.startsWith("vi")?"vi":"en"}function g4({children:t}){const[e,n]=g.useState(m4),r=g.useCallback(o=>{localStorage.setItem(o1,o),n(o)},[]),s=g.useCallback(o=>p4[e][o],[e]),i=g.useMemo(()=>({lang:e,setLang:r,t:s}),[e,r,s]);return c.jsx(Bp.Provider,{value:i,children:t})}function te(){const t=g.useContext(Bp);if(!t)throw new Error("useI18n must be used within I18nProvider");return t}class x4 extends g.Component{constructor(){super(...arguments);ug(this,"state",{hasError:!1,error:null})}static getDerivedStateFromError(n){return{hasError:!0,error:n}}componentDidCatch(n,r){console.error("App error:",n,r.componentStack)}render(){if(this.state.hasError){const n=this.state.error?.name==="ServerUnavailableError";return c.jsx(Bp.Consumer,{children:r=>c.jsx("div",{className:"flex h-screen items-center justify-center bg-dash-bg",children:c.jsx("div",{className:"text-center space-y-4 max-w-md px-6",children:n?c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"w-16 h-16 mx-auto rounded-full bg-orange-500/10 border border-orange-500/30 flex items-center justify-center text-3xl",children:"🔌"}),c.jsx("h1",{className:"text-2xl font-bold text-orange-500",children:r?.t("serverNotRunning")??"Server Not Running"}),c.jsx("p",{className:"text-dash-text-secondary",children:r?.t("startServerMessage")??"The Config UI requires the backend server to be running."}),c.jsxs("div",{className:"bg-dash-surface border border-dash-border rounded-lg p-4",children:[c.jsx("p",{className:"text-xs text-dash-text-muted uppercase tracking-widest mb-2 font-bold",children:r?.t("runThisCommand")??"Run this command"}),c.jsx("code",{className:"block text-sm text-dash-accent font-mono bg-dash-bg px-3 py-2 rounded border border-dash-border",children:"nk config"})]}),c.jsx("button",{onClick:()=>window.location.reload(),className:"px-6 py-2 bg-dash-accent text-dash-bg rounded-lg font-bold hover:bg-dash-accent-hover transition-colors",children:r?.t("tryAgain")??"Try Again"})]}):c.jsxs(c.Fragment,{children:[c.jsx("h1",{className:"text-2xl font-bold text-red-500",children:r?.t("somethingWentWrong")??"Something went wrong"}),c.jsx("p",{className:"text-dash-text-muted",children:this.state.error?.message}),c.jsx("button",{onClick:()=>window.location.reload(),className:"px-4 py-2 bg-dash-accent text-white rounded-md hover:opacity-90",children:r?.t("reloadApp")??"Reload App"})]})})})})}return this.props.children}}const Mn=({direction:t="horizontal",isDragging:e=!1,onMouseDown:n})=>{const r=t==="horizontal";return c.jsx("div",{onMouseDown:n,className:`
|
|
21
|
+
Please change the parent <Route path="${b}"> to <Route path="${b==="/"?"*":`${b}/*`}">.`)}let u=gn(),h;h=u;let f=h.pathname||"/",p=f;if(l!=="/"){let b=l.replace(/^\//,"").split("/");p="/"+f.replace(/^\//,"").split("/").slice(b.length).join("/")}let m=n&&n.state.matches.length?n.state.matches.map(b=>Object.assign(b,{route:n.manifest[b.route.id]||b.route})):Nv(t,{pathname:p});return tt(d||m!=null,`No routes matched location "${h.pathname}${h.search}${h.hash}" `),tt(m==null||m[m.length-1].route.element!==void 0||m[m.length-1].route.Component!==void 0||m[m.length-1].route.lazy!==void 0,`Matched leaf route at location "${h.pathname}${h.search}${h.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`),f3(m&&m.map(b=>Object.assign({},b,{params:Object.assign({},o,b.params),pathname:On([l,r.encodeLocation?r.encodeLocation(b.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:b.pathname]),pathnameBase:b.pathnameBase==="/"?l:On([l,r.encodeLocation?r.encodeLocation(b.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:b.pathnameBase])})),s,n)}function c3(){let t=b3(),e=Qo(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),n=t instanceof Error?t.stack:null,r="rgba(200,200,200, 0.5)",s={padding:"0.5rem",backgroundColor:r},i={padding:"2px 4px",backgroundColor:r},o=null;return console.error("Error handled by React Router default ErrorBoundary:",t),o=g.createElement(g.Fragment,null,g.createElement("p",null,"💿 Hey developer 👋"),g.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",g.createElement("code",{style:i},"ErrorBoundary")," or"," ",g.createElement("code",{style:i},"errorElement")," prop on your route.")),g.createElement(g.Fragment,null,g.createElement("h2",null,"Unexpected Application Error!"),g.createElement("h3",{style:{fontStyle:"italic"}},e),n?g.createElement("pre",{style:s},n):null,o)}var d3=g.createElement(c3,null),Zv=class extends g.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,e){return e.location!==t.location||e.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:e.error,location:e.location,revalidation:t.revalidation||e.revalidation}}componentDidCatch(t,e){this.props.onError?this.props.onError(t,e):console.error("React Router caught the following error during render",t)}render(){let t=this.state.error;if(this.context&&typeof t=="object"&&t&&"digest"in t&&typeof t.digest=="string"){const n=r3(t.digest);n&&(t=n)}let e=t!==void 0?g.createElement(Rn.Provider,{value:this.props.routeContext},g.createElement(Mp.Provider,{value:t,children:this.props.component})):this.props.children;return this.context?g.createElement(u3,{error:t},e):e}};Zv.contextType=Uv;var Iu=new WeakMap;function u3({children:t,error:e}){let{basename:n}=g.useContext(mn);if(typeof e=="object"&&e&&"digest"in e&&typeof e.digest=="string"){let r=n3(e.digest);if(r){let s=Iu.get(e);if(s)throw s;let i=Av(r.location,n);if(Mv&&!Iu.get(e))if(i.isExternal||r.reloadDocument)window.location.href=i.absoluteURL||i.to;else{const o=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:r.replace}));throw Iu.set(e,o),o}return g.createElement("meta",{httpEquiv:"refresh",content:`0;url=${i.absoluteURL||i.to}`})}}return t}function h3({routeContext:t,match:e,children:n}){let r=g.useContext(Gs);return r&&r.static&&r.staticContext&&(e.route.errorElement||e.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=e.route.id),g.createElement(Rn.Provider,{value:t},n)}function f3(t,e=[],n){let r=n?.state;if(t==null){if(!r)return null;if(r.errors)t=r.matches;else if(e.length===0&&!r.initialized&&r.matches.length>0)t=r.matches;else return null}let s=t,i=r?.errors;if(i!=null){let u=s.findIndex(h=>h.route.id&&i?.[h.route.id]!==void 0);De(u>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(i).join(",")}`),s=s.slice(0,Math.min(s.length,u+1))}let o=!1,a=-1;if(n&&r){o=r.renderFallback;for(let u=0;u<s.length;u++){let h=s[u];if((h.route.HydrateFallback||h.route.hydrateFallbackElement)&&(a=u),h.route.id){let{loaderData:f,errors:p}=r,m=h.route.loader&&!f.hasOwnProperty(h.route.id)&&(!p||p[h.route.id]===void 0);if(h.route.lazy||m){n.isStatic&&(o=!0),a>=0?s=s.slice(0,a+1):s=[s[0]];break}}}}let l=n?.onError,d=r&&l?(u,h)=>{l(u,{location:r.location,params:r.matches?.[0]?.params??{},pattern:hl(r.matches),errorInfo:h})}:void 0;return s.reduceRight((u,h,f)=>{let p,m=!1,x=null,b=null;r&&(p=i&&h.route.id?i[h.route.id]:void 0,x=h.route.errorElement||d3,o&&(a<0&&f===0?(e1("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),m=!0,b=null):a===f&&(m=!0,b=h.route.hydrateFallbackElement||null)));let y=e.concat(s.slice(0,f+1)),w=()=>{let v;return p?v=x:m?v=b:h.route.Component?v=g.createElement(h.route.Component,null):h.route.element?v=h.route.element:v=u,g.createElement(h3,{match:h,routeContext:{outlet:u,matches:y,isDataRoute:r!=null},children:v})};return r&&(h.route.ErrorBoundary||h.route.errorElement||f===0)?g.createElement(Zv,{location:r.location,revalidation:r.revalidation,component:x,error:p,children:w(),routeContext:{outlet:null,matches:y,isDataRoute:!0},onError:d}):w()},null)}function Ap(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function p3(t){let e=g.useContext(Gs);return De(e,Ap(t)),e}function m3(t){let e=g.useContext(fl);return De(e,Ap(t)),e}function g3(t){let e=g.useContext(Rn);return De(e,Ap(t)),e}function Tp(t){let e=g3(t),n=e.matches[e.matches.length-1];return De(n.route.id,`${t} can only be used on routes that contain a unique "id"`),n.route.id}function x3(){return Tp("useRouteId")}function b3(){let t=g.useContext(Mp),e=m3("useRouteError"),n=Tp("useRouteError");return t!==void 0?t:e.errors?.[n]}function y3(){let{router:t}=p3("useNavigate"),e=Tp("useNavigate"),n=g.useRef(!1);return Qv(()=>{n.current=!0}),g.useCallback(async(s,i={})=>{tt(n.current,Xv),n.current&&(typeof s=="number"?await t.navigate(s):await t.navigate(s,{fromRouteId:e,...i}))},[t,e])}var $g={};function e1(t,e,n){!e&&!$g[t]&&($g[t]=!0,tt(!1,n))}var Bg={};function _g(t,e){!t&&!Bg[e]&&(Bg[e]=!0,console.warn(e))}var v3="useOptimistic",Fg=Lj[v3],w3=()=>{};function k3(t){return Fg?Fg(t):[t,w3]}function S3(t){let e={hasErrorBoundary:t.hasErrorBoundary||t.ErrorBoundary!=null||t.errorElement!=null};return t.Component&&(t.element&&tt(!1,"You should not include both `Component` and `element` on your route - `Component` will be used."),Object.assign(e,{element:g.createElement(t.Component),Component:void 0})),t.HydrateFallback&&(t.hydrateFallbackElement&&tt(!1,"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used."),Object.assign(e,{hydrateFallbackElement:g.createElement(t.HydrateFallback),HydrateFallback:void 0})),t.ErrorBoundary&&(t.errorElement&&tt(!1,"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used."),Object.assign(e,{errorElement:g.createElement(t.ErrorBoundary),ErrorBoundary:void 0})),e}var C3=["HydrateFallback","hydrateFallbackElement"],j3=class{constructor(){this.status="pending",this.promise=new Promise((t,e)=>{this.resolve=n=>{this.status==="pending"&&(this.status="resolved",t(n))},this.reject=n=>{this.status==="pending"&&(this.status="rejected",e(n))}})}};function N3({router:t,flushSync:e,onError:n,useTransitions:r}){r=Gv()||r;let[i,o]=g.useState(t.state),[a,l]=k3(i),[d,u]=g.useState(),[h,f]=g.useState({isTransitioning:!1}),[p,m]=g.useState(),[x,b]=g.useState(),[y,w]=g.useState(),v=g.useRef(new Map),k=g.useCallback((S,{deletedFetchers:E,newErrors:O,flushSync:P,viewTransitionOpts:A})=>{O&&n&&Object.values(O).forEach(j=>n(j,{location:S.location,params:S.matches[0]?.params??{},pattern:hl(S.matches)})),S.fetchers.forEach((j,M)=>{j.data!==void 0&&v.current.set(M,j.data)}),E.forEach(j=>v.current.delete(j)),_g(P===!1||e!=null,'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from "react-router/dom"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.');let I=t.window!=null&&t.window.document!=null&&typeof t.window.document.startViewTransition=="function";if(_g(A==null||I,"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available."),!A||!I){e&&P?e(()=>o(S)):r===!1?o(S):g.startTransition(()=>{r===!0&&l(j=>zg(j,S)),o(S)});return}if(e&&P){e(()=>{x&&(p?.resolve(),x.skipTransition()),f({isTransitioning:!0,flushSync:!0,currentLocation:A.currentLocation,nextLocation:A.nextLocation})});let j=t.window.document.startViewTransition(()=>{e(()=>o(S))});j.finished.finally(()=>{e(()=>{m(void 0),b(void 0),u(void 0),f({isTransitioning:!1})})}),e(()=>b(j));return}x?(p?.resolve(),x.skipTransition(),w({state:S,currentLocation:A.currentLocation,nextLocation:A.nextLocation})):(u(S),f({isTransitioning:!0,flushSync:!1,currentLocation:A.currentLocation,nextLocation:A.nextLocation}))},[t.window,e,x,p,r,l,n]);g.useLayoutEffect(()=>t.subscribe(k),[t,k]),g.useEffect(()=>{h.isTransitioning&&!h.flushSync&&m(new j3)},[h]),g.useEffect(()=>{if(p&&d&&t.window){let S=d,E=p.promise,O=t.window.document.startViewTransition(async()=>{r===!1?o(S):g.startTransition(()=>{r===!0&&l(P=>zg(P,S)),o(S)}),await E});O.finished.finally(()=>{m(void 0),b(void 0),u(void 0),f({isTransitioning:!1})}),b(O)}},[d,p,t.window,r,l]),g.useEffect(()=>{p&&d&&a.location.key===d.location.key&&p.resolve()},[p,x,a.location,d]),g.useEffect(()=>{!h.isTransitioning&&y&&(u(y.state),f({isTransitioning:!0,flushSync:!1,currentLocation:y.currentLocation,nextLocation:y.nextLocation}),w(void 0))},[h.isTransitioning,y]);let C=g.useMemo(()=>({createHref:t.createHref,encodeLocation:t.encodeLocation,go:S=>t.navigate(S),push:(S,E,O)=>t.navigate(S,{state:E,preventScrollReset:O?.preventScrollReset}),replace:(S,E,O)=>t.navigate(S,{replace:!0,state:E,preventScrollReset:O?.preventScrollReset})}),[t]),N=t.basename||"/",D=g.useMemo(()=>({router:t,navigator:C,static:!1,basename:N,onError:n}),[t,C,N,n]);return g.createElement(g.Fragment,null,g.createElement(Gs.Provider,{value:D},g.createElement(fl.Provider,{value:a},g.createElement(qv.Provider,{value:v.current},g.createElement(Op.Provider,{value:h},g.createElement(O3,{basename:N,location:a.location,navigationType:a.historyAction,navigator:C,useTransitions:r},g.createElement(P3,{routes:t.routes,manifest:t.manifest,future:t.future,state:a,isStatic:!1,onError:n})))))),null)}function zg(t,e){return{...t,navigation:e.navigation.state!=="idle"?e.navigation:t.navigation,revalidation:e.revalidation!=="idle"?e.revalidation:t.revalidation,actionData:e.navigation.state!=="submitting"?e.actionData:t.actionData,fetchers:e.fetchers}}var P3=g.memo(D3);function D3({routes:t,manifest:e,future:n,state:r,isStatic:s,onError:i}){return l3(t,void 0,{manifest:e,state:r,isStatic:s,onError:i})}function t1({to:t,replace:e,state:n,relative:r}){De(Yi(),"<Navigate> may be used only in the context of a <Router> component.");let{static:s}=g.useContext(mn);tt(!s,"<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.");let{matches:i}=g.useContext(Rn),{pathname:o}=gn(),a=Lt(),l=dl(t,Ud(i),o,r==="path"),d=JSON.stringify(l);return g.useEffect(()=>{a(JSON.parse(d),{replace:e,state:n,relative:r})},[a,d,r,e,n]),null}function E3(t){return a3(t.context)}function O3({basename:t="/",children:e=null,location:n,navigationType:r="POP",navigator:s,static:i=!1,useTransitions:o}){De(!Yi(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let a=t.replace(/^\/*/,"/"),l=g.useMemo(()=>({basename:a,navigator:s,static:i,useTransitions:o,future:{}}),[a,s,i,o]);typeof n=="string"&&(n=wr(n));let{pathname:d="/",search:u="",hash:h="",state:f=null,key:p="default",mask:m}=n,x=g.useMemo(()=>{let b=Tn(d,a);return b==null?null:{location:{pathname:b,search:u,hash:h,state:f,key:p,mask:m},navigationType:r}},[a,d,u,h,f,p,r,m]);return tt(x!=null,`<Router basename="${a}"> is not able to match the URL "${d}${u}${h}" because it does not start with the basename, so the <Router> won't render anything.`),x==null?null:g.createElement(mn.Provider,{value:l},g.createElement(Gd.Provider,{children:e,value:x}))}var Mc="get",Ac="application/x-www-form-urlencoded";function qd(t){return typeof HTMLElement<"u"&&t instanceof HTMLElement}function M3(t){return qd(t)&&t.tagName.toLowerCase()==="button"}function A3(t){return qd(t)&&t.tagName.toLowerCase()==="form"}function T3(t){return qd(t)&&t.tagName.toLowerCase()==="input"}function R3(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function L3(t,e){return t.button===0&&(!e||e==="_self")&&!R3(t)}function af(t=""){return new URLSearchParams(typeof t=="string"||Array.isArray(t)||t instanceof URLSearchParams?t:Object.keys(t).reduce((e,n)=>{let r=t[n];return e.concat(Array.isArray(r)?r.map(s=>[n,s]):[[n,r]])},[]))}function I3(t,e){let n=af(t);return e&&e.forEach((r,s)=>{n.has(s)||e.getAll(s).forEach(i=>{n.append(s,i)})}),n}var Vl=null;function $3(){if(Vl===null)try{new FormData(document.createElement("form"),0),Vl=!1}catch{Vl=!0}return Vl}var B3=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function $u(t){return t!=null&&!B3.has(t)?(tt(!1,`"${t}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${Ac}"`),null):t}function _3(t,e){let n,r,s,i,o;if(A3(t)){let a=t.getAttribute("action");r=a?Tn(a,e):null,n=t.getAttribute("method")||Mc,s=$u(t.getAttribute("enctype"))||Ac,i=new FormData(t)}else if(M3(t)||T3(t)&&(t.type==="submit"||t.type==="image")){let a=t.form;if(a==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let l=t.getAttribute("formaction")||a.getAttribute("action");if(r=l?Tn(l,e):null,n=t.getAttribute("formmethod")||a.getAttribute("method")||Mc,s=$u(t.getAttribute("formenctype"))||$u(a.getAttribute("enctype"))||Ac,i=new FormData(a,t),!$3()){let{name:d,type:u,value:h}=t;if(u==="image"){let f=d?`${d}.`:"";i.append(`${f}x`,"0"),i.append(`${f}y`,"0")}else d&&i.append(d,h)}}else{if(qd(t))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');n=Mc,r=null,s=Ac,o=t}return i&&s==="text/plain"&&(o=i,i=void 0),{action:r,method:n.toLowerCase(),encType:s,formData:i,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function Rp(t,e){if(t===!1||t===null||typeof t>"u")throw new Error(e)}function n1(t,e,n,r){let s=typeof t=="string"?new URL(t,typeof window>"u"?"server://singlefetch/":window.location.origin):t;return n?s.pathname.endsWith("/")?s.pathname=`${s.pathname}_.${r}`:s.pathname=`${s.pathname}.${r}`:s.pathname==="/"?s.pathname=`_root.${r}`:e&&Tn(s.pathname,e)==="/"?s.pathname=`${Xc(e)}/_root.${r}`:s.pathname=`${Xc(s.pathname)}.${r}`,s}async function F3(t,e){if(t.id in e)return e[t.id];try{let n=await import(t.module);return e[t.id]=n,n}catch(n){return console.error(`Error loading route module \`${t.module}\`, reloading page...`),console.error(n),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function z3(t){return t==null?!1:t.href==null?t.rel==="preload"&&typeof t.imageSrcSet=="string"&&typeof t.imageSizes=="string":typeof t.rel=="string"&&typeof t.href=="string"}async function H3(t,e,n){let r=await Promise.all(t.map(async s=>{let i=e.routes[s.route.id];if(i){let o=await F3(i,n);return o.links?o.links():[]}return[]}));return U3(r.flat(1).filter(z3).filter(s=>s.rel==="stylesheet"||s.rel==="preload").map(s=>s.rel==="stylesheet"?{...s,rel:"prefetch",as:"style"}:{...s,rel:"prefetch"}))}function Hg(t,e,n,r,s,i){let o=(l,d)=>n[d]?l.route.id!==n[d].route.id:!0,a=(l,d)=>n[d].pathname!==l.pathname||n[d].route.path?.endsWith("*")&&n[d].params["*"]!==l.params["*"];return i==="assets"?e.filter((l,d)=>o(l,d)||a(l,d)):i==="data"?e.filter((l,d)=>{let u=r.routes[l.route.id];if(!u||!u.hasLoader)return!1;if(o(l,d)||a(l,d))return!0;if(l.route.shouldRevalidate){let h=l.route.shouldRevalidate({currentUrl:new URL(s.pathname+s.search+s.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(t,window.origin),nextParams:l.params,defaultShouldRevalidate:!0});if(typeof h=="boolean")return h}return!0}):[]}function V3(t,e,{includeHydrateFallback:n}={}){return W3(t.map(r=>{let s=e.routes[r.route.id];if(!s)return[];let i=[s.module];return s.clientActionModule&&(i=i.concat(s.clientActionModule)),s.clientLoaderModule&&(i=i.concat(s.clientLoaderModule)),n&&s.hydrateFallbackModule&&(i=i.concat(s.hydrateFallbackModule)),s.imports&&(i=i.concat(s.imports)),i}).flat(1))}function W3(t){return[...new Set(t)]}function K3(t){let e={},n=Object.keys(t).sort();for(let r of n)e[r]=t[r];return e}function U3(t,e){let n=new Set;return new Set(e),t.reduce((r,s)=>{let i=JSON.stringify(K3(s));return n.has(i)||(n.add(i),r.push({key:i,link:s})),r},[])}function Lp(){let t=g.useContext(Gs);return Rp(t,"You must render this element inside a <DataRouterContext.Provider> element"),t}function G3(){let t=g.useContext(fl);return Rp(t,"You must render this element inside a <DataRouterStateContext.Provider> element"),t}var Ip=g.createContext(void 0);Ip.displayName="FrameworkContext";function $p(){let t=g.useContext(Ip);return Rp(t,"You must render this element inside a <HydratedRouter> element"),t}function q3(t,e){let n=g.useContext(Ip),[r,s]=g.useState(!1),[i,o]=g.useState(!1),{onFocus:a,onBlur:l,onMouseEnter:d,onMouseLeave:u,onTouchStart:h}=e,f=g.useRef(null);g.useEffect(()=>{if(t==="render"&&o(!0),t==="viewport"){let x=y=>{y.forEach(w=>{o(w.isIntersecting)})},b=new IntersectionObserver(x,{threshold:.5});return f.current&&b.observe(f.current),()=>{b.disconnect()}}},[t]),g.useEffect(()=>{if(r){let x=setTimeout(()=>{o(!0)},100);return()=>{clearTimeout(x)}}},[r]);let p=()=>{s(!0)},m=()=>{s(!1),o(!1)};return n?t!=="intent"?[i,f,{}]:[i,f,{onFocus:go(a,p),onBlur:go(l,m),onMouseEnter:go(d,p),onMouseLeave:go(u,m),onTouchStart:go(h,p)}]:[!1,f,{}]}function go(t,e){return n=>{t&&t(n),n.defaultPrevented||e(n)}}function Y3({page:t,...e}){let n=Gv(),{router:r}=Lp(),s=g.useMemo(()=>Nv(r.routes,t,r.basename),[r.routes,t,r.basename]);return s?n?g.createElement(Q3,{page:t,matches:s,...e}):g.createElement(J3,{page:t,matches:s,...e}):null}function X3(t){let{manifest:e,routeModules:n}=$p(),[r,s]=g.useState([]);return g.useEffect(()=>{let i=!1;return H3(t,e,n).then(o=>{i||s(o)}),()=>{i=!0}},[t,e,n]),r}function Q3({page:t,matches:e,...n}){let r=gn(),{future:s}=$p(),{basename:i}=Lp(),o=g.useMemo(()=>{if(t===r.pathname+r.search+r.hash)return[];let a=n1(t,i,s.v8_trailingSlashAwareDataRequests,"rsc"),l=!1,d=[];for(let u of e)typeof u.route.shouldRevalidate=="function"?l=!0:d.push(u.route.id);return l&&d.length>0&&a.searchParams.set("_routes",d.join(",")),[a.pathname+a.search]},[i,s.v8_trailingSlashAwareDataRequests,t,r,e]);return g.createElement(g.Fragment,null,o.map(a=>g.createElement("link",{key:a,rel:"prefetch",as:"fetch",href:a,...n})))}function J3({page:t,matches:e,...n}){let r=gn(),{future:s,manifest:i,routeModules:o}=$p(),{basename:a}=Lp(),{loaderData:l,matches:d}=G3(),u=g.useMemo(()=>Hg(t,e,d,i,r,"data"),[t,e,d,i,r]),h=g.useMemo(()=>Hg(t,e,d,i,r,"assets"),[t,e,d,i,r]),f=g.useMemo(()=>{if(t===r.pathname+r.search+r.hash)return[];let x=new Set,b=!1;if(e.forEach(w=>{let v=i.routes[w.route.id];!v||!v.hasLoader||(!u.some(k=>k.route.id===w.route.id)&&w.route.id in l&&o[w.route.id]?.shouldRevalidate||v.hasClientLoader?b=!0:x.add(w.route.id))}),x.size===0)return[];let y=n1(t,a,s.v8_trailingSlashAwareDataRequests,"data");return b&&x.size>0&&y.searchParams.set("_routes",e.filter(w=>x.has(w.route.id)).map(w=>w.route.id).join(",")),[y.pathname+y.search]},[a,s.v8_trailingSlashAwareDataRequests,l,r,i,u,e,t,o]),p=g.useMemo(()=>V3(h,i),[h,i]),m=X3(h);return g.createElement(g.Fragment,null,f.map(x=>g.createElement("link",{key:x,rel:"prefetch",as:"fetch",href:x,...n})),p.map(x=>g.createElement("link",{key:x,rel:"modulepreload",href:x,...n})),m.map(({key:x,link:b})=>g.createElement("link",{key:x,nonce:n.nonce,...b,crossOrigin:b.crossOrigin??n.crossOrigin})))}function Z3(...t){return e=>{t.forEach(n=>{typeof n=="function"?n(e):n!=null&&(n.current=e)})}}var e4=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{e4&&(window.__reactRouterVersion="7.17.0")}catch{}function t4(t,e){return D5({basename:e?.basename,getContext:e?.getContext,future:e?.future,history:Vj({window:e?.window}),hydrationData:n4(),routes:t,mapRouteProperties:S3,hydrationRouteProperties:C3,dataStrategy:e?.dataStrategy,patchRoutesOnNavigation:e?.patchRoutesOnNavigation,window:e?.window,instrumentations:e?.instrumentations}).initialize()}function n4(){let t=window?.__staticRouterHydrationData;return t&&t.errors&&(t={...t,errors:r4(t.errors)}),t}function r4(t){if(!t)return null;let e=Object.entries(t),n={};for(let[r,s]of e)if(s&&s.__type==="RouteErrorResponse")n[r]=new ul(s.status,s.statusText,s.data,s.internal===!0);else if(s&&s.__type==="Error"){if(s.__subType){let i=window[s.__subType];if(typeof i=="function")try{let o=new i(s.message);o.stack="",n[r]=o}catch{}}if(n[r]==null){let i=new Error(s.message);i.stack="",n[r]=i}}else n[r]=s;return n}var r1=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,s1=g.forwardRef(function({onClick:e,discover:n="render",prefetch:r="none",relative:s,reloadDocument:i,replace:o,mask:a,state:l,target:d,to:u,preventScrollReset:h,viewTransition:f,defaultShouldRevalidate:p,...m},x){let{basename:b,navigator:y,useTransitions:w}=g.useContext(mn),v=typeof u=="string"&&r1.test(u),k=Av(u,b);u=k.to;let C=s3(u,{relative:s}),N=gn(),D=null;if(a){let M=dl(a,[],N.mask?N.mask.pathname:"/",!0);b!=="/"&&(M.pathname=M.pathname==="/"?b:On([b,M.pathname])),D=y.createHref(M)}let[S,E,O]=q3(r,m),P=a4(u,{replace:o,mask:a,state:l,target:d,preventScrollReset:h,relative:s,viewTransition:f,defaultShouldRevalidate:p,useTransitions:w});function A(M){e&&e(M),M.defaultPrevented||P(M)}let I=!(k.isExternal||i),j=g.createElement("a",{...m,...O,href:(I?D:void 0)||k.absoluteURL||C,onClick:I?A:e,ref:Z3(x,E),target:d,"data-discover":!v&&n==="render"?"true":void 0});return S&&!v?g.createElement(g.Fragment,null,j,g.createElement(Y3,{page:C})):j});s1.displayName="Link";var s4=g.forwardRef(function({"aria-current":e="page",caseSensitive:n=!1,className:r="",end:s=!1,style:i,to:o,viewTransition:a,children:l,...d},u){let h=ml(o,{relative:d.relative}),f=gn(),p=g.useContext(fl),{navigator:m,basename:x}=g.useContext(mn),b=p!=null&&h4(h)&&a===!0,y=m.encodeLocation?m.encodeLocation(h).pathname:h.pathname,w=f.pathname,v=p&&p.navigation&&p.navigation.location?p.navigation.location.pathname:null;n||(w=w.toLowerCase(),v=v?v.toLowerCase():null,y=y.toLowerCase()),v&&x&&(v=Tn(v,x)||v);const k=y!=="/"&&y.endsWith("/")?y.length-1:y.length;let C=w===y||!s&&w.startsWith(y)&&w.charAt(k)==="/",N=v!=null&&(v===y||!s&&v.startsWith(y)&&v.charAt(y.length)==="/"),D={isActive:C,isPending:N,isTransitioning:b},S=C?e:void 0,E;typeof r=="function"?E=r(D):E=[r,C?"active":null,N?"pending":null,b?"transitioning":null].filter(Boolean).join(" ");let O=typeof i=="function"?i(D):i;return g.createElement(s1,{...d,"aria-current":S,className:E,ref:u,style:O,to:o,viewTransition:a},typeof l=="function"?l(D):l)});s4.displayName="NavLink";var i4=g.forwardRef(({discover:t="render",fetcherKey:e,navigate:n,reloadDocument:r,replace:s,state:i,method:o=Mc,action:a,onSubmit:l,relative:d,preventScrollReset:u,viewTransition:h,defaultShouldRevalidate:f,...p},m)=>{let{useTransitions:x}=g.useContext(mn),b=d4(),y=u4(a,{relative:d}),w=o.toLowerCase()==="get"?"get":"post",v=typeof a=="string"&&r1.test(a),k=C=>{if(l&&l(C),C.defaultPrevented)return;C.preventDefault();let N=C.nativeEvent.submitter,D=N?.getAttribute("formmethod")||o,S=()=>b(N||C.currentTarget,{fetcherKey:e,method:D,navigate:n,replace:s,state:i,relative:d,preventScrollReset:u,viewTransition:h,defaultShouldRevalidate:f});x&&n!==!1?g.startTransition(()=>S()):S()};return g.createElement("form",{ref:m,method:w,action:y,onSubmit:r?l:k,...p,"data-discover":!v&&t==="render"?"true":void 0})});i4.displayName="Form";function o4(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function i1(t){let e=g.useContext(Gs);return De(e,o4(t)),e}function a4(t,{target:e,replace:n,mask:r,state:s,preventScrollReset:i,relative:o,viewTransition:a,defaultShouldRevalidate:l,useTransitions:d}={}){let u=Lt(),h=gn(),f=ml(t,{relative:o});return g.useCallback(p=>{if(L3(p,e)){p.preventDefault();let m=n!==void 0?n:vr(h)===vr(f),x=()=>u(t,{replace:m,mask:r,state:s,preventScrollReset:i,relative:o,viewTransition:a,defaultShouldRevalidate:l});d?g.startTransition(()=>x()):x()}},[h,u,f,n,r,s,e,t,i,o,a,l,d])}function gl(t){tt(typeof URLSearchParams<"u","You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let e=g.useRef(af(t)),n=g.useRef(!1),r=gn(),s=g.useMemo(()=>I3(r.search,n.current?null:e.current),[r.search]),i=Lt(),o=g.useCallback((a,l)=>{const d=af(typeof a=="function"?a(new URLSearchParams(s)):a);n.current=!0,i("?"+d,l)},[i,s]);return[s,o]}var l4=0,c4=()=>`__${String(++l4)}__`;function d4(){let{router:t}=i1("useSubmit"),{basename:e}=g.useContext(mn),n=x3(),r=t.fetch,s=t.navigate;return g.useCallback(async(i,o={})=>{let{action:a,method:l,encType:d,formData:u,body:h}=_3(i,e);if(o.navigate===!1){let f=o.fetcherKey||c4();await r(f,n,o.action||a,{defaultShouldRevalidate:o.defaultShouldRevalidate,preventScrollReset:o.preventScrollReset,formData:u,body:h,formMethod:o.method||l,formEncType:o.encType||d,flushSync:o.flushSync})}else await s(o.action||a,{defaultShouldRevalidate:o.defaultShouldRevalidate,preventScrollReset:o.preventScrollReset,formData:u,body:h,formMethod:o.method||l,formEncType:o.encType||d,replace:o.replace,state:o.state,fromRouteId:n,flushSync:o.flushSync,viewTransition:o.viewTransition})},[r,s,e,n])}function u4(t,{relative:e}={}){let{basename:n}=g.useContext(mn),r=g.useContext(Rn);De(r,"useFormAction must be used inside a RouteContext");let[s]=r.matches.slice(-1),i={...ml(t||".",{relative:e})},o=gn();if(t==null){i.search=o.search;let a=new URLSearchParams(i.search),l=a.getAll("index");if(l.some(u=>u==="")){a.delete("index"),l.filter(h=>h).forEach(h=>a.append("index",h));let u=a.toString();i.search=u?`?${u}`:""}}return(!t||t===".")&&s.route.index&&(i.search=i.search?i.search.replace(/^\?/,"?index&"):"?index"),n!=="/"&&(i.pathname=i.pathname==="/"?n:On([n,i.pathname])),vr(i)}function h4(t,{relative:e}={}){let n=g.useContext(Op);De(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=i1("useViewTransitionState"),s=ml(t,{relative:e});if(!n.isTransitioning)return!1;let i=Tn(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=Tn(n.nextLocation.pathname,r)||n.nextLocation.pathname;return Yc(s.pathname,o)!=null||Yc(s.pathname,i)!=null}function f4(t){return g.createElement(N3,{flushSync:Ns.flushSync,...t})}const p4={en:{loading:"Loading...",error:"Error",selectProject:"Select a project to view dashboard",controlCenter:"Control Center",settings:"Settings",sync:"Sync",offline:"Offline",switchToLight:"Switch to light mode",switchToDark:"Switch to dark mode",settingsSection:"Settings",overviewSection:"Overview",entitiesSection:"Entities",toolsSection:"Tools",configEditor:"Config Editor",projects:"Projects",addProject:"Add Project",global:"Global",skills:"Skills",skillsNav:"Skills",health:"Health",collapse:"Collapse",expand:"Expand",installing:"Installing...",manage:"Manage",uninstall:"Uninstall",installGlobally:"Install Globally",installGloballyDesc:"Available to all projects instead of current project only",selectAtLeastOneAgent:"Please select at least one agent",installationFailed:"Installation failed",allSkills:"All Skills",refresh:"Refresh",browseAndManageSkills:"Browse and manage skills for your agents",detected:"Detected",notDetected:"Not detected",sessions:"sessions",noSessions:"No sessions",terminal:"Terminal",terminalSub:"Open bash at path",editor:"Editor",editorSub:"Open in VS Code",useGlobalFallback:"Use global fallback",openAtPath:"Open at project path",openAppOnly:"Open app only",actionOptionsLoadFailed:"Could not load editor/terminal options",launch:"Launch",launchSub:"Start Claude Code",config:"Config",configSub:"Manage project settings",recentSessions:"Recent Sessions",viewAllHistory:"View All History",showLess:"Show Less",actionFailed:"Action failed",loadingSessions:"Loading sessions...",noSessionsFound:"No sessions found",configuration:"Claude Settings",planSettingsTitle:"Plan Settings",activeKit:"Active Kit",aiModel:"Model",hooks:"Hooks",active:"active",mcpServers:"MCP Servers",connected:"connected",plansDirectory:"Plans Directory",validationMode:"Validation Mode",planScopeLabel:"Scope",planScopeProject:"project",planScopeGlobal:"global",activePlansLabel:"Active Plans",activePlansTitle:"Active Plans",noActivePlansFound:"No active plans found",openPlan:"Open Plan",openKanban:"Open Kanban",blockedByLabel:"Blocked by",progressLabel:"Progress",editProjectConfig:"Edit Project Config",projectPreferenceSaveFailed:"Failed to save preference",globalSettings:"(Global)",globalSkills:"Global Skills",loadingSkills:"Loading skills...",noDescription:"No description",browseSkillsMarketplace:"Browse Skills Marketplace",backToDashboard:"Back to Dashboard",educationalConfigEditor:"Educational Config Editor",discard:"Discard",saveChanges:"Save Changes",mergedView:"Merged View",localConfig:"Local (.nk.json)",globalConfig:"Global",syntaxValid:"Syntax Valid",configurationHelp:"Configuration Help",field:"Field",type:"Type",default:"Default",description:"Description",validValues:"Valid Values",systemEffect:"System Effect",exampleUsage:"Example Usage",knowledgeBase:"Knowledge Base",clickToSeeHelp:"Click on any configuration field to see detailed documentation and usage examples.",extractedFrom:"Extracted from NineKit v2.x Specification",resetToDefault:"Reset",saving:"Saving...",saved:"Saved",confirmReset:"Reset to Default?",confirmResetMessage:"All changes will be lost and replaced with default values.",confirm:"Confirm",saveFailed:"Save failed",configTab:"Config",systemTab:"System",formTab:"Form",jsonTab:"JSON",readOnly:"Read-only",installedKit:"Installed Kit",kitVersion:"Kit Version",installedOn:"Installed On",noKitInstalled:"No kit installed",components:"Components",agents:"Agents",commands:"Commands",workflows:"Workflows",kitSkills:"Skills",fileOwnership:"File Ownership",ownershipCk:"kit-managed",ownershipUser:"user-owned",ownershipModified:"modified",componentInventory:"Component Inventory",installedHooks:"Installed Hooks",installedMcpServers:"MCP Servers",lastChecked:"Last update check",staleIndicator:"Stale",skippedVersion:"Skipped",filesModifiedFromDefaults:"files modified from kit defaults",cliCard:"NineKit CLI",checkForUpdates:"Check for Updates",checking:"Checking...",upToDate:"Up to date",updateAvailable:"Update available",updateNow:"Update Now",updating:"Updating...",updateSuccess:"Update Complete!",updateFailed:"Update Failed",closeModal:"Close",showDetails:"Show Details",hideDetails:"Hide Details",environment:"Environment",claudeConfigPath:"Claude config",nodeVersion:"Node",bunVersion:"Bun",osVersion:"OS",envShell:"Shell",envHomeDir:"Home",envCpuCores:"CPU Cores",envTotalMemory:"Memory",cliPackageManager:"Package Manager",cliInstallLocation:"Install Location",cliGitVersion:"Git",cliGhVersion:"GitHub CLI",channelStable:"Stable",channelBeta:"Beta",betaBadge:"Beta",latestVersion:"Latest",selectVersion:"Select version",loadingVersions:"Loading versions...",prereleaseLabel:"Pre",currentVersionLabel:"Current",checkAll:"Check All",checkingAll:"Checking...",updateAll:"Update All",updatesAvailable:"{count} updates available",allUpToDate:"All up to date",systemControlTower:"System Control Tower",systemOverviewTitle:"Update & Runtime Overview",systemOverviewDesc:"Track CLI and kit health, then run upgrades from one place.",installedComponentsHeading:"Installed Components",updateReadiness:"Update Readiness",checkedComponents:"Checked",activeChannel:"Channel",readyToScan:"Ready to scan",noTrackedFiles:"No tracked files detected",kitsLabel:"Kits",componentFilterAll:"All",componentFilterUpdates:"Updates",componentFilterUpdatesCount:"Updates ({count})",componentFilterUpToDate:"Up to date",componentFilterUpToDateCount:"Up to date ({count})",componentFilterCli:"CLI",componentFilterKits:"Kits",noComponentsMatchFilter:"No components match the current filter.",runCheckAllForFilter:"Run Check All to populate this filter.",noUpdatesFound:"No updates found. Checked components are up to date.",noUpToDateYet:"No components are up to date yet.",configWorkspaceHint:"Edit configuration or manage system updates from one workspace.",settingsJsonHeading:"Claude Settings JSON",settingsJsonMissing:"No settings file found at ~/.claude/settings.json.",settingsJsonLoadFailed:"Failed to load ~/.claude/settings.json.",settingsLoadFailedDetail:"Error detail:",configLoadFailed:"Failed to load configuration.",configLoadFailedDetail:"Error detail:",settingsBackupSaved:"Backup saved",hookDiagnosticsTitle:"Hook Diagnostics",hookDiagnosticsDesc:"Inspect recent hook activity and failures without opening JSONL files manually.",hookDiagnosticsPathPending:"Resolving log path...",hookDiagnosticsScopeGlobal:"Global hooks",hookDiagnosticsEntries:"Entries",hookDiagnosticsCrashes:"Crashes",hookDiagnosticsWarnings:"Warnings",hookDiagnosticsBlocks:"Blocks",hookDiagnosticsLastEvent:"Last event",hookDiagnosticsLoading:"Loading hook diagnostics...",hookDiagnosticsLoadFailed:"Failed to load hook diagnostics",hookDiagnosticsMissing:"No hook log file found for this scope yet.",hookDiagnosticsEmpty:"Hook log is present but contains no readable entries.",hookDiagnosticsParseErrorsNotice:"Skipped {count} malformed log line(s) while loading diagnostics.",hookDiagnosticsTruncatedNotice:"Showing a bounded recent window to keep diagnostics responsive on large logs.",hookDiagnosticsToolLabel:"tool",hookDiagnosticsTargetLabel:"target",hookDiagnosticsUnknown:"Unknown",hookDiagnostics:"Hook Diagnostics",hookEvent:"Event",hookExecutions:"Executions",hookAvgLatency:"Avg Latency",hookFailureRate:"Failure Rate",hookLastRun:"Last Run",hookLatencyWarning:"Latency > 500ms",activityMetrics:"Activity",activityTotalSessions:"Total Sessions",activityMostActive:"Most Active Projects",activityPeriod24h:"24h",activityPeriod7d:"7d",activityPeriod30d:"30d",activityNoData:"No activity data",addProjectTitle:"Add Project",addProjectDescription:"Add a new NineKit project to the control center",projectPath:"Project Path",pathPlaceholder:"/path/to/project",alias:"Alias",aliasOptional:"(optional)",aliasPlaceholder:"my-project",aliasDescription:"Custom display name for the project",pathRequired:"Path is required",failedToAdd:"Failed to add project",cancel:"Cancel",adding:"Adding...",somethingWentWrong:"Something went wrong",reloadApp:"Reload App",serverNotRunning:"Server Not Running",startServerMessage:"The Config UI requires the backend server to be running.",runThisCommand:"Run this command",tryAgain:"Try Again",projectConfig:"Project Config",inheritedFromGlobal:"Inherited from Global",localOverride:"Local Override",viewGlobalConfig:"This field inherits from global config. View",onboardingTitle:"Welcome to NineKit",onboardingSubtitle:"Choose your kit and get started in minutes",kitEngineerName:"NineKit Engineer",kitEngineerTagline:"AI-powered coding with skills, hooks, and multi-agent workflows",kitMarketingName:"NineKit Marketing",kitMarketingTagline:"Content automation: campaigns, social media, analytics",kitPmName:"NineKit PM",kitPmTagline:"Project & delivery management workflows for Claude",kitBaName:"NineKit BA",kitBaTagline:"Business analysis & requirements workflows for Claude",kitTestName:"NineKit Test",kitTestTagline:"QA & test engineering workflows for Claude",featureAgents:"AI Agents",featureAgentsDesc:"Specialized agents for different tasks",featureHooks:"Lifecycle Hooks",featureHooksDesc:"Customize Claude's behavior at key moments",featureSkills:"Skills Library",featureSkillsDesc:"Pre-built capabilities you can activate",featureMultiAgent:"Multi-Agent Workflows",featureMultiAgentDesc:"Coordinate multiple agents for complex tasks",featureContent:"Content Generation",featureContentDesc:"Automated content creation and optimization",featureSocial:"Social Media Tools",featureSocialDesc:"Scheduling, analytics, and engagement automation",stepChooseKit:"Choose Kit",stepConfigure:"Configure",stepInstall:"Install",back:"Back",next:"Next",install:"Install",installSuccess:"Installation Complete!",installSuccessDesc:"{kit} is ready to use",getStarted:"Get Started",goToDashboard:"Go to Dashboard",kitConfig:"Kit Config",kitConfigSubtitle:"Configure NineKit Engineer settings",scopeGlobal:"Global",scopeProject:"Project",sectionGeneral:"General",sectionPaths:"Paths",sectionPrivacy:"Privacy & Trust",sectionProject:"Project Detection",sectionIntegrations:"Integrations",sectionHooks:"Hooks",sectionAdvanced:"Advanced",fieldCodingLevel:"Coding Level",fieldCodingLevelDesc:"Your coding experience level (-1=auto, 0=beginner, 1=intermediate, 2=advanced, 3=expert, 4=tech-lead, 5=god-mode)",fieldStatusline:"Statusline Mode",fieldStatuslineDesc:"How much info to show in the status line",fieldStatuslineColors:"Statusline Colors",fieldStatuslineColorsDesc:"Enable ANSI color output in the statusline",fieldStatuslineQuota:"Statusline Quota Display",fieldStatuslineQuotaDesc:"Show the 5h / wk quota chips in the statusline",fieldThinkingLanguage:"Thinking Language",fieldThinkingLanguageDesc:"Language for Claude's internal reasoning (null=English)",fieldResponseLanguage:"Response Language",fieldResponseLanguageDesc:"Language for Claude's responses (null=match user)",fieldDocsPath:"Docs Directory",fieldDocsPathDesc:"Path to documentation directory",fieldPlansPath:"Plans Directory",fieldPlansPathDesc:"Path to plans directory",fieldGlobalPlansPath:"Global Plans Directory",fieldGlobalPlansPathDesc:"Path to global plans directory",fieldPrivacyBlock:"Privacy Block",fieldPrivacyBlockDesc:"Block access to sensitive files (.env, credentials)",fieldTrustEnabled:"Trust Mode",fieldTrustEnabledDesc:"Enable auto-approval for tool calls",fieldTrustPassphrase:"Trust Passphrase",fieldTrustPassphraseDesc:"Passphrase to enable trust mode",fieldProjectType:"Project Type",fieldProjectTypeDesc:"Override auto-detected project type",fieldPackageManager:"Package Manager",fieldPackageManagerDesc:"Override auto-detected package manager",fieldFramework:"Framework",fieldFrameworkDesc:"Override auto-detected framework",fieldGeminiModel:"Gemini Model",fieldGeminiModelDesc:"Gemini model for CLI commands; legacy gemini-3.0-* ids auto-map",geminiModel25Flash:"Gemini 2.5 Flash — All tiers",geminiModel25Pro:"Gemini 2.5 Pro — May hit capacity limits",geminiModel3FlashPreview:"Gemini 3 Flash Preview — Pro/Ultra only",geminiModel3ProPreview:"Gemini 3 Pro Preview — Pro/Ultra only",fieldResearchUseGemini:"Use Gemini for Research",fieldResearchUseGeminiDesc:"Use Gemini CLI instead of WebSearch",fieldDocsMaxLoc:"Max Lines per Doc",fieldDocsMaxLocDesc:"Maximum lines of code per documentation file",fieldPlanNamingFormat:"Plan Naming Format",fieldPlanNamingFormatDesc:"Format for plan directory names",fieldPlanDateFormat:"Plan Date Format",fieldPlanDateFormatDesc:"Date format for plan names (moment.js)",fieldPlanValidationMode:"Validation Mode",fieldPlanValidationModeDesc:"How to validate plans before implementation",fieldPlanMinQuestions:"Min Questions",fieldPlanMinQuestionsDesc:"Minimum validation questions",fieldPlanMaxQuestions:"Max Questions",fieldPlanMaxQuestionsDesc:"Maximum validation questions",fieldAssertions:"Assertions",fieldAssertionsDesc:"Code assertions and rules to enforce",fieldHookSessionInit:"Session Init",fieldHookSessionInitDesc:"Project detection and environment setup",fieldHookSubagentInit:"Subagent Init",fieldHookSubagentInitDesc:"Inject context to subagents",fieldHookSessionState:"Session State",fieldHookSessionStateDesc:"Persist session state for handoff and statusline context",fieldHookCookAfterPlanReminder:"Cook After Plan Reminder",fieldHookCookAfterPlanReminderDesc:"Remind agents to continue implementation after planning",fieldHookDescriptiveName:"Descriptive Name",fieldHookDescriptiveNameDesc:"Enforce kebab-case descriptive file naming for scripts",fieldHookDevRulesReminder:"Dev Rules Reminder",fieldHookDevRulesReminderDesc:"Inject development rules context",fieldHookPlanFormatKanban:"Plan Format Kanban",fieldHookPlanFormatKanbanDesc:"Keep plan kanban metadata synchronized after edits",fieldHookUsageQuotaCacheRefresh:"Usage Quota Cache",fieldHookUsageQuotaCacheRefreshDesc:"Refresh cached usage quota information",fieldHookUsageContextAwareness:"Usage Prompt Awareness",fieldHookUsageContextAwarenessDesc:"Inject usage-limit awareness into prompts",fieldHookContextTracking:"Context Tracking",fieldHookContextTrackingDesc:"Context window tracking (% used, token counts)",fieldHookScoutBlock:"Scout Block",fieldHookScoutBlockDesc:"Block heavy directories from exploration",fieldHookPrivacyBlock:"Privacy Block Hook",fieldHookPrivacyBlockDesc:"Block sensitive files from reading",fieldHookSimplifyGate:"Simplify Gate",fieldHookSimplifyGateDesc:"UserPromptSubmit hook — opt-in. When enabled (simplify.gate.enabled=true), hard-blocks ship/merge/pr/deploy/publish and soft-warns commit/finalize/release when live diff exceeds thresholds.",sectionSimplify:"Simplify Gate",fieldSimplifyThresholdLocDelta:"Total LOC threshold",fieldSimplifyThresholdLocDeltaDesc:"Total LOC change (across all files) above which the gate fires.",fieldSimplifyThresholdFileCount:"File count threshold",fieldSimplifyThresholdFileCountDesc:"Number of changed files above which the gate fires.",fieldSimplifyThresholdSingleFileLoc:"Per-file LOC threshold",fieldSimplifyThresholdSingleFileLocDesc:"Per-file LOC change above which the gate fires.",fieldSimplifyGateEnabled:"Enabled",fieldSimplifyGateEnabledDesc:"Master toggle. Off by default (opt-in). Enable to activate the gate; env NK_SIMPLIFY_DISABLED=1 always bypasses.",fieldSimplifyGateHardVerbs:"Hard-block verbs",fieldSimplifyGateHardVerbsDesc:"Verbs that hard-block when thresholds breached.",fieldSimplifyGateSoftVerbs:"Soft-warn verbs",fieldSimplifyGateSoftVerbsDesc:"Verbs that emit a non-blocking warning.",sectionUpdatePipeline:"Update Pipeline",fieldAutoInitAfterUpdate:"Auto Init After Update",fieldAutoInitAfterUpdateDesc:"Automatically run nk init after nk update when kit has new version",fieldAutoMigrateAfterUpdate:"Auto Migrate After Update",fieldAutoMigrateAfterUpdateDesc:"Automatically run nk migrate after nk update (independent of init)",fieldMigrateProviders:"Migrate Providers",fieldMigrateProvidersDesc:"Which providers to auto-migrate. Use 'auto' to scan filesystem or a comma-separated list.",skillsPageTitle:"Skills Management",skillsPageDesc:"Install NineKit skills to your coding agents",availableSkills:"Available Skills",installedSkills:"Installed Skills",noSkillsFound:"No skills found",installSkill:"Install",uninstallSkill:"Uninstall",manageSkill:"Manage",syncRegistry:"Sync",installSkillTitle:"Install Skill",selectAgents:"Select target agents",installLocation:"Installation location",globalInstall:"Global",projectInstall:"Project",confirmInstall:"Install to selected agents",installingSkill:"Installing...",skillInstallSuccess:"Skill installed successfully",skillInstallFailed:"Installation failed",agentClaudeCode:"Claude Code",agentCursor:"Cursor",agentCodex:"Codex",agentOpencode:"OpenCode",agentGoose:"Goose",agentGeminiCli:"Gemini CLI",agentAntigravity:"Antigravity",agentGithubCopilot:"GitHub Copilot",agentAmp:"Amp",agentKilo:"Kilo",agentRoo:"Roo",agentWindsurf:"Windsurf",agentCline:"Cline",agentOpenhands:"OpenHands",installed:"Installed",notInstalled:"Not installed",allAgents:"All Agents",filterByAgent:"Filter by agent",skillsTitle:"Skills",skillsSubtitle:"Browse, install, and manage skills for your coding agents",availableCount:"Available",installedCount:"Installed",agentsCount:"Agents",searchSkills:"Search skills...",searchShortcut:"/",sortAZ:"A-Z",sortCategory:"Category",sortInstalledFirst:"Installed first",listView:"List view",gridView:"Grid view",categoryAll:"All",categoryAI:"AI",categoryUIUX:"UI/UX",categoryBackend:"Backend",categorySecurity:"Security",categoryDevOps:"DevOps",categoryDatabase:"Database",categoryDevelopment:"Development",categoryResearch:"Research",categoryGeneral:"General",categoryCore:"Core",categoryDocumentation:"Documentation",categoryTooling:"Tooling",categoryMedia:"Media",categoryFrameworks:"Frameworks",skillsCountLabel:"{count} skills",installToAll:"Install to All Detected",scopeLabel:"Installation Scope",agentInstalled:"Installed",agentNotInstalled:"Not installed",skillSource:"Source location",skillSourceBadge:"Source",detailPanelClose:"Close",versionLabel:"v{version}",installAllToAllAgents:"Install All to All Agents",bulkInstallFailed:"Bulk install failed",noAgentsDetected:"No agents detected",kitBadgeEngineer:"Engineer",kitBadgeMarketing:"Marketing",customizedBadge:"Customized",installedVersionLabel:"Installed Version",installedAtLabel:"Installed At",sourceTimestampLabel:"Source Date",kitLabel:"Kit",skillMetadata:"Skill Info",migrate:"Migrate",migrateTitle:"Migrate",migrateSubtitle:"Migrate your Claude Code stack to other providers",migrateDetectedProviders:"Detected",migrateSelectedProviders:"Selected",migrateDiscovering:"Discovering migration sources...",migrateRefresh:"Refresh Discovery",migrateRun:"Run Migration",migrateRunning:"Migrating...",migrateSourceSummary:"Source Summary",migratePresetCodex:"Codex",migratePresetAntigravity:"Antigravity",migratePresetCore:"Codex + Antigravity + Droid",migratePresetDetected:"All Detected",migrateScope:"Scope",migrateScopeProject:"Project",migrateScopeGlobal:"Global",migrateTypes:"Portable Types",migrateTypeAgents:"Subagents",migrateTypeCommands:"Commands",migrateTypeSkills:"Skills",migrateTypeConfig:"Config",migrateTypeRules:"Rules",migrateTypeHooks:"Hooks",migrateSearchProviders:"Search providers...",migrateSelectVisible:"Select Visible",migrateClearSelection:"Clear Selection",migrateProvidersHeading:"Target Providers",migrateProvidersCountSuffix:"providers",migrateNoProvidersMatch:"No providers match current filters.",migrateSelectButton:"Select",migrateSelectedButton:"Selected",migrateSelectProviderAction:"Select Provider",migrateUnselectProvider:"Unselect Provider",migrateCapabilitiesLabel:"types",migrateCapabilitiesSection:"Capability Matrix",migrateSupported:"Supported",migrateUnsupportedShort:"Unsupported",migrateIncludedEnabled:"Enabled",migrateIncludedDisabled:"Disabled",migrateLatestTarget:"Latest Target",migrateNoResultForProvider:"No migration result for this provider yet.",migrateActionSummaryTitle:"Ready to Migrate",migrateGlobalOnlyCommandsShort:"Commands global only",migrateNoProviders:"No providers available.",migrateUnsupported:"Will be skipped (unsupported)",migrateGlobalForced:"Selected provider commands only support global scope. Use Global to install them.",migrateResults:"Migration Results",migrateInstalled:"Installed",migrateSkipped:"Skipped",migrateFailed:"Failed",migrateProvider:"Provider",migrateStatus:"Status",migratePath:"Path",migrateError:"Error",migrateStatusInstalled:"Installed",migrateStatusSkipped:"Skipped",migrateStatusFailed:"Failed",migrateNoResults:"No migration results yet.",migrateDetectFailed:"Failed to discover migration data",migrateExecuteFailed:"Migration execution failed",migrateSelectProvider:"Select at least one provider",migrateNoTypesEnabled:"Enable at least one portable type",migrateDetectedTag:"Detected",migrateNotDetectedTag:"Not detected",migrateFilterRecommended:"Recommended",migrateActionInstall:"Install",migrateActionUpdate:"Update",migrateActionSkip:"Skip",migrateActionConflict:"Conflict",migrateActionDelete:"Delete",migrateUnchanged:"unchanged",migrateConflictSectionTitle:"Conflicts",migrateConflictUseCK:"Use NK",migrateConflictKeepMine:"Keep Mine",migrateConflictSmartMerge:"Smart Merge",migrateConflictShowDiff:"Show Diff",migrateConflictHideDiff:"Hide Diff",migrateConflictResolved:"Resolved",migrateConflictManual:"Manual",migrateConflictOverwriteAll:"Overwrite All",migrateConflictKeepAll:"Keep All",migrateSummaryTitle:"Migration Complete",migrateSummaryNewMigration:"New Migration",migrateType:"Type",migrateItem:"Item",migrateReconciling:"Analyzing changes...",migrateReviewPlan:"Review Plan",migrateExecutePlan:"Execute Migration",migrateExecuting:"Executing migration...",migrateResolveConflicts:"Resolve all conflicts before executing",migrateReason_newItem:"New item from provider",migrateReason_newProviderForItem:"New provider for this item",migrateReason_targetDeletedSourceChanged:"Target was deleted but source has updates",migrateReason_targetDirEmptyReinstall:"Target directory is empty — reinstalling",migrateReason_forceReinstall:"Force reinstall requested",migrateReason_forceOverwrite:"Force overwrite (you edited this, --force active)",migrateReason_registryUpgradeReinstall:"Registry upgrade requires reinstall",migrateReason_sourceChanged:"Source has been updated",migrateReason_registryUpgradeHeal:"Healing stale target after registry upgrade",migrateReason_noChanges:"No changes detected",migrateReason_userEditsPreserved:"User edits preserved",migrateReason_userDeletedRespected:"User deletion respected",migrateReason_targetUpToDateBackfill:"Target is up to date",migrateReason_providerChecksumUnavailable:"Provider checksum unavailable",migrateReason_targetStateUnknown:"Target state could not be determined",migrateReason_sourceRemovedOrphan:"Source removed — cleaning up orphan",migrateReason_renamedCleanup:"Item renamed — removing old path",migrateReason_pathMigratedCleanup:"Path migrated — removing old location",migrateReason_bothChanged:"Both source and target changed",migrateReason_targetStateUnknownSourceChanged:"Source changed but target state unknown",migrateBanner_emptyDir_title:"Detected empty directory",migrateBanner_emptyDir_body:"items below will be reinstalled. Uncheck any to skip.",migrateBanner_emptyDirRespected_title:"Respecting your deletion",migrateBanner_emptyDirRespected_body:"is empty. Respecting your deletion.",migrateBanner_reinstallCta:"Reinstall these items",migrateModeLabel:"Migration mode",migrateModeReconcile:"Reconcile",migrateModeReconcileDesc:"Smart-detects drift",migrateModeInstall:"Install",migrateModeInstallDesc:"Pick items to install",migrateModeConfirmTitle:"Switch mode?",migrateModeConfirmBody:"You have {count} pending changes. Switching to {mode} mode will discard them.",migrateModeConfirmSwitch:"Switch & discard",migrateSmartDefaultInstall:"Fresh install detected — defaulting to Install mode",migrateSmartDefaultReconcile:"Existing registry found — defaulting to Reconcile mode",migrateInstallSelectAll:"Select all",migrateInstallDeselectAll:"Deselect all",migrateInstallDirItem:"dir",migrateInstallAlreadyInstalled:"installed",migrateInstallNoCandidates:"No installable items found for the selected providers.",migrateInstallSelectedCount:"{count} of {total} items selected",migrateInstallCta:"Install {count} selected items",migrateInstallInstalling:"Installing...",migrateInstallLoadingCandidates:"Fetching available items...",migrateFlip_moveToSkip:"Move to Skip",migrateFlip_moveToInstall:"Move to Install",migrateFlip_checkAll:"Check all",migrateFlip_uncheckAll:"Uncheck all",migrateFlip_toggleItem:"Toggle item",migrateConflictBanner_title:"Conflicts detected",migrateConflictBanner_cta:"Open conflict resolver",migrateConflictBanner_hide:"Hide conflict resolver",migrateShowSkippedItems:"Show skipped items",migrateHideSkippedItems:"Hide skipped items",migrateConflictBadge:"Conflict",migrateSummarySubtitle:"items migrated",migrateSummarySearchPlaceholder:"Search items...",migrateSummaryFilterAll:"All",migrateSummaryCollapseAll:"Collapse all",migrateSummaryExpandAll:"Expand all",migrateSummaryNoResults:"No items match your search",migrateSummaryProviders:"Providers",migrateTypeUnknown:"Other",kanbanTitle:"Plan Kanban",kanbanNoFile:"No plan file specified. Use ?file= parameter.",kanbanNoPhases:"No phases detected in this plan",kanbanError400:"Invalid request — missing file parameter",kanbanError403:"Access denied — file is outside the project directory",kanbanError404:"Plan file not found",kanbanComplete:"complete",kanbanStatus_pending:"Pending","kanbanStatus_in-progress":"In Progress",kanbanStatus_completed:"Completed",kanbanPhases:"phases",kanbanProgress:"Progress",kanbanLoadError:"Failed to load plan data",plansNav:"Plans",plansTitle:"Plans Dashboard",plansGlobalTitle:"All Projects",plansSubtitle:"Browse active plans, inspect phase timelines, and manage progress from one place.",plansEmpty:"No plans found",plansSearch:"Search plans...",plansProjectFilter:"Filter by project",plansAllProjects:"All projects",plansSortBy:"Sort by",plansViewGrid:"Grid",plansViewKanban:"Kanban",plansFilterAll:"All statuses",plansSortDateDesc:"Newest first",plansSortDateAsc:"Oldest first",plansSortNameAsc:"Name A-Z",plansSortNameDesc:"Name Z-A",plansSortProgress:"Highest progress",plansLabel:"Plan",plansStatusPending:"Pending",plansStatusInProgress:"In Progress",plansStatusInReview:"In Review",plansStatusDone:"Done",plansStatusCancelled:"Cancelled",plansCompletedCount:"{count} completed",plansProjectPlans:"{count} plans",plansProjectLoadIssues:"Some projects could not be scanned",plansStatusUnknown:"Unknown",plansBackToPlans:"Back to Plans",plansBackToPlan:"Back to Plan",plansPrevious:"Previous",plansNext:"Next",plansContents:"Contents",plansValidate:"Validate",plansStartNext:"Start Next",plansRestart:"Restart",plansStart:"Start",plansComplete:"Complete",plansReset:"Reset",plansTimeline:"Timeline",plansActivity:"Activity",plansActivitySubtitle:"Last 12 weeks",plansActivityCombined:"Combined",plansActivityCommits:"Commits",plansActivityFiles:"Files",plansActivityEmpty:"No activity data available.",plansHeatmapLoadError:"Failed to load activity heatmap.",plansHeatmapChanges:"{date} • {count} changes",plansRead:"Read",plansPhases:"Phases",plansPhase:"Phase",plansPhaseCountCompact:"PH-{count}",plansKanbanEmpty:"Empty",plansLoadingPlan:"Loading plan...",plansLoadingReader:"Loading document...",plansLoadPlanFailed:"Failed to load plan ({status})",plansLoadPlanFallback:"Failed to load plan",plansLoadFileFailed:"Failed to load document ({status})",plansLoadFileFallback:"Failed to load document",plansProgressComplete:"{count}% complete",plansPhaseCount:"{count} phases",plansPriority:"Priority",plansUpdated:"Updated",plansLastUpdated:"Last Updated",plansPriorityLabel:"Priority {value}",plansUpdatedLabel:"Updated {value}",plansTimelineAvgDays:"{count} avg days",plansNoEffort:"No effort",plansNotFound:"Plan not found",plansQuickInfoTitle:"Plan Overview",plansQuickInfoDescription:"Use this view to track phase progress, timeline coverage, and recent activity for this plan.",plansCurrentStatus:"Current Status",plansHeatmapMon:"Mon",plansHeatmapWed:"Wed",plansHeatmapFri:"Fri",developmentFeature:"Development",betaFeature:"Beta",experimentalFeature:"Experimental",sectionModelTaxonomy:"Model Taxonomy",taxonomyDescription:"Customize model mappings for portable migration to other coding agents.",taxonomyTierHeavy:"Heavy (opus)",taxonomyTierBalanced:"Balanced (sonnet)",taxonomyTierLight:"Light (haiku)",taxonomyModel:"Model",taxonomyEffort:"Effort",taxonomyResetProvider:"Reset",taxonomyTier:"Tier",statuslineBuilder:"Status Line Builder",statuslineBuilderDescription:"Visually design your Claude Code status-line using drag-and-drop",statuslineSections:"Sections",statuslinePreview:"Preview",statuslineTheme:"Color Theme",statuslineSettings:"General Settings",statuslineResetDefaults:"Reset to Defaults",statuslineSave:"Save",statuslineBaseMode:"Base Mode",statuslineBreakpoint:"Responsive Breakpoint",statuslineMaxAgents:"Max Agent Rows",statuslineTodoTruncation:"Todo Truncation",statuslineEnable:"Enable",statuslineDisable:"Disable",statuslineDragHint:"Drag to reorder, toggle to enable/disable sections",statuslinePresetDefault:"Default",statuslinePresetMonochrome:"Monochrome",statuslinePresetSolarized:"Solarized",statuslinePresetNord:"Nord",statuslinePresetDracula:"Dracula",statuslinePresetCatppuccin:"Catppuccin",statuslinePresetGruvbox:"Gruvbox",statuslinePresetTokyoNight:"Tokyo Night",statuslinePresetRosePine:"Rosé Pine",statuslinePresetOneDark:"One Dark",statuslinePresetAyu:"Ayu",statuslinePresetKanagawa:"Kanagawa",statuslinePresetStealth:"Stealth",statuslinePresetHacker:"Hacker",statuslineSaved:"Saved successfully",statuslineSaveError:"Save failed",statusline:"Status Line",statuslineCollapseSettings:"Collapse settings",statuslineExpandSettings:"Expand settings",statuslineIconOverride:"Icon override",statuslineLabelOverride:"Label override",statuslineMaxWidth:"Max width (chars)",statuslineIconPlaceholder:"e.g. 🤖",statuslineMaxWidthPlaceholder:"auto",statuslineCustomColors:"Custom colors",statuslineColorContextGroup:"Context Window",statuslineColorQuotaGroup:"Usage Quota",statuslineColorGeneralGroup:"General",statuslineColorSectionGroup:"Section Colors",statuslineColorContextLow:"Low (<50%)",statuslineColorContextMid:"Mid (50-75%)",statuslineColorContextHigh:"High (>75%)",statuslineColorAccent:"Accent",statuslineColorMuted:"Muted",statuslineColorSeparator:"Separator",statuslineModeFullDesc:"All sections visible",statuslineModeCompactDesc:"Condensed display",statuslineModeMinimalDesc:"Essential info only",statuslineModeNoneDesc:"Disabled",statuslinePreviewTitle:"Claude Code — statusline preview",statuslinePreviewEmptyLine:"(empty line)",statuslinePreviewNoLines:"(no lines configured)",statuslineSectionModelLabel:"Model",statuslineSectionContextLabel:"Context Window",statuslineSectionQuotaLabel:"Usage Quota",statuslineSectionDirectoryLabel:"Directory",statuslineSectionGitLabel:"Git Status",statuslineSectionCostLabel:"Cost",statuslineSectionChangesLabel:"Changes",statuslineSectionAgentsLabel:"Agents",statuslineSectionTodosLabel:"Tasks",statuslineSectionModelDesc:"AI model name and provider",statuslineSectionContextDesc:"Context window usage bar",statuslineSectionQuotaDesc:"5-hour and weekly usage quota",statuslineSectionDirectoryDesc:"Current working directory",statuslineSectionGitDesc:"Git branch, staged/unstaged changes",statuslineSectionCostDesc:"Session cost estimate",statuslineSectionChangesDesc:"Lines added and removed",statuslineSectionAgentsDesc:"Recent agent activity",statuslineSectionTodosDesc:"Current task progress",statuslineSectionsVisible:"sections visible",statuslineLoadErrorSaveDisabled:"Could not load saved layout. Saving is disabled to prevent data loss.",statuslineAddLine:"Add Line",statuslineRemoveLine:"Remove",statuslineHiddenSections:"Hidden Sections",statuslineDragToLine:"Drag sections to a line to show them",statuslineQuotaLow:"Quota Low",statuslineQuotaHigh:"Quota High",statuslineLine:"Line",sessionsTitle:"Sessions",sessionDetail:"Session Detail",sessionMessages:"messages",sessionToolCalls:"tool calls",sessionDuration:"Duration",noSessionsData:"No sessions found",sessionReadOnly:"Read-only view",sessionLastActive:"Last active",sessionProjectSessions:"Project Sessions",sessionBack:"Back",sessionLoading:"Loading...",sessionError:"Failed to load",sessionCount:"sessions",sessionToolInput:"Input",sessionToolResult:"Result",sessionToolsUsed:"Tools Used",sessionSystemContext:"System Context",sessionExpandAll:"Expand all",sessionCollapseAll:"Collapse all",sessionNoContent:"No text content",sessionUser:"User",sessionAssistant:"Assistant",sessionThinking:"Thinking...",sessionSearchPlaceholder:"Search in conversation...",sessionSearchResults:"results",sessionNoResults:"No matches",sessionGroupMessages:"messages",palettePlaceholder:"Search agents, commands, skills...",paletteNoResults:"No results found",paletteAgents:"Agents",paletteCommands:"Commands",paletteSkills:"Skills",paletteProjects:"Projects",paletteNavigation:"Navigation",skillsBrowser:"Skills",skillsCount:"{count} skills",skillDetail:"Skill Detail",searchSkillsBrowserPlaceholder:"Search skills...",noSkillsBrowserFound:"No skills found",backToSkillsBrowser:"Back to Skills",skillTriggers:"Triggers",skillLocal:"Local",skillGithub:"GitHub",systemNavLabel:"System",dashboardTitle:"Dashboard",dashboardAgents:"Agents",dashboardCommands:"Commands",dashboardSkills:"Skills",dashboardMcpServers:"MCP Servers",configured:"Configured",available:"Available",modelDistribution:"Model Distribution",recentAgents:"Recent Agents",suggestionsTitle:"Suggestions",acrossAgents:"across {count} agents",noAgentsConfigured:"No agents configured in ~/.claude/agents/",mcpTitle:"MCP Servers",mcpServerName:"Server",mcpCommand:"Command",mcpArgs:"Arguments",mcpSource:"Source",mcpStatus:"Status",mcpConfigured:"Configured",mcpNoServers:"No MCP servers configured",mcpSourceSettings:"settings.json",mcpSourceMcpJson:".mcp.json",mcpSourceProject:"Project",mcpToolCount:"Tools",agentsBrowser:"Agents",agentsBrowserCount:"{count} agents",filterAll:"All",agentDetail:"Agent Detail",agentInstructions:"Instructions",agentFrontmatter:"Configuration",searchAgentsPlaceholder:"Search agents...",noAgentsFound:"No agents found",backToAgents:"Back to Agents",commandsBrowser:"Commands",commandsCount:"{count} commands",commandDetail:"Command Detail",searchCommandsPlaceholder:"Search commands...",noCommandsFound:"No commands found",backToCommands:"Back to Commands",rootCommands:"Root",selectToView:"Select an item to view details",indexingFrom:"Indexing from",workflowsTitle:"Workflows",workflowsSubtitle:"Learn NineKit through interactive workflow visualization.",workflowsCredit:"Workflows data and visualization layout inspired by",workflowImplementationRecipe:"Implementation Recipe",workflowSearchPlaceholder:"Search workflows...",workflowNoResults:"No workflows found",loadingWorkflows:"Loading workflows...",workflowCategoryAll:"All",workflowCategoryGettingStarted:"Getting Started",workflowCategoryDesignFrontend:"Design & Frontend",workflowCategoryDebuggingFixes:"Debugging & Fixes",workflowCategoryPlanningReview:"Planning & Review",workflowCategoryResearchDocs:"Research & Docs",workflowCategoryShipping:"Shipping",workflowCategoryBackendInfra:"Backend & Infra",workflowCategoryMediaCreative:"Media & Creative",workflowCategoryAdvanced:"Advanced",workflowComplexityBeginner:"Beginner",workflowComplexityIntermediate:"Intermediate",workflowComplexityAdvanced:"Advanced",workflowBuildFeature:"Build a New Feature",workflowBuildFeatureDesc:"Add new functionality to applications systematically.",workflowQuickImplementation:"Quick Implementation",workflowQuickImplementationDesc:"Fast track implementation for small, understood features.",workflowStartNewProject:"Start New Project",workflowStartNewProjectDesc:"Bootstrap a brand new project with right foundations.",workflowFrontendDesign:"Frontend Design",workflowFrontendDesignDesc:"Create beautiful user interfaces guided by design taste bots.",workflowAiDesignStitch:"AI Design Stitch",workflowAiDesignStitchDesc:"Orchestrate Google Stitch for generating designs from prompt.",workflowExcalidraw:"Excalidraw Design",workflowExcalidrawDesc:"Visualize architectures or mockups using Excalidraw JSON.",workflowFixBug:"Fix Bug",workflowFixBugDesc:"Identify root cause and automatically fix codebase issues.",workflowSecurityAudit:"Security Audit",workflowSecurityAuditDesc:"Thorough security check on the repository.",workflowTestScenarios:"Test Scenarios",workflowTestScenariosDesc:"Generate edge cases and test scenarios by decomposing features.",workflowStride:"STRIDE Analysis",workflowStrideDesc:"Perform a STRIDE + OWASP-based security audit threat model.",workflowCodeReview:"Code Review",workflowCodeReviewDesc:"Review code quality with adversarial rigor.",workflowPlanValidate:"Plan + Validate",workflowPlanValidateDesc:"Draft an architectural plan and rigorously validate its technical feasible.",workflowAdversarialReview:"Adversarial Review",workflowAdversarialReviewDesc:"Trigger a harsh red-team review mapping out potential failure modes.",workflowAutoresearch:"Autonomous Loop",workflowAutoresearchDesc:"Run an autonomous iterative optimization loop for any metric.",workflowXia:"Extract/Port Feature",workflowXiaDesc:"Port or extract a feature algorithm from an external codebase.",workflowVisualDocumentation:"Visual Documentation",workflowVisualDocumentationDesc:"Build diagrams outlining current repo logic and architectures.",workflowTechnicalResearch:"Technical Research",workflowTechnicalResearchDesc:"Investigate technological solutions deeply before writing code.",workflowLlmsTxt:"Generate llms.txt",workflowLlmsTxtDesc:"Analyze the codebase and construct a comprehensive llms.txt file.",workflowDevops:"DevOps / Release",workflowDevopsDesc:"Configure Docker, CI/CD and deploy standard web platforms.",workflowShip:"Ship Pipeline",workflowShipDesc:"Merge, test, review, commit, bump semantic version and PR.",workflowDatabaseOps:"Database Operations",workflowDatabaseOpsDesc:"Write complex aggregation pipelines or optimize database performance.",workflowRemotion:"Remotion Video",workflowRemotionDesc:"Build programmatic video sequences internally.",workflowShowOff:"Show Off Demo",workflowShowOffDesc:"Build an interactive self-contained HTML showcase for a repo.",workflowAgentTeams:"Agent Teams",workflowAgentTeamsDesc:"Spawn isolated team members for parallel coordinated labor.",workflowWorktree:"Worktree Parallelism",workflowWorktreeDesc:"Instantly isolate feature iterations in new worktrees."},vi:{loading:"Đang tải...",error:"Lỗi",selectProject:"Chọn dự án để xem bảng điều khiển",controlCenter:"Trung tâm điều khiển",settings:"Cài đặt",sync:"Đồng bộ",offline:"Ngoại tuyến",switchToLight:"Chuyển sang chế độ sáng",switchToDark:"Chuyển sang chế độ tối",settingsSection:"Cài đặt",overviewSection:"Tổng quan",entitiesSection:"Thực thể",toolsSection:"Công cụ",configEditor:"Trình chỉnh sửa cấu hình",projects:"Dự án",addProject:"Thêm dự án",global:"Toàn cục",skills:"Kỹ năng",skillsNav:"Kỹ năng",health:"Sức khỏe",collapse:"Thu gọn",expand:"Mở rộng",installing:"Đang cài đặt...",manage:"Quản lý",uninstall:"Gỡ cài đặt",installGlobally:"Cài đặt toàn cục",installGloballyDesc:"Khả dụng cho tất cả dự án thay vì chỉ dự án hiện tại",selectAtLeastOneAgent:"Vui lòng chọn ít nhất một agent",installationFailed:"Cài đặt thất bại",allSkills:"Tất cả kỹ năng",refresh:"Làm mới",browseAndManageSkills:"Duyệt và quản lý kỹ năng cho agents của bạn",detected:"Đã phát hiện",notDetected:"Chưa phát hiện",sessions:"phiên",noSessions:"Không có phiên",terminal:"Terminal",terminalSub:"Mở bash tại đường dẫn",editor:"Trình soạn thảo",editorSub:"Mở trong VS Code",useGlobalFallback:"Dùng fallback global",openAtPath:"Mở tại đường dẫn dự án",openAppOnly:"Chỉ mở ứng dụng",actionOptionsLoadFailed:"Không thể tải tùy chọn editor/terminal",launch:"Khởi chạy",launchSub:"Bắt đầu Claude Code",config:"Cấu hình",configSub:"Quản lý cài đặt dự án",recentSessions:"Phiên gần đây",viewAllHistory:"Xem tất cả lịch sử",showLess:"Thu gọn",actionFailed:"Thao tác thất bại",loadingSessions:"Đang tải phiên...",noSessionsFound:"Không tìm thấy phiên nào",configuration:"Cài đặt Claude",planSettingsTitle:"Cài đặt Kế hoạch",activeKit:"Kit hoạt động",aiModel:"Mô hình",hooks:"Hooks",active:"hoạt động",mcpServers:"Máy chủ MCP",connected:"kết nối",plansDirectory:"Thư mục kế hoạch",validationMode:"Chế độ xác thực",planScopeLabel:"Phạm vi",planScopeProject:"dự án",planScopeGlobal:"toàn cục",activePlansLabel:"Kế hoạch đang hoạt động",activePlansTitle:"Kế hoạch đang hoạt động",noActivePlansFound:"Không có kế hoạch đang hoạt động",openPlan:"Mở kế hoạch",openKanban:"Mở Kanban",blockedByLabel:"Bị chặn bởi",progressLabel:"Tiến độ",editProjectConfig:"Chỉnh sửa cấu hình dự án",projectPreferenceSaveFailed:"Không thể lưu tùy chọn",globalSettings:"(Toàn cục)",globalSkills:"Kỹ năng toàn cục",loadingSkills:"Đang tải kỹ năng...",noDescription:"Không có mô tả",browseSkillsMarketplace:"Duyệt Skills Marketplace",backToDashboard:"Quay lại bảng điều khiển",educationalConfigEditor:"Trình chỉnh sửa cấu hình hướng dẫn",discard:"Hủy bỏ",saveChanges:"Lưu thay đổi",mergedView:"Chế độ gộp",localConfig:"Cục bộ (.nk.json)",globalConfig:"Toàn cục",syntaxValid:"Cú pháp hợp lệ",configurationHelp:"Hướng dẫn cấu hình",field:"Trường",type:"Kiểu",default:"Mặc định",description:"Mô tả",validValues:"Giá trị hợp lệ",systemEffect:"Hiệu ứng hệ thống",exampleUsage:"Ví dụ sử dụng",knowledgeBase:"Cơ sở kiến thức",clickToSeeHelp:"Nhấp vào bất kỳ trường cấu hình nào để xem tài liệu chi tiết và ví dụ sử dụng.",extractedFrom:"Trích xuất từ NineKit v2.x Specification",resetToDefault:"Đặt lại",saving:"Đang lưu...",saved:"Đã lưu",confirmReset:"Đặt lại về mặc định?",confirmResetMessage:"Tất cả thay đổi sẽ bị mất và được thay thế bằng giá trị mặc định.",confirm:"Xác nhận",saveFailed:"Lưu thất bại",configTab:"Cấu hình",systemTab:"Hệ thống",formTab:"Biểu mẫu",jsonTab:"JSON",readOnly:"Chỉ đọc",installedKit:"Kit đã cài",kitVersion:"Phiên bản Kit",installedOn:"Cài đặt vào",noKitInstalled:"Chưa cài kit",components:"Thành phần",agents:"Agents",commands:"Commands",workflows:"Workflows",kitSkills:"Skills",fileOwnership:"Quyền sở hữu tệp",ownershipCk:"do kit quản lý",ownershipUser:"do người dùng",ownershipModified:"đã chỉnh sửa",componentInventory:"Thành phần đã cài",installedHooks:"Hooks đã cài",installedMcpServers:"MCP Servers",lastChecked:"Kiểm tra cập nhật",staleIndicator:"Cũ",skippedVersion:"Đã bỏ qua",filesModifiedFromDefaults:"tệp đã sửa so với mặc định",cliCard:"NineKit CLI",checkForUpdates:"Kiểm tra cập nhật",checking:"Đang kiểm tra...",upToDate:"Đã cập nhật",updateAvailable:"Có bản cập nhật",updateNow:"Cập nhật ngay",updating:"Đang cập nhật...",updateSuccess:"Cập nhật hoàn tất!",updateFailed:"Cập nhật thất bại",closeModal:"Đóng",showDetails:"Xem chi tiết",hideDetails:"Ẩn chi tiết",environment:"Môi trường",claudeConfigPath:"Cấu hình Claude",nodeVersion:"Node",bunVersion:"Bun",osVersion:"Hệ điều hành",envShell:"Shell",envHomeDir:"Thư mục gốc",envCpuCores:"Nhân CPU",envTotalMemory:"Bộ nhớ",cliPackageManager:"Trình quản lý gói",cliInstallLocation:"Vị trí cài đặt",cliGitVersion:"Git",cliGhVersion:"GitHub CLI",channelStable:"Ổn định",channelBeta:"Beta",betaBadge:"Beta",latestVersion:"Mới nhất",selectVersion:"Chọn phiên bản",loadingVersions:"Đang tải...",prereleaseLabel:"Thử nghiệm",currentVersionLabel:"Hiện tại",checkAll:"Kiểm tra tất cả",checkingAll:"Đang kiểm tra...",updateAll:"Cập nhật tất cả",updatesAvailable:"{count} bản cập nhật",allUpToDate:"Tất cả đã cập nhật",systemControlTower:"Trung tâm hệ thống",systemOverviewTitle:"Tổng quan cập nhật & môi trường",systemOverviewDesc:"Theo dõi CLI và kit, rồi nâng cấp từ một nơi.",installedComponentsHeading:"Thành phần đã cài",updateReadiness:"Mức sẵn sàng cập nhật",checkedComponents:"Đã kiểm tra",activeChannel:"Kênh",readyToScan:"Sẵn sàng kiểm tra",noTrackedFiles:"Không phát hiện tệp theo dõi",kitsLabel:"Kit",componentFilterAll:"Tất cả",componentFilterUpdates:"Bản cập nhật",componentFilterUpdatesCount:"Bản cập nhật ({count})",componentFilterUpToDate:"Đã cập nhật",componentFilterUpToDateCount:"Đã cập nhật ({count})",componentFilterCli:"CLI",componentFilterKits:"Kit",noComponentsMatchFilter:"Không có thành phần phù hợp bộ lọc hiện tại.",runCheckAllForFilter:"Hãy chạy Kiểm tra tất cả để nạp dữ liệu cho bộ lọc này.",noUpdatesFound:"Không có bản cập nhật. Các thành phần đã kiểm tra đều mới nhất.",noUpToDateYet:"Chưa có thành phần nào ở trạng thái đã cập nhật.",configWorkspaceHint:"Chỉnh sửa cấu hình hoặc quản lý cập nhật hệ thống trong một màn hình.",settingsJsonHeading:"JSON Cài đặt Claude",settingsJsonMissing:"Không tìm thấy tệp ~/.claude/settings.json.",settingsJsonLoadFailed:"Không thể tải ~/.claude/settings.json.",settingsLoadFailedDetail:"Chi tiết lỗi:",configLoadFailed:"Không thể tải cấu hình.",configLoadFailedDetail:"Chi tiết lỗi:",settingsBackupSaved:"Đã lưu bản sao lưu",hookDiagnosticsTitle:"Chẩn đoán Hook",hookDiagnosticsDesc:"Xem hoạt động hook gần đây và lỗi mà không cần mở tệp JSONL thủ công.",hookDiagnosticsPathPending:"Đang xác định đường dẫn log...",hookDiagnosticsScopeGlobal:"Hook toàn cục",hookDiagnosticsEntries:"Bản ghi",hookDiagnosticsCrashes:"Sự cố",hookDiagnosticsWarnings:"Cảnh báo",hookDiagnosticsBlocks:"Chặn",hookDiagnosticsLastEvent:"Sự kiện cuối",hookDiagnosticsLoading:"Đang tải chẩn đoán hook...",hookDiagnosticsLoadFailed:"Không thể tải chẩn đoán hook",hookDiagnosticsMissing:"Chưa tìm thấy tệp log hook cho phạm vi này.",hookDiagnosticsEmpty:"Tệp log hook có tồn tại nhưng không có bản ghi đọc được.",hookDiagnosticsParseErrorsNotice:"Đã bỏ qua {count} dòng log bị lỗi khi tải chẩn đoán.",hookDiagnosticsTruncatedNotice:"Đang hiển thị cửa sổ bản ghi gần đây để giữ giao diện phản hồi tốt với log lớn.",hookDiagnosticsToolLabel:"công cụ",hookDiagnosticsTargetLabel:"mục tiêu",hookDiagnosticsUnknown:"Không rõ",hookDiagnostics:"Chẩn đoán Hook",hookEvent:"Sự kiện",hookExecutions:"Lần chạy",hookAvgLatency:"Trung bình",hookFailureRate:"Tỉ lệ lỗi",hookLastRun:"Lần cuối",hookLatencyWarning:"Độ trễ > 500ms",activityMetrics:"Hoạt động",activityTotalSessions:"Tổng phiên",activityMostActive:"Dự án hoạt động nhiều nhất",activityPeriod24h:"24h",activityPeriod7d:"7 ngày",activityPeriod30d:"30 ngày",activityNoData:"Không có dữ liệu",addProjectTitle:"Thêm dự án",addProjectDescription:"Thêm dự án NineKit mới vào trung tâm điều khiển",projectPath:"Đường dẫn dự án",pathPlaceholder:"/đường/dẫn/dự/án",alias:"Bí danh",aliasOptional:"(tùy chọn)",aliasPlaceholder:"dự-án-của-tôi",aliasDescription:"Tên hiển thị tùy chỉnh cho dự án",pathRequired:"Đường dẫn bắt buộc",failedToAdd:"Không thể thêm dự án",cancel:"Hủy",adding:"Đang thêm...",somethingWentWrong:"Đã xảy ra lỗi",reloadApp:"Tải lại ứng dụng",serverNotRunning:"Máy chủ không chạy",startServerMessage:"Config UI yêu cầu máy chủ backend đang chạy.",runThisCommand:"Chạy lệnh này",tryAgain:"Thử lại",projectConfig:"Cấu hình dự án",inheritedFromGlobal:"Kế thừa từ toàn cục",localOverride:"Ghi đè cục bộ",viewGlobalConfig:"Trường này kế thừa từ cấu hình toàn cục. Xem",onboardingTitle:"Chào mừng đến NineKit",onboardingSubtitle:"Chọn kit của bạn và bắt đầu trong vài phút",kitEngineerName:"NineKit Engineer",kitEngineerTagline:"Lập trình AI với skills, hooks và multi-agent",kitMarketingName:"NineKit Marketing",kitMarketingTagline:"Tự động hóa nội dung: chiến dịch, mạng xã hội, phân tích",kitPmName:"NineKit PM",kitPmTagline:"Quy trình quản lý dự án & phân phối cho Claude",kitBaName:"NineKit BA",kitBaTagline:"Quy trình phân tích nghiệp vụ & yêu cầu cho Claude",kitTestName:"NineKit Test",kitTestTagline:"Quy trình QA & kỹ thuật kiểm thử cho Claude",featureAgents:"AI Agents",featureAgentsDesc:"Các agent chuyên biệt cho từng tác vụ",featureHooks:"Lifecycle Hooks",featureHooksDesc:"Tùy chỉnh hành vi của Claude tại các thời điểm quan trọng",featureSkills:"Thư viện Skills",featureSkillsDesc:"Các khả năng có sẵn bạn có thể kích hoạt",featureMultiAgent:"Multi-Agent Workflows",featureMultiAgentDesc:"Phối hợp nhiều agent cho các tác vụ phức tạp",featureContent:"Tạo nội dung",featureContentDesc:"Tự động tạo và tối ưu nội dung",featureSocial:"Công cụ mạng xã hội",featureSocialDesc:"Lên lịch, phân tích và tự động tương tác",stepChooseKit:"Chọn Kit",stepConfigure:"Cấu hình",stepInstall:"Cài đặt",back:"Quay lại",next:"Tiếp theo",install:"Cài đặt",installSuccess:"Cài đặt hoàn tất!",installSuccessDesc:"{kit} đã sẵn sàng sử dụng",getStarted:"Bắt đầu",goToDashboard:"Đi đến Dashboard",kitConfig:"Cấu hình Kit",kitConfigSubtitle:"Cấu hình NineKit Engineer",scopeGlobal:"Toàn cục",scopeProject:"Dự án",sectionGeneral:"Cài đặt chung",sectionPaths:"Đường dẫn",sectionPrivacy:"Bảo mật & Tin cậy",sectionProject:"Phát hiện dự án",sectionIntegrations:"Tích hợp",sectionHooks:"Hooks",sectionAdvanced:"Nâng cao",fieldCodingLevel:"Cấp độ lập trình",fieldCodingLevelDesc:"Cấp độ kinh nghiệm (-1=tự động, 0=mới bắt đầu, 1=trung cấp, 2=nâng cao, 3=chuyên gia, 4=tech-lead, 5=thần)",fieldStatusline:"Chế độ thanh trạng thái",fieldStatuslineDesc:"Lượng thông tin hiển thị trên thanh trạng thái",fieldStatuslineColors:"Màu thanh trạng thái",fieldStatuslineColorsDesc:"Bật màu ANSI trong thanh trạng thái",fieldStatuslineQuota:"Hiển thị Quota Statusline",fieldStatuslineQuotaDesc:"Hiển thị các nhãn quota 5h / wk trong statusline",fieldThinkingLanguage:"Ngôn ngữ suy nghĩ",fieldThinkingLanguageDesc:"Ngôn ngữ cho suy luận nội bộ của Claude (null=Tiếng Anh)",fieldResponseLanguage:"Ngôn ngữ phản hồi",fieldResponseLanguageDesc:"Ngôn ngữ cho phản hồi của Claude (null=theo người dùng)",fieldDocsPath:"Thư mục tài liệu",fieldDocsPathDesc:"Đường dẫn đến thư mục tài liệu",fieldPlansPath:"Thư mục kế hoạch",fieldPlansPathDesc:"Đường dẫn đến thư mục kế hoạch",fieldGlobalPlansPath:"Thư mục kế hoạch toàn cục",fieldGlobalPlansPathDesc:"Đường dẫn đến thư mục kế hoạch toàn cục",fieldPrivacyBlock:"Chặn quyền riêng tư",fieldPrivacyBlockDesc:"Chặn truy cập file nhạy cảm (.env, credentials)",fieldTrustEnabled:"Chế độ tin cậy",fieldTrustEnabledDesc:"Tự động phê duyệt các tool calls",fieldTrustPassphrase:"Mật khẩu tin cậy",fieldTrustPassphraseDesc:"Mật khẩu để bật chế độ tin cậy",fieldProjectType:"Loại dự án",fieldProjectTypeDesc:"Ghi đè loại dự án tự động phát hiện",fieldPackageManager:"Trình quản lý gói",fieldPackageManagerDesc:"Ghi đè trình quản lý gói tự động phát hiện",fieldFramework:"Framework",fieldFrameworkDesc:"Ghi đè framework tự động phát hiện",fieldGeminiModel:"Mô hình Gemini",fieldGeminiModelDesc:"Mô hình Gemini cho các lệnh CLI; id gemini-3.0-* cũ sẽ tự động ánh xạ",geminiModel25Flash:"Gemini 2.5 Flash — Mọi tài khoản",geminiModel25Pro:"Gemini 2.5 Pro — Có thể bị giới hạn dung lượng",geminiModel3FlashPreview:"Gemini 3 Flash Preview — Chỉ Pro/Ultra",geminiModel3ProPreview:"Gemini 3 Pro Preview — Chỉ Pro/Ultra",fieldResearchUseGemini:"Dùng Gemini cho nghiên cứu",fieldResearchUseGeminiDesc:"Dùng Gemini CLI thay vì WebSearch",fieldDocsMaxLoc:"Số dòng tối đa/tài liệu",fieldDocsMaxLocDesc:"Số dòng code tối đa cho mỗi file tài liệu",fieldPlanNamingFormat:"Định dạng tên kế hoạch",fieldPlanNamingFormatDesc:"Định dạng cho tên thư mục kế hoạch",fieldPlanDateFormat:"Định dạng ngày kế hoạch",fieldPlanDateFormatDesc:"Định dạng ngày cho tên kế hoạch (moment.js)",fieldPlanValidationMode:"Chế độ xác thực",fieldPlanValidationModeDesc:"Cách xác thực kế hoạch trước khi triển khai",fieldPlanMinQuestions:"Số câu hỏi tối thiểu",fieldPlanMinQuestionsDesc:"Số câu hỏi xác thực tối thiểu",fieldPlanMaxQuestions:"Số câu hỏi tối đa",fieldPlanMaxQuestionsDesc:"Số câu hỏi xác thực tối đa",fieldAssertions:"Assertions",fieldAssertionsDesc:"Các assertions và quy tắc cần thực thi",fieldHookSessionInit:"Khởi tạo phiên",fieldHookSessionInitDesc:"Phát hiện dự án và thiết lập môi trường",fieldHookSubagentInit:"Khởi tạo subagent",fieldHookSubagentInitDesc:"Inject context vào subagents",fieldHookSessionState:"Trạng thái phiên",fieldHookSessionStateDesc:"Lưu trạng thái phiên cho bàn giao và statusline",fieldHookCookAfterPlanReminder:"Nhắc cook sau plan",fieldHookCookAfterPlanReminderDesc:"Nhắc agent tiếp tục triển khai sau khi lập kế hoạch",fieldHookDescriptiveName:"Tên mô tả",fieldHookDescriptiveNameDesc:"Bắt buộc đặt tên file dạng kebab-case mô tả cho scripts",fieldHookDevRulesReminder:"Nhắc nhở quy tắc dev",fieldHookDevRulesReminderDesc:"Inject context quy tắc phát triển",fieldHookPlanFormatKanban:"Định dạng kanban plan",fieldHookPlanFormatKanbanDesc:"Đồng bộ metadata kanban của plan sau khi chỉnh sửa",fieldHookUsageQuotaCacheRefresh:"Cache hạn mức sử dụng",fieldHookUsageQuotaCacheRefreshDesc:"Làm mới cache thông tin hạn mức sử dụng",fieldHookUsageContextAwareness:"Nhận thức sử dụng cho prompt",fieldHookUsageContextAwarenessDesc:"Inject nhận thức giới hạn sử dụng vào prompt",fieldHookContextTracking:"Theo dõi ngữ cảnh",fieldHookContextTrackingDesc:"Theo dõi cửa sổ ngữ cảnh (% đã dùng, số token)",fieldHookScoutBlock:"Chặn Scout",fieldHookScoutBlockDesc:"Chặn thư mục nặng khỏi việc khám phá",fieldHookPrivacyBlock:"Hook chặn quyền riêng tư",fieldHookPrivacyBlockDesc:"Chặn đọc file nhạy cảm",fieldHookSimplifyGate:"Cổng đơn giản hóa",fieldHookSimplifyGateDesc:"Hook UserPromptSubmit — opt-in. Khi bật (simplify.gate.enabled=true), chặn cứng ship/merge/pr/deploy/publish và cảnh báo nhẹ commit/finalize/release khi diff vượt ngưỡng.",sectionSimplify:"Cổng đơn giản hóa",fieldSimplifyThresholdLocDelta:"Ngưỡng tổng LOC",fieldSimplifyThresholdLocDeltaDesc:"Tổng LOC thay đổi (toàn bộ file) vượt ngưỡng này thì cổng kích hoạt.",fieldSimplifyThresholdFileCount:"Ngưỡng số file",fieldSimplifyThresholdFileCountDesc:"Số file thay đổi vượt ngưỡng này thì cổng kích hoạt.",fieldSimplifyThresholdSingleFileLoc:"Ngưỡng LOC mỗi file",fieldSimplifyThresholdSingleFileLocDesc:"LOC thay đổi trong một file vượt ngưỡng này thì cổng kích hoạt.",fieldSimplifyGateEnabled:"Bật",fieldSimplifyGateEnabledDesc:"Công tắc chính. Tắt mặc định (opt-in). Bật để kích hoạt cổng; env NK_SIMPLIFY_DISABLED=1 luôn bỏ qua.",fieldSimplifyGateHardVerbs:"Động từ chặn cứng",fieldSimplifyGateHardVerbsDesc:"Động từ chặn cứng khi vượt ngưỡng.",fieldSimplifyGateSoftVerbs:"Động từ cảnh báo nhẹ",fieldSimplifyGateSoftVerbsDesc:"Động từ phát cảnh báo không chặn.",sectionUpdatePipeline:"Pipeline Cập nhật",fieldAutoInitAfterUpdate:"Tự động Init sau Update",fieldAutoInitAfterUpdateDesc:"Tự động chạy nk init sau nk update khi kit có phiên bản mới",fieldAutoMigrateAfterUpdate:"Tự động Migrate sau Update",fieldAutoMigrateAfterUpdateDesc:"Tự động chạy nk migrate sau nk update (độc lập với init)",fieldMigrateProviders:"Provider Migrate",fieldMigrateProvidersDesc:"Provider nào tự động migrate. Dùng 'auto' để quét hệ thống hoặc danh sách phân cách bằng dấu phẩy.",skillsPageTitle:"Quản lý Kỹ năng",skillsPageDesc:"Cài đặt kỹ năng NineKit cho các agent lập trình",availableSkills:"Kỹ năng có sẵn",installedSkills:"Kỹ năng đã cài",noSkillsFound:"Không tìm thấy kỹ năng",installSkill:"Cài đặt",uninstallSkill:"Gỡ cài đặt",manageSkill:"Quản lý",syncRegistry:"Đồng bộ",installSkillTitle:"Cài đặt Kỹ năng",selectAgents:"Chọn agent đích",installLocation:"Vị trí cài đặt",globalInstall:"Toàn cục",projectInstall:"Dự án",confirmInstall:"Cài đặt cho các agent đã chọn",installingSkill:"Đang cài đặt...",skillInstallSuccess:"Cài đặt kỹ năng thành công",skillInstallFailed:"Cài đặt thất bại",agentClaudeCode:"Claude Code",agentCursor:"Cursor",agentCodex:"Codex",agentOpencode:"OpenCode",agentGoose:"Goose",agentGeminiCli:"Gemini CLI",agentAntigravity:"Antigravity",agentGithubCopilot:"GitHub Copilot",agentAmp:"Amp",agentKilo:"Kilo",agentRoo:"Roo",agentWindsurf:"Windsurf",agentCline:"Cline",agentOpenhands:"OpenHands",installed:"Đã cài",notInstalled:"Chưa cài",allAgents:"Tất cả Agent",filterByAgent:"Lọc theo agent",skillsTitle:"Kỹ năng",skillsSubtitle:"Duyệt, cài đặt và quản lý kỹ năng cho coding agents",availableCount:"Có sẵn",installedCount:"Đã cài",agentsCount:"Agents",searchSkills:"Tìm kiếm kỹ năng...",searchShortcut:"/",sortAZ:"A-Z",sortCategory:"Danh mục",sortInstalledFirst:"Đã cài trước",listView:"Dạng danh sách",gridView:"Dạng lưới",categoryAll:"Tất cả",categoryAI:"AI",categoryUIUX:"UI/UX",categoryBackend:"Backend",categorySecurity:"Bảo mật",categoryDevOps:"DevOps",categoryDatabase:"Cơ sở dữ liệu",categoryDevelopment:"Phát triển",categoryResearch:"Nghiên cứu",categoryGeneral:"Tổng quát",categoryCore:"Cốt lõi",categoryDocumentation:"Tài liệu",categoryTooling:"Công cụ",categoryMedia:"Phương tiện",categoryFrameworks:"Framework",skillsCountLabel:"{count} kỹ năng",installToAll:"Cài cho tất cả đã phát hiện",scopeLabel:"Phạm vi cài đặt",agentInstalled:"Đã cài",agentNotInstalled:"Chưa cài",skillSource:"Vị trí nguồn",skillSourceBadge:"Nguồn",detailPanelClose:"Đóng",versionLabel:"v{version}",installAllToAllAgents:"Cài tất cả cho tất cả Agent",bulkInstallFailed:"Cài hàng loạt thất bại",noAgentsDetected:"Không phát hiện agent nào",kitBadgeEngineer:"Engineer",kitBadgeMarketing:"Marketing",customizedBadge:"Đã tùy chỉnh",installedVersionLabel:"Phiên bản cài đặt",installedAtLabel:"Cài đặt lúc",sourceTimestampLabel:"Ngày nguồn",kitLabel:"Kit",skillMetadata:"Thông tin Skill",migrate:"Di trú",migrateTitle:"Di trú",migrateSubtitle:"Chuyển toàn bộ stack Claude Code sang provider khác",migrateDetectedProviders:"Đã phát hiện",migrateSelectedProviders:"Đã chọn",migrateDiscovering:"Đang quét nguồn di trú...",migrateRefresh:"Làm mới quét",migrateRun:"Chạy di trú",migrateRunning:"Đang di trú...",migrateSourceSummary:"Tổng quan nguồn",migratePresetCodex:"Codex",migratePresetAntigravity:"Antigravity",migratePresetCore:"Codex + Antigravity + Droid",migratePresetDetected:"Tất cả đã phát hiện",migrateScope:"Phạm vi",migrateScopeProject:"Dự án",migrateScopeGlobal:"Toàn cục",migrateTypes:"Loại di trú",migrateTypeAgents:"Subagents",migrateTypeCommands:"Commands",migrateTypeSkills:"Skills",migrateTypeConfig:"Config",migrateTypeRules:"Rules",migrateTypeHooks:"Hooks",migrateSearchProviders:"Tìm provider...",migrateSelectVisible:"Chọn phần đang hiện",migrateClearSelection:"Bỏ chọn tất cả",migrateProvidersHeading:"Provider đích",migrateProvidersCountSuffix:"provider",migrateNoProvidersMatch:"Không có provider khớp bộ lọc hiện tại.",migrateSelectButton:"Chọn",migrateSelectedButton:"Đã chọn",migrateSelectProviderAction:"Chọn provider",migrateUnselectProvider:"Bỏ chọn provider",migrateCapabilitiesLabel:"loại",migrateCapabilitiesSection:"Ma trận khả năng",migrateSupported:"Hỗ trợ",migrateUnsupportedShort:"Không hỗ trợ",migrateIncludedEnabled:"Đang bật",migrateIncludedDisabled:"Đang tắt",migrateLatestTarget:"Đích gần nhất",migrateNoResultForProvider:"Chưa có kết quả di trú cho provider này.",migrateActionSummaryTitle:"Sẵn sàng di trú",migrateGlobalOnlyCommandsShort:"Commands chỉ hỗ trợ global",migrateNoProviders:"Không có provider khả dụng.",migrateUnsupported:"Sẽ bỏ qua (không hỗ trợ)",migrateGlobalForced:"Provider đã chọn chỉ hỗ trợ command ở global scope. Chọn Global để cài.",migrateResults:"Kết quả di trú",migrateInstalled:"Đã cài",migrateSkipped:"Đã bỏ qua",migrateFailed:"Lỗi",migrateProvider:"Provider",migrateStatus:"Trạng thái",migratePath:"Đường dẫn",migrateError:"Lỗi",migrateStatusInstalled:"Đã cài",migrateStatusSkipped:"Đã bỏ qua",migrateStatusFailed:"Lỗi",migrateNoResults:"Chưa có kết quả di trú.",migrateDetectFailed:"Không thể quét dữ liệu di trú",migrateExecuteFailed:"Chạy di trú thất bại",migrateSelectProvider:"Vui lòng chọn ít nhất một provider",migrateNoTypesEnabled:"Bật ít nhất một loại di trú",migrateDetectedTag:"Đã phát hiện",migrateNotDetectedTag:"Chưa phát hiện",migrateFilterRecommended:"Đề xuất",migrateActionInstall:"Cài",migrateActionUpdate:"Cập nhật",migrateActionSkip:"Bỏ qua",migrateActionConflict:"Xung đột",migrateActionDelete:"Xóa",migrateUnchanged:"chưa thay đổi",migrateConflictSectionTitle:"Xung đột",migrateConflictUseCK:"Dùng NK",migrateConflictKeepMine:"Giữ của tôi",migrateConflictSmartMerge:"Merge thông minh",migrateConflictShowDiff:"Hiện diff",migrateConflictHideDiff:"Ẩn diff",migrateConflictResolved:"Đã giải quyết",migrateConflictManual:"Thủ công",migrateConflictOverwriteAll:"Ghi đè tất cả",migrateConflictKeepAll:"Giữ tất cả",migrateSummaryTitle:"Di trú hoàn tất",migrateSummaryNewMigration:"Di trú mới",migrateType:"Loại",migrateItem:"Mục",migrateReconciling:"Đang phân tích thay đổi...",migrateReviewPlan:"Xem kế hoạch",migrateExecutePlan:"Thực hiện di trú",migrateExecuting:"Đang thực hiện di trú...",migrateResolveConflicts:"Giải quyết xung đột trước khi thực hiện",migrateReason_newItem:"Mục mới từ provider",migrateReason_newProviderForItem:"Provider mới cho mục này",migrateReason_targetDeletedSourceChanged:"Đích đã xóa nhưng nguồn có thay đổi mới",migrateReason_targetDirEmptyReinstall:"Thư mục đích trống — cài lại",migrateReason_forceReinstall:"Yêu cầu cài lại bắt buộc",migrateReason_forceOverwrite:"Ghi đè bắt buộc (bạn đã chỉnh sửa, --force đang bật)",migrateReason_registryUpgradeReinstall:"Nâng cấp registry yêu cầu cài lại",migrateReason_sourceChanged:"Nguồn đã được cập nhật",migrateReason_registryUpgradeHeal:"Sửa đích cũ sau nâng cấp registry",migrateReason_noChanges:"Không phát hiện thay đổi",migrateReason_userEditsPreserved:"Giữ nguyên chỉnh sửa của người dùng",migrateReason_userDeletedRespected:"Tôn trọng việc xóa của người dùng",migrateReason_targetUpToDateBackfill:"Đích đã cập nhật",migrateReason_providerChecksumUnavailable:"Không có checksum provider",migrateReason_targetStateUnknown:"Không xác định được trạng thái đích",migrateReason_sourceRemovedOrphan:"Nguồn đã xóa — dọn dẹp orphan",migrateReason_renamedCleanup:"Mục đã đổi tên — xóa đường dẫn cũ",migrateReason_pathMigratedCleanup:"Đường dẫn đã di chuyển — xóa vị trí cũ",migrateReason_bothChanged:"Cả nguồn và đích đều có thay đổi",migrateReason_targetStateUnknownSourceChanged:"Nguồn thay đổi nhưng trạng thái đích không rõ",migrateBanner_emptyDir_title:"Phát hiện thư mục trống",migrateBanner_emptyDir_body:"mục bên dưới sẽ được cài lại. Bỏ chọn để bỏ qua.",migrateBanner_emptyDirRespected_title:"Tôn trọng việc xóa của bạn",migrateBanner_emptyDirRespected_body:"đang trống. Tôn trọng việc xóa của bạn.",migrateBanner_reinstallCta:"Cài lại các mục này",migrateModeLabel:"Chế độ di chuyển",migrateModeReconcile:"Đồng bộ",migrateModeReconcileDesc:"Phát hiện thay đổi thông minh",migrateModeInstall:"Cài đặt",migrateModeInstallDesc:"Chọn mục để cài",migrateModeConfirmTitle:"Chuyển chế độ?",migrateModeConfirmBody:"Bạn có {count} thay đổi chờ xử lý. Chuyển sang chế độ {mode} sẽ hủy chúng.",migrateModeConfirmSwitch:"Chuyển & hủy",migrateSmartDefaultInstall:"Phát hiện cài đặt mới — mặc định chế độ Cài đặt",migrateSmartDefaultReconcile:"Đã có registry — mặc định chế độ Đồng bộ",migrateInstallSelectAll:"Chọn tất cả",migrateInstallDeselectAll:"Bỏ chọn tất cả",migrateInstallDirItem:"thư mục",migrateInstallAlreadyInstalled:"đã cài",migrateInstallNoCandidates:"Không tìm thấy mục cài đặt nào cho provider đã chọn.",migrateInstallSelectedCount:"Đã chọn {count} / {total} mục",migrateInstallCta:"Cài {count} mục đã chọn",migrateInstallInstalling:"Đang cài...",migrateInstallLoadingCandidates:"Đang tải danh sách mục...",migrateFlip_moveToSkip:"Chuyển sang Bỏ qua",migrateFlip_moveToInstall:"Chuyển sang Cài",migrateFlip_checkAll:"Chọn tất cả",migrateFlip_uncheckAll:"Bỏ chọn tất cả",migrateFlip_toggleItem:"Bật/tắt mục",migrateConflictBanner_title:"Phát hiện xung đột",migrateConflictBanner_cta:"Mở trình giải quyết xung đột",migrateConflictBanner_hide:"Ẩn trình giải quyết xung đột",migrateShowSkippedItems:"Hiện mục đã bỏ qua",migrateHideSkippedItems:"Ẩn mục đã bỏ qua",migrateConflictBadge:"Xung đột",migrateSummarySubtitle:"mục đã di trú",migrateSummarySearchPlaceholder:"Tìm kiếm...",migrateSummaryFilterAll:"Tất cả",migrateSummaryCollapseAll:"Thu gọn",migrateSummaryExpandAll:"Mở rộng",migrateSummaryNoResults:"Không tìm thấy mục nào",migrateSummaryProviders:"Provider",migrateTypeUnknown:"Khác",kanbanTitle:"Bảng Kanban Kế hoạch",kanbanNoFile:"Chưa chọn file kế hoạch. Dùng tham số ?file=.",kanbanNoPhases:"Không phát hiện giai đoạn nào trong kế hoạch này",kanbanError400:"Yêu cầu không hợp lệ — thiếu tham số file",kanbanError403:"Truy cập bị từ chối — file nằm ngoài thư mục dự án",kanbanError404:"Không tìm thấy file kế hoạch",kanbanComplete:"hoàn thành",kanbanStatus_pending:"Chờ xử lý","kanbanStatus_in-progress":"Đang thực hiện",kanbanStatus_completed:"Hoàn thành",kanbanPhases:"giai đoạn",kanbanProgress:"Tiến độ",kanbanLoadError:"Không thể tải dữ liệu kế hoạch",plansNav:"Kế hoạch",plansTitle:"Bảng điều khiển kế hoạch",plansGlobalTitle:"Tất cả dự án",plansSubtitle:"Xem mọi kế hoạch đang hoạt động, timeline giai đoạn và thao tác nhanh trong một nơi.",plansEmpty:"Không tìm thấy kế hoạch",plansSearch:"Tìm kế hoạch...",plansProjectFilter:"Lọc theo dự án",plansAllProjects:"Tất cả dự án",plansSortBy:"Sắp xếp theo",plansViewGrid:"Lưới",plansViewKanban:"Kanban",plansFilterAll:"Tất cả trạng thái",plansSortDateDesc:"Mới nhất",plansSortDateAsc:"Cũ nhất",plansSortNameAsc:"Tên A-Z",plansSortNameDesc:"Tên Z-A",plansSortProgress:"Tiến độ cao nhất",plansLabel:"Kế hoạch",plansStatusPending:"Chờ xử lý",plansStatusInProgress:"Đang thực hiện",plansStatusInReview:"Đang rà soát",plansStatusDone:"Hoàn tất",plansStatusCancelled:"Đã huỷ",plansCompletedCount:"{count} hoàn thành",plansProjectPlans:"{count} kế hoạch",plansProjectLoadIssues:"Một số dự án không thể quét",plansStatusUnknown:"Chưa rõ",plansBackToPlans:"Quay lại danh sách kế hoạch",plansBackToPlan:"Quay lại kế hoạch",plansPrevious:"Trước",plansNext:"Sau",plansContents:"Mục lục",plansValidate:"Kiểm tra",plansStartNext:"Bắt đầu tiếp theo",plansRestart:"Bắt đầu lại",plansStart:"Bắt đầu",plansComplete:"Hoàn thành",plansReset:"Đặt lại",plansTimeline:"Timeline",plansActivity:"Hoạt động",plansActivitySubtitle:"12 tuần gần đây",plansActivityCombined:"Tổng hợp",plansActivityCommits:"Commit",plansActivityFiles:"Tệp",plansActivityEmpty:"Chưa có dữ liệu hoạt động.",plansHeatmapLoadError:"Không thể tải heatmap hoạt động.",plansHeatmapChanges:"{date} • {count} thay đổi",plansRead:"Đọc",plansPhases:"Giai đoạn",plansPhase:"Giai đoạn",plansPhaseCountCompact:"GD-{count}",plansKanbanEmpty:"Trống",plansLoadingPlan:"Đang tải kế hoạch...",plansLoadingReader:"Đang tải tài liệu...",plansLoadPlanFailed:"Không thể tải kế hoạch ({status})",plansLoadPlanFallback:"Không thể tải kế hoạch",plansLoadFileFailed:"Không thể tải tài liệu ({status})",plansLoadFileFallback:"Không thể tải tài liệu",plansProgressComplete:"Hoàn thành {count}%",plansPhaseCount:"{count} giai đoạn",plansPriority:"Ưu tiên",plansUpdated:"Cập nhật",plansLastUpdated:"Cập nhật lần cuối",plansPriorityLabel:"Ưu tiên {value}",plansUpdatedLabel:"Cập nhật {value}",plansTimelineAvgDays:"Trung bình {count} ngày",plansNoEffort:"Chưa có effort",plansNotFound:"Không tìm thấy kế hoạch",plansQuickInfoTitle:"Tổng quan kế hoạch",plansQuickInfoDescription:"Dùng chế độ xem này để theo dõi tiến độ giai đoạn, phạm vi timeline và hoạt động gần đây của kế hoạch.",plansCurrentStatus:"Trạng thái hiện tại",plansHeatmapMon:"T Hai",plansHeatmapWed:"T Tư",plansHeatmapFri:"T Sáu",developmentFeature:"Đang phát triển",betaFeature:"Beta",experimentalFeature:"Thử nghiệm",sectionModelTaxonomy:"Phân loại mô hình",taxonomyDescription:"Tuỳ chỉnh ánh xạ mô hình cho migration portable sang coding agent khác.",taxonomyTierHeavy:"Nặng (opus)",taxonomyTierBalanced:"Cân bằng (sonnet)",taxonomyTierLight:"Nhẹ (haiku)",taxonomyModel:"Mô hình",taxonomyEffort:"Mức nỗ lực",taxonomyResetProvider:"Đặt lại",taxonomyTier:"Cấp độ",statuslineBuilder:"Trình tạo dòng trạng thái",statuslineBuilderDescription:"Thiết kế bố cục dòng trạng thái bằng kéo và thả",statuslineSections:"Các mục",statuslinePreview:"Xem trước",statuslineTheme:"Giao diện màu sắc",statuslineSettings:"Cài đặt chung",statuslineResetDefaults:"Đặt lại mặc định",statuslineSave:"Lưu",statuslineBaseMode:"Chế độ cơ bản",statuslineBreakpoint:"Điểm ngắt responsive",statuslineMaxAgents:"Số agent tối đa",statuslineTodoTruncation:"Cắt ngắn task",statuslineEnable:"Bật",statuslineDisable:"Tắt",statuslineDragHint:"Kéo để thay đổi thứ tự, bật/tắt từng mục",statuslinePresetDefault:"Mặc định",statuslinePresetMonochrome:"Đơn sắc",statuslinePresetSolarized:"Solarized",statuslinePresetNord:"Nord",statuslinePresetDracula:"Dracula",statuslinePresetCatppuccin:"Catppuccin",statuslinePresetGruvbox:"Gruvbox",statuslinePresetTokyoNight:"Tokyo Night",statuslinePresetRosePine:"Rosé Pine",statuslinePresetOneDark:"One Dark",statuslinePresetAyu:"Ayu",statuslinePresetKanagawa:"Kanagawa",statuslinePresetStealth:"Ẩn mình",statuslinePresetHacker:"Hacker",statuslineSaved:"Đã lưu thành công",statuslineSaveError:"Lưu thất bại",statusline:"Dòng trạng thái",statuslineCollapseSettings:"Thu gọn cài đặt",statuslineExpandSettings:"Mở rộng cài đặt",statuslineIconOverride:"Ghi đè biểu tượng",statuslineLabelOverride:"Ghi đè nhãn",statuslineMaxWidth:"Chiều rộng tối đa (ký tự)",statuslineIconPlaceholder:"vd. 🤖",statuslineMaxWidthPlaceholder:"tự động",statuslineCustomColors:"Màu tùy chỉnh",statuslineColorContextGroup:"Cửa sổ ngữ cảnh",statuslineColorQuotaGroup:"Hạn mức sử dụng",statuslineColorGeneralGroup:"Chung",statuslineColorSectionGroup:"Màu từng mục",statuslineColorContextLow:"Thấp (<50%)",statuslineColorContextMid:"Trung (50-75%)",statuslineColorContextHigh:"Cao (>75%)",statuslineColorAccent:"Nhấn mạnh",statuslineColorMuted:"Giảm nhạt",statuslineColorSeparator:"Dấu phân cách",statuslineModeFullDesc:"Hiển thị tất cả các mục",statuslineModeCompactDesc:"Hiển thị thu gọn",statuslineModeMinimalDesc:"Chỉ thông tin cần thiết",statuslineModeNoneDesc:"Đã tắt",statuslinePreviewTitle:"Claude Code — xem trước dòng trạng thái",statuslinePreviewEmptyLine:"(dòng trống)",statuslinePreviewNoLines:"(chưa cấu hình dòng nào)",statuslineSectionModelLabel:"Mô hình",statuslineSectionContextLabel:"Cửa sổ ngữ cảnh",statuslineSectionQuotaLabel:"Hạn mức sử dụng",statuslineSectionDirectoryLabel:"Thư mục",statuslineSectionGitLabel:"Trạng thái Git",statuslineSectionCostLabel:"Chi phí",statuslineSectionChangesLabel:"Thay đổi",statuslineSectionAgentsLabel:"Agents",statuslineSectionTodosLabel:"Nhiệm vụ",statuslineSectionModelDesc:"Tên mô hình AI và nhà cung cấp",statuslineSectionContextDesc:"Thanh sử dụng cửa sổ ngữ cảnh",statuslineSectionQuotaDesc:"Hạn mức sử dụng 5 giờ và hàng tuần",statuslineSectionDirectoryDesc:"Thư mục làm việc hiện tại",statuslineSectionGitDesc:"Nhánh Git, thay đổi đã/chưa staged",statuslineSectionCostDesc:"Ước tính chi phí phiên",statuslineSectionChangesDesc:"Dòng thêm và xóa",statuslineSectionAgentsDesc:"Hoạt động agent gần đây",statuslineSectionTodosDesc:"Tiến độ tác vụ hiện tại",statuslineSectionsVisible:"mục hiển thị",statuslineLoadErrorSaveDisabled:"Không thể tải bố cục đã lưu. Tính năng lưu đã bị tắt để tránh mất dữ liệu.",statuslineAddLine:"Thêm dòng",statuslineRemoveLine:"Xóa",statuslineHiddenSections:"Mục ẩn",statuslineDragToLine:"Kéo mục vào dòng để hiển thị",statuslineQuotaLow:"Hạn mức thấp",statuslineQuotaHigh:"Hạn mức cao",statuslineLine:"Dòng",sessionsTitle:"Phiên làm việc",sessionDetail:"Chi tiết phiên",sessionMessages:"tin nhắn",sessionToolCalls:"lệnh gọi",sessionDuration:"Thời lượng",noSessionsData:"Không tìm thấy phiên",sessionReadOnly:"Chế độ chỉ xem",sessionLastActive:"Hoạt động lần cuối",sessionProjectSessions:"Phiên dự án",sessionBack:"Quay lại",sessionLoading:"Đang tải...",sessionError:"Tải thất bại",sessionCount:"phiên",sessionToolInput:"Đầu vào",sessionToolResult:"Kết quả",sessionToolsUsed:"Công cụ đã dùng",sessionSystemContext:"Ngữ cảnh hệ thống",sessionExpandAll:"Mở rộng tất cả",sessionCollapseAll:"Thu gọn tất cả",sessionNoContent:"Không có nội dung",sessionUser:"Người dùng",sessionAssistant:"Trợ lý",sessionThinking:"Đang suy nghĩ...",sessionSearchPlaceholder:"Tìm trong hội thoại...",sessionSearchResults:"kết quả",sessionNoResults:"Không tìm thấy",sessionGroupMessages:"tin nhắn",palettePlaceholder:"Tìm agents, lệnh, skills...",paletteNoResults:"Không tìm thấy kết quả",paletteAgents:"Agents",paletteCommands:"Lệnh",paletteSkills:"Skills",paletteProjects:"Dự án",paletteNavigation:"Điều hướng",skillsBrowser:"Skills",skillsCount:"{count} skills",skillDetail:"Chi tiết Skill",searchSkillsBrowserPlaceholder:"Tìm skills...",noSkillsBrowserFound:"Không tìm thấy skill",backToSkillsBrowser:"Quay lại Skills",skillTriggers:"Kích hoạt",skillLocal:"Cục bộ",skillGithub:"GitHub",systemNavLabel:"Hệ thống",dashboardTitle:"Bảng điều khiển",dashboardAgents:"Agents",dashboardCommands:"Lệnh",dashboardSkills:"Skills",dashboardMcpServers:"MCP Servers",configured:"Đã cấu hình",available:"Có sẵn",modelDistribution:"Phân bổ Model",recentAgents:"Agents gần đây",suggestionsTitle:"Gợi ý",acrossAgents:"trên {count} agents",noAgentsConfigured:"Chưa có agents trong ~/.claude/agents/",mcpTitle:"MCP Servers",mcpServerName:"Server",mcpCommand:"Lệnh",mcpArgs:"Tham số",mcpSource:"Nguồn",mcpStatus:"Trạng thái",mcpConfigured:"Đã cấu hình",mcpNoServers:"Chưa cấu hình MCP server",mcpSourceSettings:"settings.json",mcpSourceMcpJson:".mcp.json",mcpSourceProject:"Dự án",mcpToolCount:"Công cụ",agentsBrowser:"Agents",agentsBrowserCount:"{count} agents",filterAll:"Tất cả",agentDetail:"Chi tiết Agent",agentInstructions:"Hướng dẫn",agentFrontmatter:"Cấu hình",searchAgentsPlaceholder:"Tìm agents...",noAgentsFound:"Không tìm thấy agent",backToAgents:"Quay lại Agents",commandsBrowser:"Lệnh",commandsCount:"{count} lệnh",commandDetail:"Chi tiết lệnh",searchCommandsPlaceholder:"Tìm lệnh...",noCommandsFound:"Không tìm thấy lệnh",backToCommands:"Quay lại Lệnh",rootCommands:"Gốc",selectToView:"Chọn mục để xem chi tiết",indexingFrom:"Lấy từ",workflowsTitle:"Quy trình",workflowsSubtitle:"Tìm hiểu NineKit thông qua hình ảnh hóa quy trình tương tác.",workflowsCredit:"Dữ liệu quy trình và giao diện được lấy cảm hứng từ",workflowImplementationRecipe:"Công thức triển khai",workflowSearchPlaceholder:"Tìm quy trình...",workflowNoResults:"Không tìm thấy quy trình",loadingWorkflows:"Đang tải quy trình...",workflowCategoryAll:"Tất cả",workflowCategoryGettingStarted:"Bắt đầu",workflowCategoryDesignFrontend:"Thiết kế & Frontend",workflowCategoryDebuggingFixes:"Xóa lỗi & Kiểm thử",workflowCategoryPlanningReview:"Lập kế hoạch & Đánh giá",workflowCategoryResearchDocs:"Nghiên cứu & Tài liệu",workflowCategoryShipping:"Triển khai",workflowCategoryBackendInfra:"Backend & Hạ tầng",workflowCategoryMediaCreative:"Truyền thông & Sáng tạo",workflowCategoryAdvanced:"Nâng cao",workflowComplexityBeginner:"Cơ bản",workflowComplexityIntermediate:"Trung bình",workflowComplexityAdvanced:"Nâng cao",workflowBuildFeature:"Xây dựng tính năng mới",workflowBuildFeatureDesc:"Thêm chức năng mới vào ứng dụng một cách hệ thống.",workflowQuickImplementation:"Triển khai nhanh",workflowQuickImplementationDesc:"Triển khai nhanh chóng các tính năng nhỏ gọn.",workflowStartNewProject:"Bắt đầu dự án mới",workflowStartNewProjectDesc:"Tạo lập một dự án mới hoàn toàn với nền tảng tiêu chuẩn.",workflowFrontendDesign:"Thiết kế Frontend",workflowFrontendDesignDesc:"Tạo giao diện người dùng dựa trên nguyên tắc thẩm mỹ cao.",workflowAiDesignStitch:"Thiết kế bằng AI Stitch",workflowAiDesignStitchDesc:"Điều khiển Google Stitch để tạo bản thiết kế từ văn bản.",workflowExcalidraw:"Bản vẽ Excalidraw",workflowExcalidrawDesc:"Diễn họa kiến trúc hoạt động sử dụng Excalidraw JSON.",workflowFixBug:"Sửa lỗi (Fix Bug)",workflowFixBugDesc:"Xác định nguyên nhân gốc rễ và tự động sửa các lỗi trong mã nguồn.",workflowSecurityAudit:"Kiểm toán Bảo mật",workflowSecurityAuditDesc:"Kiểm tra bảo mật toàn diện trên kho ứng dụng.",workflowTestScenarios:"Tình huống thử nghiệm",workflowTestScenariosDesc:"Tạo các trường hợp biên và tình huống thử nghiệm tính năng con.",workflowStride:"Phân tích STRIDE",workflowStrideDesc:"Thực hiện mô hình hóa và phân tích rủi ro bảo mật theo chuẩn STRIDE.",workflowCodeReview:"Code Review",workflowCodeReviewDesc:"Đánh giá chất lượng mã nguồn một cách kỹ lưỡng.",workflowPlanValidate:"Lập Kế hoạch + Kiểm chứng",workflowPlanValidateDesc:"Lập bản thảo thiết kế kiến trúc và đánh giá tính khả thi kỹ thuật.",workflowAdversarialReview:"Đánh giá Đối kháng",workflowAdversarialReviewDesc:"Kích hoạt chức năng đánh giá mức độ rủi ro hệ thống.",workflowAutoresearch:"Vòng lặp tự động (Autoloop)",workflowAutoresearchDesc:"Chạy vòng lặp tối ưu hóa tự động cho bất kỳ chỉ số nào.",workflowXia:"Chuyển giao thuật toán",workflowXiaDesc:"Chuyển giao hoặc tách rời thuật toán từ một kho lưu trữ bên ngoài.",workflowVisualDocumentation:"Diễn họa Tài liệu",workflowVisualDocumentationDesc:"Tạo sơ đồ mô tả logic và kiến trúc trong hệ thống hiện tại.",workflowTechnicalResearch:"Nghiên cứu Kỹ thuật",workflowTechnicalResearchDesc:"Phân tích sâu rộng cho các giải pháp kiến trúc trước khi triển khai.",workflowLlmsTxt:"Tạo cấu trúc llms.txt",workflowLlmsTxtDesc:"Phân tích mã nguồn và sinh tập tin llms.txt tiêu chuẩn.",workflowDevops:"DevOps / Triển khai",workflowDevopsDesc:"Cấu hình Docker, CI/CD và triển khai quy trình nền tảng web.",workflowShip:"Cập bến (Ship Pipeline)",workflowShipDesc:"Hợp nhất, kiểm thử, đánh giá, commit, và tạo Pull Request mới.",workflowDatabaseOps:"Thao tác CSDL",workflowDatabaseOpsDesc:"Tái cấu trúc các pipeline dữ liệu phức tạp tăng cường hiệu năng CSDL.",workflowRemotion:"Remotion Video",workflowRemotionDesc:"Xây dựng chuỗi video code thông qua thư viện Remotion.",workflowShowOff:"Show-Off Demo",workflowShowOffDesc:"Tạo file demo HTML tĩnh và trực quan cho mục đích showcase ứng dụng.",workflowAgentTeams:"Đội ngũ Agents",workflowAgentTeamsDesc:"Sinh các agent song song thực hiện nhiều tác vụ kết nối với nhau.",workflowWorktree:"Worktree Song song",workflowWorktreeDesc:"Cách ly và làm việc đồng thời trên nhiều luồng phát triển bằng worktrees."}},Bp=g.createContext(null),o1="nk-dashboard-lang";function m4(){const t=localStorage.getItem(o1);return t==="en"||t==="vi"?t:navigator.language.startsWith("vi")?"vi":"en"}function g4({children:t}){const[e,n]=g.useState(m4),r=g.useCallback(o=>{localStorage.setItem(o1,o),n(o)},[]),s=g.useCallback(o=>p4[e][o],[e]),i=g.useMemo(()=>({lang:e,setLang:r,t:s}),[e,r,s]);return c.jsx(Bp.Provider,{value:i,children:t})}function te(){const t=g.useContext(Bp);if(!t)throw new Error("useI18n must be used within I18nProvider");return t}class x4 extends g.Component{constructor(){super(...arguments);ug(this,"state",{hasError:!1,error:null})}static getDerivedStateFromError(n){return{hasError:!0,error:n}}componentDidCatch(n,r){console.error("App error:",n,r.componentStack)}render(){if(this.state.hasError){const n=this.state.error?.name==="ServerUnavailableError";return c.jsx(Bp.Consumer,{children:r=>c.jsx("div",{className:"flex h-screen items-center justify-center bg-dash-bg",children:c.jsx("div",{className:"text-center space-y-4 max-w-md px-6",children:n?c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"w-16 h-16 mx-auto rounded-full bg-orange-500/10 border border-orange-500/30 flex items-center justify-center text-3xl",children:"🔌"}),c.jsx("h1",{className:"text-2xl font-bold text-orange-500",children:r?.t("serverNotRunning")??"Server Not Running"}),c.jsx("p",{className:"text-dash-text-secondary",children:r?.t("startServerMessage")??"The Config UI requires the backend server to be running."}),c.jsxs("div",{className:"bg-dash-surface border border-dash-border rounded-lg p-4",children:[c.jsx("p",{className:"text-xs text-dash-text-muted uppercase tracking-widest mb-2 font-bold",children:r?.t("runThisCommand")??"Run this command"}),c.jsx("code",{className:"block text-sm text-dash-accent font-mono bg-dash-bg px-3 py-2 rounded border border-dash-border",children:"nk config"})]}),c.jsx("button",{onClick:()=>window.location.reload(),className:"px-6 py-2 bg-dash-accent text-dash-bg rounded-lg font-bold hover:bg-dash-accent-hover transition-colors",children:r?.t("tryAgain")??"Try Again"})]}):c.jsxs(c.Fragment,{children:[c.jsx("h1",{className:"text-2xl font-bold text-red-500",children:r?.t("somethingWentWrong")??"Something went wrong"}),c.jsx("p",{className:"text-dash-text-muted",children:this.state.error?.message}),c.jsx("button",{onClick:()=>window.location.reload(),className:"px-4 py-2 bg-dash-accent text-white rounded-md hover:opacity-90",children:r?.t("reloadApp")??"Reload App"})]})})})})}return this.props.children}}const Mn=({direction:t="horizontal",isDragging:e=!1,onMouseDown:n})=>{const r=t==="horizontal";return c.jsx("div",{onMouseDown:n,className:`
|
|
22
22
|
group flex items-center justify-center shrink-0
|
|
23
23
|
${r?"w-2 cursor-col-resize":"h-2 cursor-row-resize"}
|
|
24
24
|
${e?"bg-dash-accent/20":"hover:bg-dash-surface-hover/50"}
|
|
@@ -313,7 +313,7 @@ Please change the parent <Route path="${b}"> to <Route path="${b==="/"?"*":`${b}
|
|
|
313
313
|
While dragging, use the arrow keys to move the item.
|
|
314
314
|
Press space again to drop the item in its new position, or press escape to cancel.
|
|
315
315
|
`},l7={onDragStart(t){let{active:e}=t;return"Picked up draggable item "+e.id+"."},onDragOver(t){let{active:e,over:n}=t;return n?"Draggable item "+e.id+" was moved over droppable area "+n.id+".":"Draggable item "+e.id+" is no longer over a droppable area."},onDragEnd(t){let{active:e,over:n}=t;return n?"Draggable item "+e.id+" was dropped over droppable area "+n.id:"Draggable item "+e.id+" was dropped."},onDragCancel(t){let{active:e}=t;return"Dragging was cancelled. Draggable item "+e.id+" was dropped."}};function c7(t){let{announcements:e=l7,container:n,hiddenTextDescribedById:r,screenReaderInstructions:s=a7}=t;const{announce:i,announcement:o}=s7(),a=Nl("DndLiveRegion"),[l,d]=g.useState(!1);if(g.useEffect(()=>{d(!0)},[]),i7(g.useMemo(()=>({onDragStart(h){let{active:f}=h;i(e.onDragStart({active:f}))},onDragMove(h){let{active:f,over:p}=h;e.onDragMove&&i(e.onDragMove({active:f,over:p}))},onDragOver(h){let{active:f,over:p}=h;i(e.onDragOver({active:f,over:p}))},onDragEnd(h){let{active:f,over:p}=h;i(e.onDragEnd({active:f,over:p}))},onDragCancel(h){let{active:f,over:p}=h;i(e.onDragCancel({active:f,over:p}))}}),[i,e])),!l)return null;const u=He.createElement(He.Fragment,null,He.createElement(n7,{id:r,value:s.draggable}),He.createElement(r7,{id:a,announcement:o}));return n?Ns.createPortal(u,n):u}var ft;(function(t){t.DragStart="dragStart",t.DragMove="dragMove",t.DragEnd="dragEnd",t.DragCancel="dragCancel",t.DragOver="dragOver",t.RegisterDroppable="registerDroppable",t.SetDroppableDisabled="setDroppableDisabled",t.UnregisterDroppable="unregisterDroppable"})(ft||(ft={}));function Ed(){}function eb(t,e){return g.useMemo(()=>({sensor:t,options:e??{}}),[t,e])}function d7(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return g.useMemo(()=>[...e].filter(r=>r!=null),[...e])}const Yn=Object.freeze({x:0,y:0});function _k(t,e){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function u7(t,e){const n=Dd(t);if(!n)return"0 0";const r={x:(n.x-e.left)/e.width*100,y:(n.y-e.top)/e.height*100};return r.x+"% "+r.y+"%"}function Fk(t,e){let{data:{value:n}}=t,{data:{value:r}}=e;return n-r}function h7(t,e){let{data:{value:n}}=t,{data:{value:r}}=e;return r-n}function tb(t){let{left:e,top:n,height:r,width:s}=t;return[{x:e,y:n},{x:e+s,y:n},{x:e,y:n+r},{x:e+s,y:n+r}]}function zk(t,e){if(!t||t.length===0)return null;const[n]=t;return n[e]}function nb(t,e,n){return e===void 0&&(e=t.left),n===void 0&&(n=t.top),{x:e+t.width*.5,y:n+t.height*.5}}const f7=t=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=nb(e,e.left,e.top),i=[];for(const o of r){const{id:a}=o,l=n.get(a);if(l){const d=_k(nb(l),s);i.push({id:a,data:{droppableContainer:o,value:d}})}}return i.sort(Fk)},p7=t=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=tb(e),i=[];for(const o of r){const{id:a}=o,l=n.get(a);if(l){const d=tb(l),u=s.reduce((f,p,m)=>f+_k(d[m],p),0),h=Number((u/4).toFixed(4));i.push({id:a,data:{droppableContainer:o,value:h}})}}return i.sort(Fk)};function m7(t,e){const n=Math.max(e.top,t.top),r=Math.max(e.left,t.left),s=Math.min(e.left+e.width,t.left+t.width),i=Math.min(e.top+e.height,t.top+t.height),o=s-r,a=i-n;if(r<s&&n<i){const l=e.width*e.height,d=t.width*t.height,u=o*a,h=u/(l+d-u);return Number(h.toFixed(4))}return 0}const g7=t=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=[];for(const i of r){const{id:o}=i,a=n.get(o);if(a){const l=m7(a,e);l>0&&s.push({id:o,data:{droppableContainer:i,value:l}})}}return s.sort(h7)};function x7(t,e,n){return{...t,scaleX:e&&n?e.width/n.width:1,scaleY:e&&n?e.height/n.height:1}}function Hk(t,e){return t&&e?{x:t.left-e.left,y:t.top-e.top}:Yn}function b7(t){return function(n){for(var r=arguments.length,s=new Array(r>1?r-1:0),i=1;i<r;i++)s[i-1]=arguments[i];return s.reduce((o,a)=>({...o,top:o.top+t*a.y,bottom:o.bottom+t*a.y,left:o.left+t*a.x,right:o.right+t*a.x}),{...n})}}const y7=b7(1);function Vk(t){if(t.startsWith("matrix3d(")){const e=t.slice(9,-1).split(/, /);return{x:+e[12],y:+e[13],scaleX:+e[0],scaleY:+e[5]}}else if(t.startsWith("matrix(")){const e=t.slice(7,-1).split(/, /);return{x:+e[4],y:+e[5],scaleX:+e[0],scaleY:+e[3]}}return null}function v7(t,e,n){const r=Vk(e);if(!r)return t;const{scaleX:s,scaleY:i,x:o,y:a}=r,l=t.left-o-(1-s)*parseFloat(n),d=t.top-a-(1-i)*parseFloat(n.slice(n.indexOf(" ")+1)),u=s?t.width/s:t.width,h=i?t.height/i:t.height;return{width:u,height:h,top:d,right:l+u,bottom:d+h,left:l}}const w7={ignoreTransform:!1};function ro(t,e){e===void 0&&(e=w7);let n=t.getBoundingClientRect();if(e.ignoreTransform){const{transform:d,transformOrigin:u}=Wt(t).getComputedStyle(t);d&&(n=v7(n,d,u))}const{top:r,left:s,width:i,height:o,bottom:a,right:l}=n;return{top:r,left:s,width:i,height:o,bottom:a,right:l}}function rb(t){return ro(t,{ignoreTransform:!0})}function k7(t){const e=t.innerWidth,n=t.innerHeight;return{top:0,left:0,right:e,bottom:n,width:e,height:n}}function S7(t,e){return e===void 0&&(e=Wt(t).getComputedStyle(t)),e.position==="fixed"}function C7(t,e){e===void 0&&(e=Wt(t).getComputedStyle(t));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(s=>{const i=e[s];return typeof i=="string"?n.test(i):!1})}function gu(t,e){const n=[];function r(s){if(e!=null&&n.length>=e||!s)return n;if(Nm(s)&&s.scrollingElement!=null&&!n.includes(s.scrollingElement))return n.push(s.scrollingElement),n;if(!Cl(s)||Ik(s)||n.includes(s))return n;const i=Wt(t).getComputedStyle(s);return s!==t&&C7(s,i)&&n.push(s),S7(s,i)?n:r(s.parentNode)}return t?r(t):n}function Wk(t){const[e]=gu(t,1);return e??null}function wh(t){return!fu||!t?null:to(t)?t:jm(t)?Nm(t)||t===no(t).scrollingElement?window:Cl(t)?t:null:null}function Kk(t){return to(t)?t.scrollX:t.scrollLeft}function Uk(t){return to(t)?t.scrollY:t.scrollTop}function rp(t){return{x:Kk(t),y:Uk(t)}}var bt;(function(t){t[t.Forward=1]="Forward",t[t.Backward=-1]="Backward"})(bt||(bt={}));function Gk(t){return!fu||!t?!1:t===document.scrollingElement}function qk(t){const e={x:0,y:0},n=Gk(t)?{height:window.innerHeight,width:window.innerWidth}:{height:t.clientHeight,width:t.clientWidth},r={x:t.scrollWidth-n.width,y:t.scrollHeight-n.height},s=t.scrollTop<=e.y,i=t.scrollLeft<=e.x,o=t.scrollTop>=r.y,a=t.scrollLeft>=r.x;return{isTop:s,isLeft:i,isBottom:o,isRight:a,maxScroll:r,minScroll:e}}const j7={x:.2,y:.2};function N7(t,e,n,r,s){let{top:i,left:o,right:a,bottom:l}=n;r===void 0&&(r=10),s===void 0&&(s=j7);const{isTop:d,isBottom:u,isLeft:h,isRight:f}=qk(t),p={x:0,y:0},m={x:0,y:0},x={height:e.height*s.y,width:e.width*s.x};return!d&&i<=e.top+x.height?(p.y=bt.Backward,m.y=r*Math.abs((e.top+x.height-i)/x.height)):!u&&l>=e.bottom-x.height&&(p.y=bt.Forward,m.y=r*Math.abs((e.bottom-x.height-l)/x.height)),!f&&a>=e.right-x.width?(p.x=bt.Forward,m.x=r*Math.abs((e.right-x.width-a)/x.width)):!h&&o<=e.left+x.width&&(p.x=bt.Backward,m.x=r*Math.abs((e.left+x.width-o)/x.width)),{direction:p,speed:m}}function P7(t){if(t===document.scrollingElement){const{innerWidth:i,innerHeight:o}=window;return{top:0,left:0,right:i,bottom:o,width:i,height:o}}const{top:e,left:n,right:r,bottom:s}=t.getBoundingClientRect();return{top:e,left:n,right:r,bottom:s,width:t.clientWidth,height:t.clientHeight}}function Yk(t){return t.reduce((e,n)=>Oi(e,rp(n)),Yn)}function D7(t){return t.reduce((e,n)=>e+Kk(n),0)}function E7(t){return t.reduce((e,n)=>e+Uk(n),0)}function Xk(t,e){if(e===void 0&&(e=ro),!t)return;const{top:n,left:r,bottom:s,right:i}=e(t);Wk(t)&&(s<=0||i<=0||n>=window.innerHeight||r>=window.innerWidth)&&t.scrollIntoView({block:"center",inline:"center"})}const O7=[["x",["left","right"],D7],["y",["top","bottom"],E7]];class Pm{constructor(e,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=gu(n),s=Yk(r);this.rect={...e},this.width=e.width,this.height=e.height;for(const[i,o,a]of O7)for(const l of o)Object.defineProperty(this,l,{get:()=>{const d=a(r),u=s[i]-d;return this.rect[l]+u},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class Wo{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=e}add(e,n,r){var s;(s=this.target)==null||s.addEventListener(e,n,r),this.listeners.push([e,n,r])}}function M7(t){const{EventTarget:e}=Wt(t);return t instanceof e?t:no(t)}function kh(t,e){const n=Math.abs(t.x),r=Math.abs(t.y);return typeof e=="number"?Math.sqrt(n**2+r**2)>e:"x"in e&&"y"in e?n>e.x&&r>e.y:"x"in e?n>e.x:"y"in e?r>e.y:!1}var Cn;(function(t){t.Click="click",t.DragStart="dragstart",t.Keydown="keydown",t.ContextMenu="contextmenu",t.Resize="resize",t.SelectionChange="selectionchange",t.VisibilityChange="visibilitychange"})(Cn||(Cn={}));function sb(t){t.preventDefault()}function A7(t){t.stopPropagation()}var Te;(function(t){t.Space="Space",t.Down="ArrowDown",t.Right="ArrowRight",t.Left="ArrowLeft",t.Up="ArrowUp",t.Esc="Escape",t.Enter="Enter",t.Tab="Tab"})(Te||(Te={}));const Qk={start:[Te.Space,Te.Enter],cancel:[Te.Esc],end:[Te.Space,Te.Enter,Te.Tab]},T7=(t,e)=>{let{currentCoordinates:n}=e;switch(t.code){case Te.Right:return{...n,x:n.x+25};case Te.Left:return{...n,x:n.x-25};case Te.Down:return{...n,y:n.y+25};case Te.Up:return{...n,y:n.y-25}}};class Dm{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;const{event:{target:n}}=e;this.props=e,this.listeners=new Wo(no(n)),this.windowListeners=new Wo(Wt(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(Cn.Resize,this.handleCancel),this.windowListeners.add(Cn.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(Cn.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:e,onStart:n}=this.props,r=e.node.current;r&&Xk(r),n(Yn)}handleKeyDown(e){if(mu(e)){const{active:n,context:r,options:s}=this.props,{keyboardCodes:i=Qk,coordinateGetter:o=T7,scrollBehavior:a="smooth"}=s,{code:l}=e;if(i.end.includes(l)){this.handleEnd(e);return}if(i.cancel.includes(l)){this.handleCancel(e);return}const{collisionRect:d}=r.current,u=d?{x:d.left,y:d.top}:Yn;this.referenceCoordinates||(this.referenceCoordinates=u);const h=o(e,{active:n,context:r.current,currentCoordinates:u});if(h){const f=xa(h,u),p={x:0,y:0},{scrollableAncestors:m}=r.current;for(const x of m){const b=e.code,{isTop:y,isRight:w,isLeft:v,isBottom:k,maxScroll:C,minScroll:N}=qk(x),D=P7(x),S={x:Math.min(b===Te.Right?D.right-D.width/2:D.right,Math.max(b===Te.Right?D.left:D.left+D.width/2,h.x)),y:Math.min(b===Te.Down?D.bottom-D.height/2:D.bottom,Math.max(b===Te.Down?D.top:D.top+D.height/2,h.y))},E=b===Te.Right&&!w||b===Te.Left&&!v,O=b===Te.Down&&!k||b===Te.Up&&!y;if(E&&S.x!==h.x){const P=x.scrollLeft+f.x,A=b===Te.Right&&P<=C.x||b===Te.Left&&P>=N.x;if(A&&!f.y){x.scrollTo({left:P,behavior:a});return}A?p.x=x.scrollLeft-P:p.x=b===Te.Right?x.scrollLeft-C.x:x.scrollLeft-N.x,p.x&&x.scrollBy({left:-p.x,behavior:a});break}else if(O&&S.y!==h.y){const P=x.scrollTop+f.y,A=b===Te.Down&&P<=C.y||b===Te.Up&&P>=N.y;if(A&&!f.x){x.scrollTo({top:P,behavior:a});return}A?p.y=x.scrollTop-P:p.y=b===Te.Down?x.scrollTop-C.y:x.scrollTop-N.y,p.y&&x.scrollBy({top:-p.y,behavior:a});break}}this.handleMove(e,Oi(xa(h,this.referenceCoordinates),p))}}}handleMove(e,n){const{onMove:r}=this.props;e.preventDefault(),r(n)}handleEnd(e){const{onEnd:n}=this.props;e.preventDefault(),this.detach(),n()}handleCancel(e){const{onCancel:n}=this.props;e.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}Dm.activators=[{eventName:"onKeyDown",handler:(t,e,n)=>{let{keyboardCodes:r=Qk,onActivation:s}=e,{active:i}=n;const{code:o}=t.nativeEvent;if(r.start.includes(o)){const a=i.activatorNode.current;return a&&t.target!==a?!1:(t.preventDefault(),s?.({event:t.nativeEvent}),!0)}return!1}}];function ib(t){return!!(t&&"distance"in t)}function ob(t){return!!(t&&"delay"in t)}class Em{constructor(e,n,r){var s;r===void 0&&(r=M7(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=n;const{event:i}=e,{target:o}=i;this.props=e,this.events=n,this.document=no(o),this.documentListeners=new Wo(this.document),this.listeners=new Wo(r),this.windowListeners=new Wo(Wt(o)),this.initialCoordinates=(s=Dd(i))!=null?s:Yn,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:e,props:{options:{activationConstraint:n,bypassActivationConstraint:r}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(Cn.Resize,this.handleCancel),this.windowListeners.add(Cn.DragStart,sb),this.windowListeners.add(Cn.VisibilityChange,this.handleCancel),this.windowListeners.add(Cn.ContextMenu,sb),this.documentListeners.add(Cn.Keydown,this.handleKeydown),n){if(r!=null&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(ob(n)){this.timeoutId=setTimeout(this.handleStart,n.delay),this.handlePending(n);return}if(ib(n)){this.handlePending(n);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,n){const{active:r,onPending:s}=this.props;s(r,e,this.initialCoordinates,n)}handleStart(){const{initialCoordinates:e}=this,{onStart:n}=this.props;e&&(this.activated=!0,this.documentListeners.add(Cn.Click,A7,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(Cn.SelectionChange,this.removeTextSelection),n(e))}handleMove(e){var n;const{activated:r,initialCoordinates:s,props:i}=this,{onMove:o,options:{activationConstraint:a}}=i;if(!s)return;const l=(n=Dd(e))!=null?n:Yn,d=xa(s,l);if(!r&&a){if(ib(a)){if(a.tolerance!=null&&kh(d,a.tolerance))return this.handleCancel();if(kh(d,a.distance))return this.handleStart()}if(ob(a)&&kh(d,a.tolerance))return this.handleCancel();this.handlePending(a,d);return}e.cancelable&&e.preventDefault(),o(l)}handleEnd(){const{onAbort:e,onEnd:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleCancel(){const{onAbort:e,onCancel:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleKeydown(e){e.code===Te.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}}const R7={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class Om extends Em{constructor(e){const{event:n}=e,r=no(n.target);super(e,R7,r)}}Om.activators=[{eventName:"onPointerDown",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];const L7={move:{name:"mousemove"},end:{name:"mouseup"}};var sp;(function(t){t[t.RightClick=2]="RightClick"})(sp||(sp={}));class I7 extends Em{constructor(e){super(e,L7,no(e.event.target))}}I7.activators=[{eventName:"onMouseDown",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;return n.button===sp.RightClick?!1:(r?.({event:n}),!0)}}];const Sh={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class $7 extends Em{constructor(e){super(e,Sh)}static setup(){return window.addEventListener(Sh.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(Sh.move.name,e)};function e(){}}}$7.activators=[{eventName:"onTouchStart",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;const{touches:s}=n;return s.length>1?!1:(r?.({event:n}),!0)}}];var Ko;(function(t){t[t.Pointer=0]="Pointer",t[t.DraggableRect=1]="DraggableRect"})(Ko||(Ko={}));var Od;(function(t){t[t.TreeOrder=0]="TreeOrder",t[t.ReversedTreeOrder=1]="ReversedTreeOrder"})(Od||(Od={}));function B7(t){let{acceleration:e,activator:n=Ko.Pointer,canScroll:r,draggingRect:s,enabled:i,interval:o=5,order:a=Od.TreeOrder,pointerCoordinates:l,scrollableAncestors:d,scrollableAncestorRects:u,delta:h,threshold:f}=t;const p=F7({delta:h,disabled:!i}),[m,x]=Q8(),b=g.useRef({x:0,y:0}),y=g.useRef({x:0,y:0}),w=g.useMemo(()=>{switch(n){case Ko.Pointer:return l?{top:l.y,bottom:l.y,left:l.x,right:l.x}:null;case Ko.DraggableRect:return s}},[n,s,l]),v=g.useRef(null),k=g.useCallback(()=>{const N=v.current;if(!N)return;const D=b.current.x*y.current.x,S=b.current.y*y.current.y;N.scrollBy(D,S)},[]),C=g.useMemo(()=>a===Od.TreeOrder?[...d].reverse():d,[a,d]);g.useEffect(()=>{if(!i||!d.length||!w){x();return}for(const N of C){if(r?.(N)===!1)continue;const D=d.indexOf(N),S=u[D];if(!S)continue;const{direction:E,speed:O}=N7(N,S,w,e,f);for(const P of["x","y"])p[P][E[P]]||(O[P]=0,E[P]=0);if(O.x>0||O.y>0){x(),v.current=N,m(k,o),b.current=O,y.current=E;return}}b.current={x:0,y:0},y.current={x:0,y:0},x()},[e,k,r,x,i,o,JSON.stringify(w),JSON.stringify(p),m,d,C,u,JSON.stringify(f)])}const _7={x:{[bt.Backward]:!1,[bt.Forward]:!1},y:{[bt.Backward]:!1,[bt.Forward]:!1}};function F7(t){let{delta:e,disabled:n}=t;const r=Pd(e);return jl(s=>{if(n||!r||!s)return _7;const i={x:Math.sign(e.x-r.x),y:Math.sign(e.y-r.y)};return{x:{[bt.Backward]:s.x[bt.Backward]||i.x===-1,[bt.Forward]:s.x[bt.Forward]||i.x===1},y:{[bt.Backward]:s.y[bt.Backward]||i.y===-1,[bt.Forward]:s.y[bt.Forward]||i.y===1}}},[n,e,r])}function z7(t,e){const n=e!=null?t.get(e):void 0,r=n?n.node.current:null;return jl(s=>{var i;return e==null?null:(i=r??s)!=null?i:null},[r,e])}function H7(t,e){return g.useMemo(()=>t.reduce((n,r)=>{const{sensor:s}=r,i=s.activators.map(o=>({eventName:o.eventName,handler:e(o.handler,r)}));return[...n,...i]},[]),[t,e])}var ba;(function(t){t[t.Always=0]="Always",t[t.BeforeDragging=1]="BeforeDragging",t[t.WhileDragging=2]="WhileDragging"})(ba||(ba={}));var ip;(function(t){t.Optimized="optimized"})(ip||(ip={}));const ab=new Map;function V7(t,e){let{dragging:n,dependencies:r,config:s}=e;const[i,o]=g.useState(null),{frequency:a,measure:l,strategy:d}=s,u=g.useRef(t),h=b(),f=ga(h),p=g.useCallback(function(y){y===void 0&&(y=[]),!f.current&&o(w=>w===null?y:w.concat(y.filter(v=>!w.includes(v))))},[f]),m=g.useRef(null),x=jl(y=>{if(h&&!n)return ab;if(!y||y===ab||u.current!==t||i!=null){const w=new Map;for(let v of t){if(!v)continue;if(i&&i.length>0&&!i.includes(v.id)&&v.rect.current){w.set(v.id,v.rect.current);continue}const k=v.node.current,C=k?new Pm(l(k),k):null;v.rect.current=C,C&&w.set(v.id,C)}return w}return y},[t,i,n,h,l]);return g.useEffect(()=>{u.current=t},[t]),g.useEffect(()=>{h||p()},[n,h]),g.useEffect(()=>{i&&i.length>0&&o(null)},[JSON.stringify(i)]),g.useEffect(()=>{h||typeof a!="number"||m.current!==null||(m.current=setTimeout(()=>{p(),m.current=null},a))},[a,h,p,...r]),{droppableRects:x,measureDroppableContainers:p,measuringScheduled:i!=null};function b(){switch(d){case ba.Always:return!1;case ba.BeforeDragging:return n;default:return!n}}}function Mm(t,e){return jl(n=>t?n||(typeof e=="function"?e(t):t):null,[e,t])}function W7(t,e){return Mm(t,e)}function K7(t){let{callback:e,disabled:n}=t;const r=pu(e),s=g.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:i}=window;return new i(r)},[r,n]);return g.useEffect(()=>()=>s?.disconnect(),[s]),s}function xu(t){let{callback:e,disabled:n}=t;const r=pu(e),s=g.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:i}=window;return new i(r)},[n]);return g.useEffect(()=>()=>s?.disconnect(),[s]),s}function U7(t){return new Pm(ro(t),t)}function lb(t,e,n){e===void 0&&(e=U7);const[r,s]=g.useState(null);function i(){s(l=>{if(!t)return null;if(t.isConnected===!1){var d;return(d=l??n)!=null?d:null}const u=e(t);return JSON.stringify(l)===JSON.stringify(u)?l:u})}const o=K7({callback(l){if(t)for(const d of l){const{type:u,target:h}=d;if(u==="childList"&&h instanceof HTMLElement&&h.contains(t)){i();break}}}}),a=xu({callback:i});return qn(()=>{i(),t?(a?.observe(t),o?.observe(document.body,{childList:!0,subtree:!0})):(a?.disconnect(),o?.disconnect())},[t]),r}function G7(t){const e=Mm(t);return Hk(t,e)}const cb=[];function q7(t){const e=g.useRef(t),n=jl(r=>t?r&&r!==cb&&t&&e.current&&t.parentNode===e.current.parentNode?r:gu(t):cb,[t]);return g.useEffect(()=>{e.current=t},[t]),n}function Y7(t){const[e,n]=g.useState(null),r=g.useRef(t),s=g.useCallback(i=>{const o=wh(i.target);o&&n(a=>a?(a.set(o,rp(o)),new Map(a)):null)},[]);return g.useEffect(()=>{const i=r.current;if(t!==i){o(i);const a=t.map(l=>{const d=wh(l);return d?(d.addEventListener("scroll",s,{passive:!0}),[d,rp(d)]):null}).filter(l=>l!=null);n(a.length?new Map(a):null),r.current=t}return()=>{o(t),o(i)};function o(a){a.forEach(l=>{const d=wh(l);d?.removeEventListener("scroll",s)})}},[s,t]),g.useMemo(()=>t.length?e?Array.from(e.values()).reduce((i,o)=>Oi(i,o),Yn):Yk(t):Yn,[t,e])}function db(t,e){e===void 0&&(e=[]);const n=g.useRef(null);return g.useEffect(()=>{n.current=null},e),g.useEffect(()=>{const r=t!==Yn;r&&!n.current&&(n.current=t),!r&&n.current&&(n.current=null)},[t]),n.current?xa(t,n.current):Yn}function X7(t){g.useEffect(()=>{if(!fu)return;const e=t.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of e)n?.()}},t.map(e=>{let{sensor:n}=e;return n}))}function Q7(t,e){return g.useMemo(()=>t.reduce((n,r)=>{let{eventName:s,handler:i}=r;return n[s]=o=>{i(o,e)},n},{}),[t,e])}function Jk(t){return g.useMemo(()=>t?k7(t):null,[t])}const ub=[];function J7(t,e){e===void 0&&(e=ro);const[n]=t,r=Jk(n?Wt(n):null),[s,i]=g.useState(ub);function o(){i(()=>t.length?t.map(l=>Gk(l)?r:new Pm(e(l),l)):ub)}const a=xu({callback:o});return qn(()=>{a?.disconnect(),o(),t.forEach(l=>a?.observe(l))},[t]),s}function Zk(t){if(!t)return null;if(t.children.length>1)return t;const e=t.children[0];return Cl(e)?e:t}function Z7(t){let{measure:e}=t;const[n,r]=g.useState(null),s=g.useCallback(d=>{for(const{target:u}of d)if(Cl(u)){r(h=>{const f=e(u);return h?{...h,width:f.width,height:f.height}:f});break}},[e]),i=xu({callback:s}),o=g.useCallback(d=>{const u=Zk(d);i?.disconnect(),u&&i?.observe(u),r(u?e(u):null)},[e,i]),[a,l]=Nd(o);return g.useMemo(()=>({nodeRef:a,rect:n,setRef:l}),[n,a,l])}const eR=[{sensor:Om,options:{}},{sensor:Dm,options:{}}],tR={current:{}},Vc={draggable:{measure:rb},droppable:{measure:rb,strategy:ba.WhileDragging,frequency:ip.Optimized},dragOverlay:{measure:ro}};class Uo extends Map{get(e){var n;return e!=null&&(n=super.get(e))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:n}=e;return!n})}getNodeFor(e){var n,r;return(n=(r=this.get(e))==null?void 0:r.node.current)!=null?n:void 0}}const nR={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new Uo,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:Ed},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:Vc,measureDroppableContainers:Ed,windowRect:null,measuringScheduled:!1},eS={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:Ed,draggableNodes:new Map,over:null,measureDroppableContainers:Ed},Pl=g.createContext(eS),tS=g.createContext(nR);function rR(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new Uo}}}function sR(t,e){switch(e.type){case ft.DragStart:return{...t,draggable:{...t.draggable,initialCoordinates:e.initialCoordinates,active:e.active}};case ft.DragMove:return t.draggable.active==null?t:{...t,draggable:{...t.draggable,translate:{x:e.coordinates.x-t.draggable.initialCoordinates.x,y:e.coordinates.y-t.draggable.initialCoordinates.y}}};case ft.DragEnd:case ft.DragCancel:return{...t,draggable:{...t.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case ft.RegisterDroppable:{const{element:n}=e,{id:r}=n,s=new Uo(t.droppable.containers);return s.set(r,n),{...t,droppable:{...t.droppable,containers:s}}}case ft.SetDroppableDisabled:{const{id:n,key:r,disabled:s}=e,i=t.droppable.containers.get(n);if(!i||r!==i.key)return t;const o=new Uo(t.droppable.containers);return o.set(n,{...i,disabled:s}),{...t,droppable:{...t.droppable,containers:o}}}case ft.UnregisterDroppable:{const{id:n,key:r}=e,s=t.droppable.containers.get(n);if(!s||r!==s.key)return t;const i=new Uo(t.droppable.containers);return i.delete(n),{...t,droppable:{...t.droppable,containers:i}}}default:return t}}function iR(t){let{disabled:e}=t;const{active:n,activatorEvent:r,draggableNodes:s}=g.useContext(Pl),i=Pd(r),o=Pd(n?.id);return g.useEffect(()=>{if(!e&&!r&&i&&o!=null){if(!mu(i)||document.activeElement===i.target)return;const a=s.get(o);if(!a)return;const{activatorNode:l,node:d}=a;if(!l.current&&!d.current)return;requestAnimationFrame(()=>{for(const u of[l.current,d.current]){if(!u)continue;const h=e7(u);if(h){h.focus();break}}})}},[r,e,s,o,i]),null}function nS(t,e){let{transform:n,...r}=e;return t!=null&&t.length?t.reduce((s,i)=>i({transform:s,...r}),n):n}function oR(t){return g.useMemo(()=>({draggable:{...Vc.draggable,...t?.draggable},droppable:{...Vc.droppable,...t?.droppable},dragOverlay:{...Vc.dragOverlay,...t?.dragOverlay}}),[t?.draggable,t?.droppable,t?.dragOverlay])}function aR(t){let{activeNode:e,measure:n,initialRect:r,config:s=!0}=t;const i=g.useRef(!1),{x:o,y:a}=typeof s=="boolean"?{x:s,y:s}:s;qn(()=>{if(!o&&!a||!e){i.current=!1;return}if(i.current||!r)return;const d=e?.node.current;if(!d||d.isConnected===!1)return;const u=n(d),h=Hk(u,r);if(o||(h.x=0),a||(h.y=0),i.current=!0,Math.abs(h.x)>0||Math.abs(h.y)>0){const f=Wk(d);f&&f.scrollBy({top:h.y,left:h.x})}},[e,o,a,r,n])}const bu=g.createContext({...Yn,scaleX:1,scaleY:1});var Ur;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Initializing=1]="Initializing",t[t.Initialized=2]="Initialized"})(Ur||(Ur={}));const lR=g.memo(function(e){var n,r,s,i;let{id:o,accessibility:a,autoScroll:l=!0,children:d,sensors:u=eR,collisionDetection:h=g7,measuring:f,modifiers:p,...m}=e;const x=g.useReducer(sR,void 0,rR),[b,y]=x,[w,v]=o7(),[k,C]=g.useState(Ur.Uninitialized),N=k===Ur.Initialized,{draggable:{active:D,nodes:S,translate:E},droppable:{containers:O}}=b,P=D!=null?S.get(D):null,A=g.useRef({initial:null,translated:null}),I=g.useMemo(()=>{var ot;return D!=null?{id:D,data:(ot=P?.data)!=null?ot:tR,rect:A}:null},[D,P]),j=g.useRef(null),[M,T]=g.useState(null),[L,F]=g.useState(null),$=ga(m,Object.values(m)),V=Nl("DndDescribedBy",o),W=g.useMemo(()=>O.getEnabled(),[O]),H=oR(f),{droppableRects:J,measureDroppableContainers:G,measuringScheduled:Z}=V7(W,{dragging:N,dependencies:[E.x,E.y],config:H.droppable}),re=z7(S,D),se=g.useMemo(()=>L?Dd(L):null,[L]),_=Br(),Y=W7(re,H.draggable.measure);aR({activeNode:D!=null?S.get(D):null,config:_.layoutShiftCompensation,initialRect:Y,measure:H.draggable.measure});const ee=lb(re,H.draggable.measure,Y),ce=lb(re?re.parentElement:null),ie=g.useRef({activatorEvent:null,active:null,activeNode:re,collisionRect:null,collisions:null,droppableRects:J,draggableNodes:S,draggingNode:null,draggingNodeRect:null,droppableContainers:O,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),oe=O.getNodeFor((n=ie.current.over)==null?void 0:n.id),fe=Z7({measure:H.dragOverlay.measure}),xe=(r=fe.nodeRef.current)!=null?r:re,Pe=N?(s=fe.rect)!=null?s:ee:null,Ae=!!(fe.nodeRef.current&&fe.rect),Je=G7(Ae?null:ee),mt=Jk(xe?Wt(xe):null),qe=q7(N?oe??re:null),gt=J7(qe),Bt=nS(p,{transform:{x:E.x-Je.x,y:E.y-Je.y,scaleX:1,scaleY:1},activatorEvent:L,active:I,activeNodeRect:ee,containerNodeRect:ce,draggingNodeRect:Pe,over:ie.current.over,overlayNodeRect:fe.rect,scrollableAncestors:qe,scrollableAncestorRects:gt,windowRect:mt}),Kt=se?Oi(se,E):null,Ut=Y7(qe),Ue=db(Ut),st=db(Ut,[ee]),it=Oi(Bt,Ue),U=Pe?y7(Pe,Bt):null,ne=I&&U?h({active:I,collisionRect:U,droppableRects:J,droppableContainers:W,pointerCoordinates:Kt}):null,me=zk(ne,"id"),[je,kt]=g.useState(null),In=Ae?Bt:Oi(Bt,st),rn=x7(In,(i=je?.rect)!=null?i:null,ee),_t=g.useRef(null),ps=g.useCallback((ot,ut)=>{let{sensor:St,options:sn}=ut;if(j.current==null)return;const Dt=S.get(j.current);if(!Dt)return;const xt=ot.nativeEvent,Ct=new St({active:j.current,activeNode:Dt,event:xt,options:sn,context:ie,onAbort(Ze){if(!S.get(Ze))return;const{onDragAbort:Gt}=$.current,R={id:Ze};Gt?.(R),w({type:"onDragAbort",event:R})},onPending(Ze,bn,Gt,R){if(!S.get(Ze))return;const{onDragPending:z}=$.current,X={id:Ze,constraint:bn,initialCoordinates:Gt,offset:R};z?.(X),w({type:"onDragPending",event:X})},onStart(Ze){const bn=j.current;if(bn==null)return;const Gt=S.get(bn);if(!Gt)return;const{onDragStart:R}=$.current,B={activatorEvent:xt,active:{id:bn,data:Gt.data,rect:A}};Ns.unstable_batchedUpdates(()=>{R?.(B),C(Ur.Initializing),y({type:ft.DragStart,initialCoordinates:Ze,active:bn}),w({type:"onDragStart",event:B}),T(_t.current),F(xt)})},onMove(Ze){y({type:ft.DragMove,coordinates:Ze})},onEnd:on(ft.DragEnd),onCancel:on(ft.DragCancel)});_t.current=Ct;function on(Ze){return async function(){const{active:Gt,collisions:R,over:B,scrollAdjustedTranslate:z}=ie.current;let X=null;if(Gt&&z){const{cancelDrop:Q}=$.current;X={activatorEvent:xt,active:Gt,collisions:R,delta:z,over:B},Ze===ft.DragEnd&&typeof Q=="function"&&await Promise.resolve(Q(X))&&(Ze=ft.DragCancel)}j.current=null,Ns.unstable_batchedUpdates(()=>{y({type:Ze}),C(Ur.Uninitialized),kt(null),T(null),F(null),_t.current=null;const Q=Ze===ft.DragEnd?"onDragEnd":"onDragCancel";if(X){const pe=$.current[Q];pe?.(X),w({type:Q,event:X})}})}}},[S]),Js=g.useCallback((ot,ut)=>(St,sn)=>{const Dt=St.nativeEvent,xt=S.get(sn);if(j.current!==null||!xt||Dt.dndKit||Dt.defaultPrevented)return;const Ct={active:xt};ot(St,ut.options,Ct)===!0&&(Dt.dndKit={capturedBy:ut.sensor},j.current=sn,ps(St,ut))},[S,ps]),ms=H7(u,Js);X7(u),qn(()=>{ee&&k===Ur.Initializing&&C(Ur.Initialized)},[ee,k]),g.useEffect(()=>{const{onDragMove:ot}=$.current,{active:ut,activatorEvent:St,collisions:sn,over:Dt}=ie.current;if(!ut||!St)return;const xt={active:ut,activatorEvent:St,collisions:sn,delta:{x:it.x,y:it.y},over:Dt};Ns.unstable_batchedUpdates(()=>{ot?.(xt),w({type:"onDragMove",event:xt})})},[it.x,it.y]),g.useEffect(()=>{const{active:ot,activatorEvent:ut,collisions:St,droppableContainers:sn,scrollAdjustedTranslate:Dt}=ie.current;if(!ot||j.current==null||!ut||!Dt)return;const{onDragOver:xt}=$.current,Ct=sn.get(me),on=Ct&&Ct.rect.current?{id:Ct.id,rect:Ct.rect.current,data:Ct.data,disabled:Ct.disabled}:null,Ze={active:ot,activatorEvent:ut,collisions:St,delta:{x:Dt.x,y:Dt.y},over:on};Ns.unstable_batchedUpdates(()=>{kt(on),xt?.(Ze),w({type:"onDragOver",event:Ze})})},[me]),qn(()=>{ie.current={activatorEvent:L,active:I,activeNode:re,collisionRect:U,collisions:ne,droppableRects:J,draggableNodes:S,draggingNode:xe,draggingNodeRect:Pe,droppableContainers:O,over:je,scrollableAncestors:qe,scrollAdjustedTranslate:it},A.current={initial:Pe,translated:U}},[I,re,ne,U,S,xe,Pe,J,O,je,qe,it]),B7({..._,delta:E,draggingRect:U,pointerCoordinates:Kt,scrollableAncestors:qe,scrollableAncestorRects:gt});const ho=g.useMemo(()=>({active:I,activeNode:re,activeNodeRect:ee,activatorEvent:L,collisions:ne,containerNodeRect:ce,dragOverlay:fe,draggableNodes:S,droppableContainers:O,droppableRects:J,over:je,measureDroppableContainers:G,scrollableAncestors:qe,scrollableAncestorRects:gt,measuringConfiguration:H,measuringScheduled:Z,windowRect:mt}),[I,re,ee,L,ne,ce,fe,S,O,J,je,G,qe,gt,H,Z,mt]),Zs=g.useMemo(()=>({activatorEvent:L,activators:ms,active:I,activeNodeRect:ee,ariaDescribedById:{draggable:V},dispatch:y,draggableNodes:S,over:je,measureDroppableContainers:G}),[L,ms,I,ee,y,V,S,je,G]);return He.createElement(Bk.Provider,{value:v},He.createElement(Pl.Provider,{value:Zs},He.createElement(tS.Provider,{value:ho},He.createElement(bu.Provider,{value:rn},d)),He.createElement(iR,{disabled:a?.restoreFocus===!1})),He.createElement(c7,{...a,hiddenTextDescribedById:V}));function Br(){const ot=M?.autoScrollEnabled===!1,ut=typeof l=="object"?l.enabled===!1:l===!1,St=N&&!ot&&!ut;return typeof l=="object"?{...l,enabled:St}:{enabled:St}}}),cR=g.createContext(null),hb="button",dR="Draggable";function uR(t){let{id:e,data:n,disabled:r=!1,attributes:s}=t;const i=Nl(dR),{activators:o,activatorEvent:a,active:l,activeNodeRect:d,ariaDescribedById:u,draggableNodes:h,over:f}=g.useContext(Pl),{role:p=hb,roleDescription:m="draggable",tabIndex:x=0}=s??{},b=l?.id===e,y=g.useContext(b?bu:cR),[w,v]=Nd(),[k,C]=Nd(),N=Q7(o,e),D=ga(n);qn(()=>(h.set(e,{id:e,key:i,node:w,activatorNode:k,data:D}),()=>{const E=h.get(e);E&&E.key===i&&h.delete(e)}),[h,e]);const S=g.useMemo(()=>({role:p,tabIndex:x,"aria-disabled":r,"aria-pressed":b&&p===hb?!0:void 0,"aria-roledescription":m,"aria-describedby":u.draggable}),[r,p,x,b,m,u.draggable]);return{active:l,activatorEvent:a,activeNodeRect:d,attributes:S,isDragging:b,listeners:r?void 0:N,node:w,over:f,setNodeRef:v,setActivatorNodeRef:C,transform:y}}function rS(){return g.useContext(tS)}const hR="Droppable",fR={timeout:25};function sS(t){let{data:e,disabled:n=!1,id:r,resizeObserverConfig:s}=t;const i=Nl(hR),{active:o,dispatch:a,over:l,measureDroppableContainers:d}=g.useContext(Pl),u=g.useRef({disabled:n}),h=g.useRef(!1),f=g.useRef(null),p=g.useRef(null),{disabled:m,updateMeasurementsFor:x,timeout:b}={...fR,...s},y=ga(x??r),w=g.useCallback(()=>{if(!h.current){h.current=!0;return}p.current!=null&&clearTimeout(p.current),p.current=setTimeout(()=>{d(Array.isArray(y.current)?y.current:[y.current]),p.current=null},b)},[b]),v=xu({callback:w,disabled:m||!o}),k=g.useCallback((S,E)=>{v&&(E&&(v.unobserve(E),h.current=!1),S&&v.observe(S))},[v]),[C,N]=Nd(k),D=ga(e);return g.useEffect(()=>{!v||!C.current||(v.disconnect(),h.current=!1,v.observe(C.current))},[C,v]),g.useEffect(()=>(a({type:ft.RegisterDroppable,element:{id:r,key:i,disabled:n,node:C,rect:f,data:D}}),()=>a({type:ft.UnregisterDroppable,key:i,id:r})),[r]),g.useEffect(()=>{n!==u.current.disabled&&(a({type:ft.SetDroppableDisabled,id:r,key:i,disabled:n}),u.current.disabled=n)},[r,i,n,a]),{active:o,rect:f,isOver:l?.id===r,node:C,over:l,setNodeRef:N}}function pR(t){let{animation:e,children:n}=t;const[r,s]=g.useState(null),[i,o]=g.useState(null),a=Pd(n);return!n&&!r&&a&&s(a),qn(()=>{if(!i)return;const l=r?.key,d=r?.props.id;if(l==null||d==null){s(null);return}Promise.resolve(e(d,i)).then(()=>{s(null)})},[e,r,i]),He.createElement(He.Fragment,null,n,r?g.cloneElement(r,{ref:o}):null)}const mR={x:0,y:0,scaleX:1,scaleY:1};function gR(t){let{children:e}=t;return He.createElement(Pl.Provider,{value:eS},He.createElement(bu.Provider,{value:mR},e))}const xR={position:"fixed",touchAction:"none"},bR=t=>mu(t)?"transform 250ms ease":void 0,yR=g.forwardRef((t,e)=>{let{as:n,activatorEvent:r,adjustScale:s,children:i,className:o,rect:a,style:l,transform:d,transition:u=bR}=t;if(!a)return null;const h=s?d:{...d,scaleX:1,scaleY:1},f={...xR,width:a.width,height:a.height,top:a.top,left:a.left,transform:ds.Transform.toString(h),transformOrigin:s&&r?u7(r,a):void 0,transition:typeof u=="function"?u(r):u,...l};return He.createElement(n,{className:o,style:f,ref:e},i)}),vR=t=>e=>{let{active:n,dragOverlay:r}=e;const s={},{styles:i,className:o}=t;if(i!=null&&i.active)for(const[a,l]of Object.entries(i.active))l!==void 0&&(s[a]=n.node.style.getPropertyValue(a),n.node.style.setProperty(a,l));if(i!=null&&i.dragOverlay)for(const[a,l]of Object.entries(i.dragOverlay))l!==void 0&&r.node.style.setProperty(a,l);return o!=null&&o.active&&n.node.classList.add(o.active),o!=null&&o.dragOverlay&&r.node.classList.add(o.dragOverlay),function(){for(const[l,d]of Object.entries(s))n.node.style.setProperty(l,d);o!=null&&o.active&&n.node.classList.remove(o.active)}},wR=t=>{let{transform:{initial:e,final:n}}=t;return[{transform:ds.Transform.toString(e)},{transform:ds.Transform.toString(n)}]},kR={duration:250,easing:"ease",keyframes:wR,sideEffects:vR({styles:{active:{opacity:"0"}}})};function SR(t){let{config:e,draggableNodes:n,droppableContainers:r,measuringConfiguration:s}=t;return pu((i,o)=>{if(e===null)return;const a=n.get(i);if(!a)return;const l=a.node.current;if(!l)return;const d=Zk(o);if(!d)return;const{transform:u}=Wt(o).getComputedStyle(o),h=Vk(u);if(!h)return;const f=typeof e=="function"?e:CR(e);return Xk(l,s.draggable.measure),f({active:{id:i,data:a.data,node:l,rect:s.draggable.measure(l)},draggableNodes:n,dragOverlay:{node:o,rect:s.dragOverlay.measure(d)},droppableContainers:r,measuringConfiguration:s,transform:h})})}function CR(t){const{duration:e,easing:n,sideEffects:r,keyframes:s}={...kR,...t};return i=>{let{active:o,dragOverlay:a,transform:l,...d}=i;if(!e)return;const u={x:a.rect.left-o.rect.left,y:a.rect.top-o.rect.top},h={scaleX:l.scaleX!==1?o.rect.width*l.scaleX/a.rect.width:1,scaleY:l.scaleY!==1?o.rect.height*l.scaleY/a.rect.height:1},f={x:l.x-u.x,y:l.y-u.y,...h},p=s({...d,active:o,dragOverlay:a,transform:{initial:l,final:f}}),[m]=p,x=p[p.length-1];if(JSON.stringify(m)===JSON.stringify(x))return;const b=r?.({active:o,dragOverlay:a,...d}),y=a.node.animate(p,{duration:e,easing:n,fill:"forwards"});return new Promise(w=>{y.onfinish=()=>{b?.(),w()}})}}let fb=0;function jR(t){return g.useMemo(()=>{if(t!=null)return fb++,fb},[t])}const NR=He.memo(t=>{let{adjustScale:e=!1,children:n,dropAnimation:r,style:s,transition:i,modifiers:o,wrapperElement:a="div",className:l,zIndex:d=999}=t;const{activatorEvent:u,active:h,activeNodeRect:f,containerNodeRect:p,draggableNodes:m,droppableContainers:x,dragOverlay:b,over:y,measuringConfiguration:w,scrollableAncestors:v,scrollableAncestorRects:k,windowRect:C}=rS(),N=g.useContext(bu),D=jR(h?.id),S=nS(o,{activatorEvent:u,active:h,activeNodeRect:f,containerNodeRect:p,draggingNodeRect:b.rect,over:y,overlayNodeRect:b.rect,scrollableAncestors:v,scrollableAncestorRects:k,transform:N,windowRect:C}),E=Mm(f),O=SR({config:r,draggableNodes:m,droppableContainers:x,measuringConfiguration:w}),P=E?b.setRef:void 0;return He.createElement(gR,null,He.createElement(pR,{animation:O},h&&D?He.createElement(yR,{key:D,id:h.id,ref:P,as:a,activatorEvent:u,adjustScale:e,className:l,transition:i,rect:E,style:{zIndex:d,...s},transform:S},n):null))});function Am(t,e,n){const r=t.slice();return r.splice(n<0?r.length+n:n,0,r.splice(e,1)[0]),r}function PR(t,e){return t.reduce((n,r,s)=>{const i=e.get(r);return i&&(n[s]=i),n},Array(t.length))}function mc(t){return t!==null&&t>=0}function DR(t,e){if(t===e)return!0;if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}function ER(t){return typeof t=="boolean"?{draggable:t,droppable:t}:t}const gc={scaleX:1,scaleY:1},OR=t=>{var e;let{rects:n,activeNodeRect:r,activeIndex:s,overIndex:i,index:o}=t;const a=(e=n[s])!=null?e:r;if(!a)return null;const l=MR(n,o,s);if(o===s){const d=n[i];return d?{x:s<i?d.left+d.width-(a.left+a.width):d.left-a.left,y:0,...gc}:null}return o>s&&o<=i?{x:-a.width-l,y:0,...gc}:o<s&&o>=i?{x:a.width+l,y:0,...gc}:{x:0,y:0,...gc}};function MR(t,e,n){const r=t[e],s=t[e-1],i=t[e+1];return!r||!s&&!i?0:n<e?s?r.left-(s.left+s.width):i.left-(r.left+r.width):i?i.left-(r.left+r.width):r.left-(s.left+s.width)}const iS=t=>{let{rects:e,activeIndex:n,overIndex:r,index:s}=t;const i=Am(e,r,n),o=e[s],a=i[s];return!a||!o?null:{x:a.left-o.left,y:a.top-o.top,scaleX:a.width/o.width,scaleY:a.height/o.height}},oS="Sortable",aS=He.createContext({activeIndex:-1,containerId:oS,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:iS,disabled:{draggable:!1,droppable:!1}});function AR(t){let{children:e,id:n,items:r,strategy:s=iS,disabled:i=!1}=t;const{active:o,dragOverlay:a,droppableRects:l,over:d,measureDroppableContainers:u}=rS(),h=Nl(oS,n),f=a.rect!==null,p=g.useMemo(()=>r.map(N=>typeof N=="object"&&"id"in N?N.id:N),[r]),m=o!=null,x=o?p.indexOf(o.id):-1,b=d?p.indexOf(d.id):-1,y=g.useRef(p),w=!DR(p,y.current),v=b!==-1&&x===-1||w,k=ER(i);qn(()=>{w&&m&&u(p)},[w,p,m,u]),g.useEffect(()=>{y.current=p},[p]);const C=g.useMemo(()=>({activeIndex:x,containerId:h,disabled:k,disableTransforms:v,items:p,overIndex:b,useDragOverlay:f,sortedRects:PR(p,l),strategy:s}),[x,h,k.draggable,k.droppable,v,p,b,l,f,s]);return He.createElement(aS.Provider,{value:C},e)}const TR=t=>{let{id:e,items:n,activeIndex:r,overIndex:s}=t;return Am(n,r,s).indexOf(e)},RR=t=>{let{containerId:e,isSorting:n,wasDragging:r,index:s,items:i,newIndex:o,previousItems:a,previousContainerId:l,transition:d}=t;return!d||!r||a!==i&&s===o?!1:n?!0:o!==s&&e===l},LR={duration:200,easing:"ease"},lS="transform",IR=ds.Transition.toString({property:lS,duration:0,easing:"linear"}),$R={roleDescription:"sortable"};function BR(t){let{disabled:e,index:n,node:r,rect:s}=t;const[i,o]=g.useState(null),a=g.useRef(n);return qn(()=>{if(!e&&n!==a.current&&r.current){const l=s.current;if(l){const d=ro(r.current,{ignoreTransform:!0}),u={x:l.left-d.left,y:l.top-d.top,scaleX:l.width/d.width,scaleY:l.height/d.height};(u.x||u.y)&&o(u)}}n!==a.current&&(a.current=n)},[e,n,r,s]),g.useEffect(()=>{i&&o(null)},[i]),i}function _R(t){let{animateLayoutChanges:e=RR,attributes:n,disabled:r,data:s,getNewIndex:i=TR,id:o,strategy:a,resizeObserverConfig:l,transition:d=LR}=t;const{items:u,containerId:h,activeIndex:f,disabled:p,disableTransforms:m,sortedRects:x,overIndex:b,useDragOverlay:y,strategy:w}=g.useContext(aS),v=FR(r,p),k=u.indexOf(o),C=g.useMemo(()=>({sortable:{containerId:h,index:k,items:u},...s}),[h,s,k,u]),N=g.useMemo(()=>u.slice(u.indexOf(o)),[u,o]),{rect:D,node:S,isOver:E,setNodeRef:O}=sS({id:o,data:C,disabled:v.droppable,resizeObserverConfig:{updateMeasurementsFor:N,...l}}),{active:P,activatorEvent:A,activeNodeRect:I,attributes:j,setNodeRef:M,listeners:T,isDragging:L,over:F,setActivatorNodeRef:$,transform:V}=uR({id:o,data:C,attributes:{...$R,...n},disabled:v.draggable}),W=X8(O,M),H=!!P,J=H&&!m&&mc(f)&&mc(b),G=!y&&L,Z=G&&J?V:null,se=J?Z??(a??w)({rects:x,activeNodeRect:I,activeIndex:f,overIndex:b,index:k}):null,_=mc(f)&&mc(b)?i({id:o,items:u,activeIndex:f,overIndex:b}):k,Y=P?.id,ee=g.useRef({activeId:Y,items:u,newIndex:_,containerId:h}),ce=u!==ee.current.items,ie=e({active:P,containerId:h,isDragging:L,isSorting:H,id:o,index:k,items:u,newIndex:ee.current.newIndex,previousItems:ee.current.items,previousContainerId:ee.current.containerId,transition:d,wasDragging:ee.current.activeId!=null}),oe=BR({disabled:!ie,index:k,node:S,rect:D});return g.useEffect(()=>{H&&ee.current.newIndex!==_&&(ee.current.newIndex=_),h!==ee.current.containerId&&(ee.current.containerId=h),u!==ee.current.items&&(ee.current.items=u)},[H,_,h,u]),g.useEffect(()=>{if(Y===ee.current.activeId)return;if(Y!=null&&ee.current.activeId==null){ee.current.activeId=Y;return}const xe=setTimeout(()=>{ee.current.activeId=Y},50);return()=>clearTimeout(xe)},[Y]),{active:P,activeIndex:f,attributes:j,data:C,rect:D,index:k,newIndex:_,items:u,isOver:E,isSorting:H,isDragging:L,listeners:T,node:S,overIndex:b,over:F,setNodeRef:W,setActivatorNodeRef:$,setDroppableNodeRef:O,setDraggableNodeRef:M,transform:oe??se,transition:fe()};function fe(){if(oe||ce&&ee.current.newIndex===k)return IR;if(!(G&&!mu(A)||!d)&&(H||ie))return ds.Transition.toString({...d,property:lS})}}function FR(t,e){var n,r;return typeof t=="boolean"?{draggable:t,droppable:!1}:{draggable:(n=t?.draggable)!=null?n:e.draggable,droppable:(r=t?.droppable)!=null?r:e.droppable}}function Md(t){if(!t)return!1;const e=t.data.current;return!!(e&&"sortable"in e&&typeof e.sortable=="object"&&"containerId"in e.sortable&&"items"in e.sortable&&"index"in e.sortable)}const zR=[Te.Down,Te.Right,Te.Up,Te.Left],HR=(t,e)=>{let{context:{active:n,collisionRect:r,droppableRects:s,droppableContainers:i,over:o,scrollableAncestors:a}}=e;if(zR.includes(t.code)){if(t.preventDefault(),!n||!r)return;const l=[];i.getEnabled().forEach(h=>{if(!h||h!=null&&h.disabled)return;const f=s.get(h.id);if(f)switch(t.code){case Te.Down:r.top<f.top&&l.push(h);break;case Te.Up:r.top>f.top&&l.push(h);break;case Te.Left:r.left>f.left&&l.push(h);break;case Te.Right:r.left<f.left&&l.push(h);break}});const d=p7({collisionRect:r,droppableRects:s,droppableContainers:l});let u=zk(d,"id");if(u===o?.id&&d.length>1&&(u=d[1].id),u!=null){const h=i.get(n.id),f=i.get(u),p=f?s.get(f.id):null,m=f?.node.current;if(m&&p&&h&&f){const b=gu(m).some((N,D)=>a[D]!==N),y=cS(h,f),w=VR(h,f),v=b||!y?{x:0,y:0}:{x:w?r.width-p.width:0,y:w?r.height-p.height:0},k={x:p.left,y:p.top};return v.x&&v.y?k:xa(k,v)}}}};function cS(t,e){return!Md(t)||!Md(e)?!1:t.data.current.sortable.containerId===e.data.current.sortable.containerId}function VR(t,e){return!Md(t)||!Md(e)||!cS(t,e)?!1:t.data.current.sortable.index<e.data.current.sortable.index}g.createContext(null);var WR=function(e,n){if(n){if(e&&n==="#000")return"0 0 0 1px rgba(255,255,255,0.1) inset";if(!e&&n==="#fff")return"0 0 0 1px rgba(0,0,0,0.05) inset"}};function ya(t){"@babel/helpers - typeof";return ya=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ya(t)}var KR=["shape","color","background","size","style","iconMultiple","Icon","iconStyle","iconClassName"];function pb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function xc(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?pb(Object(n),!0).forEach(function(r){UR(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):pb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function UR(t,e,n){return e=GR(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function GR(t){var e=qR(t,"string");return ya(e)=="symbol"?e:String(e)}function qR(t,e){if(ya(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(ya(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function YR(t,e){if(t==null)return{};var n=XR(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function XR(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var hs=g.memo(function(t){var e=t.shape,n=e===void 0?"circle":e,r=t.color,s=r===void 0?"#fff":r,i=t.background,o=t.size,a=t.style,l=t.iconMultiple,d=l===void 0?.75:l,u=t.Icon,h=t.iconStyle,f=t.iconClassName,p=YR(t,KR),m=w8(),x=m.isDarkMode;return c.jsx(N8,xc(xc({flex:"none",style:xc({background:i,borderRadius:n==="circle"?"50%":Math.floor(o*.1),boxShadow:WR(x,i),color:s,height:o,width:o},a)},p),{},{children:u&&c.jsx(u,{className:f,color:s,size:o,style:xc({transform:"scale(".concat(d,")")},h)})}))});function va(t){"@babel/helpers - typeof";return va=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},va(t)}var QR=["Icon","style","Text","color","size","spaceMultiple","textMultiple","extra","extraStyle","showText","showLogo","extraClassName","iconProps","inverse"];function mb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Fr(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?mb(Object(n),!0).forEach(function(r){JR(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):mb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function JR(t,e,n){return e=ZR(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function ZR(t){var e=eL(t,"string");return va(e)=="symbol"?e:String(e)}function eL(t,e){if(va(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(va(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function tL(t,e){if(t==null)return{};var n=nL(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function nL(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var fs=g.memo(function(t){var e=t.Icon,n=t.style,r=t.Text,s=t.color,i=t.size,o=i===void 0?24:i,a=t.spaceMultiple,l=a===void 0?1:a,d=t.textMultiple,u=d===void 0?1:d,h=t.extra,f=t.extraStyle,p=t.showText,m=p===void 0?!0:p,x=t.showLogo,b=x===void 0?!0:x,y=t.extraClassName,w=t.iconProps,v=t.inverse,k=tL(t,QR),C=e&&b&&c.jsx(e,Fr(Fr({size:o},w),{},{style:Fr(v?{marginLeft:o*l}:{marginRight:o*l},w?.style)})),N=m&&r&&c.jsx(r,{size:o*u});return c.jsxs(Mk,Fr(Fr({align:"center",flex:"none",horizontal:!0,justify:"flex-start",style:Fr({color:s},n)},k),{},{children:[v?c.jsxs(c.Fragment,{children:[N,C]}):c.jsxs(c.Fragment,{children:[C,N]}),h&&c.jsx("span",{className:y,style:Fr({fontSize:o*u*.95,lineHeight:1},f),children:h})]}))}),rL=function(e,n){return g.useMemo(function(){var r=Array.from({length:n},function(s,i){var o="lobe-icons-".concat(E8(e),"-fill-").concat(i);return{fill:"url(#".concat(o,")"),id:o}});return r},[e,n])},so="Claude",sL=.8,iL=.1,dS="#D97757",oL=dS,aL="#fff",lL=.75;function wa(t){"@babel/helpers - typeof";return wa=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},wa(t)}var cL=["size","style"];function gb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Ch(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?gb(Object(n),!0).forEach(function(r){dL(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):gb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function dL(t,e,n){return e=uL(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function uL(t){var e=hL(t,"string");return wa(e)=="symbol"?e:String(e)}function hL(t,e){if(wa(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(wa(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function fL(t,e){if(t==null)return{};var n=pL(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function pL(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var Tm=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=fL(t,cL);return c.jsxs("svg",Ch(Ch({fill:"currentColor",fillRule:"evenodd",height:n,style:Ch({flex:"none",lineHeight:1},r),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:so}),c.jsx("path",{d:"M4.709 15.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0 11.784l.055-.352.48-.321.686.06 1.52.103 2.278.158 1.652.097 2.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686 1.908 1.476 2.491 1.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97 2.97 0 01-.104-.729L6.283.134 6.696 0l.996.134.42.364.62 1.414 1.002 2.229 1.555 3.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286 1.851-.559 2.903-.364 1.942h.212l.243-.242.985-1.306 1.652-2.064.73-.82.85-.904.547-.431h1.033l.76 1.129-.34 1.166-1.064 1.347-.881 1.142-1.264 1.7-.79 1.36.073.11.188-.02 2.856-.606 1.543-.28 1.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061 1.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093 1.068 2.006 1.81 2.509 2.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649 2.345 3.521.122 1.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674 7.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434 1.967-2.18 2.945-1.726 1.845-.414.164-.717-.37.067-.662.401-.589 2.388-3.036 1.44-1.882.93-1.086-.006-.158h-.055L4.132 18.56l-1.13.146-.487-.456.061-.746.231-.243 1.908-1.312-.006.006z"})]}))});function ka(t){"@babel/helpers - typeof";return ka=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ka(t)}function xb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function mL(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?xb(Object(n),!0).forEach(function(r){gL(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):xb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function gL(t,e,n){return e=xL(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function xL(t){var e=bL(t,"string");return ka(e)=="symbol"?e:String(e)}function bL(t,e){if(ka(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(ka(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function yL(t){if(t==null)throw new TypeError("Cannot destructure "+t)}var vL=g.memo(function(t){var e=Object.assign({},(yL(t),t));return c.jsx(hs,mL({Icon:Tm,"aria-label":so,background:oL,color:aL,iconMultiple:lL},e))});function Sa(t){"@babel/helpers - typeof";return Sa=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Sa(t)}var wL=["size","style"];function bb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function jh(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?bb(Object(n),!0).forEach(function(r){kL(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):bb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function kL(t,e,n){return e=SL(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function SL(t){var e=CL(t,"string");return Sa(e)=="symbol"?e:String(e)}function CL(t,e){if(Sa(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Sa(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function jL(t,e){if(t==null)return{};var n=NL(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function NL(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var uS=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=jL(t,wL);return c.jsxs("svg",jh(jh({height:n,style:jh({flex:"none",lineHeight:1},r),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:so}),c.jsx("path",{d:"M4.709 15.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0 11.784l.055-.352.48-.321.686.06 1.52.103 2.278.158 1.652.097 2.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686 1.908 1.476 2.491 1.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97 2.97 0 01-.104-.729L6.283.134 6.696 0l.996.134.42.364.62 1.414 1.002 2.229 1.555 3.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286 1.851-.559 2.903-.364 1.942h.212l.243-.242.985-1.306 1.652-2.064.73-.82.85-.904.547-.431h1.033l.76 1.129-.34 1.166-1.064 1.347-.881 1.142-1.264 1.7-.79 1.36.073.11.188-.02 2.856-.606 1.543-.28 1.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061 1.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093 1.068 2.006 1.81 2.509 2.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649 2.345 3.521.122 1.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674 7.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434 1.967-2.18 2.945-1.726 1.845-.414.164-.717-.37.067-.662.401-.589 2.388-3.036 1.44-1.882.93-1.086-.006-.158h-.055L4.132 18.56l-1.13.146-.487-.456.061-.746.231-.243 1.908-1.312-.006.006z",fill:"#D97757",fillRule:"nonzero"})]}))});function Ca(t){"@babel/helpers - typeof";return Ca=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ca(t)}var PL=["size","style"];function yb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Nh(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?yb(Object(n),!0).forEach(function(r){DL(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):yb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function DL(t,e,n){return e=EL(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function EL(t){var e=OL(t,"string");return Ca(e)=="symbol"?e:String(e)}function OL(t,e){if(Ca(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Ca(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function ML(t,e){if(t==null)return{};var n=AL(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function AL(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var hS=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=ML(t,PL);return c.jsxs("svg",Nh(Nh({fill:"currentColor",fillRule:"nonzero",height:n,style:Nh({flex:"none",lineHeight:1},r),viewBox:"0 0 97 24",xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:so}),c.jsx("path",{d:"M13.623 20.222c-3.417 0-5.753-1.901-6.855-4.827a12.992 12.992 0 01-.838-4.772c0-4.907 2.206-8.315 7.08-8.315 3.275 0 5.297 1.425 6.448 4.826h1.402l-.19-4.69C18.709 1.18 16.258.543 13.276.543c-4.2 0-7.775 1.874-9.763 5.254a11.357 11.357 0 00-1.511 5.872c0 3.753 1.777 7.08 5.113 8.926a11.95 11.95 0 005.943 1.398c3.254 0 5.835-.617 8.122-1.697l.593-5.172h-1.43c-.858 2.362-1.88 3.78-3.574 4.534-.831.373-1.88.564-3.146.564zm14.74-17.914L28.499 0h-.967L23.23 1.29v.699l1.907.882v16.142c0 1.1-.565 1.344-2.043 1.528v1.18h7.319v-1.18c-1.484-.184-2.042-.428-2.042-1.528V2.315l-.007-.007zm29.104 19.685h.565l4.95-.937v-1.208l-.695-.054c-1.157-.109-1.457-.346-1.457-1.29V9.897l.137-2.763h-.783l-4.678.672v1.181l.457.082c1.266.183 1.64.536 1.64 1.419v7.67c-1.212.937-2.369 1.527-3.744 1.527-1.525 0-2.471-.774-2.471-2.58V9.905l.136-2.763h-.804l-4.684.672v1.181l.484.082c1.266.183 1.64.536 1.64 1.418v7.08c0 3 1.703 4.426 4.412 4.426 2.07 0 3.765-1.1 5.038-2.627L57.474 22l-.007-.007zm-13.602-9.55c0-3.836-2.043-5.309-5.733-5.309-3.254 0-5.616 1.344-5.616 3.57 0 .666.238 1.175.721 1.528l2.478-.326c-.109-.746-.163-1.201-.163-1.391 0-1.263.674-1.901 2.042-1.901 2.022 0 3.044 1.419 3.044 3.7v.746l-5.106 1.527c-1.702.462-2.67.863-3.316 1.8a3.386 3.386 0 00-.476 1.9c0 2.172 1.497 3.706 4.057 3.706 1.852 0 3.493-.835 4.922-2.416.51 1.581 1.294 2.416 2.69 2.416 1.13 0 2.15-.455 3.063-1.344l-.272-.937a4.363 4.363 0 01-1.178.163c-.783 0-1.157-.617-1.157-1.826v-5.607zm-6.536 7.378c-1.396 0-2.26-.808-2.26-2.226 0-.964.456-1.528 1.43-1.854l4.139-1.31v3.965c-1.321.997-2.097 1.425-3.31 1.425zm43.095 1.235v-1.208l-.701-.054c-1.158-.109-1.45-.346-1.45-1.29V2.308L78.409 0h-.974l-4.302 1.29v.699l1.906.882V8.18a6.024 6.024 0 00-3.656-1.046c-4.276 0-7.612 3.245-7.612 8.098 0 3.998 2.397 6.761 6.346 6.761 2.042 0 3.819-.99 4.922-2.525l-.136 2.525h.571l4.95-.937zm-8.96-12.313c2.043 0 3.575 1.181 3.575 3.353v6.11a4.91 4.91 0 01-3.547 1.425c-2.928 0-4.412-2.308-4.412-5.39 0-3.462 1.695-5.498 4.385-5.498zm19.424 3.055c-.381-1.792-1.484-2.81-3.016-2.81-2.288 0-3.874 1.717-3.874 4.18 0 3.646 1.934 6.008 5.059 6.008a5.858 5.858 0 005.03-2.953l.913.245c-.408 3.163-3.281 5.525-6.808 5.525-4.14 0-6.992-3.054-6.992-7.399 0-4.378 3.098-7.46 7.237-7.46 3.09 0 5.27 1.853 5.97 5.07l-10.783 3.3V14.05l7.264-2.247v-.006z"})]}))});function ja(t){"@babel/helpers - typeof";return ja=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ja(t)}var TL=["type"];function vb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function RL(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?vb(Object(n),!0).forEach(function(r){LL(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):vb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function LL(t,e,n){return e=IL(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function IL(t){var e=$L(t,"string");return ja(e)=="symbol"?e:String(e)}function $L(t,e){if(ja(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(ja(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function BL(t,e){if(t==null)return{};var n=_L(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function _L(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var FL=g.memo(function(t){var e=t.type,n=e===void 0?"mono":e,r=BL(t,TL),s=n==="color"?uS:Tm;return c.jsx(fs,RL({Icon:s,Text:hS,"aria-label":so,spaceMultiple:iL,textMultiple:sL},r))}),Xs=Tm;Xs.Color=uS;Xs.Text=hS;Xs.Combine=FL;Xs.Avatar=vL;Xs.colorPrimary=dS;Xs.title=so;var Dl="Cline",zL=.7,HL=.2,fS="#323B43",VL=fS,WL="#fff",KL=.6;function Na(t){"@babel/helpers - typeof";return Na=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Na(t)}var UL=["size","style"];function wb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Ph(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?wb(Object(n),!0).forEach(function(r){GL(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):wb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function GL(t,e,n){return e=qL(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function qL(t){var e=YL(t,"string");return Na(e)=="symbol"?e:String(e)}function YL(t,e){if(Na(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Na(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function XL(t,e){if(t==null)return{};var n=QL(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function QL(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var Rm=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=XL(t,UL);return c.jsxs("svg",Ph(Ph({fill:"currentColor",fillRule:"evenodd",height:n,style:Ph({flex:"none",lineHeight:1},r),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:Dl}),c.jsx("path",{d:"M17.035 3.991c2.75 0 4.98 2.24 4.98 5.003v1.667l1.45 2.896a1.01 1.01 0 01-.002.909l-1.448 2.864v1.668c0 2.762-2.23 5.002-4.98 5.002H7.074c-2.751 0-4.98-2.24-4.98-5.002V17.33l-1.48-2.855a1.01 1.01 0 01-.003-.927l1.482-2.887V8.994c0-2.763 2.23-5.003 4.98-5.003h9.962zM8.265 9.6a2.274 2.274 0 00-2.274 2.274v4.042a2.274 2.274 0 004.547 0v-4.042A2.274 2.274 0 008.265 9.6zm7.326 0a2.274 2.274 0 00-2.274 2.274v4.042a2.274 2.274 0 104.548 0v-4.042A2.274 2.274 0 0015.59 9.6z"}),c.jsx("path",{d:"M12.054 5.558a2.779 2.779 0 100-5.558 2.779 2.779 0 000 5.558z"})]}))});function Pa(t){"@babel/helpers - typeof";return Pa=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Pa(t)}function kb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function JL(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?kb(Object(n),!0).forEach(function(r){ZL(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):kb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function ZL(t,e,n){return e=eI(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function eI(t){var e=tI(t,"string");return Pa(e)=="symbol"?e:String(e)}function tI(t,e){if(Pa(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Pa(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function nI(t){if(t==null)throw new TypeError("Cannot destructure "+t)}var rI=g.memo(function(t){var e=Object.assign({},(nI(t),t));return c.jsx(hs,JL({Icon:Rm,"aria-label":Dl,background:VL,color:WL,iconMultiple:KL},e))});function Da(t){"@babel/helpers - typeof";return Da=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Da(t)}var sI=["size","style"];function Sb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Dh(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Sb(Object(n),!0).forEach(function(r){iI(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Sb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function iI(t,e,n){return e=oI(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function oI(t){var e=aI(t,"string");return Da(e)=="symbol"?e:String(e)}function aI(t,e){if(Da(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Da(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function lI(t,e){if(t==null)return{};var n=cI(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function cI(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var pS=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=lI(t,sI);return c.jsxs("svg",Dh(Dh({fill:"currentColor",fillRule:"evenodd",height:n,style:Dh({flex:"none",lineHeight:1},r),viewBox:"0 0 88 24",xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:Dl}),c.jsx("path",{d:"M79.558 21.986c-1.13 0-2.167-.189-3.108-.565a7.128 7.128 0 01-2.403-1.569 6.933 6.933 0 01-1.554-2.331 7.876 7.876 0 01-.537-2.925v-.58c0-1.196.189-2.279.566-3.25.376-.97.894-1.798 1.554-2.486a6.84 6.84 0 012.289-1.582 7.005 7.005 0 012.797-.566c1.103 0 2.078.189 2.925.566.848.367 1.56.88 2.134 1.54.575.668 1.008 1.464 1.3 2.388.292.923.438 1.93.438 3.023v1.456H75.362v.07c.103.67.263 1.23.48 1.682.217.452.513.857.89 1.215.377.377.82.669 1.328.876.518.207 1.084.31 1.696.31.838 0 1.62-.16 2.346-.48a4.71 4.71 0 001.794-1.398l1.808 1.752c-.508.734-1.29 1.394-2.345 1.978-1.046.584-2.313.876-3.8.876zm-.41-13.113c-.48 0-.927.09-1.342.269-.405.17-.768.414-1.088.735-.32.33-.589.725-.805 1.187a6.25 6.25 0 00-.48 1.568h7.191v-.226c0-.443-.08-.88-.24-1.314a3.545 3.545 0 00-.678-1.159 3.004 3.004 0 00-1.074-.763c-.424-.198-.919-.297-1.484-.297zM55.043 21.703V6.415h3.052l.212 2.176c.207-.292.433-.56.678-.805.255-.255.523-.48.806-.679a5.555 5.555 0 013.179-.975 6.5 6.5 0 012.148.34 4.11 4.11 0 011.667 1.073c.461.49.82 1.117 1.074 1.88.254.753.381 1.667.381 2.74v9.538h-3.377v-9.48c0-.632-.07-1.16-.212-1.583-.141-.424-.348-.763-.621-1.018a2.3 2.3 0 00-.99-.537 4.736 4.736 0 00-1.328-.17c-.414 0-.8.057-1.158.17a3.421 3.421 0 00-1.611 1.004 4.282 4.282 0 00-.523.706v10.908h-3.377zM38.44 6.415h8.111v12.49h4.493v2.798H38.441v-2.797h4.705v-9.68H38.44V6.416zm4.395-3.956c0-.274.047-.523.141-.75a1.69 1.69 0 01.41-.607c.17-.16.372-.282.607-.367.245-.094.519-.141.82-.141.509 0 .918.131 1.23.395.32.254.503.584.55.99.066.414-.004.776-.212 1.087-.207.302-.508.504-.904.608a1.48 1.48 0 01-.706.353c-.273.057-.575.033-.905-.07a1.396 1.396 0 01-.777-.552 1.758 1.758 0 01-.254-.946zM20.934 0h8.238v18.906h4.634v2.797H20.934v-2.797h4.832V2.812h-4.832V0zM16.71 15.373c-.095.999-.33 1.908-.707 2.727a6.672 6.672 0 01-1.484 2.077 6.542 6.542 0 01-2.218 1.357c-.848.31-1.79.466-2.826.466-.848 0-1.63-.113-2.346-.339a6.467 6.467 0 01-1.893-.99 6.55 6.55 0 01-1.413-1.426 9.438 9.438 0 01-1.003-1.851c-.274-.66-.48-1.375-.622-2.148A14.34 14.34 0 012 12.83v-2.812c0-.8.066-1.573.198-2.317.132-.744.33-1.446.593-2.106A8.284 8.284 0 013.88 3.603a7.296 7.296 0 011.555-1.54 6.953 6.953 0 011.836-.904A7.256 7.256 0 019.49.834c1.083 0 2.049.16 2.896.48.858.32 1.588.773 2.19 1.357a6.337 6.337 0 011.442 2.147c.358.839.588 1.771.692 2.798h-3.391a6.568 6.568 0 00-.353-1.653c-.17-.5-.405-.923-.707-1.272a2.977 2.977 0 00-1.144-.791c-.453-.188-.994-.283-1.625-.283-.443 0-.843.062-1.201.184-.349.122-.66.297-.933.523a3.385 3.385 0 00-.947 1.074 7.033 7.033 0 00-.607 1.455c-.123.471-.217.975-.283 1.512a15.25 15.25 0 00-.084 1.625v2.84c0 .688.037 1.333.113 1.936.084.602.212 1.154.381 1.653.132.414.297.791.495 1.13.207.34.452.631.734.876.292.264.627.466 1.004.608.386.132.824.198 1.314.198.584 0 1.102-.085 1.554-.255.452-.17.838-.419 1.159-.749.31-.32.56-.72.748-1.2.189-.481.311-1.032.368-1.654h3.405z"})]}))});function Ea(t){"@babel/helpers - typeof";return Ea=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ea(t)}function Cb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function dI(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Cb(Object(n),!0).forEach(function(r){uI(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Cb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function uI(t,e,n){return e=hI(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function hI(t){var e=fI(t,"string");return Ea(e)=="symbol"?e:String(e)}function fI(t,e){if(Ea(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Ea(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function pI(t){if(t==null)throw new TypeError("Cannot destructure "+t)}var mI=g.memo(function(t){var e=Object.assign({},(pI(t),t));return c.jsx(fs,dI({Icon:Rm,Text:pS,"aria-label":Dl,iconProps:{shape:"square"},spaceMultiple:HL,textMultiple:zL},e))}),io=Rm;io.Text=pS;io.Combine=mI;io.Avatar=rI;io.colorPrimary=fS;io.title=Dl;var El="Cursor",gI=.7,xI=.1,mS="#000",bI=mS,yI="#fff",vI=.6;function Oa(t){"@babel/helpers - typeof";return Oa=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Oa(t)}var wI=["size","style"];function jb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Eh(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?jb(Object(n),!0).forEach(function(r){kI(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):jb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function kI(t,e,n){return e=SI(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function SI(t){var e=CI(t,"string");return Oa(e)=="symbol"?e:String(e)}function CI(t,e){if(Oa(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Oa(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function jI(t,e){if(t==null)return{};var n=NI(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function NI(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var Lm=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=jI(t,wI);return c.jsxs("svg",Eh(Eh({fill:"currentColor",fillRule:"evenodd",height:n,style:Eh({flex:"none",lineHeight:1},r),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:El}),c.jsx("path",{d:"M22.106 5.68L12.5.135a.998.998 0 00-.998 0L1.893 5.68a.84.84 0 00-.419.726v11.186c0 .3.16.577.42.727l9.607 5.547a.999.999 0 00.998 0l9.608-5.547a.84.84 0 00.42-.727V6.407a.84.84 0 00-.42-.726zm-.603 1.176L12.228 22.92c-.063.108-.228.064-.228-.061V12.34a.59.59 0 00-.295-.51l-9.11-5.26c-.107-.062-.063-.228.062-.228h18.55c.264 0 .428.286.296.514z"})]}))});function Ma(t){"@babel/helpers - typeof";return Ma=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ma(t)}function Nb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function PI(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Nb(Object(n),!0).forEach(function(r){DI(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Nb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function DI(t,e,n){return e=EI(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function EI(t){var e=OI(t,"string");return Ma(e)=="symbol"?e:String(e)}function OI(t,e){if(Ma(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Ma(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function MI(t){if(t==null)throw new TypeError("Cannot destructure "+t)}var AI=g.memo(function(t){var e=Object.assign({},(MI(t),t));return c.jsx(hs,PI({Icon:Lm,"aria-label":El,background:bI,color:yI,iconMultiple:vI},e))});function Aa(t){"@babel/helpers - typeof";return Aa=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Aa(t)}var TI=["size","style"];function Pb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Oh(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Pb(Object(n),!0).forEach(function(r){RI(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Pb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function RI(t,e,n){return e=LI(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function LI(t){var e=II(t,"string");return Aa(e)=="symbol"?e:String(e)}function II(t,e){if(Aa(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Aa(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function $I(t,e){if(t==null)return{};var n=BI(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function BI(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var gS=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=$I(t,TI);return c.jsxs("svg",Oh(Oh({fill:"currentColor",fillRule:"evenodd",height:n,style:Oh({flex:"none",lineHeight:1},r),viewBox:"0 0 123 24",xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:El}),c.jsx("path",{d:"M11.995 2.33h6.516v3.582h-6.295C8.82 5.912 6.169 7.868 6.169 12c0 4.133 2.65 6.089 6.047 6.089h6.295v3.581H11.72C6.03 21.67 2 18.336 2 12c0-6.337 4.307-9.67 9.995-9.67zm9.829 0h4.03V14.15c0 2.947 1.354 4.325 4.53 4.325 3.175 0 4.528-1.377 4.528-4.325V2.33h4.03v12.644c0 4.297-2.733 7.025-8.559 7.025-5.826 0-8.56-2.755-8.56-7.052V2.33zm38.185 5.483c0 2.149-1.243 3.801-2.9 4.518v.055c1.74.248 2.624 1.488 2.65 3.169l.084 6.115h-4.031l-.083-5.454c-.027-1.212-.745-1.956-2.181-1.956h-6.71v7.41h-4.03V2.33h11.127c3.644 0 6.074 1.846 6.074 5.483zm-4.059.55c0-1.652-.883-2.561-2.54-2.561H46.84v5.123h6.626c1.518 0 2.485-.909 2.485-2.562zm19.3 7.66c0-1.378-.884-1.957-2.209-2.067l-4.473-.413c-3.866-.358-5.881-1.873-5.881-5.537 0-3.664 2.485-5.675 6.046-5.675h9.885V5.8h-9.609c-1.38 0-2.263.717-2.263 2.094 0 1.378.91 2.039 2.291 2.15l4.556.385c3.452.303 5.715 1.874 5.715 5.565 0 3.691-2.402 5.675-5.798 5.675H63.184V18.2h9.94c1.297 0 2.126-.882 2.126-2.177zM91.097 2c6.074 0 9.912 3.884 9.912 9.972C101.01 18.061 97.006 22 90.932 22s-9.912-3.94-9.912-10.028C81.02 5.884 85.024 2 91.098 2zm5.743 10c0-4.077-2.374-6.474-5.826-6.474-3.451 0-5.826 2.397-5.826 6.474s2.375 6.473 5.826 6.473c3.452 0 5.826-2.396 5.826-6.473zM121 7.813c0 2.149-1.242 3.801-2.899 4.518v.055c1.739.248 2.623 1.488 2.65 3.169l.083 6.115h-4.031l-.083-5.454c-.027-1.212-.745-1.956-2.181-1.956h-6.709v7.41h-4.031V2.33h11.127c3.645 0 6.074 1.846 6.074 5.483zm-4.059.55c0-1.652-.883-2.561-2.54-2.561h-6.571v5.123h6.626c1.518 0 2.485-.909 2.485-2.562z"})]}))});function Ta(t){"@babel/helpers - typeof";return Ta=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ta(t)}function Db(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function _I(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Db(Object(n),!0).forEach(function(r){FI(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Db(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function FI(t,e,n){return e=zI(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function zI(t){var e=HI(t,"string");return Ta(e)=="symbol"?e:String(e)}function HI(t,e){if(Ta(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Ta(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function VI(t){if(t==null)throw new TypeError("Cannot destructure "+t)}var WI=g.memo(function(t){var e=Object.assign({},(VI(t),t));return c.jsx(fs,_I({Icon:Lm,Text:gS,"aria-label":El,spaceMultiple:xI,textMultiple:gI},e))}),oo=Lm;oo.Text=gS;oo.Combine=WI;oo.Avatar=AI;oo.colorPrimary=mS;oo.title=El;var zs="Gemini",KI=.8,UI=.2,xS="#fff",GI=xS,qI="#fff",YI=.8;function Ra(t){"@babel/helpers - typeof";return Ra=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ra(t)}var XI=["size","style"];function Eb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Mh(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Eb(Object(n),!0).forEach(function(r){QI(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Eb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function QI(t,e,n){return e=JI(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function JI(t){var e=ZI(t,"string");return Ra(e)=="symbol"?e:String(e)}function ZI(t,e){if(Ra(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Ra(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function e9(t,e){return s9(t)||r9(t,e)||n9(t,e)||t9()}function t9(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
316
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function n9(t,e){if(t){if(typeof t=="string")return Ob(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);if(n==="Object"&&t.constructor&&(n=t.constructor.name),n==="Map"||n==="Set")return Array.from(t);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ob(t,e)}}function Ob(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function r9(t,e){var n=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(n!=null){var r,s,i,o,a=[],l=!0,d=!1;try{if(i=(n=n.call(t)).next,e!==0)for(;!(l=(r=i.call(n)).done)&&(a.push(r.value),a.length!==e);l=!0);}catch(u){d=!0,s=u}finally{try{if(!l&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(d)throw s}}return a}}function s9(t){if(Array.isArray(t))return t}function i9(t,e){if(t==null)return{};var n=o9(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function o9(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var Im=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=i9(t,XI),i=rL(zs,3),o=e9(i,3),a=o[0],l=o[1],d=o[2];return c.jsxs("svg",Mh(Mh({height:n,style:Mh({flex:"none",lineHeight:1},r),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:zs}),c.jsx("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"#3186FF"}),c.jsx("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:a.fill}),c.jsx("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:l.fill}),c.jsx("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:d.fill}),c.jsxs("defs",{children:[c.jsxs("linearGradient",{gradientUnits:"userSpaceOnUse",id:a.id,x1:"7",x2:"11",y1:"15.5",y2:"12",children:[c.jsx("stop",{stopColor:"#08B962"}),c.jsx("stop",{offset:"1",stopColor:"#08B962",stopOpacity:"0"})]}),c.jsxs("linearGradient",{gradientUnits:"userSpaceOnUse",id:l.id,x1:"8",x2:"11.5",y1:"5.5",y2:"11",children:[c.jsx("stop",{stopColor:"#F94543"}),c.jsx("stop",{offset:"1",stopColor:"#F94543",stopOpacity:"0"})]}),c.jsxs("linearGradient",{gradientUnits:"userSpaceOnUse",id:d.id,x1:"3.5",x2:"17.5",y1:"13.5",y2:"12",children:[c.jsx("stop",{stopColor:"#FABC12"}),c.jsx("stop",{offset:".46",stopColor:"#FABC12",stopOpacity:"0"})]})]})]}))});function La(t){"@babel/helpers - typeof";return La=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},La(t)}function Mb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function a9(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Mb(Object(n),!0).forEach(function(r){l9(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Mb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function l9(t,e,n){return e=c9(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function c9(t){var e=d9(t,"string");return La(e)=="symbol"?e:String(e)}function d9(t,e){if(La(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(La(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function u9(t){if(t==null)throw new TypeError("Cannot destructure "+t)}var h9=g.memo(function(t){var e=Object.assign({},(u9(t),t));return c.jsx(hs,a9({Icon:Im,"aria-label":zs,background:GI,color:qI,iconMultiple:YI},e))});function Ia(t){"@babel/helpers - typeof";return Ia=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ia(t)}var f9=["size","style"];function Ab(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Ah(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Ab(Object(n),!0).forEach(function(r){p9(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Ab(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function p9(t,e,n){return e=m9(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function m9(t){var e=g9(t,"string");return Ia(e)=="symbol"?e:String(e)}function g9(t,e){if(Ia(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Ia(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function x9(t,e){if(t==null)return{};var n=b9(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function b9(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var bS=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=x9(t,f9);return c.jsxs("svg",Ah(Ah({fill:"currentColor",fillRule:"evenodd",height:n,style:Ah({flex:"none",lineHeight:1},r),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:zs}),c.jsx("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z"})]}))});function $a(t){"@babel/helpers - typeof";return $a=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$a(t)}var y9=["size","style"];function Tb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Th(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Tb(Object(n),!0).forEach(function(r){v9(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Tb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function v9(t,e,n){return e=w9(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function w9(t){var e=k9(t,"string");return $a(e)=="symbol"?e:String(e)}function k9(t,e){if($a(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if($a(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function S9(t,e){if(t==null)return{};var n=C9(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function C9(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var yS=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=S9(t,y9);return c.jsxs("svg",Th(Th({fill:"currentColor",fillRule:"evenodd",height:n,style:Th({flex:"none",lineHeight:1},r),viewBox:"0 0 98 24",xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:zs}),c.jsx("path",{d:"M21.186 12.67c0 2.649-.786 4.759-2.359 6.33-1.766 1.87-4.09 2.806-6.969 2.806-2.756 0-5.088-.953-6.996-2.86C2.954 17.04 2 14.693 2 11.904c0-2.789.954-5.137 2.862-7.043C6.77 2.953 9.102 2 11.858 2c1.396 0 2.712.247 3.949.741 1.236.495 2.252 1.192 3.047 2.092l-1.749 1.748c-.583-.706-1.338-1.258-2.266-1.655a7.49 7.49 0 00-2.981-.596c-2.067 0-3.816.715-5.247 2.145-1.413 1.448-2.12 3.257-2.12 5.428s.707 3.98 2.12 5.428c1.431 1.43 3.18 2.145 5.247 2.145 1.89 0 3.463-.53 4.717-1.588 1.254-1.06 1.979-2.516 2.173-4.37h-6.89v-2.277h9.196c.088.495.132.971.132 1.43m7.652-4.633c1.946 0 3.494.629 4.645 1.886 1.15 1.257 1.726 3.018 1.726 5.282l-.027.268H24.877c.036 1.284.464 2.318 1.285 3.102.82.785 1.802 1.177 2.944 1.177 1.57 0 2.802-.784 3.694-2.354l2.195 1.07a6.54 6.54 0 01-2.45 2.595C31.503 21.688 30.32 22 29 22c-1.927 0-3.516-.66-4.765-1.98-1.249-1.319-1.873-2.986-1.873-5.001 0-1.997.606-3.66 1.82-4.988 1.213-1.329 2.766-1.993 4.657-1.993m-.053 2.247c-.928 0-1.727.285-2.396.856-.67.57-1.11 1.337-1.325 2.3h7.522c-.071-.91-.442-1.663-1.111-2.26-.67-.598-1.566-.896-2.69-.896M39.247 21.53h-2.455V8.465h2.348v1.813h.107c.374-.64.947-1.173 1.721-1.6.774-.427 1.544-.64 2.309-.64.96 0 1.806.222 2.535.667a3.931 3.931 0 011.601 1.84c1.085-1.671 2.589-2.507 4.51-2.507 1.513 0 2.678.462 3.496 1.387.819.924 1.228 2.24 1.228 3.946v8.16h-2.455v-7.786c0-1.227-.223-2.112-.668-2.654-.444-.542-1.192-.813-2.241-.813-.943 0-1.735.4-2.375 1.2-.64.8-.961 1.742-.961 2.826v7.227h-2.455v-7.786c0-1.227-.223-2.112-.668-2.654-.444-.542-1.191-.813-2.241-.813-.943 0-1.735.4-2.375 1.2-.64.8-.961 1.742-.961 2.826v7.227zM61.911 3.93c0 .48-.17.89-.508 1.228a1.675 1.675 0 01-1.23.508c-.48 0-.89-.17-1.229-.508a1.673 1.673 0 01-.508-1.228c0-.481.17-.89.508-1.229a1.675 1.675 0 011.23-.508c.48 0 .89.17 1.23.508.338.338.507.748.507 1.228m-.11 4.514v13.088h-2.857V8.443h2.857zM80 3.93c0 .48-.17.89-.508 1.228a1.675 1.675 0 01-1.23.508c-.48 0-.89-.17-1.229-.508a1.673 1.673 0 01-.508-1.228c0-.481.17-.89.508-1.229a1.675 1.675 0 011.23-.508c.48 0 .89.17 1.23.508.338.338.507.748.507 1.228m-.11 4.514v13.088h-2.857V8.443h2.857zm-16.343.022h2.349v1.813h.107c.373-.64.947-1.173 1.721-1.6a4.935 4.935 0 012.415-.64c1.601 0 2.833.458 3.696 1.373.863.916 1.294 2.218 1.294 3.907v8.213h-2.455v-8.053c-.053-2.133-1.13-3.2-3.229-3.2-.978 0-1.797.395-2.455 1.187-.658.79-.987 1.737-.987 2.84v7.226h-2.456V8.465z"})]}))});function Ba(t){"@babel/helpers - typeof";return Ba=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ba(t)}var j9=["type"];function Rb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function N9(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Rb(Object(n),!0).forEach(function(r){P9(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Rb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function P9(t,e,n){return e=D9(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function D9(t){var e=E9(t,"string");return Ba(e)=="symbol"?e:String(e)}function E9(t,e){if(Ba(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Ba(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function O9(t,e){if(t==null)return{};var n=M9(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function M9(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var A9=g.memo(function(t){var e=t.type,n=e===void 0?"mono":e,r=O9(t,j9),s=n==="color"?Im:bS;return c.jsx(fs,N9({Icon:s,Text:yS,"aria-label":zs,spaceMultiple:UI,textMultiple:KI},r))}),Qs=bS;Qs.Color=Im;Qs.Text=yS;Qs.Combine=A9;Qs.Avatar=h9;Qs.colorPrimary=xS;Qs.title=zs;var Ol="GithubCopilot",T9=.75,R9=.3,vS="#000",L9=vS,I9="#fff",$9=.75;function _a(t){"@babel/helpers - typeof";return _a=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_a(t)}var B9=["size","style"];function Lb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Rh(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Lb(Object(n),!0).forEach(function(r){_9(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Lb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function _9(t,e,n){return e=F9(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function F9(t){var e=z9(t,"string");return _a(e)=="symbol"?e:String(e)}function z9(t,e){if(_a(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(_a(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function H9(t,e){if(t==null)return{};var n=V9(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function V9(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var $m=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=H9(t,B9);return c.jsxs("svg",Rh(Rh({fill:"currentColor",fillRule:"evenodd",height:n,style:Rh({flex:"none",lineHeight:1},r),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:Ol}),c.jsx("path",{d:"M19.245 5.364c1.322 1.36 1.877 3.216 2.11 5.817.622 0 1.2.135 1.592.654l.73.964c.21.278.323.61.323.955v2.62c0 .339-.173.669-.453.868C20.239 19.602 16.157 21.5 12 21.5c-4.6 0-9.205-2.583-11.547-4.258-.28-.2-.452-.53-.453-.868v-2.62c0-.345.113-.679.321-.956l.73-.963c.392-.517.974-.654 1.593-.654l.029-.297c.25-2.446.81-4.213 2.082-5.52 2.461-2.54 5.71-2.851 7.146-2.864h.198c1.436.013 4.685.323 7.146 2.864zm-7.244 4.328c-.284 0-.613.016-.962.05-.123.447-.305.85-.57 1.108-1.05 1.023-2.316 1.18-2.994 1.18-.638 0-1.306-.13-1.851-.464-.516.165-1.012.403-1.044.996a65.882 65.882 0 00-.063 2.884l-.002.48c-.002.563-.005 1.126-.013 1.69.002.326.204.63.51.765 2.482 1.102 4.83 1.657 6.99 1.657 2.156 0 4.504-.555 6.985-1.657a.854.854 0 00.51-.766c.03-1.682.006-3.372-.076-5.053-.031-.596-.528-.83-1.046-.996-.546.333-1.212.464-1.85.464-.677 0-1.942-.157-2.993-1.18-.266-.258-.447-.661-.57-1.108-.32-.032-.64-.049-.96-.05zm-2.525 4.013c.539 0 .976.426.976.95v1.753c0 .525-.437.95-.976.95a.964.964 0 01-.976-.95v-1.752c0-.525.437-.951.976-.951zm5 0c.539 0 .976.426.976.95v1.753c0 .525-.437.95-.976.95a.964.964 0 01-.976-.95v-1.752c0-.525.437-.951.976-.951zM7.635 5.087c-1.05.102-1.935.438-2.385.906-.975 1.037-.765 3.668-.21 4.224.405.394 1.17.657 1.995.657h.09c.649-.013 1.785-.176 2.73-1.11.435-.41.705-1.433.675-2.47-.03-.834-.27-1.52-.63-1.813-.39-.336-1.275-.482-2.265-.394zm6.465.394c-.36.292-.6.98-.63 1.813-.03 1.037.24 2.06.675 2.47.968.957 2.136 1.104 2.776 1.11h.044c.825 0 1.59-.263 1.995-.657.555-.556.765-3.187-.21-4.224-.45-.468-1.335-.804-2.385-.906-.99-.088-1.875.058-2.265.394zM12 7.615c-.24 0-.525.015-.84.044.03.16.045.336.06.526l-.001.159a2.94 2.94 0 01-.014.25c.225-.022.425-.027.612-.028h.366c.187 0 .387.006.612.028-.015-.146-.015-.277-.015-.409.015-.19.03-.365.06-.526a9.29 9.29 0 00-.84-.044z"})]}))});function Fa(t){"@babel/helpers - typeof";return Fa=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Fa(t)}function Ib(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function W9(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Ib(Object(n),!0).forEach(function(r){K9(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Ib(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function K9(t,e,n){return e=U9(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function U9(t){var e=G9(t,"string");return Fa(e)=="symbol"?e:String(e)}function G9(t,e){if(Fa(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Fa(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function q9(t){if(t==null)throw new TypeError("Cannot destructure "+t)}var Y9=g.memo(function(t){var e=Object.assign({},(q9(t),t));return c.jsx(hs,W9({Icon:$m,"aria-label":Ol,background:L9,color:I9,iconMultiple:$9},e))});function za(t){"@babel/helpers - typeof";return za=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},za(t)}var X9=["size","style"];function $b(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Lh(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?$b(Object(n),!0).forEach(function(r){Q9(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):$b(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Q9(t,e,n){return e=J9(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function J9(t){var e=Z9(t,"string");return za(e)=="symbol"?e:String(e)}function Z9(t,e){if(za(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(za(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function e$(t,e){if(t==null)return{};var n=t$(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function t$(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var wS=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=e$(t,X9);return c.jsxs("svg",Lh(Lh({fill:"currentColor",fillRule:"evenodd",height:n,style:Lh({flex:"none",lineHeight:1},r),viewBox:"0 0 154 24",xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:Ol}),c.jsx("path",{d:"M2 11.875c0 5.256 3.013 8.506 8.19 8.506 4.76 0 8.027-2.72 8.027-7.722v-1.545h-7.982v2.928h4.095c-.161 1.96-1.68 3.25-4.049 3.25-2.6 0-4.347-1.498-4.347-4.334V10.7c0-2.582 1.518-4.31 4.186-4.31 1.91 0 3.267.922 3.68 2.374h3.865c-.437-3.366-3.427-5.625-7.499-5.625C5.29 3.138 2 6.366 2 11.875zm17.308-5.44h3.496V3h-3.496v3.435zm0 13.715h3.496V7.795h-3.496V20.15zm10.544-9.52h2.438V7.795h-2.438V3.922h-3.496v3.873H24.17v2.835h2.186v6.8c0 1.637.69 2.72 2.76 2.72h3.174v-2.766h-2.438V10.63zm3.994 9.52h3.727v-7.076h7.568v7.076h3.726V3.346h-3.726v6.777h-7.568V3.346h-3.727V20.15zM62.385 7.795h-3.497v6.523c0 1.868-1.012 3.205-2.668 3.205-1.38 0-2.162-.83-2.162-2.56V7.796h-3.52v7.722c0 2.95 1.357 4.864 4.118 4.864 1.955 0 3.29-.945 4.002-2.49h.207l.46 2.26h3.06V7.794zm1.698 12.355h3.06l.436-2.213h.207c.713 1.591 2.3 2.444 4.072 2.444 3.174 0 5.015-2.374 5.015-6.385 0-4.057-1.887-6.432-5.084-6.432-1.978 0-3.428 1.014-4.003 2.49h-.207V3h-3.496v17.15zm3.496-5.624v-1.06c0-1.845 1.173-3.043 2.99-3.043 1.657 0 2.738.853 2.738 2.581v1.983c0 1.521-.874 2.559-2.714 2.559-1.864 0-3.014-1.222-3.014-3.02zm21.8 5.855c4.21 0 7.177-2.351 7.683-6.063h-3.151c-.46 2.098-2.186 3.389-4.486 3.389-2.852 0-4.67-1.867-4.67-4.518v-2.743c0-2.882 1.887-4.634 4.716-4.634 2.53 0 4.072 1.36 4.44 3.366h3.151c-.368-3.665-3.243-6.063-7.499-6.063-5.038 0-7.982 3.274-7.982 8.668 0 5.348 2.898 8.598 7.798 8.598zm8.533-6.34c0 3.92 2.346 6.34 5.98 6.34 3.796 0 6.004-2.536 6.004-6.34 0-4.056-2.484-6.338-6.003-6.338-3.635 0-5.981 2.397-5.981 6.339zm2.898.992V13.12c0-1.89 1.22-3.066 3.083-3.066 1.817 0 3.082 1.152 3.082 3.066v1.913c0 1.96-1.288 2.997-3.082 2.997-1.749 0-3.083-1.015-3.083-2.997zM111.018 24h2.853v-6.132h.184c.667 1.453 2.116 2.398 4.186 2.398 3.083 0 4.992-2.26 4.992-6.293 0-3.942-1.863-6.27-4.992-6.27-1.863 0-3.427.852-4.186 2.397h-.184l-.345-2.167h-2.508V24zm6.211-6.063c-2.024 0-3.358-1.314-3.358-3.342v-1.222c0-2.005 1.31-3.342 3.381-3.342 2.002 0 3.037 1.152 3.037 2.881v2.144c0 1.815-1.16 2.849-2.973 2.88l-.087.001zm7.1-11.733h2.83V3.115h-2.83v3.09zm0 13.946h2.83V7.933h-2.83V20.15zm4.338 0h2.83V3.115h-2.83V20.15zm9.927-12.447c3.52 0 6.004 2.282 6.004 6.339 0 3.803-2.208 6.339-6.004 6.339-3.634 0-5.98-2.42-5.98-6.34 0-3.941 2.346-6.338 5.98-6.338zm10.922-3.689v3.919H152v2.328h-2.484v7.607H152v2.282h-2.99c-1.749 0-2.324-.922-2.324-2.282v-7.607h-2.185V7.933h2.185V4.014h2.83zm-10.922 6.04c-1.863 0-3.082 1.175-3.082 3.066v1.913c0 1.982 1.334 2.997 3.082 2.997 1.795 0 3.083-1.038 3.083-2.997V13.12c0-1.914-1.265-3.066-3.083-3.066z"})]}))});function Ha(t){"@babel/helpers - typeof";return Ha=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ha(t)}function Bb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function n$(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Bb(Object(n),!0).forEach(function(r){r$(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Bb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function r$(t,e,n){return e=s$(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function s$(t){var e=i$(t,"string");return Ha(e)=="symbol"?e:String(e)}function i$(t,e){if(Ha(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Ha(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function o$(t){if(t==null)throw new TypeError("Cannot destructure "+t)}var a$=g.memo(function(t){var e=Object.assign({},(o$(t),t));return c.jsx(fs,n$({Icon:$m,Text:wS,"aria-label":Ol,spaceMultiple:R9,textMultiple:T9},e))}),ao=$m;ao.Text=wS;ao.Combine=a$;ao.Avatar=Y9;ao.colorPrimary=vS;ao.title=Ol;var Ml="Goose",l$=.7,c$=.2,kS="#fff",d$=kS,u$="#000",h$=.65;function Va(t){"@babel/helpers - typeof";return Va=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Va(t)}var f$=["size","style"];function _b(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Ih(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?_b(Object(n),!0).forEach(function(r){p$(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):_b(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function p$(t,e,n){return e=m$(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function m$(t){var e=g$(t,"string");return Va(e)=="symbol"?e:String(e)}function g$(t,e){if(Va(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Va(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function x$(t,e){if(t==null)return{};var n=b$(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function b$(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var Bm=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=x$(t,f$);return c.jsxs("svg",Ih(Ih({fill:"currentColor",fillRule:"evenodd",height:n,style:Ih({flex:"none",lineHeight:1},r),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:Ml}),c.jsx("path",{d:"M21.595 23.61c1.167-.254 2.405-.944 2.405-.944l-2.167-1.784a12.124 12.124 0 01-2.695-3.131 12.127 12.127 0 00-3.97-4.049l-.794-.462a1.115 1.115 0 01-.488-.815.844.844 0 01.154-.575c.413-.582 2.548-3.115 2.94-3.44.503-.416 1.065-.762 1.586-1.159.074-.056.148-.112.221-.17.003-.002.007-.004.009-.007.167-.131.325-.272.45-.438.453-.524.563-.988.59-1.193-.061-.197-.244-.639-.753-1.148.319.02.705.272 1.056.569.235-.376.481-.773.727-1.171.165-.266-.08-.465-.086-.471h-.001V3.22c-.007-.007-.206-.25-.471-.086-.567.35-1.134.702-1.639 1.021 0 0-.597-.012-1.305.599a2.464 2.464 0 00-.438.45l-.007.009c-.058.072-.114.147-.17.221-.397.521-.743 1.083-1.16 1.587-.323.391-2.857 2.526-3.44 2.94a.842.842 0 01-.574.153 1.115 1.115 0 01-.815-.488l-.462-.794a12.123 12.123 0 00-4.049-3.97 12.133 12.133 0 01-3.13-2.695L1.332 0S.643 1.238.39 2.405c.352.428 1.27 1.49 2.34 2.302C1.58 4.167.73 3.75.06 3.4c-.103.765-.063 1.92.043 2.816.726.317 1.961.806 3.219 1.066-1.006.236-2.11.278-2.961.262.15.554.358 1.119.64 1.688.119.263.25.52.39.77.452.125 2.222.383 3.164.171l-2.51.897a27.776 27.776 0 002.544 2.726c2.031-1.092 2.494-1.241 4.018-2.238-2.467 2.008-3.108 2.828-3.8 3.67l-.483.678c-.25.351-.469.725-.65 1.117-.61 1.31-1.47 4.1-1.47 4.1-.154.486.202.842.674.674 0 0 2.79-.861 4.1-1.47.392-.182.766-.4 1.118-.65l.677-.483c.227-.187.453-.37.701-.586 0 0 1.705 2.02 3.458 3.349l.896-2.511c-.211.942.046 2.712.17 3.163.252.142.509.272.772.392.569.28 1.134.49 1.688.64-.016-.853.026-1.956.261-2.962.26 1.258.75 2.493 1.067 3.219.895.106 2.051.146 2.816.043a73.87 73.87 0 01-1.308-2.67c.811 1.07 1.874 1.988 2.302 2.34h-.001z"})]}))});function Wa(t){"@babel/helpers - typeof";return Wa=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Wa(t)}function Fb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function y$(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Fb(Object(n),!0).forEach(function(r){v$(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Fb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function v$(t,e,n){return e=w$(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function w$(t){var e=k$(t,"string");return Wa(e)=="symbol"?e:String(e)}function k$(t,e){if(Wa(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Wa(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function S$(t){if(t==null)throw new TypeError("Cannot destructure "+t)}var C$=g.memo(function(t){var e=Object.assign({},(S$(t),t));return c.jsx(hs,y$({Icon:Bm,"aria-label":Ml,background:d$,color:u$,iconMultiple:h$},e))});function Ka(t){"@babel/helpers - typeof";return Ka=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ka(t)}var j$=["size","style"];function zb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function $h(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?zb(Object(n),!0).forEach(function(r){N$(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):zb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function N$(t,e,n){return e=P$(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function P$(t){var e=D$(t,"string");return Ka(e)=="symbol"?e:String(e)}function D$(t,e){if(Ka(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Ka(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function E$(t,e){if(t==null)return{};var n=O$(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function O$(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var SS=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=E$(t,j$);return c.jsxs("svg",$h($h({fill:"currentColor",fillRule:"evenodd",height:n,style:$h({flex:"none",lineHeight:1},r),viewBox:"0 0 87 24",xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:Ml}),c.jsx("path",{d:"M17.122 16.607c0 4.696-3.219 7.393-7.774 7.393-3.674 0-6.255-1.546-7.257-4.637l3.401-1.21c.486 1.786 1.852 2.907 3.856 2.907 2.46 0 4.13-1.211 4.13-4.12v-1.122c-.85 1.121-2.46 2-4.494 2C4.61 17.818 2 14.273 2 9.909 2 5.546 4.611 2 8.984 2c2.004 0 3.644.879 4.494 2V2.303h3.644v14.303zm-3.583-6.85c0-2.908-1.58-4.575-3.857-4.575-2.52 0-4.008 1.757-4.008 4.727 0 2.94 1.488 4.727 4.008 4.727 2.278 0 3.857-1.666 3.857-4.515v-.363zM35.546 10.273c0 4.94-3.188 8.273-7.683 8.273-4.494 0-7.682-3.334-7.682-8.273C20.181 5.333 23.37 2 27.863 2c4.495 0 7.683 3.333 7.683 8.273zm-11.69 0c0 3.242 1.548 5.212 4.007 5.212 2.46 0 4.009-1.97 4.009-5.212 0-3.243-1.549-5.212-4.009-5.212-2.46 0-4.008 1.97-4.008 5.212zM52.957 10.273c0 4.94-3.188 8.273-7.682 8.273s-7.682-3.334-7.682-8.273C37.593 5.333 40.78 2 45.275 2s7.682 3.333 7.682 8.273zm-11.69 0c0 3.242 1.548 5.212 4.008 5.212s4.008-1.97 4.008-5.212c0-3.243-1.549-5.212-4.008-5.212-2.46 0-4.008 1.97-4.008 5.212zM54.336 15.182L57.069 13c.941 1.546 2.763 2.576 4.615 2.576 1.549 0 2.976-.546 2.976-1.97 0-1.364-1.336-1.515-3.856-2.03-2.52-.515-5.405-1.152-5.405-4.546 0-2.909 2.55-5.03 6.224-5.03 2.794 0 5.284 1.242 6.438 3L65.6 7.212c-.91-1.424-2.429-2.242-4.19-2.242-1.488 0-2.46.666-2.46 1.727 0 1.152 1.154 1.364 3.158 1.788 2.703.576 6.104 1.151 6.104 4.788 0 3.211-2.946 5.273-6.56 5.273-2.945 0-5.89-1.182-7.317-3.364zM77.965 18.546c-4.555 0-7.743-3.364-7.743-8.273 0-4.667 3.157-8.273 7.59-8.273 4.616 0 7.076 3.485 7.076 7.849v1.212H73.713c.274 2.727 1.913 4.394 4.252 4.394 1.791 0 3.218-.91 3.704-2.546l3.128 1.182c-1.124 2.787-3.644 4.455-6.832 4.455zm-.183-13.485c-1.882 0-3.34 1.12-3.886 3.272h7.318c-.03-1.757-1.124-3.272-3.432-3.272z"})]}))});function Ua(t){"@babel/helpers - typeof";return Ua=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ua(t)}function Hb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function M$(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Hb(Object(n),!0).forEach(function(r){A$(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Hb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function A$(t,e,n){return e=T$(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function T$(t){var e=R$(t,"string");return Ua(e)=="symbol"?e:String(e)}function R$(t,e){if(Ua(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Ua(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function L$(t){if(t==null)throw new TypeError("Cannot destructure "+t)}var I$=g.memo(function(t){var e=Object.assign({},(L$(t),t));return c.jsx(fs,M$({Icon:Bm,Text:SS,"aria-label":Ml,iconProps:{shape:"square"},spaceMultiple:c$,textMultiple:l$},e))}),lo=Bm;lo.Text=SS;lo.Combine=I$;lo.Avatar=C$;lo.colorPrimary=kS;lo.title=Ml;var Al="OpenAI",$$=.75,B$=.1,CS="#000",jS="#19C37D",NS="#AB68FF",PS="#F86AA4",_m="#F9C322",DS="#0099FF",ES="#0000FE",_$=CS,F$="#fff",z$=.75;function Ga(t){"@babel/helpers - typeof";return Ga=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ga(t)}var H$=["size","style"];function Vb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Bh(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Vb(Object(n),!0).forEach(function(r){V$(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Vb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function V$(t,e,n){return e=W$(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function W$(t){var e=K$(t,"string");return Ga(e)=="symbol"?e:String(e)}function K$(t,e){if(Ga(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Ga(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function U$(t,e){if(t==null)return{};var n=G$(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function G$(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var Fm=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=U$(t,H$);return c.jsxs("svg",Bh(Bh({fill:"currentColor",fillRule:"evenodd",height:n,style:Bh({flex:"none",lineHeight:1},r),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:Al}),c.jsx("path",{d:"M9.205 8.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.566 0 .167 0 .357-.024.547l-4.71-2.759a.797.797 0 00-.856 0l-5.97 3.473zm10.609 8.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473 1.95-1.118a.433.433 0 01.476 0l4.543 2.617c1.309.76 2.189 2.378 2.189 3.948 0 1.808-1.07 3.473-2.76 4.163zM7.802 12.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.067c-.285.166-.428.404-.428.737v6.898zM12 15.128l-2.795-1.57v-3.33L12 8.658l2.795 1.57v3.33L12 15.128zm1.796 7.23c-1 0-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482 4.482 0 014.21 6.327v5.423c0 .333.143.571.428.738l5.947 3.449-1.95 1.118a.432.432 0 01-.476 0zm-.262 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71c.286.167.571.167.856 0l5.97-3.448v2.26c0 .19-.07.333-.237.428l-4.543 2.616c-.619.357-1.356.523-2.117.523zm5.899 2.83a5.947 5.947 0 005.827-4.756C22.287 18.339 24 15.84 24 13.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498 0-3.401-2.759-5.947-5.946-5.947-.642 0-1.26.095-1.88.31A5.962 5.962 0 0010.205 0a5.947 5.947 0 00-5.827 4.757C1.713 5.447 0 7.945 0 10.49c0 1.666.713 3.283 1.998 4.448-.119.5-.19 1-.19 1.499 0 3.401 2.759 5.946 5.946 5.946.642 0 1.26-.095 1.88-.309a5.96 5.96 0 004.162 1.713z"})]}))});function qa(t){"@babel/helpers - typeof";return qa=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},qa(t)}var q$=["type"];function Wb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Y$(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Wb(Object(n),!0).forEach(function(r){X$(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Wb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function X$(t,e,n){return e=Q$(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Q$(t){var e=J$(t,"string");return qa(e)=="symbol"?e:String(e)}function J$(t,e){if(qa(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(qa(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function Z$(t,e){if(t==null)return{};var n=eB(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function eB(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var tB=g.memo(function(t){var e=t.type,n=e===void 0?"normal":e,r=Z$(t,q$),s=g.useMemo(function(){switch(n){case"gpt3":return jS;case"gpt4":return NS;case"gpt5":return PS;case"o3":case"o1":return _m;case"oss":return DS;case"platform":return ES;default:return _$}},[n]);return c.jsx(hs,Y$({Icon:Fm,"aria-label":Al,background:s,color:F$,iconMultiple:z$},r))});function Ya(t){"@babel/helpers - typeof";return Ya=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ya(t)}var nB=["size","style"];function Kb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function _h(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Kb(Object(n),!0).forEach(function(r){rB(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Kb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function rB(t,e,n){return e=sB(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function sB(t){var e=iB(t,"string");return Ya(e)=="symbol"?e:String(e)}function iB(t,e){if(Ya(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Ya(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function oB(t,e){if(t==null)return{};var n=aB(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function aB(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var OS=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=oB(t,nB);return c.jsxs("svg",_h(_h({fill:"currentColor",fillRule:"evenodd",height:n,style:_h({flex:"none",lineHeight:1},r),viewBox:"0 0 86 24",xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:Al}),c.jsx("path",{d:"M10.703 2C5.916 2 2 5.916 2 10.703c0 4.787 3.916 8.704 8.703 8.704 4.787 0 8.704-3.893 8.704-8.704A8.698 8.698 0 0010.703 2zm0 14.288c-2.973 0-5.367-2.442-5.367-5.585S7.73 5.12 10.703 5.12c2.974 0 5.367 2.441 5.367 5.584s-2.393 5.585-5.367 5.585zM28.206 6.835c-1.57 0-3.094.629-3.892 1.693v-1.45h-3.143V24h3.143v-6.116c.798.99 2.273 1.523 3.892 1.523 3.385 0 6.045-2.66 6.045-6.286 0-3.626-2.66-6.286-6.044-6.286zm-.531 9.84c-1.79 0-3.385-1.402-3.385-3.554s1.596-3.554 3.385-3.554c1.789 0 3.384 1.402 3.384 3.554s-1.595 3.554-3.384 3.554zM41.649 6.835c-3.433 0-6.141 2.684-6.141 6.286 0 3.602 2.37 6.286 6.237 6.286 3.167 0 5.198-1.91 5.827-4.062h-3.07c-.388.895-1.475 1.523-2.78 1.523-1.62 0-2.854-1.136-3.144-2.756h9.139V12.88c0-3.288-2.297-6.044-6.068-6.044zm-3.047 5.053c.339-1.523 1.596-2.514 3.12-2.514 1.619 0 2.852 1.064 2.997 2.514h-6.117zM56.081 6.835c-1.402 0-2.877.629-3.553 1.669V7.077h-3.143v12.088h3.143v-6.503c0-1.886 1.015-3.119 2.659-3.119 1.523 0 2.345 1.16 2.345 2.78v6.842h3.143v-7.35c0-2.997-1.838-4.98-4.594-4.98zM68.724 2.242l-6.841 16.923h3.36l1.45-3.699h7.785l1.45 3.7h3.41L72.543 2.241h-3.82zm-.943 10.42l2.805-7.084 2.78 7.084H67.78zM83.81 2.242h-3.191v16.923h3.19V2.242z"})]}))});function Xa(t){"@babel/helpers - typeof";return Xa=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Xa(t)}var lB=["extraStyle"];function Ub(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Gb(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Ub(Object(n),!0).forEach(function(r){cB(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Ub(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function cB(t,e,n){return e=dB(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function dB(t){var e=uB(t,"string");return Xa(e)=="symbol"?e:String(e)}function uB(t,e){if(Xa(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Xa(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function hB(t,e){if(t==null)return{};var n=fB(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function fB(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var pB=g.memo(function(t){var e=t.extraStyle,n=hB(t,lB);return c.jsx(fs,Gb({Icon:Fm,Text:OS,"aria-label":Al,extraStyle:Gb({fontWeight:600},e),spaceMultiple:B$,textMultiple:$$},n))}),xn=Fm;xn.Text=OS;xn.Combine=pB;xn.Avatar=tB;xn.colorPrimary=CS;xn.colorGpt3=jS;xn.colorGpt4=NS;xn.colorGpt5=PS;xn.colorO1=_m;xn.colorO3=_m;xn.colorOss=DS;xn.colorPlatform=ES;xn.title=Al;var Tl="Windsurf",mB=.7,gB=.2,MS="#fff",xB=MS,bB="#000",yB=.75;function Qa(t){"@babel/helpers - typeof";return Qa=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Qa(t)}var vB=["size","style"];function qb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Fh(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?qb(Object(n),!0).forEach(function(r){wB(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):qb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function wB(t,e,n){return e=kB(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function kB(t){var e=SB(t,"string");return Qa(e)=="symbol"?e:String(e)}function SB(t,e){if(Qa(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Qa(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function CB(t,e){if(t==null)return{};var n=jB(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function jB(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var zm=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=CB(t,vB);return c.jsxs("svg",Fh(Fh({fill:"currentColor",fillRule:"evenodd",height:n,style:Fh({flex:"none",lineHeight:1},r),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:Tl}),c.jsx("path",{clipRule:"evenodd",d:"M23.78 5.004h-.228a2.187 2.187 0 00-2.18 2.196v4.912c0 .98-.804 1.775-1.76 1.775a1.818 1.818 0 01-1.472-.773L13.168 5.95a2.197 2.197 0 00-1.81-.95c-1.134 0-2.154.972-2.154 2.173v4.94c0 .98-.797 1.775-1.76 1.775-.57 0-1.136-.289-1.472-.773L.408 5.098C.282 4.918 0 5.007 0 5.228v4.284c0 .216.066.426.188.604l5.475 7.889c.324.466.8.812 1.351.938 1.377.316 2.645-.754 2.645-2.117V11.89c0-.98.787-1.775 1.76-1.775h.002c.586 0 1.135.288 1.472.773l4.972 7.163a2.15 2.15 0 001.81.95c1.158 0 2.151-.973 2.151-2.173v-4.939c0-.98.787-1.775 1.76-1.775h.194c.122 0 .22-.1.22-.222V5.225a.221.221 0 00-.22-.222z"})]}))});function Ja(t){"@babel/helpers - typeof";return Ja=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ja(t)}function Yb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function NB(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Yb(Object(n),!0).forEach(function(r){PB(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Yb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function PB(t,e,n){return e=DB(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function DB(t){var e=EB(t,"string");return Ja(e)=="symbol"?e:String(e)}function EB(t,e){if(Ja(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Ja(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function OB(t){if(t==null)throw new TypeError("Cannot destructure "+t)}var MB=g.memo(function(t){var e=Object.assign({},(OB(t),t));return c.jsx(hs,NB({Icon:zm,"aria-label":Tl,background:xB,color:bB,iconMultiple:yB},e))});function Za(t){"@babel/helpers - typeof";return Za=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Za(t)}var AB=["size","style"];function Xb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function zh(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Xb(Object(n),!0).forEach(function(r){TB(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Xb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function TB(t,e,n){return e=RB(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function RB(t){var e=LB(t,"string");return Za(e)=="symbol"?e:String(e)}function LB(t,e){if(Za(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Za(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function IB(t,e){if(t==null)return{};var n=$B(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function $B(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var AS=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=IB(t,AB);return c.jsxs("svg",zh(zh({fill:"currentColor",fillRule:"evenodd",height:n,style:zh({flex:"none",lineHeight:1},r),viewBox:"0 0 111 24",xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:Tl}),c.jsx("path",{clipRule:"evenodd",d:"M33.412 7.182h-1.715a.316.316 0 00-.315.316v13.79c0 .174.14.316.315.316h1.715a.316.316 0 00.316-.317V7.498a.316.316 0 00-.316-.316zm-1.772-5.18h1.828c.174 0 .315.141.315.316V4.57a.316.316 0 01-.315.316H31.64a.316.316 0 01-.315-.316V2.318c0-.175.141-.317.315-.317zM43.676 6.79c-1.927 0-3.324.671-4.218 1.653a.457.457 0 01-.782-.322v-.623a.316.316 0 00-.316-.316h-1.686a.316.316 0 00-.316.316v13.79c0 .174.142.316.316.316h1.687a.316.316 0 00.316-.317v-8.729c0-3.025.587-3.697 3.8-3.697s3.742.533 3.742 3.557v8.868c0 .175.142.317.316.317h1.715a.316.316 0 00.316-.317v-9.513c0-3.445-1.956-4.986-4.889-4.986v.003h-.001zm17.518 1.849a.457.457 0 00.782-.322V2.319c0-.175.142-.316.316-.316h1.687c.174 0 .316.141.316.316v18.97a.316.316 0 01-.316.316h-1.687a.316.316 0 01-.316-.316v-.819c.017-.418-.489-.62-.782-.322-.81 1.008-2.374 1.848-4.47 1.848-3.685 0-6.088-2.632-6.088-7.533 0-5.18 2.68-7.673 6.172-7.673 2.095 0 3.604.84 4.386 1.849zm-8.018 5.767c0 4.733.587 5.434 4.414 5.434 3.8 0 4.386-.701 4.386-5.434 0-4.733-.559-5.461-4.386-5.461s-4.414.728-4.414 5.461zm20.924-.894l-2.763-.476c-2.04-.364-2.404-.98-2.404-2.045.028-1.457.587-2.184 3.296-2.184 2.538 0 3.35.752 3.525 2.376.017.16.152.284.313.284h1.677c.18 0 .326-.151.316-.333-.163-2.788-2.709-4.346-5.746-4.346-3.408 0-5.67 1.82-5.67 4.426 0 2.38 1.844 3.417 4.05 3.837l3.046.56c1.676.31 2.235.87 2.235 1.933 0 1.709-.587 2.437-3.464 2.437s-3.673-.832-3.858-2.518a.315.315 0 00-.313-.282h-1.687a.318.318 0 00-.317.325c.08 3.004 2.797 4.493 6.034 4.493 3.52 0 5.949-1.82 5.949-4.566 0-2.408-1.845-3.501-4.219-3.921zm12.21 6.414c3.128 0 3.715-.672 3.715-3.697V7.502c0-.174.141-.316.316-.316h1.714c.175 0 .316.142.316.316v13.79a.316.316 0 01-.316.316h-1.714a.316.316 0 01-.316-.317v-.6c-.007-.429-.45-.642-.755-.343-.892.98-2.289 1.652-4.161 1.652-2.877 0-4.833-1.54-4.833-4.986V7.501c0-.175.142-.317.316-.317h1.715c.174 0 .316.142.316.317v8.868c0 3.024.558 3.557 3.687 3.557zm19.782-12.744v-1.85c0-.727.588-1.316 1.314-1.316h1.276a.316.316 0 00.315-.317V2.317a.316.316 0 00-.315-.317h-.885c-2.514 0-4.051 1.4-4.051 3.81v1.372h-1.859c-1.647.002-2.94.229-3.803 1.26-.317.302-.755.076-.755-.36V7.5a.316.316 0 00-.315-.317h-1.715a.316.316 0 00-.316.317v13.789c0 .174.141.316.316.316h1.715a.316.316 0 00.315-.316v-8.645c0-2.857.727-3.528 3.855-3.528h2.562V21.29c0 .175.141.317.316.317h1.715a.316.316 0 00.315-.317V9.116h2.593a.316.316 0 00.315-.317V7.501a.316.316 0 00-.315-.317h-2.593v-.002zM21.834 18.008a.561.561 0 001.091.005l3.933-15.772A.318.318 0 0127.166 2h1.963c.21 0 .363.199.31.403l-4.947 18.972a.305.305 0 01-.295.228h-3.502a.31.31 0 01-.3-.234L16.285 5.5a.56.56 0 00-.543-.42h-.036a.562.562 0 00-.542.42l-4.11 15.87a.31.31 0 01-.299.234H7.253a.304.304 0 01-.295-.228L2.011 2.403A.321.321 0 012.32 2h1.963c.145 0 .272.1.308.241l3.932 15.772a.56.56 0 001.09-.005l3.78-15.764A.316.316 0 0113.7 2h4.047c.146 0 .273.1.307.244l3.779 15.764z"})]}))});function el(t){"@babel/helpers - typeof";return el=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},el(t)}function Qb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function BB(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Qb(Object(n),!0).forEach(function(r){_B(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Qb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function _B(t,e,n){return e=FB(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function FB(t){var e=zB(t,"string");return el(e)=="symbol"?e:String(e)}function zB(t,e){if(el(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(el(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function HB(t){if(t==null)throw new TypeError("Cannot destructure "+t)}var VB=g.memo(function(t){var e=Object.assign({},(HB(t),t));return c.jsx(fs,BB({Icon:zm,Text:AS,"aria-label":Tl,iconProps:{shape:"square"},spaceMultiple:gB,textMultiple:mB},e))}),co=zm;co.Text=AS;co.Combine=VB;co.Avatar=MB;co.colorPrimary=MS;co.title=Tl;const WB={"claude-code":Xs.Avatar,cursor:oo.Avatar,codex:xn.Avatar,"gemini-cli":Qs.Avatar,goose:lo.Avatar,"github-copilot":ao.Avatar,windsurf:co.Avatar,cline:io.Avatar},KB={antigravity:"/agents/antigravity.png",droid:"/agents/droid.png",opencode:"/agents/opencode.svg",amp:"/agents/amp.png",kilo:"/agents/kilo.png",roo:"/agents/roo.png",openhands:"/agents/openhands.png"};function UB(t){return t.split(/\s+/).map(e=>e[0]).join("").toUpperCase().slice(0,2)}const TS=({agentName:t,displayName:e,size:n=20})=>{const r=WB[t];if(r)return c.jsx(r,{size:n});const s=KB[t];return s?c.jsx("img",{src:s,alt:e,className:"rounded object-contain",style:{width:n,height:n}}):c.jsx("div",{className:"flex items-center justify-center rounded bg-dash-surface-hover text-dash-text-muted font-semibold",style:{width:n,height:n,fontSize:n*.45},children:UB(e)})};function Hh(t){return JSON.stringify([t.provider,t.type,t.item,t.global])}function GB(t){if(typeof t=="string"){const e=t.trim();return e.length>0?e:null}if(typeof t=="object"&&t!==null){const e=t;for(const n of["message","error","detail","details","reason"]){const r=e[n];if(typeof r=="string"&&r.trim().length>0)return r.trim()}}return null}async function Vh(t,e){const r=(await t.text().catch(()=>"")).trim();if(!r)return e;try{const s=JSON.parse(r);return GB(s)||e}catch{return r}}function qB(){const[t,e]=g.useState("idle"),[n,r]=g.useState(null),[s,i]=g.useState(new Map),[o,a]=g.useState(null),[l,d]=g.useState(null),[u,h]=g.useState(null),[f,p]=g.useState(null),m=g.useRef(0),x=g.useRef(0),b=g.useRef(null),y=g.useRef(null),w=g.useCallback(async S=>{e("reconciling"),d(null),a(null),m.current+=1;const E=m.current;b.current?.abort();const O=new AbortController;b.current=O;try{const P=new URLSearchParams({providers:S.providers.join(","),global:String(S.global),agents:String(S.include.agents??!0),commands:String(S.include.commands??!0),skills:String(S.include.skills??!0),config:String(S.include.config??!0),rules:String(S.include.rules??!0),hooks:String(S.include.hooks??!0)});S.source&&P.set("source",S.source),S.reinstallEmptyDirs!==void 0&&P.set("reinstallEmptyDirs",String(S.reinstallEmptyDirs)),S.respectDeletions!==void 0&&P.set("respectDeletions",String(S.respectDeletions));const A=await fetch(`/api/migrate/reconcile?${P.toString()}`,{signal:O.signal});if(!A.ok){const j=await Vh(A,"Failed to reconcile migration plan");throw new Error(j)}const I=await A.json();if(E!==m.current)return;r(I.plan),(I.suggestedMode==="reconcile"||I.suggestedMode==="install")&&h(I.suggestedMode),i(new Map),e("reviewing")}catch(P){if(O.signal.aborted||P instanceof DOMException&&P.name==="AbortError"||E!==m.current)return;d(P instanceof Error?P.message:"Failed to reconcile"),e("error")}},[]),v=g.useCallback(async S=>{e("reconciling"),d(null),a(null),m.current+=1;const E=m.current;b.current?.abort();const O=new AbortController;b.current=O;try{const P=new URLSearchParams({providers:S.providers.join(","),global:String(S.global),agents:String(S.include.agents??!0),commands:String(S.include.commands??!0),skills:String(S.include.skills??!0),config:String(S.include.config??!0),rules:String(S.include.rules??!0),hooks:String(S.include.hooks??!0)});S.source&&P.set("source",S.source);const A=await fetch(`/api/migrate/install-discovery?${P.toString()}`,{signal:O.signal});if(!A.ok){const j=await Vh(A,"Failed to fetch install candidates");throw new Error(j)}const I=await A.json();if(E!==m.current)return;p(I.candidates??[]),e("reviewing")}catch(P){if(O.signal.aborted||P instanceof DOMException&&P.name==="AbortError"||E!==m.current)return;d(P instanceof Error?P.message:"Failed to fetch candidates"),e("error")}},[]),k=g.useCallback((S,E)=>{i(O=>{const P=new Map(O);return P.set(Hh(S),E),P})},[]),C=g.useCallback(async(S,E)=>{const O=S??n;if(!O)return d("No plan to execute"),e("error"),!1;e("executing"),d(null),x.current+=1;const P=x.current;y.current?.abort();const A=new AbortController;y.current=A;try{const I=Object.fromEntries(s.entries()),j={plan:O,resolutions:I};E&&(j.mode=E);const M=await fetch("/api/migrate/execute",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(j),signal:A.signal});if(P!==x.current)return!1;if(!M.ok){const L=await Vh(M,"Failed to execute migration");if(M.status===501)return d(L||"Plan execution is not available in this server build"),e("reviewing"),!1;throw new Error(L)}const T=await M.json();return P!==x.current?!1:(a({results:T.results,counts:T.counts,warnings:T.warnings??[],discovery:T.discovery}),e("complete"),!0)}catch(I){return A.signal.aborted||I instanceof DOMException&&I.name==="AbortError"||P!==x.current||(d(I instanceof Error?I.message:"Failed to execute migration"),e("error")),!1}},[n,s]),N=g.useCallback(()=>{b.current?.abort(),y.current?.abort(),e("idle"),r(null),i(new Map),a(null),d(null),p(null)},[]),D=g.useMemo(()=>n?n.actions.filter(S=>S.action==="conflict").every(S=>s.has(Hh(S))):!0,[n,s]);return{phase:t,plan:n,resolutions:s,results:o,error:l,suggestedMode:u,installCandidates:f,reconcile:w,fetchCandidates:v,resolve:k,execute:C,reset:N,allConflictsResolved:D,actionKey:Hh}}const YB={agents:!0,commands:!0,skills:!0,config:!0,rules:!0,hooks:!0},jn=["agents","commands","skills","config","rules","hooks"],js={agents:"migrateTypeAgents",commands:"migrateTypeCommands",skills:"migrateTypeSkills",config:"migrateTypeConfig",rules:"migrateTypeRules",hooks:"migrateTypeHooks"},RS=new Set(["user-deleted-respected","user-edits-preserved","target-state-unknown"]),Jb={detected:"#D4A574","not-detected":"#8B9DC3"},qt=({label:t,value:e,tone:n="default"})=>{const r=n==="accent"?"text-dash-accent":n==="success"?"text-green-400":"text-dash-text";return c.jsxs("div",{className:"rounded-lg border border-dash-border bg-dash-bg/70 px-3 py-2.5",children:[c.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-wide text-dash-text-muted",children:t}),c.jsx("p",{className:`mt-1 text-lg font-semibold ${r}`,children:e})]})};function Zb(t,e){return t.success?t.skipped?{label:e("migrateStatusSkipped"),className:"text-yellow-400"}:{label:e("migrateStatusInstalled"),className:"text-green-400"}:{label:e("migrateStatusFailed"),className:"text-red-400"}}const XB=new Set([8203,8204,8205,8288,65279,8232,8233,8234,8235,8236,8237,8238,8294,8295,8296,8297]);function QB(t){return t===9||t===10||t===13?!0:t>=0&&t<=8||t>=11&&t<=31||t>=127&&t<=159||XB.has(t)}function ey(t){let e="";for(const n of t){const r=n.codePointAt(0);r!==void 0&&(QB(r)||(e+=n))}return e}function JB(t){const e={install:0,update:0,skip:0,conflict:0,delete:0};for(const n of t)e[n.action]+=1;return e}function ZB(t,e){if(!e)return t;if(e==="skip")return{...t,action:"skip"};if(t.action!=="skip"||t.reasonCode===void 0||!RS.has(t.reasonCode))return t;const n=t.reasonCode==="source-removed-orphan"||t.reasonCode==="renamed-cleanup"||t.reasonCode==="path-migrated-cleanup"?"delete":"install";return{...t,action:n}}function e_(t,e,n){if(e.size===0)return t;const r=t.actions.map(i=>ZB(i,e.get(n(i)))),s=JB(r);return{...t,actions:r,summary:s,hasConflicts:s.conflict>0}}const t_=({provider:t,include:e,isSelected:n,cardClickToggles:r,onToggleSelect:s,onOpenDetails:i,t:o})=>{const a=jn.filter(d=>t.capabilities[d]).length,l=jn.some(d=>e[d]&&!t.capabilities[d]);return c.jsxs("div",{className:`relative rounded-xl border px-4 py-3 cursor-pointer transition-all ${n?"bg-dash-accent-subtle border-dash-accent/30 shadow-sm shadow-dash-accent/10":l?"bg-dash-surface border-yellow-500/25 hover:bg-dash-surface-hover hover:border-yellow-500/40":"bg-dash-surface border-dash-border hover:bg-dash-surface-hover hover:border-dash-accent/25"}`,children:[c.jsx("button",{type:"button",onClick:()=>r?s(t.name):i(t.name),"aria-label":r?`${t.displayName} deselect`:`${t.displayName} details`,className:"absolute inset-0 z-10 rounded-xl dash-focus-ring"}),c.jsxs("div",{className:"relative flex flex-col gap-3 lg:grid lg:grid-cols-[minmax(0,1.25fr)_140px_minmax(0,220px)_auto] lg:items-center lg:gap-4",children:[c.jsxs("div",{className:"min-w-0 space-y-1.5",children:[c.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[c.jsx(TS,{agentName:t.name,displayName:t.displayName,size:18}),c.jsx("span",{className:"text-sm font-semibold text-dash-text truncate",children:t.displayName}),t.recommended&&c.jsx("span",{className:"text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded border border-dash-accent/30 text-dash-accent",children:o("migrateFilterRecommended")}),t.commandsGlobalOnly&&c.jsx("span",{className:"text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded border border-yellow-500/30 text-yellow-400",children:o("migrateGlobalOnlyCommandsShort")})]}),c.jsxs("div",{className:"text-xs text-dash-text-muted truncate",children:[t.name," · ",a,"/",jn.length," ",o("migrateCapabilitiesLabel")]})]}),c.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 text-[11px] lg:flex-col lg:items-start lg:gap-1",children:[c.jsx("span",{className:t.detected?"text-dash-accent":"text-dash-text-muted",children:t.detected?o("migrateDetectedTag"):o("migrateNotDetectedTag")}),c.jsx("span",{className:"text-dash-text-muted",children:t.recommended?o("migrateFilterRecommended"):"-"})]}),c.jsx("div",{className:"flex flex-wrap gap-1",children:jn.map(d=>{const u=t.capabilities[d],h=e[d];return c.jsx("span",{className:`text-[10px] uppercase px-1.5 py-0.5 rounded border ${u&&h?"border-dash-accent/45 text-dash-accent":u?"border-dash-border text-dash-text-secondary":"border-dash-border text-dash-text-muted opacity-60"}`,children:o(js[d])},d)})}),c.jsx("div",{className:"relative z-20 flex justify-start lg:justify-end",children:c.jsx("button",{type:"button",onClick:d=>{d.stopPropagation(),s(t.name)},className:`dash-focus-ring px-4 py-1.5 text-xs font-semibold rounded-md transition-colors ${n?"bg-transparent text-dash-text-secondary border border-dash-border hover:bg-dash-surface-hover":"bg-dash-accent text-white hover:bg-dash-accent/90"}`,children:o(n?"migrateSelectedButton":"migrateSelectButton")})})]})]})},n_=({provider:t,include:e,isSelected:n,latestResult:r,onToggleSelect:s,onClose:i,t:o})=>{const a=g.useRef(null),l=g.useRef(null),d=g.useCallback(()=>{const f=l.current;l.current=null,f&&document.contains(f)&&f.focus()},[]),u=g.useCallback(()=>{i(),d()},[i,d]),h=g.useCallback(()=>{const f=a.current;if(f?.open){f.close();return}i(),d()},[i,d]);return g.useEffect(()=>{const f=a.current;if(f){if(!f.open){l.current=document.activeElement instanceof HTMLElement?document.activeElement:null;try{f.showModal()}catch{d(),i()}}return()=>{if(f.open){f.close();return}d()}}},[i,d]),c.jsx("dialog",{ref:a,"aria-label":t.displayName,onClose:u,onCancel:f=>{f.preventDefault(),h()},onClick:f=>{f.target===f.currentTarget&&h()},className:"fixed inset-0 z-50 m-0 h-full max-h-none w-full max-w-none overflow-hidden border-0 bg-transparent p-0 backdrop:bg-black/50",children:c.jsxs("div",{className:"ml-auto h-full w-full sm:w-[460px] bg-dash-surface border-l border-dash-border shadow-2xl flex flex-col animate-slide-in",children:[c.jsx("div",{className:"px-6 py-5 border-b border-dash-border",children:c.jsxs("div",{className:"flex items-start justify-between gap-3",children:[c.jsxs("div",{className:"min-w-0",children:[c.jsxs("div",{className:"flex items-center gap-2.5",children:[c.jsx(TS,{agentName:t.name,displayName:t.displayName,size:22}),c.jsx("h2",{className:"text-xl font-bold text-dash-text truncate",children:t.displayName})]}),c.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 mt-2",children:[c.jsx("span",{className:"text-[11px] text-dash-text-muted font-mono",children:t.name}),c.jsx("span",{className:`text-[10px] uppercase tracking-wide px-2 py-0.5 rounded border ${t.detected?"border-dash-accent/30 text-dash-accent":"border-dash-border text-dash-text-muted"}`,children:t.detected?o("migrateDetectedTag"):o("migrateNotDetectedTag")}),t.recommended&&c.jsx("span",{className:"text-[10px] uppercase tracking-wide px-2 py-0.5 rounded border border-dash-accent/30 text-dash-accent",children:o("migrateFilterRecommended")})]})]}),c.jsx("button",{type:"button",onClick:h,"aria-label":o("detailPanelClose"),className:"w-8 h-8 flex items-center justify-center rounded-md text-dash-text-muted hover:bg-dash-surface-hover hover:text-dash-text transition-colors",children:c.jsxs("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:[c.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18",strokeWidth:2}),c.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18",strokeWidth:2})]})})]})}),c.jsxs("div",{className:"flex-1 overflow-y-auto px-6 py-5 space-y-6",children:[c.jsxs("div",{children:[c.jsx("h3",{className:"text-[11px] font-bold uppercase tracking-wide text-dash-text-muted mb-2.5",children:o("migrateCapabilitiesSection")}),c.jsx("div",{className:"space-y-1.5",children:jn.map(f=>{const p=t.capabilities[f],m=e[f];return c.jsxs("div",{className:"flex items-center justify-between px-3 py-2 bg-dash-bg rounded-md",children:[c.jsx("span",{className:"text-sm text-dash-text",children:o(js[f])}),c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx("span",{className:`text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded border ${m?"border-dash-accent/35 text-dash-accent":"border-dash-border text-dash-text-muted"}`,children:o(m?"migrateIncludedEnabled":"migrateIncludedDisabled")}),c.jsx("span",{className:`text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded border ${p?"border-green-500/35 text-green-400":"border-red-500/30 text-red-400"}`,children:o(p?"migrateSupported":"migrateUnsupportedShort")})]})]},f)})})]}),t.commandsGlobalOnly&&e.commands&&c.jsx("div",{className:"px-3 py-2 border border-yellow-500/30 bg-yellow-500/10 rounded text-xs text-yellow-400",children:o("migrateGlobalForced")}),c.jsxs("div",{children:[c.jsx("h3",{className:"text-[11px] font-bold uppercase tracking-wide text-dash-text-muted mb-2.5",children:o("migrateLatestTarget")}),r?c.jsxs("div",{className:"px-3 py-2 bg-dash-bg rounded-md border border-dash-border space-y-2",children:[c.jsxs("div",{className:"flex items-center justify-between",children:[c.jsx("span",{className:"text-xs text-dash-text-muted",children:o("migrateStatus")}),c.jsx("span",{className:`text-xs font-semibold ${Zb(r,o).className}`,children:Zb(r,o).label})]}),c.jsx("p",{className:"text-xs font-mono text-dash-text break-all",children:ey(r.path||"-")}),(r.error||r.skipReason)&&c.jsx("p",{className:"text-xs text-red-400 break-words",children:ey(r.error||r.skipReason||"-")})]}):c.jsx("p",{className:"text-sm text-dash-text-muted",children:o("migrateNoResultForProvider")})]})]}),c.jsxs("div",{className:"px-6 py-4 border-t border-dash-border flex items-center justify-between gap-2",children:[c.jsx("button",{type:"button",onClick:()=>s(t.name),className:`px-4 py-2 text-sm font-semibold rounded-md transition-colors ${n?"bg-transparent text-dash-text-secondary border border-dash-border hover:bg-dash-surface-hover":"bg-dash-accent text-white hover:bg-dash-accent/90"}`,children:o(n?"migrateUnselectProvider":"migrateSelectProviderAction")}),c.jsx("button",{type:"button",onClick:h,"aria-label":o("detailPanelClose"),className:"px-4 py-2 text-sm font-medium rounded-md border border-dash-border text-dash-text-secondary hover:bg-dash-surface-hover",children:o("detailPanelClose")})]})]})})},r_=()=>{const{t}=te(),e=qB(),[n,r]=g.useState([]),[s,i]=g.useState(null),[o,a]=g.useState([]),[l,d]=g.useState(YB),[u,h]=g.useState(!0),[f,p]=g.useState(!0),[m,x]=g.useState(!1),[b,y]=g.useState(null),[w,v]=g.useState(""),k=g.useDeferredValue(w),[C,N]=g.useState("all"),[D,S]=g.useState(null),E=g.useRef(0),[O,P]=g.useState("reconcile"),A=g.useRef(!1),[I,j]=g.useState(new Map),[M,T]=g.useState(new Set);g.useEffect(()=>{if(A.current||!e.suggestedMode)return;if(e.suggestedMode===O){A.current=!0;return}const U=e.plan?.summary;if(U?U.install+U.update+U.delete+U.conflict>0:!1){A.current=!0;return}A.current=!0,P(e.suggestedMode)},[e.suggestedMode,e.plan,O]),g.useEffect(()=>{e.installCandidates&&T(zT(e.installCandidates))},[e.installCandidates]);const L=I.size+e.resolutions.size,F=g.useCallback((U,ne)=>{const me=e.actionKey(U),je=U.action==="skip"?"skip":"execute",kt=U.action!=="skip"||U.reasonCode!==void 0&&RS.has(U.reasonCode);j(In=>{const rn=new Map(In);return ne===je||ne==="execute"&&!kt?rn.delete(me):rn.set(me,ne),rn})},[e]),$=g.useCallback(U=>{P(U),j(new Map),e.reset()},[e]),V=g.useCallback(()=>{j(new Map),e.reset()},[e]),W=g.useCallback(async(U=!1)=>{E.current+=1;const ne=E.current;try{U?x(!0):p(!0),y(null);const[me,je]=await Promise.all([I4(),_u()]);if(ne!==E.current)return;r(me.providers),i(je),a(kt=>{if(kt.length===0)return[];const In=me.providers.map(rn=>rn.name);return kt.filter(rn=>In.includes(rn))})}catch(me){if(ne!==E.current)return;y(me instanceof Error?me.message:t("migrateDetectFailed"))}finally{ne===E.current&&(p(!1),x(!1))}},[t]);g.useEffect(()=>{W()},[W]);const H=g.useMemo(()=>{const U=new Map;for(const ne of n)U.set(ne.name,ne);return U},[n]),J=g.useMemo(()=>D&&H.get(D)||null,[D,H]);g.useEffect(()=>{D&&!H.has(D)&&S(null)},[D,H]);const G=g.useCallback(()=>{S(null)},[]),Z=g.useMemo(()=>new Set(o),[o]),re=g.useMemo(()=>n.filter(U=>U.detected).length,[n]),se=o.length,_=g.useMemo(()=>n.filter(U=>U.recommended).length,[n]),Y=g.useMemo(()=>jn.filter(U=>l[U]).length,[l]),ee=g.useMemo(()=>{const U=[];l.commands&&!u&&o.some(ne=>H.get(ne)?.commandsGlobalOnly)&&U.push(t("migrateGlobalForced"));for(const ne of jn){if(!l[ne])continue;const me=o.filter(je=>!H.get(je)?.capabilities[ne]).map(je=>H.get(je)?.displayName||je);me.length>0&&U.push(`${t("migrateUnsupported")}: ${t(js[ne])} -> ${me.join(", ")}`)}return U},[l,u,H,o,t]),ce=g.useCallback(U=>{if(U==="codex"){a(["codex"]);return}if(U==="antigravity"){a(["antigravity"]);return}if(U==="core"){const me=["codex","antigravity","droid"].filter(je=>n.some(kt=>kt.name===je));a(me);return}const ne=n.filter(me=>me.detected).map(me=>me.name);a(ne)},[n]),ie=g.useCallback(U=>{a(ne=>ne.includes(U)?ne.filter(me=>me!==U):[...ne,U])},[]),oe=g.useCallback(U=>{d(ne=>({...ne,[U]:!ne[U]}))},[]),fe=g.useMemo(()=>{const U=[...n];return U.sort((ne,me)=>{const je=Z.has(ne.name),kt=Z.has(me.name);return je!==kt?je?-1:1:ne.detected!==me.detected?ne.detected?-1:1:ne.recommended!==me.recommended?ne.recommended?-1:1:ne.displayName.localeCompare(me.displayName)}),U},[n,Z]),xe=g.useMemo(()=>{const U=k.trim().toLowerCase();return fe.filter(ne=>{if(C==="selected"&&!Z.has(ne.name)||C==="detected"&&!ne.detected||C==="recommended"&&!ne.recommended||C==="not-detected"&&ne.detected)return!1;if(!U)return!0;const me=jn.filter(je=>ne.capabilities[je]).map(je=>t(js[je]).toLowerCase());return ne.displayName.toLowerCase().includes(U)||ne.name.toLowerCase().includes(U)||me.some(je=>je.includes(U))})},[k,C,Z,fe,t]),Pe=g.useMemo(()=>{const U=xe.filter(je=>je.detected),ne=xe.filter(je=>!je.detected),me=[];return U.length>0&&me.push({key:"detected",label:t("migrateDetectedTag"),providers:U}),ne.length>0&&me.push({key:"not-detected",label:t("migrateNotDetectedTag"),providers:ne}),me},[xe,t]),Ae=g.useMemo(()=>({all:n.length,selected:se,detected:n.filter(U=>U.detected).length,recommended:n.filter(U=>U.recommended).length,"not-detected":n.filter(U=>!U.detected).length}),[n,se]),Je=g.useMemo(()=>xe.map(U=>U.name),[xe]),mt=g.useCallback(()=>{a(U=>{const ne=new Set(U);for(const me of Je)ne.add(me);return Array.from(ne)})},[Je]),qe=g.useCallback(()=>{a([])},[]),gt=g.useCallback(async()=>{if(o.length===0){y(t("migrateSelectProvider"));return}if(Y===0){y(t("migrateNoTypesEnabled"));return}const U={providers:o,global:u,include:l};O==="install"?await e.fetchCandidates(U):await e.reconcile(U)},[Y,l,u,O,o,t,e]),Bt=g.useCallback(async()=>{y(null);const U=e.plan?e_(e.plan,I,e.actionKey):void 0;if(await e.execute(U)){j(new Map);try{const me=await _u();i(me)}catch(me){console.error("Failed to refresh discovery:",me)}}},[I,e]),Kt=g.useCallback(async U=>{if(!e.installCandidates)return;y(null);const ne=HT(e.installCandidates,U);if(await e.execute(ne,"install")){j(new Map);try{const je=await _u();i(je)}catch(je){console.error("Failed to refresh discovery:",je)}}},[e]),Ut=g.useMemo(()=>{const U=new Map;if(!e.results)return U;for(const ne of e.results.results)U.set(ne.provider,ne);return U},[e.results]);g.useEffect(()=>{const U=ne=>{const me=ne.target,je=!!(me&&(me instanceof HTMLInputElement||me instanceof HTMLTextAreaElement||me.isContentEditable||me.closest('[contenteditable="true"], [role="textbox"]'))),kt=ne.metaKey||ne.ctrlKey||ne.altKey;ne.key==="/"&&!je&&!kt&&(ne.preventDefault(),document.getElementById("migrate-search")?.focus())};return document.addEventListener("keydown",U),()=>document.removeEventListener("keydown",U)},[]);const Ue=g.useMemo(()=>e.plan?e.plan.actions.filter(U=>U.action!=="conflict"||I.get(e.actionKey(U))==="skip"?!1:!e.resolutions.has(e.actionKey(U))).length:0,[I,e]),st=e.phase==="reviewing"&&O==="reconcile"&&!!e.plan&&Ue===0,it=e.phase==="idle"&&o.length>0&&Y>0;return f?c.jsx("div",{className:"flex items-center justify-center h-full",children:c.jsxs("div",{className:"text-center",children:[c.jsx("div",{className:"w-8 h-8 border-4 border-dash-accent border-t-transparent rounded-full animate-spin mx-auto mb-3"}),c.jsx("p",{className:"text-dash-text-muted",children:t("migrateDiscovering")})]})}):c.jsxs("div",{className:"relative h-full overflow-hidden",children:[c.jsxs("div",{className:"pointer-events-none absolute inset-0 -z-10 overflow-hidden",children:[c.jsx("div",{className:"absolute -top-24 -right-8 h-64 w-64 rounded-full bg-dash-accent/10 blur-3xl"}),c.jsx("div",{className:"absolute -bottom-28 -left-10 h-72 w-72 rounded-full bg-dash-accent/5 blur-3xl"})]}),c.jsxs("div",{className:"h-full overflow-y-auto space-y-4 pb-8",children:[c.jsx("section",{className:"dash-panel dash-sticky-glass sticky top-0 z-20 px-4 py-4 md:px-6 md:py-5",children:c.jsxs("div",{className:"flex flex-col gap-4 xl:flex-row xl:items-end xl:justify-between",children:[c.jsxs("div",{className:"space-y-1",children:[c.jsx("p",{className:"mono text-[10px] uppercase tracking-[0.16em] text-dash-text-muted",children:t("migrate")}),c.jsx("h1",{className:"text-xl md:text-2xl font-semibold text-dash-text",children:t("migrateTitle")}),c.jsx("p",{className:"text-sm text-dash-text-secondary max-w-3xl",children:t("migrateSubtitle")})]}),e.phase==="complete"&&e.results?c.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-3",children:[c.jsx(qt,{label:t("migrateInstalled"),value:e.results.counts.installed,tone:"success"}),c.jsx(qt,{label:t("migrateSkipped"),value:e.results.counts.skipped}),c.jsx(qt,{label:t("migrateFailed"),value:e.results.counts.failed})]}):c.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-4",children:[c.jsx(qt,{label:t("migrateTypeAgents"),value:s?.counts.agents??0}),c.jsx(qt,{label:t("migrateDetectedProviders"),value:re,tone:"success"}),c.jsx(qt,{label:t("migrateSelectedProviders"),value:se,tone:"accent"}),c.jsx(qt,{label:t("migrateTypes"),value:Y})]})]})}),b&&c.jsx("div",{className:"px-4 py-3 border border-red-500/30 bg-red-500/10 rounded-lg text-sm text-red-400",children:b}),c.jsxs("div",{className:"grid gap-4 xl:grid-cols-[minmax(0,1.55fr)_minmax(0,340px)]",children:[c.jsxs("section",{className:"order-2 xl:order-1 space-y-4",children:[(e.phase==="idle"||e.phase==="reviewing"||e.phase==="reconciling")&&o.length>0&&c.jsxs("div",{className:"dash-panel p-4 flex items-center gap-4 flex-wrap",children:[c.jsx(JT,{mode:O,pendingCount:L,disabled:e.phase==="reconciling",onModeChange:$}),c.jsx("p",{className:"text-xs text-dash-text-muted",children:t(O==="install"?"migrateModeInstallDesc":"migrateModeReconcileDesc")})]}),e.phase==="reviewing"&&e.plan&&O==="reconcile"&&c.jsxs("div",{className:"dash-panel flex flex-col max-h-[calc(100vh-200px)]",children:[c.jsxs("div",{className:"flex items-center justify-between p-5 pb-4",children:[c.jsx("h2",{className:"text-lg font-semibold text-dash-text",children:t("migrateReviewPlan")}),c.jsx("button",{type:"button",onClick:V,className:"dash-focus-ring px-3 py-1.5 text-xs font-medium rounded-md border border-dash-border text-dash-text-secondary hover:bg-dash-surface-hover",children:t("cancel")})]}),c.jsxs("div",{className:"flex-1 overflow-y-auto px-5 pb-4",children:[e.plan.banners&&e.plan.banners.length>0&&c.jsx("div",{className:"mb-4 space-y-2",children:e.plan.banners.map((U,ne)=>c.jsx("div",{className:"px-3 py-2 border border-yellow-500/30 bg-yellow-500/10 rounded text-xs text-yellow-400",children:c.jsx("strong",{children:U.message})},`${U.kind}-${U.provider}-${U.type}-${ne}`))}),c.jsx(m8,{plan:e.plan,resolutions:e.resolutions,onResolve:e.resolve,actionKey:e.actionKey,flips:I,onFlip:F}),e.error&&c.jsx("div",{className:"mt-4 px-3 py-2 border border-red-500/30 bg-red-500/10 rounded text-xs text-red-400",children:e.error})]}),c.jsxs("div",{className:"flex items-center justify-end gap-3 px-5 py-4 border-t border-dash-border bg-dash-surface rounded-b-xl",children:[Ue>0&&c.jsx("p",{className:"text-xs text-yellow-400",children:t("migrateResolveConflicts")}),c.jsx("button",{type:"button",onClick:Bt,disabled:!st,className:"dash-focus-ring px-4 py-2 bg-dash-accent text-white rounded-md text-sm font-semibold hover:bg-dash-accent/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:t("migrateExecutePlan")})]})]}),(e.phase==="reviewing"||e.phase==="executing")&&e.installCandidates!==null&&O==="install"&&c.jsxs("div",{className:"dash-panel p-4 md:p-5",children:[c.jsxs("div",{className:"flex items-center justify-between mb-4",children:[c.jsx("h2",{className:"text-lg font-semibold text-dash-text",children:t("migrateModeInstall")}),c.jsx("button",{type:"button",onClick:V,disabled:e.phase==="executing",className:"dash-focus-ring px-3 py-1.5 text-xs font-medium rounded-md border border-dash-border text-dash-text-secondary hover:bg-dash-surface-hover disabled:opacity-50",children:t("cancel")})]}),c.jsx(FT,{candidates:e.installCandidates,selected:M,onSelectionChange:T,onInstall:Kt,isInstalling:e.phase==="executing"}),e.error&&c.jsx("div",{className:"mt-4 px-3 py-2 border border-red-500/30 bg-red-500/10 rounded text-xs text-red-400",children:e.error})]}),e.phase==="complete"&&e.results&&c.jsx(XT,{results:e.results,onReset:V}),e.phase==="error"&&e.error&&c.jsxs("div",{className:"dash-panel p-5",children:[c.jsx("div",{className:"px-4 py-3 border border-red-500/30 bg-red-500/10 rounded-lg text-sm text-red-400",children:e.error}),c.jsx("button",{type:"button",onClick:V,className:"mt-4 dash-focus-ring px-4 py-2 bg-dash-bg border border-dash-border rounded-md text-sm text-dash-text-secondary hover:bg-dash-surface-hover",children:t("tryAgain")})]}),(e.phase==="reconciling"||e.phase==="executing")&&c.jsx("div",{className:"dash-panel p-5",children:c.jsx("div",{className:"flex items-center justify-center py-8",children:c.jsxs("div",{className:"text-center",children:[c.jsx("div",{className:"w-8 h-8 border-4 border-dash-accent border-t-transparent rounded-full animate-spin mx-auto mb-3"}),c.jsx("p",{className:"text-dash-text-muted",children:e.phase==="reconciling"?t("migrateReconciling"):t("migrateExecuting")})]})})}),e.phase==="idle"&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"dash-panel p-4 md:p-5 space-y-4",children:[c.jsxs("div",{className:"flex flex-col gap-3 lg:flex-row lg:items-center",children:[c.jsxs("div",{className:"relative flex-1",children:[c.jsxs("svg",{className:"absolute left-2.5 top-1/2 -translate-y-1/2 w-4 h-4 stroke-dash-text-muted",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[c.jsx("circle",{cx:"11",cy:"11",r:"8"}),c.jsx("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})]}),c.jsx("input",{id:"migrate-search",type:"text",value:w,onChange:U=>v(U.target.value),placeholder:t("migrateSearchProviders"),className:"dash-focus-ring w-full pl-9 pr-12 py-2 bg-dash-bg border border-dash-border rounded-lg text-dash-text text-sm focus:border-dash-accent transition-colors"}),c.jsx("span",{className:"absolute right-2.5 top-1/2 -translate-y-1/2 text-[11px] text-dash-text-muted bg-dash-surface-hover border border-dash-border px-1.5 py-0.5 rounded",children:t("searchShortcut")})]}),c.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[c.jsx("button",{type:"button",onClick:()=>W(!0),disabled:m,className:"dash-focus-ring px-3 py-1.5 bg-dash-bg border border-dash-border rounded-md text-xs text-dash-text-secondary hover:bg-dash-surface-hover disabled:opacity-50 whitespace-nowrap",children:t(m?"checking":"migrateRefresh")}),c.jsx("button",{type:"button",onClick:mt,disabled:Je.length===0,className:"dash-focus-ring px-3 py-1.5 bg-dash-bg border border-dash-border rounded-md text-xs text-dash-text-secondary hover:bg-dash-surface-hover disabled:opacity-50 whitespace-nowrap",children:t("migrateSelectVisible")}),c.jsx("button",{type:"button",onClick:qe,disabled:se===0,className:"dash-focus-ring px-3 py-1.5 bg-dash-bg border border-dash-border rounded-md text-xs text-dash-text-secondary hover:bg-dash-surface-hover disabled:opacity-50 whitespace-nowrap",children:t("migrateClearSelection")})]})]}),c.jsx("div",{className:"flex flex-wrap gap-1.5",children:[{key:"all",label:t("categoryAll")},{key:"selected",label:t("migrateSelectedProviders")},{key:"detected",label:t("migrateDetectedProviders")},{key:"recommended",label:t("migrateFilterRecommended")},{key:"not-detected",label:t("migrateNotDetectedTag")}].map(U=>c.jsxs("button",{type:"button",onClick:()=>N(U.key),className:`dash-focus-ring px-3 py-1 text-xs font-medium rounded-full border transition-all whitespace-nowrap ${C===U.key?"bg-dash-accent/10 border-dash-accent text-dash-accent":"border-dash-border text-dash-text-secondary hover:bg-dash-surface-hover hover:text-dash-text"}`,children:[U.label,c.jsx("span",{className:"opacity-60 ml-1 text-[10px]",children:Ae[U.key]})]},U.key))}),c.jsxs("div",{children:[c.jsx("p",{className:"mb-2 text-[11px] font-semibold uppercase tracking-wide text-dash-text-muted",children:t("migrateTypes")}),c.jsx("div",{className:"flex flex-wrap items-center gap-2",children:jn.map(U=>c.jsx("button",{type:"button",onClick:()=>oe(U),className:`dash-focus-ring px-2.5 py-1 text-[11px] uppercase tracking-wide rounded-md border transition-colors ${l[U]?"border-dash-accent/45 text-dash-accent bg-dash-accent/5":"border-dash-border text-dash-text-muted hover:bg-dash-surface-hover"}`,children:t(js[U])},U))})]})]}),c.jsxs("div",{className:"dash-panel p-4 md:p-5",children:[c.jsx("h2",{className:"text-sm font-semibold text-dash-text mb-4",children:t("migrateSourceSummary")}),c.jsx("div",{className:"grid grid-cols-2 md:grid-cols-3 xl:grid-cols-6 gap-3",children:jn.map(U=>c.jsxs("div",{className:"px-3 py-2 bg-dash-bg border border-dash-border rounded-md text-center",children:[c.jsx("p",{className:"text-[11px] uppercase tracking-wide text-dash-text-muted",children:t(js[U])}),c.jsx("p",{className:"text-lg font-semibold text-dash-text",children:s?.counts[U]??0})]},U))})]}),c.jsxs("div",{className:"dash-panel p-4 md:p-5",children:[c.jsxs("div",{className:"flex items-center justify-between mb-4",children:[c.jsx("h2",{className:"text-sm font-semibold text-dash-text",children:t("migrateProvidersHeading")}),c.jsxs("p",{className:"text-xs text-dash-text-muted",children:[xe.length," ",t("migrateProvidersCountSuffix")]})]}),n.length===0?c.jsx("div",{className:"text-sm text-dash-text-muted",children:t("migrateNoProviders")}):xe.length===0?c.jsx("div",{className:"text-sm text-dash-text-muted",children:t("migrateNoProvidersMatch")}):c.jsx("div",{className:"space-y-5",children:Pe.map(U=>c.jsxs("div",{children:[c.jsxs("div",{className:"flex items-center gap-2.5 mb-3",children:[c.jsx("div",{className:"w-2 h-2 rounded-full",style:{background:Jb[U.key]}}),c.jsx("h2",{className:"text-[13px] font-semibold uppercase tracking-wide",style:{color:Jb[U.key]},children:U.label}),c.jsxs("span",{className:"text-[11px] text-dash-text-muted ml-auto",children:[U.providers.length," ",t("migrateProvidersCountSuffix")]}),c.jsx("div",{className:"flex-1 h-px bg-dash-border ml-3"})]}),c.jsx("div",{className:"space-y-2",children:U.providers.map(ne=>c.jsx(t_,{provider:ne,include:l,isSelected:Z.has(ne.name),cardClickToggles:C==="selected",onToggleSelect:ie,onOpenDetails:S,t},ne.name))})]},U.key))})]})]})]}),c.jsx("aside",{className:"order-1 xl:order-2 space-y-4 self-start xl:sticky xl:top-[84px]",children:e.phase==="complete"&&e.results?c.jsxs("div",{className:"dash-panel p-4 md:p-5 space-y-4",children:[c.jsxs("div",{children:[c.jsx("p",{className:"text-sm font-semibold text-dash-text",children:t("migrateSummaryTitle")}),c.jsxs("p",{className:"text-xs text-dash-text-muted mt-1",children:[e.results.counts.installed+e.results.counts.skipped+e.results.counts.failed," ",t("migrateSummarySubtitle")]})]}),c.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[c.jsx(qt,{label:t("migrateInstalled"),value:e.results.counts.installed,tone:"success"}),c.jsx(qt,{label:t("migrateSkipped"),value:e.results.counts.skipped}),c.jsx(qt,{label:t("migrateFailed"),value:e.results.counts.failed})]}),e.results.discovery&&c.jsxs("div",{className:"space-y-1.5",children:[c.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-wide text-dash-text-muted",children:t("migrateTypes")}),jn.map(U=>{const ne=e.results?.discovery?.[U]??0;return ne===0?null:c.jsxs("div",{className:"flex items-center justify-between px-3 py-1.5 bg-dash-bg rounded-md text-xs",children:[c.jsx("span",{className:"text-dash-text-secondary",children:t(js[U])}),c.jsx("span",{className:"font-semibold text-dash-text",children:ne})]},U)})]}),o.length>0&&c.jsxs("div",{className:"space-y-1.5",children:[c.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-wide text-dash-text-muted",children:t("migrateSummaryProviders")}),c.jsx("div",{className:"flex flex-wrap gap-1.5",children:o.map(U=>{const ne=H.get(U);return c.jsx("span",{className:"text-[10px] px-2 py-0.5 rounded border border-dash-accent/30 text-dash-accent",children:ne?.displayName||U},U)})})]}),c.jsx("div",{className:"text-[10px] px-3 py-1.5 bg-dash-bg rounded-md text-dash-text-muted",children:t(u?"migrateScopeGlobal":"migrateScopeProject")}),c.jsx("button",{type:"button",onClick:V,className:"dash-focus-ring w-full px-4 py-2.5 bg-dash-accent text-white rounded-md text-sm font-semibold hover:bg-dash-accent/90 transition-colors",children:t("migrateSummaryNewMigration")})]}):c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"dash-panel p-4 md:p-5 space-y-4",children:[c.jsxs("div",{children:[c.jsx("p",{className:"text-sm font-semibold text-dash-text",children:t("migrateActionSummaryTitle")}),c.jsxs("p",{className:"text-xs text-dash-text-muted mt-1",children:[se," ",t("migrateProvidersCountSuffix")," ·"," ",Y,"/",jn.length," ",t("migrateTypes")]})]}),c.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[c.jsx(qt,{label:t("migrateSelectedProviders"),value:se,tone:"accent"}),c.jsx(qt,{label:t("migrateDetectedProviders"),value:re}),c.jsx(qt,{label:t("migrateTypes"),value:Y}),c.jsx(qt,{label:t("migrateFilterRecommended"),value:_,tone:"success"})]}),c.jsxs("div",{className:"inline-flex w-full rounded-md border border-dash-border overflow-hidden",children:[c.jsx("button",{type:"button",onClick:()=>h(!1),className:`dash-focus-ring flex-1 px-3 py-2 text-sm ${u?"bg-dash-bg text-dash-text-secondary":"bg-dash-accent-subtle text-dash-accent"}`,children:t("migrateScopeProject")}),c.jsx("button",{type:"button",onClick:()=>h(!0),className:`dash-focus-ring flex-1 px-3 py-2 text-sm border-l border-dash-border ${u?"bg-dash-accent-subtle text-dash-accent":"bg-dash-bg text-dash-text-secondary"}`,children:t("migrateScopeGlobal")})]}),c.jsx("button",{type:"button",onClick:st?Bt:gt,disabled:st?!1:!it,className:"dash-focus-ring w-full px-4 py-2.5 bg-dash-accent text-white rounded-md text-sm font-semibold hover:bg-dash-accent/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:e.phase==="reviewing"&&O==="reconcile"?t("migrateExecutePlan"):e.phase==="reconciling"?t("migrateRunning"):t("migrateRun")}),e.phase==="reviewing"&&O==="reconcile"&&Ue>0&&c.jsx("p",{className:"text-xs px-3 py-2 border border-yellow-500/30 bg-yellow-500/10 rounded text-yellow-400",children:t("migrateResolveConflicts")}),ee.length>0&&c.jsx("div",{className:"space-y-2",children:ee.map((U,ne)=>c.jsx("p",{className:"text-xs px-3 py-2 border border-yellow-500/30 bg-yellow-500/10 rounded text-yellow-400",children:U},`${U}-${ne}`))})]}),c.jsxs("div",{className:"dash-panel-muted p-4",children:[c.jsx("p",{className:"mb-3 text-[11px] font-semibold uppercase tracking-wide text-dash-text-muted",children:t("migrateSelectProviderAction")}),c.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[c.jsx("button",{type:"button",onClick:()=>ce("codex"),className:"dash-focus-ring px-3 py-1.5 bg-dash-bg border border-dash-border rounded-md text-xs text-dash-text-secondary hover:bg-dash-surface-hover",children:t("migratePresetCodex")}),c.jsx("button",{type:"button",onClick:()=>ce("antigravity"),className:"dash-focus-ring px-3 py-1.5 bg-dash-bg border border-dash-border rounded-md text-xs text-dash-text-secondary hover:bg-dash-surface-hover",children:t("migratePresetAntigravity")}),c.jsx("button",{type:"button",onClick:()=>ce("core"),className:"dash-focus-ring px-3 py-1.5 bg-dash-bg border border-dash-border rounded-md text-xs text-dash-text-secondary hover:bg-dash-surface-hover",children:t("migratePresetCore")}),c.jsx("button",{type:"button",onClick:()=>ce("detected"),className:"dash-focus-ring px-3 py-1.5 bg-dash-bg border border-dash-border rounded-md text-xs text-dash-text-secondary hover:bg-dash-surface-hover",children:t("migratePresetDetected")})]})]})]})})]})]}),J&&c.jsx(n_,{provider:J,include:l,isSelected:Z.has(J.name),latestResult:Ut.get(J.name)||null,onToggleSelect:ie,onClose:G,t})]})},s_=()=>c.jsx(r_,{}),i_=({featureId:t,name:e,description:n,included:r})=>{const{t:s}=te();return c.jsxs("div",{"data-testid":`feature-card-${t}`,className:`p-4 rounded-lg border transition-all ${r?"border-[var(--dash-accent)] bg-[var(--dash-surface)] shadow-sm":"border-[var(--dash-border)] bg-[var(--dash-bg)] opacity-50"}`,children:[c.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r?c.jsx("svg",{className:"w-5 h-5 text-[var(--dash-accent)]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:c.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})}):c.jsx("svg",{className:"w-5 h-5 text-[var(--dash-text-muted)]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:c.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})}),c.jsx("h4",{className:"font-medium text-[var(--dash-text)]",children:s(e)})]}),c.jsx("p",{className:"text-sm text-[var(--dash-text-muted)] leading-relaxed",children:s(n)})]})},o_=({selectedKit:t,onKitSelect:e,onInstall:n,installing:r})=>{const{t:s}=te(),[i,o]=g.useState(1);return c.jsxs("div",{className:"space-y-6","data-testid":"install-wizard",children:[c.jsxs("div",{className:"flex items-center gap-4",children:[c.jsx(Wh,{number:1,active:i===1,label:s("stepChooseKit")}),c.jsx("div",{className:"flex-1 h-px bg-[var(--dash-border)]"}),c.jsx(Wh,{number:2,active:i===2,label:s("stepConfigure")}),c.jsx("div",{className:"flex-1 h-px bg-[var(--dash-border)]"}),c.jsx(Wh,{number:3,active:i===3,label:s("stepInstall")})]}),c.jsxs("div",{className:"min-h-[200px]",children:[i===1&&c.jsx(a_,{onSelect:e,selected:t}),i===2&&t&&c.jsx(l_,{kit:t}),i===3&&c.jsx(c_,{installing:r})]}),c.jsxs("div",{className:"flex justify-between pt-4 border-t border-[var(--dash-border)]",children:[i>1?c.jsx("button",{onClick:()=>o(a=>a-1),className:"px-4 py-2 text-sm font-medium text-[var(--dash-text)] bg-[var(--dash-surface)] border border-[var(--dash-border)] rounded-lg hover:bg-[var(--dash-surface-hover)] transition-colors","data-testid":"wizard-back",children:s("back")}):c.jsx("div",{}),i<3&&t&&c.jsx("button",{onClick:()=>o(a=>a+1),className:"px-4 py-2 text-sm font-medium text-white bg-[var(--dash-accent)] rounded-lg hover:opacity-90 transition-opacity","data-testid":"wizard-next",children:s("next")}),i===3&&c.jsx("button",{onClick:n,disabled:r,className:"px-4 py-2 text-sm font-medium text-white bg-[var(--dash-accent)] rounded-lg hover:opacity-90 transition-opacity disabled:opacity-50 disabled:cursor-not-allowed","data-testid":"wizard-install",children:s("install")})]})]})},Wh=({number:t,active:e,label:n})=>c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx("div",{className:`w-8 h-8 rounded-full flex items-center justify-center text-sm font-bold transition-colors ${e?"bg-[var(--dash-accent)] text-white":"bg-[var(--dash-surface)] text-[var(--dash-text-muted)] border border-[var(--dash-border)]"}`,children:t}),c.jsx("span",{className:`text-sm font-medium ${e?"text-[var(--dash-text)]":"text-[var(--dash-text-muted)]"}`,children:n})]}),a_=({onSelect:t,selected:e})=>{const{t:n}=te();return c.jsxs("div",{className:"space-y-4",children:[c.jsx("p",{className:"text-[var(--dash-text-muted)]",children:e?`Selected: ${e===ur.ENGINEER?n("kitEngineerName"):n("kitMarketingName")}`:"Please select a kit above"}),e&&c.jsxs("button",{type:"button",onClick:()=>t(e===ur.ENGINEER?ur.MARKETING:ur.ENGINEER),className:"text-sm text-[var(--dash-accent)] hover:underline",children:["Switch to ",e===ur.ENGINEER?n("kitMarketingName"):n("kitEngineerName")]})]})},l_=()=>c.jsx("div",{className:"text-[var(--dash-text-muted)]",children:"Configuration preview placeholder"}),c_=({installing:t})=>c.jsx("div",{className:"text-[var(--dash-text-muted)]",children:t?"Installing...":"Ready to install"}),d_=({kit:t,onGetStarted:e})=>{const{t:n}=te(),r=Lt(),s=t===ur.ENGINEER?"kitEngineerName":t===ur.MARKETING?"kitMarketingName":"kitEngineerName";return c.jsxs("div",{className:"text-center py-12 space-y-6","data-testid":"success-screen",children:[c.jsx("div",{className:"w-16 h-16 mx-auto bg-green-100 rounded-full flex items-center justify-center",children:c.jsx("svg",{className:"w-10 h-10 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:c.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})})}),c.jsx("h2",{className:"text-2xl font-bold text-[var(--dash-text)]",children:n("installSuccess")}),c.jsx("p",{className:"text-[var(--dash-text-muted)] max-w-md mx-auto",children:n("installSuccessDesc").replace("{kit}",n(s))}),c.jsxs("div",{className:"flex gap-4 justify-center pt-4",children:[c.jsx("button",{onClick:e,className:"px-6 py-2.5 text-sm font-medium text-white bg-[var(--dash-accent)] rounded-lg hover:opacity-90 transition-opacity","data-testid":"get-started-btn",children:n("getStarted")}),c.jsx("button",{onClick:()=>r("/"),className:"px-6 py-2.5 text-sm font-medium text-[var(--dash-text)] bg-[var(--dash-surface)] border border-[var(--dash-border)] rounded-lg hover:bg-[var(--dash-surface-hover)] transition-colors","data-testid":"dashboard-btn",children:n("goToDashboard")})]})]})},u_=[{id:"agents",name:"featureAgents",description:"featureAgentsDesc",engineer:!0,marketing:!0},{id:"hooks",name:"featureHooks",description:"featureHooksDesc",engineer:!0,marketing:!0},{id:"skills",name:"featureSkills",description:"featureSkillsDesc",engineer:!0,marketing:!0},{id:"multiagent",name:"featureMultiAgent",description:"featureMultiAgentDesc",engineer:!0,marketing:!1},{id:"content",name:"featureContent",description:"featureContentDesc",engineer:!1,marketing:!0},{id:"social",name:"featureSocial",description:"featureSocialDesc",engineer:!1,marketing:!0}],LS={engineer:{id:"engineer",name:"kitEngineerName",tagline:"kitEngineerTagline",primaryColor:"text-blue-500",features:["agents","hooks","skills","multiagent"]},marketing:{id:"marketing",name:"kitMarketingName",tagline:"kitMarketingTagline",primaryColor:"text-purple-500",features:["agents","hooks","skills","content","social"]}};function h_(t){const e=LS[t];return e?u_.filter(n=>e.features.includes(n.id)):(console.warn(`Unknown kit type: ${t}`),[])}const f_=({kit:t,selected:e,onSelect:n,features:r})=>{const{t:s}=te();return c.jsxs("button",{type:"button",onClick:n,className:`p-6 rounded-lg border-2 text-left transition-all w-full ${e?"border-[var(--dash-accent)] bg-[var(--dash-surface)] shadow-md":"border-[var(--dash-border)] hover:border-[var(--dash-accent)]/50"}`,children:[c.jsx("h3",{className:`text-xl font-bold ${t.primaryColor}`,children:s(t.name)}),c.jsx("p",{className:"text-[var(--dash-text-muted)] mt-1",children:s(t.tagline)}),c.jsx("div",{className:"mt-4 space-y-2",children:r.slice(0,3).map(i=>c.jsx(i_,{featureId:i.id,name:i.name,description:i.description,included:!0},i.id))})]})},p_=()=>{const{t}=te(),e=Lt(),[n,r]=g.useState(null),[s,i]=g.useState(!1),[o,a]=g.useState(!1),[l,d]=g.useState(null),u=async()=>{if(n){i(!0),d(null);try{const f=await fetch("/api/install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({kit:n})});if(!f.ok)throw new Error(`Installation failed: ${f.statusText}`);a(!0)}catch(f){const p=f instanceof Error?f.message:"Unknown error occurred";d(p),console.error("Install failed:",f)}finally{i(!1)}}};if(o&&n)return c.jsx(d_,{kit:n,onGetStarted:()=>e("/")});const h=f=>f==="engineer"?ur.ENGINEER:ur.MARKETING;return c.jsxs("div",{className:"max-w-4xl mx-auto py-8 px-4",children:[c.jsxs("header",{className:"text-center mb-8",children:[c.jsx("h1",{className:"text-3xl font-bold text-[var(--dash-text)]",children:t("onboardingTitle")}),c.jsx("p",{className:"mt-2 text-[var(--dash-text-muted)]",children:t("onboardingSubtitle")})]}),c.jsx("section",{className:"grid md:grid-cols-2 gap-6 mb-8",children:Object.values(LS).map(f=>{const p=h(f.id);return c.jsx(f_,{kit:f,selected:n===p,onSelect:()=>r(p),features:h_(f.id)},f.id)})}),l&&c.jsxs("div",{className:"mb-6 p-4 rounded-lg bg-red-100 border border-red-300 text-red-800",children:[c.jsx("p",{className:"font-medium",children:"Installation Error"}),c.jsx("p",{className:"text-sm mt-1",children:l}),c.jsx("button",{type:"button",onClick:()=>d(null),className:"mt-2 text-sm underline hover:no-underline",children:"Dismiss"})]}),n&&c.jsx(o_,{selectedKit:n,onKitSelect:r,onInstall:u,installing:s})]})},m_=()=>c.jsx(p_,{}),g_={0:"bg-dash-bg",1:"bg-emerald-500/20",2:"bg-emerald-500/50",3:"bg-emerald-400"};function x_({cells:t}){const{t:e}=te(),n=[{label:e("plansHeatmapMon"),index:1},{label:e("plansHeatmapWed"),index:3},{label:e("plansHeatmapFri"),index:5}];return c.jsxs("div",{className:"flex w-fit items-start gap-3",children:[c.jsx("div",{className:"grid grid-rows-7 gap-1 pt-[1px] text-[10px] uppercase tracking-tighter text-dash-text-muted",children:Array.from({length:7},(r,s)=>{const i=n.find(o=>o.index===s);return c.jsx("div",{className:"flex h-3.5 items-center justify-end pr-1",children:i?.label??""},s)})}),c.jsx("div",{className:"grid grid-cols-12 gap-1",children:Array.from({length:12},(r,s)=>c.jsx("div",{className:"grid grid-rows-7 gap-1",children:t.filter(i=>i.weekIndex===s).map(i=>c.jsx("div",{title:e("plansHeatmapChanges").replace("{date}",new Date(i.date).toLocaleDateString()).replace("{count}",String(i.totalActivity)),className:`h-3.5 w-3.5 rounded-sm transition-colors duration-300 ${g_[i.level]}`},i.date))},s))})]})}function b_({planDir:t,projectId:e}){const{t:n}=te(),[r,s]=g.useState("both"),[i,o]=g.useState(null),[a,l]=g.useState(null);return g.useEffect(()=>{let d=!1;async function u(){l(null);try{const h=new URLSearchParams({dir:t,source:r});e&&h.set("projectId",e);const f=await fetch(`/api/plan/heatmap?${h.toString()}`);if(!f.ok)throw new Error(n("plansHeatmapLoadError"));const p=await f.json();d||o(p)}catch(h){d||l(h instanceof Error?h.message:n("plansHeatmapLoadError"))}}return u(),()=>{d=!0}},[t,e,r,n]),c.jsxs("section",{className:"rounded-xl border border-dash-border bg-dash-surface p-5",children:[c.jsxs("div",{className:"mb-4 flex items-center justify-between gap-3",children:[c.jsxs("div",{children:[c.jsx("h2",{className:"text-lg font-semibold text-dash-text",children:n("plansActivity")}),c.jsx("p",{className:"text-sm text-dash-text-muted",children:n("plansActivitySubtitle")})]}),c.jsxs("select",{value:r,onChange:d=>s(d.target.value),className:"rounded-lg border border-dash-border bg-dash-bg px-3 py-2 text-sm text-dash-text",children:[c.jsx("option",{value:"both",children:n("plansActivityCombined")}),c.jsx("option",{value:"git",children:n("plansActivityCommits")}),c.jsx("option",{value:"mtime",children:n("plansActivityFiles")})]})]}),i?.cells?.length?c.jsx(x_,{cells:i.cells}):c.jsx("p",{className:"text-sm text-dash-text-muted",children:a??i?.error??n("plansActivityEmpty")})]})}function y_({planDir:t,phaseId:e,status:n,actions:r,onSuccess:s}){const{t:i}=te(),o=async a=>{await r.trigger({action:a,planDir:t,phaseId:e}),s()};return c.jsxs("div",{className:"flex flex-wrap gap-2",children:[c.jsx("button",{type:"button",onClick:()=>void o("start"),disabled:r.loading,className:"rounded border border-dash-border px-2 py-1 text-xs text-dash-text disabled:cursor-not-allowed disabled:opacity-50",children:i(n==="in-progress"?"plansRestart":"plansStart")}),c.jsx("button",{type:"button",onClick:()=>void o("complete"),disabled:r.loading,className:"rounded border border-dash-border px-2 py-1 text-xs text-dash-text disabled:cursor-not-allowed disabled:opacity-50",children:i("plansComplete")}),c.jsx("button",{type:"button",onClick:()=>void o("reset"),disabled:r.loading,className:"rounded border border-dash-border px-2 py-1 text-xs text-dash-text-muted disabled:cursor-not-allowed disabled:opacity-50",children:i("plansReset")})]})}const v_={pending:"bg-amber-500","in-progress":"bg-sky-500",completed:"bg-emerald-500"},w_={pending:"kanbanStatus_pending","in-progress":"kanbanStatus_in-progress",completed:"kanbanStatus_completed"};function k_({planDir:t,phases:e,actions:n,onRead:r,onRefresh:s}){const{t:i}=te();return c.jsx("div",{className:"rounded-[2rem] bg-dash-border/20 p-1",style:{animation:"fade-in-up 0.8s cubic-bezier(0.32,0.72,0,1) 0.4s both"},children:c.jsxs("section",{className:"rounded-[calc(2rem-0.25rem)] border border-white/5 bg-dash-surface p-6 shadow-2xl",children:[c.jsxs("div",{className:"mb-6 flex items-center justify-between px-2",children:[c.jsx("h2",{className:"text-xl font-bold tracking-tight text-dash-text",children:i("plansPhases")}),c.jsx("span",{className:"text-[10px] font-bold uppercase tracking-widest text-dash-text-muted bg-dash-bg px-2 py-1 rounded-md border border-white/5",children:i("plansPhaseCount").replace("{count}",String(e.length))})]}),c.jsx("div",{className:"space-y-4",children:e.map((o,a)=>c.jsx("div",{className:"group relative rounded-[1.5rem] bg-dash-border/10 p-1 transition-all duration-500 hover:bg-dash-accent/5",style:{animation:`fade-in-up 0.6s cubic-bezier(0.32,0.72,0,1) ${.5+a*.1}s both`},children:c.jsxs("div",{className:"flex flex-col gap-4 rounded-[calc(1.5rem-0.25rem)] border border-white/5 bg-dash-bg p-4 transition-colors duration-500 hover:bg-dash-bg/80 lg:flex-row lg:items-center lg:justify-between",children:[c.jsxs("div",{className:"flex items-start gap-4",children:[c.jsxs("div",{className:"mt-1 flex flex-col items-center gap-2",children:[c.jsx("div",{className:`h-3 w-3 rounded-full ${v_[o.status]} shadow-[0_0_8px_currentColor]`}),c.jsx("div",{className:"h-full w-px flex-1 bg-dash-border/30"})]}),c.jsxs("div",{children:[c.jsx("div",{className:"flex items-center gap-2",children:c.jsx("span",{className:"text-[10px] font-bold uppercase tracking-[0.2em] text-dash-accent/80",children:o.phaseId})}),c.jsx("h3",{className:"text-sm font-semibold text-dash-text group-hover:text-dash-accent transition-colors",children:o.name}),c.jsx("p",{className:"mt-0.5 text-[10px] font-bold uppercase tracking-widest text-dash-text-muted",children:i(w_[o.status])})]})]}),c.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[c.jsx("button",{type:"button",onClick:()=>r(o.file),className:"flex h-8 items-center rounded-full border border-white/10 bg-dash-surface px-4 text-[11px] font-bold uppercase tracking-widest text-dash-text transition-all duration-300 hover:bg-dash-accent hover:text-white active:scale-95",children:i("plansRead")}),c.jsx("div",{className:"p-0.5 bg-dash-border/20 rounded-full border border-white/5",children:c.jsx(y_,{planDir:t,phaseId:o.phaseId,status:o.status,actions:n,onSuccess:s})})]})]})},o.phaseId))})]})})}function S_({planDir:t,actions:e,onSuccess:n}){const{t:r}=te(),s=async i=>{await e.trigger({action:i,planDir:t}),n()};return c.jsxs("div",{className:"flex flex-wrap gap-2",children:[c.jsx("button",{type:"button",onClick:()=>void s("validate"),disabled:e.loading,className:"rounded-lg border border-dash-border px-3 py-2 text-sm text-dash-text disabled:cursor-not-allowed disabled:opacity-50",children:r("plansValidate")}),c.jsx("button",{type:"button",onClick:()=>void s("start-next"),disabled:e.loading,className:"rounded-lg bg-dash-accent px-3 py-2 text-sm font-medium text-dash-bg disabled:cursor-not-allowed disabled:opacity-50",children:r("plansStartNext")})]})}const C_={pending:"plansStatusPending","in-progress":"plansStatusInProgress","in-review":"plansStatusInReview",done:"plansStatusDone",cancelled:"plansStatusCancelled"};function j_({plan:t,planDir:e,actions:n,onActionSuccess:r}){const{t:s}=te(),i=t.status??"pending";return c.jsx("div",{className:"rounded-[2rem] bg-dash-border/20 p-1 transition-all duration-700 ease-[cubic-bezier(0.32,0.72,0,1)]",style:{animation:"fade-in-up 0.8s cubic-bezier(0.32,0.72,0,1) both"},children:c.jsxs("section",{className:"rounded-[calc(2rem-0.25rem)] border border-white/5 bg-dash-surface p-6 shadow-2xl",children:[c.jsxs("div",{className:"flex flex-col gap-6 lg:flex-row lg:items-start lg:justify-between",children:[c.jsxs("div",{className:"flex-1",children:[c.jsxs("div",{className:"mb-2 flex items-center gap-3",children:[c.jsx("span",{className:"rounded-full bg-dash-accent/10 border border-dash-accent/20 px-3 py-0.5 text-[10px] font-bold uppercase tracking-widest text-dash-accent",children:s(C_[i])}),c.jsx("span",{className:"text-[10px] font-medium uppercase tracking-[0.2em] text-dash-text-muted",children:s("plansLabel")})]}),c.jsx("h1",{className:"text-3xl font-bold tracking-tight text-dash-text lg:text-4xl text-balance",children:t.title}),t.description&&c.jsx("p",{className:"mt-4 max-w-3xl text-sm leading-relaxed text-dash-text-muted",children:t.description})]}),c.jsx("div",{className:"shrink-0 p-1 bg-dash-border/10 rounded-2xl border border-white/5",children:c.jsx(S_,{planDir:e,actions:n,onSuccess:r})})]}),c.jsxs("div",{className:"mt-8",children:[c.jsxs("div",{className:"flex items-center justify-between mb-2",children:[c.jsx("span",{className:"text-xs font-bold uppercase tracking-widest text-dash-text-muted",children:s("kanbanProgress")}),c.jsxs("span",{className:"text-sm font-bold text-dash-accent",children:[t.progressPct,"%"]})]}),c.jsx("div",{className:"h-2 w-full overflow-hidden rounded-full bg-dash-bg shadow-inner",children:c.jsx("div",{className:"h-full rounded-full bg-gradient-to-r from-dash-accent/40 via-dash-accent to-dash-accent shadow-[0_0_12px_theme(colors.dash-accent/0.3)] transition-all duration-1000 ease-[cubic-bezier(0.32,0.72,0,1)]",style:{width:`${t.progressPct}%`}})})]}),c.jsxs("div",{className:"mt-8 flex flex-wrap gap-6 border-t border-white/5 pt-6",children:[c.jsxs("div",{className:"flex flex-col gap-1",children:[c.jsx("span",{className:"text-[10px] uppercase tracking-widest text-dash-text-muted",children:s("plansPhase")}),c.jsx("span",{className:"text-sm font-semibold text-dash-text",children:s("plansPhaseCount").replace("{count}",String(t.totalPhases))})]}),c.jsxs("div",{className:"flex flex-col gap-1",children:[c.jsx("span",{className:"text-[10px] uppercase tracking-widest text-dash-text-muted",children:s("plansPriority")}),c.jsx("span",{className:"text-sm font-semibold text-dash-text",children:t.priority??"—"})]}),c.jsxs("div",{className:"flex flex-col gap-1",children:[c.jsx("span",{className:"text-[10px] uppercase tracking-widest text-dash-text-muted",children:s("plansLastUpdated")}),c.jsx("span",{className:"text-sm font-semibold text-dash-text",children:t.lastModified?new Date(t.lastModified).toLocaleDateString():"—"})]})]})]})})}function N_(t){return new Date(t).toLocaleDateString(void 0,{month:"short",day:"numeric"})}const ty={pending:"from-amber-500/40 to-amber-500/20 border-amber-500/30 text-amber-100","in-progress":"from-sky-500/40 to-sky-500/20 border-sky-500/30 text-sky-100",completed:"from-emerald-500/40 to-emerald-500/20 border-emerald-500/30 text-emerald-100"},P_={pending:"kanbanStatus_pending","in-progress":"kanbanStatus_in-progress",completed:"kanbanStatus_completed"};function D_({timeline:t,onOpenPhase:e}){const{t:n}=te(),r=Array.from({length:7},(s,i)=>{const o=new Date(t.rangeEnd).getTime()-new Date(t.rangeStart).getTime(),a=new Date(new Date(t.rangeStart).getTime()+o/6*i);return N_(a.toISOString())});return c.jsx("div",{className:"group rounded-[2rem] bg-dash-border/20 p-1 transition-all duration-700 ease-[cubic-bezier(0.32,0.72,0,1)] hover:bg-dash-accent/5",style:{animation:"fade-in-up 0.8s cubic-bezier(0.32,0.72,0,1) 0.2s both"},children:c.jsxs("section",{className:"rounded-[calc(2rem-0.25rem)] border border-white/5 bg-dash-surface p-6 shadow-2xl",children:[c.jsxs("div",{className:"mb-6 flex items-end justify-between px-2",children:[c.jsxs("div",{children:[c.jsx("h2",{className:"text-xl font-bold tracking-tight text-dash-text",children:n("plansTimeline")}),c.jsx("p",{className:"text-xs uppercase tracking-widest text-dash-text-muted mt-1",children:n("plansTimelineAvgDays").replace("{count}",t.summary.avgDurationDays.toFixed(1))})]}),c.jsx("div",{className:"flex gap-4",children:Object.entries(ty).map(([s,i])=>c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx("div",{className:`h-1.5 w-6 rounded-full bg-gradient-to-r ${i.split(" ").slice(0,2).join(" ")}`}),c.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wider text-dash-text-muted",children:n(P_[s])})]},s))})]}),c.jsxs("div",{className:"relative mt-8",children:[c.jsx("div",{className:"grid grid-cols-7 gap-2 px-1 text-[10px] font-bold uppercase tracking-widest text-dash-text-muted/60",children:r.map(s=>c.jsx("span",{children:s},s))}),c.jsxs("div",{className:"relative mt-4 min-h-[160px] overflow-hidden rounded-2xl border border-white/5 bg-dash-bg/30 p-4 transition-all duration-500 group-hover:bg-dash-bg/50",style:{height:`${Math.max(160,t.layerCount*40+64)}px`},children:[c.jsx("div",{className:"absolute inset-0 grid grid-cols-7 pointer-events-none",children:Array.from({length:7}).map((s,i)=>c.jsx("div",{className:"h-full border-r border-white-[0.02] last:border-0"},i))}),c.jsx("div",{className:"absolute bottom-0 top-0 z-10 w-px bg-dash-accent/40",style:{left:`${t.todayPct}%`},children:c.jsx("div",{className:"absolute -top-1 -left-1 h-2.5 w-2.5 rounded-full bg-dash-accent shadow-[0_0_8px_theme(colors.dash-accent)]"})}),t.phases.map(s=>c.jsx("button",{type:"button",onClick:()=>e(s.file),title:`${s.name} • ${s.effort??n("plansNoEffort")}`,className:`absolute flex h-7 items-center rounded-lg border px-3 text-[11px] font-semibold text-white backdrop-blur-md shadow-sm transition-all duration-300 hover:scale-[1.02] hover:shadow-lg hover:brightness-110 active:scale-[0.98] bg-gradient-to-r ${ty[s.status]}`,style:{top:`${s.layer*38+20}px`,left:`${s.leftPct}%`,width:`${s.widthPct}%`},children:c.jsxs("span",{className:"truncate drop-shadow-sm",children:[s.phaseId," · ",s.name]})},s.phaseId))]})]})]})})}function op(t,e){const n=e.replace(/\\/g,"/").replace(/\/$/,""),r=t.replace(/\\/g,"/");return r.startsWith(`${n}/`)?r.slice(n.length+1):r.split("/").slice(-1)[0]??r}function ap(t){return t.split("/").filter(Boolean).map(e=>encodeURIComponent(e)).join("/")}function E_(t){const[e,n]=g.useState(null),[r,s]=g.useState(!1),[i,o]=g.useState(null);return{pendingId:e,loading:r,error:i,trigger:async a=>{s(!0),o(null);try{const l=await fetch("/api/plan/action",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...a,...t?{projectId:t}:{}})});if(!l.ok)throw new Error(`Failed to run action (${l.status})`);const d=await l.json();if(n(d.id),d.status==="failed")throw new Error(d.error??"Action failed");return d}catch(l){const d=l instanceof Error?l.message:"Action failed";throw o(d),l}finally{n(null),s(!1)}}}}const O_={pending:"plansStatusPending","in-progress":"plansStatusInProgress","in-review":"plansStatusInReview",done:"plansStatusDone",cancelled:"plansStatusCancelled"};function M_(){const{t}=te(),e=Lt(),{planSlug:n=""}=pl(),[r]=gl(),s=r.get("dir")??"plans",i=r.get("projectId"),o=r.get("origin"),a=E_(i),[l,d]=g.useState(null),[u,h]=g.useState(!0),[f,p]=g.useState(null),m=`${s}/${n}`,x=g.useCallback(async()=>{h(!0),p(null);try{const b=new URLSearchParams({dir:m});i&&b.set("projectId",i);const y=await fetch(`/api/plan/timeline?${b.toString()}`);if(!y.ok)throw new Error(t("plansLoadPlanFailed").replace("{status}",String(y.status)));d(await y.json())}catch(b){p(b instanceof Error?b.message:t("plansLoadPlanFallback"))}finally{h(!1)}},[m,i,t]);return g.useEffect(()=>{x()},[x]),u?c.jsx("div",{className:"flex h-full items-center justify-center",children:c.jsxs("div",{className:"flex flex-col items-center gap-4 animate-pulse",children:[c.jsx("div",{className:"h-12 w-12 rounded-full border-2 border-dash-accent border-t-transparent animate-spin"}),c.jsx("p",{className:"text-[10px] font-bold uppercase tracking-[0.3em] text-dash-accent/60",children:t("plansLoadingPlan")})]})}):f||!l?c.jsx("div",{className:"flex h-full flex-col items-center justify-center gap-4 p-8 text-center",children:c.jsxs("div",{className:"rounded-2xl border border-red-500/20 bg-red-500/5 p-6 backdrop-blur-md",children:[c.jsx("h2",{className:"text-sm font-bold uppercase tracking-widest text-red-400",children:t("error")}),c.jsx("p",{className:"mt-2 text-sm text-red-300/80",children:f??t("plansNotFound")}),c.jsx("button",{type:"button",onClick:()=>void x(),className:"mt-6 rounded-full bg-red-500 px-6 py-2 text-xs font-bold uppercase tracking-widest text-white transition-all hover:scale-105 active:scale-95",children:t("refresh")})]})}):c.jsxs("div",{className:"flex h-full flex-col overflow-hidden bg-dash-bg",children:[c.jsxs("div",{className:"flex items-center gap-4 border-b border-white/5 bg-dash-surface/30 px-6 py-3 backdrop-blur-xl",children:[c.jsxs("button",{type:"button",onClick:()=>e(o==="global"?"/plans":`/plans?dir=${encodeURIComponent(s)}${i?`&projectId=${encodeURIComponent(i)}`:""}`),className:"group flex items-center gap-2 rounded-full border border-white/5 bg-dash-surface px-4 py-1.5 text-[10px] font-bold uppercase tracking-widest text-dash-text transition-all hover:bg-dash-accent hover:text-white",children:[c.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",className:"h-3 w-3 transition-transform group-hover:-translate-x-1",children:c.jsx("polyline",{points:"15 18 9 12 15 6"})}),t("plansBackToPlans")]}),c.jsx("div",{className:"h-4 w-px bg-dash-border/50"}),c.jsx("span",{className:"text-[10px] font-bold uppercase tracking-[0.2em] text-dash-text-muted",children:l.plan.title??n.toUpperCase()})]}),c.jsx("div",{className:"flex-1 overflow-y-auto overflow-x-hidden scrollbar-hide",children:c.jsxs("div",{className:"mx-auto max-w-[1600px] p-6 lg:p-10",children:[a.error&&c.jsxs("div",{className:"mb-6 rounded-[1.5rem] border border-red-500/20 bg-red-500/10 px-5 py-4 text-sm text-red-200 backdrop-blur-md",children:[c.jsx("p",{className:"text-[10px] font-bold uppercase tracking-[0.2em] text-red-300",children:t("actionFailed")}),c.jsx("p",{className:"mt-2 leading-relaxed",children:a.error})]}),c.jsxs("div",{className:"grid gap-10 lg:grid-cols-12 lg:items-start",children:[c.jsxs("div",{className:"space-y-10 lg:col-span-8",children:[c.jsx(j_,{plan:l.plan,planDir:m,actions:a,onActionSuccess:()=>void x()}),c.jsx(D_,{timeline:l.timeline,onOpenPhase:b=>e(`/plans/${encodeURIComponent(n)}/read/${ap(op(b,m))}?dir=${encodeURIComponent(s)}${i?`&projectId=${encodeURIComponent(i)}`:""}${o?`&origin=${encodeURIComponent(o)}`:""}`)}),c.jsx(k_,{planDir:m,phases:l.plan.phases,actions:a,onRead:b=>e(`/plans/${encodeURIComponent(n)}/read/${ap(op(b,m))}?dir=${encodeURIComponent(s)}${i?`&projectId=${encodeURIComponent(i)}`:""}${o?`&origin=${encodeURIComponent(o)}`:""}`),onRefresh:()=>void x()})]}),c.jsxs("div",{className:"space-y-10 lg:col-span-4 lg:sticky lg:top-0",children:[c.jsx("div",{className:"rounded-[2.5rem] bg-dash-accent/5 p-1 backdrop-blur-3xl",style:{animation:"fade-in 1s cubic-bezier(0.32,0.72,0,1) 0.6s both"},children:c.jsx(b_,{planDir:m,projectId:i})}),c.jsxs("div",{className:"rounded-[2rem] border border-white/5 bg-dash-surface/50 p-6 backdrop-blur-md",style:{animation:"fade-in 1s cubic-bezier(0.32,0.72,0,1) 0.8s both"},children:[c.jsx("h3",{className:"text-[10px] font-bold uppercase tracking-[0.2em] text-dash-accent",children:t("plansQuickInfoTitle")}),c.jsxs("div",{className:"mt-4 space-y-4",children:[c.jsx("p",{className:"text-xs leading-relaxed text-dash-text-muted",children:t("plansQuickInfoDescription")}),c.jsxs("div",{className:"flex items-center gap-3 rounded-2xl bg-dash-bg/50 p-4 border border-white/5",children:[c.jsx("div",{className:"h-10 w-10 flex items-center justify-center rounded-full bg-dash-accent/10 border border-dash-accent/20",children:c.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",className:"h-5 w-5 text-dash-accent",strokeWidth:"2.5",children:c.jsx("path",{d:"M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"})})}),c.jsxs("div",{children:[c.jsx("p",{className:"text-[9px] uppercase tracking-widest text-dash-text-muted",children:t("plansCurrentStatus")}),c.jsx("p",{className:"text-sm font-bold text-dash-text",children:l.plan.status?t(O_[l.plan.status]):t("plansStatusUnknown")})]})]})]})]})]})]})]})})]})}function A_(){return c.jsx(M_,{})}function ny({label:t,item:e,onClick:n}){return c.jsx("button",{type:"button",onClick:n,disabled:!e,className:"rounded-lg border border-dash-border px-3 py-2 text-sm text-dash-text transition hover:border-dash-accent/50 disabled:cursor-not-allowed disabled:opacity-40",title:e?.name,children:t})}function T_(t){const{t:e}=te();return c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(ny,{label:e("plansPrevious"),item:t.prev,onClick:()=>t.prev&&t.onNavigate(t.prev.file)}),c.jsx(ny,{label:e("plansNext"),item:t.next,onClick:()=>t.next&&t.onNavigate(t.next.file)})]})}function R_(t){const{t:e}=te();return c.jsxs("header",{className:"flex flex-col gap-4 rounded-xl border border-dash-border bg-dash-surface p-4 lg:flex-row lg:items-center lg:justify-between",children:[c.jsxs("div",{children:[c.jsx("button",{type:"button",onClick:t.onBack,className:"text-sm text-dash-accent",children:e("plansBackToPlan")}),c.jsx("p",{className:"mt-2 text-xs uppercase tracking-[0.2em] text-dash-text-muted",children:e("plansNav")}),c.jsxs("h1",{className:"text-lg font-semibold text-dash-text",children:[t.planTitle,t.phaseTitle?` / ${t.phaseTitle}`:""]})]}),c.jsx(T_,{prev:t.prev,next:t.next,onNavigate:t.onNavigate})]})}function L_({content:t}){const{t:e}=te(),n=K4(t).filter(r=>r.level<=3);return n.length===0?null:c.jsxs("aside",{className:"rounded-xl border border-dash-border bg-dash-surface p-4",children:[c.jsx("h2",{className:"mb-3 text-sm font-semibold text-dash-text",children:e("plansContents")}),c.jsx("nav",{className:"space-y-2",children:n.map(r=>c.jsx("a",{href:`#${r.id}`,className:"block text-sm text-dash-text-muted transition hover:text-dash-accent",style:{paddingLeft:`${(r.level-1)*12}px`},children:r.text},r.id))})]})}function I_(t,e){return`${t}/${e}/plan.md`}function $_(t,e,n,r){const s=`${t}/${e}`,[i,o]=g.useState({planTitle:e,phases:[],currentIndex:-1,prev:null,next:null,loading:!0,error:null}),a=g.useCallback(async()=>{o(l=>({...l,loading:!0,error:null}));try{const l=new URLSearchParams({file:I_(t,e)});r&&l.set("projectId",r);const d=await fetch(`/api/plan/parse?${l.toString()}`);if(!d.ok)throw new Error(`Failed to load navigation (${d.status})`);const u=await d.json();o({planTitle:typeof u.frontmatter.title=="string"?u.frontmatter.title:e,phases:u.phases.map(h=>({phaseId:h.phaseId,name:h.name,file:op(h.file,s)})),currentIndex:-1,prev:null,next:null,loading:!1,error:null})}catch(l){o(d=>({...d,loading:!1,error:l instanceof Error?l.message:"Failed to load navigation"}))}},[s,e,r,t]);return g.useEffect(()=>{a()},[a]),g.useMemo(()=>{const l=n?i.phases.findIndex(d=>d.file===n):-1;return{...i,currentIndex:l,prev:l>0?i.phases[l-1]:null,next:l>=0?i.phases[l+1]??null:i.phases.length>0?i.phases[0]:null}},[n,i])}function B_(){const{t}=te(),e=Lt(),{planSlug:n="*","*":r}=pl(),[s]=gl(),i=s.get("dir")??"plans",o=s.get("projectId"),a=s.get("origin"),l=$_(i,n,r,o),[d,u]=g.useState(null),[h,f]=g.useState(null),p=(l.currentIndex>=0?l.phases[l.currentIndex]?.name??null:null)??(typeof d?.frontmatter.title=="string"?d.frontmatter.title:null),m=g.useCallback(async()=>{f(null);try{const b=`${i}/${n}`,y=r?`${b}/${r}`:`${b}/plan.md`,w=new URLSearchParams({file:y,dir:b});o&&w.set("projectId",o);const v=await fetch(`/api/plan/file?${w.toString()}`);if(!v.ok)throw new Error(t("plansLoadFileFailed").replace("{status}",String(v.status)));u(await v.json())}catch(b){f(b instanceof Error?b.message:t("plansLoadFileFallback"))}},[r,n,o,i,t]);g.useEffect(()=>{m()},[m]);const x=b=>e(`/plans/${encodeURIComponent(n)}/read/${ap(b)}?dir=${encodeURIComponent(i)}${o?`&projectId=${encodeURIComponent(o)}`:""}${a?`&origin=${encodeURIComponent(a)}`:""}`);return c.jsxs("div",{className:"flex h-full flex-col gap-4 overflow-auto",children:[c.jsx(R_,{planTitle:l.planTitle,phaseTitle:p,prev:l.prev,next:l.next,onBack:()=>e(`/plans/${encodeURIComponent(n)}?dir=${encodeURIComponent(i)}${o?`&projectId=${encodeURIComponent(o)}`:""}${a?`&origin=${encodeURIComponent(a)}`:""}`),onNavigate:x}),h&&c.jsx("p",{className:"text-sm text-red-300",children:h}),d&&c.jsxs("div",{className:"grid gap-4 xl:grid-cols-[280px_minmax(0,1fr)]",children:[c.jsx(L_,{content:d.content}),c.jsx("div",{className:"rounded-xl border border-dash-border bg-dash-surface p-5",children:c.jsx(qs,{content:d.raw})})]}),!d&&!h&&c.jsx("p",{className:"text-sm text-dash-text-muted",children:t("plansLoadingReader")})]})}function ry(){return c.jsx(B_,{})}const __={pending:"bg-amber-500/10 text-amber-400/90 border border-amber-500/20","in-progress":"bg-sky-500/10 text-sky-400/90 border border-sky-500/20","in-review":"bg-violet-500/10 text-violet-400/90 border border-violet-500/20",done:"bg-emerald-500/10 text-emerald-400/90 border border-emerald-500/20",cancelled:"bg-rose-500/10 text-rose-400/90 border border-rose-500/20"},F_={pending:"plansStatusPending","in-progress":"plansStatusInProgress","in-review":"plansStatusInReview",done:"plansStatusDone",cancelled:"plansStatusCancelled"};function z_(t){return t?new Date(t).toLocaleDateString(void 0,{month:"short",day:"numeric"}):"—"}function Ad({plan:t,onClick:e,compact:n=!1}){const{t:r}=te(),s=t.summary,i=s.status??"pending",o=s.tags??[];return c.jsx("button",{type:"button",onClick:e,className:"group relative w-full rounded-[2rem] bg-dash-border/20 p-1 transition-all duration-500 ease-[cubic-bezier(0.32,0.72,0,1)] hover:bg-dash-accent/10 active:scale-[0.98]",children:c.jsxs("div",{className:"flex h-full flex-col rounded-[calc(2rem-0.25rem)] border border-white/5 bg-dash-surface p-5 shadow-[inset_0_1px_1px_rgba(255,255,255,0.05)] transition-colors duration-500 group-hover:bg-dash-surface-hover",children:[c.jsxs("div",{className:"mb-4 flex items-start justify-between gap-3",children:[c.jsxs("div",{className:"flex-1",children:[c.jsxs("div",{className:"mb-1 flex items-center gap-2",children:[c.jsx("span",{className:"text-[10px] font-bold uppercase tracking-[0.2em] text-dash-accent/80",children:t.slug.split("-")[0]}),c.jsx("span",{className:"h-1 w-1 rounded-full bg-dash-border"}),c.jsx("span",{className:"text-[10px] font-medium uppercase tracking-[0.1em] text-dash-text-muted",children:r("plansPhaseCountCompact").replace("{count}",String(s.totalPhases))})]}),t.projectName&&c.jsx("div",{className:"mb-2",children:c.jsx("span",{className:"inline-flex rounded-full border border-dash-accent/20 bg-dash-accent/10 px-2 py-0.5 text-[10px] font-medium text-dash-accent",children:t.projectName})}),c.jsx("h3",{className:"text-base font-semibold tracking-tight text-dash-text group-hover:text-dash-accent transition-colors",children:s.title??t.name}),s.description&&!n&&c.jsx("p",{className:"mt-2 text-xs leading-relaxed text-dash-text-muted line-clamp-2",children:s.description})]}),c.jsxs("div",{className:"flex flex-col items-end gap-2",children:[c.jsx("span",{className:`rounded-full px-2.5 py-0.5 text-[10px] font-bold uppercase tracking-wider ${__[i]}`,children:r(F_[i])}),c.jsx("div",{className:"flex h-8 w-8 items-center justify-center rounded-full bg-dash-bg/50 border border-white/5 text-dash-text-muted transition-all duration-500 group-hover:translate-x-1 group-hover:-translate-y-1 group-hover:bg-dash-accent group-hover:text-white",children:c.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",className:"h-4 w-4",children:[c.jsx("line",{x1:"7",y1:"17",x2:"17",y2:"7"}),c.jsx("polyline",{points:"7 7 17 7 17 17"})]})})]})]}),c.jsxs("div",{className:"mt-auto space-y-4",children:[c.jsxs("div",{className:"group/progress relative",children:[c.jsxs("div",{className:"flex items-center justify-between mb-1.5",children:[c.jsx("span",{className:"text-[10px] font-medium text-dash-text-muted uppercase tracking-wider",children:r("kanbanProgress")}),c.jsxs("span",{className:"text-[10px] font-bold text-dash-text",children:[s.progressPct,"%"]})]}),c.jsx("div",{className:"h-1.5 w-full overflow-hidden rounded-full bg-dash-bg shadow-[inset_0_1px_2px_rgba(0,0,0,0.2)]",children:c.jsx("div",{className:"h-full rounded-full bg-gradient-to-r from-dash-accent/80 to-dash-accent transition-all duration-1000 ease-[cubic-bezier(0.32,0.72,0,1)]",style:{width:`${s.progressPct}%`}})})]}),c.jsxs("div",{className:"flex items-center justify-between border-t border-white/5 pt-4",children:[c.jsxs("div",{className:"flex gap-4",children:[c.jsxs("div",{className:"flex flex-col",children:[c.jsx("span",{className:"text-[9px] uppercase tracking-widest text-dash-text-muted",children:r("plansPriority")}),c.jsx("span",{className:"text-xs font-semibold text-dash-text",children:s.priority??"—"})]}),c.jsxs("div",{className:"flex flex-col",children:[c.jsx("span",{className:"text-[9px] uppercase tracking-widest text-dash-text-muted",children:r("plansUpdated")}),c.jsx("span",{className:"text-xs font-semibold text-dash-text",children:z_(s.lastModified)})]})]}),!n&&o.length>0&&c.jsx("div",{className:"flex -space-x-2",children:o.slice(0,3).map((a,l)=>c.jsx("div",{className:"flex h-5 items-center rounded-full border border-dash-border bg-dash-surface px-2 text-[9px] font-medium text-dash-text-muted ring-2 ring-dash-surface",style:{zIndex:10-l},children:a},a))})]})]})]})})}const H_=[{status:"pending",color:"bg-amber-400/80",labelKey:"plansStatusPending"},{status:"in-progress",color:"bg-sky-400/80",labelKey:"plansStatusInProgress"},{status:"in-review",color:"bg-violet-400/80",labelKey:"plansStatusInReview"},{status:"done",color:"bg-emerald-400/80",labelKey:"plansStatusDone"},{status:"cancelled",color:"bg-rose-400/80",labelKey:"plansStatusCancelled"}];function V_({plans:t,onSelect:e}){const{t:n}=te();return c.jsx("div",{className:"grid h-full w-full gap-6 lg:grid-cols-3 xl:grid-cols-5",children:H_.map((r,s)=>{const i=t.filter(o=>(o.summary.status??"pending")===r.status);return c.jsx("div",{className:"group/col flex flex-col rounded-[2.5rem] bg-dash-border/10 p-2 transition-all duration-700 ease-[cubic-bezier(0.32,0.72,0,1)] hover:bg-dash-border/20",style:{animation:`fade-in-up 0.8s cubic-bezier(0.32,0.72,0,1) ${s*.1}s both`},children:c.jsxs("section",{className:"flex flex-1 flex-col rounded-[calc(2.5rem-0.5rem)] border border-white/5 bg-dash-bg/40 p-3 shadow-2xl backdrop-blur-sm",children:[c.jsxs("header",{className:"mb-6 flex items-center justify-between px-2 pt-2",children:[c.jsxs("div",{className:"flex items-center gap-3",children:[c.jsx("div",{className:`h-2.5 w-2.5 rounded-full ${r.color} shadow-[0_0_12px_rgba(255,255,255,0.1)]`}),c.jsx("h2",{className:"text-xs font-bold uppercase tracking-[0.15em] text-dash-text",children:n(r.labelKey)})]}),c.jsx("div",{className:"flex h-6 min-w-[1.5rem] items-center justify-center rounded-full bg-dash-border px-2 text-[10px] font-bold text-dash-text-muted transition-colors group-hover/col:bg-dash-accent group-hover/col:text-white",children:i.length})]}),c.jsx("div",{className:"space-y-4 overflow-y-auto px-1 pb-4 scrollbar-hide",children:i.length>0?i.map(o=>c.jsx(Ad,{plan:o,compact:!0,onClick:()=>e(o)},`${o.projectId??"plan"}:${o.slug}`)):c.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center opacity-20",children:[c.jsx("div",{className:"mb-2 h-1 w-8 rounded-full bg-dash-border"}),c.jsx("p",{className:"text-[10px] font-medium uppercase tracking-widest text-dash-text-muted",children:n("plansKanbanEmpty")})]})})]})},r.status)})})}function W_(t){const{t:e}=te(),n=!!t.projectOptions?.length&&!!t.onProjectFilterChange;return c.jsxs("div",{className:["grid gap-3 rounded-xl border border-dash-border bg-dash-surface p-4",n?"lg:grid-cols-[minmax(0,1fr)_auto_auto_auto_auto]":"lg:grid-cols-[minmax(0,1fr)_auto_auto_auto]"].join(" "),children:[c.jsx("input",{type:"search",value:t.searchQuery,onChange:r=>t.onSearchQueryChange(r.target.value),placeholder:e("plansSearch"),"aria-label":e("plansSearch"),className:"rounded-lg border border-dash-border bg-dash-bg px-3 py-2 text-sm text-dash-text outline-none transition focus:border-dash-accent/60"}),n&&c.jsxs("select",{value:t.projectFilter??"all",onChange:r=>t.onProjectFilterChange?.(r.target.value),"aria-label":e("plansProjectFilter"),className:"rounded-lg border border-dash-border bg-dash-bg px-3 py-2 text-sm text-dash-text",children:[c.jsx("option",{value:"all",children:e("plansAllProjects")}),t.projectOptions?.map(r=>c.jsx("option",{value:r.id,children:r.name},r.id))]}),c.jsxs("select",{value:t.statusFilter,onChange:r=>t.onStatusFilterChange(r.target.value),"aria-label":e("plansFilterAll"),className:"rounded-lg border border-dash-border bg-dash-bg px-3 py-2 text-sm text-dash-text",children:[c.jsx("option",{value:"all",children:e("plansFilterAll")}),c.jsx("option",{value:"pending",children:e("plansStatusPending")}),c.jsx("option",{value:"in-progress",children:e("plansStatusInProgress")}),c.jsx("option",{value:"in-review",children:e("plansStatusInReview")}),c.jsx("option",{value:"done",children:e("plansStatusDone")}),c.jsx("option",{value:"cancelled",children:e("plansStatusCancelled")})]}),c.jsxs("select",{value:t.sortBy,onChange:r=>t.onSortByChange(r.target.value),"aria-label":e("plansSortBy"),className:"rounded-lg border border-dash-border bg-dash-bg px-3 py-2 text-sm text-dash-text",children:[c.jsx("option",{value:"date-desc",children:e("plansSortDateDesc")}),c.jsx("option",{value:"date-asc",children:e("plansSortDateAsc")}),c.jsx("option",{value:"name-asc",children:e("plansSortNameAsc")}),c.jsx("option",{value:"name-desc",children:e("plansSortNameDesc")}),c.jsx("option",{value:"progress-desc",children:e("plansSortProgress")})]}),c.jsx("div",{className:"inline-flex rounded-lg border border-dash-border bg-dash-bg p-1",children:["grid","kanban"].map(r=>c.jsx("button",{type:"button",onClick:()=>t.onViewModeChange(r),className:["rounded-md px-3 py-1.5 text-sm transition",t.viewMode===r?"bg-dash-accent text-dash-bg":"text-dash-text-muted hover:text-dash-text"].join(" "),children:e(r==="grid"?"plansViewGrid":"plansViewKanban")},r))})]})}function K_(t){const{t:e}=te(),n=t.activePlans.length+t.completedPlans.length;return c.jsxs("section",{className:"space-y-4 rounded-[2rem] border border-dash-border bg-dash-surface/70 p-5",children:[c.jsxs("div",{className:"flex items-center justify-between gap-3",children:[c.jsxs("div",{children:[c.jsx("h2",{className:"text-lg font-semibold text-dash-text",children:t.projectName}),c.jsx("p",{className:"text-xs text-dash-text-muted",children:e("plansProjectPlans").replace("{count}",String(n))})]}),c.jsx("div",{className:"rounded-full border border-dash-border bg-dash-bg px-3 py-1 text-xs font-semibold text-dash-text-muted",children:n})]}),c.jsx("div",{className:"grid gap-4 xl:grid-cols-3",children:t.activePlans.map(r=>c.jsx(Ad,{plan:r,onClick:()=>t.onPlanClick(r)},r.slug))}),t.completedPlans.length>0&&c.jsxs("details",{className:"rounded-[1.5rem] border border-dash-border/80 bg-dash-bg/40 p-4",children:[c.jsx("summary",{className:"cursor-pointer select-none text-sm font-medium text-dash-text-muted",children:e("plansCompletedCount").replace("{count}",String(t.completedPlans.length))}),c.jsx("div",{className:"mt-4 grid gap-4 xl:grid-cols-3",children:t.completedPlans.map(r=>c.jsx("div",{className:"opacity-60",children:c.jsx(Ad,{plan:r,onClick:()=>t.onPlanClick(r)})},r.slug))})]})]})}function U_(t){return t.projects.flatMap(e=>e.plans.map(n=>({...n,projectId:e.id,projectName:e.name,plansDir:e.plansDir})))}function G_(t,e){const[n,r]=g.useState([]),[s,i]=g.useState([]),[o,a]=g.useState([]),[l,d]=g.useState(!0),[u,h]=g.useState(null),f=g.useCallback(async()=>{d(!0),h(null);try{if(!e){const b=await fetch("/api/plan/list-all");if(!b.ok)throw new Error(`Failed to load plans (${b.status})`);const y=await b.json();i(y.projects.map(w=>({id:w.id,name:w.name}))),a(y.projects.flatMap(w=>w.error?[{id:w.id,name:w.name,error:w.error}]:[])),r(U_(y));return}const p=new URLSearchParams({dir:t,limit:"500",offset:"0",projectId:e}),m=await fetch(`/api/plan/list?${p.toString()}`);if(!m.ok)throw new Error(`Failed to load plans (${m.status})`);const x=await m.json();i([]),a([]),r(x.plans??[])}catch(p){h(p instanceof Error?p.message:"Failed to load plans")}finally{d(!1)}},[e,t]);return g.useEffect(()=>{f()},[f]),{plans:n,projectOptions:s,projectErrors:o,loading:l,error:u,reload:f}}function q_(t){return t.summary.status==="done"||t.summary.status==="cancelled"}function Y_(){const t=localStorage.getItem("nk-plans-view");return t==="kanban"||t==="grid"?t:"grid"}function sy(t){const e=t.get("view");return e==="kanban"||e==="grid"?e:Y_()}function X_(){const{t}=te(),e=Lt(),[n,r]=gl(),s=n.get("dir")??"plans",i=n.get("projectId"),o=!i,{plans:a,projectOptions:l,projectErrors:d,loading:u,error:h}=G_(s,i),[f,p]=g.useState(""),[m,x]=g.useState(()=>sy(n)),[b,y]=g.useState("date-desc"),[w,v]=g.useState("all"),[k,C]=g.useState("all");g.useEffect(()=>{x(sy(n))},[n]);const N=g.useMemo(()=>{const O=f.trim().toLowerCase();return[...a].filter(P=>k==="all"?!0:P.projectId===k).filter(P=>w==="all"?!0:(P.summary.status??"pending")===w).filter(P=>O?[P.summary.title,P.summary.description,P.projectName,P.slug,(P.summary.tags??[]).join(" ")].filter(Boolean).join(" ").toLowerCase().includes(O):!0).sort((P,A)=>{switch(b){case"name-asc":return(P.summary.title??P.name).localeCompare(A.summary.title??A.name);case"name-desc":return(A.summary.title??A.name).localeCompare(P.summary.title??P.name);case"date-asc":return(P.summary.lastModified??"").localeCompare(A.summary.lastModified??"");case"progress-desc":return A.summary.progressPct-P.summary.progressPct;default:return(A.summary.lastModified??"").localeCompare(P.summary.lastModified??"")}})},[a,k,f,b,w]),D=g.useMemo(()=>{const O=new Map;for(const P of N){const A=P.projectId??P.projectName??"current-project",I=P.projectName??t("plansTitle"),j=O.get(A)??{key:A,projectName:I,activePlans:[],completedPlans:[]};q_(P)?j.completedPlans.push(P):j.activePlans.push(P),O.set(A,j)}return Array.from(O.values())},[N,t]),S=O=>{const P=O.plansDir??s,A=O.projectId??i;e(`/plans/${encodeURIComponent(O.slug)}?dir=${encodeURIComponent(P)}${A?`&projectId=${encodeURIComponent(A)}`:""}${o?"&origin=global":""}`)},E=O=>{localStorage.setItem("nk-plans-view",O),x(O);const P=new URLSearchParams(n);O==="grid"?P.delete("view"):P.set("view",O),r(P,{replace:!0})};return c.jsxs("div",{className:"flex h-full flex-col gap-4 overflow-auto",children:[c.jsxs("header",{children:[c.jsx("p",{className:"text-xs uppercase tracking-[0.2em] text-dash-text-muted",children:t("toolsSection")}),c.jsx("h1",{className:"mt-2 text-2xl font-semibold text-dash-text",children:t(o?"plansGlobalTitle":"plansTitle")}),c.jsx("p",{className:"mt-2 text-sm text-dash-text-muted",children:t("plansSubtitle")})]}),c.jsx(W_,{searchQuery:f,viewMode:m,sortBy:b,statusFilter:w,projectFilter:o?k:void 0,projectOptions:o?l:void 0,onSearchQueryChange:p,onViewModeChange:E,onSortByChange:y,onStatusFilterChange:v,onProjectFilterChange:o?C:void 0}),u&&c.jsx("p",{className:"text-sm text-dash-text-muted",children:t("loading")}),h&&c.jsx("p",{className:"rounded-lg border border-red-500/30 bg-red-500/10 p-4 text-sm text-red-300",children:h}),!u&&!h&&d.length>0&&c.jsxs("div",{className:"rounded-xl border border-amber-500/30 bg-amber-500/10 p-4 text-sm text-amber-100",children:[c.jsx("p",{className:"text-[10px] font-bold uppercase tracking-[0.2em] text-amber-200",children:t("plansProjectLoadIssues")}),c.jsx("div",{className:"mt-2 space-y-1",children:d.map(O=>c.jsxs("p",{children:[c.jsx("span",{className:"font-semibold",children:O.name}),": ",O.error]},O.id))})]}),!u&&!h&&N.length===0&&c.jsx("p",{className:"rounded-xl border border-dash-border bg-dash-surface p-8 text-sm text-dash-text-muted",children:t("plansEmpty")}),!u&&!h&&N.length>0&&m==="grid"&&!o&&c.jsx("div",{className:"grid gap-4 xl:grid-cols-3",children:N.map(O=>c.jsx(Ad,{plan:O,onClick:()=>S(O)},O.slug))}),!u&&!h&&N.length>0&&m==="grid"&&o&&c.jsx("div",{className:"space-y-6",children:D.map(O=>c.jsx(K_,{projectName:O.projectName,activePlans:O.activePlans,completedPlans:O.completedPlans,onPlanClick:S},O.key))}),!u&&!h&&N.length>0&&m==="kanban"&&c.jsx(V_,{plans:N,onSelect:S})]})}function Q_(){return c.jsx(X_,{})}const J_=()=>{const{t}=te(),e=Lt(),{projectId:n}=pl(),[r,s]=g.useState(null),{sizes:i,isDragging:o,startDrag:a}=Cm({storageKey:"ninekit-project-config-panels",defaultSizes:[35,40,25],minSizes:[20,25,15]}),l=g.useCallback(async()=>{if(!n)throw new Error("No project ID");const[x,b,y]=await Promise.all([np("project",n),np("global"),l1()]),w=y.find(v=>v.id===n);return w&&s(w.path),{...x,global:b.config??{}}},[n]),d=g.useCallback(async x=>n?(await kk({scope:"project",projectId:n,config:x})).config:void 0,[n]),u=wk({scope:"project",fetchConfig:l,fetchSchema:Sk,saveConfig:d}),h=g.useCallback(x=>{const b=lf(u.config,x),y=lf(u.globalConfig,x);return b!==void 0&&y!==void 0&&b!==y},[u.config,u.globalConfig]),f=g.useMemo(()=>[{id:"paths",title:t("sectionPaths"),fields:[{path:"paths.docs",label:t("fieldDocsPath"),description:t("fieldDocsPathDesc")},{path:"paths.plans",label:t("fieldPlansPath"),description:t("fieldPlansPathDesc")},{path:"paths.globalPlans",label:t("fieldGlobalPlansPath"),description:t("fieldGlobalPlansPathDesc")}]},{id:"project",title:t("sectionProject"),fields:[{path:"project.type",label:t("fieldProjectType"),description:t("fieldProjectTypeDesc")},{path:"project.packageManager",label:t("fieldPackageManager"),description:t("fieldPackageManagerDesc")},{path:"project.framework",label:t("fieldFramework"),description:t("fieldFrameworkDesc")}]},{id:"privacy",title:t("sectionPrivacy"),defaultCollapsed:!0,fields:[{path:"privacyBlock",label:t("fieldPrivacyBlock"),description:t("fieldPrivacyBlockDesc")}]},{id:"advanced",title:t("sectionAdvanced"),defaultCollapsed:!0,fields:[{path:"docs.maxLoc",label:t("fieldDocsMaxLoc"),description:t("fieldDocsMaxLocDesc")},{path:"plan.namingFormat",label:t("fieldPlanNamingFormat"),description:t("fieldPlanNamingFormatDesc")}]}],[t]),p=u.activeFieldPath&&h(u.activeFieldPath)?c.jsx("span",{className:"text-[9px] bg-orange-500/10 text-orange-500 px-1.5 py-0.5 rounded font-bold border border-orange-500/30",children:t("localOverride")}):null,m=u.fieldDoc?c.jsxs("section",{className:"bg-blue-500/5 p-3 rounded-lg border border-blue-500/20",children:[c.jsx("h4",{className:"text-[10px] font-bold text-blue-500 uppercase tracking-widest mb-1",children:t("inheritedFromGlobal")}),c.jsxs("p",{className:"text-[12px] text-dash-text-secondary leading-normal",children:[t("viewGlobalConfig")," ",c.jsx("button",{onClick:()=>e("/config/global"),className:"text-dash-accent hover:underline font-medium",children:t("globalConfig")})]})]}):null;return c.jsxs("div",{className:"animate-in fade-in duration-300 w-full h-full flex flex-col transition-colors",children:[c.jsx(y1,{title:t("projectConfig"),filePath:r?`${r}/.claude/.nk.json`:".claude/.nk.json",onBack:()=>e(`/project/${n}`),onSave:u.handleSave,onReset:u.handleReset,saveStatus:u.saveStatus,syntaxError:u.syntaxError,showResetConfirm:u.showResetConfirm,setShowResetConfirm:u.setShowResetConfirm}),c.jsxs("div",{className:"flex-1 flex min-h-0",children:[c.jsx(S1,{width:i[0],isLoading:u.isLoading,schema:u.schema,config:u.config,sources:u.sources,sections:f,onChange:u.handleFormChange,onFieldFocus:u.setFocusedFieldPath}),c.jsx(Mn,{direction:"horizontal",isDragging:o,onMouseDown:x=>a(0,x)}),c.jsx(Sm,{width:i[1],isLoading:u.isLoading,jsonText:u.jsonText,cursorLine:u.cursorLine,syntaxError:u.syntaxError,onChange:u.handleJsonChange,onEditorFocus:u.handleJsonEditorFocus,onCursorLineChange:u.setCursorLine}),c.jsx(Mn,{direction:"horizontal",isDragging:o,onMouseDown:x=>a(1,x)}),c.jsx(vk,{width:i[2],fieldDoc:u.fieldDoc,activeFieldPath:u.activeFieldPath,overrideBadge:p,extraContent:m})]})]})},wn="__global__",Z_=({project:t})=>{const{t:e}=te(),n=Lt(),{sessions:r,loading:s}=z4(t.id),[i,o]=g.useState(null),[a,l]=g.useState(!0),[d,u]=g.useState(null),[h,f]=g.useState(wn),[p,m]=g.useState(wn),x=async(j,M)=>{try{await D4(j,t.path,M,t.id)}catch(T){alert(`${e("actionFailed")}: ${T instanceof Error?T.message:j}`)}},b=g.useCallback(()=>{const j=new AbortController;return l(!0),u(null),P4(t.id,j.signal).then(M=>{o(M),f(M.preferences.project.terminalApp||wn),m(M.preferences.project.editorApp||wn)}).catch(M=>{M instanceof DOMException&&M.name==="AbortError"||(o(null),f(wn),m(wn),u(M instanceof Error&&M.message?M.message:e("actionOptionsLoadFailed")))}).finally(()=>{j.signal.aborted||l(!1)}),j},[t.id,e]);g.useEffect(()=>{const j=b();return()=>{j.abort()}},[b]);const y=i?.terminals||[],w=i?.editors||[],v=y.find(j=>j.id===i?.defaults.terminalApp)?.label||i?.defaults.terminalApp,k=w.find(j=>j.id===i?.defaults.editorApp)?.label||i?.defaults.editorApp,C=g.useMemo(()=>y.find(j=>h===wn?j.id===i?.defaults.terminalApp:j.id===h),[y,h,i?.defaults.terminalApp]),N=g.useMemo(()=>w.find(j=>p===wn?j.id===i?.defaults.editorApp:j.id===p),[w,p,i?.defaults.editorApp]),D=async(j,M)=>{if(!t.id.startsWith("discovered-"))try{await d1(t.id,{preferences:{[j]:M===wn?null:M}})}catch(T){const L=T instanceof Error?T.message:e("projectPreferenceSaveFailed");alert(`${e("actionFailed")}: ${L}`)}},S=t.activePlans??[],E=t.planSettings?.plansDir||"plans",O=new URLSearchParams({dir:E,projectId:t.id}).toString(),P=j=>{const M=j.split(/[\\/]/).filter(Boolean).pop()??"plan";n(`/plans/${encodeURIComponent(M)}?${O}`)},A=()=>{n(`/plans?${O}&view=kanban`)},I=()=>{n(`/plans?${O}`)};return c.jsxs("div",{className:"animate-in fade-in slide-in-from-bottom-2 duration-500 transition-colors flex flex-col h-full",children:[c.jsx("section",{className:"mb-6 shrink-0",children:c.jsxs("div",{className:"flex flex-col md:flex-row md:items-end justify-between gap-4",children:[c.jsxs("div",{children:[c.jsxs("div",{className:"flex items-center gap-3 mb-1",children:[c.jsx("h1",{className:"text-3xl font-bold tracking-tight text-dash-text",children:t.name}),c.jsx(eF,{status:t.health}),c.jsx(vT,{variant:"beta"})]}),c.jsxs("p",{className:"text-dash-text-secondary mono text-sm flex items-center gap-2 italic",children:[c.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:c.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"})}),t.path]})]}),c.jsx("div",{className:"flex items-center gap-3",children:c.jsx("span",{className:"text-[10px] text-dash-text-muted font-bold uppercase tracking-widest bg-dash-surface border border-dash-border px-2 py-1 rounded",children:r.length>0?`${r.length} ${e("sessions")}`:e("noSessions")})})]})}),c.jsxs("section",{className:"grid grid-cols-2 md:grid-cols-4 gap-3 mb-6 shrink-0",children:[d?c.jsxs("div",{className:"col-span-2 md:col-span-4 rounded-lg border border-orange-500/30 bg-orange-500/5 px-3 py-2 text-xs text-orange-700 dark:text-orange-300 flex items-center justify-between gap-3",children:[c.jsx("span",{children:d}),c.jsx("button",{onClick:()=>void b(),className:"rounded border border-orange-500/40 px-2 py-1 font-semibold hover:bg-orange-500/10 transition-colors",children:e("tryAgain")})]}):null,c.jsx(iy,{icon:"📟",label:e("terminal"),sub:C?`${C.openMode==="open-app"?e("openAppOnly"):e("openAtPath")} • ${C.label}`:e("terminalSub"),onClick:()=>x("terminal",h===wn?void 0:h),disabled:a||!C&&y.length>0,options:y,value:h,fallbackLabel:i?`${e("useGlobalFallback")} (${v})`:e("useGlobalFallback"),onChange:async j=>{f(j),await D("terminalApp",j)}}),c.jsx(iy,{icon:"💻",label:e("editor"),sub:N?`${N.openMode==="open-app"?e("openAppOnly"):e("openAtPath")} • ${N.label}`:e("editorSub"),onClick:()=>x("editor",p===wn?void 0:p),disabled:a||!N&&w.length>0,options:w,value:p,fallbackLabel:i?`${e("useGlobalFallback")} (${k})`:e("useGlobalFallback"),onChange:async j=>{m(j),await D("editorApp",j)}}),c.jsx(lp,{icon:"🤖",label:e("launch"),sub:e("launchSub"),highlight:!0,onClick:()=>x("launch")}),c.jsx(lp,{icon:"⚙️",label:e("config"),sub:e("configSub"),onClick:()=>n(`/config/project/${t.id}`)})]}),c.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6 flex-1 min-h-0",children:[c.jsx("div",{className:"lg:col-span-2 flex flex-col gap-6 min-h-0",children:c.jsxs("div",{className:"bg-dash-surface border border-dash-border rounded-xl overflow-hidden shadow-sm flex-1 flex flex-col min-h-0",children:[c.jsx("div",{className:"px-4 py-3 border-b border-dash-border flex items-center justify-between bg-dash-surface-hover/50 shrink-0",children:c.jsx("h3",{className:"text-sm font-bold text-dash-text-secondary uppercase tracking-widest",children:e("recentSessions")})}),c.jsx("div",{className:"divide-y divide-dash-border overflow-y-auto flex-1",children:s?c.jsx("div",{className:"p-4 text-center text-dash-text-muted animate-pulse",children:e("loadingSessions")}):r.length===0?c.jsx("div",{className:"p-4 text-center text-dash-text-muted",children:e("noSessionsFound")}):r.map(j=>c.jsxs("button",{type:"button",className:"w-full text-left p-4 hover:bg-dash-surface-hover transition-colors group cursor-pointer",onClick:()=>n(`/sessions/${t.id}/${j.id}`),children:[c.jsxs("div",{className:"flex items-center justify-between mb-1",children:[c.jsx("span",{className:"text-xs font-bold text-dash-accent",children:j.timestamp}),c.jsx("span",{className:"text-[10px] text-dash-text-muted font-medium group-hover:text-dash-text-secondary transition-colors",children:j.duration})]}),c.jsx("p",{className:"text-sm text-dash-text-secondary leading-relaxed truncate",children:j.summary})]},j.id))})]})}),c.jsxs("div",{className:"flex flex-col gap-6 min-h-0",children:[c.jsxs("div",{className:"bg-dash-surface border border-dash-border rounded-xl p-6 shadow-sm shrink-0",children:[c.jsxs("h3",{className:"text-sm font-bold text-dash-text-secondary uppercase tracking-widest mb-4 flex items-center gap-2",children:[e("planSettingsTitle"),c.jsx("span",{className:"text-[10px] font-normal text-dash-text-muted normal-case",children:t.planSettings?.scope==="global"?e("planScopeGlobal"):e("planScopeProject")})]}),c.jsxs("div",{className:"space-y-4",children:[c.jsx(bc,{label:e("plansDirectory"),value:t.planSettings?.plansDir??E}),c.jsx(bc,{label:e("validationMode"),value:t.planSettings?.validationMode??"prompt"}),c.jsx(bc,{label:e("planScopeLabel"),value:t.planSettings?.scope==="global"?e("planScopeGlobal"):e("planScopeProject")}),c.jsx(bc,{label:e("activePlansLabel"),value:String(t.planSettings?.activePlanCount??S.length)})]}),c.jsx("button",{onClick:()=>n(`/config/project/${t.id}`),className:"w-full mt-6 py-2 rounded-lg bg-dash-bg text-xs font-bold text-dash-text-secondary hover:bg-dash-surface-hover transition-colors border border-dash-border",children:e("editProjectConfig")})]}),c.jsxs("div",{className:"bg-dash-surface border border-dash-border rounded-xl shadow-sm flex flex-col flex-1 min-h-0",children:[c.jsx("div",{className:"p-4 pb-2 border-b border-dash-border shrink-0",children:c.jsxs("h3",{className:"text-sm font-bold text-dash-text-secondary uppercase tracking-widest flex items-center justify-between",children:[e("activePlansTitle"),c.jsx("span",{className:"text-[10px] bg-dash-accent-subtle text-dash-accent px-1.5 py-0.5 rounded-full",children:S.length})]})}),c.jsx("div",{className:"overflow-y-auto flex-1 px-4 py-2 space-y-2",children:S.length===0?c.jsx("div",{className:"text-center text-dash-text-muted py-4",children:e("noActivePlansFound")}):S.map(j=>c.jsxs("div",{className:"flex flex-col gap-2 border-l-2 border-dash-accent/20 pl-3 py-2",children:[c.jsxs("div",{className:"flex items-start justify-between gap-2",children:[c.jsx("span",{className:"text-sm font-semibold text-dash-text",children:j.title??j.planDir.split(/[\\/]/).filter(Boolean).pop()}),c.jsx(tF,{status:j.status??"pending"})]}),c.jsx("div",{className:"h-1.5 rounded-full bg-dash-border overflow-hidden",children:c.jsx("div",{className:"h-full bg-dash-accent transition-all",style:{width:`${j.progressPct}%`}})}),c.jsxs("p",{className:"text-[10px] text-dash-text-muted leading-tight",children:[e("progressLabel"),": ",j.progressPct,"% • ",j.completed,"/",j.totalPhases]}),j.blockedBy.length>0?c.jsxs("p",{className:"text-[10px] text-dash-text-muted leading-tight",children:[e("blockedByLabel"),": ",j.blockedBy[0]]}):null,c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx("button",{type:"button",onClick:()=>P(j.planDir),className:"text-xs font-bold text-dash-text-muted hover:text-dash-accent transition-colors",children:e("openPlan")}),c.jsx("button",{type:"button",onClick:A,className:"text-xs font-bold text-dash-text-muted hover:text-dash-accent transition-colors",children:e("openKanban")})]})]},j.planFile))}),c.jsxs("div",{className:"p-4 pt-2 border-t border-dash-border shrink-0 flex gap-2",children:[c.jsxs("button",{type:"button",onClick:I,className:"flex-1 text-xs font-bold text-dash-text-muted hover:text-dash-accent transition-colors text-center block",children:[e("plansNav")," →"]}),c.jsxs("button",{type:"button",onClick:A,className:"flex-1 text-xs font-bold text-dash-text-muted hover:text-dash-accent transition-colors text-center block",children:[e("openKanban")," →"]})]})]})]})]})]})},eF=({status:t})=>{const e={[Yr.HEALTHY]:"bg-dash-accent-subtle text-dash-accent border-dash-accent/20",[Yr.WARNING]:"bg-orange-500/10 text-orange-600 border-orange-500/20",[Yr.ERROR]:"bg-red-500/10 text-red-600 border-red-500/20",[Yr.LOADING]:"bg-dash-border/20 text-dash-text-muted border-dash-border",[Yr.UNKNOWN]:"bg-dash-border/20 text-dash-text-muted border-dash-border"};return c.jsx("span",{className:`px-2 py-0.5 rounded-full text-[10px] font-bold border uppercase tracking-widest ${e[t]}`,children:t})},iy=({icon:t,label:e,sub:n,disabled:r,options:s,value:i,fallbackLabel:o,onClick:a,onChange:l})=>{const{t:d}=te();return c.jsxs("div",{className:"flex flex-col gap-2",children:[c.jsx(lp,{icon:t,label:e,sub:n,onClick:a,disabled:r}),c.jsxs("select",{value:i,onChange:u=>void l(u.target.value),className:"w-full rounded-md border border-dash-border bg-dash-surface px-2 py-1 text-xs text-dash-text-secondary",children:[c.jsx("option",{value:wn,children:o}),s.map(u=>c.jsx("option",{value:u.id,disabled:!u.available,children:`${u.label} • ${d(u.detected?"detected":"notDetected")}`},u.id))]})]})},lp=({icon:t,label:e,sub:n,highlight:r,onClick:s,disabled:i})=>c.jsxs("button",{onClick:s,disabled:i,className:`p-4 rounded-xl border flex flex-col gap-1 transition-all group ${r?"bg-dash-accent-subtle border-dash-accent/30 hover:bg-dash-accent-glow hover:border-dash-accent/50 shadow-sm shadow-dash-accent/5":"bg-dash-surface border-dash-border hover:bg-dash-surface-hover hover:border-dash-text-muted shadow-sm"} ${i?"opacity-50 cursor-not-allowed":""}`,children:[c.jsx("span",{className:"text-2xl mb-1 group-hover:scale-110 transition-transform",children:t}),c.jsx("span",{className:"text-sm font-bold text-dash-text",children:e}),c.jsx("span",{className:"text-[10px] text-dash-text-muted font-medium truncate italic",children:n})]}),bc=({label:t,value:e})=>c.jsxs("div",{className:"flex items-center justify-between text-xs py-1.5 border-b border-dash-border/50 last:border-0",children:[c.jsx("span",{className:"text-dash-text-muted font-medium",children:t}),c.jsx("span",{className:"text-dash-text font-bold mono uppercase text-[10px] tracking-tight",children:e})]}),tF=({status:t})=>{const e={pending:"bg-amber-400/10 text-amber-700 border-amber-400/20","in-progress":"bg-sky-400/10 text-sky-700 border-sky-400/20","in-review":"bg-violet-400/10 text-violet-700 border-violet-400/20",done:"bg-emerald-400/10 text-emerald-700 border-emerald-400/20",cancelled:"bg-rose-400/10 text-rose-700 border-rose-400/20"};return c.jsx("span",{className:`rounded-full border px-2 py-0.5 text-[10px] font-bold uppercase tracking-widest ${e[t]??e.pending}`,children:t})},nF=()=>{const{t}=te(),{project:e}=o3(),[n,r]=g.useState(null);if(g.useEffect(()=>{if(!e?.id){r(null);return}r(null);let i=!1;return C4(e.id).then(o=>{i||r(o)}).catch(()=>{i||r(null)}),()=>{i=!0}},[e?.id]),!e)return c.jsxs("div",{className:"flex flex-col items-center justify-center h-full space-y-4 opacity-50",children:[c.jsx("div",{className:"w-16 h-16 rounded-full bg-dash-surface border border-dash-border flex items-center justify-center",children:c.jsx("span",{className:"text-2xl text-dash-text-muted",children:"📂"})}),c.jsx("p",{className:"text-lg text-dash-text-secondary font-bold",children:t("selectProject")})]});const s=n?.id===e.id?n:e;return c.jsx(Z_,{project:s})},rF={Bash:{colorClass:"text-purple-500 dark:text-purple-400",bgClass:"bg-gray-100 dark:bg-[#1a1b26]"},Read:{colorClass:"text-blue-400",bgClass:"bg-blue-500/5"},Write:{colorClass:"text-emerald-400",bgClass:"bg-emerald-500/5"},Edit:{colorClass:"text-amber-400",bgClass:"bg-amber-500/5"},MultiEdit:{colorClass:"text-amber-400",bgClass:"bg-amber-500/5"},Grep:{colorClass:"text-cyan-400",bgClass:"bg-cyan-500/5"},Glob:{colorClass:"text-cyan-400",bgClass:"bg-cyan-500/5"},Agent:{colorClass:"text-violet-400",bgClass:"bg-violet-500/5"},WebSearch:{colorClass:"text-indigo-400",bgClass:"bg-indigo-500/5"},WebFetch:{colorClass:"text-indigo-400",bgClass:"bg-indigo-500/5"},Skill:{colorClass:"text-pink-400",bgClass:"bg-pink-500/5"}},sF={colorClass:"text-dash-text-muted",bgClass:"bg-dash-bg/50"};function iF(t,e){return t.length<=e?t:`${t.slice(0,e)}…`}function oF(t){try{return JSON.stringify(JSON.parse(t),null,2)}catch{return t}}const aF=({toolName:t,toolInput:e,result:n,isError:r=!1,skillName:s})=>{const{t:i}=te(),[o,a]=g.useState(!1),l=rF[t]??sF,d=t==="Bash",u=t==="Skill"&&s,h=n?iF(n.trim(),80):null;return c.jsxs("div",{className:`rounded-lg border overflow-hidden ${u?"border-pink-500/20 bg-pink-500/5":`border-dash-border ${l.bgClass}`}`,children:[c.jsxs("button",{type:"button",onClick:()=>a(f=>!f),className:"flex w-full items-center gap-2 px-3 py-2 text-left hover:bg-white/5 transition-colors","aria-expanded":o,children:[c.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",className:`shrink-0 transition-transform duration-150 ${o?"rotate-90":""}`,children:c.jsx("path",{d:"M6 4l4 4-4 4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}),u?c.jsxs(c.Fragment,{children:[c.jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",className:"shrink-0 text-pink-500 dark:text-pink-400",children:c.jsx("path",{d:"M8.5 1.5L3 9h4.5l-1 5.5L13 7H8.5l1-5.5z",stroke:"currentColor",strokeWidth:"1.2",strokeLinejoin:"round"})}),c.jsx("span",{className:"font-semibold text-sm text-pink-600 dark:text-pink-400",children:"Skill:"}),c.jsx("span",{className:"font-mono text-sm text-pink-600 dark:text-pink-400",children:s})]}):c.jsx("span",{className:`font-mono font-semibold text-sm ${l.colorClass}`,children:t}),!o&&h&&c.jsx("span",{className:"ml-2 truncate text-xs text-dash-text-muted",children:h})]}),o&&c.jsxs("div",{className:"border-t border-dash-border/50 flex flex-col gap-0",children:[e&&c.jsxs("div",{className:"px-3 py-2",children:[c.jsx("div",{className:"mb-1 text-[10px] uppercase tracking-wider text-dash-text-muted",children:i("sessionToolInput")}),c.jsx("pre",{className:"max-h-48 overflow-y-auto whitespace-pre-wrap break-words rounded text-xs text-dash-text",children:oF(e)})]}),n&&c.jsxs("div",{className:`px-3 py-2 ${e?"border-t border-dash-border/30":""}`,children:[c.jsx("div",{className:"mb-1 text-[10px] uppercase tracking-wider text-dash-text-muted",children:i("sessionToolResult")}),c.jsx("pre",{className:`max-h-64 overflow-y-auto whitespace-pre-wrap break-words rounded text-xs ${d?"bg-gray-100 dark:bg-[#1a1b26] px-2 py-1.5 text-gray-800 dark:text-[#9ece6a] font-mono":r?"border border-red-500/30 bg-red-500/5 px-2 py-1.5 text-red-400":"text-dash-text"}`,children:n})]})]})]})};function lF(t){const e=[];for(const r of t.matchAll(/<command-name>\/?(.+?)<\/command-name>/g))e.push(r[1].trim());for(const r of t.matchAll(/^###\s+Skill:\s+(.+?)$/gm))e.push(r[1].trim());for(const r of t.matchAll(/Launching skill:\s+(\S+)/g))e.push(r[1].trim());if(/Base directory for this skill:/i.test(t)){const r=t.match(/^#\s+(.+?)(?:\s*[-—]|$)/m);r&&e.push(r[1].trim())}const n=new Set;return e.filter(r=>{const s=r.toLowerCase();return n.has(s)?!1:(n.add(s),!0)})}function IS(t){return t.replace(/<command-message>[\s\S]*?<\/command-message>\s*/g,"").replace(/<command-name>[\s\S]*?<\/command-name>\s*/g,"").replace(/<command-args>[\s\S]*?<\/command-args>\s*/g,"").replace(/^Base directory for this skill:.*$/gm,"").replace(/^<!--.*?-->\s*$/gm,"").replace(/^\n+/,"").trim()}function cF(t){const e=t.match(/<command-args>([\s\S]*?)<\/command-args>/),n=e?e[1].trim():null,r=t.indexOf("Base directory for this skill:"),s=r!==-1?t.slice(r):t;return[n,IS(s)]}function dF(t){if(!t)return null;try{const e=JSON.parse(t);return typeof e.skill=="string"?e.skill:null}catch{return null}}function uF({name:t}){return c.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 mr-2 rounded border border-pink-500/30 bg-pink-500/10 text-pink-600 dark:text-pink-400 text-xs font-semibold align-middle",children:[c.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",className:"shrink-0",children:c.jsx("path",{d:"M8.5 1.5L3 9h4.5l-1 5.5L13 7H8.5l1-5.5z",stroke:"currentColor",strokeWidth:"1.2",strokeLinejoin:"round"})}),"Skill: ",t]})}function cp({name:t,text:e}){const n=e.split(`
|
|
316
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function n9(t,e){if(t){if(typeof t=="string")return Ob(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);if(n==="Object"&&t.constructor&&(n=t.constructor.name),n==="Map"||n==="Set")return Array.from(t);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ob(t,e)}}function Ob(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function r9(t,e){var n=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(n!=null){var r,s,i,o,a=[],l=!0,d=!1;try{if(i=(n=n.call(t)).next,e!==0)for(;!(l=(r=i.call(n)).done)&&(a.push(r.value),a.length!==e);l=!0);}catch(u){d=!0,s=u}finally{try{if(!l&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(d)throw s}}return a}}function s9(t){if(Array.isArray(t))return t}function i9(t,e){if(t==null)return{};var n=o9(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function o9(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var Im=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=i9(t,XI),i=rL(zs,3),o=e9(i,3),a=o[0],l=o[1],d=o[2];return c.jsxs("svg",Mh(Mh({height:n,style:Mh({flex:"none",lineHeight:1},r),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:zs}),c.jsx("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:"#3186FF"}),c.jsx("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:a.fill}),c.jsx("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:l.fill}),c.jsx("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z",fill:d.fill}),c.jsxs("defs",{children:[c.jsxs("linearGradient",{gradientUnits:"userSpaceOnUse",id:a.id,x1:"7",x2:"11",y1:"15.5",y2:"12",children:[c.jsx("stop",{stopColor:"#08B962"}),c.jsx("stop",{offset:"1",stopColor:"#08B962",stopOpacity:"0"})]}),c.jsxs("linearGradient",{gradientUnits:"userSpaceOnUse",id:l.id,x1:"8",x2:"11.5",y1:"5.5",y2:"11",children:[c.jsx("stop",{stopColor:"#F94543"}),c.jsx("stop",{offset:"1",stopColor:"#F94543",stopOpacity:"0"})]}),c.jsxs("linearGradient",{gradientUnits:"userSpaceOnUse",id:d.id,x1:"3.5",x2:"17.5",y1:"13.5",y2:"12",children:[c.jsx("stop",{stopColor:"#FABC12"}),c.jsx("stop",{offset:".46",stopColor:"#FABC12",stopOpacity:"0"})]})]})]}))});function La(t){"@babel/helpers - typeof";return La=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},La(t)}function Mb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function a9(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Mb(Object(n),!0).forEach(function(r){l9(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Mb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function l9(t,e,n){return e=c9(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function c9(t){var e=d9(t,"string");return La(e)=="symbol"?e:String(e)}function d9(t,e){if(La(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(La(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function u9(t){if(t==null)throw new TypeError("Cannot destructure "+t)}var h9=g.memo(function(t){var e=Object.assign({},(u9(t),t));return c.jsx(hs,a9({Icon:Im,"aria-label":zs,background:GI,color:qI,iconMultiple:YI},e))});function Ia(t){"@babel/helpers - typeof";return Ia=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ia(t)}var f9=["size","style"];function Ab(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Ah(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Ab(Object(n),!0).forEach(function(r){p9(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Ab(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function p9(t,e,n){return e=m9(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function m9(t){var e=g9(t,"string");return Ia(e)=="symbol"?e:String(e)}function g9(t,e){if(Ia(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Ia(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function x9(t,e){if(t==null)return{};var n=b9(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function b9(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var bS=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=x9(t,f9);return c.jsxs("svg",Ah(Ah({fill:"currentColor",fillRule:"evenodd",height:n,style:Ah({flex:"none",lineHeight:1},r),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:zs}),c.jsx("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z"})]}))});function $a(t){"@babel/helpers - typeof";return $a=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$a(t)}var y9=["size","style"];function Tb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Th(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Tb(Object(n),!0).forEach(function(r){v9(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Tb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function v9(t,e,n){return e=w9(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function w9(t){var e=k9(t,"string");return $a(e)=="symbol"?e:String(e)}function k9(t,e){if($a(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if($a(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function S9(t,e){if(t==null)return{};var n=C9(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function C9(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var yS=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=S9(t,y9);return c.jsxs("svg",Th(Th({fill:"currentColor",fillRule:"evenodd",height:n,style:Th({flex:"none",lineHeight:1},r),viewBox:"0 0 98 24",xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:zs}),c.jsx("path",{d:"M21.186 12.67c0 2.649-.786 4.759-2.359 6.33-1.766 1.87-4.09 2.806-6.969 2.806-2.756 0-5.088-.953-6.996-2.86C2.954 17.04 2 14.693 2 11.904c0-2.789.954-5.137 2.862-7.043C6.77 2.953 9.102 2 11.858 2c1.396 0 2.712.247 3.949.741 1.236.495 2.252 1.192 3.047 2.092l-1.749 1.748c-.583-.706-1.338-1.258-2.266-1.655a7.49 7.49 0 00-2.981-.596c-2.067 0-3.816.715-5.247 2.145-1.413 1.448-2.12 3.257-2.12 5.428s.707 3.98 2.12 5.428c1.431 1.43 3.18 2.145 5.247 2.145 1.89 0 3.463-.53 4.717-1.588 1.254-1.06 1.979-2.516 2.173-4.37h-6.89v-2.277h9.196c.088.495.132.971.132 1.43m7.652-4.633c1.946 0 3.494.629 4.645 1.886 1.15 1.257 1.726 3.018 1.726 5.282l-.027.268H24.877c.036 1.284.464 2.318 1.285 3.102.82.785 1.802 1.177 2.944 1.177 1.57 0 2.802-.784 3.694-2.354l2.195 1.07a6.54 6.54 0 01-2.45 2.595C31.503 21.688 30.32 22 29 22c-1.927 0-3.516-.66-4.765-1.98-1.249-1.319-1.873-2.986-1.873-5.001 0-1.997.606-3.66 1.82-4.988 1.213-1.329 2.766-1.993 4.657-1.993m-.053 2.247c-.928 0-1.727.285-2.396.856-.67.57-1.11 1.337-1.325 2.3h7.522c-.071-.91-.442-1.663-1.111-2.26-.67-.598-1.566-.896-2.69-.896M39.247 21.53h-2.455V8.465h2.348v1.813h.107c.374-.64.947-1.173 1.721-1.6.774-.427 1.544-.64 2.309-.64.96 0 1.806.222 2.535.667a3.931 3.931 0 011.601 1.84c1.085-1.671 2.589-2.507 4.51-2.507 1.513 0 2.678.462 3.496 1.387.819.924 1.228 2.24 1.228 3.946v8.16h-2.455v-7.786c0-1.227-.223-2.112-.668-2.654-.444-.542-1.192-.813-2.241-.813-.943 0-1.735.4-2.375 1.2-.64.8-.961 1.742-.961 2.826v7.227h-2.455v-7.786c0-1.227-.223-2.112-.668-2.654-.444-.542-1.191-.813-2.241-.813-.943 0-1.735.4-2.375 1.2-.64.8-.961 1.742-.961 2.826v7.227zM61.911 3.93c0 .48-.17.89-.508 1.228a1.675 1.675 0 01-1.23.508c-.48 0-.89-.17-1.229-.508a1.673 1.673 0 01-.508-1.228c0-.481.17-.89.508-1.229a1.675 1.675 0 011.23-.508c.48 0 .89.17 1.23.508.338.338.507.748.507 1.228m-.11 4.514v13.088h-2.857V8.443h2.857zM80 3.93c0 .48-.17.89-.508 1.228a1.675 1.675 0 01-1.23.508c-.48 0-.89-.17-1.229-.508a1.673 1.673 0 01-.508-1.228c0-.481.17-.89.508-1.229a1.675 1.675 0 011.23-.508c.48 0 .89.17 1.23.508.338.338.507.748.507 1.228m-.11 4.514v13.088h-2.857V8.443h2.857zm-16.343.022h2.349v1.813h.107c.373-.64.947-1.173 1.721-1.6a4.935 4.935 0 012.415-.64c1.601 0 2.833.458 3.696 1.373.863.916 1.294 2.218 1.294 3.907v8.213h-2.455v-8.053c-.053-2.133-1.13-3.2-3.229-3.2-.978 0-1.797.395-2.455 1.187-.658.79-.987 1.737-.987 2.84v7.226h-2.456V8.465z"})]}))});function Ba(t){"@babel/helpers - typeof";return Ba=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ba(t)}var j9=["type"];function Rb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function N9(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Rb(Object(n),!0).forEach(function(r){P9(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Rb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function P9(t,e,n){return e=D9(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function D9(t){var e=E9(t,"string");return Ba(e)=="symbol"?e:String(e)}function E9(t,e){if(Ba(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Ba(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function O9(t,e){if(t==null)return{};var n=M9(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function M9(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var A9=g.memo(function(t){var e=t.type,n=e===void 0?"mono":e,r=O9(t,j9),s=n==="color"?Im:bS;return c.jsx(fs,N9({Icon:s,Text:yS,"aria-label":zs,spaceMultiple:UI,textMultiple:KI},r))}),Qs=bS;Qs.Color=Im;Qs.Text=yS;Qs.Combine=A9;Qs.Avatar=h9;Qs.colorPrimary=xS;Qs.title=zs;var Ol="GithubCopilot",T9=.75,R9=.3,vS="#000",L9=vS,I9="#fff",$9=.75;function _a(t){"@babel/helpers - typeof";return _a=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_a(t)}var B9=["size","style"];function Lb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Rh(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Lb(Object(n),!0).forEach(function(r){_9(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Lb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function _9(t,e,n){return e=F9(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function F9(t){var e=z9(t,"string");return _a(e)=="symbol"?e:String(e)}function z9(t,e){if(_a(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(_a(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function H9(t,e){if(t==null)return{};var n=V9(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function V9(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var $m=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=H9(t,B9);return c.jsxs("svg",Rh(Rh({fill:"currentColor",fillRule:"evenodd",height:n,style:Rh({flex:"none",lineHeight:1},r),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:Ol}),c.jsx("path",{d:"M19.245 5.364c1.322 1.36 1.877 3.216 2.11 5.817.622 0 1.2.135 1.592.654l.73.964c.21.278.323.61.323.955v2.62c0 .339-.173.669-.453.868C20.239 19.602 16.157 21.5 12 21.5c-4.6 0-9.205-2.583-11.547-4.258-.28-.2-.452-.53-.453-.868v-2.62c0-.345.113-.679.321-.956l.73-.963c.392-.517.974-.654 1.593-.654l.029-.297c.25-2.446.81-4.213 2.082-5.52 2.461-2.54 5.71-2.851 7.146-2.864h.198c1.436.013 4.685.323 7.146 2.864zm-7.244 4.328c-.284 0-.613.016-.962.05-.123.447-.305.85-.57 1.108-1.05 1.023-2.316 1.18-2.994 1.18-.638 0-1.306-.13-1.851-.464-.516.165-1.012.403-1.044.996a65.882 65.882 0 00-.063 2.884l-.002.48c-.002.563-.005 1.126-.013 1.69.002.326.204.63.51.765 2.482 1.102 4.83 1.657 6.99 1.657 2.156 0 4.504-.555 6.985-1.657a.854.854 0 00.51-.766c.03-1.682.006-3.372-.076-5.053-.031-.596-.528-.83-1.046-.996-.546.333-1.212.464-1.85.464-.677 0-1.942-.157-2.993-1.18-.266-.258-.447-.661-.57-1.108-.32-.032-.64-.049-.96-.05zm-2.525 4.013c.539 0 .976.426.976.95v1.753c0 .525-.437.95-.976.95a.964.964 0 01-.976-.95v-1.752c0-.525.437-.951.976-.951zm5 0c.539 0 .976.426.976.95v1.753c0 .525-.437.95-.976.95a.964.964 0 01-.976-.95v-1.752c0-.525.437-.951.976-.951zM7.635 5.087c-1.05.102-1.935.438-2.385.906-.975 1.037-.765 3.668-.21 4.224.405.394 1.17.657 1.995.657h.09c.649-.013 1.785-.176 2.73-1.11.435-.41.705-1.433.675-2.47-.03-.834-.27-1.52-.63-1.813-.39-.336-1.275-.482-2.265-.394zm6.465.394c-.36.292-.6.98-.63 1.813-.03 1.037.24 2.06.675 2.47.968.957 2.136 1.104 2.776 1.11h.044c.825 0 1.59-.263 1.995-.657.555-.556.765-3.187-.21-4.224-.45-.468-1.335-.804-2.385-.906-.99-.088-1.875.058-2.265.394zM12 7.615c-.24 0-.525.015-.84.044.03.16.045.336.06.526l-.001.159a2.94 2.94 0 01-.014.25c.225-.022.425-.027.612-.028h.366c.187 0 .387.006.612.028-.015-.146-.015-.277-.015-.409.015-.19.03-.365.06-.526a9.29 9.29 0 00-.84-.044z"})]}))});function Fa(t){"@babel/helpers - typeof";return Fa=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Fa(t)}function Ib(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function W9(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Ib(Object(n),!0).forEach(function(r){K9(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Ib(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function K9(t,e,n){return e=U9(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function U9(t){var e=G9(t,"string");return Fa(e)=="symbol"?e:String(e)}function G9(t,e){if(Fa(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Fa(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function q9(t){if(t==null)throw new TypeError("Cannot destructure "+t)}var Y9=g.memo(function(t){var e=Object.assign({},(q9(t),t));return c.jsx(hs,W9({Icon:$m,"aria-label":Ol,background:L9,color:I9,iconMultiple:$9},e))});function za(t){"@babel/helpers - typeof";return za=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},za(t)}var X9=["size","style"];function $b(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Lh(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?$b(Object(n),!0).forEach(function(r){Q9(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):$b(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Q9(t,e,n){return e=J9(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function J9(t){var e=Z9(t,"string");return za(e)=="symbol"?e:String(e)}function Z9(t,e){if(za(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(za(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function e$(t,e){if(t==null)return{};var n=t$(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function t$(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var wS=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=e$(t,X9);return c.jsxs("svg",Lh(Lh({fill:"currentColor",fillRule:"evenodd",height:n,style:Lh({flex:"none",lineHeight:1},r),viewBox:"0 0 154 24",xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:Ol}),c.jsx("path",{d:"M2 11.875c0 5.256 3.013 8.506 8.19 8.506 4.76 0 8.027-2.72 8.027-7.722v-1.545h-7.982v2.928h4.095c-.161 1.96-1.68 3.25-4.049 3.25-2.6 0-4.347-1.498-4.347-4.334V10.7c0-2.582 1.518-4.31 4.186-4.31 1.91 0 3.267.922 3.68 2.374h3.865c-.437-3.366-3.427-5.625-7.499-5.625C5.29 3.138 2 6.366 2 11.875zm17.308-5.44h3.496V3h-3.496v3.435zm0 13.715h3.496V7.795h-3.496V20.15zm10.544-9.52h2.438V7.795h-2.438V3.922h-3.496v3.873H24.17v2.835h2.186v6.8c0 1.637.69 2.72 2.76 2.72h3.174v-2.766h-2.438V10.63zm3.994 9.52h3.727v-7.076h7.568v7.076h3.726V3.346h-3.726v6.777h-7.568V3.346h-3.727V20.15zM62.385 7.795h-3.497v6.523c0 1.868-1.012 3.205-2.668 3.205-1.38 0-2.162-.83-2.162-2.56V7.796h-3.52v7.722c0 2.95 1.357 4.864 4.118 4.864 1.955 0 3.29-.945 4.002-2.49h.207l.46 2.26h3.06V7.794zm1.698 12.355h3.06l.436-2.213h.207c.713 1.591 2.3 2.444 4.072 2.444 3.174 0 5.015-2.374 5.015-6.385 0-4.057-1.887-6.432-5.084-6.432-1.978 0-3.428 1.014-4.003 2.49h-.207V3h-3.496v17.15zm3.496-5.624v-1.06c0-1.845 1.173-3.043 2.99-3.043 1.657 0 2.738.853 2.738 2.581v1.983c0 1.521-.874 2.559-2.714 2.559-1.864 0-3.014-1.222-3.014-3.02zm21.8 5.855c4.21 0 7.177-2.351 7.683-6.063h-3.151c-.46 2.098-2.186 3.389-4.486 3.389-2.852 0-4.67-1.867-4.67-4.518v-2.743c0-2.882 1.887-4.634 4.716-4.634 2.53 0 4.072 1.36 4.44 3.366h3.151c-.368-3.665-3.243-6.063-7.499-6.063-5.038 0-7.982 3.274-7.982 8.668 0 5.348 2.898 8.598 7.798 8.598zm8.533-6.34c0 3.92 2.346 6.34 5.98 6.34 3.796 0 6.004-2.536 6.004-6.34 0-4.056-2.484-6.338-6.003-6.338-3.635 0-5.981 2.397-5.981 6.339zm2.898.992V13.12c0-1.89 1.22-3.066 3.083-3.066 1.817 0 3.082 1.152 3.082 3.066v1.913c0 1.96-1.288 2.997-3.082 2.997-1.749 0-3.083-1.015-3.083-2.997zM111.018 24h2.853v-6.132h.184c.667 1.453 2.116 2.398 4.186 2.398 3.083 0 4.992-2.26 4.992-6.293 0-3.942-1.863-6.27-4.992-6.27-1.863 0-3.427.852-4.186 2.397h-.184l-.345-2.167h-2.508V24zm6.211-6.063c-2.024 0-3.358-1.314-3.358-3.342v-1.222c0-2.005 1.31-3.342 3.381-3.342 2.002 0 3.037 1.152 3.037 2.881v2.144c0 1.815-1.16 2.849-2.973 2.88l-.087.001zm7.1-11.733h2.83V3.115h-2.83v3.09zm0 13.946h2.83V7.933h-2.83V20.15zm4.338 0h2.83V3.115h-2.83V20.15zm9.927-12.447c3.52 0 6.004 2.282 6.004 6.339 0 3.803-2.208 6.339-6.004 6.339-3.634 0-5.98-2.42-5.98-6.34 0-3.941 2.346-6.338 5.98-6.338zm10.922-3.689v3.919H152v2.328h-2.484v7.607H152v2.282h-2.99c-1.749 0-2.324-.922-2.324-2.282v-7.607h-2.185V7.933h2.185V4.014h2.83zm-10.922 6.04c-1.863 0-3.082 1.175-3.082 3.066v1.913c0 1.982 1.334 2.997 3.082 2.997 1.795 0 3.083-1.038 3.083-2.997V13.12c0-1.914-1.265-3.066-3.083-3.066z"})]}))});function Ha(t){"@babel/helpers - typeof";return Ha=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ha(t)}function Bb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function n$(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Bb(Object(n),!0).forEach(function(r){r$(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Bb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function r$(t,e,n){return e=s$(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function s$(t){var e=i$(t,"string");return Ha(e)=="symbol"?e:String(e)}function i$(t,e){if(Ha(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Ha(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function o$(t){if(t==null)throw new TypeError("Cannot destructure "+t)}var a$=g.memo(function(t){var e=Object.assign({},(o$(t),t));return c.jsx(fs,n$({Icon:$m,Text:wS,"aria-label":Ol,spaceMultiple:R9,textMultiple:T9},e))}),ao=$m;ao.Text=wS;ao.Combine=a$;ao.Avatar=Y9;ao.colorPrimary=vS;ao.title=Ol;var Ml="Goose",l$=.7,c$=.2,kS="#fff",d$=kS,u$="#000",h$=.65;function Va(t){"@babel/helpers - typeof";return Va=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Va(t)}var f$=["size","style"];function _b(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Ih(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?_b(Object(n),!0).forEach(function(r){p$(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):_b(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function p$(t,e,n){return e=m$(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function m$(t){var e=g$(t,"string");return Va(e)=="symbol"?e:String(e)}function g$(t,e){if(Va(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Va(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function x$(t,e){if(t==null)return{};var n=b$(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function b$(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var Bm=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=x$(t,f$);return c.jsxs("svg",Ih(Ih({fill:"currentColor",fillRule:"evenodd",height:n,style:Ih({flex:"none",lineHeight:1},r),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:Ml}),c.jsx("path",{d:"M21.595 23.61c1.167-.254 2.405-.944 2.405-.944l-2.167-1.784a12.124 12.124 0 01-2.695-3.131 12.127 12.127 0 00-3.97-4.049l-.794-.462a1.115 1.115 0 01-.488-.815.844.844 0 01.154-.575c.413-.582 2.548-3.115 2.94-3.44.503-.416 1.065-.762 1.586-1.159.074-.056.148-.112.221-.17.003-.002.007-.004.009-.007.167-.131.325-.272.45-.438.453-.524.563-.988.59-1.193-.061-.197-.244-.639-.753-1.148.319.02.705.272 1.056.569.235-.376.481-.773.727-1.171.165-.266-.08-.465-.086-.471h-.001V3.22c-.007-.007-.206-.25-.471-.086-.567.35-1.134.702-1.639 1.021 0 0-.597-.012-1.305.599a2.464 2.464 0 00-.438.45l-.007.009c-.058.072-.114.147-.17.221-.397.521-.743 1.083-1.16 1.587-.323.391-2.857 2.526-3.44 2.94a.842.842 0 01-.574.153 1.115 1.115 0 01-.815-.488l-.462-.794a12.123 12.123 0 00-4.049-3.97 12.133 12.133 0 01-3.13-2.695L1.332 0S.643 1.238.39 2.405c.352.428 1.27 1.49 2.34 2.302C1.58 4.167.73 3.75.06 3.4c-.103.765-.063 1.92.043 2.816.726.317 1.961.806 3.219 1.066-1.006.236-2.11.278-2.961.262.15.554.358 1.119.64 1.688.119.263.25.52.39.77.452.125 2.222.383 3.164.171l-2.51.897a27.776 27.776 0 002.544 2.726c2.031-1.092 2.494-1.241 4.018-2.238-2.467 2.008-3.108 2.828-3.8 3.67l-.483.678c-.25.351-.469.725-.65 1.117-.61 1.31-1.47 4.1-1.47 4.1-.154.486.202.842.674.674 0 0 2.79-.861 4.1-1.47.392-.182.766-.4 1.118-.65l.677-.483c.227-.187.453-.37.701-.586 0 0 1.705 2.02 3.458 3.349l.896-2.511c-.211.942.046 2.712.17 3.163.252.142.509.272.772.392.569.28 1.134.49 1.688.64-.016-.853.026-1.956.261-2.962.26 1.258.75 2.493 1.067 3.219.895.106 2.051.146 2.816.043a73.87 73.87 0 01-1.308-2.67c.811 1.07 1.874 1.988 2.302 2.34h-.001z"})]}))});function Wa(t){"@babel/helpers - typeof";return Wa=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Wa(t)}function Fb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function y$(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Fb(Object(n),!0).forEach(function(r){v$(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Fb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function v$(t,e,n){return e=w$(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function w$(t){var e=k$(t,"string");return Wa(e)=="symbol"?e:String(e)}function k$(t,e){if(Wa(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Wa(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function S$(t){if(t==null)throw new TypeError("Cannot destructure "+t)}var C$=g.memo(function(t){var e=Object.assign({},(S$(t),t));return c.jsx(hs,y$({Icon:Bm,"aria-label":Ml,background:d$,color:u$,iconMultiple:h$},e))});function Ka(t){"@babel/helpers - typeof";return Ka=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ka(t)}var j$=["size","style"];function zb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function $h(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?zb(Object(n),!0).forEach(function(r){N$(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):zb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function N$(t,e,n){return e=P$(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function P$(t){var e=D$(t,"string");return Ka(e)=="symbol"?e:String(e)}function D$(t,e){if(Ka(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Ka(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function E$(t,e){if(t==null)return{};var n=O$(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function O$(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var SS=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=E$(t,j$);return c.jsxs("svg",$h($h({fill:"currentColor",fillRule:"evenodd",height:n,style:$h({flex:"none",lineHeight:1},r),viewBox:"0 0 87 24",xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:Ml}),c.jsx("path",{d:"M17.122 16.607c0 4.696-3.219 7.393-7.774 7.393-3.674 0-6.255-1.546-7.257-4.637l3.401-1.21c.486 1.786 1.852 2.907 3.856 2.907 2.46 0 4.13-1.211 4.13-4.12v-1.122c-.85 1.121-2.46 2-4.494 2C4.61 17.818 2 14.273 2 9.909 2 5.546 4.611 2 8.984 2c2.004 0 3.644.879 4.494 2V2.303h3.644v14.303zm-3.583-6.85c0-2.908-1.58-4.575-3.857-4.575-2.52 0-4.008 1.757-4.008 4.727 0 2.94 1.488 4.727 4.008 4.727 2.278 0 3.857-1.666 3.857-4.515v-.363zM35.546 10.273c0 4.94-3.188 8.273-7.683 8.273-4.494 0-7.682-3.334-7.682-8.273C20.181 5.333 23.37 2 27.863 2c4.495 0 7.683 3.333 7.683 8.273zm-11.69 0c0 3.242 1.548 5.212 4.007 5.212 2.46 0 4.009-1.97 4.009-5.212 0-3.243-1.549-5.212-4.009-5.212-2.46 0-4.008 1.97-4.008 5.212zM52.957 10.273c0 4.94-3.188 8.273-7.682 8.273s-7.682-3.334-7.682-8.273C37.593 5.333 40.78 2 45.275 2s7.682 3.333 7.682 8.273zm-11.69 0c0 3.242 1.548 5.212 4.008 5.212s4.008-1.97 4.008-5.212c0-3.243-1.549-5.212-4.008-5.212-2.46 0-4.008 1.97-4.008 5.212zM54.336 15.182L57.069 13c.941 1.546 2.763 2.576 4.615 2.576 1.549 0 2.976-.546 2.976-1.97 0-1.364-1.336-1.515-3.856-2.03-2.52-.515-5.405-1.152-5.405-4.546 0-2.909 2.55-5.03 6.224-5.03 2.794 0 5.284 1.242 6.438 3L65.6 7.212c-.91-1.424-2.429-2.242-4.19-2.242-1.488 0-2.46.666-2.46 1.727 0 1.152 1.154 1.364 3.158 1.788 2.703.576 6.104 1.151 6.104 4.788 0 3.211-2.946 5.273-6.56 5.273-2.945 0-5.89-1.182-7.317-3.364zM77.965 18.546c-4.555 0-7.743-3.364-7.743-8.273 0-4.667 3.157-8.273 7.59-8.273 4.616 0 7.076 3.485 7.076 7.849v1.212H73.713c.274 2.727 1.913 4.394 4.252 4.394 1.791 0 3.218-.91 3.704-2.546l3.128 1.182c-1.124 2.787-3.644 4.455-6.832 4.455zm-.183-13.485c-1.882 0-3.34 1.12-3.886 3.272h7.318c-.03-1.757-1.124-3.272-3.432-3.272z"})]}))});function Ua(t){"@babel/helpers - typeof";return Ua=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ua(t)}function Hb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function M$(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Hb(Object(n),!0).forEach(function(r){A$(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Hb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function A$(t,e,n){return e=T$(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function T$(t){var e=R$(t,"string");return Ua(e)=="symbol"?e:String(e)}function R$(t,e){if(Ua(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Ua(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function L$(t){if(t==null)throw new TypeError("Cannot destructure "+t)}var I$=g.memo(function(t){var e=Object.assign({},(L$(t),t));return c.jsx(fs,M$({Icon:Bm,Text:SS,"aria-label":Ml,iconProps:{shape:"square"},spaceMultiple:c$,textMultiple:l$},e))}),lo=Bm;lo.Text=SS;lo.Combine=I$;lo.Avatar=C$;lo.colorPrimary=kS;lo.title=Ml;var Al="OpenAI",$$=.75,B$=.1,CS="#000",jS="#19C37D",NS="#AB68FF",PS="#F86AA4",_m="#F9C322",DS="#0099FF",ES="#0000FE",_$=CS,F$="#fff",z$=.75;function Ga(t){"@babel/helpers - typeof";return Ga=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ga(t)}var H$=["size","style"];function Vb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Bh(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Vb(Object(n),!0).forEach(function(r){V$(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Vb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function V$(t,e,n){return e=W$(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function W$(t){var e=K$(t,"string");return Ga(e)=="symbol"?e:String(e)}function K$(t,e){if(Ga(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Ga(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function U$(t,e){if(t==null)return{};var n=G$(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function G$(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var Fm=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=U$(t,H$);return c.jsxs("svg",Bh(Bh({fill:"currentColor",fillRule:"evenodd",height:n,style:Bh({flex:"none",lineHeight:1},r),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:Al}),c.jsx("path",{d:"M9.205 8.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.566 0 .167 0 .357-.024.547l-4.71-2.759a.797.797 0 00-.856 0l-5.97 3.473zm10.609 8.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473 1.95-1.118a.433.433 0 01.476 0l4.543 2.617c1.309.76 2.189 2.378 2.189 3.948 0 1.808-1.07 3.473-2.76 4.163zM7.802 12.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.067c-.285.166-.428.404-.428.737v6.898zM12 15.128l-2.795-1.57v-3.33L12 8.658l2.795 1.57v3.33L12 15.128zm1.796 7.23c-1 0-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482 4.482 0 014.21 6.327v5.423c0 .333.143.571.428.738l5.947 3.449-1.95 1.118a.432.432 0 01-.476 0zm-.262 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71c.286.167.571.167.856 0l5.97-3.448v2.26c0 .19-.07.333-.237.428l-4.543 2.616c-.619.357-1.356.523-2.117.523zm5.899 2.83a5.947 5.947 0 005.827-4.756C22.287 18.339 24 15.84 24 13.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498 0-3.401-2.759-5.947-5.946-5.947-.642 0-1.26.095-1.88.31A5.962 5.962 0 0010.205 0a5.947 5.947 0 00-5.827 4.757C1.713 5.447 0 7.945 0 10.49c0 1.666.713 3.283 1.998 4.448-.119.5-.19 1-.19 1.499 0 3.401 2.759 5.946 5.946 5.946.642 0 1.26-.095 1.88-.309a5.96 5.96 0 004.162 1.713z"})]}))});function qa(t){"@babel/helpers - typeof";return qa=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},qa(t)}var q$=["type"];function Wb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Y$(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Wb(Object(n),!0).forEach(function(r){X$(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Wb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function X$(t,e,n){return e=Q$(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Q$(t){var e=J$(t,"string");return qa(e)=="symbol"?e:String(e)}function J$(t,e){if(qa(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(qa(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function Z$(t,e){if(t==null)return{};var n=eB(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function eB(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var tB=g.memo(function(t){var e=t.type,n=e===void 0?"normal":e,r=Z$(t,q$),s=g.useMemo(function(){switch(n){case"gpt3":return jS;case"gpt4":return NS;case"gpt5":return PS;case"o3":case"o1":return _m;case"oss":return DS;case"platform":return ES;default:return _$}},[n]);return c.jsx(hs,Y$({Icon:Fm,"aria-label":Al,background:s,color:F$,iconMultiple:z$},r))});function Ya(t){"@babel/helpers - typeof";return Ya=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ya(t)}var nB=["size","style"];function Kb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function _h(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Kb(Object(n),!0).forEach(function(r){rB(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Kb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function rB(t,e,n){return e=sB(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function sB(t){var e=iB(t,"string");return Ya(e)=="symbol"?e:String(e)}function iB(t,e){if(Ya(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Ya(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function oB(t,e){if(t==null)return{};var n=aB(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function aB(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var OS=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=oB(t,nB);return c.jsxs("svg",_h(_h({fill:"currentColor",fillRule:"evenodd",height:n,style:_h({flex:"none",lineHeight:1},r),viewBox:"0 0 86 24",xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:Al}),c.jsx("path",{d:"M10.703 2C5.916 2 2 5.916 2 10.703c0 4.787 3.916 8.704 8.703 8.704 4.787 0 8.704-3.893 8.704-8.704A8.698 8.698 0 0010.703 2zm0 14.288c-2.973 0-5.367-2.442-5.367-5.585S7.73 5.12 10.703 5.12c2.974 0 5.367 2.441 5.367 5.584s-2.393 5.585-5.367 5.585zM28.206 6.835c-1.57 0-3.094.629-3.892 1.693v-1.45h-3.143V24h3.143v-6.116c.798.99 2.273 1.523 3.892 1.523 3.385 0 6.045-2.66 6.045-6.286 0-3.626-2.66-6.286-6.044-6.286zm-.531 9.84c-1.79 0-3.385-1.402-3.385-3.554s1.596-3.554 3.385-3.554c1.789 0 3.384 1.402 3.384 3.554s-1.595 3.554-3.384 3.554zM41.649 6.835c-3.433 0-6.141 2.684-6.141 6.286 0 3.602 2.37 6.286 6.237 6.286 3.167 0 5.198-1.91 5.827-4.062h-3.07c-.388.895-1.475 1.523-2.78 1.523-1.62 0-2.854-1.136-3.144-2.756h9.139V12.88c0-3.288-2.297-6.044-6.068-6.044zm-3.047 5.053c.339-1.523 1.596-2.514 3.12-2.514 1.619 0 2.852 1.064 2.997 2.514h-6.117zM56.081 6.835c-1.402 0-2.877.629-3.553 1.669V7.077h-3.143v12.088h3.143v-6.503c0-1.886 1.015-3.119 2.659-3.119 1.523 0 2.345 1.16 2.345 2.78v6.842h3.143v-7.35c0-2.997-1.838-4.98-4.594-4.98zM68.724 2.242l-6.841 16.923h3.36l1.45-3.699h7.785l1.45 3.7h3.41L72.543 2.241h-3.82zm-.943 10.42l2.805-7.084 2.78 7.084H67.78zM83.81 2.242h-3.191v16.923h3.19V2.242z"})]}))});function Xa(t){"@babel/helpers - typeof";return Xa=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Xa(t)}var lB=["extraStyle"];function Ub(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Gb(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Ub(Object(n),!0).forEach(function(r){cB(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Ub(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function cB(t,e,n){return e=dB(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function dB(t){var e=uB(t,"string");return Xa(e)=="symbol"?e:String(e)}function uB(t,e){if(Xa(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Xa(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function hB(t,e){if(t==null)return{};var n=fB(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function fB(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var pB=g.memo(function(t){var e=t.extraStyle,n=hB(t,lB);return c.jsx(fs,Gb({Icon:Fm,Text:OS,"aria-label":Al,extraStyle:Gb({fontWeight:600},e),spaceMultiple:B$,textMultiple:$$},n))}),xn=Fm;xn.Text=OS;xn.Combine=pB;xn.Avatar=tB;xn.colorPrimary=CS;xn.colorGpt3=jS;xn.colorGpt4=NS;xn.colorGpt5=PS;xn.colorO1=_m;xn.colorO3=_m;xn.colorOss=DS;xn.colorPlatform=ES;xn.title=Al;var Tl="Windsurf",mB=.7,gB=.2,MS="#fff",xB=MS,bB="#000",yB=.75;function Qa(t){"@babel/helpers - typeof";return Qa=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Qa(t)}var vB=["size","style"];function qb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Fh(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?qb(Object(n),!0).forEach(function(r){wB(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):qb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function wB(t,e,n){return e=kB(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function kB(t){var e=SB(t,"string");return Qa(e)=="symbol"?e:String(e)}function SB(t,e){if(Qa(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Qa(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function CB(t,e){if(t==null)return{};var n=jB(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function jB(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var zm=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=CB(t,vB);return c.jsxs("svg",Fh(Fh({fill:"currentColor",fillRule:"evenodd",height:n,style:Fh({flex:"none",lineHeight:1},r),viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:Tl}),c.jsx("path",{clipRule:"evenodd",d:"M23.78 5.004h-.228a2.187 2.187 0 00-2.18 2.196v4.912c0 .98-.804 1.775-1.76 1.775a1.818 1.818 0 01-1.472-.773L13.168 5.95a2.197 2.197 0 00-1.81-.95c-1.134 0-2.154.972-2.154 2.173v4.94c0 .98-.797 1.775-1.76 1.775-.57 0-1.136-.289-1.472-.773L.408 5.098C.282 4.918 0 5.007 0 5.228v4.284c0 .216.066.426.188.604l5.475 7.889c.324.466.8.812 1.351.938 1.377.316 2.645-.754 2.645-2.117V11.89c0-.98.787-1.775 1.76-1.775h.002c.586 0 1.135.288 1.472.773l4.972 7.163a2.15 2.15 0 001.81.95c1.158 0 2.151-.973 2.151-2.173v-4.939c0-.98.787-1.775 1.76-1.775h.194c.122 0 .22-.1.22-.222V5.225a.221.221 0 00-.22-.222z"})]}))});function Ja(t){"@babel/helpers - typeof";return Ja=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ja(t)}function Yb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function NB(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Yb(Object(n),!0).forEach(function(r){PB(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Yb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function PB(t,e,n){return e=DB(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function DB(t){var e=EB(t,"string");return Ja(e)=="symbol"?e:String(e)}function EB(t,e){if(Ja(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Ja(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function OB(t){if(t==null)throw new TypeError("Cannot destructure "+t)}var MB=g.memo(function(t){var e=Object.assign({},(OB(t),t));return c.jsx(hs,NB({Icon:zm,"aria-label":Tl,background:xB,color:bB,iconMultiple:yB},e))});function Za(t){"@babel/helpers - typeof";return Za=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Za(t)}var AB=["size","style"];function Xb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function zh(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Xb(Object(n),!0).forEach(function(r){TB(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Xb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function TB(t,e,n){return e=RB(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function RB(t){var e=LB(t,"string");return Za(e)=="symbol"?e:String(e)}function LB(t,e){if(Za(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(Za(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function IB(t,e){if(t==null)return{};var n=$B(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s<i.length;s++)r=i[s],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function $B(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i<r.length;i++)s=r[i],!(e.indexOf(s)>=0)&&(n[s]=t[s]);return n}var AS=g.memo(function(t){var e=t.size,n=e===void 0?"1em":e,r=t.style,s=IB(t,AB);return c.jsxs("svg",zh(zh({fill:"currentColor",fillRule:"evenodd",height:n,style:zh({flex:"none",lineHeight:1},r),viewBox:"0 0 111 24",xmlns:"http://www.w3.org/2000/svg"},s),{},{children:[c.jsx("title",{children:Tl}),c.jsx("path",{clipRule:"evenodd",d:"M33.412 7.182h-1.715a.316.316 0 00-.315.316v13.79c0 .174.14.316.315.316h1.715a.316.316 0 00.316-.317V7.498a.316.316 0 00-.316-.316zm-1.772-5.18h1.828c.174 0 .315.141.315.316V4.57a.316.316 0 01-.315.316H31.64a.316.316 0 01-.315-.316V2.318c0-.175.141-.317.315-.317zM43.676 6.79c-1.927 0-3.324.671-4.218 1.653a.457.457 0 01-.782-.322v-.623a.316.316 0 00-.316-.316h-1.686a.316.316 0 00-.316.316v13.79c0 .174.142.316.316.316h1.687a.316.316 0 00.316-.317v-8.729c0-3.025.587-3.697 3.8-3.697s3.742.533 3.742 3.557v8.868c0 .175.142.317.316.317h1.715a.316.316 0 00.316-.317v-9.513c0-3.445-1.956-4.986-4.889-4.986v.003h-.001zm17.518 1.849a.457.457 0 00.782-.322V2.319c0-.175.142-.316.316-.316h1.687c.174 0 .316.141.316.316v18.97a.316.316 0 01-.316.316h-1.687a.316.316 0 01-.316-.316v-.819c.017-.418-.489-.62-.782-.322-.81 1.008-2.374 1.848-4.47 1.848-3.685 0-6.088-2.632-6.088-7.533 0-5.18 2.68-7.673 6.172-7.673 2.095 0 3.604.84 4.386 1.849zm-8.018 5.767c0 4.733.587 5.434 4.414 5.434 3.8 0 4.386-.701 4.386-5.434 0-4.733-.559-5.461-4.386-5.461s-4.414.728-4.414 5.461zm20.924-.894l-2.763-.476c-2.04-.364-2.404-.98-2.404-2.045.028-1.457.587-2.184 3.296-2.184 2.538 0 3.35.752 3.525 2.376.017.16.152.284.313.284h1.677c.18 0 .326-.151.316-.333-.163-2.788-2.709-4.346-5.746-4.346-3.408 0-5.67 1.82-5.67 4.426 0 2.38 1.844 3.417 4.05 3.837l3.046.56c1.676.31 2.235.87 2.235 1.933 0 1.709-.587 2.437-3.464 2.437s-3.673-.832-3.858-2.518a.315.315 0 00-.313-.282h-1.687a.318.318 0 00-.317.325c.08 3.004 2.797 4.493 6.034 4.493 3.52 0 5.949-1.82 5.949-4.566 0-2.408-1.845-3.501-4.219-3.921zm12.21 6.414c3.128 0 3.715-.672 3.715-3.697V7.502c0-.174.141-.316.316-.316h1.714c.175 0 .316.142.316.316v13.79a.316.316 0 01-.316.316h-1.714a.316.316 0 01-.316-.317v-.6c-.007-.429-.45-.642-.755-.343-.892.98-2.289 1.652-4.161 1.652-2.877 0-4.833-1.54-4.833-4.986V7.501c0-.175.142-.317.316-.317h1.715c.174 0 .316.142.316.317v8.868c0 3.024.558 3.557 3.687 3.557zm19.782-12.744v-1.85c0-.727.588-1.316 1.314-1.316h1.276a.316.316 0 00.315-.317V2.317a.316.316 0 00-.315-.317h-.885c-2.514 0-4.051 1.4-4.051 3.81v1.372h-1.859c-1.647.002-2.94.229-3.803 1.26-.317.302-.755.076-.755-.36V7.5a.316.316 0 00-.315-.317h-1.715a.316.316 0 00-.316.317v13.789c0 .174.141.316.316.316h1.715a.316.316 0 00.315-.316v-8.645c0-2.857.727-3.528 3.855-3.528h2.562V21.29c0 .175.141.317.316.317h1.715a.316.316 0 00.315-.317V9.116h2.593a.316.316 0 00.315-.317V7.501a.316.316 0 00-.315-.317h-2.593v-.002zM21.834 18.008a.561.561 0 001.091.005l3.933-15.772A.318.318 0 0127.166 2h1.963c.21 0 .363.199.31.403l-4.947 18.972a.305.305 0 01-.295.228h-3.502a.31.31 0 01-.3-.234L16.285 5.5a.56.56 0 00-.543-.42h-.036a.562.562 0 00-.542.42l-4.11 15.87a.31.31 0 01-.299.234H7.253a.304.304 0 01-.295-.228L2.011 2.403A.321.321 0 012.32 2h1.963c.145 0 .272.1.308.241l3.932 15.772a.56.56 0 001.09-.005l3.78-15.764A.316.316 0 0113.7 2h4.047c.146 0 .273.1.307.244l3.779 15.764z"})]}))});function el(t){"@babel/helpers - typeof";return el=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},el(t)}function Qb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function BB(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?Qb(Object(n),!0).forEach(function(r){_B(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Qb(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function _B(t,e,n){return e=FB(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function FB(t){var e=zB(t,"string");return el(e)=="symbol"?e:String(e)}function zB(t,e){if(el(t)!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(el(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function HB(t){if(t==null)throw new TypeError("Cannot destructure "+t)}var VB=g.memo(function(t){var e=Object.assign({},(HB(t),t));return c.jsx(fs,BB({Icon:zm,Text:AS,"aria-label":Tl,iconProps:{shape:"square"},spaceMultiple:gB,textMultiple:mB},e))}),co=zm;co.Text=AS;co.Combine=VB;co.Avatar=MB;co.colorPrimary=MS;co.title=Tl;const WB={"claude-code":Xs.Avatar,cursor:oo.Avatar,codex:xn.Avatar,"gemini-cli":Qs.Avatar,goose:lo.Avatar,"github-copilot":ao.Avatar,windsurf:co.Avatar,cline:io.Avatar},KB={antigravity:"/agents/antigravity.png",droid:"/agents/droid.png",opencode:"/agents/opencode.svg",amp:"/agents/amp.png",kilo:"/agents/kilo.png",roo:"/agents/roo.png",openhands:"/agents/openhands.png"};function UB(t){return t.split(/\s+/).map(e=>e[0]).join("").toUpperCase().slice(0,2)}const TS=({agentName:t,displayName:e,size:n=20})=>{const r=WB[t];if(r)return c.jsx(r,{size:n});const s=KB[t];return s?c.jsx("img",{src:s,alt:e,className:"rounded object-contain",style:{width:n,height:n}}):c.jsx("div",{className:"flex items-center justify-center rounded bg-dash-surface-hover text-dash-text-muted font-semibold",style:{width:n,height:n,fontSize:n*.45},children:UB(e)})};function Hh(t){return JSON.stringify([t.provider,t.type,t.item,t.global])}function GB(t){if(typeof t=="string"){const e=t.trim();return e.length>0?e:null}if(typeof t=="object"&&t!==null){const e=t;for(const n of["message","error","detail","details","reason"]){const r=e[n];if(typeof r=="string"&&r.trim().length>0)return r.trim()}}return null}async function Vh(t,e){const r=(await t.text().catch(()=>"")).trim();if(!r)return e;try{const s=JSON.parse(r);return GB(s)||e}catch{return r}}function qB(){const[t,e]=g.useState("idle"),[n,r]=g.useState(null),[s,i]=g.useState(new Map),[o,a]=g.useState(null),[l,d]=g.useState(null),[u,h]=g.useState(null),[f,p]=g.useState(null),m=g.useRef(0),x=g.useRef(0),b=g.useRef(null),y=g.useRef(null),w=g.useCallback(async S=>{e("reconciling"),d(null),a(null),m.current+=1;const E=m.current;b.current?.abort();const O=new AbortController;b.current=O;try{const P=new URLSearchParams({providers:S.providers.join(","),global:String(S.global),agents:String(S.include.agents??!0),commands:String(S.include.commands??!0),skills:String(S.include.skills??!0),config:String(S.include.config??!0),rules:String(S.include.rules??!0),hooks:String(S.include.hooks??!0)});S.source&&P.set("source",S.source),S.reinstallEmptyDirs!==void 0&&P.set("reinstallEmptyDirs",String(S.reinstallEmptyDirs)),S.respectDeletions!==void 0&&P.set("respectDeletions",String(S.respectDeletions));const A=await fetch(`/api/migrate/reconcile?${P.toString()}`,{signal:O.signal});if(!A.ok){const j=await Vh(A,"Failed to reconcile migration plan");throw new Error(j)}const I=await A.json();if(E!==m.current)return;r(I.plan),(I.suggestedMode==="reconcile"||I.suggestedMode==="install")&&h(I.suggestedMode),i(new Map),e("reviewing")}catch(P){if(O.signal.aborted||P instanceof DOMException&&P.name==="AbortError"||E!==m.current)return;d(P instanceof Error?P.message:"Failed to reconcile"),e("error")}},[]),v=g.useCallback(async S=>{e("reconciling"),d(null),a(null),m.current+=1;const E=m.current;b.current?.abort();const O=new AbortController;b.current=O;try{const P=new URLSearchParams({providers:S.providers.join(","),global:String(S.global),agents:String(S.include.agents??!0),commands:String(S.include.commands??!0),skills:String(S.include.skills??!0),config:String(S.include.config??!0),rules:String(S.include.rules??!0),hooks:String(S.include.hooks??!0)});S.source&&P.set("source",S.source);const A=await fetch(`/api/migrate/install-discovery?${P.toString()}`,{signal:O.signal});if(!A.ok){const j=await Vh(A,"Failed to fetch install candidates");throw new Error(j)}const I=await A.json();if(E!==m.current)return;p(I.candidates??[]),e("reviewing")}catch(P){if(O.signal.aborted||P instanceof DOMException&&P.name==="AbortError"||E!==m.current)return;d(P instanceof Error?P.message:"Failed to fetch candidates"),e("error")}},[]),k=g.useCallback((S,E)=>{i(O=>{const P=new Map(O);return P.set(Hh(S),E),P})},[]),C=g.useCallback(async(S,E)=>{const O=S??n;if(!O)return d("No plan to execute"),e("error"),!1;e("executing"),d(null),x.current+=1;const P=x.current;y.current?.abort();const A=new AbortController;y.current=A;try{const I=Object.fromEntries(s.entries()),j={plan:O,resolutions:I};E&&(j.mode=E);const M=await fetch("/api/migrate/execute",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(j),signal:A.signal});if(P!==x.current)return!1;if(!M.ok){const L=await Vh(M,"Failed to execute migration");if(M.status===501)return d(L||"Plan execution is not available in this server build"),e("reviewing"),!1;throw new Error(L)}const T=await M.json();return P!==x.current?!1:(a({results:T.results,counts:T.counts,warnings:T.warnings??[],discovery:T.discovery}),e("complete"),!0)}catch(I){return A.signal.aborted||I instanceof DOMException&&I.name==="AbortError"||P!==x.current||(d(I instanceof Error?I.message:"Failed to execute migration"),e("error")),!1}},[n,s]),N=g.useCallback(()=>{b.current?.abort(),y.current?.abort(),e("idle"),r(null),i(new Map),a(null),d(null),p(null)},[]),D=g.useMemo(()=>n?n.actions.filter(S=>S.action==="conflict").every(S=>s.has(Hh(S))):!0,[n,s]);return{phase:t,plan:n,resolutions:s,results:o,error:l,suggestedMode:u,installCandidates:f,reconcile:w,fetchCandidates:v,resolve:k,execute:C,reset:N,allConflictsResolved:D,actionKey:Hh}}const YB={agents:!0,commands:!0,skills:!0,config:!0,rules:!0,hooks:!0},jn=["agents","commands","skills","config","rules","hooks"],js={agents:"migrateTypeAgents",commands:"migrateTypeCommands",skills:"migrateTypeSkills",config:"migrateTypeConfig",rules:"migrateTypeRules",hooks:"migrateTypeHooks"},RS=new Set(["user-deleted-respected","user-edits-preserved","target-state-unknown"]),Jb={detected:"#D4A574","not-detected":"#8B9DC3"},qt=({label:t,value:e,tone:n="default"})=>{const r=n==="accent"?"text-dash-accent":n==="success"?"text-green-400":"text-dash-text";return c.jsxs("div",{className:"rounded-lg border border-dash-border bg-dash-bg/70 px-3 py-2.5",children:[c.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-wide text-dash-text-muted",children:t}),c.jsx("p",{className:`mt-1 text-lg font-semibold ${r}`,children:e})]})};function Zb(t,e){return t.success?t.skipped?{label:e("migrateStatusSkipped"),className:"text-yellow-400"}:{label:e("migrateStatusInstalled"),className:"text-green-400"}:{label:e("migrateStatusFailed"),className:"text-red-400"}}const XB=new Set([8203,8204,8205,8288,65279,8232,8233,8234,8235,8236,8237,8238,8294,8295,8296,8297]);function QB(t){return t===9||t===10||t===13?!0:t>=0&&t<=8||t>=11&&t<=31||t>=127&&t<=159||XB.has(t)}function ey(t){let e="";for(const n of t){const r=n.codePointAt(0);r!==void 0&&(QB(r)||(e+=n))}return e}function JB(t){const e={install:0,update:0,skip:0,conflict:0,delete:0};for(const n of t)e[n.action]+=1;return e}function ZB(t,e){if(!e)return t;if(e==="skip")return{...t,action:"skip"};if(t.action!=="skip"||t.reasonCode===void 0||!RS.has(t.reasonCode))return t;const n=t.reasonCode==="source-removed-orphan"||t.reasonCode==="renamed-cleanup"||t.reasonCode==="path-migrated-cleanup"?"delete":"install";return{...t,action:n}}function e_(t,e,n){if(e.size===0)return t;const r=t.actions.map(i=>ZB(i,e.get(n(i)))),s=JB(r);return{...t,actions:r,summary:s,hasConflicts:s.conflict>0}}const t_=({provider:t,include:e,isSelected:n,cardClickToggles:r,onToggleSelect:s,onOpenDetails:i,t:o})=>{const a=jn.filter(d=>t.capabilities[d]).length,l=jn.some(d=>e[d]&&!t.capabilities[d]);return c.jsxs("div",{className:`relative rounded-xl border px-4 py-3 cursor-pointer transition-all ${n?"bg-dash-accent-subtle border-dash-accent/30 shadow-sm shadow-dash-accent/10":l?"bg-dash-surface border-yellow-500/25 hover:bg-dash-surface-hover hover:border-yellow-500/40":"bg-dash-surface border-dash-border hover:bg-dash-surface-hover hover:border-dash-accent/25"}`,children:[c.jsx("button",{type:"button",onClick:()=>r?s(t.name):i(t.name),"aria-label":r?`${t.displayName} deselect`:`${t.displayName} details`,className:"absolute inset-0 z-10 rounded-xl dash-focus-ring"}),c.jsxs("div",{className:"relative flex flex-col gap-3 lg:grid lg:grid-cols-[minmax(0,1.25fr)_140px_minmax(0,220px)_auto] lg:items-center lg:gap-4",children:[c.jsxs("div",{className:"min-w-0 space-y-1.5",children:[c.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[c.jsx(TS,{agentName:t.name,displayName:t.displayName,size:18}),c.jsx("span",{className:"text-sm font-semibold text-dash-text truncate",children:t.displayName}),t.recommended&&c.jsx("span",{className:"text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded border border-dash-accent/30 text-dash-accent",children:o("migrateFilterRecommended")}),t.commandsGlobalOnly&&c.jsx("span",{className:"text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded border border-yellow-500/30 text-yellow-400",children:o("migrateGlobalOnlyCommandsShort")})]}),c.jsxs("div",{className:"text-xs text-dash-text-muted truncate",children:[t.name," · ",a,"/",jn.length," ",o("migrateCapabilitiesLabel")]})]}),c.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 text-[11px] lg:flex-col lg:items-start lg:gap-1",children:[c.jsx("span",{className:t.detected?"text-dash-accent":"text-dash-text-muted",children:t.detected?o("migrateDetectedTag"):o("migrateNotDetectedTag")}),c.jsx("span",{className:"text-dash-text-muted",children:t.recommended?o("migrateFilterRecommended"):"-"})]}),c.jsx("div",{className:"flex flex-wrap gap-1",children:jn.map(d=>{const u=t.capabilities[d],h=e[d];return c.jsx("span",{className:`text-[10px] uppercase px-1.5 py-0.5 rounded border ${u&&h?"border-dash-accent/45 text-dash-accent":u?"border-dash-border text-dash-text-secondary":"border-dash-border text-dash-text-muted opacity-60"}`,children:o(js[d])},d)})}),c.jsx("div",{className:"relative z-20 flex justify-start lg:justify-end",children:c.jsx("button",{type:"button",onClick:d=>{d.stopPropagation(),s(t.name)},className:`dash-focus-ring px-4 py-1.5 text-xs font-semibold rounded-md transition-colors ${n?"bg-transparent text-dash-text-secondary border border-dash-border hover:bg-dash-surface-hover":"bg-dash-accent text-white hover:bg-dash-accent/90"}`,children:o(n?"migrateSelectedButton":"migrateSelectButton")})})]})]})},n_=({provider:t,include:e,isSelected:n,latestResult:r,onToggleSelect:s,onClose:i,t:o})=>{const a=g.useRef(null),l=g.useRef(null),d=g.useCallback(()=>{const f=l.current;l.current=null,f&&document.contains(f)&&f.focus()},[]),u=g.useCallback(()=>{i(),d()},[i,d]),h=g.useCallback(()=>{const f=a.current;if(f?.open){f.close();return}i(),d()},[i,d]);return g.useEffect(()=>{const f=a.current;if(f){if(!f.open){l.current=document.activeElement instanceof HTMLElement?document.activeElement:null;try{f.showModal()}catch{d(),i()}}return()=>{if(f.open){f.close();return}d()}}},[i,d]),c.jsx("dialog",{ref:a,"aria-label":t.displayName,onClose:u,onCancel:f=>{f.preventDefault(),h()},onClick:f=>{f.target===f.currentTarget&&h()},className:"fixed inset-0 z-50 m-0 h-full max-h-none w-full max-w-none overflow-hidden border-0 bg-transparent p-0 backdrop:bg-black/50",children:c.jsxs("div",{className:"ml-auto h-full w-full sm:w-[460px] bg-dash-surface border-l border-dash-border shadow-2xl flex flex-col animate-slide-in",children:[c.jsx("div",{className:"px-6 py-5 border-b border-dash-border",children:c.jsxs("div",{className:"flex items-start justify-between gap-3",children:[c.jsxs("div",{className:"min-w-0",children:[c.jsxs("div",{className:"flex items-center gap-2.5",children:[c.jsx(TS,{agentName:t.name,displayName:t.displayName,size:22}),c.jsx("h2",{className:"text-xl font-bold text-dash-text truncate",children:t.displayName})]}),c.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 mt-2",children:[c.jsx("span",{className:"text-[11px] text-dash-text-muted font-mono",children:t.name}),c.jsx("span",{className:`text-[10px] uppercase tracking-wide px-2 py-0.5 rounded border ${t.detected?"border-dash-accent/30 text-dash-accent":"border-dash-border text-dash-text-muted"}`,children:t.detected?o("migrateDetectedTag"):o("migrateNotDetectedTag")}),t.recommended&&c.jsx("span",{className:"text-[10px] uppercase tracking-wide px-2 py-0.5 rounded border border-dash-accent/30 text-dash-accent",children:o("migrateFilterRecommended")})]})]}),c.jsx("button",{type:"button",onClick:h,"aria-label":o("detailPanelClose"),className:"w-8 h-8 flex items-center justify-center rounded-md text-dash-text-muted hover:bg-dash-surface-hover hover:text-dash-text transition-colors",children:c.jsxs("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:[c.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18",strokeWidth:2}),c.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18",strokeWidth:2})]})})]})}),c.jsxs("div",{className:"flex-1 overflow-y-auto px-6 py-5 space-y-6",children:[c.jsxs("div",{children:[c.jsx("h3",{className:"text-[11px] font-bold uppercase tracking-wide text-dash-text-muted mb-2.5",children:o("migrateCapabilitiesSection")}),c.jsx("div",{className:"space-y-1.5",children:jn.map(f=>{const p=t.capabilities[f],m=e[f];return c.jsxs("div",{className:"flex items-center justify-between px-3 py-2 bg-dash-bg rounded-md",children:[c.jsx("span",{className:"text-sm text-dash-text",children:o(js[f])}),c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx("span",{className:`text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded border ${m?"border-dash-accent/35 text-dash-accent":"border-dash-border text-dash-text-muted"}`,children:o(m?"migrateIncludedEnabled":"migrateIncludedDisabled")}),c.jsx("span",{className:`text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded border ${p?"border-green-500/35 text-green-400":"border-red-500/30 text-red-400"}`,children:o(p?"migrateSupported":"migrateUnsupportedShort")})]})]},f)})})]}),t.commandsGlobalOnly&&e.commands&&c.jsx("div",{className:"px-3 py-2 border border-yellow-500/30 bg-yellow-500/10 rounded text-xs text-yellow-400",children:o("migrateGlobalForced")}),c.jsxs("div",{children:[c.jsx("h3",{className:"text-[11px] font-bold uppercase tracking-wide text-dash-text-muted mb-2.5",children:o("migrateLatestTarget")}),r?c.jsxs("div",{className:"px-3 py-2 bg-dash-bg rounded-md border border-dash-border space-y-2",children:[c.jsxs("div",{className:"flex items-center justify-between",children:[c.jsx("span",{className:"text-xs text-dash-text-muted",children:o("migrateStatus")}),c.jsx("span",{className:`text-xs font-semibold ${Zb(r,o).className}`,children:Zb(r,o).label})]}),c.jsx("p",{className:"text-xs font-mono text-dash-text break-all",children:ey(r.path||"-")}),(r.error||r.skipReason)&&c.jsx("p",{className:"text-xs text-red-400 break-words",children:ey(r.error||r.skipReason||"-")})]}):c.jsx("p",{className:"text-sm text-dash-text-muted",children:o("migrateNoResultForProvider")})]})]}),c.jsxs("div",{className:"px-6 py-4 border-t border-dash-border flex items-center justify-between gap-2",children:[c.jsx("button",{type:"button",onClick:()=>s(t.name),className:`px-4 py-2 text-sm font-semibold rounded-md transition-colors ${n?"bg-transparent text-dash-text-secondary border border-dash-border hover:bg-dash-surface-hover":"bg-dash-accent text-white hover:bg-dash-accent/90"}`,children:o(n?"migrateUnselectProvider":"migrateSelectProviderAction")}),c.jsx("button",{type:"button",onClick:h,"aria-label":o("detailPanelClose"),className:"px-4 py-2 text-sm font-medium rounded-md border border-dash-border text-dash-text-secondary hover:bg-dash-surface-hover",children:o("detailPanelClose")})]})]})})},r_=()=>{const{t}=te(),e=qB(),[n,r]=g.useState([]),[s,i]=g.useState(null),[o,a]=g.useState([]),[l,d]=g.useState(YB),[u,h]=g.useState(!0),[f,p]=g.useState(!0),[m,x]=g.useState(!1),[b,y]=g.useState(null),[w,v]=g.useState(""),k=g.useDeferredValue(w),[C,N]=g.useState("all"),[D,S]=g.useState(null),E=g.useRef(0),[O,P]=g.useState("reconcile"),A=g.useRef(!1),[I,j]=g.useState(new Map),[M,T]=g.useState(new Set);g.useEffect(()=>{if(A.current||!e.suggestedMode)return;if(e.suggestedMode===O){A.current=!0;return}const U=e.plan?.summary;if(U?U.install+U.update+U.delete+U.conflict>0:!1){A.current=!0;return}A.current=!0,P(e.suggestedMode)},[e.suggestedMode,e.plan,O]),g.useEffect(()=>{e.installCandidates&&T(zT(e.installCandidates))},[e.installCandidates]);const L=I.size+e.resolutions.size,F=g.useCallback((U,ne)=>{const me=e.actionKey(U),je=U.action==="skip"?"skip":"execute",kt=U.action!=="skip"||U.reasonCode!==void 0&&RS.has(U.reasonCode);j(In=>{const rn=new Map(In);return ne===je||ne==="execute"&&!kt?rn.delete(me):rn.set(me,ne),rn})},[e]),$=g.useCallback(U=>{P(U),j(new Map),e.reset()},[e]),V=g.useCallback(()=>{j(new Map),e.reset()},[e]),W=g.useCallback(async(U=!1)=>{E.current+=1;const ne=E.current;try{U?x(!0):p(!0),y(null);const[me,je]=await Promise.all([I4(),_u()]);if(ne!==E.current)return;r(me.providers),i(je),a(kt=>{if(kt.length===0)return[];const In=me.providers.map(rn=>rn.name);return kt.filter(rn=>In.includes(rn))})}catch(me){if(ne!==E.current)return;y(me instanceof Error?me.message:t("migrateDetectFailed"))}finally{ne===E.current&&(p(!1),x(!1))}},[t]);g.useEffect(()=>{W()},[W]);const H=g.useMemo(()=>{const U=new Map;for(const ne of n)U.set(ne.name,ne);return U},[n]),J=g.useMemo(()=>D&&H.get(D)||null,[D,H]);g.useEffect(()=>{D&&!H.has(D)&&S(null)},[D,H]);const G=g.useCallback(()=>{S(null)},[]),Z=g.useMemo(()=>new Set(o),[o]),re=g.useMemo(()=>n.filter(U=>U.detected).length,[n]),se=o.length,_=g.useMemo(()=>n.filter(U=>U.recommended).length,[n]),Y=g.useMemo(()=>jn.filter(U=>l[U]).length,[l]),ee=g.useMemo(()=>{const U=[];l.commands&&!u&&o.some(ne=>H.get(ne)?.commandsGlobalOnly)&&U.push(t("migrateGlobalForced"));for(const ne of jn){if(!l[ne])continue;const me=o.filter(je=>!H.get(je)?.capabilities[ne]).map(je=>H.get(je)?.displayName||je);me.length>0&&U.push(`${t("migrateUnsupported")}: ${t(js[ne])} -> ${me.join(", ")}`)}return U},[l,u,H,o,t]),ce=g.useCallback(U=>{if(U==="codex"){a(["codex"]);return}if(U==="antigravity"){a(["antigravity"]);return}if(U==="core"){const me=["codex","antigravity","droid"].filter(je=>n.some(kt=>kt.name===je));a(me);return}const ne=n.filter(me=>me.detected).map(me=>me.name);a(ne)},[n]),ie=g.useCallback(U=>{a(ne=>ne.includes(U)?ne.filter(me=>me!==U):[...ne,U])},[]),oe=g.useCallback(U=>{d(ne=>({...ne,[U]:!ne[U]}))},[]),fe=g.useMemo(()=>{const U=[...n];return U.sort((ne,me)=>{const je=Z.has(ne.name),kt=Z.has(me.name);return je!==kt?je?-1:1:ne.detected!==me.detected?ne.detected?-1:1:ne.recommended!==me.recommended?ne.recommended?-1:1:ne.displayName.localeCompare(me.displayName)}),U},[n,Z]),xe=g.useMemo(()=>{const U=k.trim().toLowerCase();return fe.filter(ne=>{if(C==="selected"&&!Z.has(ne.name)||C==="detected"&&!ne.detected||C==="recommended"&&!ne.recommended||C==="not-detected"&&ne.detected)return!1;if(!U)return!0;const me=jn.filter(je=>ne.capabilities[je]).map(je=>t(js[je]).toLowerCase());return ne.displayName.toLowerCase().includes(U)||ne.name.toLowerCase().includes(U)||me.some(je=>je.includes(U))})},[k,C,Z,fe,t]),Pe=g.useMemo(()=>{const U=xe.filter(je=>je.detected),ne=xe.filter(je=>!je.detected),me=[];return U.length>0&&me.push({key:"detected",label:t("migrateDetectedTag"),providers:U}),ne.length>0&&me.push({key:"not-detected",label:t("migrateNotDetectedTag"),providers:ne}),me},[xe,t]),Ae=g.useMemo(()=>({all:n.length,selected:se,detected:n.filter(U=>U.detected).length,recommended:n.filter(U=>U.recommended).length,"not-detected":n.filter(U=>!U.detected).length}),[n,se]),Je=g.useMemo(()=>xe.map(U=>U.name),[xe]),mt=g.useCallback(()=>{a(U=>{const ne=new Set(U);for(const me of Je)ne.add(me);return Array.from(ne)})},[Je]),qe=g.useCallback(()=>{a([])},[]),gt=g.useCallback(async()=>{if(o.length===0){y(t("migrateSelectProvider"));return}if(Y===0){y(t("migrateNoTypesEnabled"));return}const U={providers:o,global:u,include:l};O==="install"?await e.fetchCandidates(U):await e.reconcile(U)},[Y,l,u,O,o,t,e]),Bt=g.useCallback(async()=>{y(null);const U=e.plan?e_(e.plan,I,e.actionKey):void 0;if(await e.execute(U)){j(new Map);try{const me=await _u();i(me)}catch(me){console.error("Failed to refresh discovery:",me)}}},[I,e]),Kt=g.useCallback(async U=>{if(!e.installCandidates)return;y(null);const ne=HT(e.installCandidates,U);if(await e.execute(ne,"install")){j(new Map);try{const je=await _u();i(je)}catch(je){console.error("Failed to refresh discovery:",je)}}},[e]),Ut=g.useMemo(()=>{const U=new Map;if(!e.results)return U;for(const ne of e.results.results)U.set(ne.provider,ne);return U},[e.results]);g.useEffect(()=>{const U=ne=>{const me=ne.target,je=!!(me&&(me instanceof HTMLInputElement||me instanceof HTMLTextAreaElement||me.isContentEditable||me.closest('[contenteditable="true"], [role="textbox"]'))),kt=ne.metaKey||ne.ctrlKey||ne.altKey;ne.key==="/"&&!je&&!kt&&(ne.preventDefault(),document.getElementById("migrate-search")?.focus())};return document.addEventListener("keydown",U),()=>document.removeEventListener("keydown",U)},[]);const Ue=g.useMemo(()=>e.plan?e.plan.actions.filter(U=>U.action!=="conflict"||I.get(e.actionKey(U))==="skip"?!1:!e.resolutions.has(e.actionKey(U))).length:0,[I,e]),st=e.phase==="reviewing"&&O==="reconcile"&&!!e.plan&&Ue===0,it=e.phase==="idle"&&o.length>0&&Y>0;return f?c.jsx("div",{className:"flex items-center justify-center h-full",children:c.jsxs("div",{className:"text-center",children:[c.jsx("div",{className:"w-8 h-8 border-4 border-dash-accent border-t-transparent rounded-full animate-spin mx-auto mb-3"}),c.jsx("p",{className:"text-dash-text-muted",children:t("migrateDiscovering")})]})}):c.jsxs("div",{className:"relative h-full overflow-hidden",children:[c.jsxs("div",{className:"pointer-events-none absolute inset-0 -z-10 overflow-hidden",children:[c.jsx("div",{className:"absolute -top-24 -right-8 h-64 w-64 rounded-full bg-dash-accent/10 blur-3xl"}),c.jsx("div",{className:"absolute -bottom-28 -left-10 h-72 w-72 rounded-full bg-dash-accent/5 blur-3xl"})]}),c.jsxs("div",{className:"h-full overflow-y-auto space-y-4 pb-8",children:[c.jsx("section",{className:"dash-panel dash-sticky-glass sticky top-0 z-20 px-4 py-4 md:px-6 md:py-5",children:c.jsxs("div",{className:"flex flex-col gap-4 xl:flex-row xl:items-end xl:justify-between",children:[c.jsxs("div",{className:"space-y-1",children:[c.jsx("p",{className:"mono text-[10px] uppercase tracking-[0.16em] text-dash-text-muted",children:t("migrate")}),c.jsx("h1",{className:"text-xl md:text-2xl font-semibold text-dash-text",children:t("migrateTitle")}),c.jsx("p",{className:"text-sm text-dash-text-secondary max-w-3xl",children:t("migrateSubtitle")})]}),e.phase==="complete"&&e.results?c.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-3",children:[c.jsx(qt,{label:t("migrateInstalled"),value:e.results.counts.installed,tone:"success"}),c.jsx(qt,{label:t("migrateSkipped"),value:e.results.counts.skipped}),c.jsx(qt,{label:t("migrateFailed"),value:e.results.counts.failed})]}):c.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-4",children:[c.jsx(qt,{label:t("migrateTypeAgents"),value:s?.counts.agents??0}),c.jsx(qt,{label:t("migrateDetectedProviders"),value:re,tone:"success"}),c.jsx(qt,{label:t("migrateSelectedProviders"),value:se,tone:"accent"}),c.jsx(qt,{label:t("migrateTypes"),value:Y})]})]})}),b&&c.jsx("div",{className:"px-4 py-3 border border-red-500/30 bg-red-500/10 rounded-lg text-sm text-red-400",children:b}),c.jsxs("div",{className:"grid gap-4 xl:grid-cols-[minmax(0,1.55fr)_minmax(0,340px)]",children:[c.jsxs("section",{className:"order-2 xl:order-1 space-y-4",children:[(e.phase==="idle"||e.phase==="reviewing"||e.phase==="reconciling")&&o.length>0&&c.jsxs("div",{className:"dash-panel p-4 flex items-center gap-4 flex-wrap",children:[c.jsx(JT,{mode:O,pendingCount:L,disabled:e.phase==="reconciling",onModeChange:$}),c.jsx("p",{className:"text-xs text-dash-text-muted",children:t(O==="install"?"migrateModeInstallDesc":"migrateModeReconcileDesc")})]}),e.phase==="reviewing"&&e.plan&&O==="reconcile"&&c.jsxs("div",{className:"dash-panel flex flex-col max-h-[calc(100vh-200px)]",children:[c.jsxs("div",{className:"flex items-center justify-between p-5 pb-4",children:[c.jsx("h2",{className:"text-lg font-semibold text-dash-text",children:t("migrateReviewPlan")}),c.jsx("button",{type:"button",onClick:V,className:"dash-focus-ring px-3 py-1.5 text-xs font-medium rounded-md border border-dash-border text-dash-text-secondary hover:bg-dash-surface-hover",children:t("cancel")})]}),c.jsxs("div",{className:"flex-1 overflow-y-auto px-5 pb-4",children:[e.plan.banners&&e.plan.banners.length>0&&c.jsx("div",{className:"mb-4 space-y-2",children:e.plan.banners.map((U,ne)=>c.jsx("div",{className:"px-3 py-2 border border-yellow-500/30 bg-yellow-500/10 rounded text-xs text-yellow-400",children:c.jsx("strong",{children:U.message})},`${U.kind}-${U.provider}-${U.type}-${ne}`))}),c.jsx(m8,{plan:e.plan,resolutions:e.resolutions,onResolve:e.resolve,actionKey:e.actionKey,flips:I,onFlip:F}),e.error&&c.jsx("div",{className:"mt-4 px-3 py-2 border border-red-500/30 bg-red-500/10 rounded text-xs text-red-400",children:e.error})]}),c.jsxs("div",{className:"flex items-center justify-end gap-3 px-5 py-4 border-t border-dash-border bg-dash-surface rounded-b-xl",children:[Ue>0&&c.jsx("p",{className:"text-xs text-yellow-400",children:t("migrateResolveConflicts")}),c.jsx("button",{type:"button",onClick:Bt,disabled:!st,className:"dash-focus-ring px-4 py-2 bg-dash-accent text-white rounded-md text-sm font-semibold hover:bg-dash-accent/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:t("migrateExecutePlan")})]})]}),(e.phase==="reviewing"||e.phase==="executing")&&e.installCandidates!==null&&O==="install"&&c.jsxs("div",{className:"dash-panel p-4 md:p-5",children:[c.jsxs("div",{className:"flex items-center justify-between mb-4",children:[c.jsx("h2",{className:"text-lg font-semibold text-dash-text",children:t("migrateModeInstall")}),c.jsx("button",{type:"button",onClick:V,disabled:e.phase==="executing",className:"dash-focus-ring px-3 py-1.5 text-xs font-medium rounded-md border border-dash-border text-dash-text-secondary hover:bg-dash-surface-hover disabled:opacity-50",children:t("cancel")})]}),c.jsx(FT,{candidates:e.installCandidates,selected:M,onSelectionChange:T,onInstall:Kt,isInstalling:e.phase==="executing"}),e.error&&c.jsx("div",{className:"mt-4 px-3 py-2 border border-red-500/30 bg-red-500/10 rounded text-xs text-red-400",children:e.error})]}),e.phase==="complete"&&e.results&&c.jsx(XT,{results:e.results,onReset:V}),e.phase==="error"&&e.error&&c.jsxs("div",{className:"dash-panel p-5",children:[c.jsx("div",{className:"px-4 py-3 border border-red-500/30 bg-red-500/10 rounded-lg text-sm text-red-400",children:e.error}),c.jsx("button",{type:"button",onClick:V,className:"mt-4 dash-focus-ring px-4 py-2 bg-dash-bg border border-dash-border rounded-md text-sm text-dash-text-secondary hover:bg-dash-surface-hover",children:t("tryAgain")})]}),(e.phase==="reconciling"||e.phase==="executing")&&c.jsx("div",{className:"dash-panel p-5",children:c.jsx("div",{className:"flex items-center justify-center py-8",children:c.jsxs("div",{className:"text-center",children:[c.jsx("div",{className:"w-8 h-8 border-4 border-dash-accent border-t-transparent rounded-full animate-spin mx-auto mb-3"}),c.jsx("p",{className:"text-dash-text-muted",children:e.phase==="reconciling"?t("migrateReconciling"):t("migrateExecuting")})]})})}),e.phase==="idle"&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"dash-panel p-4 md:p-5 space-y-4",children:[c.jsxs("div",{className:"flex flex-col gap-3 lg:flex-row lg:items-center",children:[c.jsxs("div",{className:"relative flex-1",children:[c.jsxs("svg",{className:"absolute left-2.5 top-1/2 -translate-y-1/2 w-4 h-4 stroke-dash-text-muted",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[c.jsx("circle",{cx:"11",cy:"11",r:"8"}),c.jsx("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})]}),c.jsx("input",{id:"migrate-search",type:"text",value:w,onChange:U=>v(U.target.value),placeholder:t("migrateSearchProviders"),className:"dash-focus-ring w-full pl-9 pr-12 py-2 bg-dash-bg border border-dash-border rounded-lg text-dash-text text-sm focus:border-dash-accent transition-colors"}),c.jsx("span",{className:"absolute right-2.5 top-1/2 -translate-y-1/2 text-[11px] text-dash-text-muted bg-dash-surface-hover border border-dash-border px-1.5 py-0.5 rounded",children:t("searchShortcut")})]}),c.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[c.jsx("button",{type:"button",onClick:()=>W(!0),disabled:m,className:"dash-focus-ring px-3 py-1.5 bg-dash-bg border border-dash-border rounded-md text-xs text-dash-text-secondary hover:bg-dash-surface-hover disabled:opacity-50 whitespace-nowrap",children:t(m?"checking":"migrateRefresh")}),c.jsx("button",{type:"button",onClick:mt,disabled:Je.length===0,className:"dash-focus-ring px-3 py-1.5 bg-dash-bg border border-dash-border rounded-md text-xs text-dash-text-secondary hover:bg-dash-surface-hover disabled:opacity-50 whitespace-nowrap",children:t("migrateSelectVisible")}),c.jsx("button",{type:"button",onClick:qe,disabled:se===0,className:"dash-focus-ring px-3 py-1.5 bg-dash-bg border border-dash-border rounded-md text-xs text-dash-text-secondary hover:bg-dash-surface-hover disabled:opacity-50 whitespace-nowrap",children:t("migrateClearSelection")})]})]}),c.jsx("div",{className:"flex flex-wrap gap-1.5",children:[{key:"all",label:t("categoryAll")},{key:"selected",label:t("migrateSelectedProviders")},{key:"detected",label:t("migrateDetectedProviders")},{key:"recommended",label:t("migrateFilterRecommended")},{key:"not-detected",label:t("migrateNotDetectedTag")}].map(U=>c.jsxs("button",{type:"button",onClick:()=>N(U.key),className:`dash-focus-ring px-3 py-1 text-xs font-medium rounded-full border transition-all whitespace-nowrap ${C===U.key?"bg-dash-accent/10 border-dash-accent text-dash-accent":"border-dash-border text-dash-text-secondary hover:bg-dash-surface-hover hover:text-dash-text"}`,children:[U.label,c.jsx("span",{className:"opacity-60 ml-1 text-[10px]",children:Ae[U.key]})]},U.key))}),c.jsxs("div",{children:[c.jsx("p",{className:"mb-2 text-[11px] font-semibold uppercase tracking-wide text-dash-text-muted",children:t("migrateTypes")}),c.jsx("div",{className:"flex flex-wrap items-center gap-2",children:jn.map(U=>c.jsx("button",{type:"button",onClick:()=>oe(U),className:`dash-focus-ring px-2.5 py-1 text-[11px] uppercase tracking-wide rounded-md border transition-colors ${l[U]?"border-dash-accent/45 text-dash-accent bg-dash-accent/5":"border-dash-border text-dash-text-muted hover:bg-dash-surface-hover"}`,children:t(js[U])},U))})]})]}),c.jsxs("div",{className:"dash-panel p-4 md:p-5",children:[c.jsx("h2",{className:"text-sm font-semibold text-dash-text mb-4",children:t("migrateSourceSummary")}),c.jsx("div",{className:"grid grid-cols-2 md:grid-cols-3 xl:grid-cols-6 gap-3",children:jn.map(U=>c.jsxs("div",{className:"px-3 py-2 bg-dash-bg border border-dash-border rounded-md text-center",children:[c.jsx("p",{className:"text-[11px] uppercase tracking-wide text-dash-text-muted",children:t(js[U])}),c.jsx("p",{className:"text-lg font-semibold text-dash-text",children:s?.counts[U]??0})]},U))})]}),c.jsxs("div",{className:"dash-panel p-4 md:p-5",children:[c.jsxs("div",{className:"flex items-center justify-between mb-4",children:[c.jsx("h2",{className:"text-sm font-semibold text-dash-text",children:t("migrateProvidersHeading")}),c.jsxs("p",{className:"text-xs text-dash-text-muted",children:[xe.length," ",t("migrateProvidersCountSuffix")]})]}),n.length===0?c.jsx("div",{className:"text-sm text-dash-text-muted",children:t("migrateNoProviders")}):xe.length===0?c.jsx("div",{className:"text-sm text-dash-text-muted",children:t("migrateNoProvidersMatch")}):c.jsx("div",{className:"space-y-5",children:Pe.map(U=>c.jsxs("div",{children:[c.jsxs("div",{className:"flex items-center gap-2.5 mb-3",children:[c.jsx("div",{className:"w-2 h-2 rounded-full",style:{background:Jb[U.key]}}),c.jsx("h2",{className:"text-[13px] font-semibold uppercase tracking-wide",style:{color:Jb[U.key]},children:U.label}),c.jsxs("span",{className:"text-[11px] text-dash-text-muted ml-auto",children:[U.providers.length," ",t("migrateProvidersCountSuffix")]}),c.jsx("div",{className:"flex-1 h-px bg-dash-border ml-3"})]}),c.jsx("div",{className:"space-y-2",children:U.providers.map(ne=>c.jsx(t_,{provider:ne,include:l,isSelected:Z.has(ne.name),cardClickToggles:C==="selected",onToggleSelect:ie,onOpenDetails:S,t},ne.name))})]},U.key))})]})]})]}),c.jsx("aside",{className:"order-1 xl:order-2 space-y-4 self-start xl:sticky xl:top-[84px]",children:e.phase==="complete"&&e.results?c.jsxs("div",{className:"dash-panel p-4 md:p-5 space-y-4",children:[c.jsxs("div",{children:[c.jsx("p",{className:"text-sm font-semibold text-dash-text",children:t("migrateSummaryTitle")}),c.jsxs("p",{className:"text-xs text-dash-text-muted mt-1",children:[e.results.counts.installed+e.results.counts.skipped+e.results.counts.failed," ",t("migrateSummarySubtitle")]})]}),c.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[c.jsx(qt,{label:t("migrateInstalled"),value:e.results.counts.installed,tone:"success"}),c.jsx(qt,{label:t("migrateSkipped"),value:e.results.counts.skipped}),c.jsx(qt,{label:t("migrateFailed"),value:e.results.counts.failed})]}),e.results.discovery&&c.jsxs("div",{className:"space-y-1.5",children:[c.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-wide text-dash-text-muted",children:t("migrateTypes")}),jn.map(U=>{const ne=e.results?.discovery?.[U]??0;return ne===0?null:c.jsxs("div",{className:"flex items-center justify-between px-3 py-1.5 bg-dash-bg rounded-md text-xs",children:[c.jsx("span",{className:"text-dash-text-secondary",children:t(js[U])}),c.jsx("span",{className:"font-semibold text-dash-text",children:ne})]},U)})]}),o.length>0&&c.jsxs("div",{className:"space-y-1.5",children:[c.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-wide text-dash-text-muted",children:t("migrateSummaryProviders")}),c.jsx("div",{className:"flex flex-wrap gap-1.5",children:o.map(U=>{const ne=H.get(U);return c.jsx("span",{className:"text-[10px] px-2 py-0.5 rounded border border-dash-accent/30 text-dash-accent",children:ne?.displayName||U},U)})})]}),c.jsx("div",{className:"text-[10px] px-3 py-1.5 bg-dash-bg rounded-md text-dash-text-muted",children:t(u?"migrateScopeGlobal":"migrateScopeProject")}),c.jsx("button",{type:"button",onClick:V,className:"dash-focus-ring w-full px-4 py-2.5 bg-dash-accent text-white rounded-md text-sm font-semibold hover:bg-dash-accent/90 transition-colors",children:t("migrateSummaryNewMigration")})]}):c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"dash-panel p-4 md:p-5 space-y-4",children:[c.jsxs("div",{children:[c.jsx("p",{className:"text-sm font-semibold text-dash-text",children:t("migrateActionSummaryTitle")}),c.jsxs("p",{className:"text-xs text-dash-text-muted mt-1",children:[se," ",t("migrateProvidersCountSuffix")," ·"," ",Y,"/",jn.length," ",t("migrateTypes")]})]}),c.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[c.jsx(qt,{label:t("migrateSelectedProviders"),value:se,tone:"accent"}),c.jsx(qt,{label:t("migrateDetectedProviders"),value:re}),c.jsx(qt,{label:t("migrateTypes"),value:Y}),c.jsx(qt,{label:t("migrateFilterRecommended"),value:_,tone:"success"})]}),c.jsxs("div",{className:"inline-flex w-full rounded-md border border-dash-border overflow-hidden",children:[c.jsx("button",{type:"button",onClick:()=>h(!1),className:`dash-focus-ring flex-1 px-3 py-2 text-sm ${u?"bg-dash-bg text-dash-text-secondary":"bg-dash-accent-subtle text-dash-accent"}`,children:t("migrateScopeProject")}),c.jsx("button",{type:"button",onClick:()=>h(!0),className:`dash-focus-ring flex-1 px-3 py-2 text-sm border-l border-dash-border ${u?"bg-dash-accent-subtle text-dash-accent":"bg-dash-bg text-dash-text-secondary"}`,children:t("migrateScopeGlobal")})]}),c.jsx("button",{type:"button",onClick:st?Bt:gt,disabled:st?!1:!it,className:"dash-focus-ring w-full px-4 py-2.5 bg-dash-accent text-white rounded-md text-sm font-semibold hover:bg-dash-accent/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:e.phase==="reviewing"&&O==="reconcile"?t("migrateExecutePlan"):e.phase==="reconciling"?t("migrateRunning"):t("migrateRun")}),e.phase==="reviewing"&&O==="reconcile"&&Ue>0&&c.jsx("p",{className:"text-xs px-3 py-2 border border-yellow-500/30 bg-yellow-500/10 rounded text-yellow-400",children:t("migrateResolveConflicts")}),ee.length>0&&c.jsx("div",{className:"space-y-2",children:ee.map((U,ne)=>c.jsx("p",{className:"text-xs px-3 py-2 border border-yellow-500/30 bg-yellow-500/10 rounded text-yellow-400",children:U},`${U}-${ne}`))})]}),c.jsxs("div",{className:"dash-panel-muted p-4",children:[c.jsx("p",{className:"mb-3 text-[11px] font-semibold uppercase tracking-wide text-dash-text-muted",children:t("migrateSelectProviderAction")}),c.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[c.jsx("button",{type:"button",onClick:()=>ce("codex"),className:"dash-focus-ring px-3 py-1.5 bg-dash-bg border border-dash-border rounded-md text-xs text-dash-text-secondary hover:bg-dash-surface-hover",children:t("migratePresetCodex")}),c.jsx("button",{type:"button",onClick:()=>ce("antigravity"),className:"dash-focus-ring px-3 py-1.5 bg-dash-bg border border-dash-border rounded-md text-xs text-dash-text-secondary hover:bg-dash-surface-hover",children:t("migratePresetAntigravity")}),c.jsx("button",{type:"button",onClick:()=>ce("core"),className:"dash-focus-ring px-3 py-1.5 bg-dash-bg border border-dash-border rounded-md text-xs text-dash-text-secondary hover:bg-dash-surface-hover",children:t("migratePresetCore")}),c.jsx("button",{type:"button",onClick:()=>ce("detected"),className:"dash-focus-ring px-3 py-1.5 bg-dash-bg border border-dash-border rounded-md text-xs text-dash-text-secondary hover:bg-dash-surface-hover",children:t("migratePresetDetected")})]})]})]})})]})]}),J&&c.jsx(n_,{provider:J,include:l,isSelected:Z.has(J.name),latestResult:Ut.get(J.name)||null,onToggleSelect:ie,onClose:G,t})]})},s_=()=>c.jsx(r_,{}),i_=({featureId:t,name:e,description:n,included:r})=>{const{t:s}=te();return c.jsxs("div",{"data-testid":`feature-card-${t}`,className:`p-4 rounded-lg border transition-all ${r?"border-[var(--dash-accent)] bg-[var(--dash-surface)] shadow-sm":"border-[var(--dash-border)] bg-[var(--dash-bg)] opacity-50"}`,children:[c.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r?c.jsx("svg",{className:"w-5 h-5 text-[var(--dash-accent)]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:c.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})}):c.jsx("svg",{className:"w-5 h-5 text-[var(--dash-text-muted)]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:c.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})}),c.jsx("h4",{className:"font-medium text-[var(--dash-text)]",children:s(e)})]}),c.jsx("p",{className:"text-sm text-[var(--dash-text-muted)] leading-relaxed",children:s(n)})]})},o_=({selectedKit:t,onKitSelect:e,onInstall:n,installing:r})=>{const{t:s}=te(),[i,o]=g.useState(1);return c.jsxs("div",{className:"space-y-6","data-testid":"install-wizard",children:[c.jsxs("div",{className:"flex items-center gap-4",children:[c.jsx(Wh,{number:1,active:i===1,label:s("stepChooseKit")}),c.jsx("div",{className:"flex-1 h-px bg-[var(--dash-border)]"}),c.jsx(Wh,{number:2,active:i===2,label:s("stepConfigure")}),c.jsx("div",{className:"flex-1 h-px bg-[var(--dash-border)]"}),c.jsx(Wh,{number:3,active:i===3,label:s("stepInstall")})]}),c.jsxs("div",{className:"min-h-[200px]",children:[i===1&&c.jsx(a_,{onSelect:e,selected:t}),i===2&&t&&c.jsx(l_,{kit:t}),i===3&&c.jsx(c_,{installing:r})]}),c.jsxs("div",{className:"flex justify-between pt-4 border-t border-[var(--dash-border)]",children:[i>1?c.jsx("button",{onClick:()=>o(a=>a-1),className:"px-4 py-2 text-sm font-medium text-[var(--dash-text)] bg-[var(--dash-surface)] border border-[var(--dash-border)] rounded-lg hover:bg-[var(--dash-surface-hover)] transition-colors","data-testid":"wizard-back",children:s("back")}):c.jsx("div",{}),i<3&&t&&c.jsx("button",{onClick:()=>o(a=>a+1),className:"px-4 py-2 text-sm font-medium text-white bg-[var(--dash-accent)] rounded-lg hover:opacity-90 transition-opacity","data-testid":"wizard-next",children:s("next")}),i===3&&c.jsx("button",{onClick:n,disabled:r,className:"px-4 py-2 text-sm font-medium text-white bg-[var(--dash-accent)] rounded-lg hover:opacity-90 transition-opacity disabled:opacity-50 disabled:cursor-not-allowed","data-testid":"wizard-install",children:s("install")})]})]})},Wh=({number:t,active:e,label:n})=>c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx("div",{className:`w-8 h-8 rounded-full flex items-center justify-center text-sm font-bold transition-colors ${e?"bg-[var(--dash-accent)] text-white":"bg-[var(--dash-surface)] text-[var(--dash-text-muted)] border border-[var(--dash-border)]"}`,children:t}),c.jsx("span",{className:`text-sm font-medium ${e?"text-[var(--dash-text)]":"text-[var(--dash-text-muted)]"}`,children:n})]}),a_=({onSelect:t,selected:e})=>{const{t:n}=te();return c.jsxs("div",{className:"space-y-4",children:[c.jsx("p",{className:"text-[var(--dash-text-muted)]",children:e?`Selected: ${e===ur.ENGINEER?n("kitEngineerName"):n("kitMarketingName")}`:"Please select a kit above"}),e&&c.jsxs("button",{type:"button",onClick:()=>t(e===ur.ENGINEER?ur.MARKETING:ur.ENGINEER),className:"text-sm text-[var(--dash-accent)] hover:underline",children:["Switch to ",e===ur.ENGINEER?n("kitMarketingName"):n("kitEngineerName")]})]})},l_=()=>c.jsx("div",{className:"text-[var(--dash-text-muted)]",children:"Configuration preview placeholder"}),c_=({installing:t})=>c.jsx("div",{className:"text-[var(--dash-text-muted)]",children:t?"Installing...":"Ready to install"}),d_=({kit:t,onGetStarted:e})=>{const{t:n}=te(),r=Lt(),s=t===ur.ENGINEER?"kitEngineerName":t===ur.MARKETING?"kitMarketingName":"kitEngineerName";return c.jsxs("div",{className:"text-center py-12 space-y-6","data-testid":"success-screen",children:[c.jsx("div",{className:"w-16 h-16 mx-auto bg-green-100 rounded-full flex items-center justify-center",children:c.jsx("svg",{className:"w-10 h-10 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:c.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})})}),c.jsx("h2",{className:"text-2xl font-bold text-[var(--dash-text)]",children:n("installSuccess")}),c.jsx("p",{className:"text-[var(--dash-text-muted)] max-w-md mx-auto",children:n("installSuccessDesc").replace("{kit}",n(s))}),c.jsxs("div",{className:"flex gap-4 justify-center pt-4",children:[c.jsx("button",{onClick:e,className:"px-6 py-2.5 text-sm font-medium text-white bg-[var(--dash-accent)] rounded-lg hover:opacity-90 transition-opacity","data-testid":"get-started-btn",children:n("getStarted")}),c.jsx("button",{onClick:()=>r("/"),className:"px-6 py-2.5 text-sm font-medium text-[var(--dash-text)] bg-[var(--dash-surface)] border border-[var(--dash-border)] rounded-lg hover:bg-[var(--dash-surface-hover)] transition-colors","data-testid":"dashboard-btn",children:n("goToDashboard")})]})]})},u_=[{id:"agents",name:"featureAgents",description:"featureAgentsDesc",engineer:!0,marketing:!0,pm:!0,ba:!0,test:!0},{id:"hooks",name:"featureHooks",description:"featureHooksDesc",engineer:!0,marketing:!0,pm:!0,ba:!0,test:!0},{id:"skills",name:"featureSkills",description:"featureSkillsDesc",engineer:!0,marketing:!0,pm:!0,ba:!0,test:!0},{id:"multiagent",name:"featureMultiAgent",description:"featureMultiAgentDesc",engineer:!0,marketing:!1,pm:!1,ba:!1,test:!1},{id:"content",name:"featureContent",description:"featureContentDesc",engineer:!1,marketing:!0,pm:!1,ba:!1,test:!1},{id:"social",name:"featureSocial",description:"featureSocialDesc",engineer:!1,marketing:!0,pm:!1,ba:!1,test:!1}],LS={engineer:{id:"engineer",name:"kitEngineerName",tagline:"kitEngineerTagline",primaryColor:"text-blue-500",features:["agents","hooks","skills","multiagent"]},marketing:{id:"marketing",name:"kitMarketingName",tagline:"kitMarketingTagline",primaryColor:"text-purple-500",features:["agents","hooks","skills","content","social"]},pm:{id:"pm",name:"kitPmName",tagline:"kitPmTagline",primaryColor:"text-green-500",features:["agents","hooks","skills"]},ba:{id:"ba",name:"kitBaName",tagline:"kitBaTagline",primaryColor:"text-orange-500",features:["agents","hooks","skills"]},test:{id:"test",name:"kitTestName",tagline:"kitTestTagline",primaryColor:"text-red-500",features:["agents","hooks","skills"]}};function h_(t){const e=LS[t];return e?u_.filter(n=>e.features.includes(n.id)):(console.warn(`Unknown kit type: ${t}`),[])}const f_=({kit:t,selected:e,onSelect:n,features:r})=>{const{t:s}=te();return c.jsxs("button",{type:"button",onClick:n,className:`p-6 rounded-lg border-2 text-left transition-all w-full ${e?"border-[var(--dash-accent)] bg-[var(--dash-surface)] shadow-md":"border-[var(--dash-border)] hover:border-[var(--dash-accent)]/50"}`,children:[c.jsx("h3",{className:`text-xl font-bold ${t.primaryColor}`,children:s(t.name)}),c.jsx("p",{className:"text-[var(--dash-text-muted)] mt-1",children:s(t.tagline)}),c.jsx("div",{className:"mt-4 space-y-2",children:r.slice(0,3).map(i=>c.jsx(i_,{featureId:i.id,name:i.name,description:i.description,included:!0},i.id))})]})},p_=()=>{const{t}=te(),e=Lt(),[n,r]=g.useState(null),[s,i]=g.useState(!1),[o,a]=g.useState(!1),[l,d]=g.useState(null),u=async()=>{if(n){i(!0),d(null);try{const f=await fetch("/api/install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({kit:n})});if(!f.ok)throw new Error(`Installation failed: ${f.statusText}`);a(!0)}catch(f){const p=f instanceof Error?f.message:"Unknown error occurred";d(p),console.error("Install failed:",f)}finally{i(!1)}}};if(o&&n)return c.jsx(d_,{kit:n,onGetStarted:()=>e("/")});const h=f=>f==="engineer"?ur.ENGINEER:ur.MARKETING;return c.jsxs("div",{className:"max-w-4xl mx-auto py-8 px-4",children:[c.jsxs("header",{className:"text-center mb-8",children:[c.jsx("h1",{className:"text-3xl font-bold text-[var(--dash-text)]",children:t("onboardingTitle")}),c.jsx("p",{className:"mt-2 text-[var(--dash-text-muted)]",children:t("onboardingSubtitle")})]}),c.jsx("section",{className:"grid md:grid-cols-2 gap-6 mb-8",children:Object.values(LS).map(f=>{const p=h(f.id);return c.jsx(f_,{kit:f,selected:n===p,onSelect:()=>r(p),features:h_(f.id)},f.id)})}),l&&c.jsxs("div",{className:"mb-6 p-4 rounded-lg bg-red-100 border border-red-300 text-red-800",children:[c.jsx("p",{className:"font-medium",children:"Installation Error"}),c.jsx("p",{className:"text-sm mt-1",children:l}),c.jsx("button",{type:"button",onClick:()=>d(null),className:"mt-2 text-sm underline hover:no-underline",children:"Dismiss"})]}),n&&c.jsx(o_,{selectedKit:n,onKitSelect:r,onInstall:u,installing:s})]})},m_=()=>c.jsx(p_,{}),g_={0:"bg-dash-bg",1:"bg-emerald-500/20",2:"bg-emerald-500/50",3:"bg-emerald-400"};function x_({cells:t}){const{t:e}=te(),n=[{label:e("plansHeatmapMon"),index:1},{label:e("plansHeatmapWed"),index:3},{label:e("plansHeatmapFri"),index:5}];return c.jsxs("div",{className:"flex w-fit items-start gap-3",children:[c.jsx("div",{className:"grid grid-rows-7 gap-1 pt-[1px] text-[10px] uppercase tracking-tighter text-dash-text-muted",children:Array.from({length:7},(r,s)=>{const i=n.find(o=>o.index===s);return c.jsx("div",{className:"flex h-3.5 items-center justify-end pr-1",children:i?.label??""},s)})}),c.jsx("div",{className:"grid grid-cols-12 gap-1",children:Array.from({length:12},(r,s)=>c.jsx("div",{className:"grid grid-rows-7 gap-1",children:t.filter(i=>i.weekIndex===s).map(i=>c.jsx("div",{title:e("plansHeatmapChanges").replace("{date}",new Date(i.date).toLocaleDateString()).replace("{count}",String(i.totalActivity)),className:`h-3.5 w-3.5 rounded-sm transition-colors duration-300 ${g_[i.level]}`},i.date))},s))})]})}function b_({planDir:t,projectId:e}){const{t:n}=te(),[r,s]=g.useState("both"),[i,o]=g.useState(null),[a,l]=g.useState(null);return g.useEffect(()=>{let d=!1;async function u(){l(null);try{const h=new URLSearchParams({dir:t,source:r});e&&h.set("projectId",e);const f=await fetch(`/api/plan/heatmap?${h.toString()}`);if(!f.ok)throw new Error(n("plansHeatmapLoadError"));const p=await f.json();d||o(p)}catch(h){d||l(h instanceof Error?h.message:n("plansHeatmapLoadError"))}}return u(),()=>{d=!0}},[t,e,r,n]),c.jsxs("section",{className:"rounded-xl border border-dash-border bg-dash-surface p-5",children:[c.jsxs("div",{className:"mb-4 flex items-center justify-between gap-3",children:[c.jsxs("div",{children:[c.jsx("h2",{className:"text-lg font-semibold text-dash-text",children:n("plansActivity")}),c.jsx("p",{className:"text-sm text-dash-text-muted",children:n("plansActivitySubtitle")})]}),c.jsxs("select",{value:r,onChange:d=>s(d.target.value),className:"rounded-lg border border-dash-border bg-dash-bg px-3 py-2 text-sm text-dash-text",children:[c.jsx("option",{value:"both",children:n("plansActivityCombined")}),c.jsx("option",{value:"git",children:n("plansActivityCommits")}),c.jsx("option",{value:"mtime",children:n("plansActivityFiles")})]})]}),i?.cells?.length?c.jsx(x_,{cells:i.cells}):c.jsx("p",{className:"text-sm text-dash-text-muted",children:a??i?.error??n("plansActivityEmpty")})]})}function y_({planDir:t,phaseId:e,status:n,actions:r,onSuccess:s}){const{t:i}=te(),o=async a=>{await r.trigger({action:a,planDir:t,phaseId:e}),s()};return c.jsxs("div",{className:"flex flex-wrap gap-2",children:[c.jsx("button",{type:"button",onClick:()=>void o("start"),disabled:r.loading,className:"rounded border border-dash-border px-2 py-1 text-xs text-dash-text disabled:cursor-not-allowed disabled:opacity-50",children:i(n==="in-progress"?"plansRestart":"plansStart")}),c.jsx("button",{type:"button",onClick:()=>void o("complete"),disabled:r.loading,className:"rounded border border-dash-border px-2 py-1 text-xs text-dash-text disabled:cursor-not-allowed disabled:opacity-50",children:i("plansComplete")}),c.jsx("button",{type:"button",onClick:()=>void o("reset"),disabled:r.loading,className:"rounded border border-dash-border px-2 py-1 text-xs text-dash-text-muted disabled:cursor-not-allowed disabled:opacity-50",children:i("plansReset")})]})}const v_={pending:"bg-amber-500","in-progress":"bg-sky-500",completed:"bg-emerald-500"},w_={pending:"kanbanStatus_pending","in-progress":"kanbanStatus_in-progress",completed:"kanbanStatus_completed"};function k_({planDir:t,phases:e,actions:n,onRead:r,onRefresh:s}){const{t:i}=te();return c.jsx("div",{className:"rounded-[2rem] bg-dash-border/20 p-1",style:{animation:"fade-in-up 0.8s cubic-bezier(0.32,0.72,0,1) 0.4s both"},children:c.jsxs("section",{className:"rounded-[calc(2rem-0.25rem)] border border-white/5 bg-dash-surface p-6 shadow-2xl",children:[c.jsxs("div",{className:"mb-6 flex items-center justify-between px-2",children:[c.jsx("h2",{className:"text-xl font-bold tracking-tight text-dash-text",children:i("plansPhases")}),c.jsx("span",{className:"text-[10px] font-bold uppercase tracking-widest text-dash-text-muted bg-dash-bg px-2 py-1 rounded-md border border-white/5",children:i("plansPhaseCount").replace("{count}",String(e.length))})]}),c.jsx("div",{className:"space-y-4",children:e.map((o,a)=>c.jsx("div",{className:"group relative rounded-[1.5rem] bg-dash-border/10 p-1 transition-all duration-500 hover:bg-dash-accent/5",style:{animation:`fade-in-up 0.6s cubic-bezier(0.32,0.72,0,1) ${.5+a*.1}s both`},children:c.jsxs("div",{className:"flex flex-col gap-4 rounded-[calc(1.5rem-0.25rem)] border border-white/5 bg-dash-bg p-4 transition-colors duration-500 hover:bg-dash-bg/80 lg:flex-row lg:items-center lg:justify-between",children:[c.jsxs("div",{className:"flex items-start gap-4",children:[c.jsxs("div",{className:"mt-1 flex flex-col items-center gap-2",children:[c.jsx("div",{className:`h-3 w-3 rounded-full ${v_[o.status]} shadow-[0_0_8px_currentColor]`}),c.jsx("div",{className:"h-full w-px flex-1 bg-dash-border/30"})]}),c.jsxs("div",{children:[c.jsx("div",{className:"flex items-center gap-2",children:c.jsx("span",{className:"text-[10px] font-bold uppercase tracking-[0.2em] text-dash-accent/80",children:o.phaseId})}),c.jsx("h3",{className:"text-sm font-semibold text-dash-text group-hover:text-dash-accent transition-colors",children:o.name}),c.jsx("p",{className:"mt-0.5 text-[10px] font-bold uppercase tracking-widest text-dash-text-muted",children:i(w_[o.status])})]})]}),c.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[c.jsx("button",{type:"button",onClick:()=>r(o.file),className:"flex h-8 items-center rounded-full border border-white/10 bg-dash-surface px-4 text-[11px] font-bold uppercase tracking-widest text-dash-text transition-all duration-300 hover:bg-dash-accent hover:text-white active:scale-95",children:i("plansRead")}),c.jsx("div",{className:"p-0.5 bg-dash-border/20 rounded-full border border-white/5",children:c.jsx(y_,{planDir:t,phaseId:o.phaseId,status:o.status,actions:n,onSuccess:s})})]})]})},o.phaseId))})]})})}function S_({planDir:t,actions:e,onSuccess:n}){const{t:r}=te(),s=async i=>{await e.trigger({action:i,planDir:t}),n()};return c.jsxs("div",{className:"flex flex-wrap gap-2",children:[c.jsx("button",{type:"button",onClick:()=>void s("validate"),disabled:e.loading,className:"rounded-lg border border-dash-border px-3 py-2 text-sm text-dash-text disabled:cursor-not-allowed disabled:opacity-50",children:r("plansValidate")}),c.jsx("button",{type:"button",onClick:()=>void s("start-next"),disabled:e.loading,className:"rounded-lg bg-dash-accent px-3 py-2 text-sm font-medium text-dash-bg disabled:cursor-not-allowed disabled:opacity-50",children:r("plansStartNext")})]})}const C_={pending:"plansStatusPending","in-progress":"plansStatusInProgress","in-review":"plansStatusInReview",done:"plansStatusDone",cancelled:"plansStatusCancelled"};function j_({plan:t,planDir:e,actions:n,onActionSuccess:r}){const{t:s}=te(),i=t.status??"pending";return c.jsx("div",{className:"rounded-[2rem] bg-dash-border/20 p-1 transition-all duration-700 ease-[cubic-bezier(0.32,0.72,0,1)]",style:{animation:"fade-in-up 0.8s cubic-bezier(0.32,0.72,0,1) both"},children:c.jsxs("section",{className:"rounded-[calc(2rem-0.25rem)] border border-white/5 bg-dash-surface p-6 shadow-2xl",children:[c.jsxs("div",{className:"flex flex-col gap-6 lg:flex-row lg:items-start lg:justify-between",children:[c.jsxs("div",{className:"flex-1",children:[c.jsxs("div",{className:"mb-2 flex items-center gap-3",children:[c.jsx("span",{className:"rounded-full bg-dash-accent/10 border border-dash-accent/20 px-3 py-0.5 text-[10px] font-bold uppercase tracking-widest text-dash-accent",children:s(C_[i])}),c.jsx("span",{className:"text-[10px] font-medium uppercase tracking-[0.2em] text-dash-text-muted",children:s("plansLabel")})]}),c.jsx("h1",{className:"text-3xl font-bold tracking-tight text-dash-text lg:text-4xl text-balance",children:t.title}),t.description&&c.jsx("p",{className:"mt-4 max-w-3xl text-sm leading-relaxed text-dash-text-muted",children:t.description})]}),c.jsx("div",{className:"shrink-0 p-1 bg-dash-border/10 rounded-2xl border border-white/5",children:c.jsx(S_,{planDir:e,actions:n,onSuccess:r})})]}),c.jsxs("div",{className:"mt-8",children:[c.jsxs("div",{className:"flex items-center justify-between mb-2",children:[c.jsx("span",{className:"text-xs font-bold uppercase tracking-widest text-dash-text-muted",children:s("kanbanProgress")}),c.jsxs("span",{className:"text-sm font-bold text-dash-accent",children:[t.progressPct,"%"]})]}),c.jsx("div",{className:"h-2 w-full overflow-hidden rounded-full bg-dash-bg shadow-inner",children:c.jsx("div",{className:"h-full rounded-full bg-gradient-to-r from-dash-accent/40 via-dash-accent to-dash-accent shadow-[0_0_12px_theme(colors.dash-accent/0.3)] transition-all duration-1000 ease-[cubic-bezier(0.32,0.72,0,1)]",style:{width:`${t.progressPct}%`}})})]}),c.jsxs("div",{className:"mt-8 flex flex-wrap gap-6 border-t border-white/5 pt-6",children:[c.jsxs("div",{className:"flex flex-col gap-1",children:[c.jsx("span",{className:"text-[10px] uppercase tracking-widest text-dash-text-muted",children:s("plansPhase")}),c.jsx("span",{className:"text-sm font-semibold text-dash-text",children:s("plansPhaseCount").replace("{count}",String(t.totalPhases))})]}),c.jsxs("div",{className:"flex flex-col gap-1",children:[c.jsx("span",{className:"text-[10px] uppercase tracking-widest text-dash-text-muted",children:s("plansPriority")}),c.jsx("span",{className:"text-sm font-semibold text-dash-text",children:t.priority??"—"})]}),c.jsxs("div",{className:"flex flex-col gap-1",children:[c.jsx("span",{className:"text-[10px] uppercase tracking-widest text-dash-text-muted",children:s("plansLastUpdated")}),c.jsx("span",{className:"text-sm font-semibold text-dash-text",children:t.lastModified?new Date(t.lastModified).toLocaleDateString():"—"})]})]})]})})}function N_(t){return new Date(t).toLocaleDateString(void 0,{month:"short",day:"numeric"})}const ty={pending:"from-amber-500/40 to-amber-500/20 border-amber-500/30 text-amber-100","in-progress":"from-sky-500/40 to-sky-500/20 border-sky-500/30 text-sky-100",completed:"from-emerald-500/40 to-emerald-500/20 border-emerald-500/30 text-emerald-100"},P_={pending:"kanbanStatus_pending","in-progress":"kanbanStatus_in-progress",completed:"kanbanStatus_completed"};function D_({timeline:t,onOpenPhase:e}){const{t:n}=te(),r=Array.from({length:7},(s,i)=>{const o=new Date(t.rangeEnd).getTime()-new Date(t.rangeStart).getTime(),a=new Date(new Date(t.rangeStart).getTime()+o/6*i);return N_(a.toISOString())});return c.jsx("div",{className:"group rounded-[2rem] bg-dash-border/20 p-1 transition-all duration-700 ease-[cubic-bezier(0.32,0.72,0,1)] hover:bg-dash-accent/5",style:{animation:"fade-in-up 0.8s cubic-bezier(0.32,0.72,0,1) 0.2s both"},children:c.jsxs("section",{className:"rounded-[calc(2rem-0.25rem)] border border-white/5 bg-dash-surface p-6 shadow-2xl",children:[c.jsxs("div",{className:"mb-6 flex items-end justify-between px-2",children:[c.jsxs("div",{children:[c.jsx("h2",{className:"text-xl font-bold tracking-tight text-dash-text",children:n("plansTimeline")}),c.jsx("p",{className:"text-xs uppercase tracking-widest text-dash-text-muted mt-1",children:n("plansTimelineAvgDays").replace("{count}",t.summary.avgDurationDays.toFixed(1))})]}),c.jsx("div",{className:"flex gap-4",children:Object.entries(ty).map(([s,i])=>c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx("div",{className:`h-1.5 w-6 rounded-full bg-gradient-to-r ${i.split(" ").slice(0,2).join(" ")}`}),c.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wider text-dash-text-muted",children:n(P_[s])})]},s))})]}),c.jsxs("div",{className:"relative mt-8",children:[c.jsx("div",{className:"grid grid-cols-7 gap-2 px-1 text-[10px] font-bold uppercase tracking-widest text-dash-text-muted/60",children:r.map(s=>c.jsx("span",{children:s},s))}),c.jsxs("div",{className:"relative mt-4 min-h-[160px] overflow-hidden rounded-2xl border border-white/5 bg-dash-bg/30 p-4 transition-all duration-500 group-hover:bg-dash-bg/50",style:{height:`${Math.max(160,t.layerCount*40+64)}px`},children:[c.jsx("div",{className:"absolute inset-0 grid grid-cols-7 pointer-events-none",children:Array.from({length:7}).map((s,i)=>c.jsx("div",{className:"h-full border-r border-white-[0.02] last:border-0"},i))}),c.jsx("div",{className:"absolute bottom-0 top-0 z-10 w-px bg-dash-accent/40",style:{left:`${t.todayPct}%`},children:c.jsx("div",{className:"absolute -top-1 -left-1 h-2.5 w-2.5 rounded-full bg-dash-accent shadow-[0_0_8px_theme(colors.dash-accent)]"})}),t.phases.map(s=>c.jsx("button",{type:"button",onClick:()=>e(s.file),title:`${s.name} • ${s.effort??n("plansNoEffort")}`,className:`absolute flex h-7 items-center rounded-lg border px-3 text-[11px] font-semibold text-white backdrop-blur-md shadow-sm transition-all duration-300 hover:scale-[1.02] hover:shadow-lg hover:brightness-110 active:scale-[0.98] bg-gradient-to-r ${ty[s.status]}`,style:{top:`${s.layer*38+20}px`,left:`${s.leftPct}%`,width:`${s.widthPct}%`},children:c.jsxs("span",{className:"truncate drop-shadow-sm",children:[s.phaseId," · ",s.name]})},s.phaseId))]})]})]})})}function op(t,e){const n=e.replace(/\\/g,"/").replace(/\/$/,""),r=t.replace(/\\/g,"/");return r.startsWith(`${n}/`)?r.slice(n.length+1):r.split("/").slice(-1)[0]??r}function ap(t){return t.split("/").filter(Boolean).map(e=>encodeURIComponent(e)).join("/")}function E_(t){const[e,n]=g.useState(null),[r,s]=g.useState(!1),[i,o]=g.useState(null);return{pendingId:e,loading:r,error:i,trigger:async a=>{s(!0),o(null);try{const l=await fetch("/api/plan/action",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...a,...t?{projectId:t}:{}})});if(!l.ok)throw new Error(`Failed to run action (${l.status})`);const d=await l.json();if(n(d.id),d.status==="failed")throw new Error(d.error??"Action failed");return d}catch(l){const d=l instanceof Error?l.message:"Action failed";throw o(d),l}finally{n(null),s(!1)}}}}const O_={pending:"plansStatusPending","in-progress":"plansStatusInProgress","in-review":"plansStatusInReview",done:"plansStatusDone",cancelled:"plansStatusCancelled"};function M_(){const{t}=te(),e=Lt(),{planSlug:n=""}=pl(),[r]=gl(),s=r.get("dir")??"plans",i=r.get("projectId"),o=r.get("origin"),a=E_(i),[l,d]=g.useState(null),[u,h]=g.useState(!0),[f,p]=g.useState(null),m=`${s}/${n}`,x=g.useCallback(async()=>{h(!0),p(null);try{const b=new URLSearchParams({dir:m});i&&b.set("projectId",i);const y=await fetch(`/api/plan/timeline?${b.toString()}`);if(!y.ok)throw new Error(t("plansLoadPlanFailed").replace("{status}",String(y.status)));d(await y.json())}catch(b){p(b instanceof Error?b.message:t("plansLoadPlanFallback"))}finally{h(!1)}},[m,i,t]);return g.useEffect(()=>{x()},[x]),u?c.jsx("div",{className:"flex h-full items-center justify-center",children:c.jsxs("div",{className:"flex flex-col items-center gap-4 animate-pulse",children:[c.jsx("div",{className:"h-12 w-12 rounded-full border-2 border-dash-accent border-t-transparent animate-spin"}),c.jsx("p",{className:"text-[10px] font-bold uppercase tracking-[0.3em] text-dash-accent/60",children:t("plansLoadingPlan")})]})}):f||!l?c.jsx("div",{className:"flex h-full flex-col items-center justify-center gap-4 p-8 text-center",children:c.jsxs("div",{className:"rounded-2xl border border-red-500/20 bg-red-500/5 p-6 backdrop-blur-md",children:[c.jsx("h2",{className:"text-sm font-bold uppercase tracking-widest text-red-400",children:t("error")}),c.jsx("p",{className:"mt-2 text-sm text-red-300/80",children:f??t("plansNotFound")}),c.jsx("button",{type:"button",onClick:()=>void x(),className:"mt-6 rounded-full bg-red-500 px-6 py-2 text-xs font-bold uppercase tracking-widest text-white transition-all hover:scale-105 active:scale-95",children:t("refresh")})]})}):c.jsxs("div",{className:"flex h-full flex-col overflow-hidden bg-dash-bg",children:[c.jsxs("div",{className:"flex items-center gap-4 border-b border-white/5 bg-dash-surface/30 px-6 py-3 backdrop-blur-xl",children:[c.jsxs("button",{type:"button",onClick:()=>e(o==="global"?"/plans":`/plans?dir=${encodeURIComponent(s)}${i?`&projectId=${encodeURIComponent(i)}`:""}`),className:"group flex items-center gap-2 rounded-full border border-white/5 bg-dash-surface px-4 py-1.5 text-[10px] font-bold uppercase tracking-widest text-dash-text transition-all hover:bg-dash-accent hover:text-white",children:[c.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",className:"h-3 w-3 transition-transform group-hover:-translate-x-1",children:c.jsx("polyline",{points:"15 18 9 12 15 6"})}),t("plansBackToPlans")]}),c.jsx("div",{className:"h-4 w-px bg-dash-border/50"}),c.jsx("span",{className:"text-[10px] font-bold uppercase tracking-[0.2em] text-dash-text-muted",children:l.plan.title??n.toUpperCase()})]}),c.jsx("div",{className:"flex-1 overflow-y-auto overflow-x-hidden scrollbar-hide",children:c.jsxs("div",{className:"mx-auto max-w-[1600px] p-6 lg:p-10",children:[a.error&&c.jsxs("div",{className:"mb-6 rounded-[1.5rem] border border-red-500/20 bg-red-500/10 px-5 py-4 text-sm text-red-200 backdrop-blur-md",children:[c.jsx("p",{className:"text-[10px] font-bold uppercase tracking-[0.2em] text-red-300",children:t("actionFailed")}),c.jsx("p",{className:"mt-2 leading-relaxed",children:a.error})]}),c.jsxs("div",{className:"grid gap-10 lg:grid-cols-12 lg:items-start",children:[c.jsxs("div",{className:"space-y-10 lg:col-span-8",children:[c.jsx(j_,{plan:l.plan,planDir:m,actions:a,onActionSuccess:()=>void x()}),c.jsx(D_,{timeline:l.timeline,onOpenPhase:b=>e(`/plans/${encodeURIComponent(n)}/read/${ap(op(b,m))}?dir=${encodeURIComponent(s)}${i?`&projectId=${encodeURIComponent(i)}`:""}${o?`&origin=${encodeURIComponent(o)}`:""}`)}),c.jsx(k_,{planDir:m,phases:l.plan.phases,actions:a,onRead:b=>e(`/plans/${encodeURIComponent(n)}/read/${ap(op(b,m))}?dir=${encodeURIComponent(s)}${i?`&projectId=${encodeURIComponent(i)}`:""}${o?`&origin=${encodeURIComponent(o)}`:""}`),onRefresh:()=>void x()})]}),c.jsxs("div",{className:"space-y-10 lg:col-span-4 lg:sticky lg:top-0",children:[c.jsx("div",{className:"rounded-[2.5rem] bg-dash-accent/5 p-1 backdrop-blur-3xl",style:{animation:"fade-in 1s cubic-bezier(0.32,0.72,0,1) 0.6s both"},children:c.jsx(b_,{planDir:m,projectId:i})}),c.jsxs("div",{className:"rounded-[2rem] border border-white/5 bg-dash-surface/50 p-6 backdrop-blur-md",style:{animation:"fade-in 1s cubic-bezier(0.32,0.72,0,1) 0.8s both"},children:[c.jsx("h3",{className:"text-[10px] font-bold uppercase tracking-[0.2em] text-dash-accent",children:t("plansQuickInfoTitle")}),c.jsxs("div",{className:"mt-4 space-y-4",children:[c.jsx("p",{className:"text-xs leading-relaxed text-dash-text-muted",children:t("plansQuickInfoDescription")}),c.jsxs("div",{className:"flex items-center gap-3 rounded-2xl bg-dash-bg/50 p-4 border border-white/5",children:[c.jsx("div",{className:"h-10 w-10 flex items-center justify-center rounded-full bg-dash-accent/10 border border-dash-accent/20",children:c.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",className:"h-5 w-5 text-dash-accent",strokeWidth:"2.5",children:c.jsx("path",{d:"M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"})})}),c.jsxs("div",{children:[c.jsx("p",{className:"text-[9px] uppercase tracking-widest text-dash-text-muted",children:t("plansCurrentStatus")}),c.jsx("p",{className:"text-sm font-bold text-dash-text",children:l.plan.status?t(O_[l.plan.status]):t("plansStatusUnknown")})]})]})]})]})]})]})]})})]})}function A_(){return c.jsx(M_,{})}function ny({label:t,item:e,onClick:n}){return c.jsx("button",{type:"button",onClick:n,disabled:!e,className:"rounded-lg border border-dash-border px-3 py-2 text-sm text-dash-text transition hover:border-dash-accent/50 disabled:cursor-not-allowed disabled:opacity-40",title:e?.name,children:t})}function T_(t){const{t:e}=te();return c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(ny,{label:e("plansPrevious"),item:t.prev,onClick:()=>t.prev&&t.onNavigate(t.prev.file)}),c.jsx(ny,{label:e("plansNext"),item:t.next,onClick:()=>t.next&&t.onNavigate(t.next.file)})]})}function R_(t){const{t:e}=te();return c.jsxs("header",{className:"flex flex-col gap-4 rounded-xl border border-dash-border bg-dash-surface p-4 lg:flex-row lg:items-center lg:justify-between",children:[c.jsxs("div",{children:[c.jsx("button",{type:"button",onClick:t.onBack,className:"text-sm text-dash-accent",children:e("plansBackToPlan")}),c.jsx("p",{className:"mt-2 text-xs uppercase tracking-[0.2em] text-dash-text-muted",children:e("plansNav")}),c.jsxs("h1",{className:"text-lg font-semibold text-dash-text",children:[t.planTitle,t.phaseTitle?` / ${t.phaseTitle}`:""]})]}),c.jsx(T_,{prev:t.prev,next:t.next,onNavigate:t.onNavigate})]})}function L_({content:t}){const{t:e}=te(),n=K4(t).filter(r=>r.level<=3);return n.length===0?null:c.jsxs("aside",{className:"rounded-xl border border-dash-border bg-dash-surface p-4",children:[c.jsx("h2",{className:"mb-3 text-sm font-semibold text-dash-text",children:e("plansContents")}),c.jsx("nav",{className:"space-y-2",children:n.map(r=>c.jsx("a",{href:`#${r.id}`,className:"block text-sm text-dash-text-muted transition hover:text-dash-accent",style:{paddingLeft:`${(r.level-1)*12}px`},children:r.text},r.id))})]})}function I_(t,e){return`${t}/${e}/plan.md`}function $_(t,e,n,r){const s=`${t}/${e}`,[i,o]=g.useState({planTitle:e,phases:[],currentIndex:-1,prev:null,next:null,loading:!0,error:null}),a=g.useCallback(async()=>{o(l=>({...l,loading:!0,error:null}));try{const l=new URLSearchParams({file:I_(t,e)});r&&l.set("projectId",r);const d=await fetch(`/api/plan/parse?${l.toString()}`);if(!d.ok)throw new Error(`Failed to load navigation (${d.status})`);const u=await d.json();o({planTitle:typeof u.frontmatter.title=="string"?u.frontmatter.title:e,phases:u.phases.map(h=>({phaseId:h.phaseId,name:h.name,file:op(h.file,s)})),currentIndex:-1,prev:null,next:null,loading:!1,error:null})}catch(l){o(d=>({...d,loading:!1,error:l instanceof Error?l.message:"Failed to load navigation"}))}},[s,e,r,t]);return g.useEffect(()=>{a()},[a]),g.useMemo(()=>{const l=n?i.phases.findIndex(d=>d.file===n):-1;return{...i,currentIndex:l,prev:l>0?i.phases[l-1]:null,next:l>=0?i.phases[l+1]??null:i.phases.length>0?i.phases[0]:null}},[n,i])}function B_(){const{t}=te(),e=Lt(),{planSlug:n="*","*":r}=pl(),[s]=gl(),i=s.get("dir")??"plans",o=s.get("projectId"),a=s.get("origin"),l=$_(i,n,r,o),[d,u]=g.useState(null),[h,f]=g.useState(null),p=(l.currentIndex>=0?l.phases[l.currentIndex]?.name??null:null)??(typeof d?.frontmatter.title=="string"?d.frontmatter.title:null),m=g.useCallback(async()=>{f(null);try{const b=`${i}/${n}`,y=r?`${b}/${r}`:`${b}/plan.md`,w=new URLSearchParams({file:y,dir:b});o&&w.set("projectId",o);const v=await fetch(`/api/plan/file?${w.toString()}`);if(!v.ok)throw new Error(t("plansLoadFileFailed").replace("{status}",String(v.status)));u(await v.json())}catch(b){f(b instanceof Error?b.message:t("plansLoadFileFallback"))}},[r,n,o,i,t]);g.useEffect(()=>{m()},[m]);const x=b=>e(`/plans/${encodeURIComponent(n)}/read/${ap(b)}?dir=${encodeURIComponent(i)}${o?`&projectId=${encodeURIComponent(o)}`:""}${a?`&origin=${encodeURIComponent(a)}`:""}`);return c.jsxs("div",{className:"flex h-full flex-col gap-4 overflow-auto",children:[c.jsx(R_,{planTitle:l.planTitle,phaseTitle:p,prev:l.prev,next:l.next,onBack:()=>e(`/plans/${encodeURIComponent(n)}?dir=${encodeURIComponent(i)}${o?`&projectId=${encodeURIComponent(o)}`:""}${a?`&origin=${encodeURIComponent(a)}`:""}`),onNavigate:x}),h&&c.jsx("p",{className:"text-sm text-red-300",children:h}),d&&c.jsxs("div",{className:"grid gap-4 xl:grid-cols-[280px_minmax(0,1fr)]",children:[c.jsx(L_,{content:d.content}),c.jsx("div",{className:"rounded-xl border border-dash-border bg-dash-surface p-5",children:c.jsx(qs,{content:d.raw})})]}),!d&&!h&&c.jsx("p",{className:"text-sm text-dash-text-muted",children:t("plansLoadingReader")})]})}function ry(){return c.jsx(B_,{})}const __={pending:"bg-amber-500/10 text-amber-400/90 border border-amber-500/20","in-progress":"bg-sky-500/10 text-sky-400/90 border border-sky-500/20","in-review":"bg-violet-500/10 text-violet-400/90 border border-violet-500/20",done:"bg-emerald-500/10 text-emerald-400/90 border border-emerald-500/20",cancelled:"bg-rose-500/10 text-rose-400/90 border border-rose-500/20"},F_={pending:"plansStatusPending","in-progress":"plansStatusInProgress","in-review":"plansStatusInReview",done:"plansStatusDone",cancelled:"plansStatusCancelled"};function z_(t){return t?new Date(t).toLocaleDateString(void 0,{month:"short",day:"numeric"}):"—"}function Ad({plan:t,onClick:e,compact:n=!1}){const{t:r}=te(),s=t.summary,i=s.status??"pending",o=s.tags??[];return c.jsx("button",{type:"button",onClick:e,className:"group relative w-full rounded-[2rem] bg-dash-border/20 p-1 transition-all duration-500 ease-[cubic-bezier(0.32,0.72,0,1)] hover:bg-dash-accent/10 active:scale-[0.98]",children:c.jsxs("div",{className:"flex h-full flex-col rounded-[calc(2rem-0.25rem)] border border-white/5 bg-dash-surface p-5 shadow-[inset_0_1px_1px_rgba(255,255,255,0.05)] transition-colors duration-500 group-hover:bg-dash-surface-hover",children:[c.jsxs("div",{className:"mb-4 flex items-start justify-between gap-3",children:[c.jsxs("div",{className:"flex-1",children:[c.jsxs("div",{className:"mb-1 flex items-center gap-2",children:[c.jsx("span",{className:"text-[10px] font-bold uppercase tracking-[0.2em] text-dash-accent/80",children:t.slug.split("-")[0]}),c.jsx("span",{className:"h-1 w-1 rounded-full bg-dash-border"}),c.jsx("span",{className:"text-[10px] font-medium uppercase tracking-[0.1em] text-dash-text-muted",children:r("plansPhaseCountCompact").replace("{count}",String(s.totalPhases))})]}),t.projectName&&c.jsx("div",{className:"mb-2",children:c.jsx("span",{className:"inline-flex rounded-full border border-dash-accent/20 bg-dash-accent/10 px-2 py-0.5 text-[10px] font-medium text-dash-accent",children:t.projectName})}),c.jsx("h3",{className:"text-base font-semibold tracking-tight text-dash-text group-hover:text-dash-accent transition-colors",children:s.title??t.name}),s.description&&!n&&c.jsx("p",{className:"mt-2 text-xs leading-relaxed text-dash-text-muted line-clamp-2",children:s.description})]}),c.jsxs("div",{className:"flex flex-col items-end gap-2",children:[c.jsx("span",{className:`rounded-full px-2.5 py-0.5 text-[10px] font-bold uppercase tracking-wider ${__[i]}`,children:r(F_[i])}),c.jsx("div",{className:"flex h-8 w-8 items-center justify-center rounded-full bg-dash-bg/50 border border-white/5 text-dash-text-muted transition-all duration-500 group-hover:translate-x-1 group-hover:-translate-y-1 group-hover:bg-dash-accent group-hover:text-white",children:c.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",className:"h-4 w-4",children:[c.jsx("line",{x1:"7",y1:"17",x2:"17",y2:"7"}),c.jsx("polyline",{points:"7 7 17 7 17 17"})]})})]})]}),c.jsxs("div",{className:"mt-auto space-y-4",children:[c.jsxs("div",{className:"group/progress relative",children:[c.jsxs("div",{className:"flex items-center justify-between mb-1.5",children:[c.jsx("span",{className:"text-[10px] font-medium text-dash-text-muted uppercase tracking-wider",children:r("kanbanProgress")}),c.jsxs("span",{className:"text-[10px] font-bold text-dash-text",children:[s.progressPct,"%"]})]}),c.jsx("div",{className:"h-1.5 w-full overflow-hidden rounded-full bg-dash-bg shadow-[inset_0_1px_2px_rgba(0,0,0,0.2)]",children:c.jsx("div",{className:"h-full rounded-full bg-gradient-to-r from-dash-accent/80 to-dash-accent transition-all duration-1000 ease-[cubic-bezier(0.32,0.72,0,1)]",style:{width:`${s.progressPct}%`}})})]}),c.jsxs("div",{className:"flex items-center justify-between border-t border-white/5 pt-4",children:[c.jsxs("div",{className:"flex gap-4",children:[c.jsxs("div",{className:"flex flex-col",children:[c.jsx("span",{className:"text-[9px] uppercase tracking-widest text-dash-text-muted",children:r("plansPriority")}),c.jsx("span",{className:"text-xs font-semibold text-dash-text",children:s.priority??"—"})]}),c.jsxs("div",{className:"flex flex-col",children:[c.jsx("span",{className:"text-[9px] uppercase tracking-widest text-dash-text-muted",children:r("plansUpdated")}),c.jsx("span",{className:"text-xs font-semibold text-dash-text",children:z_(s.lastModified)})]})]}),!n&&o.length>0&&c.jsx("div",{className:"flex -space-x-2",children:o.slice(0,3).map((a,l)=>c.jsx("div",{className:"flex h-5 items-center rounded-full border border-dash-border bg-dash-surface px-2 text-[9px] font-medium text-dash-text-muted ring-2 ring-dash-surface",style:{zIndex:10-l},children:a},a))})]})]})]})})}const H_=[{status:"pending",color:"bg-amber-400/80",labelKey:"plansStatusPending"},{status:"in-progress",color:"bg-sky-400/80",labelKey:"plansStatusInProgress"},{status:"in-review",color:"bg-violet-400/80",labelKey:"plansStatusInReview"},{status:"done",color:"bg-emerald-400/80",labelKey:"plansStatusDone"},{status:"cancelled",color:"bg-rose-400/80",labelKey:"plansStatusCancelled"}];function V_({plans:t,onSelect:e}){const{t:n}=te();return c.jsx("div",{className:"grid h-full w-full gap-6 lg:grid-cols-3 xl:grid-cols-5",children:H_.map((r,s)=>{const i=t.filter(o=>(o.summary.status??"pending")===r.status);return c.jsx("div",{className:"group/col flex flex-col rounded-[2.5rem] bg-dash-border/10 p-2 transition-all duration-700 ease-[cubic-bezier(0.32,0.72,0,1)] hover:bg-dash-border/20",style:{animation:`fade-in-up 0.8s cubic-bezier(0.32,0.72,0,1) ${s*.1}s both`},children:c.jsxs("section",{className:"flex flex-1 flex-col rounded-[calc(2.5rem-0.5rem)] border border-white/5 bg-dash-bg/40 p-3 shadow-2xl backdrop-blur-sm",children:[c.jsxs("header",{className:"mb-6 flex items-center justify-between px-2 pt-2",children:[c.jsxs("div",{className:"flex items-center gap-3",children:[c.jsx("div",{className:`h-2.5 w-2.5 rounded-full ${r.color} shadow-[0_0_12px_rgba(255,255,255,0.1)]`}),c.jsx("h2",{className:"text-xs font-bold uppercase tracking-[0.15em] text-dash-text",children:n(r.labelKey)})]}),c.jsx("div",{className:"flex h-6 min-w-[1.5rem] items-center justify-center rounded-full bg-dash-border px-2 text-[10px] font-bold text-dash-text-muted transition-colors group-hover/col:bg-dash-accent group-hover/col:text-white",children:i.length})]}),c.jsx("div",{className:"space-y-4 overflow-y-auto px-1 pb-4 scrollbar-hide",children:i.length>0?i.map(o=>c.jsx(Ad,{plan:o,compact:!0,onClick:()=>e(o)},`${o.projectId??"plan"}:${o.slug}`)):c.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center opacity-20",children:[c.jsx("div",{className:"mb-2 h-1 w-8 rounded-full bg-dash-border"}),c.jsx("p",{className:"text-[10px] font-medium uppercase tracking-widest text-dash-text-muted",children:n("plansKanbanEmpty")})]})})]})},r.status)})})}function W_(t){const{t:e}=te(),n=!!t.projectOptions?.length&&!!t.onProjectFilterChange;return c.jsxs("div",{className:["grid gap-3 rounded-xl border border-dash-border bg-dash-surface p-4",n?"lg:grid-cols-[minmax(0,1fr)_auto_auto_auto_auto]":"lg:grid-cols-[minmax(0,1fr)_auto_auto_auto]"].join(" "),children:[c.jsx("input",{type:"search",value:t.searchQuery,onChange:r=>t.onSearchQueryChange(r.target.value),placeholder:e("plansSearch"),"aria-label":e("plansSearch"),className:"rounded-lg border border-dash-border bg-dash-bg px-3 py-2 text-sm text-dash-text outline-none transition focus:border-dash-accent/60"}),n&&c.jsxs("select",{value:t.projectFilter??"all",onChange:r=>t.onProjectFilterChange?.(r.target.value),"aria-label":e("plansProjectFilter"),className:"rounded-lg border border-dash-border bg-dash-bg px-3 py-2 text-sm text-dash-text",children:[c.jsx("option",{value:"all",children:e("plansAllProjects")}),t.projectOptions?.map(r=>c.jsx("option",{value:r.id,children:r.name},r.id))]}),c.jsxs("select",{value:t.statusFilter,onChange:r=>t.onStatusFilterChange(r.target.value),"aria-label":e("plansFilterAll"),className:"rounded-lg border border-dash-border bg-dash-bg px-3 py-2 text-sm text-dash-text",children:[c.jsx("option",{value:"all",children:e("plansFilterAll")}),c.jsx("option",{value:"pending",children:e("plansStatusPending")}),c.jsx("option",{value:"in-progress",children:e("plansStatusInProgress")}),c.jsx("option",{value:"in-review",children:e("plansStatusInReview")}),c.jsx("option",{value:"done",children:e("plansStatusDone")}),c.jsx("option",{value:"cancelled",children:e("plansStatusCancelled")})]}),c.jsxs("select",{value:t.sortBy,onChange:r=>t.onSortByChange(r.target.value),"aria-label":e("plansSortBy"),className:"rounded-lg border border-dash-border bg-dash-bg px-3 py-2 text-sm text-dash-text",children:[c.jsx("option",{value:"date-desc",children:e("plansSortDateDesc")}),c.jsx("option",{value:"date-asc",children:e("plansSortDateAsc")}),c.jsx("option",{value:"name-asc",children:e("plansSortNameAsc")}),c.jsx("option",{value:"name-desc",children:e("plansSortNameDesc")}),c.jsx("option",{value:"progress-desc",children:e("plansSortProgress")})]}),c.jsx("div",{className:"inline-flex rounded-lg border border-dash-border bg-dash-bg p-1",children:["grid","kanban"].map(r=>c.jsx("button",{type:"button",onClick:()=>t.onViewModeChange(r),className:["rounded-md px-3 py-1.5 text-sm transition",t.viewMode===r?"bg-dash-accent text-dash-bg":"text-dash-text-muted hover:text-dash-text"].join(" "),children:e(r==="grid"?"plansViewGrid":"plansViewKanban")},r))})]})}function K_(t){const{t:e}=te(),n=t.activePlans.length+t.completedPlans.length;return c.jsxs("section",{className:"space-y-4 rounded-[2rem] border border-dash-border bg-dash-surface/70 p-5",children:[c.jsxs("div",{className:"flex items-center justify-between gap-3",children:[c.jsxs("div",{children:[c.jsx("h2",{className:"text-lg font-semibold text-dash-text",children:t.projectName}),c.jsx("p",{className:"text-xs text-dash-text-muted",children:e("plansProjectPlans").replace("{count}",String(n))})]}),c.jsx("div",{className:"rounded-full border border-dash-border bg-dash-bg px-3 py-1 text-xs font-semibold text-dash-text-muted",children:n})]}),c.jsx("div",{className:"grid gap-4 xl:grid-cols-3",children:t.activePlans.map(r=>c.jsx(Ad,{plan:r,onClick:()=>t.onPlanClick(r)},r.slug))}),t.completedPlans.length>0&&c.jsxs("details",{className:"rounded-[1.5rem] border border-dash-border/80 bg-dash-bg/40 p-4",children:[c.jsx("summary",{className:"cursor-pointer select-none text-sm font-medium text-dash-text-muted",children:e("plansCompletedCount").replace("{count}",String(t.completedPlans.length))}),c.jsx("div",{className:"mt-4 grid gap-4 xl:grid-cols-3",children:t.completedPlans.map(r=>c.jsx("div",{className:"opacity-60",children:c.jsx(Ad,{plan:r,onClick:()=>t.onPlanClick(r)})},r.slug))})]})]})}function U_(t){return t.projects.flatMap(e=>e.plans.map(n=>({...n,projectId:e.id,projectName:e.name,plansDir:e.plansDir})))}function G_(t,e){const[n,r]=g.useState([]),[s,i]=g.useState([]),[o,a]=g.useState([]),[l,d]=g.useState(!0),[u,h]=g.useState(null),f=g.useCallback(async()=>{d(!0),h(null);try{if(!e){const b=await fetch("/api/plan/list-all");if(!b.ok)throw new Error(`Failed to load plans (${b.status})`);const y=await b.json();i(y.projects.map(w=>({id:w.id,name:w.name}))),a(y.projects.flatMap(w=>w.error?[{id:w.id,name:w.name,error:w.error}]:[])),r(U_(y));return}const p=new URLSearchParams({dir:t,limit:"500",offset:"0",projectId:e}),m=await fetch(`/api/plan/list?${p.toString()}`);if(!m.ok)throw new Error(`Failed to load plans (${m.status})`);const x=await m.json();i([]),a([]),r(x.plans??[])}catch(p){h(p instanceof Error?p.message:"Failed to load plans")}finally{d(!1)}},[e,t]);return g.useEffect(()=>{f()},[f]),{plans:n,projectOptions:s,projectErrors:o,loading:l,error:u,reload:f}}function q_(t){return t.summary.status==="done"||t.summary.status==="cancelled"}function Y_(){const t=localStorage.getItem("nk-plans-view");return t==="kanban"||t==="grid"?t:"grid"}function sy(t){const e=t.get("view");return e==="kanban"||e==="grid"?e:Y_()}function X_(){const{t}=te(),e=Lt(),[n,r]=gl(),s=n.get("dir")??"plans",i=n.get("projectId"),o=!i,{plans:a,projectOptions:l,projectErrors:d,loading:u,error:h}=G_(s,i),[f,p]=g.useState(""),[m,x]=g.useState(()=>sy(n)),[b,y]=g.useState("date-desc"),[w,v]=g.useState("all"),[k,C]=g.useState("all");g.useEffect(()=>{x(sy(n))},[n]);const N=g.useMemo(()=>{const O=f.trim().toLowerCase();return[...a].filter(P=>k==="all"?!0:P.projectId===k).filter(P=>w==="all"?!0:(P.summary.status??"pending")===w).filter(P=>O?[P.summary.title,P.summary.description,P.projectName,P.slug,(P.summary.tags??[]).join(" ")].filter(Boolean).join(" ").toLowerCase().includes(O):!0).sort((P,A)=>{switch(b){case"name-asc":return(P.summary.title??P.name).localeCompare(A.summary.title??A.name);case"name-desc":return(A.summary.title??A.name).localeCompare(P.summary.title??P.name);case"date-asc":return(P.summary.lastModified??"").localeCompare(A.summary.lastModified??"");case"progress-desc":return A.summary.progressPct-P.summary.progressPct;default:return(A.summary.lastModified??"").localeCompare(P.summary.lastModified??"")}})},[a,k,f,b,w]),D=g.useMemo(()=>{const O=new Map;for(const P of N){const A=P.projectId??P.projectName??"current-project",I=P.projectName??t("plansTitle"),j=O.get(A)??{key:A,projectName:I,activePlans:[],completedPlans:[]};q_(P)?j.completedPlans.push(P):j.activePlans.push(P),O.set(A,j)}return Array.from(O.values())},[N,t]),S=O=>{const P=O.plansDir??s,A=O.projectId??i;e(`/plans/${encodeURIComponent(O.slug)}?dir=${encodeURIComponent(P)}${A?`&projectId=${encodeURIComponent(A)}`:""}${o?"&origin=global":""}`)},E=O=>{localStorage.setItem("nk-plans-view",O),x(O);const P=new URLSearchParams(n);O==="grid"?P.delete("view"):P.set("view",O),r(P,{replace:!0})};return c.jsxs("div",{className:"flex h-full flex-col gap-4 overflow-auto",children:[c.jsxs("header",{children:[c.jsx("p",{className:"text-xs uppercase tracking-[0.2em] text-dash-text-muted",children:t("toolsSection")}),c.jsx("h1",{className:"mt-2 text-2xl font-semibold text-dash-text",children:t(o?"plansGlobalTitle":"plansTitle")}),c.jsx("p",{className:"mt-2 text-sm text-dash-text-muted",children:t("plansSubtitle")})]}),c.jsx(W_,{searchQuery:f,viewMode:m,sortBy:b,statusFilter:w,projectFilter:o?k:void 0,projectOptions:o?l:void 0,onSearchQueryChange:p,onViewModeChange:E,onSortByChange:y,onStatusFilterChange:v,onProjectFilterChange:o?C:void 0}),u&&c.jsx("p",{className:"text-sm text-dash-text-muted",children:t("loading")}),h&&c.jsx("p",{className:"rounded-lg border border-red-500/30 bg-red-500/10 p-4 text-sm text-red-300",children:h}),!u&&!h&&d.length>0&&c.jsxs("div",{className:"rounded-xl border border-amber-500/30 bg-amber-500/10 p-4 text-sm text-amber-100",children:[c.jsx("p",{className:"text-[10px] font-bold uppercase tracking-[0.2em] text-amber-200",children:t("plansProjectLoadIssues")}),c.jsx("div",{className:"mt-2 space-y-1",children:d.map(O=>c.jsxs("p",{children:[c.jsx("span",{className:"font-semibold",children:O.name}),": ",O.error]},O.id))})]}),!u&&!h&&N.length===0&&c.jsx("p",{className:"rounded-xl border border-dash-border bg-dash-surface p-8 text-sm text-dash-text-muted",children:t("plansEmpty")}),!u&&!h&&N.length>0&&m==="grid"&&!o&&c.jsx("div",{className:"grid gap-4 xl:grid-cols-3",children:N.map(O=>c.jsx(Ad,{plan:O,onClick:()=>S(O)},O.slug))}),!u&&!h&&N.length>0&&m==="grid"&&o&&c.jsx("div",{className:"space-y-6",children:D.map(O=>c.jsx(K_,{projectName:O.projectName,activePlans:O.activePlans,completedPlans:O.completedPlans,onPlanClick:S},O.key))}),!u&&!h&&N.length>0&&m==="kanban"&&c.jsx(V_,{plans:N,onSelect:S})]})}function Q_(){return c.jsx(X_,{})}const J_=()=>{const{t}=te(),e=Lt(),{projectId:n}=pl(),[r,s]=g.useState(null),{sizes:i,isDragging:o,startDrag:a}=Cm({storageKey:"ninekit-project-config-panels",defaultSizes:[35,40,25],minSizes:[20,25,15]}),l=g.useCallback(async()=>{if(!n)throw new Error("No project ID");const[x,b,y]=await Promise.all([np("project",n),np("global"),l1()]),w=y.find(v=>v.id===n);return w&&s(w.path),{...x,global:b.config??{}}},[n]),d=g.useCallback(async x=>n?(await kk({scope:"project",projectId:n,config:x})).config:void 0,[n]),u=wk({scope:"project",fetchConfig:l,fetchSchema:Sk,saveConfig:d}),h=g.useCallback(x=>{const b=lf(u.config,x),y=lf(u.globalConfig,x);return b!==void 0&&y!==void 0&&b!==y},[u.config,u.globalConfig]),f=g.useMemo(()=>[{id:"paths",title:t("sectionPaths"),fields:[{path:"paths.docs",label:t("fieldDocsPath"),description:t("fieldDocsPathDesc")},{path:"paths.plans",label:t("fieldPlansPath"),description:t("fieldPlansPathDesc")},{path:"paths.globalPlans",label:t("fieldGlobalPlansPath"),description:t("fieldGlobalPlansPathDesc")}]},{id:"project",title:t("sectionProject"),fields:[{path:"project.type",label:t("fieldProjectType"),description:t("fieldProjectTypeDesc")},{path:"project.packageManager",label:t("fieldPackageManager"),description:t("fieldPackageManagerDesc")},{path:"project.framework",label:t("fieldFramework"),description:t("fieldFrameworkDesc")}]},{id:"privacy",title:t("sectionPrivacy"),defaultCollapsed:!0,fields:[{path:"privacyBlock",label:t("fieldPrivacyBlock"),description:t("fieldPrivacyBlockDesc")}]},{id:"advanced",title:t("sectionAdvanced"),defaultCollapsed:!0,fields:[{path:"docs.maxLoc",label:t("fieldDocsMaxLoc"),description:t("fieldDocsMaxLocDesc")},{path:"plan.namingFormat",label:t("fieldPlanNamingFormat"),description:t("fieldPlanNamingFormatDesc")}]}],[t]),p=u.activeFieldPath&&h(u.activeFieldPath)?c.jsx("span",{className:"text-[9px] bg-orange-500/10 text-orange-500 px-1.5 py-0.5 rounded font-bold border border-orange-500/30",children:t("localOverride")}):null,m=u.fieldDoc?c.jsxs("section",{className:"bg-blue-500/5 p-3 rounded-lg border border-blue-500/20",children:[c.jsx("h4",{className:"text-[10px] font-bold text-blue-500 uppercase tracking-widest mb-1",children:t("inheritedFromGlobal")}),c.jsxs("p",{className:"text-[12px] text-dash-text-secondary leading-normal",children:[t("viewGlobalConfig")," ",c.jsx("button",{onClick:()=>e("/config/global"),className:"text-dash-accent hover:underline font-medium",children:t("globalConfig")})]})]}):null;return c.jsxs("div",{className:"animate-in fade-in duration-300 w-full h-full flex flex-col transition-colors",children:[c.jsx(y1,{title:t("projectConfig"),filePath:r?`${r}/.claude/.nk.json`:".claude/.nk.json",onBack:()=>e(`/project/${n}`),onSave:u.handleSave,onReset:u.handleReset,saveStatus:u.saveStatus,syntaxError:u.syntaxError,showResetConfirm:u.showResetConfirm,setShowResetConfirm:u.setShowResetConfirm}),c.jsxs("div",{className:"flex-1 flex min-h-0",children:[c.jsx(S1,{width:i[0],isLoading:u.isLoading,schema:u.schema,config:u.config,sources:u.sources,sections:f,onChange:u.handleFormChange,onFieldFocus:u.setFocusedFieldPath}),c.jsx(Mn,{direction:"horizontal",isDragging:o,onMouseDown:x=>a(0,x)}),c.jsx(Sm,{width:i[1],isLoading:u.isLoading,jsonText:u.jsonText,cursorLine:u.cursorLine,syntaxError:u.syntaxError,onChange:u.handleJsonChange,onEditorFocus:u.handleJsonEditorFocus,onCursorLineChange:u.setCursorLine}),c.jsx(Mn,{direction:"horizontal",isDragging:o,onMouseDown:x=>a(1,x)}),c.jsx(vk,{width:i[2],fieldDoc:u.fieldDoc,activeFieldPath:u.activeFieldPath,overrideBadge:p,extraContent:m})]})]})},wn="__global__",Z_=({project:t})=>{const{t:e}=te(),n=Lt(),{sessions:r,loading:s}=z4(t.id),[i,o]=g.useState(null),[a,l]=g.useState(!0),[d,u]=g.useState(null),[h,f]=g.useState(wn),[p,m]=g.useState(wn),x=async(j,M)=>{try{await D4(j,t.path,M,t.id)}catch(T){alert(`${e("actionFailed")}: ${T instanceof Error?T.message:j}`)}},b=g.useCallback(()=>{const j=new AbortController;return l(!0),u(null),P4(t.id,j.signal).then(M=>{o(M),f(M.preferences.project.terminalApp||wn),m(M.preferences.project.editorApp||wn)}).catch(M=>{M instanceof DOMException&&M.name==="AbortError"||(o(null),f(wn),m(wn),u(M instanceof Error&&M.message?M.message:e("actionOptionsLoadFailed")))}).finally(()=>{j.signal.aborted||l(!1)}),j},[t.id,e]);g.useEffect(()=>{const j=b();return()=>{j.abort()}},[b]);const y=i?.terminals||[],w=i?.editors||[],v=y.find(j=>j.id===i?.defaults.terminalApp)?.label||i?.defaults.terminalApp,k=w.find(j=>j.id===i?.defaults.editorApp)?.label||i?.defaults.editorApp,C=g.useMemo(()=>y.find(j=>h===wn?j.id===i?.defaults.terminalApp:j.id===h),[y,h,i?.defaults.terminalApp]),N=g.useMemo(()=>w.find(j=>p===wn?j.id===i?.defaults.editorApp:j.id===p),[w,p,i?.defaults.editorApp]),D=async(j,M)=>{if(!t.id.startsWith("discovered-"))try{await d1(t.id,{preferences:{[j]:M===wn?null:M}})}catch(T){const L=T instanceof Error?T.message:e("projectPreferenceSaveFailed");alert(`${e("actionFailed")}: ${L}`)}},S=t.activePlans??[],E=t.planSettings?.plansDir||"plans",O=new URLSearchParams({dir:E,projectId:t.id}).toString(),P=j=>{const M=j.split(/[\\/]/).filter(Boolean).pop()??"plan";n(`/plans/${encodeURIComponent(M)}?${O}`)},A=()=>{n(`/plans?${O}&view=kanban`)},I=()=>{n(`/plans?${O}`)};return c.jsxs("div",{className:"animate-in fade-in slide-in-from-bottom-2 duration-500 transition-colors flex flex-col h-full",children:[c.jsx("section",{className:"mb-6 shrink-0",children:c.jsxs("div",{className:"flex flex-col md:flex-row md:items-end justify-between gap-4",children:[c.jsxs("div",{children:[c.jsxs("div",{className:"flex items-center gap-3 mb-1",children:[c.jsx("h1",{className:"text-3xl font-bold tracking-tight text-dash-text",children:t.name}),c.jsx(eF,{status:t.health}),c.jsx(vT,{variant:"beta"})]}),c.jsxs("p",{className:"text-dash-text-secondary mono text-sm flex items-center gap-2 italic",children:[c.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:c.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"})}),t.path]})]}),c.jsx("div",{className:"flex items-center gap-3",children:c.jsx("span",{className:"text-[10px] text-dash-text-muted font-bold uppercase tracking-widest bg-dash-surface border border-dash-border px-2 py-1 rounded",children:r.length>0?`${r.length} ${e("sessions")}`:e("noSessions")})})]})}),c.jsxs("section",{className:"grid grid-cols-2 md:grid-cols-4 gap-3 mb-6 shrink-0",children:[d?c.jsxs("div",{className:"col-span-2 md:col-span-4 rounded-lg border border-orange-500/30 bg-orange-500/5 px-3 py-2 text-xs text-orange-700 dark:text-orange-300 flex items-center justify-between gap-3",children:[c.jsx("span",{children:d}),c.jsx("button",{onClick:()=>void b(),className:"rounded border border-orange-500/40 px-2 py-1 font-semibold hover:bg-orange-500/10 transition-colors",children:e("tryAgain")})]}):null,c.jsx(iy,{icon:"📟",label:e("terminal"),sub:C?`${C.openMode==="open-app"?e("openAppOnly"):e("openAtPath")} • ${C.label}`:e("terminalSub"),onClick:()=>x("terminal",h===wn?void 0:h),disabled:a||!C&&y.length>0,options:y,value:h,fallbackLabel:i?`${e("useGlobalFallback")} (${v})`:e("useGlobalFallback"),onChange:async j=>{f(j),await D("terminalApp",j)}}),c.jsx(iy,{icon:"💻",label:e("editor"),sub:N?`${N.openMode==="open-app"?e("openAppOnly"):e("openAtPath")} • ${N.label}`:e("editorSub"),onClick:()=>x("editor",p===wn?void 0:p),disabled:a||!N&&w.length>0,options:w,value:p,fallbackLabel:i?`${e("useGlobalFallback")} (${k})`:e("useGlobalFallback"),onChange:async j=>{m(j),await D("editorApp",j)}}),c.jsx(lp,{icon:"🤖",label:e("launch"),sub:e("launchSub"),highlight:!0,onClick:()=>x("launch")}),c.jsx(lp,{icon:"⚙️",label:e("config"),sub:e("configSub"),onClick:()=>n(`/config/project/${t.id}`)})]}),c.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6 flex-1 min-h-0",children:[c.jsx("div",{className:"lg:col-span-2 flex flex-col gap-6 min-h-0",children:c.jsxs("div",{className:"bg-dash-surface border border-dash-border rounded-xl overflow-hidden shadow-sm flex-1 flex flex-col min-h-0",children:[c.jsx("div",{className:"px-4 py-3 border-b border-dash-border flex items-center justify-between bg-dash-surface-hover/50 shrink-0",children:c.jsx("h3",{className:"text-sm font-bold text-dash-text-secondary uppercase tracking-widest",children:e("recentSessions")})}),c.jsx("div",{className:"divide-y divide-dash-border overflow-y-auto flex-1",children:s?c.jsx("div",{className:"p-4 text-center text-dash-text-muted animate-pulse",children:e("loadingSessions")}):r.length===0?c.jsx("div",{className:"p-4 text-center text-dash-text-muted",children:e("noSessionsFound")}):r.map(j=>c.jsxs("button",{type:"button",className:"w-full text-left p-4 hover:bg-dash-surface-hover transition-colors group cursor-pointer",onClick:()=>n(`/sessions/${t.id}/${j.id}`),children:[c.jsxs("div",{className:"flex items-center justify-between mb-1",children:[c.jsx("span",{className:"text-xs font-bold text-dash-accent",children:j.timestamp}),c.jsx("span",{className:"text-[10px] text-dash-text-muted font-medium group-hover:text-dash-text-secondary transition-colors",children:j.duration})]}),c.jsx("p",{className:"text-sm text-dash-text-secondary leading-relaxed truncate",children:j.summary})]},j.id))})]})}),c.jsxs("div",{className:"flex flex-col gap-6 min-h-0",children:[c.jsxs("div",{className:"bg-dash-surface border border-dash-border rounded-xl p-6 shadow-sm shrink-0",children:[c.jsxs("h3",{className:"text-sm font-bold text-dash-text-secondary uppercase tracking-widest mb-4 flex items-center gap-2",children:[e("planSettingsTitle"),c.jsx("span",{className:"text-[10px] font-normal text-dash-text-muted normal-case",children:t.planSettings?.scope==="global"?e("planScopeGlobal"):e("planScopeProject")})]}),c.jsxs("div",{className:"space-y-4",children:[c.jsx(bc,{label:e("plansDirectory"),value:t.planSettings?.plansDir??E}),c.jsx(bc,{label:e("validationMode"),value:t.planSettings?.validationMode??"prompt"}),c.jsx(bc,{label:e("planScopeLabel"),value:t.planSettings?.scope==="global"?e("planScopeGlobal"):e("planScopeProject")}),c.jsx(bc,{label:e("activePlansLabel"),value:String(t.planSettings?.activePlanCount??S.length)})]}),c.jsx("button",{onClick:()=>n(`/config/project/${t.id}`),className:"w-full mt-6 py-2 rounded-lg bg-dash-bg text-xs font-bold text-dash-text-secondary hover:bg-dash-surface-hover transition-colors border border-dash-border",children:e("editProjectConfig")})]}),c.jsxs("div",{className:"bg-dash-surface border border-dash-border rounded-xl shadow-sm flex flex-col flex-1 min-h-0",children:[c.jsx("div",{className:"p-4 pb-2 border-b border-dash-border shrink-0",children:c.jsxs("h3",{className:"text-sm font-bold text-dash-text-secondary uppercase tracking-widest flex items-center justify-between",children:[e("activePlansTitle"),c.jsx("span",{className:"text-[10px] bg-dash-accent-subtle text-dash-accent px-1.5 py-0.5 rounded-full",children:S.length})]})}),c.jsx("div",{className:"overflow-y-auto flex-1 px-4 py-2 space-y-2",children:S.length===0?c.jsx("div",{className:"text-center text-dash-text-muted py-4",children:e("noActivePlansFound")}):S.map(j=>c.jsxs("div",{className:"flex flex-col gap-2 border-l-2 border-dash-accent/20 pl-3 py-2",children:[c.jsxs("div",{className:"flex items-start justify-between gap-2",children:[c.jsx("span",{className:"text-sm font-semibold text-dash-text",children:j.title??j.planDir.split(/[\\/]/).filter(Boolean).pop()}),c.jsx(tF,{status:j.status??"pending"})]}),c.jsx("div",{className:"h-1.5 rounded-full bg-dash-border overflow-hidden",children:c.jsx("div",{className:"h-full bg-dash-accent transition-all",style:{width:`${j.progressPct}%`}})}),c.jsxs("p",{className:"text-[10px] text-dash-text-muted leading-tight",children:[e("progressLabel"),": ",j.progressPct,"% • ",j.completed,"/",j.totalPhases]}),j.blockedBy.length>0?c.jsxs("p",{className:"text-[10px] text-dash-text-muted leading-tight",children:[e("blockedByLabel"),": ",j.blockedBy[0]]}):null,c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx("button",{type:"button",onClick:()=>P(j.planDir),className:"text-xs font-bold text-dash-text-muted hover:text-dash-accent transition-colors",children:e("openPlan")}),c.jsx("button",{type:"button",onClick:A,className:"text-xs font-bold text-dash-text-muted hover:text-dash-accent transition-colors",children:e("openKanban")})]})]},j.planFile))}),c.jsxs("div",{className:"p-4 pt-2 border-t border-dash-border shrink-0 flex gap-2",children:[c.jsxs("button",{type:"button",onClick:I,className:"flex-1 text-xs font-bold text-dash-text-muted hover:text-dash-accent transition-colors text-center block",children:[e("plansNav")," →"]}),c.jsxs("button",{type:"button",onClick:A,className:"flex-1 text-xs font-bold text-dash-text-muted hover:text-dash-accent transition-colors text-center block",children:[e("openKanban")," →"]})]})]})]})]})]})},eF=({status:t})=>{const e={[Yr.HEALTHY]:"bg-dash-accent-subtle text-dash-accent border-dash-accent/20",[Yr.WARNING]:"bg-orange-500/10 text-orange-600 border-orange-500/20",[Yr.ERROR]:"bg-red-500/10 text-red-600 border-red-500/20",[Yr.LOADING]:"bg-dash-border/20 text-dash-text-muted border-dash-border",[Yr.UNKNOWN]:"bg-dash-border/20 text-dash-text-muted border-dash-border"};return c.jsx("span",{className:`px-2 py-0.5 rounded-full text-[10px] font-bold border uppercase tracking-widest ${e[t]}`,children:t})},iy=({icon:t,label:e,sub:n,disabled:r,options:s,value:i,fallbackLabel:o,onClick:a,onChange:l})=>{const{t:d}=te();return c.jsxs("div",{className:"flex flex-col gap-2",children:[c.jsx(lp,{icon:t,label:e,sub:n,onClick:a,disabled:r}),c.jsxs("select",{value:i,onChange:u=>void l(u.target.value),className:"w-full rounded-md border border-dash-border bg-dash-surface px-2 py-1 text-xs text-dash-text-secondary",children:[c.jsx("option",{value:wn,children:o}),s.map(u=>c.jsx("option",{value:u.id,disabled:!u.available,children:`${u.label} • ${d(u.detected?"detected":"notDetected")}`},u.id))]})]})},lp=({icon:t,label:e,sub:n,highlight:r,onClick:s,disabled:i})=>c.jsxs("button",{onClick:s,disabled:i,className:`p-4 rounded-xl border flex flex-col gap-1 transition-all group ${r?"bg-dash-accent-subtle border-dash-accent/30 hover:bg-dash-accent-glow hover:border-dash-accent/50 shadow-sm shadow-dash-accent/5":"bg-dash-surface border-dash-border hover:bg-dash-surface-hover hover:border-dash-text-muted shadow-sm"} ${i?"opacity-50 cursor-not-allowed":""}`,children:[c.jsx("span",{className:"text-2xl mb-1 group-hover:scale-110 transition-transform",children:t}),c.jsx("span",{className:"text-sm font-bold text-dash-text",children:e}),c.jsx("span",{className:"text-[10px] text-dash-text-muted font-medium truncate italic",children:n})]}),bc=({label:t,value:e})=>c.jsxs("div",{className:"flex items-center justify-between text-xs py-1.5 border-b border-dash-border/50 last:border-0",children:[c.jsx("span",{className:"text-dash-text-muted font-medium",children:t}),c.jsx("span",{className:"text-dash-text font-bold mono uppercase text-[10px] tracking-tight",children:e})]}),tF=({status:t})=>{const e={pending:"bg-amber-400/10 text-amber-700 border-amber-400/20","in-progress":"bg-sky-400/10 text-sky-700 border-sky-400/20","in-review":"bg-violet-400/10 text-violet-700 border-violet-400/20",done:"bg-emerald-400/10 text-emerald-700 border-emerald-400/20",cancelled:"bg-rose-400/10 text-rose-700 border-rose-400/20"};return c.jsx("span",{className:`rounded-full border px-2 py-0.5 text-[10px] font-bold uppercase tracking-widest ${e[t]??e.pending}`,children:t})},nF=()=>{const{t}=te(),{project:e}=o3(),[n,r]=g.useState(null);if(g.useEffect(()=>{if(!e?.id){r(null);return}r(null);let i=!1;return C4(e.id).then(o=>{i||r(o)}).catch(()=>{i||r(null)}),()=>{i=!0}},[e?.id]),!e)return c.jsxs("div",{className:"flex flex-col items-center justify-center h-full space-y-4 opacity-50",children:[c.jsx("div",{className:"w-16 h-16 rounded-full bg-dash-surface border border-dash-border flex items-center justify-center",children:c.jsx("span",{className:"text-2xl text-dash-text-muted",children:"📂"})}),c.jsx("p",{className:"text-lg text-dash-text-secondary font-bold",children:t("selectProject")})]});const s=n?.id===e.id?n:e;return c.jsx(Z_,{project:s})},rF={Bash:{colorClass:"text-purple-500 dark:text-purple-400",bgClass:"bg-gray-100 dark:bg-[#1a1b26]"},Read:{colorClass:"text-blue-400",bgClass:"bg-blue-500/5"},Write:{colorClass:"text-emerald-400",bgClass:"bg-emerald-500/5"},Edit:{colorClass:"text-amber-400",bgClass:"bg-amber-500/5"},MultiEdit:{colorClass:"text-amber-400",bgClass:"bg-amber-500/5"},Grep:{colorClass:"text-cyan-400",bgClass:"bg-cyan-500/5"},Glob:{colorClass:"text-cyan-400",bgClass:"bg-cyan-500/5"},Agent:{colorClass:"text-violet-400",bgClass:"bg-violet-500/5"},WebSearch:{colorClass:"text-indigo-400",bgClass:"bg-indigo-500/5"},WebFetch:{colorClass:"text-indigo-400",bgClass:"bg-indigo-500/5"},Skill:{colorClass:"text-pink-400",bgClass:"bg-pink-500/5"}},sF={colorClass:"text-dash-text-muted",bgClass:"bg-dash-bg/50"};function iF(t,e){return t.length<=e?t:`${t.slice(0,e)}…`}function oF(t){try{return JSON.stringify(JSON.parse(t),null,2)}catch{return t}}const aF=({toolName:t,toolInput:e,result:n,isError:r=!1,skillName:s})=>{const{t:i}=te(),[o,a]=g.useState(!1),l=rF[t]??sF,d=t==="Bash",u=t==="Skill"&&s,h=n?iF(n.trim(),80):null;return c.jsxs("div",{className:`rounded-lg border overflow-hidden ${u?"border-pink-500/20 bg-pink-500/5":`border-dash-border ${l.bgClass}`}`,children:[c.jsxs("button",{type:"button",onClick:()=>a(f=>!f),className:"flex w-full items-center gap-2 px-3 py-2 text-left hover:bg-white/5 transition-colors","aria-expanded":o,children:[c.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",className:`shrink-0 transition-transform duration-150 ${o?"rotate-90":""}`,children:c.jsx("path",{d:"M6 4l4 4-4 4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}),u?c.jsxs(c.Fragment,{children:[c.jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",className:"shrink-0 text-pink-500 dark:text-pink-400",children:c.jsx("path",{d:"M8.5 1.5L3 9h4.5l-1 5.5L13 7H8.5l1-5.5z",stroke:"currentColor",strokeWidth:"1.2",strokeLinejoin:"round"})}),c.jsx("span",{className:"font-semibold text-sm text-pink-600 dark:text-pink-400",children:"Skill:"}),c.jsx("span",{className:"font-mono text-sm text-pink-600 dark:text-pink-400",children:s})]}):c.jsx("span",{className:`font-mono font-semibold text-sm ${l.colorClass}`,children:t}),!o&&h&&c.jsx("span",{className:"ml-2 truncate text-xs text-dash-text-muted",children:h})]}),o&&c.jsxs("div",{className:"border-t border-dash-border/50 flex flex-col gap-0",children:[e&&c.jsxs("div",{className:"px-3 py-2",children:[c.jsx("div",{className:"mb-1 text-[10px] uppercase tracking-wider text-dash-text-muted",children:i("sessionToolInput")}),c.jsx("pre",{className:"max-h-48 overflow-y-auto whitespace-pre-wrap break-words rounded text-xs text-dash-text",children:oF(e)})]}),n&&c.jsxs("div",{className:`px-3 py-2 ${e?"border-t border-dash-border/30":""}`,children:[c.jsx("div",{className:"mb-1 text-[10px] uppercase tracking-wider text-dash-text-muted",children:i("sessionToolResult")}),c.jsx("pre",{className:`max-h-64 overflow-y-auto whitespace-pre-wrap break-words rounded text-xs ${d?"bg-gray-100 dark:bg-[#1a1b26] px-2 py-1.5 text-gray-800 dark:text-[#9ece6a] font-mono":r?"border border-red-500/30 bg-red-500/5 px-2 py-1.5 text-red-400":"text-dash-text"}`,children:n})]})]})]})};function lF(t){const e=[];for(const r of t.matchAll(/<command-name>\/?(.+?)<\/command-name>/g))e.push(r[1].trim());for(const r of t.matchAll(/^###\s+Skill:\s+(.+?)$/gm))e.push(r[1].trim());for(const r of t.matchAll(/Launching skill:\s+(\S+)/g))e.push(r[1].trim());if(/Base directory for this skill:/i.test(t)){const r=t.match(/^#\s+(.+?)(?:\s*[-—]|$)/m);r&&e.push(r[1].trim())}const n=new Set;return e.filter(r=>{const s=r.toLowerCase();return n.has(s)?!1:(n.add(s),!0)})}function IS(t){return t.replace(/<command-message>[\s\S]*?<\/command-message>\s*/g,"").replace(/<command-name>[\s\S]*?<\/command-name>\s*/g,"").replace(/<command-args>[\s\S]*?<\/command-args>\s*/g,"").replace(/^Base directory for this skill:.*$/gm,"").replace(/^<!--.*?-->\s*$/gm,"").replace(/^\n+/,"").trim()}function cF(t){const e=t.match(/<command-args>([\s\S]*?)<\/command-args>/),n=e?e[1].trim():null,r=t.indexOf("Base directory for this skill:"),s=r!==-1?t.slice(r):t;return[n,IS(s)]}function dF(t){if(!t)return null;try{const e=JSON.parse(t);return typeof e.skill=="string"?e.skill:null}catch{return null}}function uF({name:t}){return c.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 mr-2 rounded border border-pink-500/30 bg-pink-500/10 text-pink-600 dark:text-pink-400 text-xs font-semibold align-middle",children:[c.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",className:"shrink-0",children:c.jsx("path",{d:"M8.5 1.5L3 9h4.5l-1 5.5L13 7H8.5l1-5.5z",stroke:"currentColor",strokeWidth:"1.2",strokeLinejoin:"round"})}),"Skill: ",t]})}function cp({name:t,text:e}){const n=e.split(`
|
|
317
317
|
`).length;return c.jsxs("details",{className:"rounded-lg border border-pink-500/20 bg-pink-500/5 dark:bg-pink-500/5 overflow-hidden",children:[c.jsxs("summary",{className:"flex cursor-pointer select-none items-center gap-1.5 px-3 py-2 text-sm text-pink-600 dark:text-pink-400 hover:text-pink-500 dark:hover:text-pink-300",children:[c.jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",className:"shrink-0",children:c.jsx("path",{d:"M8.5 1.5L3 9h4.5l-1 5.5L13 7H8.5l1-5.5z",stroke:"currentColor",strokeWidth:"1.2",strokeLinejoin:"round"})}),c.jsx("span",{className:"font-semibold",children:"Skill:"}),c.jsx("span",{className:"font-mono",children:t}),c.jsxs("span",{className:"ml-auto shrink-0 text-[10px] text-pink-500/50 dark:text-pink-400/40",children:[n," lines"]})]}),c.jsx("div",{className:"max-h-64 overflow-y-auto border-t border-pink-500/10 px-3 pb-3 pt-2",children:c.jsx(qs,{content:e})})]})}function hF({text:t}){const{t:e}=te();return c.jsxs("details",{className:"rounded-lg border border-dash-border bg-dash-bg/50",children:[c.jsxs("summary",{className:"flex cursor-pointer select-none items-center gap-1.5 px-3 py-2 text-sm text-dash-text-muted hover:text-dash-text",children:[c.jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",className:"shrink-0 opacity-60",children:c.jsx("path",{d:"M8 2C5.8 2 4 3.8 4 6c0 .8.2 1.5.6 2.1C3.6 8.6 3 9.7 3 11c0 1.7 1.1 3 2.5 3H8h2.5c1.4 0 2.5-1.3 2.5-3 0-1.3-.6-2.4-1.6-2.9.4-.6.6-1.3.6-2.1 0-2.2-1.8-4-4-4z",fill:"currentColor",opacity:"0.5"})}),c.jsx("span",{children:e("sessionThinking")})]}),c.jsx("pre",{className:"max-h-48 overflow-y-auto whitespace-pre-wrap break-words px-3 pb-3 pt-1 text-sm text-dash-text-muted",children:t})]})}function fF(t){const e=t.split(/^###\s+Skill:\s+/m);return e.length<=1?[]:e.slice(1).map(n=>{const r=n.indexOf(`
|
|
318
318
|
`),s=r!==-1?n.slice(0,r).trim():n.trim(),i=r!==-1?IS(n.slice(r+1)):"";return{name:s,content:i}})}function pF(t){const e=t.match(/^\[([a-z-]+)\]\n([\s\S]*)$/);return e?{tag:e[1],content:e[2]}:{tag:"",content:t}}const mF={"task-notification":"Task Notification","system-reminder":"System Context","local-command-stdout":"Command Output","local-command-caveat":"Command Note","antml:thinking":"Thinking"};function gF({text:t}){const{t:e}=te(),{tag:n,content:r}=pF(t),s=fF(r);if(s.length>0)return c.jsx("div",{className:"flex flex-col gap-1.5",children:s.map(o=>c.jsx(cp,{name:o.name,text:o.content},o.name))});if(n==="local-command-stdout"){const o=r.match(/Launching skill:\s+(\S+)/);if(o)return c.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-1 text-xs text-pink-500/70 dark:text-pink-400/60",children:[c.jsx("svg",{width:"10",height:"10",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",className:"shrink-0",children:c.jsx("path",{d:"M8.5 1.5L3 9h4.5l-1 5.5L13 7H8.5l1-5.5z",stroke:"currentColor",strokeWidth:"1.2",strokeLinejoin:"round"})}),c.jsxs("span",{children:["Launching skill: ",c.jsx("span",{className:"font-mono font-semibold",children:o[1]})]})]})}const i=mF[n]||e("sessionSystemContext");return c.jsxs("details",{className:"rounded-lg border border-dash-border/60 bg-dash-bg/30 overflow-hidden",children:[c.jsxs("summary",{className:"flex cursor-pointer select-none items-center gap-1.5 px-3 py-1.5 text-xs text-dash-text-muted hover:text-dash-text",children:[c.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",className:"shrink-0 opacity-50",children:[c.jsx("circle",{cx:"8",cy:"8",r:"6.5",stroke:"currentColor",strokeWidth:"1.2"}),c.jsx("path",{d:"M8 7v4.5M8 5.5v.5",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round"})]}),c.jsx("span",{children:i})]}),c.jsx("div",{className:"max-h-48 overflow-y-auto border-t border-dash-border/40 px-3 pb-2 pt-1",children:c.jsx("pre",{className:"text-[11px] text-dash-text-muted whitespace-pre-wrap break-words font-mono",children:r})})]})}const xF=20;function bF({text:t}){const[e,n]=g.useState(!1),r=t.split(`
|
|
319
319
|
`),s=r.slice(0,6).join(`
|