agent-tower 0.3.7 → 0.3.9
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.
- package/dist/executors/cursor-agent.executor.d.ts +1 -1
- package/dist/executors/cursor-agent.executor.d.ts.map +1 -1
- package/dist/output/__tests__/claude-code-parser-token.test.js +98 -0
- package/dist/output/__tests__/claude-code-parser-token.test.js.map +1 -1
- package/dist/output/__tests__/cursor-agent-parser-user.test.d.ts +2 -0
- package/dist/output/__tests__/cursor-agent-parser-user.test.d.ts.map +1 -0
- package/dist/output/__tests__/cursor-agent-parser-user.test.js +109 -0
- package/dist/output/__tests__/cursor-agent-parser-user.test.js.map +1 -0
- package/dist/output/claude-code-parser.d.ts.map +1 -1
- package/dist/output/claude-code-parser.js +12 -9
- package/dist/output/claude-code-parser.js.map +1 -1
- package/dist/output/cursor-agent-parser.d.ts +33 -1
- package/dist/output/cursor-agent-parser.d.ts.map +1 -1
- package/dist/output/cursor-agent-parser.js +140 -24
- package/dist/output/cursor-agent-parser.js.map +1 -1
- package/dist/routes/system.d.ts +5 -0
- package/dist/routes/system.d.ts.map +1 -1
- package/dist/routes/system.js +51 -0
- package/dist/routes/system.js.map +1 -1
- package/dist/web/assets/{AgentDemoPage-CCHa9x-c.js → AgentDemoPage-CzND8Y0f.js} +1 -1
- package/dist/web/assets/{DemoPage-CdT6VXkX.js → DemoPage-CmUJ0dvS.js} +1 -1
- package/dist/web/assets/{NotificationSettingsPage-CqZPABEG.js → NotificationSettingsPage-B1SDsL68.js} +1 -1
- package/dist/web/assets/{ProfileSettingsPage-CSgX4NOe.js → ProfileSettingsPage-Z42bsJop.js} +1 -1
- package/dist/web/assets/{ProjectKanbanPage-Pk7nnDcc.js → ProjectKanbanPage-BsRLM_To.js} +3 -3
- package/dist/web/assets/{ProjectSettingsPage-COrzQUwG.js → ProjectSettingsPage-DizbsdCH.js} +1 -1
- package/dist/web/assets/ProviderSettingsPage-BnLCrZgD.js +54 -0
- package/dist/web/assets/{api-client-DUkeyNRB.js → api-client-CgvcCTaj.js} +1 -1
- package/dist/web/assets/{chevron-down-jKHLtCQs.js → chevron-down-DrP9EgY9.js} +1 -1
- package/dist/web/assets/{circle-alert-DggTOwqB.js → circle-alert-wdB5gDUz.js} +1 -1
- package/dist/web/assets/{circle-check-38jFi9hD.js → circle-check-DilG10OC.js} +1 -1
- package/dist/web/assets/{code-block-OCS4YCEC-BhBg2bzT.js → code-block-OCS4YCEC-BQpzSGnw.js} +1 -1
- package/dist/web/assets/{confirm-dialog-CUtMe44J.js → confirm-dialog-zLKSUa6j.js} +1 -1
- package/dist/web/assets/{folder-picker-BTgXPrUp.js → folder-picker-CmgJx3lM.js} +1 -1
- package/dist/web/assets/{index-2lw92znX.js → index-B-QFtMnj.js} +2 -2
- package/dist/web/assets/index-DX47RnmN.css +1 -0
- package/dist/web/assets/{loader-circle-eX5KttSb.js → loader-circle-B8Hk0gt3.js} +1 -1
- package/dist/web/assets/{mermaid-NOHMQCX5-CQgpbmIW.js → mermaid-NOHMQCX5-BvevrkjG.js} +3 -3
- package/dist/web/assets/{modal-DpSqKQgt.js → modal-CCInxYr_.js} +1 -1
- package/dist/web/assets/{pencil-BaroHDtz.js → pencil-u5vhUMho.js} +1 -1
- package/dist/web/assets/{query-keys-DpgVNQA1.js → query-keys-BGgDKleg.js} +1 -1
- package/dist/web/assets/{select-5Ta6iqIf.js → select-CinUO48b.js} +1 -1
- package/dist/web/assets/{use-profiles-BHlH-mYH.js → use-profiles-DJwSheDq.js} +1 -1
- package/dist/web/assets/{use-projects-DC5whFow.js → use-projects-OFs5uSW6.js} +1 -1
- package/dist/web/assets/{x-_SSVUTap.js → x-Bz9Stptu.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/web/assets/ProviderSettingsPage-CzRDghu7.js +0 -54
- package/dist/web/assets/index-Br9066ZX.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as f,r as a,j as e}from"./index-
|
|
1
|
+
import{c as f,r as a,j as e}from"./index-B-QFtMnj.js";import{c as i}from"./api-client-CgvcCTaj.js";import{X as x}from"./x-Bz9Stptu.js";const y=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],j=f("trash-2",y),b=({isOpen:t,onClose:r,title:d,children:c,action:l,className:u})=>{const[m,n]=a.useState(!1);a.useEffect(()=>{if(t)n(!0),document.body.style.overflow="hidden";else{const o=setTimeout(()=>n(!1),200);return document.body.style.overflow="unset",()=>clearTimeout(o)}},[t]);const s=a.useCallback(o=>{o.key==="Escape"&&r()},[r]);return a.useEffect(()=>{if(t)return document.addEventListener("keydown",s),()=>{document.removeEventListener("keydown",s)}},[t,s]),!m&&!t?null:e.jsxs("div",{className:i("fixed inset-0 z-50 flex items-center justify-center p-4 transition-opacity duration-200",t?"opacity-100":"opacity-0"),children:[e.jsx("div",{className:"absolute inset-0 bg-white/80 backdrop-blur-sm",onClick:r}),e.jsxs("div",{className:i("relative w-full max-w-lg bg-white rounded-xl shadow-2xl shadow-neutral-200/50 border border-neutral-100 transform transition-all duration-200",t?"scale-100 translate-y-0":"scale-95 translate-y-2",u),children:[e.jsxs("div",{className:"flex items-center justify-between px-6 py-4 border-b border-neutral-50",children:[e.jsx("h3",{className:"font-semibold text-neutral-900",children:d}),e.jsx("button",{onClick:r,className:"text-neutral-400 hover:text-neutral-900 transition-colors",children:e.jsx(x,{size:18})})]}),e.jsx("div",{className:"p-6",children:c}),l?e.jsx("div",{className:"px-6 py-4 bg-neutral-50 rounded-b-xl border-t border-neutral-100 flex justify-end gap-3",children:l}):null]})]})},w=Object.freeze(Object.defineProperty({__proto__:null,Modal:b},Symbol.toStringTag,{value:"Module"}));export{b as M,j as T,w as m};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as a}from"./index-
|
|
1
|
+
import{c as a}from"./index-B-QFtMnj.js";const c=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],o=a("pencil",c);export{o as P};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as G,p as K,b as d,d as w,e as y,n as M,f as P,h as A,t as Y,k as C,l as Z,m as $,o as B,q as I,v as H,w as q,r as c,x as _,u as J}from"./index-2lw92znX.js";var tt=class extends G{constructor(t,e){super(),this.options=e,this.#s=t,this.#o=null,this.#n=K(),this.bindMethods(),this.setOptions(e)}#s;#t=void 0;#i=void 0;#e=void 0;#r;#a;#n;#o;#m;#d;#f;#c;#u;#h;#p=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),W(this.#t,this.options)?this.#l():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return k(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return k(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#R(),this.#S(),this.#t.removeObserver(this)}setOptions(t){const e=this.options,s=this.#t;if(this.options=this.#s.defaultQueryOptions(t),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof d(this.options.enabled,this.#t)!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#O(),this.#t.setOptions(this.options),e._defaulted&&!w(this.options,e)&&this.#s.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#t,observer:this});const i=this.hasListeners();i&&z(this.#t,s,this.options,e)&&this.#l(),this.updateResult(),i&&(this.#t!==s||d(this.options.enabled,this.#t)!==d(e.enabled,this.#t)||y(this.options.staleTime,this.#t)!==y(e.staleTime,this.#t))&&this.#v();const r=this.#b();i&&(this.#t!==s||d(this.options.enabled,this.#t)!==d(e.enabled,this.#t)||r!==this.#h)&&this.#g(r)}getOptimisticResult(t){const e=this.#s.getQueryCache().build(this.#s,t),s=this.createResult(e,t);return st(this,s)&&(this.#e=s,this.#a=this.options,this.#r=this.#t.state),s}getCurrentResult(){return this.#e}trackResult(t,e){return new Proxy(t,{get:(s,i)=>(this.trackProp(i),e?.(i),i==="promise"&&(this.trackProp("data"),!this.options.experimental_prefetchInRender&&this.#n.status==="pending"&&this.#n.reject(new Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(s,i))})}trackProp(t){this.#p.add(t)}getCurrentQuery(){return this.#t}refetch({...t}={}){return this.fetch({...t})}fetchOptimistic(t){const e=this.#s.defaultQueryOptions(t),s=this.#s.getQueryCache().build(this.#s,e);return s.fetch().then(()=>this.createResult(s,e))}fetch(t){return this.#l({...t,cancelRefetch:t.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#e))}#l(t){this.#O();let e=this.#t.fetch(this.options,t);return t?.throwOnError||(e=e.catch(M)),e}#v(){this.#R();const t=y(this.options.staleTime,this.#t);if(P||this.#e.isStale||!A(t))return;const s=Y(this.#e.dataUpdatedAt,t)+1;this.#c=C.setTimeout(()=>{this.#e.isStale||this.updateResult()},s)}#b(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#g(t){this.#S(),this.#h=t,!(P||d(this.options.enabled,this.#t)===!1||!A(this.#h)||this.#h===0)&&(this.#u=C.setInterval(()=>{(this.options.refetchIntervalInBackground||Z.isFocused())&&this.#l()},this.#h))}#y(){this.#v(),this.#g(this.#b())}#R(){this.#c&&(C.clearTimeout(this.#c),this.#c=void 0)}#S(){this.#u&&(C.clearInterval(this.#u),this.#u=void 0)}createResult(t,e){const s=this.#t,i=this.options,r=this.#e,u=this.#r,a=this.#a,v=t!==s?t.state:this.#i,{state:h}=t;let n={...h},b=!1,o;if(e._optimisticResults){const l=this.hasListeners(),g=!l&&W(t,e),S=l&&z(t,s,e,i);(g||S)&&(n={...n,...$(h.data,t.options)}),e._optimisticResults==="isRestoring"&&(n.fetchStatus="idle")}let{error:R,errorUpdatedAt:D,status:m}=n;o=n.data;let F=!1;if(e.placeholderData!==void 0&&o===void 0&&m==="pending"){let l;r?.isPlaceholderData&&e.placeholderData===a?.placeholderData?(l=r.data,F=!0):l=typeof e.placeholderData=="function"?e.placeholderData(this.#f?.state.data,this.#f):e.placeholderData,l!==void 0&&(m="success",o=B(r?.data,l,e),b=!0)}if(e.select&&o!==void 0&&!F)if(r&&o===u?.data&&e.select===this.#m)o=this.#d;else try{this.#m=e.select,o=e.select(o),o=B(r?.data,o,e),this.#d=o,this.#o=null}catch(l){this.#o=l}this.#o&&(R=this.#o,o=this.#d,D=Date.now(),m="error");const T=n.fetchStatus==="fetching",x=m==="pending",Q=m==="error",j=x&&T,L=o!==void 0,p={status:m,fetchStatus:n.fetchStatus,isPending:x,isSuccess:m==="success",isError:Q,isInitialLoading:j,isLoading:j,data:o,dataUpdatedAt:n.dataUpdatedAt,error:R,errorUpdatedAt:D,failureCount:n.fetchFailureCount,failureReason:n.fetchFailureReason,errorUpdateCount:n.errorUpdateCount,isFetched:n.dataUpdateCount>0||n.errorUpdateCount>0,isFetchedAfterMount:n.dataUpdateCount>v.dataUpdateCount||n.errorUpdateCount>v.errorUpdateCount,isFetching:T,isRefetching:T&&!x,isLoadingError:Q&&!L,isPaused:n.fetchStatus==="paused",isPlaceholderData:b,isRefetchError:Q&&L,isStale:U(t,e),refetch:this.refetch,promise:this.#n,isEnabled:d(e.enabled,t)!==!1};if(this.options.experimental_prefetchInRender){const l=p.data!==void 0,g=p.status==="error"&&!l,S=E=>{g?E.reject(p.error):l&&E.resolve(p.data)},N=()=>{const E=this.#n=p.promise=K();S(E)},O=this.#n;switch(O.status){case"pending":t.queryHash===s.queryHash&&S(O);break;case"fulfilled":(g||p.data!==O.value)&&N();break;case"rejected":(!g||p.error!==O.reason)&&N();break}}return p}updateResult(){const t=this.#e,e=this.createResult(this.#t,this.options);if(this.#r=this.#t.state,this.#a=this.options,this.#r.data!==void 0&&(this.#f=this.#t),w(e,t))return;this.#e=e;const s=()=>{if(!t)return!0;const{notifyOnChangeProps:i}=this.options,r=typeof i=="function"?i():i;if(r==="all"||!r&&!this.#p.size)return!0;const u=new Set(r??this.#p);return this.options.throwOnError&&u.add("error"),Object.keys(this.#e).some(a=>{const f=a;return this.#e[f]!==t[f]&&u.has(f)})};this.#E({listeners:s()})}#O(){const t=this.#s.getQueryCache().build(this.#s,this.options);if(t===this.#t)return;const e=this.#t;this.#t=t,this.#i=t.state,this.hasListeners()&&(e?.removeObserver(this),t.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}#E(t){I.batch(()=>{t.listeners&&this.listeners.forEach(e=>{e(this.#e)}),this.#s.getQueryCache().notify({query:this.#t,type:"observerResultsUpdated"})})}};function et(t,e){return d(e.enabled,t)!==!1&&t.state.data===void 0&&!(t.state.status==="error"&&e.retryOnMount===!1)}function W(t,e){return et(t,e)||t.state.data!==void 0&&k(t,e,e.refetchOnMount)}function k(t,e,s){if(d(e.enabled,t)!==!1&&y(e.staleTime,t)!=="static"){const i=typeof s=="function"?s(t):s;return i==="always"||i!==!1&&U(t,e)}return!1}function z(t,e,s,i){return(t!==e||d(i.enabled,t)===!1)&&(!s.suspense||t.state.status!=="error")&&U(t,s)}function U(t,e){return d(e.enabled,t)!==!1&&t.isStaleByTime(y(e.staleTime,t))}function st(t,e){return!w(t.getCurrentResult(),e)}var it=class extends G{#s;#t=void 0;#i;#e;constructor(t,e){super(),this.#s=t,this.setOptions(e),this.bindMethods(),this.#r()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(t){const e=this.options;this.options=this.#s.defaultMutationOptions(t),w(this.options,e)||this.#s.getMutationCache().notify({type:"observerOptionsUpdated",mutation:this.#i,observer:this}),e?.mutationKey&&this.options.mutationKey&&H(e.mutationKey)!==H(this.options.mutationKey)?this.reset():this.#i?.state.status==="pending"&&this.#i.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#i?.removeObserver(this)}onMutationUpdate(t){this.#r(),this.#a(t)}getCurrentResult(){return this.#t}reset(){this.#i?.removeObserver(this),this.#i=void 0,this.#r(),this.#a()}mutate(t,e){return this.#e=e,this.#i?.removeObserver(this),this.#i=this.#s.getMutationCache().build(this.#s,this.options),this.#i.addObserver(this),this.#i.execute(t)}#r(){const t=this.#i?.state??q();this.#t={...t,isPending:t.status==="pending",isSuccess:t.status==="success",isError:t.status==="error",isIdle:t.status==="idle",mutate:this.mutate,reset:this.reset}}#a(t){I.batch(()=>{if(this.#e&&this.hasListeners()){const e=this.#t.variables,s=this.#t.context,i={client:this.#s,meta:this.options.meta,mutationKey:this.options.mutationKey};if(t?.type==="success"){try{this.#e.onSuccess?.(t.data,e,s,i)}catch(r){Promise.reject(r)}try{this.#e.onSettled?.(t.data,null,e,s,i)}catch(r){Promise.reject(r)}}else if(t?.type==="error"){try{this.#e.onError?.(t.error,e,s,i)}catch(r){Promise.reject(r)}try{this.#e.onSettled?.(void 0,t.error,e,s,i)}catch(r){Promise.reject(r)}}}this.listeners.forEach(e=>{e(this.#t)})})}},X=c.createContext(!1),rt=()=>c.useContext(X);X.Provider;function at(){let t=!1;return{clearReset:()=>{t=!1},reset:()=>{t=!0},isReset:()=>t}}var nt=c.createContext(at()),ot=()=>c.useContext(nt),ht=(t,e,s)=>{const i=s?.state.error&&typeof t.throwOnError=="function"?_(t.throwOnError,[s.state.error,s]):t.throwOnError;(t.suspense||t.experimental_prefetchInRender||i)&&(e.isReset()||(t.retryOnMount=!1))},ct=t=>{c.useEffect(()=>{t.clearReset()},[t])},ut=({result:t,errorResetBoundary:e,throwOnError:s,query:i,suspense:r})=>t.isError&&!e.isReset()&&!t.isFetching&&i&&(r&&t.data===void 0||_(s,[t.error,i])),lt=t=>{if(t.suspense){const s=r=>r==="static"?r:Math.max(r??1e3,1e3),i=t.staleTime;t.staleTime=typeof i=="function"?(...r)=>s(i(...r)):s(i),typeof t.gcTime=="number"&&(t.gcTime=Math.max(t.gcTime,1e3))}},dt=(t,e)=>t.isLoading&&t.isFetching&&!e,ft=(t,e)=>t?.suspense&&e.isPending,V=(t,e,s)=>e.fetchOptimistic(t).catch(()=>{s.clearReset()});function pt(t,e,s){const i=rt(),r=ot(),u=J(),a=u.defaultQueryOptions(t);u.getDefaultOptions().queries?._experimental_beforeQuery?.(a);const f=u.getQueryCache().get(a.queryHash);a._optimisticResults=i?"isRestoring":"optimistic",lt(a),ht(a,r,f),ct(r);const v=!u.getQueryCache().get(a.queryHash),[h]=c.useState(()=>new e(u,a)),n=h.getOptimisticResult(a),b=!i&&t.subscribed!==!1;if(c.useSyncExternalStore(c.useCallback(o=>{const R=b?h.subscribe(I.batchCalls(o)):M;return h.updateResult(),R},[h,b]),()=>h.getCurrentResult(),()=>h.getCurrentResult()),c.useEffect(()=>{h.setOptions(a)},[a,h]),ft(a,n))throw V(a,h,r);if(ut({result:n,errorResetBoundary:r,throwOnError:a.throwOnError,query:f,suspense:a.suspense}))throw n.error;return u.getDefaultOptions().queries?._experimental_afterQuery?.(a,n),a.experimental_prefetchInRender&&!P&&dt(n,i)&&(v?V(a,h,r):f?.promise)?.catch(M).finally(()=>{h.updateResult()}),a.notifyOnChangeProps?n:h.trackResult(n)}function bt(t,e){return pt(t,tt)}function gt(t,e){const s=J(),[i]=c.useState(()=>new it(s,t));c.useEffect(()=>{i.setOptions(t)},[i,t]);const r=c.useSyncExternalStore(c.useCallback(a=>i.subscribe(I.batchCalls(a)),[i]),()=>i.getCurrentResult(),()=>i.getCurrentResult()),u=c.useCallback((a,f)=>{i.mutate(a,f).catch(M)},[i]);if(r.error&&_(i.options.throwOnError,[r.error]))throw r.error;return{...r,mutate:u,mutateAsync:r.mutate}}const yt={projects:{all:["projects"],list:t=>["projects","list",t],detail:t=>["projects","detail",t]},tasks:{all:["tasks"],list:(t,e)=>["tasks","list",t,e],detail:t=>["tasks","detail",t],stats:t=>["tasks","stats",t]},workspaces:{all:["workspaces"],list:t=>["workspaces","list",t],detail:t=>["workspaces","detail",t],diff:t=>["workspaces","diff",t],gitStatus:t=>["workspaces","gitStatus",t]},sessions:{all:["sessions"],detail:t=>["sessions","detail",t]},files:{all:["files"],tree:(t,e)=>["files","tree",t,e],content:(t,e)=>["files","content",t,e]},git:{all:["git"],changes:t=>["git","changes",t],diff:(t,e,s)=>["git","diff",t,e,s],log:t=>["git","log",t],commitFiles:(t,e)=>["git","commitFiles",t,e],commitDiff:(t,e,s)=>["git","commitDiff",t,e,s]},profiles:{all:["profiles"],defaults:["profiles","defaults"],agent:t=>["profiles","agent",t],variant:(t,e)=>["profiles","variant",t,e]},providers:{all:["providers"],detail:t=>["providers","detail",t]},tunnel:{status:["tunnel","status"]},notifications:{settings:["notifications","settings"]}};export{tt as Q,gt as a,rt as b,ot as c,ht as d,lt as e,ct as f,V as g,ut as h,pt as i,yt as q,ft as s,bt as u,dt as w};
|
|
1
|
+
import{a as G,p as K,b as d,d as w,e as y,n as M,f as P,h as A,t as Y,k as C,l as Z,m as $,o as B,q as I,v as H,w as q,r as c,x as _,u as J}from"./index-B-QFtMnj.js";var tt=class extends G{constructor(t,e){super(),this.options=e,this.#s=t,this.#o=null,this.#n=K(),this.bindMethods(),this.setOptions(e)}#s;#t=void 0;#i=void 0;#e=void 0;#r;#a;#n;#o;#m;#d;#f;#c;#u;#h;#p=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),W(this.#t,this.options)?this.#l():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return k(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return k(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#R(),this.#S(),this.#t.removeObserver(this)}setOptions(t){const e=this.options,s=this.#t;if(this.options=this.#s.defaultQueryOptions(t),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof d(this.options.enabled,this.#t)!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#O(),this.#t.setOptions(this.options),e._defaulted&&!w(this.options,e)&&this.#s.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#t,observer:this});const i=this.hasListeners();i&&z(this.#t,s,this.options,e)&&this.#l(),this.updateResult(),i&&(this.#t!==s||d(this.options.enabled,this.#t)!==d(e.enabled,this.#t)||y(this.options.staleTime,this.#t)!==y(e.staleTime,this.#t))&&this.#v();const r=this.#b();i&&(this.#t!==s||d(this.options.enabled,this.#t)!==d(e.enabled,this.#t)||r!==this.#h)&&this.#g(r)}getOptimisticResult(t){const e=this.#s.getQueryCache().build(this.#s,t),s=this.createResult(e,t);return st(this,s)&&(this.#e=s,this.#a=this.options,this.#r=this.#t.state),s}getCurrentResult(){return this.#e}trackResult(t,e){return new Proxy(t,{get:(s,i)=>(this.trackProp(i),e?.(i),i==="promise"&&(this.trackProp("data"),!this.options.experimental_prefetchInRender&&this.#n.status==="pending"&&this.#n.reject(new Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(s,i))})}trackProp(t){this.#p.add(t)}getCurrentQuery(){return this.#t}refetch({...t}={}){return this.fetch({...t})}fetchOptimistic(t){const e=this.#s.defaultQueryOptions(t),s=this.#s.getQueryCache().build(this.#s,e);return s.fetch().then(()=>this.createResult(s,e))}fetch(t){return this.#l({...t,cancelRefetch:t.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#e))}#l(t){this.#O();let e=this.#t.fetch(this.options,t);return t?.throwOnError||(e=e.catch(M)),e}#v(){this.#R();const t=y(this.options.staleTime,this.#t);if(P||this.#e.isStale||!A(t))return;const s=Y(this.#e.dataUpdatedAt,t)+1;this.#c=C.setTimeout(()=>{this.#e.isStale||this.updateResult()},s)}#b(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#g(t){this.#S(),this.#h=t,!(P||d(this.options.enabled,this.#t)===!1||!A(this.#h)||this.#h===0)&&(this.#u=C.setInterval(()=>{(this.options.refetchIntervalInBackground||Z.isFocused())&&this.#l()},this.#h))}#y(){this.#v(),this.#g(this.#b())}#R(){this.#c&&(C.clearTimeout(this.#c),this.#c=void 0)}#S(){this.#u&&(C.clearInterval(this.#u),this.#u=void 0)}createResult(t,e){const s=this.#t,i=this.options,r=this.#e,u=this.#r,a=this.#a,v=t!==s?t.state:this.#i,{state:h}=t;let n={...h},b=!1,o;if(e._optimisticResults){const l=this.hasListeners(),g=!l&&W(t,e),S=l&&z(t,s,e,i);(g||S)&&(n={...n,...$(h.data,t.options)}),e._optimisticResults==="isRestoring"&&(n.fetchStatus="idle")}let{error:R,errorUpdatedAt:D,status:m}=n;o=n.data;let F=!1;if(e.placeholderData!==void 0&&o===void 0&&m==="pending"){let l;r?.isPlaceholderData&&e.placeholderData===a?.placeholderData?(l=r.data,F=!0):l=typeof e.placeholderData=="function"?e.placeholderData(this.#f?.state.data,this.#f):e.placeholderData,l!==void 0&&(m="success",o=B(r?.data,l,e),b=!0)}if(e.select&&o!==void 0&&!F)if(r&&o===u?.data&&e.select===this.#m)o=this.#d;else try{this.#m=e.select,o=e.select(o),o=B(r?.data,o,e),this.#d=o,this.#o=null}catch(l){this.#o=l}this.#o&&(R=this.#o,o=this.#d,D=Date.now(),m="error");const T=n.fetchStatus==="fetching",x=m==="pending",Q=m==="error",j=x&&T,L=o!==void 0,p={status:m,fetchStatus:n.fetchStatus,isPending:x,isSuccess:m==="success",isError:Q,isInitialLoading:j,isLoading:j,data:o,dataUpdatedAt:n.dataUpdatedAt,error:R,errorUpdatedAt:D,failureCount:n.fetchFailureCount,failureReason:n.fetchFailureReason,errorUpdateCount:n.errorUpdateCount,isFetched:n.dataUpdateCount>0||n.errorUpdateCount>0,isFetchedAfterMount:n.dataUpdateCount>v.dataUpdateCount||n.errorUpdateCount>v.errorUpdateCount,isFetching:T,isRefetching:T&&!x,isLoadingError:Q&&!L,isPaused:n.fetchStatus==="paused",isPlaceholderData:b,isRefetchError:Q&&L,isStale:U(t,e),refetch:this.refetch,promise:this.#n,isEnabled:d(e.enabled,t)!==!1};if(this.options.experimental_prefetchInRender){const l=p.data!==void 0,g=p.status==="error"&&!l,S=E=>{g?E.reject(p.error):l&&E.resolve(p.data)},N=()=>{const E=this.#n=p.promise=K();S(E)},O=this.#n;switch(O.status){case"pending":t.queryHash===s.queryHash&&S(O);break;case"fulfilled":(g||p.data!==O.value)&&N();break;case"rejected":(!g||p.error!==O.reason)&&N();break}}return p}updateResult(){const t=this.#e,e=this.createResult(this.#t,this.options);if(this.#r=this.#t.state,this.#a=this.options,this.#r.data!==void 0&&(this.#f=this.#t),w(e,t))return;this.#e=e;const s=()=>{if(!t)return!0;const{notifyOnChangeProps:i}=this.options,r=typeof i=="function"?i():i;if(r==="all"||!r&&!this.#p.size)return!0;const u=new Set(r??this.#p);return this.options.throwOnError&&u.add("error"),Object.keys(this.#e).some(a=>{const f=a;return this.#e[f]!==t[f]&&u.has(f)})};this.#E({listeners:s()})}#O(){const t=this.#s.getQueryCache().build(this.#s,this.options);if(t===this.#t)return;const e=this.#t;this.#t=t,this.#i=t.state,this.hasListeners()&&(e?.removeObserver(this),t.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}#E(t){I.batch(()=>{t.listeners&&this.listeners.forEach(e=>{e(this.#e)}),this.#s.getQueryCache().notify({query:this.#t,type:"observerResultsUpdated"})})}};function et(t,e){return d(e.enabled,t)!==!1&&t.state.data===void 0&&!(t.state.status==="error"&&e.retryOnMount===!1)}function W(t,e){return et(t,e)||t.state.data!==void 0&&k(t,e,e.refetchOnMount)}function k(t,e,s){if(d(e.enabled,t)!==!1&&y(e.staleTime,t)!=="static"){const i=typeof s=="function"?s(t):s;return i==="always"||i!==!1&&U(t,e)}return!1}function z(t,e,s,i){return(t!==e||d(i.enabled,t)===!1)&&(!s.suspense||t.state.status!=="error")&&U(t,s)}function U(t,e){return d(e.enabled,t)!==!1&&t.isStaleByTime(y(e.staleTime,t))}function st(t,e){return!w(t.getCurrentResult(),e)}var it=class extends G{#s;#t=void 0;#i;#e;constructor(t,e){super(),this.#s=t,this.setOptions(e),this.bindMethods(),this.#r()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(t){const e=this.options;this.options=this.#s.defaultMutationOptions(t),w(this.options,e)||this.#s.getMutationCache().notify({type:"observerOptionsUpdated",mutation:this.#i,observer:this}),e?.mutationKey&&this.options.mutationKey&&H(e.mutationKey)!==H(this.options.mutationKey)?this.reset():this.#i?.state.status==="pending"&&this.#i.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#i?.removeObserver(this)}onMutationUpdate(t){this.#r(),this.#a(t)}getCurrentResult(){return this.#t}reset(){this.#i?.removeObserver(this),this.#i=void 0,this.#r(),this.#a()}mutate(t,e){return this.#e=e,this.#i?.removeObserver(this),this.#i=this.#s.getMutationCache().build(this.#s,this.options),this.#i.addObserver(this),this.#i.execute(t)}#r(){const t=this.#i?.state??q();this.#t={...t,isPending:t.status==="pending",isSuccess:t.status==="success",isError:t.status==="error",isIdle:t.status==="idle",mutate:this.mutate,reset:this.reset}}#a(t){I.batch(()=>{if(this.#e&&this.hasListeners()){const e=this.#t.variables,s=this.#t.context,i={client:this.#s,meta:this.options.meta,mutationKey:this.options.mutationKey};if(t?.type==="success"){try{this.#e.onSuccess?.(t.data,e,s,i)}catch(r){Promise.reject(r)}try{this.#e.onSettled?.(t.data,null,e,s,i)}catch(r){Promise.reject(r)}}else if(t?.type==="error"){try{this.#e.onError?.(t.error,e,s,i)}catch(r){Promise.reject(r)}try{this.#e.onSettled?.(void 0,t.error,e,s,i)}catch(r){Promise.reject(r)}}}this.listeners.forEach(e=>{e(this.#t)})})}},X=c.createContext(!1),rt=()=>c.useContext(X);X.Provider;function at(){let t=!1;return{clearReset:()=>{t=!1},reset:()=>{t=!0},isReset:()=>t}}var nt=c.createContext(at()),ot=()=>c.useContext(nt),ht=(t,e,s)=>{const i=s?.state.error&&typeof t.throwOnError=="function"?_(t.throwOnError,[s.state.error,s]):t.throwOnError;(t.suspense||t.experimental_prefetchInRender||i)&&(e.isReset()||(t.retryOnMount=!1))},ct=t=>{c.useEffect(()=>{t.clearReset()},[t])},ut=({result:t,errorResetBoundary:e,throwOnError:s,query:i,suspense:r})=>t.isError&&!e.isReset()&&!t.isFetching&&i&&(r&&t.data===void 0||_(s,[t.error,i])),lt=t=>{if(t.suspense){const s=r=>r==="static"?r:Math.max(r??1e3,1e3),i=t.staleTime;t.staleTime=typeof i=="function"?(...r)=>s(i(...r)):s(i),typeof t.gcTime=="number"&&(t.gcTime=Math.max(t.gcTime,1e3))}},dt=(t,e)=>t.isLoading&&t.isFetching&&!e,ft=(t,e)=>t?.suspense&&e.isPending,V=(t,e,s)=>e.fetchOptimistic(t).catch(()=>{s.clearReset()});function pt(t,e,s){const i=rt(),r=ot(),u=J(),a=u.defaultQueryOptions(t);u.getDefaultOptions().queries?._experimental_beforeQuery?.(a);const f=u.getQueryCache().get(a.queryHash);a._optimisticResults=i?"isRestoring":"optimistic",lt(a),ht(a,r,f),ct(r);const v=!u.getQueryCache().get(a.queryHash),[h]=c.useState(()=>new e(u,a)),n=h.getOptimisticResult(a),b=!i&&t.subscribed!==!1;if(c.useSyncExternalStore(c.useCallback(o=>{const R=b?h.subscribe(I.batchCalls(o)):M;return h.updateResult(),R},[h,b]),()=>h.getCurrentResult(),()=>h.getCurrentResult()),c.useEffect(()=>{h.setOptions(a)},[a,h]),ft(a,n))throw V(a,h,r);if(ut({result:n,errorResetBoundary:r,throwOnError:a.throwOnError,query:f,suspense:a.suspense}))throw n.error;return u.getDefaultOptions().queries?._experimental_afterQuery?.(a,n),a.experimental_prefetchInRender&&!P&&dt(n,i)&&(v?V(a,h,r):f?.promise)?.catch(M).finally(()=>{h.updateResult()}),a.notifyOnChangeProps?n:h.trackResult(n)}function bt(t,e){return pt(t,tt)}function gt(t,e){const s=J(),[i]=c.useState(()=>new it(s,t));c.useEffect(()=>{i.setOptions(t)},[i,t]);const r=c.useSyncExternalStore(c.useCallback(a=>i.subscribe(I.batchCalls(a)),[i]),()=>i.getCurrentResult(),()=>i.getCurrentResult()),u=c.useCallback((a,f)=>{i.mutate(a,f).catch(M)},[i]);if(r.error&&_(i.options.throwOnError,[r.error]))throw r.error;return{...r,mutate:u,mutateAsync:r.mutate}}const yt={projects:{all:["projects"],list:t=>["projects","list",t],detail:t=>["projects","detail",t]},tasks:{all:["tasks"],list:(t,e)=>["tasks","list",t,e],detail:t=>["tasks","detail",t],stats:t=>["tasks","stats",t]},workspaces:{all:["workspaces"],list:t=>["workspaces","list",t],detail:t=>["workspaces","detail",t],diff:t=>["workspaces","diff",t],gitStatus:t=>["workspaces","gitStatus",t]},sessions:{all:["sessions"],detail:t=>["sessions","detail",t]},files:{all:["files"],tree:(t,e)=>["files","tree",t,e],content:(t,e)=>["files","content",t,e]},git:{all:["git"],changes:t=>["git","changes",t],diff:(t,e,s)=>["git","diff",t,e,s],log:t=>["git","log",t],commitFiles:(t,e)=>["git","commitFiles",t,e],commitDiff:(t,e,s)=>["git","commitDiff",t,e,s]},profiles:{all:["profiles"],defaults:["profiles","defaults"],agent:t=>["profiles","agent",t],variant:(t,e)=>["profiles","variant",t,e]},providers:{all:["providers"],detail:t=>["providers","detail",t]},tunnel:{status:["tunnel","status"]},notifications:{settings:["notifications","settings"]},system:{cursorAgentModels:["system","cursor-agent-models"]}};export{tt as Q,gt as a,rt as b,ot as c,ht as d,lt as e,ct as f,V as g,ut as h,pt as i,yt as q,ft as s,bt as u,dt as w};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as n,j as t}from"./index-
|
|
1
|
+
import{r as n,j as t}from"./index-B-QFtMnj.js";import{c as r}from"./api-client-CgvcCTaj.js";import{C as h,a as p}from"./chevron-down-DrP9EgY9.js";function j({value:l,onChange:i,options:o,placeholder:d="Select...",disabled:m=!1,className:f}){const[s,a]=n.useState(!1),c=n.useRef(null),u=o.find(e=>e.value===l);n.useEffect(()=>{if(!s)return;const e=b=>{c.current&&!c.current.contains(b.target)&&a(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[s]);const x=n.useCallback(e=>{e.key==="Escape"&&a(!1)},[]);return t.jsxs("div",{ref:c,className:r("relative",f),onKeyDown:x,children:[t.jsxs("button",{type:"button",disabled:m,onClick:()=>a(e=>!e),className:r("flex items-center justify-between w-full h-9 px-3 border rounded-lg text-sm transition-colors","bg-white border-neutral-200 hover:border-neutral-300","focus:outline-none focus:border-neutral-400","disabled:opacity-50 disabled:cursor-not-allowed",s&&"border-neutral-400",!u&&"text-neutral-400"),children:[t.jsx("span",{className:"truncate",children:u?u.label:d}),t.jsx(h,{size:14,className:r("ml-2 shrink-0 text-neutral-400 transition-transform duration-150",s&&"rotate-180")})]}),s&&t.jsx("div",{className:"absolute z-50 mt-1 w-full min-w-[160px] bg-white border border-neutral-200 rounded-lg shadow-lg shadow-neutral-200/50 py-1 max-h-[200px] overflow-y-auto",children:o.length===0?t.jsx("div",{className:"px-3 py-2 text-sm text-neutral-400",children:"No options"}):o.map(e=>t.jsxs("button",{type:"button",disabled:e.disabled,onClick:()=>{i(e.value),a(!1)},className:r("flex items-center w-full px-3 py-1.5 text-sm text-left transition-colors","hover:bg-neutral-50",e.value===l?"text-neutral-900 font-medium":"text-neutral-600",e.disabled&&"opacity-40 cursor-not-allowed"),children:[t.jsx(p,{size:14,className:r("mr-2 shrink-0",e.value===l?"opacity-100":"opacity-0")}),t.jsx("span",{className:"truncate",children:e.label})]},e.value))})]})}export{j as S};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as i,a as n,q as r}from"./query-keys-
|
|
1
|
+
import{u as i,a as n,q as r}from"./query-keys-BGgDKleg.js";import{u as a}from"./index-B-QFtMnj.js";import{a as u}from"./api-client-CgvcCTaj.js";function y(){return i({queryKey:r.profiles.all,queryFn:()=>u.get("/profiles")})}function c(){return i({queryKey:r.profiles.defaults,queryFn:()=>u.get("/profiles/defaults")})}function q(e){return i({queryKey:r.profiles.agent(e),queryFn:()=>u.get(`/profiles/${e}`),enabled:!!e})}function d(){const e=a();return n({mutationFn:({agentType:s,variant:t,config:o})=>u.put(`/profiles/${s}/${t}`,o),onSuccess:()=>{e.invalidateQueries({queryKey:r.profiles.all})}})}function m(){const e=a();return n({mutationFn:({agentType:s,variant:t})=>u.delete(`/profiles/${s}/${t}`),onSuccess:()=>{e.invalidateQueries({queryKey:r.profiles.all})}})}export{c as a,d as b,m as c,q as d,y as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as u,u as n}from"./index-
|
|
1
|
+
import{c as u,u as n}from"./index-B-QFtMnj.js";import{u as i,a as o,q as a}from"./query-keys-BGgDKleg.js";import{a as r}from"./api-client-CgvcCTaj.js";const c=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}]],j=u("file",c);const l=[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]],f=u("folder",l);function m(e){const t={};return e?.page!=null&&(t.page=String(e.page)),e?.limit!=null&&(t.limit=String(e.limit)),i({queryKey:a.projects.list(e),queryFn:()=>r.get("/projects",{params:t})})}function q(e){return i({queryKey:a.projects.detail(e),queryFn:()=>r.get(`/projects/${e}`),enabled:!!e})}function g(){const e=n();return o({mutationFn:t=>r.post("/projects",t),onSuccess:()=>{e.invalidateQueries({queryKey:a.projects.all})}})}function F(){const e=n();return o({mutationFn:({id:t,...s})=>r.put(`/projects/${t}`,s),onSuccess:(t,s)=>{e.invalidateQueries({queryKey:a.projects.all}),e.invalidateQueries({queryKey:a.projects.detail(s.id)})}})}export{f as F,j as a,F as b,q as c,g as d,m as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as o}from"./index-
|
|
1
|
+
import{c as o}from"./index-B-QFtMnj.js";const e=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],s=o("plus",e);const t=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],a=o("x",t);export{s as P,a as X};
|
package/dist/web/index.html
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" />
|
|
7
7
|
<title>web</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-B-QFtMnj.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DX47RnmN.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import{c as B,r as N,j as n,y as P}from"./index-2lw92znX.js";import{u as fe,a as xe,b as pe,c as he,d as ge,e as be,f as ve,C as ye,A as j}from"./confirm-dialog-CUtMe44J.js";import{B as E}from"./api-client-DUkeyNRB.js";import{T as Q,M as G}from"./modal-DpSqKQgt.js";import{S as ee}from"./select-5Ta6iqIf.js";import"./log-adapter-50wgehrc.js";import{P as te}from"./x-_SSVUTap.js";import{P as je}from"./pencil-BaroHDtz.js";import{C as we}from"./circle-check-38jFi9hD.js";import{C as Ne}from"./chevron-down-jKHLtCQs.js";import"./query-keys-DpgVNQA1.js";const Ee=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],Ce=B("circle-x",Ee);const Pe=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],ke=B("download",Pe);const _e=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],Oe=B("upload",_e);function Ie(e,t){let s=e.slice(0,t).split(/\r\n|\n|\r/g);return[s.length,s.pop().length+1]}function Te(e,t,s){let a=e.split(/\r\n|\n|\r/g),l="",r=(Math.log10(t+1)|0)+1;for(let i=t-1;i<=t+1;i++){let o=a[i-1];o&&(l+=i.toString().padEnd(r," "),l+=": ",l+=o,l+=`
|
|
2
|
-
`,i===t&&(l+=" ".repeat(r+s+2),l+=`^
|
|
3
|
-
`))}return l}class x extends Error{line;column;codeblock;constructor(t,s){const[a,l]=Ie(s.toml,s.ptr),r=Te(s.toml,a,l);super(`Invalid TOML document: ${t}
|
|
4
|
-
|
|
5
|
-
${r}`,s),this.line=a,this.column=l,this.codeblock=r}}function Se(e,t){let s=0;for(;e[t-++s]==="\\";);return--s&&s%2}function M(e,t=0,s=e.length){let a=e.indexOf(`
|
|
6
|
-
`,t);return e[a-1]==="\r"&&a--,a<=s?a:-1}function R(e,t){for(let s=t;s<e.length;s++){let a=e[s];if(a===`
|
|
7
|
-
`)return s;if(a==="\r"&&e[s+1]===`
|
|
8
|
-
`)return s+1;if(a<" "&&a!==" "||a==="")throw new x("control characters are not allowed in comments",{toml:e,ptr:t})}return e.length}function C(e,t,s,a){let l;for(;(l=e[t])===" "||l===" "||!s&&(l===`
|
|
9
|
-
`||l==="\r"&&e[t+1]===`
|
|
10
|
-
`);)t++;return a||l!=="#"?t:C(e,R(e,t),s)}function Ae(e,t,s,a,l=!1){if(!a)return t=M(e,t),t<0?e.length:t;for(let r=t;r<e.length;r++){let i=e[r];if(i==="#")r=M(e,r);else{if(i===s)return r+1;if(i===a||l&&(i===`
|
|
11
|
-
`||i==="\r"&&e[r+1]===`
|
|
12
|
-
`))return r}}throw new x("cannot find end of structure",{toml:e,ptr:t})}function ne(e,t){let s=e[t],a=s===e[t+1]&&e[t+1]===e[t+2]?e.slice(t,t+3):s;t+=a.length-1;do t=e.indexOf(a,++t);while(t>-1&&s!=="'"&&Se(e,t));return t>-1&&(t+=a.length,a.length>1&&(e[t]===s&&t++,e[t]===s&&t++)),t}let De=/^(\d{4}-\d{2}-\d{2})?[T ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|[-+]\d{2}:\d{2})?$/i;class T extends Date{#t=!1;#n=!1;#e=null;constructor(t){let s=!0,a=!0,l="Z";if(typeof t=="string"){let r=t.match(De);r?(r[1]||(s=!1,t=`0000-01-01T${t}`),a=!!r[2],a&&t[10]===" "&&(t=t.replace(" ","T")),r[2]&&+r[2]>23?t="":(l=r[3]||null,t=t.toUpperCase(),!l&&a&&(t+="Z"))):t=""}super(t),isNaN(this.getTime())||(this.#t=s,this.#n=a,this.#e=l)}isDateTime(){return this.#t&&this.#n}isLocal(){return!this.#t||!this.#n||!this.#e}isDate(){return this.#t&&!this.#n}isTime(){return this.#n&&!this.#t}isValid(){return this.#t||this.#n}toISOString(){let t=super.toISOString();if(this.isDate())return t.slice(0,10);if(this.isTime())return t.slice(11,23);if(this.#e===null)return t.slice(0,-1);if(this.#e==="Z")return t;let s=+this.#e.slice(1,3)*60+ +this.#e.slice(4,6);return s=this.#e[0]==="-"?s:-s,new Date(this.getTime()-s*6e4).toISOString().slice(0,-1)+this.#e}static wrapAsOffsetDateTime(t,s="Z"){let a=new T(t);return a.#e=s,a}static wrapAsLocalDateTime(t){let s=new T(t);return s.#e=null,s}static wrapAsLocalDate(t){let s=new T(t);return s.#n=!1,s.#e=null,s}static wrapAsLocalTime(t){let s=new T(t);return s.#t=!1,s.#e=null,s}}let Le=/^((0x[0-9a-fA-F](_?[0-9a-fA-F])*)|(([+-]|0[ob])?\d(_?\d)*))$/,Re=/^[+-]?\d(_?\d)*(\.\d(_?\d)*)?([eE][+-]?\d(_?\d)*)?$/,Fe=/^[+-]?0[0-9_]/,Ue=/^[0-9a-f]{2,8}$/i,H={b:"\b",t:" ",n:`
|
|
13
|
-
`,f:"\f",r:"\r",e:"\x1B",'"':'"',"\\":"\\"};function re(e,t=0,s=e.length){let a=e[t]==="'",l=e[t++]===e[t]&&e[t]===e[t+1];l&&(s-=2,e[t+=2]==="\r"&&t++,e[t]===`
|
|
14
|
-
`&&t++);let r=0,i,o="",c=t;for(;t<s-1;){let d=e[t++];if(d===`
|
|
15
|
-
`||d==="\r"&&e[t]===`
|
|
16
|
-
`){if(!l)throw new x("newlines are not allowed in strings",{toml:e,ptr:t-1})}else if(d<" "&&d!==" "||d==="")throw new x("control characters are not allowed in strings",{toml:e,ptr:t-1});if(i){if(i=!1,d==="x"||d==="u"||d==="U"){let p=e.slice(t,t+=d==="x"?2:d==="u"?4:8);if(!Ue.test(p))throw new x("invalid unicode escape",{toml:e,ptr:r});try{o+=String.fromCodePoint(parseInt(p,16))}catch{throw new x("invalid unicode escape",{toml:e,ptr:r})}}else if(l&&(d===`
|
|
17
|
-
`||d===" "||d===" "||d==="\r")){if(t=C(e,t-1,!0),e[t]!==`
|
|
18
|
-
`&&e[t]!=="\r")throw new x("invalid escape: only line-ending whitespace may be escaped",{toml:e,ptr:r});t=C(e,t)}else if(d in H)o+=H[d];else throw new x("unrecognized escape sequence",{toml:e,ptr:r});c=t}else!a&&d==="\\"&&(r=t-1,i=!0,o+=e.slice(c,r))}return o+e.slice(c,s-1)}function Me(e,t,s,a){if(e==="true")return!0;if(e==="false")return!1;if(e==="-inf")return-1/0;if(e==="inf"||e==="+inf")return 1/0;if(e==="nan"||e==="+nan"||e==="-nan")return NaN;if(e==="-0")return a?0n:0;let l=Le.test(e);if(l||Re.test(e)){if(Fe.test(e))throw new x("leading zeroes are not allowed",{toml:t,ptr:s});e=e.replace(/_/g,"");let i=+e;if(isNaN(i))throw new x("invalid number",{toml:t,ptr:s});if(l){if((l=!Number.isSafeInteger(i))&&!a)throw new x("integer value cannot be represented losslessly",{toml:t,ptr:s});(l||a===!0)&&(i=BigInt(e))}return i}const r=new T(e);if(!r.isValid())throw new x("invalid value",{toml:t,ptr:s});return r}function ze(e,t,s){let a=e.slice(t,s),l=a.indexOf("#");return l>-1&&(R(e,l),a=a.slice(0,l)),[a.trimEnd(),l]}function X(e,t,s,a,l){if(a===0)throw new x("document contains excessively nested structures. aborting.",{toml:e,ptr:t});let r=e[t];if(r==="["||r==="{"){let[c,d]=r==="["?Ge(e,t,a,l):Be(e,t,a,l);if(s){if(d=C(e,d),e[d]===",")d++;else if(e[d]!==s)throw new x("expected comma or end of structure",{toml:e,ptr:d})}return[c,d]}let i;if(r==='"'||r==="'"){i=ne(e,t);let c=re(e,t,i);if(s){if(i=C(e,i),e[i]&&e[i]!==","&&e[i]!==s&&e[i]!==`
|
|
19
|
-
`&&e[i]!=="\r")throw new x("unexpected character encountered",{toml:e,ptr:i});i+=+(e[i]===",")}return[c,i]}i=Ae(e,t,",",s);let o=ze(e,t,i-+(e[i-1]===","));if(!o[0])throw new x("incomplete key-value declaration: no value specified",{toml:e,ptr:t});return s&&o[1]>-1&&(i=C(e,t+o[1]),i+=+(e[i]===",")),[Me(o[0],e,t,l),i]}let $e=/^[a-zA-Z0-9-_]+[ \t]*$/;function z(e,t,s="="){let a=t-1,l=[],r=e.indexOf(s,t);if(r<0)throw new x("incomplete key-value: cannot find end of key",{toml:e,ptr:t});do{let i=e[t=++a];if(i!==" "&&i!==" ")if(i==='"'||i==="'"){if(i===e[t+1]&&i===e[t+2])throw new x("multiline strings are not allowed in keys",{toml:e,ptr:t});let o=ne(e,t);if(o<0)throw new x("unfinished string encountered",{toml:e,ptr:t});a=e.indexOf(".",o);let c=e.slice(o,a<0||a>r?r:a),d=M(c);if(d>-1)throw new x("newlines are not allowed in keys",{toml:e,ptr:t+a+d});if(c.trimStart())throw new x("found extra tokens after the string part",{toml:e,ptr:o});if(r<o&&(r=e.indexOf(s,o),r<0))throw new x("incomplete key-value: cannot find end of key",{toml:e,ptr:t});l.push(re(e,t,o))}else{a=e.indexOf(".",t);let o=e.slice(t,a<0||a>r?r:a);if(!$e.test(o))throw new x("only letter, numbers, dashes and underscores are allowed in keys",{toml:e,ptr:t});l.push(o.trimEnd())}}while(a+1&&a<r);return[l,C(e,r+1,!0,!0)]}function Be(e,t,s,a){let l={},r=new Set,i;for(t++;(i=e[t++])!=="}"&&i;){if(i===",")throw new x("expected value, found comma",{toml:e,ptr:t-1});if(i==="#")t=R(e,t);else if(i!==" "&&i!==" "&&i!==`
|
|
20
|
-
`&&i!=="\r"){let o,c=l,d=!1,[p,v]=z(e,t-1);for(let g=0;g<p.length;g++){if(g&&(c=d?c[o]:c[o]={}),o=p[g],(d=Object.hasOwn(c,o))&&(typeof c[o]!="object"||r.has(c[o])))throw new x("trying to redefine an already defined value",{toml:e,ptr:t});!d&&o==="__proto__"&&Object.defineProperty(c,o,{enumerable:!0,configurable:!0,writable:!0})}if(d)throw new x("trying to redefine an already defined value",{toml:e,ptr:t});let[m,h]=X(e,v,"}",s-1,a);r.add(m),c[o]=m,t=h}}if(!i)throw new x("unfinished table encountered",{toml:e,ptr:t});return[l,t]}function Ge(e,t,s,a){let l=[],r;for(t++;(r=e[t++])!=="]"&&r;){if(r===",")throw new x("expected value, found comma",{toml:e,ptr:t-1});if(r==="#")t=R(e,t);else if(r!==" "&&r!==" "&&r!==`
|
|
21
|
-
`&&r!=="\r"){let i=X(e,t-1,"]",s-1,a);l.push(i[0]),t=i[1]}}if(!r)throw new x("unfinished array encountered",{toml:e,ptr:t});return[l,t]}function q(e,t,s,a){let l=t,r=s,i,o=!1,c;for(let d=0;d<e.length;d++){if(d){if(l=o?l[i]:l[i]={},r=(c=r[i]).c,a===0&&(c.t===1||c.t===2))return null;if(c.t===2){let p=l.length-1;l=l[p],r=r[p].c}}if(i=e[d],(o=Object.hasOwn(l,i))&&r[i]?.t===0&&r[i]?.d)return null;o||(i==="__proto__"&&(Object.defineProperty(l,i,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(r,i,{enumerable:!0,configurable:!0,writable:!0})),r[i]={t:d<e.length-1&&a===2?3:a,d:!1,i:0,c:{}})}if(c=r[i],c.t!==a&&!(a===1&&c.t===3)||(a===2&&(c.d||(c.d=!0,l[i]=[]),l[i].push(l={}),c.c[c.i++]=c={t:1,d:!1,i:0,c:{}}),c.d))return null;if(c.d=!0,a===1)l=o?l[i]:l[i]={};else if(a===0&&o)return null;return[i,l,c.c]}function Xe(e,{maxDepth:t=1e3,integersAsBigInt:s}={}){let a={},l={},r=a,i=l;for(let o=C(e,0);o<e.length;){if(e[o]==="["){let c=e[++o]==="[",d=z(e,o+=+c,"]");if(c){if(e[d[1]-1]!=="]")throw new x("expected end of table declaration",{toml:e,ptr:d[1]-1});d[1]++}let p=q(d[0],a,l,c?2:1);if(!p)throw new x("trying to redefine an already defined table or value",{toml:e,ptr:o});i=p[2],r=p[1],o=d[1]}else{let c=z(e,o),d=q(c[0],r,i,0);if(!d)throw new x("trying to redefine an already defined table or value",{toml:e,ptr:o});let p=X(e,c[1],void 0,t,s);d[1][d[0]]=p[0],o=p[1]}if(o=C(e,o,!0),e[o]&&e[o]!==`
|
|
22
|
-
`&&e[o]!=="\r")throw new x("each key-value declaration must be followed by an end-of-line",{toml:e,ptr:o});o=C(e,o)}return a}const K={CLAUDE_CODE:"Claude Code",GEMINI_CLI:"Gemini CLI",CURSOR_AGENT:"Cursor Agent",CODEX:"Codex"},D={key:"appendPrompt",label:"追加 Prompt",type:"textarea",rows:3,placeholder:"追加到每次 prompt 末尾的文本"},V={[j.CLAUDE_CODE]:[{key:"dangerouslySkipPermissions",label:"跳过权限确认",type:"switch"},{key:"model",label:"模型",type:"input",placeholder:"claude-sonnet-4-20250514"},D],[j.GEMINI_CLI]:[{key:"yolo",label:"跳过权限确认",type:"switch"},{key:"model",label:"模型",type:"input",placeholder:"gemini-2.5-pro"},D],[j.CURSOR_AGENT]:[{key:"force",label:"强制执行",type:"switch"},{key:"model",label:"模型",type:"select",options:[{value:"",label:"默认 (auto)"},{value:"claude-sonnet-4-20250514",label:"Claude Sonnet 4"},{value:"claude-sonnet-4-5-20250514",label:"Claude Sonnet 4.5"},{value:"gpt-4o",label:"GPT-4o"}]},D],[j.CODEX]:[{key:"dangerouslyBypassApprovalsAndSandbox",label:"跳过所有确认和沙盒",type:"switch"},{key:"model",label:"模型",type:"input",placeholder:"o3"},{key:"profile",label:"Profile",type:"input",placeholder:"~/.codex/config.toml 中的 profile 名称"},D]};function W(){return{}}function $(e,t){return{...t}}const Ke=JSON.stringify({env:{ANTHROPIC_API_KEY:"",ANTHROPIC_BASE_URL:""}},null,2),Ve=`# Codex config.toml 配置片段 — 通过 -c 参数注入,不会修改 ~/.codex/config.toml
|
|
23
|
-
# 参考: https://developers.openai.com/codex/config-sample
|
|
24
|
-
|
|
25
|
-
# ─── 模型与推理 ─────────────────────────────────────────────
|
|
26
|
-
# model_reasoning_effort = "medium" # minimal | low | medium | high | xhigh
|
|
27
|
-
# model_reasoning_summary = "auto" # auto | concise | detailed | none
|
|
28
|
-
# model_verbosity = "medium" # low | medium | high
|
|
29
|
-
# service_tier = "flex" # fast | flex
|
|
30
|
-
|
|
31
|
-
# ─── 自定义 Model Provider ──────────────────────────────────
|
|
32
|
-
# model_provider = "azure"
|
|
33
|
-
#
|
|
34
|
-
# [model_providers.azure]
|
|
35
|
-
# name = "Azure OpenAI"
|
|
36
|
-
# base_url = "https://YOUR_PROJECT.openai.azure.com/openai"
|
|
37
|
-
# env_key = "AZURE_OPENAI_API_KEY"
|
|
38
|
-
# env_key_instructions = "Set AZURE_OPENAI_API_KEY in Provider env"
|
|
39
|
-
# wire_api = "responses"
|
|
40
|
-
# query_params = { api-version = "2025-04-01-preview" }
|
|
41
|
-
|
|
42
|
-
# ─── OpenAI 数据驻留 ────────────────────────────────────────
|
|
43
|
-
# [model_providers.openai-us]
|
|
44
|
-
# name = "OpenAI US"
|
|
45
|
-
# base_url = "https://us.api.openai.com/v1"
|
|
46
|
-
# wire_api = "responses"
|
|
47
|
-
# requires_openai_auth = true
|
|
48
|
-
|
|
49
|
-
# ─── 本地 OSS (Ollama) ──────────────────────────────────────
|
|
50
|
-
# [model_providers.ollama]
|
|
51
|
-
# name = "Ollama"
|
|
52
|
-
# base_url = "http://localhost:11434/v1"
|
|
53
|
-
# wire_api = "responses"
|
|
54
|
-
`;function F(e){return e===j.CLAUDE_CODE?Ke:e===j.CODEX?Ve:""}function Ze(e){return e===j.CLAUDE_CODE||e===j.CODEX}const Je=Object.values(V).flat().reduce((e,t)=>(e[t.key]||(e[t.key]=t.label),e),{}),Ye=Object.values(V).flat().reduce((e,t)=>(t.options&&(e[t.key]=Object.fromEntries(t.options.map(s=>[s.value,s.label]))),e),{});function He(e,t){return typeof t=="boolean"?t?"是":"否":typeof t=="string"&&t?Ye[e]?.[t]??t:String(t)}function L(e,t){return e instanceof Error?e.message:t}function qe(e){return`agent-tower-provider-backup-${e.replace(/[:.]/g,"-")}.json`}function We(e,t){const s=new Blob([JSON.stringify(t,null,2)],{type:"application/json"}),a=URL.createObjectURL(s),l=document.createElement("a");l.href=a,l.download=e,document.body.appendChild(l),l.click(),document.body.removeChild(l),URL.revokeObjectURL(a)}function Qe(e){switch(e){case"CREATE":return{label:"新增",className:"text-green-700 bg-green-50"};case"OVERWRITE":return{label:"覆盖",className:"text-amber-700 bg-amber-50"};case"SKIP":return{label:"跳过",className:"text-neutral-600 bg-neutral-100"}}}function et({type:e}){return e==="LOGIN_DETECTED"||e==="INSTALLATION_FOUND"?n.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 text-xs text-green-700 bg-green-50 rounded",children:[n.jsx(we,{size:12}),"可用"]}):n.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 text-xs text-neutral-500 bg-neutral-50 rounded",children:[n.jsx(Ce,{size:12}),"不可用"]})}function U({title:e,defaultOpen:t=!1,children:s}){const[a,l]=N.useState(t);return n.jsxs("div",{className:"border border-neutral-200 rounded-lg",children:[n.jsxs("button",{type:"button",onClick:()=>l(r=>!r),className:"w-full flex items-center justify-between px-4 py-2.5 text-sm font-medium text-neutral-700 hover:bg-neutral-50 transition-colors rounded-lg",children:[e,n.jsx(Ne,{size:14,className:`transition-transform ${a?"rotate-180":""}`})]}),a&&n.jsx("div",{className:"px-4 pb-4 space-y-3",children:s})]})}function tt({agentType:e,config:t,onChange:s}){const a=V[e]??[];if(a.length===0)return n.jsx("p",{className:"text-xs text-neutral-400",children:"该类型暂无运行配置"});const l=(r,i)=>{s({...t,[r]:i})};return n.jsx("div",{className:"space-y-3",children:a.map(r=>r.type==="textarea"?n.jsxs("div",{children:[n.jsx("label",{className:"block text-sm text-neutral-700 mb-1",children:r.label}),n.jsx("textarea",{value:t[r.key]??"",onChange:i=>l(r.key,i.target.value||void 0),placeholder:r.placeholder,rows:r.rows??3,className:"w-full px-3 py-1.5 text-sm border border-neutral-200 rounded focus:outline-none focus:ring-1 focus:ring-neutral-900"})]},r.key):n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx("label",{className:"text-sm text-neutral-700 w-32 shrink-0",children:r.label}),r.type==="switch"&&n.jsxs("label",{className:"relative inline-flex items-center cursor-pointer",children:[n.jsx("input",{type:"checkbox",checked:!!t[r.key],onChange:i=>l(r.key,i.target.checked),className:"sr-only peer"}),n.jsx("div",{className:"w-9 h-5 bg-neutral-200 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-neutral-300 after:border after:rounded-full after:h-4 after:w-4 after:transition-all peer-checked:bg-neutral-900"})]}),r.type==="input"&&n.jsx("input",{type:"text",value:t[r.key]??"",onChange:i=>l(r.key,i.target.value||void 0),placeholder:r.placeholder,className:"flex-1 px-3 py-1.5 text-sm border border-neutral-200 rounded focus:outline-none focus:ring-1 focus:ring-neutral-900"}),r.type==="select"&&r.options&&n.jsx(ee,{value:t[r.key]??"",onChange:i=>l(r.key,i||void 0),options:r.options,placeholder:"选择..."})]},r.key))})}function nt({isOpen:e,onClose:t,initialData:s,onSave:a}){const[l,r]=N.useState(s??{name:"",agentType:j.CLAUDE_CODE,config:W(),settings:"",env:[],isDefault:!1}),[i,o]=N.useState("");N.useEffect(()=>{if(!s&&!l.settings){const m=F(l.agentType);m&&r(h=>({...h,settings:m}))}},[]);const c=m=>{r(h=>({...h,agentType:m,config:W(),settings:F(m)}))},d=()=>{o("");const m=$(l.agentType,l.config),h={};for(const[y,k]of Object.entries(m))k!==void 0&&k!==""&&(h[y]=k);const g=l.settings.trim();if(g){if(l.agentType===j.CODEX)try{Xe(g)}catch(y){o(`TOML 语法错误: ${y instanceof Error?y.message:String(y)}`);return}else if(l.agentType===j.CLAUDE_CODE)try{JSON.parse(g)}catch{o("JSON 语法错误");return}}const b={};for(const{key:y,value:k}of l.env){const S=y.trim();S&&(b[S]=k)}const w={name:l.name,agentType:l.agentType,config:h,settings:g||void 0,env:Object.keys(b).length>0?b:void 0,isDefault:l.isDefault};a(w)};if(!e)return null;const p=Ze(l.agentType),v=l.agentType===j.CODEX;return n.jsx(G,{isOpen:e,onClose:t,title:s?"编辑 Provider":"新建 Provider",className:"max-w-2xl",children:n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[n.jsxs("div",{children:[n.jsx("label",{className:"block text-xs font-medium text-neutral-700 mb-1",children:"名称"}),n.jsx("input",{type:"text",value:l.name,onChange:m=>r(h=>({...h,name:m.target.value})),className:"w-full px-3 py-2 text-sm border border-neutral-200 rounded focus:outline-none focus:ring-1 focus:ring-neutral-900",placeholder:"例如: Claude Code (官方)"})]}),!s&&n.jsxs("div",{children:[n.jsx("label",{className:"block text-xs font-medium text-neutral-700 mb-1",children:"Agent 类型"}),n.jsx(ee,{value:l.agentType,onChange:m=>c(m),options:Object.values(j).map(m=>({value:m,label:K[m]??m})),placeholder:"选择 Agent 类型"})]})]}),n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("input",{type:"checkbox",id:"isDefault",checked:l.isDefault,onChange:m=>r(h=>({...h,isDefault:m.target.checked})),className:"w-4 h-4"}),n.jsx("label",{htmlFor:"isDefault",className:"text-sm text-neutral-700",children:"设为该类型的默认 Provider"})]}),n.jsx(U,{title:"运行配置",defaultOpen:!0,children:n.jsx(tt,{agentType:l.agentType,config:l.config,onChange:m=>r(h=>({...h,config:m}))})}),n.jsxs(U,{title:"环境变量",defaultOpen:l.env.length>0,children:[n.jsxs("p",{className:"text-xs text-neutral-500 mb-2",children:["注入到 Agent 进程的环境变量。Codex 的 ",n.jsx("code",{className:"bg-neutral-100 px-1 rounded",children:"env_key"})," 指定的是变量名,实际值需在此处设置。"]}),n.jsxs("div",{className:"space-y-2",children:[l.env.map((m,h)=>n.jsxs("div",{className:"flex gap-2 items-center",children:[n.jsx("input",{type:"text",value:m.key,onChange:g=>{const b=[...l.env];b[h]={...b[h],key:g.target.value},r(w=>({...w,env:b}))},placeholder:"变量名,如 AZURE_OPENAI_API_KEY",className:"flex-1 px-3 py-1.5 text-sm font-mono border border-neutral-200 rounded focus:outline-none focus:ring-1 focus:ring-neutral-900"}),n.jsx("input",{type:"text",value:m.value,onChange:g=>{const b=[...l.env];b[h]={...b[h],value:g.target.value},r(w=>({...w,env:b}))},placeholder:"值",className:"flex-1 px-3 py-1.5 text-sm font-mono border border-neutral-200 rounded focus:outline-none focus:ring-1 focus:ring-neutral-900"}),n.jsx("button",{type:"button",onClick:()=>{const g=l.env.filter((b,w)=>w!==h);r(b=>({...b,env:g}))},className:"p-1.5 text-neutral-400 hover:text-red-500",children:n.jsx(Q,{size:14})})]},h)),n.jsxs(E,{variant:"outline",size:"sm",onClick:()=>r(m=>({...m,env:[...m.env,{key:"",value:""}]})),children:[n.jsx(te,{size:12,className:"mr-1"}),"添加变量"]})]})]}),p&&n.jsxs(U,{title:v?"CLI 原生配置 (config.toml)":"CLI 原生配置 (settings.json)",children:[n.jsx("p",{className:"text-xs text-neutral-500 mb-2",children:v?n.jsxs(n.Fragment,{children:["直接填写 Codex ",n.jsx("code",{className:"bg-neutral-100 px-1 rounded",children:"config.toml"})," 格式的配置片段, 通过 ",n.jsx("code",{className:"bg-neutral-100 px-1 rounded",children:"-c"})," 参数注入。 不会修改你的 ",n.jsx("code",{className:"bg-neutral-100 px-1 rounded",children:"~/.codex/config.toml"})," 文件。"]}):n.jsxs(n.Fragment,{children:["对应 Claude Code 的 ",n.jsx("code",{className:"bg-neutral-100 px-1 rounded",children:"~/.claude/settings.json"}),", 通过 ",n.jsx("code",{className:"bg-neutral-100 px-1 rounded",children:"--settings"})," 参数注入。 在 ",n.jsx("code",{className:"bg-neutral-100 px-1 rounded",children:"env"})," 中设置 ANTHROPIC_API_KEY、ANTHROPIC_BASE_URL 等。"]})}),n.jsx("textarea",{value:l.settings,onChange:m=>{r(h=>({...h,settings:m.target.value})),o("")},rows:10,className:"w-full px-3 py-2 text-sm font-mono border border-neutral-200 rounded focus:outline-none focus:ring-1 focus:ring-neutral-900 bg-neutral-50",placeholder:F(l.agentType)}),i&&n.jsx("p",{className:"mt-1 text-xs text-red-600",children:i})]}),n.jsxs("div",{className:"flex justify-end gap-2 pt-2",children:[n.jsx(E,{variant:"outline",onClick:t,children:"取消"}),n.jsx(E,{onClick:d,disabled:!l.name.trim(),children:"保存"})]})]})})}function rt({isOpen:e,onClose:t,onConfirm:s,acknowledged:a,onAcknowledgedChange:l,isLoading:r}){return n.jsx(G,{isOpen:e,onClose:t,title:"导出 Provider 备份",className:"max-w-xl",action:n.jsxs(n.Fragment,{children:[n.jsx(E,{variant:"outline",onClick:t,disabled:r,children:"取消"}),n.jsx(E,{onClick:s,disabled:!a||r,children:r?"导出中...":"导出备份"})]}),children:n.jsxs("div",{className:"space-y-4",children:[n.jsx("div",{className:"rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-900",children:"导出的备份文件将包含完整的 Provider 配置,包括环境变量、CLI settings 等敏感信息。任何拿到文件的人都可能直接使用这些 Provider。"}),n.jsxs("div",{className:"text-sm text-neutral-600 space-y-2",children:[n.jsx("p",{children:"这个功能用于备份和迁移,不用于分享配置。"}),n.jsx("p",{children:"导出内容只包含用户层配置:自定义 Provider,以及对内置 Provider 的覆盖。"})]}),n.jsxs("label",{className:"flex items-start gap-3 rounded-lg border border-neutral-200 px-4 py-3 text-sm text-neutral-700",children:[n.jsx("input",{type:"checkbox",checked:a,onChange:i=>l(i.target.checked),className:"mt-0.5 h-4 w-4"}),n.jsx("span",{children:"我已知晓该备份文件包含敏感信息,只会保存在安全位置。"})]})]})})}function lt({isOpen:e,onClose:t,preview:s,backup:a,onConfirm:l,isLoading:r}){if(!s||!a)return null;const i=s.summary.create+s.summary.overwrite,o=[...s.items].sort((c,d)=>{const p={CREATE:0,OVERWRITE:1,SKIP:2};return p[c.action]-p[d.action]});return n.jsx(G,{isOpen:e,onClose:t,title:"导入 Provider 备份",className:"max-w-3xl",action:n.jsxs(n.Fragment,{children:[n.jsx(E,{variant:"outline",onClick:t,disabled:r,children:"取消"}),n.jsx(E,{onClick:l,disabled:i===0||r,children:r?"导入中...":`确认导入 ${i} 项`})]}),children:n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"rounded-lg border border-neutral-200 bg-neutral-50 px-4 py-3 text-sm text-neutral-600",children:[n.jsxs("div",{children:["导出时间:",new Date(a.exportedAt).toLocaleString()]}),n.jsx("div",{children:"模式:完整备份(含敏感信息)"}),n.jsxs("div",{children:["文件内 Provider 数量:",a.providers.length]})]}),n.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[n.jsxs("div",{className:"rounded-lg border border-green-200 bg-green-50 px-4 py-3",children:[n.jsx("div",{className:"text-xs text-green-700",children:"新增"}),n.jsx("div",{className:"text-lg font-semibold text-green-900",children:s.summary.create})]}),n.jsxs("div",{className:"rounded-lg border border-amber-200 bg-amber-50 px-4 py-3",children:[n.jsx("div",{className:"text-xs text-amber-700",children:"覆盖"}),n.jsx("div",{className:"text-lg font-semibold text-amber-900",children:s.summary.overwrite})]}),n.jsxs("div",{className:"rounded-lg border border-neutral-200 bg-neutral-50 px-4 py-3",children:[n.jsx("div",{className:"text-xs text-neutral-500",children:"跳过"}),n.jsx("div",{className:"text-lg font-semibold text-neutral-900",children:s.summary.skip})]})]}),n.jsx("div",{className:"max-h-[420px] overflow-y-auto space-y-3 pr-1",children:o.map(c=>{const d=Qe(c.action);return n.jsxs("div",{className:"rounded-lg border border-neutral-200 px-4 py-3",children:[n.jsx("div",{className:"flex items-center justify-between gap-3",children:n.jsxs("div",{className:"min-w-0",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("h4",{className:"truncate text-sm font-medium text-neutral-900",children:c.incoming.name}),n.jsx("span",{className:`inline-flex rounded px-2 py-0.5 text-xs ${d.className}`,children:d.label})]}),n.jsxs("div",{className:"mt-1 text-xs text-neutral-500",children:[K[c.incoming.agentType]??c.incoming.agentType," · ",n.jsx("code",{className:"rounded bg-neutral-100 px-1 py-0.5",children:c.incoming.id})]})]})}),c.action==="OVERWRITE"&&c.existing&&n.jsxs("p",{className:"mt-2 text-xs text-amber-700",children:["将覆盖当前已有的 Provider:",c.existing.name]}),c.action==="SKIP"&&n.jsx("p",{className:"mt-2 text-xs text-neutral-500",children:"当前同 ID Provider 配置一致,本次不会重复写入。"}),c.action==="CREATE"&&n.jsx("p",{className:"mt-2 text-xs text-green-700",children:"当前不存在同 ID Provider,将直接新增。"})]},c.incoming.id)})})]})})}function ht(){const{data:e,isLoading:t}=fe(),s=xe(),a=pe(),l=he(),r=ge(),i=be(),o=ve(),c=N.useRef(null),[d,p]=N.useState(null),[v,m]=N.useState(null),[h,g]=N.useState(!1),[b,w]=N.useState(!1),[y,k]=N.useState(null),S=u=>{s.mutate(u,{onSuccess:()=>p(null)})},le=(u,f)=>{a.mutate({id:u,data:f},{onSuccess:()=>p(null)})},se=u=>{if(!(u.deletable??!u.builtIn)){P.error("系统内置 Provider 不可删除");return}m({id:u.id,name:u.name,builtIn:u.builtIn})},ie=()=>{v&&l.mutate(v.id,{onSuccess:()=>{P.success(v.builtIn?"已恢复默认 Provider 配置":"Provider 已删除"),m(null)},onError:u=>{P.error(L(u,"删除 Provider 失败"))}})},Z=()=>{g(!1),w(!1)},J=()=>{k(null)},ae=()=>{r.mutate(void 0,{onSuccess:u=>{We(qe(u.exportedAt),u),P.success("Provider 备份已导出"),Z()},onError:u=>{P.error(L(u,"导出 Provider 备份失败"))}})},oe=()=>{c.current&&(c.current.value="",c.current.click())},ce=async u=>{const f=u.target.files?.[0];if(u.target.value="",!f)return;let _;try{_=JSON.parse(await f.text())}catch{P.error("备份文件不是有效的 JSON");return}i.mutate(_,{onSuccess:O=>{k({backup:_,preview:O})},onError:O=>{P.error(L(O,"导入预览失败"))}})},de=()=>{y&&o.mutate(y.backup,{onSuccess:u=>{const f=u.summary.create+u.summary.overwrite;P.success(f===0?"导入完成,当前配置无需变更":`导入完成:新增 ${u.summary.create},覆盖 ${u.summary.overwrite},跳过 ${u.summary.skip}`),J()},onError:u=>{P.error(L(u,"导入 Provider 备份失败"))}})},ue=u=>{const f=u.provider,_=f.env?Object.entries(f.env).map(([O,A])=>({key:O,value:A})):[];p({id:f.id,data:{name:f.name,agentType:f.agentType,config:$(f.agentType,f.config),settings:f.settings??"",env:_,isDefault:f.isDefault}})};if(t)return n.jsx("div",{className:"p-6 text-sm text-neutral-400",children:"加载中..."});const Y=e??[];return n.jsxs("div",{className:"px-10 py-6 mx-auto w-full max-w-4xl",children:[n.jsx("input",{ref:c,type:"file",accept:".json,application/json",className:"hidden",onChange:ce}),n.jsxs("div",{className:"flex items-center justify-between mb-6",children:[n.jsxs("div",{children:[n.jsx("h2",{className:"text-lg font-semibold text-neutral-900",children:"Provider 配置"}),n.jsx("p",{className:"text-sm text-neutral-500 mt-1",children:"管理 AI Agent 的连接配置和运行参数"})]}),n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsxs(E,{variant:"outline",onClick:oe,disabled:i.isPending||o.isPending,children:[n.jsx(Oe,{size:14}),"导入备份"]}),n.jsxs(E,{variant:"outline",onClick:()=>g(!0),disabled:r.isPending,children:[n.jsx(ke,{size:14}),"导出备份"]}),n.jsxs(E,{onClick:()=>p({}),children:[n.jsx(te,{size:14,className:"mr-1"}),"新建 Provider"]})]})]}),Y.length===0?n.jsx("div",{className:"text-center py-12 text-sm text-neutral-400",children:"暂无 Provider 配置"}):n.jsx("div",{className:"space-y-3",children:Y.map(u=>{const f=u.provider,_=u.availability,O=$(f.agentType,f.config),A=Object.entries(O).filter(([I])=>I!=="cmd");return n.jsx("div",{className:"border border-neutral-200 rounded-lg p-4 hover:border-neutral-300 transition-colors",children:n.jsxs("div",{className:"flex items-start justify-between",children:[n.jsxs("div",{className:"flex-1",children:[n.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[n.jsx("h3",{className:"text-sm font-medium text-neutral-900",children:f.name}),n.jsx(et,{type:_.type}),f.isDefault&&n.jsx("span",{className:"px-2 py-0.5 text-xs text-blue-700 bg-blue-50 rounded",children:"默认"}),f.builtIn&&n.jsx("span",{className:"px-2 py-0.5 text-xs text-neutral-500 bg-neutral-50 rounded",children:"内置"})]}),n.jsx("p",{className:"text-xs text-neutral-500 mb-2",children:K[f.agentType]??f.agentType}),A.length>0&&n.jsx("div",{className:"text-xs text-neutral-600 mb-1",children:A.map(([I,me])=>n.jsxs("span",{className:"inline-flex items-center mr-3",children:[n.jsxs("span",{className:"font-medium",children:[Je[I]??I,":"]})," ",He(I,me)]},I))}),f.settings?.trim()&&n.jsxs("div",{className:"text-xs text-neutral-600",children:[n.jsx("span",{className:"font-medium",children:"CLI 配置:"})," 已配置"]}),Object.keys(f.env).length>0&&!f.settings&&n.jsxs("div",{className:"text-xs text-neutral-600",children:[n.jsx("span",{className:"font-medium",children:"环境变量:"})," ",Object.keys(f.env).join(", ")]})]}),n.jsxs("div",{className:"flex items-center gap-1 ml-4",children:[n.jsx("button",{onClick:()=>ue(u),className:"p-2 text-neutral-400 hover:text-neutral-900 transition-colors",title:"编辑",children:n.jsx(je,{size:14})}),n.jsx("button",{onClick:()=>se(f),className:"p-2 text-neutral-400 hover:text-red-600 transition-colors",title:f.deletable===!1?"系统内置 Provider 不可删除":f.builtIn?"删除自定义覆盖并恢复默认":"删除",disabled:f.deletable===!1,children:n.jsx(Q,{size:14})})]})]})},f.id)})}),d&&n.jsx(nt,{isOpen:!0,onClose:()=>p(null),initialData:d.data,onSave:u=>{d.id?le(d.id,u):S(u)}}),n.jsx(ye,{isOpen:v!==null,onClose:()=>{l.isPending||m(null)},onConfirm:ie,title:v?.builtIn?"恢复默认 Provider":"删除 Provider",description:v?.builtIn?`确定删除 "${v?.name}" 的自定义覆盖,并恢复系统默认配置?`:`确定删除 "${v?.name}"?此操作不可撤销。`,confirmText:v?.builtIn?"恢复默认":"删除",cancelText:"取消",variant:"danger",isLoading:l.isPending}),n.jsx(rt,{isOpen:h,onClose:Z,onConfirm:ae,acknowledged:b,onAcknowledgedChange:w,isLoading:r.isPending}),n.jsx(lt,{isOpen:!!y,onClose:J,preview:y?.preview??null,backup:y?.backup??null,onConfirm:de,isLoading:o.isPending})]})}export{ht as ProviderSettingsPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-950:oklch(25.8% .092 26.042);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-green-50:oklch(98.2% .018 155.826);--color-green-200:oklch(92.5% .084 155.995);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-900:oklch(39.3% .095 152.535);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-800:oklch(43.2% .095 166.913);--color-emerald-950:oklch(26.2% .051 172.552);--color-teal-600:oklch(60% .118 184.704);--color-cyan-600:oklch(60.9% .126 221.723);--color-sky-600:oklch(58.8% .158 241.966);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-950:oklch(28.2% .091 267.935);--color-indigo-600:oklch(51.1% .262 276.966);--color-violet-600:oklch(54.1% .281 293.009);--color-pink-600:oklch(59.2% .249 .584);--color-rose-600:oklch(58.6% .253 17.585);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-neutral-50:oklch(98.5% 0 0);--color-neutral-100:oklch(97% 0 0);--color-neutral-200:oklch(92.2% 0 0);--color-neutral-300:oklch(87% 0 0);--color-neutral-400:oklch(70.8% 0 0);--color-neutral-500:oklch(55.6% 0 0);--color-neutral-600:oklch(43.9% 0 0);--color-neutral-700:oklch(37.1% 0 0);--color-neutral-800:oklch(26.9% 0 0);--color-neutral-900:oklch(20.5% 0 0);--color-neutral-950:oklch(14.5% 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-relaxed:1.625;--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0,0,.2,1)infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html{font-size:16px}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring)50%,transparent)}}body{background-color:var(--background);color:var(--foreground);-webkit-tap-highlight-color:transparent}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.-top-1\.5{top:calc(var(--spacing)*-1.5)}.top-0{top:calc(var(--spacing)*0)}.top-0\.5{top:calc(var(--spacing)*.5)}.top-1\/2{top:50%}.top-full{top:100%}.-right-1\.5{right:calc(var(--spacing)*-1.5)}.right-0{right:calc(var(--spacing)*0)}.right-0\.5{right:calc(var(--spacing)*.5)}.right-2{right:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.bottom-2{bottom:calc(var(--spacing)*2)}.bottom-3{bottom:calc(var(--spacing)*3)}.bottom-6{bottom:calc(var(--spacing)*6)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing)*0)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing)*2)}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.z-\[101\]{z-index:101}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-1{margin-inline:calc(var(--spacing)*1)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-3{margin-inline:calc(var(--spacing)*3)}.mx-6{margin-inline:calc(var(--spacing)*6)}.mx-auto{margin-inline:auto}.my-0\.5{margin-block:calc(var(--spacing)*.5)}.my-1{margin-block:calc(var(--spacing)*1)}.my-1\.5{margin-block:calc(var(--spacing)*1.5)}.my-2{margin-block:calc(var(--spacing)*2)}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);margin-top:1.2em;margin-bottom:1.2em;font-size:1.25em;line-height:1.6}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:decimal}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:disc}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.25em;font-weight:600}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em;font-style:italic;font-weight:500}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:0;margin-bottom:.888889em;font-size:2.25em;font-weight:800;line-height:1.11111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:700;line-height:1.33333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;display:block}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;border-radius:.3125rem;padding-inline-start:.375em;font-family:inherit;font-size:.875em;font-weight:500}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);padding-top:.857143em;padding-inline-end:1.14286em;padding-bottom:.857143em;border-radius:.375rem;margin-top:1.71429em;margin-bottom:1.71429em;padding-inline-start:1.14286em;font-size:.875em;font-weight:400;line-height:1.71429;overflow-x:auto}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;background-color:#0000;border-width:0;border-radius:0;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){table-layout:auto;width:100%;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);vertical-align:bottom;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em;font-weight:600}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);margin-top:.857143em;font-size:.875em;line-height:1.42857}.prose{--tw-prose-body:oklch(37.3% .034 259.733);--tw-prose-headings:oklch(21% .034 264.665);--tw-prose-lead:oklch(44.6% .03 256.802);--tw-prose-links:oklch(21% .034 264.665);--tw-prose-bold:oklch(21% .034 264.665);--tw-prose-counters:oklch(55.1% .027 264.364);--tw-prose-bullets:oklch(87.2% .01 258.338);--tw-prose-hr:oklch(92.8% .006 264.531);--tw-prose-quotes:oklch(21% .034 264.665);--tw-prose-quote-borders:oklch(92.8% .006 264.531);--tw-prose-captions:oklch(55.1% .027 264.364);--tw-prose-kbd:oklch(21% .034 264.665);--tw-prose-kbd-shadows:oklab(21% -.00316127 -.0338527/.1);--tw-prose-code:oklch(21% .034 264.665);--tw-prose-pre-code:oklch(92.8% .006 264.531);--tw-prose-pre-bg:oklch(27.8% .033 256.848);--tw-prose-th-borders:oklch(87.2% .01 258.338);--tw-prose-td-borders:oklch(92.8% .006 264.531);--tw-prose-invert-body:oklch(87.2% .01 258.338);--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:oklch(70.7% .022 261.325);--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:oklch(70.7% .022 261.325);--tw-prose-invert-bullets:oklch(44.6% .03 256.802);--tw-prose-invert-hr:oklch(37.3% .034 259.733);--tw-prose-invert-quotes:oklch(96.7% .003 264.542);--tw-prose-invert-quote-borders:oklch(37.3% .034 259.733);--tw-prose-invert-captions:oklch(70.7% .022 261.325);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:#ffffff1a;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:oklch(87.2% .01 258.338);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(44.6% .03 256.802);--tw-prose-invert-td-borders:oklch(37.3% .034 259.733);font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.571429em;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.71429}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.888889em;margin-bottom:.888889em;font-size:1.28571em;line-height:1.55556}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.33333em;margin-bottom:1.33333em;padding-inline-start:1.11111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:.8em;font-size:2.14286em;line-height:1.2}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.6em;margin-bottom:.8em;font-size:1.42857em;line-height:1.4}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.55556em;margin-bottom:.444444em;font-size:1.28571em;line-height:1.55556}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.42857em;margin-bottom:.571429em;line-height:1.42857}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.142857em;padding-inline-end:.357143em;padding-bottom:.142857em;border-radius:.3125rem;padding-inline-start:.357143em;font-size:.857143em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.666667em;padding-inline-end:1em;padding-bottom:.666667em;border-radius:.25rem;margin-top:1.66667em;margin-bottom:1.66667em;padding-inline-start:1em;font-size:.857143em;line-height:1.66667}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em;padding-inline-start:1.57143em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.285714em;margin-bottom:.285714em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.428571em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.571429em;margin-bottom:.571429em}.prose-sm :where(.prose-sm>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(.prose-sm>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.prose-sm :where(.prose-sm>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(.prose-sm>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.571429em;margin-bottom:.571429em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.285714em;padding-inline-start:1.57143em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2.85714em;margin-bottom:2.85714em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.666667em;padding-inline-start:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.666667em;padding-inline-end:1em;padding-bottom:.666667em;padding-inline-start:1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.666667em;font-size:.857143em;line-height:1.33333}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-1\.5{margin-right:calc(var(--spacing)*1.5)}.mr-2{margin-right:calc(var(--spacing)*2)}.mr-3{margin-right:calc(var(--spacing)*3)}.mr-8{margin-right:calc(var(--spacing)*8)}.-mb-px{margin-bottom:-1px}.mb-0\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.-ml-0\.5{margin-left:calc(var(--spacing)*-.5)}.-ml-\[2px\]{margin-left:-2px}.ml-0\.5{margin-left:calc(var(--spacing)*.5)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-1\.5{margin-left:calc(var(--spacing)*1.5)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-3{margin-left:calc(var(--spacing)*3)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-5{margin-left:calc(var(--spacing)*5)}.ml-8{margin-left:calc(var(--spacing)*8)}.ml-\[22px\]{margin-left:22px}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-12{height:calc(var(--spacing)*12)}.h-14{height:calc(var(--spacing)*14)}.h-16{height:calc(var(--spacing)*16)}.h-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-28{max-height:calc(var(--spacing)*28)}.max-h-40{max-height:calc(var(--spacing)*40)}.max-h-\[200px\]{max-height:200px}.max-h-\[240px\]{max-height:240px}.max-h-\[420px\]{max-height:420px}.max-h-full{max-height:100%}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-\[40px\]{min-height:40px}.min-h-\[200px\]{min-height:200px}.min-h-screen{min-height:100vh}.w-1{width:calc(var(--spacing)*1)}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-2{width:calc(var(--spacing)*2)}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-14{width:calc(var(--spacing)*14)}.w-16{width:calc(var(--spacing)*16)}.w-28{width:calc(var(--spacing)*28)}.w-32{width:calc(var(--spacing)*32)}.w-40{width:calc(var(--spacing)*40)}.w-44{width:calc(var(--spacing)*44)}.w-48{width:calc(var(--spacing)*48)}.w-56{width:calc(var(--spacing)*56)}.w-72{width:calc(var(--spacing)*72)}.w-80{width:calc(var(--spacing)*80)}.w-\[14px\]{width:14px}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-\[85\%\]{max-width:85%}.max-w-\[120px\]{max-width:120px}.max-w-\[200px\]{max-width:200px}.max-w-\[240px\]{max-width:240px}.max-w-\[280px\]{max-width:280px}.max-w-\[300px\]{max-width:300px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-\[40px\]{min-width:40px}.min-w-\[120px\]{min-width:120px}.min-w-\[160px\]{min-width:160px}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.origin-top-left{transform-origin:0 0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-\[3px\]{--tw-translate-x:3px;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-\[18px\]{--tw-translate-x:18px;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-2{--tw-translate-y:calc(var(--spacing)*2);translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.list-none{list-style-type:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-px>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(1px*var(--tw-space-y-reverse));margin-block-end:calc(1px*calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-neutral-100>:not(:last-child)){border-color:var(--color-neutral-100)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-none{overscroll-behavior:none}.overscroll-y-contain{overscroll-behavior-y:contain}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:calc(var(--radius) + 8px)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-t-md{border-top-left-radius:calc(var(--radius) - 2px);border-top-right-radius:calc(var(--radius) - 2px)}.rounded-tr-sm{border-top-right-radius:calc(var(--radius) - 4px)}.rounded-b-xl{border-bottom-right-radius:calc(var(--radius) + 4px);border-bottom-left-radius:calc(var(--radius) + 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.\!border-neutral-800{border-color:var(--color-neutral-800)!important}.border-\[\#333\]{border-color:#333}.border-\[\#444\]{border-color:#444}.border-amber-100{border-color:var(--color-amber-100)}.border-amber-200{border-color:var(--color-amber-200)}.border-blue-100{border-color:var(--color-blue-100)}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-400{border-color:var(--color-blue-400)}.border-emerald-100{border-color:var(--color-emerald-100)}.border-emerald-200{border-color:var(--color-emerald-200)}.border-emerald-300{border-color:var(--color-emerald-300)}.border-green-200{border-color:var(--color-green-200)}.border-neutral-50{border-color:var(--color-neutral-50)}.border-neutral-100{border-color:var(--color-neutral-100)}.border-neutral-200{border-color:var(--color-neutral-200)}.border-neutral-300{border-color:var(--color-neutral-300)}.border-neutral-400{border-color:var(--color-neutral-400)}.border-neutral-800{border-color:var(--color-neutral-800)}.border-neutral-900{border-color:var(--color-neutral-900)}.border-red-100{border-color:var(--color-red-100)}.border-red-200{border-color:var(--color-red-200)}.border-transparent{border-color:#0000}.border-t-neutral-900{border-top-color:var(--color-neutral-900)}.\!bg-neutral-900{background-color:var(--color-neutral-900)!important}.bg-\[\#1e1e1e\]{background-color:#1e1e1e}.bg-\[\#2d2d2d\]{background-color:#2d2d2d}.bg-\[\#333\]{background-color:#333}.bg-\[\#444\]{background-color:#444}.bg-\[\#252526\]{background-color:#252526}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-amber-400{background-color:var(--color-amber-400)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500)10%,transparent)}}.bg-amber-500\/20{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/20{background-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.bg-background{background-color:var(--background)}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-50\/50{background-color:#eff6ff80}@supports (color:color-mix(in lab,red,red)){.bg-blue-50\/50{background-color:color-mix(in oklab,var(--color-blue-50)50%,transparent)}}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-400{background-color:var(--color-blue-400)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-950\/30{background-color:#1624564d}@supports (color:color-mix(in lab,red,red)){.bg-blue-950\/30{background-color:color-mix(in oklab,var(--color-blue-950)30%,transparent)}}.bg-card{background-color:var(--card)}.bg-destructive{background-color:var(--destructive)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-50\/50{background-color:#ecfdf580}@supports (color:color-mix(in lab,red,red)){.bg-emerald-50\/50{background-color:color-mix(in oklab,var(--color-emerald-50)50%,transparent)}}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-400{background-color:var(--color-emerald-400)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-600{background-color:var(--color-emerald-600)}.bg-emerald-950\/40{background-color:#002c2266}@supports (color:color-mix(in lab,red,red)){.bg-emerald-950\/40{background-color:color-mix(in oklab,var(--color-emerald-950)40%,transparent)}}.bg-gray-100{background-color:var(--color-gray-100)}.bg-green-50{background-color:var(--color-green-50)}.bg-neutral-50{background-color:var(--color-neutral-50)}.bg-neutral-50\/50{background-color:#fafafa80}@supports (color:color-mix(in lab,red,red)){.bg-neutral-50\/50{background-color:color-mix(in oklab,var(--color-neutral-50)50%,transparent)}}.bg-neutral-50\/80{background-color:#fafafacc}@supports (color:color-mix(in lab,red,red)){.bg-neutral-50\/80{background-color:color-mix(in oklab,var(--color-neutral-50)80%,transparent)}}.bg-neutral-50\/90{background-color:#fafafae6}@supports (color:color-mix(in lab,red,red)){.bg-neutral-50\/90{background-color:color-mix(in oklab,var(--color-neutral-50)90%,transparent)}}.bg-neutral-100{background-color:var(--color-neutral-100)}.bg-neutral-100\/60{background-color:#f5f5f599}@supports (color:color-mix(in lab,red,red)){.bg-neutral-100\/60{background-color:color-mix(in oklab,var(--color-neutral-100)60%,transparent)}}.bg-neutral-100\/80{background-color:#f5f5f5cc}@supports (color:color-mix(in lab,red,red)){.bg-neutral-100\/80{background-color:color-mix(in oklab,var(--color-neutral-100)80%,transparent)}}.bg-neutral-200{background-color:var(--color-neutral-200)}.bg-neutral-200\/60{background-color:#e5e5e599}@supports (color:color-mix(in lab,red,red)){.bg-neutral-200\/60{background-color:color-mix(in oklab,var(--color-neutral-200)60%,transparent)}}.bg-neutral-300{background-color:var(--color-neutral-300)}.bg-neutral-400{background-color:var(--color-neutral-400)}.bg-neutral-500{background-color:var(--color-neutral-500)}.bg-neutral-700{background-color:var(--color-neutral-700)}.bg-neutral-900{background-color:var(--color-neutral-900)}.bg-neutral-950{background-color:var(--color-neutral-950)}.bg-primary{background-color:var(--primary)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-950\/40{background-color:#46080966}@supports (color:color-mix(in lab,red,red)){.bg-red-950\/40{background-color:color-mix(in oklab,var(--color-red-950)40%,transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/60{background-color:#fff9}@supports (color:color-mix(in lab,red,red)){.bg-white\/60{background-color:color-mix(in oklab,var(--color-white)60%,transparent)}}.bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab,red,red)){.bg-white\/80{background-color:color-mix(in oklab,var(--color-white)80%,transparent)}}.bg-white\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.bg-white\/90{background-color:color-mix(in oklab,var(--color-white)90%,transparent)}}.bg-\[repeating-conic-gradient\(\#f3f3f3_0\%_25\%\,\#fff_0\%_50\%\)\]{background-image:repeating-conic-gradient(#f3f3f3 0% 25%,#fff 0% 50%)}.bg-\[length\:16px_16px\]{background-size:16px 16px}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0\.5{padding:calc(var(--spacing)*.5)}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-2\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-3\.5{padding-inline:calc(var(--spacing)*3.5)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.px-10{padding-inline:calc(var(--spacing)*10)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-3\.5{padding-block:calc(var(--spacing)*3.5)}.py-4{padding-block:calc(var(--spacing)*4)}.py-5{padding-block:calc(var(--spacing)*5)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-12{padding-block:calc(var(--spacing)*12)}.py-16{padding-block:calc(var(--spacing)*16)}.py-\[3px\]{padding-block:3px}.pt-0\.5{padding-top:calc(var(--spacing)*.5)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-1\.5{padding-top:calc(var(--spacing)*1.5)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-2\.5{padding-top:calc(var(--spacing)*2.5)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-6{padding-top:calc(var(--spacing)*6)}.pr-1{padding-right:calc(var(--spacing)*1)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-4{padding-right:calc(var(--spacing)*4)}.pr-8{padding-right:calc(var(--spacing)*8)}.pb-0\.5{padding-bottom:calc(var(--spacing)*.5)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-1\.5{padding-bottom:calc(var(--spacing)*1.5)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-5{padding-left:calc(var(--spacing)*5)}.pl-7{padding-left:calc(var(--spacing)*7)}.pl-8{padding-left:calc(var(--spacing)*8)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.leading-4{--tw-leading:calc(var(--spacing)*4);line-height:calc(var(--spacing)*4)}.leading-5{--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5)}.leading-6{--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}.leading-7{--tw-leading:calc(var(--spacing)*7);line-height:calc(var(--spacing)*7)}.leading-\[14px\]{--tw-leading:14px;line-height:14px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.wrap-break-word{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.\!text-neutral-100{color:var(--color-neutral-100)!important}.text-amber-300{color:var(--color-amber-300)}.text-amber-400\/80{color:#fcbb00cc}@supports (color:color-mix(in lab,red,red)){.text-amber-400\/80{color:color-mix(in oklab,var(--color-amber-400)80%,transparent)}}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-amber-900{color:var(--color-amber-900)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-card-foreground{color:var(--card-foreground)}.text-cyan-600{color:var(--color-cyan-600)}.text-emerald-400{color:var(--color-emerald-400)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-emerald-800{color:var(--color-emerald-800)}.text-foreground{color:var(--foreground)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-green-900{color:var(--color-green-900)}.text-indigo-600{color:var(--color-indigo-600)}.text-muted-foreground{color:var(--muted-foreground)}.text-neutral-200{color:var(--color-neutral-200)}.text-neutral-300{color:var(--color-neutral-300)}.text-neutral-400{color:var(--color-neutral-400)}.text-neutral-500{color:var(--color-neutral-500)}.text-neutral-600{color:var(--color-neutral-600)}.text-neutral-700{color:var(--color-neutral-700)}.text-neutral-800{color:var(--color-neutral-800)}.text-neutral-900{color:var(--color-neutral-900)}.text-pink-600{color:var(--color-pink-600)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-rose-600{color:var(--color-rose-600)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sky-600{color:var(--color-sky-600)}.text-teal-600{color:var(--color-teal-600)}.text-violet-600{color:var(--color-violet-600)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.decoration-neutral-300{-webkit-text-decoration-color:var(--color-neutral-300);text-decoration-color:var(--color-neutral-300)}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.placeholder-neutral-400::placeholder{color:var(--color-neutral-400)}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.opacity-90{opacity:.9}.opacity-100{opacity:1}.\!shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_-2px_6px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:0 -2px 6px var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-neutral-200\/50{--tw-shadow-color:#e5e5e580}@supports (color:color-mix(in lab,red,red)){.shadow-neutral-200\/50{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-neutral-200)50%,transparent)var(--tw-shadow-alpha),transparent)}}.ring-blue-200{--tw-ring-color:var(--color-blue-200)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.zoom-in-95{--tw-enter-scale:.95}.fade-in{--tw-enter-opacity:0}.running{animation-play-state:running}.group-open\:rotate-180:is(:where(.group):is([open],:popover-open,:open) *){rotate:180deg}@media(hover:hover){.group-hover\:flex:is(:where(.group):hover *){display:flex}.group-hover\:border-neutral-300:is(:where(.group):hover *){border-color:var(--color-neutral-300)}.group-hover\:bg-neutral-500:is(:where(.group):hover *){background-color:var(--color-neutral-500)}.group-hover\:text-neutral-400:is(:where(.group):hover *){color:var(--color-neutral-400)}.group-hover\:text-neutral-500:is(:where(.group):hover *){color:var(--color-neutral-500)}.group-hover\:text-neutral-700:is(:where(.group):hover *){color:var(--color-neutral-700)}.group-hover\:text-neutral-800:is(:where(.group):hover *){color:var(--color-neutral-800)}.group-hover\:text-neutral-900:is(:where(.group):hover *){color:var(--color-neutral-900)}.group-hover\:opacity-100:is(:where(.group):hover *),.group-hover\/tooltip\:opacity-100:is(:where(.group\/tooltip):hover *){opacity:1}}.peer-checked\:bg-neutral-900:is(:where(.peer):checked~*){background-color:var(--color-neutral-900)}.peer-focus\:outline-none:is(:where(.peer):focus~*){--tw-outline-style:none;outline-style:none}.placeholder\:text-neutral-400::placeholder{color:var(--color-neutral-400)}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:top-1:before{content:var(--tw-content);top:calc(var(--spacing)*1)}.before\:bottom-2:before{content:var(--tw-content);bottom:calc(var(--spacing)*2)}.before\:left-\[7px\]:before{content:var(--tw-content);left:7px}.before\:w-px:before{content:var(--tw-content);width:1px}.before\:bg-neutral-100:before{content:var(--tw-content);background-color:var(--color-neutral-100)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:top-\[2px\]:after{content:var(--tw-content);top:2px}.after\:left-\[2px\]:after{content:var(--tw-content);left:2px}.after\:h-4:after{content:var(--tw-content);height:calc(var(--spacing)*4)}.after\:w-4:after{content:var(--tw-content);width:calc(var(--spacing)*4)}.after\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.after\:border:after{content:var(--tw-content);border-style:var(--tw-border-style);border-width:1px}.after\:border-neutral-300:after{content:var(--tw-content);border-color:var(--color-neutral-300)}.after\:bg-white:after{content:var(--tw-content);background-color:var(--color-white)}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.peer-checked\:after\:translate-x-full:is(:where(.peer):checked~*):after{content:var(--tw-content);--tw-translate-x:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.peer-checked\:after\:border-white:is(:where(.peer):checked~*):after{content:var(--tw-content);border-color:var(--color-white)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.focus-within\:border-neutral-300:focus-within{border-color:var(--color-neutral-300)}.focus-within\:shadow-md:focus-within{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\:ring-1:focus-within{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\:ring-neutral-300:focus-within{--tw-ring-color:var(--color-neutral-300)}@media(hover:hover){.hover\:border-neutral-200:hover{border-color:var(--color-neutral-200)}.hover\:border-neutral-300:hover{border-color:var(--color-neutral-300)}.hover\:border-neutral-400:hover{border-color:var(--color-neutral-400)}.hover\:bg-\[\#333\]:hover{background-color:#333}.hover\:bg-\[\#444\]:hover{background-color:#444}.hover\:bg-\[\#383838\]:hover{background-color:#383838}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-amber-100:hover{background-color:var(--color-amber-100)}.hover\:bg-amber-500\/20:hover{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.hover\:bg-amber-500\/20:hover{background-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.hover\:bg-black:hover{background-color:var(--color-black)}.hover\:bg-blue-100:hover{background-color:var(--color-blue-100)}.hover\:bg-blue-300:hover{background-color:var(--color-blue-300)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-emerald-50:hover{background-color:var(--color-emerald-50)}.hover\:bg-emerald-100:hover{background-color:var(--color-emerald-100)}.hover\:bg-emerald-700:hover{background-color:var(--color-emerald-700)}.hover\:bg-neutral-50:hover{background-color:var(--color-neutral-50)}.hover\:bg-neutral-100:hover{background-color:var(--color-neutral-100)}.hover\:bg-neutral-100\/80:hover{background-color:#f5f5f5cc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-neutral-100\/80:hover{background-color:color-mix(in oklab,var(--color-neutral-100)80%,transparent)}}.hover\:bg-neutral-200:hover{background-color:var(--color-neutral-200)}.hover\:bg-neutral-200\/50:hover{background-color:#e5e5e580}@supports (color:color-mix(in lab,red,red)){.hover\:bg-neutral-200\/50:hover{background-color:color-mix(in oklab,var(--color-neutral-200)50%,transparent)}}.hover\:bg-neutral-300:hover{background-color:var(--color-neutral-300)}.hover\:bg-neutral-800:hover{background-color:var(--color-neutral-800)}.hover\:bg-neutral-900:hover{background-color:var(--color-neutral-900)}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-100:hover{background-color:var(--color-red-100)}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-amber-300:hover{color:var(--color-amber-300)}.hover\:text-emerald-600:hover{color:var(--color-emerald-600)}.hover\:text-neutral-300:hover{color:var(--color-neutral-300)}.hover\:text-neutral-500:hover{color:var(--color-neutral-500)}.hover\:text-neutral-600:hover{color:var(--color-neutral-600)}.hover\:text-neutral-700:hover{color:var(--color-neutral-700)}.hover\:text-neutral-800:hover{color:var(--color-neutral-800)}.hover\:text-neutral-900:hover{color:var(--color-neutral-900)}.hover\:text-red-500:hover{color:var(--color-red-500)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:border-emerald-300:focus{border-color:var(--color-emerald-300)}.focus\:border-emerald-400:focus{border-color:var(--color-emerald-400)}.focus\:border-neutral-300:focus{border-color:var(--color-neutral-300)}.focus\:border-neutral-400:focus{border-color:var(--color-neutral-400)}.focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:ring-emerald-500\/20:focus{--tw-ring-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.focus\:ring-emerald-500\/20:focus{--tw-ring-color:color-mix(in oklab,var(--color-emerald-500)20%,transparent)}}.focus\:ring-neutral-300:focus{--tw-ring-color:var(--color-neutral-300)}.focus\:ring-neutral-900:focus{--tw-ring-color:var(--color-neutral-900)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.active\:bg-black:active{background-color:var(--color-black)}.active\:bg-blue-400:active{background-color:var(--color-blue-400)}.active\:bg-neutral-50:active{background-color:var(--color-neutral-50)}.active\:bg-neutral-100:active{background-color:var(--color-neutral-100)}.active\:bg-neutral-400:active{background-color:var(--color-neutral-400)}.active\:bg-red-50:active{background-color:var(--color-red-50)}.active\:bg-red-600:active{background-color:var(--color-red-600)}.active\:bg-white:active{background-color:var(--color-white)}.active\:text-neutral-600:active{color:var(--color-neutral-600)}.active\:text-neutral-700:active{color:var(--color-neutral-700)}.active\:text-neutral-900:active{color:var(--color-neutral-900)}.active\:opacity-90:active{opacity:.9}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-neutral-50:disabled{background-color:var(--color-neutral-50)}.disabled\:text-neutral-500:disabled{color:var(--color-neutral-500)}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-50:disabled{opacity:.5}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-\[\>svg\]\:px-1\.5:has(>svg){padding-inline:calc(var(--spacing)*1.5)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}@media(min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input)30%,transparent)}}@media(hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}.pb-safe{padding-bottom:env(safe-area-inset-bottom,0px)}.pt-safe{padding-top:env(safe-area-inset-top,0px)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--radius:.625rem;--background:oklch(100% 0 0);--foreground:oklch(14.5% 0 0);--card:oklch(100% 0 0);--card-foreground:oklch(14.5% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--primary:oklch(20.5% 0 0);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(97% 0 0);--secondary-foreground:oklch(20.5% 0 0);--muted:oklch(97% 0 0);--muted-foreground:oklch(55.6% 0 0);--accent:oklch(97% 0 0);--accent-foreground:oklch(20.5% 0 0);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.2% 0 0);--input:oklch(92.2% 0 0);--ring:oklch(70.8% 0 0);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.5% 0 0);--sidebar-primary:oklch(20.5% 0 0);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(97% 0 0);--sidebar-accent-foreground:oklch(20.5% 0 0);--sidebar-border:oklch(92.2% 0 0);--sidebar-ring:oklch(70.8% 0 0)}.dark{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(20.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(20.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92.2% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.6% 0 0);--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--sidebar:oklch(20.5% 0 0);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(26.9% 0 0);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(55.6% 0 0)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}
|