specrails-desktop 2.43.1 → 2.44.0

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 (82) hide show
  1. package/README.md +1 -1
  2. package/client/dist/assets/{ActivityFeedPage-DoEMumQS.js → ActivityFeedPage-CG2fhd_k.js} +1 -1
  3. package/client/dist/assets/{AgentBrowserCapture-DIh4K0gh.js → AgentBrowserCapture-C6BVsTfo.js} +1 -1
  4. package/client/dist/assets/{AgentModeAnalyticsPane-mbq4WEoO.js → AgentModeAnalyticsPane-90q1FOYY.js} +2 -2
  5. package/client/dist/assets/{AgentModeCodePane-CKh7zuA4.js → AgentModeCodePane-CzNPXJND.js} +2 -2
  6. package/client/dist/assets/{AgentModeJobsPane-BDokPiLJ.js → AgentModeJobsPane-CS4XPM5K.js} +1 -1
  7. package/client/dist/assets/{AgentsPage-BFVAZbBj.js → AgentsPage-DgF8yxlz.js} +1 -1
  8. package/client/dist/assets/{AnalyticsPage-3Y9LuWwz.js → AnalyticsPage-BZRZpWTe.js} +1 -1
  9. package/client/dist/assets/{CodePage-C9KyuV_C.js → CodePage-CobZpY2J.js} +1 -1
  10. package/client/dist/assets/{DesktopAnalyticsPage-Bhi54bXQ.js → DesktopAnalyticsPage-B75I8Hyl.js} +1 -1
  11. package/client/dist/assets/{DocsDialog-Dj6mt4ga.js → DocsDialog-AEU1MV8y.js} +1 -1
  12. package/client/dist/assets/{DocsPage-24yWglNI.js → DocsPage-Dn2j2nSl.js} +1 -1
  13. package/client/dist/assets/{ExportDropdown-ophapHrT.js → ExportDropdown-Xvbax18F.js} +1 -1
  14. package/client/dist/assets/InteractiveJobComposer-COH-v0lE.js +19 -0
  15. package/client/dist/assets/JobDetailModal-CyFzkOM-.js +1 -0
  16. package/client/dist/assets/{JobDetailPage-BcajZyuu.js → JobDetailPage-CAILeuTY.js} +1 -1
  17. package/client/dist/assets/{JobsPage-B9nTZw6e.js → JobsPage-CzOmMhkp.js} +1 -1
  18. package/client/dist/assets/{LoopBuilderPage-Oc48iOFW.js → LoopBuilderPage-_Snk4Cv7.js} +1 -1
  19. package/client/dist/assets/{LoopPreviewModal-ae0Fr6SU.js → LoopPreviewModal-C2yekwCg.js} +1 -1
  20. package/client/dist/assets/{LoopsPage-CUEqzUBI.js → LoopsPage-C4GXI81g.js} +1 -1
  21. package/client/dist/assets/{MinimizedChatsContext-Deg39peL.js → MinimizedChatsContext-0mMk-eoH.js} +1 -1
  22. package/client/dist/assets/{PluginsPage-C1xtARIx.js → PluginsPage-pPmHG9nI.js} +1 -1
  23. package/client/dist/assets/{ProjectSettingsDialog-JZzrXFBN.js → ProjectSettingsDialog-Bcsq5o0U.js} +1 -1
  24. package/client/dist/assets/{RepositoryDeliveries-CSDsiVUz.js → RepositoryDeliveries-DJTjRht9.js} +1 -1
  25. package/client/dist/assets/{RepositoryScopeSelector-D-RCaknl.js → RepositoryScopeSelector-CvOfpd2g.js} +1 -1
  26. package/client/dist/assets/{ReviewPacketPage-x5EfGTiL.js → ReviewPacketPage-BPG3cVpM.js} +1 -1
  27. package/client/dist/assets/{TemplatePreviewModal-BSyuZxGq.js → TemplatePreviewModal-Dx_3cTQN.js} +1 -1
  28. package/client/dist/assets/{TicketDetailModalContext-DqyF0so-.js → TicketDetailModalContext-0sPSvSmT.js} +3 -3
  29. package/client/dist/assets/{Trans-SnMX4MhW.js → Trans-BrG0crRZ.js} +1 -1
  30. package/client/dist/assets/{button-DCBqEaZl.js → button-Ccc9Dc-D.js} +1 -1
  31. package/client/dist/assets/dialog-xXB2q5HJ.js +45 -0
  32. package/client/dist/assets/{formatDistanceToNow-DSj5DprF.js → formatDistanceToNow-CEH5-6MR.js} +1 -1
  33. package/client/dist/assets/{getTimezoneOffsetInMilliseconds-YhD8rIEs.js → getTimezoneOffsetInMilliseconds-C4NbLIYo.js} +1 -1
  34. package/client/dist/assets/index-BIEV2BG8.js +76 -0
  35. package/client/dist/assets/index-Bfj8HvX1.css +2 -0
  36. package/client/dist/assets/{jira-api-CSCqGr-Q.js → jira-api-BuMzFZx1.js} +1 -1
  37. package/client/dist/assets/{jobs-BS6RTurf.js → jobs-5PQJbdOf.js} +1 -1
  38. package/client/dist/assets/{jobs-CezU69AE.js → jobs-B2B08Oy9.js} +1 -1
  39. package/client/dist/assets/{jobs-ClFJae0s.js → jobs-BJZtBbwb.js} +1 -1
  40. package/client/dist/assets/{jobs-BTT0Bsks.js → jobs-BlWEsQb7.js} +1 -1
  41. package/client/dist/assets/{jobs-DJSFIFVy.js → jobs-ConfD8xD.js} +1 -1
  42. package/client/dist/assets/jobs-DMPU64ms.js +1 -0
  43. package/client/dist/assets/{jobs-DhgGr8vm.js → jobs-DojASiTp.js} +1 -1
  44. package/client/dist/assets/{jobs-B8rrzfyZ.js → jobs-kVHkNpB-.js} +1 -1
  45. package/client/dist/assets/{project-repositories-DYhTvwQ1.js → project-repositories-CAW6v3SO.js} +1 -1
  46. package/client/dist/assets/{spending-BqbdPm_4.js → spending-DI73ic0T.js} +1 -1
  47. package/client/dist/assets/{useDesktop-RSMTyy7V.js → useDesktop-DA-nfO01.js} +1 -1
  48. package/client/dist/assets/{useSharedWebSocket-BOdS5_Iz.js → useSharedWebSocket-D-czsPTl.js} +2 -2
  49. package/client/dist/index.html +17 -17
  50. package/docs/README.md +6 -1
  51. package/docs/agents/README.md +13 -0
  52. package/docs/agents/mcp.md +103 -0
  53. package/docs/guide/de/integrations/5-mcp-server.md +2 -0
  54. package/docs/guide/en/integrations/5-mcp-server.md +3 -30
  55. package/docs/guide/en/pipeline/3-batch-implement-and-multi-feature.md +40 -0
  56. package/docs/guide/en/settings/3-pipeline-telemetry-and-diagnostics.md +9 -0
  57. package/docs/guide/es/integrations/5-mcp-server.md +3 -30
  58. package/docs/guide/es/pipeline/3-batch-implement-and-multi-feature.md +30 -0
  59. package/docs/guide/es/settings/3-pipeline-telemetry-and-diagnostics.md +10 -0
  60. package/docs/guide/fr/integrations/5-mcp-server.md +2 -0
  61. package/docs/guide/it/integrations/5-mcp-server.md +2 -0
  62. package/docs/guide/ja/integrations/5-mcp-server.md +2 -0
  63. package/docs/guide/pt/integrations/5-mcp-server.md +2 -0
  64. package/docs/guide/zh/integrations/5-mcp-server.md +2 -0
  65. package/docs/internals/core-runtime-updates.md +7 -0
  66. package/docs/mcp.md +18 -48
  67. package/package.json +1 -1
  68. package/server/dist/core-completion.js +58 -0
  69. package/server/dist/core-execution.js +2 -1
  70. package/server/dist/loop-executors.js +15 -2
  71. package/server/dist/loop-factory.js +24 -5
  72. package/server/dist/loop-graph.js +2 -1
  73. package/server/dist/loop-run-manager.js +30 -1
  74. package/server/dist/loop-templates.js +14 -33
  75. package/server/dist/rails-router.js +2 -2
  76. package/server/dist/workspace-manager.js +54 -3
  77. package/client/dist/assets/InteractiveJobComposer-C1ucmxQh.js +0 -19
  78. package/client/dist/assets/JobDetailModal-DNWmgVHD.js +0 -1
  79. package/client/dist/assets/dialog-SRw01_QU.js +0 -45
  80. package/client/dist/assets/index-DwAmL7m5.css +0 -2
  81. package/client/dist/assets/index-EzrkUb8B.js +0 -76
  82. package/client/dist/assets/jobs-DzMjUcaN.js +0 -1
@@ -1,19 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{n as t,t as n}from"./jsx-runtime-zu2_FqZY.js";import{J as r,X as i,z as a}from"./TicketDetailModalContext-DqyF0so-.js";import{h as o,l as s,r as c}from"./useSharedWebSocket-BOdS5_Iz.js";import{n as l,t as u}from"./createLucideIcon-Bjbbp_KS.js";import{a as d,r as f,s as p}from"./useDesktop-RSMTyy7V.js";import{d as m,u as h}from"./MinimizedChatsContext-Deg39peL.js";import{t as g}from"./brain-DI9lHkKY.js";import{n as _}from"./file-text-BcLCfcWZ.js";import{t as v}from"./circle-x-CMYsN4ZH.js";import{t as y}from"./git-branch-BRM0F5GN.js";import{t as b}from"./loader-circle-DcygOQpC.js";import{n as x,t as S}from"./square-Ci-PFcFe.js";import{t as C}from"./search-Cq_gE3Ik.js";import{t as w}from"./triangle-alert-H9T4jAmh.js";import{t as T}from"./x-CBMI9ejn.js";import{t as E}from"./utils-BC4DHlz2.js";import{n as D,t as O}from"./lib-CGdyxIWg.js";import{t as k}from"./button-DCBqEaZl.js";import{Et as A,F as j,G as M,J as ee,K as N,R as P,V as F,bt as te,dt as ne,f as I,jt as L,kt as R,lt as re,p as z,q as B,rt as ie,ut as ae,z as V}from"./index-EzrkUb8B.js";import{t as oe}from"./lib-C7Mhm-gT.js";var se=u(`chevrons-down-up`,[[`path`,{d:`m7 20 5-5 5 5`,key:`13a0gw`}],[`path`,{d:`m7 4 5 5 5-5`,key:`1kwcof`}]]),ce=u(`chevrons-up-down`,[[`path`,{d:`m7 15 5 5 5-5`,key:`1hf1tw`}],[`path`,{d:`m7 9 5-5 5 5`,key:`sgt6xg`}]]),le=u(`circle-dot`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}]]),ue=u(`clock`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]),de=u(`hourglass`,[[`path`,{d:`M5 22h14`,key:`ehvnwv`}],[`path`,{d:`M5 2h14`,key:`pdyrp9`}],[`path`,{d:`M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22`,key:`1d314k`}],[`path`,{d:`M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2`,key:`1vvvr6`}]]),H=n();function fe({phases:e,phaseDefinitions:t}){return t.length===0?null:(0,H.jsx)(`div`,{className:`flex items-center`,children:t.map((n,r)=>{let i=e[n.key]??`idle`,a=r<t.length-1?e[t[r+1].key]??`idle`:null;return(0,H.jsxs)(`div`,{className:`flex items-center`,children:[(0,H.jsxs)(P,{children:[(0,H.jsx)(F,{asChild:!0,children:(0,H.jsxs)(`div`,{className:`flex flex-col items-center gap-1.5 cursor-default px-4`,children:[(0,H.jsx)(pe,{state:i}),(0,H.jsx)(`span`,{className:E(`text-xs font-medium transition-colors`,i===`running`?`text-blue-400 aurora-light:text-accent-info`:i===`done`?`text-emerald-400 aurora-light:text-accent-success`:i===`error`?`text-red-400 aurora-light:text-destructive`:`text-muted-foreground/40`),children:n.label})]})}),(0,H.jsxs)(V,{side:`bottom`,className:`max-w-[200px]`,children:[(0,H.jsx)(`p`,{className:`font-medium`,children:n.label}),(0,H.jsx)(`p`,{className:`text-muted-foreground mt-0.5`,children:n.description})]})]}),a!==null&&(0,H.jsx)(`div`,{className:E(`h-px w-12 -mt-5 shrink-0 transition-all duration-300`,a===`done`||i===`done`?`bg-emerald-500/30 aurora-light:bg-accent-success/40`:a===`running`?`bg-blue-400/40 aurora-light:bg-accent-info/40`:`bg-border/30`)})]},n.key)})})}function pe({state:e}){return(0,H.jsxs)(`div`,{className:E(`flex items-center justify-center w-10 h-10 rounded-full transition-all duration-300`,e===`running`?`bg-blue-500/10 aurora-light:bg-accent-info/10 ring-1 ring-blue-400/30 aurora-light:ring-accent-info/30 animate-pulse`:e===`done`?`bg-emerald-500/10 aurora-light:bg-accent-success/10`:e===`error`?`bg-red-500/10 aurora-light:bg-destructive/10`:`bg-muted/20`),children:[e===`running`&&(0,H.jsx)(b,{className:`w-6 h-6 text-blue-400 aurora-light:text-accent-info animate-spin`}),e===`done`&&(0,H.jsx)(L,{className:`w-6 h-6 text-emerald-400 aurora-light:text-accent-success`}),e===`error`&&(0,H.jsx)(v,{className:`w-6 h-6 text-red-400 aurora-light:text-destructive`}),e===`idle`&&(0,H.jsx)(r,{className:`w-6 h-6 text-muted-foreground/20`})]})}var U=e(t(),1);function me(e){let t=e.trimStart();return!!(/^#{1,6}\s/.test(t)||/^[-*+]\s/.test(t)||/^\d+\.\s/.test(t)||/^\|.+\|/.test(t)||t.startsWith("```")||t.startsWith(`> `)||/\*\*[^*]+\*\*/.test(e)||/`[^`]+`/.test(e)||/\[.+\]\(.+\)/.test(e)||/^(-{3,}|_{3,}|\*{3,})$/.test(t)||/^- \[[ x]\]\s/.test(t))}var he=new Set;function ge({ticketId:e,onOpen:t,children:n}){let{t:r}=l(`agent`),i=r(`refs.openTicket`,{id:e});return(0,H.jsx)(`button`,{type:`button`,"data-testid":`log-ticket-ref`,onClick:n=>{n.stopPropagation(),t(e)},title:i,"aria-label":i,className:`inline cursor-pointer p-0 align-baseline text-accent-primary/90 underline decoration-accent-primary/50 decoration-dotted underline-offset-2 transition-colors hover:text-accent-primary hover:decoration-solid`,children:n})}function _e(e){if(!e.includes(`#`))return null;let t=B(e,he);return t.some(e=>e.kind===`ticket`)?t:null}function ve(e,t){let n=_e(e);return n?n.map((e,n)=>e.kind===`ticket`?(0,H.jsx)(ge,{ticketId:e.ticketId,onOpen:t,children:e.label},n):(0,H.jsx)(U.Fragment,{children:e.kind===`text`?e.text:e.label},n)):e}var ye=new Set([`code`,`inlineCode`,`link`,`linkReference`,`image`,`imageReference`,`definition`,`html`]);function be(e){return e.kind===`ticket`?{type:`link`,url:M({kind:`ticket`,ticketId:e.ticketId}),children:[{type:`text`,value:e.label}]}:{type:`text`,value:e.kind===`text`?e.text:e.label}}function xe(e){let t=e.children;if(t)for(let e=t.length-1;e>=0;e--){let n=t[e];if(!ye.has(n.type))if(n.type===`text`&&typeof n.value==`string`){let r=B(n.value,he);r.some(e=>e.kind===`ticket`)&&t.splice(e,1,...r.map(be))}else xe(n)}}function Se(){return e=>xe(e)}function Ce(e){let{activeProjectId:t}=f(),{openRef:n}=ee(),r=e??t??void 0;return(0,U.useMemo)(()=>r?e=>{n(r,{kind:`ticket`,ticketId:e})}:void 0,[r,n])}function we(e,t){let n=`${e.id??t}`,r=e.timestamp;if(e.event_type===`log`)try{let t=JSON.parse(e.payload).line??``;return t.trim()?t.startsWith(`▸`)||t.match(/^(architect|developer|reviewer|ship|analyst)\s*:/i)?{id:n,content:t,type:`phase`,timestamp:r}:e.source===`stderr`?{id:n,content:t,type:`stderr`,timestamp:r}:me(t)?{id:n,content:t,type:`assistant`,timestamp:r}:{id:n,content:t,type:`plain`,timestamp:r}:null}catch{return null}if(e.event_type!==`log`&&e.event_type!==`result`)return null;if(e.event_type===`result`)try{let t=JSON.parse(e.payload),i=[];return t.duration_ms&&i.push(`${(t.duration_ms/1e3).toFixed(1)}s`),t.total_cost_usd&&i.push(`$${t.total_cost_usd.toFixed(4)}`),t.num_turns&&i.push(o.t(`jobs:logViewer.turns`,{count:t.num_turns})),{id:n,content:`▸ ${o.t(`jobs:logViewer.completed`)}${i.length?` — ${i.join(` · `)}`:``}`,type:`result`,timestamp:r}}catch{return null}return null}function Te(e){let t=`none`,n=[];for(let r of e){let e=r.type;if(e!==`plain`&&e!==`log`){t=`none`,n.push(r);continue}let i=r.content;i.startsWith(`--- `)?(t=`saw_minus`,n.push({...r,type:`diff-meta`})):t===`saw_minus`&&i.startsWith(`+++ `)?(t=`active`,n.push({...r,type:`diff-meta`})):t===`active`&&i.startsWith(`@@ `)?n.push({...r,type:`diff-hunk`}):t===`active`&&i.startsWith(`+`)&&!i.startsWith(`+++`)?n.push({...r,type:`diff-add`}):t===`active`&&i.startsWith(`-`)&&!i.startsWith(`---`)?n.push({...r,type:`diff-remove`}):(t===`active`&&(i.startsWith(` `)||i===``)||(t=`none`),n.push(r))}return n}function Ee(e){let t=[];for(let n of e){let e=t.length>0?t[t.length-1]:null;n.type===`assistant`&&e?.type===`assistant`?e.content+=`
2
- `+n.content:t.push({...n})}return t}function De(e){let t=[{key:`__preamble__`,header:null,lines:[]}];for(let n of e)n.type===`phase`?t.push({key:n.id,header:n,lines:[]}):t[t.length-1].lines.push(n);return t.filter(e=>e.header!==null||e.lines.length>0)}function Oe({events:e,isLoading:t,projectId:n}){let{t:r,i18n:i}=l(`jobs`),[a,o]=(0,U.useState)(``),[s,c]=(0,U.useState)(!0),[u,d]=(0,U.useState)(new Set),f=(0,U.useRef)(null),m=(0,U.useRef)(null),g=Ce(n),{processedLines:_,groups:v,totalLines:y}=(0,U.useMemo)(()=>{let t=Te(Ee(e.map((e,t)=>we(e,t)).filter(e=>e!==null)));return{processedLines:t,groups:De(t),totalLines:t.length}},[e,i.language]),b=(0,U.useMemo)(()=>{if(!a)return y;let e=a.toLowerCase();return _.filter(t=>t.content.toLowerCase().includes(e)).length},[a,_,y]),x=(0,U.useCallback)(()=>{let e=m.current;e&&(e.scrollTop=e.scrollHeight)},[]);(0,U.useEffect)(()=>{s&&x()},[e.length,s,x]);function S(){let e=m.current;if(!e)return;let t=e.scrollHeight-e.scrollTop-e.clientHeight<50;c(t)}function w(e){d(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}return t?(0,H.jsx)(`div`,{className:`flex-1 flex items-center justify-center`,children:(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:r(`logViewer.loading`)})}):y===0?(0,H.jsx)(`div`,{className:`flex-1 flex items-center justify-center`,children:(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:r(`logViewer.empty`)})}):(0,H.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,H.jsxs)(`div`,{className:`px-4 py-2 border-b border-border flex items-center gap-2`,children:[(0,H.jsxs)(`div`,{className:`relative flex-1 max-w-xs`,children:[(0,H.jsx)(C,{className:`absolute left-2.5 top-1/2 -translate-y-1/2 w-3 h-3 text-muted-foreground`}),(0,H.jsx)(j,{placeholder:r(`logViewer.filterPlaceholder`),value:a,onChange:e=>o(e.target.value),className:`pl-7 h-7`})]}),(0,H.jsx)(k,{variant:`ghost`,size:`sm`,className:`h-7 px-2 text-muted-foreground/50 hover:text-foreground`,onClick:()=>{let e=_.map(e=>e.content).join(`
3
- `);navigator.clipboard.writeText(e).then(()=>{p.success(r(`logViewer.copySuccess`))}).catch(()=>{p.error(r(`logViewer.copyFailed`))})},children:(0,H.jsx)(R,{className:`w-3.5 h-3.5`})}),(0,H.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:r(`logViewer.lineCount`,{filtered:b,total:y})})]}),(0,H.jsxs)(`div`,{ref:m,className:`flex-1 overflow-y-auto p-2 text-xs relative`,onScroll:S,children:[v.map(e=>(0,H.jsx)(ke,{group:e,filter:a,collapsed:u.has(e.key),onToggle:()=>w(e.key),onOpenTicket:g},e.key)),(0,H.jsx)(`div`,{ref:f})]}),!s&&(0,H.jsxs)(k,{size:`sm`,variant:`secondary`,onClick:()=>{c(!0),x()},className:`absolute bottom-16 right-6 h-7 gap-1 shadow-lg`,children:[(0,H.jsx)(h,{className:`w-3 h-3`}),r(`logViewer.jumpToBottom`)]})]})}var ke=(0,U.memo)(function({group:e,filter:t,collapsed:n,onToggle:r,onOpenTicket:i}){let{t:a}=l(`jobs`),o=t?e.lines.filter(e=>e.content.toLowerCase().includes(t.toLowerCase())):e.lines;if(e.header===null)return o.length===0?null:(0,H.jsx)(`div`,{children:o.map((e,t)=>(0,H.jsx)(W,{line:e,even:t%2==0,onOpenTicket:i},e.id))});let s=e.header.content;return(0,H.jsxs)(`div`,{className:`mt-3 rounded-md overflow-hidden border border-border/20`,children:[(0,H.jsxs)(`button`,{type:`button`,onClick:r,className:E(`flex items-center gap-2 w-full text-left px-3 py-2`,`bg-primary/5 border-b border-primary/20`,`hover:bg-primary/10 transition-colors duration-150 cursor-pointer`),children:[(0,H.jsx)(_,{className:E(`w-3 h-3 text-primary/60 shrink-0 transition-transform duration-150`,!n&&`rotate-90`)}),(0,H.jsx)(`span`,{className:`flex-1 text-[12px] font-semibold text-foreground leading-none`,children:s}),e.header.timestamp&&(0,H.jsx)(`span`,{className:`text-[10px] text-muted-foreground/40 font-mono tabular-nums shrink-0`,children:new Date(e.header.timestamp).toLocaleTimeString(`en`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1})}),(0,H.jsx)(`span`,{className:`text-[10px] text-muted-foreground/40 shrink-0`,children:a(`logViewer.phaseLines`,{count:e.lines.length})})]}),!n&&(0,H.jsx)(`div`,{className:`bg-muted/5`,children:o.length===0?(0,H.jsx)(`p`,{className:`px-4 py-2 text-[10px] text-muted-foreground/40 italic`,children:a(t?`logViewer.noMatchingLines`:`logViewer.noOutput`)}):o.map((e,t)=>(0,H.jsx)(W,{line:e,even:t%2==0,onOpenTicket:i},e.id))})]})}),Ae=[oe],je=[O],Me=[O,Se],W=(0,U.memo)(function({line:e,even:t,onOpenTicket:n}){let r=e.type===`assistant`,i=e.type===`diff-add`,a=e.type===`diff-remove`,o=e.type===`diff-meta`,s=e.type===`diff-hunk`,c=i||a||o||s,l=n!=null&&(e.type===`plain`||e.type===`log`),u=(0,U.useMemo)(()=>l&&n?ve(e.content,n):e.content,[l,n,e.content]),d=r&&n?Me:je,f=(0,U.useMemo)(()=>n?{a:({href:e,children:t})=>{let r=N(e);return r?.kind===`ticket`?(0,H.jsx)(ge,{ticketId:r.ticketId,onOpen:n,children:t}):(0,H.jsx)(`a`,{href:e,children:t})}}:void 0,[n]);return(0,H.jsxs)(`div`,{className:E(`flex items-start gap-2 group px-2 py-0.5 rounded-sm`,!c&&(t?`bg-muted/20`:`bg-transparent`),e.type===`result`&&`bg-emerald-500/5 aurora-light:bg-accent-success/10 border-l-2 border-emerald-500/40 aurora-light:border-accent-success/40 mt-2 py-2`,i&&`bg-emerald-500/8 aurora-light:bg-accent-success/10 border-l-2 border-emerald-500/50 aurora-light:border-accent-success/50`,a&&`bg-red-500/8 aurora-light:bg-destructive/10 border-l-2 border-red-500/50 aurora-light:border-destructive/50`,o&&`bg-accent-primary/5 border-l-2 border-accent-primary/30`,s&&`bg-accent-info/5 border-l-2 border-accent-info/30`),children:[e.timestamp&&(0,H.jsx)(`span`,{className:`text-[10px] text-muted-foreground/40 shrink-0 mt-0.5 w-[52px] font-mono tabular-nums`,children:new Date(e.timestamp).toLocaleTimeString(`en`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1})}),r?(0,H.jsx)(`div`,{className:`flex-1 min-w-0 prose prose-invert prose-xs max-w-none
4
- prose-p:my-1 prose-p:leading-relaxed
5
- prose-headings:mt-2 prose-headings:mb-1 prose-headings:text-sm prose-headings:font-semibold
6
- prose-ul:my-1 prose-ol:my-1 prose-li:my-0
7
- prose-code:text-cyan-300 prose-code:text-[11px] prose-code:bg-muted/40 prose-code:px-1 prose-code:py-0.5 prose-code:rounded
8
- prose-pre:my-1 prose-pre:bg-muted/30 prose-pre:rounded-md prose-pre:p-2 prose-pre:text-[11px]
9
- prose-strong:text-foreground prose-em:text-foreground/70
10
- prose-a:text-blue-400 prose-a:no-underline hover:prose-a:underline
11
- prose-table:my-2 prose-table:text-[11px]
12
- prose-thead:border-border prose-thead:bg-muted/30
13
- prose-th:px-3 prose-th:py-1.5 prose-th:text-left prose-th:font-semibold prose-th:text-foreground/90
14
- prose-td:px-3 prose-td:py-1.5 prose-td:border-border
15
- prose-tr:border-border
16
- text-foreground/80`,children:(0,H.jsx)(D,{remarkPlugins:d,rehypePlugins:Ae,components:f,children:e.content})}):(0,H.jsx)(`span`,{className:E(`flex-1 break-all leading-relaxed whitespace-pre-wrap font-mono`,e.type===`tool-use`&&`text-cyan-400/80 aurora-light:text-accent-info text-[11px]`,e.type===`stderr`&&`text-orange-400 aurora-light:text-accent-warning`,e.type===`result`&&`text-emerald-400 aurora-light:text-accent-success font-medium`,e.type===`log`&&`text-foreground/60`,e.type===`plain`&&`text-foreground/70`,e.type===`tool-result`&&`text-muted-foreground/50`,i&&`text-emerald-400 aurora-light:text-accent-success`,a&&`text-red-400 aurora-light:text-destructive`,o&&`text-accent-primary/80`,s&&`text-accent-info/80`),children:u})]})});function G(e){try{let t=JSON.parse(e);if(t&&typeof t==`object`&&!Array.isArray(t))return t}catch{}return null}var Ne=/^\s*━+\s*Step\s+\d+\s*·/,Pe=/\s*\(iteration\s+\d+\)\s*$/i;function K(e){return e.replace(/^[\s\uFE0F\p{Extended_Pictographic}]+/u,``).trim()||e.trim()}function q(e){let t=K(e.title);return e.iteration==null?t:t.replace(Pe,``)}function Fe(e){return e.meta.nodeId??`${e.meta.kind}::${K(e.meta.title).replace(Pe,``)}`}function Ie(e){let t=null,n=0,r=[[]],i=[];for(let a=0;a<e.length;a++){let o=e[a];if(o.event_type===`loop_graph`){let e=G(o.payload);e&&e.graph&&typeof e.graph==`object`&&!Array.isArray(e.graph)&&(t={graph:e.graph,loopId:typeof e.loopId==`string`?e.loopId:void 0,loopName:typeof e.loopName==`string`?e.loopName:void 0,provider:typeof e.provider==`string`?e.provider:void 0,model:typeof e.model==`string`?e.model:void 0,iterationLimit:typeof e.iterationLimit==`number`?e.iterationLimit:void 0});continue}if(o.event_type===`loop_step`){let e=G(o.payload);if(!e||typeof e.index!=`number`)continue;let t=typeof e.iteration==`number`?e.iteration:null;t!=null&&t>n&&(n=t),i.push({meta:{index:e.index,kind:typeof e.kind==`string`?e.kind:`ai-step`,title:typeof e.title==`string`?e.title:``,nodeId:typeof e.nodeId==`string`?e.nodeId:null,iteration:t,template:typeof e.template==`string`&&e.template?e.template:void 0,command:typeof e.command==`string`&&e.command?e.command:void 0},end:null,lastActivity:null}),r.push([]);continue}if(o.event_type===`loop_step_end`){let e=G(o.payload);if(!e||typeof e.index!=`number`)continue;for(let t=i.length-1;t>=0;t--)if(i[t].meta.index===e.index){i[t].end={index:e.index,nodeId:typeof e.nodeId==`string`?e.nodeId:null,status:e.status===`stalled`?`stalled`:e.status===`failed`?`failed`:`ok`,exitCode:typeof e.exitCode==`number`?e.exitCode:null,durationMs:typeof e.durationMs==`number`?e.durationMs:null,decision:e.decision===`continue`||e.decision===`stop`?e.decision:void 0,...e.reason===`idle_timeout`||e.reason===`provider_limit`?{reason:e.reason}:{},...typeof e.idleMs==`number`?{idleMs:e.idleMs}:{}};break}continue}let s=i.length>0,c=we(o,a);if(c&&!(s&&Ne.test(c.content))&&r[r.length-1].push(c),s){let e=z(o);e.step&&e.actionKey&&(i[i.length-1].lastActivity={actionKey:e.actionKey,actionArg:e.actionArg})}}let a=e=>Te(Ee(e)),o=a(r[0]),s=i.map((e,t)=>({key:`step-${t}-${e.meta.index}`,meta:e.meta,lines:a(r[t+1]),end:e.end,lastActivity:e.lastActivity})),c=o.length+s.reduce((e,t)=>e+t.lines.length,0);return{graphMeta:t,setup:o,segments:s,maxIteration:n,totalLines:c}}function Le(e,t){return e.end?e.end.status:t.isLast?t.jobSettled?`interrupted`:`running`:`unknown`}function Re(e){return e===`continue`?0:e===`stop`?2:1}function ze(e){let t=new Map(e.nodes.map(e=>[e.id,e])),n=new Set,r=[],i=a=>{if(n.has(a))return;let o=t.get(a);if(!o)return;n.add(a),r.push(o);let s=e.edges.filter(e=>e.source===a).slice().sort((e,t)=>Re(e.branch)-Re(t.branch));for(let e of s)i(e.target)},a=e.nodes.find(e=>e.type===`start`);a&&i(a.id);for(let t of e.nodes)i(t.id);return r}function J(e){let t=e.data?.label;return typeof t==`string`&&t.trim()?t.trim():null}function Be(e,t){let n=e.segments.length-1,r=new Map,i=new Map;e.segments.forEach((e,t)=>{let n=Fe(e);r.set(n,{seg:e,idx:t}),e.meta.kind===`decider`&&e.end?.decision&&i.set(n,e.end.decision)});let a=e=>{let r=Le(e.seg,{isLast:e.idx===n,jobSettled:t.jobSettled});return r===`unknown`?`ok`:r===`stalled`?`failed`:r};if(e.graphMeta)return ze(e.graphMeta.graph).map(e=>{if(e.type===`start`)return{key:e.id,kind:`start`,label:J(e),state:`ok`,latestSegmentKey:null};if(e.type===`end`)return{key:e.id,kind:`end`,label:J(e),state:t.jobSettled?t.jobFailed?`failed`:`ok`:`pending`,latestSegmentKey:null};let n=r.get(e.id);return n?{key:e.id,kind:e.type,label:J(e)??q(n.seg.meta),state:a(n),decision:e.type===`decider`?i.get(e.id):void 0,latestSegmentKey:n.seg.key}:{key:e.id,kind:e.type,label:J(e),state:`pending`,latestSegmentKey:null}});let o=[],s=new Map;return e.segments.forEach((e,t)=>{let n=Fe(e),r={seg:e,idx:t},c=s.get(n),l=e.meta.kind===`decider`?i.get(n):void 0;if(c!=null){let t=o[c];t.state=a(r),t.decision=l,t.latestSegmentKey=e.key}else s.set(n,o.length),o.push({key:n,kind:e.meta.kind,label:q(e.meta)||null,state:a(r),decision:l,latestSegmentKey:e.key})}),o}function Ve(e){if(!Number.isFinite(e)||e<0)return`—`;if(e<1e3)return`${Math.round(e)}ms`;let t=e/1e3;if(t<60)return`${t.toFixed(1)}s`;let n=Math.floor(t/60),r=Math.round(t%60);return n<60?`${n}m ${r}s`:`${Math.floor(n/60)}h ${n%60}m`}var He={start:x,"ai-step":g,shell:ie,decider:y,condition:y,end:A},Ue=S,We={start:`text-accent-success`,"ai-step":`text-accent-primary`,shell:`text-accent-warning`,decider:`text-accent-highlight`,condition:`text-accent-info`,end:`text-accent-secondary`},Ge={start:`border-accent-success/60`,"ai-step":`border-accent-primary/60`,shell:`border-accent-warning/60`,decider:`border-accent-highlight/60`,condition:`border-accent-info/60`,end:`border-accent-secondary/60`};function Ke(e){return He[e]??Ue}function qe({chips:e,iteration:t,onChipClick:n,variant:r}){let{t:o}=l(`jobs`);return e.length===0&&!t?null:(0,H.jsxs)(`div`,{"data-testid":`loop-overview-strip`,role:`list`,"aria-label":o(`loopExplorer.stepMapAria`),className:E(`flex items-center gap-1 overflow-x-auto border-b border-border/30 bg-surface/20`,r===`glass`?`px-3 py-1.5`:`px-4 py-2`),children:[e.map((e,t)=>{let r=Ke(e.kind),s=We[e.kind]??`text-foreground`,c=Ge[e.kind]??`border-border/40`,l=e.label??o(`loops:builder.nodes.${e.kind}`,{defaultValue:e.kind}),u=e.latestSegmentKey!=null;return(0,H.jsxs)(U.Fragment,{children:[t>0&&(0,H.jsx)(_,{className:`w-3 h-3 text-muted-foreground/30 shrink-0`}),(0,H.jsxs)(`button`,{type:`button`,role:`listitem`,"data-testid":`loop-node-chip`,"data-state":e.state,"data-kind":e.kind,"data-decision":e.decision,"aria-label":`${l} — ${e.state}`,disabled:!u,onClick:()=>e.latestSegmentKey&&n(e.latestSegmentKey),className:E(`relative flex items-center gap-1.5 shrink-0 rounded-full border bg-surface/40 px-2.5 py-1 text-[11px] transition-colors`,c,e.state===`pending`&&`opacity-45 border-border/40`,e.state===`interrupted`&&`border-dashed border-accent-warning/50`,u?`cursor-pointer hover:bg-surface/70`:`cursor-default`),children:[e.state===`running`&&(0,H.jsx)(`span`,{"aria-hidden":!0,className:`absolute -inset-px rounded-full ring-2 ring-accent-primary/50 motion-safe:animate-pulse pointer-events-none`}),(0,H.jsx)(r,{className:E(`w-3 h-3 shrink-0`,s)}),(0,H.jsx)(`span`,{className:E(`max-w-[120px] truncate font-medium text-foreground/90`,e.state===`running`&&`title-shimmer`),children:l}),e.state===`ok`&&(0,H.jsx)(m,{className:`w-3 h-3 text-accent-success shrink-0`}),e.state===`failed`&&(0,H.jsx)(T,{className:`w-3 h-3 text-destructive shrink-0`}),e.decision===`continue`&&(0,H.jsx)(a,{className:`w-3 h-3 text-accent-highlight shrink-0`}),e.decision===`stop`&&(0,H.jsx)(i,{className:`w-3 h-3 text-accent-success shrink-0`})]})]},e.key)}),t&&(0,H.jsxs)(`span`,{"data-testid":`loop-iteration-chip`,className:`ml-auto flex items-center gap-1.5 shrink-0 rounded-full border border-accent-highlight/40 bg-accent-highlight/10 px-2.5 py-1 text-[10px] font-medium text-accent-highlight tabular-nums`,children:[(0,H.jsx)(ne,{className:`w-3 h-3`}),t.limit==null?o(`loopExplorer.iterationBadge`,{count:t.current}):o(`loopExplorer.iteration`,{current:t.current,limit:t.limit})]})]})}var Je=(0,U.memo)(qe);function Ye({className:e}){return(0,H.jsxs)(`span`,{className:E(`relative flex h-2 w-2 shrink-0`,e),children:[(0,H.jsx)(`span`,{className:`motion-safe:animate-ping absolute inline-flex h-full w-full rounded-full bg-accent-primary opacity-60`}),(0,H.jsx)(`span`,{className:`relative inline-flex rounded-full h-2 w-2 bg-accent-primary`})]})}function Xe(e,t){if(!t)return e;let n=t.toLowerCase();return e.filter(e=>e.content.toLowerCase().includes(n))}function Ze(e,t,n,r){return e.length===0?(0,H.jsx)(`p`,{className:`px-4 py-2 text-[10px] text-muted-foreground/40 italic`,children:n(t?`logViewer.noMatchingLines`:`logViewer.noOutput`)}):e.map((e,t)=>(0,H.jsx)(W,{line:e,even:t%2==0,onOpenTicket:r},e.id))}function Qe({label:e,value:t,copyLabel:n}){let[r,i]=(0,U.useState)(!1),a=async()=>{try{await navigator.clipboard.writeText(t),i(!0),window.setTimeout(()=>i(!1),1500)}catch{}};return(0,H.jsxs)(`div`,{className:`min-w-0`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,H.jsx)(`span`,{className:`text-[9px] font-semibold uppercase tracking-wider text-muted-foreground/50`,children:e}),(0,H.jsx)(`button`,{type:`button`,onClick:()=>void a(),"aria-label":`${n} — ${e}`,title:n,className:`p-0.5 text-muted-foreground/40 hover:text-foreground transition-colors cursor-pointer`,children:r?(0,H.jsx)(m,{className:`w-2.5 h-2.5 text-accent-success`}):(0,H.jsx)(R,{className:`w-2.5 h-2.5`})})]}),(0,H.jsx)(`pre`,{className:`mt-0.5 text-[10px] font-mono leading-relaxed text-foreground/75 whitespace-pre-wrap break-words`,children:t})]})}function $e({segment:e,status:t,collapsed:n,filter:r,onToggle:i,onCopy:a,setRef:o,onOpenTicket:s}){let{t:c}=l(`jobs`),{meta:u,lines:d,end:f,lastActivity:p}=e,h=Ke(u.kind),g=We[u.kind]??`text-foreground`,v=Xe(d,r),y=t===`running`,b=!!(u.template||u.command),[x,S]=(0,U.useState)(!1);return(0,H.jsxs)(`div`,{ref:t=>o(e.key,t),"data-testid":`loop-step-section`,"data-status":t,"data-step-index":u.index,className:E(`mt-3 rounded-md overflow-hidden border animate-in fade-in duration-200`,t===`running`&&`border-accent-primary/40`,t===`failed`&&`border-destructive/30`,t===`stalled`&&`border-dashed border-destructive/40`,t===`interrupted`&&`border-dashed border-accent-warning/40`,(t===`ok`||t===`unknown`)&&`border-border/20`),children:[(0,H.jsxs)(`div`,{className:E(`flex items-stretch bg-primary/5 border-b`,t===`failed`||t===`stalled`?`border-destructive/20`:`border-primary/20`),children:[(0,H.jsxs)(`button`,{type:`button`,onClick:()=>i(e.key),className:`flex items-center gap-2 flex-1 min-w-0 text-left px-3 py-2 hover:bg-primary/10 transition-colors duration-150 cursor-pointer`,children:[(0,H.jsx)(_,{className:E(`w-3 h-3 text-primary/60 shrink-0 transition-transform duration-150`,!n&&`rotate-90`)}),(0,H.jsx)(`span`,{className:`text-[10px] font-mono tabular-nums text-muted-foreground/60 shrink-0 w-5 text-right`,children:u.index}),(0,H.jsx)(h,{className:E(`w-3.5 h-3.5 shrink-0`,g)}),(0,H.jsx)(`span`,{className:`text-[12px] font-semibold text-foreground leading-none truncate`,children:q(u)}),u.iteration!=null&&u.iteration>=1&&(0,H.jsx)(`span`,{className:`shrink-0 rounded-full bg-muted/60 px-1.5 py-0.5 text-[9px] font-medium text-muted-foreground tabular-nums`,children:c(`loopExplorer.iterationBadge`,{count:u.iteration})}),y&&(0,H.jsxs)(`span`,{className:`flex items-center gap-1.5 min-w-0 shrink-0 max-w-[40%]`,children:[(0,H.jsx)(Ye,{}),p&&(0,H.jsx)(`span`,{className:`title-shimmer text-[10px] truncate`,children:c(`statusPanel.activity.${p.actionKey}`,{arg:p.actionArg??``})})]}),t===`ok`&&(0,H.jsx)(m,{className:`w-3.5 h-3.5 text-accent-success shrink-0`}),t===`failed`&&f?.reason===`provider_limit`&&(0,H.jsx)(`span`,{className:`shrink-0 rounded border border-dashed border-destructive/50 px-1.5 py-0.5 text-[9px] font-medium uppercase tracking-wide text-destructive`,title:c(`loopExplorer.providerLimitHint`),"data-testid":`loop-step-provider-limit`,children:c(`loopExplorer.providerLimit`)}),t===`failed`&&(0,H.jsx)(T,{className:`w-3.5 h-3.5 text-destructive shrink-0`}),t===`stalled`&&(0,H.jsx)(`span`,{className:`shrink-0 rounded border border-dashed border-destructive/50 px-1.5 py-0.5 text-[9px] font-medium uppercase tracking-wide text-destructive`,title:f?.idleMs==null?void 0:c(`loopExplorer.stalledIdle`,{count:Math.max(1,Math.round(f.idleMs/6e4))}),children:c(`loopExplorer.stalled`)}),t===`interrupted`&&(0,H.jsx)(`span`,{className:`shrink-0 rounded border border-dashed border-accent-warning/50 px-1.5 py-0.5 text-[9px] font-medium uppercase tracking-wide text-accent-warning`,children:c(`loopExplorer.interrupted`)}),(0,H.jsx)(`span`,{className:`flex-1`}),f?.durationMs!=null&&(0,H.jsx)(`span`,{className:`text-[10px] text-muted-foreground/50 font-mono tabular-nums shrink-0`,children:Ve(f.durationMs)}),t===`failed`&&f?.exitCode!=null&&f.exitCode!==0&&(0,H.jsx)(`span`,{className:`text-[10px] text-destructive/70 font-mono shrink-0`,children:c(`activeJob.exitCode`,{code:f.exitCode})}),(0,H.jsx)(`span`,{className:`text-[10px] text-muted-foreground/40 shrink-0`,children:c(`logViewer.phaseLines`,{count:d.length})})]}),b&&(0,H.jsx)(`button`,{type:`button`,onClick:()=>S(e=>!e),"aria-label":c(`loopExplorer.stepDetail`),"aria-expanded":x,title:c(`loopExplorer.stepDetail`),className:E(`px-2 flex items-center transition-colors cursor-pointer`,x?`text-foreground bg-primary/10`:`text-muted-foreground/40 hover:text-foreground hover:bg-primary/10`),children:(0,H.jsx)(te,{className:`w-3 h-3`})}),(0,H.jsx)(`button`,{type:`button`,onClick:()=>a(e.key),"aria-label":c(`loopExplorer.copyStep`),title:c(`loopExplorer.copyStep`),className:`px-2.5 flex items-center text-muted-foreground/40 hover:text-foreground hover:bg-primary/10 transition-colors cursor-pointer`,children:(0,H.jsx)(R,{className:`w-3 h-3`})})]}),x&&b&&(0,H.jsxs)(`div`,{"data-testid":`loop-step-detail`,className:E(`px-4 py-2.5 space-y-2.5 bg-muted/10 border-b animate-in fade-in duration-150`,t===`failed`?`border-destructive/20`:`border-primary/10`),children:[u.template&&(0,H.jsx)(Qe,{label:c(`loopExplorer.stepDetailTemplate`),value:u.template,copyLabel:c(`loopExplorer.copyCommand`)}),u.command&&(0,H.jsx)(Qe,{label:c(`loopExplorer.stepDetailCommand`),value:u.command,copyLabel:c(`loopExplorer.copyCommand`)})]}),!n&&(0,H.jsx)(`div`,{className:`bg-muted/5`,children:Ze(v,r,c,s)})]})}var et=(0,U.memo)($e,(e,t)=>e.segment.key===t.segment.key&&e.segment.lines.length===t.segment.lines.length&&e.segment.lines[e.segment.lines.length-1]?.content===t.segment.lines[t.segment.lines.length-1]?.content&&e.segment.meta.template===t.segment.meta.template&&e.segment.meta.command===t.segment.meta.command&&e.segment.end?.status===t.segment.end?.status&&e.segment.end?.durationMs===t.segment.end?.durationMs&&e.segment.end?.decision===t.segment.end?.decision&&e.segment.end?.exitCode===t.segment.end?.exitCode&&e.segment.lastActivity?.actionKey===t.segment.lastActivity?.actionKey&&e.segment.lastActivity?.actionArg===t.segment.lastActivity?.actionArg&&e.status===t.status&&e.collapsed===t.collapsed&&e.filter===t.filter&&e.onOpenTicket===t.onOpenTicket),Y=`__setup__`;function tt({lines:e,collapsed:t,filter:n,onToggle:r,setRef:i,onOpenTicket:a}){let{t:o}=l(`jobs`),s=Xe(e,n);return(0,H.jsxs)(`div`,{ref:e=>i(Y,e),"data-testid":`loop-setup-section`,className:`rounded-md overflow-hidden border border-border/20`,children:[(0,H.jsxs)(`button`,{type:`button`,onClick:()=>r(Y),className:`flex items-center gap-2 w-full text-left px-3 py-2 bg-muted/10 border-b border-border/20 hover:bg-muted/20 transition-colors duration-150 cursor-pointer`,children:[(0,H.jsx)(_,{className:E(`w-3 h-3 text-muted-foreground/60 shrink-0 transition-transform duration-150`,!t&&`rotate-90`)}),(0,H.jsx)(x,{className:`w-3.5 h-3.5 text-accent-success/70 shrink-0`}),(0,H.jsx)(`span`,{className:`text-[11px] font-semibold text-muted-foreground leading-none uppercase tracking-wide`,children:o(`loopExplorer.setup`)}),(0,H.jsx)(`span`,{className:`flex-1`}),(0,H.jsx)(`span`,{className:`text-[10px] text-muted-foreground/40 shrink-0`,children:o(`logViewer.phaseLines`,{count:e.length})})]}),!t&&(0,H.jsx)(`div`,{className:`bg-muted/5`,children:Ze(s,n,o,a)})]})}var nt=(0,U.memo)(tt,(e,t)=>e.lines.length===t.lines.length&&e.lines[e.lines.length-1]?.content===t.lines[t.lines.length-1]?.content&&e.collapsed===t.collapsed&&e.filter===t.filter&&e.onOpenTicket===t.onOpenTicket);function X(){return(0,H.jsxs)(`span`,{className:`relative flex h-1.5 w-1.5 shrink-0`,children:[(0,H.jsx)(`span`,{className:`motion-safe:animate-ping absolute inline-flex h-full w-full rounded-full bg-accent-primary opacity-60`}),(0,H.jsx)(`span`,{className:`relative inline-flex rounded-full h-1.5 w-1.5 bg-accent-primary`})]})}function rt({events:e,jobStatus:t,isLoading:n,variant:r=`page`,projectId:i}){let{t:a,i18n:o}=l(`jobs`),[s,c]=(0,U.useState)(``),[u,d]=(0,U.useState)(`follow`),[f,m]=(0,U.useState)(new Set),h=(0,U.useRef)(null),g=(0,U.useRef)(new Map),_=Ce(i),v=(0,U.useMemo)(()=>Ie(e),[e,o.language]),y=t!=null&&t!==`running`&&t!==`queued`,b=t===`running`,x=(0,U.useMemo)(()=>v.segments.map((e,t)=>Le(e,{isLast:t===v.segments.length-1,jobSettled:y})),[v,y]),S=(0,U.useMemo)(()=>{let e=v.segments.map(e=>e.key);return v.setup.length>0&&e.push(Y),e},[v]),w=v.segments.length>0?v.segments[v.segments.length-1].key:Y,T=(0,U.useMemo)(()=>s?new Set(S):u===`follow`?new Set([w]):f,[s,u,w,f,S]),D=(0,U.useRef)(T);D.current=T;let O=(0,U.useRef)(v);O.current=v;let A=(0,U.useCallback)(e=>{let t=new Set(D.current);e?.(t),m(t),d(`manual`)},[]),M=(0,U.useCallback)(e=>{A(t=>{t.has(e)?t.delete(e):t.add(e)})},[A]),ee=(0,U.useCallback)(e=>{A(t=>t.add(e)),requestAnimationFrame(()=>{g.current.get(e)?.scrollIntoView?.({behavior:`smooth`,block:`start`})})},[A]),N=(0,U.useCallback)(()=>{let e=h.current;e&&(e.scrollTop=e.scrollHeight)},[]),P=(0,U.useCallback)(()=>{d(`follow`),requestAnimationFrame(N)},[N]),F=(0,U.useCallback)(()=>{m(new Set(S)),d(`manual`)},[S]),te=(0,U.useCallback)(()=>{m(new Set),d(`manual`)},[]);(0,U.useEffect)(()=>{u===`follow`&&!s&&N()},[v.totalLines,v.segments.length,u,s,N]);let ne=(0,U.useCallback)(()=>{let e=h.current;!e||u!==`follow`||e.scrollHeight-e.scrollTop-e.clientHeight>80&&A()},[u,A]),I=(0,U.useCallback)((e,t)=>{t?g.current.set(e,t):g.current.delete(e)},[]),L=(0,U.useCallback)(e=>{let t=O.current.segments.find(t=>t.key===e),n=e===`__setup__`?O.current.setup.map(e=>e.content).join(`
17
- `):(t?.lines??[]).map(e=>e.content).join(`
18
- `);navigator.clipboard.writeText(n).then(()=>p.success(a(`loopExplorer.copied`))).catch(()=>p.error(a(`logViewer.copyFailed`)))},[a]),re=(0,U.useCallback)(()=>{let e=O.current,t=e.setup.map(e=>e.content);for(let n of e.segments){t.push(`── Step ${n.meta.index} · ${K(n.meta.title)} ──`);for(let e of n.lines)t.push(e.content)}navigator.clipboard.writeText(t.join(`
19
- `)).then(()=>p.success(a(`logViewer.copySuccess`))).catch(()=>p.error(a(`logViewer.copyFailed`)))},[a]),z=(0,U.useMemo)(()=>Be(v,{jobSettled:y,jobFailed:t===`failed`}),[v,y,t]),B=v.graphMeta?.iterationLimit??v.graphMeta?.graph.config.maxIterations??null,ie=v.maxIteration>0?{current:v.maxIteration,limit:B}:null,ae=(0,U.useMemo)(()=>{if(!s)return v.totalLines;let e=s.toLowerCase(),t=v.setup.filter(t=>t.content.toLowerCase().includes(e)).length;for(let n of v.segments)t+=n.lines.filter(t=>t.content.toLowerCase().includes(e)).length;return t},[s,v]),V=v.segments[v.segments.length-1],oe=b&&(v.segments.length===0||V?.end!=null);return n?(0,H.jsx)(`div`,{className:`flex-1 flex items-center justify-center h-full`,children:(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a(`logViewer.loading`)})}):v.totalLines===0&&v.segments.length===0?(0,H.jsx)(`div`,{"data-testid":`loop-step-explorer`,className:`flex-1 flex items-center justify-center h-full`,children:(0,H.jsxs)(`p`,{className:`text-xs text-muted-foreground flex items-center gap-2`,children:[b&&(0,H.jsx)(X,{}),a(b?`loopExplorer.waiting`:`logViewer.empty`)]})}):(0,H.jsxs)(`div`,{"data-testid":`loop-step-explorer`,className:`relative flex flex-col h-full`,children:[(0,H.jsxs)(`div`,{className:E(`border-b border-border flex items-center gap-2`,r===`glass`?`px-3 py-1.5`:`px-4 py-2`),children:[(0,H.jsxs)(`div`,{className:`relative flex-1 max-w-xs`,children:[(0,H.jsx)(C,{className:`absolute left-2.5 top-1/2 -translate-y-1/2 w-3 h-3 text-muted-foreground`}),(0,H.jsx)(j,{placeholder:a(`logViewer.filterPlaceholder`),value:s,onChange:e=>c(e.target.value),className:`pl-7 h-7`})]}),(0,H.jsx)(k,{variant:`ghost`,size:`sm`,className:`h-7 px-2 text-muted-foreground/50 hover:text-foreground`,onClick:F,"aria-label":a(`loopExplorer.expandAll`),title:a(`loopExplorer.expandAll`),children:(0,H.jsx)(ce,{className:`w-3.5 h-3.5`})}),(0,H.jsx)(k,{variant:`ghost`,size:`sm`,className:`h-7 px-2 text-muted-foreground/50 hover:text-foreground`,onClick:te,"aria-label":a(`loopExplorer.collapseAll`),title:a(`loopExplorer.collapseAll`),children:(0,H.jsx)(se,{className:`w-3.5 h-3.5`})}),u===`follow`&&b&&(0,H.jsxs)(`span`,{className:`flex items-center gap-1.5 text-[10px] text-accent-primary shrink-0`,children:[(0,H.jsx)(X,{}),a(`loopExplorer.follow`)]}),(0,H.jsx)(`span`,{className:`flex-1`}),(0,H.jsx)(k,{variant:`ghost`,size:`sm`,className:`h-7 px-2 text-muted-foreground/50 hover:text-foreground`,onClick:re,"aria-label":a(`logViewer.copySuccess`),children:(0,H.jsx)(R,{className:`w-3.5 h-3.5`})}),(0,H.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:a(`logViewer.lineCount`,{filtered:ae,total:v.totalLines})})]}),(0,H.jsx)(Je,{chips:z,iteration:ie,onChipClick:ee,variant:r}),(0,H.jsxs)(`div`,{ref:h,onScroll:ne,className:`flex-1 overflow-y-auto p-2 text-xs`,children:[v.setup.length>0&&(0,H.jsx)(nt,{lines:v.setup,collapsed:!T.has(`__setup__`),filter:s,onToggle:M,setRef:I,onOpenTicket:_}),v.segments.map((e,t)=>(0,H.jsx)(et,{segment:e,status:x[t],collapsed:!T.has(e.key),filter:s,onToggle:M,onCopy:L,setRef:I,onOpenTicket:_},e.key)),oe&&(0,H.jsxs)(`div`,{"data-testid":`loop-waiting-row`,className:`mt-3 flex items-center gap-2 px-3 py-2 text-[11px] text-muted-foreground/70 italic`,children:[(0,H.jsx)(X,{}),a(`loopExplorer.waiting`)]})]}),u===`manual`&&b&&!s&&(0,H.jsxs)(`button`,{type:`button`,"data-testid":`resume-follow-pill`,onClick:P,className:`absolute bottom-4 left-1/2 -translate-x-1/2 z-10 flex items-center gap-1.5 rounded-full glass-card border border-accent-primary/30 px-3 py-1.5 text-[11px] font-medium text-foreground shadow-lg hover:border-accent-primary/60 transition-colors cursor-pointer animate-in fade-in slide-in-from-bottom-2 duration-200`,children:[(0,H.jsx)(X,{}),a(`loopExplorer.resumeFollow`)]})]})}var it=new Set(`grep.rg.ag.ack.find.fd.ls.cat.head.tail.sed.awk.cut.sort.uniq.wc.jq.yq.tr.xargs.tee.column.less.more.cd.pwd.echo.printf.which.type.test.true.false.env.export.set.source.date.basename.dirname.realpath.readlink.stat.file.tree.diff.sleep.seq.hostname.whoami.uname.mkdir.rmdir.cp.mv.rm.touch.ln.chmod.chown.install.[[.[.]].].for.while.until.if.then.else.elif.fi.do.done.case.esac.exec.eval.trap.read.shift.wait`.split(`.`)),at=new Set([`status`,`diff`,`log`,`show`,`branch`,`rev-parse`,`ls-files`,`blame`,`describe`]),ot=new Set([...at,`commit`,`add`,`stage`,`push`,`pull`,`fetch`,`checkout`,`switch`,`merge`,`rebase`,`reset`,`stash`,`tag`,`clone`,`worktree`,`cherry-pick`,`restore`,`apply`,`init`,`remote`,`config`,`update-ref`,`for-each-ref`]),st=new Set([`run`,`run-script`,`test`,`install`,`ci`,`i`,`add`,`exec`,`start`,`dlx`]),ct=[[/^(test|tests|test:.*|vitest|jest|spec)$/,`activity.testing`],[/^(build|compile|bundle|dist)$/,`activity.building`],[/^(typecheck|tsc|types?)$/,`activity.typechecking`],[/^(lint|lint:.*|eslint|format|fmt|prettier)$/,`activity.linting`]],lt=new Set([`vitest`,`jest`,`pytest`,`mocha`,`ava`,`rspec`,`phpunit`]);function ut(e){for(let[t,n]of ct)if(t.test(e))return n;return null}function dt(e){return e.split(/\s+/).map(e=>e.replace(/^['"`]+/,``).replace(/['"`]+$/,``)).filter(e=>e.length>0&&!e.startsWith(`-`))}function ft(e){let t=dt(e);if(t.length===0)return{kind:`plumbing`};let n=t[0].split(`/`).pop()??t[0],r=t.slice(1);if(it.has(n))return{kind:`plumbing`};if(lt.has(n))return{kind:`intent`,code:`activity.testing`};if((n===`npx`||n===`pnpm`||n===`yarn`||n===`bunx`)&&r.length>0){let e=r[0]===`dlx`||r[0]===`exec`?r[1]??``:r[0];if(lt.has(e))return{kind:`intent`,code:`activity.testing`};let t=ut(e===`run`?r[r.indexOf(`run`)+1]??``:e);if(t)return{kind:`intent`,code:t};if(e===`tsc`)return{kind:`intent`,code:`activity.typechecking`}}if(n===`npm`||n===`yarn`||n===`pnpm`||n===`bun`){let e=r.findIndex(e=>st.has(e)),t=e===-1?``:r[e];if(t===`install`||t===`ci`||t===`i`||t===`add`)return{kind:`intent`,code:`activity.installing`};let i=ut(t===`run`||t===`run-script`?r[e+1]??``:t);return i?{kind:`intent`,code:i}:{kind:`named`,tool:n}}if(n===`git`){let e=r.find(e=>ot.has(e))??``;return at.has(e)?{kind:`plumbing`}:e===`commit`||e===`add`||e===`stage`?{kind:`intent`,code:`activity.savingWork`}:{kind:`named`,tool:n}}if(n===`cargo`||n===`go`||n===`dotnet`||n===`mvn`||n===`gradle`){let e=r.find(e=>e===`test`||e===`build`||e===`compile`)??``;return e===`test`?{kind:`intent`,code:`activity.testing`}:e===`build`||e===`compile`?{kind:`intent`,code:`activity.building`}:{kind:`named`,tool:n}}return n===`tsc`?{kind:`intent`,code:`activity.typechecking`}:n===`openspec`?{kind:`intent`,code:`activity.checkingSpec`}:{kind:`named`,tool:n}}function pt(e){try{let t=JSON.parse(e);return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}function mt(e,t){return e&&/^main-\d+$/.test(e)?`step.role.work`:e===`verify`?`step.role.verify`:e===`decide`||t===`decider`?`step.role.decide`:e===`fix`?`step.role.fix`:null}function ht(e){return e.replace(/^[^\p{L}\p{N}(]+/u,``).trim()}var Z=e=>typeof e==`number`&&Number.isFinite(e)?e:null,Q=e=>typeof e==`string`&&e.length>0?e:null,gt=new Set([`thinking`,`reasoning`]),_t=/^(MEMORY\.md|confidence-score\.json|design-confidence\.json|\d{4}-\d{2}-\d{2}-.+|feedback_.+)$/,vt=/^(proposal|design|tasks|spec|context-bundle)\.md$/,yt=new Set([`reading`,`writing`,`editing`]);function $(e,t,n,r,i){for(let t=e.length-1;t>=0;t--){let a=e[t];if(a.kind!==`activity`){if(a.stepIndex!==n)break;continue}if(a.stepIndex!==n)break;if(a.values.action===r&&a.values.target===i){a.values.repeats=Number(a.values.repeats??1)+1;return}}e.push({seq:t,kind:`activity`,code:r===`intent`?i:i?`activity.${r}`:`activity.${r}Bare`,values:{action:r,target:i,repeats:1},stepIndex:n,tone:`neutral`})}var bt=3;function xt(e,t,n,r,i){for(let t=e.length-1;t>=0;t--){let a=e[t];if(a.stepIndex!==n)break;if(a.kind!==`activity`||a.values.action!==r||a.values.fileGroup!==1)continue;let o=String(a.values.allNames??``).split(`\0`).filter(Boolean),s=!!i&&!o.includes(i);s&&o.push(i),a.values.allNames=o.join(`\0`),a.values.files=o.length;let c=String(a.values.names??``).split(`, `).filter(Boolean);s&&c.length<bt&&(c.push(i),a.values.names=c.join(`, `)),a.code=o.length>1?`activity.${r}Files`:i?`activity.${r}`:`activity.${r}Bare`,a.values.repeats=o.length>1?1:Number(a.values.repeats??1)+1;return}e.push({seq:t,kind:`activity`,code:i?`activity.${r}`:`activity.${r}Bare`,values:{action:r,target:i,names:i,allNames:i,files:+!!i,fileGroup:1,repeats:1},stepIndex:n,tone:`neutral`})}function St({events:e,settled:t}){let n=[],r=new Map,i=null,a=!1;for(let t of e){if(t.event_type===`loop_graph`){a=!0;continue}if(t.event_type===`loop_step`){let e=pt(t.payload),o=Z(e.index);if(o===null)continue;a=!0;let s=Q(e.kind)??`ai-step`,c={index:o,title:ht(Q(e.title)??``),roleCode:mt(Q(e.nodeId),s),kind:s,iteration:Z(e.iteration),ended:!1};r.set(o,c),i=o;let l=Z(e.attempt);n.push({seq:t.seq,kind:`step-start`,code:l!==null&&l>1?`step.startResume`:c.iteration&&c.iteration>1?`step.startRetry`:`step.start`,values:{step:o,title:c.title,iteration:c.iteration??1,...l!==null&&l>1?{attempt:l}:{},...c.roleCode?{roleCode:c.roleCode}:{}},stepIndex:o,tone:`neutral`});continue}if(t.event_type===`loop_step_end`){let e=pt(t.payload),i=Z(e.index);if(i===null)continue;let a=i===null?void 0:r.get(i);a&&(a.ended=!0);let o=Q(e.status),s=Z(e.durationMs),c=Z(e.exitCode),l=Z(e.idleMs),u=o===`stalled`,d=o===`failed`||u,f=o===`failed`&&Q(e.reason)===`provider_limit`;n.push({seq:t.seq,kind:`step-end`,code:u?`step.stalled`:f?`step.providerLimit`:d?`step.failed`:s===null?`step.done`:s>=9e4?`step.doneTimedMin`:`step.doneTimed`,values:{step:i,title:a?.title??``,seconds:s===null?0:Math.max(1,Math.round(s/1e3)),minutes:s===null?0:Math.max(1,Math.round(s/6e4)),...u?{idleMinutes:l===null?0:Math.max(1,Math.round(l/6e4))}:{},...a?.roleCode?{roleCode:a.roleCode}:{},...c===null?{}:{exitCode:c}},stepIndex:i,tone:d?`bad`:`good`});let p=Q(e.decision);(p===`continue`||p===`stop`)&&n.push({seq:t.seq,kind:`decision`,code:p===`continue`?`decision.another`:`decision.satisfied`,values:{step:i},stepIndex:i,tone:p===`continue`?`neutral`:`good`});continue}let e=z(t);if(!(!e.step||!e.actionKey)&&!gt.has(e.actionKey)){if(e.actionKey===`running`){let r=I(t),a=r?ft(r):{kind:`named`,tool:e.actionArg??``};if(a.kind===`plumbing`){$(n,t.seq,i,`exploring`,``);continue}if(a.kind===`intent`){$(n,t.seq,i,`intent`,a.code);continue}$(n,t.seq,i,`running`,a.tool);continue}if(yt.has(e.actionKey)){let r=e.actionArg??``;if(_t.test(r)){$(n,t.seq,i,`intent`,`activity.bookkeeping`);continue}if(vt.test(r)){$(n,t.seq,i,`intent`,`activity.writingSpec`);continue}xt(n,t.seq,i,e.actionKey,r);continue}$(n,t.seq,i,e.actionKey,e.actionArg??``)}}if(t)for(let e of r.values())e.ended||n.push({seq:2**53-1-(1e3-e.index),kind:`step-interrupted`,code:`step.interrupted`,values:{step:e.index,title:e.title},stepIndex:e.index,tone:`bad`});return{milestones:n,stepCount:r.size,plainJob:!a}}var Ct={"step-start":le,"step-end":m,"step-interrupted":w,decision:ae,activity:le},wt={neutral:`text-muted-foreground`,good:`text-accent-success`,bad:`text-accent-warning`};function Tt({events:e,settled:t,durationRange:n,elapsedMs:r,variant:i=`page`}){let{t:a}=l(`narration`),o=(0,U.useMemo)(()=>St({events:e,settled:t}),[e,t]),s=(0,U.useMemo)(()=>[...o.milestones].sort((e,t)=>e.seq-t.seq),[o.milestones]);return(0,H.jsxs)(`div`,{className:i===`glass`?`flex h-full flex-col overflow-hidden`:`flex flex-col`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3 border-b border-border/50 px-3 py-2 text-[11px] text-muted-foreground`,children:[typeof r==`number`&&r>0?(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,H.jsx)(ue,{className:`size-3`,"aria-hidden":!0}),a(`waiting.elapsed`,{minutes:Math.max(1,Math.round(r/6e4))})]}):null,n?(0,H.jsx)(`span`,{"data-testid":`narration-range`,children:a(`waiting.range`,{low:Math.max(1,Math.round(n.p25Ms/6e4)),high:Math.max(1,Math.round(n.p75Ms/6e4)),count:n.sampleCount})}):null,(0,H.jsx)(`span`,{className:`ml-auto italic opacity-70`,children:a(`aiNote`)})]}),(0,H.jsx)(`ol`,{className:`flex-1 space-y-1 px-3 py-2 ${i===`glass`?`overflow-y-auto`:``}`,"data-testid":`narration-list`,children:s.length===0?(0,H.jsx)(`li`,{className:`py-6 text-center text-xs text-muted-foreground`,children:a(t?`emptySettled`:`emptyLive`)}):s.map((e,t)=>{let n=Ct[e.kind],r=e.kind===`step-start`||e.kind===`step-end`||e.kind===`step-interrupted`,i=Number(e.values.files??0)>1?1:Number(e.values.repeats??1);return(0,H.jsxs)(`li`,{className:`flex items-start gap-2 text-sm ${r?`font-medium text-foreground`:`text-muted-foreground`} ${e.kind===`step-start`&&t>0?`pt-2`:``}`,children:[(0,H.jsx)(n,{className:`mt-0.5 size-3.5 shrink-0 ${wt[e.tone]}`,"aria-hidden":!0}),(0,H.jsxs)(`span`,{children:[e.kind===`step-start`&&typeof e.values.roleCode==`string`?a(e.code,{...e.values,title:a(e.values.roleCode),defaultValue:e.code}):a(e.code,{...e.values,defaultValue:e.code}),i>1?(0,H.jsx)(`span`,{className:`ml-1.5 text-[11px] opacity-70`,children:a(`repeats`,{count:i})}):null]})]},`${e.seq}-${e.code}-${t}`)})})]})}var Et=`specrails-desktop:job-log-mode`;function Dt(){try{let e=localStorage.getItem(Et);return e===`log`||e===`narrated`?e:`narrated`}catch{return`narrated`}}function Ot(e){try{localStorage.setItem(Et,e)}catch{}}function kt(e,t){switch(t.type){case`turn-user`:return{...e,streaming:!0,accepting:!0,queued:t.queued?e.queued+1:e.queued};case`turn-done`:{let n=Math.max(0,e.queued-1);return{...e,totals:t.totals,queued:n,streaming:e.queued>0}}case`finalized`:return{...e,streaming:!1,finalizing:!1,accepting:!1,queued:0,totals:t.totals??e.totals};case`accepting`:return t.accepting?{...e,accepting:!0}:{...e,accepting:!1,streaming:!1,queued:0};case`finalize-request`:return{...e,finalizing:!0};case`finalize-reject`:return{...e,finalizing:!1};case`blocked`:return{...e,accepting:!1,streaming:!1};default:return e}}function At(){try{return c()}catch{return null}}function jt({jobId:e,projectId:t,settleMode:n,initialAcceptingTurns:r,kind:i=`job`,variant:a=`page`,onFinalized:o}){let{t:c}=l(`jobs`),u=n??`finalize`,f=()=>t?`${s}/api/projects/${t}`:d(),[m,h]=(0,U.useReducer)(kt,{streaming:!1,queued:0,totals:null,accepting:r??!0,finalizing:!1}),[g,_]=(0,U.useState)(``),[v,y]=(0,U.useState)(!1),x=(0,U.useRef)(null);(0,U.useEffect)(()=>{r!==void 0&&h({type:`accepting`,accepting:r})},[r]);let S=(0,U.useRef)(o);S.current=o;let C=At(),w=(0,U.useId)();(0,U.useEffect)(()=>{if(!C)return;let t=`interactive-composer-${e}-${w}`;return C.registerHandler(t,t=>{let n=t;n.jobId===e&&(n.type===`job.turn_user`?h({type:`turn-user`,queued:!!n.queued}):n.type===`job.turn_done`?h({type:`turn-done`,totals:n.totals}):n.type===`job.finalized`?(h({type:`finalized`,totals:n.totals??null}),S.current?.()):n.type===`job.interactive`&&h({type:`accepting`,accepting:!!n.acceptingTurns}))}),()=>C.unregisterHandler(t)},[C,e,w]);let T=i===`loop-step`&&!m.accepting;async function D(){let t=g.trim();if(!(!t||v||T)){y(!0);try{let n=await fetch(`${f()}/jobs/${e}/messages`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({text:t})});if(n.ok)_(``),requestAnimationFrame(()=>x.current?.focus());else if(n.status===409&&i===`loop-step`)h({type:`blocked`});else{let e=await n.json().catch(()=>({}));p.error(c(`detail.toast.sendFailed`),{description:e.error})}}catch{p.error(c(`detail.toast.networkError`))}finally{y(!1)}}}async function O(){if(!m.finalizing){h({type:`finalize-request`});try{let t=await fetch(`${f()}/jobs/${e}/finalize`,{method:`POST`});if(t.ok)p.success(c(u===`finalize`?`detail.toast.finalizeScheduled`:i===`loop-step`?`detail.toast.wrapUpStepScheduled`:`detail.toast.wrapUpScheduled`));else if(t.status===409&&i===`loop-step`)h({type:`blocked`}),h({type:`finalize-reject`});else{let e=await t.json().catch(()=>({}));p.error(c(`detail.toast.finalizeFailed`),{description:e.error}),h({type:`finalize-reject`})}}catch{p.error(c(`detail.toast.networkError`)),h({type:`finalize-reject`})}}}let A=v||T||!g.trim(),j=c(`detail.interactive.working`);return(0,H.jsxs)(`div`,{"data-testid":`interactive-job-composer`,className:E(`shrink-0 border-t px-3 py-2 space-y-1.5`,`motion-safe:animate-in motion-safe:fade-in motion-safe:slide-in-from-bottom-2 motion-safe:duration-300`,a===`glass`?`border-border/30 bg-surface/30`:`border-border/40 bg-surface/40`),children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-3 text-[11px] text-muted-foreground`,children:[(0,H.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[T?(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,H.jsx)(de,{className:`h-3 w-3 motion-safe:animate-pulse`}),c(`detail.interactive.waitingForStepShort`)]}):m.streaming?(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,H.jsx)(b,{className:`h-3 w-3 animate-spin text-accent-primary`}),(0,H.jsxs)(`span`,{className:`relative`,children:[j,(0,H.jsx)(`span`,{"aria-hidden":!0,className:`title-shimmer pointer-events-none absolute inset-0`,children:j})]})]}):(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,H.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full bg-accent-success motion-safe:animate-pulse`}),c(`detail.interactive.ready`)]}),m.queued>0&&(0,H.jsx)(`span`,{className:`rounded-full border border-accent-info/30 bg-accent-info/10 px-1.5 py-px text-[10px] tabular-nums text-accent-info motion-safe:animate-in motion-safe:fade-in`,children:c(`detail.interactive.queued`,{count:m.queued})})]}),(0,H.jsxs)(`span`,{className:`flex shrink-0 items-center gap-3`,children:[m.totals&&(0,H.jsx)(`span`,{className:`tabular-nums`,children:c(`detail.interactive.liveTotals`,{turns:m.totals.num_turns,cost:m.totals.total_cost_usd.toFixed(4)})}),u===`finalize`?(0,H.jsxs)(P,{children:[(0,H.jsx)(F,{asChild:!0,children:(0,H.jsxs)(k,{variant:`outline`,size:`sm`,onClick:()=>void O(),disabled:m.finalizing,className:`h-7 border-accent-success/40 text-accent-success hover:bg-accent-success/10`,children:[(0,H.jsx)(L,{className:`mr-1.5 h-3.5 w-3.5`}),m.finalizing?c(`detail.finalizing`):c(`detail.finalizeJob`)]})}),(0,H.jsx)(V,{children:c(`detail.finalizeJobTooltip`)})]}):(0,H.jsxs)(P,{children:[(0,H.jsx)(F,{asChild:!0,children:(0,H.jsx)(`button`,{type:`button`,onClick:()=>void O(),disabled:m.finalizing||T,className:E(`text-[11px] underline-offset-2 transition-colors`,T?`cursor-not-allowed text-muted-foreground/40`:`text-muted-foreground hover:text-accent-success hover:underline`),children:m.finalizing?c(`detail.interactive.wrappingUp`):c(i===`loop-step`?`detail.interactive.wrapUpStep`:`detail.interactive.wrapUp`)})}),(0,H.jsx)(V,{children:c(i===`loop-step`?`detail.interactive.wrapUpStepTooltip`:`detail.interactive.wrapUpTooltip`)})]})]})]}),u===`auto`&&(0,H.jsx)(`p`,{className:`text-[11px] leading-snug text-muted-foreground/60`,children:c(T?`detail.interactive.waitingForStep`:`detail.interactive.autoHint`)}),(0,H.jsxs)(`div`,{className:`flex items-end gap-2`,children:[(0,H.jsx)(`textarea`,{ref:x,value:g,onChange:e=>_(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(!e.shiftKey||e.metaKey||e.ctrlKey)&&(e.preventDefault(),D())},rows:2,placeholder:c(T?`detail.interactive.waitingForStepShort`:`detail.interactive.placeholder`),"aria-label":c(`detail.interactive.placeholder`),disabled:T,className:E(`flex-1 resize-none rounded-md border border-border/50 bg-background px-2.5 py-1.5 text-sm transition-opacity focus:outline-none focus:ring-2 focus:ring-ring`,T&&`opacity-60`)}),(0,H.jsxs)(P,{children:[(0,H.jsx)(F,{asChild:!0,children:(0,H.jsx)(`span`,{className:`shrink-0`,children:(0,H.jsxs)(k,{size:`sm`,onClick:()=>void D(),disabled:A,className:`h-9`,children:[(0,H.jsx)(re,{className:`mr-1.5 h-3.5 w-3.5`}),c(`detail.interactive.send`)]})})}),A&&!v&&(0,H.jsx)(V,{children:c(T?`detail.interactive.sendDisabledWaiting`:`detail.interactive.sendDisabledEmpty`)})]})]})]})}export{rt as a,ue as c,Tt as i,Dt as n,Oe as o,Ot as r,fe as s,jt as t};
@@ -1 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{n as t,t as n}from"./jsx-runtime-zu2_FqZY.js";import{t as r}from"./react-dom-DiWzBDP9.js";import{ct as i,it as a}from"./TicketDetailModalContext-DqyF0so-.js";import{a as o,c as s,l as c,m as l}from"./useSharedWebSocket-BOdS5_Iz.js";import{n as u}from"./createLucideIcon-Bjbbp_KS.js";import{a as d,s as f}from"./useDesktop-RSMTyy7V.js";import{a as p,i as m,n as h,o as g,r as _,s as ee,t as te}from"./InteractiveJobComposer-C1ucmxQh.js";import{t as ne}from"./loader-circle-DcygOQpC.js";import{t as re}from"./x-CBMI9ejn.js";import{M as ie,j as ae}from"./dialog-SRw01_QU.js";import{t as oe}from"./formatDistanceToNow-DSj5DprF.js";import{t as v}from"./button-DCBqEaZl.js";import{B as y,I as se,L as b,R as x,V as ce,x as S,z as le}from"./index-EzrkUb8B.js";import{n as C,t as ue}from"./job-time-BCL7wee9.js";var de=e(r(),1),w=e(t(),1),T=[1e3,2e3,4e3,8e3,16e3];function E(e,t){let[n,r]=(0,w.useState)(`connecting`),i=(0,w.useRef)(t);return i.current=t,(0,w.useEffect)(()=>{let t=!1,n=!1,a=null,c=0,l=null;async function u(){if(!(t||n||a)){n=!0;try{await s()}catch{}finally{n=!1}!t&&!a&&f()}}function d(){if(t)return;l!==null&&clearTimeout(l),r(`connecting`);let e=T[c++]??3e4;l=setTimeout(()=>{l=null,u()},e)}function f(){if(t||a)return;let n=o(),s;try{s=n?new WebSocket(e,[`specrails-desktop`,n]):new WebSocket(e)}catch{d();return}a=s,r(`connecting`),s.onopen=()=>{t||a!==s||(c=0,r(`connected`))},s.onmessage=e=>{if(!(t||a!==s))try{i.current(JSON.parse(e.data))}catch{}},s.onclose=()=>{t||a!==s||(a=null,d())}}let p=()=>{t||a||(l!==null&&clearTimeout(l),l=null,u())};return window.addEventListener(`online`,p),window.addEventListener(`focus`,p),f(),()=>{t=!0,window.removeEventListener(`online`,p),window.removeEventListener(`focus`,p),l!==null&&clearTimeout(l);let e=a;if(a=null,e){e.onopen=null,e.onmessage=null,e.onclose=null,e.onerror=null;try{e.close()}catch{}}}},[e]),{connectionStatus:n}}var D=n();function fe(e,t){let n=C(e),r=C(t);if(!n||!r)return`—`;let i=r.getTime()-n.getTime();if(i<0)return`—`;let a=Math.round(i/1e3);if(a<60)return`${a}s`;let o=Math.floor(a/60),s=a%60;return o<60?`${o}m ${s}s`:`${Math.floor(o/60)}h ${o%60}m`}var O={running:{variant:`running`,labelKey:`statusLabel.running`,tooltipKey:`statusTooltip.running`},completed:{variant:`success`,labelKey:`statusLabel.completed`,tooltipKey:`statusTooltip.completed`},failed:{variant:`failed`,labelKey:`statusLabel.failed`,tooltipKey:`statusTooltip.failed`},canceled:{variant:`canceled`,labelKey:`statusLabel.canceled`,tooltipKey:`statusTooltip.canceled`},queued:{variant:`queued`,labelKey:`statusLabel.queued`,tooltipKey:`statusTooltip.queued`},zombie_terminated:{variant:`failed`,labelKey:`statusLabel.zombie`,tooltipKey:`statusTooltip.zombie`}};function k({jobId:e,onClose:t,projectId:n}){let{t:r}=u(`jobs`),{t:o}=u(`narration`),s=(0,w.useCallback)(()=>n?`${c}/api/projects/${n}`:d(),[n]),[T,k]=(0,w.useState)(h),pe=(0,w.useCallback)(e=>{k(e),_(e)},[]),[A,j]=(0,w.useState)(null),[M,N]=(0,w.useState)([]),[P,F]=(0,w.useState)([]),[I,L]=(0,w.useState)({}),[R,z]=(0,w.useState)(!0),[B,V]=(0,w.useState)(!1),[H,U]=(0,w.useState)(!1),[W,G]=(0,w.useState)(!1);(0,w.useEffect)(()=>{async function t(){try{let t=await fetch(`${s()}/jobs/${e}`);if(t.status===404){V(!0);return}if(!t.ok)throw Error(`Failed to fetch job`);let n=await t.json();if(j(n.job),N(n.events),n.phaseDefinitions){F(n.phaseDefinitions);let e={};for(let t of n.phaseDefinitions)e[t.key]=`idle`;L(e)}}catch{V(!0)}finally{z(!1)}}t()},[e,s]);let K=(0,w.useCallback)(()=>{fetch(`${s()}/jobs/${e}`).then(e=>e.ok?e.json():null).then(e=>{e?.job&&j(e.job)}).catch(()=>{})},[e,s]),q=(0,w.useRef)([]),J=(0,w.useRef)(null),Y=(0,w.useCallback)(()=>{J.current=null;let e=q.current;e.length!==0&&(q.current=[],N(t=>{let n=[...t,...e];return n.length>1e4?n.slice(n.length-8e3):n}))},[]);(0,w.useEffect)(()=>()=>{J.current&&cancelAnimationFrame(J.current)},[]),E(i,(0,w.useCallback)(t=>{let n=t;if(n.type===`event`&&n.jobId===e){let t={id:Date.now(),job_id:e,seq:0,event_type:n.event_type,source:n.source,payload:n.payload,timestamp:n.timestamp};q.current.push(t),J.current||=requestAnimationFrame(Y)}else if(n.type===`log`&&n.processId===e){let t={id:Date.now(),job_id:e,seq:0,event_type:`log`,source:n.source,payload:JSON.stringify({line:n.line}),timestamp:n.timestamp};q.current.push(t),J.current||=requestAnimationFrame(Y)}else if(n.type===`job.finalized`&&n.jobId===e||n.type===`job.interactive`&&n.jobId===e||(n.type===`loop.run_paused`||n.type===`loop.run_resumed`)&&n.loopRunId===e)K();else if(n.type===`phase`){let e=n.phase,t=n.state;L(n=>({...n,[e]:t}))}else if(n.type===`queue`){let t=n.jobs?.find(t=>t.id===e);t&&A&&j(e=>e&&{...e,status:t.status})}},[e,A,Y,K])),(0,w.useEffect)(()=>{function e(e){if(e.key===`Escape`){if(H){U(!1);return}t()}}return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,H]);let X=A?b(A):`job`,Z=X===`loop-run`;async function me(){G(!0);try{let t=await se({projectId:n??null,jobId:e,kind:X});t.ok?(f.success(r(Z?`modal.toast.stopSignalSent`:`modal.toast.cancelSignalSent`),{description:r(Z?`modal.toast.stopSignalSentDescription`:`modal.toast.cancelSignalSentDescription`)}),K()):f.error(r(`modal.toast.cancelFailed`),{description:t.error})}finally{G(!1)}}let Q=A?O[A.status]??O.queued:O.queued,he=A?.status===`running`,$=A?C(ue(A)):null,{panelRef:ge,panelStyle:_e,headerHandleProps:ve,resizeHandles:ye,isFloating:be,guardBackdrop:xe}=ie();return(0,de.createPortal)((0,D.jsx)(y,{delayDuration:400,children:(0,D.jsxs)(`div`,{className:`fixed inset-0 z-[65] flex items-stretch justify-center`,children:[(0,D.jsx)(`div`,{className:`absolute inset-0 bg-black/50 backdrop-blur-sm`,onClick:xe(t)}),(0,D.jsxs)(`div`,{ref:ge,className:`relative w-full m-3 rounded-xl glass-card border border-border/30 flex flex-col animate-in fade-in zoom-in-95 duration-200 overflow-hidden`,style:_e,children:[(0,D.jsxs)(`div`,{...ve,className:`flex items-center justify-between px-4 py-3 border-b border-border/30${be?` cursor-grab active:cursor-grabbing`:``}`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0`,children:[A&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsxs)(x,{children:[(0,D.jsx)(ce,{asChild:!0,children:(0,D.jsx)(`div`,{children:(0,D.jsx)(S,{variant:Q.variant,children:r(Q.labelKey)})})}),(0,D.jsx)(le,{children:r(Q.tooltipKey)})]}),(0,D.jsx)(`code`,{className:`text-xs font-mono text-foreground/80 truncate`,children:A.command}),(0,D.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:$?oe($,{addSuffix:!0,locale:l()}):`—`}),A.total_cost_usd!=null&&A.total_cost_usd>0&&(0,D.jsxs)(`span`,{className:`text-[10px] text-muted-foreground`,children:[`$`,A.total_cost_usd.toFixed(4)]}),A.started_at&&A.finished_at&&(0,D.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:fe(A.started_at,A.finished_at)})]}),R&&(0,D.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:r(`common:states.loading`)})]}),(0,D.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[P.length>0&&(0,D.jsx)(`div`,{className:`mr-3`,children:(0,D.jsx)(ee,{phases:I,phaseDefinitions:P})}),he&&(0,D.jsxs)(v,{variant:`ghost`,size:`sm`,onClick:()=>U(!0),disabled:W,className:`h-7 text-destructive hover:text-destructive hover:bg-destructive/10`,children:[W&&(0,D.jsx)(ne,{className:`w-3.5 h-3.5 mr-1.5 animate-spin`,"aria-hidden":!0}),r(Z?`dashboard:railControls.stop`:X===`interactive`?`common:actions.discard`:`common:actions.cancel`)]}),(0,D.jsx)(`button`,{onClick:t,className:`h-7 w-7 flex items-center justify-center rounded-md text-muted-foreground hover:text-foreground hover:bg-surface/50 transition-colors cursor-pointer`,children:(0,D.jsx)(re,{className:`w-4 h-4`})})]})]}),(0,D.jsx)(`div`,{className:`flex-1 overflow-hidden relative`,children:B?(0,D.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,D.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:r(`modal.notFound`)})}):a&&A?(0,D.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,D.jsx)(`div`,{className:`flex items-center gap-1 border-b border-border/40 px-3 py-1.5`,children:[`narrated`,`log`].map(e=>(0,D.jsx)(`button`,{type:`button`,onClick:()=>pe(e),"aria-pressed":T===e,"data-testid":`modal-narration-mode-${e}`,className:`rounded-md px-2 py-0.5 text-[11px] font-medium transition-colors ${T===e?`bg-accent-primary/15 text-accent-primary`:`text-muted-foreground hover:bg-surface/60`}`,children:o(e===`narrated`?`modeNarrated`:`modeLog`)},e))}),(0,D.jsx)(`div`,{className:`flex-1 overflow-hidden`,children:T===`narrated`?(0,D.jsx)(m,{events:M,settled:A.status!==`running`&&A.status!==`queued`,elapsedMs:A.duration_ms??null,variant:`glass`}):A.command.startsWith(`loop:`)?(0,D.jsx)(p,{events:M,jobStatus:A.status,isLoading:R,variant:`glass`,projectId:n}):(0,D.jsx)(g,{events:M,isLoading:R,projectId:n})})]}):A?.command.startsWith(`loop:`)?(0,D.jsx)(p,{events:M,jobStatus:A.status,isLoading:R,variant:`glass`,projectId:n}):(0,D.jsx)(g,{events:M,isLoading:R,projectId:n})}),!!A?.interactive&&A.status===`running`&&(0,D.jsx)(te,{jobId:e,projectId:n,settleMode:A.interactiveSettleMode,initialAcceptingTurns:A.interactiveAcceptingTurns,kind:A.command.startsWith(`loop:`)?`loop-step`:`job`,variant:`glass`,onFinalized:K})]}),(0,D.jsx)(ae,{handles:ye}),H&&(0,D.jsxs)(`div`,{"data-testid":`job-cancel-confirm`,className:`absolute inset-0 z-10 flex items-center justify-center p-4`,children:[(0,D.jsx)(`div`,{className:`absolute inset-0 bg-black/60 backdrop-blur-sm`,onClick:()=>U(!1)}),(0,D.jsxs)(`div`,{className:`relative w-full max-w-sm rounded-xl glass-card border border-border/30 p-5 shadow-xl animate-in fade-in zoom-in-95 duration-150`,children:[(0,D.jsx)(`h3`,{className:`text-base font-semibold text-foreground`,children:r(Z?`modal.stopRunConfirmTitle`:`modal.cancelConfirmTitle`)}),(0,D.jsx)(`p`,{className:`mt-1.5 text-sm text-muted-foreground`,children:r(Z?`modal.stopRunConfirmDescription`:`modal.cancelConfirmDescription`)}),(0,D.jsxs)(`div`,{className:`mt-4 flex justify-end gap-2`,children:[(0,D.jsx)(v,{variant:`ghost`,size:`sm`,onClick:()=>U(!1),children:r(`modal.keepRunning`)}),(0,D.jsx)(v,{variant:`destructive`,size:`sm`,onClick:()=>{U(!1),me()},children:r(Z?`modal.stopRun`:X===`interactive`?`common:actions.discard`:`modal.cancelJob`)})]})]})]})]})}),document.body)}export{k as JobDetailModal};
@@ -1,45 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{n as t,t as n}from"./jsx-runtime-zu2_FqZY.js";import{t as r}from"./react-dom-DiWzBDP9.js";import{n as i}from"./createLucideIcon-Bjbbp_KS.js";import{t as a}from"./x-CBMI9ejn.js";import{t as o}from"./utils-BC4DHlz2.js";var s=e(t(),1),c=e(r(),1),l=n(),u=[`nw`,`n`,`ne`,`e`,`se`,`s`,`sw`,`w`],d={nw:{left:!0,top:!0},n:{top:!0},ne:{right:!0,top:!0},e:{right:!0},se:{right:!0,bottom:!0},s:{bottom:!0},sw:{left:!0,bottom:!0},w:{left:!0}};function f(e){return e===`n`||e===`s`?`horizontal`:`vertical`}function p(e,t,n){return Math.min(Math.max(e,t),Math.max(t,n))}function m(e,t,n,r){return{w:p(e,r.minWidth,n.width-16),h:p(t,r.minHeight,n.height-16)}}function h(e,t){let n=p(e.x,120-e.w,t.width-e.w),r=p(e.y,0,Math.max(0,t.height-48));return{...e,x:n,y:r}}function g(e,t,n,r){return h({...e,x:e.x+t,y:e.y+n},r)}function _(e,t,n,r,i,a){let o=d[t],s=e.x+e.w,c=e.y+e.h,l=e.w,u=e.h;o.right&&(l=e.w+n),o.left&&(l=e.w-n),o.bottom&&(u=e.h+r),o.top&&(u=e.h-r);let f=m(l,u,i,a),p=e.x,g=e.y;return o.left&&(p=s-f.w),o.top&&(g=c-f.h),h({x:p,y:g,w:f.w,h:f.h},i)}function v(e,t,n,r,i){let a=d[t],o=a.left||a.right,s=a.top||a.bottom,c=o?n===`min`?i.minWidth:r.width-16:e.w,l=s?n===`min`?i.minHeight:r.height-16:e.h,u=e.x+e.w,f=e.y+e.h,p=m(c,l,r,i);return h({x:a.left?u-p.w:e.x,y:a.top?f-p.h:e.y,w:p.w,h:p.h},r)}function y(e){return{x:e.left,y:e.top,w:e.width,h:e.height}}function b(e,t){return{w:e.width,h:e.height,x:Math.round((t.width-e.width)/2),y:Math.round((t.height-e.height)/2)}}function ee(e,t){let{x:n,y:r,w:i,h:a}=t,o=Math.max(0,i-24),s=Math.max(0,a-24);switch(e){case`nw`:return{left:n-14/2,top:r-14/2,width:14,height:14};case`ne`:return{left:n+i-14/2,top:r-14/2,width:14,height:14};case`se`:return{left:n+i-14/2,top:r+a-14/2,width:14,height:14};case`sw`:return{left:n-14/2,top:r+a-14/2,width:14,height:14};case`n`:return{left:n+12,top:r-8/2,width:o,height:8};case`s`:return{left:n+12,top:r+a-8/2,width:o,height:8};case`e`:return{left:n+i-8/2,top:r+12,width:8,height:s};case`w`:return{left:n-8/2,top:r+12,width:8,height:s}}}function te(e,t,n){let r=d[e],i=r.left||r.right,a=r.top||r.bottom;switch(t){case`ArrowRight`:return i?{dx:n,dy:0}:null;case`ArrowLeft`:return i?{dx:-n,dy:0}:null;case`ArrowDown`:return a?{dx:0,dy:n}:null;case`ArrowUp`:return a?{dx:0,dy:-n}:null;default:return null}}var ne=64;function x(){return typeof window>`u`?{width:0,height:0}:{width:window.innerWidth,height:window.innerHeight}}var re=`button, input, textarea, select, a, [role="button"], [contenteditable="true"]`;function S(e={}){let{enabled:t=!0,allowMove:n=!0,minWidth:r=320,minHeight:i=200,anchorFromCurrentRect:a=!1,persistKey:o}=e,c=(0,s.useRef)(null),[l,d]=(0,s.useState)(null),p=(0,s.useCallback)(e=>{c.current=e,d(e)},[]),[m,S]=(0,s.useState)(()=>{if(!o||typeof window>`u`)return null;try{let e=window.localStorage.getItem(o);if(!e)return null;let t=JSON.parse(e);if([t?.x,t?.y,t?.w,t?.h].every(e=>typeof e==`number`&&Number.isFinite(e))&&t.w>0&&t.h>0)return h(t,x())}catch{}return null}),[ie,C]=(0,s.useState)(null),[w,T]=(0,s.useState)(()=>typeof window>`u`||window.innerWidth>=900),E=(0,s.useRef)(null),D=(0,s.useRef)(null),ae=(0,s.useRef)(!1),O=(0,s.useRef)(null),oe=(0,s.useRef)(!1);D.current=m;let k={minWidth:r,minHeight:i},A=t&&w;(0,s.useEffect)(()=>{function e(){let e=window.innerWidth>=900;T(e),e||S(null)}return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),(0,s.useEffect)(()=>{t||S(null)},[t]),(0,s.useEffect)(()=>{if(!(!o||typeof window>`u`||!m))try{window.localStorage.setItem(o,JSON.stringify(m))}catch{}},[m,o]),(0,s.useEffect)(()=>{if(!A||m!==null){C(null);return}let e=c.current;if(!e)return;let t=()=>C(y(e.getBoundingClientRect()));t();let n;return typeof ResizeObserver<`u`&&(n=new ResizeObserver(t),n.observe(e)),window.addEventListener(`resize`,t),window.addEventListener(`scroll`,t,!0),()=>{n?.disconnect(),window.removeEventListener(`resize`,t),window.removeEventListener(`scroll`,t,!0)}},[A,m,l]);let se=(0,s.useCallback)(e=>{O.current=e,!ae.current&&(ae.current=!0,requestAnimationFrame(()=>{ae.current=!1,O.current&&S(O.current)}))},[]),j=(0,s.useCallback)(e=>{let t=E.current;if(!t)return;let n=x(),r=e.clientX-t.startX,i=e.clientY-t.startY,a=t.mode===`move`?g(t.startGeom,r,i,n):_(t.startGeom,t.position,r,i,n,k);se(a)},[se,k.minWidth,k.minHeight]),M=(0,s.useCallback)(()=>{let e=E.current;if(e){try{e.element.releasePointerCapture(e.pointerId)}catch{}E.current=null,oe.current=!0,setTimeout(()=>{oe.current=!1},0),O.current&&S(O.current),window.removeEventListener(`pointermove`,j),window.removeEventListener(`pointerup`,M),window.removeEventListener(`pointercancel`,M)}},[j]),N=(0,s.useCallback)((e,t)=>{if(!A||e.button!==0)return;let n=c.current;if(!n)return;let r=D.current;if(!r){let e=n.getBoundingClientRect();if(e.width<=0||e.height<=0)return;r=h(a?y(e):b(e,x()),x())}D.current=r,O.current=r;let i=t(r);E.current=i;try{i.element.setPointerCapture(i.pointerId)}catch{}S(r),window.addEventListener(`pointermove`,j),window.addEventListener(`pointerup`,M),window.addEventListener(`pointercancel`,M)},[A,j,M,a]),ce=(0,s.useCallback)(e=>{if(!n||e.target.closest(re))return;let t=c.current;t&&e.clientY-t.getBoundingClientRect().top>ne||N(e,t=>({mode:`move`,startX:e.clientX,startY:e.clientY,startGeom:t,pointerId:e.pointerId,element:e.currentTarget}))},[n,N]),le=(0,s.useCallback)(e=>t=>{t.stopPropagation(),N(t,n=>({mode:`resize`,position:e,startX:t.clientX,startY:t.clientY,startGeom:n,pointerId:t.pointerId,element:t.currentTarget}))},[N]),P=(0,s.useCallback)(()=>S(null),[]),ue=(0,s.useCallback)(e=>(...t)=>{oe.current||e(...t)},[]),de=(0,s.useCallback)(e=>t=>{if(!A)return;if(t.key===`0`){t.preventDefault(),P();return}let n=c.current;if(!n)return;let r=x(),i=D.current??y(n.getBoundingClientRect());if(t.key===`Home`||t.key===`End`){t.preventDefault(),S(v(i,e,t.key===`Home`?`min`:`max`,r,k));return}let a=t.shiftKey?64:16,o=te(e,t.key,a);o&&(t.preventDefault(),S(_(i,e,o.dx,o.dy,r,k)))},[A,P,k.minWidth,k.minHeight]);(0,s.useEffect)(()=>{if(!m||!w)return;function e(){let e=D.current;e&&S(h(e,x()))}return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[m,w]),(0,s.useEffect)(()=>()=>{window.removeEventListener(`pointermove`,j),window.removeEventListener(`pointerup`,M),window.removeEventListener(`pointercancel`,M);let e=E.current;if(e){try{e.element.releasePointerCapture(e.pointerId)}catch{}E.current=null}},[j,M]);let F=A&&m!==null,fe=F&&m?{position:`fixed`,left:m.x,top:m.y,width:m.w,height:m.h,maxWidth:`none`,maxHeight:`none`,margin:0,transform:`none`,animation:`none`}:{},pe=F?m:ie,I=A&&pe?u.map(e=>({position:e,role:`separator`,"aria-orientation":f(e),tabIndex:0,style:{position:`fixed`,...ee(e,pe)},onPointerDown:le(e),onKeyDown:de(e)})):[];return{panelRef:p,panelStyle:fe,headerHandleProps:{onPointerDown:ce},resizeHandles:I,isFloating:F,enabled:A,reset:P,guardBackdrop:ue}}var ie={nw:`cursor-nwse-resize`,n:`cursor-ns-resize`,ne:`cursor-nesw-resize`,e:`cursor-ew-resize`,se:`cursor-nwse-resize`,s:`cursor-ns-resize`,sw:`cursor-nesw-resize`,w:`cursor-ew-resize`};function C({handles:e}){let{t}=i(`common`);return e.length===0?null:(0,l.jsx)(l.Fragment,{children:e.map(e=>(0,l.jsx)(`div`,{"data-testid":`modal-resize-${e.position}`,role:e.role,"aria-orientation":e[`aria-orientation`],"aria-label":t(`modal.resize.${e.position}`),tabIndex:e.tabIndex,style:e.style,onPointerDown:e.onPointerDown,onKeyDown:e.onKeyDown,className:o(`z-[51] rounded-full bg-transparent transition-colors duration-150`,`hover:bg-accent-primary/20 focus:outline-none focus-visible:bg-accent-primary/30`,ie[e.position])},e.position))})}function w(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}function T(...e){return t=>{let n=!1,r=e.map(e=>{let r=w(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;t<r.length;t++){let n=r[t];typeof n==`function`?n():w(e[t],null)}}}}function E(...e){return s.useCallback(T(...e),e)}typeof window<`u`&&window.document&&window.document.createElement;function D(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}function ae(e,t){let n=s.createContext(t),r=e=>{let{children:t,...r}=e,i=s.useMemo(()=>r,Object.values(r));return(0,l.jsx)(n.Provider,{value:i,children:t})};r.displayName=e+`Provider`;function i(r){let i=s.useContext(n);if(i)return i;if(t!==void 0)return t;throw Error(`\`${r}\` must be used within \`${e}\``)}return[r,i]}function O(e,t=[]){let n=[];function r(t,r){let i=s.createContext(r),a=n.length;n=[...n,r];let o=t=>{let{scope:n,children:r,...o}=t,c=n?.[e]?.[a]||i,u=s.useMemo(()=>o,Object.values(o));return(0,l.jsx)(c.Provider,{value:u,children:r})};o.displayName=t+`Provider`;function c(n,o){let c=o?.[e]?.[a]||i,l=s.useContext(c);if(l)return l;if(r!==void 0)return r;throw Error(`\`${n}\` must be used within \`${t}\``)}return[o,c]}let i=()=>{let t=n.map(e=>s.createContext(e));return function(n){let r=n?.[e]||t;return s.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])}};return i.scopeName=e,[r,oe(i,...t)]}function oe(...e){let t=e[0];if(e.length===1)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return s.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return n.scopeName=t.scopeName,n}var k=globalThis?.document?s.useLayoutEffect:()=>{},A=s.useId||(()=>void 0),se=0;function j(e){let[t,n]=s.useState(A());return k(()=>{e||n(e=>e??String(se++))},[e]),e||(t?`radix-${t}`:``)}var M=s.useInsertionEffect||k;function N({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){let[i,a,o]=ce({defaultProp:t,onChange:n}),c=e!==void 0,l=c?e:i;{let t=s.useRef(e!==void 0);s.useEffect(()=>{let e=t.current;e!==c&&console.warn(`${r} is changing from ${e?`controlled`:`uncontrolled`} to ${c?`controlled`:`uncontrolled`}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),t.current=c},[c,r])}return[l,s.useCallback(t=>{if(c){let n=le(t)?t(e):t;n!==e&&o.current?.(n)}else a(t)},[c,e,a,o])]}function ce({defaultProp:e,onChange:t}){let[n,r]=s.useState(e),i=s.useRef(n),a=s.useRef(t);return M(()=>{a.current=t},[t]),s.useEffect(()=>{i.current!==n&&(a.current?.(n),i.current=n)},[n,i]),[n,r,a]}function le(e){return typeof e==`function`}function P(e){let t=ue(e),n=s.forwardRef((e,n)=>{let{children:r,...i}=e,a=s.Children.toArray(r),o=a.find(F);if(o){let e=o.props.children,r=a.map(t=>t===o?s.Children.count(e)>1?s.Children.only(null):s.isValidElement(e)?e.props.children:null:t);return(0,l.jsx)(t,{...i,ref:n,children:s.isValidElement(e)?s.cloneElement(e,void 0,r):null})}return(0,l.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function ue(e){let t=s.forwardRef((e,t)=>{let{children:n,...r}=e;if(s.isValidElement(n)){let e=pe(n),i=fe(r,n.props);return n.type!==s.Fragment&&(i.ref=t?T(t,e):e),s.cloneElement(n,i)}return s.Children.count(n)>1?s.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var de=Symbol(`radix.slottable`);function F(e){return s.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===de}function fe(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function pe(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var I=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=P(`Primitive.${t}`),r=s.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,l.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function me(e,t){e&&c.flushSync(()=>e.dispatchEvent(t))}function L(e){let t=s.useRef(e);return s.useEffect(()=>{t.current=e}),s.useMemo(()=>(...e)=>t.current?.(...e),[])}function he(e,t=globalThis?.document){let n=L(e);s.useEffect(()=>{let e=e=>{e.key===`Escape`&&n(e)};return t.addEventListener(`keydown`,e,{capture:!0}),()=>t.removeEventListener(`keydown`,e,{capture:!0})},[n,t])}var ge=`DismissableLayer`,_e=`dismissableLayer.update`,ve=`dismissableLayer.pointerDownOutside`,ye=`dismissableLayer.focusOutside`,be,xe=s.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Se=s.forwardRef((e,t)=>{let{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:o,onDismiss:c,...u}=e,d=s.useContext(xe),[f,p]=s.useState(null),m=f?.ownerDocument??globalThis?.document,[,h]=s.useState({}),g=E(t,e=>p(e)),_=Array.from(d.layers),[v]=[...d.layersWithOutsidePointerEventsDisabled].slice(-1),y=_.indexOf(v),b=f?_.indexOf(f):-1,ee=d.layersWithOutsidePointerEventsDisabled.size>0,te=b>=y,ne=Te(e=>{let t=e.target,n=[...d.branches].some(e=>e.contains(t));!te||n||(i?.(e),o?.(e),e.defaultPrevented||c?.())},m),x=Ee(e=>{let t=e.target;[...d.branches].some(e=>e.contains(t))||(a?.(e),o?.(e),e.defaultPrevented||c?.())},m);return he(e=>{b===d.layers.size-1&&(r?.(e),!e.defaultPrevented&&c&&(e.preventDefault(),c()))},m),s.useEffect(()=>{if(f)return n&&(d.layersWithOutsidePointerEventsDisabled.size===0&&(be=m.body.style.pointerEvents,m.body.style.pointerEvents=`none`),d.layersWithOutsidePointerEventsDisabled.add(f)),d.layers.add(f),De(),()=>{n&&d.layersWithOutsidePointerEventsDisabled.size===1&&(m.body.style.pointerEvents=be)}},[f,m,n,d]),s.useEffect(()=>()=>{f&&(d.layers.delete(f),d.layersWithOutsidePointerEventsDisabled.delete(f),De())},[f,d]),s.useEffect(()=>{let e=()=>h({});return document.addEventListener(_e,e),()=>document.removeEventListener(_e,e)},[]),(0,l.jsx)(I.div,{...u,ref:g,style:{pointerEvents:ee?te?`auto`:`none`:void 0,...e.style},onFocusCapture:D(e.onFocusCapture,x.onFocusCapture),onBlurCapture:D(e.onBlurCapture,x.onBlurCapture),onPointerDownCapture:D(e.onPointerDownCapture,ne.onPointerDownCapture)})});Se.displayName=ge;var Ce=`DismissableLayerBranch`,we=s.forwardRef((e,t)=>{let n=s.useContext(xe),r=s.useRef(null),i=E(t,r);return s.useEffect(()=>{let e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),(0,l.jsx)(I.div,{...e,ref:i})});we.displayName=Ce;function Te(e,t=globalThis?.document){let n=L(e),r=s.useRef(!1),i=s.useRef(()=>{});return s.useEffect(()=>{let e=e=>{if(e.target&&!r.current){let r=function(){Oe(ve,n,a,{discrete:!0})},a={originalEvent:e};e.pointerType===`touch`?(t.removeEventListener(`click`,i.current),i.current=r,t.addEventListener(`click`,i.current,{once:!0})):r()}else t.removeEventListener(`click`,i.current);r.current=!1},a=window.setTimeout(()=>{t.addEventListener(`pointerdown`,e)},0);return()=>{window.clearTimeout(a),t.removeEventListener(`pointerdown`,e),t.removeEventListener(`click`,i.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function Ee(e,t=globalThis?.document){let n=L(e),r=s.useRef(!1);return s.useEffect(()=>{let e=e=>{e.target&&!r.current&&Oe(ye,n,{originalEvent:e},{discrete:!1})};return t.addEventListener(`focusin`,e),()=>t.removeEventListener(`focusin`,e)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function De(){let e=new CustomEvent(_e);document.dispatchEvent(e)}function Oe(e,t,n,{discrete:r}){let i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?me(i,a):i.dispatchEvent(a)}var ke=`focusScope.autoFocusOnMount`,Ae=`focusScope.autoFocusOnUnmount`,je={bubbles:!1,cancelable:!0},Me=`FocusScope`,Ne=s.forwardRef((e,t)=>{let{loop:n=!1,trapped:r=!1,onMountAutoFocus:i,onUnmountAutoFocus:a,...o}=e,[c,u]=s.useState(null),d=L(i),f=L(a),p=s.useRef(null),m=E(t,e=>u(e)),h=s.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;s.useEffect(()=>{if(r){let e=function(e){if(h.paused||!c)return;let t=e.target;c.contains(t)?p.current=t:R(p.current,{select:!0})},t=function(e){if(h.paused||!c)return;let t=e.relatedTarget;t!==null&&(c.contains(t)||R(p.current,{select:!0}))},n=function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&R(c)};document.addEventListener(`focusin`,e),document.addEventListener(`focusout`,t);let r=new MutationObserver(n);return c&&r.observe(c,{childList:!0,subtree:!0}),()=>{document.removeEventListener(`focusin`,e),document.removeEventListener(`focusout`,t),r.disconnect()}}},[r,c,h.paused]),s.useEffect(()=>{if(c){Be.add(h);let e=document.activeElement;if(!c.contains(e)){let t=new CustomEvent(ke,je);c.addEventListener(ke,d),c.dispatchEvent(t),t.defaultPrevented||(Pe(Ue(Ie(c)),{select:!0}),document.activeElement===e&&R(c))}return()=>{c.removeEventListener(ke,d),setTimeout(()=>{let t=new CustomEvent(Ae,je);c.addEventListener(Ae,f),c.dispatchEvent(t),t.defaultPrevented||R(e??document.body,{select:!0}),c.removeEventListener(Ae,f),Be.remove(h)},0)}}},[c,d,f,h]);let g=s.useCallback(e=>{if(!n&&!r||h.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,i=document.activeElement;if(t&&i){let t=e.currentTarget,[r,a]=Fe(t);r&&a?!e.shiftKey&&i===a?(e.preventDefault(),n&&R(r,{select:!0})):e.shiftKey&&i===r&&(e.preventDefault(),n&&R(a,{select:!0})):i===t&&e.preventDefault()}},[n,r,h.paused]);return(0,l.jsx)(I.div,{tabIndex:-1,...o,ref:m,onKeyDown:g})});Ne.displayName=Me;function Pe(e,{select:t=!1}={}){let n=document.activeElement;for(let r of e)if(R(r,{select:t}),document.activeElement!==n)return}function Fe(e){let t=Ie(e);return[Le(t,e),Le(t.reverse(),e)]}function Ie(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function Le(e,t){for(let n of e)if(!Re(n,{upTo:t}))return n}function Re(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}function ze(e){return e instanceof HTMLInputElement&&`select`in e}function R(e,{select:t=!1}={}){if(e&&e.focus){let n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&ze(e)&&t&&e.select()}}var Be=Ve();function Ve(){let e=[];return{add(t){let n=e[0];t!==n&&n?.pause(),e=He(e,t),e.unshift(t)},remove(t){e=He(e,t),e[0]?.resume()}}}function He(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function Ue(e){return e.filter(e=>e.tagName!==`A`)}var We=`Portal`,Ge=s.forwardRef((e,t)=>{let{container:n,...r}=e,[i,a]=s.useState(!1);k(()=>a(!0),[]);let o=n||i&&globalThis?.document?.body;return o?c.createPortal((0,l.jsx)(I.div,{...r,ref:t}),o):null});Ge.displayName=We;function Ke(e,t){return s.useReducer((e,n)=>t[e][n]??e,e)}var z=e=>{let{present:t,children:n}=e,r=qe(t),i=typeof n==`function`?n({present:r.isPresent}):s.Children.only(n),a=E(r.ref,Je(i));return typeof n==`function`||r.isPresent?s.cloneElement(i,{ref:a}):null};z.displayName=`Presence`;function qe(e){let[t,n]=s.useState(),r=s.useRef(null),i=s.useRef(e),a=s.useRef(`none`),[o,c]=Ke(e?`mounted`:`unmounted`,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}});return s.useEffect(()=>{let e=B(r.current);a.current=o===`mounted`?e:`none`},[o]),k(()=>{let t=r.current,n=i.current;if(n!==e){let r=a.current,o=B(t);e?c(`MOUNT`):o===`none`||t?.display===`none`?c(`UNMOUNT`):c(n&&r!==o?`ANIMATION_OUT`:`UNMOUNT`),i.current=e}},[e,c]),k(()=>{if(t){let e,n=t.ownerDocument.defaultView??window,o=a=>{let o=B(r.current).includes(CSS.escape(a.animationName));if(a.target===t&&o&&(c(`ANIMATION_END`),!i.current)){let r=t.style.animationFillMode;t.style.animationFillMode=`forwards`,e=n.setTimeout(()=>{t.style.animationFillMode===`forwards`&&(t.style.animationFillMode=r)})}},s=e=>{e.target===t&&(a.current=B(r.current))};return t.addEventListener(`animationstart`,s),t.addEventListener(`animationcancel`,o),t.addEventListener(`animationend`,o),()=>{n.clearTimeout(e),t.removeEventListener(`animationstart`,s),t.removeEventListener(`animationcancel`,o),t.removeEventListener(`animationend`,o)}}else c(`ANIMATION_END`)},[t,c]),{isPresent:[`mounted`,`unmountSuspended`].includes(o),ref:s.useCallback(e=>{r.current=e?getComputedStyle(e):null,n(e)},[])}}function B(e){return e?.animationName||`none`}function Je(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Ye=0;function Xe(){s.useEffect(()=>{let e=document.querySelectorAll(`[data-radix-focus-guard]`);return document.body.insertAdjacentElement(`afterbegin`,e[0]??Ze()),document.body.insertAdjacentElement(`beforeend`,e[1]??Ze()),Ye++,()=>{Ye===1&&document.querySelectorAll(`[data-radix-focus-guard]`).forEach(e=>e.remove()),Ye--}},[])}function Ze(){let e=document.createElement(`span`);return e.setAttribute(`data-radix-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}var V=function(){return V=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},V.apply(this,arguments)};function Qe(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n}function $e(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))}var H=`right-scroll-bar-position`,U=`width-before-scroll-bar`,et=`with-scroll-bars-hidden`,tt=`--removed-body-scroll-bar-size`;function nt(e,t){return typeof e==`function`?e(t):e&&(e.current=t),e}function rt(e,t){var n=(0,s.useState)(function(){return{value:e,callback:t,facade:{get current(){return n.value},set current(e){var t=n.value;t!==e&&(n.value=e,n.callback(e,t))}}}})[0];return n.callback=t,n.facade}var it=typeof window<`u`?s.useLayoutEffect:s.useEffect,at=new WeakMap;function ot(e,t){var n=rt(t||null,function(t){return e.forEach(function(e){return nt(e,t)})});return it(function(){var t=at.get(n);if(t){var r=new Set(t),i=new Set(e),a=n.current;r.forEach(function(e){i.has(e)||nt(e,null)}),i.forEach(function(e){r.has(e)||nt(e,a)})}at.set(n,e)},[e]),n}function st(e){return e}function ct(e,t){t===void 0&&(t=st);var n=[],r=!1;return{read:function(){if(r)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:e},useMedium:function(e){var i=t(e,r);return n.push(i),function(){n=n.filter(function(e){return e!==i})}},assignSyncMedium:function(e){for(r=!0;n.length;){var t=n;n=[],t.forEach(e)}n={push:function(t){return e(t)},filter:function(){return n}}},assignMedium:function(e){r=!0;var t=[];if(n.length){var i=n;n=[],i.forEach(e),t=n}var a=function(){var n=t;t=[],n.forEach(e)},o=function(){return Promise.resolve().then(a)};o(),n={push:function(e){t.push(e),o()},filter:function(e){return t=t.filter(e),n}}}}}function lt(e){e===void 0&&(e={});var t=ct(null);return t.options=V({async:!0,ssr:!1},e),t}var ut=function(e){var t=e.sideCar,n=Qe(e,[`sideCar`]);if(!t)throw Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw Error(`Sidecar medium not found`);return s.createElement(r,V({},n))};ut.isSideCarExport=!0;function dt(e,t){return e.useMedium(t),ut}var ft=lt(),pt=function(){},W=s.forwardRef(function(e,t){var n=s.useRef(null),r=s.useState({onScrollCapture:pt,onWheelCapture:pt,onTouchMoveCapture:pt}),i=r[0],a=r[1],o=e.forwardProps,c=e.children,l=e.className,u=e.removeScrollBar,d=e.enabled,f=e.shards,p=e.sideCar,m=e.noRelative,h=e.noIsolation,g=e.inert,_=e.allowPinchZoom,v=e.as,y=v===void 0?`div`:v,b=e.gapMode,ee=Qe(e,[`forwardProps`,`children`,`className`,`removeScrollBar`,`enabled`,`shards`,`sideCar`,`noRelative`,`noIsolation`,`inert`,`allowPinchZoom`,`as`,`gapMode`]),te=p,ne=ot([n,t]),x=V(V({},ee),i);return s.createElement(s.Fragment,null,d&&s.createElement(te,{sideCar:ft,removeScrollBar:u,shards:f,noRelative:m,noIsolation:h,inert:g,setCallbacks:a,allowPinchZoom:!!_,lockRef:n,gapMode:b}),o?s.cloneElement(s.Children.only(c),V(V({},x),{ref:ne})):s.createElement(y,V({},x,{className:l,ref:ne}),c))});W.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},W.classNames={fullWidth:U,zeroRight:H};var mt,ht=function(){if(mt)return mt;if(typeof __webpack_nonce__<`u`)return __webpack_nonce__};function gt(){if(!document)return null;var e=document.createElement(`style`);e.type=`text/css`;var t=ht();return t&&e.setAttribute(`nonce`,t),e}function _t(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function vt(e){(document.head||document.getElementsByTagName(`head`)[0]).appendChild(e)}var yt=function(){var e=0,t=null;return{add:function(n){e==0&&(t=gt())&&(_t(t,n),vt(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},bt=function(){var e=yt();return function(t,n){s.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},xt=function(){var e=bt();return function(t){var n=t.styles,r=t.dynamic;return e(n,r),null}},St={left:0,top:0,right:0,gap:0},Ct=function(e){return parseInt(e||``,10)||0},wt=function(e){var t=window.getComputedStyle(document.body),n=t[e===`padding`?`paddingLeft`:`marginLeft`],r=t[e===`padding`?`paddingTop`:`marginTop`],i=t[e===`padding`?`paddingRight`:`marginRight`];return[Ct(n),Ct(r),Ct(i)]},Tt=function(e){if(e===void 0&&(e=`margin`),typeof window>`u`)return St;var t=wt(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},Et=xt(),G=`data-scroll-locked`,Dt=function(e,t,n,r){var i=e.left,a=e.top,o=e.right,s=e.gap;return n===void 0&&(n=`margin`),`
2
- .${et} {
3
- overflow: hidden ${r};
4
- padding-right: ${s}px ${r};
5
- }
6
- body[${G}] {
7
- overflow: hidden ${r};
8
- overscroll-behavior: contain;
9
- ${[t&&`position: relative ${r};`,n===`margin`&&`
10
- padding-left: ${i}px;
11
- padding-top: ${a}px;
12
- padding-right: ${o}px;
13
- margin-left:0;
14
- margin-top:0;
15
- margin-right: ${s}px ${r};
16
- `,n===`padding`&&`padding-right: ${s}px ${r};`].filter(Boolean).join(``)}
17
- }
18
-
19
- .${H} {
20
- right: ${s}px ${r};
21
- }
22
-
23
- .${U} {
24
- margin-right: ${s}px ${r};
25
- }
26
-
27
- .${H} .${H} {
28
- right: 0 ${r};
29
- }
30
-
31
- .${U} .${U} {
32
- margin-right: 0 ${r};
33
- }
34
-
35
- body[${G}] {
36
- ${tt}: ${s}px;
37
- }
38
- `},Ot=function(){var e=parseInt(document.body.getAttribute(`data-scroll-locked`)||`0`,10);return isFinite(e)?e:0},kt=function(){s.useEffect(function(){return document.body.setAttribute(G,(Ot()+1).toString()),function(){var e=Ot()-1;e<=0?document.body.removeAttribute(G):document.body.setAttribute(G,e.toString())}},[])},At=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?`margin`:r;kt();var a=s.useMemo(function(){return Tt(i)},[i]);return s.createElement(Et,{styles:Dt(a,!t,i,n?``:`!important`)})},jt=!1;if(typeof window<`u`)try{var K=Object.defineProperty({},"passive",{get:function(){return jt=!0,!0}});window.addEventListener(`test`,K,K),window.removeEventListener(`test`,K,K)}catch{jt=!1}var q=jt?{passive:!1}:!1,Mt=function(e){return e.tagName===`TEXTAREA`},Nt=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!==`hidden`&&!(n.overflowY===n.overflowX&&!Mt(e)&&n[t]===`visible`)},Pt=function(e){return Nt(e,`overflowY`)},Ft=function(e){return Nt(e,`overflowX`)},It=function(e,t){var n=t.ownerDocument,r=t;do{if(typeof ShadowRoot<`u`&&r instanceof ShadowRoot&&(r=r.host),zt(e,r)){var i=Bt(e,r);if(i[1]>i[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},Lt=function(e){return[e.scrollTop,e.scrollHeight,e.clientHeight]},Rt=function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]},zt=function(e,t){return e===`v`?Pt(t):Ft(t)},Bt=function(e,t){return e===`v`?Lt(t):Rt(t)},Vt=function(e,t){return e===`h`&&t===`rtl`?-1:1},Ht=function(e,t,n,r,i){var a=Vt(e,window.getComputedStyle(t).direction),o=a*r,s=n.target,c=t.contains(s),l=!1,u=o>0,d=0,f=0;do{if(!s)break;var p=Bt(e,s),m=p[0],h=p[1]-p[2]-a*m;(m||h)&&zt(e,s)&&(d+=h,f+=m);var g=s.parentNode;s=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!c&&s!==document.body||c&&(t.contains(s)||t===s));return(u&&(i&&Math.abs(d)<1||!i&&o>d)||!u&&(i&&Math.abs(f)<1||!i&&-o>f))&&(l=!0),l},J=function(e){return`changedTouches`in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Ut=function(e){return[e.deltaX,e.deltaY]},Wt=function(e){return e&&`current`in e?e.current:e},Gt=function(e,t){return e[0]===t[0]&&e[1]===t[1]},Kt=function(e){return`
39
- .block-interactivity-${e} {pointer-events: none;}
40
- .allow-interactivity-${e} {pointer-events: all;}
41
- `},qt=0,Y=[];function Jt(e){var t=s.useRef([]),n=s.useRef([0,0]),r=s.useRef(),i=s.useState(qt++)[0],a=s.useState(xt)[0],o=s.useRef(e);s.useEffect(function(){o.current=e},[e]),s.useEffect(function(){if(e.inert){document.body.classList.add(`block-interactivity-${i}`);var t=$e([e.lockRef.current],(e.shards||[]).map(Wt),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add(`allow-interactivity-${i}`)}),function(){document.body.classList.remove(`block-interactivity-${i}`),t.forEach(function(e){return e.classList.remove(`allow-interactivity-${i}`)})}}},[e.inert,e.lockRef.current,e.shards]);var c=s.useCallback(function(e,t){if(`touches`in e&&e.touches.length===2||e.type===`wheel`&&e.ctrlKey)return!o.current.allowPinchZoom;var i=J(e),a=n.current,s=`deltaX`in e?e.deltaX:a[0]-i[0],c=`deltaY`in e?e.deltaY:a[1]-i[1],l,u=e.target,d=Math.abs(s)>Math.abs(c)?`h`:`v`;if(`touches`in e&&d===`h`&&u.type===`range`)return!1;var f=window.getSelection(),p=f&&f.anchorNode;if(p&&(p===u||p.contains(u)))return!1;var m=It(d,u);if(!m)return!0;if(m?l=d:(l=d===`v`?`h`:`v`,m=It(d,u)),!m)return!1;if(!r.current&&`changedTouches`in e&&(s||c)&&(r.current=l),!l)return!0;var h=r.current||l;return Ht(h,t,e,h===`h`?s:c,!0)},[]),l=s.useCallback(function(e){var n=e;if(!(!Y.length||Y[Y.length-1]!==a)){var r=`deltaY`in n?Ut(n):J(n),i=t.current.filter(function(e){return e.name===n.type&&(e.target===n.target||n.target===e.shadowParent)&&Gt(e.delta,r)})[0];if(i&&i.should){n.cancelable&&n.preventDefault();return}if(!i){var s=(o.current.shards||[]).map(Wt).filter(Boolean).filter(function(e){return e.contains(n.target)});(s.length>0?c(n,s[0]):!o.current.noIsolation)&&n.cancelable&&n.preventDefault()}}},[]),u=s.useCallback(function(e,n,r,i){var a={name:e,delta:n,target:r,should:i,shadowParent:Yt(r)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),d=s.useCallback(function(e){n.current=J(e),r.current=void 0},[]),f=s.useCallback(function(t){u(t.type,Ut(t),t.target,c(t,e.lockRef.current))},[]),p=s.useCallback(function(t){u(t.type,J(t),t.target,c(t,e.lockRef.current))},[]);s.useEffect(function(){return Y.push(a),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:p}),document.addEventListener(`wheel`,l,q),document.addEventListener(`touchmove`,l,q),document.addEventListener(`touchstart`,d,q),function(){Y=Y.filter(function(e){return e!==a}),document.removeEventListener(`wheel`,l,q),document.removeEventListener(`touchmove`,l,q),document.removeEventListener(`touchstart`,d,q)}},[]);var m=e.removeScrollBar,h=e.inert;return s.createElement(s.Fragment,null,h?s.createElement(a,{styles:Kt(i)}):null,m?s.createElement(At,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function Yt(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}var Xt=dt(ft,Jt),Zt=s.forwardRef(function(e,t){return s.createElement(W,V({},e,{ref:t,sideCar:Xt}))});Zt.classNames=W.classNames;var Qt=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},X=new WeakMap,Z=new WeakMap,$t={},en=0,tn=function(e){return e&&(e.host||tn(e.parentNode))},nn=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=tn(t);return n&&e.contains(n)?n:(console.error(`aria-hidden`,t,`in not contained inside`,e,`. Doing nothing`),null)}).filter(function(e){return!!e})},rn=function(e,t,n,r){var i=nn(t,Array.isArray(e)?e:[e]);$t[n]||($t[n]=new WeakMap);var a=$t[n],o=[],s=new Set,c=new Set(i),l=function(e){!e||s.has(e)||(s.add(e),l(e.parentNode))};i.forEach(l);var u=function(e){!e||c.has(e)||Array.prototype.forEach.call(e.children,function(e){if(s.has(e))u(e);else try{var t=e.getAttribute(r),i=t!==null&&t!==`false`,c=(X.get(e)||0)+1,l=(a.get(e)||0)+1;X.set(e,c),a.set(e,l),o.push(e),c===1&&i&&Z.set(e,!0),l===1&&e.setAttribute(n,`true`),i||e.setAttribute(r,`true`)}catch(t){console.error(`aria-hidden: cannot operate on `,e,t)}})};return u(t),s.clear(),en++,function(){o.forEach(function(e){var t=X.get(e)-1,i=a.get(e)-1;X.set(e,t),a.set(e,i),t||(Z.has(e)||e.removeAttribute(r),Z.delete(e)),i||e.removeAttribute(n)}),en--,en||(X=new WeakMap,X=new WeakMap,Z=new WeakMap,$t={})}},an=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||Qt(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),rn(r,i,n,`aria-hidden`)):function(){return null}};function on(e){let t=sn(e),n=s.forwardRef((e,n)=>{let{children:r,...i}=e,a=s.Children.toArray(r),o=a.find(ln);if(o){let e=o.props.children,r=a.map(t=>t===o?s.Children.count(e)>1?s.Children.only(null):s.isValidElement(e)?e.props.children:null:t);return(0,l.jsx)(t,{...i,ref:n,children:s.isValidElement(e)?s.cloneElement(e,void 0,r):null})}return(0,l.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function sn(e){let t=s.forwardRef((e,t)=>{let{children:n,...r}=e;if(s.isValidElement(n)){let e=dn(n),i=un(r,n.props);return n.type!==s.Fragment&&(i.ref=t?T(t,e):e),s.cloneElement(n,i)}return s.Children.count(n)>1?s.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var cn=Symbol(`radix.slottable`);function ln(e){return s.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===cn}function un(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function dn(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var fn=`Dialog`,[pn,mn]=O(fn),[hn,Q]=pn(fn),gn=e=>{let{__scopeDialog:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!0}=e,c=s.useRef(null),u=s.useRef(null),[d,f]=N({prop:r,defaultProp:i??!1,onChange:a,caller:fn});return(0,l.jsx)(hn,{scope:t,triggerRef:c,contentRef:u,contentId:j(),titleId:j(),descriptionId:j(),open:d,onOpenChange:f,onOpenToggle:s.useCallback(()=>f(e=>!e),[f]),modal:o,children:n})};gn.displayName=fn;var _n=`DialogTrigger`,vn=s.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=Q(_n,n),a=E(t,i.triggerRef);return(0,l.jsx)(I.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":i.open,"aria-controls":i.contentId,"data-state":Ln(i.open),...r,ref:a,onClick:D(e.onClick,i.onOpenToggle)})});vn.displayName=_n;var yn=`DialogPortal`,[bn,xn]=pn(yn,{forceMount:void 0}),Sn=e=>{let{__scopeDialog:t,forceMount:n,children:r,container:i}=e,a=Q(yn,t);return(0,l.jsx)(bn,{scope:t,forceMount:n,children:s.Children.map(r,e=>(0,l.jsx)(z,{present:n||a.open,children:(0,l.jsx)(Ge,{asChild:!0,container:i,children:e})}))})};Sn.displayName=yn;var Cn=`DialogOverlay`,wn=s.forwardRef((e,t)=>{let n=xn(Cn,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Q(Cn,e.__scopeDialog);return a.modal?(0,l.jsx)(z,{present:r||a.open,children:(0,l.jsx)(En,{...i,ref:t})}):null});wn.displayName=Cn;var Tn=on(`DialogOverlay.RemoveScroll`),En=s.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=Q(Cn,n);return(0,l.jsx)(Zt,{as:Tn,allowPinchZoom:!0,shards:[i.contentRef],children:(0,l.jsx)(I.div,{"data-state":Ln(i.open),...r,ref:t,style:{pointerEvents:`auto`,...r.style}})})}),$=`DialogContent`,Dn=s.forwardRef((e,t)=>{let n=xn($,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Q($,e.__scopeDialog);return(0,l.jsx)(z,{present:r||a.open,children:a.modal?(0,l.jsx)(On,{...i,ref:t}):(0,l.jsx)(kn,{...i,ref:t})})});Dn.displayName=$;var On=s.forwardRef((e,t)=>{let n=Q($,e.__scopeDialog),r=s.useRef(null),i=E(t,n.contentRef,r);return s.useEffect(()=>{let e=r.current;if(e)return an(e)},[]),(0,l.jsx)(An,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:D(e.onCloseAutoFocus,e=>{e.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:D(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()}),onFocusOutside:D(e.onFocusOutside,e=>e.preventDefault())})}),kn=s.forwardRef((e,t)=>{let n=Q($,e.__scopeDialog),r=s.useRef(!1),i=s.useRef(!1);return(0,l.jsx)(An,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})}),An=s.forwardRef((e,t)=>{let{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,...o}=e,c=Q($,n),u=s.useRef(null),d=E(t,u);return Xe(),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(Ne,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,l.jsx)(Se,{role:`dialog`,id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":Ln(c.open),...o,ref:d,onDismiss:()=>c.onOpenChange(!1)})}),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(Vn,{titleId:c.titleId}),(0,l.jsx)(Un,{contentRef:u,descriptionId:c.descriptionId})]})]})}),jn=`DialogTitle`,Mn=s.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=Q(jn,n);return(0,l.jsx)(I.h2,{id:i.titleId,...r,ref:t})});Mn.displayName=jn;var Nn=`DialogDescription`,Pn=s.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=Q(Nn,n);return(0,l.jsx)(I.p,{id:i.descriptionId,...r,ref:t})});Pn.displayName=Nn;var Fn=`DialogClose`,In=s.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=Q(Fn,n);return(0,l.jsx)(I.button,{type:`button`,...r,ref:t,onClick:D(e.onClick,()=>i.onOpenChange(!1))})});In.displayName=Fn;function Ln(e){return e?`open`:`closed`}var Rn=`DialogTitleWarning`,[zn,Bn]=ae(Rn,{contentName:$,titleName:jn,docsSlug:`dialog`}),Vn=({titleId:e})=>{let t=Bn(Rn),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
42
-
43
- If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
44
-
45
- For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return s.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},Hn=`DialogDescriptionWarning`,Un=({contentRef:e,descriptionId:t})=>{let n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Bn(Hn).contentName}}.`;return s.useEffect(()=>{let r=e.current?.getAttribute(`aria-describedby`);t&&r&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null},Wn=gn,Gn=Sn,Kn=wn,qn=Dn,Jn=Mn,Yn=Pn,Xn=In;function Zn(...e){return s.useCallback(t=>{for(let n of e)n&&(typeof n==`function`?n(t):n.current=t)},e)}var Qn=Wn,$n=Gn,er=Xn,tr=s.forwardRef(({className:e,...t},n)=>(0,l.jsx)(Kn,{ref:n,className:o(`fixed inset-0 z-50 bg-black/60 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`,e),...t}));tr.displayName=Kn.displayName;var nr=()=>{let{t:e}=i(`common`);return(0,l.jsxs)(Xn,{className:`absolute right-4 top-4 z-20 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground`,children:[(0,l.jsx)(a,{className:`h-4 w-4`}),(0,l.jsx)(`span`,{className:`sr-only`,children:e(`actions.close`)})]})},rr=s.forwardRef(({className:e,children:t,showCloseButton:n=!0,movableResizable:r=!1,style:i,...a},s)=>{let{panelRef:c,panelStyle:u,resizeHandles:d}=S({enabled:r,allowMove:!1}),f=Zn(s,c);return r?(0,l.jsxs)($n,{children:[(0,l.jsx)(tr,{}),(0,l.jsxs)(qn,{ref:f,style:{...i,...u},className:o(`fixed left-[50%] top-[50%] z-50 grid w-full max-w-2xl max-h-[85vh] translate-x-[-50%] translate-y-[-50%] gap-4 border border-border/30 bg-popover p-6 shadow-xl backdrop-blur-md duration-200 overflow-y-auto data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-xl`,e),...a,children:[t,n&&(0,l.jsx)(nr,{})]}),(0,l.jsx)(C,{handles:d})]}):(0,l.jsxs)($n,{children:[(0,l.jsx)(tr,{}),(0,l.jsxs)(qn,{ref:s,style:i,className:o(`fixed left-[50%] top-[50%] z-50 grid w-full max-w-2xl max-h-[85vh] translate-x-[-50%] translate-y-[-50%] gap-4 border border-border/30 bg-popover p-6 shadow-xl backdrop-blur-md duration-200 overflow-y-auto data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-xl`,e),...a,children:[t,n&&(0,l.jsx)(nr,{})]})]})});rr.displayName=qn.displayName;var ir=({className:e,...t})=>(0,l.jsx)(`div`,{className:o(`flex flex-col space-y-1.5 text-center sm:text-left`,e),...t});ir.displayName=`DialogHeader`;var ar=({className:e,...t})=>(0,l.jsx)(`div`,{className:o(`flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2`,e),...t});ar.displayName=`DialogFooter`;var or=s.forwardRef(({className:e,...t},n)=>(0,l.jsx)(Jn,{ref:n,className:o(`text-lg font-semibold leading-none tracking-tight`,e),...t}));or.displayName=Jn.displayName;var sr=s.forwardRef(({className:e,...t},n)=>(0,l.jsx)(Yn,{ref:n,className:o(`text-xs text-muted-foreground`,e),...t}));sr.displayName=Yn.displayName;export{E as A,I as C,O as D,k as E,S as M,D as O,L as S,j as T,Xe as _,ar as a,Ne as b,$n as c,Kn as d,Gn as f,Zt as g,an as h,sr as i,C as j,T as k,or as l,Jn as m,er as n,ir as o,Wn as p,rr as r,tr as s,Qn as t,qn as u,z as v,N as w,Se as x,Ge as y};