@thxgg/steward 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.
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{C_NevjZD.js → BSA0RJ-H.js} +1 -1
- package/.output/public/_nuxt/{BubpH_wW.js → BWVTacYj.js} +1 -1
- package/.output/public/_nuxt/{CMu9GKTH.js → Bibm_IDv.js} +2 -2
- package/.output/public/_nuxt/{wbj-mIhK.js → CVJh28bx.js} +1 -1
- package/.output/public/_nuxt/{BDqHART1.js → CxHOXVf6.js} +1 -1
- package/.output/public/_nuxt/CyZuidLG.js +60 -0
- package/.output/public/_nuxt/{qt5OEWHC.js → D0op9E2g.js} +1 -1
- package/.output/public/_nuxt/{CVvrkZkq.js → DX8awZaa.js} +1 -1
- package/.output/public/_nuxt/Detail.z33AHKev.css +1 -0
- package/.output/public/_nuxt/{C2HGkiSP.js → DiTJUZOC.js} +1 -1
- package/.output/public/_nuxt/{nYTZJhvT.js → Dum5qplW.js} +1 -1
- package/.output/public/_nuxt/{BPeTf9dd.js → T_3JE9C-.js} +1 -1
- package/.output/public/_nuxt/WOI2tLsR.js +42 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/029070b0-b8e2-4988-84f4-d0c9ff55c998.json +1 -0
- package/.output/public/_nuxt/{B-5VWizU.js → odRGDGwj.js} +1 -1
- package/.output/public/_nuxt/{qKRNa41x.js → wbjFvimm.js} +1 -1
- package/.output/public/_nuxt/{uTyw4SRK.js → ynmyrfyT.js} +1 -1
- package/.output/server/chunks/build/{Detail-DC-KJQ1f.mjs → Detail-CUfU85GY.mjs} +26 -26
- package/.output/server/chunks/build/Detail-CUfU85GY.mjs.map +1 -0
- package/.output/server/chunks/build/DiffViewer-styles-1.mjs-CS8FTppg.mjs +4 -0
- package/.output/server/chunks/build/DiffViewer-styles-1.mjs-CS8FTppg.mjs.map +1 -0
- package/.output/server/chunks/build/DiffViewer-styles.AUfwwelI.mjs +10 -0
- package/.output/server/chunks/build/DiffViewer-styles.AUfwwelI.mjs.map +1 -0
- package/.output/server/chunks/build/DiffViewer-styles.D_it8zfk.mjs +8 -0
- package/.output/server/chunks/build/DiffViewer-styles.D_it8zfk.mjs.map +1 -0
- package/.output/server/chunks/build/{_prd_-C1C4GAhW.mjs → _prd_-CeVnQzOV.mjs} +3 -3
- package/.output/server/chunks/build/_prd_-CeVnQzOV.mjs.map +1 -0
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/{repo-graph-CTEkxiYd.mjs → repo-graph-CHNl58mY.mjs} +3 -3
- package/.output/server/chunks/build/repo-graph-CHNl58mY.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +2 -2
- package/.output/server/chunks/build/styles.mjs +2 -2
- package/.output/server/chunks/nitro/nitro.mjs +598 -598
- package/.output/server/package.json +1 -1
- package/README.md +10 -1
- package/dist/host/src/mcp.js +2 -0
- package/dist/host/src/prompts.js +127 -0
- package/docs/MCP.md +13 -1
- package/package.json +1 -1
- package/.output/public/_nuxt/-k8zG74W.js +0 -61
- package/.output/public/_nuxt/BMAq0QVD.js +0 -42
- package/.output/public/_nuxt/Detail.CzXXlavD.css +0 -1
- package/.output/public/_nuxt/builds/meta/b57a8fc3-6a38-4f58-b2ae-54768412ea40.json +0 -1
- package/.output/server/chunks/build/Detail-DC-KJQ1f.mjs.map +0 -1
- package/.output/server/chunks/build/DiffViewer-styles-1.mjs-D0sb4vsK.mjs +0 -4
- package/.output/server/chunks/build/DiffViewer-styles-1.mjs-D0sb4vsK.mjs.map +0 -1
- package/.output/server/chunks/build/DiffViewer-styles.CkSjCQ0r.mjs +0 -10
- package/.output/server/chunks/build/DiffViewer-styles.CkSjCQ0r.mjs.map +0 -1
- package/.output/server/chunks/build/DiffViewer-styles.FJJuYjYB.mjs +0 -8
- package/.output/server/chunks/build/DiffViewer-styles.FJJuYjYB.mjs.map +0 -1
- package/.output/server/chunks/build/_prd_-C1C4GAhW.mjs.map +0 -1
- package/.output/server/chunks/build/repo-graph-CTEkxiYd.mjs.map +0 -1
- package/.output/server/node_modules/shiki/dist/bundle-web.mjs +0 -366
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"
|
|
1
|
+
{"id":"029070b0-b8e2-4988-84f4-d0c9ff55c998","timestamp":1771932607416}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"029070b0-b8e2-4988-84f4-d0c9ff55c998","timestamp":1771932607416,"prerendered":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as O,l as e,a1 as bt,g as D,k as ne,o as u,x as g,L as q,c as S,n as U,F as te,r as se,v as xt,B as fe,w as p,y as L,q as C,b as m,G as be,p as ke,ac as wt,z as re,A as ve,ad as Ct,j as Qe,M as Me,a as c,t as z,ae as kt,af as St,m as ye,H as le,d as J,a2 as $t,J as Ie,K as Pe,aa as Te,ag as Xe,ab as Et,$ as Rt,ah as Dt}from"./CMu9GKTH.js";import{c as xe,m as Fe,h as At,f as Ye,d as Ze,P as ie,g as Ae,u as Se,o as Bt,B as me,b as et,a as Ve,F as Oe,r as Z,e as Q,n as It}from"./qt5OEWHC.js";import{q as Pt,V as Tt,u as Ft,c as we,a as $e,b as Ot,r as Lt,f as Mt,p as tt,g as Vt,o as zt,n as qt,i as jt,j as Kt,k as Ht,l as Ut,S as Nt,G as st,L as Gt,C as Wt,R as at,B as Jt,d as he,s as Qt,t as ze,v as ot,w as nt,x as lt,X as rt,e as Ee,y as Xt,z as Yt,A as Zt,h as es,K as ts}from"./C_NevjZD.js";import{F as ss,I as as,a as Le}from"./qKRNa41x.js";import{b as qe,u as je,g as os,A as ns}from"./C2HGkiSP.js";import{_ as ls}from"./wbj-mIhK.js";const it=xe("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"}]]);const ut=xe("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]);const rs=xe("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);const dt=xe("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);const is=xe("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);function us(a,t,s){const o=a.findIndex(l=>Fe(l,t)),i=a.findIndex(l=>Fe(l,s));if(o===-1||i===-1)return[];const[r,n]=[o,i].sort((l,f)=>l-f);return a.slice(r,n+1)}function ds(a){const t=O(()=>e(a)),s=O(()=>new Intl.Collator("en",{usage:"search",...t.value}));return{startsWith:(n,l)=>l.length===0?!0:(n=n.normalize("NFC"),l=l.normalize("NFC"),s.value.compare(n.slice(0,l.length),l)===0),endsWith:(n,l)=>l.length===0?!0:(n=n.normalize("NFC"),l=l.normalize("NFC"),s.value.compare(n.slice(-l.length),l)===0),contains:(n,l)=>{if(l.length===0)return!0;n=n.normalize("NFC"),l=l.normalize("NFC");let f=0;const v=l.length;for(;f+v<=n.length;f++){const y=n.slice(f,f+v);if(s.value.compare(l,y)===0)return!0}return!1}}}function cs(a){return O(()=>bt(a)?!!At(a)?.closest("form"):!0)}function ps(){return{ALT:"Alt",ARROW_DOWN:"ArrowDown",ARROW_LEFT:"ArrowLeft",ARROW_RIGHT:"ArrowRight",ARROW_UP:"ArrowUp",BACKSPACE:"Backspace",CAPS_LOCK:"CapsLock",CONTROL:"Control",DELETE:"Delete",END:"End",ENTER:"Enter",ESCAPE:"Escape",F1:"F1",F10:"F10",F11:"F11",F12:"F12",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",HOME:"Home",META:"Meta",PAGE_DOWN:"PageDown",PAGE_UP:"PageUp",SHIFT:"Shift",SPACE:" ",TAB:"Tab",CTRL:"Control",ASTERISK:"*",SPACE_CODE:"Space"}}function fs(a){const t=Ye("",1e3);return{search:t,handleTypeaheadSearch:(i,r)=>{t.value=t.value+i;{const n=Pt(),l=r.map(_=>({..._,textValue:_.value?.textValue??_.ref.textContent?.trim()??""})),f=l.find(_=>_.ref===n),v=l.map(_=>_.textValue),y=vs(v,t.value,f?.textValue),d=l.find(_=>_.textValue===y);return d&&d.ref.focus(),d?.ref}},resetTypeahead:()=>{t.value=""}}}function ms(a,t){return a.map((s,o)=>a[(t+o)%a.length])}function vs(a,t,s){const i=t.length>1&&Array.from(t).every(v=>v===t[0])?t[0]:t,r=s?a.indexOf(s):-1;let n=ms(a,Math.max(r,0));i.length===1&&(n=n.filter(v=>v!==s));const f=n.find(v=>v.toLowerCase().startsWith(i.toLowerCase()));return f!==s?f:void 0}var hs=D({inheritAttrs:!1,__name:"VisuallyHiddenInputBubble",props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:"fully-hidden"}},setup(a){const t=a,{primitiveElement:s,currentElement:o}=qe(),i=O(()=>t.checked??t.value);return ne(i,(r,n)=>{if(!o.value)return;const l=o.value,f=window.HTMLInputElement.prototype,y=Object.getOwnPropertyDescriptor(f,"value").set;if(y&&r!==n){const d=new Event("input",{bubbles:!0}),_=new Event("change",{bubbles:!0});y.call(l,r),l.dispatchEvent(d),l.dispatchEvent(_)}}),(r,n)=>(u(),g(Tt,q({ref_key:"primitiveElement",ref:s},{...t,...r.$attrs},{as:"input"}),null,16))}}),Ne=hs,gs=D({inheritAttrs:!1,__name:"VisuallyHiddenInput",props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:"fully-hidden"}},setup(a){const t=a,s=O(()=>typeof t.value=="object"&&Array.isArray(t.value)&&t.value.length===0&&t.required),o=O(()=>typeof t.value=="string"||typeof t.value=="number"||typeof t.value=="boolean"||t.value===null||t.value===void 0?[{name:t.name,value:t.value}]:typeof t.value=="object"&&Array.isArray(t.value)?t.value.flatMap((i,r)=>typeof i=="object"?Object.entries(i).map(([n,l])=>({name:`${t.name}[${r}][${n}]`,value:l})):{name:`${t.name}[${r}]`,value:i}):t.value!==null&&typeof t.value=="object"&&!Array.isArray(t.value)?Object.entries(t.value).map(([i,r])=>({name:`${t.name}[${i}]`,value:r})):[]);return(i,r)=>(u(),S(te,null,[U(" We render single input if it's required "),s.value?(u(),g(Ne,q({key:i.name},{...t,...i.$attrs},{name:i.name,value:i.value}),null,16,["name","value"])):(u(!0),S(te,{key:1},se(o.value,n=>(u(),g(Ne,q({key:n.name},{ref_for:!0},{...t,...i.$attrs},{name:n.name,value:n.value}),null,16,["name","value"]))),128))],2112))}}),ys=gs;function _s(a,t,s){return a===void 0?!1:Array.isArray(a)?a.some(o=>_e(o,t,s)):_e(a,t,s)}function _e(a,t,s){return a===void 0||t===void 0?!1:typeof a=="string"?a===t:typeof s=="function"?s(a,t):typeof s=="string"?a?.[s]===t?.[s]:Fe(a,t)}const[Ke,bs]=we("ListboxRoot");var xs=D({__name:"ListboxRoot",props:{modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},multiple:{type:Boolean,required:!1},orientation:{type:String,required:!1,default:"vertical"},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},selectionBehavior:{type:String,required:!1,default:"toggle"},highlightOnHover:{type:Boolean,required:!1},by:{type:[String,Function],required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","highlight","entryFocus","leave"],setup(a,{expose:t,emit:s}){const o=a,i=s,{multiple:r,highlightOnHover:n,orientation:l,disabled:f,selectionBehavior:v,dir:y}=xt(o),{getItems:d}=je({isProvider:!0}),{handleTypeaheadSearch:_}=fs(),{primitiveElement:A,currentElement:w}=qe(),T=ps(),F=Ft(y),b=cs(w),M=C(),R=C(!1),j=C(!0),B=Ze(o,"modelValue",i,{defaultValue:o.defaultValue??(r.value?[]:void 0),passive:o.modelValue===void 0,deep:!0});function ae(h){if(R.value=!0,o.multiple){const k=Array.isArray(B.value)?[...B.value]:[],E=k.findIndex(H=>_e(H,h,o.by));o.selectionBehavior==="toggle"?(E===-1?k.push(h):k.splice(E,1),B.value=k):(B.value=[h],M.value=h)}else o.selectionBehavior==="toggle"&&_e(B.value,h,o.by)?B.value=void 0:B.value=h;setTimeout(()=>{R.value=!1},1)}const K=C(null),oe=C(null),ee=C(!1),G=C(!1),X=Ae(),W=Ae(),Y=Ae();function $(){return d().map(h=>h.ref).filter(h=>h.dataset.disabled!=="")}function I(h,k=!0){if(!h)return;K.value=h,j.value&&K.value.focus(),k&&K.value.scrollIntoView({block:"nearest"});const E=d().find(H=>H.ref===h);i("highlight",E)}function N(h){if(ee.value)Y.trigger(h);else{const k=d().find(E=>_e(E.value,h,o.by));k&&(K.value=k.ref,I(k.ref))}}function ue(h){K.value&&K.value.isConnected&&(h.preventDefault(),h.stopPropagation(),G.value||K.value.click())}function V(h){if(j.value){if(R.value=!0,ee.value)W.trigger(h);else{const k=h.altKey||h.ctrlKey||h.metaKey;if(k&&h.key==="a"&&r.value){const E=d(),H=E.map(ce=>ce.value);B.value=[...H],h.preventDefault(),I(E[E.length-1].ref)}else if(!k){const E=_(h.key,d());E&&I(E)}}setTimeout(()=>{R.value=!1},1)}}function x(){G.value=!0}function P(){fe(()=>{G.value=!1})}function de(){fe(()=>{const h=new KeyboardEvent("keydown",{key:"PageUp"});He(h)})}function De(h){const k=K.value;k?.isConnected&&(oe.value=k),K.value=null,i("leave",h)}function gt(h){const k=new CustomEvent("listbox.entryFocus",{bubbles:!1,cancelable:!0});if(h.currentTarget?.dispatchEvent(k),i("entryFocus",k),!k.defaultPrevented)if(oe.value)I(oe.value);else{const E=$()?.[0];I(E)}}function He(h){const k=os(h,l.value,F.value);if(!k)return;let E=$();if(K.value){if(k==="last")E.reverse();else if(k==="prev"||k==="next"){k==="prev"&&E.reverse();const H=E.indexOf(K.value);E=E.slice(H+1)}yt(h,E[0])}if(E.length){const H=!K.value&&k==="prev"?E.length-1:0;I(E[H])}if(ee.value)return W.trigger(h)}function yt(h,k){if(!(ee.value||o.selectionBehavior!=="replace"||!r.value||!Array.isArray(B.value)||(h.altKey||h.ctrlKey||h.metaKey)&&!h.shiftKey)&&h.shiftKey){const H=d().filter(ge=>ge.ref.dataset.disabled!=="");let ce=H.find(ge=>ge.ref===k)?.value;if(h.key===T.END?ce=H[H.length-1].value:h.key===T.HOME&&(ce=H[0].value),!ce||!M.value)return;const _t=us(H.map(ge=>ge.value),M.value,ce);B.value=_t}}async function Ue(h){if(await fe(),ee.value)X.trigger(h);else{const k=$(),E=k.find(H=>H.dataset.state==="checked");E?I(E):k.length&&I(k[0])}}return ne(B,()=>{R.value||fe(()=>{Ue()})},{immediate:!0,deep:!0}),t({highlightedElement:K,highlightItem:N,highlightFirstItem:de,highlightSelected:Ue,getItems:d}),bs({modelValue:B,onValueChange:ae,multiple:r,orientation:l,dir:F,disabled:f,highlightOnHover:n,highlightedElement:K,isVirtual:ee,virtualFocusHook:X,virtualKeydownHook:W,virtualHighlightHook:Y,by:o.by,firstValue:M,selectionBehavior:v,focusable:j,onLeave:De,onEnter:gt,changeHighlight:I,onKeydownEnter:ue,onKeydownNavigation:He,onKeydownTypeAhead:V,onCompositionStart:x,onCompositionEnd:P,highlightFirstItem:de}),(h,k)=>(u(),g(e(ie),{ref_key:"primitiveElement",ref:A,as:h.as,"as-child":h.asChild,dir:e(F),"data-disabled":e(f)?"":void 0,onPointerleave:De,onFocusout:k[0]||(k[0]=async E=>{const H=E.relatedTarget||E.target;await fe(),K.value&&e(w)&&!e(w).contains(H)&&De(E)})},{default:p(()=>[L(h.$slots,"default",{modelValue:e(B)}),e(b)&&h.name?(u(),g(e(ys),{key:0,name:h.name,value:e(B),disabled:e(f),required:h.required},null,8,["name","value","disabled","required"])):U("v-if",!0)]),_:3},8,["as","as-child","dir","data-disabled"]))}}),ws=xs,Cs=D({__name:"ListboxContent",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(a){const{CollectionSlot:t}=je(),s=Ke(),o=Ye(!1,10);return(i,r)=>(u(),g(e(t),null,{default:p(()=>[m(e(ie),{role:"listbox",as:i.as,"as-child":i.asChild,tabindex:e(s).focusable.value?e(s).highlightedElement.value?"-1":"0":"-1","aria-orientation":e(s).orientation.value,"aria-multiselectable":!!e(s).multiple.value,"data-orientation":e(s).orientation.value,onMousedown:r[0]||(r[0]=ke(n=>o.value=!0,["left"])),onFocus:r[1]||(r[1]=n=>{e(o)||e(s).onEnter(n)}),onKeydown:[r[2]||(r[2]=be(n=>{e(s).orientation.value==="vertical"&&(n.key==="ArrowLeft"||n.key==="ArrowRight")||e(s).orientation.value==="horizontal"&&(n.key==="ArrowUp"||n.key==="ArrowDown")||(n.preventDefault(),e(s).focusable.value&&e(s).onKeydownNavigation(n))},["down","up","left","right","home","end"])),be(e(s).onKeydownEnter,["enter"]),e(s).onKeydownTypeAhead]},{default:p(()=>[L(i.$slots,"default")]),_:3},8,["as","as-child","tabindex","aria-orientation","aria-multiselectable","data-orientation","onKeydown"])]),_:3}))}}),ks=Cs,Ss=D({__name:"ListboxFilter",props:{modelValue:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"input"}},emits:["update:modelValue"],setup(a,{emit:t}){const s=a,i=Ze(s,"modelValue",t,{defaultValue:"",passive:s.modelValue===void 0}),r=Ke(),{primitiveElement:n,currentElement:l}=qe(),f=O(()=>s.disabled||r.disabled.value||!1),v=C();return wt(()=>v.value=r.highlightedElement.value?.id),re(()=>{r.focusable.value=!1,setTimeout(()=>{s.autoFocus&&l.value?.focus()},1)}),ve(()=>{r.focusable.value=!0}),(y,d)=>(u(),g(e(ie),{ref_key:"primitiveElement",ref:n,as:y.as,"as-child":y.asChild,value:e(i),disabled:f.value?"":void 0,"data-disabled":f.value?"":void 0,"aria-disabled":f.value??void 0,"aria-activedescendant":v.value,type:"text",onKeydown:[be(ke(e(r).onKeydownNavigation,["prevent"]),["down","up","home","end"]),be(e(r).onKeydownEnter,["enter"])],onInput:d[0]||(d[0]=_=>{i.value=_.target.value,e(r).highlightFirstItem()}),onCompositionstart:e(r).onCompositionStart,onCompositionend:e(r).onCompositionEnd},{default:p(()=>[L(y.$slots,"default",{modelValue:e(i)})]),_:3},8,["as","as-child","value","disabled","data-disabled","aria-disabled","aria-activedescendant","onKeydown","onCompositionstart","onCompositionend"]))}}),$s=Ss;const[Es,Rs]=we("ListboxGroup");var Ds=D({__name:"ListboxGroup",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(a){const t=a,s=$e(void 0,"reka-listbox-group");return Rs({id:s}),(o,i)=>(u(),g(e(ie),q({role:"group"},t,{"aria-labelledby":e(s)}),{default:p(()=>[L(o.$slots,"default")]),_:3},16,["aria-labelledby"]))}}),As=Ds,Bs=D({__name:"ListboxGroupLabel",props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(a){const t=a,s=Es({id:""});return(o,i)=>(u(),g(e(ie),q(t,{id:e(s).id}),{default:p(()=>[L(o.$slots,"default")]),_:3},16,["id"]))}}),Is=Bs;const Ps="listbox.select",[Oo,Ts]=we("ListboxItem");var Fs=D({__name:"ListboxItem",props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},emits:["select"],setup(a,{emit:t}){const s=a,o=t,i=$e(void 0,"reka-listbox-item"),{CollectionItem:r}=je(),{forwardRef:n,currentElement:l}=Ot(),f=Ke(),v=O(()=>l.value===f.highlightedElement.value),y=O(()=>_s(f.modelValue.value,s.value,f.by)),d=O(()=>f.disabled.value||s.disabled);async function _(w){o("select",w),!w?.defaultPrevented&&!d.value&&w&&(f.onValueChange(s.value),f.changeHighlight(l.value))}function A(w){const T={originalEvent:w,value:s.value};Lt(Ps,_,T)}return Ts({isSelected:y}),(w,T)=>(u(),g(e(r),{value:w.value},{default:p(()=>[Ct([v.value,y.value],()=>m(e(ie),q({id:e(i)},w.$attrs,{ref:e(n),role:"option",tabindex:e(f).focusable.value?v.value?"0":"-1":-1,"aria-selected":y.value,as:w.as,"as-child":w.asChild,disabled:d.value?"":void 0,"data-disabled":d.value?"":void 0,"data-highlighted":v.value?"":void 0,"data-state":y.value?"checked":"unchecked",onClick:A,onKeydown:be(ke(A,["prevent"]),["space"]),onPointermove:T[0]||(T[0]=()=>{e(f).highlightedElement.value!==e(l)&&e(f).highlightOnHover.value&&!e(f).focusable.value&&e(f).changeHighlight(e(l),!1)})}),{default:p(()=>[L(w.$slots,"default")]),_:3},16,["id","tabindex","aria-selected","as","as-child","disabled","data-disabled","data-highlighted","data-state","onKeydown"]),T,1)]),_:3},8,["value"]))}}),Os=Fs;const Ls={class:"flex items-center gap-2 truncate"},Ms={class:"truncate"},Vs={key:0,class:"absolute top-full right-0 z-[9999] mt-1 w-[280px] rounded-md border bg-popover p-1 text-popover-foreground shadow-md"},zs={class:"max-h-[200px] overflow-y-auto"},qs=["aria-selected","onClick"],js={class:"flex flex-1 flex-col gap-0.5 overflow-hidden text-left"},Ks={class:"truncate font-medium"},Hs={class:"truncate text-xs text-muted-foreground"},Us=["onClick"],Ns={key:1,class:"px-2 py-1.5 text-sm text-muted-foreground"},Gs={key:2,class:"my-1 h-px bg-border"},Ws={class:"space-y-2"},Js={class:"flex gap-2"},Qs={key:0,class:"text-sm text-destructive"},Xs={key:0,class:"space-y-2 rounded-md border p-3"},Ys={class:"flex items-center gap-2 text-sm"},Zs=["disabled"],ea={class:"flex-1 truncate font-mono text-xs text-muted-foreground"},ta={class:"max-h-[200px] overflow-y-auto"},sa={key:0,class:"py-2 text-center text-sm text-muted-foreground"},aa={key:1,class:"py-2 text-center text-sm text-muted-foreground"},oa=["onClick"],na={class:"truncate"},la={key:0},ra={key:1},ia=D({__name:"RepoSelector",setup(a,{expose:t}){const s=Qe(),o=Me(),{repos:i,currentRepo:r,currentRepoId:n,selectRepo:l,addRepo:f,removeRepo:v}=Se(),{showSuccess:y}=et(),d=C(!1),_=C(""),A=C(null);Bt(A,()=>{d.value&&(d.value=!1,_.value="")}),ne(()=>o.fullPath,()=>{d.value=!1,_.value=""});async function w(V){l(V),d.value=!1,_.value="";try{const P=(await $fetch(`/api/repos/${V}/prds`))?.[0];P?s.push(`/${V}/${P.slug}`):s.push("/")}catch{s.push("/")}}function T(){d.value=!1,G.value=!0}const F=C(!1),b=C(""),M=C(""),R=C([]),j=C(!1),B=O(()=>!!M.value&&M.value!==b.value);async function ae(V){j.value=!0;try{const x=await $fetch("/api/browse",{query:{path:V||b.value||void 0}});b.value=x.current,M.value=x.parent,R.value=x.directories}catch{}finally{j.value=!1}}function K(){F.value=!0,ae(X.value||void 0)}function oe(V){X.value=V,F.value=!1,W.value=null}function ee(){B.value&&ae(M.value)}const G=C(!1),X=C(""),W=C(null),Y=C(!1),$=O(()=>{if(!_.value)return i.value;const V=_.value.toLowerCase();return i.value?.filter(x=>x.name.toLowerCase().includes(V)||x.path.toLowerCase().includes(V))??[]});async function I(){if(!X.value.trim()){W.value="Please enter a repository path";return}Y.value=!0,W.value=null;try{const V=await f(X.value.trim());if(G.value=!1,X.value="",y("Repository added",V?.name||"Successfully added repository"),V?.id)try{const P=(await $fetch(`/api/repos/${V.id}/prds`))?.[0];P&&s.push(`/${V.id}/${P.slug}`)}catch{}}catch(V){if(V instanceof Error){const x=V;W.value=x.data?.message||V.message}else W.value="Failed to add repository"}finally{Y.value=!1}}async function N(V,x){V.stopPropagation(),await v(x)}function ue(){G.value=!1,X.value="",W.value=null}return t({openAddDialog:()=>{G.value=!0}}),(V,x)=>(u(),S("div",{ref_key:"dropdownRef",ref:A,class:"relative"},[c("button",{type:"button",class:"inline-flex h-8 w-[200px] items-center justify-between gap-2 rounded-md border border-input bg-background px-3 text-sm font-normal ring-offset-background transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",onClick:x[0]||(x[0]=P=>d.value=!e(d))},[c("span",Ls,[m(e(ss),{class:"size-4 shrink-0 text-muted-foreground"}),c("span",Ms,z(e(r)?.name??"Select repository"),1)]),m(e(Mt),{class:"size-4 shrink-0 opacity-50"})]),e(d)?(u(),S("div",Vs,[kt(c("input",{"onUpdate:modelValue":x[1]||(x[1]=P=>ye(_)?_.value=P:null),type:"text",placeholder:"Search repositories...",class:"mb-1 h-9 w-full rounded-md border border-input bg-background px-3 text-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"},null,512),[[St,e(_)]]),c("div",zs,[e($)?.length?(u(!0),S(te,{key:0},se(e($),P=>(u(),S("div",{key:P.id,class:"group flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-sm hover:bg-accent hover:text-accent-foreground cursor-pointer",role:"option","aria-selected":e(n)===P.id,onClick:de=>w(P.id)},[m(e(tt),{class:le(["size-4 shrink-0",e(n)===P.id?"opacity-100":"opacity-0"])},null,8,["class"]),c("div",js,[c("span",Ks,z(P.name),1),c("span",Hs,z(P.path),1)]),c("button",{type:"button",class:"ml-auto opacity-0 group-hover:opacity-100 p-1 hover:bg-destructive/10 rounded transition-opacity",title:"Remove repository",onClick:de=>N(de,P.id)},[m(e(is),{class:"size-3.5 text-destructive"})],8,Us)],8,qs))),128)):(u(),S("div",Ns," No repositories found. ")),e($)?.length?(u(),S("div",Gs)):U("",!0),c("button",{type:"button",class:"flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-sm text-muted-foreground hover:bg-accent hover:text-accent-foreground",onClick:T},[m(e(Vt),{class:"size-4"}),x[5]||(x[5]=c("span",null,"Add repository...",-1))])])])):U("",!0),m(e(zt),{open:e(G),"onUpdate:open":x[4]||(x[4]=P=>G.value=P)},{default:p(()=>[m(e(qt),{side:"right",class:"flex h-full flex-col",onEscapeKeyDown:ue},{default:p(()=>[m(e(jt),{class:"px-6"},{default:p(()=>[m(e(Kt),null,{default:p(()=>[...x[6]||(x[6]=[J("Add Repository",-1)])]),_:1}),m(e(Ht),null,{default:p(()=>[...x[7]||(x[7]=[J(" Enter the absolute path to a repository containing PRD documents. ",-1)])]),_:1})]),_:1}),c("form",{id:"add-repo-form",class:"min-h-0 flex-1 space-y-4 overflow-y-auto px-6",onSubmit:ke(I,["prevent"])},[c("div",Ws,[x[8]||(x[8]=c("label",{for:"repo-path",class:"text-sm font-medium"}," Repository Path ",-1)),c("div",Js,[m(e(as),{id:"repo-path",modelValue:e(X),"onUpdate:modelValue":x[2]||(x[2]=P=>ye(X)?X.value=P:null),placeholder:"/path/to/your/project","aria-invalid":!!e(W),disabled:e(Y),class:"flex-1"},null,8,["modelValue","aria-invalid","disabled"]),m(e(me),{type:"button",variant:"outline",size:"icon",disabled:e(Y),onClick:K},{default:p(()=>[m(e(Le),{class:"size-4"})]),_:1},8,["disabled"])]),e(W)?(u(),S("p",Qs,z(e(W)),1)):U("",!0),x[9]||(x[9]=c("p",{class:"text-xs text-muted-foreground"},[J(" The repository should contain a "),c("code",{class:"rounded bg-muted px-1"},"docs/prd/"),J(" directory with markdown files. ")],-1))]),e(F)?(u(),S("div",Xs,[c("div",Ys,[c("button",{type:"button",class:"inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-xs text-muted-foreground hover:bg-accent hover:text-foreground disabled:pointer-events-none disabled:opacity-50",disabled:!e(B),onClick:ee},[m(e(ns),{class:"size-3"}),x[10]||(x[10]=J(" Up ",-1))],8,Zs),c("span",ea,z(e(b)),1),m(e(me),{type:"button",variant:"ghost",size:"sm",class:"h-7 text-xs",onClick:x[3]||(x[3]=P=>oe(e(b)))},{default:p(()=>[...x[11]||(x[11]=[J(" Select ",-1)])]),_:1})]),c("div",ta,[e(j)?(u(),S("div",sa," Loading... ")):e(R).length?(u(!0),S(te,{key:2},se(e(R),P=>(u(),S("button",{key:P.path,type:"button",class:"flex w-full items-center gap-2 rounded px-2 py-1 text-sm hover:bg-accent",onClick:de=>ae(P.path)},[m(e(Le),{class:"size-4 text-muted-foreground"}),c("span",na,z(P.name),1)],8,oa))),128)):(u(),S("div",aa," No subdirectories "))])])):U("",!0)],32),m(e(Ut),{class:"px-6 pb-6"},{default:p(()=>[m(e(me),{type:"button",variant:"outline",disabled:e(Y),onClick:ue},{default:p(()=>[...x[12]||(x[12]=[J(" Cancel ",-1)])]),_:1},8,["disabled"]),m(e(me),{type:"submit",form:"add-repo-form",disabled:e(Y)},{default:p(()=>[e(Y)?(u(),S("span",la,"Adding...")):(u(),S("span",ra,"Add Repository"))]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["open"])],512))}}),ua=Object.assign(ia,{__name:"LayoutRepoSelector"}),da={class:"flex h-full w-64 flex-col border-r border-border bg-background"},ca={class:"p-2"},pa={key:1,class:"flex items-center justify-center py-8"},fa={key:2,class:"px-2 py-8 text-center"},ma={key:3,class:"px-2 py-8 text-center"},va={key:4,class:"px-2 py-8 text-center"},ha={key:5,class:"space-y-1"},ga={class:"flex-1 truncate"},ya=D({__name:"Sidebar",setup(a){const t=Me(),{prds:s,prdsStatus:o,refreshPrds:i}=Ve(),{currentRepoId:r}=Se(),n=O(()=>t.params.prd);function l(y){return n.value===y}const f=O(()=>r.value?`/${r.value}/repo-graph`:"/"),v=O(()=>r.value?t.path===`/${r.value}/repo-graph`:!1);return(y,d)=>{const _=ls;return u(),S("aside",da,[m(e(Nt),{class:"flex-1"},{default:p(()=>[c("div",ca,[e(r)?(u(),g(_,{key:0,to:e(f),class:le(["group mb-2 flex items-center gap-3 rounded-md px-3 py-2 text-sm transition-colors",[e(v)?"bg-accent text-accent-foreground":"text-muted-foreground hover:bg-accent/50 hover:text-foreground"]])},{default:p(()=>[m(e(st),{class:"size-4 shrink-0"}),d[0]||(d[0]=c("span",{class:"flex-1 truncate"},"Repo Graph",-1))]),_:1},8,["to","class"])):U("",!0),d[6]||(d[6]=c("h2",{class:"flex h-10 items-center px-2 text-sm font-medium text-muted-foreground"},"Documents",-1)),e(o)==="pending"?(u(),S("div",pa,[m(e(Gt),{class:"size-5 animate-spin text-muted-foreground"})])):e(r)?e(o)==="error"?(u(),S("div",ma,[m(e(Wt),{class:"mx-auto size-8 text-destructive/50"}),d[3]||(d[3]=c("p",{class:"mt-2 text-sm text-muted-foreground"}," Failed to load PRDs ",-1)),m(e(me),{variant:"ghost",size:"sm",class:"mt-2",onClick:e(i)},{default:p(()=>[m(e(at),{class:"mr-1 size-3"}),d[2]||(d[2]=J(" Retry ",-1))]),_:1},8,["onClick"])])):e(s)?.length?(u(),S("nav",ha,[(u(!0),S(te,null,se(e(s),A=>(u(),g(_,{key:A.slug,to:`/${e(r)}/${A.slug}`,class:le(["group flex items-center gap-3 rounded-md px-3 py-2 text-sm transition-colors",[l(A.slug)?"bg-accent text-accent-foreground":"text-muted-foreground hover:bg-accent/50 hover:text-foreground"]])},{default:p(()=>[m(e(Oe),{class:"size-4 shrink-0"}),c("span",ga,z(A.name),1),A.hasState&&A.taskCount?(u(),g(e(Jt),{key:0,variant:"secondary",class:"shrink-0 text-xs"},{default:p(()=>[J(z(A.completedCount??0)+"/"+z(A.taskCount),1)]),_:2},1024)):U("",!0)]),_:2},1032,["to","class"]))),128))])):(u(),S("div",va,[m(e(Oe),{class:"mx-auto size-8 text-muted-foreground/50"}),d[4]||(d[4]=c("p",{class:"mt-2 text-sm text-muted-foreground"}," No PRDs found ",-1)),d[5]||(d[5]=c("p",{class:"mt-1 text-xs text-muted-foreground/70"}," Add .md files to docs/prd/ ",-1))])):(u(),S("div",fa,[...d[1]||(d[1]=[c("p",{class:"text-sm text-muted-foreground"}," Select a repository to view PRDs ",-1)])]))])]),_:1})])}}}),_a=Object.assign(ya,{__name:"LayoutSidebar"}),ba=D({__name:"Command",props:{modelValue:{default:""},defaultValue:{},multiple:{type:Boolean},orientation:{},dir:{},disabled:{type:Boolean},selectionBehavior:{},highlightOnHover:{type:Boolean},by:{},asChild:{type:Boolean},as:{},name:{},required:{type:Boolean},class:{},defaultSearch:{default:""}},emits:["update:modelValue","highlight","entryFocus","leave"],setup(a,{emit:t}){const s=a,o=t,i=Z(s,"class"),r=he(i,o),n=C(new Map),l=C(new Map),{contains:f}=ds({sensitivity:"base"}),v=$t({search:s.defaultSearch||"",filtered:{count:0,items:new Map,groups:new Set}});ne(()=>s.defaultSearch,d=>{d!==void 0&&(v.search=d)});function y(){if(!v.search){v.filtered.count=n.value.size;return}v.filtered.groups=new Set;let d=0;for(const[_,A]of n.value){const w=f(A,v.search);v.filtered.items.set(_,w?1:0),w&&d++}for(const[_,A]of l.value)for(const w of A)if(v.filtered.items.get(w)>0){v.filtered.groups.add(_);break}v.filtered.count=d}return ne(()=>v.search,()=>{y()}),ne(()=>n.value.size,()=>{v.search&&y()}),Ga({allItems:n,allGroups:l,filterState:v}),(d,_)=>(u(),g(e(ws),q({"data-slot":"command"},e(r),{class:e(Q)("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",s.class)}),{default:p(()=>[L(d.$slots,"default")]),_:3},16,["class"]))}}),xa=Object.assign(ba,{__name:"UiCommand"}),wa=D({__name:"Dialog",props:{open:{type:Boolean},defaultOpen:{type:Boolean},modal:{type:Boolean}},emits:["update:open"],setup(a,{emit:t}){const i=he(a,t);return(r,n)=>(u(),g(e(Qt),q({"data-slot":"dialog"},e(i)),{default:p(l=>[L(r.$slots,"default",Ie(Pe(l)))]),_:3},16))}}),ct=Object.assign(wa,{__name:"UiDialog"}),Ca=D({__name:"DialogClose",props:{asChild:{type:Boolean},as:{}},setup(a){const t=a;return(s,o)=>(u(),g(e(ze),q({"data-slot":"dialog-close"},t),{default:p(()=>[L(s.$slots,"default")]),_:3},16))}});Object.assign(Ca,{__name:"UiDialogClose"});const ka=D({__name:"DialogOverlay",props:{forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(a){const t=a,s=Z(t,"class");return(o,i)=>(u(),g(e(ot),q({"data-slot":"dialog-overlay"},e(s),{class:e(Q)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80",t.class)}),{default:p(()=>[L(o.$slots,"default")]),_:3},16,["class"]))}}),Sa=Object.assign(ka,{__name:"UiDialogOverlay"}),$a=D({inheritAttrs:!1,__name:"DialogContent",props:{forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{},class:{},showCloseButton:{type:Boolean,default:!0}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(a,{emit:t}){const s=a,o=t,i=Z(s,"class"),r=he(i,o);return(n,l)=>(u(),g(e(nt),null,{default:p(()=>[m(Sa),m(e(lt),q({"data-slot":"dialog-content"},{...n.$attrs,...e(r)},{class:e(Q)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",s.class)}),{default:p(()=>[L(n.$slots,"default"),a.showCloseButton?(u(),g(e(ze),{key:0,"data-slot":"dialog-close",class:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4"},{default:p(()=>[m(e(rt)),l[0]||(l[0]=c("span",{class:"sr-only"},"Close",-1))]),_:1})):U("",!0)]),_:3},16,["class"])]),_:3}))}}),pt=Object.assign($a,{__name:"UiDialogContent"}),Ea=D({__name:"DialogDescription",props:{asChild:{type:Boolean},as:{},class:{}},setup(a){const t=a,s=Z(t,"class"),o=Ee(s);return(i,r)=>(u(),g(e(Xt),q({"data-slot":"dialog-description"},e(o),{class:e(Q)("text-muted-foreground text-sm",t.class)}),{default:p(()=>[L(i.$slots,"default")]),_:3},16,["class"]))}}),ft=Object.assign(Ea,{__name:"UiDialogDescription"}),Ra=D({__name:"DialogFooter",props:{class:{}},setup(a){const t=a;return(s,o)=>(u(),S("div",{"data-slot":"dialog-footer",class:le(e(Q)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",t.class))},[L(s.$slots,"default")],2))}});Object.assign(Ra,{__name:"UiDialogFooter"});const Da=D({__name:"DialogHeader",props:{class:{}},setup(a){const t=a;return(s,o)=>(u(),S("div",{"data-slot":"dialog-header",class:le(e(Q)("flex flex-col gap-2 text-center sm:text-left",t.class))},[L(s.$slots,"default")],2))}}),mt=Object.assign(Da,{__name:"UiDialogHeader"}),Aa=D({inheritAttrs:!1,__name:"DialogScrollContent",props:{forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(a,{emit:t}){const s=a,o=t,i=Z(s,"class"),r=he(i,o);return(n,l)=>(u(),g(e(nt),null,{default:p(()=>[m(e(ot),{class:"fixed inset-0 z-50 grid place-items-center overflow-y-auto bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0"},{default:p(()=>[m(e(lt),q({class:e(Q)("relative z-50 grid w-full max-w-lg my-8 gap-4 border border-border bg-background p-6 shadow-lg duration-200 sm:rounded-lg md:w-full",s.class)},{...n.$attrs,...e(r)},{onPointerDownOutside:l[0]||(l[0]=f=>{const v=f.detail.originalEvent,y=v.target;(v.offsetX>y.clientWidth||v.offsetY>y.clientHeight)&&f.preventDefault()})}),{default:p(()=>[L(n.$slots,"default"),m(e(ze),{class:"absolute top-4 right-4 p-0.5 transition-colors rounded-md hover:bg-secondary"},{default:p(()=>[m(e(rt),{class:"w-4 h-4"}),l[1]||(l[1]=c("span",{class:"sr-only"},"Close",-1))]),_:1})]),_:3},16,["class"])]),_:3})]),_:3}))}});Object.assign(Aa,{__name:"UiDialogScrollContent"});const Ba=D({__name:"DialogTitle",props:{asChild:{type:Boolean},as:{},class:{}},setup(a){const t=a,s=Z(t,"class"),o=Ee(s);return(i,r)=>(u(),g(e(Yt),q({"data-slot":"dialog-title"},e(o),{class:e(Q)("text-lg leading-none font-semibold",t.class)}),{default:p(()=>[L(i.$slots,"default")]),_:3},16,["class"]))}}),vt=Object.assign(Ba,{__name:"UiDialogTitle"}),Ia=D({__name:"DialogTrigger",props:{asChild:{type:Boolean},as:{}},setup(a){const t=a;return(s,o)=>(u(),g(e(Zt),q({"data-slot":"dialog-trigger"},t),{default:p(()=>[L(s.$slots,"default")]),_:3},16))}});Object.assign(Ia,{__name:"UiDialogTrigger"});const Pa=D({__name:"CommandDialog",props:{open:{type:Boolean},defaultOpen:{type:Boolean},modal:{type:Boolean},title:{default:"Command Palette"},description:{default:"Search for a command to run..."},defaultSearch:{default:""}},emits:["update:open"],setup(a,{emit:t}){const i=he(a,t);return(r,n)=>(u(),g(e(ct),Ie(Pe(e(i))),{default:p(l=>[m(e(pt),{class:"overflow-hidden p-0","show-close-button":!1},{default:p(()=>[m(e(mt),{class:"sr-only"},{default:p(()=>[m(e(vt),null,{default:p(()=>[J(z(a.title),1)]),_:1}),m(e(ft),null,{default:p(()=>[J(z(a.description),1)]),_:1})]),_:1}),m(xa,{"default-search":a.defaultSearch},{default:p(()=>[L(r.$slots,"default",Ie(Pe(l)))]),_:2},1032,["default-search"])]),_:2},1024)]),_:3},16))}}),Ta=Object.assign(Pa,{__name:"UiCommandDialog"}),Fa=D({__name:"CommandEmpty",props:{asChild:{type:Boolean},as:{},class:{}},setup(a){const t=a,s=Z(t,"class"),{filterState:o}=Re(),i=O(()=>!!o.search&&o.filtered.count===0);return(r,n)=>i.value?(u(),g(e(ie),q({key:0,"data-slot":"command-empty"},e(s),{class:e(Q)("py-6 text-center text-sm",t.class)}),{default:p(()=>[L(r.$slots,"default")]),_:3},16,["class"])):U("",!0)}}),Oa=Object.assign(Fa,{__name:"UiCommandEmpty"}),La=D({__name:"CommandGroup",props:{asChild:{type:Boolean},as:{},class:{},heading:{}},setup(a){const t=a,s=Z(t,"class"),{allGroups:o,filterState:i}=Re(),r=$e(),n=O(()=>i.search?i.filtered.groups.has(r):!0);return Ja({id:r}),re(()=>{o.value.has(r)||o.value.set(r,new Set)}),ve(()=>{o.value.delete(r)}),(l,f)=>(u(),g(e(As),q(e(s),{id:e(r),"data-slot":"command-group",class:e(Q)("text-foreground overflow-hidden p-1",t.class),hidden:n.value?void 0:!0}),{default:p(()=>[a.heading?(u(),g(e(Is),{key:0,"data-slot":"command-group-heading",class:"px-2 py-1.5 text-xs font-medium text-muted-foreground"},{default:p(()=>[J(z(a.heading),1)]),_:1})):U("",!0),L(l.$slots,"default")]),_:3},16,["id","class","hidden"]))}}),Be=Object.assign(La,{__name:"UiCommandGroup"}),Ma={"data-slot":"command-input-wrapper",class:"flex h-9 items-center gap-2 border-b px-3"},Va=D({inheritAttrs:!1,__name:"CommandInput",props:{modelValue:{},autoFocus:{type:Boolean},disabled:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(a){const t=a,s=Z(t,"class"),o=Ee(s),{filterState:i}=Re(),r=C(null);return re(()=>{fe(()=>{const n=r.value?.$el;if(n&&i.search){const l=i.search.length;n.setSelectionRange(l,l)}})}),(n,l)=>(u(),S("div",Ma,[m(e(rs),{class:"size-4 shrink-0 opacity-50"}),m(e($s),q({ref_key:"inputRef",ref:r},{...e(o),...n.$attrs},{modelValue:e(i).search,"onUpdate:modelValue":l[0]||(l[0]=f=>e(i).search=f),"data-slot":"command-input","auto-focus":"",class:e(Q)("placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50",t.class)}),null,16,["modelValue","class"])]))}}),za=Object.assign(Va,{__name:"UiCommandInput"}),qa=D({__name:"CommandItem",props:{value:{},disabled:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:["select"],setup(a,{emit:t}){const s=a,o=t,i=Z(s,"class"),r=he(i,o),n=$e(),{filterState:l,allItems:f,allGroups:v}=Re(),y=Wa(),d=O(()=>{if(l.search){const w=l.filtered.items.get(n);return w===void 0?!0:w>0}else return!0}),_=C(),A=It(_);return re(()=>{if(!(A.value instanceof HTMLElement))return;f.value.set(n,A.value.textContent??s.value?.toString()??"");const w=y?.id;w&&(v.value.has(w)?v.value.get(w)?.add(n):v.value.set(w,new Set([n])))}),ve(()=>{f.value.delete(n)}),(w,T)=>d.value?(u(),g(e(Os),q({key:0},e(r),{id:e(n),ref_key:"itemRef",ref:_,"data-slot":"command-item",class:e(Q)("data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",s.class),onSelect:T[0]||(T[0]=()=>{e(l).search=""})}),{default:p(()=>[L(w.$slots,"default")]),_:3},16,["id","class"])):U("",!0)}}),pe=Object.assign(qa,{__name:"UiCommandItem"}),ja={role:"presentation"},Ka=D({__name:"CommandList",props:{asChild:{type:Boolean},as:{},class:{}},setup(a){const t=a,s=Z(t,"class"),o=Ee(s);return(i,r)=>(u(),g(e(ks),q({"data-slot":"command-list"},e(o),{class:e(Q)("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto scrollbar-none",t.class)}),{default:p(()=>[c("div",ja,[L(i.$slots,"default")])]),_:3},16,["class"]))}}),Ha=Object.assign(Ka,{__name:"UiCommandList"}),Ua=D({__name:"CommandSeparator",props:{orientation:{},decorative:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(a){const t=a,s=Z(t,"class");return(o,i)=>(u(),g(e(es),q({"data-slot":"command-separator"},e(s),{class:e(Q)("bg-border -mx-1 h-px",t.class)}),{default:p(()=>[L(o.$slots,"default")]),_:3},16,["class"]))}}),Ge=Object.assign(Ua,{__name:"UiCommandSeparator"}),Na=D({__name:"CommandShortcut",props:{class:{}},setup(a){const t=a;return(s,o)=>(u(),S("span",{"data-slot":"command-shortcut",class:le(e(Q)("text-muted-foreground ml-auto text-xs tracking-widest",t.class))},[L(s.$slots,"default")],2))}});Object.assign(Na,{__name:"UiCommandShortcut"});const[Re,Ga]=we("Command"),[Wa,Ja]=we("CommandGroup"),Qa={class:"flex-1"},Xa={class:"flex-1"},Ya={class:"ml-auto flex items-center gap-1"},Za={class:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono text-[10px] text-muted-foreground"},eo={class:"flex-1"},to={class:"ml-auto flex items-center gap-1"},so={class:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono text-[10px] text-muted-foreground"},ao={class:"ml-auto flex items-center gap-1"},oo={class:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono text-[10px] text-muted-foreground"},no=D({__name:"CommandPalette",props:{open:{type:Boolean,default:!1},openModifiers:{},filter:{default:""},filterModifiers:{}},emits:Et(["openShortcutsHelp"],["update:open","update:filter"]),setup(a,{emit:t}){const s=Te(a,"open"),o=Te(a,"filter"),i=t,r=Qe(),{themeMode:n,cycleThemeMode:l}=Xe(),{prds:f}=Ve(),{repos:v,currentRepoId:y,selectRepo:d,refreshGitRepos:_}=Se(),{showSuccess:A,showError:w}=et(),T=["document","board","graph"],F={document:"Document",board:"Task Board",graph:"Graph"},b=C("document");{const $=localStorage.getItem("prd-viewer-tab");($==="document"||$==="board"||$==="graph")&&(b.value=$)}function M($){$.key!=="prd-viewer-tab"||!$.newValue||($.newValue==="document"||$.newValue==="board"||$.newValue==="graph")&&(b.value=$.newValue)}re(()=>{window.addEventListener("storage",M)}),ve(()=>{window.removeEventListener("storage",M)});const R=O(()=>{const $=T.indexOf(b.value),I=$>=0?$:0;return T[(I+1)%T.length]}),j=O(()=>F[R.value]);function B($){y.value&&(r.push(`/${y.value}/${$}`),s.value=!1)}function ae($){d($),r.push("/"),s.value=!1}function K(){l(),s.value=!1}function oe(){const $=R.value;b.value=$,localStorage.setItem("prd-viewer-tab",$),window.dispatchEvent(new StorageEvent("storage",{key:"prd-viewer-tab",newValue:$})),s.value=!1}function ee(){s.value=!1,i("openShortcutsHelp")}const G=C(!1);async function X(){if(!(!y.value||G.value)){G.value=!0,s.value=!1;try{const $=await _(y.value);A(`Discovered ${$.discovered} git repositories`)}catch{w("Failed to refresh git repos")}finally{G.value=!1}}}ne(s,$=>{$||(o.value="")});const W=O(()=>navigator.platform.toUpperCase().indexOf("MAC")>=0),Y=O(()=>W.value?"⌘":"Ctrl");return($,I)=>(u(),g(e(Ta),{open:s.value,"onUpdate:open":I[0]||(I[0]=N=>s.value=N),"default-search":o.value},{default:p(()=>[m(e(za),{placeholder:"Type a command or search..."}),m(e(Ha),null,{default:p(()=>[m(e(Oa),null,{default:p(()=>[...I[1]||(I[1]=[J("No results found.",-1)])]),_:1}),e(f)?.length?(u(),g(e(Be),{key:0,heading:"Documents"},{default:p(()=>[(u(!0),S(te,null,se(e(f),N=>(u(),g(e(pe),{key:N.slug,value:`PRD: ${N.name}`,onSelect:ue=>B(N.slug)},{default:p(()=>[m(e(Oe),{class:"size-4"}),c("span",null,z(N.name),1)]),_:2},1032,["value","onSelect"]))),128))]),_:1})):U("",!0),e(f)?.length&&e(v)?.length?(u(),g(e(Ge),{key:1})):U("",!0),e(v)?.length?(u(),g(e(Be),{key:2,heading:"Repositories"},{default:p(()=>[(u(!0),S(te,null,se(e(v),N=>(u(),g(e(pe),{key:N.id,value:`repo-${N.id} ${N.name}`,onSelect:ue=>ae(N.id)},{default:p(()=>[m(e(Le),{class:"size-4"}),c("span",Qa,z(N.name),1),N.id===e(y)?(u(),g(e(tt),{key:0,class:"size-4 text-primary"})):U("",!0)]),_:2},1032,["value","onSelect"]))),128))]),_:1})):U("",!0),e(v)?.length?(u(),g(e(Ge),{key:3})):U("",!0),m(e(Be),{heading:"Actions"},{default:p(()=>[m(e(pe),{value:"cycle-theme light dark system",onSelect:K},{default:p(()=>[e(n)==="system"?(u(),g(e(it),{key:0,class:"size-4"})):e(n)==="light"?(u(),g(e(dt),{key:1,class:"size-4"})):(u(),g(e(ut),{key:2,class:"size-4"})),c("span",Xa,"Cycle theme mode ("+z(e(n))+")",1),c("div",Ya,[c("kbd",Za,z(e(Y)),1),I[2]||(I[2]=c("kbd",{class:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono text-[10px] text-muted-foreground"},".",-1))])]),_:1}),m(e(pe),{value:`switch-tab ${e(j).toLowerCase()}`,onSelect:oe},{default:p(()=>[m(e(st),{class:"size-4"}),c("span",eo,"Switch to "+z(e(j)),1),c("div",to,[c("kbd",so,z(e(Y)),1),I[3]||(I[3]=c("kbd",{class:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono text-[10px] text-muted-foreground"},"\\",-1))])]),_:1},8,["value"]),m(e(pe),{value:"keyboard shortcuts help",onSelect:ee},{default:p(()=>[m(e(ts),{class:"size-4"}),I[5]||(I[5]=c("span",{class:"flex-1"},"Keyboard shortcuts",-1)),c("div",ao,[c("kbd",oo,z(e(Y)),1),I[4]||(I[4]=c("kbd",{class:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono text-[10px] text-muted-foreground"},"/",-1))])]),_:1}),e(y)?(u(),g(e(pe),{key:0,value:"refresh git repos rescan discover",disabled:e(G),onSelect:X},{default:p(()=>[m(e(at),{class:le(["size-4",{"animate-spin":e(G)}])},null,8,["class"]),I[6]||(I[6]=c("span",{class:"flex-1"},"Refresh git repos",-1))]),_:1},8,["disabled"])):U("",!0)]),_:1})]),_:1})]),_:1},8,["open","default-search"]))}}),lo=Object.assign(no,{__name:"CommandPalette"}),ro={class:"space-y-6"},io={class:"mb-3 text-sm font-medium text-muted-foreground"},uo={class:"space-y-2"},co={class:"text-sm"},po={class:"flex items-center gap-1"},fo=D({__name:"ShortcutsHelp",props:{open:{type:Boolean,default:!1},openModifiers:{}},emits:["update:open"],setup(a){const t=Te(a,"open"),s=O(()=>navigator.platform.toUpperCase().indexOf("MAC")>=0),o=O(()=>s.value?"⌘":"Ctrl"),i=O(()=>[{name:"Navigation",shortcuts:[{keys:[o.value,"K"],description:"Open command palette"},{keys:[o.value,"J"],description:"Quick jump to document"}]},{name:"Actions",shortcuts:[{keys:[o.value,"."],description:"Cycle theme mode (light/dark/system)"},{keys:[o.value,"\\"],description:"Cycle Document, Task Board, and Graph tabs"},{keys:[o.value,","],description:"Add repository"}]},{name:"Help",shortcuts:[{keys:[o.value,"/"],description:"Show this help"},{keys:["Esc"],description:"Close dialog or palette"}]}]);return(r,n)=>(u(),g(e(ct),{open:t.value,"onUpdate:open":n[0]||(n[0]=l=>t.value=l)},{default:p(()=>[m(e(pt),{class:"max-w-md"},{default:p(()=>[m(e(mt),null,{default:p(()=>[m(e(vt),null,{default:p(()=>[...n[1]||(n[1]=[J("Keyboard Shortcuts",-1)])]),_:1}),m(e(ft),null,{default:p(()=>[...n[2]||(n[2]=[J(" Quick reference for available keyboard shortcuts. ",-1)])]),_:1})]),_:1}),c("div",ro,[(u(!0),S(te,null,se(e(i),l=>(u(),S("div",{key:l.name},[c("h3",io,z(l.name),1),c("div",uo,[(u(!0),S(te,null,se(l.shortcuts,f=>(u(),S("div",{key:f.description,class:"flex items-center justify-between"},[c("span",co,z(f.description),1),c("div",po,[(u(!0),S(te,null,se(f.keys,(v,y)=>(u(),S("kbd",{key:y,class:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono text-xs font-medium text-muted-foreground"},z(v),1))),128))])]))),128))])]))),128))])]),_:1})]),_:1},8,["open"]))}}),mo=Object.assign(fo,{__name:"ShortcutsHelp"});function ht(){const a=document.activeElement;if(!a)return!1;const t=a.tagName.toLowerCase();return t==="input"||t==="textarea"||a.getAttribute("contenteditable")==="true"||a.getAttribute("role")==="textbox"}function vo(a){const t=a.toLowerCase().split("+"),s=t.pop()||"";return{meta:t.includes("meta"),ctrl:t.includes("ctrl"),shift:t.includes("shift"),alt:t.includes("alt"),key:s}}function ho(a,t){const s=a.key.toLowerCase();let o=s===t.key;return t.key==="\\"&&(o=s==="\\"||a.code==="Backslash"),t.key==="/"&&(o=s==="/"||a.code==="Slash"),t.key==="."&&(o=s==="."||a.code==="Period"),t.key===","&&(o=s===","||a.code==="Comma"),o&&a.metaKey===t.meta&&a.ctrlKey===t.ctrl&&a.shiftKey===t.shift&&a.altKey===t.alt}const Ce=[];let We=!1;function go(a){for(const t of Ce)if(ho(a,t.combo)){if(!t.allowInInput&&ht())continue;a.preventDefault(),a.stopPropagation(),t.handler();return}}function Je(){We||(document.addEventListener("keydown",go,{capture:!0}),We=!0)}function yo(){re(()=>{Je()});function a(s,o,i){const n={combo:vo(s),handler:o,allowInInput:i?.allowInInput??!1};Ce.push(n),Je(),ve(()=>{const l=Ce.indexOf(n);l>-1&&Ce.splice(l,1)})}function t(){return ht()}return{onShortcut:a,isInputFocused:t}}const _o=globalThis.setInterval,bo=2e3,xo=2e3;function wo(a){return!a.instanceId||!a.buildId?null:`${a.buildId}:${a.instanceId}`}function Co(a){const t=C(null),s=C(!1),o=C(null),i=C(null),r=C(null),n=C(null),l=C(!1),f=C(!1),v=C(!1);function y(){i.value&&(clearTimeout(i.value),i.value=null)}function d(){r.value&&(clearInterval(r.value),r.value=null)}async function _(){try{const R=await $fetch(`/api/runtime?_=${Date.now()}`);return wo(R)}catch{return null}}async function A(){n.value===null&&(n.value=await _())}async function w(){if(!(l.value||v.value)){l.value=!0;try{const R=await _();if(!R)return;if(!n.value){n.value=R;return}R!==n.value&&(v.value=!0,window.location.reload())}finally{l.value=!1}}}function T(){r.value||(r.value=_o(()=>{w()},xo))}function F(){i.value||(i.value=setTimeout(()=>{i.value=null,b()},bo))}function b(){if(!t.value)try{const R=new EventSource("/api/watch");R.onopen=async()=>{s.value=!0,o.value=null,y(),d(),f.value&&(f.value=!1,await w())},R.onmessage=j=>{try{const B=JSON.parse(j.data);a(B)}catch{}},R.onerror=()=>{s.value=!1,o.value="Connection lost",f.value=!0,t.value===R&&(R.close(),t.value=null),T(),F()},t.value=R}catch{o.value="Failed to connect",T(),F()}}function M(){y(),d(),f.value=!1,t.value&&(t.value.close(),t.value=null,s.value=!1)}return re(async()=>{await A(),b()}),ve(()=>{M()}),{isConnected:s,error:o,connect:b,disconnect:M}}const ko={class:"min-h-screen bg-background text-foreground"},So={class:"fixed top-0 left-0 right-0 z-50 h-14 border-b border-border bg-background/95 backdrop-blur-sm supports-[backdrop-filter]:bg-background/80"},$o={class:"flex h-full items-center justify-between px-4 md:px-6"},Eo={class:"flex items-center gap-3"},Ro={class:"flex h-screen pt-14"},Do={class:"flex-1 overflow-auto"},Lo=D({__name:"default",setup(a){const{themeMode:t,cycleThemeMode:s}=Xe(),{refreshPrds:o}=Ve(),{currentRepoId:i}=Se(),r=Me(),n=C(null);Rt("fileChangeEvent",n);const l=C(!1),f=C(""),v=C(!1),y=C(null),{onShortcut:d}=yo();d("Meta+k",()=>{l.value=!0}),d("Ctrl+k",()=>{l.value=!0}),d("Meta+j",()=>{f.value="PRD: ",l.value=!0}),d("Ctrl+j",()=>{f.value="PRD: ",l.value=!0});function _(){const F=["document","board","graph"],b=localStorage.getItem("prd-viewer-tab")||"document",M=F.indexOf(b),R=M>=0?M:0,j=F[(R+1)%F.length]??"document";localStorage.setItem("prd-viewer-tab",j),window.dispatchEvent(new StorageEvent("storage",{key:"prd-viewer-tab",newValue:j}))}d("Meta+\\",_),d("Ctrl+\\",_);function A(){s()}d("Meta+.",A),d("Ctrl+.",A);function w(){y.value?.openAddDialog()}d("Meta+,",w),d("Ctrl+,",w);function T(){v.value=!0}return d("Meta+/",T),d("Ctrl+/",T),d("Meta+Shift+/",T),d("Ctrl+Shift+/",T),Co(F=>{if(F.type==="connected"||!F.category)return;const b=F.category;if(F.repoId!==i.value)return;(b==="prd"||b==="tasks")&&o();const M=r.params.prd;if(M){const R=b==="prd"&&F.path?.includes(`/${M}.`),j=(b==="tasks"||b==="progress")&&F.path?.includes(`/${M}/`);(R||j||(b==="tasks"||b==="progress"))&&(n.value={category:b,path:F.path,timestamp:Date.now()})}}),(F,b)=>{const M=ua,R=Dt,j=_a;return u(),S("div",ko,[m(lo,{open:e(l),"onUpdate:open":b[0]||(b[0]=B=>ye(l)?l.value=B:null),filter:e(f),"onUpdate:filter":b[1]||(b[1]=B=>ye(f)?f.value=B:null),onOpenShortcutsHelp:T},null,8,["open","filter"]),m(mo,{open:e(v),"onUpdate:open":b[2]||(b[2]=B=>ye(v)?v.value=B:null)},null,8,["open"]),c("header",So,[c("div",$o,[b[5]||(b[5]=c("div",{class:"flex items-center gap-4"},[c("h1",{class:"text-lg font-semibold tracking-tight"}," PRD Viewer ")],-1)),m(R,null,{fallback:p(()=>[...b[4]||(b[4]=[c("div",{class:"flex items-center gap-3"},[c("div",{class:"h-8 w-[200px] animate-pulse rounded-md bg-muted"}),c("div",{class:"size-9 animate-pulse rounded-md bg-muted"})],-1)])]),default:p(()=>[c("div",Eo,[m(M,{ref_key:"repoSelectorRef",ref:y},null,512),m(e(me),{variant:"ghost",size:"icon",class:"size-9",onClick:A},{default:p(()=>[e(t)==="system"?(u(),g(e(it),{key:0,class:"size-4"})):e(t)==="light"?(u(),g(e(dt),{key:1,class:"size-4"})):(u(),g(e(ut),{key:2,class:"size-4"})),b[3]||(b[3]=c("span",{class:"sr-only"},"Cycle theme mode",-1))]),_:1})])]),_:1})])]),c("div",Ro,[m(R,null,{fallback:p(()=>[...b[6]||(b[6]=[c("aside",{class:"flex h-full w-64 flex-col border-r border-border bg-background"},[c("div",{class:"flex h-12 items-center border-b border-border px-4"},[c("div",{class:"h-4 w-20 animate-pulse rounded bg-muted"})]),c("div",{class:"flex-1 p-2 space-y-2"},[c("div",{class:"h-9 animate-pulse rounded-md bg-muted"}),c("div",{class:"h-9 animate-pulse rounded-md bg-muted"}),c("div",{class:"h-9 animate-pulse rounded-md bg-muted"})])],-1)])]),default:p(()=>[m(j)]),_:1}),c("main",Do,[L(F.$slots,"default")])])])}}});export{Lo as default};
|
|
1
|
+
import{s as O,l as e,a1 as bt,g as D,k as ne,o as u,x as g,L as q,c as S,n as U,F as te,r as se,v as xt,B as fe,w as p,y as L,q as C,b as m,G as be,p as ke,ac as wt,z as re,A as ve,ad as Ct,j as Qe,M as Me,a as c,t as z,ae as kt,af as St,m as ye,H as le,d as J,a2 as $t,J as Ie,K as Pe,aa as Te,ag as Xe,ab as Et,$ as Rt,ah as Dt}from"./Bibm_IDv.js";import{c as xe,m as Fe,h as At,f as Ye,d as Ze,P as ie,g as Ae,u as Se,o as Bt,B as me,b as et,a as Ve,F as Oe,r as Z,e as Q,n as It}from"./D0op9E2g.js";import{q as Pt,V as Tt,u as Ft,c as we,a as $e,b as Ot,r as Lt,f as Mt,p as tt,g as Vt,o as zt,n as qt,i as jt,j as Kt,k as Ht,l as Ut,S as Nt,G as st,L as Gt,C as Wt,R as at,B as Jt,d as he,s as Qt,t as ze,v as ot,w as nt,x as lt,X as rt,e as Ee,y as Xt,z as Yt,A as Zt,h as es,K as ts}from"./BSA0RJ-H.js";import{F as ss,I as as,a as Le}from"./wbjFvimm.js";import{b as qe,u as je,g as os,A as ns}from"./DiTJUZOC.js";import{_ as ls}from"./CVJh28bx.js";const it=xe("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"}]]);const ut=xe("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]);const rs=xe("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);const dt=xe("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);const is=xe("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);function us(a,t,s){const o=a.findIndex(l=>Fe(l,t)),i=a.findIndex(l=>Fe(l,s));if(o===-1||i===-1)return[];const[r,n]=[o,i].sort((l,f)=>l-f);return a.slice(r,n+1)}function ds(a){const t=O(()=>e(a)),s=O(()=>new Intl.Collator("en",{usage:"search",...t.value}));return{startsWith:(n,l)=>l.length===0?!0:(n=n.normalize("NFC"),l=l.normalize("NFC"),s.value.compare(n.slice(0,l.length),l)===0),endsWith:(n,l)=>l.length===0?!0:(n=n.normalize("NFC"),l=l.normalize("NFC"),s.value.compare(n.slice(-l.length),l)===0),contains:(n,l)=>{if(l.length===0)return!0;n=n.normalize("NFC"),l=l.normalize("NFC");let f=0;const v=l.length;for(;f+v<=n.length;f++){const y=n.slice(f,f+v);if(s.value.compare(l,y)===0)return!0}return!1}}}function cs(a){return O(()=>bt(a)?!!At(a)?.closest("form"):!0)}function ps(){return{ALT:"Alt",ARROW_DOWN:"ArrowDown",ARROW_LEFT:"ArrowLeft",ARROW_RIGHT:"ArrowRight",ARROW_UP:"ArrowUp",BACKSPACE:"Backspace",CAPS_LOCK:"CapsLock",CONTROL:"Control",DELETE:"Delete",END:"End",ENTER:"Enter",ESCAPE:"Escape",F1:"F1",F10:"F10",F11:"F11",F12:"F12",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",HOME:"Home",META:"Meta",PAGE_DOWN:"PageDown",PAGE_UP:"PageUp",SHIFT:"Shift",SPACE:" ",TAB:"Tab",CTRL:"Control",ASTERISK:"*",SPACE_CODE:"Space"}}function fs(a){const t=Ye("",1e3);return{search:t,handleTypeaheadSearch:(i,r)=>{t.value=t.value+i;{const n=Pt(),l=r.map(_=>({..._,textValue:_.value?.textValue??_.ref.textContent?.trim()??""})),f=l.find(_=>_.ref===n),v=l.map(_=>_.textValue),y=vs(v,t.value,f?.textValue),d=l.find(_=>_.textValue===y);return d&&d.ref.focus(),d?.ref}},resetTypeahead:()=>{t.value=""}}}function ms(a,t){return a.map((s,o)=>a[(t+o)%a.length])}function vs(a,t,s){const i=t.length>1&&Array.from(t).every(v=>v===t[0])?t[0]:t,r=s?a.indexOf(s):-1;let n=ms(a,Math.max(r,0));i.length===1&&(n=n.filter(v=>v!==s));const f=n.find(v=>v.toLowerCase().startsWith(i.toLowerCase()));return f!==s?f:void 0}var hs=D({inheritAttrs:!1,__name:"VisuallyHiddenInputBubble",props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:"fully-hidden"}},setup(a){const t=a,{primitiveElement:s,currentElement:o}=qe(),i=O(()=>t.checked??t.value);return ne(i,(r,n)=>{if(!o.value)return;const l=o.value,f=window.HTMLInputElement.prototype,y=Object.getOwnPropertyDescriptor(f,"value").set;if(y&&r!==n){const d=new Event("input",{bubbles:!0}),_=new Event("change",{bubbles:!0});y.call(l,r),l.dispatchEvent(d),l.dispatchEvent(_)}}),(r,n)=>(u(),g(Tt,q({ref_key:"primitiveElement",ref:s},{...t,...r.$attrs},{as:"input"}),null,16))}}),Ne=hs,gs=D({inheritAttrs:!1,__name:"VisuallyHiddenInput",props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:"fully-hidden"}},setup(a){const t=a,s=O(()=>typeof t.value=="object"&&Array.isArray(t.value)&&t.value.length===0&&t.required),o=O(()=>typeof t.value=="string"||typeof t.value=="number"||typeof t.value=="boolean"||t.value===null||t.value===void 0?[{name:t.name,value:t.value}]:typeof t.value=="object"&&Array.isArray(t.value)?t.value.flatMap((i,r)=>typeof i=="object"?Object.entries(i).map(([n,l])=>({name:`${t.name}[${r}][${n}]`,value:l})):{name:`${t.name}[${r}]`,value:i}):t.value!==null&&typeof t.value=="object"&&!Array.isArray(t.value)?Object.entries(t.value).map(([i,r])=>({name:`${t.name}[${i}]`,value:r})):[]);return(i,r)=>(u(),S(te,null,[U(" We render single input if it's required "),s.value?(u(),g(Ne,q({key:i.name},{...t,...i.$attrs},{name:i.name,value:i.value}),null,16,["name","value"])):(u(!0),S(te,{key:1},se(o.value,n=>(u(),g(Ne,q({key:n.name},{ref_for:!0},{...t,...i.$attrs},{name:n.name,value:n.value}),null,16,["name","value"]))),128))],2112))}}),ys=gs;function _s(a,t,s){return a===void 0?!1:Array.isArray(a)?a.some(o=>_e(o,t,s)):_e(a,t,s)}function _e(a,t,s){return a===void 0||t===void 0?!1:typeof a=="string"?a===t:typeof s=="function"?s(a,t):typeof s=="string"?a?.[s]===t?.[s]:Fe(a,t)}const[Ke,bs]=we("ListboxRoot");var xs=D({__name:"ListboxRoot",props:{modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},multiple:{type:Boolean,required:!1},orientation:{type:String,required:!1,default:"vertical"},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},selectionBehavior:{type:String,required:!1,default:"toggle"},highlightOnHover:{type:Boolean,required:!1},by:{type:[String,Function],required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","highlight","entryFocus","leave"],setup(a,{expose:t,emit:s}){const o=a,i=s,{multiple:r,highlightOnHover:n,orientation:l,disabled:f,selectionBehavior:v,dir:y}=xt(o),{getItems:d}=je({isProvider:!0}),{handleTypeaheadSearch:_}=fs(),{primitiveElement:A,currentElement:w}=qe(),T=ps(),F=Ft(y),b=cs(w),M=C(),R=C(!1),j=C(!0),B=Ze(o,"modelValue",i,{defaultValue:o.defaultValue??(r.value?[]:void 0),passive:o.modelValue===void 0,deep:!0});function ae(h){if(R.value=!0,o.multiple){const k=Array.isArray(B.value)?[...B.value]:[],E=k.findIndex(H=>_e(H,h,o.by));o.selectionBehavior==="toggle"?(E===-1?k.push(h):k.splice(E,1),B.value=k):(B.value=[h],M.value=h)}else o.selectionBehavior==="toggle"&&_e(B.value,h,o.by)?B.value=void 0:B.value=h;setTimeout(()=>{R.value=!1},1)}const K=C(null),oe=C(null),ee=C(!1),G=C(!1),X=Ae(),W=Ae(),Y=Ae();function $(){return d().map(h=>h.ref).filter(h=>h.dataset.disabled!=="")}function I(h,k=!0){if(!h)return;K.value=h,j.value&&K.value.focus(),k&&K.value.scrollIntoView({block:"nearest"});const E=d().find(H=>H.ref===h);i("highlight",E)}function N(h){if(ee.value)Y.trigger(h);else{const k=d().find(E=>_e(E.value,h,o.by));k&&(K.value=k.ref,I(k.ref))}}function ue(h){K.value&&K.value.isConnected&&(h.preventDefault(),h.stopPropagation(),G.value||K.value.click())}function V(h){if(j.value){if(R.value=!0,ee.value)W.trigger(h);else{const k=h.altKey||h.ctrlKey||h.metaKey;if(k&&h.key==="a"&&r.value){const E=d(),H=E.map(ce=>ce.value);B.value=[...H],h.preventDefault(),I(E[E.length-1].ref)}else if(!k){const E=_(h.key,d());E&&I(E)}}setTimeout(()=>{R.value=!1},1)}}function x(){G.value=!0}function P(){fe(()=>{G.value=!1})}function de(){fe(()=>{const h=new KeyboardEvent("keydown",{key:"PageUp"});He(h)})}function De(h){const k=K.value;k?.isConnected&&(oe.value=k),K.value=null,i("leave",h)}function gt(h){const k=new CustomEvent("listbox.entryFocus",{bubbles:!1,cancelable:!0});if(h.currentTarget?.dispatchEvent(k),i("entryFocus",k),!k.defaultPrevented)if(oe.value)I(oe.value);else{const E=$()?.[0];I(E)}}function He(h){const k=os(h,l.value,F.value);if(!k)return;let E=$();if(K.value){if(k==="last")E.reverse();else if(k==="prev"||k==="next"){k==="prev"&&E.reverse();const H=E.indexOf(K.value);E=E.slice(H+1)}yt(h,E[0])}if(E.length){const H=!K.value&&k==="prev"?E.length-1:0;I(E[H])}if(ee.value)return W.trigger(h)}function yt(h,k){if(!(ee.value||o.selectionBehavior!=="replace"||!r.value||!Array.isArray(B.value)||(h.altKey||h.ctrlKey||h.metaKey)&&!h.shiftKey)&&h.shiftKey){const H=d().filter(ge=>ge.ref.dataset.disabled!=="");let ce=H.find(ge=>ge.ref===k)?.value;if(h.key===T.END?ce=H[H.length-1].value:h.key===T.HOME&&(ce=H[0].value),!ce||!M.value)return;const _t=us(H.map(ge=>ge.value),M.value,ce);B.value=_t}}async function Ue(h){if(await fe(),ee.value)X.trigger(h);else{const k=$(),E=k.find(H=>H.dataset.state==="checked");E?I(E):k.length&&I(k[0])}}return ne(B,()=>{R.value||fe(()=>{Ue()})},{immediate:!0,deep:!0}),t({highlightedElement:K,highlightItem:N,highlightFirstItem:de,highlightSelected:Ue,getItems:d}),bs({modelValue:B,onValueChange:ae,multiple:r,orientation:l,dir:F,disabled:f,highlightOnHover:n,highlightedElement:K,isVirtual:ee,virtualFocusHook:X,virtualKeydownHook:W,virtualHighlightHook:Y,by:o.by,firstValue:M,selectionBehavior:v,focusable:j,onLeave:De,onEnter:gt,changeHighlight:I,onKeydownEnter:ue,onKeydownNavigation:He,onKeydownTypeAhead:V,onCompositionStart:x,onCompositionEnd:P,highlightFirstItem:de}),(h,k)=>(u(),g(e(ie),{ref_key:"primitiveElement",ref:A,as:h.as,"as-child":h.asChild,dir:e(F),"data-disabled":e(f)?"":void 0,onPointerleave:De,onFocusout:k[0]||(k[0]=async E=>{const H=E.relatedTarget||E.target;await fe(),K.value&&e(w)&&!e(w).contains(H)&&De(E)})},{default:p(()=>[L(h.$slots,"default",{modelValue:e(B)}),e(b)&&h.name?(u(),g(e(ys),{key:0,name:h.name,value:e(B),disabled:e(f),required:h.required},null,8,["name","value","disabled","required"])):U("v-if",!0)]),_:3},8,["as","as-child","dir","data-disabled"]))}}),ws=xs,Cs=D({__name:"ListboxContent",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(a){const{CollectionSlot:t}=je(),s=Ke(),o=Ye(!1,10);return(i,r)=>(u(),g(e(t),null,{default:p(()=>[m(e(ie),{role:"listbox",as:i.as,"as-child":i.asChild,tabindex:e(s).focusable.value?e(s).highlightedElement.value?"-1":"0":"-1","aria-orientation":e(s).orientation.value,"aria-multiselectable":!!e(s).multiple.value,"data-orientation":e(s).orientation.value,onMousedown:r[0]||(r[0]=ke(n=>o.value=!0,["left"])),onFocus:r[1]||(r[1]=n=>{e(o)||e(s).onEnter(n)}),onKeydown:[r[2]||(r[2]=be(n=>{e(s).orientation.value==="vertical"&&(n.key==="ArrowLeft"||n.key==="ArrowRight")||e(s).orientation.value==="horizontal"&&(n.key==="ArrowUp"||n.key==="ArrowDown")||(n.preventDefault(),e(s).focusable.value&&e(s).onKeydownNavigation(n))},["down","up","left","right","home","end"])),be(e(s).onKeydownEnter,["enter"]),e(s).onKeydownTypeAhead]},{default:p(()=>[L(i.$slots,"default")]),_:3},8,["as","as-child","tabindex","aria-orientation","aria-multiselectable","data-orientation","onKeydown"])]),_:3}))}}),ks=Cs,Ss=D({__name:"ListboxFilter",props:{modelValue:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"input"}},emits:["update:modelValue"],setup(a,{emit:t}){const s=a,i=Ze(s,"modelValue",t,{defaultValue:"",passive:s.modelValue===void 0}),r=Ke(),{primitiveElement:n,currentElement:l}=qe(),f=O(()=>s.disabled||r.disabled.value||!1),v=C();return wt(()=>v.value=r.highlightedElement.value?.id),re(()=>{r.focusable.value=!1,setTimeout(()=>{s.autoFocus&&l.value?.focus()},1)}),ve(()=>{r.focusable.value=!0}),(y,d)=>(u(),g(e(ie),{ref_key:"primitiveElement",ref:n,as:y.as,"as-child":y.asChild,value:e(i),disabled:f.value?"":void 0,"data-disabled":f.value?"":void 0,"aria-disabled":f.value??void 0,"aria-activedescendant":v.value,type:"text",onKeydown:[be(ke(e(r).onKeydownNavigation,["prevent"]),["down","up","home","end"]),be(e(r).onKeydownEnter,["enter"])],onInput:d[0]||(d[0]=_=>{i.value=_.target.value,e(r).highlightFirstItem()}),onCompositionstart:e(r).onCompositionStart,onCompositionend:e(r).onCompositionEnd},{default:p(()=>[L(y.$slots,"default",{modelValue:e(i)})]),_:3},8,["as","as-child","value","disabled","data-disabled","aria-disabled","aria-activedescendant","onKeydown","onCompositionstart","onCompositionend"]))}}),$s=Ss;const[Es,Rs]=we("ListboxGroup");var Ds=D({__name:"ListboxGroup",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(a){const t=a,s=$e(void 0,"reka-listbox-group");return Rs({id:s}),(o,i)=>(u(),g(e(ie),q({role:"group"},t,{"aria-labelledby":e(s)}),{default:p(()=>[L(o.$slots,"default")]),_:3},16,["aria-labelledby"]))}}),As=Ds,Bs=D({__name:"ListboxGroupLabel",props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(a){const t=a,s=Es({id:""});return(o,i)=>(u(),g(e(ie),q(t,{id:e(s).id}),{default:p(()=>[L(o.$slots,"default")]),_:3},16,["id"]))}}),Is=Bs;const Ps="listbox.select",[Oo,Ts]=we("ListboxItem");var Fs=D({__name:"ListboxItem",props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},emits:["select"],setup(a,{emit:t}){const s=a,o=t,i=$e(void 0,"reka-listbox-item"),{CollectionItem:r}=je(),{forwardRef:n,currentElement:l}=Ot(),f=Ke(),v=O(()=>l.value===f.highlightedElement.value),y=O(()=>_s(f.modelValue.value,s.value,f.by)),d=O(()=>f.disabled.value||s.disabled);async function _(w){o("select",w),!w?.defaultPrevented&&!d.value&&w&&(f.onValueChange(s.value),f.changeHighlight(l.value))}function A(w){const T={originalEvent:w,value:s.value};Lt(Ps,_,T)}return Ts({isSelected:y}),(w,T)=>(u(),g(e(r),{value:w.value},{default:p(()=>[Ct([v.value,y.value],()=>m(e(ie),q({id:e(i)},w.$attrs,{ref:e(n),role:"option",tabindex:e(f).focusable.value?v.value?"0":"-1":-1,"aria-selected":y.value,as:w.as,"as-child":w.asChild,disabled:d.value?"":void 0,"data-disabled":d.value?"":void 0,"data-highlighted":v.value?"":void 0,"data-state":y.value?"checked":"unchecked",onClick:A,onKeydown:be(ke(A,["prevent"]),["space"]),onPointermove:T[0]||(T[0]=()=>{e(f).highlightedElement.value!==e(l)&&e(f).highlightOnHover.value&&!e(f).focusable.value&&e(f).changeHighlight(e(l),!1)})}),{default:p(()=>[L(w.$slots,"default")]),_:3},16,["id","tabindex","aria-selected","as","as-child","disabled","data-disabled","data-highlighted","data-state","onKeydown"]),T,1)]),_:3},8,["value"]))}}),Os=Fs;const Ls={class:"flex items-center gap-2 truncate"},Ms={class:"truncate"},Vs={key:0,class:"absolute top-full right-0 z-[9999] mt-1 w-[280px] rounded-md border bg-popover p-1 text-popover-foreground shadow-md"},zs={class:"max-h-[200px] overflow-y-auto"},qs=["aria-selected","onClick"],js={class:"flex flex-1 flex-col gap-0.5 overflow-hidden text-left"},Ks={class:"truncate font-medium"},Hs={class:"truncate text-xs text-muted-foreground"},Us=["onClick"],Ns={key:1,class:"px-2 py-1.5 text-sm text-muted-foreground"},Gs={key:2,class:"my-1 h-px bg-border"},Ws={class:"space-y-2"},Js={class:"flex gap-2"},Qs={key:0,class:"text-sm text-destructive"},Xs={key:0,class:"space-y-2 rounded-md border p-3"},Ys={class:"flex items-center gap-2 text-sm"},Zs=["disabled"],ea={class:"flex-1 truncate font-mono text-xs text-muted-foreground"},ta={class:"max-h-[200px] overflow-y-auto"},sa={key:0,class:"py-2 text-center text-sm text-muted-foreground"},aa={key:1,class:"py-2 text-center text-sm text-muted-foreground"},oa=["onClick"],na={class:"truncate"},la={key:0},ra={key:1},ia=D({__name:"RepoSelector",setup(a,{expose:t}){const s=Qe(),o=Me(),{repos:i,currentRepo:r,currentRepoId:n,selectRepo:l,addRepo:f,removeRepo:v}=Se(),{showSuccess:y}=et(),d=C(!1),_=C(""),A=C(null);Bt(A,()=>{d.value&&(d.value=!1,_.value="")}),ne(()=>o.fullPath,()=>{d.value=!1,_.value=""});async function w(V){l(V),d.value=!1,_.value="";try{const P=(await $fetch(`/api/repos/${V}/prds`))?.[0];P?s.push(`/${V}/${P.slug}`):s.push("/")}catch{s.push("/")}}function T(){d.value=!1,G.value=!0}const F=C(!1),b=C(""),M=C(""),R=C([]),j=C(!1),B=O(()=>!!M.value&&M.value!==b.value);async function ae(V){j.value=!0;try{const x=await $fetch("/api/browse",{query:{path:V||b.value||void 0}});b.value=x.current,M.value=x.parent,R.value=x.directories}catch{}finally{j.value=!1}}function K(){F.value=!0,ae(X.value||void 0)}function oe(V){X.value=V,F.value=!1,W.value=null}function ee(){B.value&&ae(M.value)}const G=C(!1),X=C(""),W=C(null),Y=C(!1),$=O(()=>{if(!_.value)return i.value;const V=_.value.toLowerCase();return i.value?.filter(x=>x.name.toLowerCase().includes(V)||x.path.toLowerCase().includes(V))??[]});async function I(){if(!X.value.trim()){W.value="Please enter a repository path";return}Y.value=!0,W.value=null;try{const V=await f(X.value.trim());if(G.value=!1,X.value="",y("Repository added",V?.name||"Successfully added repository"),V?.id)try{const P=(await $fetch(`/api/repos/${V.id}/prds`))?.[0];P&&s.push(`/${V.id}/${P.slug}`)}catch{}}catch(V){if(V instanceof Error){const x=V;W.value=x.data?.message||V.message}else W.value="Failed to add repository"}finally{Y.value=!1}}async function N(V,x){V.stopPropagation(),await v(x)}function ue(){G.value=!1,X.value="",W.value=null}return t({openAddDialog:()=>{G.value=!0}}),(V,x)=>(u(),S("div",{ref_key:"dropdownRef",ref:A,class:"relative"},[c("button",{type:"button",class:"inline-flex h-8 w-[200px] items-center justify-between gap-2 rounded-md border border-input bg-background px-3 text-sm font-normal ring-offset-background transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",onClick:x[0]||(x[0]=P=>d.value=!e(d))},[c("span",Ls,[m(e(ss),{class:"size-4 shrink-0 text-muted-foreground"}),c("span",Ms,z(e(r)?.name??"Select repository"),1)]),m(e(Mt),{class:"size-4 shrink-0 opacity-50"})]),e(d)?(u(),S("div",Vs,[kt(c("input",{"onUpdate:modelValue":x[1]||(x[1]=P=>ye(_)?_.value=P:null),type:"text",placeholder:"Search repositories...",class:"mb-1 h-9 w-full rounded-md border border-input bg-background px-3 text-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"},null,512),[[St,e(_)]]),c("div",zs,[e($)?.length?(u(!0),S(te,{key:0},se(e($),P=>(u(),S("div",{key:P.id,class:"group flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-sm hover:bg-accent hover:text-accent-foreground cursor-pointer",role:"option","aria-selected":e(n)===P.id,onClick:de=>w(P.id)},[m(e(tt),{class:le(["size-4 shrink-0",e(n)===P.id?"opacity-100":"opacity-0"])},null,8,["class"]),c("div",js,[c("span",Ks,z(P.name),1),c("span",Hs,z(P.path),1)]),c("button",{type:"button",class:"ml-auto opacity-0 group-hover:opacity-100 p-1 hover:bg-destructive/10 rounded transition-opacity",title:"Remove repository",onClick:de=>N(de,P.id)},[m(e(is),{class:"size-3.5 text-destructive"})],8,Us)],8,qs))),128)):(u(),S("div",Ns," No repositories found. ")),e($)?.length?(u(),S("div",Gs)):U("",!0),c("button",{type:"button",class:"flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-sm text-muted-foreground hover:bg-accent hover:text-accent-foreground",onClick:T},[m(e(Vt),{class:"size-4"}),x[5]||(x[5]=c("span",null,"Add repository...",-1))])])])):U("",!0),m(e(zt),{open:e(G),"onUpdate:open":x[4]||(x[4]=P=>G.value=P)},{default:p(()=>[m(e(qt),{side:"right",class:"flex h-full flex-col",onEscapeKeyDown:ue},{default:p(()=>[m(e(jt),{class:"px-6"},{default:p(()=>[m(e(Kt),null,{default:p(()=>[...x[6]||(x[6]=[J("Add Repository",-1)])]),_:1}),m(e(Ht),null,{default:p(()=>[...x[7]||(x[7]=[J(" Enter the absolute path to a repository containing PRD documents. ",-1)])]),_:1})]),_:1}),c("form",{id:"add-repo-form",class:"min-h-0 flex-1 space-y-4 overflow-y-auto px-6",onSubmit:ke(I,["prevent"])},[c("div",Ws,[x[8]||(x[8]=c("label",{for:"repo-path",class:"text-sm font-medium"}," Repository Path ",-1)),c("div",Js,[m(e(as),{id:"repo-path",modelValue:e(X),"onUpdate:modelValue":x[2]||(x[2]=P=>ye(X)?X.value=P:null),placeholder:"/path/to/your/project","aria-invalid":!!e(W),disabled:e(Y),class:"flex-1"},null,8,["modelValue","aria-invalid","disabled"]),m(e(me),{type:"button",variant:"outline",size:"icon",disabled:e(Y),onClick:K},{default:p(()=>[m(e(Le),{class:"size-4"})]),_:1},8,["disabled"])]),e(W)?(u(),S("p",Qs,z(e(W)),1)):U("",!0),x[9]||(x[9]=c("p",{class:"text-xs text-muted-foreground"},[J(" The repository should contain a "),c("code",{class:"rounded bg-muted px-1"},"docs/prd/"),J(" directory with markdown files. ")],-1))]),e(F)?(u(),S("div",Xs,[c("div",Ys,[c("button",{type:"button",class:"inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-xs text-muted-foreground hover:bg-accent hover:text-foreground disabled:pointer-events-none disabled:opacity-50",disabled:!e(B),onClick:ee},[m(e(ns),{class:"size-3"}),x[10]||(x[10]=J(" Up ",-1))],8,Zs),c("span",ea,z(e(b)),1),m(e(me),{type:"button",variant:"ghost",size:"sm",class:"h-7 text-xs",onClick:x[3]||(x[3]=P=>oe(e(b)))},{default:p(()=>[...x[11]||(x[11]=[J(" Select ",-1)])]),_:1})]),c("div",ta,[e(j)?(u(),S("div",sa," Loading... ")):e(R).length?(u(!0),S(te,{key:2},se(e(R),P=>(u(),S("button",{key:P.path,type:"button",class:"flex w-full items-center gap-2 rounded px-2 py-1 text-sm hover:bg-accent",onClick:de=>ae(P.path)},[m(e(Le),{class:"size-4 text-muted-foreground"}),c("span",na,z(P.name),1)],8,oa))),128)):(u(),S("div",aa," No subdirectories "))])])):U("",!0)],32),m(e(Ut),{class:"px-6 pb-6"},{default:p(()=>[m(e(me),{type:"button",variant:"outline",disabled:e(Y),onClick:ue},{default:p(()=>[...x[12]||(x[12]=[J(" Cancel ",-1)])]),_:1},8,["disabled"]),m(e(me),{type:"submit",form:"add-repo-form",disabled:e(Y)},{default:p(()=>[e(Y)?(u(),S("span",la,"Adding...")):(u(),S("span",ra,"Add Repository"))]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["open"])],512))}}),ua=Object.assign(ia,{__name:"LayoutRepoSelector"}),da={class:"flex h-full w-64 flex-col border-r border-border bg-background"},ca={class:"p-2"},pa={key:1,class:"flex items-center justify-center py-8"},fa={key:2,class:"px-2 py-8 text-center"},ma={key:3,class:"px-2 py-8 text-center"},va={key:4,class:"px-2 py-8 text-center"},ha={key:5,class:"space-y-1"},ga={class:"flex-1 truncate"},ya=D({__name:"Sidebar",setup(a){const t=Me(),{prds:s,prdsStatus:o,refreshPrds:i}=Ve(),{currentRepoId:r}=Se(),n=O(()=>t.params.prd);function l(y){return n.value===y}const f=O(()=>r.value?`/${r.value}/repo-graph`:"/"),v=O(()=>r.value?t.path===`/${r.value}/repo-graph`:!1);return(y,d)=>{const _=ls;return u(),S("aside",da,[m(e(Nt),{class:"flex-1"},{default:p(()=>[c("div",ca,[e(r)?(u(),g(_,{key:0,to:e(f),class:le(["group mb-2 flex items-center gap-3 rounded-md px-3 py-2 text-sm transition-colors",[e(v)?"bg-accent text-accent-foreground":"text-muted-foreground hover:bg-accent/50 hover:text-foreground"]])},{default:p(()=>[m(e(st),{class:"size-4 shrink-0"}),d[0]||(d[0]=c("span",{class:"flex-1 truncate"},"Repo Graph",-1))]),_:1},8,["to","class"])):U("",!0),d[6]||(d[6]=c("h2",{class:"flex h-10 items-center px-2 text-sm font-medium text-muted-foreground"},"Documents",-1)),e(o)==="pending"?(u(),S("div",pa,[m(e(Gt),{class:"size-5 animate-spin text-muted-foreground"})])):e(r)?e(o)==="error"?(u(),S("div",ma,[m(e(Wt),{class:"mx-auto size-8 text-destructive/50"}),d[3]||(d[3]=c("p",{class:"mt-2 text-sm text-muted-foreground"}," Failed to load PRDs ",-1)),m(e(me),{variant:"ghost",size:"sm",class:"mt-2",onClick:e(i)},{default:p(()=>[m(e(at),{class:"mr-1 size-3"}),d[2]||(d[2]=J(" Retry ",-1))]),_:1},8,["onClick"])])):e(s)?.length?(u(),S("nav",ha,[(u(!0),S(te,null,se(e(s),A=>(u(),g(_,{key:A.slug,to:`/${e(r)}/${A.slug}`,class:le(["group flex items-center gap-3 rounded-md px-3 py-2 text-sm transition-colors",[l(A.slug)?"bg-accent text-accent-foreground":"text-muted-foreground hover:bg-accent/50 hover:text-foreground"]])},{default:p(()=>[m(e(Oe),{class:"size-4 shrink-0"}),c("span",ga,z(A.name),1),A.hasState&&A.taskCount?(u(),g(e(Jt),{key:0,variant:"secondary",class:"shrink-0 text-xs"},{default:p(()=>[J(z(A.completedCount??0)+"/"+z(A.taskCount),1)]),_:2},1024)):U("",!0)]),_:2},1032,["to","class"]))),128))])):(u(),S("div",va,[m(e(Oe),{class:"mx-auto size-8 text-muted-foreground/50"}),d[4]||(d[4]=c("p",{class:"mt-2 text-sm text-muted-foreground"}," No PRDs found ",-1)),d[5]||(d[5]=c("p",{class:"mt-1 text-xs text-muted-foreground/70"}," Add .md files to docs/prd/ ",-1))])):(u(),S("div",fa,[...d[1]||(d[1]=[c("p",{class:"text-sm text-muted-foreground"}," Select a repository to view PRDs ",-1)])]))])]),_:1})])}}}),_a=Object.assign(ya,{__name:"LayoutSidebar"}),ba=D({__name:"Command",props:{modelValue:{default:""},defaultValue:{},multiple:{type:Boolean},orientation:{},dir:{},disabled:{type:Boolean},selectionBehavior:{},highlightOnHover:{type:Boolean},by:{},asChild:{type:Boolean},as:{},name:{},required:{type:Boolean},class:{},defaultSearch:{default:""}},emits:["update:modelValue","highlight","entryFocus","leave"],setup(a,{emit:t}){const s=a,o=t,i=Z(s,"class"),r=he(i,o),n=C(new Map),l=C(new Map),{contains:f}=ds({sensitivity:"base"}),v=$t({search:s.defaultSearch||"",filtered:{count:0,items:new Map,groups:new Set}});ne(()=>s.defaultSearch,d=>{d!==void 0&&(v.search=d)});function y(){if(!v.search){v.filtered.count=n.value.size;return}v.filtered.groups=new Set;let d=0;for(const[_,A]of n.value){const w=f(A,v.search);v.filtered.items.set(_,w?1:0),w&&d++}for(const[_,A]of l.value)for(const w of A)if(v.filtered.items.get(w)>0){v.filtered.groups.add(_);break}v.filtered.count=d}return ne(()=>v.search,()=>{y()}),ne(()=>n.value.size,()=>{v.search&&y()}),Ga({allItems:n,allGroups:l,filterState:v}),(d,_)=>(u(),g(e(ws),q({"data-slot":"command"},e(r),{class:e(Q)("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",s.class)}),{default:p(()=>[L(d.$slots,"default")]),_:3},16,["class"]))}}),xa=Object.assign(ba,{__name:"UiCommand"}),wa=D({__name:"Dialog",props:{open:{type:Boolean},defaultOpen:{type:Boolean},modal:{type:Boolean}},emits:["update:open"],setup(a,{emit:t}){const i=he(a,t);return(r,n)=>(u(),g(e(Qt),q({"data-slot":"dialog"},e(i)),{default:p(l=>[L(r.$slots,"default",Ie(Pe(l)))]),_:3},16))}}),ct=Object.assign(wa,{__name:"UiDialog"}),Ca=D({__name:"DialogClose",props:{asChild:{type:Boolean},as:{}},setup(a){const t=a;return(s,o)=>(u(),g(e(ze),q({"data-slot":"dialog-close"},t),{default:p(()=>[L(s.$slots,"default")]),_:3},16))}});Object.assign(Ca,{__name:"UiDialogClose"});const ka=D({__name:"DialogOverlay",props:{forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(a){const t=a,s=Z(t,"class");return(o,i)=>(u(),g(e(ot),q({"data-slot":"dialog-overlay"},e(s),{class:e(Q)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80",t.class)}),{default:p(()=>[L(o.$slots,"default")]),_:3},16,["class"]))}}),Sa=Object.assign(ka,{__name:"UiDialogOverlay"}),$a=D({inheritAttrs:!1,__name:"DialogContent",props:{forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{},class:{},showCloseButton:{type:Boolean,default:!0}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(a,{emit:t}){const s=a,o=t,i=Z(s,"class"),r=he(i,o);return(n,l)=>(u(),g(e(nt),null,{default:p(()=>[m(Sa),m(e(lt),q({"data-slot":"dialog-content"},{...n.$attrs,...e(r)},{class:e(Q)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",s.class)}),{default:p(()=>[L(n.$slots,"default"),a.showCloseButton?(u(),g(e(ze),{key:0,"data-slot":"dialog-close",class:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4"},{default:p(()=>[m(e(rt)),l[0]||(l[0]=c("span",{class:"sr-only"},"Close",-1))]),_:1})):U("",!0)]),_:3},16,["class"])]),_:3}))}}),pt=Object.assign($a,{__name:"UiDialogContent"}),Ea=D({__name:"DialogDescription",props:{asChild:{type:Boolean},as:{},class:{}},setup(a){const t=a,s=Z(t,"class"),o=Ee(s);return(i,r)=>(u(),g(e(Xt),q({"data-slot":"dialog-description"},e(o),{class:e(Q)("text-muted-foreground text-sm",t.class)}),{default:p(()=>[L(i.$slots,"default")]),_:3},16,["class"]))}}),ft=Object.assign(Ea,{__name:"UiDialogDescription"}),Ra=D({__name:"DialogFooter",props:{class:{}},setup(a){const t=a;return(s,o)=>(u(),S("div",{"data-slot":"dialog-footer",class:le(e(Q)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",t.class))},[L(s.$slots,"default")],2))}});Object.assign(Ra,{__name:"UiDialogFooter"});const Da=D({__name:"DialogHeader",props:{class:{}},setup(a){const t=a;return(s,o)=>(u(),S("div",{"data-slot":"dialog-header",class:le(e(Q)("flex flex-col gap-2 text-center sm:text-left",t.class))},[L(s.$slots,"default")],2))}}),mt=Object.assign(Da,{__name:"UiDialogHeader"}),Aa=D({inheritAttrs:!1,__name:"DialogScrollContent",props:{forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(a,{emit:t}){const s=a,o=t,i=Z(s,"class"),r=he(i,o);return(n,l)=>(u(),g(e(nt),null,{default:p(()=>[m(e(ot),{class:"fixed inset-0 z-50 grid place-items-center overflow-y-auto bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0"},{default:p(()=>[m(e(lt),q({class:e(Q)("relative z-50 grid w-full max-w-lg my-8 gap-4 border border-border bg-background p-6 shadow-lg duration-200 sm:rounded-lg md:w-full",s.class)},{...n.$attrs,...e(r)},{onPointerDownOutside:l[0]||(l[0]=f=>{const v=f.detail.originalEvent,y=v.target;(v.offsetX>y.clientWidth||v.offsetY>y.clientHeight)&&f.preventDefault()})}),{default:p(()=>[L(n.$slots,"default"),m(e(ze),{class:"absolute top-4 right-4 p-0.5 transition-colors rounded-md hover:bg-secondary"},{default:p(()=>[m(e(rt),{class:"w-4 h-4"}),l[1]||(l[1]=c("span",{class:"sr-only"},"Close",-1))]),_:1})]),_:3},16,["class"])]),_:3})]),_:3}))}});Object.assign(Aa,{__name:"UiDialogScrollContent"});const Ba=D({__name:"DialogTitle",props:{asChild:{type:Boolean},as:{},class:{}},setup(a){const t=a,s=Z(t,"class"),o=Ee(s);return(i,r)=>(u(),g(e(Yt),q({"data-slot":"dialog-title"},e(o),{class:e(Q)("text-lg leading-none font-semibold",t.class)}),{default:p(()=>[L(i.$slots,"default")]),_:3},16,["class"]))}}),vt=Object.assign(Ba,{__name:"UiDialogTitle"}),Ia=D({__name:"DialogTrigger",props:{asChild:{type:Boolean},as:{}},setup(a){const t=a;return(s,o)=>(u(),g(e(Zt),q({"data-slot":"dialog-trigger"},t),{default:p(()=>[L(s.$slots,"default")]),_:3},16))}});Object.assign(Ia,{__name:"UiDialogTrigger"});const Pa=D({__name:"CommandDialog",props:{open:{type:Boolean},defaultOpen:{type:Boolean},modal:{type:Boolean},title:{default:"Command Palette"},description:{default:"Search for a command to run..."},defaultSearch:{default:""}},emits:["update:open"],setup(a,{emit:t}){const i=he(a,t);return(r,n)=>(u(),g(e(ct),Ie(Pe(e(i))),{default:p(l=>[m(e(pt),{class:"overflow-hidden p-0","show-close-button":!1},{default:p(()=>[m(e(mt),{class:"sr-only"},{default:p(()=>[m(e(vt),null,{default:p(()=>[J(z(a.title),1)]),_:1}),m(e(ft),null,{default:p(()=>[J(z(a.description),1)]),_:1})]),_:1}),m(xa,{"default-search":a.defaultSearch},{default:p(()=>[L(r.$slots,"default",Ie(Pe(l)))]),_:2},1032,["default-search"])]),_:2},1024)]),_:3},16))}}),Ta=Object.assign(Pa,{__name:"UiCommandDialog"}),Fa=D({__name:"CommandEmpty",props:{asChild:{type:Boolean},as:{},class:{}},setup(a){const t=a,s=Z(t,"class"),{filterState:o}=Re(),i=O(()=>!!o.search&&o.filtered.count===0);return(r,n)=>i.value?(u(),g(e(ie),q({key:0,"data-slot":"command-empty"},e(s),{class:e(Q)("py-6 text-center text-sm",t.class)}),{default:p(()=>[L(r.$slots,"default")]),_:3},16,["class"])):U("",!0)}}),Oa=Object.assign(Fa,{__name:"UiCommandEmpty"}),La=D({__name:"CommandGroup",props:{asChild:{type:Boolean},as:{},class:{},heading:{}},setup(a){const t=a,s=Z(t,"class"),{allGroups:o,filterState:i}=Re(),r=$e(),n=O(()=>i.search?i.filtered.groups.has(r):!0);return Ja({id:r}),re(()=>{o.value.has(r)||o.value.set(r,new Set)}),ve(()=>{o.value.delete(r)}),(l,f)=>(u(),g(e(As),q(e(s),{id:e(r),"data-slot":"command-group",class:e(Q)("text-foreground overflow-hidden p-1",t.class),hidden:n.value?void 0:!0}),{default:p(()=>[a.heading?(u(),g(e(Is),{key:0,"data-slot":"command-group-heading",class:"px-2 py-1.5 text-xs font-medium text-muted-foreground"},{default:p(()=>[J(z(a.heading),1)]),_:1})):U("",!0),L(l.$slots,"default")]),_:3},16,["id","class","hidden"]))}}),Be=Object.assign(La,{__name:"UiCommandGroup"}),Ma={"data-slot":"command-input-wrapper",class:"flex h-9 items-center gap-2 border-b px-3"},Va=D({inheritAttrs:!1,__name:"CommandInput",props:{modelValue:{},autoFocus:{type:Boolean},disabled:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(a){const t=a,s=Z(t,"class"),o=Ee(s),{filterState:i}=Re(),r=C(null);return re(()=>{fe(()=>{const n=r.value?.$el;if(n&&i.search){const l=i.search.length;n.setSelectionRange(l,l)}})}),(n,l)=>(u(),S("div",Ma,[m(e(rs),{class:"size-4 shrink-0 opacity-50"}),m(e($s),q({ref_key:"inputRef",ref:r},{...e(o),...n.$attrs},{modelValue:e(i).search,"onUpdate:modelValue":l[0]||(l[0]=f=>e(i).search=f),"data-slot":"command-input","auto-focus":"",class:e(Q)("placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50",t.class)}),null,16,["modelValue","class"])]))}}),za=Object.assign(Va,{__name:"UiCommandInput"}),qa=D({__name:"CommandItem",props:{value:{},disabled:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:["select"],setup(a,{emit:t}){const s=a,o=t,i=Z(s,"class"),r=he(i,o),n=$e(),{filterState:l,allItems:f,allGroups:v}=Re(),y=Wa(),d=O(()=>{if(l.search){const w=l.filtered.items.get(n);return w===void 0?!0:w>0}else return!0}),_=C(),A=It(_);return re(()=>{if(!(A.value instanceof HTMLElement))return;f.value.set(n,A.value.textContent??s.value?.toString()??"");const w=y?.id;w&&(v.value.has(w)?v.value.get(w)?.add(n):v.value.set(w,new Set([n])))}),ve(()=>{f.value.delete(n)}),(w,T)=>d.value?(u(),g(e(Os),q({key:0},e(r),{id:e(n),ref_key:"itemRef",ref:_,"data-slot":"command-item",class:e(Q)("data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",s.class),onSelect:T[0]||(T[0]=()=>{e(l).search=""})}),{default:p(()=>[L(w.$slots,"default")]),_:3},16,["id","class"])):U("",!0)}}),pe=Object.assign(qa,{__name:"UiCommandItem"}),ja={role:"presentation"},Ka=D({__name:"CommandList",props:{asChild:{type:Boolean},as:{},class:{}},setup(a){const t=a,s=Z(t,"class"),o=Ee(s);return(i,r)=>(u(),g(e(ks),q({"data-slot":"command-list"},e(o),{class:e(Q)("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto scrollbar-none",t.class)}),{default:p(()=>[c("div",ja,[L(i.$slots,"default")])]),_:3},16,["class"]))}}),Ha=Object.assign(Ka,{__name:"UiCommandList"}),Ua=D({__name:"CommandSeparator",props:{orientation:{},decorative:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(a){const t=a,s=Z(t,"class");return(o,i)=>(u(),g(e(es),q({"data-slot":"command-separator"},e(s),{class:e(Q)("bg-border -mx-1 h-px",t.class)}),{default:p(()=>[L(o.$slots,"default")]),_:3},16,["class"]))}}),Ge=Object.assign(Ua,{__name:"UiCommandSeparator"}),Na=D({__name:"CommandShortcut",props:{class:{}},setup(a){const t=a;return(s,o)=>(u(),S("span",{"data-slot":"command-shortcut",class:le(e(Q)("text-muted-foreground ml-auto text-xs tracking-widest",t.class))},[L(s.$slots,"default")],2))}});Object.assign(Na,{__name:"UiCommandShortcut"});const[Re,Ga]=we("Command"),[Wa,Ja]=we("CommandGroup"),Qa={class:"flex-1"},Xa={class:"flex-1"},Ya={class:"ml-auto flex items-center gap-1"},Za={class:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono text-[10px] text-muted-foreground"},eo={class:"flex-1"},to={class:"ml-auto flex items-center gap-1"},so={class:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono text-[10px] text-muted-foreground"},ao={class:"ml-auto flex items-center gap-1"},oo={class:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono text-[10px] text-muted-foreground"},no=D({__name:"CommandPalette",props:{open:{type:Boolean,default:!1},openModifiers:{},filter:{default:""},filterModifiers:{}},emits:Et(["openShortcutsHelp"],["update:open","update:filter"]),setup(a,{emit:t}){const s=Te(a,"open"),o=Te(a,"filter"),i=t,r=Qe(),{themeMode:n,cycleThemeMode:l}=Xe(),{prds:f}=Ve(),{repos:v,currentRepoId:y,selectRepo:d,refreshGitRepos:_}=Se(),{showSuccess:A,showError:w}=et(),T=["document","board","graph"],F={document:"Document",board:"Task Board",graph:"Graph"},b=C("document");{const $=localStorage.getItem("prd-viewer-tab");($==="document"||$==="board"||$==="graph")&&(b.value=$)}function M($){$.key!=="prd-viewer-tab"||!$.newValue||($.newValue==="document"||$.newValue==="board"||$.newValue==="graph")&&(b.value=$.newValue)}re(()=>{window.addEventListener("storage",M)}),ve(()=>{window.removeEventListener("storage",M)});const R=O(()=>{const $=T.indexOf(b.value),I=$>=0?$:0;return T[(I+1)%T.length]}),j=O(()=>F[R.value]);function B($){y.value&&(r.push(`/${y.value}/${$}`),s.value=!1)}function ae($){d($),r.push("/"),s.value=!1}function K(){l(),s.value=!1}function oe(){const $=R.value;b.value=$,localStorage.setItem("prd-viewer-tab",$),window.dispatchEvent(new StorageEvent("storage",{key:"prd-viewer-tab",newValue:$})),s.value=!1}function ee(){s.value=!1,i("openShortcutsHelp")}const G=C(!1);async function X(){if(!(!y.value||G.value)){G.value=!0,s.value=!1;try{const $=await _(y.value);A(`Discovered ${$.discovered} git repositories`)}catch{w("Failed to refresh git repos")}finally{G.value=!1}}}ne(s,$=>{$||(o.value="")});const W=O(()=>navigator.platform.toUpperCase().indexOf("MAC")>=0),Y=O(()=>W.value?"⌘":"Ctrl");return($,I)=>(u(),g(e(Ta),{open:s.value,"onUpdate:open":I[0]||(I[0]=N=>s.value=N),"default-search":o.value},{default:p(()=>[m(e(za),{placeholder:"Type a command or search..."}),m(e(Ha),null,{default:p(()=>[m(e(Oa),null,{default:p(()=>[...I[1]||(I[1]=[J("No results found.",-1)])]),_:1}),e(f)?.length?(u(),g(e(Be),{key:0,heading:"Documents"},{default:p(()=>[(u(!0),S(te,null,se(e(f),N=>(u(),g(e(pe),{key:N.slug,value:`PRD: ${N.name}`,onSelect:ue=>B(N.slug)},{default:p(()=>[m(e(Oe),{class:"size-4"}),c("span",null,z(N.name),1)]),_:2},1032,["value","onSelect"]))),128))]),_:1})):U("",!0),e(f)?.length&&e(v)?.length?(u(),g(e(Ge),{key:1})):U("",!0),e(v)?.length?(u(),g(e(Be),{key:2,heading:"Repositories"},{default:p(()=>[(u(!0),S(te,null,se(e(v),N=>(u(),g(e(pe),{key:N.id,value:`repo-${N.id} ${N.name}`,onSelect:ue=>ae(N.id)},{default:p(()=>[m(e(Le),{class:"size-4"}),c("span",Qa,z(N.name),1),N.id===e(y)?(u(),g(e(tt),{key:0,class:"size-4 text-primary"})):U("",!0)]),_:2},1032,["value","onSelect"]))),128))]),_:1})):U("",!0),e(v)?.length?(u(),g(e(Ge),{key:3})):U("",!0),m(e(Be),{heading:"Actions"},{default:p(()=>[m(e(pe),{value:"cycle-theme light dark system",onSelect:K},{default:p(()=>[e(n)==="system"?(u(),g(e(it),{key:0,class:"size-4"})):e(n)==="light"?(u(),g(e(dt),{key:1,class:"size-4"})):(u(),g(e(ut),{key:2,class:"size-4"})),c("span",Xa,"Cycle theme mode ("+z(e(n))+")",1),c("div",Ya,[c("kbd",Za,z(e(Y)),1),I[2]||(I[2]=c("kbd",{class:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono text-[10px] text-muted-foreground"},".",-1))])]),_:1}),m(e(pe),{value:`switch-tab ${e(j).toLowerCase()}`,onSelect:oe},{default:p(()=>[m(e(st),{class:"size-4"}),c("span",eo,"Switch to "+z(e(j)),1),c("div",to,[c("kbd",so,z(e(Y)),1),I[3]||(I[3]=c("kbd",{class:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono text-[10px] text-muted-foreground"},"\\",-1))])]),_:1},8,["value"]),m(e(pe),{value:"keyboard shortcuts help",onSelect:ee},{default:p(()=>[m(e(ts),{class:"size-4"}),I[5]||(I[5]=c("span",{class:"flex-1"},"Keyboard shortcuts",-1)),c("div",ao,[c("kbd",oo,z(e(Y)),1),I[4]||(I[4]=c("kbd",{class:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono text-[10px] text-muted-foreground"},"/",-1))])]),_:1}),e(y)?(u(),g(e(pe),{key:0,value:"refresh git repos rescan discover",disabled:e(G),onSelect:X},{default:p(()=>[m(e(at),{class:le(["size-4",{"animate-spin":e(G)}])},null,8,["class"]),I[6]||(I[6]=c("span",{class:"flex-1"},"Refresh git repos",-1))]),_:1},8,["disabled"])):U("",!0)]),_:1})]),_:1})]),_:1},8,["open","default-search"]))}}),lo=Object.assign(no,{__name:"CommandPalette"}),ro={class:"space-y-6"},io={class:"mb-3 text-sm font-medium text-muted-foreground"},uo={class:"space-y-2"},co={class:"text-sm"},po={class:"flex items-center gap-1"},fo=D({__name:"ShortcutsHelp",props:{open:{type:Boolean,default:!1},openModifiers:{}},emits:["update:open"],setup(a){const t=Te(a,"open"),s=O(()=>navigator.platform.toUpperCase().indexOf("MAC")>=0),o=O(()=>s.value?"⌘":"Ctrl"),i=O(()=>[{name:"Navigation",shortcuts:[{keys:[o.value,"K"],description:"Open command palette"},{keys:[o.value,"J"],description:"Quick jump to document"}]},{name:"Actions",shortcuts:[{keys:[o.value,"."],description:"Cycle theme mode (light/dark/system)"},{keys:[o.value,"\\"],description:"Cycle Document, Task Board, and Graph tabs"},{keys:[o.value,","],description:"Add repository"}]},{name:"Help",shortcuts:[{keys:[o.value,"/"],description:"Show this help"},{keys:["Esc"],description:"Close dialog or palette"}]}]);return(r,n)=>(u(),g(e(ct),{open:t.value,"onUpdate:open":n[0]||(n[0]=l=>t.value=l)},{default:p(()=>[m(e(pt),{class:"max-w-md"},{default:p(()=>[m(e(mt),null,{default:p(()=>[m(e(vt),null,{default:p(()=>[...n[1]||(n[1]=[J("Keyboard Shortcuts",-1)])]),_:1}),m(e(ft),null,{default:p(()=>[...n[2]||(n[2]=[J(" Quick reference for available keyboard shortcuts. ",-1)])]),_:1})]),_:1}),c("div",ro,[(u(!0),S(te,null,se(e(i),l=>(u(),S("div",{key:l.name},[c("h3",io,z(l.name),1),c("div",uo,[(u(!0),S(te,null,se(l.shortcuts,f=>(u(),S("div",{key:f.description,class:"flex items-center justify-between"},[c("span",co,z(f.description),1),c("div",po,[(u(!0),S(te,null,se(f.keys,(v,y)=>(u(),S("kbd",{key:y,class:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono text-xs font-medium text-muted-foreground"},z(v),1))),128))])]))),128))])]))),128))])]),_:1})]),_:1},8,["open"]))}}),mo=Object.assign(fo,{__name:"ShortcutsHelp"});function ht(){const a=document.activeElement;if(!a)return!1;const t=a.tagName.toLowerCase();return t==="input"||t==="textarea"||a.getAttribute("contenteditable")==="true"||a.getAttribute("role")==="textbox"}function vo(a){const t=a.toLowerCase().split("+"),s=t.pop()||"";return{meta:t.includes("meta"),ctrl:t.includes("ctrl"),shift:t.includes("shift"),alt:t.includes("alt"),key:s}}function ho(a,t){const s=a.key.toLowerCase();let o=s===t.key;return t.key==="\\"&&(o=s==="\\"||a.code==="Backslash"),t.key==="/"&&(o=s==="/"||a.code==="Slash"),t.key==="."&&(o=s==="."||a.code==="Period"),t.key===","&&(o=s===","||a.code==="Comma"),o&&a.metaKey===t.meta&&a.ctrlKey===t.ctrl&&a.shiftKey===t.shift&&a.altKey===t.alt}const Ce=[];let We=!1;function go(a){for(const t of Ce)if(ho(a,t.combo)){if(!t.allowInInput&&ht())continue;a.preventDefault(),a.stopPropagation(),t.handler();return}}function Je(){We||(document.addEventListener("keydown",go,{capture:!0}),We=!0)}function yo(){re(()=>{Je()});function a(s,o,i){const n={combo:vo(s),handler:o,allowInInput:i?.allowInInput??!1};Ce.push(n),Je(),ve(()=>{const l=Ce.indexOf(n);l>-1&&Ce.splice(l,1)})}function t(){return ht()}return{onShortcut:a,isInputFocused:t}}const _o=globalThis.setInterval,bo=2e3,xo=2e3;function wo(a){return!a.instanceId||!a.buildId?null:`${a.buildId}:${a.instanceId}`}function Co(a){const t=C(null),s=C(!1),o=C(null),i=C(null),r=C(null),n=C(null),l=C(!1),f=C(!1),v=C(!1);function y(){i.value&&(clearTimeout(i.value),i.value=null)}function d(){r.value&&(clearInterval(r.value),r.value=null)}async function _(){try{const R=await $fetch(`/api/runtime?_=${Date.now()}`);return wo(R)}catch{return null}}async function A(){n.value===null&&(n.value=await _())}async function w(){if(!(l.value||v.value)){l.value=!0;try{const R=await _();if(!R)return;if(!n.value){n.value=R;return}R!==n.value&&(v.value=!0,window.location.reload())}finally{l.value=!1}}}function T(){r.value||(r.value=_o(()=>{w()},xo))}function F(){i.value||(i.value=setTimeout(()=>{i.value=null,b()},bo))}function b(){if(!t.value)try{const R=new EventSource("/api/watch");R.onopen=async()=>{s.value=!0,o.value=null,y(),d(),f.value&&(f.value=!1,await w())},R.onmessage=j=>{try{const B=JSON.parse(j.data);a(B)}catch{}},R.onerror=()=>{s.value=!1,o.value="Connection lost",f.value=!0,t.value===R&&(R.close(),t.value=null),T(),F()},t.value=R}catch{o.value="Failed to connect",T(),F()}}function M(){y(),d(),f.value=!1,t.value&&(t.value.close(),t.value=null,s.value=!1)}return re(async()=>{await A(),b()}),ve(()=>{M()}),{isConnected:s,error:o,connect:b,disconnect:M}}const ko={class:"min-h-screen bg-background text-foreground"},So={class:"fixed top-0 left-0 right-0 z-50 h-14 border-b border-border bg-background/95 backdrop-blur-sm supports-[backdrop-filter]:bg-background/80"},$o={class:"flex h-full items-center justify-between px-4 md:px-6"},Eo={class:"flex items-center gap-3"},Ro={class:"flex h-screen pt-14"},Do={class:"flex-1 overflow-auto"},Lo=D({__name:"default",setup(a){const{themeMode:t,cycleThemeMode:s}=Xe(),{refreshPrds:o}=Ve(),{currentRepoId:i}=Se(),r=Me(),n=C(null);Rt("fileChangeEvent",n);const l=C(!1),f=C(""),v=C(!1),y=C(null),{onShortcut:d}=yo();d("Meta+k",()=>{l.value=!0}),d("Ctrl+k",()=>{l.value=!0}),d("Meta+j",()=>{f.value="PRD: ",l.value=!0}),d("Ctrl+j",()=>{f.value="PRD: ",l.value=!0});function _(){const F=["document","board","graph"],b=localStorage.getItem("prd-viewer-tab")||"document",M=F.indexOf(b),R=M>=0?M:0,j=F[(R+1)%F.length]??"document";localStorage.setItem("prd-viewer-tab",j),window.dispatchEvent(new StorageEvent("storage",{key:"prd-viewer-tab",newValue:j}))}d("Meta+\\",_),d("Ctrl+\\",_);function A(){s()}d("Meta+.",A),d("Ctrl+.",A);function w(){y.value?.openAddDialog()}d("Meta+,",w),d("Ctrl+,",w);function T(){v.value=!0}return d("Meta+/",T),d("Ctrl+/",T),d("Meta+Shift+/",T),d("Ctrl+Shift+/",T),Co(F=>{if(F.type==="connected"||!F.category)return;const b=F.category;if(F.repoId!==i.value)return;(b==="prd"||b==="tasks")&&o();const M=r.params.prd;if(M){const R=b==="prd"&&F.path?.includes(`/${M}.`),j=(b==="tasks"||b==="progress")&&F.path?.includes(`/${M}/`);(R||j||(b==="tasks"||b==="progress"))&&(n.value={category:b,path:F.path,timestamp:Date.now()})}}),(F,b)=>{const M=ua,R=Dt,j=_a;return u(),S("div",ko,[m(lo,{open:e(l),"onUpdate:open":b[0]||(b[0]=B=>ye(l)?l.value=B:null),filter:e(f),"onUpdate:filter":b[1]||(b[1]=B=>ye(f)?f.value=B:null),onOpenShortcutsHelp:T},null,8,["open","filter"]),m(mo,{open:e(v),"onUpdate:open":b[2]||(b[2]=B=>ye(v)?v.value=B:null)},null,8,["open"]),c("header",So,[c("div",$o,[b[5]||(b[5]=c("div",{class:"flex items-center gap-4"},[c("h1",{class:"text-lg font-semibold tracking-tight"}," PRD Viewer ")],-1)),m(R,null,{fallback:p(()=>[...b[4]||(b[4]=[c("div",{class:"flex items-center gap-3"},[c("div",{class:"h-8 w-[200px] animate-pulse rounded-md bg-muted"}),c("div",{class:"size-9 animate-pulse rounded-md bg-muted"})],-1)])]),default:p(()=>[c("div",Eo,[m(M,{ref_key:"repoSelectorRef",ref:y},null,512),m(e(me),{variant:"ghost",size:"icon",class:"size-9",onClick:A},{default:p(()=>[e(t)==="system"?(u(),g(e(it),{key:0,class:"size-4"})):e(t)==="light"?(u(),g(e(dt),{key:1,class:"size-4"})):(u(),g(e(ut),{key:2,class:"size-4"})),b[3]||(b[3]=c("span",{class:"sr-only"},"Cycle theme mode",-1))]),_:1})])]),_:1})])]),c("div",Ro,[m(R,null,{fallback:p(()=>[...b[6]||(b[6]=[c("aside",{class:"flex h-full w-64 flex-col border-r border-border bg-background"},[c("div",{class:"flex h-12 items-center border-b border-border px-4"},[c("div",{class:"h-4 w-20 animate-pulse rounded bg-muted"})]),c("div",{class:"flex-1 p-2 space-y-2"},[c("div",{class:"h-9 animate-pulse rounded-md bg-muted"}),c("div",{class:"h-9 animate-pulse rounded-md bg-muted"}),c("div",{class:"h-9 animate-pulse rounded-md bg-muted"})])],-1)])]),default:p(()=>[m(j)]),_:1}),c("main",Do,[L(F.$slots,"default")])])])}}});export{Lo as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as o,d as r,e as d}from"./
|
|
1
|
+
import{c as o,d as r,e as d}from"./D0op9E2g.js";import{g as u,ae as p,af as c,l as s,o as m,c as f,H as b,m as v}from"./Bibm_IDv.js";const w=o("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);const y=o("folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]),g=u({__name:"Input",props:{defaultValue:{},modelValue:{},class:{}},emits:["update:modelValue"],setup(i,{emit:l}){const e=i,a=r(e,"modelValue",l,{passive:!0,defaultValue:e.defaultValue});return(V,t)=>p((m(),f("input",{"onUpdate:modelValue":t[0]||(t[0]=n=>v(a)?a.value=n:null),"data-slot":"input",class:b(s(d)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e.class))},null,2)),[[c,s(a)]])}}),_=Object.assign(g,{__name:"UiInput"});export{w as F,_ as I,y as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as s}from"./DlAUqK2U.js";import{u as i}from"./
|
|
1
|
+
import{_ as s}from"./DlAUqK2U.js";import{u as i}from"./CxHOXVf6.js";import{o as a,c as u,a as e,t as o}from"./Bibm_IDv.js";const l={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},c={class:"max-w-520px text-center"},d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},status:{type:Number,default:500},statusText:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const r=t;return i({title:`${r.status} - ${r.statusText} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(m,n)=>(a(),u("div",l,[n[0]||(n[0]=e("div",{class:"-bottom-1/2 fixed h-1/2 left-0 right-0 spotlight"},null,-1)),e("div",c,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:o(t.status)},null,8,d),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:o(t.description)},null,8,p)])]))}},x=s(f,[["__scopeId","data-v-647e9bc1"]]);export{x as default};
|
|
@@ -5,7 +5,7 @@ import { Background } from '@vue-flow/background';
|
|
|
5
5
|
import { Controls } from '@vue-flow/controls';
|
|
6
6
|
import { MarkerType, VueFlow, Position, Handle } from '@vue-flow/core';
|
|
7
7
|
import { Loader2, AlertCircle, GitBranch, Circle, Clock3, CheckCircle2, AlertTriangle, Clock, ArrowLeft, Tag, ListOrdered, CheckSquare, Check, Link2, Diff, Calendar, ExternalLink, X, RefreshCw, Keyboard, FileDiff, FileCode, GitCommit, FileText, Plus, Minus, FolderGit2, ArrowRight, FileWarning, ChevronDown, Link, Link2Off, FileEdit, FileX, FilePlus } from 'lucide-vue-next';
|
|
8
|
-
import { codeToHtml } from 'shiki/bundle/
|
|
8
|
+
import { codeToHtml } from 'shiki/bundle/full';
|
|
9
9
|
import { B as Button } from './index-CckL_NBD.mjs';
|
|
10
10
|
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
|
11
11
|
import { Primitive, useForwardPropsEmits, DialogRoot, DialogPortal, DialogContent, DialogClose, DialogTitle, DialogDescription, Separator as Separator$1, DialogOverlay, TooltipProvider as TooltipProvider$1, TooltipRoot, TooltipTrigger as TooltipTrigger$1, TooltipPortal, TooltipContent as TooltipContent$1, TooltipArrow, ScrollAreaRoot, ScrollAreaViewport, ScrollAreaCorner, ScrollAreaScrollbar, ScrollAreaThumb, DialogTrigger } from 'reka-ui';
|
|
@@ -862,21 +862,21 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
|
862
862
|
return "context";
|
|
863
863
|
}
|
|
864
864
|
return (_ctx, _push, _parent, _attrs) => {
|
|
865
|
-
_push(`<div${ssrRenderAttrs(mergeProps({ class: "diff-viewer" }, _attrs))} data-v-
|
|
865
|
+
_push(`<div${ssrRenderAttrs(mergeProps({ class: "diff-viewer" }, _attrs))} data-v-8fd455b9>`);
|
|
866
866
|
if ((unref(isLoading) || __props.isLoadingContent || unref(isLoadingFullFile)) && !__props.binary) {
|
|
867
|
-
_push(`<div class="flex items-center justify-center py-8" data-v-
|
|
867
|
+
_push(`<div class="flex items-center justify-center py-8" data-v-8fd455b9><div class="size-6 animate-spin rounded-full border-2 border-primary border-t-transparent" data-v-8fd455b9></div></div>`);
|
|
868
868
|
} else if (__props.binary) {
|
|
869
|
-
_push(`<div class="flex flex-col items-center justify-center gap-3 py-12 text-muted-foreground" data-v-
|
|
869
|
+
_push(`<div class="flex flex-col items-center justify-center gap-3 py-12 text-muted-foreground" data-v-8fd455b9>`);
|
|
870
870
|
_push(ssrRenderComponent(unref(FileWarning), { class: "size-10 opacity-50" }, null, _parent));
|
|
871
|
-
_push(`<div class="text-center" data-v-
|
|
871
|
+
_push(`<div class="text-center" data-v-8fd455b9><p class="font-medium" data-v-8fd455b9>Binary file</p><p class="text-sm" data-v-8fd455b9>This file cannot be displayed as a diff</p></div></div>`);
|
|
872
872
|
} else if (unref(isEmpty) && !__props.showFullFile) {
|
|
873
|
-
_push(`<div class="flex flex-col items-center justify-center gap-3 py-12 text-muted-foreground" data-v-
|
|
873
|
+
_push(`<div class="flex flex-col items-center justify-center gap-3 py-12 text-muted-foreground" data-v-8fd455b9>`);
|
|
874
874
|
_push(ssrRenderComponent(unref(AlertTriangle), { class: "size-10 opacity-50" }, null, _parent));
|
|
875
|
-
_push(`<div class="text-center" data-v-
|
|
875
|
+
_push(`<div class="text-center" data-v-8fd455b9><p class="font-medium" data-v-8fd455b9>No changes</p><p class="text-sm" data-v-8fd455b9>This file was touched but has no content changes</p></div></div>`);
|
|
876
876
|
} else if (unref(isLargeFile) && !unref(showAll) && !__props.showFullFile) {
|
|
877
|
-
_push(`<div class="diff-container" data-v-
|
|
877
|
+
_push(`<div class="diff-container" data-v-8fd455b9><div class="flex flex-col items-center justify-center gap-3 border-b border-border bg-muted/30 py-6" data-v-8fd455b9>`);
|
|
878
878
|
_push(ssrRenderComponent(unref(AlertTriangle), { class: "size-8 text-yellow-500" }, null, _parent));
|
|
879
|
-
_push(`<div class="text-center" data-v-
|
|
879
|
+
_push(`<div class="text-center" data-v-8fd455b9><p class="font-medium" data-v-8fd455b9>Large file</p><p class="text-sm text-muted-foreground" data-v-8fd455b9> This file has ${ssrInterpolate(unref(totalLines).toLocaleString())} lines (threshold: ${ssrInterpolate(LINE_LIMIT.toLocaleString())}) </p></div>`);
|
|
880
880
|
_push(ssrRenderComponent(unref(Button), {
|
|
881
881
|
variant: "outline",
|
|
882
882
|
size: "sm",
|
|
@@ -897,15 +897,15 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
|
897
897
|
}, _parent));
|
|
898
898
|
_push(`</div></div>`);
|
|
899
899
|
} else if (__props.showFullFile && __props.fileContent) {
|
|
900
|
-
_push(`<div class="diff-container" data-v-
|
|
900
|
+
_push(`<div class="diff-container" data-v-8fd455b9><div class="full-file-view" data-v-8fd455b9><!--[-->`);
|
|
901
901
|
ssrRenderList(unref(fullFileLines), (line, index) => {
|
|
902
902
|
_push(`<div class="${ssrRenderClass([{
|
|
903
903
|
"diff-add": getFullFileLineType(index + 1) === "add"
|
|
904
|
-
}, "full-file-line"])}" data-v-
|
|
904
|
+
}, "full-file-line"])}" data-v-8fd455b9><div class="diff-gutter" data-v-8fd455b9><span class="line-number" data-v-8fd455b9>${ssrInterpolate(index + 1)}</span></div><div class="diff-content" data-v-8fd455b9><span class="diff-code" data-v-8fd455b9>${(unref(highlightedFullFile)[index] || escapeHtml(line)) ?? ""}</span></div></div>`);
|
|
905
905
|
});
|
|
906
906
|
_push(`<!--]--></div></div>`);
|
|
907
907
|
} else {
|
|
908
|
-
_push(`<div class="diff-container" data-v-
|
|
908
|
+
_push(`<div class="diff-container" data-v-8fd455b9><div class="diff-toolbar" data-v-8fd455b9>`);
|
|
909
909
|
_push(ssrRenderComponent(unref(Button), {
|
|
910
910
|
variant: "ghost",
|
|
911
911
|
size: "sm",
|
|
@@ -925,25 +925,25 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
|
925
925
|
}),
|
|
926
926
|
_: 1
|
|
927
927
|
}, _parent));
|
|
928
|
-
_push(`</div><div class="diff-split" data-v-
|
|
928
|
+
_push(`</div><div class="diff-split" data-v-8fd455b9><div class="diff-column diff-column-left" data-v-8fd455b9><div class="diff-column-content" data-v-8fd455b9><!--[-->`);
|
|
929
929
|
ssrRenderList(unref(displayItems), (item) => {
|
|
930
930
|
_push(`<!--[-->`);
|
|
931
931
|
if (item.type === "separator") {
|
|
932
|
-
_push(`<div class="diff-separator-half" data-v-
|
|
932
|
+
_push(`<div class="diff-separator-half" data-v-8fd455b9><div class="separator-line" data-v-8fd455b9></div><span class="separator-text" data-v-8fd455b9>···</span></div>`);
|
|
933
933
|
} else if (item.pair) {
|
|
934
934
|
_push(`<div class="${ssrRenderClass([{
|
|
935
935
|
"diff-remove": item.pair.left.type === "remove",
|
|
936
936
|
"diff-empty": item.pair.left.type === "empty",
|
|
937
937
|
"diff-context": item.pair.left.type === "context"
|
|
938
|
-
}, "diff-line"])}" data-v-
|
|
938
|
+
}, "diff-line"])}" data-v-8fd455b9><div class="diff-gutter" data-v-8fd455b9>`);
|
|
939
939
|
if (item.pair.left.lineNum) {
|
|
940
|
-
_push(`<span class="line-number" data-v-
|
|
940
|
+
_push(`<span class="line-number" data-v-8fd455b9>${ssrInterpolate(item.pair.left.lineNum)}</span>`);
|
|
941
941
|
} else {
|
|
942
942
|
_push(`<!---->`);
|
|
943
943
|
}
|
|
944
|
-
_push(`</div><div class="diff-content" data-v-
|
|
944
|
+
_push(`</div><div class="diff-content" data-v-8fd455b9>`);
|
|
945
945
|
if (item.pair.left.type !== "empty") {
|
|
946
|
-
_push(`<span class="diff-code" data-v-
|
|
946
|
+
_push(`<span class="diff-code" data-v-8fd455b9>${(getHighlightedContent(item.pair.id, "old") || escapeHtml(item.pair.left.content)) ?? ""}</span>`);
|
|
947
947
|
} else {
|
|
948
948
|
_push(`<!---->`);
|
|
949
949
|
}
|
|
@@ -953,25 +953,25 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
|
953
953
|
}
|
|
954
954
|
_push(`<!--]-->`);
|
|
955
955
|
});
|
|
956
|
-
_push(`<!--]--></div></div><div class="diff-column diff-column-right" data-v-
|
|
956
|
+
_push(`<!--]--></div></div><div class="diff-column diff-column-right" data-v-8fd455b9><div class="diff-column-content" data-v-8fd455b9><!--[-->`);
|
|
957
957
|
ssrRenderList(unref(displayItems), (item) => {
|
|
958
958
|
_push(`<!--[-->`);
|
|
959
959
|
if (item.type === "separator") {
|
|
960
|
-
_push(`<div class="diff-separator-half" data-v-
|
|
960
|
+
_push(`<div class="diff-separator-half" data-v-8fd455b9><span class="separator-text" data-v-8fd455b9>···</span><div class="separator-line" data-v-8fd455b9></div></div>`);
|
|
961
961
|
} else if (item.pair) {
|
|
962
962
|
_push(`<div class="${ssrRenderClass([{
|
|
963
963
|
"diff-add": item.pair.right.type === "add",
|
|
964
964
|
"diff-empty": item.pair.right.type === "empty",
|
|
965
965
|
"diff-context": item.pair.right.type === "context"
|
|
966
|
-
}, "diff-line"])}" data-v-
|
|
966
|
+
}, "diff-line"])}" data-v-8fd455b9><div class="diff-gutter" data-v-8fd455b9>`);
|
|
967
967
|
if (item.pair.right.lineNum) {
|
|
968
|
-
_push(`<span class="line-number" data-v-
|
|
968
|
+
_push(`<span class="line-number" data-v-8fd455b9>${ssrInterpolate(item.pair.right.lineNum)}</span>`);
|
|
969
969
|
} else {
|
|
970
970
|
_push(`<!---->`);
|
|
971
971
|
}
|
|
972
|
-
_push(`</div><div class="diff-content" data-v-
|
|
972
|
+
_push(`</div><div class="diff-content" data-v-8fd455b9>`);
|
|
973
973
|
if (item.pair.right.type !== "empty") {
|
|
974
|
-
_push(`<span class="diff-code" data-v-
|
|
974
|
+
_push(`<span class="diff-code" data-v-8fd455b9>${(getHighlightedContent(item.pair.id, "new") || escapeHtml(item.pair.right.content)) ?? ""}</span>`);
|
|
975
975
|
} else {
|
|
976
976
|
_push(`<!---->`);
|
|
977
977
|
}
|
|
@@ -993,7 +993,7 @@ _sfc_main$j.setup = (props, ctx) => {
|
|
|
993
993
|
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/git/DiffViewer.vue");
|
|
994
994
|
return _sfc_setup$j ? _sfc_setup$j(props, ctx) : void 0;
|
|
995
995
|
};
|
|
996
|
-
const __nuxt_component_1$2 = /* @__PURE__ */ Object.assign(_export_sfc(_sfc_main$j, [["__scopeId", "data-v-
|
|
996
|
+
const __nuxt_component_1$2 = /* @__PURE__ */ Object.assign(_export_sfc(_sfc_main$j, [["__scopeId", "data-v-8fd455b9"]]), { __name: "GitDiffViewer" });
|
|
997
997
|
const _sfc_main$i = /* @__PURE__ */ defineComponent({
|
|
998
998
|
__name: "ScrollBar",
|
|
999
999
|
__ssrInlineRender: true,
|
|
@@ -3445,4 +3445,4 @@ _sfc_main.setup = (props, ctx) => {
|
|
|
3445
3445
|
const __nuxt_component_1 = Object.assign(_sfc_main, { __name: "TasksDetail" });
|
|
3446
3446
|
|
|
3447
3447
|
export { Badge as B, __nuxt_component_0$2 as _, __nuxt_component_1 as a };
|
|
3448
|
-
//# sourceMappingURL=Detail-
|
|
3448
|
+
//# sourceMappingURL=Detail-CUfU85GY.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Detail-CUfU85GY.mjs","sources":["../../../../node_modules/@dagrejs/dagre/dist/dagre.esm.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/Detail-CUfU85GY.js"],"names":[],"mappings":"","x_google_ignoreList":[0,1]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const DiffViewer_vue_vue_type_style_index_0_scoped_8fd455b9_lang = ".diff-viewer[data-v-8fd455b9]{color:hsl(var(--foreground));font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Monaco,Consolas,monospace;font-size:.8125rem;line-height:1.5}.diff-container[data-v-8fd455b9]{overflow-x:auto}.diff-toolbar[data-v-8fd455b9]{background:hsl(var(--muted)/.3);border-bottom:1px solid hsl(var(--border));display:flex;justify-content:flex-end;padding:.25rem .5rem}.diff-split[data-v-8fd455b9]{display:flex;min-width:100%}.diff-column[data-v-8fd455b9]{flex:1;min-width:0;overflow-x:auto}.diff-column-left[data-v-8fd455b9]{border-right:1px solid hsl(var(--border))}.diff-column-content[data-v-8fd455b9]{min-width:-moz-fit-content;min-width:fit-content}.diff-line[data-v-8fd455b9]{display:flex}.diff-gutter[data-v-8fd455b9]{background:hsl(var(--muted)/.3);color:hsl(var(--muted-foreground));flex-shrink:0;padding:0 .5rem;text-align:right;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:3.5rem}.line-number[data-v-8fd455b9]{display:inline-block;min-width:2rem;opacity:.7}.diff-content[data-v-8fd455b9]{color:hsl(var(--foreground));flex:1;min-width:0;padding:0 .5rem;white-space:pre}.diff-code[data-v-8fd455b9]{color:inherit;display:inline}.diff-add[data-v-8fd455b9]{background:#16a24926}.diff-add .diff-gutter[data-v-8fd455b9]{background:#16a24940}.diff-remove[data-v-8fd455b9]{background:#ef434326}.diff-remove .diff-gutter[data-v-8fd455b9]{background:#ef434340}.diff-empty[data-v-8fd455b9]{background:hsl(var(--muted)/.2)}.diff-empty .diff-gutter[data-v-8fd455b9]{background:hsl(var(--muted)/.3)}.diff-context[data-v-8fd455b9]{background:transparent}.full-file-view[data-v-8fd455b9]{min-width:100%}.full-file-line[data-v-8fd455b9]{display:flex}.full-file-line .diff-gutter[data-v-8fd455b9]{width:4rem}.full-file-line.diff-add[data-v-8fd455b9]{background:#16a24926}.full-file-line.diff-add .diff-gutter[data-v-8fd455b9]{background:#16a24940}.dark .full-file-line.diff-add[data-v-8fd455b9]{background:#16a2491a}.dark .full-file-line.diff-add .diff-gutter[data-v-8fd455b9]{background:#16a24933}.diff-separator[data-v-8fd455b9],.diff-separator-half[data-v-8fd455b9]{align-items:center;background:hsl(var(--muted)/.4);display:flex;padding:.25rem 0}.separator-line[data-v-8fd455b9]{background:hsl(var(--border));flex:1;height:1px}.separator-text[data-v-8fd455b9]{color:hsl(var(--muted-foreground));font-size:.75rem;padding:0 .75rem}.dark .diff-add[data-v-8fd455b9]{background:#16a2491a}.dark .diff-add .diff-gutter[data-v-8fd455b9]{background:#16a24933}.dark .diff-remove[data-v-8fd455b9]{background:#ef43431a}.dark .diff-remove .diff-gutter[data-v-8fd455b9]{background:#ef434333}[data-v-8fd455b9] .shiki span,[data-v-8fd455b9] .shiki{background:transparent!important}";
|
|
2
|
+
|
|
3
|
+
export { DiffViewer_vue_vue_type_style_index_0_scoped_8fd455b9_lang as D };
|
|
4
|
+
//# sourceMappingURL=DiffViewer-styles-1.mjs-CS8FTppg.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiffViewer-styles-1.mjs-CS8FTppg.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/DiffViewer-styles-1.mjs-CS8FTppg.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { D as DiffViewer_vue_vue_type_style_index_0_scoped_8fd455b9_lang } from './DiffViewer-styles-1.mjs-CS8FTppg.mjs';
|
|
2
|
+
import { D as DiffViewer_vue_vue_type_style_index_1_lang } from './DiffViewer-styles-2.mjs-X6QKNjM0.mjs';
|
|
3
|
+
|
|
4
|
+
const DiffViewerStyles_AUfwwelI = [
|
|
5
|
+
DiffViewer_vue_vue_type_style_index_0_scoped_8fd455b9_lang,
|
|
6
|
+
DiffViewer_vue_vue_type_style_index_1_lang
|
|
7
|
+
];
|
|
8
|
+
|
|
9
|
+
export { DiffViewerStyles_AUfwwelI as default };
|
|
10
|
+
//# sourceMappingURL=DiffViewer-styles.AUfwwelI.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiffViewer-styles.AUfwwelI.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/DiffViewer-styles.AUfwwelI.mjs"],"names":["style_0","style_1"],"mappings":"","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { D as DiffViewer_vue_vue_type_style_index_0_scoped_8fd455b9_lang } from './DiffViewer-styles-1.mjs-CS8FTppg.mjs';
|
|
2
|
+
|
|
3
|
+
const DiffViewerStyles_D_it8zfk = [
|
|
4
|
+
DiffViewer_vue_vue_type_style_index_0_scoped_8fd455b9_lang
|
|
5
|
+
];
|
|
6
|
+
|
|
7
|
+
export { DiffViewerStyles_D_it8zfk as default };
|
|
8
|
+
//# sourceMappingURL=DiffViewer-styles.D_it8zfk.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiffViewer-styles.D_it8zfk.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/DiffViewer-styles.D_it8zfk.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0]}
|
|
@@ -2,7 +2,7 @@ import { _ as __nuxt_component_0$2 } from './nuxt-link-SvT1nf8Z.mjs';
|
|
|
2
2
|
import { defineComponent, computed, ref, watch, inject, mergeProps, unref, withCtx, createVNode, createTextVNode, isRef, openBlock, createBlock, toDisplayString, createCommentVNode, renderSlot, resolveDynamicComponent, useSSRContext } from 'vue';
|
|
3
3
|
import { ssrRenderAttrs, ssrRenderComponent, ssrInterpolate, ssrRenderAttr, ssrRenderSlot, ssrRenderList, ssrRenderClass, ssrRenderVNode } from 'vue/server-renderer';
|
|
4
4
|
import { Loader2, AlertCircle, RefreshCw, FileText, LayoutGrid, GitBranch, User, Calendar, CircleDot, ExternalLink, Circle, CheckCircle2, PlayCircle, Minus, ArrowDown, ArrowUp } from 'lucide-vue-next';
|
|
5
|
-
import { _ as __nuxt_component_0$2$1, a as __nuxt_component_1$1, B as Badge } from './Detail-
|
|
5
|
+
import { _ as __nuxt_component_0$2$1, a as __nuxt_component_1$1, B as Badge } from './Detail-CUfU85GY.mjs';
|
|
6
6
|
import { marked } from 'marked';
|
|
7
7
|
import { codeToHtml } from 'shiki';
|
|
8
8
|
import DOMPurify from 'dompurify';
|
|
@@ -25,7 +25,7 @@ import 'node:url';
|
|
|
25
25
|
import '@vue-flow/background';
|
|
26
26
|
import '@vue-flow/controls';
|
|
27
27
|
import '@vue-flow/core';
|
|
28
|
-
import 'shiki/bundle/
|
|
28
|
+
import 'shiki/bundle/full';
|
|
29
29
|
import 'class-variance-authority';
|
|
30
30
|
import 'clsx';
|
|
31
31
|
import 'tailwind-merge';
|
|
@@ -1593,4 +1593,4 @@ _sfc_main.setup = (props, ctx) => {
|
|
|
1593
1593
|
};
|
|
1594
1594
|
|
|
1595
1595
|
export { _sfc_main as default };
|
|
1596
|
-
//# sourceMappingURL=_prd_-
|
|
1596
|
+
//# sourceMappingURL=_prd_-CeVnQzOV.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_prd_-CeVnQzOV.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_prd_-CeVnQzOV.js"],"names":["__nuxt_component_0$3"],"mappings":"","x_google_ignoreList":[0]}
|