@nextclaw/ui 0.5.46 → 0.5.48

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 (35) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/assets/{ChannelsList-C5IzoBSZ.js → ChannelsList-C8cguFLc.js} +1 -1
  3. package/dist/assets/ChatPage-BkHWNUNR.js +32 -0
  4. package/dist/assets/CronConfig-D-ESQlvk.js +1 -0
  5. package/dist/assets/DocBrowser-B9ZD6pAk.js +1 -0
  6. package/dist/assets/{MarketplacePage-DmDTJ27k.js → MarketplacePage-Ds_l9KTF.js} +1 -1
  7. package/dist/assets/{ModelConfig-DQ1d3Dtn.js → ModelConfig-N1tbLv9b.js} +1 -1
  8. package/dist/assets/ProvidersList-BXHpjVtO.js +1 -0
  9. package/dist/assets/RuntimeConfig-KsKfkjgv.js +1 -0
  10. package/dist/assets/{SecretsConfig-DlNYyu9I.js → SecretsConfig-KkgMzdt1.js} +2 -2
  11. package/dist/assets/{SessionsConfig-Dt9heKTD.js → SessionsConfig-CWBp8IPf.js} +2 -2
  12. package/dist/assets/{card-KmfXQ4Bm.js → card-D7NY0Szf.js} +1 -1
  13. package/dist/assets/index-BRBYYgR_.js +2 -0
  14. package/dist/assets/{label-iF47BkaM.js → label-Ojs7Al6B.js} +1 -1
  15. package/dist/assets/{logos-C8Yako2a.js → logos-B1qBsCSi.js} +1 -1
  16. package/dist/assets/{page-layout-sZk-HtoA.js → page-layout-CUMMO0nN.js} +1 -1
  17. package/dist/assets/{switch-BnYsX3uS.js → switch-BdhS_16-.js} +1 -1
  18. package/dist/assets/{tabs-custom-BEBNjTRA.js → tabs-custom-D261E5EA.js} +1 -1
  19. package/dist/assets/{useConfig-DJ_KEVx0.js → useConfig-txxbxXnT.js} +1 -1
  20. package/dist/assets/{useConfirmDialog-BwqRK1uy.js → useConfirmDialog-BUKGHDL6.js} +1 -1
  21. package/dist/assets/{vendor-DfLizrKM.js → vendor-Dh04PGww.js} +1 -1
  22. package/dist/index.html +2 -2
  23. package/package.json +1 -1
  24. package/src/components/chat/ChatConversationPanel.tsx +148 -0
  25. package/src/components/chat/ChatPage.tsx +80 -353
  26. package/src/components/chat/ChatSessionsSidebar.tsx +100 -0
  27. package/src/components/chat/useChatStreamController.ts +268 -0
  28. package/src/components/layout/Sidebar.tsx +55 -13
  29. package/src/lib/i18n.ts +1 -0
  30. package/dist/assets/ChatPage-BEBmDqtw.js +0 -32
  31. package/dist/assets/CronConfig-BdLVPoNw.js +0 -1
  32. package/dist/assets/DocBrowser-DzsZUzgQ.js +0 -1
  33. package/dist/assets/ProvidersList-snuzM5CK.js +0 -1
  34. package/dist/assets/RuntimeConfig-BSDP51k6.js +0 -1
  35. package/dist/assets/index-BhpPLO5K.js +0 -2
@@ -1,4 +1,4 @@
1
- import{r as C,j as F,ap as m,aq as f,ar as c,ae as t}from"./vendor-DfLizrKM.js";import{c as b,A as x,i,t as s}from"./index-BhpPLO5K.js";const K=C.forwardRef(({className:r,type:e,...n},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 text-gray-900 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-gray-300 placeholder:font-normal focus:outline-none focus:ring-1 focus:ring-primary/40 focus:border-primary/40 transition-colors disabled:cursor-not-allowed disabled:opacity-50",r),ref:a,...n}));K.displayName="Input";async function k(){const r=await i.get("/api/config");if(!r.ok)throw new Error(r.error.message);return r.data}async function Q(){const r=await i.get("/api/config/meta");if(!r.ok)throw new Error(r.error.message);return r.data}async function A(){const r=await i.get("/api/config/schema");if(!r.ok)throw new Error(r.error.message);return r.data}async function M(r){const e=await i.put("/api/config/model",r);if(!e.ok)throw new Error(e.error.message);return e.data}async function P(r,e){const n=await i.put(`/api/config/providers/${r}`,e);if(!n.ok)throw new Error(n.error.message);return n.data}async function R(r={}){const e=await i.post("/api/config/providers",r);if(!e.ok)throw new Error(e.error.message);return e.data}async function $(r){const e=await i.delete(`/api/config/providers/${r}`);if(!e.ok)throw new Error(e.error.message);return e.data}async function J(r,e){const n=await i.post(`/api/config/providers/${r}/test`,e);if(!n.ok)throw new Error(n.error.message);return n.data}async function U(r,e){const n=await i.put(`/api/config/channels/${r}`,e);if(!n.ok)throw new Error(n.error.message);return n.data}async function T(r){const e=await i.put("/api/config/runtime",r);if(!e.ok)throw new Error(e.error.message);return e.data}async function I(r){const e=await i.put("/api/config/secrets",r);if(!e.ok)throw new Error(e.error.message);return e.data}async function N(r,e){const n=await i.post(`/api/config/actions/${r}/execute`,e);if(!n.ok)throw new Error(n.error.message);return n.data}async function O(r){var d;const e=new URLSearchParams;(d=r==null?void 0:r.q)!=null&&d.trim()&&e.set("q",r.q.trim()),typeof(r==null?void 0:r.limit)=="number"&&Number.isFinite(r.limit)&&e.set("limit",String(Math.max(0,Math.trunc(r.limit)))),typeof(r==null?void 0:r.activeMinutes)=="number"&&Number.isFinite(r.activeMinutes)&&e.set("activeMinutes",String(Math.max(0,Math.trunc(r.activeMinutes))));const n=e.toString(),a=await i.get(n?"/api/sessions?"+n:"/api/sessions");if(!a.ok)throw new Error(a.error.message);return a.data}async function j(r,e=200){const n=await i.get(`/api/sessions/${encodeURIComponent(r)}/history?limit=${Math.max(1,Math.trunc(e))}`);if(!n.ok)throw new Error(n.error.message);return n.data}async function D(r,e){const n=await i.put(`/api/sessions/${encodeURIComponent(r)}`,e);if(!n.ok)throw new Error(n.error.message);return n.data}async function _(r){const e=await i.delete(`/api/sessions/${encodeURIComponent(r)}`);if(!e.ok)throw new Error(e.error.message);return e.data}function L(r){const e=r.split(/\r?\n/);let n="message";const a=[];for(const d of e){if(d.startsWith("event:")){n=d.slice(6).trim()||"message";continue}d.startsWith("data:")&&a.push(d.slice(5).trimStart())}return a.length===0?null:{event:n,data:a.join(`
1
+ import{r as C,j as F,ap as m,aq as f,ar as c,ae as t}from"./vendor-Dh04PGww.js";import{c as b,A as x,i,t as s}from"./index-BRBYYgR_.js";const K=C.forwardRef(({className:r,type:e,...n},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 text-gray-900 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-gray-300 placeholder:font-normal focus:outline-none focus:ring-1 focus:ring-primary/40 focus:border-primary/40 transition-colors disabled:cursor-not-allowed disabled:opacity-50",r),ref:a,...n}));K.displayName="Input";async function k(){const r=await i.get("/api/config");if(!r.ok)throw new Error(r.error.message);return r.data}async function Q(){const r=await i.get("/api/config/meta");if(!r.ok)throw new Error(r.error.message);return r.data}async function A(){const r=await i.get("/api/config/schema");if(!r.ok)throw new Error(r.error.message);return r.data}async function M(r){const e=await i.put("/api/config/model",r);if(!e.ok)throw new Error(e.error.message);return e.data}async function P(r,e){const n=await i.put(`/api/config/providers/${r}`,e);if(!n.ok)throw new Error(n.error.message);return n.data}async function R(r={}){const e=await i.post("/api/config/providers",r);if(!e.ok)throw new Error(e.error.message);return e.data}async function $(r){const e=await i.delete(`/api/config/providers/${r}`);if(!e.ok)throw new Error(e.error.message);return e.data}async function J(r,e){const n=await i.post(`/api/config/providers/${r}/test`,e);if(!n.ok)throw new Error(n.error.message);return n.data}async function U(r,e){const n=await i.put(`/api/config/channels/${r}`,e);if(!n.ok)throw new Error(n.error.message);return n.data}async function T(r){const e=await i.put("/api/config/runtime",r);if(!e.ok)throw new Error(e.error.message);return e.data}async function I(r){const e=await i.put("/api/config/secrets",r);if(!e.ok)throw new Error(e.error.message);return e.data}async function N(r,e){const n=await i.post(`/api/config/actions/${r}/execute`,e);if(!n.ok)throw new Error(n.error.message);return n.data}async function O(r){var d;const e=new URLSearchParams;(d=r==null?void 0:r.q)!=null&&d.trim()&&e.set("q",r.q.trim()),typeof(r==null?void 0:r.limit)=="number"&&Number.isFinite(r.limit)&&e.set("limit",String(Math.max(0,Math.trunc(r.limit)))),typeof(r==null?void 0:r.activeMinutes)=="number"&&Number.isFinite(r.activeMinutes)&&e.set("activeMinutes",String(Math.max(0,Math.trunc(r.activeMinutes))));const n=e.toString(),a=await i.get(n?"/api/sessions?"+n:"/api/sessions");if(!a.ok)throw new Error(a.error.message);return a.data}async function j(r,e=200){const n=await i.get(`/api/sessions/${encodeURIComponent(r)}/history?limit=${Math.max(1,Math.trunc(e))}`);if(!n.ok)throw new Error(n.error.message);return n.data}async function D(r,e){const n=await i.put(`/api/sessions/${encodeURIComponent(r)}`,e);if(!n.ok)throw new Error(n.error.message);return n.data}async function _(r){const e=await i.delete(`/api/sessions/${encodeURIComponent(r)}`);if(!e.ok)throw new Error(e.error.message);return e.data}function L(r){const e=r.split(/\r?\n/);let n="message";const a=[];for(const d of e){if(d.startsWith("event:")){n=d.slice(6).trim()||"message";continue}d.startsWith("data:")&&a.push(d.slice(5).trimStart())}return a.length===0?null:{event:n,data:a.join(`
2
2
  `)}}async function X(r,e={}){var q;const n=await fetch(`${x}/api/chat/turn/stream`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream"},body:JSON.stringify(r),signal:e.signal});if(!n.ok){let g=`chat stream failed (${n.status} ${n.statusText})`;try{const o=await n.json();(q=o==null?void 0:o.error)!=null&&q.message&&(g=o.error.message)}catch{const o=await n.text().catch(()=>"");o.trim()&&(g=o.trim())}throw new Error(g)}if(!n.body)throw new Error("chat stream is not readable");const a=n.body.getReader(),d=new TextDecoder;let l="",w=null;const h=g=>{var y,p,E;const o=L(g);if(o){if(o.event==="ready"){try{const u=JSON.parse(o.data);(y=e.onReady)==null||y.call(e,{event:"ready",sessionKey:String(u.sessionKey??""),requestedAt:String(u.requestedAt??"")})}catch{}return}if(o.event==="delta"){try{const u=JSON.parse(o.data);typeof u.delta=="string"&&u.delta.length>0&&((p=e.onDelta)==null||p.call(e,{event:"delta",delta:u.delta}))}catch{}return}if(o.event==="session_event"){try{(E=e.onSessionEvent)==null||E.call(e,{event:"session_event",data:JSON.parse(o.data)})}catch{}return}if(o.event==="final"){w=JSON.parse(o.data);return}if(o.event==="error")try{const u=JSON.parse(o.data);throw new Error(typeof u.message=="string"&&u.message?u.message:"chat stream failed")}catch(u){throw u instanceof Error?u:new Error("chat stream failed")}}};let v=!1;for(;!v;){const{done:g,value:o}=await a.read();if(g){v=!0;continue}l+=d.decode(o,{stream:!0});let y=l.indexOf(`
3
3
 
4
4
  `);for(;y!==-1;){const p=l.slice(0,y).trim();l=l.slice(y+2),p&&h(p),y=l.indexOf(`
@@ -1,4 +1,4 @@
1
- import{r as i,av as b,aK as I,at as ie,j as s,as as A,aA as le,ax as h,ay as D,aB as ce,aL as de,aM as ue,aN as fe,aO as ge,aC as me,aP as pe,aQ as ve,ab as xe}from"./vendor-DfLizrKM.js";import{c as N,t as x}from"./index-BhpPLO5K.js";import{B as M}from"./page-layout-sZk-HtoA.js";function Ne(e,t){return i.useReducer((o,a)=>t[o][a]??o,e)}var E=e=>{const{present:t,children:o}=e,a=De(t),r=typeof o=="function"?o({present:a.isPresent}):i.Children.only(o),n=b(a.ref,he(r));return typeof o=="function"||a.isPresent?i.cloneElement(r,{ref:n}):null};E.displayName="Presence";function De(e){const[t,o]=i.useState(),a=i.useRef(null),r=i.useRef(e),n=i.useRef("none"),l=e?"mounted":"unmounted",[c,u]=Ne(l,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return i.useEffect(()=>{const d=y(a.current);n.current=c==="mounted"?d:"none"},[c]),I(()=>{const d=a.current,f=r.current;if(f!==e){const C=n.current,p=y(d);e?u("MOUNT"):p==="none"||(d==null?void 0:d.display)==="none"?u("UNMOUNT"):u(f&&C!==p?"ANIMATION_OUT":"UNMOUNT"),r.current=e}},[e,u]),I(()=>{if(t){let d;const f=t.ownerDocument.defaultView??window,m=p=>{const re=y(a.current).includes(CSS.escape(p.animationName));if(p.target===t&&re&&(u("ANIMATION_END"),!r.current)){const se=t.style.animationFillMode;t.style.animationFillMode="forwards",d=f.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=se)})}},C=p=>{p.target===t&&(n.current=y(a.current))};return t.addEventListener("animationstart",C),t.addEventListener("animationcancel",m),t.addEventListener("animationend",m),()=>{f.clearTimeout(d),t.removeEventListener("animationstart",C),t.removeEventListener("animationcancel",m),t.removeEventListener("animationend",m)}}else u("ANIMATION_END")},[t,u]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:i.useCallback(d=>{a.current=d?getComputedStyle(d):null,o(d)},[])}}function y(e){return(e==null?void 0:e.animationName)||"none"}function he(e){var a,r;let t=(a=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:a.get,o=t&&"isReactWarning"in t&&t.isReactWarning;return o?e.ref:(t=(r=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:r.get,o=t&&"isReactWarning"in t&&t.isReactWarning,o?e.props.ref:e.props.ref||e.ref)}var O="Dialog",[w]=ce(O),[Ce,g]=w(O),T=e=>{const{__scopeDialog:t,children:o,open:a,defaultOpen:r,onOpenChange:n,modal:l=!0}=e,c=i.useRef(null),u=i.useRef(null),[d,f]=ie({prop:a,defaultProp:r??!1,onChange:n,caller:O});return s.jsx(Ce,{scope:t,triggerRef:c,contentRef:u,contentId:A(),titleId:A(),descriptionId:A(),open:d,onOpenChange:f,onOpenToggle:i.useCallback(()=>f(m=>!m),[f]),modal:l,children:o})};T.displayName=O;var S="DialogTrigger",ye=i.forwardRef((e,t)=>{const{__scopeDialog:o,...a}=e,r=g(S,o),n=b(t,r.triggerRef);return s.jsx(h.button,{type:"button","aria-haspopup":"dialog","aria-expanded":r.open,"aria-controls":r.contentId,"data-state":_(r.open),...a,ref:n,onClick:D(e.onClick,r.onOpenToggle)})});ye.displayName=S;var j="DialogPortal",[Re,F]=w(j,{forceMount:void 0}),L=e=>{const{__scopeDialog:t,forceMount:o,children:a,container:r}=e,n=g(j,t);return s.jsx(Re,{scope:t,forceMount:o,children:i.Children.map(a,l=>s.jsx(E,{present:o||n.open,children:s.jsx(le,{asChild:!0,container:r,children:l})}))})};L.displayName=j;var R="DialogOverlay",W=i.forwardRef((e,t)=>{const o=F(R,e.__scopeDialog),{forceMount:a=o.forceMount,...r}=e,n=g(R,e.__scopeDialog);return n.modal?s.jsx(E,{present:a||n.open,children:s.jsx(Ee,{...r,ref:t})}):null});W.displayName=R;var be=pe("DialogOverlay.RemoveScroll"),Ee=i.forwardRef((e,t)=>{const{__scopeDialog:o,...a}=e,r=g(R,o);return s.jsx(ue,{as:be,allowPinchZoom:!0,shards:[r.contentRef],children:s.jsx(h.div,{"data-state":_(r.open),...a,ref:t,style:{pointerEvents:"auto",...a.style}})})}),v="DialogContent",k=i.forwardRef((e,t)=>{const o=F(v,e.__scopeDialog),{forceMount:a=o.forceMount,...r}=e,n=g(v,e.__scopeDialog);return s.jsx(E,{present:a||n.open,children:n.modal?s.jsx(Oe,{...r,ref:t}):s.jsx(Ae,{...r,ref:t})})});k.displayName=v;var Oe=i.forwardRef((e,t)=>{const o=g(v,e.__scopeDialog),a=i.useRef(null),r=b(t,o.contentRef,a);return i.useEffect(()=>{const n=a.current;if(n)return de(n)},[]),s.jsx(U,{...e,ref:r,trapFocus:o.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:D(e.onCloseAutoFocus,n=>{var l;n.preventDefault(),(l=o.triggerRef.current)==null||l.focus()}),onPointerDownOutside:D(e.onPointerDownOutside,n=>{const l=n.detail.originalEvent,c=l.button===0&&l.ctrlKey===!0;(l.button===2||c)&&n.preventDefault()}),onFocusOutside:D(e.onFocusOutside,n=>n.preventDefault())})}),Ae=i.forwardRef((e,t)=>{const o=g(v,e.__scopeDialog),a=i.useRef(!1),r=i.useRef(!1);return s.jsx(U,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:n=>{var l,c;(l=e.onCloseAutoFocus)==null||l.call(e,n),n.defaultPrevented||(a.current||(c=o.triggerRef.current)==null||c.focus(),n.preventDefault()),a.current=!1,r.current=!1},onInteractOutside:n=>{var u,d;(u=e.onInteractOutside)==null||u.call(e,n),n.defaultPrevented||(a.current=!0,n.detail.originalEvent.type==="pointerdown"&&(r.current=!0));const l=n.target;((d=o.triggerRef.current)==null?void 0:d.contains(l))&&n.preventDefault(),n.detail.originalEvent.type==="focusin"&&r.current&&n.preventDefault()}})}),U=i.forwardRef((e,t)=>{const{__scopeDialog:o,trapFocus:a,onOpenAutoFocus:r,onCloseAutoFocus:n,...l}=e,c=g(v,o),u=i.useRef(null),d=b(t,u);return fe(),s.jsxs(s.Fragment,{children:[s.jsx(ge,{asChild:!0,loop:!0,trapped:a,onMountAutoFocus:r,onUnmountAutoFocus:n,children:s.jsx(me,{role:"dialog",id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":_(c.open),...l,ref:d,onDismiss:()=>c.onOpenChange(!1)})}),s.jsxs(s.Fragment,{children:[s.jsx(je,{titleId:c.titleId}),s.jsx(_e,{contentRef:u,descriptionId:c.descriptionId})]})]})}),P="DialogTitle",$=i.forwardRef((e,t)=>{const{__scopeDialog:o,...a}=e,r=g(P,o);return s.jsx(h.h2,{id:r.titleId,...a,ref:t})});$.displayName=P;var G="DialogDescription",B=i.forwardRef((e,t)=>{const{__scopeDialog:o,...a}=e,r=g(G,o);return s.jsx(h.p,{id:r.descriptionId,...a,ref:t})});B.displayName=G;var z="DialogClose",H=i.forwardRef((e,t)=>{const{__scopeDialog:o,...a}=e,r=g(z,o);return s.jsx(h.button,{type:"button",...a,ref:t,onClick:D(e.onClick,()=>r.onOpenChange(!1))})});H.displayName=z;function _(e){return e?"open":"closed"}var V="DialogTitleWarning",[$e,K]=ve(V,{contentName:v,titleName:P,docsSlug:"dialog"}),je=({titleId:e})=>{const t=K(V),o=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
1
+ import{r as i,av as b,aK as I,at as ie,j as s,as as A,aA as le,ax as h,ay as D,aB as ce,aL as de,aM as ue,aN as fe,aO as ge,aC as me,aP as pe,aQ as ve,ab as xe}from"./vendor-Dh04PGww.js";import{c as N,t as x}from"./index-BRBYYgR_.js";import{B as M}from"./page-layout-CUMMO0nN.js";function Ne(e,t){return i.useReducer((o,a)=>t[o][a]??o,e)}var E=e=>{const{present:t,children:o}=e,a=De(t),r=typeof o=="function"?o({present:a.isPresent}):i.Children.only(o),n=b(a.ref,he(r));return typeof o=="function"||a.isPresent?i.cloneElement(r,{ref:n}):null};E.displayName="Presence";function De(e){const[t,o]=i.useState(),a=i.useRef(null),r=i.useRef(e),n=i.useRef("none"),l=e?"mounted":"unmounted",[c,u]=Ne(l,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return i.useEffect(()=>{const d=y(a.current);n.current=c==="mounted"?d:"none"},[c]),I(()=>{const d=a.current,f=r.current;if(f!==e){const C=n.current,p=y(d);e?u("MOUNT"):p==="none"||(d==null?void 0:d.display)==="none"?u("UNMOUNT"):u(f&&C!==p?"ANIMATION_OUT":"UNMOUNT"),r.current=e}},[e,u]),I(()=>{if(t){let d;const f=t.ownerDocument.defaultView??window,m=p=>{const re=y(a.current).includes(CSS.escape(p.animationName));if(p.target===t&&re&&(u("ANIMATION_END"),!r.current)){const se=t.style.animationFillMode;t.style.animationFillMode="forwards",d=f.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=se)})}},C=p=>{p.target===t&&(n.current=y(a.current))};return t.addEventListener("animationstart",C),t.addEventListener("animationcancel",m),t.addEventListener("animationend",m),()=>{f.clearTimeout(d),t.removeEventListener("animationstart",C),t.removeEventListener("animationcancel",m),t.removeEventListener("animationend",m)}}else u("ANIMATION_END")},[t,u]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:i.useCallback(d=>{a.current=d?getComputedStyle(d):null,o(d)},[])}}function y(e){return(e==null?void 0:e.animationName)||"none"}function he(e){var a,r;let t=(a=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:a.get,o=t&&"isReactWarning"in t&&t.isReactWarning;return o?e.ref:(t=(r=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:r.get,o=t&&"isReactWarning"in t&&t.isReactWarning,o?e.props.ref:e.props.ref||e.ref)}var O="Dialog",[w]=ce(O),[Ce,g]=w(O),T=e=>{const{__scopeDialog:t,children:o,open:a,defaultOpen:r,onOpenChange:n,modal:l=!0}=e,c=i.useRef(null),u=i.useRef(null),[d,f]=ie({prop:a,defaultProp:r??!1,onChange:n,caller:O});return s.jsx(Ce,{scope:t,triggerRef:c,contentRef:u,contentId:A(),titleId:A(),descriptionId:A(),open:d,onOpenChange:f,onOpenToggle:i.useCallback(()=>f(m=>!m),[f]),modal:l,children:o})};T.displayName=O;var S="DialogTrigger",ye=i.forwardRef((e,t)=>{const{__scopeDialog:o,...a}=e,r=g(S,o),n=b(t,r.triggerRef);return s.jsx(h.button,{type:"button","aria-haspopup":"dialog","aria-expanded":r.open,"aria-controls":r.contentId,"data-state":_(r.open),...a,ref:n,onClick:D(e.onClick,r.onOpenToggle)})});ye.displayName=S;var j="DialogPortal",[Re,F]=w(j,{forceMount:void 0}),L=e=>{const{__scopeDialog:t,forceMount:o,children:a,container:r}=e,n=g(j,t);return s.jsx(Re,{scope:t,forceMount:o,children:i.Children.map(a,l=>s.jsx(E,{present:o||n.open,children:s.jsx(le,{asChild:!0,container:r,children:l})}))})};L.displayName=j;var R="DialogOverlay",W=i.forwardRef((e,t)=>{const o=F(R,e.__scopeDialog),{forceMount:a=o.forceMount,...r}=e,n=g(R,e.__scopeDialog);return n.modal?s.jsx(E,{present:a||n.open,children:s.jsx(Ee,{...r,ref:t})}):null});W.displayName=R;var be=pe("DialogOverlay.RemoveScroll"),Ee=i.forwardRef((e,t)=>{const{__scopeDialog:o,...a}=e,r=g(R,o);return s.jsx(ue,{as:be,allowPinchZoom:!0,shards:[r.contentRef],children:s.jsx(h.div,{"data-state":_(r.open),...a,ref:t,style:{pointerEvents:"auto",...a.style}})})}),v="DialogContent",k=i.forwardRef((e,t)=>{const o=F(v,e.__scopeDialog),{forceMount:a=o.forceMount,...r}=e,n=g(v,e.__scopeDialog);return s.jsx(E,{present:a||n.open,children:n.modal?s.jsx(Oe,{...r,ref:t}):s.jsx(Ae,{...r,ref:t})})});k.displayName=v;var Oe=i.forwardRef((e,t)=>{const o=g(v,e.__scopeDialog),a=i.useRef(null),r=b(t,o.contentRef,a);return i.useEffect(()=>{const n=a.current;if(n)return de(n)},[]),s.jsx(U,{...e,ref:r,trapFocus:o.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:D(e.onCloseAutoFocus,n=>{var l;n.preventDefault(),(l=o.triggerRef.current)==null||l.focus()}),onPointerDownOutside:D(e.onPointerDownOutside,n=>{const l=n.detail.originalEvent,c=l.button===0&&l.ctrlKey===!0;(l.button===2||c)&&n.preventDefault()}),onFocusOutside:D(e.onFocusOutside,n=>n.preventDefault())})}),Ae=i.forwardRef((e,t)=>{const o=g(v,e.__scopeDialog),a=i.useRef(!1),r=i.useRef(!1);return s.jsx(U,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:n=>{var l,c;(l=e.onCloseAutoFocus)==null||l.call(e,n),n.defaultPrevented||(a.current||(c=o.triggerRef.current)==null||c.focus(),n.preventDefault()),a.current=!1,r.current=!1},onInteractOutside:n=>{var u,d;(u=e.onInteractOutside)==null||u.call(e,n),n.defaultPrevented||(a.current=!0,n.detail.originalEvent.type==="pointerdown"&&(r.current=!0));const l=n.target;((d=o.triggerRef.current)==null?void 0:d.contains(l))&&n.preventDefault(),n.detail.originalEvent.type==="focusin"&&r.current&&n.preventDefault()}})}),U=i.forwardRef((e,t)=>{const{__scopeDialog:o,trapFocus:a,onOpenAutoFocus:r,onCloseAutoFocus:n,...l}=e,c=g(v,o),u=i.useRef(null),d=b(t,u);return fe(),s.jsxs(s.Fragment,{children:[s.jsx(ge,{asChild:!0,loop:!0,trapped:a,onMountAutoFocus:r,onUnmountAutoFocus:n,children:s.jsx(me,{role:"dialog",id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":_(c.open),...l,ref:d,onDismiss:()=>c.onOpenChange(!1)})}),s.jsxs(s.Fragment,{children:[s.jsx(je,{titleId:c.titleId}),s.jsx(_e,{contentRef:u,descriptionId:c.descriptionId})]})]})}),P="DialogTitle",$=i.forwardRef((e,t)=>{const{__scopeDialog:o,...a}=e,r=g(P,o);return s.jsx(h.h2,{id:r.titleId,...a,ref:t})});$.displayName=P;var G="DialogDescription",B=i.forwardRef((e,t)=>{const{__scopeDialog:o,...a}=e,r=g(G,o);return s.jsx(h.p,{id:r.descriptionId,...a,ref:t})});B.displayName=G;var z="DialogClose",H=i.forwardRef((e,t)=>{const{__scopeDialog:o,...a}=e,r=g(z,o);return s.jsx(h.button,{type:"button",...a,ref:t,onClick:D(e.onClick,()=>r.onOpenChange(!1))})});H.displayName=z;function _(e){return e?"open":"closed"}var V="DialogTitleWarning",[$e,K]=ve(V,{contentName:v,titleName:P,docsSlug:"dialog"}),je=({titleId:e})=>{const t=K(V),o=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
2
2
 
3
3
  If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
4
4
 
@@ -379,4 +379,4 @@ Please change the parent <Route path="${R}"> to <Route path="${R==="/"?"*":`${R}
379
379
  .block-interactivity-`.concat(n,` {pointer-events: none;}
380
380
  .allow-interactivity-`).concat(n,` {pointer-events: all;}
381
381
  `)},$2=0,Xo=[];function W2(n){var r=g.useRef([]),i=g.useRef([0,0]),l=g.useRef(),u=g.useState($2++)[0],c=g.useState(Iv)[0],f=g.useRef(n);g.useEffect(function(){f.current=n},[n]),g.useEffect(function(){if(n.inert){document.body.classList.add("block-interactivity-".concat(u));var S=d2([n.lockRef.current],(n.shards||[]).map(Gh),!0).filter(Boolean);return S.forEach(function(C){return C.classList.add("allow-interactivity-".concat(u))}),function(){document.body.classList.remove("block-interactivity-".concat(u)),S.forEach(function(C){return C.classList.remove("allow-interactivity-".concat(u))})}}},[n.inert,n.lockRef.current,n.shards]);var p=g.useCallback(function(S,C){if("touches"in S&&S.touches.length===2||S.type==="wheel"&&S.ctrlKey)return!f.current.allowPinchZoom;var P=$l(S),M=i.current,R="deltaX"in S?S.deltaX:M[0]-P[0],L="deltaY"in S?S.deltaY:M[1]-P[1],z,U=S.target,H=Math.abs(R)>Math.abs(L)?"h":"v";if("touches"in S&&H==="h"&&U.type==="range")return!1;var G=window.getSelection(),Z=G&&G.anchorNode,te=Z?Z===U||Z.contains(U):!1;if(te)return!1;var pe=Qh(H,U);if(!pe)return!0;if(pe?z=H:(z=H==="v"?"h":"v",pe=Qh(H,U)),!pe)return!1;if(!l.current&&"changedTouches"in S&&(R||L)&&(l.current=z),!z)return!0;var X=l.current||z;return B2(X,C,S,X==="h"?R:L)},[]),h=g.useCallback(function(S){var C=S;if(!(!Xo.length||Xo[Xo.length-1]!==c)){var P="deltaY"in C?Kh(C):$l(C),M=r.current.filter(function(z){return z.name===C.type&&(z.target===C.target||C.target===z.shadowParent)&&U2(z.delta,P)})[0];if(M&&M.should){C.cancelable&&C.preventDefault();return}if(!M){var R=(f.current.shards||[]).map(Gh).filter(Boolean).filter(function(z){return z.contains(C.target)}),L=R.length>0?p(C,R[0]):!f.current.noIsolation;L&&C.cancelable&&C.preventDefault()}}},[]),v=g.useCallback(function(S,C,P,M){var R={name:S,delta:C,target:P,should:M,shadowParent:V2(P)};r.current.push(R),setTimeout(function(){r.current=r.current.filter(function(L){return L!==R})},1)},[]),w=g.useCallback(function(S){i.current=$l(S),l.current=void 0},[]),x=g.useCallback(function(S){v(S.type,Kh(S),S.target,p(S,n.lockRef.current))},[]),E=g.useCallback(function(S){v(S.type,$l(S),S.target,p(S,n.lockRef.current))},[]);g.useEffect(function(){return Xo.push(c),n.setCallbacks({onScrollCapture:x,onWheelCapture:x,onTouchMoveCapture:E}),document.addEventListener("wheel",h,qo),document.addEventListener("touchmove",h,qo),document.addEventListener("touchstart",w,qo),function(){Xo=Xo.filter(function(S){return S!==c}),document.removeEventListener("wheel",h,qo),document.removeEventListener("touchmove",h,qo),document.removeEventListener("touchstart",w,qo)}},[]);var y=n.removeScrollBar,O=n.inert;return g.createElement(g.Fragment,null,O?g.createElement(c,{styles:H2(u)}):null,y?g.createElement(L2,{noRelative:n.noRelative,gapMode:n.gapMode}):null)}function V2(n){for(var r=null;n!==null;)n instanceof ShadowRoot&&(r=n.host,n=n.host),n=n.parentNode;return r}const Q2=x2(Lv,W2);var zv=g.forwardRef(function(n,r){return g.createElement(fa,Ln({},n,{ref:r,sideCar:Q2}))});zv.classNames=fa.classNames;var K2=[" ","Enter","ArrowUp","ArrowDown"],G2=[" ","Enter"],xo="Select",[pa,ha,Y2]=ax(xo),[Si]=id(xo,[Y2,gv]),ma=gv(),[q2,$r]=Si(xo),[X2,Z2]=Si(xo),jv=n=>{const{__scopeSelect:r,children:i,open:l,defaultOpen:u,onOpenChange:c,value:f,defaultValue:p,onValueChange:h,dir:v,name:w,autoComplete:x,disabled:E,required:y,form:O}=n,S=ma(r),[C,P]=g.useState(null),[M,R]=g.useState(null),[L,z]=g.useState(!1),U=cx(v),[H,G]=$h({prop:l,defaultProp:u??!1,onChange:c,caller:xo}),[Z,te]=$h({prop:f,defaultProp:p,onChange:h,caller:xo}),pe=g.useRef(null),X=C?O||!!C.closest("form"):!0,[ye,ce]=g.useState(new Set),xe=Array.from(ye).map(ae=>ae.props.value).join(";");return ee.jsx(XS,{...S,children:ee.jsxs(q2,{required:y,scope:r,trigger:C,onTriggerChange:P,valueNode:M,onValueNodeChange:R,valueNodeHasChildren:L,onValueNodeHasChildrenChange:z,contentId:sd(),value:Z,onValueChange:te,open:H,onOpenChange:G,dir:U,triggerPointerDownPosRef:pe,disabled:E,children:[ee.jsx(pa.Provider,{scope:r,children:ee.jsx(X2,{scope:n.__scopeSelect,onNativeOptionAdd:g.useCallback(ae=>{ce(ie=>new Set(ie).add(ae))},[]),onNativeOptionRemove:g.useCallback(ae=>{ce(ie=>{const j=new Set(ie);return j.delete(ae),j})},[]),children:i})}),X?ee.jsxs(uy,{"aria-hidden":!0,required:y,tabIndex:-1,name:w,autoComplete:x,value:Z,onChange:ae=>te(ae.target.value),disabled:E,form:O,children:[Z===void 0?ee.jsx("option",{value:""}):null,Array.from(ye)]},xe):null]})})};jv.displayName=xo;var Bv="SelectTrigger",Uv=g.forwardRef((n,r)=>{const{__scopeSelect:i,disabled:l=!1,...u}=n,c=ma(i),f=$r(Bv,i),p=f.disabled||l,h=ct(r,f.onTriggerChange),v=ha(i),w=g.useRef("touch"),[x,E,y]=dy(S=>{const C=v().filter(R=>!R.disabled),P=C.find(R=>R.value===f.value),M=fy(C,S,P);M!==void 0&&f.onValueChange(M.value)}),O=S=>{p||(f.onOpenChange(!0),y()),S&&(f.triggerPointerDownPosRef.current={x:Math.round(S.pageX),y:Math.round(S.pageY)})};return ee.jsx(ZS,{asChild:!0,...c,children:ee.jsx(Xe.button,{type:"button",role:"combobox","aria-controls":f.contentId,"aria-expanded":f.open,"aria-required":f.required,"aria-autocomplete":"none",dir:f.dir,"data-state":f.open?"open":"closed",disabled:p,"data-disabled":p?"":void 0,"data-placeholder":cy(f.value)?"":void 0,...u,ref:h,onClick:Je(u.onClick,S=>{S.currentTarget.focus(),w.current!=="mouse"&&O(S)}),onPointerDown:Je(u.onPointerDown,S=>{w.current=S.pointerType;const C=S.target;C.hasPointerCapture(S.pointerId)&&C.releasePointerCapture(S.pointerId),S.button===0&&S.ctrlKey===!1&&S.pointerType==="mouse"&&(O(S),S.preventDefault())}),onKeyDown:Je(u.onKeyDown,S=>{const C=x.current!=="";!(S.ctrlKey||S.altKey||S.metaKey)&&S.key.length===1&&E(S.key),!(C&&S.key===" ")&&K2.includes(S.key)&&(O(),S.preventDefault())})})})});Uv.displayName=Bv;var Hv="SelectValue",$v=g.forwardRef((n,r)=>{const{__scopeSelect:i,className:l,style:u,children:c,placeholder:f="",...p}=n,h=$r(Hv,i),{onValueNodeHasChildrenChange:v}=h,w=c!==void 0,x=ct(r,h.onValueNodeChange);return It(()=>{v(w)},[v,w]),ee.jsx(Xe.span,{...p,ref:x,style:{pointerEvents:"none"},children:cy(h.value)?ee.jsx(ee.Fragment,{children:f}):c})});$v.displayName=Hv;var J2="SelectIcon",Wv=g.forwardRef((n,r)=>{const{__scopeSelect:i,children:l,...u}=n;return ee.jsx(Xe.span,{"aria-hidden":!0,...u,ref:r,children:l||"▼"})});Wv.displayName=J2;var eC="SelectPortal",Vv=n=>ee.jsx(Pv,{asChild:!0,...n});Vv.displayName=eC;var So="SelectContent",Qv=g.forwardRef((n,r)=>{const i=$r(So,n.__scopeSelect),[l,u]=g.useState();if(It(()=>{u(new DocumentFragment)},[]),!i.open){const c=l;return c?xs.createPortal(ee.jsx(Kv,{scope:n.__scopeSelect,children:ee.jsx(pa.Slot,{scope:n.__scopeSelect,children:ee.jsx("div",{children:n.children})})}),c):null}return ee.jsx(Gv,{...n,ref:r})});Qv.displayName=So;var cn=10,[Kv,Wr]=Si(So),tC="SelectContentImpl",nC=ea("SelectContent.RemoveScroll"),Gv=g.forwardRef((n,r)=>{const{__scopeSelect:i,position:l="item-aligned",onCloseAutoFocus:u,onEscapeKeyDown:c,onPointerDownOutside:f,side:p,sideOffset:h,align:v,alignOffset:w,arrowPadding:x,collisionBoundary:E,collisionPadding:y,sticky:O,hideWhenDetached:S,avoidCollisions:C,...P}=n,M=$r(So,i),[R,L]=g.useState(null),[z,U]=g.useState(null),H=ct(r,K=>L(K)),[G,Z]=g.useState(null),[te,pe]=g.useState(null),X=ha(i),[ye,ce]=g.useState(!1),xe=g.useRef(!1);g.useEffect(()=>{if(R)return c2(R)},[R]),Sx();const ae=g.useCallback(K=>{const[fe,...Ce]=X().map(Oe=>Oe.ref.current),[be]=Ce.slice(-1),Te=document.activeElement;for(const Oe of K)if(Oe===Te||(Oe==null||Oe.scrollIntoView({block:"nearest"}),Oe===fe&&z&&(z.scrollTop=0),Oe===be&&z&&(z.scrollTop=z.scrollHeight),Oe==null||Oe.focus(),document.activeElement!==Te))return},[X,z]),ie=g.useCallback(()=>ae([G,R]),[ae,G,R]);g.useEffect(()=>{ye&&ie()},[ye,ie]);const{onOpenChange:j,triggerPointerDownPosRef:B}=M;g.useEffect(()=>{if(R){let K={x:0,y:0};const fe=be=>{var Te,Oe;K={x:Math.abs(Math.round(be.pageX)-(((Te=B.current)==null?void 0:Te.x)??0)),y:Math.abs(Math.round(be.pageY)-(((Oe=B.current)==null?void 0:Oe.y)??0))}},Ce=be=>{K.x<=10&&K.y<=10?be.preventDefault():R.contains(be.target)||j(!1),document.removeEventListener("pointermove",fe),B.current=null};return B.current!==null&&(document.addEventListener("pointermove",fe),document.addEventListener("pointerup",Ce,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",fe),document.removeEventListener("pointerup",Ce,{capture:!0})}}},[R,j,B]),g.useEffect(()=>{const K=()=>j(!1);return window.addEventListener("blur",K),window.addEventListener("resize",K),()=>{window.removeEventListener("blur",K),window.removeEventListener("resize",K)}},[j]);const[V,N]=dy(K=>{const fe=X().filter(Te=>!Te.disabled),Ce=fe.find(Te=>Te.ref.current===document.activeElement),be=fy(fe,K,Ce);be&&setTimeout(()=>be.ref.current.focus())}),F=g.useCallback((K,fe,Ce)=>{const be=!xe.current&&!Ce;(M.value!==void 0&&M.value===fe||be)&&(Z(K),be&&(xe.current=!0))},[M.value]),ne=g.useCallback(()=>R==null?void 0:R.focus(),[R]),re=g.useCallback((K,fe,Ce)=>{const be=!xe.current&&!Ce;(M.value!==void 0&&M.value===fe||be)&&pe(K)},[M.value]),me=l==="popper"?zc:Yv,Se=me===zc?{side:p,sideOffset:h,align:v,alignOffset:w,arrowPadding:x,collisionBoundary:E,collisionPadding:y,sticky:O,hideWhenDetached:S,avoidCollisions:C}:{};return ee.jsx(Kv,{scope:i,content:R,viewport:z,onViewportChange:U,itemRefCallback:F,selectedItem:G,onItemLeave:ne,itemTextRefCallback:re,focusSelectedItem:ie,selectedItemText:te,position:l,isPositioned:ye,searchRef:V,children:ee.jsx(zv,{as:nC,allowPinchZoom:!0,children:ee.jsx(rv,{asChild:!0,trapped:M.open,onMountAutoFocus:K=>{K.preventDefault()},onUnmountAutoFocus:Je(u,K=>{var fe;(fe=M.trigger)==null||fe.focus({preventScroll:!0}),K.preventDefault()}),children:ee.jsx(tv,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:c,onPointerDownOutside:f,onFocusOutside:K=>K.preventDefault(),onDismiss:()=>M.onOpenChange(!1),children:ee.jsx(me,{role:"listbox",id:M.contentId,"data-state":M.open?"open":"closed",dir:M.dir,onContextMenu:K=>K.preventDefault(),...P,...Se,onPlaced:()=>ce(!0),ref:H,style:{display:"flex",flexDirection:"column",outline:"none",...P.style},onKeyDown:Je(P.onKeyDown,K=>{const fe=K.ctrlKey||K.altKey||K.metaKey;if(K.key==="Tab"&&K.preventDefault(),!fe&&K.key.length===1&&N(K.key),["ArrowUp","ArrowDown","Home","End"].includes(K.key)){let be=X().filter(Te=>!Te.disabled).map(Te=>Te.ref.current);if(["ArrowUp","End"].includes(K.key)&&(be=be.slice().reverse()),["ArrowUp","ArrowDown"].includes(K.key)){const Te=K.target,Oe=be.indexOf(Te);be=be.slice(Oe+1)}setTimeout(()=>ae(be)),K.preventDefault()}})})})})})})});Gv.displayName=tC;var rC="SelectItemAlignedPosition",Yv=g.forwardRef((n,r)=>{const{__scopeSelect:i,onPlaced:l,...u}=n,c=$r(So,i),f=Wr(So,i),[p,h]=g.useState(null),[v,w]=g.useState(null),x=ct(r,H=>w(H)),E=ha(i),y=g.useRef(!1),O=g.useRef(!0),{viewport:S,selectedItem:C,selectedItemText:P,focusSelectedItem:M}=f,R=g.useCallback(()=>{if(c.trigger&&c.valueNode&&p&&v&&S&&C&&P){const H=c.trigger.getBoundingClientRect(),G=v.getBoundingClientRect(),Z=c.valueNode.getBoundingClientRect(),te=P.getBoundingClientRect();if(c.dir!=="rtl"){const Te=te.left-G.left,Oe=Z.left-Te,Ge=H.left-Oe,dt=H.width+Ge,yn=Math.max(dt,G.width),Xt=window.innerWidth-cn,Zt=Eh(Oe,[cn,Math.max(cn,Xt-yn)]);p.style.minWidth=dt+"px",p.style.left=Zt+"px"}else{const Te=G.right-te.right,Oe=window.innerWidth-Z.right-Te,Ge=window.innerWidth-H.right-Oe,dt=H.width+Ge,yn=Math.max(dt,G.width),Xt=window.innerWidth-cn,Zt=Eh(Oe,[cn,Math.max(cn,Xt-yn)]);p.style.minWidth=dt+"px",p.style.right=Zt+"px"}const pe=E(),X=window.innerHeight-cn*2,ye=S.scrollHeight,ce=window.getComputedStyle(v),xe=parseInt(ce.borderTopWidth,10),ae=parseInt(ce.paddingTop,10),ie=parseInt(ce.borderBottomWidth,10),j=parseInt(ce.paddingBottom,10),B=xe+ae+ye+j+ie,V=Math.min(C.offsetHeight*5,B),N=window.getComputedStyle(S),F=parseInt(N.paddingTop,10),ne=parseInt(N.paddingBottom,10),re=H.top+H.height/2-cn,me=X-re,Se=C.offsetHeight/2,K=C.offsetTop+Se,fe=xe+ae+K,Ce=B-fe;if(fe<=re){const Te=pe.length>0&&C===pe[pe.length-1].ref.current;p.style.bottom="0px";const Oe=v.clientHeight-S.offsetTop-S.offsetHeight,Ge=Math.max(me,Se+(Te?ne:0)+Oe+ie),dt=fe+Ge;p.style.height=dt+"px"}else{const Te=pe.length>0&&C===pe[0].ref.current;p.style.top="0px";const Ge=Math.max(re,xe+S.offsetTop+(Te?F:0)+Se)+Ce;p.style.height=Ge+"px",S.scrollTop=fe-re+S.offsetTop}p.style.margin=`${cn}px 0`,p.style.minHeight=V+"px",p.style.maxHeight=X+"px",l==null||l(),requestAnimationFrame(()=>y.current=!0)}},[E,c.trigger,c.valueNode,p,v,S,C,P,c.dir,l]);It(()=>R(),[R]);const[L,z]=g.useState();It(()=>{v&&z(window.getComputedStyle(v).zIndex)},[v]);const U=g.useCallback(H=>{H&&O.current===!0&&(R(),M==null||M(),O.current=!1)},[R,M]);return ee.jsx(iC,{scope:i,contentWrapper:p,shouldExpandOnScrollRef:y,onScrollButtonChange:U,children:ee.jsx("div",{ref:h,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:L},children:ee.jsx(Xe.div,{...u,ref:x,style:{boxSizing:"border-box",maxHeight:"100%",...u.style}})})})});Yv.displayName=rC;var oC="SelectPopperPosition",zc=g.forwardRef((n,r)=>{const{__scopeSelect:i,align:l="start",collisionPadding:u=cn,...c}=n,f=ma(i);return ee.jsx(JS,{...f,...c,ref:r,align:l,collisionPadding:u,style:{boxSizing:"border-box",...c.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});zc.displayName=oC;var[iC,md]=Si(So,{}),jc="SelectViewport",qv=g.forwardRef((n,r)=>{const{__scopeSelect:i,nonce:l,...u}=n,c=Wr(jc,i),f=md(jc,i),p=ct(r,c.onViewportChange),h=g.useRef(0);return ee.jsxs(ee.Fragment,{children:[ee.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:l}),ee.jsx(pa.Slot,{scope:i,children:ee.jsx(Xe.div,{"data-radix-select-viewport":"",role:"presentation",...u,ref:p,style:{position:"relative",flex:1,overflow:"hidden auto",...u.style},onScroll:Je(u.onScroll,v=>{const w=v.currentTarget,{contentWrapper:x,shouldExpandOnScrollRef:E}=f;if(E!=null&&E.current&&x){const y=Math.abs(h.current-w.scrollTop);if(y>0){const O=window.innerHeight-cn*2,S=parseFloat(x.style.minHeight),C=parseFloat(x.style.height),P=Math.max(S,C);if(P<O){const M=P+y,R=Math.min(O,M),L=M-R;x.style.height=R+"px",x.style.bottom==="0px"&&(w.scrollTop=L>0?L:0,x.style.justifyContent="flex-end")}}}h.current=w.scrollTop})})})]})});qv.displayName=jc;var Xv="SelectGroup",[sC,lC]=Si(Xv),aC=g.forwardRef((n,r)=>{const{__scopeSelect:i,...l}=n,u=sd();return ee.jsx(sC,{scope:i,id:u,children:ee.jsx(Xe.div,{role:"group","aria-labelledby":u,...l,ref:r})})});aC.displayName=Xv;var Zv="SelectLabel",Jv=g.forwardRef((n,r)=>{const{__scopeSelect:i,...l}=n,u=lC(Zv,i);return ee.jsx(Xe.div,{id:u.id,...l,ref:r})});Jv.displayName=Zv;var ia="SelectItem",[uC,ey]=Si(ia),ty=g.forwardRef((n,r)=>{const{__scopeSelect:i,value:l,disabled:u=!1,textValue:c,...f}=n,p=$r(ia,i),h=Wr(ia,i),v=p.value===l,[w,x]=g.useState(c??""),[E,y]=g.useState(!1),O=ct(r,M=>{var R;return(R=h.itemRefCallback)==null?void 0:R.call(h,M,l,u)}),S=sd(),C=g.useRef("touch"),P=()=>{u||(p.onValueChange(l),p.onOpenChange(!1))};if(l==="")throw new Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return ee.jsx(uC,{scope:i,value:l,disabled:u,textId:S,isSelected:v,onItemTextChange:g.useCallback(M=>{x(R=>R||((M==null?void 0:M.textContent)??"").trim())},[]),children:ee.jsx(pa.ItemSlot,{scope:i,value:l,disabled:u,textValue:w,children:ee.jsx(Xe.div,{role:"option","aria-labelledby":S,"data-highlighted":E?"":void 0,"aria-selected":v&&E,"data-state":v?"checked":"unchecked","aria-disabled":u||void 0,"data-disabled":u?"":void 0,tabIndex:u?void 0:-1,...f,ref:O,onFocus:Je(f.onFocus,()=>y(!0)),onBlur:Je(f.onBlur,()=>y(!1)),onClick:Je(f.onClick,()=>{C.current!=="mouse"&&P()}),onPointerUp:Je(f.onPointerUp,()=>{C.current==="mouse"&&P()}),onPointerDown:Je(f.onPointerDown,M=>{C.current=M.pointerType}),onPointerMove:Je(f.onPointerMove,M=>{var R;C.current=M.pointerType,u?(R=h.onItemLeave)==null||R.call(h):C.current==="mouse"&&M.currentTarget.focus({preventScroll:!0})}),onPointerLeave:Je(f.onPointerLeave,M=>{var R;M.currentTarget===document.activeElement&&((R=h.onItemLeave)==null||R.call(h))}),onKeyDown:Je(f.onKeyDown,M=>{var L;((L=h.searchRef)==null?void 0:L.current)!==""&&M.key===" "||(G2.includes(M.key)&&P(),M.key===" "&&M.preventDefault())})})})})});ty.displayName=ia;var us="SelectItemText",ny=g.forwardRef((n,r)=>{const{__scopeSelect:i,className:l,style:u,...c}=n,f=$r(us,i),p=Wr(us,i),h=ey(us,i),v=Z2(us,i),[w,x]=g.useState(null),E=ct(r,P=>x(P),h.onItemTextChange,P=>{var M;return(M=p.itemTextRefCallback)==null?void 0:M.call(p,P,h.value,h.disabled)}),y=w==null?void 0:w.textContent,O=g.useMemo(()=>ee.jsx("option",{value:h.value,disabled:h.disabled,children:y},h.value),[h.disabled,h.value,y]),{onNativeOptionAdd:S,onNativeOptionRemove:C}=v;return It(()=>(S(O),()=>C(O)),[S,C,O]),ee.jsxs(ee.Fragment,{children:[ee.jsx(Xe.span,{id:h.textId,...c,ref:E}),h.isSelected&&f.valueNode&&!f.valueNodeHasChildren?xs.createPortal(c.children,f.valueNode):null]})});ny.displayName=us;var ry="SelectItemIndicator",oy=g.forwardRef((n,r)=>{const{__scopeSelect:i,...l}=n;return ey(ry,i).isSelected?ee.jsx(Xe.span,{"aria-hidden":!0,...l,ref:r}):null});oy.displayName=ry;var Bc="SelectScrollUpButton",iy=g.forwardRef((n,r)=>{const i=Wr(Bc,n.__scopeSelect),l=md(Bc,n.__scopeSelect),[u,c]=g.useState(!1),f=ct(r,l.onScrollButtonChange);return It(()=>{if(i.viewport&&i.isPositioned){let p=function(){const v=h.scrollTop>0;c(v)};const h=i.viewport;return p(),h.addEventListener("scroll",p),()=>h.removeEventListener("scroll",p)}},[i.viewport,i.isPositioned]),u?ee.jsx(ly,{...n,ref:f,onAutoScroll:()=>{const{viewport:p,selectedItem:h}=i;p&&h&&(p.scrollTop=p.scrollTop-h.offsetHeight)}}):null});iy.displayName=Bc;var Uc="SelectScrollDownButton",sy=g.forwardRef((n,r)=>{const i=Wr(Uc,n.__scopeSelect),l=md(Uc,n.__scopeSelect),[u,c]=g.useState(!1),f=ct(r,l.onScrollButtonChange);return It(()=>{if(i.viewport&&i.isPositioned){let p=function(){const v=h.scrollHeight-h.clientHeight,w=Math.ceil(h.scrollTop)<v;c(w)};const h=i.viewport;return p(),h.addEventListener("scroll",p),()=>h.removeEventListener("scroll",p)}},[i.viewport,i.isPositioned]),u?ee.jsx(ly,{...n,ref:f,onAutoScroll:()=>{const{viewport:p,selectedItem:h}=i;p&&h&&(p.scrollTop=p.scrollTop+h.offsetHeight)}}):null});sy.displayName=Uc;var ly=g.forwardRef((n,r)=>{const{__scopeSelect:i,onAutoScroll:l,...u}=n,c=Wr("SelectScrollButton",i),f=g.useRef(null),p=ha(i),h=g.useCallback(()=>{f.current!==null&&(window.clearInterval(f.current),f.current=null)},[]);return g.useEffect(()=>()=>h(),[h]),It(()=>{var w;const v=p().find(x=>x.ref.current===document.activeElement);(w=v==null?void 0:v.ref.current)==null||w.scrollIntoView({block:"nearest"})},[p]),ee.jsx(Xe.div,{"aria-hidden":!0,...u,ref:r,style:{flexShrink:0,...u.style},onPointerDown:Je(u.onPointerDown,()=>{f.current===null&&(f.current=window.setInterval(l,50))}),onPointerMove:Je(u.onPointerMove,()=>{var v;(v=c.onItemLeave)==null||v.call(c),f.current===null&&(f.current=window.setInterval(l,50))}),onPointerLeave:Je(u.onPointerLeave,()=>{h()})})}),cC="SelectSeparator",ay=g.forwardRef((n,r)=>{const{__scopeSelect:i,...l}=n;return ee.jsx(Xe.div,{"aria-hidden":!0,...l,ref:r})});ay.displayName=cC;var Hc="SelectArrow",dC=g.forwardRef((n,r)=>{const{__scopeSelect:i,...l}=n,u=ma(i),c=$r(Hc,i),f=Wr(Hc,i);return c.open&&f.position==="popper"?ee.jsx(e2,{...u,...l,ref:r}):null});dC.displayName=Hc;var fC="SelectBubbleInput",uy=g.forwardRef(({__scopeSelect:n,value:r,...i},l)=>{const u=g.useRef(null),c=ct(l,u),f=i2(r);return g.useEffect(()=>{const p=u.current;if(!p)return;const h=window.HTMLSelectElement.prototype,w=Object.getOwnPropertyDescriptor(h,"value").set;if(f!==r&&w){const x=new Event("change",{bubbles:!0});w.call(p,r),p.dispatchEvent(x)}},[f,r]),ee.jsx(Xe.select,{...i,style:{...Tv,...i.style},ref:c,defaultValue:r})});uy.displayName=fC;function cy(n){return n===""||n===void 0}function dy(n){const r=go(n),i=g.useRef(""),l=g.useRef(0),u=g.useCallback(f=>{const p=i.current+f;r(p),(function h(v){i.current=v,window.clearTimeout(l.current),v!==""&&(l.current=window.setTimeout(()=>h(""),1e3))})(p)},[r]),c=g.useCallback(()=>{i.current="",window.clearTimeout(l.current)},[]);return g.useEffect(()=>()=>window.clearTimeout(l.current),[]),[i,u,c]}function fy(n,r,i){const u=r.length>1&&Array.from(r).every(v=>v===r[0])?r[0]:r,c=i?n.indexOf(i):-1;let f=pC(n,Math.max(c,0));u.length===1&&(f=f.filter(v=>v!==i));const h=f.find(v=>v.textValue.toLowerCase().startsWith(u.toLowerCase()));return h!==i?h:void 0}function pC(n,r){return n.map((i,l)=>n[(r+l)%n.length])}var ik=jv,sk=Uv,lk=$v,ak=Wv,uk=Vv,ck=Qv,dk=qv,fk=Jv,pk=ty,hk=ny,mk=oy,vk=iy,yk=sy,gk=ay;const Yh=n=>{let r;const i=new Set,l=(v,w)=>{const x=typeof v=="function"?v(r):v;if(!Object.is(x,r)){const E=r;r=w??(typeof x!="object"||x===null)?x:Object.assign({},r,x),i.forEach(y=>y(r,E))}},u=()=>r,p={setState:l,getState:u,getInitialState:()=>h,subscribe:v=>(i.add(v),()=>i.delete(v))},h=r=n(l,u,p);return p},hC=(n=>n?Yh(n):Yh),mC=n=>n;function vC(n,r=mC){const i=q.useSyncExternalStore(n.subscribe,q.useCallback(()=>r(n.getState()),[n,r]),q.useCallback(()=>r(n.getInitialState()),[n,r]));return q.useDebugValue(i),i}const qh=n=>{const r=hC(n),i=l=>vC(r,l);return Object.assign(i,r),i},wk=(n=>n?qh(n):qh);var yC=n=>{switch(n){case"success":return xC;case"info":return CC;case"warning":return SC;case"error":return EC;default:return null}},gC=Array(12).fill(0),wC=({visible:n,className:r})=>q.createElement("div",{className:["sonner-loading-wrapper",r].filter(Boolean).join(" "),"data-visible":n},q.createElement("div",{className:"sonner-spinner"},gC.map((i,l)=>q.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${l}`})))),xC=q.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},q.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),SC=q.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},q.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),CC=q.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},q.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),EC=q.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},q.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),kC=q.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},q.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),q.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),bC=()=>{let[n,r]=q.useState(document.hidden);return q.useEffect(()=>{let i=()=>{r(document.hidden)};return document.addEventListener("visibilitychange",i),()=>window.removeEventListener("visibilitychange",i)},[]),n},$c=1,RC=class{constructor(){this.subscribe=n=>(this.subscribers.push(n),()=>{let r=this.subscribers.indexOf(n);this.subscribers.splice(r,1)}),this.publish=n=>{this.subscribers.forEach(r=>r(n))},this.addToast=n=>{this.publish(n),this.toasts=[...this.toasts,n]},this.create=n=>{var r;let{message:i,...l}=n,u=typeof(n==null?void 0:n.id)=="number"||((r=n.id)==null?void 0:r.length)>0?n.id:$c++,c=this.toasts.find(p=>p.id===u),f=n.dismissible===void 0?!0:n.dismissible;return this.dismissedToasts.has(u)&&this.dismissedToasts.delete(u),c?this.toasts=this.toasts.map(p=>p.id===u?(this.publish({...p,...n,id:u,title:i}),{...p,...n,id:u,dismissible:f,title:i}):p):this.addToast({title:i,...l,dismissible:f,id:u}),u},this.dismiss=n=>(this.dismissedToasts.add(n),n||this.toasts.forEach(r=>{this.subscribers.forEach(i=>i({id:r.id,dismiss:!0}))}),this.subscribers.forEach(r=>r({id:n,dismiss:!0})),n),this.message=(n,r)=>this.create({...r,message:n}),this.error=(n,r)=>this.create({...r,message:n,type:"error"}),this.success=(n,r)=>this.create({...r,type:"success",message:n}),this.info=(n,r)=>this.create({...r,type:"info",message:n}),this.warning=(n,r)=>this.create({...r,type:"warning",message:n}),this.loading=(n,r)=>this.create({...r,type:"loading",message:n}),this.promise=(n,r)=>{if(!r)return;let i;r.loading!==void 0&&(i=this.create({...r,promise:n,type:"loading",message:r.loading,description:typeof r.description!="function"?r.description:void 0}));let l=n instanceof Promise?n:n(),u=i!==void 0,c,f=l.then(async h=>{if(c=["resolve",h],q.isValidElement(h))u=!1,this.create({id:i,type:"default",message:h});else if(TC(h)&&!h.ok){u=!1;let v=typeof r.error=="function"?await r.error(`HTTP error! status: ${h.status}`):r.error,w=typeof r.description=="function"?await r.description(`HTTP error! status: ${h.status}`):r.description;this.create({id:i,type:"error",message:v,description:w})}else if(r.success!==void 0){u=!1;let v=typeof r.success=="function"?await r.success(h):r.success,w=typeof r.description=="function"?await r.description(h):r.description;this.create({id:i,type:"success",message:v,description:w})}}).catch(async h=>{if(c=["reject",h],r.error!==void 0){u=!1;let v=typeof r.error=="function"?await r.error(h):r.error,w=typeof r.description=="function"?await r.description(h):r.description;this.create({id:i,type:"error",message:v,description:w})}}).finally(()=>{var h;u&&(this.dismiss(i),i=void 0),(h=r.finally)==null||h.call(r)}),p=()=>new Promise((h,v)=>f.then(()=>c[0]==="reject"?v(c[1]):h(c[1])).catch(v));return typeof i!="string"&&typeof i!="number"?{unwrap:p}:Object.assign(i,{unwrap:p})},this.custom=(n,r)=>{let i=(r==null?void 0:r.id)||$c++;return this.create({jsx:n(i),id:i,...r}),i},this.getActiveToasts=()=>this.toasts.filter(n=>!this.dismissedToasts.has(n.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},Lt=new RC,PC=(n,r)=>{let i=(r==null?void 0:r.id)||$c++;return Lt.addToast({title:n,...r,id:i}),i},TC=n=>n&&typeof n=="object"&&"ok"in n&&typeof n.ok=="boolean"&&"status"in n&&typeof n.status=="number",MC=PC,OC=()=>Lt.toasts,NC=()=>Lt.getActiveToasts(),xk=Object.assign(MC,{success:Lt.success,info:Lt.info,warning:Lt.warning,error:Lt.error,custom:Lt.custom,message:Lt.message,promise:Lt.promise,dismiss:Lt.dismiss,loading:Lt.loading},{getHistory:OC,getToasts:NC});function _C(n,{insertAt:r}={}){if(typeof document>"u")return;let i=document.head||document.getElementsByTagName("head")[0],l=document.createElement("style");l.type="text/css",r==="top"&&i.firstChild?i.insertBefore(l,i.firstChild):i.appendChild(l),l.styleSheet?l.styleSheet.cssText=n:l.appendChild(document.createTextNode(n))}_C(`:where(html[dir="ltr"]),:where([data-sonner-toaster][dir="ltr"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir="rtl"]),:where([data-sonner-toaster][dir="rtl"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted="true"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted="true"]){transform:none}}:where([data-sonner-toaster][data-x-position="right"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position="left"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position="center"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position="top"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position="bottom"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled="true"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position="top"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position="bottom"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise="true"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme="dark"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled="true"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping="true"]):before{content:"";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position="top"][data-swiping="true"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position="bottom"][data-swiping="true"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping="false"][data-removed="true"]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted="true"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded="false"][data-front="false"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"])>*{opacity:0}:where([data-sonner-toast][data-visible="false"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted="true"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed="true"][data-front="true"][data-swipe-out="false"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="false"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed="true"][data-front="false"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}
382
- `);function Wl(n){return n.label!==void 0}var LC=3,IC="32px",AC="16px",Xh=4e3,DC=356,FC=14,zC=20,jC=200;function un(...n){return n.filter(Boolean).join(" ")}function BC(n){let[r,i]=n.split("-"),l=[];return r&&l.push(r),i&&l.push(i),l}var UC=n=>{var r,i,l,u,c,f,p,h,v,w,x;let{invert:E,toast:y,unstyled:O,interacting:S,setHeights:C,visibleToasts:P,heights:M,index:R,toasts:L,expanded:z,removeToast:U,defaultRichColors:H,closeButton:G,style:Z,cancelButtonStyle:te,actionButtonStyle:pe,className:X="",descriptionClassName:ye="",duration:ce,position:xe,gap:ae,loadingIcon:ie,expandByDefault:j,classNames:B,icons:V,closeButtonAriaLabel:N="Close toast",pauseWhenPageIsHidden:F}=n,[ne,re]=q.useState(null),[me,Se]=q.useState(null),[K,fe]=q.useState(!1),[Ce,be]=q.useState(!1),[Te,Oe]=q.useState(!1),[Ge,dt]=q.useState(!1),[yn,Xt]=q.useState(!1),[Zt,or]=q.useState(0),[gn,ir]=q.useState(0),Ht=q.useRef(y.duration||ce||Xh),Co=q.useRef(null),wn=q.useRef(null),Cs=R===0,Es=R+1<=P,yt=y.type,xn=y.dismissible!==!1,Eo=y.className||"",ks=y.descriptionClassName||"",Sn=q.useMemo(()=>M.findIndex(ke=>ke.toastId===y.id)||0,[M,y.id]),Vr=q.useMemo(()=>{var ke;return(ke=y.closeButton)!=null?ke:G},[y.closeButton,G]),bs=q.useMemo(()=>y.duration||ce||Xh,[y.duration,ce]),ko=q.useRef(0),zn=q.useRef(0),Rs=q.useRef(0),Cn=q.useRef(null),[Ci,Ei]=xe.split("-"),bo=q.useMemo(()=>M.reduce((ke,Ie,Fe)=>Fe>=Sn?ke:ke+Ie.height,0),[M,Sn]),Ro=bC(),sr=y.invert||E,En=yt==="loading";zn.current=q.useMemo(()=>Sn*ae+bo,[Sn,bo]),q.useEffect(()=>{Ht.current=bs},[bs]),q.useEffect(()=>{fe(!0)},[]),q.useEffect(()=>{let ke=wn.current;if(ke){let Ie=ke.getBoundingClientRect().height;return ir(Ie),C(Fe=>[{toastId:y.id,height:Ie,position:y.position},...Fe]),()=>C(Fe=>Fe.filter(gt=>gt.toastId!==y.id))}},[C,y.id]),q.useLayoutEffect(()=>{if(!K)return;let ke=wn.current,Ie=ke.style.height;ke.style.height="auto";let Fe=ke.getBoundingClientRect().height;ke.style.height=Ie,ir(Fe),C(gt=>gt.find(Et=>Et.toastId===y.id)?gt.map(Et=>Et.toastId===y.id?{...Et,height:Fe}:Et):[{toastId:y.id,height:Fe,position:y.position},...gt])},[K,y.title,y.description,C,y.id]);let Jt=q.useCallback(()=>{be(!0),or(zn.current),C(ke=>ke.filter(Ie=>Ie.toastId!==y.id)),setTimeout(()=>{U(y)},jC)},[y,U,C,zn]);q.useEffect(()=>{if(y.promise&&yt==="loading"||y.duration===1/0||y.type==="loading")return;let ke;return z||S||F&&Ro?(()=>{if(Rs.current<ko.current){let Ie=new Date().getTime()-ko.current;Ht.current=Ht.current-Ie}Rs.current=new Date().getTime()})():Ht.current!==1/0&&(ko.current=new Date().getTime(),ke=setTimeout(()=>{var Ie;(Ie=y.onAutoClose)==null||Ie.call(y,y),Jt()},Ht.current)),()=>clearTimeout(ke)},[z,S,y,yt,F,Ro,Jt]),q.useEffect(()=>{y.delete&&Jt()},[Jt,y.delete]);function Ps(){var ke,Ie,Fe;return V!=null&&V.loading?q.createElement("div",{className:un(B==null?void 0:B.loader,(ke=y==null?void 0:y.classNames)==null?void 0:ke.loader,"sonner-loader"),"data-visible":yt==="loading"},V.loading):ie?q.createElement("div",{className:un(B==null?void 0:B.loader,(Ie=y==null?void 0:y.classNames)==null?void 0:Ie.loader,"sonner-loader"),"data-visible":yt==="loading"},ie):q.createElement(wC,{className:un(B==null?void 0:B.loader,(Fe=y==null?void 0:y.classNames)==null?void 0:Fe.loader),visible:yt==="loading"})}return q.createElement("li",{tabIndex:0,ref:wn,className:un(X,Eo,B==null?void 0:B.toast,(r=y==null?void 0:y.classNames)==null?void 0:r.toast,B==null?void 0:B.default,B==null?void 0:B[yt],(i=y==null?void 0:y.classNames)==null?void 0:i[yt]),"data-sonner-toast":"","data-rich-colors":(l=y.richColors)!=null?l:H,"data-styled":!(y.jsx||y.unstyled||O),"data-mounted":K,"data-promise":!!y.promise,"data-swiped":yn,"data-removed":Ce,"data-visible":Es,"data-y-position":Ci,"data-x-position":Ei,"data-index":R,"data-front":Cs,"data-swiping":Te,"data-dismissible":xn,"data-type":yt,"data-invert":sr,"data-swipe-out":Ge,"data-swipe-direction":me,"data-expanded":!!(z||j&&K),style:{"--index":R,"--toasts-before":R,"--z-index":L.length-R,"--offset":`${Ce?Zt:zn.current}px`,"--initial-height":j?"auto":`${gn}px`,...Z,...y.style},onDragEnd:()=>{Oe(!1),re(null),Cn.current=null},onPointerDown:ke=>{En||!xn||(Co.current=new Date,or(zn.current),ke.target.setPointerCapture(ke.pointerId),ke.target.tagName!=="BUTTON"&&(Oe(!0),Cn.current={x:ke.clientX,y:ke.clientY}))},onPointerUp:()=>{var ke,Ie,Fe,gt;if(Ge||!xn)return;Cn.current=null;let Et=Number(((ke=wn.current)==null?void 0:ke.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),kt=Number(((Ie=wn.current)==null?void 0:Ie.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),en=new Date().getTime()-((Fe=Co.current)==null?void 0:Fe.getTime()),lt=ne==="x"?Et:kt,kn=Math.abs(lt)/en;if(Math.abs(lt)>=zC||kn>.11){or(zn.current),(gt=y.onDismiss)==null||gt.call(y,y),Se(ne==="x"?Et>0?"right":"left":kt>0?"down":"up"),Jt(),dt(!0),Xt(!1);return}Oe(!1),re(null)},onPointerMove:ke=>{var Ie,Fe,gt,Et;if(!Cn.current||!xn||((Ie=window.getSelection())==null?void 0:Ie.toString().length)>0)return;let kt=ke.clientY-Cn.current.y,en=ke.clientX-Cn.current.x,lt=(Fe=n.swipeDirections)!=null?Fe:BC(xe);!ne&&(Math.abs(en)>1||Math.abs(kt)>1)&&re(Math.abs(en)>Math.abs(kt)?"x":"y");let kn={x:0,y:0};ne==="y"?(lt.includes("top")||lt.includes("bottom"))&&(lt.includes("top")&&kt<0||lt.includes("bottom")&&kt>0)&&(kn.y=kt):ne==="x"&&(lt.includes("left")||lt.includes("right"))&&(lt.includes("left")&&en<0||lt.includes("right")&&en>0)&&(kn.x=en),(Math.abs(kn.x)>0||Math.abs(kn.y)>0)&&Xt(!0),(gt=wn.current)==null||gt.style.setProperty("--swipe-amount-x",`${kn.x}px`),(Et=wn.current)==null||Et.style.setProperty("--swipe-amount-y",`${kn.y}px`)}},Vr&&!y.jsx?q.createElement("button",{"aria-label":N,"data-disabled":En,"data-close-button":!0,onClick:En||!xn?()=>{}:()=>{var ke;Jt(),(ke=y.onDismiss)==null||ke.call(y,y)},className:un(B==null?void 0:B.closeButton,(u=y==null?void 0:y.classNames)==null?void 0:u.closeButton)},(c=V==null?void 0:V.close)!=null?c:kC):null,y.jsx||g.isValidElement(y.title)?y.jsx?y.jsx:typeof y.title=="function"?y.title():y.title:q.createElement(q.Fragment,null,yt||y.icon||y.promise?q.createElement("div",{"data-icon":"",className:un(B==null?void 0:B.icon,(f=y==null?void 0:y.classNames)==null?void 0:f.icon)},y.promise||y.type==="loading"&&!y.icon?y.icon||Ps():null,y.type!=="loading"?y.icon||(V==null?void 0:V[yt])||yC(yt):null):null,q.createElement("div",{"data-content":"",className:un(B==null?void 0:B.content,(p=y==null?void 0:y.classNames)==null?void 0:p.content)},q.createElement("div",{"data-title":"",className:un(B==null?void 0:B.title,(h=y==null?void 0:y.classNames)==null?void 0:h.title)},typeof y.title=="function"?y.title():y.title),y.description?q.createElement("div",{"data-description":"",className:un(ye,ks,B==null?void 0:B.description,(v=y==null?void 0:y.classNames)==null?void 0:v.description)},typeof y.description=="function"?y.description():y.description):null),g.isValidElement(y.cancel)?y.cancel:y.cancel&&Wl(y.cancel)?q.createElement("button",{"data-button":!0,"data-cancel":!0,style:y.cancelButtonStyle||te,onClick:ke=>{var Ie,Fe;Wl(y.cancel)&&xn&&((Fe=(Ie=y.cancel).onClick)==null||Fe.call(Ie,ke),Jt())},className:un(B==null?void 0:B.cancelButton,(w=y==null?void 0:y.classNames)==null?void 0:w.cancelButton)},y.cancel.label):null,g.isValidElement(y.action)?y.action:y.action&&Wl(y.action)?q.createElement("button",{"data-button":!0,"data-action":!0,style:y.actionButtonStyle||pe,onClick:ke=>{var Ie,Fe;Wl(y.action)&&((Fe=(Ie=y.action).onClick)==null||Fe.call(Ie,ke),!ke.defaultPrevented&&Jt())},className:un(B==null?void 0:B.actionButton,(x=y==null?void 0:y.classNames)==null?void 0:x.actionButton)},y.action.label):null))};function Zh(){if(typeof window>"u"||typeof document>"u")return"ltr";let n=document.documentElement.getAttribute("dir");return n==="auto"||!n?window.getComputedStyle(document.documentElement).direction:n}function HC(n,r){let i={};return[n,r].forEach((l,u)=>{let c=u===1,f=c?"--mobile-offset":"--offset",p=c?AC:IC;function h(v){["top","right","bottom","left"].forEach(w=>{i[`${f}-${w}`]=typeof v=="number"?`${v}px`:v})}typeof l=="number"||typeof l=="string"?h(l):typeof l=="object"?["top","right","bottom","left"].forEach(v=>{l[v]===void 0?i[`${f}-${v}`]=p:i[`${f}-${v}`]=typeof l[v]=="number"?`${l[v]}px`:l[v]}):h(p)}),i}var Sk=g.forwardRef(function(n,r){let{invert:i,position:l="bottom-right",hotkey:u=["altKey","KeyT"],expand:c,closeButton:f,className:p,offset:h,mobileOffset:v,theme:w="light",richColors:x,duration:E,style:y,visibleToasts:O=LC,toastOptions:S,dir:C=Zh(),gap:P=FC,loadingIcon:M,icons:R,containerAriaLabel:L="Notifications",pauseWhenPageIsHidden:z}=n,[U,H]=q.useState([]),G=q.useMemo(()=>Array.from(new Set([l].concat(U.filter(F=>F.position).map(F=>F.position)))),[U,l]),[Z,te]=q.useState([]),[pe,X]=q.useState(!1),[ye,ce]=q.useState(!1),[xe,ae]=q.useState(w!=="system"?w:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),ie=q.useRef(null),j=u.join("+").replace(/Key/g,"").replace(/Digit/g,""),B=q.useRef(null),V=q.useRef(!1),N=q.useCallback(F=>{H(ne=>{var re;return(re=ne.find(me=>me.id===F.id))!=null&&re.delete||Lt.dismiss(F.id),ne.filter(({id:me})=>me!==F.id)})},[]);return q.useEffect(()=>Lt.subscribe(F=>{if(F.dismiss){H(ne=>ne.map(re=>re.id===F.id?{...re,delete:!0}:re));return}setTimeout(()=>{_m.flushSync(()=>{H(ne=>{let re=ne.findIndex(me=>me.id===F.id);return re!==-1?[...ne.slice(0,re),{...ne[re],...F},...ne.slice(re+1)]:[F,...ne]})})})}),[]),q.useEffect(()=>{if(w!=="system"){ae(w);return}if(w==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?ae("dark"):ae("light")),typeof window>"u")return;let F=window.matchMedia("(prefers-color-scheme: dark)");try{F.addEventListener("change",({matches:ne})=>{ae(ne?"dark":"light")})}catch{F.addListener(({matches:re})=>{try{ae(re?"dark":"light")}catch(me){console.error(me)}})}},[w]),q.useEffect(()=>{U.length<=1&&X(!1)},[U]),q.useEffect(()=>{let F=ne=>{var re,me;u.every(Se=>ne[Se]||ne.code===Se)&&(X(!0),(re=ie.current)==null||re.focus()),ne.code==="Escape"&&(document.activeElement===ie.current||(me=ie.current)!=null&&me.contains(document.activeElement))&&X(!1)};return document.addEventListener("keydown",F),()=>document.removeEventListener("keydown",F)},[u]),q.useEffect(()=>{if(ie.current)return()=>{B.current&&(B.current.focus({preventScroll:!0}),B.current=null,V.current=!1)}},[ie.current]),q.createElement("section",{ref:r,"aria-label":`${L} ${j}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},G.map((F,ne)=>{var re;let[me,Se]=F.split("-");return U.length?q.createElement("ol",{key:F,dir:C==="auto"?Zh():C,tabIndex:-1,ref:ie,className:p,"data-sonner-toaster":!0,"data-theme":xe,"data-y-position":me,"data-lifted":pe&&U.length>1&&!c,"data-x-position":Se,style:{"--front-toast-height":`${((re=Z[0])==null?void 0:re.height)||0}px`,"--width":`${DC}px`,"--gap":`${P}px`,...y,...HC(h,v)},onBlur:K=>{V.current&&!K.currentTarget.contains(K.relatedTarget)&&(V.current=!1,B.current&&(B.current.focus({preventScroll:!0}),B.current=null))},onFocus:K=>{K.target instanceof HTMLElement&&K.target.dataset.dismissible==="false"||V.current||(V.current=!0,B.current=K.relatedTarget)},onMouseEnter:()=>X(!0),onMouseMove:()=>X(!0),onMouseLeave:()=>{ye||X(!1)},onDragEnd:()=>X(!1),onPointerDown:K=>{K.target instanceof HTMLElement&&K.target.dataset.dismissible==="false"||ce(!0)},onPointerUp:()=>ce(!1)},U.filter(K=>!K.position&&ne===0||K.position===F).map((K,fe)=>{var Ce,be;return q.createElement(UC,{key:K.id,icons:R,index:fe,toast:K,defaultRichColors:x,duration:(Ce=S==null?void 0:S.duration)!=null?Ce:E,className:S==null?void 0:S.className,descriptionClassName:S==null?void 0:S.descriptionClassName,invert:i,visibleToasts:O,closeButton:(be=S==null?void 0:S.closeButton)!=null?be:f,interacting:ye,position:F,style:S==null?void 0:S.style,unstyled:S==null?void 0:S.unstyled,classNames:S==null?void 0:S.classNames,cancelButtonStyle:S==null?void 0:S.cancelButtonStyle,actionButtonStyle:S==null?void 0:S.actionButtonStyle,removeToast:N,toasts:U.filter(Te=>Te.position==K.position),heights:Z.filter(Te=>Te.position==K.position),setHeights:te,expandByDefault:c,gap:P,loadingIcon:M,expanded:pe,pauseWhenPageIsHidden:z,swipeDirections:n.swipeDirections})})):null}))});export{Sk as $,nE as A,lE as B,uE as C,WC as D,GC as E,dE as F,SE as G,bE as H,ak as I,xE as J,PE as K,fk as L,_E as M,I1 as N,ME as O,uk as P,qC as Q,ik as R,vk as S,sk as T,cm as U,dk as V,JE as W,sE as X,ek as Y,qE as Z,WE as _,cE as a,CE as a0,wE as a1,VE as a2,pE as a3,HE as a4,BE as a5,LE as a6,ZE as a7,QE as a8,yE as a9,Pv as aA,id as aB,tv as aC,JS as aD,ok as aE,rk as aF,e2 as aG,Em as aH,VC as aI,AE as aJ,It as aK,c2 as aL,zv as aM,Sx as aN,rv as aO,ea as aP,nk as aQ,NE as aR,FE as aS,rE as aT,oE as aU,EE as aV,gE as aa,tk as ab,KE as ac,fE as ad,xk as ae,OE as af,kE as ag,XE as ah,GE as ai,vE as aj,$E as ak,RE as al,hE as am,zE as an,UE as ao,ZC as ap,$m as aq,JC as ar,sd as as,$h as at,XS as au,ct as av,ZS as aw,Xe as ax,Je as ay,gv as az,yk as b,eE as c,ck as d,pk as e,mk as f,aE as g,hk as h,gk as i,ee as j,lk as k,mE as l,YE as m,IE as n,jE as o,DE as p,TE as q,g as r,iE as s,tE as t,wk as u,Hr as v,XC as w,KC as x,u1 as y,QC as z};
382
+ `);function Wl(n){return n.label!==void 0}var LC=3,IC="32px",AC="16px",Xh=4e3,DC=356,FC=14,zC=20,jC=200;function un(...n){return n.filter(Boolean).join(" ")}function BC(n){let[r,i]=n.split("-"),l=[];return r&&l.push(r),i&&l.push(i),l}var UC=n=>{var r,i,l,u,c,f,p,h,v,w,x;let{invert:E,toast:y,unstyled:O,interacting:S,setHeights:C,visibleToasts:P,heights:M,index:R,toasts:L,expanded:z,removeToast:U,defaultRichColors:H,closeButton:G,style:Z,cancelButtonStyle:te,actionButtonStyle:pe,className:X="",descriptionClassName:ye="",duration:ce,position:xe,gap:ae,loadingIcon:ie,expandByDefault:j,classNames:B,icons:V,closeButtonAriaLabel:N="Close toast",pauseWhenPageIsHidden:F}=n,[ne,re]=q.useState(null),[me,Se]=q.useState(null),[K,fe]=q.useState(!1),[Ce,be]=q.useState(!1),[Te,Oe]=q.useState(!1),[Ge,dt]=q.useState(!1),[yn,Xt]=q.useState(!1),[Zt,or]=q.useState(0),[gn,ir]=q.useState(0),Ht=q.useRef(y.duration||ce||Xh),Co=q.useRef(null),wn=q.useRef(null),Cs=R===0,Es=R+1<=P,yt=y.type,xn=y.dismissible!==!1,Eo=y.className||"",ks=y.descriptionClassName||"",Sn=q.useMemo(()=>M.findIndex(ke=>ke.toastId===y.id)||0,[M,y.id]),Vr=q.useMemo(()=>{var ke;return(ke=y.closeButton)!=null?ke:G},[y.closeButton,G]),bs=q.useMemo(()=>y.duration||ce||Xh,[y.duration,ce]),ko=q.useRef(0),zn=q.useRef(0),Rs=q.useRef(0),Cn=q.useRef(null),[Ci,Ei]=xe.split("-"),bo=q.useMemo(()=>M.reduce((ke,Ie,Fe)=>Fe>=Sn?ke:ke+Ie.height,0),[M,Sn]),Ro=bC(),sr=y.invert||E,En=yt==="loading";zn.current=q.useMemo(()=>Sn*ae+bo,[Sn,bo]),q.useEffect(()=>{Ht.current=bs},[bs]),q.useEffect(()=>{fe(!0)},[]),q.useEffect(()=>{let ke=wn.current;if(ke){let Ie=ke.getBoundingClientRect().height;return ir(Ie),C(Fe=>[{toastId:y.id,height:Ie,position:y.position},...Fe]),()=>C(Fe=>Fe.filter(gt=>gt.toastId!==y.id))}},[C,y.id]),q.useLayoutEffect(()=>{if(!K)return;let ke=wn.current,Ie=ke.style.height;ke.style.height="auto";let Fe=ke.getBoundingClientRect().height;ke.style.height=Ie,ir(Fe),C(gt=>gt.find(Et=>Et.toastId===y.id)?gt.map(Et=>Et.toastId===y.id?{...Et,height:Fe}:Et):[{toastId:y.id,height:Fe,position:y.position},...gt])},[K,y.title,y.description,C,y.id]);let Jt=q.useCallback(()=>{be(!0),or(zn.current),C(ke=>ke.filter(Ie=>Ie.toastId!==y.id)),setTimeout(()=>{U(y)},jC)},[y,U,C,zn]);q.useEffect(()=>{if(y.promise&&yt==="loading"||y.duration===1/0||y.type==="loading")return;let ke;return z||S||F&&Ro?(()=>{if(Rs.current<ko.current){let Ie=new Date().getTime()-ko.current;Ht.current=Ht.current-Ie}Rs.current=new Date().getTime()})():Ht.current!==1/0&&(ko.current=new Date().getTime(),ke=setTimeout(()=>{var Ie;(Ie=y.onAutoClose)==null||Ie.call(y,y),Jt()},Ht.current)),()=>clearTimeout(ke)},[z,S,y,yt,F,Ro,Jt]),q.useEffect(()=>{y.delete&&Jt()},[Jt,y.delete]);function Ps(){var ke,Ie,Fe;return V!=null&&V.loading?q.createElement("div",{className:un(B==null?void 0:B.loader,(ke=y==null?void 0:y.classNames)==null?void 0:ke.loader,"sonner-loader"),"data-visible":yt==="loading"},V.loading):ie?q.createElement("div",{className:un(B==null?void 0:B.loader,(Ie=y==null?void 0:y.classNames)==null?void 0:Ie.loader,"sonner-loader"),"data-visible":yt==="loading"},ie):q.createElement(wC,{className:un(B==null?void 0:B.loader,(Fe=y==null?void 0:y.classNames)==null?void 0:Fe.loader),visible:yt==="loading"})}return q.createElement("li",{tabIndex:0,ref:wn,className:un(X,Eo,B==null?void 0:B.toast,(r=y==null?void 0:y.classNames)==null?void 0:r.toast,B==null?void 0:B.default,B==null?void 0:B[yt],(i=y==null?void 0:y.classNames)==null?void 0:i[yt]),"data-sonner-toast":"","data-rich-colors":(l=y.richColors)!=null?l:H,"data-styled":!(y.jsx||y.unstyled||O),"data-mounted":K,"data-promise":!!y.promise,"data-swiped":yn,"data-removed":Ce,"data-visible":Es,"data-y-position":Ci,"data-x-position":Ei,"data-index":R,"data-front":Cs,"data-swiping":Te,"data-dismissible":xn,"data-type":yt,"data-invert":sr,"data-swipe-out":Ge,"data-swipe-direction":me,"data-expanded":!!(z||j&&K),style:{"--index":R,"--toasts-before":R,"--z-index":L.length-R,"--offset":`${Ce?Zt:zn.current}px`,"--initial-height":j?"auto":`${gn}px`,...Z,...y.style},onDragEnd:()=>{Oe(!1),re(null),Cn.current=null},onPointerDown:ke=>{En||!xn||(Co.current=new Date,or(zn.current),ke.target.setPointerCapture(ke.pointerId),ke.target.tagName!=="BUTTON"&&(Oe(!0),Cn.current={x:ke.clientX,y:ke.clientY}))},onPointerUp:()=>{var ke,Ie,Fe,gt;if(Ge||!xn)return;Cn.current=null;let Et=Number(((ke=wn.current)==null?void 0:ke.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),kt=Number(((Ie=wn.current)==null?void 0:Ie.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),en=new Date().getTime()-((Fe=Co.current)==null?void 0:Fe.getTime()),lt=ne==="x"?Et:kt,kn=Math.abs(lt)/en;if(Math.abs(lt)>=zC||kn>.11){or(zn.current),(gt=y.onDismiss)==null||gt.call(y,y),Se(ne==="x"?Et>0?"right":"left":kt>0?"down":"up"),Jt(),dt(!0),Xt(!1);return}Oe(!1),re(null)},onPointerMove:ke=>{var Ie,Fe,gt,Et;if(!Cn.current||!xn||((Ie=window.getSelection())==null?void 0:Ie.toString().length)>0)return;let kt=ke.clientY-Cn.current.y,en=ke.clientX-Cn.current.x,lt=(Fe=n.swipeDirections)!=null?Fe:BC(xe);!ne&&(Math.abs(en)>1||Math.abs(kt)>1)&&re(Math.abs(en)>Math.abs(kt)?"x":"y");let kn={x:0,y:0};ne==="y"?(lt.includes("top")||lt.includes("bottom"))&&(lt.includes("top")&&kt<0||lt.includes("bottom")&&kt>0)&&(kn.y=kt):ne==="x"&&(lt.includes("left")||lt.includes("right"))&&(lt.includes("left")&&en<0||lt.includes("right")&&en>0)&&(kn.x=en),(Math.abs(kn.x)>0||Math.abs(kn.y)>0)&&Xt(!0),(gt=wn.current)==null||gt.style.setProperty("--swipe-amount-x",`${kn.x}px`),(Et=wn.current)==null||Et.style.setProperty("--swipe-amount-y",`${kn.y}px`)}},Vr&&!y.jsx?q.createElement("button",{"aria-label":N,"data-disabled":En,"data-close-button":!0,onClick:En||!xn?()=>{}:()=>{var ke;Jt(),(ke=y.onDismiss)==null||ke.call(y,y)},className:un(B==null?void 0:B.closeButton,(u=y==null?void 0:y.classNames)==null?void 0:u.closeButton)},(c=V==null?void 0:V.close)!=null?c:kC):null,y.jsx||g.isValidElement(y.title)?y.jsx?y.jsx:typeof y.title=="function"?y.title():y.title:q.createElement(q.Fragment,null,yt||y.icon||y.promise?q.createElement("div",{"data-icon":"",className:un(B==null?void 0:B.icon,(f=y==null?void 0:y.classNames)==null?void 0:f.icon)},y.promise||y.type==="loading"&&!y.icon?y.icon||Ps():null,y.type!=="loading"?y.icon||(V==null?void 0:V[yt])||yC(yt):null):null,q.createElement("div",{"data-content":"",className:un(B==null?void 0:B.content,(p=y==null?void 0:y.classNames)==null?void 0:p.content)},q.createElement("div",{"data-title":"",className:un(B==null?void 0:B.title,(h=y==null?void 0:y.classNames)==null?void 0:h.title)},typeof y.title=="function"?y.title():y.title),y.description?q.createElement("div",{"data-description":"",className:un(ye,ks,B==null?void 0:B.description,(v=y==null?void 0:y.classNames)==null?void 0:v.description)},typeof y.description=="function"?y.description():y.description):null),g.isValidElement(y.cancel)?y.cancel:y.cancel&&Wl(y.cancel)?q.createElement("button",{"data-button":!0,"data-cancel":!0,style:y.cancelButtonStyle||te,onClick:ke=>{var Ie,Fe;Wl(y.cancel)&&xn&&((Fe=(Ie=y.cancel).onClick)==null||Fe.call(Ie,ke),Jt())},className:un(B==null?void 0:B.cancelButton,(w=y==null?void 0:y.classNames)==null?void 0:w.cancelButton)},y.cancel.label):null,g.isValidElement(y.action)?y.action:y.action&&Wl(y.action)?q.createElement("button",{"data-button":!0,"data-action":!0,style:y.actionButtonStyle||pe,onClick:ke=>{var Ie,Fe;Wl(y.action)&&((Fe=(Ie=y.action).onClick)==null||Fe.call(Ie,ke),!ke.defaultPrevented&&Jt())},className:un(B==null?void 0:B.actionButton,(x=y==null?void 0:y.classNames)==null?void 0:x.actionButton)},y.action.label):null))};function Zh(){if(typeof window>"u"||typeof document>"u")return"ltr";let n=document.documentElement.getAttribute("dir");return n==="auto"||!n?window.getComputedStyle(document.documentElement).direction:n}function HC(n,r){let i={};return[n,r].forEach((l,u)=>{let c=u===1,f=c?"--mobile-offset":"--offset",p=c?AC:IC;function h(v){["top","right","bottom","left"].forEach(w=>{i[`${f}-${w}`]=typeof v=="number"?`${v}px`:v})}typeof l=="number"||typeof l=="string"?h(l):typeof l=="object"?["top","right","bottom","left"].forEach(v=>{l[v]===void 0?i[`${f}-${v}`]=p:i[`${f}-${v}`]=typeof l[v]=="number"?`${l[v]}px`:l[v]}):h(p)}),i}var Sk=g.forwardRef(function(n,r){let{invert:i,position:l="bottom-right",hotkey:u=["altKey","KeyT"],expand:c,closeButton:f,className:p,offset:h,mobileOffset:v,theme:w="light",richColors:x,duration:E,style:y,visibleToasts:O=LC,toastOptions:S,dir:C=Zh(),gap:P=FC,loadingIcon:M,icons:R,containerAriaLabel:L="Notifications",pauseWhenPageIsHidden:z}=n,[U,H]=q.useState([]),G=q.useMemo(()=>Array.from(new Set([l].concat(U.filter(F=>F.position).map(F=>F.position)))),[U,l]),[Z,te]=q.useState([]),[pe,X]=q.useState(!1),[ye,ce]=q.useState(!1),[xe,ae]=q.useState(w!=="system"?w:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),ie=q.useRef(null),j=u.join("+").replace(/Key/g,"").replace(/Digit/g,""),B=q.useRef(null),V=q.useRef(!1),N=q.useCallback(F=>{H(ne=>{var re;return(re=ne.find(me=>me.id===F.id))!=null&&re.delete||Lt.dismiss(F.id),ne.filter(({id:me})=>me!==F.id)})},[]);return q.useEffect(()=>Lt.subscribe(F=>{if(F.dismiss){H(ne=>ne.map(re=>re.id===F.id?{...re,delete:!0}:re));return}setTimeout(()=>{_m.flushSync(()=>{H(ne=>{let re=ne.findIndex(me=>me.id===F.id);return re!==-1?[...ne.slice(0,re),{...ne[re],...F},...ne.slice(re+1)]:[F,...ne]})})})}),[]),q.useEffect(()=>{if(w!=="system"){ae(w);return}if(w==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?ae("dark"):ae("light")),typeof window>"u")return;let F=window.matchMedia("(prefers-color-scheme: dark)");try{F.addEventListener("change",({matches:ne})=>{ae(ne?"dark":"light")})}catch{F.addListener(({matches:re})=>{try{ae(re?"dark":"light")}catch(me){console.error(me)}})}},[w]),q.useEffect(()=>{U.length<=1&&X(!1)},[U]),q.useEffect(()=>{let F=ne=>{var re,me;u.every(Se=>ne[Se]||ne.code===Se)&&(X(!0),(re=ie.current)==null||re.focus()),ne.code==="Escape"&&(document.activeElement===ie.current||(me=ie.current)!=null&&me.contains(document.activeElement))&&X(!1)};return document.addEventListener("keydown",F),()=>document.removeEventListener("keydown",F)},[u]),q.useEffect(()=>{if(ie.current)return()=>{B.current&&(B.current.focus({preventScroll:!0}),B.current=null,V.current=!1)}},[ie.current]),q.createElement("section",{ref:r,"aria-label":`${L} ${j}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},G.map((F,ne)=>{var re;let[me,Se]=F.split("-");return U.length?q.createElement("ol",{key:F,dir:C==="auto"?Zh():C,tabIndex:-1,ref:ie,className:p,"data-sonner-toaster":!0,"data-theme":xe,"data-y-position":me,"data-lifted":pe&&U.length>1&&!c,"data-x-position":Se,style:{"--front-toast-height":`${((re=Z[0])==null?void 0:re.height)||0}px`,"--width":`${DC}px`,"--gap":`${P}px`,...y,...HC(h,v)},onBlur:K=>{V.current&&!K.currentTarget.contains(K.relatedTarget)&&(V.current=!1,B.current&&(B.current.focus({preventScroll:!0}),B.current=null))},onFocus:K=>{K.target instanceof HTMLElement&&K.target.dataset.dismissible==="false"||V.current||(V.current=!0,B.current=K.relatedTarget)},onMouseEnter:()=>X(!0),onMouseMove:()=>X(!0),onMouseLeave:()=>{ye||X(!1)},onDragEnd:()=>X(!1),onPointerDown:K=>{K.target instanceof HTMLElement&&K.target.dataset.dismissible==="false"||ce(!0)},onPointerUp:()=>ce(!1)},U.filter(K=>!K.position&&ne===0||K.position===F).map((K,fe)=>{var Ce,be;return q.createElement(UC,{key:K.id,icons:R,index:fe,toast:K,defaultRichColors:x,duration:(Ce=S==null?void 0:S.duration)!=null?Ce:E,className:S==null?void 0:S.className,descriptionClassName:S==null?void 0:S.descriptionClassName,invert:i,visibleToasts:O,closeButton:(be=S==null?void 0:S.closeButton)!=null?be:f,interacting:ye,position:F,style:S==null?void 0:S.style,unstyled:S==null?void 0:S.unstyled,classNames:S==null?void 0:S.classNames,cancelButtonStyle:S==null?void 0:S.cancelButtonStyle,actionButtonStyle:S==null?void 0:S.actionButtonStyle,removeToast:N,toasts:U.filter(Te=>Te.position==K.position),heights:Z.filter(Te=>Te.position==K.position),setHeights:te,expandByDefault:c,gap:P,loadingIcon:M,expanded:pe,pauseWhenPageIsHidden:z,swipeDirections:n.swipeDirections})})):null}))});export{Sk as $,nE as A,lE as B,uE as C,WC as D,GC as E,dE as F,SE as G,bE as H,ak as I,xE as J,PE as K,fk as L,_E as M,I1 as N,ME as O,uk as P,qC as Q,ik as R,vk as S,sk as T,WE as U,dk as V,HE as W,BE as X,LE as Y,cm as Z,JE as _,cE as a,sE as a0,ek as a1,qE as a2,CE as a3,wE as a4,VE as a5,pE as a6,ZE as a7,QE as a8,yE as a9,Pv as aA,id as aB,tv as aC,JS as aD,ok as aE,rk as aF,e2 as aG,Em as aH,VC as aI,AE as aJ,It as aK,c2 as aL,zv as aM,Sx as aN,rv as aO,ea as aP,nk as aQ,NE as aR,FE as aS,rE as aT,oE as aU,EE as aV,gE as aa,tk as ab,KE as ac,fE as ad,xk as ae,OE as af,kE as ag,XE as ah,GE as ai,vE as aj,$E as ak,RE as al,hE as am,zE as an,UE as ao,ZC as ap,$m as aq,JC as ar,sd as as,$h as at,XS as au,ct as av,ZS as aw,Xe as ax,Je as ay,gv as az,yk as b,eE as c,ck as d,pk as e,mk as f,aE as g,hk as h,gk as i,ee as j,lk as k,mE as l,YE as m,IE as n,jE as o,DE as p,TE as q,g as r,iE as s,tE as t,wk as u,Hr as v,XC as w,KC as x,u1 as y,QC as z};
package/dist/index.html CHANGED
@@ -6,8 +6,8 @@
6
6
  <link rel="icon" type="image/svg+xml" href="/logo.svg" />
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
8
  <title>NextClaw - 系统配置</title>
9
- <script type="module" crossorigin src="/assets/index-BhpPLO5K.js"></script>
10
- <link rel="modulepreload" crossorigin href="/assets/vendor-DfLizrKM.js">
9
+ <script type="module" crossorigin src="/assets/index-BRBYYgR_.js"></script>
10
+ <link rel="modulepreload" crossorigin href="/assets/vendor-Dh04PGww.js">
11
11
  <link rel="stylesheet" crossorigin href="/assets/index-C5cdRzpO.css">
12
12
  </head>
13
13
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nextclaw/ui",
3
- "version": "0.5.46",
3
+ "version": "0.5.48",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -0,0 +1,148 @@
1
+ import type { MutableRefObject } from 'react';
2
+ import type { SessionEventView } from '@/api/types';
3
+ import { Button } from '@/components/ui/button';
4
+ import { ChatThread } from '@/components/chat/ChatThread';
5
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
6
+ import { t } from '@/lib/i18n';
7
+ import { MessageSquareText, Send, Trash2 } from 'lucide-react';
8
+
9
+ type ChatConversationPanelProps = {
10
+ agentOptions: string[];
11
+ selectedAgentId: string;
12
+ onSelectedAgentIdChange: (value: string) => void;
13
+ selectedSessionKey: string | null;
14
+ canDeleteSession: boolean;
15
+ isDeletePending: boolean;
16
+ onDeleteSession: () => void;
17
+ threadRef: MutableRefObject<HTMLDivElement | null>;
18
+ onThreadScroll: () => void;
19
+ isHistoryLoading: boolean;
20
+ mergedEvents: SessionEventView[];
21
+ isSending: boolean;
22
+ isAwaitingAssistantOutput: boolean;
23
+ streamingAssistantText: string;
24
+ draft: string;
25
+ onDraftChange: (value: string) => void;
26
+ onSend: () => Promise<void> | void;
27
+ queuedCount: number;
28
+ };
29
+
30
+ export function ChatConversationPanel({
31
+ agentOptions,
32
+ selectedAgentId,
33
+ onSelectedAgentIdChange,
34
+ selectedSessionKey,
35
+ canDeleteSession,
36
+ isDeletePending,
37
+ onDeleteSession,
38
+ threadRef,
39
+ onThreadScroll,
40
+ isHistoryLoading,
41
+ mergedEvents,
42
+ isSending,
43
+ isAwaitingAssistantOutput,
44
+ streamingAssistantText,
45
+ draft,
46
+ onDraftChange,
47
+ onSend,
48
+ queuedCount
49
+ }: ChatConversationPanelProps) {
50
+ const showHistoryLoading =
51
+ isHistoryLoading &&
52
+ mergedEvents.length === 0 &&
53
+ !isSending &&
54
+ !isAwaitingAssistantOutput &&
55
+ !streamingAssistantText.trim();
56
+
57
+ return (
58
+ <section className="flex-1 min-h-0 rounded-2xl border border-gray-200 bg-gradient-to-b from-gray-50/60 to-white shadow-card flex flex-col overflow-hidden">
59
+ <div className="px-5 py-4 border-b border-gray-200/80 bg-white/80 backdrop-blur-sm">
60
+ <div className="grid gap-3 lg:grid-cols-[minmax(220px,300px)_minmax(0,1fr)_auto] items-end">
61
+ <div className="min-w-0">
62
+ <div className="text-[11px] text-gray-500 mb-1">{t('chatAgentLabel')}</div>
63
+ <Select value={selectedAgentId} onValueChange={onSelectedAgentIdChange}>
64
+ <SelectTrigger className="h-9 rounded-lg">
65
+ <SelectValue placeholder={t('chatSelectAgent')} />
66
+ </SelectTrigger>
67
+ <SelectContent>
68
+ {agentOptions.map((agent) => (
69
+ <SelectItem key={agent} value={agent}>
70
+ {agent}
71
+ </SelectItem>
72
+ ))}
73
+ </SelectContent>
74
+ </Select>
75
+ </div>
76
+
77
+ <div className="min-w-0">
78
+ <div className="text-[11px] text-gray-500 mb-1">{t('chatSessionLabel')}</div>
79
+ <div className="h-9 rounded-lg border border-gray-200 bg-white px-3 text-xs text-gray-600 flex items-center truncate">
80
+ {selectedSessionKey ?? t('chatNoSession')}
81
+ </div>
82
+ </div>
83
+
84
+ <Button
85
+ variant="outline"
86
+ className="rounded-lg"
87
+ onClick={onDeleteSession}
88
+ disabled={!canDeleteSession || isDeletePending}
89
+ >
90
+ <Trash2 className="h-3.5 w-3.5 mr-1.5" />
91
+ {t('chatDeleteSession')}
92
+ </Button>
93
+ </div>
94
+ </div>
95
+
96
+ <div ref={threadRef} onScroll={onThreadScroll} className="flex-1 min-h-0 overflow-y-auto custom-scrollbar px-5 py-5">
97
+ {!selectedSessionKey ? (
98
+ <div className="h-full flex items-center justify-center">
99
+ <div className="text-center text-gray-500">
100
+ <MessageSquareText className="h-8 w-8 mx-auto mb-2 text-gray-300" />
101
+ <div className="text-sm font-medium">{t('chatNoSession')}</div>
102
+ <div className="text-xs mt-1">{t('chatNoSessionHint')}</div>
103
+ </div>
104
+ </div>
105
+ ) : showHistoryLoading ? (
106
+ <div className="text-sm text-gray-500">{t('chatHistoryLoading')}</div>
107
+ ) : mergedEvents.length === 0 ? (
108
+ <div className="text-sm text-gray-500">{t('chatNoMessages')}</div>
109
+ ) : (
110
+ <ChatThread events={mergedEvents} isSending={isSending && isAwaitingAssistantOutput} />
111
+ )}
112
+ </div>
113
+
114
+ <div className="border-t border-gray-200 bg-white p-4">
115
+ <div className="rounded-xl border border-gray-200 bg-white p-2">
116
+ <textarea
117
+ value={draft}
118
+ onChange={(event) => onDraftChange(event.target.value)}
119
+ onKeyDown={(event) => {
120
+ if (event.key === 'Enter' && !event.shiftKey) {
121
+ event.preventDefault();
122
+ void onSend();
123
+ }
124
+ }}
125
+ placeholder={t('chatInputPlaceholder')}
126
+ className="w-full min-h-[68px] max-h-[220px] resize-y bg-transparent outline-none text-sm px-2 py-1.5 text-gray-800 placeholder:text-gray-400"
127
+ />
128
+ <div className="flex items-center justify-between px-2 pb-1">
129
+ <div className="text-[11px] text-gray-400">
130
+ {isSending && queuedCount > 0
131
+ ? `${t('chatQueuedHintPrefix')} ${queuedCount} ${t('chatQueuedHintSuffix')}`
132
+ : t('chatInputHint')}
133
+ </div>
134
+ <Button
135
+ size="sm"
136
+ className="rounded-lg"
137
+ onClick={() => void onSend()}
138
+ disabled={draft.trim().length === 0}
139
+ >
140
+ <Send className="h-3.5 w-3.5 mr-1.5" />
141
+ {isSending ? t('chatQueueSend') : t('chatSend')}
142
+ </Button>
143
+ </div>
144
+ </div>
145
+ </div>
146
+ </section>
147
+ );
148
+ }