agent-tower 0.2.6 → 0.2.7
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/codex.executor.d.ts +2 -6
- package/dist/executors/codex.executor.d.ts.map +1 -1
- package/dist/executors/codex.executor.js +3 -11
- package/dist/executors/codex.executor.js.map +1 -1
- package/dist/executors/default-providers.json +1 -2
- package/dist/web/assets/{AgentDemoPage-DSyU6XMx.js → AgentDemoPage-YmanLcCN.js} +1 -1
- package/dist/web/assets/{DemoPage-BxYQv1Wa.js → DemoPage-BqY38vpM.js} +1 -1
- package/dist/web/assets/{NotificationSettingsPage-mln4lAxn.js → NotificationSettingsPage-BCHTrcGM.js} +1 -1
- package/dist/web/assets/{ProfileSettingsPage-CS-WK307.js → ProfileSettingsPage-BUjwXVis.js} +1 -1
- package/dist/web/assets/{ProjectKanbanPage-Bz0Q0ZZy.js → ProjectKanbanPage-BnV1bfmb.js} +3 -3
- package/dist/web/assets/{ProjectSettingsPage-CBnahNua.js → ProjectSettingsPage-n3WgEYp1.js} +1 -1
- package/dist/web/assets/ProviderSettingsPage-BNb3ixUl.js +54 -0
- package/dist/web/assets/{api-client-iFY2ykuZ.js → api-client-CvkWGC57.js} +1 -1
- package/dist/web/assets/{chevron-down-CxTrrnvp.js → chevron-down-gMypHmvg.js} +1 -1
- package/dist/web/assets/{circle-alert-CHDHEO67.js → circle-alert-R4XXB7n4.js} +1 -1
- package/dist/web/assets/{circle-check-uswR_cEa.js → circle-check-gk9yWlOW.js} +1 -1
- package/dist/web/assets/{code-block-OCS4YCEC-VVSDpKw-.js → code-block-OCS4YCEC-37w58MP9.js} +1 -1
- package/dist/web/assets/{folder-picker-DshGpYNS.js → folder-picker-BNSXB4UX.js} +1 -1
- package/dist/web/assets/{index-hdGFeHu1.js → index-DFLmhfiK.js} +2 -2
- package/dist/web/assets/{loader-circle-BYF33K7x.js → loader-circle-DkuE984n.js} +1 -1
- package/dist/web/assets/{mermaid-NOHMQCX5-CQLrOBEw.js → mermaid-NOHMQCX5-BCuuUgP6.js} +3 -3
- package/dist/web/assets/{modal-BCL0660p.js → modal-Cs0LO1_I.js} +1 -1
- package/dist/web/assets/{pencil-SJi1qbh9.js → pencil-DBXkFcMj.js} +1 -1
- package/dist/web/assets/{query-keys-B2VhRmAm.js → query-keys-Ddm69Sh0.js} +1 -1
- package/dist/web/assets/{select-WuDnj3zN.js → select-CXYXolOw.js} +1 -1
- package/dist/web/assets/{use-profiles-DYTDOkn8.js → use-profiles-C--W_RiQ.js} +1 -1
- package/dist/web/assets/{use-projects-BLI6qXx-.js → use-projects-Cnz3uQZV.js} +1 -1
- package/dist/web/assets/{use-providers-C1i5uxRH.js → use-providers-BkyYy5Sg.js} +1 -1
- package/dist/web/assets/{x-Bn5zgMLL.js → x-Yu7IY3ea.js} +1 -1
- package/dist/web/index.html +1 -1
- package/package.json +1 -1
- package/dist/web/assets/ProviderSettingsPage-D-Lrg1Sj.js +0 -54
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as P,r as o,j as e}from"./index-
|
|
1
|
+
import{c as P,r as o,j as e}from"./index-DFLmhfiK.js";import{a as k,F as w,u as z,b as q}from"./use-projects-Cnz3uQZV.js";import{a as R,B as I}from"./api-client-CvkWGC57.js";import{S as L}from"./select-CXYXolOw.js";import{X as C,P as S}from"./x-Yu7IY3ea.js";import"./query-keys-Ddm69Sh0.js";import"./chevron-down-gMypHmvg.js";const A=[["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"M9 13h6",key:"1uhe8q"}],["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"}]],K=P("folder-plus",A);function M({value:r,onChange:h,repoPath:d,placeholder:m}){const[l,c]=o.useState(""),[u,x]=o.useState([]),[p,s]=o.useState(!1),[a,g]=o.useState(-1),j=o.useRef(null),y=o.useRef(null),i=o.useRef(void 0),f=o.useCallback(async t=>{if(!d||!t){x([]),s(!1);return}try{const n=await R.get("/filesystem/complete",{params:{basePath:d,prefix:t}});x(n.results),s(n.results.length>0),g(-1)}catch{x([]),s(!1)}},[d]);o.useEffect(()=>{if(clearTimeout(i.current),!l){x([]),s(!1);return}return i.current=setTimeout(()=>f(l),200),()=>clearTimeout(i.current)},[l,f]),o.useEffect(()=>{const t=n=>{y.current&&!y.current.contains(n.target)&&j.current&&!j.current.contains(n.target)&&s(!1)};return document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)},[]);const b=t=>{const n=t.trim();!n||r.includes(n)||(h([...r,n]),c(""),s(!1),j.current?.focus())},E=t=>{h(r.filter((n,v)=>v!==t))},N=t=>{t.type==="directory"?(c(t.path),j.current?.focus()):b(t.path)},D=(t,n)=>{n.stopPropagation(),b(t.path.replace(/\/$/,""))},F=t=>{t.nativeEvent.isComposing||t.nativeEvent.keyCode===229||(p&&u.length>0?t.key==="ArrowDown"?(t.preventDefault(),g(n=>Math.min(n+1,u.length-1))):t.key==="ArrowUp"?(t.preventDefault(),g(n=>Math.max(n-1,-1))):t.key==="Enter"?(t.preventDefault(),a>=0?N(u[a]):b(l)):t.key==="Escape"&&s(!1):t.key==="Enter"&&(t.preventDefault(),b(l)))};return e.jsxs("div",{children:[r.length>0&&e.jsx("div",{className:"border border-neutral-200 rounded-lg mb-2 divide-y divide-neutral-100",children:r.map((t,n)=>e.jsxs("div",{className:"flex items-center gap-2 px-3 py-1.5 group",children:[t.includes(".")&&!t.endsWith("/")?e.jsx(k,{size:14,className:"text-neutral-400 shrink-0"}):e.jsx(w,{size:14,className:"text-amber-500 shrink-0"}),e.jsx("span",{className:"text-sm font-mono text-neutral-700 truncate flex-1",children:t}),e.jsx("button",{onClick:()=>E(n),className:"p-0.5 text-neutral-300 hover:text-red-500 opacity-0 group-hover:opacity-100 transition-opacity shrink-0",children:e.jsx(C,{size:14})})]},t))}),e.jsxs("div",{className:"relative",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx("input",{ref:j,type:"text",value:l,onChange:t=>c(t.target.value),onKeyDown:F,onFocus:()=>{l&&u.length>0&&s(!0)},placeholder:m??"输入文件路径...",className:"flex-1 px-3 py-2 border border-neutral-200 rounded-lg text-sm font-mono focus:outline-none focus:ring-1 focus:ring-neutral-300"}),e.jsxs("button",{onClick:()=>b(l),disabled:!l.trim(),className:"flex items-center gap-1 px-3 py-2 text-sm bg-neutral-900 text-white rounded-lg hover:bg-neutral-800 disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:[e.jsx(S,{size:14}),e.jsx("span",{children:"添加"})]})]}),p&&e.jsx("div",{ref:y,className:"absolute z-50 left-0 right-0 mt-1 bg-white border border-neutral-200 rounded-lg shadow-lg max-h-[200px] overflow-y-auto",children:u.map((t,n)=>e.jsxs("button",{onClick:()=>N(t),className:`w-full flex items-center gap-2 px-3 py-1.5 text-sm text-left hover:bg-neutral-50 transition-colors ${n===a?"bg-neutral-100":""}`,children:[t.type==="directory"?e.jsx(w,{size:14,className:"text-amber-500 shrink-0"}):e.jsx(k,{size:14,className:"text-neutral-400 shrink-0"}),e.jsx("span",{className:"font-mono text-neutral-700 truncate flex-1",children:t.path}),t.type==="directory"&&e.jsx("span",{onClick:v=>D(t,v),className:"p-0.5 text-neutral-300 hover:text-emerald-600 shrink-0",title:"添加此目录",children:e.jsx(K,{size:14})})]},t.path))})]})]})}function _({value:r,onChange:h}){const[d,m]=o.useState(""),[l,c]=o.useState(""),u=()=>{const s=d.trim(),a=l.trim();!s||!a||(h([...r,{name:s,command:a}]),m(""),c(""))},x=s=>{h(r.filter((a,g)=>g!==s))},p=s=>{s.key==="Enter"&&!s.nativeEvent.isComposing&&s.nativeEvent.keyCode!==229&&(s.preventDefault(),u())};return e.jsxs("div",{children:[r.length>0&&e.jsx("div",{className:"border border-neutral-200 rounded-lg mb-2 divide-y divide-neutral-100",children:r.map((s,a)=>e.jsxs("div",{className:"flex items-center gap-3 px-3 py-2 group",children:[e.jsx("span",{className:"text-sm font-medium text-neutral-700 w-28 shrink-0 truncate",children:s.name}),e.jsx("span",{className:"text-sm font-mono text-neutral-500 flex-1 truncate",children:s.command}),e.jsx("button",{onClick:()=>x(a),className:"p-0.5 text-neutral-300 hover:text-red-500 opacity-0 group-hover:opacity-100 transition-opacity shrink-0",children:e.jsx(C,{size:14})})]},a))}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("input",{type:"text",value:d,onChange:s=>m(s.target.value),onKeyDown:p,placeholder:"名称",className:"w-28 shrink-0 px-3 py-2 border border-neutral-200 rounded-lg text-sm focus:outline-none focus:ring-1 focus:ring-neutral-300"}),e.jsx("input",{type:"text",value:l,onChange:s=>c(s.target.value),onKeyDown:p,placeholder:"命令",className:"flex-1 px-3 py-2 border border-neutral-200 rounded-lg text-sm font-mono focus:outline-none focus:ring-1 focus:ring-neutral-300"}),e.jsxs("button",{onClick:u,disabled:!d.trim()||!l.trim(),className:"flex items-center gap-1 px-3 py-2 text-sm bg-neutral-900 text-white rounded-lg hover:bg-neutral-800 disabled:opacity-30 disabled:cursor-not-allowed transition-colors shrink-0",children:[e.jsx(S,{size:14}),e.jsx("span",{children:"添加"})]})]})]})}function B(r){return r?r.split(",").map(h=>h.trim()).filter(Boolean):[]}function O(r){if(!r)return[];try{return JSON.parse(r)}catch{return[]}}function W(){const{data:r,isLoading:h}=z({limit:100}),d=q(),[m,l]=o.useState(""),[c,u]=o.useState({copyFiles:[],setupScript:"",quickCommands:[]}),[x,p]=o.useState(!1),s=r?.data??[],a=s.find(i=>i.id===m);if(o.useEffect(()=>{!m&&s.length>0&&l(s[0].id)},[s,m]),o.useEffect(()=>{a&&!x&&u({copyFiles:B(a.copyFiles),setupScript:a.setupScript??"",quickCommands:O(a.quickCommands)})},[a,x]),h)return e.jsx("div",{className:"p-6 text-sm text-neutral-400",children:"加载中..."});if(s.length===0)return e.jsx("div",{className:"p-6 text-sm text-neutral-400",children:"暂无项目,请先创建项目"});const g=s.map(i=>({value:i.id,label:i.name})),j=()=>{m&&d.mutate({id:m,copyFiles:c.copyFiles.length>0?c.copyFiles.join(", "):null,setupScript:c.setupScript.trim()||null,quickCommands:c.quickCommands.length>0?JSON.stringify(c.quickCommands):null},{onSuccess:()=>p(!1)})},y=i=>{l(i),p(!1)};return e.jsxs("div",{className:"px-10 py-6 mx-auto w-full max-w-3xl space-y-8",children:[e.jsxs("section",{children:[e.jsx("h3",{className:"text-[13px] font-semibold text-neutral-900 mb-1",children:"选择项目"}),e.jsx(L,{value:m,onChange:y,options:g,placeholder:"选择项目..."})]}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-[13px] font-semibold text-neutral-900 mb-1",children:"自动复制文件"}),e.jsx("p",{className:"text-[12px] text-neutral-400 mb-3",children:"创建 worktree 时自动从主仓库复制的文件或目录。支持 glob 模式。"}),e.jsx(M,{value:c.copyFiles,onChange:i=>{u(f=>({...f,copyFiles:i})),p(!0)},repoPath:a?.repoPath??""}),e.jsx("p",{className:"text-[11px] text-neutral-400 mt-2",children:"适用于不在 git 管理中但启动必需的文件,如 .env、node_modules、数据库文件等"})]}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-[13px] font-semibold text-neutral-900 mb-1",children:"Setup 脚本"}),e.jsx("p",{className:"text-[12px] text-neutral-400 mb-3",children:"创建 worktree 后自动执行的命令,每行一条,按顺序执行。"}),e.jsx("textarea",{value:c.setupScript,onChange:i=>{u(f=>({...f,setupScript:i.target.value})),p(!0)},placeholder:`pnpm install
|
|
2
2
|
pnpm run setup`,rows:4,className:"w-full px-3 py-2 border border-neutral-200 rounded-lg text-sm font-mono focus:outline-none focus:ring-1 focus:ring-neutral-300 resize-none"}),e.jsx("p",{className:"text-[11px] text-neutral-400 mt-1",children:"命令在 worktree 目录下执行,单条命令超时 5 分钟,失败不会阻断后续命令"})]}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-[13px] font-semibold text-neutral-900 mb-1",children:"常用命令"}),e.jsx("p",{className:"text-[12px] text-neutral-400 mb-3",children:"在终端中可快速执行的命令,不会自动运行。"}),e.jsx(_,{value:c.quickCommands,onChange:i=>{u(f=>({...f,quickCommands:i})),p(!0)}})]}),x&&e.jsx("div",{className:"sticky bottom-6 flex justify-end",children:e.jsx(I,{size:"sm",onClick:j,disabled:d.isPending,children:d.isPending?"保存中...":"保存"})})]})}export{W as ProjectSettingsPage};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import{c as B,r as C,j as n,y as O}from"./index-DFLmhfiK.js";import{u as de,a as ue,b as me,c as fe,d as xe,e as pe,f as he,A as v}from"./use-providers-BkyYy5Sg.js";import{B as j}from"./api-client-CvkWGC57.js";import{T as Q,M as G}from"./modal-Cs0LO1_I.js";import{S as ee}from"./select-CXYXolOw.js";import"./log-adapter-50wgehrc.js";import{P as te}from"./x-Yu7IY3ea.js";import{P as ge}from"./pencil-DBXkFcMj.js";import{C as be}from"./circle-check-gk9yWlOW.js";import{C as ve}from"./chevron-down-gMypHmvg.js";import"./query-keys-Ddm69Sh0.js";const ye=[["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"}]],je=B("circle-x",ye);const we=[["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"}]],Ne=B("download",we);const Ee=[["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"}]],Ce=B("upload",Ee);function ke(e,t){let s=e.slice(0,t).split(/\r\n|\n|\r/g);return[s.length,s.pop().length+1]}function _e(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 f extends Error{line;column;codeblock;constructor(t,s){const[a,l]=ke(s.toml,s.ptr),r=_e(s.toml,a,l);super(`Invalid TOML document: ${t}
|
|
4
|
+
|
|
5
|
+
${r}`,s),this.line=a,this.column=l,this.codeblock=r}}function Oe(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 L(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 f("control characters are not allowed in comments",{toml:e,ptr:t})}return e.length}function w(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:w(e,L(e,t),s)}function Pe(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 f("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!=="'"&&Oe(e,t));return t>-1&&(t+=a.length,a.length>1&&(e[t]===s&&t++,e[t]===s&&t++)),t}let Te=/^(\d{4}-\d{2}-\d{2})?[T ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|[-+]\d{2}:\d{2})?$/i;class I 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(Te);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 I(t);return a.#e=s,a}static wrapAsLocalDateTime(t){let s=new I(t);return s.#e=null,s}static wrapAsLocalDate(t){let s=new I(t);return s.#n=!1,s.#e=null,s}static wrapAsLocalTime(t){let s=new I(t);return s.#t=!1,s.#e=null,s}}let Ie=/^((0x[0-9a-fA-F](_?[0-9a-fA-F])*)|(([+-]|0[ob])?\d(_?\d)*))$/,Ae=/^[+-]?\d(_?\d)*(\.\d(_?\d)*)?([eE][+-]?\d(_?\d)*)?$/,Se=/^[+-]?0[0-9_]/,De=/^[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 f("newlines are not allowed in strings",{toml:e,ptr:t-1})}else if(d<" "&&d!==" "||d==="")throw new f("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(!De.test(p))throw new f("invalid unicode escape",{toml:e,ptr:r});try{o+=String.fromCodePoint(parseInt(p,16))}catch{throw new f("invalid unicode escape",{toml:e,ptr:r})}}else if(l&&(d===`
|
|
17
|
+
`||d===" "||d===" "||d==="\r")){if(t=w(e,t-1,!0),e[t]!==`
|
|
18
|
+
`&&e[t]!=="\r")throw new f("invalid escape: only line-ending whitespace may be escaped",{toml:e,ptr:r});t=w(e,t)}else if(d in H)o+=H[d];else throw new f("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 Le(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=Ie.test(e);if(l||Ae.test(e)){if(Se.test(e))throw new f("leading zeroes are not allowed",{toml:t,ptr:s});e=e.replace(/_/g,"");let i=+e;if(isNaN(i))throw new f("invalid number",{toml:t,ptr:s});if(l){if((l=!Number.isSafeInteger(i))&&!a)throw new f("integer value cannot be represented losslessly",{toml:t,ptr:s});(l||a===!0)&&(i=BigInt(e))}return i}const r=new I(e);if(!r.isValid())throw new f("invalid value",{toml:t,ptr:s});return r}function Re(e,t,s){let a=e.slice(t,s),l=a.indexOf("#");return l>-1&&(L(e,l),a=a.slice(0,l)),[a.trimEnd(),l]}function X(e,t,s,a,l){if(a===0)throw new f("document contains excessively nested structures. aborting.",{toml:e,ptr:t});let r=e[t];if(r==="["||r==="{"){let[c,d]=r==="["?Me(e,t,a,l):Ue(e,t,a,l);if(s){if(d=w(e,d),e[d]===",")d++;else if(e[d]!==s)throw new f("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=w(e,i),e[i]&&e[i]!==","&&e[i]!==s&&e[i]!==`
|
|
19
|
+
`&&e[i]!=="\r")throw new f("unexpected character encountered",{toml:e,ptr:i});i+=+(e[i]===",")}return[c,i]}i=Pe(e,t,",",s);let o=Re(e,t,i-+(e[i-1]===","));if(!o[0])throw new f("incomplete key-value declaration: no value specified",{toml:e,ptr:t});return s&&o[1]>-1&&(i=w(e,t+o[1]),i+=+(e[i]===",")),[Le(o[0],e,t,l),i]}let Fe=/^[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 f("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 f("multiline strings are not allowed in keys",{toml:e,ptr:t});let o=ne(e,t);if(o<0)throw new f("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 f("newlines are not allowed in keys",{toml:e,ptr:t+a+d});if(c.trimStart())throw new f("found extra tokens after the string part",{toml:e,ptr:o});if(r<o&&(r=e.indexOf(s,o),r<0))throw new f("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(!Fe.test(o))throw new f("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,w(e,r+1,!0,!0)]}function Ue(e,t,s,a){let l={},r=new Set,i;for(t++;(i=e[t++])!=="}"&&i;){if(i===",")throw new f("expected value, found comma",{toml:e,ptr:t-1});if(i==="#")t=L(e,t);else if(i!==" "&&i!==" "&&i!==`
|
|
20
|
+
`&&i!=="\r"){let o,c=l,d=!1,[p,P]=z(e,t-1);for(let b=0;b<p.length;b++){if(b&&(c=d?c[o]:c[o]={}),o=p[b],(d=Object.hasOwn(c,o))&&(typeof c[o]!="object"||r.has(c[o])))throw new f("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 f("trying to redefine an already defined value",{toml:e,ptr:t});let[m,h]=X(e,P,"}",s-1,a);r.add(m),c[o]=m,t=h}}if(!i)throw new f("unfinished table encountered",{toml:e,ptr:t});return[l,t]}function Me(e,t,s,a){let l=[],r;for(t++;(r=e[t++])!=="]"&&r;){if(r===",")throw new f("expected value, found comma",{toml:e,ptr:t-1});if(r==="#")t=L(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 f("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 ze(e,{maxDepth:t=1e3,integersAsBigInt:s}={}){let a={},l={},r=a,i=l;for(let o=w(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 f("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 f("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 f("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=w(e,o,!0),e[o]&&e[o]!==`
|
|
22
|
+
`&&e[o]!=="\r")throw new f("each key-value declaration must be followed by an end-of-line",{toml:e,ptr:o});o=w(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={[v.CLAUDE_CODE]:[{key:"dangerouslySkipPermissions",label:"跳过权限确认",type:"switch"},{key:"model",label:"模型",type:"input",placeholder:"claude-sonnet-4-20250514"},D],[v.GEMINI_CLI]:[{key:"yolo",label:"跳过权限确认",type:"switch"},{key:"model",label:"模型",type:"input",placeholder:"gemini-2.5-pro"},D],[v.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],[v.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 $e=JSON.stringify({env:{ANTHROPIC_API_KEY:"",ANTHROPIC_BASE_URL:""}},null,2),Be=`# 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 R(e){return e===v.CLAUDE_CODE?$e:e===v.CODEX?Be:""}function Ge(e){return e===v.CLAUDE_CODE||e===v.CODEX}const Xe=Object.values(V).flat().reduce((e,t)=>(e[t.key]||(e[t.key]=t.label),e),{}),Ke=Object.values(V).flat().reduce((e,t)=>(t.options&&(e[t.key]=Object.fromEntries(t.options.map(s=>[s.value,s.label]))),e),{});function Ve(e,t){return typeof t=="boolean"?t?"是":"否":typeof t=="string"&&t?Ke[e]?.[t]??t:String(t)}function F(e,t){return e instanceof Error?e.message:t}function Ze(e){return`agent-tower-provider-backup-${e.replace(/[:.]/g,"-")}.json`}function Je(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 Ye(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 He({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(be,{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(je,{size:12}),"不可用"]})}function U({title:e,defaultOpen:t=!1,children:s}){const[a,l]=C.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(ve,{size:14,className:`transition-transform ${a?"rotate-180":""}`})]}),a&&n.jsx("div",{className:"px-4 pb-4 space-y-3",children:s})]})}function qe({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 We({isOpen:e,onClose:t,initialData:s,onSave:a}){const[l,r]=C.useState(s??{name:"",agentType:v.CLAUDE_CODE,config:W(),settings:"",env:[],isDefault:!1}),[i,o]=C.useState("");C.useEffect(()=>{if(!s&&!l.settings){const m=R(l.agentType);m&&r(h=>({...h,settings:m}))}},[]);const c=m=>{r(h=>({...h,agentType:m,config:W(),settings:R(m)}))},d=()=>{o("");const m=$(l.agentType,l.config),h={};for(const[N,k]of Object.entries(m))k!==void 0&&k!==""&&(h[N]=k);const b=l.settings.trim();if(b){if(l.agentType===v.CODEX)try{ze(b)}catch(N){o(`TOML 语法错误: ${N instanceof Error?N.message:String(N)}`);return}else if(l.agentType===v.CLAUDE_CODE)try{JSON.parse(b)}catch{o("JSON 语法错误");return}}const g={};for(const{key:N,value:k}of l.env){const A=N.trim();A&&(g[A]=k)}const y={name:l.name,agentType:l.agentType,config:h,settings:b||void 0,env:Object.keys(g).length>0?g:void 0,isDefault:l.isDefault};a(y)};if(!e)return null;const p=Ge(l.agentType),P=l.agentType===v.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(v).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(qe,{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:b=>{const g=[...l.env];g[h]={...g[h],key:b.target.value},r(y=>({...y,env:g}))},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:b=>{const g=[...l.env];g[h]={...g[h],value:b.target.value},r(y=>({...y,env:g}))},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 b=l.env.filter((g,y)=>y!==h);r(g=>({...g,env:b}))},className:"p-1.5 text-neutral-400 hover:text-red-500",children:n.jsx(Q,{size:14})})]},h)),n.jsxs(j,{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:P?"CLI 原生配置 (config.toml)":"CLI 原生配置 (settings.json)",children:[n.jsx("p",{className:"text-xs text-neutral-500 mb-2",children:P?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:R(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(j,{variant:"outline",onClick:t,children:"取消"}),n.jsx(j,{onClick:d,disabled:!l.name.trim(),children:"保存"})]})]})})}function Qe({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(j,{variant:"outline",onClick:t,disabled:r,children:"取消"}),n.jsx(j,{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 et({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(j,{variant:"outline",onClick:t,disabled:r,children:"取消"}),n.jsx(j,{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=Ye(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 mt(){const{data:e,isLoading:t}=de(),s=ue(),a=me(),l=fe(),r=xe(),i=pe(),o=he(),c=C.useRef(null),[d,p]=C.useState(null),[P,m]=C.useState(!1),[h,b]=C.useState(!1),[g,y]=C.useState(null),N=x=>{s.mutate(x,{onSuccess:()=>p(null)})},k=(x,u)=>{a.mutate({id:x,data:u},{onSuccess:()=>p(null)})},A=(x,u,E)=>{if(E){O.error("内置 Provider 不可删除");return}confirm(`确定删除 "${u}"?`)&&l.mutate(x)},Z=()=>{m(!1),b(!1)},J=()=>{y(null)},le=()=>{r.mutate(void 0,{onSuccess:x=>{Je(Ze(x.exportedAt),x),O.success("Provider 备份已导出"),Z()},onError:x=>{O.error(F(x,"导出 Provider 备份失败"))}})},se=()=>{c.current&&(c.current.value="",c.current.click())},ie=async x=>{const u=x.target.files?.[0];if(x.target.value="",!u)return;let E;try{E=JSON.parse(await u.text())}catch{O.error("备份文件不是有效的 JSON");return}i.mutate(E,{onSuccess:_=>{y({backup:E,preview:_})},onError:_=>{O.error(F(_,"导入预览失败"))}})},ae=()=>{g&&o.mutate(g.backup,{onSuccess:x=>{const u=x.summary.create+x.summary.overwrite;O.success(u===0?"导入完成,当前配置无需变更":`导入完成:新增 ${x.summary.create},覆盖 ${x.summary.overwrite},跳过 ${x.summary.skip}`),J()},onError:x=>{O.error(F(x,"导入 Provider 备份失败"))}})},oe=x=>{const u=x.provider,E=u.env?Object.entries(u.env).map(([_,S])=>({key:_,value:S})):[];p({id:u.id,data:{name:u.name,agentType:u.agentType,config:$(u.agentType,u.config),settings:u.settings??"",env:E,isDefault:u.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:ie}),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(j,{variant:"outline",onClick:se,disabled:i.isPending||o.isPending,children:[n.jsx(Ce,{size:14}),"导入备份"]}),n.jsxs(j,{variant:"outline",onClick:()=>m(!0),disabled:r.isPending,children:[n.jsx(Ne,{size:14}),"导出备份"]}),n.jsxs(j,{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(x=>{const u=x.provider,E=x.availability,_=$(u.agentType,u.config),S=Object.entries(_).filter(([T])=>T!=="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:u.name}),n.jsx(He,{type:E.type}),u.isDefault&&n.jsx("span",{className:"px-2 py-0.5 text-xs text-blue-700 bg-blue-50 rounded",children:"默认"}),u.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[u.agentType]??u.agentType}),S.length>0&&n.jsx("div",{className:"text-xs text-neutral-600 mb-1",children:S.map(([T,ce])=>n.jsxs("span",{className:"inline-flex items-center mr-3",children:[n.jsxs("span",{className:"font-medium",children:[Xe[T]??T,":"]})," ",Ve(T,ce)]},T))}),u.settings?.trim()&&n.jsxs("div",{className:"text-xs text-neutral-600",children:[n.jsx("span",{className:"font-medium",children:"CLI 配置:"})," 已配置"]}),Object.keys(u.env).length>0&&!u.settings&&n.jsxs("div",{className:"text-xs text-neutral-600",children:[n.jsx("span",{className:"font-medium",children:"环境变量:"})," ",Object.keys(u.env).join(", ")]})]}),n.jsxs("div",{className:"flex items-center gap-1 ml-4",children:[n.jsx("button",{onClick:()=>oe(x),className:"p-2 text-neutral-400 hover:text-neutral-900 transition-colors",title:"编辑",children:n.jsx(ge,{size:14})}),n.jsx("button",{onClick:()=>A(u.id,u.name,u.builtIn),className:"p-2 text-neutral-400 hover:text-red-600 transition-colors",title:"删除",disabled:u.builtIn,children:n.jsx(Q,{size:14})})]})]})},u.id)})}),d&&n.jsx(We,{isOpen:!0,onClose:()=>p(null),initialData:d.data,onSave:x=>{d.id?k(d.id,x):N(x)}}),n.jsx(Qe,{isOpen:P,onClose:Z,onConfirm:le,acknowledged:h,onAcknowledgedChange:b,isLoading:r.isPending}),n.jsx(et,{isOpen:!!g,onClose:J,preview:g?.preview??null,backup:g?.backup??null,onConfirm:ae,isLoading:o.isPending})]})}export{mt as ProviderSettingsPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as C,j as se,i as _e,g as Le}from"./index-hdGFeHu1.js";function ze(e){var o,t,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var n=e.length;for(o=0;o<n;o++)e[o]&&(t=ze(e[o]))&&(r&&(r+=" "),r+=t)}else for(t in e)e[t]&&(r&&(r+=" "),r+=t);return r}function Se(){for(var e,o,t=0,r="",n=arguments.length;t<n;t++)(e=arguments[t])&&(o=ze(e))&&(r&&(r+=" "),r+=o);return r}const We=(e,o)=>{const t=new Array(e.length+o.length);for(let r=0;r<e.length;r++)t[r]=e[r];for(let r=0;r<o.length;r++)t[e.length+r]=o[r];return t},Be=(e,o)=>({classGroupId:e,validator:o}),Ae=(e=new Map,o=null,t)=>({nextPart:e,validators:o,classGroupId:t}),Z="-",be=[],Fe="arbitrary..",$e=e=>{const o=qe(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:a=>{if(a.startsWith("[")&&a.endsWith("]"))return Ue(a);const d=a.split(Z),i=d[0]===""&&d.length>1?1:0;return Re(d,i,o)},getConflictingClassGroupIds:(a,d)=>{if(d){const i=r[a],m=t[a];return i?m?We(m,i):i:m||be}return t[a]||be}}},Re=(e,o,t)=>{if(e.length-o===0)return t.classGroupId;const n=e[o],s=t.nextPart.get(n);if(s){const m=Re(e,o+1,s);if(m)return m}const a=t.validators;if(a===null)return;const d=o===0?e.join(Z):e.slice(o).join(Z),i=a.length;for(let m=0;m<i;m++){const g=a[m];if(g.validator(d))return g.classGroupId}},Ue=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const o=e.slice(1,-1),t=o.indexOf(":"),r=o.slice(0,t);return r?Fe+r:void 0})(),qe=e=>{const{theme:o,classGroups:t}=e;return De(t,o)},De=(e,o)=>{const t=Ae();for(const r in e){const n=e[r];ie(n,t,r,o)}return t},ie=(e,o,t,r)=>{const n=e.length;for(let s=0;s<n;s++){const a=e[s];Je(a,o,t,r)}},Je=(e,o,t,r)=>{if(typeof e=="string"){Ye(e,o,t);return}if(typeof e=="function"){He(e,o,t,r);return}Xe(e,o,t,r)},Ye=(e,o,t)=>{const r=e===""?o:Pe(o,e);r.classGroupId=t},He=(e,o,t,r)=>{if(Ke(e)){ie(e(r),o,t,r);return}o.validators===null&&(o.validators=[]),o.validators.push(Be(t,e))},Xe=(e,o,t,r)=>{const n=Object.entries(e),s=n.length;for(let a=0;a<s;a++){const[d,i]=n[a];ie(i,Pe(o,d),t,r)}},Pe=(e,o)=>{let t=e;const r=o.split(Z),n=r.length;for(let s=0;s<n;s++){const a=r[s];let d=t.nextPart.get(a);d||(d=Ae(),t.nextPart.set(a,d)),t=d}return t},Ke=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,Ze=e=>{if(e<1)return{get:()=>{},set:()=>{}};let o=0,t=Object.create(null),r=Object.create(null);const n=(s,a)=>{t[s]=a,o++,o>e&&(o=0,r=t,t=Object.create(null))};return{get(s){let a=t[s];if(a!==void 0)return a;if((a=r[s])!==void 0)return n(s,a),a},set(s,a){s in t?t[s]=a:n(s,a)}}},ae="!",he=":",Qe=[],ye=(e,o,t,r,n)=>({modifiers:e,hasImportantModifier:o,baseClassName:t,maybePostfixModifierPosition:r,isExternal:n}),et=e=>{const{prefix:o,experimentalParseClassName:t}=e;let r=n=>{const s=[];let a=0,d=0,i=0,m;const g=n.length;for(let w=0;w<g;w++){const v=n[w];if(a===0&&d===0){if(v===he){s.push(n.slice(i,w)),i=w+1;continue}if(v==="/"){m=w;continue}}v==="["?a++:v==="]"?a--:v==="("?d++:v===")"&&d--}const b=s.length===0?n:n.slice(i);let x=b,S=!1;b.endsWith(ae)?(x=b.slice(0,-1),S=!0):b.startsWith(ae)&&(x=b.slice(1),S=!0);const A=m&&m>i?m-i:void 0;return ye(s,S,x,A)};if(o){const n=o+he,s=r;r=a=>a.startsWith(n)?s(a.slice(n.length)):ye(Qe,!1,a,void 0,!0)}if(t){const n=r;r=s=>t({className:s,parseClassName:n})}return r},tt=e=>{const o=new Map;return e.orderSensitiveModifiers.forEach((t,r)=>{o.set(t,1e6+r)}),t=>{const r=[];let n=[];for(let s=0;s<t.length;s++){const a=t[s],d=a[0]==="[",i=o.has(a);d||i?(n.length>0&&(n.sort(),r.push(...n),n=[]),r.push(a)):n.push(a)}return n.length>0&&(n.sort(),r.push(...n)),r}},ot=e=>({cache:Ze(e.cacheSize),parseClassName:et(e),sortModifiers:tt(e),...$e(e)}),rt=/\s+/,nt=(e,o)=>{const{parseClassName:t,getClassGroupId:r,getConflictingClassGroupIds:n,sortModifiers:s}=o,a=[],d=e.trim().split(rt);let i="";for(let m=d.length-1;m>=0;m-=1){const g=d[m],{isExternal:b,modifiers:x,hasImportantModifier:S,baseClassName:A,maybePostfixModifierPosition:w}=t(g);if(b){i=g+(i.length>0?" "+i:i);continue}let v=!!w,I=r(v?A.substring(0,w):A);if(!I){if(!v){i=g+(i.length>0?" "+i:i);continue}if(I=r(A),!I){i=g+(i.length>0?" "+i:i);continue}v=!1}const U=x.length===0?"":x.length===1?x[0]:s(x).join(":"),B=S?U+ae:U,N=B+I;if(a.indexOf(N)>-1)continue;a.push(N);const V=n(I,v);for(let M=0;M<V.length;++M){const F=V[M];a.push(B+F)}i=g+(i.length>0?" "+i:i)}return i},st=(...e)=>{let o=0,t,r,n="";for(;o<e.length;)(t=e[o++])&&(r=Te(t))&&(n&&(n+=" "),n+=r);return n},Te=e=>{if(typeof e=="string")return e;let o,t="";for(let r=0;r<e.length;r++)e[r]&&(o=Te(e[r]))&&(t&&(t+=" "),t+=o);return t},at=(e,...o)=>{let t,r,n,s;const a=i=>{const m=o.reduce((g,b)=>b(g),e());return t=ot(m),r=t.cache.get,n=t.cache.set,s=d,d(i)},d=i=>{const m=r(i);if(m)return m;const g=nt(i,t);return n(i,g),g};return s=a,(...i)=>s(st(...i))},it=[],h=e=>{const o=t=>t[e]||it;return o.isThemeGetter=!0,o},Ee=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Ie=/^\((?:(\w[\w-]*):)?(.+)\)$/i,lt=/^\d+\/\d+$/,ct=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,dt=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,ut=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,mt=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,pt=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,_=e=>lt.test(e),f=e=>!!e&&!Number.isNaN(Number(e)),E=e=>!!e&&Number.isInteger(Number(e)),oe=e=>e.endsWith("%")&&f(e.slice(0,-1)),T=e=>ct.test(e),ft=()=>!0,gt=e=>dt.test(e)&&!ut.test(e),Me=()=>!1,bt=e=>mt.test(e),ht=e=>pt.test(e),yt=e=>!l(e)&&!c(e),xt=e=>L(e,Ne,Me),l=e=>Ee.test(e),O=e=>L(e,Ve,gt),re=e=>L(e,zt,f),xe=e=>L(e,je,Me),vt=e=>L(e,Oe,ht),X=e=>L(e,Ge,bt),c=e=>Ie.test(e),$=e=>W(e,Ve),kt=e=>W(e,St),ve=e=>W(e,je),wt=e=>W(e,Ne),Ct=e=>W(e,Oe),K=e=>W(e,Ge,!0),L=(e,o,t)=>{const r=Ee.exec(e);return r?r[1]?o(r[1]):t(r[2]):!1},W=(e,o,t=!1)=>{const r=Ie.exec(e);return r?r[1]?o(r[1]):t:!1},je=e=>e==="position"||e==="percentage",Oe=e=>e==="image"||e==="url",Ne=e=>e==="length"||e==="size"||e==="bg-size",Ve=e=>e==="length",zt=e=>e==="number",St=e=>e==="family-name",Ge=e=>e==="shadow",At=()=>{const e=h("color"),o=h("font"),t=h("text"),r=h("font-weight"),n=h("tracking"),s=h("leading"),a=h("breakpoint"),d=h("container"),i=h("spacing"),m=h("radius"),g=h("shadow"),b=h("inset-shadow"),x=h("text-shadow"),S=h("drop-shadow"),A=h("blur"),w=h("perspective"),v=h("aspect"),I=h("ease"),U=h("animate"),B=()=>["auto","avoid","all","avoid-page","page","left","right","column"],N=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],V=()=>[...N(),c,l],M=()=>["auto","hidden","clip","visible","scroll"],F=()=>["auto","contain","none"],p=()=>[c,l,i],R=()=>[_,"full","auto",...p()],le=()=>[E,"none","subgrid",c,l],ce=()=>["auto",{span:["full",E,c,l]},E,c,l],q=()=>[E,"auto",c,l],de=()=>["auto","min","max","fr",c,l],Q=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],G=()=>["start","end","center","stretch","center-safe","end-safe"],P=()=>["auto",...p()],j=()=>[_,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...p()],u=()=>[e,c,l],ue=()=>[...N(),ve,xe,{position:[c,l]}],me=()=>["no-repeat",{repeat:["","x","y","space","round"]}],pe=()=>["auto","cover","contain",wt,xt,{size:[c,l]}],ee=()=>[oe,$,O],k=()=>["","none","full",m,c,l],z=()=>["",f,$,O],D=()=>["solid","dashed","dotted","double"],fe=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],y=()=>[f,oe,ve,xe],ge=()=>["","none",A,c,l],J=()=>["none",f,c,l],Y=()=>["none",f,c,l],te=()=>[f,c,l],H=()=>[_,"full",...p()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[T],breakpoint:[T],color:[ft],container:[T],"drop-shadow":[T],ease:["in","out","in-out"],font:[yt],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[T],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[T],shadow:[T],spacing:["px",f],text:[T],"text-shadow":[T],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",_,l,c,v]}],container:["container"],columns:[{columns:[f,l,c,d]}],"break-after":[{"break-after":B()}],"break-before":[{"break-before":B()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:V()}],overflow:[{overflow:M()}],"overflow-x":[{"overflow-x":M()}],"overflow-y":[{"overflow-y":M()}],overscroll:[{overscroll:F()}],"overscroll-x":[{"overscroll-x":F()}],"overscroll-y":[{"overscroll-y":F()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:R()}],"inset-x":[{"inset-x":R()}],"inset-y":[{"inset-y":R()}],start:[{start:R()}],end:[{end:R()}],top:[{top:R()}],right:[{right:R()}],bottom:[{bottom:R()}],left:[{left:R()}],visibility:["visible","invisible","collapse"],z:[{z:[E,"auto",c,l]}],basis:[{basis:[_,"full","auto",d,...p()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[f,_,"auto","initial","none",l]}],grow:[{grow:["",f,c,l]}],shrink:[{shrink:["",f,c,l]}],order:[{order:[E,"first","last","none",c,l]}],"grid-cols":[{"grid-cols":le()}],"col-start-end":[{col:ce()}],"col-start":[{"col-start":q()}],"col-end":[{"col-end":q()}],"grid-rows":[{"grid-rows":le()}],"row-start-end":[{row:ce()}],"row-start":[{"row-start":q()}],"row-end":[{"row-end":q()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":de()}],"auto-rows":[{"auto-rows":de()}],gap:[{gap:p()}],"gap-x":[{"gap-x":p()}],"gap-y":[{"gap-y":p()}],"justify-content":[{justify:[...Q(),"normal"]}],"justify-items":[{"justify-items":[...G(),"normal"]}],"justify-self":[{"justify-self":["auto",...G()]}],"align-content":[{content:["normal",...Q()]}],"align-items":[{items:[...G(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...G(),{baseline:["","last"]}]}],"place-content":[{"place-content":Q()}],"place-items":[{"place-items":[...G(),"baseline"]}],"place-self":[{"place-self":["auto",...G()]}],p:[{p:p()}],px:[{px:p()}],py:[{py:p()}],ps:[{ps:p()}],pe:[{pe:p()}],pt:[{pt:p()}],pr:[{pr:p()}],pb:[{pb:p()}],pl:[{pl:p()}],m:[{m:P()}],mx:[{mx:P()}],my:[{my:P()}],ms:[{ms:P()}],me:[{me:P()}],mt:[{mt:P()}],mr:[{mr:P()}],mb:[{mb:P()}],ml:[{ml:P()}],"space-x":[{"space-x":p()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":p()}],"space-y-reverse":["space-y-reverse"],size:[{size:j()}],w:[{w:[d,"screen",...j()]}],"min-w":[{"min-w":[d,"screen","none",...j()]}],"max-w":[{"max-w":[d,"screen","none","prose",{screen:[a]},...j()]}],h:[{h:["screen","lh",...j()]}],"min-h":[{"min-h":["screen","lh","none",...j()]}],"max-h":[{"max-h":["screen","lh",...j()]}],"font-size":[{text:["base",t,$,O]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,c,re]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",oe,l]}],"font-family":[{font:[kt,l,o]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[n,c,l]}],"line-clamp":[{"line-clamp":[f,"none",c,re]}],leading:[{leading:[s,...p()]}],"list-image":[{"list-image":["none",c,l]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",c,l]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:u()}],"text-color":[{text:u()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...D(),"wavy"]}],"text-decoration-thickness":[{decoration:[f,"from-font","auto",c,O]}],"text-decoration-color":[{decoration:u()}],"underline-offset":[{"underline-offset":[f,"auto",c,l]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:p()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",c,l]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",c,l]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ue()}],"bg-repeat":[{bg:me()}],"bg-size":[{bg:pe()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},E,c,l],radial:["",c,l],conic:[E,c,l]},Ct,vt]}],"bg-color":[{bg:u()}],"gradient-from-pos":[{from:ee()}],"gradient-via-pos":[{via:ee()}],"gradient-to-pos":[{to:ee()}],"gradient-from":[{from:u()}],"gradient-via":[{via:u()}],"gradient-to":[{to:u()}],rounded:[{rounded:k()}],"rounded-s":[{"rounded-s":k()}],"rounded-e":[{"rounded-e":k()}],"rounded-t":[{"rounded-t":k()}],"rounded-r":[{"rounded-r":k()}],"rounded-b":[{"rounded-b":k()}],"rounded-l":[{"rounded-l":k()}],"rounded-ss":[{"rounded-ss":k()}],"rounded-se":[{"rounded-se":k()}],"rounded-ee":[{"rounded-ee":k()}],"rounded-es":[{"rounded-es":k()}],"rounded-tl":[{"rounded-tl":k()}],"rounded-tr":[{"rounded-tr":k()}],"rounded-br":[{"rounded-br":k()}],"rounded-bl":[{"rounded-bl":k()}],"border-w":[{border:z()}],"border-w-x":[{"border-x":z()}],"border-w-y":[{"border-y":z()}],"border-w-s":[{"border-s":z()}],"border-w-e":[{"border-e":z()}],"border-w-t":[{"border-t":z()}],"border-w-r":[{"border-r":z()}],"border-w-b":[{"border-b":z()}],"border-w-l":[{"border-l":z()}],"divide-x":[{"divide-x":z()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":z()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...D(),"hidden","none"]}],"divide-style":[{divide:[...D(),"hidden","none"]}],"border-color":[{border:u()}],"border-color-x":[{"border-x":u()}],"border-color-y":[{"border-y":u()}],"border-color-s":[{"border-s":u()}],"border-color-e":[{"border-e":u()}],"border-color-t":[{"border-t":u()}],"border-color-r":[{"border-r":u()}],"border-color-b":[{"border-b":u()}],"border-color-l":[{"border-l":u()}],"divide-color":[{divide:u()}],"outline-style":[{outline:[...D(),"none","hidden"]}],"outline-offset":[{"outline-offset":[f,c,l]}],"outline-w":[{outline:["",f,$,O]}],"outline-color":[{outline:u()}],shadow:[{shadow:["","none",g,K,X]}],"shadow-color":[{shadow:u()}],"inset-shadow":[{"inset-shadow":["none",b,K,X]}],"inset-shadow-color":[{"inset-shadow":u()}],"ring-w":[{ring:z()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:u()}],"ring-offset-w":[{"ring-offset":[f,O]}],"ring-offset-color":[{"ring-offset":u()}],"inset-ring-w":[{"inset-ring":z()}],"inset-ring-color":[{"inset-ring":u()}],"text-shadow":[{"text-shadow":["none",x,K,X]}],"text-shadow-color":[{"text-shadow":u()}],opacity:[{opacity:[f,c,l]}],"mix-blend":[{"mix-blend":[...fe(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":fe()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[f]}],"mask-image-linear-from-pos":[{"mask-linear-from":y()}],"mask-image-linear-to-pos":[{"mask-linear-to":y()}],"mask-image-linear-from-color":[{"mask-linear-from":u()}],"mask-image-linear-to-color":[{"mask-linear-to":u()}],"mask-image-t-from-pos":[{"mask-t-from":y()}],"mask-image-t-to-pos":[{"mask-t-to":y()}],"mask-image-t-from-color":[{"mask-t-from":u()}],"mask-image-t-to-color":[{"mask-t-to":u()}],"mask-image-r-from-pos":[{"mask-r-from":y()}],"mask-image-r-to-pos":[{"mask-r-to":y()}],"mask-image-r-from-color":[{"mask-r-from":u()}],"mask-image-r-to-color":[{"mask-r-to":u()}],"mask-image-b-from-pos":[{"mask-b-from":y()}],"mask-image-b-to-pos":[{"mask-b-to":y()}],"mask-image-b-from-color":[{"mask-b-from":u()}],"mask-image-b-to-color":[{"mask-b-to":u()}],"mask-image-l-from-pos":[{"mask-l-from":y()}],"mask-image-l-to-pos":[{"mask-l-to":y()}],"mask-image-l-from-color":[{"mask-l-from":u()}],"mask-image-l-to-color":[{"mask-l-to":u()}],"mask-image-x-from-pos":[{"mask-x-from":y()}],"mask-image-x-to-pos":[{"mask-x-to":y()}],"mask-image-x-from-color":[{"mask-x-from":u()}],"mask-image-x-to-color":[{"mask-x-to":u()}],"mask-image-y-from-pos":[{"mask-y-from":y()}],"mask-image-y-to-pos":[{"mask-y-to":y()}],"mask-image-y-from-color":[{"mask-y-from":u()}],"mask-image-y-to-color":[{"mask-y-to":u()}],"mask-image-radial":[{"mask-radial":[c,l]}],"mask-image-radial-from-pos":[{"mask-radial-from":y()}],"mask-image-radial-to-pos":[{"mask-radial-to":y()}],"mask-image-radial-from-color":[{"mask-radial-from":u()}],"mask-image-radial-to-color":[{"mask-radial-to":u()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":N()}],"mask-image-conic-pos":[{"mask-conic":[f]}],"mask-image-conic-from-pos":[{"mask-conic-from":y()}],"mask-image-conic-to-pos":[{"mask-conic-to":y()}],"mask-image-conic-from-color":[{"mask-conic-from":u()}],"mask-image-conic-to-color":[{"mask-conic-to":u()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ue()}],"mask-repeat":[{mask:me()}],"mask-size":[{mask:pe()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",c,l]}],filter:[{filter:["","none",c,l]}],blur:[{blur:ge()}],brightness:[{brightness:[f,c,l]}],contrast:[{contrast:[f,c,l]}],"drop-shadow":[{"drop-shadow":["","none",S,K,X]}],"drop-shadow-color":[{"drop-shadow":u()}],grayscale:[{grayscale:["",f,c,l]}],"hue-rotate":[{"hue-rotate":[f,c,l]}],invert:[{invert:["",f,c,l]}],saturate:[{saturate:[f,c,l]}],sepia:[{sepia:["",f,c,l]}],"backdrop-filter":[{"backdrop-filter":["","none",c,l]}],"backdrop-blur":[{"backdrop-blur":ge()}],"backdrop-brightness":[{"backdrop-brightness":[f,c,l]}],"backdrop-contrast":[{"backdrop-contrast":[f,c,l]}],"backdrop-grayscale":[{"backdrop-grayscale":["",f,c,l]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[f,c,l]}],"backdrop-invert":[{"backdrop-invert":["",f,c,l]}],"backdrop-opacity":[{"backdrop-opacity":[f,c,l]}],"backdrop-saturate":[{"backdrop-saturate":[f,c,l]}],"backdrop-sepia":[{"backdrop-sepia":["",f,c,l]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":p()}],"border-spacing-x":[{"border-spacing-x":p()}],"border-spacing-y":[{"border-spacing-y":p()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",c,l]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[f,"initial",c,l]}],ease:[{ease:["linear","initial",I,c,l]}],delay:[{delay:[f,c,l]}],animate:[{animate:["none",U,c,l]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,c,l]}],"perspective-origin":[{"perspective-origin":V()}],rotate:[{rotate:J()}],"rotate-x":[{"rotate-x":J()}],"rotate-y":[{"rotate-y":J()}],"rotate-z":[{"rotate-z":J()}],scale:[{scale:Y()}],"scale-x":[{"scale-x":Y()}],"scale-y":[{"scale-y":Y()}],"scale-z":[{"scale-z":Y()}],"scale-3d":["scale-3d"],skew:[{skew:te()}],"skew-x":[{"skew-x":te()}],"skew-y":[{"skew-y":te()}],transform:[{transform:[c,l,"","none","gpu","cpu"]}],"transform-origin":[{origin:V()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:H()}],"translate-x":[{"translate-x":H()}],"translate-y":[{"translate-y":H()}],"translate-z":[{"translate-z":H()}],"translate-none":["translate-none"],accent:[{accent:u()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:u()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",c,l]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":p()}],"scroll-mx":[{"scroll-mx":p()}],"scroll-my":[{"scroll-my":p()}],"scroll-ms":[{"scroll-ms":p()}],"scroll-me":[{"scroll-me":p()}],"scroll-mt":[{"scroll-mt":p()}],"scroll-mr":[{"scroll-mr":p()}],"scroll-mb":[{"scroll-mb":p()}],"scroll-ml":[{"scroll-ml":p()}],"scroll-p":[{"scroll-p":p()}],"scroll-px":[{"scroll-px":p()}],"scroll-py":[{"scroll-py":p()}],"scroll-ps":[{"scroll-ps":p()}],"scroll-pe":[{"scroll-pe":p()}],"scroll-pt":[{"scroll-pt":p()}],"scroll-pr":[{"scroll-pr":p()}],"scroll-pb":[{"scroll-pb":p()}],"scroll-pl":[{"scroll-pl":p()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",c,l]}],fill:[{fill:["none",...u()]}],"stroke-w":[{stroke:[f,$,O,re]}],stroke:[{stroke:["none",...u()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Rt=at(At),ke=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,we=Se,Pt=(e,o)=>t=>{var r;if(o?.variants==null)return we(e,t?.class,t?.className);const{variants:n,defaultVariants:s}=o,a=Object.keys(n).map(m=>{const g=t?.[m],b=s?.[m];if(g===null)return null;const x=ke(g)||ke(b);return n[m][x]}),d=t&&Object.entries(t).reduce((m,g)=>{let[b,x]=g;return x===void 0||(m[b]=x),m},{}),i=o==null||(r=o.compoundVariants)===null||r===void 0?void 0:r.reduce((m,g)=>{let{class:b,className:x,...S}=g;return Object.entries(S).every(A=>{let[w,v]=A;return Array.isArray(v)?v.includes({...s,...d}[w]):{...s,...d}[w]===v})?[...m,b,x]:m},[]);return we(e,a,i,t?.class,t?.className)};function Ce(e,o){if(typeof e=="function")return e(o);e!=null&&(e.current=o)}function Tt(...e){return o=>{let t=!1;const r=e.map(n=>{const s=Ce(n,o);return!t&&typeof s=="function"&&(t=!0),s});if(t)return()=>{for(let n=0;n<r.length;n++){const s=r[n];typeof s=="function"?s():Ce(e[n],null)}}}}function Et(e){const o=Mt(e),t=C.forwardRef((r,n)=>{const{children:s,...a}=r,d=C.Children.toArray(s),i=d.find(Ot);if(i){const m=i.props.children,g=d.map(b=>b===i?C.Children.count(m)>1?C.Children.only(null):C.isValidElement(m)?m.props.children:null:b);return se.jsx(o,{...a,ref:n,children:C.isValidElement(m)?C.cloneElement(m,void 0,g):null})}return se.jsx(o,{...a,ref:n,children:s})});return t.displayName=`${e}.Slot`,t}var It=Et("Slot");function Mt(e){const o=C.forwardRef((t,r)=>{const{children:n,...s}=t;if(C.isValidElement(n)){const a=Vt(n),d=Nt(s,n.props);return n.type!==C.Fragment&&(d.ref=r?Tt(r,a):a),C.cloneElement(n,d)}return C.Children.count(n)>1?C.Children.only(null):null});return o.displayName=`${e}.SlotClone`,o}var jt=Symbol("radix.slottable");function Ot(e){return C.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===jt}function Nt(e,o){const t={...o};for(const r in o){const n=e[r],s=o[r];/^on[A-Z]/.test(r)?n&&s?t[r]=(...d)=>{const i=s(...d);return n(...d),i}:n&&(t[r]=n):r==="style"?t[r]={...n,...s}:r==="className"&&(t[r]=[n,s].filter(Boolean).join(" "))}return{...e,...t}}function Vt(e){let o=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,t=o&&"isReactWarning"in o&&o.isReactWarning;return t?e.ref:(o=Object.getOwnPropertyDescriptor(e,"ref")?.get,t=o&&"isReactWarning"in o&&o.isReactWarning,t?e.props.ref:e.props.ref||e.ref)}function Gt(...e){return Rt(Se(e))}function ne(e){let o=0;for(const t of e){const r=t.codePointAt(0);r>=19968&&r<=40959||r>=13312&&r<=19903||r>=65280&&r<=65376||r>=12288&&r<=12351?o+=2:o+=1}return o}function $t(e,o){if(ne(e)<=o)return e;const t=o-1,r=Math.ceil(t/2),n=Math.floor(t/2);let s="",a=0;for(const g of e){const b=ne(g);if(a+b>r)break;s+=g,a+=b}const d=[...e];let i="",m=0;for(let g=d.length-1;g>=0;g--){const b=ne(d[g]);if(m+b>n)break;i=d[g]+i,m+=b}return s+"…"+i}const _t=Pt("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function Ut({className:e,variant:o="default",size:t="default",asChild:r=!1,...n}){const s=r?It:"button";return se.jsx(s,{"data-slot":"button","data-variant":o,"data-size":t,className:Gt(_t({variant:o,size:t,className:e})),...n})}const Lt="/api";class Wt{baseUrl;constructor(o){this.baseUrl=o}async request(o,t={}){const{params:r,...n}=t;let s=`${this.baseUrl}${o}`;if(r){const i=new URLSearchParams(r);s+=`?${i.toString()}`}const a={...n.headers};if(n.body!==void 0&&(a["Content-Type"]="application/json"),_e()){const i=Le();i&&(a.Authorization=`Bearer ${i}`)}const d=await fetch(s,{...n,headers:a});if(!d.ok){const i=await d.json().catch(()=>({}));throw new Bt(d.status,i.message||i.error||"Request failed")}return d.json()}get(o,t){return this.request(o,{...t,method:"GET"})}post(o,t,r){return this.request(o,{...r,method:"POST",body:t?JSON.stringify(t):void 0})}put(o,t,r){return this.request(o,{...r,method:"PUT",body:t?JSON.stringify(t):void 0})}patch(o,t,r){return this.request(o,{...r,method:"PATCH",body:t?JSON.stringify(t):void 0})}delete(o,t){return this.request(o,{...t,method:"DELETE"})}}class Bt extends Error{status;constructor(o,t){super(t),this.name="ApiError",this.status=o}}const qt=new Wt(Lt);export{Ut as B,qt as a,Rt as b,Gt as c,Se as d,$t as t};
|
|
1
|
+
import{r as C,j as se,i as _e,g as Le}from"./index-DFLmhfiK.js";function ze(e){var o,t,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var n=e.length;for(o=0;o<n;o++)e[o]&&(t=ze(e[o]))&&(r&&(r+=" "),r+=t)}else for(t in e)e[t]&&(r&&(r+=" "),r+=t);return r}function Se(){for(var e,o,t=0,r="",n=arguments.length;t<n;t++)(e=arguments[t])&&(o=ze(e))&&(r&&(r+=" "),r+=o);return r}const We=(e,o)=>{const t=new Array(e.length+o.length);for(let r=0;r<e.length;r++)t[r]=e[r];for(let r=0;r<o.length;r++)t[e.length+r]=o[r];return t},Be=(e,o)=>({classGroupId:e,validator:o}),Ae=(e=new Map,o=null,t)=>({nextPart:e,validators:o,classGroupId:t}),Z="-",be=[],Fe="arbitrary..",$e=e=>{const o=qe(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:a=>{if(a.startsWith("[")&&a.endsWith("]"))return Ue(a);const d=a.split(Z),i=d[0]===""&&d.length>1?1:0;return Re(d,i,o)},getConflictingClassGroupIds:(a,d)=>{if(d){const i=r[a],m=t[a];return i?m?We(m,i):i:m||be}return t[a]||be}}},Re=(e,o,t)=>{if(e.length-o===0)return t.classGroupId;const n=e[o],s=t.nextPart.get(n);if(s){const m=Re(e,o+1,s);if(m)return m}const a=t.validators;if(a===null)return;const d=o===0?e.join(Z):e.slice(o).join(Z),i=a.length;for(let m=0;m<i;m++){const g=a[m];if(g.validator(d))return g.classGroupId}},Ue=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const o=e.slice(1,-1),t=o.indexOf(":"),r=o.slice(0,t);return r?Fe+r:void 0})(),qe=e=>{const{theme:o,classGroups:t}=e;return De(t,o)},De=(e,o)=>{const t=Ae();for(const r in e){const n=e[r];ie(n,t,r,o)}return t},ie=(e,o,t,r)=>{const n=e.length;for(let s=0;s<n;s++){const a=e[s];Je(a,o,t,r)}},Je=(e,o,t,r)=>{if(typeof e=="string"){Ye(e,o,t);return}if(typeof e=="function"){He(e,o,t,r);return}Xe(e,o,t,r)},Ye=(e,o,t)=>{const r=e===""?o:Pe(o,e);r.classGroupId=t},He=(e,o,t,r)=>{if(Ke(e)){ie(e(r),o,t,r);return}o.validators===null&&(o.validators=[]),o.validators.push(Be(t,e))},Xe=(e,o,t,r)=>{const n=Object.entries(e),s=n.length;for(let a=0;a<s;a++){const[d,i]=n[a];ie(i,Pe(o,d),t,r)}},Pe=(e,o)=>{let t=e;const r=o.split(Z),n=r.length;for(let s=0;s<n;s++){const a=r[s];let d=t.nextPart.get(a);d||(d=Ae(),t.nextPart.set(a,d)),t=d}return t},Ke=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,Ze=e=>{if(e<1)return{get:()=>{},set:()=>{}};let o=0,t=Object.create(null),r=Object.create(null);const n=(s,a)=>{t[s]=a,o++,o>e&&(o=0,r=t,t=Object.create(null))};return{get(s){let a=t[s];if(a!==void 0)return a;if((a=r[s])!==void 0)return n(s,a),a},set(s,a){s in t?t[s]=a:n(s,a)}}},ae="!",he=":",Qe=[],ye=(e,o,t,r,n)=>({modifiers:e,hasImportantModifier:o,baseClassName:t,maybePostfixModifierPosition:r,isExternal:n}),et=e=>{const{prefix:o,experimentalParseClassName:t}=e;let r=n=>{const s=[];let a=0,d=0,i=0,m;const g=n.length;for(let w=0;w<g;w++){const v=n[w];if(a===0&&d===0){if(v===he){s.push(n.slice(i,w)),i=w+1;continue}if(v==="/"){m=w;continue}}v==="["?a++:v==="]"?a--:v==="("?d++:v===")"&&d--}const b=s.length===0?n:n.slice(i);let x=b,S=!1;b.endsWith(ae)?(x=b.slice(0,-1),S=!0):b.startsWith(ae)&&(x=b.slice(1),S=!0);const A=m&&m>i?m-i:void 0;return ye(s,S,x,A)};if(o){const n=o+he,s=r;r=a=>a.startsWith(n)?s(a.slice(n.length)):ye(Qe,!1,a,void 0,!0)}if(t){const n=r;r=s=>t({className:s,parseClassName:n})}return r},tt=e=>{const o=new Map;return e.orderSensitiveModifiers.forEach((t,r)=>{o.set(t,1e6+r)}),t=>{const r=[];let n=[];for(let s=0;s<t.length;s++){const a=t[s],d=a[0]==="[",i=o.has(a);d||i?(n.length>0&&(n.sort(),r.push(...n),n=[]),r.push(a)):n.push(a)}return n.length>0&&(n.sort(),r.push(...n)),r}},ot=e=>({cache:Ze(e.cacheSize),parseClassName:et(e),sortModifiers:tt(e),...$e(e)}),rt=/\s+/,nt=(e,o)=>{const{parseClassName:t,getClassGroupId:r,getConflictingClassGroupIds:n,sortModifiers:s}=o,a=[],d=e.trim().split(rt);let i="";for(let m=d.length-1;m>=0;m-=1){const g=d[m],{isExternal:b,modifiers:x,hasImportantModifier:S,baseClassName:A,maybePostfixModifierPosition:w}=t(g);if(b){i=g+(i.length>0?" "+i:i);continue}let v=!!w,I=r(v?A.substring(0,w):A);if(!I){if(!v){i=g+(i.length>0?" "+i:i);continue}if(I=r(A),!I){i=g+(i.length>0?" "+i:i);continue}v=!1}const U=x.length===0?"":x.length===1?x[0]:s(x).join(":"),B=S?U+ae:U,N=B+I;if(a.indexOf(N)>-1)continue;a.push(N);const V=n(I,v);for(let M=0;M<V.length;++M){const F=V[M];a.push(B+F)}i=g+(i.length>0?" "+i:i)}return i},st=(...e)=>{let o=0,t,r,n="";for(;o<e.length;)(t=e[o++])&&(r=Te(t))&&(n&&(n+=" "),n+=r);return n},Te=e=>{if(typeof e=="string")return e;let o,t="";for(let r=0;r<e.length;r++)e[r]&&(o=Te(e[r]))&&(t&&(t+=" "),t+=o);return t},at=(e,...o)=>{let t,r,n,s;const a=i=>{const m=o.reduce((g,b)=>b(g),e());return t=ot(m),r=t.cache.get,n=t.cache.set,s=d,d(i)},d=i=>{const m=r(i);if(m)return m;const g=nt(i,t);return n(i,g),g};return s=a,(...i)=>s(st(...i))},it=[],h=e=>{const o=t=>t[e]||it;return o.isThemeGetter=!0,o},Ee=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Ie=/^\((?:(\w[\w-]*):)?(.+)\)$/i,lt=/^\d+\/\d+$/,ct=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,dt=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,ut=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,mt=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,pt=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,_=e=>lt.test(e),f=e=>!!e&&!Number.isNaN(Number(e)),E=e=>!!e&&Number.isInteger(Number(e)),oe=e=>e.endsWith("%")&&f(e.slice(0,-1)),T=e=>ct.test(e),ft=()=>!0,gt=e=>dt.test(e)&&!ut.test(e),Me=()=>!1,bt=e=>mt.test(e),ht=e=>pt.test(e),yt=e=>!l(e)&&!c(e),xt=e=>L(e,Ne,Me),l=e=>Ee.test(e),O=e=>L(e,Ve,gt),re=e=>L(e,zt,f),xe=e=>L(e,je,Me),vt=e=>L(e,Oe,ht),X=e=>L(e,Ge,bt),c=e=>Ie.test(e),$=e=>W(e,Ve),kt=e=>W(e,St),ve=e=>W(e,je),wt=e=>W(e,Ne),Ct=e=>W(e,Oe),K=e=>W(e,Ge,!0),L=(e,o,t)=>{const r=Ee.exec(e);return r?r[1]?o(r[1]):t(r[2]):!1},W=(e,o,t=!1)=>{const r=Ie.exec(e);return r?r[1]?o(r[1]):t:!1},je=e=>e==="position"||e==="percentage",Oe=e=>e==="image"||e==="url",Ne=e=>e==="length"||e==="size"||e==="bg-size",Ve=e=>e==="length",zt=e=>e==="number",St=e=>e==="family-name",Ge=e=>e==="shadow",At=()=>{const e=h("color"),o=h("font"),t=h("text"),r=h("font-weight"),n=h("tracking"),s=h("leading"),a=h("breakpoint"),d=h("container"),i=h("spacing"),m=h("radius"),g=h("shadow"),b=h("inset-shadow"),x=h("text-shadow"),S=h("drop-shadow"),A=h("blur"),w=h("perspective"),v=h("aspect"),I=h("ease"),U=h("animate"),B=()=>["auto","avoid","all","avoid-page","page","left","right","column"],N=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],V=()=>[...N(),c,l],M=()=>["auto","hidden","clip","visible","scroll"],F=()=>["auto","contain","none"],p=()=>[c,l,i],R=()=>[_,"full","auto",...p()],le=()=>[E,"none","subgrid",c,l],ce=()=>["auto",{span:["full",E,c,l]},E,c,l],q=()=>[E,"auto",c,l],de=()=>["auto","min","max","fr",c,l],Q=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],G=()=>["start","end","center","stretch","center-safe","end-safe"],P=()=>["auto",...p()],j=()=>[_,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...p()],u=()=>[e,c,l],ue=()=>[...N(),ve,xe,{position:[c,l]}],me=()=>["no-repeat",{repeat:["","x","y","space","round"]}],pe=()=>["auto","cover","contain",wt,xt,{size:[c,l]}],ee=()=>[oe,$,O],k=()=>["","none","full",m,c,l],z=()=>["",f,$,O],D=()=>["solid","dashed","dotted","double"],fe=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],y=()=>[f,oe,ve,xe],ge=()=>["","none",A,c,l],J=()=>["none",f,c,l],Y=()=>["none",f,c,l],te=()=>[f,c,l],H=()=>[_,"full",...p()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[T],breakpoint:[T],color:[ft],container:[T],"drop-shadow":[T],ease:["in","out","in-out"],font:[yt],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[T],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[T],shadow:[T],spacing:["px",f],text:[T],"text-shadow":[T],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",_,l,c,v]}],container:["container"],columns:[{columns:[f,l,c,d]}],"break-after":[{"break-after":B()}],"break-before":[{"break-before":B()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:V()}],overflow:[{overflow:M()}],"overflow-x":[{"overflow-x":M()}],"overflow-y":[{"overflow-y":M()}],overscroll:[{overscroll:F()}],"overscroll-x":[{"overscroll-x":F()}],"overscroll-y":[{"overscroll-y":F()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:R()}],"inset-x":[{"inset-x":R()}],"inset-y":[{"inset-y":R()}],start:[{start:R()}],end:[{end:R()}],top:[{top:R()}],right:[{right:R()}],bottom:[{bottom:R()}],left:[{left:R()}],visibility:["visible","invisible","collapse"],z:[{z:[E,"auto",c,l]}],basis:[{basis:[_,"full","auto",d,...p()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[f,_,"auto","initial","none",l]}],grow:[{grow:["",f,c,l]}],shrink:[{shrink:["",f,c,l]}],order:[{order:[E,"first","last","none",c,l]}],"grid-cols":[{"grid-cols":le()}],"col-start-end":[{col:ce()}],"col-start":[{"col-start":q()}],"col-end":[{"col-end":q()}],"grid-rows":[{"grid-rows":le()}],"row-start-end":[{row:ce()}],"row-start":[{"row-start":q()}],"row-end":[{"row-end":q()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":de()}],"auto-rows":[{"auto-rows":de()}],gap:[{gap:p()}],"gap-x":[{"gap-x":p()}],"gap-y":[{"gap-y":p()}],"justify-content":[{justify:[...Q(),"normal"]}],"justify-items":[{"justify-items":[...G(),"normal"]}],"justify-self":[{"justify-self":["auto",...G()]}],"align-content":[{content:["normal",...Q()]}],"align-items":[{items:[...G(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...G(),{baseline:["","last"]}]}],"place-content":[{"place-content":Q()}],"place-items":[{"place-items":[...G(),"baseline"]}],"place-self":[{"place-self":["auto",...G()]}],p:[{p:p()}],px:[{px:p()}],py:[{py:p()}],ps:[{ps:p()}],pe:[{pe:p()}],pt:[{pt:p()}],pr:[{pr:p()}],pb:[{pb:p()}],pl:[{pl:p()}],m:[{m:P()}],mx:[{mx:P()}],my:[{my:P()}],ms:[{ms:P()}],me:[{me:P()}],mt:[{mt:P()}],mr:[{mr:P()}],mb:[{mb:P()}],ml:[{ml:P()}],"space-x":[{"space-x":p()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":p()}],"space-y-reverse":["space-y-reverse"],size:[{size:j()}],w:[{w:[d,"screen",...j()]}],"min-w":[{"min-w":[d,"screen","none",...j()]}],"max-w":[{"max-w":[d,"screen","none","prose",{screen:[a]},...j()]}],h:[{h:["screen","lh",...j()]}],"min-h":[{"min-h":["screen","lh","none",...j()]}],"max-h":[{"max-h":["screen","lh",...j()]}],"font-size":[{text:["base",t,$,O]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,c,re]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",oe,l]}],"font-family":[{font:[kt,l,o]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[n,c,l]}],"line-clamp":[{"line-clamp":[f,"none",c,re]}],leading:[{leading:[s,...p()]}],"list-image":[{"list-image":["none",c,l]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",c,l]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:u()}],"text-color":[{text:u()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...D(),"wavy"]}],"text-decoration-thickness":[{decoration:[f,"from-font","auto",c,O]}],"text-decoration-color":[{decoration:u()}],"underline-offset":[{"underline-offset":[f,"auto",c,l]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:p()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",c,l]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",c,l]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ue()}],"bg-repeat":[{bg:me()}],"bg-size":[{bg:pe()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},E,c,l],radial:["",c,l],conic:[E,c,l]},Ct,vt]}],"bg-color":[{bg:u()}],"gradient-from-pos":[{from:ee()}],"gradient-via-pos":[{via:ee()}],"gradient-to-pos":[{to:ee()}],"gradient-from":[{from:u()}],"gradient-via":[{via:u()}],"gradient-to":[{to:u()}],rounded:[{rounded:k()}],"rounded-s":[{"rounded-s":k()}],"rounded-e":[{"rounded-e":k()}],"rounded-t":[{"rounded-t":k()}],"rounded-r":[{"rounded-r":k()}],"rounded-b":[{"rounded-b":k()}],"rounded-l":[{"rounded-l":k()}],"rounded-ss":[{"rounded-ss":k()}],"rounded-se":[{"rounded-se":k()}],"rounded-ee":[{"rounded-ee":k()}],"rounded-es":[{"rounded-es":k()}],"rounded-tl":[{"rounded-tl":k()}],"rounded-tr":[{"rounded-tr":k()}],"rounded-br":[{"rounded-br":k()}],"rounded-bl":[{"rounded-bl":k()}],"border-w":[{border:z()}],"border-w-x":[{"border-x":z()}],"border-w-y":[{"border-y":z()}],"border-w-s":[{"border-s":z()}],"border-w-e":[{"border-e":z()}],"border-w-t":[{"border-t":z()}],"border-w-r":[{"border-r":z()}],"border-w-b":[{"border-b":z()}],"border-w-l":[{"border-l":z()}],"divide-x":[{"divide-x":z()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":z()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...D(),"hidden","none"]}],"divide-style":[{divide:[...D(),"hidden","none"]}],"border-color":[{border:u()}],"border-color-x":[{"border-x":u()}],"border-color-y":[{"border-y":u()}],"border-color-s":[{"border-s":u()}],"border-color-e":[{"border-e":u()}],"border-color-t":[{"border-t":u()}],"border-color-r":[{"border-r":u()}],"border-color-b":[{"border-b":u()}],"border-color-l":[{"border-l":u()}],"divide-color":[{divide:u()}],"outline-style":[{outline:[...D(),"none","hidden"]}],"outline-offset":[{"outline-offset":[f,c,l]}],"outline-w":[{outline:["",f,$,O]}],"outline-color":[{outline:u()}],shadow:[{shadow:["","none",g,K,X]}],"shadow-color":[{shadow:u()}],"inset-shadow":[{"inset-shadow":["none",b,K,X]}],"inset-shadow-color":[{"inset-shadow":u()}],"ring-w":[{ring:z()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:u()}],"ring-offset-w":[{"ring-offset":[f,O]}],"ring-offset-color":[{"ring-offset":u()}],"inset-ring-w":[{"inset-ring":z()}],"inset-ring-color":[{"inset-ring":u()}],"text-shadow":[{"text-shadow":["none",x,K,X]}],"text-shadow-color":[{"text-shadow":u()}],opacity:[{opacity:[f,c,l]}],"mix-blend":[{"mix-blend":[...fe(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":fe()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[f]}],"mask-image-linear-from-pos":[{"mask-linear-from":y()}],"mask-image-linear-to-pos":[{"mask-linear-to":y()}],"mask-image-linear-from-color":[{"mask-linear-from":u()}],"mask-image-linear-to-color":[{"mask-linear-to":u()}],"mask-image-t-from-pos":[{"mask-t-from":y()}],"mask-image-t-to-pos":[{"mask-t-to":y()}],"mask-image-t-from-color":[{"mask-t-from":u()}],"mask-image-t-to-color":[{"mask-t-to":u()}],"mask-image-r-from-pos":[{"mask-r-from":y()}],"mask-image-r-to-pos":[{"mask-r-to":y()}],"mask-image-r-from-color":[{"mask-r-from":u()}],"mask-image-r-to-color":[{"mask-r-to":u()}],"mask-image-b-from-pos":[{"mask-b-from":y()}],"mask-image-b-to-pos":[{"mask-b-to":y()}],"mask-image-b-from-color":[{"mask-b-from":u()}],"mask-image-b-to-color":[{"mask-b-to":u()}],"mask-image-l-from-pos":[{"mask-l-from":y()}],"mask-image-l-to-pos":[{"mask-l-to":y()}],"mask-image-l-from-color":[{"mask-l-from":u()}],"mask-image-l-to-color":[{"mask-l-to":u()}],"mask-image-x-from-pos":[{"mask-x-from":y()}],"mask-image-x-to-pos":[{"mask-x-to":y()}],"mask-image-x-from-color":[{"mask-x-from":u()}],"mask-image-x-to-color":[{"mask-x-to":u()}],"mask-image-y-from-pos":[{"mask-y-from":y()}],"mask-image-y-to-pos":[{"mask-y-to":y()}],"mask-image-y-from-color":[{"mask-y-from":u()}],"mask-image-y-to-color":[{"mask-y-to":u()}],"mask-image-radial":[{"mask-radial":[c,l]}],"mask-image-radial-from-pos":[{"mask-radial-from":y()}],"mask-image-radial-to-pos":[{"mask-radial-to":y()}],"mask-image-radial-from-color":[{"mask-radial-from":u()}],"mask-image-radial-to-color":[{"mask-radial-to":u()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":N()}],"mask-image-conic-pos":[{"mask-conic":[f]}],"mask-image-conic-from-pos":[{"mask-conic-from":y()}],"mask-image-conic-to-pos":[{"mask-conic-to":y()}],"mask-image-conic-from-color":[{"mask-conic-from":u()}],"mask-image-conic-to-color":[{"mask-conic-to":u()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ue()}],"mask-repeat":[{mask:me()}],"mask-size":[{mask:pe()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",c,l]}],filter:[{filter:["","none",c,l]}],blur:[{blur:ge()}],brightness:[{brightness:[f,c,l]}],contrast:[{contrast:[f,c,l]}],"drop-shadow":[{"drop-shadow":["","none",S,K,X]}],"drop-shadow-color":[{"drop-shadow":u()}],grayscale:[{grayscale:["",f,c,l]}],"hue-rotate":[{"hue-rotate":[f,c,l]}],invert:[{invert:["",f,c,l]}],saturate:[{saturate:[f,c,l]}],sepia:[{sepia:["",f,c,l]}],"backdrop-filter":[{"backdrop-filter":["","none",c,l]}],"backdrop-blur":[{"backdrop-blur":ge()}],"backdrop-brightness":[{"backdrop-brightness":[f,c,l]}],"backdrop-contrast":[{"backdrop-contrast":[f,c,l]}],"backdrop-grayscale":[{"backdrop-grayscale":["",f,c,l]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[f,c,l]}],"backdrop-invert":[{"backdrop-invert":["",f,c,l]}],"backdrop-opacity":[{"backdrop-opacity":[f,c,l]}],"backdrop-saturate":[{"backdrop-saturate":[f,c,l]}],"backdrop-sepia":[{"backdrop-sepia":["",f,c,l]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":p()}],"border-spacing-x":[{"border-spacing-x":p()}],"border-spacing-y":[{"border-spacing-y":p()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",c,l]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[f,"initial",c,l]}],ease:[{ease:["linear","initial",I,c,l]}],delay:[{delay:[f,c,l]}],animate:[{animate:["none",U,c,l]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,c,l]}],"perspective-origin":[{"perspective-origin":V()}],rotate:[{rotate:J()}],"rotate-x":[{"rotate-x":J()}],"rotate-y":[{"rotate-y":J()}],"rotate-z":[{"rotate-z":J()}],scale:[{scale:Y()}],"scale-x":[{"scale-x":Y()}],"scale-y":[{"scale-y":Y()}],"scale-z":[{"scale-z":Y()}],"scale-3d":["scale-3d"],skew:[{skew:te()}],"skew-x":[{"skew-x":te()}],"skew-y":[{"skew-y":te()}],transform:[{transform:[c,l,"","none","gpu","cpu"]}],"transform-origin":[{origin:V()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:H()}],"translate-x":[{"translate-x":H()}],"translate-y":[{"translate-y":H()}],"translate-z":[{"translate-z":H()}],"translate-none":["translate-none"],accent:[{accent:u()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:u()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",c,l]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":p()}],"scroll-mx":[{"scroll-mx":p()}],"scroll-my":[{"scroll-my":p()}],"scroll-ms":[{"scroll-ms":p()}],"scroll-me":[{"scroll-me":p()}],"scroll-mt":[{"scroll-mt":p()}],"scroll-mr":[{"scroll-mr":p()}],"scroll-mb":[{"scroll-mb":p()}],"scroll-ml":[{"scroll-ml":p()}],"scroll-p":[{"scroll-p":p()}],"scroll-px":[{"scroll-px":p()}],"scroll-py":[{"scroll-py":p()}],"scroll-ps":[{"scroll-ps":p()}],"scroll-pe":[{"scroll-pe":p()}],"scroll-pt":[{"scroll-pt":p()}],"scroll-pr":[{"scroll-pr":p()}],"scroll-pb":[{"scroll-pb":p()}],"scroll-pl":[{"scroll-pl":p()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",c,l]}],fill:[{fill:["none",...u()]}],"stroke-w":[{stroke:[f,$,O,re]}],stroke:[{stroke:["none",...u()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Rt=at(At),ke=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,we=Se,Pt=(e,o)=>t=>{var r;if(o?.variants==null)return we(e,t?.class,t?.className);const{variants:n,defaultVariants:s}=o,a=Object.keys(n).map(m=>{const g=t?.[m],b=s?.[m];if(g===null)return null;const x=ke(g)||ke(b);return n[m][x]}),d=t&&Object.entries(t).reduce((m,g)=>{let[b,x]=g;return x===void 0||(m[b]=x),m},{}),i=o==null||(r=o.compoundVariants)===null||r===void 0?void 0:r.reduce((m,g)=>{let{class:b,className:x,...S}=g;return Object.entries(S).every(A=>{let[w,v]=A;return Array.isArray(v)?v.includes({...s,...d}[w]):{...s,...d}[w]===v})?[...m,b,x]:m},[]);return we(e,a,i,t?.class,t?.className)};function Ce(e,o){if(typeof e=="function")return e(o);e!=null&&(e.current=o)}function Tt(...e){return o=>{let t=!1;const r=e.map(n=>{const s=Ce(n,o);return!t&&typeof s=="function"&&(t=!0),s});if(t)return()=>{for(let n=0;n<r.length;n++){const s=r[n];typeof s=="function"?s():Ce(e[n],null)}}}}function Et(e){const o=Mt(e),t=C.forwardRef((r,n)=>{const{children:s,...a}=r,d=C.Children.toArray(s),i=d.find(Ot);if(i){const m=i.props.children,g=d.map(b=>b===i?C.Children.count(m)>1?C.Children.only(null):C.isValidElement(m)?m.props.children:null:b);return se.jsx(o,{...a,ref:n,children:C.isValidElement(m)?C.cloneElement(m,void 0,g):null})}return se.jsx(o,{...a,ref:n,children:s})});return t.displayName=`${e}.Slot`,t}var It=Et("Slot");function Mt(e){const o=C.forwardRef((t,r)=>{const{children:n,...s}=t;if(C.isValidElement(n)){const a=Vt(n),d=Nt(s,n.props);return n.type!==C.Fragment&&(d.ref=r?Tt(r,a):a),C.cloneElement(n,d)}return C.Children.count(n)>1?C.Children.only(null):null});return o.displayName=`${e}.SlotClone`,o}var jt=Symbol("radix.slottable");function Ot(e){return C.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===jt}function Nt(e,o){const t={...o};for(const r in o){const n=e[r],s=o[r];/^on[A-Z]/.test(r)?n&&s?t[r]=(...d)=>{const i=s(...d);return n(...d),i}:n&&(t[r]=n):r==="style"?t[r]={...n,...s}:r==="className"&&(t[r]=[n,s].filter(Boolean).join(" "))}return{...e,...t}}function Vt(e){let o=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,t=o&&"isReactWarning"in o&&o.isReactWarning;return t?e.ref:(o=Object.getOwnPropertyDescriptor(e,"ref")?.get,t=o&&"isReactWarning"in o&&o.isReactWarning,t?e.props.ref:e.props.ref||e.ref)}function Gt(...e){return Rt(Se(e))}function ne(e){let o=0;for(const t of e){const r=t.codePointAt(0);r>=19968&&r<=40959||r>=13312&&r<=19903||r>=65280&&r<=65376||r>=12288&&r<=12351?o+=2:o+=1}return o}function $t(e,o){if(ne(e)<=o)return e;const t=o-1,r=Math.ceil(t/2),n=Math.floor(t/2);let s="",a=0;for(const g of e){const b=ne(g);if(a+b>r)break;s+=g,a+=b}const d=[...e];let i="",m=0;for(let g=d.length-1;g>=0;g--){const b=ne(d[g]);if(m+b>n)break;i=d[g]+i,m+=b}return s+"…"+i}const _t=Pt("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function Ut({className:e,variant:o="default",size:t="default",asChild:r=!1,...n}){const s=r?It:"button";return se.jsx(s,{"data-slot":"button","data-variant":o,"data-size":t,className:Gt(_t({variant:o,size:t,className:e})),...n})}const Lt="/api";class Wt{baseUrl;constructor(o){this.baseUrl=o}async request(o,t={}){const{params:r,...n}=t;let s=`${this.baseUrl}${o}`;if(r){const i=new URLSearchParams(r);s+=`?${i.toString()}`}const a={...n.headers};if(n.body!==void 0&&(a["Content-Type"]="application/json"),_e()){const i=Le();i&&(a.Authorization=`Bearer ${i}`)}const d=await fetch(s,{...n,headers:a});if(!d.ok){const i=await d.json().catch(()=>({}));throw new Bt(d.status,i.message||i.error||"Request failed")}return d.json()}get(o,t){return this.request(o,{...t,method:"GET"})}post(o,t,r){return this.request(o,{...r,method:"POST",body:t?JSON.stringify(t):void 0})}put(o,t,r){return this.request(o,{...r,method:"PUT",body:t?JSON.stringify(t):void 0})}patch(o,t,r){return this.request(o,{...r,method:"PATCH",body:t?JSON.stringify(t):void 0})}delete(o,t){return this.request(o,{...t,method:"DELETE"})}}class Bt extends Error{status;constructor(o,t){super(t),this.name="ApiError",this.status=o}}const qt=new Wt(Lt);export{Ut as B,qt as a,Rt as b,Gt as c,Se as d,$t as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as o}from"./index-
|
|
1
|
+
import{c as o}from"./index-DFLmhfiK.js";const c=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],t=o("check",c);const e=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],s=o("chevron-down",e);export{s as C,t as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e}from"./index-
|
|
1
|
+
import{c as e}from"./index-DFLmhfiK.js";const c=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],y=e("circle-alert",c);export{y as C};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c}from"./index-
|
|
1
|
+
import{c}from"./index-DFLmhfiK.js";const e=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],r=c("circle-check",e);export{r as C};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{L as h,Z as x,I as p,g as u}from"./mermaid-NOHMQCX5-
|
|
1
|
+
import{L as h,Z as x,I as p,g as u}from"./mermaid-NOHMQCX5-BCuuUgP6.js";import{r as i,j as a}from"./index-DFLmhfiK.js";import"./log-adapter-50wgehrc.js";import"./chevron-down-gMypHmvg.js";import"./api-client-CvkWGC57.js";var v=u("block","before:content-[counter(line)]","before:inline-block","before:[counter-increment:line]","before:w-6","before:mr-4","before:text-[13px]","before:text-right","before:text-muted-foreground/50","before:font-mono","before:select-none"),k=r=>{let e={};for(let l of r.split(";")){let n=l.indexOf(":");if(n>0){let c=l.slice(0,n).trim(),o=l.slice(n+1).trim();c&&o&&(e[c]=o)}}return e},j=i.memo(({children:r,result:e,language:l,className:n,...c})=>{let o=i.useMemo(()=>{let s={};return e.bg&&(s["--sdm-bg"]=e.bg),e.fg&&(s["--sdm-fg"]=e.fg),e.rootStyle&&Object.assign(s,k(e.rootStyle)),s},[e.bg,e.fg,e.rootStyle]);return a.jsx("pre",{className:u(n,"p-4 text-sm","bg-[var(--sdm-bg,transparent)]","dark:bg-[var(--shiki-dark-bg,var(--sdm-bg,transparent))]"),"data-language":l,"data-streamdown":"code-block-body",style:o,...c,children:a.jsx("code",{className:"[counter-increment:line_0] [counter-reset:line]",children:e.tokens.map((s,d)=>a.jsx("span",{className:v,children:s.map((t,b)=>a.jsx("span",{className:u("text-[var(--sdm-c,inherit)]","dark:text-[var(--shiki-dark,var(--sdm-c,inherit))]",t.bgColor&&"bg-[var(--sdm-tbg)]",t.bgColor&&"dark:bg-[var(--shiki-dark-bg,var(--sdm-tbg))]"),style:{...t.color?{"--sdm-c":t.color}:{},...t.bgColor?{"--sdm-tbg":t.bgColor}:{},...t.htmlStyle},...t.htmlAttrs,children:t.content},b))},d))})})},(r,e)=>r.result===e.result&&r.language===e.language&&r.className===e.className),y=({className:r,language:e,style:l,...n})=>a.jsx("div",{className:u("my-4 w-full overflow-hidden rounded-xl border border-border",r),"data-language":e,"data-streamdown":"code-block",style:{contentVisibility:"auto",containIntrinsicSize:"auto 200px",...l},...n}),N=({language:r,children:e})=>a.jsxs("div",{className:"flex items-center justify-between bg-muted/80 p-3 text-muted-foreground text-xs","data-language":r,"data-streamdown":"code-block-header",children:[a.jsx("span",{className:"ml-1 font-mono lowercase",children:r}),a.jsx("div",{className:"flex items-center gap-2",children:e})]}),w=/\n+$/,B=({code:r,language:e,className:l,children:n,...c})=>{let{shikiTheme:o}=i.useContext(h),s=x(),d=i.useMemo(()=>r.replace(w,""),[r]),t=i.useMemo(()=>({bg:"transparent",fg:"inherit",tokens:d.split(`
|
|
2
2
|
`).map(g=>[{content:g,color:"inherit",bgColor:"transparent",htmlStyle:{},offset:0}])}),[d]),[b,m]=i.useState(t);return i.useEffect(()=>{if(!s){m(t);return}let g=s.highlight({code:d,language:e,themes:o},f=>{m(f)});if(g){m(g);return}m(t)},[d,e,o,s,t]),a.jsx(p.Provider,{value:{code:r},children:a.jsxs(y,{language:e,children:[a.jsx(N,{language:e,children:n}),a.jsx(j,{className:l,language:e,result:b,...c})]})})};export{B as CodeBlock};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as a,j as e,F as k}from"./index-
|
|
1
|
+
import{r as a,j as e,F as k}from"./index-DFLmhfiK.js";import{a as C,c}from"./api-client-CvkWGC57.js";import{C as w}from"./mermaid-NOHMQCX5-BCuuUgP6.js";import{L as E}from"./loader-circle-DkuE984n.js";import{C as z}from"./circle-alert-R4XXB7n4.js";import{F as S}from"./use-projects-Cnz3uQZV.js";import"./log-adapter-50wgehrc.js";import"./chevron-down-gMypHmvg.js";import"./query-keys-Ddm69Sh0.js";function T({value:l,onChange:m,placeholder:G}){const[x,D]=a.useState(""),[p,R]=a.useState([]),[h,V]=a.useState(""),[F,f]=a.useState(!1),[j,g]=a.useState(null),[d,N]=a.useState(l),[b,n]=a.useState(null),[L,v]=a.useState(!1),y=a.useRef(!1);a.useEffect(()=>{N(l)},[l]);const r=a.useCallback(async t=>{f(!0),g(null);try{const s={};t&&(s.path=t);const u=await C.get("/filesystem/browse",{params:s});D(u.current),V(u.parent),R(u.dirs)}catch(s){g(s instanceof Error?s.message:"Failed to browse directory")}finally{f(!1)}},[]);a.useEffect(()=>{y.current||(y.current=!0,r())},[r]);const i=a.useCallback(async t=>{v(!0),n(null);try{const s=await C.get("/filesystem/validate",{params:{path:t}});s.valid?(m(t),n(null)):n(s.error??"Not a Git repository")}catch(s){n(s instanceof Error?s.message:"Validation failed")}finally{v(!1)}},[m]),P=a.useCallback(t=>{t.isGitRepo?(i(t.path),r(t.path)):(r(t.path),n(null))},[i,r]),o=x?x.split("/").filter(Boolean):[],I=a.useCallback(t=>{const s="/"+o.slice(0,t+1).join("/");r(s),n(null)},[o,r]),B=a.useCallback(t=>{if(t.key==="Enter"&&!t.nativeEvent.isComposing&&t.nativeEvent.keyCode!==229){t.preventDefault();const s=d.trim();s&&(r(s),i(s))}},[d,r,i]);return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"relative",children:[e.jsx("input",{type:"text",value:d,onChange:t=>N(t.target.value),onKeyDown:B,placeholder:G??"e.g., /Users/me/projects/my-repo",className:c("w-full px-3 py-2 border rounded-lg text-sm font-mono focus:outline-none transition-colors pr-8",l?"border-emerald-300 bg-emerald-50/50 focus:border-emerald-400":"border-neutral-200 focus:border-neutral-400")}),l&&e.jsx(k,{size:14,className:"absolute right-3 top-1/2 -translate-y-1/2 text-emerald-500"})]}),e.jsx("p",{className:"text-xs text-neutral-400",children:"Browse and select a Git repository, or type a path and press Enter"}),e.jsxs("div",{className:"flex items-center gap-0.5 text-xs text-neutral-500 overflow-x-auto pb-1 scrollbar-none",children:[e.jsx("button",{onClick:()=>r("/"),className:"hover:text-neutral-900 transition-colors flex-shrink-0 px-1 py-0.5 rounded hover:bg-neutral-100",children:"/"}),o.map((t,s)=>e.jsxs("span",{className:"flex items-center gap-0.5 flex-shrink-0",children:[e.jsx(w,{size:10,className:"text-neutral-300"}),e.jsx("button",{onClick:()=>I(s),className:c("px-1 py-0.5 rounded transition-colors truncate max-w-[120px]",s===o.length-1?"font-medium text-neutral-900":"hover:text-neutral-900 hover:bg-neutral-100"),children:t})]},s))]}),e.jsx("div",{className:"border border-neutral-200 rounded-lg overflow-hidden",children:e.jsx("div",{className:"max-h-[200px] overflow-y-auto",children:F?e.jsxs("div",{className:"flex items-center justify-center py-8 text-neutral-400",children:[e.jsx(E,{size:16,className:"animate-spin mr-2"}),e.jsx("span",{className:"text-xs",children:"Loading..."})]}):j?e.jsxs("div",{className:"flex items-center justify-center py-8 text-red-500 gap-2",children:[e.jsx(z,{size:14}),e.jsx("span",{className:"text-xs",children:j})]}):p.length===0?e.jsx("div",{className:"flex items-center justify-center py-8 text-neutral-400",children:e.jsx("span",{className:"text-xs",children:"No subdirectories"})}):e.jsxs("ul",{className:"divide-y divide-neutral-100",children:[x!==h&&e.jsx("li",{children:e.jsxs("button",{onClick:()=>r(h),className:"w-full flex items-center gap-2.5 px-3 py-2 text-left hover:bg-neutral-50 transition-colors group",children:[e.jsx(S,{size:14,className:"text-neutral-400 flex-shrink-0"}),e.jsx("span",{className:"text-xs text-neutral-500 group-hover:text-neutral-700",children:".."})]})}),p.map(t=>e.jsx("li",{children:e.jsxs("button",{onClick:()=>P(t),className:c("w-full flex items-center gap-2.5 px-3 py-2 text-left transition-colors group",t.path===l?"bg-emerald-50":"hover:bg-neutral-50"),children:[t.isGitRepo?e.jsx(k,{size:14,className:"text-emerald-500 flex-shrink-0"}):e.jsx(S,{size:14,className:"text-neutral-400 flex-shrink-0"}),e.jsx("span",{className:c("text-xs truncate",t.path===l?"font-medium text-emerald-700":"text-neutral-700 group-hover:text-neutral-900"),children:t.name}),t.isGitRepo&&e.jsx("span",{className:"ml-auto flex-shrink-0 text-[10px] font-medium bg-emerald-100 text-emerald-600 px-1.5 py-0.5 rounded",children:"Git"}),!t.isGitRepo&&e.jsx(w,{size:12,className:"ml-auto text-neutral-300 group-hover:text-neutral-400 flex-shrink-0"})]})},t.path))]})})}),L&&e.jsxs("div",{className:"flex items-center gap-2 text-xs text-neutral-400",children:[e.jsx(E,{size:12,className:"animate-spin"}),e.jsx("span",{children:"Validating..."})]}),b&&e.jsxs("div",{className:"flex items-center gap-2 text-xs text-red-500",children:[e.jsx(z,{size:12}),e.jsx("span",{children:b})]})]})}export{T as FolderPicker};
|