@thxgg/steward 0.1.22 → 0.1.23
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/{BhBgWPCX.js → 6tINjQEd.js} +1 -1
- package/.output/public/_nuxt/{DUrbBKgG.js → B2mIQf5X.js} +1 -1
- package/.output/public/_nuxt/{CL_YIWu4.js → BRQ9Cxaw.js} +1 -1
- package/.output/public/_nuxt/{okqELTtf.js → BTmXUZ_s.js} +1 -1
- package/.output/public/_nuxt/{B4iDhohi.js → Bc2V3wPK.js} +2 -2
- package/.output/public/_nuxt/{BuvhTQbX.js → BknRrWsw.js} +1 -1
- package/.output/public/_nuxt/{HZy5mmMm.js → C0BBSDJ7.js} +1 -1
- package/.output/public/_nuxt/{Du8Y9zEm.js → C53_p0K1.js} +1 -1
- package/.output/public/_nuxt/{C_Sxjx0M.js → C73kduX-.js} +1 -1
- package/.output/public/_nuxt/{C_5PUO5r.js → CN46Bgts.js} +1 -1
- package/.output/public/_nuxt/{DQivOuJJ.js → CTJgb0zb.js} +1 -1
- package/.output/public/_nuxt/{rTDTR03M.js → Cce168lk.js} +5 -5
- package/.output/public/_nuxt/{CjDuB5VD.js → CyVSeLw5.js} +1 -1
- package/.output/public/_nuxt/{CZWhz2fI.js → T11EuTtn.js} +1 -1
- package/.output/public/_nuxt/{rG99Mq9f.js → U78rMDmo.js} +1 -1
- package/.output/public/_nuxt/{BQBm6AsP.js → ZNypZshD.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/bd99c09c-d991-4bcb-8c66-ab2088e1da03.json +1 -0
- package/.output/public/_nuxt/entry.Bw0CE6Iz.css +1 -0
- package/.output/public/_nuxt/{CuOw9LiK.js → pYJYAY-W.js} +3 -3
- package/.output/server/chunks/_/watcher.mjs +6 -1
- package/.output/server/chunks/_/watcher.mjs.map +1 -1
- package/.output/server/chunks/build/{Detail-B7yBNjgp.mjs → Detail-DMMUwTWr.mjs} +11 -11
- package/.output/server/chunks/build/Detail-DMMUwTWr.mjs.map +1 -0
- package/.output/server/chunks/build/{_prd_-DY25apyl.mjs → _prd_-ByugK4Yi.mjs} +3 -2
- package/.output/server/chunks/build/_prd_-ByugK4Yi.mjs.map +1 -0
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/nuxt-link-SvT1nf8Z.mjs +1 -1
- package/.output/server/chunks/build/{repo-graph-CUcJKW1F.mjs → repo-graph-DzT45gSB.mjs} +2 -2
- package/.output/server/chunks/build/repo-graph-DzT45gSB.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +3 -3
- package/.output/server/chunks/build/usePrd-hXZOmvAv.mjs +1 -1
- package/.output/server/chunks/nitro/nitro.mjs +796 -687
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
- package/.output/server/chunks/routes/renderer.mjs +1 -1
- package/.output/server/index.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/dist/server/utils/change-events.js +117 -0
- package/package.json +1 -1
- package/.output/public/_nuxt/builds/meta/3e08a0b0-262b-4fb5-b213-4aa35df11afb.json +0 -1
- package/.output/public/_nuxt/entry.xHdymH38.css +0 -1
- package/.output/server/chunks/build/Detail-B7yBNjgp.mjs.map +0 -1
- package/.output/server/chunks/build/_prd_-DY25apyl.mjs.map +0 -1
- package/.output/server/chunks/build/repo-graph-CUcJKW1F.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as I,h as T,S as p}from"./
|
|
1
|
+
import{c as I,h as T,S as p}from"./CN46Bgts.js";import{s as m,q as v,i as C,g as d,N,a4 as x,$ as A,k as y,_ as O}from"./Bc2V3wPK.js";import{r as E}from"./B2mIQf5X.js";const k=I("arrow-up",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);function w(){const e=v(),t=m(()=>["#text","#comment"].includes(e.value?.$el.nodeName)?e.value?.$el.nextElementSibling:T(e));return{primitiveElement:e,currentElement:t}}const g="data-reka-collection-item";function D(e={}){const{key:t="",isProvider:i=!1}=e,r=`${t}CollectionProvider`;let o;if(i){const a=v(new Map);o={collectionRef:v(),itemMap:a},O(r,o)}else o=C(r);const h=(a=!1)=>{const s=o.collectionRef.value;if(!s)return[];const l=Array.from(s.querySelectorAll(`[${g}]`)),n=Array.from(o.itemMap.value.values()).sort((c,f)=>l.indexOf(c.ref)-l.indexOf(f.ref));return a?n:n.filter(c=>c.ref.dataset.disabled!=="")},_=d({name:"CollectionSlot",inheritAttrs:!1,setup(a,{slots:s,attrs:l}){const{primitiveElement:u,currentElement:n}=w();return y(n,()=>{o.collectionRef.value=n.value}),()=>A(p,{ref:u,...l},s)}}),M=d({name:"CollectionItem",inheritAttrs:!1,props:{value:{validator:()=>!0}},setup(a,{slots:s,attrs:l}){const{primitiveElement:u,currentElement:n}=w();return N(c=>{if(n.value){const f=x(n.value);o.itemMap.value.set(f,{ref:n.value,value:a.value}),c(()=>o.itemMap.value.delete(f))}}),()=>A(p,{...l,[g]:"",ref:u},s)}}),R=m(()=>Array.from(o.itemMap.value.values())),S=m(()=>o.itemMap.value.size);return{getItems:h,reactiveItems:R,itemMapSize:S,CollectionSlot:_,CollectionItem:M}}const $="rovingFocusGroup.onEntryFocus",q={bubbles:!1,cancelable:!0},P={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function U(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function z(e,t,i){const r=U(e.key,i);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return P[r]}function K(e,t=!1){const i=E();for(const r of e)if(r===i||(r.focus({preventScroll:t}),E()!==i))return}function V(e,t){return e.map((i,r)=>e[(t+r)%e.length])}export{k as A,$ as E,q as a,w as b,K as f,z as g,D as u,V as w};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as B,l as e,a0 as Dt,g as E,k as pe,o as u,x as _,L as q,c as S,n as F,F as se,r as le,v as ot,B as ye,w as c,y as V,q as C,b as p,G as _e,p as $e,ac as Pt,z as ie,A as fe,ad as Tt,ae as Le,a as d,H as oe,t as O,d as G,E as It,af as Ot,j as nt,M as Ke,ag as Mt,ah as Vt,m as Ce,J as Ae,K as Be,a1 as Lt,aa as Fe,ai as lt,ab as Ft,_ as qt,aj as zt,ak as jt}from"./B4iDhohi.js";import{c as me,m as qe,h as Kt,f as rt,d as Ue,P as re,g as Oe,l as Ut,B as ce,u as De,o as Ht,b as it,r as te,e as W,a as He,F as ze,n as Nt}from"./C_5PUO5r.js";import{r as Gt,V as Wt,u as Qt,c as be,a as Pe,b as Ne,s as Jt,L as ut,f as Xt,g as Yt,q as dt,h as Zt,p as ea,o as ta,j as aa,k as sa,l as oa,m as na,d as ve,S as la,G as ct,C as ra,R as pt,B as Ze,t as ia,v as Ge,w as ft,x as mt,y as vt,X as ht,e as Te,z as ua,A as da,E as ca,i as pa,K as fa}from"./DUrbBKgG.js";import{F as ma,I as va,a as je}from"./HZy5mmMm.js";import{b as We,u as Qe,g as ha,A as ga}from"./CjDuB5VD.js";import{_ as ya}from"./DQivOuJJ.js";const _a=me("archive",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]]);const ba=me("database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);const gt=me("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 yt=me("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 xa=me("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);const _t=me("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 wa=me("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 ka(s,t,a){const n=s.findIndex(r=>qe(r,t)),l=s.findIndex(r=>qe(r,a));if(n===-1||l===-1)return[];const[i,o]=[n,l].sort((r,f)=>r-f);return s.slice(i,o+1)}function Ca(s){const t=B(()=>e(s)),a=B(()=>new Intl.Collator("en",{usage:"search",...t.value}));return{startsWith:(o,r)=>r.length===0?!0:(o=o.normalize("NFC"),r=r.normalize("NFC"),a.value.compare(o.slice(0,r.length),r)===0),endsWith:(o,r)=>r.length===0?!0:(o=o.normalize("NFC"),r=r.normalize("NFC"),a.value.compare(o.slice(-r.length),r)===0),contains:(o,r)=>{if(r.length===0)return!0;o=o.normalize("NFC"),r=r.normalize("NFC");let f=0;const h=r.length;for(;f+h<=o.length;f++){const b=o.slice(f,f+h);if(a.value.compare(r,b)===0)return!0}return!1}}}function bt(s){return B(()=>Dt(s)?!!Kt(s)?.closest("form"):!0)}function Sa(){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 $a(s){const t=rt("",1e3);return{search:t,handleTypeaheadSearch:(l,i)=>{t.value=t.value+l;{const o=Gt(),r=i.map(v=>({...v,textValue:v.value?.textValue??v.ref.textContent?.trim()??""})),f=r.find(v=>v.ref===o),h=r.map(v=>v.textValue),b=Ea(h,t.value,f?.textValue),m=r.find(v=>v.textValue===b);return m&&m.ref.focus(),m?.ref}},resetTypeahead:()=>{t.value=""}}}function Ra(s,t){return s.map((a,n)=>s[(t+n)%s.length])}function Ea(s,t,a){const l=t.length>1&&Array.from(t).every(h=>h===t[0])?t[0]:t,i=a?s.indexOf(a):-1;let o=Ra(s,Math.max(i,0));l.length===1&&(o=o.filter(h=>h!==a));const f=o.find(h=>h.toLowerCase().startsWith(l.toLowerCase()));return f!==a?f:void 0}var Aa=E({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(s){const t=s,{primitiveElement:a,currentElement:n}=We(),l=B(()=>t.checked??t.value);return pe(l,(i,o)=>{if(!n.value)return;const r=n.value,f=window.HTMLInputElement.prototype,b=Object.getOwnPropertyDescriptor(f,"value").set;if(b&&i!==o){const m=new Event("input",{bubbles:!0}),v=new Event("change",{bubbles:!0});b.call(r,i),r.dispatchEvent(m),r.dispatchEvent(v)}}),(i,o)=>(u(),_(Wt,q({ref_key:"primitiveElement",ref:a},{...t,...i.$attrs},{as:"input"}),null,16))}}),et=Aa,Ba=E({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(s){const t=s,a=B(()=>typeof t.value=="object"&&Array.isArray(t.value)&&t.value.length===0&&t.required),n=B(()=>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((l,i)=>typeof l=="object"?Object.entries(l).map(([o,r])=>({name:`${t.name}[${i}][${o}]`,value:r})):{name:`${t.name}[${i}]`,value:l}):t.value!==null&&typeof t.value=="object"&&!Array.isArray(t.value)?Object.entries(t.value).map(([l,i])=>({name:`${t.name}[${l}]`,value:i})):[]);return(l,i)=>(u(),S(se,null,[F(" We render single input if it's required "),a.value?(u(),_(et,q({key:l.name},{...t,...l.$attrs},{name:l.name,value:l.value}),null,16,["name","value"])):(u(!0),S(se,{key:1},le(n.value,o=>(u(),_(et,q({key:o.name},{ref_for:!0},{...t,...l.$attrs},{name:o.name,value:o.value}),null,16,["name","value"]))),128))],2112))}}),xt=Ba;function Da(s,t,a){return s===void 0?!1:Array.isArray(s)?s.some(n=>Se(n,t,a)):Se(s,t,a)}function Se(s,t,a){return s===void 0||t===void 0?!1:typeof s=="string"?s===t:typeof a=="function"?a(s,t):typeof a=="string"?s?.[a]===t?.[a]:qe(s,t)}const[Je,Pa]=be("ListboxRoot");var Ta=E({__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(s,{expose:t,emit:a}){const n=s,l=a,{multiple:i,highlightOnHover:o,orientation:r,disabled:f,selectionBehavior:h,dir:b}=ot(n),{getItems:m}=Qe({isProvider:!0}),{handleTypeaheadSearch:v}=$a(),{primitiveElement:k,currentElement:g}=We(),P=Sa(),J=Qt(b),Z=bt(g),j=C(),w=C(!1),$=C(!0),A=Ue(n,"modelValue",l,{defaultValue:n.defaultValue??(i.value?[]:void 0),passive:n.modelValue===void 0,deep:!0});function X(y){if(w.value=!0,n.multiple){const R=Array.isArray(A.value)?[...A.value]:[],D=R.findIndex(H=>Se(H,y,n.by));n.selectionBehavior==="toggle"?(D===-1?R.push(y):R.splice(D,1),A.value=R):(A.value=[y],j.value=y)}else n.selectionBehavior==="toggle"&&Se(A.value,y,n.by)?A.value=void 0:A.value=y;setTimeout(()=>{w.value=!1},1)}const M=C(null),ee=C(null),Q=C(!1),ue=C(!1),he=Oe(),ae=Oe(),N=Oe();function Y(){return m().map(y=>y.ref).filter(y=>y.dataset.disabled!=="")}function K(y,R=!0){if(!y)return;M.value=y,$.value&&M.value.focus(),R&&M.value.scrollIntoView({block:"nearest"});const D=m().find(H=>H.ref===y);l("highlight",D)}function ne(y){if(Q.value)N.trigger(y);else{const R=m().find(D=>Se(D.value,y,n.by));R&&(M.value=R.ref,K(R.ref))}}function T(y){M.value&&M.value.isConnected&&(y.preventDefault(),y.stopPropagation(),ue.value||M.value.click())}function z(y){if($.value){if(w.value=!0,Q.value)ae.trigger(y);else{const R=y.altKey||y.ctrlKey||y.metaKey;if(R&&y.key==="a"&&i.value){const D=m(),H=D.map(ge=>ge.value);A.value=[...H],y.preventDefault(),K(D[D.length-1].ref)}else if(!R){const D=v(y.key,m());D&&K(D)}}setTimeout(()=>{w.value=!1},1)}}function U(){ue.value=!0}function I(){ye(()=>{ue.value=!1})}function x(){ye(()=>{const y=new KeyboardEvent("keydown",{key:"PageUp"});Xe(y)})}function L(y){const R=M.value;R?.isConnected&&(ee.value=R),M.value=null,l("leave",y)}function xe(y){const R=new CustomEvent("listbox.entryFocus",{bubbles:!1,cancelable:!0});if(y.currentTarget?.dispatchEvent(R),l("entryFocus",R),!R.defaultPrevented)if(ee.value)K(ee.value);else{const D=Y()?.[0];K(D)}}function Xe(y){const R=ha(y,r.value,J.value);if(!R)return;let D=Y();if(M.value){if(R==="last")D.reverse();else if(R==="prev"||R==="next"){R==="prev"&&D.reverse();const H=D.indexOf(M.value);D=D.slice(H+1)}At(y,D[0])}if(D.length){const H=!M.value&&R==="prev"?D.length-1:0;K(D[H])}if(Q.value)return ae.trigger(y)}function At(y,R){if(!(Q.value||n.selectionBehavior!=="replace"||!i.value||!Array.isArray(A.value)||(y.altKey||y.ctrlKey||y.metaKey)&&!y.shiftKey)&&y.shiftKey){const H=m().filter(we=>we.ref.dataset.disabled!=="");let ge=H.find(we=>we.ref===R)?.value;if(y.key===P.END?ge=H[H.length-1].value:y.key===P.HOME&&(ge=H[0].value),!ge||!j.value)return;const Bt=ka(H.map(we=>we.value),j.value,ge);A.value=Bt}}async function Ye(y){if(await ye(),Q.value)he.trigger(y);else{const R=Y(),D=R.find(H=>H.dataset.state==="checked");D?K(D):R.length&&K(R[0])}}return pe(A,()=>{w.value||ye(()=>{Ye()})},{immediate:!0,deep:!0}),t({highlightedElement:M,highlightItem:ne,highlightFirstItem:x,highlightSelected:Ye,getItems:m}),Pa({modelValue:A,onValueChange:X,multiple:i,orientation:r,dir:J,disabled:f,highlightOnHover:o,highlightedElement:M,isVirtual:Q,virtualFocusHook:he,virtualKeydownHook:ae,virtualHighlightHook:N,by:n.by,firstValue:j,selectionBehavior:h,focusable:$,onLeave:L,onEnter:xe,changeHighlight:K,onKeydownEnter:T,onKeydownNavigation:Xe,onKeydownTypeAhead:z,onCompositionStart:U,onCompositionEnd:I,highlightFirstItem:x}),(y,R)=>(u(),_(e(re),{ref_key:"primitiveElement",ref:k,as:y.as,"as-child":y.asChild,dir:e(J),"data-disabled":e(f)?"":void 0,onPointerleave:L,onFocusout:R[0]||(R[0]=async D=>{const H=D.relatedTarget||D.target;await ye(),M.value&&e(g)&&!e(g).contains(H)&&L(D)})},{default:c(()=>[V(y.$slots,"default",{modelValue:e(A)}),e(Z)&&y.name?(u(),_(e(xt),{key:0,name:y.name,value:e(A),disabled:e(f),required:y.required},null,8,["name","value","disabled","required"])):F("v-if",!0)]),_:3},8,["as","as-child","dir","data-disabled"]))}}),Ia=Ta,Oa=E({__name:"ListboxContent",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(s){const{CollectionSlot:t}=Qe(),a=Je(),n=rt(!1,10);return(l,i)=>(u(),_(e(t),null,{default:c(()=>[p(e(re),{role:"listbox",as:l.as,"as-child":l.asChild,tabindex:e(a).focusable.value?e(a).highlightedElement.value?"-1":"0":"-1","aria-orientation":e(a).orientation.value,"aria-multiselectable":!!e(a).multiple.value,"data-orientation":e(a).orientation.value,onMousedown:i[0]||(i[0]=$e(o=>n.value=!0,["left"])),onFocus:i[1]||(i[1]=o=>{e(n)||e(a).onEnter(o)}),onKeydown:[i[2]||(i[2]=_e(o=>{e(a).orientation.value==="vertical"&&(o.key==="ArrowLeft"||o.key==="ArrowRight")||e(a).orientation.value==="horizontal"&&(o.key==="ArrowUp"||o.key==="ArrowDown")||(o.preventDefault(),e(a).focusable.value&&e(a).onKeydownNavigation(o))},["down","up","left","right","home","end"])),_e(e(a).onKeydownEnter,["enter"]),e(a).onKeydownTypeAhead]},{default:c(()=>[V(l.$slots,"default")]),_:3},8,["as","as-child","tabindex","aria-orientation","aria-multiselectable","data-orientation","onKeydown"])]),_:3}))}}),Ma=Oa,Va=E({__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(s,{emit:t}){const a=s,l=Ue(a,"modelValue",t,{defaultValue:"",passive:a.modelValue===void 0}),i=Je(),{primitiveElement:o,currentElement:r}=We(),f=B(()=>a.disabled||i.disabled.value||!1),h=C();return Pt(()=>h.value=i.highlightedElement.value?.id),ie(()=>{i.focusable.value=!1,setTimeout(()=>{a.autoFocus&&r.value?.focus()},1)}),fe(()=>{i.focusable.value=!0}),(b,m)=>(u(),_(e(re),{ref_key:"primitiveElement",ref:o,as:b.as,"as-child":b.asChild,value:e(l),disabled:f.value?"":void 0,"data-disabled":f.value?"":void 0,"aria-disabled":f.value??void 0,"aria-activedescendant":h.value,type:"text",onKeydown:[_e($e(e(i).onKeydownNavigation,["prevent"]),["down","up","home","end"]),_e(e(i).onKeydownEnter,["enter"])],onInput:m[0]||(m[0]=v=>{l.value=v.target.value,e(i).highlightFirstItem()}),onCompositionstart:e(i).onCompositionStart,onCompositionend:e(i).onCompositionEnd},{default:c(()=>[V(b.$slots,"default",{modelValue:e(l)})]),_:3},8,["as","as-child","value","disabled","data-disabled","aria-disabled","aria-activedescendant","onKeydown","onCompositionstart","onCompositionend"]))}}),La=Va;const[Fa,qa]=be("ListboxGroup");var za=E({__name:"ListboxGroup",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(s){const t=s,a=Pe(void 0,"reka-listbox-group");return qa({id:a}),(n,l)=>(u(),_(e(re),q({role:"group"},t,{"aria-labelledby":e(a)}),{default:c(()=>[V(n.$slots,"default")]),_:3},16,["aria-labelledby"]))}}),ja=za,Ka=E({__name:"ListboxGroupLabel",props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(s){const t=s,a=Fa({id:""});return(n,l)=>(u(),_(e(re),q(t,{id:e(a).id}),{default:c(()=>[V(n.$slots,"default")]),_:3},16,["id"]))}}),Ua=Ka;const Ha="listbox.select",[An,Na]=be("ListboxItem");var Ga=E({__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(s,{emit:t}){const a=s,n=t,l=Pe(void 0,"reka-listbox-item"),{CollectionItem:i}=Qe(),{forwardRef:o,currentElement:r}=Ne(),f=Je(),h=B(()=>r.value===f.highlightedElement.value),b=B(()=>Da(f.modelValue.value,a.value,f.by)),m=B(()=>f.disabled.value||a.disabled);async function v(g){n("select",g),!g?.defaultPrevented&&!m.value&&g&&(f.onValueChange(a.value),f.changeHighlight(r.value))}function k(g){const P={originalEvent:g,value:a.value};Jt(Ha,v,P)}return Na({isSelected:b}),(g,P)=>(u(),_(e(i),{value:g.value},{default:c(()=>[Tt([h.value,b.value],()=>p(e(re),q({id:e(l)},g.$attrs,{ref:e(o),role:"option",tabindex:e(f).focusable.value?h.value?"0":"-1":-1,"aria-selected":b.value,as:g.as,"as-child":g.asChild,disabled:m.value?"":void 0,"data-disabled":m.value?"":void 0,"data-highlighted":h.value?"":void 0,"data-state":b.value?"checked":"unchecked",onClick:k,onKeydown:_e($e(k,["prevent"]),["space"]),onPointermove:P[0]||(P[0]=()=>{e(f).highlightedElement.value!==e(r)&&e(f).highlightOnHover.value&&!e(f).focusable.value&&e(f).changeHighlight(e(r),!1)})}),{default:c(()=>[V(g.$slots,"default")]),_:3},16,["id","tabindex","aria-selected","as","as-child","disabled","data-disabled","data-highlighted","data-state","onKeydown"]),P,1)]),_:3},8,["value"]))}}),Wa=Ga;const[Qa,Ja]=be("SwitchRoot");var Xa=E({__name:"SwitchRoot",props:{defaultValue:{type:Boolean,required:!1},modelValue:{type:[Boolean,null],required:!1,default:void 0},disabled:{type:Boolean,required:!1},id:{type:String,required:!1},value:{type:String,required:!1,default:"on"},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue"],setup(s,{emit:t}){const a=s,n=t,{disabled:l}=ot(a),i=Ue(a,"modelValue",n,{defaultValue:a.defaultValue,passive:a.modelValue===void 0});function o(){l.value||(i.value=!i.value)}const{forwardRef:r,currentElement:f}=Ne(),h=bt(f),b=B(()=>a.id&&f.value?document.querySelector(`[for="${a.id}"]`)?.innerText:void 0);return Ja({modelValue:i,toggleCheck:o,disabled:l}),(m,v)=>(u(),_(e(re),q(m.$attrs,{id:m.id,ref:e(r),role:"switch",type:m.as==="button"?"button":void 0,value:m.value,"aria-label":m.$attrs["aria-label"]||b.value,"aria-checked":e(i),"aria-required":m.required,"data-state":e(i)?"checked":"unchecked","data-disabled":e(l)?"":void 0,"as-child":m.asChild,as:m.as,disabled:e(l),onClick:o,onKeydown:_e($e(o,["prevent"]),["enter"])}),{default:c(()=>[V(m.$slots,"default",{modelValue:e(i)}),e(h)&&m.name?(u(),_(e(xt),{key:0,type:"checkbox",name:m.name,disabled:e(l),required:m.required,value:m.value,checked:!!e(i)},null,8,["name","disabled","required","value","checked"])):F("v-if",!0)]),_:3},16,["id","type","value","aria-label","aria-checked","aria-required","data-state","data-disabled","as-child","as","disabled","onKeydown"]))}}),Ya=Xa,Za=E({__name:"SwitchThumb",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(s){const t=Qa();return Ne(),(a,n)=>(u(),_(e(re),{"data-state":e(t).modelValue?.value?"checked":"unchecked","data-disabled":e(t).disabled.value?"":void 0,"as-child":a.asChild,as:a.as},{default:c(()=>[V(a.$slots,"default")]),_:3},8,["data-state","data-disabled","as-child","as"]))}}),es=Za;const wt=globalThis.setInterval,ts=700,as={state:"idle",version:"progress-json-v2",startedAt:null,completedAt:null,totalRows:0,processedRows:0,migratedRows:0,failedRows:0,currentSlug:null,errorMessage:null,percent:0};let ke=null,Me=!1,Re=0;function ss(){const s=Le("state-migration:status",()=>({...as})),t=Le("state-migration:initialized",()=>!1),a=B(()=>s.value.state==="running"||s.value.state==="failed");async function n(){if(!Me){Me=!0;try{const o=await $fetch("/api/state-migration/status",{query:{_:Date.now()}});s.value=o,t.value=!0,o.state==="completed"&&i()}catch{t.value=!0}finally{Me=!1}}}function l(){ke||(ke=wt(()=>{n()},ts))}function i(){ke&&(clearInterval(ke),ke=null)}return ie(()=>{Re+=1,n(),l()}),fe(()=>{Re=Math.max(0,Re-1),Re===0&&i()}),{status:s,initialized:t,isBlocking:a,refreshStatus:n}}const os={key:0,class:"fixed inset-0 z-[110] flex items-center justify-center bg-[radial-gradient(circle_at_18%_20%,oklch(0.92_0.03_218_/_0.65),transparent_52%),radial-gradient(circle_at_82%_80%,oklch(0.95_0.04_40_/_0.5),transparent_46%),oklch(0.17_0.02_240_/_0.72)] px-4 backdrop-blur-sm",role:"alert","aria-live":"assertive","aria-busy":"true"},ns={class:"w-full max-w-xl rounded-2xl border border-border/70 bg-background/95 p-6 shadow-2xl md:p-7"},ls={class:"mb-4 flex items-start gap-3"},rs={class:"flex size-11 shrink-0 items-center justify-center rounded-xl border border-border bg-muted/60"},is={class:"space-y-1"},us={class:"text-xl font-semibold tracking-tight"},ds={class:"space-y-3 rounded-xl border border-border/80 bg-card/70 p-4"},cs={class:"flex items-center justify-between gap-3 text-sm"},ps={class:"inline-flex items-center gap-1.5 text-muted-foreground"},fs={class:"font-medium tabular-nums"},ms={class:"h-2 overflow-hidden rounded-full border border-border/70 bg-muted/60"},vs={class:"text-sm text-muted-foreground"},hs={key:0,class:"mt-4 flex items-center justify-end"},gs=E({__name:"StateMigrationOverlay",setup(s){const{status:t,initialized:a,isBlocking:n,refreshStatus:l}=ss(),i=Ut("(prefers-reduced-motion: reduce)"),o=B(()=>Math.max(0,Math.min(100,t.value.percent))),r=B(()=>`${o.value}%`),f=B(()=>{const m=t.value.totalRows,v=t.value.processedRows;return m<=0?"Preparing migration...":`${v} of ${m} PRD states migrated`}),h=B(()=>t.value.state==="failed"?t.value.errorMessage||"Migration failed before completion.":t.value.currentSlug?`Migrating ${t.value.currentSlug}`:"Preparing migration steps"),b=B(()=>a.value&&n.value);return(m,v)=>(u(),_(Ot,{"enter-active-class":"transition-all duration-300 ease-[var(--ease-out-cubic)] motion-reduce:transition-none","enter-from-class":"opacity-0 scale-[0.98]","leave-active-class":"transition-all duration-200 ease-[var(--ease-out-cubic)] motion-reduce:transition-none","leave-to-class":"opacity-0"},{default:c(()=>[e(b)?(u(),S("div",os,[d("div",ns,[d("div",ls,[d("div",rs,[e(t).state==="running"?(u(),_(e(ut),{key:0,class:oe(["size-5 text-primary",e(i)?"":"animate-spin"])},null,8,["class"])):(u(),_(e(Xt),{key:1,class:"size-5 text-destructive"}))]),d("div",is,[v[0]||(v[0]=d("p",{class:"text-sm font-semibold uppercase tracking-[0.09em] text-muted-foreground"},"Data upgrade",-1)),d("h2",us,O(e(t).state==="running"?"One-time migration in progress":"Migration needs attention"),1),v[1]||(v[1]=d("p",{class:"text-sm text-muted-foreground"}," Steward is upgrading legacy PRD progress data to the latest format. This runs once per local database. ",-1))])]),d("div",ds,[d("div",cs,[d("span",ps,[p(e(ba),{class:"size-3.5"}),G(" "+O(e(f)),1)]),d("span",fs,O(e(o))+"%",1)]),d("div",ms,[d("div",{class:oe(["migration-progress-fill h-full rounded-full motion-reduce:transition-none",e(i)?"":"migration-progress-fill--animated"]),style:It({width:e(r)})},null,6)]),d("p",vs,O(e(h)),1)]),e(t).state==="failed"?(u(),S("div",hs,[p(e(ce),{size:"sm",variant:"outline",onClick:e(l)},{default:c(()=>[...v[2]||(v[2]=[G(" Retry status check ",-1)])]),_:1},8,["onClick"])])):F("",!0)])])):F("",!0)]),_:1}))}}),ys=Object.assign(gs,{__name:"LayoutStateMigrationOverlay"}),_s={class:"flex items-center gap-2 truncate"},bs={class:"truncate"},xs={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"},ws={class:"max-h-[200px] overflow-y-auto"},ks=["aria-selected","onClick"],Cs={class:"flex flex-1 flex-col gap-0.5 overflow-hidden text-left"},Ss={class:"truncate font-medium"},$s={class:"truncate text-xs text-muted-foreground"},Rs=["onClick"],Es={key:1,class:"px-2 py-1.5 text-sm text-muted-foreground"},As={key:2,class:"my-1 h-px bg-border"},Bs={class:"space-y-2"},Ds={class:"flex gap-2"},Ps={key:0,class:"text-sm text-destructive"},Ts={key:0,class:"space-y-2 rounded-md border p-3"},Is={class:"flex items-center gap-2 text-sm"},Os=["disabled"],Ms={class:"flex-1 truncate font-mono text-xs text-muted-foreground"},Vs={class:"max-h-[200px] overflow-y-auto"},Ls={key:0,class:"py-2 text-center text-sm text-muted-foreground"},Fs={key:1,class:"py-2 text-center text-sm text-muted-foreground"},qs=["onClick"],zs={class:"truncate"},js={key:0},Ks={key:1},Us=E({__name:"RepoSelector",setup(s,{expose:t}){const a=nt(),n=Ke(),{repos:l,currentRepo:i,currentRepoId:o,selectRepo:r,addRepo:f,removeRepo:h}=De(),{showSuccess:b}=it(),m=Le("prd-show-archived",()=>!1),v=C(!1),k=C(""),g=C(null);Ht(g,()=>{v.value&&(v.value=!1,k.value="")}),pe(()=>n.fullPath,()=>{v.value=!1,k.value=""});async function P(I){r(I),v.value=!1,k.value="";try{const x=await J(I);x?a.push(`/${I}/${x}`):a.push("/")}catch{a.push("/")}}async function J(I){return(await $fetch(`/api/repos/${I}/prds`,{query:m.value?{includeArchived:"1"}:void 0}))?.[0]?.slug||null}function Z(){v.value=!1,ae.value=!0}const j=C(!1),w=C(""),$=C(null),A=C([]),X=C(!1),M=B(()=>!!$.value&&$.value!==w.value);async function ee(I){X.value=!0;try{const x=await $fetch("/api/browse",{query:{path:I||w.value||void 0}});w.value=x.current,$.value=x.parent,A.value=x.directories}catch{}finally{X.value=!1}}function Q(){j.value=!0,ee(N.value||void 0)}function ue(I){N.value=I,j.value=!1,Y.value=null}function he(){const I=$.value;!M.value||!I||ee(I)}const ae=C(!1),N=C(""),Y=C(null),K=C(!1),ne=B(()=>{if(!k.value)return l.value;const I=k.value.toLowerCase();return l.value?.filter(x=>x.name.toLowerCase().includes(I)||x.path.toLowerCase().includes(I))??[]});async function T(){if(!N.value.trim()){Y.value="Please enter a repository path";return}K.value=!0,Y.value=null;try{const I=await f(N.value.trim());if(ae.value=!1,N.value="",b("Repository added",I?.name||"Successfully added repository"),I?.id)try{const x=await J(I.id);x&&a.push(`/${I.id}/${x}`)}catch{}}catch(I){if(I instanceof Error){const x=I;Y.value=x.data?.message||I.message}else Y.value="Failed to add repository"}finally{K.value=!1}}async function z(I,x){I.stopPropagation(),await h(x)}function U(){ae.value=!1,N.value="",Y.value=null}return t({openAddDialog:()=>{ae.value=!0}}),(I,x)=>(u(),S("div",{ref_key:"dropdownRef",ref:g,class:"relative"},[d("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]=L=>v.value=!e(v))},[d("span",_s,[p(e(ma),{class:"size-4 shrink-0 text-muted-foreground"}),d("span",bs,O(e(i)?.name??"Select repository"),1)]),p(e(Yt),{class:"size-4 shrink-0 opacity-50"})]),e(v)?(u(),S("div",xs,[Mt(d("input",{"onUpdate:modelValue":x[1]||(x[1]=L=>Ce(k)?k.value=L: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),[[Vt,e(k)]]),d("div",ws,[e(ne)?.length?(u(!0),S(se,{key:0},le(e(ne),L=>(u(),S("div",{key:L.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(o)===L.id,onClick:xe=>P(L.id)},[p(e(dt),{class:oe(["size-4 shrink-0",e(o)===L.id?"opacity-100":"opacity-0"])},null,8,["class"]),d("div",Cs,[d("span",Ss,O(L.name),1),d("span",$s,O(L.path),1)]),d("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:xe=>z(xe,L.id)},[p(e(wa),{class:"size-3.5 text-destructive"})],8,Rs)],8,ks))),128)):(u(),S("div",Es," No repositories found. ")),e(ne)?.length?(u(),S("div",As)):F("",!0),d("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:Z},[p(e(Zt),{class:"size-4"}),x[5]||(x[5]=d("span",null,"Add repository...",-1))])])])):F("",!0),p(e(ea),{open:e(ae),"onUpdate:open":x[4]||(x[4]=L=>ae.value=L)},{default:c(()=>[p(e(ta),{side:"right",class:"flex h-full flex-col",onEscapeKeyDown:U},{default:c(()=>[p(e(aa),{class:"px-6"},{default:c(()=>[p(e(sa),null,{default:c(()=>[...x[6]||(x[6]=[G("Add Repository",-1)])]),_:1}),p(e(oa),null,{default:c(()=>[...x[7]||(x[7]=[G(" Enter the absolute path to a repository containing PRD documents. ",-1)])]),_:1})]),_:1}),d("form",{id:"add-repo-form",class:"min-h-0 flex-1 space-y-4 overflow-y-auto px-6",onSubmit:$e(T,["prevent"])},[d("div",Bs,[x[8]||(x[8]=d("label",{for:"repo-path",class:"text-sm font-medium"}," Repository Path ",-1)),d("div",Ds,[p(e(va),{id:"repo-path",modelValue:e(N),"onUpdate:modelValue":x[2]||(x[2]=L=>Ce(N)?N.value=L:null),placeholder:"/path/to/your/project","aria-invalid":!!e(Y),disabled:e(K),class:"flex-1"},null,8,["modelValue","aria-invalid","disabled"]),p(e(ce),{type:"button",variant:"outline",size:"icon",disabled:e(K),onClick:Q},{default:c(()=>[p(e(je),{class:"size-4"})]),_:1},8,["disabled"])]),e(Y)?(u(),S("p",Ps,O(e(Y)),1)):F("",!0),x[9]||(x[9]=d("p",{class:"text-xs text-muted-foreground"},[G(" The repository should contain a "),d("code",{class:"rounded bg-muted px-1"},"docs/prd/"),G(" directory with markdown files. ")],-1))]),e(j)?(u(),S("div",Ts,[d("div",Is,[d("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(M),onClick:he},[p(e(ga),{class:"size-3"}),x[10]||(x[10]=G(" Up ",-1))],8,Os),d("span",Ms,O(e(w)),1),p(e(ce),{type:"button",variant:"ghost",size:"sm",class:"h-7 text-xs",onClick:x[3]||(x[3]=L=>ue(e(w)))},{default:c(()=>[...x[11]||(x[11]=[G(" Select ",-1)])]),_:1})]),d("div",Vs,[e(X)?(u(),S("div",Ls," Loading... ")):e(A).length?(u(!0),S(se,{key:2},le(e(A),L=>(u(),S("button",{key:L.path,type:"button",class:"flex w-full items-center gap-2 rounded px-2 py-1 text-sm hover:bg-accent",onClick:xe=>ee(L.path)},[p(e(je),{class:"size-4 text-muted-foreground"}),d("span",zs,O(L.name),1)],8,qs))),128)):(u(),S("div",Fs," No subdirectories "))])])):F("",!0)],32),p(e(na),{class:"px-6 pb-6"},{default:c(()=>[p(e(ce),{type:"button",variant:"outline",disabled:e(K),onClick:U},{default:c(()=>[...x[12]||(x[12]=[G(" Cancel ",-1)])]),_:1},8,["disabled"]),p(e(ce),{type:"submit",form:"add-repo-form",disabled:e(K)},{default:c(()=>[e(K)?(u(),S("span",js,"Adding...")):(u(),S("span",Ks,"Add Repository"))]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["open"])],512))}}),Hs=Object.assign(Us,{__name:"LayoutRepoSelector"}),Ns=E({__name:"Switch",props:{defaultValue:{type:Boolean},modelValue:{type:[Boolean,null]},disabled:{type:Boolean},id:{},value:{},asChild:{type:Boolean},as:{},name:{},required:{type:Boolean},class:{}},emits:["update:modelValue"],setup(s,{emit:t}){const a=s,n=t,l=te(a,"class"),i=ve(l,n);return(o,r)=>(u(),_(e(Ya),q({"data-slot":"switch"},e(i),{class:e(W)("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-colors duration-150 ease-[var(--ease-out-cubic)] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 motion-reduce:transition-none",a.class)}),{default:c(f=>[p(e(es),{"data-slot":"switch-thumb",class:oe(e(W)("bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform duration-150 ease-[var(--ease-in-out-cubic)] will-change-transform motion-reduce:transition-none data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0"))},{default:c(()=>[V(o.$slots,"thumb",Ae(Be(f)))]),_:2},1032,["class"])]),_:3},16,["class"]))}}),Gs=Object.assign(Ns,{__name:"UiSwitch"}),Ws={class:"flex h-full w-64 flex-col border-r border-border bg-background"},Qs={class:"p-2"},Js={class:"flex h-10 items-center justify-between gap-2 px-2"},Xs={class:"flex items-center gap-2 whitespace-nowrap text-xs text-muted-foreground"},Ys={key:1,class:"flex items-center justify-center py-8"},Zs={key:2,class:"px-2 py-8 text-center"},eo={key:3,class:"px-2 py-8 text-center"},to={key:4,class:"px-2 py-8 text-center"},ao={class:"mt-2 text-sm text-muted-foreground"},so={class:"mt-1 text-xs text-muted-foreground/70"},oo={key:5,class:"space-y-1"},no={class:"flex-1 truncate"},lo=E({__name:"Sidebar",setup(s){const t=Ke(),{prds:a,prdsStatus:n,showArchived:l,setShowArchived:i,refreshPrds:o}=He(),{currentRepoId:r}=De(),f=B(()=>t.params.prd);function h(v){return f.value===v}const b=B(()=>r.value?`/${r.value}/repo-graph`:"/"),m=B(()=>r.value?t.path===`/${r.value}/repo-graph`:!1);return(v,k)=>{const g=ya;return u(),S("aside",Ws,[p(e(la),{class:"flex-1"},{default:c(()=>[d("div",Qs,[e(r)?(u(),_(g,{key:0,to:e(b),class:oe(["group mb-2 flex items-center gap-3 rounded-md px-3 py-2 text-sm transition-colors",[e(m)?"bg-accent text-accent-foreground":"text-muted-foreground hover:bg-accent/50 hover:text-foreground"]])},{default:c(()=>[p(e(ct),{class:"size-4 shrink-0"}),k[0]||(k[0]=d("span",{class:"flex-1 truncate"},"Repo Graph",-1))]),_:1},8,["to","class"])):F("",!0),d("div",Js,[k[2]||(k[2]=d("h2",{class:"text-sm font-medium text-muted-foreground"},"Documents",-1)),d("div",Xs,[k[1]||(k[1]=d("span",{id:"sidebar-show-archived-label"},"Show archived",-1)),p(e(Gs),{"model-value":e(l),"aria-labelledby":"sidebar-show-archived-label","onUpdate:modelValue":e(i)},null,8,["model-value","onUpdate:modelValue"])])]),e(n)==="pending"?(u(),S("div",Ys,[p(e(ut),{class:"size-5 animate-spin text-muted-foreground"})])):e(r)?e(n)==="error"?(u(),S("div",eo,[p(e(ra),{class:"mx-auto size-8 text-destructive/50"}),k[5]||(k[5]=d("p",{class:"mt-2 text-sm text-muted-foreground"}," Failed to load PRDs ",-1)),p(e(ce),{variant:"ghost",size:"sm",class:"mt-2",onClick:e(o)},{default:c(()=>[p(e(pt),{class:"mr-1 size-3"}),k[4]||(k[4]=G(" Retry ",-1))]),_:1},8,["onClick"])])):e(a)?.length?(u(),S("nav",oo,[(u(!0),S(se,null,le(e(a),P=>(u(),_(g,{key:P.slug,to:`/${e(r)}/${P.slug}`,class:oe(["group flex items-center gap-3 rounded-md px-3 py-2 text-sm transition-colors",[h(P.slug)?"bg-accent text-accent-foreground":P.archived?"text-muted-foreground/75 hover:bg-accent/40 hover:text-foreground":"text-muted-foreground hover:bg-accent/50 hover:text-foreground"]])},{default:c(()=>[p(e(ze),{class:"size-4 shrink-0"}),d("span",no,O(P.name),1),P.archived?(u(),_(e(Ze),{key:0,variant:"outline",class:"shrink-0 text-[10px] uppercase tracking-wide"},{default:c(()=>[...k[6]||(k[6]=[G(" Archived ",-1)])]),_:1})):F("",!0),P.hasState&&P.taskCount?(u(),_(e(Ze),{key:1,variant:"secondary",class:"shrink-0 text-xs"},{default:c(()=>[G(O(P.completedCount??0)+"/"+O(P.taskCount),1)]),_:2},1024)):F("",!0)]),_:2},1032,["to","class"]))),128))])):(u(),S("div",to,[p(e(ze),{class:"mx-auto size-8 text-muted-foreground/50"}),d("p",ao,O(e(l)?"No PRDs found":"No active PRDs found"),1),d("p",so,O(e(l)?"Add .md files to docs/prd/":"Archived PRDs are hidden. Use the archive toggle above."),1)])):(u(),S("div",Zs,[...k[3]||(k[3]=[d("p",{class:"text-sm text-muted-foreground"}," Select a repository to view PRDs ",-1)])]))])]),_:1})])}}}),ro=Object.assign(lo,{__name:"LayoutSidebar"}),io=E({__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(s,{emit:t}){const a=s,n=t,l=te(a,"class"),i=ve(l,n),o=C(new Map),r=C(new Map),{contains:f}=Ca({sensitivity:"base"}),h=Lt({search:a.defaultSearch||"",filtered:{count:0,items:new Map,groups:new Set}});pe(()=>a.defaultSearch,m=>{m!==void 0&&(h.search=m)});function b(){if(!h.search){h.filtered.count=o.value.size;return}h.filtered.groups=new Set;let m=0;for(const[v,k]of o.value){const g=f(k,h.search);h.filtered.items.set(v,g?1:0),g&&m++}for(const[v,k]of r.value)for(const g of k)if(h.filtered.items.get(g)>0){h.filtered.groups.add(v);break}h.filtered.count=m}return pe(()=>h.search,()=>{b()}),pe(()=>o.value.size,()=>{h.search&&b()}),Mo({allItems:o,allGroups:r,filterState:h}),(m,v)=>(u(),_(e(Ia),q({"data-slot":"command"},e(i),{class:e(W)("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",a.class)}),{default:c(()=>[V(m.$slots,"default")]),_:3},16,["class"]))}}),uo=Object.assign(io,{__name:"UiCommand"}),co=E({__name:"Dialog",props:{open:{type:Boolean},defaultOpen:{type:Boolean},modal:{type:Boolean}},emits:["update:open"],setup(s,{emit:t}){const l=ve(s,t);return(i,o)=>(u(),_(e(ia),q({"data-slot":"dialog"},e(l)),{default:c(r=>[V(i.$slots,"default",Ae(Be(r)))]),_:3},16))}}),kt=Object.assign(co,{__name:"UiDialog"}),po=E({__name:"DialogClose",props:{asChild:{type:Boolean},as:{}},setup(s){const t=s;return(a,n)=>(u(),_(e(Ge),q({"data-slot":"dialog-close"},t),{default:c(()=>[V(a.$slots,"default")]),_:3},16))}});Object.assign(po,{__name:"UiDialogClose"});const fo=E({__name:"DialogOverlay",props:{forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(s){const t=s,a=te(t,"class");return(n,l)=>(u(),_(e(ft),q({"data-slot":"dialog-overlay"},e(a),{class:e(W)("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:c(()=>[V(n.$slots,"default")]),_:3},16,["class"]))}}),mo=Object.assign(fo,{__name:"UiDialogOverlay"}),vo=E({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(s,{emit:t}){const a=s,n=t,l=te(a,"class"),i=ve(l,n);return(o,r)=>(u(),_(e(mt),null,{default:c(()=>[p(mo),p(e(vt),q({"data-slot":"dialog-content"},{...o.$attrs,...e(i)},{class:e(W)("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",a.class)}),{default:c(()=>[V(o.$slots,"default"),s.showCloseButton?(u(),_(e(Ge),{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:c(()=>[p(e(ht)),r[0]||(r[0]=d("span",{class:"sr-only"},"Close",-1))]),_:1})):F("",!0)]),_:3},16,["class"])]),_:3}))}}),Ct=Object.assign(vo,{__name:"UiDialogContent"}),ho=E({__name:"DialogDescription",props:{asChild:{type:Boolean},as:{},class:{}},setup(s){const t=s,a=te(t,"class"),n=Te(a);return(l,i)=>(u(),_(e(ua),q({"data-slot":"dialog-description"},e(n),{class:e(W)("text-muted-foreground text-sm",t.class)}),{default:c(()=>[V(l.$slots,"default")]),_:3},16,["class"]))}}),St=Object.assign(ho,{__name:"UiDialogDescription"}),go=E({__name:"DialogFooter",props:{class:{}},setup(s){const t=s;return(a,n)=>(u(),S("div",{"data-slot":"dialog-footer",class:oe(e(W)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",t.class))},[V(a.$slots,"default")],2))}});Object.assign(go,{__name:"UiDialogFooter"});const yo=E({__name:"DialogHeader",props:{class:{}},setup(s){const t=s;return(a,n)=>(u(),S("div",{"data-slot":"dialog-header",class:oe(e(W)("flex flex-col gap-2 text-center sm:text-left",t.class))},[V(a.$slots,"default")],2))}}),$t=Object.assign(yo,{__name:"UiDialogHeader"}),_o=E({inheritAttrs:!1,__name:"DialogScrollContent",props:{forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(s,{emit:t}){const a=s,n=t,l=te(a,"class"),i=ve(l,n);return(o,r)=>(u(),_(e(mt),null,{default:c(()=>[p(e(ft),{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:c(()=>[p(e(vt),q({class:e(W)("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",a.class)},{...o.$attrs,...e(i)},{onPointerDownOutside:r[0]||(r[0]=f=>{const h=f.detail.originalEvent,b=h.target;(h.offsetX>b.clientWidth||h.offsetY>b.clientHeight)&&f.preventDefault()})}),{default:c(()=>[V(o.$slots,"default"),p(e(Ge),{class:"absolute top-4 right-4 p-0.5 transition-colors rounded-md hover:bg-secondary"},{default:c(()=>[p(e(ht),{class:"w-4 h-4"}),r[1]||(r[1]=d("span",{class:"sr-only"},"Close",-1))]),_:1})]),_:3},16,["class"])]),_:3})]),_:3}))}});Object.assign(_o,{__name:"UiDialogScrollContent"});const bo=E({__name:"DialogTitle",props:{asChild:{type:Boolean},as:{},class:{}},setup(s){const t=s,a=te(t,"class"),n=Te(a);return(l,i)=>(u(),_(e(da),q({"data-slot":"dialog-title"},e(n),{class:e(W)("text-lg leading-none font-semibold",t.class)}),{default:c(()=>[V(l.$slots,"default")]),_:3},16,["class"]))}}),Rt=Object.assign(bo,{__name:"UiDialogTitle"}),xo=E({__name:"DialogTrigger",props:{asChild:{type:Boolean},as:{}},setup(s){const t=s;return(a,n)=>(u(),_(e(ca),q({"data-slot":"dialog-trigger"},t),{default:c(()=>[V(a.$slots,"default")]),_:3},16))}});Object.assign(xo,{__name:"UiDialogTrigger"});const wo=E({__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(s,{emit:t}){const l=ve(s,t);return(i,o)=>(u(),_(e(kt),Ae(Be(e(l))),{default:c(r=>[p(e(Ct),{class:"overflow-hidden p-0","show-close-button":!1},{default:c(()=>[p(e($t),{class:"sr-only"},{default:c(()=>[p(e(Rt),null,{default:c(()=>[G(O(s.title),1)]),_:1}),p(e(St),null,{default:c(()=>[G(O(s.description),1)]),_:1})]),_:1}),p(uo,{"default-search":s.defaultSearch},{default:c(()=>[V(i.$slots,"default",Ae(Be(r)))]),_:2},1032,["default-search"])]),_:2},1024)]),_:3},16))}}),ko=Object.assign(wo,{__name:"UiCommandDialog"}),Co=E({__name:"CommandEmpty",props:{asChild:{type:Boolean},as:{},class:{}},setup(s){const t=s,a=te(t,"class"),{filterState:n}=Ie(),l=B(()=>!!n.search&&n.filtered.count===0);return(i,o)=>l.value?(u(),_(e(re),q({key:0,"data-slot":"command-empty"},e(a),{class:e(W)("py-6 text-center text-sm",t.class)}),{default:c(()=>[V(i.$slots,"default")]),_:3},16,["class"])):F("",!0)}}),So=Object.assign(Co,{__name:"UiCommandEmpty"}),$o=E({__name:"CommandGroup",props:{asChild:{type:Boolean},as:{},class:{},heading:{}},setup(s){const t=s,a=te(t,"class"),{allGroups:n,filterState:l}=Ie(),i=Pe(),o=B(()=>l.search?l.filtered.groups.has(i):!0);return Lo({id:i}),ie(()=>{n.value.has(i)||n.value.set(i,new Set)}),fe(()=>{n.value.delete(i)}),(r,f)=>(u(),_(e(ja),q(e(a),{id:e(i),"data-slot":"command-group",class:e(W)("text-foreground overflow-hidden p-1",t.class),hidden:o.value?void 0:!0}),{default:c(()=>[s.heading?(u(),_(e(Ua),{key:0,"data-slot":"command-group-heading",class:"px-2 py-1.5 text-xs font-medium text-muted-foreground"},{default:c(()=>[G(O(s.heading),1)]),_:1})):F("",!0),V(r.$slots,"default")]),_:3},16,["id","class","hidden"]))}}),Ve=Object.assign($o,{__name:"UiCommandGroup"}),Ro={"data-slot":"command-input-wrapper",class:"flex h-9 items-center gap-2 border-b px-3"},Eo=E({inheritAttrs:!1,__name:"CommandInput",props:{modelValue:{},autoFocus:{type:Boolean},disabled:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(s){const t=s,a=te(t,"class"),n=Te(a),{filterState:l}=Ie(),i=C(null);return ie(()=>{ye(()=>{const o=i.value?.$el;if(o&&l.search){const r=l.search.length;o.setSelectionRange(r,r)}})}),(o,r)=>(u(),S("div",Ro,[p(e(xa),{class:"size-4 shrink-0 opacity-50"}),p(e(La),q({ref_key:"inputRef",ref:i},{...e(n),...o.$attrs},{modelValue:e(l).search,"onUpdate:modelValue":r[0]||(r[0]=f=>e(l).search=f),"data-slot":"command-input","auto-focus":"",class:e(W)("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"])]))}}),Ao=Object.assign(Eo,{__name:"UiCommandInput"}),Bo=E({__name:"CommandItem",props:{value:{},disabled:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:["select"],setup(s,{emit:t}){const a=s,n=t,l=te(a,"class"),i=ve(l,n),o=Pe(),{filterState:r,allItems:f,allGroups:h}=Ie(),b=Vo(),m=B(()=>{if(r.search){const g=r.filtered.items.get(o);return g===void 0?!0:g>0}else return!0}),v=C(),k=Nt(v);return ie(()=>{if(!(k.value instanceof HTMLElement))return;f.value.set(o,k.value.textContent??a.value?.toString()??"");const g=b?.id;g&&(h.value.has(g)?h.value.get(g)?.add(o):h.value.set(g,new Set([o])))}),fe(()=>{f.value.delete(o)}),(g,P)=>m.value?(u(),_(e(Wa),q({key:0},e(i),{id:e(o),ref_key:"itemRef",ref:v,"data-slot":"command-item",class:e(W)("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",a.class),onSelect:P[0]||(P[0]=()=>{e(r).search=""})}),{default:c(()=>[V(g.$slots,"default")]),_:3},16,["id","class"])):F("",!0)}}),de=Object.assign(Bo,{__name:"UiCommandItem"}),Do={role:"presentation"},Po=E({__name:"CommandList",props:{asChild:{type:Boolean},as:{},class:{}},setup(s){const t=s,a=te(t,"class"),n=Te(a);return(l,i)=>(u(),_(e(Ma),q({"data-slot":"command-list"},e(n),{class:e(W)("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto scrollbar-none",t.class)}),{default:c(()=>[d("div",Do,[V(l.$slots,"default")])]),_:3},16,["class"]))}}),To=Object.assign(Po,{__name:"UiCommandList"}),Io=E({__name:"CommandSeparator",props:{orientation:{},decorative:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(s){const t=s,a=te(t,"class");return(n,l)=>(u(),_(e(pa),q({"data-slot":"command-separator"},e(a),{class:e(W)("bg-border -mx-1 h-px",t.class)}),{default:c(()=>[V(n.$slots,"default")]),_:3},16,["class"]))}}),tt=Object.assign(Io,{__name:"UiCommandSeparator"}),Oo=E({__name:"CommandShortcut",props:{class:{}},setup(s){const t=s;return(a,n)=>(u(),S("span",{"data-slot":"command-shortcut",class:oe(e(W)("text-muted-foreground ml-auto text-xs tracking-widest",t.class))},[V(a.$slots,"default")],2))}});Object.assign(Oo,{__name:"UiCommandShortcut"});const[Ie,Mo]=be("Command"),[Vo,Lo]=be("CommandGroup"),Fo={class:"flex items-center gap-1"},qo={key:0,class:"text-[10px] uppercase tracking-wide text-muted-foreground"},zo={class:"flex-1"},jo={class:"flex-1"},Ko={class:"ml-auto flex items-center gap-1"},Uo={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"},Ho={class:"flex-1"},No={class:"ml-auto flex items-center gap-1"},Go={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"},Wo={class:"ml-auto flex items-center gap-1"},Qo={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"},Jo={class:"flex-1"},Xo=E({__name:"CommandPalette",props:{open:{type:Boolean,default:!1},openModifiers:{},filter:{default:""},filterModifiers:{}},emits:Ft(["openShortcutsHelp"],["update:open","update:filter"]),setup(s,{emit:t}){const a=Fe(s,"open"),n=Fe(s,"filter"),l=t,i=nt(),{themeMode:o,cycleThemeMode:r}=lt(),{prds:f,showArchived:h,toggleShowArchived:b}=He(),{repos:m,currentRepoId:v,selectRepo:k,refreshGitRepos:g}=De(),{showSuccess:P,showError:J}=it(),Z=["document","board","graph"],j={document:"Document",board:"Task Board",graph:"Graph"},w=C("document");{const T=localStorage.getItem("prd-viewer-tab");(T==="document"||T==="board"||T==="graph")&&(w.value=T)}function $(T){T.key!=="prd-viewer-tab"||!T.newValue||(T.newValue==="document"||T.newValue==="board"||T.newValue==="graph")&&(w.value=T.newValue)}ie(()=>{window.addEventListener("storage",$)}),fe(()=>{window.removeEventListener("storage",$)});const A=B(()=>{const T=Z.indexOf(w.value),z=T>=0?T:0;return Z[(z+1)%Z.length]}),X=B(()=>j[A.value]);function M(T){v.value&&(i.push(`/${v.value}/${T}`),a.value=!1)}function ee(T){k(T),i.push("/"),a.value=!1}function Q(){r(),a.value=!1}function ue(){const T=A.value;w.value=T,localStorage.setItem("prd-viewer-tab",T),window.dispatchEvent(new StorageEvent("storage",{key:"prd-viewer-tab",newValue:T})),a.value=!1}function he(){a.value=!1,l("openShortcutsHelp")}function ae(){b(),a.value=!1}const N=C(!1);async function Y(){if(!(!v.value||N.value)){N.value=!0,a.value=!1;try{const T=await g(v.value);P(`Discovered ${T.discovered} git repositories`)}catch{J("Failed to refresh git repos")}finally{N.value=!1}}}pe(a,T=>{T||(n.value="")});const K=B(()=>navigator.platform.toUpperCase().indexOf("MAC")>=0),ne=B(()=>K.value?"⌘":"Ctrl");return(T,z)=>(u(),_(e(ko),{open:a.value,"onUpdate:open":z[0]||(z[0]=U=>a.value=U),"default-search":n.value},{default:c(()=>[p(e(Ao),{placeholder:"Type a command or search..."}),p(e(To),null,{default:c(()=>[p(e(So),null,{default:c(()=>[...z[1]||(z[1]=[G("No results found.",-1)])]),_:1}),e(f)?.length?(u(),_(e(Ve),{key:0,heading:"Documents"},{default:c(()=>[(u(!0),S(se,null,le(e(f),U=>(u(),_(e(de),{key:U.slug,value:`PRD: ${U.name}`,onSelect:I=>M(U.slug)},{default:c(()=>[p(e(ze),{class:"size-4"}),d("span",Fo,[d("span",null,O(U.name),1),U.archived?(u(),S("span",qo,"Archived")):F("",!0)])]),_:2},1032,["value","onSelect"]))),128))]),_:1})):F("",!0),e(f)?.length&&e(m)?.length?(u(),_(e(tt),{key:1})):F("",!0),e(m)?.length?(u(),_(e(Ve),{key:2,heading:"Repositories"},{default:c(()=>[(u(!0),S(se,null,le(e(m),U=>(u(),_(e(de),{key:U.id,value:`repo-${U.id} ${U.name}`,onSelect:I=>ee(U.id)},{default:c(()=>[p(e(je),{class:"size-4"}),d("span",zo,O(U.name),1),U.id===e(v)?(u(),_(e(dt),{key:0,class:"size-4 text-primary"})):F("",!0)]),_:2},1032,["value","onSelect"]))),128))]),_:1})):F("",!0),e(m)?.length?(u(),_(e(tt),{key:3})):F("",!0),p(e(Ve),{heading:"Actions"},{default:c(()=>[p(e(de),{value:"cycle-theme light dark system",onSelect:Q},{default:c(()=>[e(o)==="system"?(u(),_(e(gt),{key:0,class:"size-4"})):e(o)==="light"?(u(),_(e(_t),{key:1,class:"size-4"})):(u(),_(e(yt),{key:2,class:"size-4"})),d("span",jo,"Cycle theme mode ("+O(e(o))+")",1),d("div",Ko,[d("kbd",Uo,O(e(ne)),1),z[2]||(z[2]=d("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}),p(e(de),{value:`switch-tab ${e(X).toLowerCase()}`,onSelect:ue},{default:c(()=>[p(e(ct),{class:"size-4"}),d("span",Ho,"Switch to "+O(e(X)),1),d("div",No,[d("kbd",Go,O(e(ne)),1),z[3]||(z[3]=d("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"]),p(e(de),{value:"keyboard shortcuts help",onSelect:he},{default:c(()=>[p(e(fa),{class:"size-4"}),z[5]||(z[5]=d("span",{class:"flex-1"},"Keyboard shortcuts",-1)),d("div",Wo,[d("kbd",Qo,O(e(ne)),1),z[4]||(z[4]=d("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(v)?(u(),_(e(de),{key:0,value:"refresh git repos rescan discover",disabled:e(N),onSelect:Y},{default:c(()=>[p(e(pt),{class:oe(["size-4",{"animate-spin":e(N)}])},null,8,["class"]),z[6]||(z[6]=d("span",{class:"flex-1"},"Refresh git repos",-1))]),_:1},8,["disabled"])):F("",!0),p(e(de),{value:"toggle archived documents",onSelect:ae},{default:c(()=>[p(e(_a),{class:"size-4"}),d("span",Jo,O(e(h)?"Hide archived documents":"Show archived documents"),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["open","default-search"]))}}),Yo=Object.assign(Xo,{__name:"CommandPalette"}),Zo={class:"space-y-6"},en={class:"mb-3 text-sm font-medium text-muted-foreground"},tn={class:"space-y-2"},an={class:"text-sm"},sn={class:"flex items-center gap-1"},on=E({__name:"ShortcutsHelp",props:{open:{type:Boolean,default:!1},openModifiers:{}},emits:["update:open"],setup(s){const t=Fe(s,"open"),a=B(()=>navigator.platform.toUpperCase().indexOf("MAC")>=0),n=B(()=>a.value?"⌘":"Ctrl"),l=B(()=>[{name:"Navigation",shortcuts:[{keys:[n.value,"K"],description:"Open command palette"},{keys:[n.value,"J"],description:"Quick jump to document"}]},{name:"Actions",shortcuts:[{keys:[n.value,"."],description:"Cycle theme mode (light/dark/system)"},{keys:[n.value,"\\"],description:"Cycle Document, Task Board, and Graph tabs"},{keys:[n.value,","],description:"Add repository"}]},{name:"Help",shortcuts:[{keys:[n.value,"/"],description:"Show this help"},{keys:["Esc"],description:"Close dialog or palette"}]}]);return(i,o)=>(u(),_(e(kt),{open:t.value,"onUpdate:open":o[0]||(o[0]=r=>t.value=r)},{default:c(()=>[p(e(Ct),{class:"max-w-md"},{default:c(()=>[p(e($t),null,{default:c(()=>[p(e(Rt),null,{default:c(()=>[...o[1]||(o[1]=[G("Keyboard Shortcuts",-1)])]),_:1}),p(e(St),null,{default:c(()=>[...o[2]||(o[2]=[G(" Quick reference for available keyboard shortcuts. ",-1)])]),_:1})]),_:1}),d("div",Zo,[(u(!0),S(se,null,le(e(l),r=>(u(),S("div",{key:r.name},[d("h3",en,O(r.name),1),d("div",tn,[(u(!0),S(se,null,le(r.shortcuts,f=>(u(),S("div",{key:f.description,class:"flex items-center justify-between"},[d("span",an,O(f.description),1),d("div",sn,[(u(!0),S(se,null,le(f.keys,(h,b)=>(u(),S("kbd",{key:b,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"},O(h),1))),128))])]))),128))])]))),128))])]),_:1})]),_:1},8,["open"]))}}),nn=Object.assign(on,{__name:"ShortcutsHelp"});function Et(){const s=document.activeElement;if(!s)return!1;const t=s.tagName.toLowerCase();return t==="input"||t==="textarea"||s.getAttribute("contenteditable")==="true"||s.getAttribute("role")==="textbox"}function ln(s){const t=s.toLowerCase().split("+"),a=t.pop()||"";return{meta:t.includes("meta"),ctrl:t.includes("ctrl"),shift:t.includes("shift"),alt:t.includes("alt"),key:a}}function rn(s,t){const a=s.key.toLowerCase();let n=a===t.key;return t.key==="\\"&&(n=a==="\\"||s.code==="Backslash"),t.key==="/"&&(n=a==="/"||s.code==="Slash"),t.key==="."&&(n=a==="."||s.code==="Period"),t.key===","&&(n=a===","||s.code==="Comma"),n&&s.metaKey===t.meta&&s.ctrlKey===t.ctrl&&s.shiftKey===t.shift&&s.altKey===t.alt}const Ee=[];let at=!1;function un(s){for(const t of Ee)if(rn(s,t.combo)){if(!t.allowInInput&&Et())continue;s.preventDefault(),s.stopPropagation(),t.handler();return}}function st(){at||(document.addEventListener("keydown",un,{capture:!0}),at=!0)}function dn(){ie(()=>{st()});function s(a,n,l){const o={combo:ln(a),handler:n,allowInInput:l?.allowInInput??!1};Ee.push(o),st(),fe(()=>{const r=Ee.indexOf(o);r>-1&&Ee.splice(r,1)})}function t(){return Et()}return{onShortcut:s,isInputFocused:t}}const cn=2e3,pn=2e3;function fn(s){return!s.instanceId||!s.buildId?null:`${s.buildId}:${s.instanceId}`}function mn(s){const t=C(null),a=C(!1),n=C(null),l=C(null),i=C(null),o=C(null),r=C(!1),f=C(!1),h=C(!1);function b(){l.value&&(clearTimeout(l.value),l.value=null)}function m(){i.value&&(clearInterval(i.value),i.value=null)}async function v(){try{const w=await $fetch(`/api/runtime?_=${Date.now()}`);return fn(w)}catch{return null}}async function k(){o.value===null&&(o.value=await v())}async function g(){if(!(r.value||h.value)){r.value=!0;try{const w=await v();if(!w)return;if(!o.value){o.value=w;return}w!==o.value&&(h.value=!0,window.location.reload())}finally{r.value=!1}}}function P(){i.value||(i.value=wt(()=>{g()},pn))}function J(){l.value||(l.value=setTimeout(()=>{l.value=null,Z()},cn))}function Z(){if(!t.value)try{const w=new EventSource("/api/watch");w.onopen=async()=>{a.value=!0,n.value=null,b(),m(),f.value&&(f.value=!1,await g())},w.onmessage=$=>{try{const A=JSON.parse($.data);s(A)}catch{}},w.onerror=()=>{a.value=!1,n.value="Connection lost",f.value=!0,t.value===w&&(w.close(),t.value=null),P(),J()},t.value=w}catch{n.value="Failed to connect",P(),J()}}function j(){b(),m(),f.value=!1,t.value&&(t.value.close(),t.value=null,a.value=!1)}return ie(async()=>{await k(),Z()}),fe(()=>{j()}),{isConnected:a,error:n,connect:Z,disconnect:j}}const vn={class:"min-h-screen bg-background text-foreground"},hn={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"},gn={class:"flex h-full items-center justify-between px-4 md:px-6"},yn={class:"flex items-center gap-3"},_n={class:"hidden text-xs text-muted-foreground md:inline"},bn={class:"flex items-center gap-3"},xn={class:"flex h-screen pt-14"},wn={class:"flex-1 overflow-auto"},Bn=E({__name:"default",setup(s){const{themeMode:t,cycleThemeMode:a}=lt(),{refreshPrds:n}=He(),{currentRepoId:l}=De(),i=Ke(),o=jt(),r=B(()=>o.public.stewardVersion||"0.0.0"),f=B(()=>o.public.stewardPackageName||"steward"),h=C(null);qt("fileChangeEvent",h);const b=C(!1),m=C(""),v=C(!1),k=C(null),{onShortcut:g}=dn();g("Meta+k",()=>{b.value=!0}),g("Ctrl+k",()=>{b.value=!0}),g("Meta+j",()=>{m.value="PRD: ",b.value=!0}),g("Ctrl+j",()=>{m.value="PRD: ",b.value=!0});function P(){const w=["document","board","graph"],$=localStorage.getItem("prd-viewer-tab")||"document",A=w.indexOf($),X=A>=0?A:0,M=w[(X+1)%w.length]??"document";localStorage.setItem("prd-viewer-tab",M),window.dispatchEvent(new StorageEvent("storage",{key:"prd-viewer-tab",newValue:M}))}g("Meta+\\",P),g("Ctrl+\\",P);function J(){a()}g("Meta+.",J),g("Ctrl+.",J);function Z(){k.value?.openAddDialog()}g("Meta+,",Z),g("Ctrl+,",Z);function j(){v.value=!0}return g("Meta+/",j),g("Ctrl+/",j),g("Meta+Shift+/",j),g("Ctrl+Shift+/",j),mn(w=>{if(w.type==="connected"||!w.category)return;const $=w.category;if(w.repoId!==l.value)return;($==="prd"||$==="tasks")&&n();const A=i.params.prd,X=$==="tasks"||$==="progress",M=$==="prd"&&(!A||w.path?.includes(`/${A}.`)),ee=!!A&&X&&w.path?.includes(`/${A}/`);(X||M||ee)&&(h.value={category:$,path:w.path,timestamp:Date.now()})}),(w,$)=>{const A=ys,X=Hs,M=zt,ee=ro;return u(),S("div",vn,[p(A),p(Yo,{open:e(b),"onUpdate:open":$[0]||($[0]=Q=>Ce(b)?b.value=Q:null),filter:e(m),"onUpdate:filter":$[1]||($[1]=Q=>Ce(m)?m.value=Q:null),onOpenShortcutsHelp:j},null,8,["open","filter"]),p(nn,{open:e(v),"onUpdate:open":$[2]||($[2]=Q=>Ce(v)?v.value=Q:null)},null,8,["open"]),d("header",hn,[d("div",gn,[d("div",yn,[$[3]||($[3]=d("h1",{class:"text-lg font-semibold tracking-tight"}," PRD Viewer ",-1)),d("span",_n,O(e(f))+" v"+O(e(r)),1)]),p(M,null,{fallback:c(()=>[...$[5]||($[5]=[d("div",{class:"flex items-center gap-3"},[d("div",{class:"h-8 w-[200px] animate-pulse rounded-md bg-muted"}),d("div",{class:"size-9 animate-pulse rounded-md bg-muted"})],-1)])]),default:c(()=>[d("div",bn,[p(X,{ref_key:"repoSelectorRef",ref:k},null,512),p(e(ce),{variant:"ghost",size:"icon",class:"size-9",onClick:J},{default:c(()=>[e(t)==="system"?(u(),_(e(gt),{key:0,class:"size-4"})):e(t)==="light"?(u(),_(e(_t),{key:1,class:"size-4"})):(u(),_(e(yt),{key:2,class:"size-4"})),$[4]||($[4]=d("span",{class:"sr-only"},"Cycle theme mode",-1))]),_:1})])]),_:1})])]),d("div",xn,[p(M,null,{fallback:c(()=>[...$[6]||($[6]=[d("aside",{class:"flex h-full w-64 flex-col border-r border-border bg-background"},[d("div",{class:"flex h-12 items-center border-b border-border px-4"},[d("div",{class:"h-4 w-20 animate-pulse rounded bg-muted"})]),d("div",{class:"flex-1 p-2 space-y-2"},[d("div",{class:"h-9 animate-pulse rounded-md bg-muted"}),d("div",{class:"h-9 animate-pulse rounded-md bg-muted"}),d("div",{class:"h-9 animate-pulse rounded-md bg-muted"})])],-1)])]),default:c(()=>[p(ee)]),_:1}),d("main",wn,[V(w.$slots,"default")])])])}}});export{Bn as default};
|
|
1
|
+
import{s as B,l as e,a0 as Dt,g as E,k as pe,o as u,x as _,L as q,c as S,n as F,F as se,r as le,v as ot,B as ye,w as c,y as V,q as C,b as p,G as _e,p as $e,ac as Pt,z as ie,A as fe,ad as Tt,ae as Le,a as d,H as oe,t as O,d as G,E as It,af as Ot,j as nt,M as Ke,ag as Mt,ah as Vt,m as Ce,J as Ae,K as Be,a1 as Lt,aa as Fe,ai as lt,ab as Ft,_ as qt,aj as zt,ak as jt}from"./Bc2V3wPK.js";import{c as me,m as qe,h as Kt,f as rt,d as Ue,P as re,g as Oe,l as Ut,B as ce,u as De,o as Ht,b as it,r as te,e as W,a as He,F as ze,n as Nt}from"./CN46Bgts.js";import{r as Gt,V as Wt,u as Qt,c as be,a as Pe,b as Ne,s as Jt,L as ut,f as Xt,g as Yt,q as dt,h as Zt,p as ea,o as ta,j as aa,k as sa,l as oa,m as na,d as ve,S as la,G as ct,C as ra,R as pt,B as Ze,t as ia,v as Ge,w as ft,x as mt,y as vt,X as ht,e as Te,z as ua,A as da,E as ca,i as pa,K as fa}from"./B2mIQf5X.js";import{F as ma,I as va,a as je}from"./C0BBSDJ7.js";import{b as We,u as Qe,g as ha,A as ga}from"./CyVSeLw5.js";import{_ as ya}from"./CTJgb0zb.js";const _a=me("archive",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]]);const ba=me("database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);const gt=me("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 yt=me("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 xa=me("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);const _t=me("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 wa=me("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 ka(s,t,a){const n=s.findIndex(r=>qe(r,t)),l=s.findIndex(r=>qe(r,a));if(n===-1||l===-1)return[];const[i,o]=[n,l].sort((r,f)=>r-f);return s.slice(i,o+1)}function Ca(s){const t=B(()=>e(s)),a=B(()=>new Intl.Collator("en",{usage:"search",...t.value}));return{startsWith:(o,r)=>r.length===0?!0:(o=o.normalize("NFC"),r=r.normalize("NFC"),a.value.compare(o.slice(0,r.length),r)===0),endsWith:(o,r)=>r.length===0?!0:(o=o.normalize("NFC"),r=r.normalize("NFC"),a.value.compare(o.slice(-r.length),r)===0),contains:(o,r)=>{if(r.length===0)return!0;o=o.normalize("NFC"),r=r.normalize("NFC");let f=0;const h=r.length;for(;f+h<=o.length;f++){const b=o.slice(f,f+h);if(a.value.compare(r,b)===0)return!0}return!1}}}function bt(s){return B(()=>Dt(s)?!!Kt(s)?.closest("form"):!0)}function Sa(){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 $a(s){const t=rt("",1e3);return{search:t,handleTypeaheadSearch:(l,i)=>{t.value=t.value+l;{const o=Gt(),r=i.map(v=>({...v,textValue:v.value?.textValue??v.ref.textContent?.trim()??""})),f=r.find(v=>v.ref===o),h=r.map(v=>v.textValue),b=Ea(h,t.value,f?.textValue),m=r.find(v=>v.textValue===b);return m&&m.ref.focus(),m?.ref}},resetTypeahead:()=>{t.value=""}}}function Ra(s,t){return s.map((a,n)=>s[(t+n)%s.length])}function Ea(s,t,a){const l=t.length>1&&Array.from(t).every(h=>h===t[0])?t[0]:t,i=a?s.indexOf(a):-1;let o=Ra(s,Math.max(i,0));l.length===1&&(o=o.filter(h=>h!==a));const f=o.find(h=>h.toLowerCase().startsWith(l.toLowerCase()));return f!==a?f:void 0}var Aa=E({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(s){const t=s,{primitiveElement:a,currentElement:n}=We(),l=B(()=>t.checked??t.value);return pe(l,(i,o)=>{if(!n.value)return;const r=n.value,f=window.HTMLInputElement.prototype,b=Object.getOwnPropertyDescriptor(f,"value").set;if(b&&i!==o){const m=new Event("input",{bubbles:!0}),v=new Event("change",{bubbles:!0});b.call(r,i),r.dispatchEvent(m),r.dispatchEvent(v)}}),(i,o)=>(u(),_(Wt,q({ref_key:"primitiveElement",ref:a},{...t,...i.$attrs},{as:"input"}),null,16))}}),et=Aa,Ba=E({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(s){const t=s,a=B(()=>typeof t.value=="object"&&Array.isArray(t.value)&&t.value.length===0&&t.required),n=B(()=>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((l,i)=>typeof l=="object"?Object.entries(l).map(([o,r])=>({name:`${t.name}[${i}][${o}]`,value:r})):{name:`${t.name}[${i}]`,value:l}):t.value!==null&&typeof t.value=="object"&&!Array.isArray(t.value)?Object.entries(t.value).map(([l,i])=>({name:`${t.name}[${l}]`,value:i})):[]);return(l,i)=>(u(),S(se,null,[F(" We render single input if it's required "),a.value?(u(),_(et,q({key:l.name},{...t,...l.$attrs},{name:l.name,value:l.value}),null,16,["name","value"])):(u(!0),S(se,{key:1},le(n.value,o=>(u(),_(et,q({key:o.name},{ref_for:!0},{...t,...l.$attrs},{name:o.name,value:o.value}),null,16,["name","value"]))),128))],2112))}}),xt=Ba;function Da(s,t,a){return s===void 0?!1:Array.isArray(s)?s.some(n=>Se(n,t,a)):Se(s,t,a)}function Se(s,t,a){return s===void 0||t===void 0?!1:typeof s=="string"?s===t:typeof a=="function"?a(s,t):typeof a=="string"?s?.[a]===t?.[a]:qe(s,t)}const[Je,Pa]=be("ListboxRoot");var Ta=E({__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(s,{expose:t,emit:a}){const n=s,l=a,{multiple:i,highlightOnHover:o,orientation:r,disabled:f,selectionBehavior:h,dir:b}=ot(n),{getItems:m}=Qe({isProvider:!0}),{handleTypeaheadSearch:v}=$a(),{primitiveElement:k,currentElement:g}=We(),P=Sa(),J=Qt(b),Z=bt(g),j=C(),w=C(!1),$=C(!0),A=Ue(n,"modelValue",l,{defaultValue:n.defaultValue??(i.value?[]:void 0),passive:n.modelValue===void 0,deep:!0});function X(y){if(w.value=!0,n.multiple){const R=Array.isArray(A.value)?[...A.value]:[],D=R.findIndex(H=>Se(H,y,n.by));n.selectionBehavior==="toggle"?(D===-1?R.push(y):R.splice(D,1),A.value=R):(A.value=[y],j.value=y)}else n.selectionBehavior==="toggle"&&Se(A.value,y,n.by)?A.value=void 0:A.value=y;setTimeout(()=>{w.value=!1},1)}const M=C(null),ee=C(null),Q=C(!1),ue=C(!1),he=Oe(),ae=Oe(),N=Oe();function Y(){return m().map(y=>y.ref).filter(y=>y.dataset.disabled!=="")}function K(y,R=!0){if(!y)return;M.value=y,$.value&&M.value.focus(),R&&M.value.scrollIntoView({block:"nearest"});const D=m().find(H=>H.ref===y);l("highlight",D)}function ne(y){if(Q.value)N.trigger(y);else{const R=m().find(D=>Se(D.value,y,n.by));R&&(M.value=R.ref,K(R.ref))}}function T(y){M.value&&M.value.isConnected&&(y.preventDefault(),y.stopPropagation(),ue.value||M.value.click())}function z(y){if($.value){if(w.value=!0,Q.value)ae.trigger(y);else{const R=y.altKey||y.ctrlKey||y.metaKey;if(R&&y.key==="a"&&i.value){const D=m(),H=D.map(ge=>ge.value);A.value=[...H],y.preventDefault(),K(D[D.length-1].ref)}else if(!R){const D=v(y.key,m());D&&K(D)}}setTimeout(()=>{w.value=!1},1)}}function U(){ue.value=!0}function I(){ye(()=>{ue.value=!1})}function x(){ye(()=>{const y=new KeyboardEvent("keydown",{key:"PageUp"});Xe(y)})}function L(y){const R=M.value;R?.isConnected&&(ee.value=R),M.value=null,l("leave",y)}function xe(y){const R=new CustomEvent("listbox.entryFocus",{bubbles:!1,cancelable:!0});if(y.currentTarget?.dispatchEvent(R),l("entryFocus",R),!R.defaultPrevented)if(ee.value)K(ee.value);else{const D=Y()?.[0];K(D)}}function Xe(y){const R=ha(y,r.value,J.value);if(!R)return;let D=Y();if(M.value){if(R==="last")D.reverse();else if(R==="prev"||R==="next"){R==="prev"&&D.reverse();const H=D.indexOf(M.value);D=D.slice(H+1)}At(y,D[0])}if(D.length){const H=!M.value&&R==="prev"?D.length-1:0;K(D[H])}if(Q.value)return ae.trigger(y)}function At(y,R){if(!(Q.value||n.selectionBehavior!=="replace"||!i.value||!Array.isArray(A.value)||(y.altKey||y.ctrlKey||y.metaKey)&&!y.shiftKey)&&y.shiftKey){const H=m().filter(we=>we.ref.dataset.disabled!=="");let ge=H.find(we=>we.ref===R)?.value;if(y.key===P.END?ge=H[H.length-1].value:y.key===P.HOME&&(ge=H[0].value),!ge||!j.value)return;const Bt=ka(H.map(we=>we.value),j.value,ge);A.value=Bt}}async function Ye(y){if(await ye(),Q.value)he.trigger(y);else{const R=Y(),D=R.find(H=>H.dataset.state==="checked");D?K(D):R.length&&K(R[0])}}return pe(A,()=>{w.value||ye(()=>{Ye()})},{immediate:!0,deep:!0}),t({highlightedElement:M,highlightItem:ne,highlightFirstItem:x,highlightSelected:Ye,getItems:m}),Pa({modelValue:A,onValueChange:X,multiple:i,orientation:r,dir:J,disabled:f,highlightOnHover:o,highlightedElement:M,isVirtual:Q,virtualFocusHook:he,virtualKeydownHook:ae,virtualHighlightHook:N,by:n.by,firstValue:j,selectionBehavior:h,focusable:$,onLeave:L,onEnter:xe,changeHighlight:K,onKeydownEnter:T,onKeydownNavigation:Xe,onKeydownTypeAhead:z,onCompositionStart:U,onCompositionEnd:I,highlightFirstItem:x}),(y,R)=>(u(),_(e(re),{ref_key:"primitiveElement",ref:k,as:y.as,"as-child":y.asChild,dir:e(J),"data-disabled":e(f)?"":void 0,onPointerleave:L,onFocusout:R[0]||(R[0]=async D=>{const H=D.relatedTarget||D.target;await ye(),M.value&&e(g)&&!e(g).contains(H)&&L(D)})},{default:c(()=>[V(y.$slots,"default",{modelValue:e(A)}),e(Z)&&y.name?(u(),_(e(xt),{key:0,name:y.name,value:e(A),disabled:e(f),required:y.required},null,8,["name","value","disabled","required"])):F("v-if",!0)]),_:3},8,["as","as-child","dir","data-disabled"]))}}),Ia=Ta,Oa=E({__name:"ListboxContent",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(s){const{CollectionSlot:t}=Qe(),a=Je(),n=rt(!1,10);return(l,i)=>(u(),_(e(t),null,{default:c(()=>[p(e(re),{role:"listbox",as:l.as,"as-child":l.asChild,tabindex:e(a).focusable.value?e(a).highlightedElement.value?"-1":"0":"-1","aria-orientation":e(a).orientation.value,"aria-multiselectable":!!e(a).multiple.value,"data-orientation":e(a).orientation.value,onMousedown:i[0]||(i[0]=$e(o=>n.value=!0,["left"])),onFocus:i[1]||(i[1]=o=>{e(n)||e(a).onEnter(o)}),onKeydown:[i[2]||(i[2]=_e(o=>{e(a).orientation.value==="vertical"&&(o.key==="ArrowLeft"||o.key==="ArrowRight")||e(a).orientation.value==="horizontal"&&(o.key==="ArrowUp"||o.key==="ArrowDown")||(o.preventDefault(),e(a).focusable.value&&e(a).onKeydownNavigation(o))},["down","up","left","right","home","end"])),_e(e(a).onKeydownEnter,["enter"]),e(a).onKeydownTypeAhead]},{default:c(()=>[V(l.$slots,"default")]),_:3},8,["as","as-child","tabindex","aria-orientation","aria-multiselectable","data-orientation","onKeydown"])]),_:3}))}}),Ma=Oa,Va=E({__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(s,{emit:t}){const a=s,l=Ue(a,"modelValue",t,{defaultValue:"",passive:a.modelValue===void 0}),i=Je(),{primitiveElement:o,currentElement:r}=We(),f=B(()=>a.disabled||i.disabled.value||!1),h=C();return Pt(()=>h.value=i.highlightedElement.value?.id),ie(()=>{i.focusable.value=!1,setTimeout(()=>{a.autoFocus&&r.value?.focus()},1)}),fe(()=>{i.focusable.value=!0}),(b,m)=>(u(),_(e(re),{ref_key:"primitiveElement",ref:o,as:b.as,"as-child":b.asChild,value:e(l),disabled:f.value?"":void 0,"data-disabled":f.value?"":void 0,"aria-disabled":f.value??void 0,"aria-activedescendant":h.value,type:"text",onKeydown:[_e($e(e(i).onKeydownNavigation,["prevent"]),["down","up","home","end"]),_e(e(i).onKeydownEnter,["enter"])],onInput:m[0]||(m[0]=v=>{l.value=v.target.value,e(i).highlightFirstItem()}),onCompositionstart:e(i).onCompositionStart,onCompositionend:e(i).onCompositionEnd},{default:c(()=>[V(b.$slots,"default",{modelValue:e(l)})]),_:3},8,["as","as-child","value","disabled","data-disabled","aria-disabled","aria-activedescendant","onKeydown","onCompositionstart","onCompositionend"]))}}),La=Va;const[Fa,qa]=be("ListboxGroup");var za=E({__name:"ListboxGroup",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(s){const t=s,a=Pe(void 0,"reka-listbox-group");return qa({id:a}),(n,l)=>(u(),_(e(re),q({role:"group"},t,{"aria-labelledby":e(a)}),{default:c(()=>[V(n.$slots,"default")]),_:3},16,["aria-labelledby"]))}}),ja=za,Ka=E({__name:"ListboxGroupLabel",props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(s){const t=s,a=Fa({id:""});return(n,l)=>(u(),_(e(re),q(t,{id:e(a).id}),{default:c(()=>[V(n.$slots,"default")]),_:3},16,["id"]))}}),Ua=Ka;const Ha="listbox.select",[An,Na]=be("ListboxItem");var Ga=E({__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(s,{emit:t}){const a=s,n=t,l=Pe(void 0,"reka-listbox-item"),{CollectionItem:i}=Qe(),{forwardRef:o,currentElement:r}=Ne(),f=Je(),h=B(()=>r.value===f.highlightedElement.value),b=B(()=>Da(f.modelValue.value,a.value,f.by)),m=B(()=>f.disabled.value||a.disabled);async function v(g){n("select",g),!g?.defaultPrevented&&!m.value&&g&&(f.onValueChange(a.value),f.changeHighlight(r.value))}function k(g){const P={originalEvent:g,value:a.value};Jt(Ha,v,P)}return Na({isSelected:b}),(g,P)=>(u(),_(e(i),{value:g.value},{default:c(()=>[Tt([h.value,b.value],()=>p(e(re),q({id:e(l)},g.$attrs,{ref:e(o),role:"option",tabindex:e(f).focusable.value?h.value?"0":"-1":-1,"aria-selected":b.value,as:g.as,"as-child":g.asChild,disabled:m.value?"":void 0,"data-disabled":m.value?"":void 0,"data-highlighted":h.value?"":void 0,"data-state":b.value?"checked":"unchecked",onClick:k,onKeydown:_e($e(k,["prevent"]),["space"]),onPointermove:P[0]||(P[0]=()=>{e(f).highlightedElement.value!==e(r)&&e(f).highlightOnHover.value&&!e(f).focusable.value&&e(f).changeHighlight(e(r),!1)})}),{default:c(()=>[V(g.$slots,"default")]),_:3},16,["id","tabindex","aria-selected","as","as-child","disabled","data-disabled","data-highlighted","data-state","onKeydown"]),P,1)]),_:3},8,["value"]))}}),Wa=Ga;const[Qa,Ja]=be("SwitchRoot");var Xa=E({__name:"SwitchRoot",props:{defaultValue:{type:Boolean,required:!1},modelValue:{type:[Boolean,null],required:!1,default:void 0},disabled:{type:Boolean,required:!1},id:{type:String,required:!1},value:{type:String,required:!1,default:"on"},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue"],setup(s,{emit:t}){const a=s,n=t,{disabled:l}=ot(a),i=Ue(a,"modelValue",n,{defaultValue:a.defaultValue,passive:a.modelValue===void 0});function o(){l.value||(i.value=!i.value)}const{forwardRef:r,currentElement:f}=Ne(),h=bt(f),b=B(()=>a.id&&f.value?document.querySelector(`[for="${a.id}"]`)?.innerText:void 0);return Ja({modelValue:i,toggleCheck:o,disabled:l}),(m,v)=>(u(),_(e(re),q(m.$attrs,{id:m.id,ref:e(r),role:"switch",type:m.as==="button"?"button":void 0,value:m.value,"aria-label":m.$attrs["aria-label"]||b.value,"aria-checked":e(i),"aria-required":m.required,"data-state":e(i)?"checked":"unchecked","data-disabled":e(l)?"":void 0,"as-child":m.asChild,as:m.as,disabled:e(l),onClick:o,onKeydown:_e($e(o,["prevent"]),["enter"])}),{default:c(()=>[V(m.$slots,"default",{modelValue:e(i)}),e(h)&&m.name?(u(),_(e(xt),{key:0,type:"checkbox",name:m.name,disabled:e(l),required:m.required,value:m.value,checked:!!e(i)},null,8,["name","disabled","required","value","checked"])):F("v-if",!0)]),_:3},16,["id","type","value","aria-label","aria-checked","aria-required","data-state","data-disabled","as-child","as","disabled","onKeydown"]))}}),Ya=Xa,Za=E({__name:"SwitchThumb",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(s){const t=Qa();return Ne(),(a,n)=>(u(),_(e(re),{"data-state":e(t).modelValue?.value?"checked":"unchecked","data-disabled":e(t).disabled.value?"":void 0,"as-child":a.asChild,as:a.as},{default:c(()=>[V(a.$slots,"default")]),_:3},8,["data-state","data-disabled","as-child","as"]))}}),es=Za;const wt=globalThis.setInterval,ts=700,as={state:"idle",version:"progress-json-v2",startedAt:null,completedAt:null,totalRows:0,processedRows:0,migratedRows:0,failedRows:0,currentSlug:null,errorMessage:null,percent:0};let ke=null,Me=!1,Re=0;function ss(){const s=Le("state-migration:status",()=>({...as})),t=Le("state-migration:initialized",()=>!1),a=B(()=>s.value.state==="running"||s.value.state==="failed");async function n(){if(!Me){Me=!0;try{const o=await $fetch("/api/state-migration/status",{query:{_:Date.now()}});s.value=o,t.value=!0,o.state==="completed"&&i()}catch{t.value=!0}finally{Me=!1}}}function l(){ke||(ke=wt(()=>{n()},ts))}function i(){ke&&(clearInterval(ke),ke=null)}return ie(()=>{Re+=1,n(),l()}),fe(()=>{Re=Math.max(0,Re-1),Re===0&&i()}),{status:s,initialized:t,isBlocking:a,refreshStatus:n}}const os={key:0,class:"fixed inset-0 z-[110] flex items-center justify-center bg-[radial-gradient(circle_at_18%_20%,oklch(0.92_0.03_218_/_0.65),transparent_52%),radial-gradient(circle_at_82%_80%,oklch(0.95_0.04_40_/_0.5),transparent_46%),oklch(0.17_0.02_240_/_0.72)] px-4 backdrop-blur-sm",role:"alert","aria-live":"assertive","aria-busy":"true"},ns={class:"w-full max-w-xl rounded-2xl border border-border/70 bg-background/95 p-6 shadow-2xl md:p-7"},ls={class:"mb-4 flex items-start gap-3"},rs={class:"flex size-11 shrink-0 items-center justify-center rounded-xl border border-border bg-muted/60"},is={class:"space-y-1"},us={class:"text-xl font-semibold tracking-tight"},ds={class:"space-y-3 rounded-xl border border-border/80 bg-card/70 p-4"},cs={class:"flex items-center justify-between gap-3 text-sm"},ps={class:"inline-flex items-center gap-1.5 text-muted-foreground"},fs={class:"font-medium tabular-nums"},ms={class:"h-2 overflow-hidden rounded-full border border-border/70 bg-muted/60"},vs={class:"text-sm text-muted-foreground"},hs={key:0,class:"mt-4 flex items-center justify-end"},gs=E({__name:"StateMigrationOverlay",setup(s){const{status:t,initialized:a,isBlocking:n,refreshStatus:l}=ss(),i=Ut("(prefers-reduced-motion: reduce)"),o=B(()=>Math.max(0,Math.min(100,t.value.percent))),r=B(()=>`${o.value}%`),f=B(()=>{const m=t.value.totalRows,v=t.value.processedRows;return m<=0?"Preparing migration...":`${v} of ${m} PRD states migrated`}),h=B(()=>t.value.state==="failed"?t.value.errorMessage||"Migration failed before completion.":t.value.currentSlug?`Migrating ${t.value.currentSlug}`:"Preparing migration steps"),b=B(()=>a.value&&n.value);return(m,v)=>(u(),_(Ot,{"enter-active-class":"transition-all duration-300 ease-[var(--ease-out-cubic)] motion-reduce:transition-none","enter-from-class":"opacity-0 scale-[0.98]","leave-active-class":"transition-all duration-200 ease-[var(--ease-out-cubic)] motion-reduce:transition-none","leave-to-class":"opacity-0"},{default:c(()=>[e(b)?(u(),S("div",os,[d("div",ns,[d("div",ls,[d("div",rs,[e(t).state==="running"?(u(),_(e(ut),{key:0,class:oe(["size-5 text-primary",e(i)?"":"animate-spin"])},null,8,["class"])):(u(),_(e(Xt),{key:1,class:"size-5 text-destructive"}))]),d("div",is,[v[0]||(v[0]=d("p",{class:"text-sm font-semibold uppercase tracking-[0.09em] text-muted-foreground"},"Data upgrade",-1)),d("h2",us,O(e(t).state==="running"?"One-time migration in progress":"Migration needs attention"),1),v[1]||(v[1]=d("p",{class:"text-sm text-muted-foreground"}," Steward is upgrading legacy PRD progress data to the latest format. This runs once per local database. ",-1))])]),d("div",ds,[d("div",cs,[d("span",ps,[p(e(ba),{class:"size-3.5"}),G(" "+O(e(f)),1)]),d("span",fs,O(e(o))+"%",1)]),d("div",ms,[d("div",{class:oe(["migration-progress-fill h-full rounded-full motion-reduce:transition-none",e(i)?"":"migration-progress-fill--animated"]),style:It({width:e(r)})},null,6)]),d("p",vs,O(e(h)),1)]),e(t).state==="failed"?(u(),S("div",hs,[p(e(ce),{size:"sm",variant:"outline",onClick:e(l)},{default:c(()=>[...v[2]||(v[2]=[G(" Retry status check ",-1)])]),_:1},8,["onClick"])])):F("",!0)])])):F("",!0)]),_:1}))}}),ys=Object.assign(gs,{__name:"LayoutStateMigrationOverlay"}),_s={class:"flex items-center gap-2 truncate"},bs={class:"truncate"},xs={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"},ws={class:"max-h-[200px] overflow-y-auto"},ks=["aria-selected","onClick"],Cs={class:"flex flex-1 flex-col gap-0.5 overflow-hidden text-left"},Ss={class:"truncate font-medium"},$s={class:"truncate text-xs text-muted-foreground"},Rs=["onClick"],Es={key:1,class:"px-2 py-1.5 text-sm text-muted-foreground"},As={key:2,class:"my-1 h-px bg-border"},Bs={class:"space-y-2"},Ds={class:"flex gap-2"},Ps={key:0,class:"text-sm text-destructive"},Ts={key:0,class:"space-y-2 rounded-md border p-3"},Is={class:"flex items-center gap-2 text-sm"},Os=["disabled"],Ms={class:"flex-1 truncate font-mono text-xs text-muted-foreground"},Vs={class:"max-h-[200px] overflow-y-auto"},Ls={key:0,class:"py-2 text-center text-sm text-muted-foreground"},Fs={key:1,class:"py-2 text-center text-sm text-muted-foreground"},qs=["onClick"],zs={class:"truncate"},js={key:0},Ks={key:1},Us=E({__name:"RepoSelector",setup(s,{expose:t}){const a=nt(),n=Ke(),{repos:l,currentRepo:i,currentRepoId:o,selectRepo:r,addRepo:f,removeRepo:h}=De(),{showSuccess:b}=it(),m=Le("prd-show-archived",()=>!1),v=C(!1),k=C(""),g=C(null);Ht(g,()=>{v.value&&(v.value=!1,k.value="")}),pe(()=>n.fullPath,()=>{v.value=!1,k.value=""});async function P(I){r(I),v.value=!1,k.value="";try{const x=await J(I);x?a.push(`/${I}/${x}`):a.push("/")}catch{a.push("/")}}async function J(I){return(await $fetch(`/api/repos/${I}/prds`,{query:m.value?{includeArchived:"1"}:void 0}))?.[0]?.slug||null}function Z(){v.value=!1,ae.value=!0}const j=C(!1),w=C(""),$=C(null),A=C([]),X=C(!1),M=B(()=>!!$.value&&$.value!==w.value);async function ee(I){X.value=!0;try{const x=await $fetch("/api/browse",{query:{path:I||w.value||void 0}});w.value=x.current,$.value=x.parent,A.value=x.directories}catch{}finally{X.value=!1}}function Q(){j.value=!0,ee(N.value||void 0)}function ue(I){N.value=I,j.value=!1,Y.value=null}function he(){const I=$.value;!M.value||!I||ee(I)}const ae=C(!1),N=C(""),Y=C(null),K=C(!1),ne=B(()=>{if(!k.value)return l.value;const I=k.value.toLowerCase();return l.value?.filter(x=>x.name.toLowerCase().includes(I)||x.path.toLowerCase().includes(I))??[]});async function T(){if(!N.value.trim()){Y.value="Please enter a repository path";return}K.value=!0,Y.value=null;try{const I=await f(N.value.trim());if(ae.value=!1,N.value="",b("Repository added",I?.name||"Successfully added repository"),I?.id)try{const x=await J(I.id);x&&a.push(`/${I.id}/${x}`)}catch{}}catch(I){if(I instanceof Error){const x=I;Y.value=x.data?.message||I.message}else Y.value="Failed to add repository"}finally{K.value=!1}}async function z(I,x){I.stopPropagation(),await h(x)}function U(){ae.value=!1,N.value="",Y.value=null}return t({openAddDialog:()=>{ae.value=!0}}),(I,x)=>(u(),S("div",{ref_key:"dropdownRef",ref:g,class:"relative"},[d("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]=L=>v.value=!e(v))},[d("span",_s,[p(e(ma),{class:"size-4 shrink-0 text-muted-foreground"}),d("span",bs,O(e(i)?.name??"Select repository"),1)]),p(e(Yt),{class:"size-4 shrink-0 opacity-50"})]),e(v)?(u(),S("div",xs,[Mt(d("input",{"onUpdate:modelValue":x[1]||(x[1]=L=>Ce(k)?k.value=L: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),[[Vt,e(k)]]),d("div",ws,[e(ne)?.length?(u(!0),S(se,{key:0},le(e(ne),L=>(u(),S("div",{key:L.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(o)===L.id,onClick:xe=>P(L.id)},[p(e(dt),{class:oe(["size-4 shrink-0",e(o)===L.id?"opacity-100":"opacity-0"])},null,8,["class"]),d("div",Cs,[d("span",Ss,O(L.name),1),d("span",$s,O(L.path),1)]),d("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:xe=>z(xe,L.id)},[p(e(wa),{class:"size-3.5 text-destructive"})],8,Rs)],8,ks))),128)):(u(),S("div",Es," No repositories found. ")),e(ne)?.length?(u(),S("div",As)):F("",!0),d("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:Z},[p(e(Zt),{class:"size-4"}),x[5]||(x[5]=d("span",null,"Add repository...",-1))])])])):F("",!0),p(e(ea),{open:e(ae),"onUpdate:open":x[4]||(x[4]=L=>ae.value=L)},{default:c(()=>[p(e(ta),{side:"right",class:"flex h-full flex-col",onEscapeKeyDown:U},{default:c(()=>[p(e(aa),{class:"px-6"},{default:c(()=>[p(e(sa),null,{default:c(()=>[...x[6]||(x[6]=[G("Add Repository",-1)])]),_:1}),p(e(oa),null,{default:c(()=>[...x[7]||(x[7]=[G(" Enter the absolute path to a repository containing PRD documents. ",-1)])]),_:1})]),_:1}),d("form",{id:"add-repo-form",class:"min-h-0 flex-1 space-y-4 overflow-y-auto px-6",onSubmit:$e(T,["prevent"])},[d("div",Bs,[x[8]||(x[8]=d("label",{for:"repo-path",class:"text-sm font-medium"}," Repository Path ",-1)),d("div",Ds,[p(e(va),{id:"repo-path",modelValue:e(N),"onUpdate:modelValue":x[2]||(x[2]=L=>Ce(N)?N.value=L:null),placeholder:"/path/to/your/project","aria-invalid":!!e(Y),disabled:e(K),class:"flex-1"},null,8,["modelValue","aria-invalid","disabled"]),p(e(ce),{type:"button",variant:"outline",size:"icon",disabled:e(K),onClick:Q},{default:c(()=>[p(e(je),{class:"size-4"})]),_:1},8,["disabled"])]),e(Y)?(u(),S("p",Ps,O(e(Y)),1)):F("",!0),x[9]||(x[9]=d("p",{class:"text-xs text-muted-foreground"},[G(" The repository should contain a "),d("code",{class:"rounded bg-muted px-1"},"docs/prd/"),G(" directory with markdown files. ")],-1))]),e(j)?(u(),S("div",Ts,[d("div",Is,[d("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(M),onClick:he},[p(e(ga),{class:"size-3"}),x[10]||(x[10]=G(" Up ",-1))],8,Os),d("span",Ms,O(e(w)),1),p(e(ce),{type:"button",variant:"ghost",size:"sm",class:"h-7 text-xs",onClick:x[3]||(x[3]=L=>ue(e(w)))},{default:c(()=>[...x[11]||(x[11]=[G(" Select ",-1)])]),_:1})]),d("div",Vs,[e(X)?(u(),S("div",Ls," Loading... ")):e(A).length?(u(!0),S(se,{key:2},le(e(A),L=>(u(),S("button",{key:L.path,type:"button",class:"flex w-full items-center gap-2 rounded px-2 py-1 text-sm hover:bg-accent",onClick:xe=>ee(L.path)},[p(e(je),{class:"size-4 text-muted-foreground"}),d("span",zs,O(L.name),1)],8,qs))),128)):(u(),S("div",Fs," No subdirectories "))])])):F("",!0)],32),p(e(na),{class:"px-6 pb-6"},{default:c(()=>[p(e(ce),{type:"button",variant:"outline",disabled:e(K),onClick:U},{default:c(()=>[...x[12]||(x[12]=[G(" Cancel ",-1)])]),_:1},8,["disabled"]),p(e(ce),{type:"submit",form:"add-repo-form",disabled:e(K)},{default:c(()=>[e(K)?(u(),S("span",js,"Adding...")):(u(),S("span",Ks,"Add Repository"))]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["open"])],512))}}),Hs=Object.assign(Us,{__name:"LayoutRepoSelector"}),Ns=E({__name:"Switch",props:{defaultValue:{type:Boolean},modelValue:{type:[Boolean,null]},disabled:{type:Boolean},id:{},value:{},asChild:{type:Boolean},as:{},name:{},required:{type:Boolean},class:{}},emits:["update:modelValue"],setup(s,{emit:t}){const a=s,n=t,l=te(a,"class"),i=ve(l,n);return(o,r)=>(u(),_(e(Ya),q({"data-slot":"switch"},e(i),{class:e(W)("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-colors duration-150 ease-[var(--ease-out-cubic)] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 motion-reduce:transition-none",a.class)}),{default:c(f=>[p(e(es),{"data-slot":"switch-thumb",class:oe(e(W)("bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform duration-150 ease-[var(--ease-in-out-cubic)] will-change-transform motion-reduce:transition-none data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0"))},{default:c(()=>[V(o.$slots,"thumb",Ae(Be(f)))]),_:2},1032,["class"])]),_:3},16,["class"]))}}),Gs=Object.assign(Ns,{__name:"UiSwitch"}),Ws={class:"flex h-full w-64 flex-col border-r border-border bg-background"},Qs={class:"p-2"},Js={class:"flex h-10 items-center justify-between gap-2 px-2"},Xs={class:"flex items-center gap-2 whitespace-nowrap text-xs text-muted-foreground"},Ys={key:1,class:"flex items-center justify-center py-8"},Zs={key:2,class:"px-2 py-8 text-center"},eo={key:3,class:"px-2 py-8 text-center"},to={key:4,class:"px-2 py-8 text-center"},ao={class:"mt-2 text-sm text-muted-foreground"},so={class:"mt-1 text-xs text-muted-foreground/70"},oo={key:5,class:"space-y-1"},no={class:"flex-1 truncate"},lo=E({__name:"Sidebar",setup(s){const t=Ke(),{prds:a,prdsStatus:n,showArchived:l,setShowArchived:i,refreshPrds:o}=He(),{currentRepoId:r}=De(),f=B(()=>t.params.prd);function h(v){return f.value===v}const b=B(()=>r.value?`/${r.value}/repo-graph`:"/"),m=B(()=>r.value?t.path===`/${r.value}/repo-graph`:!1);return(v,k)=>{const g=ya;return u(),S("aside",Ws,[p(e(la),{class:"flex-1"},{default:c(()=>[d("div",Qs,[e(r)?(u(),_(g,{key:0,to:e(b),class:oe(["group mb-2 flex items-center gap-3 rounded-md px-3 py-2 text-sm transition-colors",[e(m)?"bg-accent text-accent-foreground":"text-muted-foreground hover:bg-accent/50 hover:text-foreground"]])},{default:c(()=>[p(e(ct),{class:"size-4 shrink-0"}),k[0]||(k[0]=d("span",{class:"flex-1 truncate"},"Repo Graph",-1))]),_:1},8,["to","class"])):F("",!0),d("div",Js,[k[2]||(k[2]=d("h2",{class:"text-sm font-medium text-muted-foreground"},"Documents",-1)),d("div",Xs,[k[1]||(k[1]=d("span",{id:"sidebar-show-archived-label"},"Show archived",-1)),p(e(Gs),{"model-value":e(l),"aria-labelledby":"sidebar-show-archived-label","onUpdate:modelValue":e(i)},null,8,["model-value","onUpdate:modelValue"])])]),e(n)==="pending"?(u(),S("div",Ys,[p(e(ut),{class:"size-5 animate-spin text-muted-foreground"})])):e(r)?e(n)==="error"?(u(),S("div",eo,[p(e(ra),{class:"mx-auto size-8 text-destructive/50"}),k[5]||(k[5]=d("p",{class:"mt-2 text-sm text-muted-foreground"}," Failed to load PRDs ",-1)),p(e(ce),{variant:"ghost",size:"sm",class:"mt-2",onClick:e(o)},{default:c(()=>[p(e(pt),{class:"mr-1 size-3"}),k[4]||(k[4]=G(" Retry ",-1))]),_:1},8,["onClick"])])):e(a)?.length?(u(),S("nav",oo,[(u(!0),S(se,null,le(e(a),P=>(u(),_(g,{key:P.slug,to:`/${e(r)}/${P.slug}`,class:oe(["group flex items-center gap-3 rounded-md px-3 py-2 text-sm transition-colors",[h(P.slug)?"bg-accent text-accent-foreground":P.archived?"text-muted-foreground/75 hover:bg-accent/40 hover:text-foreground":"text-muted-foreground hover:bg-accent/50 hover:text-foreground"]])},{default:c(()=>[p(e(ze),{class:"size-4 shrink-0"}),d("span",no,O(P.name),1),P.archived?(u(),_(e(Ze),{key:0,variant:"outline",class:"shrink-0 text-[10px] uppercase tracking-wide"},{default:c(()=>[...k[6]||(k[6]=[G(" Archived ",-1)])]),_:1})):F("",!0),P.hasState&&P.taskCount?(u(),_(e(Ze),{key:1,variant:"secondary",class:"shrink-0 text-xs"},{default:c(()=>[G(O(P.completedCount??0)+"/"+O(P.taskCount),1)]),_:2},1024)):F("",!0)]),_:2},1032,["to","class"]))),128))])):(u(),S("div",to,[p(e(ze),{class:"mx-auto size-8 text-muted-foreground/50"}),d("p",ao,O(e(l)?"No PRDs found":"No active PRDs found"),1),d("p",so,O(e(l)?"Add .md files to docs/prd/":"Archived PRDs are hidden. Use the archive toggle above."),1)])):(u(),S("div",Zs,[...k[3]||(k[3]=[d("p",{class:"text-sm text-muted-foreground"}," Select a repository to view PRDs ",-1)])]))])]),_:1})])}}}),ro=Object.assign(lo,{__name:"LayoutSidebar"}),io=E({__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(s,{emit:t}){const a=s,n=t,l=te(a,"class"),i=ve(l,n),o=C(new Map),r=C(new Map),{contains:f}=Ca({sensitivity:"base"}),h=Lt({search:a.defaultSearch||"",filtered:{count:0,items:new Map,groups:new Set}});pe(()=>a.defaultSearch,m=>{m!==void 0&&(h.search=m)});function b(){if(!h.search){h.filtered.count=o.value.size;return}h.filtered.groups=new Set;let m=0;for(const[v,k]of o.value){const g=f(k,h.search);h.filtered.items.set(v,g?1:0),g&&m++}for(const[v,k]of r.value)for(const g of k)if(h.filtered.items.get(g)>0){h.filtered.groups.add(v);break}h.filtered.count=m}return pe(()=>h.search,()=>{b()}),pe(()=>o.value.size,()=>{h.search&&b()}),Mo({allItems:o,allGroups:r,filterState:h}),(m,v)=>(u(),_(e(Ia),q({"data-slot":"command"},e(i),{class:e(W)("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",a.class)}),{default:c(()=>[V(m.$slots,"default")]),_:3},16,["class"]))}}),uo=Object.assign(io,{__name:"UiCommand"}),co=E({__name:"Dialog",props:{open:{type:Boolean},defaultOpen:{type:Boolean},modal:{type:Boolean}},emits:["update:open"],setup(s,{emit:t}){const l=ve(s,t);return(i,o)=>(u(),_(e(ia),q({"data-slot":"dialog"},e(l)),{default:c(r=>[V(i.$slots,"default",Ae(Be(r)))]),_:3},16))}}),kt=Object.assign(co,{__name:"UiDialog"}),po=E({__name:"DialogClose",props:{asChild:{type:Boolean},as:{}},setup(s){const t=s;return(a,n)=>(u(),_(e(Ge),q({"data-slot":"dialog-close"},t),{default:c(()=>[V(a.$slots,"default")]),_:3},16))}});Object.assign(po,{__name:"UiDialogClose"});const fo=E({__name:"DialogOverlay",props:{forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(s){const t=s,a=te(t,"class");return(n,l)=>(u(),_(e(ft),q({"data-slot":"dialog-overlay"},e(a),{class:e(W)("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:c(()=>[V(n.$slots,"default")]),_:3},16,["class"]))}}),mo=Object.assign(fo,{__name:"UiDialogOverlay"}),vo=E({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(s,{emit:t}){const a=s,n=t,l=te(a,"class"),i=ve(l,n);return(o,r)=>(u(),_(e(mt),null,{default:c(()=>[p(mo),p(e(vt),q({"data-slot":"dialog-content"},{...o.$attrs,...e(i)},{class:e(W)("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",a.class)}),{default:c(()=>[V(o.$slots,"default"),s.showCloseButton?(u(),_(e(Ge),{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:c(()=>[p(e(ht)),r[0]||(r[0]=d("span",{class:"sr-only"},"Close",-1))]),_:1})):F("",!0)]),_:3},16,["class"])]),_:3}))}}),Ct=Object.assign(vo,{__name:"UiDialogContent"}),ho=E({__name:"DialogDescription",props:{asChild:{type:Boolean},as:{},class:{}},setup(s){const t=s,a=te(t,"class"),n=Te(a);return(l,i)=>(u(),_(e(ua),q({"data-slot":"dialog-description"},e(n),{class:e(W)("text-muted-foreground text-sm",t.class)}),{default:c(()=>[V(l.$slots,"default")]),_:3},16,["class"]))}}),St=Object.assign(ho,{__name:"UiDialogDescription"}),go=E({__name:"DialogFooter",props:{class:{}},setup(s){const t=s;return(a,n)=>(u(),S("div",{"data-slot":"dialog-footer",class:oe(e(W)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",t.class))},[V(a.$slots,"default")],2))}});Object.assign(go,{__name:"UiDialogFooter"});const yo=E({__name:"DialogHeader",props:{class:{}},setup(s){const t=s;return(a,n)=>(u(),S("div",{"data-slot":"dialog-header",class:oe(e(W)("flex flex-col gap-2 text-center sm:text-left",t.class))},[V(a.$slots,"default")],2))}}),$t=Object.assign(yo,{__name:"UiDialogHeader"}),_o=E({inheritAttrs:!1,__name:"DialogScrollContent",props:{forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(s,{emit:t}){const a=s,n=t,l=te(a,"class"),i=ve(l,n);return(o,r)=>(u(),_(e(mt),null,{default:c(()=>[p(e(ft),{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:c(()=>[p(e(vt),q({class:e(W)("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",a.class)},{...o.$attrs,...e(i)},{onPointerDownOutside:r[0]||(r[0]=f=>{const h=f.detail.originalEvent,b=h.target;(h.offsetX>b.clientWidth||h.offsetY>b.clientHeight)&&f.preventDefault()})}),{default:c(()=>[V(o.$slots,"default"),p(e(Ge),{class:"absolute top-4 right-4 p-0.5 transition-colors rounded-md hover:bg-secondary"},{default:c(()=>[p(e(ht),{class:"w-4 h-4"}),r[1]||(r[1]=d("span",{class:"sr-only"},"Close",-1))]),_:1})]),_:3},16,["class"])]),_:3})]),_:3}))}});Object.assign(_o,{__name:"UiDialogScrollContent"});const bo=E({__name:"DialogTitle",props:{asChild:{type:Boolean},as:{},class:{}},setup(s){const t=s,a=te(t,"class"),n=Te(a);return(l,i)=>(u(),_(e(da),q({"data-slot":"dialog-title"},e(n),{class:e(W)("text-lg leading-none font-semibold",t.class)}),{default:c(()=>[V(l.$slots,"default")]),_:3},16,["class"]))}}),Rt=Object.assign(bo,{__name:"UiDialogTitle"}),xo=E({__name:"DialogTrigger",props:{asChild:{type:Boolean},as:{}},setup(s){const t=s;return(a,n)=>(u(),_(e(ca),q({"data-slot":"dialog-trigger"},t),{default:c(()=>[V(a.$slots,"default")]),_:3},16))}});Object.assign(xo,{__name:"UiDialogTrigger"});const wo=E({__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(s,{emit:t}){const l=ve(s,t);return(i,o)=>(u(),_(e(kt),Ae(Be(e(l))),{default:c(r=>[p(e(Ct),{class:"overflow-hidden p-0","show-close-button":!1},{default:c(()=>[p(e($t),{class:"sr-only"},{default:c(()=>[p(e(Rt),null,{default:c(()=>[G(O(s.title),1)]),_:1}),p(e(St),null,{default:c(()=>[G(O(s.description),1)]),_:1})]),_:1}),p(uo,{"default-search":s.defaultSearch},{default:c(()=>[V(i.$slots,"default",Ae(Be(r)))]),_:2},1032,["default-search"])]),_:2},1024)]),_:3},16))}}),ko=Object.assign(wo,{__name:"UiCommandDialog"}),Co=E({__name:"CommandEmpty",props:{asChild:{type:Boolean},as:{},class:{}},setup(s){const t=s,a=te(t,"class"),{filterState:n}=Ie(),l=B(()=>!!n.search&&n.filtered.count===0);return(i,o)=>l.value?(u(),_(e(re),q({key:0,"data-slot":"command-empty"},e(a),{class:e(W)("py-6 text-center text-sm",t.class)}),{default:c(()=>[V(i.$slots,"default")]),_:3},16,["class"])):F("",!0)}}),So=Object.assign(Co,{__name:"UiCommandEmpty"}),$o=E({__name:"CommandGroup",props:{asChild:{type:Boolean},as:{},class:{},heading:{}},setup(s){const t=s,a=te(t,"class"),{allGroups:n,filterState:l}=Ie(),i=Pe(),o=B(()=>l.search?l.filtered.groups.has(i):!0);return Lo({id:i}),ie(()=>{n.value.has(i)||n.value.set(i,new Set)}),fe(()=>{n.value.delete(i)}),(r,f)=>(u(),_(e(ja),q(e(a),{id:e(i),"data-slot":"command-group",class:e(W)("text-foreground overflow-hidden p-1",t.class),hidden:o.value?void 0:!0}),{default:c(()=>[s.heading?(u(),_(e(Ua),{key:0,"data-slot":"command-group-heading",class:"px-2 py-1.5 text-xs font-medium text-muted-foreground"},{default:c(()=>[G(O(s.heading),1)]),_:1})):F("",!0),V(r.$slots,"default")]),_:3},16,["id","class","hidden"]))}}),Ve=Object.assign($o,{__name:"UiCommandGroup"}),Ro={"data-slot":"command-input-wrapper",class:"flex h-9 items-center gap-2 border-b px-3"},Eo=E({inheritAttrs:!1,__name:"CommandInput",props:{modelValue:{},autoFocus:{type:Boolean},disabled:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(s){const t=s,a=te(t,"class"),n=Te(a),{filterState:l}=Ie(),i=C(null);return ie(()=>{ye(()=>{const o=i.value?.$el;if(o&&l.search){const r=l.search.length;o.setSelectionRange(r,r)}})}),(o,r)=>(u(),S("div",Ro,[p(e(xa),{class:"size-4 shrink-0 opacity-50"}),p(e(La),q({ref_key:"inputRef",ref:i},{...e(n),...o.$attrs},{modelValue:e(l).search,"onUpdate:modelValue":r[0]||(r[0]=f=>e(l).search=f),"data-slot":"command-input","auto-focus":"",class:e(W)("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"])]))}}),Ao=Object.assign(Eo,{__name:"UiCommandInput"}),Bo=E({__name:"CommandItem",props:{value:{},disabled:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:["select"],setup(s,{emit:t}){const a=s,n=t,l=te(a,"class"),i=ve(l,n),o=Pe(),{filterState:r,allItems:f,allGroups:h}=Ie(),b=Vo(),m=B(()=>{if(r.search){const g=r.filtered.items.get(o);return g===void 0?!0:g>0}else return!0}),v=C(),k=Nt(v);return ie(()=>{if(!(k.value instanceof HTMLElement))return;f.value.set(o,k.value.textContent??a.value?.toString()??"");const g=b?.id;g&&(h.value.has(g)?h.value.get(g)?.add(o):h.value.set(g,new Set([o])))}),fe(()=>{f.value.delete(o)}),(g,P)=>m.value?(u(),_(e(Wa),q({key:0},e(i),{id:e(o),ref_key:"itemRef",ref:v,"data-slot":"command-item",class:e(W)("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",a.class),onSelect:P[0]||(P[0]=()=>{e(r).search=""})}),{default:c(()=>[V(g.$slots,"default")]),_:3},16,["id","class"])):F("",!0)}}),de=Object.assign(Bo,{__name:"UiCommandItem"}),Do={role:"presentation"},Po=E({__name:"CommandList",props:{asChild:{type:Boolean},as:{},class:{}},setup(s){const t=s,a=te(t,"class"),n=Te(a);return(l,i)=>(u(),_(e(Ma),q({"data-slot":"command-list"},e(n),{class:e(W)("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto scrollbar-none",t.class)}),{default:c(()=>[d("div",Do,[V(l.$slots,"default")])]),_:3},16,["class"]))}}),To=Object.assign(Po,{__name:"UiCommandList"}),Io=E({__name:"CommandSeparator",props:{orientation:{},decorative:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(s){const t=s,a=te(t,"class");return(n,l)=>(u(),_(e(pa),q({"data-slot":"command-separator"},e(a),{class:e(W)("bg-border -mx-1 h-px",t.class)}),{default:c(()=>[V(n.$slots,"default")]),_:3},16,["class"]))}}),tt=Object.assign(Io,{__name:"UiCommandSeparator"}),Oo=E({__name:"CommandShortcut",props:{class:{}},setup(s){const t=s;return(a,n)=>(u(),S("span",{"data-slot":"command-shortcut",class:oe(e(W)("text-muted-foreground ml-auto text-xs tracking-widest",t.class))},[V(a.$slots,"default")],2))}});Object.assign(Oo,{__name:"UiCommandShortcut"});const[Ie,Mo]=be("Command"),[Vo,Lo]=be("CommandGroup"),Fo={class:"flex items-center gap-1"},qo={key:0,class:"text-[10px] uppercase tracking-wide text-muted-foreground"},zo={class:"flex-1"},jo={class:"flex-1"},Ko={class:"ml-auto flex items-center gap-1"},Uo={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"},Ho={class:"flex-1"},No={class:"ml-auto flex items-center gap-1"},Go={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"},Wo={class:"ml-auto flex items-center gap-1"},Qo={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"},Jo={class:"flex-1"},Xo=E({__name:"CommandPalette",props:{open:{type:Boolean,default:!1},openModifiers:{},filter:{default:""},filterModifiers:{}},emits:Ft(["openShortcutsHelp"],["update:open","update:filter"]),setup(s,{emit:t}){const a=Fe(s,"open"),n=Fe(s,"filter"),l=t,i=nt(),{themeMode:o,cycleThemeMode:r}=lt(),{prds:f,showArchived:h,toggleShowArchived:b}=He(),{repos:m,currentRepoId:v,selectRepo:k,refreshGitRepos:g}=De(),{showSuccess:P,showError:J}=it(),Z=["document","board","graph"],j={document:"Document",board:"Task Board",graph:"Graph"},w=C("document");{const T=localStorage.getItem("prd-viewer-tab");(T==="document"||T==="board"||T==="graph")&&(w.value=T)}function $(T){T.key!=="prd-viewer-tab"||!T.newValue||(T.newValue==="document"||T.newValue==="board"||T.newValue==="graph")&&(w.value=T.newValue)}ie(()=>{window.addEventListener("storage",$)}),fe(()=>{window.removeEventListener("storage",$)});const A=B(()=>{const T=Z.indexOf(w.value),z=T>=0?T:0;return Z[(z+1)%Z.length]}),X=B(()=>j[A.value]);function M(T){v.value&&(i.push(`/${v.value}/${T}`),a.value=!1)}function ee(T){k(T),i.push("/"),a.value=!1}function Q(){r(),a.value=!1}function ue(){const T=A.value;w.value=T,localStorage.setItem("prd-viewer-tab",T),window.dispatchEvent(new StorageEvent("storage",{key:"prd-viewer-tab",newValue:T})),a.value=!1}function he(){a.value=!1,l("openShortcutsHelp")}function ae(){b(),a.value=!1}const N=C(!1);async function Y(){if(!(!v.value||N.value)){N.value=!0,a.value=!1;try{const T=await g(v.value);P(`Discovered ${T.discovered} git repositories`)}catch{J("Failed to refresh git repos")}finally{N.value=!1}}}pe(a,T=>{T||(n.value="")});const K=B(()=>navigator.platform.toUpperCase().indexOf("MAC")>=0),ne=B(()=>K.value?"⌘":"Ctrl");return(T,z)=>(u(),_(e(ko),{open:a.value,"onUpdate:open":z[0]||(z[0]=U=>a.value=U),"default-search":n.value},{default:c(()=>[p(e(Ao),{placeholder:"Type a command or search..."}),p(e(To),null,{default:c(()=>[p(e(So),null,{default:c(()=>[...z[1]||(z[1]=[G("No results found.",-1)])]),_:1}),e(f)?.length?(u(),_(e(Ve),{key:0,heading:"Documents"},{default:c(()=>[(u(!0),S(se,null,le(e(f),U=>(u(),_(e(de),{key:U.slug,value:`PRD: ${U.name}`,onSelect:I=>M(U.slug)},{default:c(()=>[p(e(ze),{class:"size-4"}),d("span",Fo,[d("span",null,O(U.name),1),U.archived?(u(),S("span",qo,"Archived")):F("",!0)])]),_:2},1032,["value","onSelect"]))),128))]),_:1})):F("",!0),e(f)?.length&&e(m)?.length?(u(),_(e(tt),{key:1})):F("",!0),e(m)?.length?(u(),_(e(Ve),{key:2,heading:"Repositories"},{default:c(()=>[(u(!0),S(se,null,le(e(m),U=>(u(),_(e(de),{key:U.id,value:`repo-${U.id} ${U.name}`,onSelect:I=>ee(U.id)},{default:c(()=>[p(e(je),{class:"size-4"}),d("span",zo,O(U.name),1),U.id===e(v)?(u(),_(e(dt),{key:0,class:"size-4 text-primary"})):F("",!0)]),_:2},1032,["value","onSelect"]))),128))]),_:1})):F("",!0),e(m)?.length?(u(),_(e(tt),{key:3})):F("",!0),p(e(Ve),{heading:"Actions"},{default:c(()=>[p(e(de),{value:"cycle-theme light dark system",onSelect:Q},{default:c(()=>[e(o)==="system"?(u(),_(e(gt),{key:0,class:"size-4"})):e(o)==="light"?(u(),_(e(_t),{key:1,class:"size-4"})):(u(),_(e(yt),{key:2,class:"size-4"})),d("span",jo,"Cycle theme mode ("+O(e(o))+")",1),d("div",Ko,[d("kbd",Uo,O(e(ne)),1),z[2]||(z[2]=d("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}),p(e(de),{value:`switch-tab ${e(X).toLowerCase()}`,onSelect:ue},{default:c(()=>[p(e(ct),{class:"size-4"}),d("span",Ho,"Switch to "+O(e(X)),1),d("div",No,[d("kbd",Go,O(e(ne)),1),z[3]||(z[3]=d("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"]),p(e(de),{value:"keyboard shortcuts help",onSelect:he},{default:c(()=>[p(e(fa),{class:"size-4"}),z[5]||(z[5]=d("span",{class:"flex-1"},"Keyboard shortcuts",-1)),d("div",Wo,[d("kbd",Qo,O(e(ne)),1),z[4]||(z[4]=d("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(v)?(u(),_(e(de),{key:0,value:"refresh git repos rescan discover",disabled:e(N),onSelect:Y},{default:c(()=>[p(e(pt),{class:oe(["size-4",{"animate-spin":e(N)}])},null,8,["class"]),z[6]||(z[6]=d("span",{class:"flex-1"},"Refresh git repos",-1))]),_:1},8,["disabled"])):F("",!0),p(e(de),{value:"toggle archived documents",onSelect:ae},{default:c(()=>[p(e(_a),{class:"size-4"}),d("span",Jo,O(e(h)?"Hide archived documents":"Show archived documents"),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["open","default-search"]))}}),Yo=Object.assign(Xo,{__name:"CommandPalette"}),Zo={class:"space-y-6"},en={class:"mb-3 text-sm font-medium text-muted-foreground"},tn={class:"space-y-2"},an={class:"text-sm"},sn={class:"flex items-center gap-1"},on=E({__name:"ShortcutsHelp",props:{open:{type:Boolean,default:!1},openModifiers:{}},emits:["update:open"],setup(s){const t=Fe(s,"open"),a=B(()=>navigator.platform.toUpperCase().indexOf("MAC")>=0),n=B(()=>a.value?"⌘":"Ctrl"),l=B(()=>[{name:"Navigation",shortcuts:[{keys:[n.value,"K"],description:"Open command palette"},{keys:[n.value,"J"],description:"Quick jump to document"}]},{name:"Actions",shortcuts:[{keys:[n.value,"."],description:"Cycle theme mode (light/dark/system)"},{keys:[n.value,"\\"],description:"Cycle Document, Task Board, and Graph tabs"},{keys:[n.value,","],description:"Add repository"}]},{name:"Help",shortcuts:[{keys:[n.value,"/"],description:"Show this help"},{keys:["Esc"],description:"Close dialog or palette"}]}]);return(i,o)=>(u(),_(e(kt),{open:t.value,"onUpdate:open":o[0]||(o[0]=r=>t.value=r)},{default:c(()=>[p(e(Ct),{class:"max-w-md"},{default:c(()=>[p(e($t),null,{default:c(()=>[p(e(Rt),null,{default:c(()=>[...o[1]||(o[1]=[G("Keyboard Shortcuts",-1)])]),_:1}),p(e(St),null,{default:c(()=>[...o[2]||(o[2]=[G(" Quick reference for available keyboard shortcuts. ",-1)])]),_:1})]),_:1}),d("div",Zo,[(u(!0),S(se,null,le(e(l),r=>(u(),S("div",{key:r.name},[d("h3",en,O(r.name),1),d("div",tn,[(u(!0),S(se,null,le(r.shortcuts,f=>(u(),S("div",{key:f.description,class:"flex items-center justify-between"},[d("span",an,O(f.description),1),d("div",sn,[(u(!0),S(se,null,le(f.keys,(h,b)=>(u(),S("kbd",{key:b,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"},O(h),1))),128))])]))),128))])]))),128))])]),_:1})]),_:1},8,["open"]))}}),nn=Object.assign(on,{__name:"ShortcutsHelp"});function Et(){const s=document.activeElement;if(!s)return!1;const t=s.tagName.toLowerCase();return t==="input"||t==="textarea"||s.getAttribute("contenteditable")==="true"||s.getAttribute("role")==="textbox"}function ln(s){const t=s.toLowerCase().split("+"),a=t.pop()||"";return{meta:t.includes("meta"),ctrl:t.includes("ctrl"),shift:t.includes("shift"),alt:t.includes("alt"),key:a}}function rn(s,t){const a=s.key.toLowerCase();let n=a===t.key;return t.key==="\\"&&(n=a==="\\"||s.code==="Backslash"),t.key==="/"&&(n=a==="/"||s.code==="Slash"),t.key==="."&&(n=a==="."||s.code==="Period"),t.key===","&&(n=a===","||s.code==="Comma"),n&&s.metaKey===t.meta&&s.ctrlKey===t.ctrl&&s.shiftKey===t.shift&&s.altKey===t.alt}const Ee=[];let at=!1;function un(s){for(const t of Ee)if(rn(s,t.combo)){if(!t.allowInInput&&Et())continue;s.preventDefault(),s.stopPropagation(),t.handler();return}}function st(){at||(document.addEventListener("keydown",un,{capture:!0}),at=!0)}function dn(){ie(()=>{st()});function s(a,n,l){const o={combo:ln(a),handler:n,allowInInput:l?.allowInInput??!1};Ee.push(o),st(),fe(()=>{const r=Ee.indexOf(o);r>-1&&Ee.splice(r,1)})}function t(){return Et()}return{onShortcut:s,isInputFocused:t}}const cn=2e3,pn=2e3;function fn(s){return!s.instanceId||!s.buildId?null:`${s.buildId}:${s.instanceId}`}function mn(s){const t=C(null),a=C(!1),n=C(null),l=C(null),i=C(null),o=C(null),r=C(!1),f=C(!1),h=C(!1);function b(){l.value&&(clearTimeout(l.value),l.value=null)}function m(){i.value&&(clearInterval(i.value),i.value=null)}async function v(){try{const w=await $fetch(`/api/runtime?_=${Date.now()}`);return fn(w)}catch{return null}}async function k(){o.value===null&&(o.value=await v())}async function g(){if(!(r.value||h.value)){r.value=!0;try{const w=await v();if(!w)return;if(!o.value){o.value=w;return}w!==o.value&&(h.value=!0,window.location.reload())}finally{r.value=!1}}}function P(){i.value||(i.value=wt(()=>{g()},pn))}function J(){l.value||(l.value=setTimeout(()=>{l.value=null,Z()},cn))}function Z(){if(!t.value)try{const w=new EventSource("/api/watch");w.onopen=async()=>{a.value=!0,n.value=null,b(),m(),f.value&&(f.value=!1,await g())},w.onmessage=$=>{try{const A=JSON.parse($.data);s(A)}catch{}},w.onerror=()=>{a.value=!1,n.value="Connection lost",f.value=!0,t.value===w&&(w.close(),t.value=null),P(),J()},t.value=w}catch{n.value="Failed to connect",P(),J()}}function j(){b(),m(),f.value=!1,t.value&&(t.value.close(),t.value=null,a.value=!1)}return ie(async()=>{await k(),Z()}),fe(()=>{j()}),{isConnected:a,error:n,connect:Z,disconnect:j}}const vn={class:"min-h-screen bg-background text-foreground"},hn={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"},gn={class:"flex h-full items-center justify-between px-4 md:px-6"},yn={class:"flex items-center gap-3"},_n={class:"hidden text-xs text-muted-foreground md:inline"},bn={class:"flex items-center gap-3"},xn={class:"flex h-screen pt-14"},wn={class:"flex-1 overflow-auto"},Bn=E({__name:"default",setup(s){const{themeMode:t,cycleThemeMode:a}=lt(),{refreshPrds:n}=He(),{currentRepoId:l}=De(),i=Ke(),o=jt(),r=B(()=>o.public.stewardVersion||"0.0.0"),f=B(()=>o.public.stewardPackageName||"steward"),h=C(null);qt("fileChangeEvent",h);const b=C(!1),m=C(""),v=C(!1),k=C(null),{onShortcut:g}=dn();g("Meta+k",()=>{b.value=!0}),g("Ctrl+k",()=>{b.value=!0}),g("Meta+j",()=>{m.value="PRD: ",b.value=!0}),g("Ctrl+j",()=>{m.value="PRD: ",b.value=!0});function P(){const w=["document","board","graph"],$=localStorage.getItem("prd-viewer-tab")||"document",A=w.indexOf($),X=A>=0?A:0,M=w[(X+1)%w.length]??"document";localStorage.setItem("prd-viewer-tab",M),window.dispatchEvent(new StorageEvent("storage",{key:"prd-viewer-tab",newValue:M}))}g("Meta+\\",P),g("Ctrl+\\",P);function J(){a()}g("Meta+.",J),g("Ctrl+.",J);function Z(){k.value?.openAddDialog()}g("Meta+,",Z),g("Ctrl+,",Z);function j(){v.value=!0}return g("Meta+/",j),g("Ctrl+/",j),g("Meta+Shift+/",j),g("Ctrl+Shift+/",j),mn(w=>{if(w.type==="connected"||!w.category)return;const $=w.category;if(w.repoId!==l.value)return;($==="prd"||$==="tasks")&&n();const A=i.params.prd,X=$==="tasks"||$==="progress",M=$==="prd"&&(!A||w.path?.includes(`/${A}.`)),ee=!!A&&X&&w.path?.includes(`/${A}/`);(X||M||ee)&&(h.value={category:$,path:w.path,timestamp:Date.now()})}),(w,$)=>{const A=ys,X=Hs,M=zt,ee=ro;return u(),S("div",vn,[p(A),p(Yo,{open:e(b),"onUpdate:open":$[0]||($[0]=Q=>Ce(b)?b.value=Q:null),filter:e(m),"onUpdate:filter":$[1]||($[1]=Q=>Ce(m)?m.value=Q:null),onOpenShortcutsHelp:j},null,8,["open","filter"]),p(nn,{open:e(v),"onUpdate:open":$[2]||($[2]=Q=>Ce(v)?v.value=Q:null)},null,8,["open"]),d("header",hn,[d("div",gn,[d("div",yn,[$[3]||($[3]=d("h1",{class:"text-lg font-semibold tracking-tight"}," PRD Viewer ",-1)),d("span",_n,O(e(f))+" v"+O(e(r)),1)]),p(M,null,{fallback:c(()=>[...$[5]||($[5]=[d("div",{class:"flex items-center gap-3"},[d("div",{class:"h-8 w-[200px] animate-pulse rounded-md bg-muted"}),d("div",{class:"size-9 animate-pulse rounded-md bg-muted"})],-1)])]),default:c(()=>[d("div",bn,[p(X,{ref_key:"repoSelectorRef",ref:k},null,512),p(e(ce),{variant:"ghost",size:"icon",class:"size-9",onClick:J},{default:c(()=>[e(t)==="system"?(u(),_(e(gt),{key:0,class:"size-4"})):e(t)==="light"?(u(),_(e(_t),{key:1,class:"size-4"})):(u(),_(e(yt),{key:2,class:"size-4"})),$[4]||($[4]=d("span",{class:"sr-only"},"Cycle theme mode",-1))]),_:1})])]),_:1})])]),d("div",xn,[p(M,null,{fallback:c(()=>[...$[6]||($[6]=[d("aside",{class:"flex h-full w-64 flex-col border-r border-border bg-background"},[d("div",{class:"flex h-12 items-center border-b border-border px-4"},[d("div",{class:"h-4 w-20 animate-pulse rounded bg-muted"})]),d("div",{class:"flex-1 p-2 space-y-2"},[d("div",{class:"h-9 animate-pulse rounded-md bg-muted"}),d("div",{class:"h-9 animate-pulse rounded-md bg-muted"}),d("div",{class:"h-9 animate-pulse rounded-md bg-muted"})])],-1)])]),default:c(()=>[p(ee)]),_:1}),d("main",wn,[V(w.$slots,"default")])])])}}});export{Bn as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as a}from"./
|
|
1
|
+
import{_ as a}from"./CTJgb0zb.js";import{_ as i}from"./DlAUqK2U.js";import{u}from"./BRQ9Cxaw.js";import{o as c,c as l,a as e,t as r,b as d,w as p,d as f}from"./Bc2V3wPK.js";const m={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},g={class:"max-w-520px text-center z-20"},h=["textContent"],b=["textContent"],x={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},status:{type:Number,default:404},statusText:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const n=t;return u({title:`${n.status} - ${n.statusText} | ${n.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}a{color:inherit;text-decoration: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: }'}]}),(k,o)=>{const s=a;return c(),l("div",m,[o[0]||(o[0]=e("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),e("div",g,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:r(t.status)},null,8,h),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:r(t.description)},null,8,b),e("div",x,[d(s,{to:"/",class:"cursor-pointer gradient-border px-4 py-2 sm:px-6 sm:py-3 sm:text-xl text-md"},{default:p(()=>[f(r(t.backHome),1)]),_:1})])])])}}},N=i(y,[["__scopeId","data-v-a548e1ee"]]);export{N as default};
|