@vostride/agent-qa-dashboard-ui 0.1.14 → 0.1.16

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 (97) hide show
  1. package/dist/assets/{arrow-up-down-D_ErIdrE.js → arrow-up-down-CwmMJuHC.js} +1 -1
  2. package/dist/assets/{badge-ClWCtaXi.js → badge-D56AWxFv.js} +1 -1
  3. package/dist/assets/{batch-action-bar-BoqzHfwU.js → batch-action-bar-DI05CPwy.js} +1 -1
  4. package/dist/assets/{circle-alert-D7wbtVU2.js → circle-alert-RZI0g_tD.js} +1 -1
  5. package/dist/assets/{circle-x-BOV-jCVR.js → circle-x-CcGlHxRU.js} +1 -1
  6. package/dist/assets/config-BafxmOwJ.js +10 -0
  7. package/dist/assets/{copy-DW4nc-pA.js → copy-CWpai22Y.js} +1 -1
  8. package/dist/assets/{display-step-vpHdm2LX.js → display-step-nrAd20yH.js} +1 -1
  9. package/dist/assets/{dist-BsGrTrYb.js → dist-CyWxUoCv.js} +1 -1
  10. package/dist/assets/{dist-BABsMbMt.js → dist-DaacWHUX.js} +1 -1
  11. package/dist/assets/dist-itgTE_D5.js +1 -0
  12. package/dist/assets/{empty-state-BTFWlITi.js → empty-state-DEbHhF9f.js} +1 -1
  13. package/dist/assets/{external-link-CnabSkqe.js → external-link-xaS9gsyo.js} +1 -1
  14. package/dist/assets/{eye-Cj7s1eMQ.js → eye-BmHDIr7J.js} +1 -1
  15. package/dist/assets/{file-code-DxVUPin2.js → file-code-B22xRpxi.js} +1 -1
  16. package/dist/assets/{file-search-BRbGARSr.js → file-search-CeDGqauF.js} +1 -1
  17. package/dist/assets/filename-validation-Dabe2ngK.js +1 -0
  18. package/dist/assets/{grip-vertical-C5AW4fiD.js → grip-vertical-CJUfU7Zx.js} +1 -1
  19. package/dist/assets/{hook-editor-KoqKvv73.js → hook-editor-CmPzPqnr.js} +1 -1
  20. package/dist/assets/{hook-runtime-DZ6bR69q.js → hook-runtime-D7L2zX15.js} +1 -1
  21. package/dist/assets/{hook-viewer-DWsN8RyZ.js → hook-viewer-BvNgWI6w.js} +1 -1
  22. package/dist/assets/hooks-C1lVbVNu.js +1 -0
  23. package/dist/assets/{id-badge-BpTnHwvn.js → id-badge-DO71VWC9.js} +2 -2
  24. package/dist/assets/index-B5JVEaaS.css +2 -0
  25. package/dist/assets/index-C_HfATr4.js +57 -0
  26. package/dist/assets/{insights-Dtq5Rwby.js → insights-EjXDNx86.js} +1 -1
  27. package/dist/assets/{insights-line-grid-X5lNbmTY.js → insights-line-grid-CJdb529A.js} +6 -6
  28. package/dist/assets/{lib-u_ZEFKZp.js → lib-hhwTCYTD.js} +1 -1
  29. package/dist/assets/live-run-CnQOMMWG.js +1 -0
  30. package/dist/assets/{memory-DS-02aNZ.js → memory-BSLWD6RW.js} +1 -1
  31. package/dist/assets/{memory-product-5m-eyxzH.js → memory-product-0B7_AV3X.js} +2 -2
  32. package/dist/assets/{monaco-editor-BEWq4fzI.js → monaco-editor-BYBlJAjA.js} +2 -2
  33. package/dist/assets/{monaco-editor-inner-B6AQm3h7.js → monaco-editor-inner-C0PbrlIr.js} +2 -2
  34. package/dist/assets/{monaco.contribution-Dum2B1vn.js → monaco.contribution-Bq7keHQp.js} +2 -2
  35. package/dist/assets/{observation-block-2qfTbm41.js → observation-block-DvMkTmgC.js} +1 -1
  36. package/dist/assets/observation-markdown-Bgcyet5t.js +1 -0
  37. package/dist/assets/{pencil-BUQgVaEH.js → pencil-Dga__f-A.js} +1 -1
  38. package/dist/assets/plus-BhWnvE6F.js +1 -0
  39. package/dist/assets/popover-Boe1excX.js +1 -0
  40. package/dist/assets/{refresh-cw-D0OwRzvm.js → refresh-cw-Dhidp9m2.js} +1 -1
  41. package/dist/assets/{resizable-ugU12HrY.js → resizable-o8j3Lihm.js} +1 -1
  42. package/dist/assets/run-detail-CPo5ENE6.js +1 -0
  43. package/dist/assets/runs-CvH2p_Ks.js +1 -0
  44. package/dist/assets/{scroll-area-CX3T8JWh.js → scroll-area-B8cRs7wd.js} +1 -1
  45. package/dist/assets/select-BE8tKMJy.js +1 -0
  46. package/dist/assets/{shortcut-hints-B8kCurzo.js → shortcut-hints-BGIo5sip.js} +1 -1
  47. package/dist/assets/split-button-CcR2TDPY.js +1 -0
  48. package/dist/assets/square-8TpalBCd.js +1 -0
  49. package/dist/assets/{step-name-pills-BQ8yv40K.js → step-name-pills-0sDNmrmn.js} +1 -1
  50. package/dist/assets/suite-editor-BUzpsLUR.js +5 -0
  51. package/dist/assets/suite-navbar-COFDYHho.js +1 -0
  52. package/dist/assets/{suite-viewer-CmbLH1G2.js → suite-viewer-B62crjkX.js} +1 -1
  53. package/dist/assets/suites-vH7UvBPg.js +1 -0
  54. package/dist/assets/{switch-Dv7aVqt1.js → switch-A6NW_YxI.js} +1 -1
  55. package/dist/assets/tab-console-BXF3HNpW.js +1 -0
  56. package/dist/assets/{table-BOjrxBBL.js → table-D4kdbpq8.js} +1 -1
  57. package/dist/assets/{tabs-BEp-p5jh.js → tabs-C3NqUdx9.js} +1 -1
  58. package/dist/assets/test-editor-BnD3gcCG.js +9 -0
  59. package/dist/assets/test-navbar-ZDxlwtJH.js +7 -0
  60. package/dist/assets/{test-viewer-DEQQDURn.js → test-viewer-B-G8G6FH.js} +1 -1
  61. package/dist/assets/tests-BcPHa9Nc.js +1 -0
  62. package/dist/assets/{tests-suites-table-widths-D2sc1JmR.js → tests-suites-table-widths-CPWjMEBc.js} +1 -1
  63. package/dist/assets/{textarea-BFsDx2mB.js → textarea-87HpNno6.js} +1 -1
  64. package/dist/assets/{trash-2-Dv939XWG.js → trash-2-sbLDCPlz.js} +1 -1
  65. package/dist/assets/{tsMode-CnaplBFQ.js → tsMode-BHB8FsID.js} +1 -1
  66. package/dist/assets/{use-hook-run-session-BLSTM6LJ.js → use-hook-run-session-n1RKgcn6.js} +1 -1
  67. package/dist/assets/{use-keyboard-shortcuts-COnAPsDD.js → use-keyboard-shortcuts-BM0qq0DE.js} +1 -1
  68. package/dist/assets/{use-page-title-CsUoFrfG.js → use-page-title-CyHzJAcR.js} +1 -1
  69. package/dist/assets/use-run-status-favicon-DTTz9_8q.js +1 -0
  70. package/dist/assets/{use-selection-queue-BkEWIfvw.js → use-selection-queue-CIpsCzay.js} +1 -1
  71. package/dist/assets/{viewer-url-state-PwkMc-qK.js → viewer-url-state-BgjmiiI7.js} +1 -1
  72. package/dist/assets/{zap-Dx2CqraS.js → zap-DwOV0Yov.js} +1 -1
  73. package/dist/index.html +2 -2
  74. package/package.json +2 -2
  75. package/dist/assets/config-BH2rUSDL.js +0 -10
  76. package/dist/assets/dist-Bc4r79ls.js +0 -1
  77. package/dist/assets/filename-validation-wKCpNal3.js +0 -1
  78. package/dist/assets/hooks-BfUXcuyV.js +0 -1
  79. package/dist/assets/index-C3AdCkmj.js +0 -57
  80. package/dist/assets/index-DzWZqTlZ.css +0 -2
  81. package/dist/assets/live-run-CfMxOSfk.js +0 -1
  82. package/dist/assets/observation-markdown-CIs-5TY2.js +0 -1
  83. package/dist/assets/plus-Bf5Mbita.js +0 -1
  84. package/dist/assets/popover-OAiTzjiL.js +0 -1
  85. package/dist/assets/run-detail-Cr984qgU.js +0 -1
  86. package/dist/assets/runs-CDAIeUbq.js +0 -1
  87. package/dist/assets/select-D0GpDfUa.js +0 -1
  88. package/dist/assets/split-button-CRYV8xU8.js +0 -1
  89. package/dist/assets/square-K8N8Yius.js +0 -1
  90. package/dist/assets/suite-editor-aAjvjp2R.js +0 -5
  91. package/dist/assets/suite-navbar-UATCw4Qb.js +0 -1
  92. package/dist/assets/suites-BlJfefzt.js +0 -1
  93. package/dist/assets/tab-console-Ciur_Bee.js +0 -1
  94. package/dist/assets/test-editor-CFzp3eq1.js +0 -9
  95. package/dist/assets/test-navbar-ChNg-qki.js +0 -7
  96. package/dist/assets/tests-Dzlh9Zho.js +0 -1
  97. package/dist/assets/use-run-status-favicon-DLOLF3Hx.js +0 -1
@@ -0,0 +1 @@
1
+ import{r as e}from"./chunk-CilyBKbf.js";import{a as t,c as n,i as r,l as i,n as a,o,r as s,s as c,t as l}from"./use-run-status-favicon-DTTz9_8q.js";import{c as u,d,f as ee,l as f,s as p}from"./tab-console-BXF3HNpW.js";import{i as te,n as ne,o as re,s as ie,t as ae,u as m}from"./select-BE8tKMJy.js";import{t as oe}from"./circle-alert-RZI0g_tD.js";import{t as se}from"./copy-CWpai22Y.js";import{t as ce}from"./external-link-xaS9gsyo.js";import{t as le}from"./file-search-CeDGqauF.js";import{n as h,r as ue}from"./shortcut-hints-BGIo5sip.js";import{t as de}from"./use-page-title-CyHzJAcR.js";import{n as fe,r as pe,t as me}from"./popover-Boe1excX.js";import{t as he}from"./scroll-area-B8cRs7wd.js";import{i as ge,n as _e,r as ve,t as ye}from"./tabs-C3NqUdx9.js";import{Bt as be,Ft as g,G as xe,Ht as Se,I as Ce,In as we,It as Te,Kt as _,L as Ee,Lt as v,Nt as De,Pt as y,Rt as b,Tt as Oe,Ut as x,Vt as ke,Xt as S,Zn as Ae,ar as je,dr as Me,et as Ne,fr as Pe,gr as Fe,ir as C,n as Ie,nr as w,pr as Le,qn as T,qt as E,tr as D,tt as Re,zt as O}from"./index-C_HfATr4.js";import{t as k}from"./badge-D56AWxFv.js";import{n as ze,r as Be,t as Ve}from"./resizable-o8j3Lihm.js";import{t as He}from"./empty-state-DEbHhF9f.js";import{t as Ue}from"./use-keyboard-shortcuts-BM0qq0DE.js";import{t as A}from"./format-BpI4TiHn.js";import{i as We,n as Ge}from"./display-step-nrAd20yH.js";var Ke=Ae(`cpu`,[[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M17 20v2`,key:`1rnc9c`}],[`path`,{d:`M17 2v2`,key:`11trls`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M2 17h2`,key:`7oei6x`}],[`path`,{d:`M2 7h2`,key:`asdhe0`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`M20 17h2`,key:`1fpfkl`}],[`path`,{d:`M20 7h2`,key:`1o8tra`}],[`path`,{d:`M7 20v2`,key:`4gnj0m`}],[`path`,{d:`M7 2v2`,key:`1i4yhu`}],[`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`,key:`1vbyd7`}],[`rect`,{x:`8`,y:`8`,width:`8`,height:`8`,rx:`1`,key:`z9xiuo`}]]),qe=Ae(`panel-right-open`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}],[`path`,{d:`m10 15-3-3 3-3`,key:`1pgupc`}]]),Je=Ae(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),Ye=Ae(`video`,[[`path`,{d:`m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5`,key:`ftymec`}],[`rect`,{x:`2`,y:`6`,width:`14`,height:`12`,rx:`2`,key:`158x01`}]]),j=e(Fe(),1),M=D();function Xe({status:e}){switch(e){case`passed`:return(0,M.jsx)(k,{className:`bg-emerald-500/15 text-emerald-500 border-emerald-500/20`,children:`Passed`});case`failed`:return(0,M.jsx)(k,{variant:`destructive`,children:`Failed`});case`healed`:return(0,M.jsx)(k,{className:`bg-amber-500/15 text-amber-500 border-amber-500/20`,children:`Healed`});case`flaky`:return(0,M.jsx)(k,{className:`bg-amber-500/15 text-amber-500 border-amber-500/20`,children:`Flaky`});case`skipped`:return(0,M.jsx)(k,{variant:`secondary`,children:`Skipped`});case`cancelled`:return(0,M.jsx)(k,{className:`bg-muted text-muted-foreground border-border`,children:`Cancelled`});default:return(0,M.jsx)(k,{variant:`outline`,children:e})}}function Ze({run:e,steps:t,shortcutsOpen:n,onToggleShortcuts:a,onOpenArtifacts:o}){let s=Me(),c=t.reduce((e,t)=>e+(t.totalTokens??0),0),l=t.reduce((e,t)=>e+(t.promptTokens??0),0),u=t.reduce((e,t)=>e+(t.completionTokens??0),0),f=e.suiteId!=null&&e.parentRunId==null,p=f&&e.suiteId?w.suiteView(e.suiteId):e.testId?w.testView(e.testId):null,te=f&&e.suiteId?`Open suite`:`Open test`,ne=r(e.id,e.videoPath),re=e.metadata?.farmSessionUrl;return(0,M.jsxs)(`div`,{className:`flex h-14 shrink-0 items-center justify-between border-b px-4 min-w-0`,children:[(0,M.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,M.jsx)(`button`,{onClick:()=>s(w.runs),className:`text-sm text-muted-foreground hover:text-foreground transition-colors shrink-0`,children:`Runs`}),(0,M.jsx)(T,{className:`h-3.5 w-3.5 text-muted-foreground shrink-0`}),(0,M.jsx)(`span`,{className:`text-sm font-medium truncate`,children:e.name}),p?(0,M.jsx)(`a`,{href:p,target:`_blank`,rel:`noopener noreferrer`,"aria-label":te,className:`shrink-0 text-muted-foreground transition-colors hover:text-foreground`,children:(0,M.jsx)(i,{className:`h-3.5 w-3.5`})}):null,(0,M.jsx)(Xe,{status:e.status})]}),(0,M.jsxs)(`div`,{className:`flex items-center gap-3 shrink-0`,children:[e.modelName&&(0,M.jsxs)(`span`,{className:`text-xs text-muted-foreground flex items-center gap-1`,children:[(0,M.jsx)(ee,{className:`h-3.5 w-3.5`}),e.modelName]}),c>0&&(0,M.jsxs)(y,{children:[(0,M.jsx)(v,{asChild:!0,children:(0,M.jsxs)(`span`,{className:`text-xs text-muted-foreground flex items-center gap-1 cursor-default`,children:[(0,M.jsx)(Ke,{className:`h-3.5 w-3.5`}),A(l),` / `,A(u)]})}),(0,M.jsx)(g,{children:`Prompt tokens / Completion tokens`})]}),(0,M.jsxs)(`span`,{className:`text-xs text-muted-foreground flex items-center gap-1`,children:[(0,M.jsx)(d,{className:`h-3.5 w-3.5`}),S(e.duration)]}),(0,M.jsx)(`div`,{className:`h-4 w-px bg-border`}),(0,M.jsxs)(y,{children:[(0,M.jsx)(v,{asChild:!0,children:(0,M.jsx)(_,{variant:`ghost`,size:`icon-sm`,"aria-label":`Open run artifacts`,onClick:()=>o?.(`attributes`),children:(0,M.jsx)(qe,{className:`h-3.5 w-3.5`})})}),(0,M.jsx)(g,{children:`Run details (I/C/M)`})]}),(0,M.jsxs)(me,{open:n,onOpenChange:e=>{e!==n&&a()},children:[(0,M.jsxs)(y,{children:[(0,M.jsx)(v,{asChild:!0,children:(0,M.jsx)(pe,{asChild:!0,children:(0,M.jsx)(_,{variant:`ghost`,size:`icon-sm`,"aria-label":`Keyboard shortcuts`,children:(0,M.jsx)(ue,{className:`h-3.5 w-3.5`})})})}),(0,M.jsx)(g,{children:`Shortcuts (Shift+?)`})]}),(0,M.jsx)(fe,{align:`end`,sideOffset:8,className:`w-72 p-4`,children:(0,M.jsxs)(`div`,{className:`space-y-3`,children:[(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`h4`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-2`,children:`Navigation`}),(0,M.jsx)(h,{hints:[{key:`↑ / K`,label:`Previous item`},{key:`↓ / J`,label:`Next item`},{key:`Shift+↑`,label:`Previous step`},{key:`Shift+↓`,label:`Next step`}]})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`h4`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-2`,children:`Tabs`}),(0,M.jsx)(h,{hints:[{key:`1`,label:`Overview`},{key:`2`,label:`Env`},{key:`3`,label:`Network`},{key:`4`,label:`Console`},{key:`5`,label:`ARIA`},{key:`6`,label:`A11y`}]})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`h4`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-2`,children:`Screenshots`}),(0,M.jsx)(h,{hints:[{key:`B`,label:`Before screenshot`},{key:`A`,label:`After screenshot`}]})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`h4`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-2`,children:`Phases`}),(0,M.jsx)(h,{hints:[{key:`Shift+1`,label:`Toggle Observe`},{key:`Shift+2`,label:`Toggle Plan`},{key:`Shift+3`,label:`Toggle Execute`},{key:`Shift+4`,label:`Toggle Verify`}]})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`h4`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-2`,children:`Actions`}),(0,M.jsx)(h,{hints:[{key:`I`,label:`Details: Attributes`},{key:`C`,label:`Artifacts: Config`},{key:`M`,label:`Artifacts: Memory`},{key:`R`,label:`Re-run`},{key:`V`,label:`Video`},{key:`Shift+?`,label:`Shortcuts`},{key:`Esc`,label:`Close`}]})]})]})})]}),(0,M.jsxs)(y,{children:[(0,M.jsx)(v,{asChild:!0,children:(0,M.jsx)(_,{variant:`ghost`,size:`icon-sm`,"aria-label":`Re-run`,onClick:()=>{let t=e.attributes[`agent-qa.runner`]===`local`;Oe({file:e.filePath??e.name,local:t}).then(e=>{De.success(`Re-run started`),s(w.runLive(e.runId))}).catch(()=>De.error(`Failed to start re-run`))},children:(0,M.jsx)(Je,{className:`h-3.5 w-3.5`})})}),(0,M.jsx)(g,{children:`Re-run (R)`})]}),ne&&(0,M.jsxs)(y,{children:[(0,M.jsx)(v,{asChild:!0,children:(0,M.jsx)(`a`,{href:ne,target:`_blank`,rel:`noopener noreferrer`,"aria-label":`Open recording`,children:(0,M.jsx)(_,{variant:`ghost`,size:`icon-sm`,children:(0,M.jsx)(Ye,{className:`h-3.5 w-3.5`})})})}),(0,M.jsx)(g,{children:`Recording (V)`})]}),re&&(0,M.jsxs)(y,{children:[(0,M.jsx)(v,{asChild:!0,children:(0,M.jsx)(`a`,{href:re,target:`_blank`,rel:`noopener noreferrer`,children:(0,M.jsx)(_,{variant:`ghost`,size:`icon-sm`,children:(0,M.jsx)(ce,{className:`h-3.5 w-3.5`})})})}),(0,M.jsx)(g,{children:`BrowserStack`})]})]})]})}function N(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function P(e){return Array.isArray(e)}function F(e,t=`Not captured`){return e===void 0?t:e===null?`None`:typeof e==`boolean`?e?`true`:`false`:typeof e==`number`?Number.isFinite(e)?String(e):`None`:typeof e==`string`?e.length>0?e:`None`:Array.isArray(e)?`${e.length} ${e.length===1?`item`:`items`}`:N(e)?`${Object.keys(e).length} ${Object.keys(e).length===1?`field`:`fields`}`:String(e)}function Qe({section:e}){return(0,M.jsxs)(`div`,{className:`rounded-[2px] border border-border px-4 py-4 text-sm text-muted-foreground`,children:[e,` was not captured for this run.`]})}function I({title:e,badges:t=[],children:n,className:r}){return(0,M.jsxs)(`section`,{className:E(`rounded-[2px] border border-border bg-transparent`,r),children:[(0,M.jsxs)(`header`,{className:`flex min-w-0 items-center gap-2 border-b px-4 py-3`,children:[(0,M.jsx)(`h3`,{className:`min-w-0 flex-1 truncate text-sm font-semibold text-foreground`,children:e}),t.map(e=>(0,M.jsx)(k,{variant:`outline`,className:`text-[10px]`,children:e},e))]}),(0,M.jsx)(`div`,{className:`space-y-3 px-4 py-4`,children:n})]})}function L({rows:e}){return(0,M.jsx)(`div`,{className:`divide-y divide-border/50`,children:e.map(e=>(0,M.jsxs)(`div`,{className:`grid gap-1 py-1.5 text-xs sm:grid-cols-[160px_minmax(0,1fr)] sm:gap-3`,children:[(0,M.jsx)(`dt`,{className:`font-medium text-muted-foreground`,children:e.label}),(0,M.jsx)(`dd`,{className:E(`min-w-0 break-words text-foreground`,e.mono&&`break-all font-mono`),children:e.value})]},e.label))})}function $e({value:e}){return(0,M.jsx)(`span`,{className:E(`break-words`,(e==null||typeof e==`boolean`||typeof e==`number`)&&`font-mono text-[11px]`,e==null?`text-muted-foreground`:`text-foreground`),children:F(e)})}function R({value:e,label:t=`root`,level:n=0}){if(P(e))return(0,M.jsxs)(p,{children:[(0,M.jsxs)(f,{className:`group flex w-full min-w-0 items-center gap-1.5 py-1.5 text-left text-xs hover:text-foreground`,children:[(0,M.jsx)(T,{className:`h-3 w-3 shrink-0 text-muted-foreground transition-transform group-data-[state=open]:rotate-90`}),(0,M.jsx)(`span`,{className:`min-w-0 truncate font-medium text-muted-foreground`,children:t}),(0,M.jsxs)(`span`,{className:`font-mono text-[11px] text-foreground`,children:[e.length,` `,e.length===1?`item`:`items`]})]}),(0,M.jsx)(u,{children:(0,M.jsx)(`div`,{className:`ml-3 border-l border-border pl-3`,children:e.length===0?(0,M.jsx)(`div`,{className:`py-1.5 text-xs text-muted-foreground`,children:`None`}):e.map((e,r)=>(0,M.jsx)(R,{label:`${r}`,value:e,level:n+1},`${t}-${r}`))})})]});if(N(e)){let r=Object.entries(e);return(0,M.jsxs)(p,{defaultOpen:n===0,children:[(0,M.jsxs)(f,{className:`group flex w-full min-w-0 items-center gap-1.5 py-1.5 text-left text-xs hover:text-foreground`,children:[(0,M.jsx)(T,{className:`h-3 w-3 shrink-0 text-muted-foreground transition-transform group-data-[state=open]:rotate-90`}),(0,M.jsx)(`span`,{className:`min-w-0 truncate font-medium text-muted-foreground`,children:t}),(0,M.jsxs)(`span`,{className:`font-mono text-[11px] text-foreground`,children:[r.length,` `,r.length===1?`field`:`fields`]})]}),(0,M.jsx)(u,{children:(0,M.jsx)(`div`,{className:`ml-3 border-l border-border pl-3`,children:r.length===0?(0,M.jsx)(`div`,{className:`py-1.5 text-xs text-muted-foreground`,children:`None`}):r.map(([e,t])=>(0,M.jsx)(R,{label:e,value:t,level:n+1},e))})})]})}return(0,M.jsxs)(`div`,{className:`grid gap-1 py-1.5 text-xs sm:grid-cols-[160px_minmax(0,1fr)] sm:gap-3`,children:[(0,M.jsx)(`span`,{className:`min-w-0 break-words font-medium text-muted-foreground`,children:t}),(0,M.jsx)($e,{value:e})]})}function et({label:e,content:t}){return t?(0,M.jsxs)(p,{children:[(0,M.jsxs)(f,{className:`group flex w-full items-center gap-1.5 rounded-[2px] py-1.5 text-left text-xs font-medium text-muted-foreground hover:text-foreground`,children:[(0,M.jsx)(T,{className:`h-3 w-3 transition-transform group-data-[state=open]:rotate-90`}),e]}),(0,M.jsx)(u,{children:(0,M.jsx)(`pre`,{className:`mt-2 max-h-80 overflow-x-auto overflow-y-auto rounded-[2px] border border-border bg-muted/30 p-3 font-mono text-[11px] leading-relaxed whitespace-pre text-foreground`,children:t})})]}):null}function z(e,t){return e?e[t]:void 0}function B(e,t){let n=z(e,t);return typeof n==`string`&&n.length>0?n:null}function V(e,t){let n=z(e,t);return N(n)?n:null}function H(e,t){let n=z(e,t);return P(n)?n:[]}function tt(e){return N(e)&&[B(e,`code`),B(e,`phase`),B(e,`message`)].filter(Boolean).join(` - `)||null}function U(e){let t=B(e,`kind`);return t===`test`||t===`suite`?t:`unknown`}function W(e,t){let n=B(e,`childRunId`);if(n)return n;let r=B(e,`testId`),i=B(e,`name`);return t.children.find(({run:e})=>!!(r&&e.testId===r||i&&e.name===i))?.run.id??null}function G({config:e}){let t=V(e,`envFile`),n=V(e,`secretsFile`),r=H(e,`hooks`),i=V(e,`model`),a=B(n,`path`),o=B(n,`status`),s=typeof z(n,`count`)==`number`?z(n,`count`):null;return(0,M.jsx)(L,{rows:[{label:`Raw config`,value:B(e,`rawConfigContent`)?`Captured`:`Not captured`},{label:`Env file`,value:F(B(t,`path`))},{label:`Secrets file`,value:n?(0,M.jsxs)(`span`,{className:`inline-flex min-w-0 flex-wrap items-center gap-1.5`,children:[(0,M.jsx)(`span`,{className:`break-all font-mono text-xs`,children:F(a)}),o?(0,M.jsx)(k,{variant:`outline`,className:`text-[10px]`,children:o}):null,s===null?null:(0,M.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[s,` secret`,s===1?``:`s`]})]}):`Not captured`},{label:`CLI vars`,value:F(Object.keys(V(e,`cliVars`)??{}).length),mono:!0},{label:`Inline vars`,value:F(Object.keys(V(e,`inlineVars`)??{}).length),mono:!0},{label:`Hooks`,value:F(r.length),mono:!0},{label:`Model`,value:i?(0,M.jsx)(R,{label:`model`,value:i}):`Not captured`}]})}function nt({source:e}){let t=U(e),n=tt(z(e,`error`));return(0,M.jsx)(L,{rows:[{label:`Kind`,value:t,mono:!0},{label:`Name`,value:F(B(e,`name`))},{label:t===`suite`?`Suite ID`:`Test ID`,value:F(B(e,t===`suite`?`suiteId`:`testId`)),mono:!0},{label:`Path`,value:F(B(e,`filePath`)),mono:!0},{label:`Load status`,value:F(B(e,`loadStatus`)),mono:!0},{label:`Error`,value:n??`None`}]})}function rt({source:e,response:t}){let n=H(e,`members`).filter(N).sort((e,t)=>(typeof e.index==`number`?e.index:0)-(typeof t.index==`number`?t.index:0));return n.length===0?null:(0,M.jsx)(I,{title:`Suite Members`,badges:[`${n.length} members`],children:(0,M.jsx)(`div`,{className:`space-y-3`,children:n.map(e=>{let n=V(e,`ref`),r=typeof e.index==`number`?e.index:0,i=W(e,t),a=tt(z(e,`error`));return(0,M.jsxs)(`div`,{"data-suite-member-index":r,className:`rounded-[2px] border border-border p-3`,children:[(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,M.jsxs)(k,{variant:`outline`,className:`text-[10px]`,children:[`#`,r+1]}),(0,M.jsx)(`span`,{className:`min-w-0 flex-1 break-words text-sm font-medium`,children:B(e,`name`)??B(n,`test`)??`Unnamed member`}),(0,M.jsx)(k,{variant:`outline`,className:`text-[10px]`,children:F(B(e,`loadStatus`))})]}),(0,M.jsx)(L,{rows:[{label:`Test ID`,value:F(B(e,`testId`)),mono:!0},{label:`Ref`,value:F(B(n,`test`)),mono:!0},{label:`Ref ID`,value:F(B(n,`id`)),mono:!0},{label:`Path`,value:F(B(e,`filePath`)),mono:!0},{label:`Target`,value:F(B(e,`target`))},{label:`Child run`,value:i?(0,M.jsx)(`a`,{className:`break-all text-primary hover:underline`,href:w.runDetail(i),children:i}):`Not captured`,mono:!!i},{label:`Error`,value:a??`None`}]}),(0,M.jsxs)(p,{children:[(0,M.jsxs)(f,{className:`group mt-2 flex w-full items-center gap-1.5 text-left text-xs font-medium text-muted-foreground hover:text-foreground`,children:[(0,M.jsx)(T,{className:`h-3 w-3 transition-transform group-data-[state=open]:rotate-90`}),`Member snapshots`]}),(0,M.jsxs)(u,{className:`mt-2 space-y-2`,children:[(0,M.jsx)(et,{label:`Raw member YAML`,content:B(e,`rawYaml`)}),z(e,`resolvedDefinition`)===void 0?null:(0,M.jsx)(R,{label:`resolvedDefinition`,value:z(e,`resolvedDefinition`)})]})]})]},`${r}-${B(e,`testId`)??B(n,`test`)??`member`}`)})})})}function K({response:e}){let t=e.artifact,n=t?.payload??{schemaVersion:1},r=N(n)?n:{schemaVersion:1},i=V(r,`config`),a=V(r,`source`),o=V(r,`runtime`),s=H(r,`errors`),c=new Set(e.missingSections),l=U(a);return(0,M.jsxs)(`div`,{className:`space-y-4`,children:[(0,M.jsx)(I,{title:`Run Summary`,badges:[t?.kind??`unknown`],children:(0,M.jsx)(L,{rows:[{label:`Run`,value:e.run.name},{label:`Run ID`,value:e.run.id,mono:!0},{label:`Artifact kind`,value:t?.kind??`unknown`,mono:!0},{label:`Schema version`,value:t?.schemaVersion??r.schemaVersion??`Not captured`,mono:!0},{label:`Finalized`,value:t?.finalizedAt??`Not finalized`,mono:!0},{label:`Test ID`,value:F(e.run.testId),mono:!0},{label:`Suite ID`,value:F(e.run.suiteId),mono:!0},{label:`Platform`,value:F(e.run.platform)},{label:`Target`,value:F(e.run.targetName)}]})}),(0,M.jsx)(I,{title:`Global Config`,children:c.has(`config`)||!i?(0,M.jsx)(Qe,{section:`Config`}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(G,{config:i}),z(i,`parsedConfig`)===void 0?null:(0,M.jsx)(R,{label:`parsedConfig`,value:z(i,`parsedConfig`)}),(0,M.jsx)(et,{label:`Raw global config`,content:B(i,`rawConfigContent`)})]})}),(0,M.jsx)(I,{title:`Effective Config`,children:c.has(`config`)||!i?(0,M.jsx)(Qe,{section:`Config`}):(0,M.jsx)(R,{label:`effectiveConfig`,value:z(i,`effectiveConfig`)})}),(0,M.jsx)(I,{title:`Source Snapshot`,badges:[l],children:c.has(`source`)||!a?(0,M.jsx)(Qe,{section:`Source`}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(nt,{source:a}),(0,M.jsx)(et,{label:l===`suite`?`Raw suite YAML`:`Raw test YAML`,content:B(a,`rawYaml`)}),z(a,`resolvedDefinition`)===void 0?null:(0,M.jsx)(R,{label:`resolvedDefinition`,value:z(a,`resolvedDefinition`)})]})}),a?(0,M.jsx)(rt,{source:a,response:e}):null,o||s.length>0?(0,M.jsxs)(I,{title:`Runtime and Errors`,badges:s.length>0?[`${s.length} errors`]:[],children:[o?(0,M.jsx)(R,{label:`runtime`,value:o}):null,s.length>0?(0,M.jsx)(`div`,{className:`space-y-2`,children:s.map((e,t)=>(0,M.jsx)(`div`,{className:`rounded-[2px] border border-red-500/20 bg-red-500/5 p-3 text-sm`,children:tt(e)??JSON.stringify(e)},t))}):null]}):null]})}var it=[{action:`add`,title:`Added`,className:`border-emerald-500/20 bg-emerald-500/5 text-emerald-500`,railClassName:`border-l-emerald-500/80`,surfaceClassName:`bg-emerald-500/[0.04]`},{action:`confirm`,title:`Updated/Confirmed`,className:`border-blue-500/20 bg-blue-500/5 text-blue-500`,railClassName:`border-l-blue-500/80`,surfaceClassName:`bg-blue-500/[0.04]`},{action:`deprecate`,title:`Deprecated`,className:`border-amber-500/25 bg-amber-500/5 text-amber-500`,railClassName:`border-l-amber-500/80`,surfaceClassName:`bg-amber-500/[0.04]`},{action:`delete`,title:`Deleted`,className:`border-red-500/20 bg-red-500/5 text-red-500`,railClassName:`border-l-red-500/80`,surfaceClassName:`bg-red-500/[0.04]`}];function q(e,t){return e?e[t]:void 0}function J(e,t){let n=q(e,t);return typeof n==`string`&&n.length>0?n:null}function Y(e,t){let n=q(e,t);return typeof n==`number`&&Number.isFinite(n)?n:null}function X(e){if(!N(e))return null;let t=J(e,`id`),n=J(e,`title`),r=J(e,`content`),i=Y(e,`trust`),a=Y(e,`confirmed_count`),o=Y(e,`contradicted_count`);return!t||!n||!r||i===null||a===null||o===null?null:{id:t,title:n,content:r,trust:i,last_confirmed:J(e,`last_confirmed`)??`Not captured`,confirmed_count:a,contradicted_count:o,source_test:J(e,`source_test`)??`Not captured`}}function at(e){if(!N(e))return null;let t=J(e,`action`);if(t!==`add`&&t!==`confirm`&&t!==`deprecate`&&t!==`delete`)return null;let n=J(e,`tier`);return n!==`products`&&n!==`suites`&&n!==`tests`?null:{action:t,tier:n,scope:J(e,`scope`)??`unknown`,observationId:J(e,`observationId`)??X(q(e,`after`))?.id??X(q(e,`before`))?.id??`unknown`,reasoning:J(e,`reasoning`)??`No curator reasoning captured.`,before:X(q(e,`before`)),after:X(q(e,`after`)),error:J(e,`error`)??void 0}}function ot(e){return N(e)?[`added`,`confirmed`,`deprecated`,`deleted`,`deltas`,`errors`,`curatorDuration`,`tokenUsage`].some(t=>t in e):!1}function st(e){let t=e?.payload;if(!N(t))return null;let n=q(t,`memory`);if(!N(n))return null;let r=q(n,`log`);return ot(r)?r:null}function Z(e){if(!e)return null;try{let t=JSON.parse(e);return ot(t)?t:null}catch{return null}}function Q(e){let t=[];for(let n of e.children){let e=st(n.artifact);if(e){t.push(e);continue}let r=Z(n.run.memoryLog);r&&t.push(r)}return t}function $(e,t){return e.reduce((e,n)=>e+(Y(n,t)??0),0)}function ct(e){let t=!1,n={promptTokens:0,completionTokens:0,totalTokens:0};for(let r of e){let e=q(r,`tokenUsage`);N(e)&&(t=!0,n.promptTokens+=Y(e,`promptTokens`)??0,n.completionTokens+=Y(e,`completionTokens`)??0,n.totalTokens+=Y(e,`totalTokens`)??0)}return t?n:void 0}function lt(e){if(e.length===0)return null;let t=e.flatMap(e=>{let t=q(e,`deltas`);return P(t)?t:[]}),n=e.flatMap(e=>{let t=q(e,`errors`);return P(t)?t:[]}),r={added:$(e,`added`),confirmed:$(e,`confirmed`),deprecated:$(e,`deprecated`),deleted:$(e,`deleted`),errors:n,curatorDuration:$(e,`curatorDuration`),deltas:t},i=ct(e);return i&&(r.tokenUsage=i),r}function ut(e){let t=st(e.artifact);if(t)return t;let n=Q(e);return n.length>0?lt(n):Z(e.run.memoryLog)}function dt(e){let t=q(e,`deltas`);return P(t)?t.map(at).filter(e=>!!e):[]}function ft(e){return Object.fromEntries(it.map(t=>[t.action,e.filter(e=>e.action===t.action)]))}function pt(e,t,n){return Y(e,t===`confirm`?`confirmed`:t===`add`?`added`:t===`deprecate`?`deprecated`:`deleted`)??n}function mt(e,t){if(e==null||t==null)return null;let n=Math.round((t-e)*1e3)/1e3;return n===0?`0`:n>0?`+${n}`:String(n)}function ht(e,t){return!e||!t?[]:[`title`,`content`,`trust`,`confirmed_count`,`contradicted_count`,`last_confirmed`,`source_test`].filter(n=>e[n]!==t[n])}function gt({log:e,counts:t}){let n=q(e,`tokenUsage`),r=Y(e,`curatorDuration`),i=N(n)?Y(n,`promptTokens`):null,a=N(n)?Y(n,`completionTokens`):null,o=N(n)?Y(n,`totalTokens`):null;return(0,M.jsxs)(`section`,{className:`rounded-[2px] border border-border/60 bg-muted/20 px-3 py-3`,children:[(0,M.jsx)(`div`,{className:`grid grid-cols-2 gap-3 sm:grid-cols-4`,children:it.map(e=>(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`div`,{className:`text-[11px] font-medium text-muted-foreground`,children:e.title}),(0,M.jsx)(`div`,{className:`mt-1 font-mono text-lg text-foreground`,children:t[e.action]})]},e.action))}),(0,M.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-3 border-t border-border/40 pt-2 text-xs text-muted-foreground`,children:[(0,M.jsxs)(`span`,{children:[`Curator duration: `,r==null?`Not captured`:S(r)]}),(0,M.jsxs)(`span`,{children:[`Tokens: `,o==null?`Not captured`:`${A(i??0)} / ${A(a??0)} / ${A(o)}`]})]})]})}function _t({label:e,observation:t}){return t?(0,M.jsxs)(`div`,{className:`space-y-2`,children:[(0,M.jsx)(`div`,{className:`text-[11px] font-semibold text-muted-foreground`,children:e}),(0,M.jsxs)(`div`,{className:`flex flex-wrap gap-x-4 gap-y-1 text-xs text-muted-foreground`,children:[(0,M.jsxs)(`span`,{className:`min-w-0 break-words`,children:[`Title `,(0,M.jsx)(`span`,{className:`text-foreground`,children:t.title})]}),(0,M.jsxs)(`span`,{className:`font-mono`,children:[`Trust `,t.trust]}),(0,M.jsxs)(`span`,{className:`font-mono`,children:[`Confirmed `,t.confirmed_count]}),(0,M.jsxs)(`span`,{className:`font-mono`,children:[`Contradicted `,t.contradicted_count]}),(0,M.jsxs)(`span`,{className:`min-w-0 break-all font-mono`,children:[`ID `,t.id]}),(0,M.jsxs)(`span`,{className:`min-w-0 break-all font-mono`,children:[`Source `,t.source_test]}),(0,M.jsxs)(`span`,{className:`font-mono`,children:[`Last `,t.last_confirmed]})]}),(0,M.jsx)(`p`,{className:`whitespace-pre-wrap break-words text-sm leading-6 text-foreground`,children:t.content})]}):null}function vt({delta:e,group:t}){let n=e.after?.title??e.before?.title??e.observationId,r=mt(e.before?.trust,e.after?.trust),i=mt(e.before?.confirmed_count,e.after?.confirmed_count),a=mt(e.before?.contradicted_count,e.after?.contradicted_count),o=ht(e.before,e.after);return(0,M.jsx)(p,{children:(0,M.jsxs)(`div`,{className:E(`border-y border-l-2 border-border/55 px-4 py-3`,t.railClassName,t.surfaceClassName),children:[(0,M.jsxs)(f,{className:`group flex w-full min-w-0 items-start gap-2 text-left`,children:[(0,M.jsx)(T,{className:`mt-1 h-3.5 w-3.5 shrink-0 text-muted-foreground transition-transform group-data-[state=open]:rotate-90`}),(0,M.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,M.jsx)(`h4`,{className:`min-w-0 flex-1 break-words text-sm font-medium text-foreground`,children:n}),(0,M.jsx)(k,{variant:`outline`,className:E(`text-[10px]`,t.className),children:it.find(t=>t.action===e.action)?.title??e.action}),(0,M.jsxs)(k,{variant:`outline`,className:`max-w-full whitespace-normal break-all text-left text-[10px]`,children:[e.tier,`/`,e.scope]})]}),(0,M.jsxs)(`div`,{className:`mt-1 flex flex-wrap gap-2 font-mono text-[11px] text-muted-foreground`,children:[(0,M.jsx)(`span`,{className:`break-all`,children:e.observationId}),r?(0,M.jsxs)(`span`,{children:[`trust `,r]}):null,i?(0,M.jsxs)(`span`,{children:[`confirmed `,i]}):null,a?(0,M.jsxs)(`span`,{children:[`contradicted `,a]}):null]}),(0,M.jsx)(`p`,{className:`mt-2 line-clamp-2 break-words text-xs text-muted-foreground`,children:e.reasoning})]})]}),(0,M.jsxs)(u,{className:`mt-3 space-y-3`,children:[o.length>0?(0,M.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[`Changed fields: `,(0,M.jsx)(`span`,{className:`font-mono text-foreground`,children:o.join(`, `)})]}):(0,M.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Changed fields: None captured`}),e.error?(0,M.jsxs)(`div`,{className:`text-xs text-red-500`,children:[`Error: `,e.error]}):null,e.action===`add`?(0,M.jsx)(_t,{label:`After`,observation:e.after}):e.action===`delete`?(0,M.jsx)(_t,{label:`Before`,observation:e.before}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(_t,{label:`Before`,observation:e.before}),(0,M.jsx)(_t,{label:`After`,observation:e.after})]})]})]})})}function yt({response:e}){let t=ut(e);if(!t)return(0,M.jsx)(`div`,{className:`rounded-[2px] border border-border px-4 py-4 text-sm text-muted-foreground`,children:`Memory was not captured for this run.`});let n=ft(dt(t)),r={add:pt(t,`add`,n.add.length),confirm:pt(t,`confirm`,n.confirm.length),deprecate:pt(t,`deprecate`,n.deprecate.length),delete:pt(t,`delete`,n.delete.length)},i=r.add+r.confirm+r.deprecate+r.delete;return(0,M.jsxs)(`div`,{className:`space-y-4`,children:[(0,M.jsx)(gt,{log:t,counts:r}),i===0?(0,M.jsxs)(`div`,{className:`rounded-[2px] border border-border px-4 py-4`,children:[(0,M.jsx)(`h3`,{className:`text-sm font-medium text-foreground`,children:`No memory changes`}),(0,M.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`Memory completed without adding, updating, deprecating, or deleting observations.`})]}):null,it.map(e=>{let t=n[e.action];return(0,M.jsxs)(`section`,{className:`scroll-mt-4 space-y-3`,children:[(0,M.jsxs)(`header`,{className:`flex min-w-0 items-center gap-2 px-1`,children:[(0,M.jsx)(`h3`,{className:`min-w-0 flex-1 truncate text-sm font-semibold text-foreground`,children:e.title}),(0,M.jsxs)(k,{variant:`outline`,className:`text-[10px]`,children:[r[e.action],` changes`]})]}),(0,M.jsx)(`div`,{"data-memory-group":e.title,className:`space-y-3`,children:t.length===0?(0,M.jsxs)(`div`,{className:`px-1 text-sm text-muted-foreground`,children:[`No `,e.title.toLowerCase(),` changes.`]}):t.map(t=>(0,M.jsx)(vt,{delta:t,group:e},`${t.action}-${t.observationId}`))})]},e.action)}),P(q(t,`errors`))&&q(t,`errors`).length>0?(0,M.jsxs)(`section`,{className:`space-y-3`,children:[(0,M.jsxs)(`header`,{className:`flex min-w-0 items-center gap-2 px-1`,children:[(0,M.jsx)(`h3`,{className:`min-w-0 flex-1 truncate text-sm font-semibold text-foreground`,children:`Memory Errors`}),(0,M.jsxs)(k,{variant:`outline`,className:`text-[10px]`,children:[q(t,`errors`).length,` errors`]})]}),(0,M.jsx)(`div`,{className:`space-y-2`,children:q(t,`errors`).map((e,t)=>(0,M.jsx)(`div`,{className:`rounded-[2px] border border-red-500/20 bg-red-500/5 p-3 text-sm text-red-500`,children:F(e)},t))})]}):null]})}function bt(){return(0,M.jsxs)(`div`,{className:`space-y-4`,"aria-label":`Loading artifact data`,children:[(0,M.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading artifact data...`}),[0,1,2].map(e=>(0,M.jsxs)(`div`,{className:`rounded-[2px] border border-border p-4`,children:[(0,M.jsx)(b,{className:`h-4 w-40`}),(0,M.jsxs)(`div`,{className:`mt-4 space-y-2`,children:[(0,M.jsx)(b,{className:`h-3 w-full`}),(0,M.jsx)(b,{className:`h-3 w-5/6`}),(0,M.jsx)(b,{className:`h-3 w-3/5`})]})]},e))]})}function xt({error:e,onRetry:t}){return(0,M.jsx)(`div`,{className:`rounded-[2px] border border-red-500/20 bg-red-500/5 p-4`,children:(0,M.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,M.jsx)(oe,{className:`mt-0.5 h-4 w-4 shrink-0 text-red-500`}),(0,M.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,M.jsx)(`h3`,{className:`text-sm font-medium text-foreground`,children:`Could not load artifact data`}),(0,M.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`Retry the request. If it continues, verify the dashboard server can read run artifacts.`}),(0,M.jsx)(`p`,{className:`mt-2 break-words font-mono text-xs text-red-500`,children:e}),(0,M.jsx)(_,{className:`mt-3`,size:`sm`,variant:`outline`,onClick:t,children:`Retry`})]})]})})}function St(){return(0,M.jsxs)(`div`,{className:`rounded-[2px] border border-border p-4`,children:[(0,M.jsx)(`h3`,{className:`text-sm font-medium text-foreground`,children:`Artifact data is not available for this run`}),(0,M.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`This run does not have a persisted artifact record.`})]})}function Ct(e,t){if(!e||typeof e!=`object`||Array.isArray(e))return null;let n=e[t];return n&&typeof n==`object`&&!Array.isArray(n)?n:null}function wt(e){if(!e||typeof e!=`object`||Array.isArray(e))return{};let t=Object.entries(e).filter(e=>typeof e[1]==`string`);return Object.fromEntries(t)}function Tt(e){let t=wt(e.run.attributes);if(Object.keys(t).length>0)return t;let n=e.artifact?.payload;return wt(Ct(Ct(n,`metadata`),`attributes`))}function Et(e){return Object.entries(e).sort(([e],[t])=>{let n=e.startsWith(`agent-qa.`);return n===t.startsWith(`agent-qa.`)?e.localeCompare(t):n?-1:1})}function Dt(e){navigator.clipboard?.writeText(e)}function Ot({response:e}){let t=Et(Tt(e));return t.length===0?(0,M.jsxs)(`div`,{className:`rounded-[2px] border border-border p-4`,children:[(0,M.jsx)(`h3`,{className:`text-sm font-medium text-foreground`,children:`No run attributes`}),(0,M.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`This run did not record any attributes.`})]}):(0,M.jsxs)(`div`,{className:`space-y-3`,children:[(0,M.jsx)(`div`,{className:`flex justify-end`,children:(0,M.jsxs)(_,{type:`button`,size:`sm`,variant:`outline`,onClick:()=>Dt(JSON.stringify(Object.fromEntries(t),null,2)),children:[(0,M.jsx)(se,{className:`size-4`}),`Copy JSON`]})}),(0,M.jsx)(`div`,{className:`overflow-hidden rounded-[2px] border border-border`,children:(0,M.jsx)(`table`,{className:`w-full table-fixed text-sm`,children:(0,M.jsx)(`tbody`,{children:t.map(([e,t])=>(0,M.jsxs)(`tr`,{className:`border-b border-border/70 last:border-b-0`,children:[(0,M.jsx)(`th`,{className:`w-[240px] align-top px-3 py-2 text-left font-mono text-xs font-medium text-muted-foreground`,children:e}),(0,M.jsx)(`td`,{className:`align-top px-3 py-2`,children:(0,M.jsxs)(`div`,{className:`flex min-w-0 items-start gap-2`,children:[(0,M.jsx)(`span`,{className:`min-w-0 flex-1 break-all font-mono text-xs text-foreground`,children:t}),(0,M.jsx)(_,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":`Copy ${e} value`,title:`Copy value`,onClick:()=>Dt(t),children:(0,M.jsx)(se,{className:`size-3.5`})})]})})]},e))})})})]})}function kt({tab:e,response:t}){return e===`attributes`?(0,M.jsx)(Ot,{response:t}):e===`config`?(0,M.jsx)(K,{response:t}):(0,M.jsx)(yt,{response:t})}function At({tab:e,response:t,loading:n,error:r,onRetry:i}){return n?(0,M.jsx)(bt,{}):r?(0,M.jsx)(xt,{error:r,onRetry:i}):!t||e!==`attributes`&&!t.artifact?(0,M.jsx)(St,{}):(0,M.jsx)(kt,{tab:e,response:t})}function jt({run:e,open:t,tab:n,response:r,loading:i,error:a,onOpenChange:o,onTabChange:s,onRetry:c}){let l=r?.artifact??null,u=e.name||`Run ${e.id}`;return(0,M.jsx)(O,{open:t,onOpenChange:o,children:(0,M.jsxs)(be,{side:`right`,className:`w-[min(820px,92vw)] sm:max-w-none gap-0 overflow-hidden p-0`,children:[(0,M.jsxs)(Se,{className:`border-b px-4 py-3 pr-12`,children:[(0,M.jsx)(x,{className:`text-base leading-snug`,children:`Run details`}),(0,M.jsx)(ke,{className:`truncate text-xs`,children:u}),(0,M.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 pt-1 text-xs text-muted-foreground`,children:[(0,M.jsx)(`span`,{className:`break-all font-mono`,children:e.id}),l?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(k,{variant:`outline`,className:`text-[10px]`,children:l.kind}),(0,M.jsxs)(k,{variant:`outline`,className:`text-[10px]`,children:[`schema `,l.schemaVersion]}),(0,M.jsx)(k,{variant:`outline`,className:E(`text-[10px]`,l.finalizedAt?`border-emerald-500/20 text-emerald-500`:`border-amber-500/25 text-amber-500`),children:l.finalizedAt?`finalized`:`open`})]}):null]})]}),(0,M.jsxs)(ye,{value:n,onValueChange:e=>s(e),className:`min-h-0 flex-1 overflow-hidden`,children:[(0,M.jsx)(`div`,{className:`border-b px-3`,children:(0,M.jsxs)(ve,{variant:`line`,className:`h-9 w-full justify-start`,children:[(0,M.jsx)(ge,{value:`attributes`,className:`max-w-32 flex-none`,children:`Attributes`}),(0,M.jsx)(ge,{value:`config`,className:`max-w-32 flex-none`,children:`Config`}),(0,M.jsx)(ge,{value:`memory`,className:`max-w-32 flex-none`,children:`Memory`})]})}),(0,M.jsxs)(he,{className:`min-h-0 flex-1`,children:[(0,M.jsx)(_e,{value:`attributes`,className:`m-0 px-4 py-4`,children:(0,M.jsx)(At,{tab:`attributes`,response:r,loading:i,error:a,onRetry:c})}),(0,M.jsx)(_e,{value:`config`,className:`m-0 px-4 py-4`,children:(0,M.jsx)(At,{tab:`config`,response:r,loading:i,error:a,onRetry:c})}),(0,M.jsx)(_e,{value:`memory`,className:`m-0 px-4 py-4`,children:(0,M.jsx)(At,{tab:`memory`,response:r,loading:i,error:a,onRetry:c})})]})]})]})})}function Mt({status:e}){let t=C(e);return(0,M.jsx)(k,{className:je(t.tone),children:t.label})}function Nt(e,t){let n=e.split(/\s+/);return n.length<=t?{truncated:e,isTruncated:!1}:{truncated:n.slice(0,t).join(` `)+`...`,isTruncated:!0}}function Pt({summary:e}){let[t,n]=(0,j.useState)(!1),[r,i]=(0,j.useState)(!1),{truncated:a,isTruncated:o}=Nt(e,20);return(0,M.jsx)(`div`,{className:`mx-2 mt-2 rounded-[2px] border border-red-500/20 bg-red-500/5 px-3 py-2 shrink-0`,children:(0,M.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,M.jsx)(oe,{className:`h-4 w-4 text-red-400 shrink-0 mt-0.5`}),(0,M.jsx)(`span`,{className:`flex-1 text-sm text-foreground/80 select-text`,children:t?e:a}),(0,M.jsx)(`button`,{onClick:()=>{navigator.clipboard.writeText(e),i(!0),setTimeout(()=>i(!1),2e3)},className:`shrink-0 mt-0.5 p-0.5 rounded-sm hover:bg-red-500/10 transition-colors`,title:`Copy failure summary`,children:r?(0,M.jsx)(m,{className:`h-3.5 w-3.5 text-emerald-400`}):(0,M.jsx)(se,{className:`h-3.5 w-3.5 text-muted-foreground`})}),o&&(0,M.jsx)(`button`,{onClick:()=>n(e=>!e),className:`shrink-0 mt-0.5 p-0.5 rounded-sm hover:bg-red-500/10 transition-colors`,children:(0,M.jsx)(T,{className:E(`h-3.5 w-3.5 text-muted-foreground transition-transform`,t&&`rotate-90`)})})]})})}function Ft(e,t){let n=new Map(t.map((e,t)=>[e.id,t]));return[...e].sort((e,t)=>{let r=n.get(e.runId)??0,i=n.get(t.runId)??0;return r===i?e.stepOrder-t.stepOrder:r-i})}function It(e){return e?.suiteId!=null&&e.parentRunId==null}function Lt(e,t,n,r){return We((r&&n===`all`&&t.length>0?Ft(e,t):[...e].sort((e,t)=>e.stepOrder-t.stepOrder)).map(Ge))}function Rt(e,t,n){let r=t.get(`step`),i=t.get(`run`),a=t.get(`sub`);if(r){let t=Number.parseInt(r,10),o=e.find(e=>e.rawStepOrder===t?n&&i?e.rawRunId===i:!0:!1);if(o)return a==null?{type:`step`,stepId:o.id}:{type:`subaction`,stepId:o.id,subIndex:Number.parseInt(a,10)}}return e.length>0?{type:`step`,stepId:e[0].id}:null}function zt(e,t){let n=e.getBoundingClientRect(),r=t.getBoundingClientRect(),i=n.top+12,a=n.bottom-12;if(r.top>=i&&r.bottom<=a)return;let o=r.top<i?e.scrollTop+(r.top-i):e.scrollTop+(r.bottom-a),s=Math.max(0,o);if(typeof e.scrollTo==`function`){e.scrollTo({top:s,behavior:`smooth`});return}e.scrollTop=s}function Bt(){let{id:e}=Pe(),i=Me(),[d,ee]=Le(),[m,oe]=(0,j.useState)(null);de(m?`Run - ${m.name}`:`Run`),a(l(m?.status));let[se,ce]=(0,j.useState)([]),[h,ue]=(0,j.useState)([]),[fe,pe]=(0,j.useState)(null),[me,he]=(0,j.useState)(!0),[ge,_e]=(0,j.useState)(!1),[ve,ye]=(0,j.useState)(!1),[be,g]=(0,j.useState)(1),Se=(0,j.useRef)(null),v=(0,j.useRef)(null),y=(0,j.useRef)(null),b=(0,j.useRef)(null),[x,ke]=(0,j.useState)([]),[S,Ae]=(0,j.useState)(`all`),[je,Fe]=(0,j.useState)([]),[C,D]=(0,j.useState)(null),[O,k]=(0,j.useState)([]),[We,Ge]=(0,j.useState)(null),[Ke,qe]=(0,j.useState)(!1),[Je,Ye]=(0,j.useState)(null),[Xe,N]=(0,j.useState)(!1),[P,F]=(0,j.useState)(`attributes`),[Qe,I]=(0,j.useState)(null),[L,$e]=(0,j.useState)(!1),[R,et]=(0,j.useState)(null),z=(0,j.useRef)(null),B=(0,j.useRef)(0),[V,H]=(0,j.useState)(()=>{let e=d.get(`tab`);return e===`screenshot`?`overview`:e??`overview`});(0,j.useEffect)(()=>{if(!e)return;b.current=null;let t=!1,n=0;async function r(){try{let{executions:n}=await Ee();if(t)return;if(n.some(t=>t.runId===e)){i(w.runLive(e),{replace:!0});return}}catch{}try{let n=await Ne(e);if(t)return;if(oe(n.run),It(n.run)&&n.tests&&n.tests.length>0){ke(n.tests),Ae(`all`);let e=[];for(let r of n.tests)try{let n=await Ne(r.id);if(t)return;e.push(...n.steps)}catch{}Fe(e),ce(e),D(Rt(Lt(e,n.tests,`all`,!0),d,!0))}else{ce(n.steps);let e=n.attempts??[];if(ue(e),e.length>0){let n=e[e.length-1];pe(n.id);let r=await Ne(n.id);t||(ce(r.steps),D(Rt(Lt(r.steps,[],``,!1),d,!1)))}else D(Rt(Lt(n.steps,[],``,!1),d,!1))}}catch(e){if(t)return;if(e instanceof Error&&e.message.includes(`404`)){if(n<5){n++,setTimeout(()=>{t||r()},1e3);return}_e(!0)}else De.error(`Failed to load run`)}finally{t||he(!1)}}return r(),()=>{t=!0}},[e,i]),(0,j.useEffect)(()=>{if(!e||me)return;let t=!1;return xe(e).then(({logs:e})=>{t||k(e)}).catch(()=>{}),()=>{t=!0}},[e,me]),(0,j.useEffect)(()=>{z.current=null,B.current+=1,I(null),et(null),$e(!1)},[m?.id]);let tt=(0,j.useCallback)(async()=>{if(!m?.id)return;let e=B.current+1;B.current=e,$e(!0),et(null);try{let t=await Re(m.id);if(B.current!==e)return;z.current=m.id,I(t)}catch(t){if(B.current!==e)return;et(t instanceof Error?t.message:`Failed to load artifact data`)}finally{B.current===e&&$e(!1)}},[m?.id]);(0,j.useEffect)(()=>{!Xe||!m?.id||L||R||z.current===m.id&&Qe||tt()},[Xe,R,L,Qe,tt,m?.id]);let U=(0,j.useCallback)(e=>{F(e),N(!0)},[]),W=(0,j.useMemo)(()=>Lt(se,x,S,It(m)),[se,x,S,m]),G=(0,j.useMemo)(()=>o(C)?W.find(e=>e.id===C.stepId)??null:null,[C,W]),nt=G?.rawRunId??m?.id??null;(0,j.useEffect)(()=>{if(!nt){Ge(null);return}Ge(null);let e=!1;return Ce(nt).then(t=>{e||Ge(t)}).catch(()=>{e||Ge(null)}),()=>{e=!0}},[nt]);let rt=(0,j.useMemo)(()=>!c(C)||!G?null:G.subActionsData?.[C.subIndex]??null,[C,G]),K=(0,j.useMemo)(()=>{if(!G)return null;if(rt){let e=rt.screenshotBeforePath??null,t=rt.screenshotAfterPath??null;return!e&&!t?null:{key:[G.id,`sub`,rt.index,e??``,t??``].join(`|`),beforePath:e,afterPath:t}}let e=G.screenshotBeforePath,t=G.screenshotPath;return!e&&!t?null:{key:[G.id,`step`,e??``,t??``].join(`|`),beforePath:e,afterPath:t}},[G,rt]),it=K&&Je?.key===K.key?Je.side:void 0,q=o(C)?C.stepId:null,J=(0,j.useMemo)(()=>O.filter(e=>e.stepId===null&&e.phase===`setup`),[O]),Y=(0,j.useMemo)(()=>O.filter(e=>e.stepId===null&&e.phase===`teardown`),[O]),X=(0,j.useMemo)(()=>O.filter(e=>e.stepId!==null),[O]),at=(0,j.useMemo)(()=>G?X.filter(e=>e.stepId===G.id?!0:!e.stepId||G.rawRunId&&e.runId&&G.rawRunId!==e.runId?!1:Number.parseInt(e.stepId,10)===G.rawStepOrder):[],[X,G]),ot=(0,j.useMemo)(()=>C?.type===`hook`?O.find(e=>e.id===C.hookId)??null:null,[C,O]),st=(0,j.useMemo)(()=>C?.type===`execution`?O.find(e=>e.id===C.logId)??null:null,[C,O]),Z=(0,j.useMemo)(()=>{let e=[],t=It(m)&&S===`all`&&x.length>0,n=t?new Set(x.map(e=>e.id)):null;for(let t of J)(!n||!n.has(t.runId))&&e.push({type:`hook`,logId:t.id});if(t){let t=new Map;for(let e of W){let n=e.rawRunId??e.id,r=t.get(n)??[];r.push(e),t.set(n,r)}for(let[n,r]of t){for(let t of J)t.runId===n&&e.push({type:`hook`,logId:t.id});for(let t of r)if(e.push({type:`step`,stepId:t.id}),t.id===q){let n=X.filter(e=>e.stepId===t.id?!0:!e.stepId||t.rawRunId&&e.runId&&t.rawRunId!==e.runId?!1:Number.parseInt(e.stepId,10)===t.rawStepOrder);for(let r of n)e.push({type:`exec`,stepId:t.id,logId:r.id});t.subActionsData&&t.subActionsData.forEach((n,r)=>{e.push({type:`sub`,stepId:t.id,subIndex:r})})}for(let t of Y)t.runId===n&&e.push({type:`hook`,logId:t.id})}}else for(let t of W)if(e.push({type:`step`,stepId:t.id}),t.id===q){let n=X.filter(e=>e.stepId===t.id?!0:!e.stepId||t.rawRunId&&e.runId&&t.rawRunId!==e.runId?!1:Number.parseInt(e.stepId,10)===t.rawStepOrder);for(let r of n)e.push({type:`exec`,stepId:t.id,logId:r.id});t.subActionsData&&t.subActionsData.forEach((n,r)=>{e.push({type:`sub`,stepId:t.id,subIndex:r})})}for(let t of Y)(!n||!n.has(t.runId))&&e.push({type:`hook`,logId:t.id});return e},[W,q,X,J,Y,m,S,x]),Q=(0,j.useMemo)(()=>C?Z.findIndex(e=>C.type===`hook`&&e.type===`hook`?e.logId===C.hookId:C.type===`step`&&e.type===`step`?e.stepId===C.stepId:C.type===`subaction`&&e.type===`sub`?e.stepId===C.stepId&&e.subIndex===C.subIndex:C.type===`execution`&&e.type===`exec`?e.logId===C.logId:!1):-1,[Z,C]);function $(e){return e.type===`hook`?{type:`hook`,hookId:e.logId}:e.type===`step`?{type:`step`,stepId:e.stepId}:e.type===`exec`?{type:`execution`,stepId:e.stepId,logId:e.logId}:{type:`subaction`,stepId:e.stepId,subIndex:e.subIndex}}let ct=[`overview`,`env`,`network`,`console`,`aria`,`a11y`],lt=(0,j.useCallback)(e=>{V===`overview`&&K&&(e===`before`?K.beforePath:K.afterPath)&&Ye({key:K.key,side:e})},[V,K]);Ue((0,j.useMemo)(()=>{let e={arrowdown:()=>{Z.length!==0&&D($(Q===-1?Z[0]:Z[Math.min(Q+1,Z.length-1)]))},arrowup:()=>{Z.length!==0&&D($(Q===-1?Z[Z.length-1]:Z[Math.max(Q-1,0)]))},j:()=>{e.arrowdown({})},k:()=>{e.arrowup({})},"shift+arrowdown":()=>{if(Z.length===0)return;let e=Z.findIndex((e,t)=>t>Q&&e.type===`step`);e!==-1&&D($(Z[e]))},"shift+arrowup":()=>{if(Z.length===0)return;let e=-1;for(let t=Q-1;t>=0;t--)if(Z[t].type===`step`){e=t;break}e!==-1&&D($(Z[e]))},1:()=>H(ct[0]),2:()=>H(ct[1]),3:()=>H(ct[2]),4:()=>H(ct[3]),5:()=>H(ct[4]),6:()=>H(ct[5]),a:()=>lt(`after`),b:()=>lt(`before`),i:()=>U(`attributes`),c:()=>U(`config`),m:()=>U(`memory`),r:()=>{if(!m)return;let e=m.attributes[`agent-qa.runner`]===`local`;Oe({file:m.filePath??m.name,local:e}).then(e=>{De.success(`Re-run started`),i(w.runLive(e.runId))}).catch(()=>De.error(`Failed to start re-run`))},escape:()=>{Xe?N(!1):ve?ye(!1):D(null)},v:()=>{m?.videoPath&&ye(!0)},"shift+?":()=>qe(e=>!e),"shift+!":()=>v.current?.togglePhase(0),"shift+@":()=>v.current?.togglePhase(1),"shift+#":()=>v.current?.togglePhase(2),"shift+$":()=>v.current?.togglePhase(3)};return e},[Z,Q,C,m,i,Xe,ve,v,lt,U])),(0,j.useEffect)(()=>{let e=o(C)?W.find(e=>e.id===C.stepId):null,t=e?.rawStepOrder,n=e?.rawRunId;ee(e=>{let r=new URLSearchParams(e);return t==null?r.delete(`step`):r.set(`step`,String(t)),It(m)&&S===`all`&&n?r.set(`run`,n):r.delete(`run`),c(C)?r.set(`sub`,String(C.subIndex)):r.delete(`sub`),V===`overview`?r.delete(`tab`):r.set(`tab`,V),r},{replace:!0})},[C,V,W,m,S,ee]),(0,j.useEffect)(()=>{if(!o(C))return;let e=y.current;if(!e)return;if(C.type===`step`&&!d.has(`step`)&&!d.has(`sub`)&&W[0]?.id===C.stepId){b.current=C.stepId;return}b.current=null;let t=C.type===`step`?`[data-step-id="${C.stepId}"]`:C.type===`execution`?`[data-execution-id="${C.logId}"]`:c(C)?`[data-sub-action-id="${C.stepId}-${C.subIndex}"]`:null;if(!t)return;let n=requestAnimationFrame(()=>{let n=e.querySelector(t);n&&zt(e,n)});return()=>cancelAnimationFrame(n)},[C,W,d]);let ut=(0,j.useCallback)(async e=>{pe(e);try{let t=await Ne(e);ce(t.steps),D(Rt(Lt(t.steps,[],``,!1),d,!1))}catch{De.error(`Failed to load attempt`)}},[d]),dt=(0,j.useCallback)(async t=>{if(Ae(t),t===`all`)ce(je),D(Rt(Lt(je,x,`all`,It(m)),d,!0)),e&&xe(e).then(({logs:e})=>k(e)).catch(()=>{});else try{let e=await Ne(t);ce(e.steps);let{logs:n}=await xe(t);k(n),D(Rt(Lt(e.steps,[],t,!1),d,!1))}catch{De.error(`Failed to load test steps`)}},[je,e,m,d,x]);if(me)return(0,M.jsx)(Ie,{});if(ge||!m)return(0,M.jsx)(He,{icon:le,title:`Run not found`,description:`This test run doesn't exist or has been deleted`,actionLabel:`View All Runs`,onAction:()=>i(w.runs)});let ft=r(m.id,m.videoPath);return(0,M.jsx)(Te,{children:(0,M.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col overflow-hidden`,children:[(0,M.jsx)(Ze,{run:m,steps:se,shortcutsOpen:Ke,onToggleShortcuts:()=>qe(e=>!e),onOpenArtifacts:U}),(0,M.jsxs)(Be,{orientation:`horizontal`,className:`min-h-0 flex-1 overflow-hidden`,children:[(0,M.jsx)(ze,{defaultSize:35,minSize:20,children:(0,M.jsxs)(`div`,{ref:y,className:`flex h-full min-h-0 min-w-0 flex-col overflow-y-auto`,children:[It(m)&&x.length>0?(0,M.jsx)(`div`,{className:`border-b px-3 py-2 shrink-0`,children:(0,M.jsxs)(ae,{value:S,onValueChange:dt,children:[(0,M.jsx)(re,{className:`w-full h-8 text-xs`,children:(0,M.jsx)(ie,{})}),(0,M.jsxs)(ne,{children:[(0,M.jsxs)(te,{value:`all`,children:[`All Tests (`,x.length,`)`]}),x.map(e=>(0,M.jsx)(te,{value:e.id,children:(0,M.jsxs)(`span`,{className:`flex items-center gap-2`,children:[e.name,(0,M.jsx)(Mt,{status:e.status})]})},e.id))]})]})}):h.length>0?(0,M.jsx)(`div`,{className:`flex gap-1 border-b px-3 py-2 shrink-0`,children:h.map(e=>(0,M.jsxs)(`button`,{onClick:()=>ut(e.id),className:E(`px-3 py-1 text-xs rounded-sm border-b-2 transition-colors`,fe===e.id?`border-primary text-foreground font-medium`:`border-transparent text-muted-foreground hover:text-foreground`),children:[`Attempt `,e.attemptNumber,(0,M.jsx)(`span`,{className:`ml-1.5`,children:(0,M.jsx)(Mt,{status:e.status})})]},e.id))}):null,m.status===`failed`&&m.failureSummary&&(0,M.jsx)(Pt,{summary:m.failureSummary}),m.status===`failed`&&m.errorLog&&(0,M.jsxs)(p,{className:`mx-2 mt-1`,children:[(0,M.jsxs)(f,{className:`flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground transition-colors group w-full`,children:[(0,M.jsx)(T,{className:`h-3 w-3 transition-transform group-data-[state=open]:rotate-90`}),(0,M.jsx)(`span`,{children:`Error Details`})]}),(0,M.jsx)(u,{children:(0,M.jsx)(`pre`,{className:`mt-1 text-xs font-mono bg-muted/30 border border-border/50 rounded-[2px] px-3 py-2 overflow-x-auto whitespace-pre-wrap max-h-60 overflow-y-auto text-foreground/70 select-text`,children:m.errorLog})})]}),m.memoryLog&&(()=>{let e=JSON.parse(m.memoryLog);return(0,M.jsxs)(p,{className:`mx-2 mt-1`,children:[(0,M.jsxs)(f,{className:`flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground transition-colors group w-full`,children:[(0,M.jsx)(T,{className:`h-3 w-3 transition-transform group-data-[state=open]:rotate-90`}),(0,M.jsx)(`span`,{children:`Memory`}),(0,M.jsxs)(`span`,{className:`ml-1 text-[10px] opacity-60`,children:[e.added,`A `,e.confirmed,`C `,e.deprecated,`D`]})]}),(0,M.jsx)(u,{children:(0,M.jsxs)(`div`,{className:`mt-1 grid grid-cols-2 gap-x-6 gap-y-1 text-xs px-3 py-2 bg-muted/30 border border-border/50 rounded-[2px]`,children:[(0,M.jsxs)(`div`,{className:`flex justify-between`,children:[(0,M.jsx)(`span`,{className:`text-muted-foreground`,children:`Added`}),(0,M.jsx)(`span`,{className:`font-mono`,children:e.added})]}),(0,M.jsxs)(`div`,{className:`flex justify-between`,children:[(0,M.jsx)(`span`,{className:`text-muted-foreground`,children:`Confirmed`}),(0,M.jsx)(`span`,{className:`font-mono`,children:e.confirmed})]}),(0,M.jsxs)(`div`,{className:`flex justify-between`,children:[(0,M.jsx)(`span`,{className:`text-muted-foreground`,children:`Deprecated`}),(0,M.jsx)(`span`,{className:`font-mono`,children:e.deprecated})]}),(0,M.jsxs)(`div`,{className:`flex justify-between`,children:[(0,M.jsx)(`span`,{className:`text-muted-foreground`,children:`Errors`}),(0,M.jsx)(`span`,{className:`font-mono`,children:e.errors.length})]}),(0,M.jsxs)(`div`,{className:`flex justify-between`,children:[(0,M.jsx)(`span`,{className:`text-muted-foreground`,children:`Curator Duration`}),(0,M.jsxs)(`span`,{className:`font-mono`,children:[(e.curatorDuration/1e3).toFixed(1),`s`]})]}),(0,M.jsxs)(`div`,{className:`flex justify-between`,children:[(0,M.jsx)(`span`,{className:`text-muted-foreground`,children:`Tokens`}),(0,M.jsx)(`span`,{className:`font-mono`,children:e.tokenUsage?`${A(e.tokenUsage.promptTokens)} / ${A(e.tokenUsage.completionTokens)}`:`—`})]})]})})]})})(),(0,M.jsx)(t,{steps:W,selection:C,onSelect:D,suiteTests:It(m)?x:void 0,suiteSelectedView:S,setupHooks:J,teardownHooks:Y,inlineLogs:X})]})}),(0,M.jsx)(Ve,{withHandle:!0}),(0,M.jsx)(ze,{defaultSize:65,minSize:30,children:(0,M.jsx)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col overflow-hidden`,children:C?.type===`hook`&&ot?(0,M.jsx)(n,{log:ot}):C?.type===`execution`&&st?(0,M.jsx)(n,{log:st}):(0,M.jsx)(s,{activeTab:V,onTabChange:H,step:G,subAction:rt,runId:G?.rawRunId??m.id,allSteps:W,executionLogs:at,accessibilitySummary:We,platform:m.platform,screenshotSide:it,onScreenshotSideChange:lt,pipelineRef:v})})})]}),(0,M.jsx)(jt,{run:m,open:Xe,tab:P,response:Qe,loading:L,error:R,onOpenChange:N,onTabChange:F,onRetry:tt}),ve&&ft&&(0,M.jsxs)(`div`,{className:`fixed inset-0 z-50 bg-black/80 backdrop-blur-sm flex items-center justify-center`,onClick:()=>ye(!1),children:[(0,M.jsx)(_,{variant:`secondary`,size:`icon-sm`,className:`absolute top-4 right-4 h-8 w-8 bg-background/80 backdrop-blur-sm z-10`,onClick:()=>ye(!1),children:(0,M.jsx)(we,{className:`h-4 w-4`})}),(0,M.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,onClick:e=>e.stopPropagation(),children:[(0,M.jsx)(`video`,{ref:Se,src:ft,controls:!0,autoPlay:!0,className:`rounded-lg`,style:{maxWidth:`90vw`,maxHeight:`calc(90vh - 3rem)`},onLoadedMetadata:()=>{Se.current&&(Se.current.playbackRate=be)}}),(0,M.jsx)(`div`,{className:`flex items-center gap-1 bg-background/80 backdrop-blur-sm rounded-full px-1 py-0.5`,children:[.5,1,1.5,2,3,4].map(e=>(0,M.jsxs)(`button`,{onClick:()=>{g(e),Se.current&&(Se.current.playbackRate=e)},className:`px-2.5 py-1 rounded-full text-xs font-medium transition-colors ${be===e?`bg-primary text-primary-foreground`:`text-muted-foreground hover:text-foreground hover:bg-muted`}`,children:[e,`x`]},e))})]})]})]})})}export{Bt as default};
@@ -0,0 +1 @@
1
+ import{r as e}from"./chunk-CilyBKbf.js";import{t}from"./arrow-up-down-CwmMJuHC.js";import{i as n,l as r,n as i,o as a,s as o,t as s}from"./select-BE8tKMJy.js";import{n as c}from"./split-button-CcR2TDPY.js";import{n as l,r as u}from"./shortcut-hints-BGIo5sip.js";import{t as d}from"./plus-BhWnvE6F.js";import{t as f}from"./trash-2-sbLDCPlz.js";import{t as p}from"./use-page-title-CyHzJAcR.js";import{n as m,t as h}from"./batch-action-bar-DI05CPwy.js";import{n as g,r as _,t as v}from"./popover-Boe1excX.js";import{n as y,t as b}from"./scroll-area-B8cRs7wd.js";import{i as x,r as ee,t as te}from"./tabs-C3NqUdx9.js";import{$ as ne,Ft as re,Gt as ie,In as ae,It as oe,Jt as se,Kt as S,L as ce,Lt as C,Nt as w,Pt as T,Tt as le,Vn as ue,Xt as de,Yt as fe,Zt as pe,a as me,ar as he,dr as E,gr as D,ir as O,it as ge,j as _e,nr as ve,nt as ye,pr as k,qn as A,qt as j,rt as M,tr as N,vt as be,zn as P}from"./index-C_HfATr4.js";import{t as F}from"./badge-D56AWxFv.js";import{n as I,o as xe,r as L,t as R}from"./lib-hhwTCYTD.js";import{a as Se,i as z,n as Ce,o as B,r as V,t as we}from"./table-D4kdbpq8.js";import{t as Te}from"./empty-state-DEbHhF9f.js";import{t as Ee}from"./use-keyboard-shortcuts-BM0qq0DE.js";import{n as De,t as Oe}from"./use-selection-queue-CIpsCzay.js";var H=e(D(),1),U=N();function ke({startedAt:e}){let[t,n]=(0,H.useState)(()=>{let t=new Date(pe(e)).getTime();return Math.max(0,Math.floor((Date.now()-t)/1e3))});return(0,H.useEffect)(()=>{let t=new Date(pe(e)).getTime(),r=setInterval(()=>{n(Math.max(0,Math.floor((Date.now()-t)/1e3)))},1e3);return()=>clearInterval(r)},[e]),(0,U.jsxs)(`span`,{className:`text-blue-500 tabular-nums`,children:[Math.floor(t/60),`m `,t%60,`s`]})}var Ae={select:`44px`,status:`136px`,target:`180px`,attributes:`260px`,duration:`104px`,createdAt:`128px`},W=[`agent-qa.trigger`,`agent-qa.runner`];function G(e){return e===`ios`?`iOS`:e.charAt(0).toUpperCase()+e.slice(1)}function je(e){return`${e.targetName?.trim()||`No target`} (${G(e.platform)})`}function Me(e){return e.suiteId!=null&&e.parentRunId==null}function K(e,t){let n=new Map(t.map((e,t)=>[e,t])),r=new Map(W.map((e,t)=>[e,t]));return Object.entries(e??{}).filter(([,e])=>typeof e==`string`).sort(([e],[t])=>{let i=n.get(e),a=n.get(t);if(i!==void 0||a!==void 0)return(i??2**53-1)-(a??2**53-1);let o=r.get(e),s=r.get(t);return o!==void 0||s!==void 0?(o??2**53-1)-(s??2**53-1):e.localeCompare(t)})}function q({attributes:e,activeKeys:t}){let n=K(e,t);if(n.length===0)return(0,U.jsx)(`span`,{className:`text-[12px] text-muted-foreground`,children:`No attributes`});let r=n.length>2?1:2,i=n.slice(0,r),a=n.length-i.length;return(0,U.jsxs)(T,{children:[(0,U.jsx)(C,{asChild:!0,children:(0,U.jsxs)(`div`,{className:`max-h-[38px] overflow-hidden text-[12px] leading-[18px]`,"aria-label":n.map(([e,t])=>`${e}=${t}`).join(`, `),children:[i.map(([e,t])=>(0,U.jsxs)(`div`,{className:`min-w-0 truncate font-mono`,children:[(0,U.jsxs)(`span`,{className:`text-muted-foreground`,children:[e,`=`]}),(0,U.jsx)(`span`,{className:`text-foreground`,children:t})]},e)),a>0?(0,U.jsxs)(`div`,{className:`font-mono text-[11px] text-muted-foreground`,children:[`+`,a,` more`]}):null]})}),(0,U.jsx)(re,{side:`top`,align:`start`,className:`max-w-[420px] p-2`,children:(0,U.jsx)(`div`,{className:`max-h-64 overflow-auto font-mono text-[11px] leading-5`,children:n.map(([e,t])=>(0,U.jsxs)(`div`,{className:`grid min-w-0 grid-cols-[minmax(0,1fr)_minmax(0,1fr)] gap-2`,children:[(0,U.jsx)(`span`,{className:`truncate text-muted-foreground`,children:e}),(0,U.jsx)(`span`,{className:`truncate text-foreground`,children:t})]},e))})})]})}function J(e){return e.mode===`regex`?`${e.key} matches ${e.value}`:`${e.key} = ${e.value}`}function Ne({predicates:e,onChange:t}){let[n,r]=(0,H.useState)(!1),[i,a]=(0,H.useState)(``),[o,s]=(0,H.useState)(``),[c,l]=(0,H.useState)(`exact`),[u,p]=(0,H.useState)(null),[m,h]=(0,H.useState)([]),[y,b]=(0,H.useState)([]);(0,H.useEffect)(()=>{if(!n)return;let e=!1;return ye({q:i,limit:8}).then(t=>{e||h(t.keys)}).catch(()=>{e||h([])}),()=>{e=!0}},[i,n]),(0,H.useEffect)(()=>{if(!n||!i.trim()){b([]);return}let e=!1;return M(i.trim(),{q:o,limit:8}).then(t=>{e||b(t.values)}).catch(()=>{e||b([])}),()=>{e=!0}},[i,n,o]);function x(){let n=i.trim(),r=o.trim();if(!n||!r){p(`Enter an attribute key and value, or remove this filter.`);return}if(c===`regex`)try{new RegExp(r)}catch{p(`Enter a valid regular expression.`);return}p(null);let u=e.filter(e=>e.key!==n);t?.([...u,{key:n,value:r,mode:c}]),a(``),s(``),l(`exact`)}function ee(n){t?.(e.filter((e,t)=>t!==n))}return(0,U.jsxs)(v,{open:n,onOpenChange:r,children:[(0,U.jsx)(_,{asChild:!0,children:(0,U.jsxs)(S,{type:`button`,variant:e.length>0?`secondary`:`outline`,size:`sm`,"aria-label":`Filter by attributes`,className:`h-9 gap-2`,children:[(0,U.jsx)(P,{className:`size-4`}),`Attributes`,e.length>0?` (${e.length})`:``]})}),(0,U.jsxs)(g,{align:`start`,className:`w-[380px] p-0`,children:[(0,U.jsx)(`div`,{className:`border-b px-3 py-2`,children:(0,U.jsx)(`h3`,{className:`text-sm font-medium`,children:`Filter by attributes`})}),(0,U.jsxs)(`div`,{className:`space-y-3 p-3`,children:[(0,U.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,U.jsxs)(`div`,{className:`space-y-1`,children:[(0,U.jsx)(`label`,{className:`text-[11px] font-medium text-muted-foreground`,htmlFor:`run-attribute-key`,children:`Key`}),(0,U.jsx)(ie,{id:`run-attribute-key`,value:i,onChange:e=>{a(e.target.value),p(null)},placeholder:`git.branch`}),(0,U.jsx)(`div`,{className:`max-h-28 overflow-y-auto rounded border border-border/60`,children:m.length>0?m.map(e=>(0,U.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between gap-2 px-2 py-1 text-left text-xs hover:bg-muted`,onClick:()=>a(e.key),children:[(0,U.jsx)(`span`,{className:`truncate font-mono`,children:e.key}),(0,U.jsx)(`span`,{className:`text-muted-foreground tabular-nums`,children:e.count})]},e.key)):(0,U.jsx)(`div`,{className:`px-2 py-2 text-xs text-muted-foreground`,children:`No attributes found`})})]}),(0,U.jsxs)(`div`,{className:`space-y-1`,children:[(0,U.jsx)(`label`,{className:`text-[11px] font-medium text-muted-foreground`,htmlFor:`run-attribute-value`,children:`Value`}),(0,U.jsx)(ie,{id:`run-attribute-value`,value:o,onChange:e=>{s(e.target.value),p(null)},placeholder:c===`regex`?`^(master|main)$`:`master`,"aria-describedby":u?`run-attribute-filter-error`:void 0}),(0,U.jsx)(`div`,{className:`max-h-28 overflow-y-auto rounded border border-border/60`,children:y.length>0?y.map(e=>(0,U.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between gap-2 px-2 py-1 text-left text-xs hover:bg-muted`,onClick:()=>s(e.value),children:[(0,U.jsx)(`span`,{className:`truncate font-mono`,children:e.value}),(0,U.jsx)(`span`,{className:`text-muted-foreground tabular-nums`,children:e.count})]},e.value)):(0,U.jsx)(`div`,{className:`px-2 py-2 text-xs text-muted-foreground`,children:`No values found for this key`})})]})]}),(0,U.jsxs)(`div`,{className:`inline-flex rounded border border-border p-0.5`,children:[(0,U.jsx)(`button`,{type:`button`,className:j(`rounded-[2px] px-2 py-1 text-xs`,c===`exact`?`bg-primary text-primary-foreground`:`text-muted-foreground`),"aria-pressed":c===`exact`,onClick:()=>l(`exact`),children:`Exact match`}),(0,U.jsx)(`button`,{type:`button`,className:j(`rounded-[2px] px-2 py-1 text-xs`,c===`regex`?`bg-primary text-primary-foreground`:`text-muted-foreground`),"aria-pressed":c===`regex`,onClick:()=>l(`regex`),children:`Regex`})]}),u?(0,U.jsx)(`p`,{id:`run-attribute-filter-error`,className:`text-xs text-destructive`,children:u}):null,(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsxs)(S,{type:`button`,size:`sm`,onClick:x,children:[(0,U.jsx)(d,{className:`size-4`}),`Apply filter`]}),(0,U.jsx)(S,{type:`button`,size:`sm`,variant:`outline`,onClick:()=>t?.([]),disabled:e.length===0,children:`Clear attributes`})]}),e.length>0?(0,U.jsx)(`div`,{className:`space-y-1 border-t pt-3`,children:e.map((e,t)=>(0,U.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,U.jsx)(`span`,{className:`min-w-0 flex-1 break-all font-mono`,children:J(e)}),(0,U.jsx)(S,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":`Remove ${e.key} filter`,onClick:()=>ee(t),children:(0,U.jsx)(f,{className:`size-3.5`})})]},`${e.key}-${e.mode}`))}):null]})]})]})}function Y({status:e}){let t=O(e);return(0,U.jsx)(F,{className:he(t.tone),children:t.label})}function Pe({column:e,label:n}){return(0,U.jsx)(`div`,{className:`flex justify-end`,children:(0,U.jsxs)(S,{type:`button`,variant:`ghost`,size:`xs`,"data-runs-sort-button":`compact`,className:`h-7 max-w-full shrink justify-end px-1.5 text-[12px] leading-none text-foreground/90`,onClick:()=>e.toggleSorting(e.getIsSorted()===`asc`),children:[(0,U.jsx)(`span`,{className:`truncate`,children:n}),(0,U.jsx)(t,{})]})})}var Fe=[{accessorKey:`status`,header:({column:e})=>(0,U.jsxs)(S,{variant:`ghost`,className:`-ml-2`,onClick:()=>e.toggleSorting(e.getIsSorted()===`asc`),children:[`Status`,(0,U.jsx)(t,{className:`ml-2 h-4 w-4`})]})},{accessorKey:`name`,header:({column:e})=>(0,U.jsxs)(S,{variant:`ghost`,className:`-ml-2`,onClick:()=>e.toggleSorting(e.getIsSorted()===`asc`),children:[`Test Name`,(0,U.jsx)(t,{className:`ml-2 h-4 w-4`})]})},{id:`target`,accessorFn:e=>`${e.targetName??`No target`} ${e.platform}`,header:({column:e})=>(0,U.jsxs)(S,{variant:`ghost`,className:`-ml-2`,onClick:()=>e.toggleSorting(e.getIsSorted()===`asc`),children:[`Target`,(0,U.jsx)(t,{className:`ml-2 h-4 w-4`})]})},{id:`attributes`,accessorFn:e=>Object.entries(e.attributes??{}).map(([e,t])=>`${e}=${t}`).join(` `),header:`Attributes`},{accessorKey:`duration`,header:({column:e})=>(0,U.jsx)(Pe,{column:e,label:`Duration`})},{accessorKey:`createdAt`,header:({column:e})=>(0,U.jsx)(Pe,{column:e,label:`Started`})}];function Ie(e){e.stopPropagation()}function Le(e,t){if(e.length===0)return!1;let n=e.filter(e=>t.has(e)).length;return n===0?!1:n===e.length?!0:`indeterminate`}function Re(e){let t=Ae[e];if(t)return{width:t,minWidth:t}}function X(e){return j(`h-10 bg-background text-[13px] font-medium text-foreground/90`,e===`select`&&`w-11 px-2 text-center`,e===`status`&&`w-[136px] px-3`,e===`name`&&`px-3`,e===`target`&&`w-[180px] px-3`,e===`attributes`&&`w-[260px] px-3`,e===`duration`&&`w-[104px] px-3 text-right`,e===`createdAt`&&`w-[128px] px-3 text-right`)}function Z(e,t){return j(`py-2 align-top`,e===`select`&&`w-11 px-2`,e===`status`&&`w-[136px] px-3`,e===`name`&&j(`max-w-0 px-3`,t&&`pl-8`),e===`target`&&`w-[180px] max-w-0 px-3 text-muted-foreground`,e===`attributes`&&`w-[260px] max-w-0 px-3`,e===`duration`&&`w-[104px] px-3 text-right tabular-nums`,e===`createdAt`&&`w-[128px] px-3 text-right tabular-nums`)}function Q({isActive:e,isBatchSelected:t,isChild:n}){return j(`cursor-pointer outline-none hover:bg-muted/20 focus-visible:bg-primary/10`,n&&`bg-muted/[0.04]`,t&&!e&&`bg-muted/20`,e&&`bg-primary/10 ring-1 ring-inset ring-primary/60`)}function ze(e,t){let n=[];for(let r of e)if(n.push({id:r.id,run:r,isChild:!1,parentId:null}),!(!Me(r)||!t.has(r.id)))for(let e of r.tests??[])n.push({id:e.id,run:e,isChild:!0,parentId:r.id});return n}function Be({runs:e,total:t,isLoading:c,page:l,onPageChange:u,onSearchChange:d,searchValue:f,selectedRunId:p=null,onSelectedRunIdChange:h,expandedSuites:g=new Set,onToggleSuite:_,onOpenRun:v,onVisibleRunsChange:x,platformFilter:ee=``,onPlatformChange:te,targetFilter:ne=``,targetOptions:ae=[],onTargetChange:ce,attributePredicates:w=[],onAttributePredicatesChange:le,sorting:ue,onSortingChange:pe,headerActions:me,topSlot:he,enableSelection:E=!1,selectedRunIds:D=new Set,onToggleRunSelection:O,onToggleVisibleSelection:ge}){let[_e,ve]=(0,H.useState)([]),ye=ue??_e,k=pe??ve,j=I({data:e,columns:[...E?[{id:`select`,header:({table:e})=>(0,U.jsx)(`div`,{className:`flex items-center justify-center`,children:(0,U.jsx)(m,{checked:Le(e.getRowModel().rows.map(e=>e.original.id),D),onCheckedChange:t=>ge?.(e.getRowModel().rows.map(e=>e.original),t===!0),onClick:e=>e.stopPropagation(),"aria-label":`Select all`})}),enableSorting:!1}]:[],...Fe],getRowId:e=>e.id,getCoreRowModel:L(),getSortedRowModel:xe(),onSortingChange:k,state:{sorting:ye}}),M=j.getHeaderGroups(),N=j.getRowModel().rows,be=(0,H.useMemo)(()=>N.map(e=>e.original),[N]),P=(0,H.useMemo)(()=>ze(be,g),[g,be]),F=Math.ceil(t/50),Te=l*50+1,Ee=Math.min((l+1)*50,t),De=Array.from(new Set([ne,...ae].filter(e=>!!e))),Oe=[...E?[`select`]:[],`status`,`name`,`target`,`attributes`,`duration`,`createdAt`],Ae=(0,H.useMemo)(()=>w.map(e=>e.key),[w]);(0,H.useEffect)(()=>{x?.(P)},[x,P]),(0,H.useEffect)(()=>{if(!p)return;let e=document.querySelector(`[data-runs-row-surface="${p}"]`);e&&document.activeElement!==e&&e.focus()},[p]);function W(e){return e.status===`running`&&e.startedAt?(0,U.jsx)(`span`,{className:`text-sm tabular-nums`,children:(0,U.jsx)(ke,{startedAt:e.startedAt})}):e.status===`running`?(0,U.jsx)(`span`,{className:`text-sm text-blue-500`,children:`Starting...`}):(0,U.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:de(e.duration)})}function G(e,t){h?.(e.id),v?.(e,t)}function K(e,t){t.key===`Enter`&&(t.preventDefault(),G(e,t))}return(0,U.jsx)(oe,{children:(0,U.jsxs)(`div`,{className:`flex min-h-0 w-full flex-1 flex-col gap-4`,children:[(0,U.jsxs)(`div`,{className:`shrink-0 space-y-4`,children:[he,(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,U.jsx)(ie,{placeholder:`Search runs...`,value:f,onChange:e=>d(e.target.value),className:`max-w-[220px]`}),te&&(0,U.jsxs)(s,{value:ee||`all`,onValueChange:e=>te(e===`all`?``:e),children:[(0,U.jsx)(a,{className:`w-[140px]`,children:(0,U.jsx)(o,{placeholder:`All platforms`})}),(0,U.jsxs)(i,{children:[(0,U.jsx)(n,{value:`all`,children:`All platforms`}),(0,U.jsx)(n,{value:`web`,children:`Web`}),(0,U.jsx)(n,{value:`android`,children:`Android`}),(0,U.jsx)(n,{value:`ios`,children:`iOS`})]})]}),ce&&(0,U.jsxs)(s,{value:ne||`all`,onValueChange:e=>ce(e===`all`?``:e),children:[(0,U.jsx)(a,{className:`w-[180px]`,children:(0,U.jsx)(o,{placeholder:`All targets`})}),(0,U.jsxs)(i,{children:[(0,U.jsx)(n,{value:`all`,children:`All targets`}),De.map(e=>(0,U.jsx)(n,{value:e,children:e},e))]})]}),le&&(0,U.jsx)(Ne,{predicates:w,onChange:le}),(0,U.jsx)(`div`,{className:`flex-1`}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[c&&(0,U.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Loading...`}),me]})]})]}),(0,U.jsxs)(b,{className:`min-h-0 flex-1 rounded-md border`,children:[(0,U.jsxs)(we,{className:`min-w-full table-fixed`,children:[(0,U.jsx)(`colgroup`,{children:Oe.map(e=>(0,U.jsx)(`col`,{style:Re(e)},e))}),(0,U.jsx)(Se,{children:M.map(e=>(0,U.jsx)(B,{className:`hover:bg-transparent`,children:e.headers.map(e=>(0,U.jsx)(z,{className:X(e.column.id),children:e.isPlaceholder?null:R(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,U.jsx)(Ce,{children:N.length?N.map(e=>{let t=e.original,n=Me(t),i=n&&g.has(t.id),a=t.tests??[],o=a.filter(e=>e.status===`passed`).length,s=p===t.id,c=D.has(t.id);return(0,U.jsxs)(H.Fragment,{children:[(0,U.jsxs)(B,{tabIndex:s?0:-1,"data-runs-row-surface":t.id,"data-active":String(s),"data-state":c?`selected`:void 0,"aria-selected":s,className:Q({isActive:s,isBatchSelected:c,isChild:!1}),onClick:e=>G(t,e),onFocus:()=>h?.(t.id),onKeyDown:e=>K(t,e),children:[E&&(0,U.jsx)(V,{className:Z(`select`,!1),onClick:e=>e.stopPropagation(),children:(0,U.jsx)(`div`,{className:`flex items-center justify-center`,children:(0,U.jsx)(m,{checked:D.has(t.id),onCheckedChange:e=>O?.(t,e===!0),"aria-label":`Select row`})})}),(0,U.jsx)(V,{className:Z(`status`,!1),children:(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(Y,{status:t.status}),n&&a.length>0&&(0,U.jsxs)(`span`,{className:`text-[11px] text-muted-foreground/80 tabular-nums`,children:[o,`/`,a.length]})]})}),(0,U.jsx)(V,{className:Z(`name`,!1),children:(0,U.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2.5`,children:[n&&(0,U.jsx)(`button`,{type:`button`,className:`rounded p-0.5 hover:bg-muted`,onClick:e=>{Ie(e),_?.(t.id)},children:i?(0,U.jsx)(r,{className:`h-4 w-4 text-muted-foreground`}):(0,U.jsx)(A,{className:`h-4 w-4 text-muted-foreground`})}),(0,U.jsx)(`span`,{className:`block whitespace-normal break-words text-sm font-medium leading-snug text-foreground`,children:t.name})]})}),(0,U.jsx)(V,{className:Z(`target`,!1),children:(0,U.jsx)(`span`,{className:`block whitespace-normal break-words text-[13px] leading-snug text-muted-foreground/90`,children:je(t)})}),(0,U.jsx)(V,{className:Z(`attributes`,!1),children:(0,U.jsx)(q,{attributes:t.attributes,activeKeys:Ae})}),(0,U.jsx)(V,{className:Z(`duration`,!1),children:W(t)}),(0,U.jsx)(V,{className:Z(`createdAt`,!1),children:(0,U.jsxs)(T,{children:[(0,U.jsx)(C,{asChild:!0,children:(0,U.jsx)(`span`,{className:`truncate text-sm text-muted-foreground`,children:se(t.createdAt)})}),(0,U.jsx)(re,{children:fe(t.createdAt)})]})})]}),i&&a.map(t=>{let n=p===t.id;return(0,U.jsxs)(B,{tabIndex:n?0:-1,"data-runs-row-surface":t.id,"data-active":String(n),"aria-selected":n,className:Q({isActive:n,isBatchSelected:!1,isChild:!0}),onClick:e=>G(t,e),onFocus:()=>h?.(t.id),onKeyDown:e=>K(t,e),children:[E&&(0,U.jsx)(V,{className:Z(`select`,!0)}),(0,U.jsx)(V,{className:Z(`status`,!0),children:(0,U.jsx)(Y,{status:t.status})}),(0,U.jsx)(V,{className:Z(`name`,!0),children:(0,U.jsx)(`span`,{className:`block whitespace-normal break-words text-sm leading-snug text-foreground/90`,children:t.name})}),(0,U.jsx)(V,{className:Z(`target`,!0),children:(0,U.jsx)(`span`,{className:`block whitespace-normal break-words text-[13px] leading-snug text-muted-foreground`,children:je(t)})}),(0,U.jsx)(V,{className:Z(`attributes`,!0),children:(0,U.jsx)(q,{attributes:t.attributes,activeKeys:Ae})}),(0,U.jsx)(V,{className:Z(`duration`,!0),children:W(t)}),(0,U.jsx)(V,{className:Z(`createdAt`,!0),children:(0,U.jsxs)(T,{children:[(0,U.jsx)(C,{asChild:!0,children:(0,U.jsx)(`span`,{className:`truncate text-sm text-muted-foreground`,children:se(t.createdAt)})}),(0,U.jsx)(re,{children:fe(t.createdAt)})]})})]},`${e.id}-child-${t.id}`)})]},e.id)}):(0,U.jsx)(B,{children:(0,U.jsx)(V,{colSpan:Oe.length,className:`h-24 text-center`,children:`No results.`})})})]}),(0,U.jsx)(y,{orientation:`horizontal`})]}),(0,U.jsxs)(`div`,{className:`flex items-center justify-between px-1`,children:[(0,U.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:t>0?`Showing ${Te}-${Ee} of ${t}`:`No runs found`}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(S,{variant:`outline`,size:`sm`,onClick:()=>u(l-1),disabled:l===0,children:`Previous`}),(0,U.jsx)(S,{variant:`outline`,size:`sm`,onClick:()=>u(l+1),disabled:l>=F-1||F===0,children:`Next`})]})]})]})})}var $=new Set([`all`,`running`,`queued`,`completed`,`failed`]),Ve=new Set([`asc`,`desc`]);function He(e){if(!e)return 1;let t=Number.parseInt(e,10);return Number.isFinite(t)&&t>1?t:1}function Ue(e){let t=new URLSearchParams;e.tab!==`all`&&t.set(`tab`,e.tab),e.search&&t.set(`search`,e.search),e.platform&&t.set(`platform`,e.platform),e.target&&t.set(`target`,e.target);for(let n of e.attributePredicates){if(!n.key||!n.value)continue;let e=n.mode===`regex`?`attributes[${n.key}][regex]`:`attributes[${n.key}]`;t.set(e,n.value)}return e.sort&&(t.set(`sort`,e.sort),t.set(`order`,e.order)),e.page>1&&t.set(`page`,String(e.page)),t}function We(e){let t=[];for(let[n,r]of e.entries()){let e=/^attributes\[([^\]]+)\](?:\[(regex)\])?$/.exec(n);!e||!r||t.push({key:e[1],value:r,mode:e[2]===`regex`?`regex`:`exact`})}return t}function Ge(){let[e,t]=k(),n=e.get(`tab`),r=n&&$.has(n)?n:`all`,i=e.get(`search`)??``,a=e.get(`platform`)??``,o=e.get(`target`)??``,s=(0,H.useMemo)(()=>We(e),[e]),c=e.get(`sort`)??``,l=e.get(`order`)??`desc`,u=Ve.has(l)?l:`desc`,d=He(e.get(`page`)),f=(0,H.useMemo)(()=>c?[{id:c,desc:u===`desc`}]:[],[c,u]),p=(0,H.useRef)(f);p.current=f;let m=(0,H.useMemo)(()=>({tab:r,search:i,platform:a,target:o,attributePredicates:s,sort:c,order:u,page:d}),[r,i,a,o,s,c,u,d]);(0,H.useEffect)(()=>{let n=Ue(m);e.toString()!==n.toString()&&t(n,{replace:!0})},[e,t,m]);let h=(0,H.useCallback)((e,n)=>{let r={...m,...e};n?.resetPage&&(r.page=1),t(Ue(r),{replace:!0})},[t,m]);return{tab:r,search:i,platform:a,target:o,attributePredicates:s,sort:c,order:u,page:d,sorting:f,onSortingChange:(0,H.useCallback)(e=>{let t=typeof e==`function`?e(p.current):e;t.length>0?h({sort:t[0].id,order:t[0].desc?`desc`:`asc`}):h({sort:``,order:`desc`})},[h]),setTab:(0,H.useCallback)(e=>h({tab:e},{resetPage:!0}),[h]),setSearch:(0,H.useCallback)(e=>h({search:e},{resetPage:!0}),[h]),setPlatform:(0,H.useCallback)(e=>h({platform:e},{resetPage:!0}),[h]),setTarget:(0,H.useCallback)(e=>h({target:e},{resetPage:!0}),[h]),setAttributePredicates:(0,H.useCallback)(e=>h({attributePredicates:e},{resetPage:!0}),[h]),setPage:(0,H.useCallback)(e=>h({page:e}),[h])}}var Ke={all:``,running:`running`,queued:`pending`,completed:`passed`,failed:`failed`};function qe(e,t){let n=e.trim().toLowerCase();if(!n)return!0;let r=t.runId.toLowerCase().includes(n),i=(t.testName??``).toLowerCase().includes(n);return r||i}function Je(){p(`Runs`);let e=E(),[t,n]=(0,H.useState)([]),[r,i]=(0,H.useState)(0),[a,o]=(0,H.useState)([]),[s,d]=(0,H.useState)(!0),{tab:f,search:m,platform:g,target:_,attributePredicates:v,page:y,sorting:b,onSortingChange:ie,setTab:se,setSearch:de,setPlatform:fe,setTarget:pe,setAttributePredicates:he,setPage:D}=Ge(),[O,ye]=(0,H.useState)(!1),[k,A]=(0,H.useState)(null),[j,M]=(0,H.useState)([]),[N,P]=(0,H.useState)(()=>new Set),[I,xe]=(0,H.useState)(null),[L,R]=(0,H.useState)(!1),[Se,z]=(0,H.useState)(!1),[Ce,B]=(0,H.useState)(!0),[V,we]=(0,H.useState)(!0),{hasFarm:ke,isLoading:Ae}=c(),W=(0,H.useCallback)(async(e,t,r,a)=>{try{if(r&&r!==`running`){n(e),i(t);return}let{executions:o}=await ce();if(o.length===0){n(e),i(t);return}let s=new Set(e.map(e=>e.id)),c=o.filter(e=>!s.has(e.runId)).filter(e=>qe(a,e)).map(e=>({id:e.runId,name:e.testName??`Running test...`,filePath:null,status:`running`,duration:e.duration,attributes:{},environment:null,metadata:null,startedAt:e.startedAt,endedAt:null,videoPath:null,failureSummary:null,errorLog:null,memoryLog:null,testId:null,suiteId:null,platform:`web`,testFileContent:null,modelName:null,llmProvider:null,parentRunId:null,attemptNumber:1,retryCount:0,maxRetries:0,createdAt:e.startedAt}));n([...c,...e]),i(t+c.length)}catch{n(e),i(t)}},[]),G=(0,H.useCallback)(e=>({limit:50,offset:(e.page-1)*50,name:e.name||void 0,status:e.status||void 0,platform:e.platform||void 0,target:e.target||void 0,attributes:e.attributes}),[]),je=Ke[f]??``,Me=(0,H.useCallback)(async e=>{try{d(!0);let[t,n]=await Promise.all([ge(G(e)),ne()]);xe(n),o(t.targets??[]),await W(t.runs,t.total,e.status,e.name)}catch{w.error(`Failed to load runs`)}finally{d(!1),ye(!0)}},[W,G]),K=(0,H.useCallback)(async e=>{try{let[t,n]=await Promise.all([ge(G(e)),ne()]);xe(n),o(t.targets??[]),await W(t.runs,t.total,e.status,e.name)}catch{}},[W,G]),q=(0,H.useMemo)(()=>({page:y,name:m,status:je,platform:g,target:_,attributes:v}),[y,m,je,g,_,v]);(0,H.useEffect)(()=>{Me(q)},[Me,q]),(0,H.useEffect)(()=>{if(!O)return;let e=setInterval(()=>{K(q)},5e3);return()=>clearInterval(e)},[O,K,q]),(0,H.useEffect)(()=>{A(null),P(new Set),M([])},[f,m,g,_,v,y]),(0,H.useEffect)(()=>{k&&(j.some(e=>e.id===k)||A(t.find(e=>e.tests?.some(e=>e.id===k))?.id??null))},[t,k,j]);let J=Oe({items:t,getId:e=>e.id,visibleIds:t.map(e=>e.id)}),Ne=J.selectedIds,Y=J.selectedItems,Pe=(0,H.useCallback)(()=>{J.clearSelection(),z(!1),B(!0),we(!0)},[J]),Fe=(0,H.useCallback)(async e=>{if(Y.length===0)return;let t=Y.flatMap(e=>e.filePath?[e.filePath]:[]);if(t.length===0){w.error(`No selected runs can be rerun`);return}R(!0);try{let n=await Promise.allSettled(t.map(t=>le({file:t,local:e,noCache:!Ce,noMemory:!V}))),r=n.filter(e=>e.status===`fulfilled`).length,i=n.length-r;i>0?w.error(`${r} runs queued, ${i} failed`):w.success(`${r} runs queued`),z(!1)}finally{R(!1)}},[Y,Ce,V]),Ie=(0,H.useCallback)(async()=>{if(Y.length===0)return;let e=Array.from(new Set(Y.flatMap(e=>e.filePath?[e.filePath]:[])));if(e.length===0){w.error(`No selected runs have file paths to purge`);return}R(!0);try{let t=await Promise.allSettled(e.map(e=>be({file:e}))),n=t.filter(e=>e.status===`fulfilled`).length,r=t.filter(e=>e.status===`fulfilled`).reduce((e,t)=>e+t.value.purged,0),i=t.length-n;i>0?w.error(`Purged ${r} plans from ${n} tests, ${i} failed`):w.success(`Purged ${r} cached plan${r===1?``:`s`} from ${n} test${n===1?``:`s`}`)}finally{R(!1)}},[Y]),Le=(0,H.useCallback)(async()=>{if(Y.length!==0){R(!0);try{let e=await Promise.allSettled(Y.map(e=>_e(e.id))),t=Y.filter((t,n)=>e[n]?.status===`fulfilled`),r=new Set(e.flatMap(e=>e.status===`fulfilled`?e.value.deletedRunIds:[])),a=e.length-t.length;t.length>0&&(J.setItemsSelected(t,!1),n(e=>e.filter(e=>!r.has(e.id))),i(e=>Math.max(0,e-t.length)),z(!1)),a>0?w.error(`Deleted ${t.length} run${t.length===1?``:`s`}, ${a} failed`):w.success(`Deleted ${t.length} run${t.length===1?``:`s`}`)}finally{R(!1)}}},[Y,J]),Re=(0,H.useCallback)(e=>{P(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),X=(0,H.useCallback)((t,n)=>{let r=ve.runDetailOrLive(t.id,t.status);if(n?.metaKey||n?.ctrlKey||n?.button===1){window.open(r,`_blank`,`noopener,noreferrer`);return}e(r)},[e]),Z=(0,H.useCallback)((e,t)=>{X(e,t)},[X]),Q=(0,H.useMemo)(()=>j.findIndex(e=>e.id===k),[k,j]);Ee((0,H.useMemo)(()=>{let e=e=>{if(j.length!==0){if(Q===-1){A(e>0?j[0].id:j[j.length-1].id);return}A(j[Math.max(0,Math.min(Q+e,j.length-1))].id)}},t=()=>e(1),n=()=>e(-1);return{j:t,arrowdown:t,k:n,arrowup:n,enter:e=>{Q<0||X(j[Q].run,e)}}},[X,Q,j]));let ze=I?.running.count??0,$=I?.pending.count??0,Ve=$>0||ze>0;if(!O)return(0,U.jsx)(me,{});let He=!!m||f!==`all`||!!g||!!_||v.length>0;if(t.length===0&&!He)return(0,U.jsx)(Te,{icon:ue,title:`No test runs yet`,description:`Run your first test to see results here`,actionLabel:`View Tests`,onAction:()=>e(ve.tests)});let Ue=(0,U.jsx)(te,{value:f,onValueChange:se,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsxs)(ee,{variant:`line`,children:[(0,U.jsx)(x,{value:`all`,children:`All`}),(0,U.jsxs)(x,{value:`running`,children:[`Running`,ze>0&&(0,U.jsx)(F,{variant:`secondary`,className:`ml-1 px-1.5 text-xs`,children:ze})]}),(0,U.jsxs)(x,{value:`queued`,children:[`Queued`,$>0&&(0,U.jsx)(F,{variant:`secondary`,className:`ml-1 px-1.5 text-xs`,children:$})]}),(0,U.jsx)(x,{value:`completed`,children:`Completed`}),(0,U.jsx)(x,{value:`failed`,children:`Failed`})]}),Ve&&I&&(0,U.jsxs)(F,{variant:`outline`,className:`text-xs`,children:[I.activeSlots,`/`,I.concurrency,` slots`]})]})});return(0,U.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-4 overflow-hidden`,children:[(0,U.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-3`,children:[(0,U.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight`,children:`Runs`}),(0,U.jsx)(oe,{children:(0,U.jsxs)(T,{children:[(0,U.jsx)(C,{asChild:!0,children:(0,U.jsx)(S,{variant:`ghost`,size:`icon-sm`,"aria-label":`Keyboard shortcuts`,children:(0,U.jsx)(u,{className:`h-4 w-4`})})}),(0,U.jsx)(re,{side:`bottom`,className:`p-3`,children:(0,U.jsx)(l,{hints:[{key:`J / ↓`,label:`Next row`},{key:`K / ↑`,label:`Previous row`},{key:`Enter`,label:`Open run`},{key:`⌘+Enter`,label:`Open in new tab`}]})})]})})]}),(0,U.jsx)(Be,{topSlot:Ue,runs:t,total:r,isLoading:s,page:y-1,onPageChange:e=>D(e+1),onSearchChange:de,searchValue:m,selectedRunId:k,onSelectedRunIdChange:A,expandedSuites:N,onToggleSuite:Re,onOpenRun:Z,onVisibleRunsChange:M,platformFilter:g,onPlatformChange:fe,targetFilter:_,targetOptions:a,onTargetChange:pe,attributePredicates:v,onAttributePredicatesChange:he,sorting:b,onSortingChange:ie,enableSelection:!0,selectedRunIds:J.selectedIdSet,onToggleRunSelection:J.setItemSelected,onToggleVisibleSelection:J.setItemsSelected}),(0,U.jsx)(h,{selectedCount:Ne.length,summaryMeta:J.hiddenCount>0?`${J.hiddenCount} hidden by filters`:void 0,secondaryIcon:(0,U.jsx)(ae,{className:`size-4`}),secondaryAriaLabel:`Clear queue`,onDelete:Le,actionSlot:(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(De,{selectedCount:J.selectedCount,hiddenCount:J.hiddenCount,useCache:Ce,useMemory:V,browserStackAvailable:!Ae&&ke,open:Se,onOpenChange:z,onUseCacheChange:B,onUseMemoryChange:we,onRunLocal:()=>Fe(!0),onRunBrowserStack:()=>Fe(!1),disabled:L}),(0,U.jsx)(S,{variant:`outline`,size:`sm`,onClick:Ie,disabled:L,children:`Purge cache`})]}),onCancel:Pe,isRunning:L})]})}export{Je as default};
@@ -1 +1 @@
1
- import{r as e}from"./chunk-CilyBKbf.js";import{n as t,r as n}from"./use-page-title-CsUoFrfG.js";import{$n as r,Cn as i,Dn as a,Gt as o,Nn as s,Tn as c,mr as l,wn as u,xn as d,yn as f}from"./index-C3AdCkmj.js";var p=e(l(),1),m=r();function h(e,t){return p.useReducer((e,n)=>t[e][n]??e,e)}var g=`ScrollArea`,[_,v]=c(g),[y,b]=_(g),x=p.forwardRef((e,t)=>{let{__scopeScrollArea:r,type:i=`hover`,dir:o,scrollHideDelay:c=600,...l}=e,[u,d]=p.useState(null),[f,h]=p.useState(null),[g,_]=p.useState(null),[v,b]=p.useState(null),[x,S]=p.useState(null),[C,w]=p.useState(0),[T,E]=p.useState(0),[D,O]=p.useState(!1),[k,A]=p.useState(!1),j=s(t,e=>d(e)),M=n(o);return(0,m.jsx)(y,{scope:r,type:i,dir:M,scrollHideDelay:c,scrollArea:u,viewport:f,onViewportChange:h,content:g,onContentChange:_,scrollbarX:v,onScrollbarXChange:b,scrollbarXEnabled:D,onScrollbarXEnabledChange:O,scrollbarY:x,onScrollbarYChange:S,scrollbarYEnabled:k,onScrollbarYEnabledChange:A,onCornerWidthChange:w,onCornerHeightChange:E,children:(0,m.jsx)(a.div,{dir:M,...l,ref:j,style:{position:`relative`,"--radix-scroll-area-corner-width":C+`px`,"--radix-scroll-area-corner-height":T+`px`,...e.style}})})});x.displayName=g;var S=`ScrollAreaViewport`,C=p.forwardRef((e,t)=>{let{__scopeScrollArea:n,children:r,nonce:i,...o}=e,c=b(S,n),l=s(t,p.useRef(null),c.onViewportChange);return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}`},nonce:i}),(0,m.jsx)(a.div,{"data-radix-scroll-area-viewport":``,...o,ref:l,style:{overflowX:c.scrollbarXEnabled?`scroll`:`hidden`,overflowY:c.scrollbarYEnabled?`scroll`:`hidden`,...e.style},children:(0,m.jsx)(`div`,{ref:c.onContentChange,style:{minWidth:`100%`,display:`table`},children:r})})]})});C.displayName=S;var w=`ScrollAreaScrollbar`,T=p.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=b(w,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:o}=i,s=e.orientation===`horizontal`;return p.useEffect(()=>(s?a(!0):o(!0),()=>{s?a(!1):o(!1)}),[s,a,o]),i.type===`hover`?(0,m.jsx)(E,{...r,ref:t,forceMount:n}):i.type===`scroll`?(0,m.jsx)(D,{...r,ref:t,forceMount:n}):i.type===`auto`?(0,m.jsx)(O,{...r,ref:t,forceMount:n}):i.type===`always`?(0,m.jsx)(k,{...r,ref:t}):null});T.displayName=w;var E=p.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=b(w,e.__scopeScrollArea),[a,o]=p.useState(!1);return p.useEffect(()=>{let e=i.scrollArea,t=0;if(e){let n=()=>{window.clearTimeout(t),o(!0)},r=()=>{t=window.setTimeout(()=>o(!1),i.scrollHideDelay)};return e.addEventListener(`pointerenter`,n),e.addEventListener(`pointerleave`,r),()=>{window.clearTimeout(t),e.removeEventListener(`pointerenter`,n),e.removeEventListener(`pointerleave`,r)}}},[i.scrollArea,i.scrollHideDelay]),(0,m.jsx)(d,{present:n||a,children:(0,m.jsx)(O,{"data-state":a?`visible`:`hidden`,...r,ref:t})})}),D=p.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=b(w,e.__scopeScrollArea),a=e.orientation===`horizontal`,o=Y(()=>c(`SCROLL_END`),100),[s,c]=h(`hidden`,{hidden:{SCROLL:`scrolling`},scrolling:{SCROLL_END:`idle`,POINTER_ENTER:`interacting`},interacting:{SCROLL:`interacting`,POINTER_LEAVE:`idle`},idle:{HIDE:`hidden`,SCROLL:`scrolling`,POINTER_ENTER:`interacting`}});return p.useEffect(()=>{if(s===`idle`){let e=window.setTimeout(()=>c(`HIDE`),i.scrollHideDelay);return()=>window.clearTimeout(e)}},[s,i.scrollHideDelay,c]),p.useEffect(()=>{let e=i.viewport,t=a?`scrollLeft`:`scrollTop`;if(e){let n=e[t],r=()=>{let r=e[t];n!==r&&(c(`SCROLL`),o()),n=r};return e.addEventListener(`scroll`,r),()=>e.removeEventListener(`scroll`,r)}},[i.viewport,a,c,o]),(0,m.jsx)(d,{present:n||s!==`hidden`,children:(0,m.jsx)(k,{"data-state":s===`hidden`?`hidden`:`visible`,...r,ref:t,onPointerEnter:u(e.onPointerEnter,()=>c(`POINTER_ENTER`)),onPointerLeave:u(e.onPointerLeave,()=>c(`POINTER_LEAVE`))})})}),O=p.forwardRef((e,t)=>{let n=b(w,e.__scopeScrollArea),{forceMount:r,...i}=e,[a,o]=p.useState(!1),s=e.orientation===`horizontal`,c=Y(()=>{if(n.viewport){let e=n.viewport.offsetWidth<n.viewport.scrollWidth,t=n.viewport.offsetHeight<n.viewport.scrollHeight;o(s?e:t)}},10);return X(n.viewport,c),X(n.content,c),(0,m.jsx)(d,{present:r||a,children:(0,m.jsx)(k,{"data-state":a?`visible`:`hidden`,...i,ref:t})})}),k=p.forwardRef((e,t)=>{let{orientation:n=`vertical`,...r}=e,i=b(w,e.__scopeScrollArea),a=p.useRef(null),o=p.useRef(0),[s,c]=p.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=H(s.viewport,s.content),u={...r,sizes:s,onSizesChange:c,hasThumb:l>0&&l<1,onThumbChange:e=>a.current=e,onThumbPointerUp:()=>o.current=0,onThumbPointerDown:e=>o.current=e};function d(e,t){return W(e,o.current,s,t)}return n===`horizontal`?(0,m.jsx)(A,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollLeft,t=G(e,s,i.dir);a.current.style.transform=`translate3d(${t}px, 0, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollLeft=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollLeft=d(e,i.dir))}}):n===`vertical`?(0,m.jsx)(j,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollTop,t=G(e,s);a.current.style.transform=`translate3d(0, ${t}px, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollTop=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollTop=d(e))}}):null}),A=p.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=b(w,e.__scopeScrollArea),[o,c]=p.useState(),l=p.useRef(null),u=s(t,l,a.onScrollbarXChange);return p.useEffect(()=>{l.current&&c(getComputedStyle(l.current))},[l]),(0,m.jsx)(P,{"data-orientation":`horizontal`,...i,ref:u,sizes:n,style:{bottom:0,left:a.dir===`rtl`?`var(--radix-scroll-area-corner-width)`:0,right:a.dir===`ltr`?`var(--radix-scroll-area-corner-width)`:0,"--radix-scroll-area-thumb-width":U(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollLeft+t.deltaX;e.onWheelScroll(r),q(r,n)&&t.preventDefault()}},onResize:()=>{l.current&&a.viewport&&o&&r({content:a.viewport.scrollWidth,viewport:a.viewport.offsetWidth,scrollbar:{size:l.current.clientWidth,paddingStart:V(o.paddingLeft),paddingEnd:V(o.paddingRight)}})}})}),j=p.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=b(w,e.__scopeScrollArea),[o,c]=p.useState(),l=p.useRef(null),u=s(t,l,a.onScrollbarYChange);return p.useEffect(()=>{l.current&&c(getComputedStyle(l.current))},[l]),(0,m.jsx)(P,{"data-orientation":`vertical`,...i,ref:u,sizes:n,style:{top:0,right:a.dir===`ltr`?0:void 0,left:a.dir===`rtl`?0:void 0,bottom:`var(--radix-scroll-area-corner-height)`,"--radix-scroll-area-thumb-height":U(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollTop+t.deltaY;e.onWheelScroll(r),q(r,n)&&t.preventDefault()}},onResize:()=>{l.current&&a.viewport&&o&&r({content:a.viewport.scrollHeight,viewport:a.viewport.offsetHeight,scrollbar:{size:l.current.clientHeight,paddingStart:V(o.paddingTop),paddingEnd:V(o.paddingBottom)}})}})}),[M,N]=_(w),P=p.forwardRef((e,t)=>{let{__scopeScrollArea:n,sizes:r,hasThumb:i,onThumbChange:o,onThumbPointerUp:c,onThumbPointerDown:l,onThumbPositionChange:d,onDragScroll:h,onWheelScroll:g,onResize:_,...v}=e,y=b(w,n),[x,S]=p.useState(null),C=s(t,e=>S(e)),T=p.useRef(null),E=p.useRef(``),D=y.viewport,O=r.content-r.viewport,k=f(g),A=f(d),j=Y(_,10);function N(e){T.current&&h({x:e.clientX-T.current.left,y:e.clientY-T.current.top})}return p.useEffect(()=>{let e=e=>{let t=e.target;x?.contains(t)&&k(e,O)};return document.addEventListener(`wheel`,e,{passive:!1}),()=>document.removeEventListener(`wheel`,e,{passive:!1})},[D,x,O,k]),p.useEffect(A,[r,A]),X(x,j),X(y.content,j),(0,m.jsx)(M,{scope:n,scrollbar:x,hasThumb:i,onThumbChange:f(o),onThumbPointerUp:f(c),onThumbPositionChange:A,onThumbPointerDown:f(l),children:(0,m.jsx)(a.div,{...v,ref:C,style:{position:`absolute`,...v.style},onPointerDown:u(e.onPointerDown,e=>{e.button===0&&(e.target.setPointerCapture(e.pointerId),T.current=x.getBoundingClientRect(),E.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,y.viewport&&(y.viewport.style.scrollBehavior=`auto`),N(e))}),onPointerMove:u(e.onPointerMove,N),onPointerUp:u(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=E.current,y.viewport&&(y.viewport.style.scrollBehavior=``),T.current=null})})})}),F=`ScrollAreaThumb`,I=p.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=N(F,e.__scopeScrollArea);return(0,m.jsx)(d,{present:n||i.hasThumb,children:(0,m.jsx)(L,{ref:t,...r})})}),L=p.forwardRef((e,t)=>{let{__scopeScrollArea:n,style:r,...i}=e,o=b(F,n),c=N(F,n),{onThumbPositionChange:l}=c,d=s(t,e=>c.onThumbChange(e)),f=p.useRef(void 0),h=Y(()=>{f.current&&=(f.current(),void 0)},100);return p.useEffect(()=>{let e=o.viewport;if(e){let t=()=>{h(),f.current||(f.current=J(e,l),l())};return l(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[o.viewport,h,l]),(0,m.jsx)(a.div,{"data-state":c.hasThumb?`visible`:`hidden`,...i,ref:d,style:{width:`var(--radix-scroll-area-thumb-width)`,height:`var(--radix-scroll-area-thumb-height)`,...r},onPointerDownCapture:u(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;c.onThumbPointerDown({x:n,y:r})}),onPointerUp:u(e.onPointerUp,c.onThumbPointerUp)})});I.displayName=F;var R=`ScrollAreaCorner`,z=p.forwardRef((e,t)=>{let n=b(R,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!==`scroll`&&r?(0,m.jsx)(B,{...e,ref:t}):null});z.displayName=R;var B=p.forwardRef((e,t)=>{let{__scopeScrollArea:n,...r}=e,i=b(R,n),[o,s]=p.useState(0),[c,l]=p.useState(0),u=!!(o&&c);return X(i.scrollbarX,()=>{let e=i.scrollbarX?.offsetHeight||0;i.onCornerHeightChange(e),l(e)}),X(i.scrollbarY,()=>{let e=i.scrollbarY?.offsetWidth||0;i.onCornerWidthChange(e),s(e)}),u?(0,m.jsx)(a.div,{...r,ref:t,style:{width:o,height:c,position:`absolute`,right:i.dir===`ltr`?0:void 0,left:i.dir===`rtl`?0:void 0,bottom:0,...e.style}}):null});function V(e){return e?parseInt(e,10):0}function H(e,t){let n=e/t;return isNaN(n)?0:n}function U(e){let t=H(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function W(e,t,n,r=`ltr`){let i=U(n),a=i/2,o=t||a,s=i-o,c=n.scrollbar.paddingStart+o,l=n.scrollbar.size-n.scrollbar.paddingEnd-s,u=n.content-n.viewport,d=r===`ltr`?[0,u]:[u*-1,0];return K([c,l],d)(e)}function G(e,n,r=`ltr`){let i=U(n),a=n.scrollbar.paddingStart+n.scrollbar.paddingEnd,o=n.scrollbar.size-a,s=n.content-n.viewport,c=o-i,l=t(e,r===`ltr`?[0,s]:[s*-1,0]);return K([0,s],[0,c])(l)}function K(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function q(e,t){return e>0&&e<t}var J=(e,t=()=>{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return(function i(){let a={left:e.scrollLeft,top:e.scrollTop},o=n.left!==a.left,s=n.top!==a.top;(o||s)&&t(),n=a,r=window.requestAnimationFrame(i)})(),()=>window.cancelAnimationFrame(r)};function Y(e,t){let n=f(e),r=p.useRef(0);return p.useEffect(()=>()=>window.clearTimeout(r.current),[]),p.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function X(e,t){let n=f(t);i(()=>{let t=0;if(e){let r=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(n)});return r.observe(e),()=>{window.cancelAnimationFrame(t),r.unobserve(e)}}},[e,n])}var Z=x,Q=C,ee=z;function te({className:e,children:t,...n}){return(0,m.jsxs)(Z,{"data-slot":`scroll-area`,className:o(`relative`,e),...n,children:[(0,m.jsx)(Q,{"data-slot":`scroll-area-viewport`,className:`size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 [&>div]:!block`,children:t}),(0,m.jsx)($,{}),(0,m.jsx)(ee,{})]})}function $({className:e,orientation:t=`vertical`,...n}){return(0,m.jsx)(T,{"data-slot":`scroll-area-scrollbar`,orientation:t,className:o(`flex touch-none p-px transition-colors select-none`,t===`vertical`&&`h-full w-2.5 border-l border-l-transparent`,t===`horizontal`&&`h-2.5 flex-col border-t border-t-transparent`,e),...n,children:(0,m.jsx)(I,{"data-slot":`scroll-area-thumb`,className:`relative flex-1 rounded-full bg-border`})})}export{$ as n,te as t};
1
+ import{r as e}from"./chunk-CilyBKbf.js";import{n as t,r as n}from"./use-page-title-CyHzJAcR.js";import{Cn as r,Dn as i,En as a,Fn as o,Tn as s,gr as c,kn as l,qt as u,tr as d,xn as f}from"./index-C_HfATr4.js";var p=e(c(),1),m=d();function h(e,t){return p.useReducer((e,n)=>t[e][n]??e,e)}var g=`ScrollArea`,[_,v]=i(g),[y,b]=_(g),x=p.forwardRef((e,t)=>{let{__scopeScrollArea:r,type:i=`hover`,dir:a,scrollHideDelay:s=600,...c}=e,[u,d]=p.useState(null),[f,h]=p.useState(null),[g,_]=p.useState(null),[v,b]=p.useState(null),[x,S]=p.useState(null),[C,w]=p.useState(0),[T,E]=p.useState(0),[D,O]=p.useState(!1),[k,A]=p.useState(!1),j=o(t,e=>d(e)),M=n(a);return(0,m.jsx)(y,{scope:r,type:i,dir:M,scrollHideDelay:s,scrollArea:u,viewport:f,onViewportChange:h,content:g,onContentChange:_,scrollbarX:v,onScrollbarXChange:b,scrollbarXEnabled:D,onScrollbarXEnabledChange:O,scrollbarY:x,onScrollbarYChange:S,scrollbarYEnabled:k,onScrollbarYEnabledChange:A,onCornerWidthChange:w,onCornerHeightChange:E,children:(0,m.jsx)(l.div,{dir:M,...c,ref:j,style:{position:`relative`,"--radix-scroll-area-corner-width":C+`px`,"--radix-scroll-area-corner-height":T+`px`,...e.style}})})});x.displayName=g;var S=`ScrollAreaViewport`,C=p.forwardRef((e,t)=>{let{__scopeScrollArea:n,children:r,nonce:i,...a}=e,s=b(S,n),c=o(t,p.useRef(null),s.onViewportChange);return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}`},nonce:i}),(0,m.jsx)(l.div,{"data-radix-scroll-area-viewport":``,...a,ref:c,style:{overflowX:s.scrollbarXEnabled?`scroll`:`hidden`,overflowY:s.scrollbarYEnabled?`scroll`:`hidden`,...e.style},children:(0,m.jsx)(`div`,{ref:s.onContentChange,style:{minWidth:`100%`,display:`table`},children:r})})]})});C.displayName=S;var w=`ScrollAreaScrollbar`,T=p.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=b(w,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:o}=i,s=e.orientation===`horizontal`;return p.useEffect(()=>(s?a(!0):o(!0),()=>{s?a(!1):o(!1)}),[s,a,o]),i.type===`hover`?(0,m.jsx)(E,{...r,ref:t,forceMount:n}):i.type===`scroll`?(0,m.jsx)(D,{...r,ref:t,forceMount:n}):i.type===`auto`?(0,m.jsx)(O,{...r,ref:t,forceMount:n}):i.type===`always`?(0,m.jsx)(k,{...r,ref:t}):null});T.displayName=w;var E=p.forwardRef((e,t)=>{let{forceMount:n,...i}=e,a=b(w,e.__scopeScrollArea),[o,s]=p.useState(!1);return p.useEffect(()=>{let e=a.scrollArea,t=0;if(e){let n=()=>{window.clearTimeout(t),s(!0)},r=()=>{t=window.setTimeout(()=>s(!1),a.scrollHideDelay)};return e.addEventListener(`pointerenter`,n),e.addEventListener(`pointerleave`,r),()=>{window.clearTimeout(t),e.removeEventListener(`pointerenter`,n),e.removeEventListener(`pointerleave`,r)}}},[a.scrollArea,a.scrollHideDelay]),(0,m.jsx)(r,{present:n||o,children:(0,m.jsx)(O,{"data-state":o?`visible`:`hidden`,...i,ref:t})})}),D=p.forwardRef((e,t)=>{let{forceMount:n,...i}=e,o=b(w,e.__scopeScrollArea),s=e.orientation===`horizontal`,c=Y(()=>u(`SCROLL_END`),100),[l,u]=h(`hidden`,{hidden:{SCROLL:`scrolling`},scrolling:{SCROLL_END:`idle`,POINTER_ENTER:`interacting`},interacting:{SCROLL:`interacting`,POINTER_LEAVE:`idle`},idle:{HIDE:`hidden`,SCROLL:`scrolling`,POINTER_ENTER:`interacting`}});return p.useEffect(()=>{if(l===`idle`){let e=window.setTimeout(()=>u(`HIDE`),o.scrollHideDelay);return()=>window.clearTimeout(e)}},[l,o.scrollHideDelay,u]),p.useEffect(()=>{let e=o.viewport,t=s?`scrollLeft`:`scrollTop`;if(e){let n=e[t],r=()=>{let r=e[t];n!==r&&(u(`SCROLL`),c()),n=r};return e.addEventListener(`scroll`,r),()=>e.removeEventListener(`scroll`,r)}},[o.viewport,s,u,c]),(0,m.jsx)(r,{present:n||l!==`hidden`,children:(0,m.jsx)(k,{"data-state":l===`hidden`?`hidden`:`visible`,...i,ref:t,onPointerEnter:a(e.onPointerEnter,()=>u(`POINTER_ENTER`)),onPointerLeave:a(e.onPointerLeave,()=>u(`POINTER_LEAVE`))})})}),O=p.forwardRef((e,t)=>{let n=b(w,e.__scopeScrollArea),{forceMount:i,...a}=e,[o,s]=p.useState(!1),c=e.orientation===`horizontal`,l=Y(()=>{if(n.viewport){let e=n.viewport.offsetWidth<n.viewport.scrollWidth,t=n.viewport.offsetHeight<n.viewport.scrollHeight;s(c?e:t)}},10);return X(n.viewport,l),X(n.content,l),(0,m.jsx)(r,{present:i||o,children:(0,m.jsx)(k,{"data-state":o?`visible`:`hidden`,...a,ref:t})})}),k=p.forwardRef((e,t)=>{let{orientation:n=`vertical`,...r}=e,i=b(w,e.__scopeScrollArea),a=p.useRef(null),o=p.useRef(0),[s,c]=p.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=H(s.viewport,s.content),u={...r,sizes:s,onSizesChange:c,hasThumb:l>0&&l<1,onThumbChange:e=>a.current=e,onThumbPointerUp:()=>o.current=0,onThumbPointerDown:e=>o.current=e};function d(e,t){return W(e,o.current,s,t)}return n===`horizontal`?(0,m.jsx)(A,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollLeft,t=G(e,s,i.dir);a.current.style.transform=`translate3d(${t}px, 0, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollLeft=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollLeft=d(e,i.dir))}}):n===`vertical`?(0,m.jsx)(j,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollTop,t=G(e,s);a.current.style.transform=`translate3d(0, ${t}px, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollTop=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollTop=d(e))}}):null}),A=p.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=b(w,e.__scopeScrollArea),[s,c]=p.useState(),l=p.useRef(null),u=o(t,l,a.onScrollbarXChange);return p.useEffect(()=>{l.current&&c(getComputedStyle(l.current))},[l]),(0,m.jsx)(P,{"data-orientation":`horizontal`,...i,ref:u,sizes:n,style:{bottom:0,left:a.dir===`rtl`?`var(--radix-scroll-area-corner-width)`:0,right:a.dir===`ltr`?`var(--radix-scroll-area-corner-width)`:0,"--radix-scroll-area-thumb-width":U(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollLeft+t.deltaX;e.onWheelScroll(r),q(r,n)&&t.preventDefault()}},onResize:()=>{l.current&&a.viewport&&s&&r({content:a.viewport.scrollWidth,viewport:a.viewport.offsetWidth,scrollbar:{size:l.current.clientWidth,paddingStart:V(s.paddingLeft),paddingEnd:V(s.paddingRight)}})}})}),j=p.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=b(w,e.__scopeScrollArea),[s,c]=p.useState(),l=p.useRef(null),u=o(t,l,a.onScrollbarYChange);return p.useEffect(()=>{l.current&&c(getComputedStyle(l.current))},[l]),(0,m.jsx)(P,{"data-orientation":`vertical`,...i,ref:u,sizes:n,style:{top:0,right:a.dir===`ltr`?0:void 0,left:a.dir===`rtl`?0:void 0,bottom:`var(--radix-scroll-area-corner-height)`,"--radix-scroll-area-thumb-height":U(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollTop+t.deltaY;e.onWheelScroll(r),q(r,n)&&t.preventDefault()}},onResize:()=>{l.current&&a.viewport&&s&&r({content:a.viewport.scrollHeight,viewport:a.viewport.offsetHeight,scrollbar:{size:l.current.clientHeight,paddingStart:V(s.paddingTop),paddingEnd:V(s.paddingBottom)}})}})}),[M,N]=_(w),P=p.forwardRef((e,t)=>{let{__scopeScrollArea:n,sizes:r,hasThumb:i,onThumbChange:s,onThumbPointerUp:c,onThumbPointerDown:u,onThumbPositionChange:d,onDragScroll:h,onWheelScroll:g,onResize:_,...v}=e,y=b(w,n),[x,S]=p.useState(null),C=o(t,e=>S(e)),T=p.useRef(null),E=p.useRef(``),D=y.viewport,O=r.content-r.viewport,k=f(g),A=f(d),j=Y(_,10);function N(e){T.current&&h({x:e.clientX-T.current.left,y:e.clientY-T.current.top})}return p.useEffect(()=>{let e=e=>{let t=e.target;x?.contains(t)&&k(e,O)};return document.addEventListener(`wheel`,e,{passive:!1}),()=>document.removeEventListener(`wheel`,e,{passive:!1})},[D,x,O,k]),p.useEffect(A,[r,A]),X(x,j),X(y.content,j),(0,m.jsx)(M,{scope:n,scrollbar:x,hasThumb:i,onThumbChange:f(s),onThumbPointerUp:f(c),onThumbPositionChange:A,onThumbPointerDown:f(u),children:(0,m.jsx)(l.div,{...v,ref:C,style:{position:`absolute`,...v.style},onPointerDown:a(e.onPointerDown,e=>{e.button===0&&(e.target.setPointerCapture(e.pointerId),T.current=x.getBoundingClientRect(),E.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,y.viewport&&(y.viewport.style.scrollBehavior=`auto`),N(e))}),onPointerMove:a(e.onPointerMove,N),onPointerUp:a(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=E.current,y.viewport&&(y.viewport.style.scrollBehavior=``),T.current=null})})})}),F=`ScrollAreaThumb`,I=p.forwardRef((e,t)=>{let{forceMount:n,...i}=e,a=N(F,e.__scopeScrollArea);return(0,m.jsx)(r,{present:n||a.hasThumb,children:(0,m.jsx)(L,{ref:t,...i})})}),L=p.forwardRef((e,t)=>{let{__scopeScrollArea:n,style:r,...i}=e,s=b(F,n),c=N(F,n),{onThumbPositionChange:u}=c,d=o(t,e=>c.onThumbChange(e)),f=p.useRef(void 0),h=Y(()=>{f.current&&=(f.current(),void 0)},100);return p.useEffect(()=>{let e=s.viewport;if(e){let t=()=>{h(),f.current||(f.current=J(e,u),u())};return u(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[s.viewport,h,u]),(0,m.jsx)(l.div,{"data-state":c.hasThumb?`visible`:`hidden`,...i,ref:d,style:{width:`var(--radix-scroll-area-thumb-width)`,height:`var(--radix-scroll-area-thumb-height)`,...r},onPointerDownCapture:a(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;c.onThumbPointerDown({x:n,y:r})}),onPointerUp:a(e.onPointerUp,c.onThumbPointerUp)})});I.displayName=F;var R=`ScrollAreaCorner`,z=p.forwardRef((e,t)=>{let n=b(R,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!==`scroll`&&r?(0,m.jsx)(B,{...e,ref:t}):null});z.displayName=R;var B=p.forwardRef((e,t)=>{let{__scopeScrollArea:n,...r}=e,i=b(R,n),[a,o]=p.useState(0),[s,c]=p.useState(0),u=!!(a&&s);return X(i.scrollbarX,()=>{let e=i.scrollbarX?.offsetHeight||0;i.onCornerHeightChange(e),c(e)}),X(i.scrollbarY,()=>{let e=i.scrollbarY?.offsetWidth||0;i.onCornerWidthChange(e),o(e)}),u?(0,m.jsx)(l.div,{...r,ref:t,style:{width:a,height:s,position:`absolute`,right:i.dir===`ltr`?0:void 0,left:i.dir===`rtl`?0:void 0,bottom:0,...e.style}}):null});function V(e){return e?parseInt(e,10):0}function H(e,t){let n=e/t;return isNaN(n)?0:n}function U(e){let t=H(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function W(e,t,n,r=`ltr`){let i=U(n),a=i/2,o=t||a,s=i-o,c=n.scrollbar.paddingStart+o,l=n.scrollbar.size-n.scrollbar.paddingEnd-s,u=n.content-n.viewport,d=r===`ltr`?[0,u]:[u*-1,0];return K([c,l],d)(e)}function G(e,n,r=`ltr`){let i=U(n),a=n.scrollbar.paddingStart+n.scrollbar.paddingEnd,o=n.scrollbar.size-a,s=n.content-n.viewport,c=o-i,l=t(e,r===`ltr`?[0,s]:[s*-1,0]);return K([0,s],[0,c])(l)}function K(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function q(e,t){return e>0&&e<t}var J=(e,t=()=>{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return(function i(){let a={left:e.scrollLeft,top:e.scrollTop},o=n.left!==a.left,s=n.top!==a.top;(o||s)&&t(),n=a,r=window.requestAnimationFrame(i)})(),()=>window.cancelAnimationFrame(r)};function Y(e,t){let n=f(e),r=p.useRef(0);return p.useEffect(()=>()=>window.clearTimeout(r.current),[]),p.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function X(e,t){let n=f(t);s(()=>{let t=0;if(e){let r=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(n)});return r.observe(e),()=>{window.cancelAnimationFrame(t),r.unobserve(e)}}},[e,n])}var Z=x,Q=C,ee=z;function te({className:e,children:t,...n}){return(0,m.jsxs)(Z,{"data-slot":`scroll-area`,className:u(`relative`,e),...n,children:[(0,m.jsx)(Q,{"data-slot":`scroll-area-viewport`,className:`size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 [&>div]:!block`,children:t}),(0,m.jsx)($,{}),(0,m.jsx)(ee,{})]})}function $({className:e,orientation:t=`vertical`,...n}){return(0,m.jsx)(T,{"data-slot":`scroll-area-scrollbar`,orientation:t,className:u(`flex touch-none p-px transition-colors select-none`,t===`vertical`&&`h-full w-2.5 border-l border-l-transparent`,t===`horizontal`&&`h-2.5 flex-col border-t border-t-transparent`,e),...n,children:(0,m.jsx)(I,{"data-slot":`scroll-area-thumb`,className:`relative flex-1 rounded-full bg-border`})})}export{$ as n,te as t};
@@ -0,0 +1 @@
1
+ import{r as e}from"./chunk-CilyBKbf.js";import{t}from"./dist-itgTE_D5.js";import{n,r}from"./use-page-title-CyHzJAcR.js";import{$t as i,Dn as a,En as o,Fn as s,Mn as c,On as l,Sn as u,Tn as d,Zn as f,_n as p,bn as m,en as h,gn as g,gr as _,hn as v,hr as y,kn as b,nn as x,qt as S,rn as C,tn as w,tr as T,vn as E,wn as D,xn as O,yn as k}from"./index-C_HfATr4.js";var A=f(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),j=f(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),M=f(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),N=e(y(),1),P=e(_(),1);function F(e){let t=P.useRef({value:e,previous:e});return P.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var I=T(),L=[` `,`Enter`,`ArrowUp`,`ArrowDown`],R=[` `,`Enter`],z=`Select`,[B,V,H]=t(z),[U,W]=a(z,[H,C]),G=C(),[ee,K]=U(z),[te,ne]=U(z),re=e=>{let{__scopeSelect:t,children:n,open:i,defaultOpen:a,onOpenChange:o,value:s,defaultValue:c,onValueChange:l,dir:d,name:f,autoComplete:p,disabled:m,required:h,form:g}=e,_=G(t),[v,y]=P.useState(null),[b,S]=P.useState(null),[C,w]=P.useState(!1),T=r(d),[E,O]=D({prop:i,defaultProp:a??!1,onChange:o,caller:z}),[k,A]=D({prop:s,defaultProp:c,onChange:l,caller:z}),j=P.useRef(null),M=v?g||!!v.closest(`form`):!0,[N,F]=P.useState(new Set),L=Array.from(N).map(e=>e.props.value).join(`;`);return(0,I.jsx)(x,{..._,children:(0,I.jsxs)(ee,{required:h,scope:t,trigger:v,onTriggerChange:y,valueNode:b,onValueNodeChange:S,valueNodeHasChildren:C,onValueNodeHasChildrenChange:w,contentId:u(),value:k,onValueChange:A,open:E,onOpenChange:O,dir:T,triggerPointerDownPosRef:j,disabled:m,children:[(0,I.jsx)(B.Provider,{scope:t,children:(0,I.jsx)(te,{scope:e.__scopeSelect,onNativeOptionAdd:P.useCallback(e=>{F(t=>new Set(t).add(e))},[]),onNativeOptionRemove:P.useCallback(e=>{F(t=>{let n=new Set(t);return n.delete(e),n})},[]),children:n})}),M?(0,I.jsxs)(Ge,{"aria-hidden":!0,required:h,tabIndex:-1,name:f,autoComplete:p,value:k,onChange:e=>A(e.target.value),disabled:m,form:g,children:[k===void 0?(0,I.jsx)(`option`,{value:``}):null,Array.from(N)]},L):null]})})};re.displayName=z;var ie=`SelectTrigger`,q=P.forwardRef((e,t)=>{let{__scopeSelect:n,disabled:r=!1,...a}=e,c=G(n),l=K(ie,n),u=l.disabled||r,d=s(t,l.onTriggerChange),f=V(n),p=P.useRef(`touch`),[m,h,g]=qe(e=>{let t=f().filter(e=>!e.disabled),n=Je(t,e,t.find(e=>e.value===l.value));n!==void 0&&l.onValueChange(n.value)}),_=e=>{u||(l.onOpenChange(!0),g()),e&&(l.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,I.jsx)(i,{asChild:!0,...c,children:(0,I.jsx)(b.button,{type:`button`,role:`combobox`,"aria-controls":l.contentId,"aria-expanded":l.open,"aria-required":l.required,"aria-autocomplete":`none`,dir:l.dir,"data-state":l.open?`open`:`closed`,disabled:u,"data-disabled":u?``:void 0,"data-placeholder":Ke(l.value)?``:void 0,...a,ref:d,onClick:o(a.onClick,e=>{e.currentTarget.focus(),p.current!==`mouse`&&_(e)}),onPointerDown:o(a.onPointerDown,e=>{p.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(_(e),e.preventDefault())}),onKeyDown:o(a.onKeyDown,e=>{let t=m.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&h(e.key),!(t&&e.key===` `)&&L.includes(e.key)&&(_(),e.preventDefault())})})})});q.displayName=ie;var ae=`SelectValue`,oe=P.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,children:a,placeholder:o=``,...c}=e,l=K(ae,n),{onValueNodeHasChildrenChange:u}=l,f=a!==void 0,p=s(t,l.onValueNodeChange);return d(()=>{u(f)},[u,f]),(0,I.jsx)(b.span,{...c,ref:p,style:{pointerEvents:`none`},children:Ke(l.value)?(0,I.jsx)(I.Fragment,{children:o}):a})});oe.displayName=ae;var se=`SelectIcon`,ce=P.forwardRef((e,t)=>{let{__scopeSelect:n,children:r,...i}=e;return(0,I.jsx)(b.span,{"aria-hidden":!0,...i,ref:t,children:r||`▼`})});ce.displayName=se;var le=`SelectPortal`,ue=e=>(0,I.jsx)(E,{asChild:!0,...e});ue.displayName=le;var J=`SelectContent`,de=P.forwardRef((e,t)=>{let n=K(J,e.__scopeSelect),[r,i]=P.useState();if(d(()=>{i(new DocumentFragment)},[]),!n.open){let t=r;return t?N.createPortal((0,I.jsx)(fe,{scope:e.__scopeSelect,children:(0,I.jsx)(B.Slot,{scope:e.__scopeSelect,children:(0,I.jsx)(`div`,{children:e.children})})}),t):null}return(0,I.jsx)(he,{...e,ref:t})});de.displayName=J;var Y=10,[fe,X]=U(J),pe=`SelectContentImpl`,me=c(`SelectContent.RemoveScroll`),he=P.forwardRef((e,t)=>{let{__scopeSelect:n,position:r=`item-aligned`,onCloseAutoFocus:i,onEscapeKeyDown:a,onPointerDownOutside:c,side:l,sideOffset:u,align:d,alignOffset:f,arrowPadding:h,collisionBoundary:_,collisionPadding:y,sticky:b,hideWhenDetached:x,avoidCollisions:S,...C}=e,w=K(J,n),[T,E]=P.useState(null),[D,O]=P.useState(null),A=s(t,e=>E(e)),[j,M]=P.useState(null),[N,F]=P.useState(null),L=V(n),[R,z]=P.useState(!1),B=P.useRef(!1);P.useEffect(()=>{if(T)return v(T)},[T]),p();let H=P.useCallback(e=>{let[t,...n]=L().map(e=>e.ref.current),[r]=n.slice(-1),i=document.activeElement;for(let n of e)if(n===i||(n?.scrollIntoView({block:`nearest`}),n===t&&D&&(D.scrollTop=0),n===r&&D&&(D.scrollTop=D.scrollHeight),n?.focus(),document.activeElement!==i))return},[L,D]),U=P.useCallback(()=>H([j,T]),[H,j,T]);P.useEffect(()=>{R&&U()},[R,U]);let{onOpenChange:W,triggerPointerDownPosRef:G}=w;P.useEffect(()=>{if(T){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(G.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(G.current?.y??0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():T.contains(n.target)||W(!1),document.removeEventListener(`pointermove`,t),G.current=null};return G.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[T,W,G]),P.useEffect(()=>{let e=()=>W(!1);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[W]);let[ee,te]=qe(e=>{let t=L().filter(e=>!e.disabled),n=Je(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current.focus())}),ne=P.useCallback((e,t,n)=>{let r=!B.current&&!n;(w.value!==void 0&&w.value===t||r)&&(M(e),r&&(B.current=!0))},[w.value]),re=P.useCallback(()=>T?.focus(),[T]),ie=P.useCallback((e,t,n)=>{let r=!B.current&&!n;(w.value!==void 0&&w.value===t||r)&&F(e)},[w.value]),q=r===`popper`?ye:_e,ae=q===ye?{side:l,sideOffset:u,align:d,alignOffset:f,arrowPadding:h,collisionBoundary:_,collisionPadding:y,sticky:b,hideWhenDetached:x,avoidCollisions:S}:{};return(0,I.jsx)(fe,{scope:n,content:T,viewport:D,onViewportChange:O,itemRefCallback:ne,selectedItem:j,onItemLeave:re,itemTextRefCallback:ie,focusSelectedItem:U,selectedItemText:N,position:r,isPositioned:R,searchRef:ee,children:(0,I.jsx)(g,{as:me,allowPinchZoom:!0,children:(0,I.jsx)(k,{asChild:!0,trapped:w.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:o(i,e=>{w.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,I.jsx)(m,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:c,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>w.onOpenChange(!1),children:(0,I.jsx)(q,{role:`listbox`,id:w.contentId,"data-state":w.open?`open`:`closed`,dir:w.dir,onContextMenu:e=>e.preventDefault(),...C,...ae,onPlaced:()=>z(!0),ref:A,style:{display:`flex`,flexDirection:`column`,outline:`none`,...C.style},onKeyDown:o(C.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&te(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=L().filter(e=>!e.disabled).map(e=>e.ref.current);if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>H(t)),e.preventDefault()}})})})})})})});he.displayName=pe;var ge=`SelectItemAlignedPosition`,_e=P.forwardRef((e,t)=>{let{__scopeSelect:r,onPlaced:i,...a}=e,o=K(J,r),c=X(J,r),[l,u]=P.useState(null),[f,p]=P.useState(null),m=s(t,e=>p(e)),h=V(r),g=P.useRef(!1),_=P.useRef(!0),{viewport:v,selectedItem:y,selectedItemText:x,focusSelectedItem:S}=c,C=P.useCallback(()=>{if(o.trigger&&o.valueNode&&l&&f&&v&&y&&x){let e=o.trigger.getBoundingClientRect(),t=f.getBoundingClientRect(),r=o.valueNode.getBoundingClientRect(),a=x.getBoundingClientRect();if(o.dir!==`rtl`){let i=a.left-t.left,o=r.left-i,s=e.left-o,c=e.width+s,u=Math.max(c,t.width),d=window.innerWidth-Y,f=n(o,[Y,Math.max(Y,d-u)]);l.style.minWidth=c+`px`,l.style.left=f+`px`}else{let i=t.right-a.right,o=window.innerWidth-r.right-i,s=window.innerWidth-e.right-o,c=e.width+s,u=Math.max(c,t.width),d=window.innerWidth-Y,f=n(o,[Y,Math.max(Y,d-u)]);l.style.minWidth=c+`px`,l.style.right=f+`px`}let s=h(),c=window.innerHeight-Y*2,u=v.scrollHeight,d=window.getComputedStyle(f),p=parseInt(d.borderTopWidth,10),m=parseInt(d.paddingTop,10),_=parseInt(d.borderBottomWidth,10),b=parseInt(d.paddingBottom,10),S=p+m+u+b+_,C=Math.min(y.offsetHeight*5,S),w=window.getComputedStyle(v),T=parseInt(w.paddingTop,10),E=parseInt(w.paddingBottom,10),D=e.top+e.height/2-Y,O=c-D,k=y.offsetHeight/2,A=y.offsetTop+k,j=p+m+A,M=S-j;if(j<=D){let e=s.length>0&&y===s[s.length-1].ref.current;l.style.bottom=`0px`;let t=f.clientHeight-v.offsetTop-v.offsetHeight,n=j+Math.max(O,k+(e?E:0)+t+_);l.style.height=n+`px`}else{let e=s.length>0&&y===s[0].ref.current;l.style.top=`0px`;let t=Math.max(D,p+v.offsetTop+(e?T:0)+k)+M;l.style.height=t+`px`,v.scrollTop=j-D+v.offsetTop}l.style.margin=`${Y}px 0`,l.style.minHeight=C+`px`,l.style.maxHeight=c+`px`,i?.(),requestAnimationFrame(()=>g.current=!0)}},[h,o.trigger,o.valueNode,l,f,v,y,x,o.dir,i]);d(()=>C(),[C]);let[w,T]=P.useState();return d(()=>{f&&T(window.getComputedStyle(f).zIndex)},[f]),(0,I.jsx)(be,{scope:r,contentWrapper:l,shouldExpandOnScrollRef:g,onScrollButtonChange:P.useCallback(e=>{e&&_.current===!0&&(C(),S?.(),_.current=!1)},[C,S]),children:(0,I.jsx)(`div`,{ref:u,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:w},children:(0,I.jsx)(b.div,{...a,ref:m,style:{boxSizing:`border-box`,maxHeight:`100%`,...a.style}})})})});_e.displayName=ge;var ve=`SelectPopperPosition`,ye=P.forwardRef((e,t)=>{let{__scopeSelect:n,align:r=`start`,collisionPadding:i=Y,...a}=e,o=G(n);return(0,I.jsx)(w,{...o,...a,ref:t,align:r,collisionPadding:i,style:{boxSizing:`border-box`,...a.style,"--radix-select-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-select-content-available-width":`var(--radix-popper-available-width)`,"--radix-select-content-available-height":`var(--radix-popper-available-height)`,"--radix-select-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-select-trigger-height":`var(--radix-popper-anchor-height)`}})});ye.displayName=ve;var[be,xe]=U(J,{}),Z=`SelectViewport`,Se=P.forwardRef((e,t)=>{let{__scopeSelect:n,nonce:r,...i}=e,a=X(Z,n),c=xe(Z,n),l=s(t,a.onViewportChange),u=P.useRef(0);return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`},nonce:r}),(0,I.jsx)(B.Slot,{scope:n,children:(0,I.jsx)(b.div,{"data-radix-select-viewport":``,role:`presentation`,...i,ref:l,style:{position:`relative`,flex:1,overflow:`hidden auto`,...i.style},onScroll:o(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=c;if(r?.current&&n){let e=Math.abs(u.current-t.scrollTop);if(e>0){let r=window.innerHeight-Y*2,i=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),o=Math.max(i,a);if(o<r){let i=o+e,a=Math.min(r,i),s=i-a;n.style.height=a+`px`,n.style.bottom===`0px`&&(t.scrollTop=s>0?s:0,n.style.justifyContent=`flex-end`)}}}u.current=t.scrollTop})})})]})});Se.displayName=Z;var Ce=`SelectGroup`,[we,Te]=U(Ce),Ee=P.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=u();return(0,I.jsx)(we,{scope:n,id:i,children:(0,I.jsx)(b.div,{role:`group`,"aria-labelledby":i,...r,ref:t})})});Ee.displayName=Ce;var De=`SelectLabel`,Oe=P.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=Te(De,n);return(0,I.jsx)(b.div,{id:i.id,...r,ref:t})});Oe.displayName=De;var Q=`SelectItem`,[ke,Ae]=U(Q),je=P.forwardRef((e,t)=>{let{__scopeSelect:n,value:r,disabled:i=!1,textValue:a,...c}=e,l=K(Q,n),d=X(Q,n),f=l.value===r,[p,m]=P.useState(a??``),[h,g]=P.useState(!1),_=s(t,e=>d.itemRefCallback?.(e,r,i)),v=u(),y=P.useRef(`touch`),x=()=>{i||(l.onValueChange(r),l.onOpenChange(!1))};if(r===``)throw Error(`A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return(0,I.jsx)(ke,{scope:n,value:r,disabled:i,textId:v,isSelected:f,onItemTextChange:P.useCallback(e=>{m(t=>t||(e?.textContent??``).trim())},[]),children:(0,I.jsx)(B.ItemSlot,{scope:n,value:r,disabled:i,textValue:p,children:(0,I.jsx)(b.div,{role:`option`,"aria-labelledby":v,"data-highlighted":h?``:void 0,"aria-selected":f&&h,"data-state":f?`checked`:`unchecked`,"aria-disabled":i||void 0,"data-disabled":i?``:void 0,tabIndex:i?void 0:-1,...c,ref:_,onFocus:o(c.onFocus,()=>g(!0)),onBlur:o(c.onBlur,()=>g(!1)),onClick:o(c.onClick,()=>{y.current!==`mouse`&&x()}),onPointerUp:o(c.onPointerUp,()=>{y.current===`mouse`&&x()}),onPointerDown:o(c.onPointerDown,e=>{y.current=e.pointerType}),onPointerMove:o(c.onPointerMove,e=>{y.current=e.pointerType,i?d.onItemLeave?.():y.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:o(c.onPointerLeave,e=>{e.currentTarget===document.activeElement&&d.onItemLeave?.()}),onKeyDown:o(c.onKeyDown,e=>{d.searchRef?.current!==``&&e.key===` `||(R.includes(e.key)&&x(),e.key===` `&&e.preventDefault())})})})})});je.displayName=Q;var $=`SelectItemText`,Me=P.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,...a}=e,o=K($,n),c=X($,n),l=Ae($,n),u=ne($,n),[f,p]=P.useState(null),m=s(t,e=>p(e),l.onItemTextChange,e=>c.itemTextRefCallback?.(e,l.value,l.disabled)),h=f?.textContent,g=P.useMemo(()=>(0,I.jsx)(`option`,{value:l.value,disabled:l.disabled,children:h},l.value),[l.disabled,l.value,h]),{onNativeOptionAdd:_,onNativeOptionRemove:v}=u;return d(()=>(_(g),()=>v(g)),[_,v,g]),(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(b.span,{id:l.textId,...a,ref:m}),l.isSelected&&o.valueNode&&!o.valueNodeHasChildren?N.createPortal(a.children,o.valueNode):null]})});Me.displayName=$;var Ne=`SelectItemIndicator`,Pe=P.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return Ae(Ne,n).isSelected?(0,I.jsx)(b.span,{"aria-hidden":!0,...r,ref:t}):null});Pe.displayName=Ne;var Fe=`SelectScrollUpButton`,Ie=P.forwardRef((e,t)=>{let n=X(Fe,e.__scopeSelect),r=xe(Fe,e.__scopeSelect),[i,a]=P.useState(!1),o=s(t,r.onScrollButtonChange);return d(()=>{if(n.viewport&&n.isPositioned){let e=function(){a(t.scrollTop>0)},t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,I.jsx)(ze,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null});Ie.displayName=Fe;var Le=`SelectScrollDownButton`,Re=P.forwardRef((e,t)=>{let n=X(Le,e.__scopeSelect),r=xe(Le,e.__scopeSelect),[i,a]=P.useState(!1),o=s(t,r.onScrollButtonChange);return d(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight;a(Math.ceil(t.scrollTop)<e)},t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,I.jsx)(ze,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null});Re.displayName=Le;var ze=P.forwardRef((e,t)=>{let{__scopeSelect:n,onAutoScroll:r,...i}=e,a=X(`SelectScrollButton`,n),s=P.useRef(null),c=V(n),l=P.useCallback(()=>{s.current!==null&&(window.clearInterval(s.current),s.current=null)},[]);return P.useEffect(()=>()=>l(),[l]),d(()=>{c().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[c]),(0,I.jsx)(b.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:o(i.onPointerDown,()=>{s.current===null&&(s.current=window.setInterval(r,50))}),onPointerMove:o(i.onPointerMove,()=>{a.onItemLeave?.(),s.current===null&&(s.current=window.setInterval(r,50))}),onPointerLeave:o(i.onPointerLeave,()=>{l()})})}),Be=`SelectSeparator`,Ve=P.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return(0,I.jsx)(b.div,{"aria-hidden":!0,...r,ref:t})});Ve.displayName=Be;var He=`SelectArrow`,Ue=P.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=G(n),a=K(He,n),o=X(He,n);return a.open&&o.position===`popper`?(0,I.jsx)(h,{...i,...r,ref:t}):null});Ue.displayName=He;var We=`SelectBubbleInput`,Ge=P.forwardRef(({__scopeSelect:e,value:t,...n},r)=>{let i=P.useRef(null),a=s(r,i),o=F(t);return P.useEffect(()=>{let e=i.current;if(!e)return;let n=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`).set;if(o!==t&&r){let n=new Event(`change`,{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[o,t]),(0,I.jsx)(b.select,{...n,style:{...l,...n.style},ref:a,defaultValue:t})});Ge.displayName=We;function Ke(e){return e===``||e===void 0}function qe(e){let t=O(e),n=P.useRef(``),r=P.useRef(0),i=P.useCallback(e=>{let i=n.current+e;t(i),(function e(t){n.current=t,window.clearTimeout(r.current),t!==``&&(r.current=window.setTimeout(()=>e(``),1e3))})(i)},[t]),a=P.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return P.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,a]}function Je(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=Ye(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.textValue.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function Ye(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var Xe=re,Ze=q,Qe=oe,$e=ce,et=ue,tt=de,nt=Se,rt=Ee,it=Oe,at=je,ot=Me,st=Pe,ct=Ie,lt=Re;function ut({...e}){return(0,I.jsx)(Xe,{"data-slot":`select`,...e})}function dt({...e}){return(0,I.jsx)(rt,{"data-slot":`select-group`,...e})}function ft({...e}){return(0,I.jsx)(Qe,{"data-slot":`select-value`,...e})}function pt({className:e,size:t=`default`,children:n,...r}){return(0,I.jsxs)(Ze,{"data-slot":`select-trigger`,"data-size":t,className:S(`flex w-fit items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground`,e),...r,children:[n,(0,I.jsx)($e,{asChild:!0,children:(0,I.jsx)(j,{className:`size-4 opacity-50`})})]})}function mt({className:e,children:t,position:n=`item-aligned`,align:r=`center`,...i}){return(0,I.jsx)(et,{children:(0,I.jsxs)(tt,{"data-slot":`select-content`,className:S(`relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,align:r,...i,children:[(0,I.jsx)(_t,{}),(0,I.jsx)(nt,{className:S(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1`),children:t}),(0,I.jsx)(vt,{})]})})}function ht({className:e,...t}){return(0,I.jsx)(it,{"data-slot":`select-label`,className:S(`px-2 py-1.5 text-xs text-muted-foreground`,e),...t})}function gt({className:e,children:t,...n}){return(0,I.jsxs)(at,{"data-slot":`select-item`,className:S(`relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2`,e),...n,children:[(0,I.jsx)(`span`,{"data-slot":`select-item-indicator`,className:`absolute right-2 flex size-3.5 items-center justify-center`,children:(0,I.jsx)(st,{children:(0,I.jsx)(A,{className:`size-4`})})}),(0,I.jsx)(ot,{children:t})]})}function _t({className:e,...t}){return(0,I.jsx)(ct,{"data-slot":`select-scroll-up-button`,className:S(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,I.jsx)(M,{className:`size-4`})})}function vt({className:e,...t}){return(0,I.jsx)(lt,{"data-slot":`select-scroll-down-button`,className:S(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,I.jsx)(j,{className:`size-4`})})}export{ht as a,F as c,gt as i,j as l,mt as n,pt as o,dt as r,ft as s,ut as t,A as u};
@@ -1 +1 @@
1
- import{$n as e,Gt as t,Yn as n}from"./index-C3AdCkmj.js";var r=n(`keyboard`,[[`path`,{d:`M10 8h.01`,key:`1r9ogq`}],[`path`,{d:`M12 12h.01`,key:`1mp3jc`}],[`path`,{d:`M14 8h.01`,key:`1primd`}],[`path`,{d:`M16 12h.01`,key:`1l6xoz`}],[`path`,{d:`M18 8h.01`,key:`emo2bl`}],[`path`,{d:`M6 8h.01`,key:`x9i8wu`}],[`path`,{d:`M7 16h10`,key:`wp8him`}],[`path`,{d:`M8 12h.01`,key:`czm47f`}],[`rect`,{width:`20`,height:`16`,x:`2`,y:`4`,rx:`2`,key:`18n3k1`}]]),i=e();function a({shortcut:e,className:n}){return(0,i.jsx)(`kbd`,{className:t(`text-[10px] font-mono px-1.5 py-0.5 rounded border bg-muted text-muted-foreground`,n),children:e})}function o({hints:e}){return(0,i.jsx)(`div`,{className:`grid grid-cols-[auto_1fr] gap-x-3 gap-y-1.5`,children:e.map(e=>(0,i.jsxs)(`div`,{className:`contents`,children:[(0,i.jsx)(a,{shortcut:e.key}),(0,i.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.label})]},e.key))})}export{o as n,r,a as t};
1
+ import{Zn as e,qt as t,tr as n}from"./index-C_HfATr4.js";var r=e(`keyboard`,[[`path`,{d:`M10 8h.01`,key:`1r9ogq`}],[`path`,{d:`M12 12h.01`,key:`1mp3jc`}],[`path`,{d:`M14 8h.01`,key:`1primd`}],[`path`,{d:`M16 12h.01`,key:`1l6xoz`}],[`path`,{d:`M18 8h.01`,key:`emo2bl`}],[`path`,{d:`M6 8h.01`,key:`x9i8wu`}],[`path`,{d:`M7 16h10`,key:`wp8him`}],[`path`,{d:`M8 12h.01`,key:`czm47f`}],[`rect`,{width:`20`,height:`16`,x:`2`,y:`4`,rx:`2`,key:`18n3k1`}]]),i=n();function a({shortcut:e,className:n}){return(0,i.jsx)(`kbd`,{className:t(`text-[10px] font-mono px-1.5 py-0.5 rounded border bg-muted text-muted-foreground`,n),children:e})}function o({hints:e}){return(0,i.jsx)(`div`,{className:`grid grid-cols-[auto_1fr] gap-x-3 gap-y-1.5`,children:e.map(e=>(0,i.jsxs)(`div`,{className:`contents`,children:[(0,i.jsx)(a,{shortcut:e.key}),(0,i.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.label})]},e.key))})}export{o as n,r,a as t};
@@ -0,0 +1 @@
1
+ import{r as e}from"./chunk-CilyBKbf.js";import{l as t}from"./select-BE8tKMJy.js";import{t as n}from"./shortcut-hints-BGIo5sip.js";import{t as r}from"./dist-itgTE_D5.js";import{r as i}from"./use-page-title-CyHzJAcR.js";import{n as a,r as o,t as s}from"./dist-DaacWHUX.js";import{$t as c,An as l,Cn as u,Dn as d,En as f,Fn as p,Kt as m,Mn as ee,Pn as h,Sn as g,U as _,Vn as v,Zn as y,_n as te,bn as ne,en as re,gn as ie,gr as ae,hn as oe,kn as b,nn as x,qt as S,rn as C,tn as se,tr as w,vn as T,wn as ce,xn as E,yn as le}from"./index-C_HfATr4.js";var D=y(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),O=y(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),k=e(ae(),1),A=w(),j=[`Enter`,` `],ue=[`ArrowDown`,`PageUp`,`Home`],de=[`ArrowUp`,`PageDown`,`End`],fe=[...ue,...de],pe={ltr:[...j,`ArrowRight`],rtl:[...j,`ArrowLeft`]},M={ltr:[`ArrowLeft`],rtl:[`ArrowRight`]},N=`Menu`,[P,me,he]=r(N),[F,ge]=d(N,[he,C,o]),I=C(),_e=o(),[ve,L]=F(N),[ye,R]=F(N),be=e=>{let{__scopeMenu:t,open:n=!1,children:r,dir:a,onOpenChange:o,modal:s=!0}=e,c=I(t),[l,u]=k.useState(null),d=k.useRef(!1),f=E(o),p=i(a);return k.useEffect(()=>{let e=()=>{d.current=!0,document.addEventListener(`pointerdown`,t,{capture:!0,once:!0}),document.addEventListener(`pointermove`,t,{capture:!0,once:!0})},t=()=>d.current=!1;return document.addEventListener(`keydown`,e,{capture:!0}),()=>{document.removeEventListener(`keydown`,e,{capture:!0}),document.removeEventListener(`pointerdown`,t,{capture:!0}),document.removeEventListener(`pointermove`,t,{capture:!0})}},[]),(0,A.jsx)(x,{...c,children:(0,A.jsx)(ve,{scope:t,open:n,onOpenChange:f,content:l,onContentChange:u,children:(0,A.jsx)(ye,{scope:t,onClose:k.useCallback(()=>f(!1),[f]),isUsingKeyboardRef:d,dir:p,modal:s,children:r})})})};be.displayName=N;var xe=`MenuAnchor`,z=k.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=I(n);return(0,A.jsx)(c,{...i,...r,ref:t})});z.displayName=xe;var B=`MenuPortal`,[Se,Ce]=F(B,{forceMount:void 0}),we=e=>{let{__scopeMenu:t,forceMount:n,children:r,container:i}=e,a=L(B,t);return(0,A.jsx)(Se,{scope:t,forceMount:n,children:(0,A.jsx)(u,{present:n||a.open,children:(0,A.jsx)(T,{asChild:!0,container:i,children:r})})})};we.displayName=B;var V=`MenuContent`,[Te,H]=F(V),Ee=k.forwardRef((e,t)=>{let n=Ce(V,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=L(V,e.__scopeMenu),o=R(V,e.__scopeMenu);return(0,A.jsx)(P.Provider,{scope:e.__scopeMenu,children:(0,A.jsx)(u,{present:r||a.open,children:(0,A.jsx)(P.Slot,{scope:e.__scopeMenu,children:o.modal?(0,A.jsx)(De,{...i,ref:t}):(0,A.jsx)(Oe,{...i,ref:t})})})})}),De=k.forwardRef((e,t)=>{let n=L(V,e.__scopeMenu),r=k.useRef(null),i=p(t,r);return k.useEffect(()=>{let e=r.current;if(e)return oe(e)},[]),(0,A.jsx)(U,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:f(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),Oe=k.forwardRef((e,t)=>{let n=L(V,e.__scopeMenu);return(0,A.jsx)(U,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),ke=ee(`MenuContent.ScrollLock`),U=k.forwardRef((e,t)=>{let{__scopeMenu:n,loop:r=!1,trapFocus:i,onOpenAutoFocus:o,onCloseAutoFocus:s,disableOutsidePointerEvents:c,onEntryFocus:l,onEscapeKeyDown:u,onPointerDownOutside:d,onFocusOutside:m,onInteractOutside:ee,onDismiss:h,disableOutsideScroll:g,..._}=e,v=L(V,n),y=R(V,n),re=I(n),ae=_e(n),oe=me(n),[b,x]=k.useState(null),S=k.useRef(null),C=p(t,S,v.onContentChange),w=k.useRef(0),T=k.useRef(``),ce=k.useRef(0),E=k.useRef(null),D=k.useRef(`right`),O=k.useRef(0),j=g?ie:k.Fragment,ue=g?{as:ke,allowPinchZoom:!0}:void 0,pe=e=>{let t=T.current+e,n=oe().filter(e=>!e.disabled),r=document.activeElement,i=n.find(e=>e.ref.current===r)?.textValue,a=ct(n.map(e=>e.textValue),t,i),o=n.find(e=>e.textValue===a)?.ref.current;(function e(t){T.current=t,window.clearTimeout(w.current),t!==``&&(w.current=window.setTimeout(()=>e(``),1e3))})(t),o&&setTimeout(()=>o.focus())};k.useEffect(()=>()=>window.clearTimeout(w.current),[]),te();let M=k.useCallback(e=>D.current===E.current?.side&&ut(e,E.current?.area),[]);return(0,A.jsx)(Te,{scope:n,searchRef:T,onItemEnter:k.useCallback(e=>{M(e)&&e.preventDefault()},[M]),onItemLeave:k.useCallback(e=>{M(e)||(S.current?.focus(),x(null))},[M]),onTriggerLeave:k.useCallback(e=>{M(e)&&e.preventDefault()},[M]),pointerGraceTimerRef:ce,onPointerGraceIntentChange:k.useCallback(e=>{E.current=e},[]),children:(0,A.jsx)(j,{...ue,children:(0,A.jsx)(le,{asChild:!0,trapped:i,onMountAutoFocus:f(o,e=>{e.preventDefault(),S.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:s,children:(0,A.jsx)(ne,{asChild:!0,disableOutsidePointerEvents:c,onEscapeKeyDown:u,onPointerDownOutside:d,onFocusOutside:m,onInteractOutside:ee,onDismiss:h,children:(0,A.jsx)(a,{asChild:!0,...ae,dir:y.dir,orientation:`vertical`,loop:r,currentTabStopId:b,onCurrentTabStopIdChange:x,onEntryFocus:f(l,e=>{y.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,A.jsx)(se,{role:`menu`,"aria-orientation":`vertical`,"data-state":it(v.open),"data-radix-menu-content":``,dir:y.dir,...re,..._,ref:C,style:{outline:`none`,..._.style},onKeyDown:f(_.onKeyDown,e=>{let t=e.target.closest(`[data-radix-menu-content]`)===e.currentTarget,n=e.ctrlKey||e.altKey||e.metaKey,r=e.key.length===1;t&&(e.key===`Tab`&&e.preventDefault(),!n&&r&&pe(e.key));let i=S.current;if(e.target!==i||!fe.includes(e.key))return;e.preventDefault();let a=oe().filter(e=>!e.disabled).map(e=>e.ref.current);de.includes(e.key)&&a.reverse(),ot(a)}),onBlur:f(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(w.current),T.current=``)}),onPointerMove:f(e.onPointerMove,Y(e=>{let t=e.target,n=O.current!==e.clientX;e.currentTarget.contains(t)&&n&&(D.current=e.clientX>O.current?`right`:`left`,O.current=e.clientX)}))})})})})})})});Ee.displayName=V;var Ae=`MenuGroup`,W=k.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,A.jsx)(b.div,{role:`group`,...r,ref:t})});W.displayName=Ae;var je=`MenuLabel`,Me=k.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,A.jsx)(b.div,{...r,ref:t})});Me.displayName=je;var G=`MenuItem`,Ne=`menu.itemSelect`,K=k.forwardRef((e,t)=>{let{disabled:n=!1,onSelect:r,...i}=e,a=k.useRef(null),o=R(G,e.__scopeMenu),s=H(G,e.__scopeMenu),c=p(t,a),u=k.useRef(!1),d=()=>{let e=a.current;if(!n&&e){let t=new CustomEvent(Ne,{bubbles:!0,cancelable:!0});e.addEventListener(Ne,e=>r?.(e),{once:!0}),l(e,t),t.defaultPrevented?u.current=!1:o.onClose()}};return(0,A.jsx)(Pe,{...i,ref:c,disabled:n,onClick:f(e.onClick,d),onPointerDown:t=>{e.onPointerDown?.(t),u.current=!0},onPointerUp:f(e.onPointerUp,e=>{u.current||e.currentTarget?.click()}),onKeyDown:f(e.onKeyDown,e=>{let t=s.searchRef.current!==``;n||t&&e.key===` `||j.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});K.displayName=G;var Pe=k.forwardRef((e,t)=>{let{__scopeMenu:n,disabled:r=!1,textValue:i,...a}=e,o=H(G,n),c=_e(n),l=k.useRef(null),u=p(t,l),[d,m]=k.useState(!1),[ee,h]=k.useState(``);return k.useEffect(()=>{let e=l.current;e&&h((e.textContent??``).trim())},[a.children]),(0,A.jsx)(P.ItemSlot,{scope:n,disabled:r,textValue:i??ee,children:(0,A.jsx)(s,{asChild:!0,...c,focusable:!r,children:(0,A.jsx)(b.div,{role:`menuitem`,"data-highlighted":d?``:void 0,"aria-disabled":r||void 0,"data-disabled":r?``:void 0,...a,ref:u,onPointerMove:f(e.onPointerMove,Y(e=>{r?o.onItemLeave(e):(o.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:f(e.onPointerLeave,Y(e=>o.onItemLeave(e))),onFocus:f(e.onFocus,()=>m(!0)),onBlur:f(e.onBlur,()=>m(!1))})})})}),Fe=`MenuCheckboxItem`,Ie=k.forwardRef((e,t)=>{let{checked:n=!1,onCheckedChange:r,...i}=e;return(0,A.jsx)(We,{scope:e.__scopeMenu,checked:n,children:(0,A.jsx)(K,{role:`menuitemcheckbox`,"aria-checked":J(n)?`mixed`:n,...i,ref:t,"data-state":at(n),onSelect:f(i.onSelect,()=>r?.(J(n)?!0:!n),{checkForDefaultPrevented:!1})})})});Ie.displayName=Fe;var Le=`MenuRadioGroup`,[Re,ze]=F(Le,{value:void 0,onValueChange:()=>{}}),Be=k.forwardRef((e,t)=>{let{value:n,onValueChange:r,...i}=e,a=E(r);return(0,A.jsx)(Re,{scope:e.__scopeMenu,value:n,onValueChange:a,children:(0,A.jsx)(W,{...i,ref:t})})});Be.displayName=Le;var Ve=`MenuRadioItem`,He=k.forwardRef((e,t)=>{let{value:n,...r}=e,i=ze(Ve,e.__scopeMenu),a=n===i.value;return(0,A.jsx)(We,{scope:e.__scopeMenu,checked:a,children:(0,A.jsx)(K,{role:`menuitemradio`,"aria-checked":a,...r,ref:t,"data-state":at(a),onSelect:f(r.onSelect,()=>i.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});He.displayName=Ve;var Ue=`MenuItemIndicator`,[We,Ge]=F(Ue,{checked:!1}),Ke=k.forwardRef((e,t)=>{let{__scopeMenu:n,forceMount:r,...i}=e,a=Ge(Ue,n);return(0,A.jsx)(u,{present:r||J(a.checked)||a.checked===!0,children:(0,A.jsx)(b.span,{...i,ref:t,"data-state":at(a.checked)})})});Ke.displayName=Ue;var qe=`MenuSeparator`,Je=k.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,A.jsx)(b.div,{role:`separator`,"aria-orientation":`horizontal`,...r,ref:t})});Je.displayName=qe;var Ye=`MenuArrow`,Xe=k.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=I(n);return(0,A.jsx)(re,{...i,...r,ref:t})});Xe.displayName=Ye;var Ze=`MenuSub`,[Qe,$e]=F(Ze),et=e=>{let{__scopeMenu:t,children:n,open:r=!1,onOpenChange:i}=e,a=L(Ze,t),o=I(t),[s,c]=k.useState(null),[l,u]=k.useState(null),d=E(i);return k.useEffect(()=>(a.open===!1&&d(!1),()=>d(!1)),[a.open,d]),(0,A.jsx)(x,{...o,children:(0,A.jsx)(ve,{scope:t,open:r,onOpenChange:d,content:l,onContentChange:u,children:(0,A.jsx)(Qe,{scope:t,contentId:g(),triggerId:g(),trigger:s,onTriggerChange:c,children:n})})})};et.displayName=Ze;var q=`MenuSubTrigger`,tt=k.forwardRef((e,t)=>{let n=L(q,e.__scopeMenu),r=R(q,e.__scopeMenu),i=$e(q,e.__scopeMenu),a=H(q,e.__scopeMenu),o=k.useRef(null),{pointerGraceTimerRef:s,onPointerGraceIntentChange:c}=a,l={__scopeMenu:e.__scopeMenu},u=k.useCallback(()=>{o.current&&window.clearTimeout(o.current),o.current=null},[]);return k.useEffect(()=>u,[u]),k.useEffect(()=>{let e=s.current;return()=>{window.clearTimeout(e),c(null)}},[s,c]),(0,A.jsx)(z,{asChild:!0,...l,children:(0,A.jsx)(Pe,{id:i.triggerId,"aria-haspopup":`menu`,"aria-expanded":n.open,"aria-controls":i.contentId,"data-state":it(n.open),...e,ref:h(t,i.onTriggerChange),onClick:t=>{e.onClick?.(t),!(e.disabled||t.defaultPrevented)&&(t.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:f(e.onPointerMove,Y(t=>{a.onItemEnter(t),!t.defaultPrevented&&!e.disabled&&!n.open&&!o.current&&(a.onPointerGraceIntentChange(null),o.current=window.setTimeout(()=>{n.onOpenChange(!0),u()},100))})),onPointerLeave:f(e.onPointerLeave,Y(e=>{u();let t=n.content?.getBoundingClientRect();if(t){let r=n.content?.dataset.side,i=r===`right`,o=i?-5:5,c=t[i?`left`:`right`],l=t[i?`right`:`left`];a.onPointerGraceIntentChange({area:[{x:e.clientX+o,y:e.clientY},{x:c,y:t.top},{x:l,y:t.top},{x:l,y:t.bottom},{x:c,y:t.bottom}],side:r}),window.clearTimeout(s.current),s.current=window.setTimeout(()=>a.onPointerGraceIntentChange(null),300)}else{if(a.onTriggerLeave(e),e.defaultPrevented)return;a.onPointerGraceIntentChange(null)}})),onKeyDown:f(e.onKeyDown,t=>{let i=a.searchRef.current!==``;e.disabled||i&&t.key===` `||pe[r.dir].includes(t.key)&&(n.onOpenChange(!0),n.content?.focus(),t.preventDefault())})})})});tt.displayName=q;var nt=`MenuSubContent`,rt=k.forwardRef((e,t)=>{let n=Ce(V,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=L(V,e.__scopeMenu),o=R(V,e.__scopeMenu),s=$e(nt,e.__scopeMenu),c=k.useRef(null),l=p(t,c);return(0,A.jsx)(P.Provider,{scope:e.__scopeMenu,children:(0,A.jsx)(u,{present:r||a.open,children:(0,A.jsx)(P.Slot,{scope:e.__scopeMenu,children:(0,A.jsx)(U,{id:s.contentId,"aria-labelledby":s.triggerId,...i,ref:l,align:`start`,side:o.dir===`rtl`?`left`:`right`,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:e=>{o.isUsingKeyboardRef.current&&c.current?.focus(),e.preventDefault()},onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:f(e.onFocusOutside,e=>{e.target!==s.trigger&&a.onOpenChange(!1)}),onEscapeKeyDown:f(e.onEscapeKeyDown,e=>{o.onClose(),e.preventDefault()}),onKeyDown:f(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),n=M[o.dir].includes(e.key);t&&n&&(a.onOpenChange(!1),s.trigger?.focus(),e.preventDefault())})})})})})});rt.displayName=nt;function it(e){return e?`open`:`closed`}function J(e){return e===`indeterminate`}function at(e){return J(e)?`indeterminate`:e?`checked`:`unchecked`}function ot(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function st(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function ct(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=st(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function lt(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e],s=t[a],c=o.x,l=o.y,u=s.x,d=s.y;l>r!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}function ut(e,t){return t?lt({x:e.clientX,y:e.clientY},t):!1}function Y(e){return t=>t.pointerType===`mouse`?e(t):void 0}var dt=be,ft=z,pt=we,mt=Ee,ht=W,gt=Me,_t=K,vt=Ie,yt=Be,bt=He,xt=Ke,St=Je,Ct=Xe,wt=tt,Tt=rt,X=`DropdownMenu`,[Et,Dt]=d(X,[ge]),Z=ge(),[Ot,kt]=Et(X),At=e=>{let{__scopeDropdownMenu:t,children:n,dir:r,open:i,defaultOpen:a,onOpenChange:o,modal:s=!0}=e,c=Z(t),l=k.useRef(null),[u,d]=ce({prop:i,defaultProp:a??!1,onChange:o,caller:X});return(0,A.jsx)(Ot,{scope:t,triggerId:g(),triggerRef:l,contentId:g(),open:u,onOpenChange:d,onOpenToggle:k.useCallback(()=>d(e=>!e),[d]),modal:s,children:(0,A.jsx)(dt,{...c,open:u,onOpenChange:d,dir:r,modal:s,children:n})})};At.displayName=X;var jt=`DropdownMenuTrigger`,Mt=k.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,disabled:r=!1,...i}=e,a=kt(jt,n),o=Z(n);return(0,A.jsx)(ft,{asChild:!0,...o,children:(0,A.jsx)(b.button,{type:`button`,id:a.triggerId,"aria-haspopup":`menu`,"aria-expanded":a.open,"aria-controls":a.open?a.contentId:void 0,"data-state":a.open?`open`:`closed`,"data-disabled":r?``:void 0,disabled:r,...i,ref:h(t,a.triggerRef),onPointerDown:f(e.onPointerDown,e=>{!r&&e.button===0&&e.ctrlKey===!1&&(a.onOpenToggle(),a.open||e.preventDefault())}),onKeyDown:f(e.onKeyDown,e=>{r||([`Enter`,` `].includes(e.key)&&a.onOpenToggle(),e.key===`ArrowDown`&&a.onOpenChange(!0),[`Enter`,` `,`ArrowDown`].includes(e.key)&&e.preventDefault())})})})});Mt.displayName=jt;var Nt=`DropdownMenuPortal`,Pt=e=>{let{__scopeDropdownMenu:t,...n}=e,r=Z(t);return(0,A.jsx)(pt,{...r,...n})};Pt.displayName=Nt;var Ft=`DropdownMenuContent`,It=k.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=kt(Ft,n),a=Z(n),o=k.useRef(!1);return(0,A.jsx)(mt,{id:i.contentId,"aria-labelledby":i.triggerId,...a,...r,ref:t,onCloseAutoFocus:f(e.onCloseAutoFocus,e=>{o.current||i.triggerRef.current?.focus(),o.current=!1,e.preventDefault()}),onInteractOutside:f(e.onInteractOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;(!i.modal||r)&&(o.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})});It.displayName=Ft;var Lt=`DropdownMenuGroup`,Rt=k.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,A.jsx)(ht,{...i,...r,ref:t})});Rt.displayName=Lt;var zt=`DropdownMenuLabel`,Bt=k.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,A.jsx)(gt,{...i,...r,ref:t})});Bt.displayName=zt;var Vt=`DropdownMenuItem`,Ht=k.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,A.jsx)(_t,{...i,...r,ref:t})});Ht.displayName=Vt;var Ut=`DropdownMenuCheckboxItem`,Wt=k.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,A.jsx)(vt,{...i,...r,ref:t})});Wt.displayName=Ut;var Gt=`DropdownMenuRadioGroup`,Kt=k.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,A.jsx)(yt,{...i,...r,ref:t})});Kt.displayName=Gt;var qt=`DropdownMenuRadioItem`,Jt=k.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,A.jsx)(bt,{...i,...r,ref:t})});Jt.displayName=qt;var Yt=`DropdownMenuItemIndicator`,Xt=k.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,A.jsx)(xt,{...i,...r,ref:t})});Xt.displayName=Yt;var Zt=`DropdownMenuSeparator`,Qt=k.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,A.jsx)(St,{...i,...r,ref:t})});Qt.displayName=Zt;var $t=`DropdownMenuArrow`,en=k.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,A.jsx)(Ct,{...i,...r,ref:t})});en.displayName=$t;var tn=`DropdownMenuSubTrigger`,nn=k.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,A.jsx)(wt,{...i,...r,ref:t})});nn.displayName=tn;var rn=`DropdownMenuSubContent`,an=k.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,A.jsx)(Tt,{...i,...r,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})});an.displayName=rn;var on=At,sn=Mt,cn=Pt,ln=It,un=Ht,dn=Qt;function fn({...e}){return(0,A.jsx)(on,{"data-slot":`dropdown-menu`,...e})}function pn({...e}){return(0,A.jsx)(sn,{"data-slot":`dropdown-menu-trigger`,...e})}function mn({className:e,sideOffset:t=4,...n}){return(0,A.jsx)(cn,{children:(0,A.jsx)(ln,{"data-slot":`dropdown-menu-content`,sideOffset:t,className:S(`z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,e),...n})})}function Q({className:e,inset:t,variant:n=`default`,...r}){return(0,A.jsx)(un,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:S(`relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!`,e),...r})}function hn({className:e,...t}){return(0,A.jsx)(dn,{"data-slot":`dropdown-menu-separator`,className:S(`-mx-1 my-1 h-px bg-border`,e),...t})}var $=null,gn=null;function _n(){let[e,t]=(0,k.useState)(()=>$?{...$,isLoading:!1}:{defaultRunMode:`local`,hasFarm:!1,isLoading:!0});return(0,k.useEffect)(()=>{if($){t({...$,isLoading:!1});return}gn||=_().then(e=>{let t=e.config,n=t.farm;$={defaultRunMode:t.defaultRunMode===`farm`?`farm`:`local`,hasFarm:!!n?.provider}}).catch(()=>{$={defaultRunMode:`local`,hasFarm:!1}}).finally(()=>{gn=null}),gn.then(()=>{t({...$,isLoading:!1})})},[]),e}function vn({onRun:e,onRunNoCache:r,onPurgeCache:i,disabled:a=!1,size:o=`default`,className:s,label:c,shortcutKey:l}){let{hasFarm:u}=_n(),d=u||!!r||!!i,f=c??`Run`,p=l?(0,A.jsx)(n,{shortcut:l,className:`border-primary-foreground/20 bg-primary-foreground/10 text-primary-foreground`}):null;return d?(0,A.jsxs)(`div`,{className:S(`inline-flex items-center`,s),children:[(0,A.jsxs)(m,{size:o,disabled:a,onClick:()=>e(!0),className:`rounded-r-none`,children:[(0,A.jsx)(v,{className:`size-4`}),f,p]}),(0,A.jsxs)(fn,{children:[(0,A.jsx)(pn,{asChild:!0,children:(0,A.jsx)(m,{variant:`default`,size:o,disabled:a,className:`rounded-l-none border-l border-l-primary-foreground/20 px-2`,children:(0,A.jsx)(t,{className:`h-4 w-4`})})}),(0,A.jsxs)(mn,{align:`end`,children:[(0,A.jsxs)(Q,{onClick:()=>e(!0),children:[(0,A.jsx)(O,{className:`mr-2 h-4 w-4`}),`Run Local`]}),u&&(0,A.jsxs)(Q,{onClick:()=>e(!1),children:[(0,A.jsx)(D,{className:`mr-2 h-4 w-4`}),`Run on Farm`]}),(r||i)&&(0,A.jsx)(hn,{}),r&&(0,A.jsx)(Q,{onClick:()=>r(!0),children:`Run without cache`}),i&&(0,A.jsx)(Q,{onClick:i,children:`Purge cache`})]})]})]}):(0,A.jsxs)(m,{size:o,disabled:a,onClick:()=>e(!0),className:s,children:[(0,A.jsx)(v,{className:`size-4`}),f,p]})}export{Q as a,D as c,mn as i,_n as n,pn as o,fn as r,O as s,vn as t};
@@ -0,0 +1 @@
1
+ import{Zn as e}from"./index-C_HfATr4.js";var t=e(`square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]);export{t};
@@ -1 +1 @@
1
- import{$n as e,Ft as t,Gt as n,Mt as r,Nt as i}from"./index-C3AdCkmj.js";var a=e(),o={env:`env (.env file)`,inline:`inline (test config)`,suite:`suite (suite config)`,cli:`cli (--var flag)`,capture:`capture (captured from screen)`,hook:`hook (hook output)`,step:`step (set by agent)`,runJS:`runJS (inline JavaScript)`,runHook:`runHook uses the stable hook ID from the configured hooks file`,secret:`secret (runtime only)`};function s(e){switch(e){case`env`:return`bg-blue-500/15 border border-blue-500/20`;case`capture`:return`bg-emerald-500/15 border border-emerald-500/20`;case`cli`:return`bg-purple-500/15 border border-purple-500/20`;case`inline`:return`bg-amber-500/15 border border-amber-500/20`;case`suite`:return`bg-cyan-500/15 border border-cyan-500/20`;case`hook`:return`bg-orange-500/15 border border-orange-500/20`;case`step`:return`bg-teal-500/15 border border-teal-500/20`;case`runJS`:return`bg-yellow-500/15 border border-yellow-500/20`;case`runHook`:return`bg-orange-600/15 border border-orange-600/20`;case`secret`:return`bg-rose-500/15 border border-rose-500/20`;default:return`bg-accent/20 border border-accent/20`}}function c(e){let t=/\[secret:(\w+)\]/g,n=[],r=0,i;for(;(i=t.exec(e))!==null;){let[t,a]=i;i.index>r&&n.push({type:`text`,value:e.slice(r,i.index)}),n.push({type:`pill`,resolvedValue:t,varName:a,namespace:`secret`,templateSyntax:`{{secret:${a}}}`}),r=i.index+t.length}return r<e.length&&n.push({type:`text`,value:e.slice(r)}),n.length>0?n:[{type:`text`,value:e}]}function l(e,t,n){let r=/\{\{(\w+):([^}]*(?:\{[^}]*\}[^}]*)*)\}\}/g,i=[],a;for(;(a=r.exec(e))!==null;)i.push({index:a.index,fullMatch:a[0],namespace:a[1],key:a[2]});if(i.length===0)return t.length>0?[{type:`text`,value:t}]:[];let o=[],s=0;for(let t of i)t.index>s&&o.push({kind:`literal`,text:e.slice(s,t.index)}),t.namespace===`env`?o.push({kind:`env`,varName:t.key,templateSyntax:t.fullMatch}):t.namespace===`secret`?o.push({kind:`secret`,varName:t.key,templateSyntax:t.fullMatch}):o.push({kind:`other`,templateSyntax:t.fullMatch}),s=t.index+t.fullMatch.length;s<e.length&&o.push({kind:`literal`,text:e.slice(s)});let c=[],l=0;for(let e=0;e<o.length;e++){let r=o[e];if(r.kind===`literal`){let e=t.indexOf(r.text,l);e>=0&&(e>l&&c.push({type:`text`,value:t.slice(l,e)}),r.text.length>0&&c.push({type:`text`,value:r.text}),l=e+r.text.length)}else if(r.kind===`env`){let e=n?.[r.varName]?.value??null,i=e??r.templateSyntax,a=t.indexOf(i,l);a>=0&&(a>l&&c.push({type:`text`,value:t.slice(l,a)}),e===null?c.push({type:`text`,value:r.templateSyntax}):c.push({type:`pill`,resolvedValue:i,varName:r.varName,namespace:`env`,templateSyntax:r.templateSyntax}),l=a+i.length)}else if(r.kind===`secret`){let e=`[secret:${r.varName}]`,n=t.indexOf(e,l),i=t.indexOf(r.templateSyntax,l),a=n>=0&&(i===-1||n<=i)?e:r.templateSyntax,o=t.indexOf(a,l);o>=0?(o>l&&c.push({type:`text`,value:t.slice(l,o)}),c.push({type:`pill`,resolvedValue:e,varName:r.varName,namespace:`secret`,templateSyntax:r.templateSyntax}),l=o+a.length):c.push({type:`pill`,resolvedValue:e,varName:r.varName,namespace:`secret`,templateSyntax:r.templateSyntax})}else if(r.kind===`other`){let i=t.length;for(let r=e+1;r<o.length;r++){let e=o[r];if(e.kind===`literal`){let n=t.indexOf(e.text,l);if(n>=0){i=n;break}}else if(e.kind===`env`){let r=n?.[e.varName]?.value;if(r){let e=t.indexOf(r,l);if(e>=0){i=e;break}}}else if(e.kind===`secret`){let n=`[secret:${e.varName}]`,r=t.indexOf(n,l),a=t.indexOf(e.templateSyntax,l),o=r>=0&&(a===-1||r<=a)?r:a;if(o>=0){i=o;break}}}let a=t.slice(l,i),s=r.templateSyntax.match(/^\{\{(\w+):(.+)\}\}$/),u=s?.[1]??`unknown`,d=s?.[2]??r.templateSyntax;c.push({type:`pill`,resolvedValue:a,varName:d,namespace:u,templateSyntax:r.templateSyntax}),l=i}}return l<t.length&&c.push({type:`text`,value:t.slice(l)}),c}function u({step:e}){return(0,a.jsx)(`span`,{className:`flex-1 min-w-0 text-sm break-all`,children:(e.originalStepName?l(e.originalStepName,e.name,e.variableSnapshot):c(e.name)).map((c,l)=>{if(c.type===`text`)return(0,a.jsx)(`span`,{children:c.value},l);let u=e.variableSnapshot?.[c.varName],d=u?o[u.source]??u.source:o[c.namespace]??c.namespace;return(0,a.jsxs)(r,{children:[(0,a.jsx)(t,{asChild:!0,children:(0,a.jsx)(`span`,{className:n(`rounded-sm px-1 py-px cursor-default`,s(u?.source??c.namespace)),"aria-label":`variable: ${c.varName}`,children:c.resolvedValue})}),(0,a.jsx)(i,{className:`max-w-xs`,children:(0,a.jsxs)(`div`,{className:`space-y-1`,children:[(0,a.jsx)(`div`,{className:`text-xs font-medium`,children:c.varName}),(0,a.jsx)(`div`,{className:`text-[10px] font-mono text-muted-foreground`,children:c.templateSyntax}),(0,a.jsx)(`div`,{className:`text-xs text-muted-foreground truncate`,children:c.resolvedValue}),(0,a.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:d})]})})]},l)})})}export{u as n,s as r,o as t};
1
+ import{Ft as e,Lt as t,Pt as n,qt as r,tr as i}from"./index-C_HfATr4.js";var a=i(),o={env:`env (.env file)`,inline:`inline (test config)`,suite:`suite (suite config)`,cli:`cli (--var flag)`,capture:`capture (captured from screen)`,hook:`hook (hook output)`,step:`step (set by agent)`,runJS:`runJS (inline JavaScript)`,runHook:`runHook uses the stable hook ID from the configured hooks file`,secret:`secret (runtime only)`};function s(e){switch(e){case`env`:return`bg-blue-500/15 border border-blue-500/20`;case`capture`:return`bg-emerald-500/15 border border-emerald-500/20`;case`cli`:return`bg-purple-500/15 border border-purple-500/20`;case`inline`:return`bg-amber-500/15 border border-amber-500/20`;case`suite`:return`bg-cyan-500/15 border border-cyan-500/20`;case`hook`:return`bg-orange-500/15 border border-orange-500/20`;case`step`:return`bg-teal-500/15 border border-teal-500/20`;case`runJS`:return`bg-yellow-500/15 border border-yellow-500/20`;case`runHook`:return`bg-orange-600/15 border border-orange-600/20`;case`secret`:return`bg-rose-500/15 border border-rose-500/20`;default:return`bg-accent/20 border border-accent/20`}}function c(e){let t=/\[secret:(\w+)\]/g,n=[],r=0,i;for(;(i=t.exec(e))!==null;){let[t,a]=i;i.index>r&&n.push({type:`text`,value:e.slice(r,i.index)}),n.push({type:`pill`,resolvedValue:t,varName:a,namespace:`secret`,templateSyntax:`{{secret:${a}}}`}),r=i.index+t.length}return r<e.length&&n.push({type:`text`,value:e.slice(r)}),n.length>0?n:[{type:`text`,value:e}]}function l(e,t,n){let r=/\{\{(\w+):([^}]*(?:\{[^}]*\}[^}]*)*)\}\}/g,i=[],a;for(;(a=r.exec(e))!==null;)i.push({index:a.index,fullMatch:a[0],namespace:a[1],key:a[2]});if(i.length===0)return t.length>0?[{type:`text`,value:t}]:[];let o=[],s=0;for(let t of i)t.index>s&&o.push({kind:`literal`,text:e.slice(s,t.index)}),t.namespace===`env`?o.push({kind:`env`,varName:t.key,templateSyntax:t.fullMatch}):t.namespace===`secret`?o.push({kind:`secret`,varName:t.key,templateSyntax:t.fullMatch}):o.push({kind:`other`,templateSyntax:t.fullMatch}),s=t.index+t.fullMatch.length;s<e.length&&o.push({kind:`literal`,text:e.slice(s)});let c=[],l=0;for(let e=0;e<o.length;e++){let r=o[e];if(r.kind===`literal`){let e=t.indexOf(r.text,l);e>=0&&(e>l&&c.push({type:`text`,value:t.slice(l,e)}),r.text.length>0&&c.push({type:`text`,value:r.text}),l=e+r.text.length)}else if(r.kind===`env`){let e=n?.[r.varName]?.value??null,i=e??r.templateSyntax,a=t.indexOf(i,l);a>=0&&(a>l&&c.push({type:`text`,value:t.slice(l,a)}),e===null?c.push({type:`text`,value:r.templateSyntax}):c.push({type:`pill`,resolvedValue:i,varName:r.varName,namespace:`env`,templateSyntax:r.templateSyntax}),l=a+i.length)}else if(r.kind===`secret`){let e=`[secret:${r.varName}]`,n=t.indexOf(e,l),i=t.indexOf(r.templateSyntax,l),a=n>=0&&(i===-1||n<=i)?e:r.templateSyntax,o=t.indexOf(a,l);o>=0?(o>l&&c.push({type:`text`,value:t.slice(l,o)}),c.push({type:`pill`,resolvedValue:e,varName:r.varName,namespace:`secret`,templateSyntax:r.templateSyntax}),l=o+a.length):c.push({type:`pill`,resolvedValue:e,varName:r.varName,namespace:`secret`,templateSyntax:r.templateSyntax})}else if(r.kind===`other`){let i=t.length;for(let r=e+1;r<o.length;r++){let e=o[r];if(e.kind===`literal`){let n=t.indexOf(e.text,l);if(n>=0){i=n;break}}else if(e.kind===`env`){let r=n?.[e.varName]?.value;if(r){let e=t.indexOf(r,l);if(e>=0){i=e;break}}}else if(e.kind===`secret`){let n=`[secret:${e.varName}]`,r=t.indexOf(n,l),a=t.indexOf(e.templateSyntax,l),o=r>=0&&(a===-1||r<=a)?r:a;if(o>=0){i=o;break}}}let a=t.slice(l,i),s=r.templateSyntax.match(/^\{\{(\w+):(.+)\}\}$/),u=s?.[1]??`unknown`,d=s?.[2]??r.templateSyntax;c.push({type:`pill`,resolvedValue:a,varName:d,namespace:u,templateSyntax:r.templateSyntax}),l=i}}return l<t.length&&c.push({type:`text`,value:t.slice(l)}),c}function u({step:i}){return(0,a.jsx)(`span`,{className:`flex-1 min-w-0 text-sm break-all`,children:(i.originalStepName?l(i.originalStepName,i.name,i.variableSnapshot):c(i.name)).map((c,l)=>{if(c.type===`text`)return(0,a.jsx)(`span`,{children:c.value},l);let u=i.variableSnapshot?.[c.varName],d=u?o[u.source]??u.source:o[c.namespace]??c.namespace;return(0,a.jsxs)(n,{children:[(0,a.jsx)(t,{asChild:!0,children:(0,a.jsx)(`span`,{className:r(`rounded-sm px-1 py-px cursor-default`,s(u?.source??c.namespace)),"aria-label":`variable: ${c.varName}`,children:c.resolvedValue})}),(0,a.jsx)(e,{className:`max-w-xs`,children:(0,a.jsxs)(`div`,{className:`space-y-1`,children:[(0,a.jsx)(`div`,{className:`text-xs font-medium`,children:c.varName}),(0,a.jsx)(`div`,{className:`text-[10px] font-mono text-muted-foreground`,children:c.templateSyntax}),(0,a.jsx)(`div`,{className:`text-xs text-muted-foreground truncate`,children:c.resolvedValue}),(0,a.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:d})]})})]},l)})})}export{u as n,s as r,o as t};
@@ -0,0 +1,5 @@
1
+ import{r as e}from"./chunk-CilyBKbf.js";import{c as t}from"./id-badge-DO71VWC9.js";import{t as n}from"./monaco-editor-BYBlJAjA.js";import{n as r}from"./split-button-CcR2TDPY.js";import{a as i,c as ee,i as te,l as ne,n as a,o,r as re,s as ie,t as s}from"./filename-validation-Dabe2ngK.js";import{t as ae}from"./use-page-title-CyHzJAcR.js";import{a as oe,n as se}from"./dist-CyWxUoCv.js";import{i as ce,n as le,r as ue,t as de}from"./tabs-C3NqUdx9.js";import{B as fe,Bt as pe,D as me,E as he,Ft as ge,Gt as _e,Ht as ve,Lt as c,Nt as l,Pt as ye,Qt as be,S as xe,Tt as Se,U as Ce,Un as we,Ut as Te,Vt as Ee,Wn as De,ct as Oe,dr as ke,fr as Ae,gr as je,jt as Me,kt as Ne,nr as u,pr as Pe,r as Fe,tr as Ie,xt as Le,zt as Re}from"./index-C_HfATr4.js";import{n as d,r as ze,t as Be}from"./resizable-o8j3Lihm.js";import{t as Ve}from"./empty-state-DEbHhF9f.js";import{t as He}from"./use-keyboard-shortcuts-BM0qq0DE.js";import{i as Ue,n as We,r as Ge,t as Ke}from"./suite-navbar-COFDYHho.js";var f=e(je(),1);function qe(e,t){return s(e,t,`suiteMatch`)}var p=Ie(),Je=`name: My Suite
2
+ target: ""
3
+ tests: []
4
+ `;function Ye(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function Xe(e){return e instanceof DOMException&&e.name===`AbortError`||e instanceof Error&&e.name===`AbortError`}function Ze({text:e}){return(0,p.jsxs)(ye,{children:[(0,p.jsx)(c,{asChild:!0,children:(0,p.jsx)(we,{className:`h-3 w-3 text-muted-foreground/40 hover:text-muted-foreground/70 transition-colors cursor-help`})}),(0,p.jsx)(ge,{className:`max-w-[250px] text-[13px]`,children:e})]})}function m(){let e=Ae()[`suite-id`]??``,s=ke(),[ge]=Pe(),c=be(),{defaultRunMode:ye}=r(),{targets:we,globalUse:je,isLoading:Ie}=t(),m=!e,Qe=ge.get(`live`)===`1`,h=(0,f.useRef)(null),g=(0,f.useRef)(null),$e=(0,f.useRef)(()=>{}),et=(0,f.useRef)(!1),_=(0,f.useRef)(null),v=(0,f.useRef)(null),[y,b]=(0,f.useState)(m?Je:``),[tt,nt]=(0,f.useState)(``),[x,rt]=(0,f.useState)(``),[S,it]=(0,f.useState)(!m),[C,at]=(0,f.useState)(!1),[ot,st]=(0,f.useState)(!1),[ct,lt]=(0,f.useState)(!1),[ut,dt]=(0,f.useState)(!1),[w,ft]=(0,f.useState)(null),[pt,mt]=(0,f.useState)(!1),[ht,gt]=(0,f.useState)(!1),[T,_t]=(0,f.useState)([]),[E,D]=(0,f.useState)(null),[O,k]=(0,f.useState)(null),[A,j]=(0,f.useState)(!1),[M,N]=(0,f.useState)(!1),[P,F]=(0,f.useState)(null),[vt,I]=(0,f.useState)(`reasoning`),[yt,L]=(0,f.useState)(null),[R,z]=(0,f.useState)({setup:[],teardown:[]}),[bt,xt]=(0,f.useState)([]),[St,Ct]=(0,f.useState)(!1),[B,wt]=(0,f.useState)(``),Tt=!m&&y!==tt,Et=m&&x?qe(x.trim(),T):null,Dt=m&&!!x&&!!Et,{suggestions:Ot}=a(null),kt=(0,f.useMemo)(()=>Ot.filter(e=>e.namespace!==`capture`),[Ot]),V=(0,f.useMemo)(()=>Ge(y),[y]),At=V?.suiteId??``,jt=V?.name||(m?`New Suite`:B),H=i(E,{tests:(0,f.useMemo)(()=>V?V.tests.map(e=>({draftId:e.id,testId:e.id,path:e.test,name:e.test.split(`/`).pop()??e.test,steps:[],setup:[],teardown:[]})):[],[V]),setupHooks:R.setup,teardownHooks:R.teardown,allowReconnect:!1}),U=H.terminateSession;g.current=E,$e.current=U;let Mt=V?.target?.trim()??``,W=M?`connecting`:H.connectionState,G=E!==null,K=G&&H.platform===`web`&&Mt?Mt:null,Nt=(0,f.useMemo)(()=>te(y),[y]),q=G&&V!==null&&(!Ye(V.setup??[],R.setup)||!Ye(V.teardown??[],R.teardown)),Pt=G&&W===`connected`&&V!==null&&V.tests.length>0,Ft=M||G,It=M||G||ut||w!==null||m||V===null||!V?.target.trim()||Ie;ae((0,f.useMemo)(()=>G&&O!==null?`Live #${O} — ${V?.name?.trim()||jt||`Suite`}`:m?`New Suite`:`Edit Suite`,[G,O,V?.name,jt,m]));let J=(0,f.useMemo)(()=>{if(V)return{suiteName:V.name,suiteContext:V.context||void 0}},[V]),Lt=(0,f.useMemo)(()=>P===`ended`?{reason:`ended`,title:`Live session ended`,description:`The current draft is unchanged. Close live mode or start a fresh disposable session from this target.`}:P===`disconnected`?{reason:`disconnected`,title:`Live session disconnected`,description:`The connection dropped and the disposable session was terminated. Start a fresh session to reconnect.`}:null,[P]);(0,f.useEffect)(()=>{if(m)return;let t=!1;return Oe(e).then(e=>{t||(b(e.content),nt(e.content),wt(e.path),it(!1))}).catch(()=>{t||(at(!0),it(!1))}),()=>{t=!0}},[e,m]),(0,f.useEffect)(()=>{let e=!1;return Ce().then(t=>{if(e)return;let n=t.config?.workspace?.suiteMatch;Array.isArray(n)&&_t(n)}).catch(()=>{}),()=>{e=!0}},[]),(0,f.useEffect)(()=>{m&&b(e=>Ue(e,[`suite-id`],se()))},[m]),(0,f.useEffect)(()=>{if(m||S)return;let e=Ge(y);e&&!e.suiteId&&b(e=>Ue(e,[`suite-id`],se()))},[m,S,tt]);let Y=(0,f.useCallback)(async()=>{st(!0);try{if(m){let e=qe(x.trim(),T);if(e){l.error(e);return}await me(x.trim(),y),l.success(`Suite file created`);let t=V?.suiteId??``;if(!t){l.error(`Created suite is missing suite-id; please reload`);return}s(u.suiteEdit(t))}else await Ne(e,y),nt(y),l.success(`Saved`)}catch(e){e instanceof xe&&e.missingTests&&e.missingTests.length>0?l.error(`Cannot save — referenced tests not found: ${e.missingTests.map(e=>e.test).join(`, `)}`):l.error(`Failed to save: ${e instanceof Error?e.message:String(e)}`)}finally{st(!1)}},[m,x,T,y,e,V?.suiteId,s]),Rt=(0,f.useCallback)(async()=>{lt(!0);try{let e=await Me(y);e.valid?l.success(`Valid suite`):l.error(e.errors.map(e=>e.message).join(`
5
+ `))}catch(e){l.error(`Validation failed: ${e instanceof Error?e.message:String(e)}`)}finally{lt(!1)}},[y]),zt=(0,f.useCallback)(async e=>{if(!m){dt(!0);try{ft((await Se({file:B,local:e})).runId),l.success(`Suite run started`)}catch(e){l.error(`Failed to start run: ${e instanceof Error?e.message:String(e)}`)}finally{dt(!1)}}},[m,B]),Bt=(0,f.useCallback)(()=>ft(null),[]),X=(0,f.useCallback)(()=>{o(`page`,`closing live mode`,{liveSessionId:E??void 0,terminalReason:P??void 0}),h.current?.abort(),h.current=null,E&&U(),N(!1),D(null),k(null),F(null),L(null),_.current=null,v.current=null,z({setup:[],teardown:[]}),j(!1)},[E,P,U]),Vt=(0,f.useCallback)(()=>{o(`page`,`ending live session from UI`,{liveSessionId:E??void 0}),h.current?.abort(),h.current=null,E&&U(),N(!1),D(null),k(null),F(`ended`),L(null),_.current=null,v.current=null,z({setup:[],teardown:[]}),j(!1)},[E,U]),Z=(0,f.useCallback)(async(e,t)=>{let n=e.target.trim();if(!n){l.error(`Select a target before starting live mode`);return}let r=new AbortController;h.current?.abort(),h.current=r,j(!0),F(null),I(`reasoning`),L(null),_.current=null,v.current=null,N(!0);try{t?.replaceCurrentSession&&g.current&&(U(),D(null),k(null));let i=re({content:y,targetName:n,targets:we,globalUse:je});o(`page`,`requesting live session`,{targetName:n,platform:i.platform,headless:i.headless??void 0,replacingSession:t?.replaceCurrentSession??!1});let ee=[...e.setup??[]],te=[...e.teardown??[]],ne=e.suiteId?{type:`suite`,id:e.suiteId}:void 0,{sessionId:a,sessionNumber:ie}=await he({...i,setupHooks:ee,teardownHooks:te,entity:ne},r.signal);if(r.signal.aborted)return;z({setup:ee,teardown:te}),D(a),k(ie),o(`page`,`live session created`,{sessionId:a,targetName:n})}catch(e){Xe(e)||(o(`page`,`failed to create live session`,{error:e instanceof Error?e.message:String(e),targetName:n}),l.error(e instanceof Error?e.message:`Failed to start live session`)),t?.replaceCurrentSession||j(!1)}finally{h.current===r&&(h.current=null),N(!1)}},[y,je,we,U]),Q=(0,f.useCallback)(async()=>{if(!It){if(!V){l.error(`Fix YAML errors before starting live mode`);return}await Z(V)}},[V,Z,It]),Ht=(0,f.useCallback)(async()=>{if(G){if(!V){l.error(`Fix YAML errors before restarting live mode`);return}await Z(V,{replaceCurrentSession:!0})}},[V,G,Z]),$=(0,f.useCallback)(async()=>{if(!K){xt([]);return}try{xt((await fe({target:K})).authStates)}catch{xt([])}},[K]);(0,f.useEffect)(()=>{$()},[$]);let Ut=(0,f.useCallback)(async e=>{if(!E||!K)throw Error(`Could not save auth state "${e.name}" for target "${K??`selected target`}".`);let t=`Could not save auth state "${e.name}" for target "${K}".`;Ct(!0);try{await Le(E,{name:e.name,replace:e.replace}),l.success(`Saved auth state "${e.name}" for target "${K}".`),await $()}catch{throw Error(t)}finally{Ct(!1)}},[K,E,$]),Wt=(0,f.useCallback)(e=>{if(e){j(!0);return}X()},[X]),Gt=(0,f.useCallback)((e,t)=>{if(!G){l.error(`Start a live session first.`);return}let n=(e===`setup`?H.setupHooks:H.teardownHooks).find(e=>e.id===t);n&&L({type:`suite-hook`,phase:e,hookId:n.id}),I(`reasoning`),H.executeHookById(e,t)},[G,H]),Kt=(0,f.useCallback)(e=>{L({type:`test`,testIndex:e}),I(`reasoning`),H.executeTestByIndex(e,J)},[J,H]);if((0,f.useEffect)(()=>()=>{h.current?.abort(),g.current&&$e.current()},[]),(0,f.useEffect)(()=>{E&&W===`disconnected`&&(o(`page`,`live session moved to terminal state`,{liveSessionId:E,liveConnectionState:W}),D(null),k(null),N(!1),F(`disconnected`),L(null),_.current=null,v.current=null,z({setup:[],teardown:[]}),j(!0))},[W,E]),(0,f.useEffect)(()=>{if(!A||H.runningTestIndex===null)return;let e=`${H.tests[H.runningTestIndex]?.testExecutionId??`pending`}:${H.runningTestIndex}`;_.current!==e&&(_.current=e,L({type:`test`,testIndex:H.runningTestIndex}),I(`reasoning`))},[H.runningTestIndex,H.tests,A]),(0,f.useEffect)(()=>{if(!A||H.runningTestIndex!==null)return;let e=H.tests.map((e,t)=>({index:t,test:e})).filter(({test:e})=>e.status===`failed`).sort((e,t)=>(t.test.lastRunAt??``).localeCompare(e.test.lastRunAt??``))[0];if(!e)return;let t=e.test.testExecutionId??e.test.lastRunAt??`failed:${e.index}`;v.current!==t&&(v.current=t,L({type:`test`,testIndex:e.index}),I(`reasoning`))},[H.runningTestIndex,H.tests,A]),(0,f.useEffect)(()=>{!Qe||et.current||m||S||C||M||A||G||!V||!V.target.trim()||(et.current=!0,s(u.suiteEdit(e),{replace:!0}),Q())},[V,Q,G,m,M,S,A,s,C,e,Qe]),He((0,f.useMemo)(()=>({r:()=>{m||zt(ye===`local`)},escape:()=>{w&&Bt()}}),[m,w,zt,Bt,ye])),(0,f.useEffect)(()=>{function e(e){(e.metaKey||e.ctrlKey)&&e.key===`s`&&(e.preventDefault(),Y())}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[Y]),S)return(0,p.jsx)(Fe,{});if(C)return(0,p.jsx)(Ve,{icon:De,title:`Suite not found`,description:`This suite doesn't exist`,actionLabel:`View All Suites`,onAction:()=>s(u.suites)});let qt=(0,p.jsxs)(de,{defaultValue:`builder`,className:`flex-1 flex min-h-0 flex-col`,children:[(0,p.jsxs)(ue,{variant:`line`,className:`px-4`,children:[(0,p.jsx)(ce,{value:`builder`,children:`Builder`}),(0,p.jsx)(ce,{value:`yaml`,children:`YAML`})]}),(0,p.jsx)(le,{value:`builder`,className:`mt-2 flex-1 overflow-auto [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-thumb]:bg-border [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb:hover]:bg-muted-foreground/50 [&::-webkit-scrollbar-track]:bg-transparent [scrollbar-width:thin]`,children:(0,p.jsx)(We,{content:y,onChange:b,suggestions:kt,isCreateMode:m,liveMode:A,liveTests:H.tests,liveSetupHooks:H.setupHooks,liveTeardownHooks:H.teardownHooks,runningTestIndex:H.runningTestIndex,canRunTest:G&&H.connectionState===`connected`,canRunAll:Pt,isRunningAll:H.isRunningAllTests,isStoppingRunAll:H.isStoppingRunAllTests,onRunTest:Kt,onCancelTest:e=>{H.runningTestIndex===e&&H.cancelStep()},onRunAll:()=>void H.runAllTests(J),onStopAll:H.cancelRunAllTests,setupHooksStale:q,onRestartSession:q?()=>void Ht():void 0,selection:yt,onSelect:L,onRunLiveHook:Gt})}),(0,p.jsx)(le,{value:`yaml`,className:`flex-1 min-h-0 mt-2`,children:(0,p.jsx)(n,{value:y,onChange:b,onSave:Y,className:`h-full`,filePath:B||void 0})})]}),Jt=(0,p.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[m&&(0,p.jsx)(`div`,{className:`px-4 pt-3`,children:(0,p.jsxs)(`div`,{className:`rounded-md border bg-muted/15 px-3 py-2`,children:[(0,p.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,p.jsxs)(oe,{className:`flex items-center gap-1 text-xs font-medium`,children:[`File Path `,(0,p.jsx)(Ze,{text:`Path is relative to your workspace root. Must match your workspace's suiteMatch pattern. Directories are created automatically on save.`})]}),(0,p.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:`Created only when you save`})]}),(0,p.jsx)(_e,{placeholder:`my-suite.suite.yaml`,value:x,onChange:e=>rt(e.target.value),className:`mt-2 max-w-md h-8 text-sm font-mono ${Dt?`border-red-500 focus-visible:ring-red-500`:``}`}),Dt&&(0,p.jsx)(`p`,{className:`mt-1 text-xs text-red-500`,children:Et})]})}),qt]}),Yt=(0,p.jsx)(ie,{connectionState:H.connectionState,isLaunching:M,targetName:Mt||`Selected Target`,targetLabel:H.currentUrl||`Configured start URL`,liveSessionNumber:O,platform:H.platform,screenshot:H.screenshot,currentUrl:H.currentUrl,pendingNavigation:H.pendingNavigation,steps:H.steps,setupHooks:H.setupHooks,teardownHooks:H.teardownHooks,tests:H.tests,selection:yt,runningStepId:H.runningStepId,terminalState:Lt,draftState:V===null?`invalid`:Tt||m?`unsaved`:`saved`,ariaTree:H.ariaTree,errorMessage:H.error,devtoolsTab:vt,canRunAll:Pt,isRunningAll:H.isRunningAllTests,isStoppingRunAll:H.isStoppingRunAllTests,setupHooksStale:q,executionUnit:`test`,runAllLabel:`Run All Tests`,stopAllLabel:`Stop Run All`,unitRowsSlot:null,onDevtoolsTabChange:I,onRunAll:()=>void H.runAllTests(J),onStopAll:H.cancelRunAllTests,onEndSession:Vt,onRestartSession:q?()=>void Ht():void 0,showEndSessionAction:c,onCloseLiveMode:X,onStartFreshSession:()=>void Q(),onBack:H.goBack,onForward:H.goForward,onRefresh:H.refreshPage,onNavigate:H.navigate,onRequestAriaTree:H.requestAriaTree,authStateCapture:K&&E?{sessionId:E,targetName:K,initialName:Nt,authStates:bt,isSaving:St,onSave:Ut}:null});return(0,p.jsxs)(`div`,{className:`flex h-screen flex-col`,children:[(0,p.jsx)(Ke,{suiteName:jt,suiteId:At,unsaved:Tt,isCreateMode:m,mode:`edit`,suiteHref:m?void 0:u.suiteView(e),isSaving:ot,isValidating:ct,isRunning:ut,runDisabled:Ft,hasInvalidFilename:Dt,shortcutsOpen:ht,hasLiveSession:G,liveConnectionState:W,isLiveActionDisabled:It,liveSessionNumber:O,onBack:()=>s(u.suites),onSave:Y,onValidate:Rt,onRun:zt,onLiveConnect:A?void 0:Q,onLiveEnd:G?Vt:void 0,onSettingsOpen:()=>mt(!0),onToggleShortcuts:()=>gt(e=>!e)}),w?(0,p.jsxs)(ze,{orientation:`horizontal`,className:`flex-1 rounded-md border border-border`,children:[(0,p.jsx)(d,{defaultSize:60,minSize:30,children:(0,p.jsx)(n,{value:y,onChange:b,onSave:Y,className:`h-full`})}),(0,p.jsx)(Be,{withHandle:!0}),(0,p.jsx)(d,{defaultSize:40,minSize:25,children:(0,p.jsx)(ee,{runId:w,onClose:Bt})})]}):A&&!c?(0,p.jsxs)(ze,{orientation:`horizontal`,className:`flex-1 rounded-md border border-border`,children:[(0,p.jsx)(d,{defaultSize:45,minSize:30,children:Jt}),(0,p.jsx)(Be,{withHandle:!0}),(0,p.jsx)(d,{defaultSize:55,minSize:40,children:Yt})]}):Jt,(0,p.jsx)(Re,{open:pt,onOpenChange:mt,children:(0,p.jsxs)(pe,{side:`right`,className:`sm:max-w-[400px] overflow-y-auto p-0`,children:[(0,p.jsxs)(ve,{className:`px-4 pt-4 pb-2`,children:[(0,p.jsx)(Te,{children:`Suite Settings`}),(0,p.jsx)(Ee,{children:`Advanced configuration for this suite`})]}),(0,p.jsx)(`div`,{className:`px-4 pb-4`,children:(0,p.jsx)(ne,{content:y,onChange:b,selectedTarget:V?.target,showMeta:!1})})]})}),c&&(0,p.jsx)(Re,{open:A,onOpenChange:Wt,children:(0,p.jsxs)(pe,{side:`bottom`,showCloseButton:!1,className:`h-[100dvh] max-h-[100dvh] rounded-none p-0`,children:[(0,p.jsxs)(ve,{className:`sr-only`,children:[(0,p.jsx)(Te,{children:`Live Session`}),(0,p.jsx)(Ee,{children:`Live execution workspace for the current suite draft.`})]}),Yt]})})]})}export{m as default};
@@ -0,0 +1 @@
1
+ import{r as e}from"./chunk-CilyBKbf.js";import{i as t,n,o as r,s as i,t as a}from"./select-BE8tKMJy.js";import{t as o}from"./circle-alert-RZI0g_tD.js";import{C as s,S as c,_ as l,a as u,b as d,c as f,d as p,f as m,g as h,h as g,l as _,m as v,n as y,o as b,p as x,r as S,s as C,t as w,u as T,v as E,w as D,x as ee,y as te}from"./id-badge-DO71VWC9.js";import{n as ne,r as O}from"./monaco-editor-BYBlJAjA.js";import{t as re}from"./circle-x-CcGlHxRU.js";import{c as ie,t as k}from"./split-button-CcR2TDPY.js";import{t as A}from"./grip-vertical-CJUfU7Zx.js";import{n as j,r as M,t as N}from"./shortcut-hints-BGIo5sip.js";import{t as ae}from"./plus-BhWnvE6F.js";import{t as P}from"./refresh-cw-Dhidp9m2.js";import{n as F,t as I}from"./textarea-87HpNno6.js";import{t as oe}from"./square-8TpalBCd.js";import{a as L,n as R}from"./dist-CyWxUoCv.js";import{n as se,r as z,t as B}from"./popover-Boe1excX.js";import{Ft as V,Gt as ce,Hn as le,In as ue,Kn as H,Kt as U,Ln as W,Lt as G,Pt as K,Rn as de,Un as q,Vn as fe,c as J,d as Y,gr as pe,l as me,o as he,pt as ge,qn as _e,qt as X,s as ve,tr as ye,u as be,ur as Z}from"./index-C_HfATr4.js";import{t as xe}from"./badge-D56AWxFv.js";import{t as Se}from"./display-step-nrAd20yH.js";var Q=e(pe(),1),$=ye();function Ce({text:e}){return(0,$.jsxs)(K,{children:[(0,$.jsx)(G,{asChild:!0,children:(0,$.jsx)(q,{className:`h-3 w-3 text-muted-foreground/40 hover:text-muted-foreground/70 transition-colors cursor-help`})}),(0,$.jsx)(V,{className:`max-w-[250px] text-[13px]`,children:e})]})}function we({name:e,suiteId:o,target:c,context:l,isCreateMode:d,suggestions:p,hookLabels:m={},onChange:h,disabled:g=!1}){let{targets:v,isLoading:y}=_(),{targets:x}=f(),S=c?x[c]:void 0,w=(0,Q.useRef)(null),[T,E]=(0,Q.useState)(0),D=u({text:l,cursorPos:T,suggestions:p,anchorRef:w,onInsert:(e,t,n)=>{h(`context`,l.slice(0,t)+e+l.slice(n)),requestAnimationFrame(()=>w.current?.focus())}}),ee=!y&&v.length>0;return(0,$.jsxs)(`div`,{className:`space-y-3`,children:[(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsxs)(L,{htmlFor:`suite-name`,className:`text-xs flex items-center gap-1`,children:[`Suite Name `,(0,$.jsx)(`span`,{className:`text-destructive`,children:`*`})]}),(0,$.jsx)(ce,{id:`suite-name`,value:e,onChange:e=>h(`name`,e.target.value),placeholder:`My Suite`,required:!0,disabled:g,className:`h-8 text-sm`})]}),(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsxs)(L,{htmlFor:`suite-id`,className:`text-xs flex items-center gap-1`,children:[`Suite ID `,(0,$.jsx)(Ce,{text:`Unique identifier used for memory and analytics. Changing this breaks the association with past runs and observations.`})]}),d?(0,$.jsxs)(`div`,{className:`relative`,children:[(0,$.jsx)(ce,{id:`suite-id`,value:o,readOnly:!0,disabled:!0,className:`h-8 text-sm font-mono pr-9`}),(0,$.jsx)(U,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:()=>h(`suite-id`,R()),"aria-label":`Generate new ID`,disabled:g,className:`absolute right-1 top-1/2 -translate-y-1/2 h-6 w-6`,children:(0,$.jsx)(P,{className:`size-3.5`})})]}):(0,$.jsx)(`p`,{className:`text-[13px] font-mono text-muted-foreground`,children:o||`No ID assigned`})]}),(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsxs)(L,{htmlFor:`suite-target`,className:`text-xs flex items-center gap-1`,children:[`Target `,(0,$.jsx)(`span`,{className:`text-destructive`,children:`*`}),` `,(0,$.jsx)(Ce,{text:`A registered app target from your workspace config. Defines where the suite runs (web URL or mobile app).`})]}),ee?(0,$.jsxs)(a,{value:c||void 0,onValueChange:e=>h(`target`,e),disabled:g,children:[(0,$.jsx)(r,{id:`suite-target`,className:`w-full h-8 text-sm`,children:(0,$.jsx)(i,{placeholder:`Select a target`})}),(0,$.jsx)(n,{children:v.map(e=>(0,$.jsx)(t,{value:e,children:e},e))})]}):y?null:(0,$.jsxs)(`p`,{className:`text-[13px] text-muted-foreground`,children:[`No targets configured.`,` `,(0,$.jsx)(Z,{to:`/config`,className:`text-primary underline underline-offset-4 hover:text-primary/80`,children:`Add targets in Settings.`})]}),S&&(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[13px] text-muted-foreground mt-1.5`,children:[S.platform===`web`?(0,$.jsx)(ie,{className:`h-3.5 w-3.5 shrink-0`}):(0,$.jsx)(s,{className:`h-3.5 w-3.5 shrink-0`}),(0,$.jsx)(`span`,{className:`text-muted-foreground/70 uppercase text-[11px] tracking-wider shrink-0`,children:S.platform}),(0,$.jsxs)(`span`,{className:`font-mono truncate`,children:[S.product&&(0,$.jsx)(`span`,{className:`mr-1.5`,children:S.product}),S.platform===`web`&&S.url,S.platform===`android`&&`${S.appPackage}${S.appActivity?` / ${S.appActivity}`:``}`,S.platform===`ios`&&S.bundleId]})]})]}),(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsxs)(L,{htmlFor:`suite-context`,className:`text-xs flex items-center gap-1`,children:[`Context `,(0,$.jsx)(Ce,{text:`Additional instructions passed to every test in this suite before its own context. Use this for suite-wide setup notes or shared preconditions.`})]}),(0,$.jsxs)(`div`,{className:`relative`,children:[(0,$.jsx)(I,{ref:w,id:`suite-context`,value:l,onChange:e=>{h(`context`,e.target.value),E(e.target.selectionStart??0)},onKeyDown:e=>{D.handleKeyDown(e)},onBlur:()=>setTimeout(()=>D.setVisible(!1),150),placeholder:`Additional instructions applied to every test in this suite...`,disabled:g,className:`min-h-[60px] resize-none text-sm`,rows:2}),D.dropdown]}),C(l)&&(0,$.jsx)(b,{text:l,hookLabels:m})]})]})}function Te(e){if(e<1e3)return`${Math.round(e)}ms`;let t=e/1e3;return t<10?`${t.toFixed(1)}s`:`${Math.round(t)}s`}function Ee({status:e}){switch(e){case`running`:return(0,$.jsx)(D,{className:`size-3 text-primary`});case`passed`:return(0,$.jsx)(H,{className:`size-3 text-emerald-500`});case`failed`:return(0,$.jsx)(de,{className:`size-3 text-destructive`});default:return(0,$.jsx)(W,{className:`size-3 text-muted-foreground`})}}function De({status:e}){switch(e){case`running`:case`cancelling`:return(0,$.jsx)(D,{className:`size-3 text-primary`});case`passed`:return(0,$.jsx)(H,{className:`size-3 text-emerald-500`});case`failed`:return(0,$.jsx)(re,{className:`size-3 text-red-500`});case`cancelled`:return(0,$.jsx)(oe,{className:`size-3 text-amber-500`});default:return(0,$.jsx)(D,{className:`size-3 text-muted-foreground/50`})}}function Oe(e){return e.observation?e.observation:e.reasoning?e.reasoning:e.plannedAction==null?e.verifierReasoning?e.verifierReasoning:e.result:`Planned action captured`}function ke({id:e,name:t,path:n,testId:r,isMissing:i,onRemove:a,disabled:o=!1,actionsLocked:s=!1,sortableDisabled:l=!1,liveMode:u=!1,liveStatus:d=`idle`,liveDuration:f,liveError:p=null,liveSteps:m=[],runningStepIndex:h=null,perTestSetupHooks:g=[],perTestTeardownHooks:_=[],canRunTest:y=!0,onRunTest:b,onCancelTest:x,testIndex:S,selection:C=null,onSelect:w}){let{attributes:T,listeners:E,setNodeRef:ee,transform:te,transition:ne,isDragging:O}=v({id:e,disabled:o||l}),ie={transform:c.Transform.toString(te),transition:ne,opacity:O?.55:1,zIndex:O?10:void 0},k=u&&d===`running`,j=u&&d===`passed`,M=u&&d===`failed`,N=u&&(j||M||u&&d===`cancelled`)&&f!=null,ae=u&&C?.type===`test`&&S!==void 0&&C.testIndex===S,P=u&&g.length+_.length>0,F=u?m.map(e=>({step:e,displayStep:Se(e,e.stepIndex)})):[],I=C&&`stepId`in C?C.stepId:null,L=C?.type===`subaction`?C.subIndex:null;return(0,$.jsxs)(`div`,{ref:ee,style:ie,className:X(`relative overflow-hidden flex flex-col gap-0.5 rounded-md border bg-card/60 px-3 py-2 hover:bg-card transition-colors`,i&&`border-amber-500/30`,i&&`bg-amber-500/[0.06]`,!i&&`border-border/70`,O&&`shadow-lg ring-2 ring-primary/20`,o&&`opacity-60`,k&&`live-running-surface border-border/60 bg-primary/5`,M&&!k&&`border-destructive/30`,M&&!k&&!ae&&`ring-1 ring-destructive/20`,ae&&!k&&`bg-primary/10 ring-1 ring-primary/30`),children:[(0,$.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,$.jsx)(`button`,{type:`button`,className:`mt-0.5 flex shrink-0 items-center p-0.5 text-muted-foreground/40 hover:text-muted-foreground cursor-grab active:cursor-grabbing touch-none disabled:cursor-not-allowed`,...T,...E,"aria-label":`Reorder ${t}`,"aria-disabled":o||l,disabled:o||l,children:(0,$.jsx)(A,{className:`size-3.5`})}),k&&(0,$.jsx)(D,{className:`size-4 shrink-0 mt-0.5 text-primary`}),j&&(0,$.jsx)(H,{className:`size-3.5 text-emerald-500 shrink-0 mt-1`}),M&&(0,$.jsx)(re,{className:`size-3.5 text-red-500 shrink-0 mt-1`}),(0,$.jsxs)(`div`,{className:X(`flex-1 min-w-0 space-y-0.5`,u&&w&&`cursor-pointer`),onClick:u&&w&&S!==void 0?()=>w({type:`test`,testIndex:S}):void 0,children:[(0,$.jsx)(`div`,{className:`text-sm font-medium text-foreground truncate`,children:t}),(0,$.jsx)(`div`,{className:`text-[11px] font-mono text-muted-foreground truncate`,children:n}),(0,$.jsx)(`div`,{className:`text-[10px] font-mono text-muted-foreground/70 truncate`,children:r}),F.length>0&&(0,$.jsx)(`div`,{className:`mt-1.5 space-y-1.5`,children:F.map(({step:e,displayStep:t},n)=>{let r=e.status===`running`||h===e.stepIndex,i=ae&&I===null&&(r||h===null&&n===F.length-1),a=I===e.id||i,o=t.subActionsData??[];return(0,$.jsxs)(`div`,{className:X(`relative overflow-hidden rounded-sm border bg-background/60`,r?`live-running-surface border-border/60 bg-primary/5`:a?`border-primary/20 bg-primary/10 ring-1 ring-primary/30`:`border-border/60`),children:[(0,$.jsxs)(`button`,{type:`button`,className:`flex w-full min-w-0 items-center gap-2 px-2 py-1.5 text-left`,onClick:t=>{t.stopPropagation(),w?.({type:`step`,stepId:e.id})},"aria-label":`Select step ${e.stepIndex+1} ${e.instruction}`,children:[(0,$.jsx)(De,{status:e.status}),(0,$.jsxs)(`span`,{className:`shrink-0 text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:[`Step `,e.stepIndex+1]}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs text-foreground`,children:e.instruction})]}),(r||a)&&(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-x-2 gap-y-0.5 px-2 pb-1 text-[11px] text-muted-foreground`,children:[r&&(0,$.jsx)(`span`,{children:`Current step`}),a&&(0,$.jsx)(`span`,{children:`Inspecting below`})]}),o.length>0&&(0,$.jsx)(`div`,{className:`space-y-1 border-t border-border/50 px-2 py-1.5`,children:o.map(t=>(0,$.jsxs)(`button`,{type:`button`,className:X(`flex w-full min-w-0 items-center gap-2 rounded-sm px-1.5 py-1 text-left text-[11px] transition-colors`,a&&L===t.index?`bg-primary/15 text-foreground`:`text-muted-foreground hover:bg-muted/40`),onClick:n=>{n.stopPropagation(),w?.({type:`subaction`,stepId:e.id,subIndex:t.index})},"aria-label":`Select sub-action ${t.index+1} for step ${e.stepIndex+1}`,children:[(0,$.jsxs)(`span`,{className:`shrink-0 font-medium`,children:[`Sub `,t.index+1]}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:Oe(t)})]},`${e.id}-sub-${t.index}`))})]},e.id)})}),i&&(0,$.jsx)(`div`,{className:`text-[11px] text-amber-700 dark:text-amber-300`,children:`This test file no longer exists in your workspace.`})]}),(0,$.jsxs)(`div`,{className:`mt-0.5 flex shrink-0 self-start items-center gap-1`,children:[N&&(0,$.jsx)(`span`,{className:`text-xs leading-none text-muted-foreground whitespace-nowrap shrink-0`,children:Te(f)}),u&&!k&&(0,$.jsx)(U,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:b,disabled:!y||!b||s,className:X(`text-muted-foreground hover:text-foreground`,(!y||!b||s)&&`text-muted-foreground/30`),"aria-label":d===`idle`?`Run test ${t}`:`Re-run test ${t}`,children:(0,$.jsx)(fe,{className:`size-3.5`})}),u&&k&&x&&(0,$.jsx)(U,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:x,className:`text-muted-foreground hover:text-foreground`,"aria-label":`Cancel test ${t}`,children:(0,$.jsx)(oe,{className:`size-3`})}),(0,$.jsx)(U,{type:`button`,variant:`ghost`,size:`icon-sm`,className:`text-muted-foreground hover:text-destructive`,onClick:a,disabled:o||s,"aria-label":`Remove ${t}`,children:(0,$.jsx)(ue,{className:`size-3.5`})})]})]}),M&&p&&(0,$.jsxs)(`p`,{className:`text-destructive text-xs mt-1 ml-7 line-clamp-2`,children:[p,` — see Reasoning tab for details`]}),P&&(0,$.jsxs)(`ul`,{className:`mt-1.5 space-y-1 pl-5`,children:[g.map(e=>{let t=C?.type===`test-hook`&&C.hookId===e.id;return(0,$.jsx)(`li`,{children:(0,$.jsxs)(`button`,{type:`button`,onClick:()=>S!==void 0&&w?.({type:`test-hook`,testIndex:S,phase:`setup`,hookId:e.id}),className:X(`relative flex w-full items-center gap-2 overflow-hidden rounded-sm border px-1.5 py-0.5 text-left transition-colors`,e.status===`running`?`live-running-surface border-border/60 bg-primary/5`:t?`border-primary/20 bg-primary/10 ring-1 ring-primary/30`:`border-transparent bg-transparent hover:bg-muted/40`),children:[(0,$.jsx)(W,{className:`size-3 text-muted-foreground shrink-0`}),(0,$.jsxs)(`span`,{className:`text-xs text-muted-foreground truncate flex-1`,children:[`setup: `,e.name]}),(0,$.jsx)(Ee,{status:e.status})]})},`setup-${e.id}`)}),_.map(e=>{let t=C?.type===`test-hook`&&C.hookId===e.id;return(0,$.jsx)(`li`,{children:(0,$.jsxs)(`button`,{type:`button`,onClick:()=>S!==void 0&&w?.({type:`test-hook`,testIndex:S,phase:`teardown`,hookId:e.id}),className:X(`relative flex w-full items-center gap-2 overflow-hidden rounded-sm border px-1.5 py-0.5 text-left transition-colors`,e.status===`running`?`live-running-surface border-border/60 bg-primary/5`:t?`border-primary/20 bg-primary/10 ring-1 ring-primary/30`:`border-transparent bg-transparent hover:bg-muted/40`),children:[(0,$.jsx)(W,{className:`size-3 text-muted-foreground shrink-0`}),(0,$.jsxs)(`span`,{className:`text-xs text-muted-foreground truncate flex-1`,children:[`teardown: `,e.name]}),(0,$.jsx)(Ee,{status:e.status})]})},`teardown-${e.id}`)})]})]})}function Ae({availableTests:e,onAdd:t,disabled:n=!1}){return e.length===0?(0,$.jsxs)(`div`,{className:`rounded-md border bg-card/20 p-3 text-sm text-muted-foreground`,children:[`No test files found.`,` `,(0,$.jsx)(Z,{to:`/tests/new`,className:`text-primary underline underline-offset-4 hover:text-primary/80`,children:`Create a test first.`})]}):(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsxs)(he,{className:`rounded-md border`,children:[(0,$.jsx)(me,{placeholder:`Search by test name, path, or ID...`,disabled:n}),(0,$.jsxs)(Y,{className:`max-h-64`,children:[(0,$.jsx)(ve,{children:`No tests match your query.`}),(0,$.jsx)(J,{children:e.map(e=>(0,$.jsx)(be,{value:`${e.name} ${e.path} ${e.testId??``}`,onSelect:()=>t({test:e.path,id:e.testId??``}),disabled:n,className:`px-2 py-1.5`,children:(0,$.jsxs)(`div`,{className:`flex flex-col gap-0.5 w-full min-w-0`,children:[(0,$.jsx)(`span`,{className:`text-sm font-medium truncate`,children:e.name}),(0,$.jsx)(`span`,{className:`text-[11px] font-mono text-muted-foreground truncate`,children:e.path}),(0,$.jsx)(`span`,{className:`text-[10px] font-mono text-muted-foreground/70 truncate`,children:e.testId??``})]})},e.path))})]})]}),(0,$.jsx)(`p`,{className:`text-[10px] text-muted-foreground/60`,children:`Type to filter by name, path, or test ID. Click to add. Same test can be added multiple times.`})]})}var je=[`name`,`suite-id`,`target`,`use`,`context`,`setup`,`tests`,`teardown`];function Me(e){function t(e,n){if(S(e)){n?e.items.sort((e,t)=>{let n=je.indexOf(String(e.key)),r=je.indexOf(String(t.key));return(n===-1?je.length:n)-(r===-1?je.length:r)}):e.items.sort((e,t)=>String(e.key).localeCompare(String(t.key)));for(let n of e.items)t(n.value,!1)}}t(e.contents,!0)}function Ne(e){return Me(e),e.toString()}function Pe(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function Fe(e){return Array.isArray(e)?e.map(e=>{if(e&&typeof e==`object`&&`test`in e&&`id`in e){let t=e;if(typeof t.test==`string`&&typeof t.id==`string`)return{test:t.test,id:t.id}}return null}).filter(e=>e!==null):[]}function Ie(e){try{let t=y(e);if(t.errors.length>0)return null;let n=t.toJSON();return!n||typeof n!=`object`?null:{name:n.name??``,suiteId:n[`suite-id`]??``,target:n.target??``,context:n.context??``,setup:Pe(n.setup),teardown:Pe(n.teardown),tests:Fe(n.tests)}}catch{return null}}function Le(e,t,n){try{let r=y(e);return n===void 0||Array.isArray(n)&&n.length===0||n===``?r.deleteIn(t):r.setIn(t,n),Ne(r)}catch{return e}}function Re(e,t,n){try{if(t===n||t<0||n<0)return e;let r=y(e),i=Fe(r.toJSON()?.tests);if(t>=i.length||n>=i.length)return e;let a=[...i],[o]=a.splice(t,1);return a.splice(n,0,o),r.setIn([`tests`],a),Ne(r)}catch{return e}}function ze(e,t){try{let n=y(e),r=Fe(n.toJSON()?.tests);return n.setIn([`tests`],[...r,t]),Ne(n)}catch{return e}}function Be(e,t){try{let n=y(e),r=Fe(n.toJSON()?.tests);if(t<0||t>=r.length)return e;let i=r.filter((e,n)=>n!==t);return i.length===0?n.deleteIn([`tests`]):n.setIn([`tests`],i),Ne(n)}catch{return e}}function Ve({text:e}){return(0,$.jsxs)(K,{children:[(0,$.jsx)(G,{asChild:!0,children:(0,$.jsx)(q,{className:`h-3 w-3 text-muted-foreground/40 hover:text-muted-foreground/70 transition-colors cursor-help`})}),(0,$.jsx)(V,{className:`max-w-[250px] text-[13px]`,children:e})]})}function He({status:e}){switch(e){case`running`:return(0,$.jsx)(D,{className:`size-3.5 text-primary`});case`passed`:return(0,$.jsx)(H,{className:`size-3.5 text-emerald-500`});case`failed`:return(0,$.jsx)(de,{className:`size-3.5 text-destructive`});default:return(0,$.jsx)(W,{className:`size-3.5 text-muted-foreground`})}}function Ue(e){return e===`running`||e===`cancelling`}function We(e){return e===`running`||e===`cancelling`}function Ge(e){return e===`running`}function Ke(e){return e.some(e=>Ge(e.status))}function qe(e){return Ue(e.status)||e.runningStepIndex!==null||e.liveSteps.some(e=>We(e.status))||Ke(e.perTestSetupHooks)||Ke(e.perTestTeardownHooks)}function Je({title:e,hooks:t,selection:n,onSelect:r}){return t.length===0?null:(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`div`,{className:`text-[10px] uppercase tracking-wider font-medium text-muted-foreground`,children:e}),(0,$.jsx)(`ul`,{className:`space-y-1`,children:t.map(e=>{let t=n?.type===`suite-hook`&&n.hookId===e.id;return(0,$.jsx)(`li`,{children:(0,$.jsxs)(`button`,{type:`button`,onClick:()=>r?.({type:`suite-hook`,phase:e.phase,hookId:e.id}),className:X(`relative flex w-full items-center gap-2 overflow-hidden rounded-md border px-3 py-1.5 text-left transition-colors`,e.status===`running`?`live-running-surface border-border/60 bg-primary/5`:t?`border-primary/20 bg-primary/10 ring-1 ring-primary/30`:`border-border/60 bg-card/40 hover:bg-card/60`),children:[(0,$.jsx)(He,{status:e.status}),(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`div`,{className:`truncate text-sm`,children:e.name}),(0,$.jsx)(`div`,{className:`truncate font-mono text-[11px] text-muted-foreground`,children:e.id})]})]})},e.id)})})]})}function Ye({content:e,onChange:t,disabled:n=!1,suggestions:r,isCreateMode:i=!1,liveMode:a=!1,liveTests:s=[],liveSetupHooks:c=[],liveTeardownHooks:u=[],runningTestIndex:f=null,canRunTest:_=!0,canRunAll:v=!1,isRunningAll:y=!1,isStoppingRunAll:b=!1,onRunTest:S,onCancelTest:C,onRunAll:w,onStopAll:D,onRunLiveHook:ne,setupHooksStale:re=!1,onRestartSession:ie,selection:k=null,onSelect:A}){let j=(0,Q.useRef)(null),{hooks:M,warningCopy:N}=T(),P=M??[],F=(0,Q.useMemo)(()=>Object.fromEntries(P.map(e=>[e.id,e.name])),[P]),[I,L]=(0,Q.useState)([]),[R,se]=(0,Q.useState)(!1);(0,Q.useEffect)(()=>{ge().then(e=>L(e.files)).catch(()=>{})},[]),(0,Q.useEffect)(()=>{if(!R)return;function e(e){e.key===`Escape`&&se(!1)}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[R]);let z=Ie(e),B=z===null,V=z??j.current;z&&(j.current=z);let ce=ee(d(E,{activationConstraint:{distance:8}}),d(l,{coordinateGetter:x})),ue=(0,Q.useCallback)((n,r)=>{t(Le(e,[n],r))},[e,t]),H=(0,Q.useCallback)(n=>{t(ze(e,n))},[e,t]),G=(0,Q.useCallback)(n=>{t(Be(e,n))},[e,t]),K=V?.tests.map((e,t)=>`test-${t}`)??[],q=a&&(y||b),fe=a&&(f!==null||s.some(e=>qe(e))||Ke(c)||Ke(u)),J=q||fe,Y=q,pe=n||B||J,me=(0,Q.useCallback)(r=>{if(n||B||J)return;let{active:i,over:a}=r;if(!a||i.id===a.id)return;let o=parseInt(String(i.id).replace(`test-`,``),10),s=parseInt(String(a.id).replace(`test-`,``),10);if(Number.isNaN(o)||Number.isNaN(s))return;let c=Re(e,o,s);c!==e&&t(c)},[e,n,t,J,B]);return(0,$.jsx)(`div`,{className:`flex flex-col`,children:(0,$.jsxs)(`div`,{className:`space-y-4 p-4`,children:[B&&(0,$.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md border border-destructive/50 bg-destructive/10 p-3 text-sm text-destructive`,children:[(0,$.jsx)(o,{className:`size-4 shrink-0`}),(0,$.jsx)(`span`,{children:`YAML has errors — builder shows last valid state`})]}),a&&re&&(0,$.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3 rounded-md border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-sm text-amber-700 dark:text-amber-300`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start gap-2`,children:[(0,$.jsx)(de,{className:`mt-0.5 size-4 shrink-0`}),(0,$.jsx)(`span`,{children:`Setup hooks changed — restart session to re-apply the latest setup and teardown hooks.`})]}),ie&&(0,$.jsx)(U,{type:`button`,size:`sm`,className:`shrink-0`,onClick:ie,children:`Restart Live Session`})]}),V?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(we,{name:V.name,suiteId:V.suiteId,target:V.target,context:V.context,isCreateMode:i,suggestions:r,hookLabels:F,onChange:ue,disabled:n||B}),a&&(0,$.jsx)(Je,{title:`Setup Hooks (Live)`,hooks:c,selection:k,onSelect:A}),(0,$.jsxs)(`div`,{className:`space-y-3 rounded-md border bg-card/20 p-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(W,{className:`size-4 text-muted-foreground`}),(0,$.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground`,children:`Hooks`})]}),(0,$.jsxs)(`span`,{className:`text-[10px] text-muted-foreground/50`,children:[V.setup.length+V.teardown.length,` `,V.setup.length+V.teardown.length===1?`hook`:`hooks`]})]}),N&&(0,$.jsxs)(`div`,{className:`flex gap-2 rounded-md border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-xs text-amber-700 dark:text-amber-300`,children:[(0,$.jsx)(o,{className:`mt-0.5 size-3.5 shrink-0`}),(0,$.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,$.jsx)(`p`,{className:`font-medium`,children:N.title}),(0,$.jsx)(`p`,{children:N.body})]})]}),(0,$.jsxs)(`div`,{className:`space-y-3`,children:[(0,$.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Search hook names or paste an h_ ID. Saved as stable ID in YAML. Inline runHook uses the stable hook ID.`}),(0,$.jsx)(p,{phase:`setup`,label:`Setup`,values:V.setup,suggestions:P,disabled:pe,placeholder:`Search hook names or paste an h_ ID`,onChange:e=>ue(`setup`,e)}),(0,$.jsx)(p,{phase:`teardown`,label:`Teardown`,values:V.teardown,suggestions:P,disabled:pe,placeholder:`Search hook names or paste an h_ ID`,onChange:e=>ue(`teardown`,e)})]})]}),a&&(0,$.jsx)(Je,{title:`Teardown Hooks (Live)`,hooks:u,selection:k,onSelect:A}),(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsxs)(`span`,{className:`text-xs font-medium text-muted-foreground flex items-center gap-1`,children:[`Tests in Suite`,` `,(0,$.jsx)(Ve,{text:`Tests run in the order shown. Drag to reorder. The suite fails fast if any referenced test is missing at save.`})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsxs)(`span`,{className:`text-[10px] text-muted-foreground/50`,children:[V.tests.length,` `,V.tests.length===1?`test`:`tests`]}),a&&(0,$.jsx)(U,{type:`button`,variant:`outline`,size:`sm`,onClick:y?D:w,disabled:b||!y&&!v,children:b?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(le,{className:`size-3.5 animate-spin`}),`Stopping...`]}):y?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(oe,{className:`size-3.5`}),`Stop Run All`]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(O,{className:`size-3.5`}),`Run All Tests`]})})]})]}),V.tests.length===0?(0,$.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No tests added yet. Use the picker below.`}):(0,$.jsx)(h,{sensors:ce,collisionDetection:te,onDragEnd:me,children:(0,$.jsx)(m,{items:K,strategy:g,children:(0,$.jsx)(`div`,{className:`space-y-1.5`,children:V.tests.map((e,t)=>{let r=I.find(t=>t.path===e.test),i=r?.name??e.test.split(`/`).pop()??e.test,o=I.length>0&&!r,c=a?s[t]:void 0,l=a?_&&f===null&&!Y:!0;return(0,$.jsx)(ke,{id:`test-${t}`,name:i,path:e.test,testId:e.id,isMissing:o,onRemove:()=>G(t),disabled:n||B,actionsLocked:Y,sortableDisabled:J,liveMode:a,liveStatus:c?.status,liveDuration:c?.duration,liveError:c?.error??null,liveSteps:c?.liveSteps??[],runningStepIndex:c?.runningStepIndex??null,perTestSetupHooks:c?.perTestSetupHooks??[],perTestTeardownHooks:c?.perTestTeardownHooks??[],canRunTest:l,onRunTest:a&&S?()=>S(t):void 0,onCancelTest:a&&C?()=>C(t):void 0,testIndex:t,selection:k,onSelect:A},`test-${t}`)})})})})]}),(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground`,children:`Available Tests`}),(0,$.jsxs)(U,{type:`button`,variant:`outline`,size:`xs`,onClick:()=>se(e=>!e),disabled:n||B||Y,"aria-expanded":R,"aria-controls":`suite-test-picker-region`,children:[(0,$.jsx)(ae,{className:`size-3`}),R?`Hide picker`:`Add new test`]})]}),R&&(0,$.jsx)(`div`,{id:`suite-test-picker-region`,children:(0,$.jsx)(Ae,{availableTests:I,onAdd:H,disabled:n||B||Y})})]})]}):(0,$.jsx)(`div`,{className:`flex items-center justify-center py-12 text-sm text-muted-foreground`,children:`Enter valid YAML to use the visual builder`})]})})}function Xe({suiteName:e,suiteId:t,unsaved:n,isCreateMode:r,mode:i=`view`,suiteHref:a,isSaving:o,isValidating:s,isRunning:c,runDisabled:l=!1,hasInvalidFilename:u,shortcutsOpen:d,showSuiteId:f=!0,hasLiveSession:p=!1,liveConnectionState:m=`idle`,isLiveActionDisabled:h=!1,liveSessionNumber:g=null,onSave:_,onValidate:v,onRun:y,onLiveConnect:b,onLiveEnd:x,onSettingsOpen:S,onToggleShortcuts:C}){let T=i===`view`&&!r,E=!!b||!!x||p||m===`connecting`,D=!r||E,ee=!r&&!T&&i===`edit`,te=`Start a disposable live session for this suite. Setup hooks run on connect, included tests run serially on a shared browser context, teardown hooks run when the session ends, and changes are not saved automatically.`;return(0,$.jsxs)(`div`,{"data-testid":`suite-navbar-root`,className:`flex h-14 shrink-0 items-center justify-between border-b px-4 min-w-0`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,$.jsx)(Z,{to:`/suites`,className:`text-sm text-muted-foreground hover:text-foreground transition-colors shrink-0`,children:`Suites`}),(0,$.jsx)(_e,{className:`h-3.5 w-3.5 text-muted-foreground shrink-0`}),r?(0,$.jsx)(`span`,{className:`text-sm font-medium truncate`,children:`New Suite`}):a&&!T?(0,$.jsx)(Z,{to:a,className:`truncate text-sm font-medium hover:text-primary transition-colors`,children:e}):(0,$.jsx)(`span`,{className:`text-sm font-medium truncate`,children:e}),ee&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(_e,{className:`h-3.5 w-3.5 text-muted-foreground shrink-0`}),(0,$.jsx)(`span`,{className:`text-sm font-medium truncate`,children:`Edit`})]}),n&&(0,$.jsx)(xe,{variant:`outline`,className:`text-xs`,children:`Unsaved`}),!T&&!r&&t&&f&&(0,$.jsx)(w,{label:`S`,value:t})]}),(0,$.jsx)(`div`,{className:`flex items-center gap-3 shrink-0`,children:T?(0,$.jsxs)($.Fragment,{children:[a?(0,$.jsx)(U,{variant:`outline`,size:`sm`,asChild:!0,children:(0,$.jsxs)(Z,{to:a,children:[`Edit`,(0,$.jsx)(N,{shortcut:`E`})]})}):(0,$.jsxs)(U,{variant:`outline`,size:`sm`,disabled:!0,children:[`Edit`,(0,$.jsx)(N,{shortcut:`E`})]}),(0,$.jsx)(k,{onRun:y,disabled:c||l,label:c?`Running...`:`Run`,shortcutKey:`R`,size:`sm`}),E&&(0,$.jsxs)(K,{children:[(0,$.jsx)(G,{asChild:!0,children:(0,$.jsxs)(U,{size:`sm`,onClick:b,disabled:h||!b,children:[m===`connecting`?(0,$.jsx)(le,{className:`h-3.5 w-3.5 animate-spin`}):(0,$.jsx)(O,{className:`h-3.5 w-3.5`}),m===`connecting`?`Connecting...`:`Connect Live Session`,(0,$.jsx)(N,{shortcut:`L`,className:`border-primary-foreground/20 bg-primary-foreground/10 text-primary-foreground`})]})}),(0,$.jsx)(V,{className:`max-w-sm text-[13px]`,children:te})]}),!r&&(0,$.jsxs)(B,{open:d,onOpenChange:e=>{e||C()},children:[(0,$.jsxs)(K,{children:[(0,$.jsx)(G,{asChild:!0,children:(0,$.jsx)(z,{asChild:!0,children:(0,$.jsx)(U,{variant:`ghost`,size:`icon-sm`,onClick:C,"aria-label":`Shortcuts`,children:(0,$.jsx)(M,{className:`h-3.5 w-3.5`})})})}),(0,$.jsx)(V,{children:`Shortcuts`})]}),(0,$.jsx)(se,{align:`end`,sideOffset:8,className:`w-72 p-4`,children:(0,$.jsx)(`div`,{className:`space-y-3`,children:(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`h4`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-2`,children:`Actions`}),(0,$.jsx)(j,{hints:[{key:`E`,label:`Edit`},{key:`R`,label:`Run`},{key:`L`,label:`Connect Live Session`}]})]})})})]})]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(U,{variant:`ghost`,size:`sm`,onClick:v,disabled:s||u,children:[(0,$.jsx)(H,{className:`h-3.5 w-3.5`}),s?`Validating...`:`Validate`]}),(0,$.jsxs)(U,{variant:`ghost`,size:`sm`,onClick:_,disabled:o||u,children:[(0,$.jsx)(ne,{className:`h-3.5 w-3.5`}),o?`Saving...`:`Save`]}),(0,$.jsxs)(U,{variant:`ghost`,size:`sm`,onClick:S,children:[(0,$.jsx)(F,{className:`h-3.5 w-3.5`}),`Settings`]}),D&&(0,$.jsx)(`div`,{className:`h-4 w-px bg-border`}),!r&&(0,$.jsxs)(K,{children:[(0,$.jsx)(G,{asChild:!0,children:(0,$.jsx)(`span`,{className:`inline-flex`,children:(0,$.jsx)(k,{onRun:y,disabled:c||l||p,label:c?`Running...`:`Run Suite`,size:`sm`})})}),p&&(0,$.jsx)(V,{children:`End the live session to queue a new suite run.`})]}),E&&(p&&m!==`connecting`?(0,$.jsxs)(U,{variant:`destructive`,size:`sm`,onClick:x,disabled:!x,children:[(0,$.jsx)(oe,{className:`h-3.5 w-3.5`}),`End Live Session`]}):(0,$.jsxs)(K,{children:[(0,$.jsx)(G,{asChild:!0,children:(0,$.jsxs)(U,{size:`sm`,onClick:b,disabled:h||!b,children:[m===`connecting`?(0,$.jsx)(le,{className:`h-3.5 w-3.5 animate-spin`}):(0,$.jsx)(O,{className:`h-3.5 w-3.5`}),m===`connecting`?`Connecting...`:`Connect Live Session`]})}),(0,$.jsx)(V,{className:`max-w-sm text-[13px]`,children:te})]})),!T&&p&&typeof g==`number`&&(m===`connected`||m===`executing`)&&(0,$.jsxs)(xe,{variant:`outline`,"aria-live":`polite`,className:`text-[10px] tracking-wider font-medium text-muted-foreground bg-muted/50 border-border/50`,children:[`Session #`,g]}),!r&&(0,$.jsxs)(B,{open:d,onOpenChange:e=>{e||C()},children:[(0,$.jsxs)(K,{children:[(0,$.jsx)(G,{asChild:!0,children:(0,$.jsx)(z,{asChild:!0,children:(0,$.jsx)(U,{variant:`ghost`,size:`icon-sm`,onClick:C,children:(0,$.jsx)(M,{className:`h-3.5 w-3.5`})})})}),(0,$.jsx)(V,{children:`Shortcuts`})]}),(0,$.jsx)(se,{align:`end`,sideOffset:8,className:`w-72 p-4`,children:(0,$.jsx)(`div`,{className:`space-y-3`,children:(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`h4`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-2`,children:`Actions`}),(0,$.jsx)(j,{hints:[{key:`R`,label:`Run suite`},{key:`Cmd+S`,label:`Save`},{key:`Esc`,label:`Close results panel`}]})]})})})]})]})})]})}export{Le as i,Ye as n,Ie as r,Xe as t};