@nextclaw/ui 0.5.33 → 0.5.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/assets/{ChannelsList-C6_GL_XC.js → ChannelsList-DvhJoVmJ.js} +1 -1
  3. package/dist/assets/{ChatPage-CeIP0Tot.js → ChatPage-BSD-DBqC.js} +1 -1
  4. package/dist/assets/{CronConfig-UmNwDWoP.js → CronConfig-JLIc66HM.js} +1 -1
  5. package/dist/assets/DocBrowser-BCJjJTr9.js +1 -0
  6. package/dist/assets/{MarketplacePage-DxYm8B87.js → MarketplacePage-ftvI9vFu.js} +1 -1
  7. package/dist/assets/ModelConfig-iD7V4upL.js +1 -0
  8. package/dist/assets/ProvidersList-moYj5oBN.js +1 -0
  9. package/dist/assets/{RuntimeConfig-D_f-7U_f.js → RuntimeConfig-CvWztear.js} +1 -1
  10. package/dist/assets/{SecretsConfig-rb2Q5BWo.js → SecretsConfig-Ds5xip01.js} +1 -1
  11. package/dist/assets/SessionsConfig-CCbracj_.js +2 -0
  12. package/dist/assets/{card-Cn6iWntr.js → card-CB1zsVbS.js} +1 -1
  13. package/dist/assets/{dialog-BZ5jMhG9.js → dialog-BgbSAXFu.js} +2 -2
  14. package/dist/assets/index-B8Wh_FvS.css +1 -0
  15. package/dist/assets/index-O1Kus7pd.js +2 -0
  16. package/dist/assets/{label-N8QPWq03.js → label-d0bFiiuu.js} +1 -1
  17. package/dist/assets/{logos-DLOpl3jc.js → logos-gjlYO0d_.js} +1 -1
  18. package/dist/assets/{page-layout-CLYPd-xa.js → page-layout-Cf2nfjrs.js} +1 -1
  19. package/dist/assets/{switch-B_AgwrJz.js → switch-CfELV89t.js} +1 -1
  20. package/dist/assets/{tabs-custom-Cec2n_Lf.js → tabs-custom-CJdhCvOt.js} +1 -1
  21. package/dist/assets/{useConfig-VlP0ShlX.js → useConfig-DnBXFnGL.js} +2 -2
  22. package/dist/assets/{useConfirmDialog-erF0KI-a.js → useConfirmDialog-c4_c0EGk.js} +1 -1
  23. package/dist/assets/{vendor-C8fQ0Vej.js → vendor-CmqkRoMs.js} +79 -74
  24. package/dist/index.html +3 -3
  25. package/package.json +1 -1
  26. package/src/api/client.ts +50 -3
  27. package/src/api/types.ts +21 -0
  28. package/src/components/common/SearchableModelInput.tsx +156 -0
  29. package/src/components/config/ModelConfig.tsx +181 -21
  30. package/src/components/config/ProviderForm.tsx +187 -5
  31. package/src/lib/i18n.ts +12 -0
  32. package/dist/assets/DocBrowser-CRGPwkiY.js +0 -1
  33. package/dist/assets/ModelConfig-c-DLS2TO.js +0 -1
  34. package/dist/assets/ProvidersList-B7spTkob.js +0 -1
  35. package/dist/assets/SessionsConfig-DqaFA8Nn.js +0 -2
  36. package/dist/assets/index-C2-PvYBh.js +0 -2
  37. package/dist/assets/index-yypHrk9r.css +0 -1
@@ -1,6 +1,6 @@
1
- import{r as C,j as F,as as m,at as f,au as u,ae as s}from"./vendor-C8fQ0Vej.js";import{c as b,A as x,i,t as o}from"./index-C2-PvYBh.js";const K=C.forwardRef(({className:n,type:e,...r},a)=>F.jsx("input",{type:e,className:b("flex h-9 w-full rounded-xl border border-gray-200/80 bg-white px-3.5 py-2 text-sm file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-gray-400 focus:outline-none focus:ring-1 focus:ring-primary/40 focus:border-primary/40 transition-colors disabled:cursor-not-allowed disabled:opacity-50",n),ref:a,...r}));K.displayName="Input";async function k(){const n=await i.get("/api/config");if(!n.ok)throw new Error(n.error.message);return n.data}async function A(){const n=await i.get("/api/config/meta");if(!n.ok)throw new Error(n.error.message);return n.data}async function M(){const n=await i.get("/api/config/schema");if(!n.ok)throw new Error(n.error.message);return n.data}async function R(n){const e=await i.put("/api/config/model",n);if(!e.ok)throw new Error(e.error.message);return e.data}async function J(n,e){const r=await i.put(`/api/config/providers/${n}`,e);if(!r.ok)throw new Error(r.error.message);return r.data}async function Q(n,e){const r=await i.post(`/api/config/providers/${n}/test`,e);if(!r.ok)throw new Error(r.error.message);return r.data}async function U(n,e){const r=await i.put(`/api/config/channels/${n}`,e);if(!r.ok)throw new Error(r.error.message);return r.data}async function $(n){const e=await i.put("/api/config/runtime",n);if(!e.ok)throw new Error(e.error.message);return e.data}async function T(n){const e=await i.put("/api/config/secrets",n);if(!e.ok)throw new Error(e.error.message);return e.data}async function I(n,e){const r=await i.post(`/api/config/actions/${n}/execute`,e);if(!r.ok)throw new Error(r.error.message);return r.data}async function P(n){var d;const e=new URLSearchParams;(d=n==null?void 0:n.q)!=null&&d.trim()&&e.set("q",n.q.trim()),typeof(n==null?void 0:n.limit)=="number"&&Number.isFinite(n.limit)&&e.set("limit",String(Math.max(0,Math.trunc(n.limit)))),typeof(n==null?void 0:n.activeMinutes)=="number"&&Number.isFinite(n.activeMinutes)&&e.set("activeMinutes",String(Math.max(0,Math.trunc(n.activeMinutes))));const r=e.toString(),a=await i.get(r?"/api/sessions?"+r:"/api/sessions");if(!a.ok)throw new Error(a.error.message);return a.data}async function N(n,e=200){const r=await i.get(`/api/sessions/${encodeURIComponent(n)}/history?limit=${Math.max(1,Math.trunc(e))}`);if(!r.ok)throw new Error(r.error.message);return r.data}async function O(n,e){const r=await i.put(`/api/sessions/${encodeURIComponent(n)}`,e);if(!r.ok)throw new Error(r.error.message);return r.data}async function j(n){const e=await i.delete(`/api/sessions/${encodeURIComponent(n)}`);if(!e.ok)throw new Error(e.error.message);return e.data}function D(n){const e=n.split(/\r?\n/);let r="message";const a=[];for(const d of e){if(d.startsWith("event:")){r=d.slice(6).trim()||"message";continue}d.startsWith("data:")&&a.push(d.slice(5).trimStart())}return a.length===0?null:{event:r,data:a.join(`
1
+ import{r as C,j as F,at as m,au as f,av as u,ag as s}from"./vendor-CmqkRoMs.js";import{c as b,A as x,i,t as o}from"./index-O1Kus7pd.js";const K=C.forwardRef(({className:n,type:e,...r},a)=>F.jsx("input",{type:e,className:b("flex h-9 w-full rounded-xl border border-gray-200/80 bg-white px-3.5 py-2 text-sm file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-gray-400 focus:outline-none focus:ring-1 focus:ring-primary/40 focus:border-primary/40 transition-colors disabled:cursor-not-allowed disabled:opacity-50",n),ref:a,...r}));K.displayName="Input";async function k(){const n=await i.get("/api/config");if(!n.ok)throw new Error(n.error.message);return n.data}async function A(){const n=await i.get("/api/config/meta");if(!n.ok)throw new Error(n.error.message);return n.data}async function M(){const n=await i.get("/api/config/schema");if(!n.ok)throw new Error(n.error.message);return n.data}async function R(n){const e=await i.put("/api/config/model",n);if(!e.ok)throw new Error(e.error.message);return e.data}async function J(n,e){const r=await i.put(`/api/config/providers/${n}`,e);if(!r.ok)throw new Error(r.error.message);return r.data}async function Q(n,e){const r=await i.post(`/api/config/providers/${n}/test`,e);if(!r.ok)throw new Error(r.error.message);return r.data}async function U(n,e){const r=await i.put(`/api/config/channels/${n}`,e);if(!r.ok)throw new Error(r.error.message);return r.data}async function $(n){const e=await i.put("/api/config/runtime",n);if(!e.ok)throw new Error(e.error.message);return e.data}async function T(n){const e=await i.put("/api/config/secrets",n);if(!e.ok)throw new Error(e.error.message);return e.data}async function I(n,e){const r=await i.post(`/api/config/actions/${n}/execute`,e);if(!r.ok)throw new Error(r.error.message);return r.data}async function P(n){var d;const e=new URLSearchParams;(d=n==null?void 0:n.q)!=null&&d.trim()&&e.set("q",n.q.trim()),typeof(n==null?void 0:n.limit)=="number"&&Number.isFinite(n.limit)&&e.set("limit",String(Math.max(0,Math.trunc(n.limit)))),typeof(n==null?void 0:n.activeMinutes)=="number"&&Number.isFinite(n.activeMinutes)&&e.set("activeMinutes",String(Math.max(0,Math.trunc(n.activeMinutes))));const r=e.toString(),a=await i.get(r?"/api/sessions?"+r:"/api/sessions");if(!a.ok)throw new Error(a.error.message);return a.data}async function N(n,e=200){const r=await i.get(`/api/sessions/${encodeURIComponent(n)}/history?limit=${Math.max(1,Math.trunc(e))}`);if(!r.ok)throw new Error(r.error.message);return r.data}async function O(n,e){const r=await i.put(`/api/sessions/${encodeURIComponent(n)}`,e);if(!r.ok)throw new Error(r.error.message);return r.data}async function j(n){const e=await i.delete(`/api/sessions/${encodeURIComponent(n)}`);if(!e.ok)throw new Error(e.error.message);return e.data}function D(n){const e=n.split(/\r?\n/);let r="message";const a=[];for(const d of e){if(d.startsWith("event:")){r=d.slice(6).trim()||"message";continue}d.startsWith("data:")&&a.push(d.slice(5).trimStart())}return a.length===0?null:{event:r,data:a.join(`
2
2
  `)}}async function z(n,e={}){var q;const r=await fetch(`${x}/api/chat/turn/stream`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream"},body:JSON.stringify(n),signal:e.signal});if(!r.ok){let g=`chat stream failed (${r.status} ${r.statusText})`;try{const t=await r.json();(q=t==null?void 0:t.error)!=null&&q.message&&(g=t.error.message)}catch{const t=await r.text().catch(()=>"");t.trim()&&(g=t.trim())}throw new Error(g)}if(!r.body)throw new Error("chat stream is not readable");const a=r.body.getReader(),d=new TextDecoder;let l="",w=null;const p=g=>{var y,h,E;const t=D(g);if(t){if(t.event==="ready"){try{const c=JSON.parse(t.data);(y=e.onReady)==null||y.call(e,{event:"ready",sessionKey:String(c.sessionKey??""),requestedAt:String(c.requestedAt??"")})}catch{}return}if(t.event==="delta"){try{const c=JSON.parse(t.data);typeof c.delta=="string"&&c.delta.length>0&&((h=e.onDelta)==null||h.call(e,{event:"delta",delta:c.delta}))}catch{}return}if(t.event==="session_event"){try{(E=e.onSessionEvent)==null||E.call(e,{event:"session_event",data:JSON.parse(t.data)})}catch{}return}if(t.event==="final"){w=JSON.parse(t.data);return}if(t.event==="error")try{const c=JSON.parse(t.data);throw new Error(typeof c.message=="string"&&c.message?c.message:"chat stream failed")}catch(c){throw c instanceof Error?c:new Error("chat stream failed")}}};let S=!1;for(;!S;){const{done:g,value:t}=await a.read();if(g){S=!0;continue}l+=d.decode(t,{stream:!0});let y=l.indexOf(`
3
3
 
4
4
  `);for(;y!==-1;){const h=l.slice(0,y).trim();l=l.slice(y+2),h&&p(h),y=l.indexOf(`
5
5
 
6
- `)}}const v=l.trim();if(v&&p(v),!w)throw new Error("chat stream ended without final result");return w}async function _(n){const e=new URLSearchParams;n!=null&&n.all&&e.set("all","1");const r=e.toString(),a=await i.get(r?"/api/cron?"+r:"/api/cron");if(!a.ok)throw new Error(a.error.message);return a.data}async function L(n){const e=await i.delete(`/api/cron/${encodeURIComponent(n)}`);if(!e.ok)throw new Error(e.error.message);return e.data}async function W(n,e){const r=await i.put(`/api/cron/${encodeURIComponent(n)}/enable`,e);if(!r.ok)throw new Error(r.error.message);return r.data}async function B(n,e){const r=await i.post(`/api/cron/${encodeURIComponent(n)}/run`,e);if(!r.ok)throw new Error(r.error.message);return r.data}function G(){return m({queryKey:["config"],queryFn:k,staleTime:3e4,refetchOnWindowFocus:!0})}function X(){return m({queryKey:["config-meta"],queryFn:A,staleTime:1/0})}function Y(){return m({queryKey:["config-schema"],queryFn:M,staleTime:1/0})}function Z(){const n=f();return u({mutationFn:R,onSuccess:()=>{n.invalidateQueries({queryKey:["config"]}),s.success(o("configSaved"))},onError:e=>{s.error(o("configSaveFailed")+": "+e.message)}})}function ee(){const n=f();return u({mutationFn:({provider:e,data:r})=>J(e,r),onSuccess:()=>{n.invalidateQueries({queryKey:["config"]}),s.success(o("configSaved"))},onError:e=>{s.error(o("configSaveFailed")+": "+e.message)}})}function ne(){return u({mutationFn:({provider:n,data:e})=>Q(n,e)})}function re(){const n=f();return u({mutationFn:({channel:e,data:r})=>U(e,r),onSuccess:()=>{n.invalidateQueries({queryKey:["config"]}),s.success(o("configSavedApplied"))},onError:e=>{s.error(o("configSaveFailed")+": "+e.message)}})}function te(){const n=f();return u({mutationFn:({data:e})=>$(e),onSuccess:()=>{n.invalidateQueries({queryKey:["config"]}),s.success(o("configSavedApplied"))},onError:e=>{s.error(o("configSaveFailed")+": "+e.message)}})}function se(){const n=f();return u({mutationFn:({data:e})=>T(e),onSuccess:()=>{n.invalidateQueries({queryKey:["config"]}),s.success(o("configSavedApplied"))},onError:e=>{s.error(o("configSaveFailed")+": "+e.message)}})}function oe(){return u({mutationFn:({actionId:n,data:e})=>I(n,e),onError:n=>{s.error(o("error")+": "+n.message)}})}function ie(n){return m({queryKey:["sessions",n],queryFn:()=>P(n),staleTime:1e4})}function ae(n,e=200){return m({queryKey:["session-history",n,e],queryFn:()=>N(n,e),enabled:!!n,staleTime:5e3,retry:!1})}function ce(){const n=f();return u({mutationFn:({key:e,data:r})=>O(e,r),onSuccess:(e,r)=>{n.invalidateQueries({queryKey:["sessions"]}),n.invalidateQueries({queryKey:["session-history",r.key]}),s.success(o("configSavedApplied"))},onError:e=>{s.error(o("configSaveFailed")+": "+e.message)}})}function ue(){const n=f();return u({mutationFn:({key:e})=>j(e),onSuccess:()=>{n.invalidateQueries({queryKey:["sessions"]}),n.invalidateQueries({queryKey:["session-history"]}),s.success(o("configSavedApplied"))},onError:e=>{s.error(o("configSaveFailed")+": "+e.message)}})}function fe(n={all:!0}){return m({queryKey:["cron",n],queryFn:()=>_(n),staleTime:1e4})}function de(){const n=f();return u({mutationFn:({id:e})=>L(e),onSuccess:()=>{n.invalidateQueries({queryKey:["cron"]}),s.success(o("configSavedApplied"))},onError:e=>{s.error(o("configSaveFailed")+": "+e.message)}})}function le(){const n=f();return u({mutationFn:({id:e,enabled:r})=>W(e,{enabled:r}),onSuccess:()=>{n.invalidateQueries({queryKey:["cron"]}),s.success(o("configSavedApplied"))},onError:e=>{s.error(o("configSaveFailed")+": "+e.message)}})}function ge(){const n=f();return u({mutationFn:({id:e,force:r})=>B(e,{force:r}),onSuccess:()=>{n.invalidateQueries({queryKey:["cron"]}),s.success(o("configSavedApplied"))},onError:e=>{s.error(o("configSaveFailed")+": "+e.message)}})}export{K as I,Y as a,Z as b,ie as c,ae as d,ue as e,X as f,ee as g,ne as h,re as i,oe as j,te as k,ce as l,fe as m,de as n,le as o,ge as p,se as q,z as s,G as u};
6
+ `)}}const v=l.trim();if(v&&p(v),!w)throw new Error("chat stream ended without final result");return w}async function _(n){const e=new URLSearchParams;n!=null&&n.all&&e.set("all","1");const r=e.toString(),a=await i.get(r?"/api/cron?"+r:"/api/cron");if(!a.ok)throw new Error(a.error.message);return a.data}async function L(n){const e=await i.delete(`/api/cron/${encodeURIComponent(n)}`);if(!e.ok)throw new Error(e.error.message);return e.data}async function W(n,e){const r=await i.put(`/api/cron/${encodeURIComponent(n)}/enable`,e);if(!r.ok)throw new Error(r.error.message);return r.data}async function B(n,e){const r=await i.post(`/api/cron/${encodeURIComponent(n)}/run`,e);if(!r.ok)throw new Error(r.error.message);return r.data}function G(){return m({queryKey:["config"],queryFn:k,staleTime:3e4,refetchOnWindowFocus:!0})}function X(){return m({queryKey:["config-meta"],queryFn:A,staleTime:1/0})}function Y(){return m({queryKey:["config-schema"],queryFn:M,staleTime:1/0})}function Z(){const n=f();return u({mutationFn:R,onSuccess:()=>{n.invalidateQueries({queryKey:["config"]}),s.success(o("configSaved"))},onError:e=>{s.error(o("configSaveFailed")+": "+e.message)}})}function ee(){const n=f();return u({mutationFn:({provider:e,data:r})=>J(e,r),onSuccess:()=>{n.invalidateQueries({queryKey:["config"]}),s.success(o("configSaved"))},onError:e=>{s.error(o("configSaveFailed")+": "+e.message)}})}function ne(){return u({mutationFn:({provider:n,data:e})=>Q(n,e)})}function re(){const n=f();return u({mutationFn:({channel:e,data:r})=>U(e,r),onSuccess:()=>{n.invalidateQueries({queryKey:["config"]}),s.success(o("configSavedApplied"))},onError:e=>{s.error(o("configSaveFailed")+": "+e.message)}})}function te(){const n=f();return u({mutationFn:({data:e})=>$(e),onSuccess:()=>{n.invalidateQueries({queryKey:["config"]}),s.success(o("configSavedApplied"))},onError:e=>{s.error(o("configSaveFailed")+": "+e.message)}})}function se(){const n=f();return u({mutationFn:({data:e})=>T(e),onSuccess:()=>{n.invalidateQueries({queryKey:["config"]}),s.success(o("configSavedApplied"))},onError:e=>{s.error(o("configSaveFailed")+": "+e.message)}})}function oe(){return u({mutationFn:({actionId:n,data:e})=>I(n,e),onError:n=>{s.error(o("error")+": "+n.message)}})}function ie(n){return m({queryKey:["sessions",n],queryFn:()=>P(n),staleTime:1e4})}function ae(n,e=200){return m({queryKey:["session-history",n,e],queryFn:()=>N(n,e),enabled:!!n,staleTime:5e3,retry:!1})}function ce(){const n=f();return u({mutationFn:({key:e,data:r})=>O(e,r),onSuccess:(e,r)=>{n.invalidateQueries({queryKey:["sessions"]}),n.invalidateQueries({queryKey:["session-history",r.key]}),s.success(o("configSavedApplied"))},onError:e=>{s.error(o("configSaveFailed")+": "+e.message)}})}function ue(){const n=f();return u({mutationFn:({key:e})=>j(e),onSuccess:()=>{n.invalidateQueries({queryKey:["sessions"]}),n.invalidateQueries({queryKey:["session-history"]}),s.success(o("configSavedApplied"))},onError:e=>{s.error(o("configSaveFailed")+": "+e.message)}})}function fe(n={all:!0}){return m({queryKey:["cron",n],queryFn:()=>_(n),staleTime:1e4})}function de(){const n=f();return u({mutationFn:({id:e})=>L(e),onSuccess:()=>{n.invalidateQueries({queryKey:["cron"]}),s.success(o("configSavedApplied"))},onError:e=>{s.error(o("configSaveFailed")+": "+e.message)}})}function le(){const n=f();return u({mutationFn:({id:e,enabled:r})=>W(e,{enabled:r}),onSuccess:()=>{n.invalidateQueries({queryKey:["cron"]}),s.success(o("configSavedApplied"))},onError:e=>{s.error(o("configSaveFailed")+": "+e.message)}})}function ge(){const n=f();return u({mutationFn:({id:e,force:r})=>B(e,{force:r}),onSuccess:()=>{n.invalidateQueries({queryKey:["cron"]}),s.success(o("configSavedApplied"))},onError:e=>{s.error(o("configSaveFailed")+": "+e.message)}})}export{K as I,X as a,Y as b,Z as c,ie as d,ae as e,ue as f,ee as g,ne as h,re as i,oe as j,te as k,ce as l,fe as m,de as n,le as o,ge as p,se as q,z as s,G as u};
@@ -1 +1 @@
1
- import{j as a,r as t}from"./vendor-C8fQ0Vej.js";import{D as p,a as C,b as h,c as x,d as D,e as g}from"./dialog-BZ5jMhG9.js";import{B as m}from"./page-layout-CLYPd-xa.js";import{t as i}from"./index-C2-PvYBh.js";const j=({open:l,onOpenChange:r,title:c,description:o,confirmLabel:s=i("confirm"),cancelLabel:e=i("cancel"),variant:n="default",onConfirm:f,onCancel:u})=>{const d=()=>{f(),r(!1)},v=()=>{u(),r(!1)};return a.jsx(p,{open:l,onOpenChange:r,children:a.jsxs(C,{className:"[&>:last-child]:hidden",onCloseAutoFocus:b=>b.preventDefault(),children:[a.jsxs(h,{children:[a.jsx(x,{children:c}),o?a.jsx(D,{children:o}):null]}),a.jsxs(g,{className:"gap-2 sm:gap-0",children:[a.jsx(m,{type:"button",variant:"outline",onClick:v,children:e}),a.jsx(m,{type:"button",variant:n==="destructive"?"destructive":"default",onClick:d,children:s})]})]})})},L={open:!1,title:"",description:"",confirmLabel:i("confirm"),cancelLabel:i("cancel"),variant:"default",resolve:null};function F(){const[l,r]=t.useState(L),c=t.useCallback(e=>new Promise(n=>{r({open:!0,title:e.title,description:e.description??"",confirmLabel:e.confirmLabel??i("confirm"),cancelLabel:e.cancelLabel??i("cancel"),variant:e.variant??"default",resolve:f=>{n(f),r(u=>({...u,open:!1,resolve:null}))}})}),[]),o=t.useCallback(e=>{r(n=>(!e&&n.resolve&&n.resolve(!1),{...n,open:e,resolve:e?n.resolve:null}))},[]),s=t.useCallback(()=>a.jsx(j,{open:l.open,onOpenChange:o,title:l.title,description:l.description||void 0,confirmLabel:l.confirmLabel,cancelLabel:l.cancelLabel,variant:l.variant,onConfirm:()=>{var e;return(e=l.resolve)==null?void 0:e.call(l,!0)},onCancel:()=>{var e;return(e=l.resolve)==null?void 0:e.call(l,!1)}}),[l,o]);return{confirm:c,ConfirmDialog:s}}export{F as u};
1
+ import{j as a,r as t}from"./vendor-CmqkRoMs.js";import{D as p,a as C,b as h,c as x,d as D,e as g}from"./dialog-BgbSAXFu.js";import{B as m}from"./page-layout-Cf2nfjrs.js";import{t as i}from"./index-O1Kus7pd.js";const j=({open:l,onOpenChange:r,title:c,description:o,confirmLabel:s=i("confirm"),cancelLabel:e=i("cancel"),variant:n="default",onConfirm:f,onCancel:u})=>{const d=()=>{f(),r(!1)},v=()=>{u(),r(!1)};return a.jsx(p,{open:l,onOpenChange:r,children:a.jsxs(C,{className:"[&>:last-child]:hidden",onCloseAutoFocus:b=>b.preventDefault(),children:[a.jsxs(h,{children:[a.jsx(x,{children:c}),o?a.jsx(D,{children:o}):null]}),a.jsxs(g,{className:"gap-2 sm:gap-0",children:[a.jsx(m,{type:"button",variant:"outline",onClick:v,children:e}),a.jsx(m,{type:"button",variant:n==="destructive"?"destructive":"default",onClick:d,children:s})]})]})})},L={open:!1,title:"",description:"",confirmLabel:i("confirm"),cancelLabel:i("cancel"),variant:"default",resolve:null};function F(){const[l,r]=t.useState(L),c=t.useCallback(e=>new Promise(n=>{r({open:!0,title:e.title,description:e.description??"",confirmLabel:e.confirmLabel??i("confirm"),cancelLabel:e.cancelLabel??i("cancel"),variant:e.variant??"default",resolve:f=>{n(f),r(u=>({...u,open:!1,resolve:null}))}})}),[]),o=t.useCallback(e=>{r(n=>(!e&&n.resolve&&n.resolve(!1),{...n,open:e,resolve:e?n.resolve:null}))},[]),s=t.useCallback(()=>a.jsx(j,{open:l.open,onOpenChange:o,title:l.title,description:l.description||void 0,confirmLabel:l.confirmLabel,cancelLabel:l.cancelLabel,variant:l.variant,onConfirm:()=>{var e;return(e=l.resolve)==null?void 0:e.call(l,!0)},onCancel:()=>{var e;return(e=l.resolve)==null?void 0:e.call(l,!1)}}),[l,o]);return{confirm:c,ConfirmDialog:s}}export{F as u};