@staff0rd/assist 0.186.0 → 0.187.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -87,7 +87,7 @@ After installation, the `assist` command will be available globally. You can als
87
87
  - `assist backlog list [--status <type>] [-v]` - List all backlog items with status icons
88
88
  - `assist backlog add` - Add a new backlog item interactively (prompts for type: story/bug)
89
89
  - `assist backlog add --name <n> --type <t> --desc <d> --ac <criterion...>` - Add a backlog item from CLI options (used by `/draft`)
90
- - `assist backlog add-phase <id> <name> --task <t...> [--manual-check <c...>]` - Add a phase to an existing backlog item
90
+ - `assist backlog add-phase <id> <name> --task <t...> [--manual-check <c...>] [--position <pos>]` - Add a phase (appends by default; `--position` inserts at a 1-indexed position)
91
91
  - `assist backlog update <id> [--name <n>] [--desc <d>] [--type <t>] [--ac <criterion...>]` - Update fields on a backlog item
92
92
  - `assist backlog update-phase <id> <phase> [--name <n>] [--task <t...>] [--manual-check <c...>]` - Modify a plan phase (name, tasks, or manual checks)
93
93
  - `assist backlog remove-phase <id> <phase>` - Remove a plan phase from a backlog item
@@ -64,7 +64,7 @@ ${e}</tr>
64
64
  `}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
65
65
  `}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${Jt(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let a=this.parser.parseInline(n),l=L0(e);if(l===null)return a;e=l;let r='<a href="'+e+'"';return t&&(r+=' title="'+Jt(t)+'"'),r+=">"+a+"</a>",r}image({href:e,title:t,text:n,tokens:a}){a&&(n=this.parser.parseInline(a,this.parser.textRenderer));let l=L0(e);if(l===null)return Jt(n);e=l;let r=`<img src="${e}" alt="${n}"`;return t&&(r+=` title="${Jt(t)}"`),r+=">",r}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:Jt(e.text)}},wd=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}},wn=class md{constructor(t){B(this,"options");B(this,"renderer");B(this,"textRenderer");this.options=t||Ba,this.options.renderer=this.options.renderer||new _u,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new wd}static parse(t,n){return new md(n).parse(t)}static parseInline(t,n){return new md(n).parseInline(t)}parse(t,n=!0){let a="";for(let l=0;l<t.length;l++){let r=t[l];if(this.options.extensions?.renderers?.[r.type]){let o=r,u=this.options.extensions.renderers[o.type].call({parser:this},o);if(u!==!1||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(o.type)){a+=u||"";continue}}let i=r;switch(i.type){case"space":{a+=this.renderer.space(i);continue}case"hr":{a+=this.renderer.hr(i);continue}case"heading":{a+=this.renderer.heading(i);continue}case"code":{a+=this.renderer.code(i);continue}case"table":{a+=this.renderer.table(i);continue}case"blockquote":{a+=this.renderer.blockquote(i);continue}case"list":{a+=this.renderer.list(i);continue}case"html":{a+=this.renderer.html(i);continue}case"paragraph":{a+=this.renderer.paragraph(i);continue}case"text":{let o=i,u=this.renderer.text(o);for(;l+1<t.length&&t[l+1].type==="text";)o=t[++l],u+=`
66
66
  `+this.renderer.text(o);n?a+=this.renderer.paragraph({type:"paragraph",raw:u,text:u,tokens:[{type:"text",raw:u,text:u,escaped:!0}]}):a+=u;continue}default:{let o='Token with "'+i.type+'" type was not found.';if(this.options.silent)return console.error(o),"";throw new Error(o)}}}return a}parseInline(t,n=this.renderer){let a="";for(let l=0;l<t.length;l++){let r=t[l];if(this.options.extensions?.renderers?.[r.type]){let o=this.options.extensions.renderers[r.type].call({parser:this},r);if(o!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(r.type)){a+=o||"";continue}}let i=r;switch(i.type){case"escape":{a+=n.text(i);break}case"html":{a+=n.html(i);break}case"link":{a+=n.link(i);break}case"image":{a+=n.image(i);break}case"strong":{a+=n.strong(i);break}case"em":{a+=n.em(i);break}case"codespan":{a+=n.codespan(i);break}case"br":{a+=n.br(i);break}case"del":{a+=n.del(i);break}case"text":{a+=n.text(i);break}default:{let o='Token with "'+i.type+'" type was not found.';if(this.options.silent)return console.error(o),"";throw new Error(o)}}}return a}},fd,Cu=(fd=class{constructor(e){B(this,"options");B(this,"block");this.options=e||Ba}preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}provideLexer(){return this.block?En.lex:En.lexInline}provideParser(){return this.block?wn.parse:wn.parseInline}},B(fd,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens"])),fd),Zx=class{constructor(...e){B(this,"defaults",pd());B(this,"options",this.setOptions);B(this,"parse",this.parseMarkdown(!0));B(this,"parseInline",this.parseMarkdown(!1));B(this,"Parser",wn);B(this,"Renderer",_u);B(this,"TextRenderer",wd);B(this,"Lexer",En);B(this,"Tokenizer",Au);B(this,"Hooks",Cu);this.use(...e)}walkTokens(e,t){let n=[];for(let a of e)switch(n=n.concat(t.call(this,a)),a.type){case"table":{let l=a;for(let r of l.header)n=n.concat(this.walkTokens(r.tokens,t));for(let r of l.rows)for(let i of r)n=n.concat(this.walkTokens(i.tokens,t));break}case"list":{let l=a;n=n.concat(this.walkTokens(l.items,t));break}default:{let l=a;this.defaults.extensions?.childTokens?.[l.type]?this.defaults.extensions.childTokens[l.type].forEach(r=>{let i=l[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):l.tokens&&(n=n.concat(this.walkTokens(l.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let a={...n};if(a.async=this.defaults.async||a.async||!1,n.extensions&&(n.extensions.forEach(l=>{if(!l.name)throw new Error("extension name required");if("renderer"in l){let r=t.renderers[l.name];r?t.renderers[l.name]=function(...i){let o=l.renderer.apply(this,i);return o===!1&&(o=r.apply(this,i)),o}:t.renderers[l.name]=l.renderer}if("tokenizer"in l){if(!l.level||l.level!=="block"&&l.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let r=t[l.level];r?r.unshift(l.tokenizer):t[l.level]=[l.tokenizer],l.start&&(l.level==="block"?t.startBlock?t.startBlock.push(l.start):t.startBlock=[l.start]:l.level==="inline"&&(t.startInline?t.startInline.push(l.start):t.startInline=[l.start]))}"childTokens"in l&&l.childTokens&&(t.childTokens[l.name]=l.childTokens)}),a.extensions=t),n.renderer){let l=this.defaults.renderer||new _u(this.defaults);for(let r in n.renderer){if(!(r in l))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let i=r,o=n.renderer[i],u=l[i];l[i]=(...s)=>{let f=o.apply(l,s);return f===!1&&(f=u.apply(l,s)),f||""}}a.renderer=l}if(n.tokenizer){let l=this.defaults.tokenizer||new Au(this.defaults);for(let r in n.tokenizer){if(!(r in l))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let i=r,o=n.tokenizer[i],u=l[i];l[i]=(...s)=>{let f=o.apply(l,s);return f===!1&&(f=u.apply(l,s)),f}}a.tokenizer=l}if(n.hooks){let l=this.defaults.hooks||new Cu;for(let r in n.hooks){if(!(r in l))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let i=r,o=n.hooks[i],u=l[i];Cu.passThroughHooks.has(r)?l[i]=s=>{if(this.defaults.async)return Promise.resolve(o.call(l,s)).then(c=>u.call(l,c));let f=o.call(l,s);return u.call(l,f)}:l[i]=(...s)=>{let f=o.apply(l,s);return f===!1&&(f=u.apply(l,s)),f}}a.hooks=l}if(n.walkTokens){let l=this.defaults.walkTokens,r=n.walkTokens;a.walkTokens=function(i){let o=[];return o.push(r.call(this,i)),l&&(o=o.concat(l.call(this,i))),o}}this.defaults={...this.defaults,...a}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return En.lex(e,t??this.defaults)}parser(e,t){return wn.parse(e,t??this.defaults)}parseMarkdown(e){return(n,a)=>{let l={...a},r={...this.defaults,...l},i=this.onError(!!r.silent,!!r.async);if(this.defaults.async===!0&&l.async===!1)return i(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof n>"u"||n===null)return i(new Error("marked(): input parameter is undefined or null"));if(typeof n!="string")return i(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));r.hooks&&(r.hooks.options=r,r.hooks.block=e);let o=r.hooks?r.hooks.provideLexer():e?En.lex:En.lexInline,u=r.hooks?r.hooks.provideParser():e?wn.parse:wn.parseInline;if(r.async)return Promise.resolve(r.hooks?r.hooks.preprocess(n):n).then(s=>o(s,r)).then(s=>r.hooks?r.hooks.processAllTokens(s):s).then(s=>r.walkTokens?Promise.all(this.walkTokens(s,r.walkTokens)).then(()=>s):s).then(s=>u(s,r)).then(s=>r.hooks?r.hooks.postprocess(s):s).catch(i);try{r.hooks&&(n=r.hooks.preprocess(n));let s=o(n,r);r.hooks&&(s=r.hooks.processAllTokens(s)),r.walkTokens&&this.walkTokens(s,r.walkTokens);let f=u(s,r);return r.hooks&&(f=r.hooks.postprocess(f)),f}catch(s){return i(s)}}}onError(e,t){return n=>{if(n.message+=`
67
- Please report this to https://github.com/markedjs/marked.`,e){let a="<p>An error occurred:</p><pre>"+Jt(n.message+"",!0)+"</pre>";return t?Promise.resolve(a):a}if(t)return Promise.reject(n);throw n}}},Ua=new Zx;function H(e,t){return Ua.parse(e,t)}H.options=H.setOptions=function(e){return Ua.setOptions(e),H.defaults=Ua.defaults,U0(H.defaults),H};H.getDefaults=pd;H.defaults=Ba;H.use=function(...e){return Ua.use(...e),H.defaults=Ua.defaults,U0(H.defaults),H};H.walkTokens=function(e,t){return Ua.walkTokens(e,t)};H.parseInline=Ua.parseInline;H.Parser=wn;H.parser=wn.parse;H.Renderer=_u;H.TextRenderer=wd;H.Lexer=En;H.lexer=En.lex;H.Tokenizer=Au;H.Hooks=Cu;H.parse=H;var vN=H.options,bN=H.setOptions,RN=H.use,SN=H.walkTokens,EN=H.parseInline;var wN=wn.parse,xN=En.lex;var P0=w(M(),1),xn=w(D(),1);function Kx({text:e}){return(0,xn.jsx)("div",{className:"border border-gray-200 rounded-md p-3 mt-2 min-h-[60px] bg-gray-50",dangerouslySetInnerHTML:{__html:H.parse(e||"")}})}function X0({value:e,onChange:t}){let[n,a]=(0,P0.useState)(!1);return(0,xn.jsxs)(Fe.Root,{className:"mb-4",children:[(0,xn.jsxs)(Fe.Label,{className:"block font-medium mb-1 text-sm",children:["Description"," ",(0,xn.jsx)("button",{type:"button",className:"text-xs text-blue-600 cursor-pointer ml-2 bg-transparent border-none p-0",onClick:()=>a(!n),children:"(preview)"})]}),(0,xn.jsx)(Fe.Control,{className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm font-[inherit] min-h-[120px] resize-y",render:(0,xn.jsx)("textarea",{}),placeholder:"Markdown supported",value:e,onChange:l=>t(l.target.value)}),n&&(0,xn.jsx)(Kx,{text:e})]})}var fi=w(D(),1);function Q0({submitLabel:e,onCancel:t}){return(0,fi.jsxs)("div",{className:"flex gap-2 mt-4",children:[(0,fi.jsx)("button",{type:"submit",className:"bg-blue-600 hover:bg-blue-700 text-white rounded-md px-4 py-2 text-sm font-medium cursor-pointer",children:e}),(0,fi.jsx)("button",{type:"button",className:"bg-gray-200 hover:bg-gray-300 text-gray-800 rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:t,children:"Cancel"})]})}async function Z0(e,t,n,a,l){let r=t.trim();if(!r)return;let i={type:e,name:r,description:n.trim()||void 0,acceptanceCriteria:a.map(u=>u.trim()).filter(Boolean)};return l?(await bv(l.id,i),l.id):(await gv(i)).id}function K0(e){return{type:e?.type??"story",name:e?.name??"",description:e?.description??"",ac:e?.acceptanceCriteria??[],title:e?"Edit Item":"Add Item",submitLabel:e?"Save":"Add"}}async function J0(e,t,n,a,l,r,i){e.preventDefault();let o=await Z0(t,n,a,l,r);o!==void 0&&await i(o)}var Fl=w(D(),1);function W0({value:e,onChange:t}){return(0,Fl.jsxs)(Fe.Root,{className:"mb-4",children:[(0,Fl.jsx)(Fe.Label,{className:"block font-medium mb-1 text-sm",children:"Name"}),(0,Fl.jsx)(Fe.Control,{className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm font-[inherit]",required:!0,placeholder:"Item name",value:e,onChange:n=>t(n.target.value)}),(0,Fl.jsx)(Fe.Error,{className:"text-red-500 text-xs mt-1",match:"valueMissing",children:"Name is required."})]})}var ta=w(D(),1);function eb({value:e,onChange:t}){return(0,ta.jsxs)("fieldset",{className:"mb-4",children:[(0,ta.jsx)("legend",{className:"block text-sm font-medium text-gray-700 mb-1",children:"Type"}),(0,ta.jsx)("div",{className:"flex gap-4",children:["story","bug"].map(n=>(0,ta.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer",children:[(0,ta.jsx)("input",{type:"radio",name:"type",value:n,checked:e===n,onChange:()=>t(n)}),(0,ta.jsx)("span",{className:"text-sm capitalize",children:n})]},n))})]})}var gt=w(D(),1);function Ou({item:e,onReload:t,backTo:n}){let a=Ht(),l=K0(e),[r,i]=(0,Yl.useState)(l.type),[o,u]=(0,Yl.useState)(l.name),[s,f]=(0,Yl.useState)(l.description),c=(0,Yl.useRef)(l.ac),d=()=>a(n);return(0,gt.jsxs)(gt.Fragment,{children:[(0,gt.jsx)(wu,{to:n}),(0,gt.jsxs)(td,{className:"bg-white rounded-lg p-6 border border-gray-200",onSubmit:m=>J0(m,r,o,s,c.current,e,async g=>{await t(),a(`/items/${g}`)}),children:[(0,gt.jsx)("h2",{className:"mb-4",children:l.title}),(0,gt.jsx)(eb,{value:r,onChange:i}),(0,gt.jsx)(W0,{value:o,onChange:u}),(0,gt.jsx)(X0,{value:s,onChange:f}),(0,gt.jsx)(D0,{initial:l.ac,onChange:m=>{c.current=m}}),(0,gt.jsx)(Q0,{submitLabel:l.submitLabel,onCancel:d})]})]})}var Ee={};function nb(e){return"init"in e}function xd(e){return!!e.write}function tb(e){return"v"in e||"e"in e}function Mu(e){if("e"in e)throw e.e;if((Ee.env?Ee.env.MODE:void 0)!=="production"&&!("v"in e))throw new Error("[Bug] atom state is not initialized");return e.v}function Lu(e){return typeof e?.then=="function"}function ab(e,t,n){if(!n.p.has(e)){n.p.add(e);let a=()=>n.p.delete(e);t.then(a,a)}}function lb(e,t,n){var a;let l=new Set;for(let r of((a=n.get(e))==null?void 0:a.t)||[])l.add(r);for(let r of t.p)l.add(r);return l}var Jx=(e,t,...n)=>t.read(...n),Wx=(e,t,...n)=>t.write(...n),eC=(e,t)=>{var n;return(n=t.INTERNAL_onInit)==null?void 0:n.call(t,e)},tC=(e,t,n)=>{var a;return(a=t.onMount)==null?void 0:a.call(t,n)},nC=(e,t)=>{var n;let a=Te(e),l=a[0],r=a[6],i=a[9];if((Ee.env?Ee.env.MODE:void 0)!=="production"&&!t)throw new Error("Atom is undefined or null");let o=l.get(t);return o||(o={d:new Map,p:new Set,n:0},l.set(t,o),(n=r.i)==null||n.call(r,t),i?.(e,t)),o},aC=e=>{let t=Te(e),n=t[1],a=t[3],l=t[4],r=t[5],i=t[6],o=t[13],u=[],s=f=>{try{f()}catch(c){u.push(c)}};do{i.f&&s(i.f);let f=new Set,c=f.add.bind(f);a.forEach(d=>{var m;return(m=n.get(d))==null?void 0:m.l.forEach(c)}),a.clear(),r.forEach(c),r.clear(),l.forEach(c),l.clear(),f.forEach(s),a.size&&o(e)}while(a.size||r.size||l.size);if(u.length)throw new AggregateError(u)},lC=e=>{let t=Te(e),n=t[1],a=t[2],l=t[3],r=t[11],i=t[14],o=t[17],u=[],s=new WeakSet,f=new WeakSet,c=Array.from(l);for(;c.length;){let d=c[c.length-1],m=r(e,d);if(f.has(d)){c.pop();continue}if(s.has(d)){if(a.get(d)===m.n)u.push([d,m]);else if((Ee.env?Ee.env.MODE:void 0)!=="production"&&a.has(d))throw new Error("[Bug] invalidated atom exists");f.add(d),c.pop();continue}s.add(d);for(let g of lb(d,m,n))s.has(g)||c.push(g)}for(let d=u.length-1;d>=0;--d){let[m,g]=u[d],v=!1;for(let R of g.d.keys())if(R!==m&&l.has(R)){v=!0;break}v&&(i(e,m),o(e,m)),a.delete(m)}},Cd=new WeakSet,rC=(e,t)=>{var n,a;let l=Te(e),r=l[1],i=l[2],o=l[3],u=l[6],s=l[7],f=l[11],c=l[12],d=l[13],m=l[14],g=l[16],v=l[17],R=l[20],p=l[26],h=f(e,t);if(tb(h)){if(r.has(t)&&i.get(t)!==h.n)return h;let L=!1;for(let[I,G]of h.d)if(m(e,I).n!==G){L=!0;break}if(!L)return h}let y=!0,b=new Set(h.d.keys()),S=new Map,C=()=>{for(let L of b)S.has(L)||h.d.delete(L)},x=()=>{if(r.has(t)){let L=!o.size;v(e,t),L&&(d(e),c(e))}},T=L=>{var I;if(L===t){let oe=f(e,L);if(!tb(oe))if(nb(L))R(e,L,L.init);else throw new Error("no atom init");return Mu(oe)}let G=m(e,L);try{return Mu(G)}finally{S.set(L,G.n),h.d.set(L,G.n),Lu(h.v)&&ab(t,h.v,G),r.has(t)&&((I=r.get(L))==null||I.t.add(t)),y||x()}},A,O,te={get signal(){return A||(A=new AbortController),A.signal},get setSelf(){return(Ee.env?Ee.env.MODE:void 0)!=="production"&&console.warn("[DEPRECATED] setSelf is deprecated and will be removed in v3."),(Ee.env?Ee.env.MODE:void 0)!=="production"&&!xd(t)&&console.warn("setSelf function cannot be used with read-only atom"),!O&&xd(t)&&(O=(...L)=>{if((Ee.env?Ee.env.MODE:void 0)!=="production"&&y&&console.warn("setSelf function cannot be called in sync"),!y)try{return g(e,t,...L)}finally{d(e),c(e)}}),O}},de=h.n;try{(Ee.env?Ee.env.MODE:void 0)!=="production"&&Cd.delete(e);let L=s(e,t,T,te);if((Ee.env?Ee.env.MODE:void 0)!=="production"&&Cd.has(e)&&console.warn("Detected store mutation during atom read. This is not supported."),R(e,t,L),Lu(L)){p(e,L,()=>A?.abort());let I=()=>{C(),x()};L.then(I,I)}else C();return(n=u.r)==null||n.call(u,t),h}catch(L){return delete h.v,h.e=L,++h.n,h}finally{y=!1,de!==h.n&&i.get(t)===de&&(i.set(t,h.n),o.add(t),(a=u.c)==null||a.call(u,t))}},iC=(e,t)=>{let n=Te(e),a=n[1],l=n[2],r=n[11],i=[t];for(;i.length;){let o=i.pop(),u=r(e,o);for(let s of lb(o,u,a)){let f=r(e,s);l.get(s)!==f.n&&(l.set(s,f.n),i.push(s))}}},oC=(e,t,...n)=>{let a=Te(e),l=a[3],r=a[6],i=a[8],o=a[11],u=a[12],s=a[13],f=a[14],c=a[15],d=a[16],m=a[17],g=a[20],v=!0,R=h=>Mu(f(e,h)),p=(h,...y)=>{var b;let S=o(e,h);try{if(h===t){if(!nb(h))throw new Error("atom not writable");(Ee.env?Ee.env.MODE:void 0)!=="production"&&Cd.add(e);let C=S.n,x=y[0];g(e,h,x),m(e,h),C!==S.n&&(l.add(h),c(e,h),(b=r.c)==null||b.call(r,h));return}else return d(e,h,...y)}finally{v||(s(e),u(e))}};try{return i(e,t,R,p,...n)}finally{v=!1}},uC=(e,t)=>{var n;let a=Te(e),l=a[1],r=a[3],i=a[6],o=a[11],u=a[15],s=a[18],f=a[19],c=o(e,t),d=l.get(t);if(d){for(let[m,g]of c.d)if(!d.d.has(m)){let v=o(e,m);s(e,m).t.add(t),d.d.add(m),g!==v.n&&(r.add(m),u(e,m),(n=i.c)==null||n.call(i,m))}for(let m of d.d)if(!c.d.has(m)){d.d.delete(m);let g=f(e,m);g?.t.delete(t)}}},sC=(e,t)=>{var n;let a=Te(e),l=a[1],r=a[4],i=a[6],o=a[10],u=a[11],s=a[12],f=a[13],c=a[14],d=a[16],m=a[18],g=u(e,t),v=l.get(t);if(!v){c(e,t);for(let R of g.d.keys())m(e,R).t.add(t);if(v={l:new Set,d:new Set(g.d.keys()),t:new Set},l.set(t,v),xd(t)){let R=()=>{let p=!0,h=(...y)=>{try{return d(e,t,...y)}finally{p||(f(e),s(e))}};try{let y=o(e,t,h);y&&(v.u=()=>{p=!0;try{y()}finally{p=!1}})}finally{p=!1}};r.add(R)}(n=i.m)==null||n.call(i,t)}return v},cC=(e,t)=>{var n,a;let l=Te(e),r=l[1],i=l[5],o=l[6],u=l[11],s=l[19],f=u(e,t),c=r.get(t);if(!c||c.l.size)return c;let d=!1;for(let m of c.t)if((n=r.get(m))!=null&&n.d.has(t)){d=!0;break}if(!d){c.u&&i.add(c.u),c=void 0,r.delete(t);for(let m of f.d.keys()){let g=s(e,m);g?.t.delete(t)}(a=o.u)==null||a.call(o,t);return}return c},fC=(e,t,n)=>{let a=Te(e),l=a[11],r=a[27],i=l(e,t),o="v"in i,u=i.v;if(Lu(n))for(let s of i.d.keys())ab(t,n,l(e,s));i.v=n,delete i.e,(!o||!Object.is(u,i.v))&&(++i.n,Lu(u)&&r(e,u))},dC=(e,t)=>{let n=Te(e)[14];return Mu(n(e,t))},hC=(e,t,...n)=>{let a=Te(e),l=a[12],r=a[13],i=a[16];try{return i(e,t,...n)}finally{r(e),l(e)}},mC=(e,t,n)=>{let a=Te(e),l=a[12],r=a[18],i=a[19],u=r(e,t).l;return u.add(n),l(e),()=>{u.delete(n),i(e,t),l(e)}},pC=(e,t,n)=>{let l=Te(e)[25],r=l.get(t);if(!r){r=new Set,l.set(t,r);let i=()=>l.delete(t);t.then(i,i)}r.add(n)},yC=(e,t)=>{let l=Te(e)[25].get(t);l?.forEach(r=>r())},rb=new WeakMap,Te=e=>{let t=rb.get(e);if((Ee.env?Ee.env.MODE:void 0)!=="production"&&!t)throw new Error("Store must be created by buildStore to read its building blocks");return t};function ib(e){let t=Te(e),n=t[24];return n?n(t):t}function ob(...e){let t={get(a){let l=Te(t)[21];return l(t,a)},set(a,...l){let r=Te(t)[22];return r(t,a,...l)},sub(a,l){let r=Te(t)[23];return r(t,a,l)}},n=[new WeakMap,new WeakMap,new WeakMap,new Set,new Set,new Set,{},Jx,Wx,eC,tC,nC,aC,lC,rC,iC,oC,uC,sC,cC,fC,dC,hC,mC,void 0,new WeakMap,pC,yC].map((a,l)=>e[l]||a);return rb.set(t,Object.freeze(n)),t}var ku={},gC=0;function Td(e,t){let n=`atom${++gC}`,a={toString(){return(ku.env?ku.env.MODE:void 0)!=="production"&&this.debugLabel?n+":"+this.debugLabel:n}};return typeof e=="function"?a.read=e:(a.init=e,a.read=vC,a.write=bC),t&&(a.write=t),a}function vC(e){return e(this)}function bC(e,t,n){return t(this,typeof n=="function"?n(e(this)):n)}var ub;function sb(){return ub?ub():ob()}var di;function cb(){return di||(di=sb(),(ku.env?ku.env.MODE:void 0)!=="production"&&(globalThis.__JOTAI_DEFAULT_STORE__||(globalThis.__JOTAI_DEFAULT_STORE__=di),globalThis.__JOTAI_DEFAULT_STORE__!==di&&console.warn("Detected multiple Jotai instances. It may cause unexpected behavior with the default store. https://github.com/pmndrs/jotai/discussions/2044"))),di}var He=w(M(),1);var db={},RC=(0,He.createContext)(void 0);function hb(e){let t=(0,He.useContext)(RC);return e?.store||t||cb()}var _d=e=>typeof e?.then=="function",Dd=e=>{e.status||(e.status="pending",e.then(t=>{e.status="fulfilled",e.value=t},t=>{e.status="rejected",e.reason=t}))},SC=He.default.use||(e=>{if(e.status==="pending")throw e;if(e.status==="fulfilled")return e.value;throw e.status==="rejected"?e.reason:(Dd(e),e)}),Ad=new WeakMap,fb=(e,t,n)=>{let l=ib(e)[26],r=Ad.get(t);return r||(r=new Promise((i,o)=>{let u=t,s=d=>m=>{u===d&&i(m)},f=d=>m=>{u===d&&o(m)},c=()=>{try{let d=n();_d(d)?(Ad.set(d,r),u=d,d.then(s(d),f(d)),l(e,d,c)):i(d)}catch(d){o(d)}};t.then(s(t),f(t)),l(e,t,c)}),Ad.set(t,r)),r};function Nd(e,t){let{delay:n,unstable_promiseStatus:a=!He.default.use}=t||{},l=hb(t),[[r,i,o],u]=(0,He.useReducer)(f=>{let c=l.get(e);return Object.is(f[0],c)&&f[1]===l&&f[2]===e?f:[c,l,e]},void 0,()=>[l.get(e),l,e]),s=r;if((i!==l||o!==e)&&(u(),s=l.get(e)),(0,He.useEffect)(()=>{let f=l.sub(e,()=>{if(a)try{let c=l.get(e);_d(c)&&Dd(fb(l,c,()=>l.get(e)))}catch{}if(typeof n=="number"){setTimeout(u,n);return}u()});return u(),f},[l,e,n,a]),(0,He.useDebugValue)(s),_d(s)){let f=fb(l,s,()=>l.get(e));return a&&Dd(f),SC(f)}return s}function EC(e,t){let n=hb(t);return(0,He.useCallback)((...l)=>{if((db.env?db.env.MODE:void 0)!=="production"&&!("write"in e))throw new Error("not writable atom");return n.set(e,...l)},[n,e])}function mb(e,t){return[Nd(e,t),EC(e,t)]}var Gl={},wC=Symbol((Gl.env?Gl.env.MODE:void 0)!=="production"?"RESET":"");var pb=e=>typeof e?.then=="function";function xC(e=()=>{try{return window.localStorage}catch(n){(Gl.env?Gl.env.MODE:void 0)!=="production"&&typeof window<"u"&&console.warn(n);return}},t){var n;let a,l,r={getItem:(u,s)=>{var f,c;let d=g=>{if(g=g||"",a!==g){try{l=JSON.parse(g,t?.reviver)}catch{return s}a=g}return l},m=(c=(f=e())==null?void 0:f.getItem(u))!=null?c:null;return pb(m)?m.then(d):d(m)},setItem:(u,s)=>{var f;return(f=e())==null?void 0:f.setItem(u,JSON.stringify(s,t?.replacer))},removeItem:u=>{var s;return(s=e())==null?void 0:s.removeItem(u)}},i=u=>(s,f,c)=>u(s,d=>{let m;try{m=JSON.parse(d||"")}catch{m=c}f(m)}),o;try{o=(n=e())==null?void 0:n.subscribe}catch{}return!o&&typeof window<"u"&&typeof window.addEventListener=="function"&&window.Storage&&(o=(u,s)=>{if(!(e()instanceof window.Storage))return()=>{};let f=c=>{c.storageArea===e()&&c.key===u&&s(c.newValue)};return window.addEventListener("storage",f),()=>{window.removeEventListener("storage",f)}}),o&&(r.subscribe=i(o)),r}var CC=xC();function yb(e,t,n=CC,a){let l=a?.getOnInit,r=Td(l?n.getItem(e,t):t);return(Gl.env?Gl.env.MODE:void 0)!=="production"&&(r.debugPrivate=!0),r.onMount=o=>{o(n.getItem(e,t));let u;return n.subscribe&&(u=n.subscribe(e,o,t)),u},Td(o=>o(r),(o,u,s)=>{let f=typeof s=="function"?s(o(r)):s;return f===wC?(u(r,t),n.removeItem(e)):pb(f)?f.then(c=>(u(r,c),n.setItem(e,c))):(u(r,f),n.setItem(e,f))})}var zu=yb("backlog-show-completed",!1);var Ha=w(M(),1);function gb(){let[e,t]=(0,Ha.useState)(""),[n,a]=(0,Ha.useState)(null),l=(0,Ha.useRef)(void 0);return(0,Ha.useEffect)(()=>{if(l.current!==void 0&&clearTimeout(l.current),!e.trim()){a(null);return}return l.current=setTimeout(async()=>{a(await au(e))},250),()=>{l.current!==void 0&&clearTimeout(l.current)}},[e]),{query:e,setQuery:t,results:n}}var hi=w(D(),1);function vb(){let[e,t]=mb(zu);return(0,hi.jsxs)("label",{className:"flex items-center gap-2 text-sm text-gray-600 cursor-pointer select-none",children:[(0,hi.jsx)("button",{type:"button",role:"switch","aria-checked":e,onClick:()=>t(!e),className:`relative inline-flex h-5 w-9 items-center rounded-full transition-colors ${e?"bg-blue-600":"bg-gray-300"}`,children:(0,hi.jsx)("span",{className:`inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform ${e?"translate-x-[18px]":"translate-x-[3px]"}`})}),"Show completed"]})}var ja=w(D(),1),TC={todo:"\u25CB","in-progress":"\u25D4",done:"\u25CF",wontdo:"\u2715"},AC={todo:"text-gray-400","in-progress":"text-amber-500",done:"text-green-500",wontdo:"text-red-500"},_C={story:"bg-blue-100 text-blue-700",bug:"bg-red-100 text-red-700"};function bb({item:e,onSelect:t}){return(0,ja.jsxs)("button",{type:"button",className:"bg-white rounded-lg p-4 mb-2 cursor-pointer border border-gray-200 hover:shadow-md transition-shadow flex items-center gap-3 text-left w-full font-[inherit]",onClick:t,children:[(0,ja.jsx)("span",{className:`text-lg shrink-0 ${AC[e.status]}`,children:TC[e.status]}),(0,ja.jsx)("span",{className:`text-xs font-medium rounded-full px-2 shrink-0 ${_C[e.type]}`,children:e.type}),(0,ja.jsxs)("span",{className:"text-gray-400 text-sm shrink-0",children:["#",e.id]}),(0,ja.jsx)("span",{className:"font-medium",children:e.name})]})}var Sb=w(D(),1);function Rb({value:e,onChange:t}){return(0,Sb.jsx)("input",{type:"text",placeholder:"Search backlog\u2026",value:e,onChange:n=>t(n.target.value),className:"w-full mb-4 px-3 py-2 rounded-md border border-gray-600 bg-gray-800 text-gray-100 placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500"})}var vt=w(D(),1);function DC(e,t){return t?e:e.filter(n=>n.status!=="done"&&n.status!=="wontdo")}function Eb({items:e}){let t=Ht(),n=Nd(zu),{query:a,setQuery:l,results:r}=gb(),i=DC(r??e,n);return(0,vt.jsxs)(vt.Fragment,{children:[(0,vt.jsxs)("header",{className:"flex justify-between items-center mb-6",children:[(0,vt.jsx)("h1",{className:"text-2xl font-semibold",children:"Backlog"}),(0,vt.jsxs)("div",{className:"flex items-center gap-4",children:[(0,vt.jsx)(vb,{}),(0,vt.jsx)("button",{type:"button",className:"bg-blue-600 hover:bg-blue-700 text-white rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:()=>t("/add"),children:"+ Add Item"})]})]}),(0,vt.jsx)(Rb,{value:a,onChange:l}),i.length===0?(0,vt.jsx)("div",{className:"text-center text-gray-400 py-12 px-4",children:a.trim()?"No items match your search.":"No items in the backlog."}):i.map(o=>(0,vt.jsx)(bb,{item:o,onSelect:()=>t(`/items/${o.id}`)},o.id))]})}var Lb=w(M(),1);var na=w(D(),1);function wb({onConfirm:e,onCancel:t}){return(0,na.jsx)("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center z-50",children:(0,na.jsxs)("div",{className:"bg-white rounded-lg p-6 max-w-sm mx-4",children:[(0,na.jsx)("p",{className:"text-gray-800 mb-4",children:"Are you sure you want to delete this item?"}),(0,na.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,na.jsx)("button",{type:"button",className:"bg-gray-200 hover:bg-gray-300 text-gray-800 rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:t,children:"Cancel"}),(0,na.jsx)("button",{type:"button",className:"bg-red-600 hover:bg-red-700 text-white rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:e,children:"Delete"})]})]})})}var aa=w(D(),1);function xb({criteria:e}){return e.length===0?null:(0,aa.jsxs)("div",{className:"mb-4",children:[(0,aa.jsx)("h3",{className:"text-xs uppercase text-gray-500 mb-2 tracking-wide",children:"Acceptance Criteria"}),(0,aa.jsx)("ol",{className:"list-none",children:e.map((t,n)=>(0,aa.jsxs)("li",{className:"py-1 markdown",children:[(0,aa.jsxs)("span",{className:"text-gray-500 mr-2",children:[n+1,"."]}),(0,aa.jsx)("span",{dangerouslySetInnerHTML:{__html:H.parseInline(t)}})]},t))})]})}var bt=w(D(),1),NC={summary:"bg-amber-50 border-amber-200",comment:"bg-gray-50 border-gray-200"},OC={summary:"Phase summary",comment:"Comment"};function MC(e){return new Date(e).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function LC({comment:e}){return(0,bt.jsxs)("div",{className:`border rounded-md p-3 ${NC[e.type]}`,children:[(0,bt.jsxs)("div",{className:"flex items-center gap-2 text-xs text-gray-500 mb-1",children:[e.id!==void 0&&(0,bt.jsxs)("span",{className:"text-gray-400",children:["#",e.id]}),(0,bt.jsx)("span",{className:"font-medium",children:OC[e.type]}),e.phase!==void 0&&(0,bt.jsxs)("span",{children:["\xB7 Phase ",e.phase]}),(0,bt.jsxs)("span",{children:["\xB7 ",MC(e.timestamp)]})]}),(0,bt.jsx)("p",{className:"text-sm text-gray-800 whitespace-pre-wrap",children:e.text})]})}function Cb({comments:e}){return e.length===0?null:(0,bt.jsxs)("div",{className:"mb-4",children:[(0,bt.jsx)("h3",{className:"text-xs uppercase text-gray-500 mb-2 tracking-wide",children:"Comments"}),(0,bt.jsx)("div",{className:"space-y-2",children:e.map((t,n)=>(0,bt.jsx)(LC,{comment:t},`${t.timestamp}-${n}`))})]})}var la=w(D(),1);function Tb({checks:e}){return(0,la.jsxs)("div",{className:"mt-2 pt-2 border-t border-gray-200",children:[(0,la.jsx)("span",{className:"text-xs uppercase text-gray-400 tracking-wide",children:"Manual Checks"}),(0,la.jsx)("ul",{className:"list-none ml-1 mt-1",children:e.map(t=>(0,la.jsxs)("li",{className:"py-0.5 text-sm text-gray-600 markdown",children:[(0,la.jsx)("span",{className:"mr-2",children:"\u2610"}),(0,la.jsx)("span",{dangerouslySetInnerHTML:{__html:H.parseInline(t)}})]},t))})]})}var ql=w(D(),1);function Ab({tasks:e,marker:t}){return(0,ql.jsx)("ul",{className:"list-none ml-1 space-y-1",children:e.map(n=>(0,ql.jsxs)("li",{className:"py-0.5 markdown",children:[(0,ql.jsx)("span",{className:"text-gray-500 mr-2",children:t}),(0,ql.jsx)("span",{dangerouslySetInnerHTML:{__html:H.parseInline(n.task)}})]},n.task))})}var ra=w(D(),1),kC={done:"border-green-300 bg-green-50",current:"border-blue-400 bg-blue-50 ring-2 ring-blue-200",upcoming:"border-gray-200 bg-white"},zC={done:{label:"Done",style:"bg-green-100 text-green-700"},current:{label:"In Progress",style:"bg-blue-100 text-blue-700"},upcoming:{label:"Upcoming",style:"bg-gray-100 text-gray-500"}};function _b({phase:e,index:t,status:n}){let a=zC[n],l=n==="done"?"\u2713":"\u2022",r=e.manualChecks??[];return(0,ra.jsxs)("div",{className:`rounded-lg border p-4 ${kC[n]}`,children:[(0,ra.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,ra.jsxs)("span",{className:"font-medium",children:["Phase ",t+1,": ",e.name]}),(0,ra.jsx)("span",{className:`inline-block rounded-full px-2 text-xs font-medium ${a.style}`,children:a.label})]}),(0,ra.jsx)(Ab,{tasks:e.tasks,marker:l}),r.length>0&&(0,ra.jsx)(Tb,{checks:r})]})}var Il=w(D(),1);function UC(e,t){return t===void 0?"upcoming":e<t?"done":e===t?"current":"upcoming"}function Db({phases:e,currentPhase:t}){return e.length===0?null:(0,Il.jsxs)("div",{className:"mb-4",children:[(0,Il.jsx)("h3",{className:"text-xs uppercase text-gray-500 mb-2 tracking-wide",children:"Plan"}),(0,Il.jsx)("div",{className:"space-y-3",children:e.map((n,a)=>(0,Il.jsx)(_b,{phase:n,index:a,status:UC(a,t)},n.name))})]})}var Uu=w(D(),1),Nb={todo:"bg-gray-100 text-gray-500","in-progress":"bg-amber-100 text-amber-800",done:"bg-green-100 text-green-800",wontdo:"bg-red-100 text-red-700"},BC=["todo","in-progress","done","wontdo"];function Ob({current:e,onStatusChange:t}){return t?(0,Uu.jsx)("select",{value:e,onChange:n=>t(n.target.value),className:`rounded-full px-2.5 text-xs font-medium cursor-pointer ${Nb[e]}`,children:BC.map(n=>(0,Uu.jsx)("option",{value:n,children:n},n))}):(0,Uu.jsx)("span",{className:`inline-block rounded-full px-2.5 text-xs font-medium ${Nb[e]}`,children:e})}var rt=w(D(),1),HC={story:"bg-blue-100 text-blue-700",bug:"bg-red-100 text-red-700"};function jC({content:e}){return(0,rt.jsx)("div",{className:"markdown leading-relaxed",dangerouslySetInnerHTML:{__html:H.parse(e)}})}function Mb({item:e,onStatusChange:t}){return(0,rt.jsxs)("div",{className:"bg-white rounded-lg p-6 border border-gray-200",children:[(0,rt.jsx)("h2",{children:e.name}),(0,rt.jsxs)("div",{className:"text-gray-400 text-sm mb-4 flex items-center gap-2",children:["#",e.id,(0,rt.jsx)("span",{className:`inline-block rounded-full px-2.5 text-xs font-medium ${HC[e.type]}`,children:e.type}),(0,rt.jsx)(Ob,{current:e.status,onStatusChange:t})]}),e.description&&(0,rt.jsxs)("div",{className:"mb-4",children:[(0,rt.jsx)("h3",{className:"text-xs uppercase text-gray-500 mb-2 tracking-wide",children:"Description"}),(0,rt.jsx)(jC,{content:e.description})]}),(0,rt.jsx)(xb,{criteria:e.acceptanceCriteria}),e.plan&&(0,rt.jsx)(Db,{phases:e.plan,currentPhase:e.currentPhase}),e.comments&&(0,rt.jsx)(Cb,{comments:e.comments})]})}var Ye=w(D(),1);function VC({itemId:e,onDeleted:t}){let[n,a]=(0,Lb.useState)(!1);return(0,Ye.jsxs)(Ye.Fragment,{children:[n&&(0,Ye.jsx)(wb,{onConfirm:async()=>{await vv(e),await t()},onCancel:()=>a(!1)}),(0,Ye.jsx)("button",{type:"button",className:"bg-red-600 hover:bg-red-700 text-white rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:()=>a(!0),children:"Delete"})]})}function FC({itemId:e,onDeleted:t}){let n=Ht();return(0,Ye.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,Ye.jsx)(wu,{to:"/"}),(0,Ye.jsxs)("div",{className:"flex gap-2",children:[(0,Ye.jsx)("button",{type:"button",className:"bg-gray-200 hover:bg-gray-300 text-gray-800 rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:()=>n(`/items/${e}/edit`),children:"Edit"}),(0,Ye.jsx)(VC,{itemId:e,onDeleted:t})]})]})}function kb({item:e,onReload:t}){let n=Ht();return(0,Ye.jsxs)(Ye.Fragment,{children:[(0,Ye.jsx)(FC,{itemId:e.id,onDeleted:async()=>{await t(),n("/")}}),(0,Ye.jsx)(Mb,{item:e,onStatusChange:async a=>{await Rv(e.id,a),await t()}})]})}var Od=w(D(),1);function Md({items:e,mode:t,onReload:n}){let{id:a}=kf(),l=Number(a),r=e.find(i=>i.id===l);return r?t==="edit"?(0,Od.jsx)(Ou,{item:r,onReload:n,backTo:`/items/${l}`}):(0,Od.jsx)(kb,{item:r,onReload:n}):null}var jt=w(D(),1);function zb({items:e,onReload:t}){return(0,jt.jsxs)(Kr,{children:[(0,jt.jsx)(Rn,{index:!0,element:(0,jt.jsx)(Eb,{items:e})}),(0,jt.jsx)(Rn,{path:"items/:id",element:(0,jt.jsx)(Md,{items:e,mode:"detail",onReload:t})}),(0,jt.jsx)(Rn,{path:"items/:id/edit",element:(0,jt.jsx)(Md,{items:e,mode:"edit",onReload:t})}),(0,jt.jsx)(Rn,{path:"add",element:(0,jt.jsx)(Ou,{onReload:t,backTo:"/"})})]})}var $l=w(D(),1);function YC(){let[e,t]=(0,Pl.useState)([]),n=(0,Pl.useCallback)(async()=>{t(await au())},[]);return(0,Pl.useEffect)(()=>{n()},[n]),(0,$l.jsx)(qf,{children:(0,$l.jsx)(Kr,{children:(0,$l.jsx)(Rn,{path:"/*",element:(0,$l.jsx)(zb,{items:e,onReload:n})})})})}var Ub=document.getElementById("app");Ub&&(0,Bb.createRoot)(Ub).render((0,$l.jsx)(YC,{}));})();
67
+ Please report this to https://github.com/markedjs/marked.`,e){let a="<p>An error occurred:</p><pre>"+Jt(n.message+"",!0)+"</pre>";return t?Promise.resolve(a):a}if(t)return Promise.reject(n);throw n}}},Ua=new Zx;function H(e,t){return Ua.parse(e,t)}H.options=H.setOptions=function(e){return Ua.setOptions(e),H.defaults=Ua.defaults,U0(H.defaults),H};H.getDefaults=pd;H.defaults=Ba;H.use=function(...e){return Ua.use(...e),H.defaults=Ua.defaults,U0(H.defaults),H};H.walkTokens=function(e,t){return Ua.walkTokens(e,t)};H.parseInline=Ua.parseInline;H.Parser=wn;H.parser=wn.parse;H.Renderer=_u;H.TextRenderer=wd;H.Lexer=En;H.lexer=En.lex;H.Tokenizer=Au;H.Hooks=Cu;H.parse=H;var vN=H.options,bN=H.setOptions,RN=H.use,SN=H.walkTokens,EN=H.parseInline;var wN=wn.parse,xN=En.lex;var P0=w(M(),1),xn=w(D(),1);function Kx({text:e}){return(0,xn.jsx)("div",{className:"border border-gray-200 rounded-md p-3 mt-2 min-h-[60px] bg-gray-50",dangerouslySetInnerHTML:{__html:H.parse(e||"")}})}function X0({value:e,onChange:t}){let[n,a]=(0,P0.useState)(!1);return(0,xn.jsxs)(Fe.Root,{className:"mb-4",children:[(0,xn.jsxs)(Fe.Label,{className:"block font-medium mb-1 text-sm",children:["Description"," ",(0,xn.jsx)("button",{type:"button",className:"text-xs text-blue-600 cursor-pointer ml-2 bg-transparent border-none p-0",onClick:()=>a(!n),children:"(preview)"})]}),(0,xn.jsx)(Fe.Control,{className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm font-[inherit] min-h-[120px] resize-y",render:(0,xn.jsx)("textarea",{}),placeholder:"Markdown supported",value:e,onChange:l=>t(l.target.value)}),n&&(0,xn.jsx)(Kx,{text:e})]})}var fi=w(D(),1);function Q0({submitLabel:e,onCancel:t}){return(0,fi.jsxs)("div",{className:"flex gap-2 mt-4",children:[(0,fi.jsx)("button",{type:"submit",className:"bg-blue-600 hover:bg-blue-700 text-white rounded-md px-4 py-2 text-sm font-medium cursor-pointer",children:e}),(0,fi.jsx)("button",{type:"button",className:"bg-gray-200 hover:bg-gray-300 text-gray-800 rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:t,children:"Cancel"})]})}async function Z0(e,t,n,a,l){let r=t.trim();if(!r)return;let i={type:e,name:r,description:n.trim()||void 0,acceptanceCriteria:a.map(u=>u.trim()).filter(Boolean)};return l?(await bv(l.id,i),l.id):(await gv(i)).id}function K0(e){return{type:e?.type??"story",name:e?.name??"",description:e?.description??"",ac:e?.acceptanceCriteria??[],title:e?"Edit Item":"Add Item",submitLabel:e?"Save":"Add"}}async function J0(e,t,n,a,l,r,i){e.preventDefault();let o=await Z0(t,n,a,l,r);o!==void 0&&await i(o)}var Fl=w(D(),1);function W0({value:e,onChange:t}){return(0,Fl.jsxs)(Fe.Root,{className:"mb-4",children:[(0,Fl.jsx)(Fe.Label,{className:"block font-medium mb-1 text-sm",children:"Name"}),(0,Fl.jsx)(Fe.Control,{className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm font-[inherit]",required:!0,placeholder:"Item name",value:e,onChange:n=>t(n.target.value)}),(0,Fl.jsx)(Fe.Error,{className:"text-red-500 text-xs mt-1",match:"valueMissing",children:"Name is required."})]})}var ta=w(D(),1);function eb({value:e,onChange:t}){return(0,ta.jsxs)("fieldset",{className:"mb-4",children:[(0,ta.jsx)("legend",{className:"block text-sm font-medium text-gray-700 mb-1",children:"Type"}),(0,ta.jsx)("div",{className:"flex gap-4",children:["story","bug"].map(n=>(0,ta.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer",children:[(0,ta.jsx)("input",{type:"radio",name:"type",value:n,checked:e===n,onChange:()=>t(n)}),(0,ta.jsx)("span",{className:"text-sm capitalize",children:n})]},n))})]})}var gt=w(D(),1);function Ou({item:e,onReload:t,backTo:n}){let a=Ht(),l=K0(e),[r,i]=(0,Yl.useState)(l.type),[o,u]=(0,Yl.useState)(l.name),[s,f]=(0,Yl.useState)(l.description),c=(0,Yl.useRef)(l.ac),d=()=>a(n);return(0,gt.jsxs)(gt.Fragment,{children:[(0,gt.jsx)(wu,{to:n}),(0,gt.jsxs)(td,{className:"bg-white rounded-lg p-6 border border-gray-200",onSubmit:m=>J0(m,r,o,s,c.current,e,async g=>{await t(),a(`/items/${g}`)}),children:[(0,gt.jsx)("h2",{className:"mb-4",children:l.title}),(0,gt.jsx)(eb,{value:r,onChange:i}),(0,gt.jsx)(W0,{value:o,onChange:u}),(0,gt.jsx)(X0,{value:s,onChange:f}),(0,gt.jsx)(D0,{initial:l.ac,onChange:m=>{c.current=m}}),(0,gt.jsx)(Q0,{submitLabel:l.submitLabel,onCancel:d})]})]})}var Ee={};function nb(e){return"init"in e}function xd(e){return!!e.write}function tb(e){return"v"in e||"e"in e}function Mu(e){if("e"in e)throw e.e;if((Ee.env?Ee.env.MODE:void 0)!=="production"&&!("v"in e))throw new Error("[Bug] atom state is not initialized");return e.v}function Lu(e){return typeof e?.then=="function"}function ab(e,t,n){if(!n.p.has(e)){n.p.add(e);let a=()=>n.p.delete(e);t.then(a,a)}}function lb(e,t,n){var a;let l=new Set;for(let r of((a=n.get(e))==null?void 0:a.t)||[])l.add(r);for(let r of t.p)l.add(r);return l}var Jx=(e,t,...n)=>t.read(...n),Wx=(e,t,...n)=>t.write(...n),eC=(e,t)=>{var n;return(n=t.INTERNAL_onInit)==null?void 0:n.call(t,e)},tC=(e,t,n)=>{var a;return(a=t.onMount)==null?void 0:a.call(t,n)},nC=(e,t)=>{var n;let a=Te(e),l=a[0],r=a[6],i=a[9];if((Ee.env?Ee.env.MODE:void 0)!=="production"&&!t)throw new Error("Atom is undefined or null");let o=l.get(t);return o||(o={d:new Map,p:new Set,n:0},l.set(t,o),(n=r.i)==null||n.call(r,t),i?.(e,t)),o},aC=e=>{let t=Te(e),n=t[1],a=t[3],l=t[4],r=t[5],i=t[6],o=t[13],u=[],s=f=>{try{f()}catch(c){u.push(c)}};do{i.f&&s(i.f);let f=new Set,c=f.add.bind(f);a.forEach(d=>{var m;return(m=n.get(d))==null?void 0:m.l.forEach(c)}),a.clear(),r.forEach(c),r.clear(),l.forEach(c),l.clear(),f.forEach(s),a.size&&o(e)}while(a.size||r.size||l.size);if(u.length)throw new AggregateError(u)},lC=e=>{let t=Te(e),n=t[1],a=t[2],l=t[3],r=t[11],i=t[14],o=t[17],u=[],s=new WeakSet,f=new WeakSet,c=Array.from(l);for(;c.length;){let d=c[c.length-1],m=r(e,d);if(f.has(d)){c.pop();continue}if(s.has(d)){if(a.get(d)===m.n)u.push([d,m]);else if((Ee.env?Ee.env.MODE:void 0)!=="production"&&a.has(d))throw new Error("[Bug] invalidated atom exists");f.add(d),c.pop();continue}s.add(d);for(let g of lb(d,m,n))s.has(g)||c.push(g)}for(let d=u.length-1;d>=0;--d){let[m,g]=u[d],v=!1;for(let R of g.d.keys())if(R!==m&&l.has(R)){v=!0;break}v&&(i(e,m),o(e,m)),a.delete(m)}},Cd=new WeakSet,rC=(e,t)=>{var n,a;let l=Te(e),r=l[1],i=l[2],o=l[3],u=l[6],s=l[7],f=l[11],c=l[12],d=l[13],m=l[14],g=l[16],v=l[17],R=l[20],p=l[26],h=f(e,t);if(tb(h)){if(r.has(t)&&i.get(t)!==h.n)return h;let L=!1;for(let[I,G]of h.d)if(m(e,I).n!==G){L=!0;break}if(!L)return h}let y=!0,b=new Set(h.d.keys()),S=new Map,C=()=>{for(let L of b)S.has(L)||h.d.delete(L)},x=()=>{if(r.has(t)){let L=!o.size;v(e,t),L&&(d(e),c(e))}},T=L=>{var I;if(L===t){let oe=f(e,L);if(!tb(oe))if(nb(L))R(e,L,L.init);else throw new Error("no atom init");return Mu(oe)}let G=m(e,L);try{return Mu(G)}finally{S.set(L,G.n),h.d.set(L,G.n),Lu(h.v)&&ab(t,h.v,G),r.has(t)&&((I=r.get(L))==null||I.t.add(t)),y||x()}},A,O,te={get signal(){return A||(A=new AbortController),A.signal},get setSelf(){return(Ee.env?Ee.env.MODE:void 0)!=="production"&&console.warn("[DEPRECATED] setSelf is deprecated and will be removed in v3."),(Ee.env?Ee.env.MODE:void 0)!=="production"&&!xd(t)&&console.warn("setSelf function cannot be used with read-only atom"),!O&&xd(t)&&(O=(...L)=>{if((Ee.env?Ee.env.MODE:void 0)!=="production"&&y&&console.warn("setSelf function cannot be called in sync"),!y)try{return g(e,t,...L)}finally{d(e),c(e)}}),O}},de=h.n;try{(Ee.env?Ee.env.MODE:void 0)!=="production"&&Cd.delete(e);let L=s(e,t,T,te);if((Ee.env?Ee.env.MODE:void 0)!=="production"&&Cd.has(e)&&console.warn("Detected store mutation during atom read. This is not supported."),R(e,t,L),Lu(L)){p(e,L,()=>A?.abort());let I=()=>{C(),x()};L.then(I,I)}else C();return(n=u.r)==null||n.call(u,t),h}catch(L){return delete h.v,h.e=L,++h.n,h}finally{y=!1,de!==h.n&&i.get(t)===de&&(i.set(t,h.n),o.add(t),(a=u.c)==null||a.call(u,t))}},iC=(e,t)=>{let n=Te(e),a=n[1],l=n[2],r=n[11],i=[t];for(;i.length;){let o=i.pop(),u=r(e,o);for(let s of lb(o,u,a)){let f=r(e,s);l.get(s)!==f.n&&(l.set(s,f.n),i.push(s))}}},oC=(e,t,...n)=>{let a=Te(e),l=a[3],r=a[6],i=a[8],o=a[11],u=a[12],s=a[13],f=a[14],c=a[15],d=a[16],m=a[17],g=a[20],v=!0,R=h=>Mu(f(e,h)),p=(h,...y)=>{var b;let S=o(e,h);try{if(h===t){if(!nb(h))throw new Error("atom not writable");(Ee.env?Ee.env.MODE:void 0)!=="production"&&Cd.add(e);let C=S.n,x=y[0];g(e,h,x),m(e,h),C!==S.n&&(l.add(h),c(e,h),(b=r.c)==null||b.call(r,h));return}else return d(e,h,...y)}finally{v||(s(e),u(e))}};try{return i(e,t,R,p,...n)}finally{v=!1}},uC=(e,t)=>{var n;let a=Te(e),l=a[1],r=a[3],i=a[6],o=a[11],u=a[15],s=a[18],f=a[19],c=o(e,t),d=l.get(t);if(d){for(let[m,g]of c.d)if(!d.d.has(m)){let v=o(e,m);s(e,m).t.add(t),d.d.add(m),g!==v.n&&(r.add(m),u(e,m),(n=i.c)==null||n.call(i,m))}for(let m of d.d)if(!c.d.has(m)){d.d.delete(m);let g=f(e,m);g?.t.delete(t)}}},sC=(e,t)=>{var n;let a=Te(e),l=a[1],r=a[4],i=a[6],o=a[10],u=a[11],s=a[12],f=a[13],c=a[14],d=a[16],m=a[18],g=u(e,t),v=l.get(t);if(!v){c(e,t);for(let R of g.d.keys())m(e,R).t.add(t);if(v={l:new Set,d:new Set(g.d.keys()),t:new Set},l.set(t,v),xd(t)){let R=()=>{let p=!0,h=(...y)=>{try{return d(e,t,...y)}finally{p||(f(e),s(e))}};try{let y=o(e,t,h);y&&(v.u=()=>{p=!0;try{y()}finally{p=!1}})}finally{p=!1}};r.add(R)}(n=i.m)==null||n.call(i,t)}return v},cC=(e,t)=>{var n,a;let l=Te(e),r=l[1],i=l[5],o=l[6],u=l[11],s=l[19],f=u(e,t),c=r.get(t);if(!c||c.l.size)return c;let d=!1;for(let m of c.t)if((n=r.get(m))!=null&&n.d.has(t)){d=!0;break}if(!d){c.u&&i.add(c.u),c=void 0,r.delete(t);for(let m of f.d.keys()){let g=s(e,m);g?.t.delete(t)}(a=o.u)==null||a.call(o,t);return}return c},fC=(e,t,n)=>{let a=Te(e),l=a[11],r=a[27],i=l(e,t),o="v"in i,u=i.v;if(Lu(n))for(let s of i.d.keys())ab(t,n,l(e,s));i.v=n,delete i.e,(!o||!Object.is(u,i.v))&&(++i.n,Lu(u)&&r(e,u))},dC=(e,t)=>{let n=Te(e)[14];return Mu(n(e,t))},hC=(e,t,...n)=>{let a=Te(e),l=a[12],r=a[13],i=a[16];try{return i(e,t,...n)}finally{r(e),l(e)}},mC=(e,t,n)=>{let a=Te(e),l=a[12],r=a[18],i=a[19],u=r(e,t).l;return u.add(n),l(e),()=>{u.delete(n),i(e,t),l(e)}},pC=(e,t,n)=>{let l=Te(e)[25],r=l.get(t);if(!r){r=new Set,l.set(t,r);let i=()=>l.delete(t);t.then(i,i)}r.add(n)},yC=(e,t)=>{let l=Te(e)[25].get(t);l?.forEach(r=>r())},rb=new WeakMap,Te=e=>{let t=rb.get(e);if((Ee.env?Ee.env.MODE:void 0)!=="production"&&!t)throw new Error("Store must be created by buildStore to read its building blocks");return t};function ib(e){let t=Te(e),n=t[24];return n?n(t):t}function ob(...e){let t={get(a){let l=Te(t)[21];return l(t,a)},set(a,...l){let r=Te(t)[22];return r(t,a,...l)},sub(a,l){let r=Te(t)[23];return r(t,a,l)}},n=[new WeakMap,new WeakMap,new WeakMap,new Set,new Set,new Set,{},Jx,Wx,eC,tC,nC,aC,lC,rC,iC,oC,uC,sC,cC,fC,dC,hC,mC,void 0,new WeakMap,pC,yC].map((a,l)=>e[l]||a);return rb.set(t,Object.freeze(n)),t}var ku={},gC=0;function Td(e,t){let n=`atom${++gC}`,a={toString(){return(ku.env?ku.env.MODE:void 0)!=="production"&&this.debugLabel?n+":"+this.debugLabel:n}};return typeof e=="function"?a.read=e:(a.init=e,a.read=vC,a.write=bC),t&&(a.write=t),a}function vC(e){return e(this)}function bC(e,t,n){return t(this,typeof n=="function"?n(e(this)):n)}var ub;function sb(){return ub?ub():ob()}var di;function cb(){return di||(di=sb(),(ku.env?ku.env.MODE:void 0)!=="production"&&(globalThis.__JOTAI_DEFAULT_STORE__||(globalThis.__JOTAI_DEFAULT_STORE__=di),globalThis.__JOTAI_DEFAULT_STORE__!==di&&console.warn("Detected multiple Jotai instances. It may cause unexpected behavior with the default store. https://github.com/pmndrs/jotai/discussions/2044"))),di}var He=w(M(),1);var db={},RC=(0,He.createContext)(void 0);function hb(e){let t=(0,He.useContext)(RC);return e?.store||t||cb()}var _d=e=>typeof e?.then=="function",Dd=e=>{e.status||(e.status="pending",e.then(t=>{e.status="fulfilled",e.value=t},t=>{e.status="rejected",e.reason=t}))},SC=He.default.use||(e=>{if(e.status==="pending")throw e;if(e.status==="fulfilled")return e.value;throw e.status==="rejected"?e.reason:(Dd(e),e)}),Ad=new WeakMap,fb=(e,t,n)=>{let l=ib(e)[26],r=Ad.get(t);return r||(r=new Promise((i,o)=>{let u=t,s=d=>m=>{u===d&&i(m)},f=d=>m=>{u===d&&o(m)},c=()=>{try{let d=n();_d(d)?(Ad.set(d,r),u=d,d.then(s(d),f(d)),l(e,d,c)):i(d)}catch(d){o(d)}};t.then(s(t),f(t)),l(e,t,c)}),Ad.set(t,r)),r};function Nd(e,t){let{delay:n,unstable_promiseStatus:a=!He.default.use}=t||{},l=hb(t),[[r,i,o],u]=(0,He.useReducer)(f=>{let c=l.get(e);return Object.is(f[0],c)&&f[1]===l&&f[2]===e?f:[c,l,e]},void 0,()=>[l.get(e),l,e]),s=r;if((i!==l||o!==e)&&(u(),s=l.get(e)),(0,He.useEffect)(()=>{let f=l.sub(e,()=>{if(a)try{let c=l.get(e);_d(c)&&Dd(fb(l,c,()=>l.get(e)))}catch{}if(typeof n=="number"){setTimeout(u,n);return}u()});return u(),f},[l,e,n,a]),(0,He.useDebugValue)(s),_d(s)){let f=fb(l,s,()=>l.get(e));return a&&Dd(f),SC(f)}return s}function EC(e,t){let n=hb(t);return(0,He.useCallback)((...l)=>{if((db.env?db.env.MODE:void 0)!=="production"&&!("write"in e))throw new Error("not writable atom");return n.set(e,...l)},[n,e])}function mb(e,t){return[Nd(e,t),EC(e,t)]}var Gl={},wC=Symbol((Gl.env?Gl.env.MODE:void 0)!=="production"?"RESET":"");var pb=e=>typeof e?.then=="function";function xC(e=()=>{try{return window.localStorage}catch(n){(Gl.env?Gl.env.MODE:void 0)!=="production"&&typeof window<"u"&&console.warn(n);return}},t){var n;let a,l,r={getItem:(u,s)=>{var f,c;let d=g=>{if(g=g||"",a!==g){try{l=JSON.parse(g,t?.reviver)}catch{return s}a=g}return l},m=(c=(f=e())==null?void 0:f.getItem(u))!=null?c:null;return pb(m)?m.then(d):d(m)},setItem:(u,s)=>{var f;return(f=e())==null?void 0:f.setItem(u,JSON.stringify(s,t?.replacer))},removeItem:u=>{var s;return(s=e())==null?void 0:s.removeItem(u)}},i=u=>(s,f,c)=>u(s,d=>{let m;try{m=JSON.parse(d||"")}catch{m=c}f(m)}),o;try{o=(n=e())==null?void 0:n.subscribe}catch{}return!o&&typeof window<"u"&&typeof window.addEventListener=="function"&&window.Storage&&(o=(u,s)=>{if(!(e()instanceof window.Storage))return()=>{};let f=c=>{c.storageArea===e()&&c.key===u&&s(c.newValue)};return window.addEventListener("storage",f),()=>{window.removeEventListener("storage",f)}}),o&&(r.subscribe=i(o)),r}var CC=xC();function yb(e,t,n=CC,a){let l=a?.getOnInit,r=Td(l?n.getItem(e,t):t);return(Gl.env?Gl.env.MODE:void 0)!=="production"&&(r.debugPrivate=!0),r.onMount=o=>{o(n.getItem(e,t));let u;return n.subscribe&&(u=n.subscribe(e,o,t)),u},Td(o=>o(r),(o,u,s)=>{let f=typeof s=="function"?s(o(r)):s;return f===wC?(u(r,t),n.removeItem(e)):pb(f)?f.then(c=>(u(r,c),n.setItem(e,c))):(u(r,f),n.setItem(e,f))})}var zu=yb("backlog-show-completed",!1);var Ha=w(M(),1);function gb(){let[e,t]=(0,Ha.useState)(""),[n,a]=(0,Ha.useState)(null),l=(0,Ha.useRef)(void 0);return(0,Ha.useEffect)(()=>{if(l.current!==void 0&&clearTimeout(l.current),!e.trim()){a(null);return}return l.current=setTimeout(async()=>{a(await au(e))},250),()=>{l.current!==void 0&&clearTimeout(l.current)}},[e]),{query:e,setQuery:t,results:n}}var hi=w(D(),1);function vb(){let[e,t]=mb(zu);return(0,hi.jsxs)("label",{className:"flex items-center gap-2 text-sm text-gray-600 cursor-pointer select-none",children:[(0,hi.jsx)("button",{type:"button",role:"switch","aria-checked":e,onClick:()=>t(!e),className:`relative inline-flex h-5 w-9 items-center rounded-full transition-colors ${e?"bg-blue-600":"bg-gray-300"}`,children:(0,hi.jsx)("span",{className:`inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform ${e?"translate-x-[18px]":"translate-x-[3px]"}`})}),"Show completed"]})}var ja=w(D(),1),TC={todo:"\u25CB","in-progress":"\u25D4",done:"\u25CF",wontdo:"\u2715"},AC={todo:"text-gray-400","in-progress":"text-amber-500",done:"text-green-500",wontdo:"text-red-500"},_C={story:"bg-blue-100 text-blue-700",bug:"bg-red-100 text-red-700"};function bb({item:e,onSelect:t}){return(0,ja.jsxs)("button",{type:"button",className:"bg-white rounded-lg p-4 mb-2 cursor-pointer border border-gray-200 hover:shadow-md transition-shadow flex items-center gap-3 text-left w-full font-[inherit]",onClick:t,children:[(0,ja.jsx)("span",{className:`text-lg shrink-0 ${AC[e.status]}`,children:TC[e.status]}),(0,ja.jsx)("span",{className:`text-xs font-medium rounded-full px-2 shrink-0 ${_C[e.type]}`,children:e.type}),(0,ja.jsxs)("span",{className:"text-gray-400 text-sm shrink-0",children:["#",e.id]}),(0,ja.jsx)("span",{className:"font-medium",children:e.name})]})}var Sb=w(D(),1);function Rb({value:e,onChange:t}){return(0,Sb.jsx)("input",{type:"text",placeholder:"Search backlog\u2026",value:e,onChange:n=>t(n.target.value),className:"w-full mb-4 px-3 py-2 rounded-md border border-gray-600 bg-gray-800 text-gray-100 placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500"})}var vt=w(D(),1);function DC(e,t){return t?e:e.filter(n=>n.status!=="done"&&n.status!=="wontdo")}function Eb({items:e}){let t=Ht(),n=Nd(zu),{query:a,setQuery:l,results:r}=gb(),i=DC(r??e,n);return(0,vt.jsxs)(vt.Fragment,{children:[(0,vt.jsxs)("header",{className:"flex justify-between items-center mb-6",children:[(0,vt.jsx)("h1",{className:"text-2xl font-semibold",children:"Backlog"}),(0,vt.jsxs)("div",{className:"flex items-center gap-4",children:[(0,vt.jsx)(vb,{}),(0,vt.jsx)("button",{type:"button",className:"bg-blue-600 hover:bg-blue-700 text-white rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:()=>t("/add"),children:"+ Add Item"})]})]}),(0,vt.jsx)(Rb,{value:a,onChange:l}),i.length===0?(0,vt.jsx)("div",{className:"text-center text-gray-400 py-12 px-4",children:a.trim()?"No items match your search.":"No items in the backlog."}):i.map(o=>(0,vt.jsx)(bb,{item:o,onSelect:()=>t(`/items/${o.id}`)},o.id))]})}var Lb=w(M(),1);var na=w(D(),1);function wb({onConfirm:e,onCancel:t}){return(0,na.jsx)("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center z-50",children:(0,na.jsxs)("div",{className:"bg-white rounded-lg p-6 max-w-sm mx-4",children:[(0,na.jsx)("p",{className:"text-gray-800 mb-4",children:"Are you sure you want to delete this item?"}),(0,na.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,na.jsx)("button",{type:"button",className:"bg-gray-200 hover:bg-gray-300 text-gray-800 rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:t,children:"Cancel"}),(0,na.jsx)("button",{type:"button",className:"bg-red-600 hover:bg-red-700 text-white rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:e,children:"Delete"})]})]})})}var aa=w(D(),1);function xb({criteria:e}){return e.length===0?null:(0,aa.jsxs)("div",{className:"mb-4",children:[(0,aa.jsx)("h3",{className:"text-xs uppercase text-gray-500 mb-2 tracking-wide",children:"Acceptance Criteria"}),(0,aa.jsx)("ol",{className:"list-none",children:e.map((t,n)=>(0,aa.jsxs)("li",{className:"py-1 markdown",children:[(0,aa.jsxs)("span",{className:"text-gray-500 mr-2",children:[n+1,"."]}),(0,aa.jsx)("span",{dangerouslySetInnerHTML:{__html:H.parseInline(t)}})]},t))})]})}var bt=w(D(),1),NC={summary:"bg-amber-50 border-amber-200",comment:"bg-gray-50 border-gray-200"},OC={summary:"Phase summary",comment:"Comment"};function MC(e){return new Date(e).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function LC({comment:e}){return(0,bt.jsxs)("div",{className:`border rounded-md p-3 ${NC[e.type]}`,children:[(0,bt.jsxs)("div",{className:"flex items-center gap-2 text-xs text-gray-500 mb-1",children:[e.id!==void 0&&(0,bt.jsxs)("span",{className:"text-gray-400",children:["#",e.id]}),(0,bt.jsx)("span",{className:"font-medium",children:OC[e.type]}),e.phase!==void 0&&(0,bt.jsxs)("span",{children:["\xB7 Phase ",e.phase]}),(0,bt.jsxs)("span",{children:["\xB7 ",MC(e.timestamp)]})]}),(0,bt.jsx)("p",{className:"text-sm text-gray-800 whitespace-pre-wrap",children:e.text})]})}function Cb({comments:e}){return e.length===0?null:(0,bt.jsxs)("div",{className:"mb-4",children:[(0,bt.jsx)("h3",{className:"text-xs uppercase text-gray-500 mb-2 tracking-wide",children:"Comments"}),(0,bt.jsx)("div",{className:"space-y-2",children:e.map((t,n)=>(0,bt.jsx)(LC,{comment:t},`${t.timestamp}-${n}`))})]})}var la=w(D(),1);function Tb({checks:e}){return(0,la.jsxs)("div",{className:"mt-2 pt-2 border-t border-gray-200",children:[(0,la.jsx)("span",{className:"text-xs uppercase text-gray-400 tracking-wide",children:"Manual Checks"}),(0,la.jsx)("ul",{className:"list-none ml-1 mt-1",children:e.map(t=>(0,la.jsxs)("li",{className:"py-0.5 text-sm text-gray-600 markdown",children:[(0,la.jsx)("span",{className:"mr-2",children:"\u2610"}),(0,la.jsx)("span",{dangerouslySetInnerHTML:{__html:H.parseInline(t)}})]},t))})]})}var ql=w(D(),1);function Ab({tasks:e,marker:t}){return(0,ql.jsx)("ul",{className:"list-none ml-1 space-y-1",children:e.map(n=>(0,ql.jsxs)("li",{className:"py-0.5 markdown",children:[(0,ql.jsx)("span",{className:"text-gray-500 mr-2",children:t}),(0,ql.jsx)("span",{dangerouslySetInnerHTML:{__html:H.parseInline(n.task)}})]},n.task))})}var ra=w(D(),1),kC={done:"border-green-300 bg-green-50",current:"border-blue-400 bg-blue-50 ring-2 ring-blue-200",upcoming:"border-gray-200 bg-white"},zC={done:{label:"Done",style:"bg-green-100 text-green-700"},current:{label:"In Progress",style:"bg-blue-100 text-blue-700"},upcoming:{label:"Upcoming",style:"bg-gray-100 text-gray-500"}};function _b({phase:e,index:t,status:n}){let a=zC[n],l=n==="done"?"\u2713":"\u2022",r=e.manualChecks??[];return(0,ra.jsxs)("div",{className:`rounded-lg border p-4 ${kC[n]}`,children:[(0,ra.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,ra.jsxs)("span",{className:"font-medium",children:["Phase ",t+1,": ",e.name]}),(0,ra.jsx)("span",{className:`inline-block rounded-full px-2 text-xs font-medium ${a.style}`,children:a.label})]}),(0,ra.jsx)(Ab,{tasks:e.tasks,marker:l}),r.length>0&&(0,ra.jsx)(Tb,{checks:r})]})}var Il=w(D(),1);function UC(e,t){if(t===void 0)return"upcoming";let n=e+1;return n<t?"done":n===t?"current":"upcoming"}function Db({phases:e,currentPhase:t}){return e.length===0?null:(0,Il.jsxs)("div",{className:"mb-4",children:[(0,Il.jsx)("h3",{className:"text-xs uppercase text-gray-500 mb-2 tracking-wide",children:"Plan"}),(0,Il.jsx)("div",{className:"space-y-3",children:e.map((n,a)=>(0,Il.jsx)(_b,{phase:n,index:a,status:UC(a,t)},n.name))})]})}var Uu=w(D(),1),Nb={todo:"bg-gray-100 text-gray-500","in-progress":"bg-amber-100 text-amber-800",done:"bg-green-100 text-green-800",wontdo:"bg-red-100 text-red-700"},BC=["todo","in-progress","done","wontdo"];function Ob({current:e,onStatusChange:t}){return t?(0,Uu.jsx)("select",{value:e,onChange:n=>t(n.target.value),className:`rounded-full px-2.5 text-xs font-medium cursor-pointer ${Nb[e]}`,children:BC.map(n=>(0,Uu.jsx)("option",{value:n,children:n},n))}):(0,Uu.jsx)("span",{className:`inline-block rounded-full px-2.5 text-xs font-medium ${Nb[e]}`,children:e})}var rt=w(D(),1),HC={story:"bg-blue-100 text-blue-700",bug:"bg-red-100 text-red-700"};function jC({content:e}){return(0,rt.jsx)("div",{className:"markdown leading-relaxed",dangerouslySetInnerHTML:{__html:H.parse(e)}})}function Mb({item:e,onStatusChange:t}){return(0,rt.jsxs)("div",{className:"bg-white rounded-lg p-6 border border-gray-200",children:[(0,rt.jsx)("h2",{children:e.name}),(0,rt.jsxs)("div",{className:"text-gray-400 text-sm mb-4 flex items-center gap-2",children:["#",e.id,(0,rt.jsx)("span",{className:`inline-block rounded-full px-2.5 text-xs font-medium ${HC[e.type]}`,children:e.type}),(0,rt.jsx)(Ob,{current:e.status,onStatusChange:t})]}),e.description&&(0,rt.jsxs)("div",{className:"mb-4",children:[(0,rt.jsx)("h3",{className:"text-xs uppercase text-gray-500 mb-2 tracking-wide",children:"Description"}),(0,rt.jsx)(jC,{content:e.description})]}),(0,rt.jsx)(xb,{criteria:e.acceptanceCriteria}),e.plan&&(0,rt.jsx)(Db,{phases:e.plan,currentPhase:e.currentPhase}),e.comments&&(0,rt.jsx)(Cb,{comments:e.comments})]})}var Ye=w(D(),1);function VC({itemId:e,onDeleted:t}){let[n,a]=(0,Lb.useState)(!1);return(0,Ye.jsxs)(Ye.Fragment,{children:[n&&(0,Ye.jsx)(wb,{onConfirm:async()=>{await vv(e),await t()},onCancel:()=>a(!1)}),(0,Ye.jsx)("button",{type:"button",className:"bg-red-600 hover:bg-red-700 text-white rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:()=>a(!0),children:"Delete"})]})}function FC({itemId:e,onDeleted:t}){let n=Ht();return(0,Ye.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,Ye.jsx)(wu,{to:"/"}),(0,Ye.jsxs)("div",{className:"flex gap-2",children:[(0,Ye.jsx)("button",{type:"button",className:"bg-gray-200 hover:bg-gray-300 text-gray-800 rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:()=>n(`/items/${e}/edit`),children:"Edit"}),(0,Ye.jsx)(VC,{itemId:e,onDeleted:t})]})]})}function kb({item:e,onReload:t}){let n=Ht();return(0,Ye.jsxs)(Ye.Fragment,{children:[(0,Ye.jsx)(FC,{itemId:e.id,onDeleted:async()=>{await t(),n("/")}}),(0,Ye.jsx)(Mb,{item:e,onStatusChange:async a=>{await Rv(e.id,a),await t()}})]})}var Od=w(D(),1);function Md({items:e,mode:t,onReload:n}){let{id:a}=kf(),l=Number(a),r=e.find(i=>i.id===l);return r?t==="edit"?(0,Od.jsx)(Ou,{item:r,onReload:n,backTo:`/items/${l}`}):(0,Od.jsx)(kb,{item:r,onReload:n}):null}var jt=w(D(),1);function zb({items:e,onReload:t}){return(0,jt.jsxs)(Kr,{children:[(0,jt.jsx)(Rn,{index:!0,element:(0,jt.jsx)(Eb,{items:e})}),(0,jt.jsx)(Rn,{path:"items/:id",element:(0,jt.jsx)(Md,{items:e,mode:"detail",onReload:t})}),(0,jt.jsx)(Rn,{path:"items/:id/edit",element:(0,jt.jsx)(Md,{items:e,mode:"edit",onReload:t})}),(0,jt.jsx)(Rn,{path:"add",element:(0,jt.jsx)(Ou,{onReload:t,backTo:"/"})})]})}var $l=w(D(),1);function YC(){let[e,t]=(0,Pl.useState)([]),n=(0,Pl.useCallback)(async()=>{t(await au())},[]);return(0,Pl.useEffect)(()=>{n()},[n]),(0,$l.jsx)(qf,{children:(0,$l.jsx)(Kr,{children:(0,$l.jsx)(Rn,{path:"/*",element:(0,$l.jsx)(zb,{items:e,onReload:n})})})})}var Ub=document.getElementById("app");Ub&&(0,Bb.createRoot)(Ub).render((0,$l.jsx)(YC,{}));})();
68
68
  /*! Bundled license information:
69
69
 
70
70
  react/cjs/react.production.js: