@staff0rd/assist 0.171.1 → 0.172.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 +1 -0
- package/dist/commands/backlog/web/bundle.js +1 -1
- package/dist/index.js +313 -292
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -87,6 +87,7 @@ After installation, the `assist` command will be available globally. You can als
|
|
|
87
87
|
- `assist backlog next` - Pick and run the next backlog item, or open `/draft` if none remain
|
|
88
88
|
- `assist backlog start <id>` - Set a backlog item to in-progress
|
|
89
89
|
- `assist backlog done <id>` - Set a backlog item to done
|
|
90
|
+
- `assist backlog wontdo <id> [reason]` - Set a backlog item to won't do
|
|
90
91
|
- `assist backlog delete <id>` - Delete a backlog item
|
|
91
92
|
- `assist backlog show <id>` - Display full detail for a backlog item (alias: `view`)
|
|
92
93
|
- `assist backlog plan <id>` - Display the phased plan for a backlog item
|
|
@@ -62,7 +62,7 @@ ${t}</tr>
|
|
|
62
62
|
`}tablecell(t){let e=this.parser.parseInline(t.tokens),n=t.header?"th":"td";return(t.align?`<${n} align="${t.align}">`:`<${n}>`)+e+`</${n}>
|
|
63
63
|
`}strong({tokens:t}){return`<strong>${this.parser.parseInline(t)}</strong>`}em({tokens:t}){return`<em>${this.parser.parseInline(t)}</em>`}codespan({text:t}){return`<code>${He(t,!0)}</code>`}br(t){return"<br>"}del({tokens:t}){return`<del>${this.parser.parseInline(t)}</del>`}link({href:t,title:e,tokens:n}){let l=this.parser.parseInline(n),a=V0(t);if(a===null)return l;t=a;let i='<a href="'+t+'"';return e&&(i+=' title="'+He(e)+'"'),i+=">"+l+"</a>",i}image({href:t,title:e,text:n,tokens:l}){l&&(n=this.parser.parseInline(l,this.parser.textRenderer));let a=V0(t);if(a===null)return He(n);t=a;let i=`<img src="${t}" alt="${n}"`;return e&&(i+=` title="${He(e)}"`),i+=">",i}text(t){return"tokens"in t&&t.tokens?this.parser.parseInline(t.tokens):"escaped"in t&&t.escaped?t.text:He(t.text)}},bf=class{strong({text:t}){return t}em({text:t}){return t}codespan({text:t}){return t}del({text:t}){return t}html({text:t}){return t}text({text:t}){return t}link({text:t}){return""+t}image({text:t}){return""+t}br(){return""}},on=class sf{constructor(e){w(this,"options");w(this,"renderer");w(this,"textRenderer");this.options=e||bl,this.options.renderer=this.options.renderer||new Zc,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new bf}static parse(e,n){return new sf(n).parse(e)}static parseInline(e,n){return new sf(n).parseInline(e)}parse(e,n=!0){let l="";for(let a=0;a<e.length;a++){let i=e[a];if(this.options.extensions?.renderers?.[i.type]){let c=i,o=this.options.extensions.renderers[c.type].call({parser:this},c);if(o!==!1||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(c.type)){l+=o||"";continue}}let u=i;switch(u.type){case"space":{l+=this.renderer.space(u);continue}case"hr":{l+=this.renderer.hr(u);continue}case"heading":{l+=this.renderer.heading(u);continue}case"code":{l+=this.renderer.code(u);continue}case"table":{l+=this.renderer.table(u);continue}case"blockquote":{l+=this.renderer.blockquote(u);continue}case"list":{l+=this.renderer.list(u);continue}case"html":{l+=this.renderer.html(u);continue}case"paragraph":{l+=this.renderer.paragraph(u);continue}case"text":{let c=u,o=this.renderer.text(c);for(;a+1<e.length&&e[a+1].type==="text";)c=e[++a],o+=`
|
|
64
64
|
`+this.renderer.text(c);n?l+=this.renderer.paragraph({type:"paragraph",raw:o,text:o,tokens:[{type:"text",raw:o,text:o,escaped:!0}]}):l+=o;continue}default:{let c='Token with "'+u.type+'" type was not found.';if(this.options.silent)return console.error(c),"";throw new Error(c)}}}return l}parseInline(e,n=this.renderer){let l="";for(let a=0;a<e.length;a++){let i=e[a];if(this.options.extensions?.renderers?.[i.type]){let c=this.options.extensions.renderers[i.type].call({parser:this},i);if(c!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(i.type)){l+=c||"";continue}}let u=i;switch(u.type){case"escape":{l+=n.text(u);break}case"html":{l+=n.html(u);break}case"link":{l+=n.link(u);break}case"image":{l+=n.image(u);break}case"strong":{l+=n.strong(u);break}case"em":{l+=n.em(u);break}case"codespan":{l+=n.codespan(u);break}case"br":{l+=n.br(u);break}case"del":{l+=n.del(u);break}case"text":{l+=n.text(u);break}default:{let c='Token with "'+u.type+'" type was not found.';if(this.options.silent)return console.error(c),"";throw new Error(c)}}}return l}},cf,jc=(cf=class{constructor(t){w(this,"options");w(this,"block");this.options=t||bl}preprocess(t){return t}postprocess(t){return t}processAllTokens(t){return t}provideLexer(){return this.block?cn.lex:cn.lexInline}provideParser(){return this.block?on.parse:on.parseInline}},w(cf,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens"])),cf),M2=class{constructor(...t){w(this,"defaults",ff());w(this,"options",this.setOptions);w(this,"parse",this.parseMarkdown(!0));w(this,"parseInline",this.parseMarkdown(!1));w(this,"Parser",on);w(this,"Renderer",Zc);w(this,"TextRenderer",bf);w(this,"Lexer",cn);w(this,"Tokenizer",Xc);w(this,"Hooks",jc);this.use(...t)}walkTokens(t,e){let n=[];for(let l of t)switch(n=n.concat(e.call(this,l)),l.type){case"table":{let a=l;for(let i of a.header)n=n.concat(this.walkTokens(i.tokens,e));for(let i of a.rows)for(let u of i)n=n.concat(this.walkTokens(u.tokens,e));break}case"list":{let a=l;n=n.concat(this.walkTokens(a.items,e));break}default:{let a=l;this.defaults.extensions?.childTokens?.[a.type]?this.defaults.extensions.childTokens[a.type].forEach(i=>{let u=a[i].flat(1/0);n=n.concat(this.walkTokens(u,e))}):a.tokens&&(n=n.concat(this.walkTokens(a.tokens,e)))}}return n}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(n=>{let l={...n};if(l.async=this.defaults.async||l.async||!1,n.extensions&&(n.extensions.forEach(a=>{if(!a.name)throw new Error("extension name required");if("renderer"in a){let i=e.renderers[a.name];i?e.renderers[a.name]=function(...u){let c=a.renderer.apply(this,u);return c===!1&&(c=i.apply(this,u)),c}:e.renderers[a.name]=a.renderer}if("tokenizer"in a){if(!a.level||a.level!=="block"&&a.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let i=e[a.level];i?i.unshift(a.tokenizer):e[a.level]=[a.tokenizer],a.start&&(a.level==="block"?e.startBlock?e.startBlock.push(a.start):e.startBlock=[a.start]:a.level==="inline"&&(e.startInline?e.startInline.push(a.start):e.startInline=[a.start]))}"childTokens"in a&&a.childTokens&&(e.childTokens[a.name]=a.childTokens)}),l.extensions=e),n.renderer){let a=this.defaults.renderer||new Zc(this.defaults);for(let i in n.renderer){if(!(i in a))throw new Error(`renderer '${i}' does not exist`);if(["options","parser"].includes(i))continue;let u=i,c=n.renderer[u],o=a[u];a[u]=(...r)=>{let f=c.apply(a,r);return f===!1&&(f=o.apply(a,r)),f||""}}l.renderer=a}if(n.tokenizer){let a=this.defaults.tokenizer||new Xc(this.defaults);for(let i in n.tokenizer){if(!(i in a))throw new Error(`tokenizer '${i}' does not exist`);if(["options","rules","lexer"].includes(i))continue;let u=i,c=n.tokenizer[u],o=a[u];a[u]=(...r)=>{let f=c.apply(a,r);return f===!1&&(f=o.apply(a,r)),f}}l.tokenizer=a}if(n.hooks){let a=this.defaults.hooks||new jc;for(let i in n.hooks){if(!(i in a))throw new Error(`hook '${i}' does not exist`);if(["options","block"].includes(i))continue;let u=i,c=n.hooks[u],o=a[u];jc.passThroughHooks.has(i)?a[u]=r=>{if(this.defaults.async)return Promise.resolve(c.call(a,r)).then(d=>o.call(a,d));let f=c.call(a,r);return o.call(a,f)}:a[u]=(...r)=>{let f=c.apply(a,r);return f===!1&&(f=o.apply(a,r)),f}}l.hooks=a}if(n.walkTokens){let a=this.defaults.walkTokens,i=n.walkTokens;l.walkTokens=function(u){let c=[];return c.push(i.call(this,u)),a&&(c=c.concat(a.call(this,u))),c}}this.defaults={...this.defaults,...l}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return cn.lex(t,e??this.defaults)}parser(t,e){return on.parse(t,e??this.defaults)}parseMarkdown(t){return(n,l)=>{let a={...l},i={...this.defaults,...a},u=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&a.async===!1)return u(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 u(new Error("marked(): input parameter is undefined or null"));if(typeof n!="string")return u(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));i.hooks&&(i.hooks.options=i,i.hooks.block=t);let c=i.hooks?i.hooks.provideLexer():t?cn.lex:cn.lexInline,o=i.hooks?i.hooks.provideParser():t?on.parse:on.parseInline;if(i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(n):n).then(r=>c(r,i)).then(r=>i.hooks?i.hooks.processAllTokens(r):r).then(r=>i.walkTokens?Promise.all(this.walkTokens(r,i.walkTokens)).then(()=>r):r).then(r=>o(r,i)).then(r=>i.hooks?i.hooks.postprocess(r):r).catch(u);try{i.hooks&&(n=i.hooks.preprocess(n));let r=c(n,i);i.hooks&&(r=i.hooks.processAllTokens(r)),i.walkTokens&&this.walkTokens(r,i.walkTokens);let f=o(r,i);return i.hooks&&(f=i.hooks.postprocess(f)),f}catch(r){return u(r)}}}onError(t,e){return n=>{if(n.message+=`
|
|
65
|
-
Please report this to https://github.com/markedjs/marked.`,t){let l="<p>An error occurred:</p><pre>"+He(n.message+"",!0)+"</pre>";return e?Promise.resolve(l):l}if(e)return Promise.reject(n);throw n}}},yl=new M2;function q(t,e){return yl.parse(t,e)}q.options=q.setOptions=function(t){return yl.setOptions(t),q.defaults=yl.defaults,G0(q.defaults),q};q.getDefaults=ff;q.defaults=bl;q.use=function(...t){return yl.use(...t),q.defaults=yl.defaults,G0(q.defaults),q};q.walkTokens=function(t,e){return yl.walkTokens(t,e)};q.parseInline=yl.parseInline;q.Parser=on;q.parser=on.parse;q.Renderer=Zc;q.TextRenderer=bf;q.Lexer=cn;q.lexer=cn.lex;q.Tokenizer=Xc;q.Hooks=jc;q.parse=q;var C3=q.options,_3=q.setOptions,z3=q.use,O3=q.walkTokens,D3=q.parseInline;var N3=on.parse,M3=cn.lex;var P0=A(B(),1),rn=A(z(),1);function k2({text:t}){return(0,rn.jsx)("div",{className:"border border-gray-200 rounded-md p-3 mt-2 min-h-[60px] bg-gray-50",dangerouslySetInnerHTML:{__html:q.parse(t||"")}})}function tv({value:t,onChange:e}){let[n,l]=(0,P0.useState)(!1);return(0,rn.jsxs)(Ut.Root,{className:"mb-4",children:[(0,rn.jsxs)(Ut.Label,{className:"block font-medium mb-1 text-sm",children:["Description"," ",(0,rn.jsx)("button",{type:"button",className:"text-xs text-blue-600 cursor-pointer ml-2 bg-transparent border-none p-0",onClick:()=>l(!n),children:"(preview)"})]}),(0,rn.jsx)(Ut.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,rn.jsx)("textarea",{}),placeholder:"Markdown supported",value:t,onChange:a=>e(a.target.value)}),n&&(0,rn.jsx)(k2,{text:t})]})}var Li=A(z(),1);function ev({submitLabel:t,onCancel:e}){return(0,Li.jsxs)("div",{className:"flex gap-2 mt-4",children:[(0,Li.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:t}),(0,Li.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:e,children:"Cancel"})]})}async function nv(t,e,n,l,a){let i=e.trim();if(!i)return;let u={type:t,name:i,description:n.trim()||void 0,acceptanceCriteria:l.map(o=>o.trim()).filter(Boolean)};return a?(await Rg(a.id,u),a.id):(await Ag(u)).id}function lv(t){return{type:t?.type??"story",name:t?.name??"",description:t?.description??"",ac:t?.acceptanceCriteria??[],title:t?"Edit Item":"Add Item",submitLabel:t?"Save":"Add"}}async function av(t,e,n,l,a,i,u){t.preventDefault();let c=await nv(e,n,l,a,i);c!==void 0&&u(c)}var ba=A(z(),1);function iv({value:t,onChange:e}){return(0,ba.jsxs)(Ut.Root,{className:"mb-4",children:[(0,ba.jsx)(Ut.Label,{className:"block font-medium mb-1 text-sm",children:"Name"}),(0,ba.jsx)(Ut.Control,{className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm font-[inherit]",required:!0,placeholder:"Item name",value:t,onChange:n=>e(n.target.value)}),(0,ba.jsx)(Ut.Error,{className:"text-red-500 text-xs mt-1",match:"valueMissing",children:"Name is required."})]})}var qn=A(z(),1);function uv({value:t,onChange:e}){return(0,qn.jsxs)("fieldset",{className:"mb-4",children:[(0,qn.jsx)("legend",{className:"block text-sm font-medium text-gray-700 mb-1",children:"Type"}),(0,qn.jsx)("div",{className:"flex gap-4",children:["story","bug"].map(n=>(0,qn.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer",children:[(0,qn.jsx)("input",{type:"radio",name:"type",value:n,checked:t===n,onChange:()=>e(n)}),(0,qn.jsx)("span",{className:"text-sm capitalize",children:n})]},n))})]})}var se=A(z(),1);function Fc({item:t,onSaved:e,onCancel:n}){let l=lv(t),[a,i]=(0,Sa.useState)(l.type),[u,c]=(0,Sa.useState)(l.name),[o,r]=(0,Sa.useState)(l.description),f=(0,Sa.useRef)(l.ac);return(0,se.jsxs)(se.Fragment,{children:[(0,se.jsx)(Yc,{onClick:n}),(0,se.jsxs)(Is,{className:"bg-white rounded-lg p-6 border border-gray-200",onSubmit:d=>av(d,a,u,o,f.current,t,e),children:[(0,se.jsx)("h2",{className:"mb-4",children:l.title}),(0,se.jsx)(uv,{value:a,onChange:i}),(0,se.jsx)(iv,{value:u,onChange:c}),(0,se.jsx)(tv,{value:o,onChange:r}),(0,se.jsx)(B0,{initial:l.ac,onChange:d=>{f.current=d}}),(0,se.jsx)(ev,{submitLabel:l.submitLabel,onCancel:n})]})]})}var vt={};function ov(t){return"init"in t}function Sf(t){return!!t.write}function cv(t){return"v"in t||"e"in t}function Ic(t){if("e"in t)throw t.e;if((vt.env?vt.env.MODE:void 0)!=="production"&&!("v"in t))throw new Error("[Bug] atom state is not initialized");return t.v}function $c(t){return typeof t?.then=="function"}function rv(t,e,n){if(!n.p.has(t)){n.p.add(t);let l=()=>n.p.delete(t);e.then(l,l)}}function sv(t,e,n){var l;let a=new Set;for(let i of((l=n.get(t))==null?void 0:l.t)||[])a.add(i);for(let i of e.p)a.add(i);return a}var w2=(t,e,...n)=>e.read(...n),B2=(t,e,...n)=>e.write(...n),U2=(t,e)=>{var n;return(n=e.INTERNAL_onInit)==null?void 0:n.call(e,t)},L2=(t,e,n)=>{var l;return(l=e.onMount)==null?void 0:l.call(e,n)},H2=(t,e)=>{var n;let l=xt(t),a=l[0],i=l[6],u=l[9];if((vt.env?vt.env.MODE:void 0)!=="production"&&!e)throw new Error("Atom is undefined or null");let c=a.get(e);return c||(c={d:new Map,p:new Set,n:0},a.set(e,c),(n=i.i)==null||n.call(i,e),u?.(t,e)),c},V2=t=>{let e=xt(t),n=e[1],l=e[3],a=e[4],i=e[5],u=e[6],c=e[13],o=[],r=f=>{try{f()}catch(d){o.push(d)}};do{u.f&&r(u.f);let f=new Set,d=f.add.bind(f);l.forEach(s=>{var p;return(p=n.get(s))==null?void 0:p.l.forEach(d)}),l.clear(),i.forEach(d),i.clear(),a.forEach(d),a.clear(),f.forEach(r),l.size&&c(t)}while(l.size||i.size||a.size);if(o.length)throw new AggregateError(o)},q2=t=>{let e=xt(t),n=e[1],l=e[2],a=e[3],i=e[11],u=e[14],c=e[17],o=[],r=new WeakSet,f=new WeakSet,d=Array.from(a);for(;d.length;){let s=d[d.length-1],p=i(t,s);if(f.has(s)){d.pop();continue}if(r.has(s)){if(l.get(s)===p.n)o.push([s,p]);else if((vt.env?vt.env.MODE:void 0)!=="production"&&l.has(s))throw new Error("[Bug] invalidated atom exists");f.add(s),d.pop();continue}r.add(s);for(let v of sv(s,p,n))r.has(v)||d.push(v)}for(let s=o.length-1;s>=0;--s){let[p,v]=o[s],S=!1;for(let T of v.d.keys())if(T!==p&&a.has(T)){S=!0;break}S&&(u(t,p),c(t,p)),l.delete(p)}},xf=new WeakSet,Y2=(t,e)=>{var n,l;let a=xt(t),i=a[1],u=a[2],c=a[3],o=a[6],r=a[7],f=a[11],d=a[12],s=a[13],p=a[14],v=a[16],S=a[17],T=a[20],h=a[26],m=f(t,e);if(cv(m)){if(i.has(e)&&u.get(e)!==m.n)return m;let N=!1;for(let[Y,I]of m.d)if(p(t,Y).n!==I){N=!0;break}if(!N)return m}let g=!0,y=new Set(m.d.keys()),x=new Map,R=()=>{for(let N of y)x.has(N)||m.d.delete(N)},E=()=>{if(i.has(e)){let N=!c.size;S(t,e),N&&(s(t),d(t))}},C=N=>{var Y;if(N===e){let nt=f(t,N);if(!cv(nt))if(ov(N))T(t,N,N.init);else throw new Error("no atom init");return Ic(nt)}let I=p(t,N);try{return Ic(I)}finally{x.set(N,I.n),m.d.set(N,I.n),$c(m.v)&&rv(e,m.v,I),i.has(e)&&((Y=i.get(N))==null||Y.t.add(e)),g||E()}},_,O,ut={get signal(){return _||(_=new AbortController),_.signal},get setSelf(){return(vt.env?vt.env.MODE:void 0)!=="production"&&console.warn("[DEPRECATED] setSelf is deprecated and will be removed in v3."),(vt.env?vt.env.MODE:void 0)!=="production"&&!Sf(e)&&console.warn("setSelf function cannot be used with read-only atom"),!O&&Sf(e)&&(O=(...N)=>{if((vt.env?vt.env.MODE:void 0)!=="production"&&g&&console.warn("setSelf function cannot be called in sync"),!g)try{return v(t,e,...N)}finally{s(t),d(t)}}),O}},st=m.n;try{(vt.env?vt.env.MODE:void 0)!=="production"&&xf.delete(t);let N=r(t,e,C,ut);if((vt.env?vt.env.MODE:void 0)!=="production"&&xf.has(t)&&console.warn("Detected store mutation during atom read. This is not supported."),T(t,e,N),$c(N)){h(t,N,()=>_?.abort());let Y=()=>{R(),E()};N.then(Y,Y)}else R();return(n=o.r)==null||n.call(o,e),m}catch(N){return delete m.v,m.e=N,++m.n,m}finally{g=!1,st!==m.n&&u.get(e)===st&&(u.set(e,m.n),c.add(e),(l=o.c)==null||l.call(o,e))}},G2=(t,e)=>{let n=xt(t),l=n[1],a=n[2],i=n[11],u=[e];for(;u.length;){let c=u.pop(),o=i(t,c);for(let r of sv(c,o,l)){let f=i(t,r);a.get(r)!==f.n&&(a.set(r,f.n),u.push(r))}}},j2=(t,e,...n)=>{let l=xt(t),a=l[3],i=l[6],u=l[8],c=l[11],o=l[12],r=l[13],f=l[14],d=l[15],s=l[16],p=l[17],v=l[20],S=!0,T=m=>Ic(f(t,m)),h=(m,...g)=>{var y;let x=c(t,m);try{if(m===e){if(!ov(m))throw new Error("atom not writable");(vt.env?vt.env.MODE:void 0)!=="production"&&xf.add(t);let R=x.n,E=g[0];v(t,m,E),p(t,m),R!==x.n&&(a.add(m),d(t,m),(y=i.c)==null||y.call(i,m));return}else return s(t,m,...g)}finally{S||(r(t),o(t))}};try{return u(t,e,T,h,...n)}finally{S=!1}},Q2=(t,e)=>{var n;let l=xt(t),a=l[1],i=l[3],u=l[6],c=l[11],o=l[15],r=l[18],f=l[19],d=c(t,e),s=a.get(e);if(s){for(let[p,v]of d.d)if(!s.d.has(p)){let S=c(t,p);r(t,p).t.add(e),s.d.add(p),v!==S.n&&(i.add(p),o(t,p),(n=u.c)==null||n.call(u,p))}for(let p of s.d)if(!d.d.has(p)){s.d.delete(p);let v=f(t,p);v?.t.delete(e)}}},X2=(t,e)=>{var n;let l=xt(t),a=l[1],i=l[4],u=l[6],c=l[10],o=l[11],r=l[12],f=l[13],d=l[14],s=l[16],p=l[18],v=o(t,e),S=a.get(e);if(!S){d(t,e);for(let T of v.d.keys())p(t,T).t.add(e);if(S={l:new Set,d:new Set(v.d.keys()),t:new Set},a.set(e,S),Sf(e)){let T=()=>{let h=!0,m=(...g)=>{try{return s(t,e,...g)}finally{h||(f(t),r(t))}};try{let g=c(t,e,m);g&&(S.u=()=>{h=!0;try{g()}finally{h=!1}})}finally{h=!1}};i.add(T)}(n=u.m)==null||n.call(u,e)}return S},Z2=(t,e)=>{var n,l;let a=xt(t),i=a[1],u=a[5],c=a[6],o=a[11],r=a[19],f=o(t,e),d=i.get(e);if(!d||d.l.size)return d;let s=!1;for(let p of d.t)if((n=i.get(p))!=null&&n.d.has(e)){s=!0;break}if(!s){d.u&&u.add(d.u),d=void 0,i.delete(e);for(let p of f.d.keys()){let v=r(t,p);v?.t.delete(e)}(l=c.u)==null||l.call(c,e);return}return d},K2=(t,e,n)=>{let l=xt(t),a=l[11],i=l[27],u=a(t,e),c="v"in u,o=u.v;if($c(n))for(let r of u.d.keys())rv(e,n,a(t,r));u.v=n,delete u.e,(!c||!Object.is(o,u.v))&&(++u.n,$c(o)&&i(t,o))},J2=(t,e)=>{let n=xt(t)[14];return Ic(n(t,e))},F2=(t,e,...n)=>{let l=xt(t),a=l[12],i=l[13],u=l[16];try{return u(t,e,...n)}finally{i(t),a(t)}},I2=(t,e,n)=>{let l=xt(t),a=l[12],i=l[18],u=l[19],o=i(t,e).l;return o.add(n),a(t),()=>{o.delete(n),u(t,e),a(t)}},$2=(t,e,n)=>{let a=xt(t)[25],i=a.get(e);if(!i){i=new Set,a.set(e,i);let u=()=>a.delete(e);e.then(u,u)}i.add(n)},W2=(t,e)=>{let a=xt(t)[25].get(e);a?.forEach(i=>i())},fv=new WeakMap,xt=t=>{let e=fv.get(t);if((vt.env?vt.env.MODE:void 0)!=="production"&&!e)throw new Error("Store must be created by buildStore to read its building blocks");return e};function dv(t){let e=xt(t),n=e[24];return n?n(e):e}function mv(...t){let e={get(l){let a=xt(e)[21];return a(e,l)},set(l,...a){let i=xt(e)[22];return i(e,l,...a)},sub(l,a){let i=xt(e)[23];return i(e,l,a)}},n=[new WeakMap,new WeakMap,new WeakMap,new Set,new Set,new Set,{},w2,B2,U2,L2,H2,V2,q2,Y2,G2,j2,Q2,X2,Z2,K2,J2,F2,I2,void 0,new WeakMap,$2,W2].map((l,a)=>t[a]||l);return fv.set(e,Object.freeze(n)),e}var Wc={},P2=0;function Ef(t,e){let n=`atom${++P2}`,l={toString(){return(Wc.env?Wc.env.MODE:void 0)!=="production"&&this.debugLabel?n+":"+this.debugLabel:n}};return typeof t=="function"?l.read=t:(l.init=t,l.read=tx,l.write=ex),e&&(l.write=e),l}function tx(t){return t(this)}function ex(t,e,n){return e(this,typeof n=="function"?n(t(this)):n)}var pv;function hv(){return pv?pv():mv()}var Hi;function gv(){return Hi||(Hi=hv(),(Wc.env?Wc.env.MODE:void 0)!=="production"&&(globalThis.__JOTAI_DEFAULT_STORE__||(globalThis.__JOTAI_DEFAULT_STORE__=Hi),globalThis.__JOTAI_DEFAULT_STORE__!==Hi&&console.warn("Detected multiple Jotai instances. It may cause unexpected behavior with the default store. https://github.com/pmndrs/jotai/discussions/2044"))),Hi}var kt=A(B(),1);var yv={},nx=(0,kt.createContext)(void 0);function bv(t){let e=(0,kt.useContext)(nx);return t?.store||e||gv()}var Tf=t=>typeof t?.then=="function",Rf=t=>{t.status||(t.status="pending",t.then(e=>{t.status="fulfilled",t.value=e},e=>{t.status="rejected",t.reason=e}))},lx=kt.default.use||(t=>{if(t.status==="pending")throw t;if(t.status==="fulfilled")return t.value;throw t.status==="rejected"?t.reason:(Rf(t),t)}),Af=new WeakMap,vv=(t,e,n)=>{let a=dv(t)[26],i=Af.get(e);return i||(i=new Promise((u,c)=>{let o=e,r=s=>p=>{o===s&&u(p)},f=s=>p=>{o===s&&c(p)},d=()=>{try{let s=n();Tf(s)?(Af.set(s,i),o=s,s.then(r(s),f(s)),a(t,s,d)):u(s)}catch(s){c(s)}};e.then(r(e),f(e)),a(t,e,d)}),Af.set(e,i)),i};function Cf(t,e){let{delay:n,unstable_promiseStatus:l=!kt.default.use}=e||{},a=bv(e),[[i,u,c],o]=(0,kt.useReducer)(f=>{let d=a.get(t);return Object.is(f[0],d)&&f[1]===a&&f[2]===t?f:[d,a,t]},void 0,()=>[a.get(t),a,t]),r=i;if((u!==a||c!==t)&&(o(),r=a.get(t)),(0,kt.useEffect)(()=>{let f=a.sub(t,()=>{if(l)try{let d=a.get(t);Tf(d)&&Rf(vv(a,d,()=>a.get(t)))}catch{}if(typeof n=="number"){setTimeout(o,n);return}o()});return o(),f},[a,t,n,l]),(0,kt.useDebugValue)(r),Tf(r)){let f=vv(a,r,()=>a.get(t));return l&&Rf(f),lx(f)}return r}function ax(t,e){let n=bv(e);return(0,kt.useCallback)((...a)=>{if((yv.env?yv.env.MODE:void 0)!=="production"&&!("write"in t))throw new Error("not writable atom");return n.set(t,...a)},[n,t])}function Sv(t,e){return[Cf(t,e),ax(t,e)]}var xa={},ix=Symbol((xa.env?xa.env.MODE:void 0)!=="production"?"RESET":"");var xv=t=>typeof t?.then=="function";function ux(t=()=>{try{return window.localStorage}catch(n){(xa.env?xa.env.MODE:void 0)!=="production"&&typeof window<"u"&&console.warn(n);return}},e){var n;let l,a,i={getItem:(o,r)=>{var f,d;let s=v=>{if(v=v||"",l!==v){try{a=JSON.parse(v,e?.reviver)}catch{return r}l=v}return a},p=(d=(f=t())==null?void 0:f.getItem(o))!=null?d:null;return xv(p)?p.then(s):s(p)},setItem:(o,r)=>{var f;return(f=t())==null?void 0:f.setItem(o,JSON.stringify(r,e?.replacer))},removeItem:o=>{var r;return(r=t())==null?void 0:r.removeItem(o)}},u=o=>(r,f,d)=>o(r,s=>{let p;try{p=JSON.parse(s||"")}catch{p=d}f(p)}),c;try{c=(n=t())==null?void 0:n.subscribe}catch{}return!c&&typeof window<"u"&&typeof window.addEventListener=="function"&&window.Storage&&(c=(o,r)=>{if(!(t()instanceof window.Storage))return()=>{};let f=d=>{d.storageArea===t()&&d.key===o&&r(d.newValue)};return window.addEventListener("storage",f),()=>{window.removeEventListener("storage",f)}}),c&&(i.subscribe=u(c)),i}var cx=ux();function Ev(t,e,n=cx,l){let a=l?.getOnInit,i=Ef(a?n.getItem(t,e):e);return(xa.env?xa.env.MODE:void 0)!=="production"&&(i.debugPrivate=!0),i.onMount=c=>{c(n.getItem(t,e));let o;return n.subscribe&&(o=n.subscribe(t,c,e)),o},Ef(c=>c(i),(c,o,r)=>{let f=typeof r=="function"?r(c(i)):r;return f===ix?(o(i,e),n.removeItem(t)):xv(f)?f.then(d=>(o(i,d),n.setItem(t,d))):(o(i,f),n.setItem(t,f))})}var Pc=Ev("backlog-show-completed",!1);var Vi=A(z(),1);function Av(){let[t,e]=Sv(Pc);return(0,Vi.jsxs)("label",{className:"flex items-center gap-2 text-sm text-gray-600 cursor-pointer select-none",children:[(0,Vi.jsx)("button",{type:"button",role:"switch","aria-checked":t,onClick:()=>e(!t),className:`relative inline-flex h-5 w-9 items-center rounded-full transition-colors ${t?"bg-blue-600":"bg-gray-300"}`,children:(0,Vi.jsx)("span",{className:`inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform ${t?"translate-x-[18px]":"translate-x-[3px]"}`})}),"Show completed"]})}var Sl=A(z(),1),ox={todo:"\u25CB","in-progress":"\u25D4",done:"\u25CF"},rx={todo:"text-gray-400","in-progress":"text-amber-500",done:"text-green-500"},sx={story:"bg-blue-100 text-blue-700",bug:"bg-red-100 text-red-700"};function Tv({item:t,onSelect:e}){return(0,Sl.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:e,children:[(0,Sl.jsx)("span",{className:`text-lg shrink-0 ${rx[t.status]}`,children:ox[t.status]}),(0,Sl.jsx)("span",{className:`text-xs font-medium rounded-full px-2 shrink-0 ${sx[t.type]}`,children:t.type}),(0,Sl.jsxs)("span",{className:"text-gray-400 text-sm shrink-0",children:["#",t.id]}),(0,Sl.jsx)("span",{className:"font-medium",children:t.name})]})}var Ae=A(z(),1);function Rv({items:t,onSelect:e,onAdd:n}){let a=Cf(Pc)?t:t.filter(i=>i.status!=="done");return(0,Ae.jsxs)(Ae.Fragment,{children:[(0,Ae.jsxs)("header",{className:"flex justify-between items-center mb-6",children:[(0,Ae.jsx)("h1",{className:"text-2xl font-semibold",children:"Backlog"}),(0,Ae.jsxs)("div",{className:"flex items-center gap-4",children:[(0,Ae.jsx)(Av,{}),(0,Ae.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:n,children:"+ Add Item"})]})]}),a.length===0?(0,Ae.jsx)("div",{className:"text-center text-gray-400 py-12 px-4",children:"No items in the backlog."}):a.map(i=>(0,Ae.jsx)(Tv,{item:i,onSelect:()=>e(i.id)},i.id))]})}var Uv=A(B(),1);var Yn=A(z(),1);function Cv({onConfirm:t,onCancel:e}){return(0,Yn.jsx)("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center z-50",children:(0,Yn.jsxs)("div",{className:"bg-white rounded-lg p-6 max-w-sm mx-4",children:[(0,Yn.jsx)("p",{className:"text-gray-800 mb-4",children:"Are you sure you want to delete this item?"}),(0,Yn.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,Yn.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:e,children:"Cancel"}),(0,Yn.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:t,children:"Delete"})]})]})})}var xl=A(z(),1);function _v({criteria:t}){return t.length===0?null:(0,xl.jsxs)("div",{className:"mb-4",children:[(0,xl.jsx)("h3",{className:"text-xs uppercase text-gray-500 mb-2 tracking-wide",children:"Acceptance Criteria"}),(0,xl.jsx)("ol",{className:"list-none",children:t.map((e,n)=>(0,xl.jsxs)("li",{className:"py-1",children:[(0,xl.jsxs)("span",{className:"text-gray-500 mr-2",children:[n+1,"."]}),e]},e))})]})}var Te=A(z(),1),fx={summary:"bg-amber-50 border-amber-200",comment:"bg-gray-50 border-gray-200"},dx={summary:"Phase summary",comment:"Comment"};function mx(t){return new Date(t).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function px({comment:t}){return(0,Te.jsxs)("div",{className:`border rounded-md p-3 ${fx[t.type]}`,children:[(0,Te.jsxs)("div",{className:"flex items-center gap-2 text-xs text-gray-500 mb-1",children:[(0,Te.jsx)("span",{className:"font-medium",children:dx[t.type]}),t.phase!==void 0&&(0,Te.jsxs)("span",{children:["\xB7 Phase ",t.phase]}),(0,Te.jsxs)("span",{children:["\xB7 ",mx(t.timestamp)]})]}),(0,Te.jsx)("p",{className:"text-sm text-gray-800 whitespace-pre-wrap",children:t.text})]})}function zv({comments:t}){return t.length===0?null:(0,Te.jsxs)("div",{className:"mb-4",children:[(0,Te.jsx)("h3",{className:"text-xs uppercase text-gray-500 mb-2 tracking-wide",children:"Comments"}),(0,Te.jsx)("div",{className:"space-y-2",children:t.map((e,n)=>(0,Te.jsx)(px,{comment:e},`${e.timestamp}-${n}`))})]})}var El=A(z(),1);function Ov({checks:t}){return(0,El.jsxs)("div",{className:"mt-2 pt-2 border-t border-gray-200",children:[(0,El.jsx)("span",{className:"text-xs uppercase text-gray-400 tracking-wide",children:"Manual Checks"}),(0,El.jsx)("ul",{className:"list-none ml-1 mt-1",children:t.map(e=>(0,El.jsxs)("li",{className:"py-0.5 text-sm text-gray-600",children:[(0,El.jsx)("span",{className:"mr-2",children:"\u2610"}),e]},e))})]})}var Ea=A(z(),1);function Dv({tasks:t,marker:e}){return(0,Ea.jsx)("ul",{className:"list-none ml-1 space-y-1",children:t.map(n=>(0,Ea.jsxs)("li",{className:"py-0.5",children:[(0,Ea.jsx)("span",{className:"text-gray-500 mr-2",children:e}),n.task,n.verify&&(0,Ea.jsxs)("span",{className:"ml-2 text-xs text-gray-400",children:["verify: ",n.verify]})]},n.task))})}var Gn=A(z(),1),hx={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"},gx={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 Nv({phase:t,index:e,status:n}){let l=gx[n],a=n==="done"?"\u2713":"\u2022",i=t.manualChecks??[];return(0,Gn.jsxs)("div",{className:`rounded-lg border p-4 ${hx[n]}`,children:[(0,Gn.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,Gn.jsxs)("span",{className:"font-medium",children:["Phase ",e+1,": ",t.name]}),(0,Gn.jsx)("span",{className:`inline-block rounded-full px-2 text-xs font-medium ${l.style}`,children:l.label})]}),(0,Gn.jsx)(Dv,{tasks:t.tasks,marker:a}),i.length>0&&(0,Gn.jsx)(Ov,{checks:i})]})}var Aa=A(z(),1);function vx(t,e){return e===void 0?"upcoming":t<e?"done":t===e?"current":"upcoming"}function Mv({phases:t,currentPhase:e}){return t.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:"Plan"}),(0,Aa.jsx)("div",{className:"space-y-3",children:t.map((n,l)=>(0,Aa.jsx)(Nv,{phase:n,index:l,status:vx(l,e)},n.name))})]})}var to=A(z(),1),kv={todo:"bg-gray-100 text-gray-500","in-progress":"bg-amber-100 text-amber-800",done:"bg-green-100 text-green-800"},yx=["todo","in-progress","done"];function wv({current:t,onStatusChange:e}){return e?(0,to.jsx)("select",{value:t,onChange:n=>e(n.target.value),className:`rounded-full px-2.5 text-xs font-medium cursor-pointer ${kv[t]}`,children:yx.map(n=>(0,to.jsx)("option",{value:n,children:n},n))}):(0,to.jsx)("span",{className:`inline-block rounded-full px-2.5 text-xs font-medium ${kv[t]}`,children:t})}var Wt=A(z(),1),bx={story:"bg-blue-100 text-blue-700",bug:"bg-red-100 text-red-700"};function Sx({content:t}){return(0,Wt.jsx)("div",{className:"markdown leading-relaxed",dangerouslySetInnerHTML:{__html:q.parse(t)}})}function Bv({item:t,onStatusChange:e}){return(0,Wt.jsxs)("div",{className:"bg-white rounded-lg p-6 border border-gray-200",children:[(0,Wt.jsx)("h2",{children:t.name}),(0,Wt.jsxs)("div",{className:"text-gray-400 text-sm mb-4 flex items-center gap-2",children:["#",t.id,(0,Wt.jsx)("span",{className:`inline-block rounded-full px-2.5 text-xs font-medium ${bx[t.type]}`,children:t.type}),(0,Wt.jsx)(wv,{current:t.status,onStatusChange:e})]}),t.description&&(0,Wt.jsxs)("div",{className:"mb-4",children:[(0,Wt.jsx)("h3",{className:"text-xs uppercase text-gray-500 mb-2 tracking-wide",children:"Description"}),(0,Wt.jsx)(Sx,{content:t.description})]}),(0,Wt.jsx)(_v,{criteria:t.acceptanceCriteria}),t.plan&&(0,Wt.jsx)(Mv,{phases:t.plan,currentPhase:t.currentPhase}),t.comments&&(0,Wt.jsx)(zv,{comments:t.comments})]})}var Lt=A(z(),1);function xx({itemId:t,onDeleted:e}){let[n,l]=(0,Uv.useState)(!1);return(0,Lt.jsxs)(Lt.Fragment,{children:[n&&(0,Lt.jsx)(Cv,{onConfirm:async()=>{await Tg(t),e()},onCancel:()=>l(!1)}),(0,Lt.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:()=>l(!0),children:"Delete"})]})}function Ex({itemId:t,onBack:e,onEdit:n,onDeleted:l}){return(0,Lt.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,Lt.jsx)(Yc,{onClick:e}),(0,Lt.jsxs)("div",{className:"flex gap-2",children:[(0,Lt.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,children:"Edit"}),(0,Lt.jsx)(xx,{itemId:t,onDeleted:l})]})]})}function Lv({item:t,onBack:e,onEdit:n,onDeleted:l,onStatusChanged:a}){return(0,Lt.jsxs)(Lt.Fragment,{children:[(0,Lt.jsx)(Ex,{itemId:t.id,onBack:e,onEdit:n,onDeleted:l}),(0,Lt.jsx)(Bv,{item:t,onStatusChange:async i=>{await Cg(t.id,i),a()}})]})}var _f=A(z(),1);function Hv({item:t,view:e,onNavigate:n,onReloadAndNavigate:l}){return e.kind==="edit"?(0,_f.jsx)(Fc,{item:t,onSaved:a=>l({kind:"detail",id:a}),onCancel:()=>n({kind:"detail",id:e.id})}):(0,_f.jsx)(Lv,{item:t,onBack:()=>n({kind:"list"}),onEdit:()=>n({kind:"edit",id:e.id}),onDeleted:()=>l({kind:"list"}),onStatusChanged:()=>l({kind:"detail",id:e.id})})}var eo=A(z(),1);function Vv({view:t,items:e,onNavigate:n,onReloadAndNavigate:l}){if(t.kind==="detail"||t.kind==="edit"){let a=e.find(i=>i.id===t.id);return a?(0,eo.jsx)(Hv,{item:a,view:t,onNavigate:n,onReloadAndNavigate:l}):null}return t.kind==="add"?(0,eo.jsx)(Fc,{onSaved:()=>l({kind:"list"}),onCancel:()=>n({kind:"list"})}):(0,eo.jsx)(Rv,{items:e,onSelect:a=>n({kind:"detail",id:a}),onAdd:()=>n({kind:"add"})})}var zf=A(z(),1);function Ax(){let[t,e]=(0,jn.useState)([]),[n,l]=(0,jn.useState)({kind:"list"}),a=(0,jn.useCallback)(async()=>{e(await Eg())},[]);(0,jn.useEffect)(()=>{a()},[a]);let i=(0,jn.useCallback)(async u=>{await a(),l(u)},[a]);return(0,zf.jsx)(Vv,{view:n,items:t,onNavigate:l,onReloadAndNavigate:i})}var qv=document.getElementById("app");qv&&(0,Yv.createRoot)(qv).render((0,zf.jsx)(Ax,{}));})();
|
|
65
|
+
Please report this to https://github.com/markedjs/marked.`,t){let l="<p>An error occurred:</p><pre>"+He(n.message+"",!0)+"</pre>";return e?Promise.resolve(l):l}if(e)return Promise.reject(n);throw n}}},yl=new M2;function q(t,e){return yl.parse(t,e)}q.options=q.setOptions=function(t){return yl.setOptions(t),q.defaults=yl.defaults,G0(q.defaults),q};q.getDefaults=ff;q.defaults=bl;q.use=function(...t){return yl.use(...t),q.defaults=yl.defaults,G0(q.defaults),q};q.walkTokens=function(t,e){return yl.walkTokens(t,e)};q.parseInline=yl.parseInline;q.Parser=on;q.parser=on.parse;q.Renderer=Zc;q.TextRenderer=bf;q.Lexer=cn;q.lexer=cn.lex;q.Tokenizer=Xc;q.Hooks=jc;q.parse=q;var C3=q.options,_3=q.setOptions,z3=q.use,O3=q.walkTokens,D3=q.parseInline;var N3=on.parse,M3=cn.lex;var P0=A(B(),1),rn=A(z(),1);function k2({text:t}){return(0,rn.jsx)("div",{className:"border border-gray-200 rounded-md p-3 mt-2 min-h-[60px] bg-gray-50",dangerouslySetInnerHTML:{__html:q.parse(t||"")}})}function tv({value:t,onChange:e}){let[n,l]=(0,P0.useState)(!1);return(0,rn.jsxs)(Ut.Root,{className:"mb-4",children:[(0,rn.jsxs)(Ut.Label,{className:"block font-medium mb-1 text-sm",children:["Description"," ",(0,rn.jsx)("button",{type:"button",className:"text-xs text-blue-600 cursor-pointer ml-2 bg-transparent border-none p-0",onClick:()=>l(!n),children:"(preview)"})]}),(0,rn.jsx)(Ut.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,rn.jsx)("textarea",{}),placeholder:"Markdown supported",value:t,onChange:a=>e(a.target.value)}),n&&(0,rn.jsx)(k2,{text:t})]})}var Li=A(z(),1);function ev({submitLabel:t,onCancel:e}){return(0,Li.jsxs)("div",{className:"flex gap-2 mt-4",children:[(0,Li.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:t}),(0,Li.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:e,children:"Cancel"})]})}async function nv(t,e,n,l,a){let i=e.trim();if(!i)return;let u={type:t,name:i,description:n.trim()||void 0,acceptanceCriteria:l.map(o=>o.trim()).filter(Boolean)};return a?(await Rg(a.id,u),a.id):(await Ag(u)).id}function lv(t){return{type:t?.type??"story",name:t?.name??"",description:t?.description??"",ac:t?.acceptanceCriteria??[],title:t?"Edit Item":"Add Item",submitLabel:t?"Save":"Add"}}async function av(t,e,n,l,a,i,u){t.preventDefault();let c=await nv(e,n,l,a,i);c!==void 0&&u(c)}var ba=A(z(),1);function iv({value:t,onChange:e}){return(0,ba.jsxs)(Ut.Root,{className:"mb-4",children:[(0,ba.jsx)(Ut.Label,{className:"block font-medium mb-1 text-sm",children:"Name"}),(0,ba.jsx)(Ut.Control,{className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm font-[inherit]",required:!0,placeholder:"Item name",value:t,onChange:n=>e(n.target.value)}),(0,ba.jsx)(Ut.Error,{className:"text-red-500 text-xs mt-1",match:"valueMissing",children:"Name is required."})]})}var qn=A(z(),1);function uv({value:t,onChange:e}){return(0,qn.jsxs)("fieldset",{className:"mb-4",children:[(0,qn.jsx)("legend",{className:"block text-sm font-medium text-gray-700 mb-1",children:"Type"}),(0,qn.jsx)("div",{className:"flex gap-4",children:["story","bug"].map(n=>(0,qn.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer",children:[(0,qn.jsx)("input",{type:"radio",name:"type",value:n,checked:t===n,onChange:()=>e(n)}),(0,qn.jsx)("span",{className:"text-sm capitalize",children:n})]},n))})]})}var se=A(z(),1);function Fc({item:t,onSaved:e,onCancel:n}){let l=lv(t),[a,i]=(0,Sa.useState)(l.type),[u,c]=(0,Sa.useState)(l.name),[o,r]=(0,Sa.useState)(l.description),f=(0,Sa.useRef)(l.ac);return(0,se.jsxs)(se.Fragment,{children:[(0,se.jsx)(Yc,{onClick:n}),(0,se.jsxs)(Is,{className:"bg-white rounded-lg p-6 border border-gray-200",onSubmit:d=>av(d,a,u,o,f.current,t,e),children:[(0,se.jsx)("h2",{className:"mb-4",children:l.title}),(0,se.jsx)(uv,{value:a,onChange:i}),(0,se.jsx)(iv,{value:u,onChange:c}),(0,se.jsx)(tv,{value:o,onChange:r}),(0,se.jsx)(B0,{initial:l.ac,onChange:d=>{f.current=d}}),(0,se.jsx)(ev,{submitLabel:l.submitLabel,onCancel:n})]})]})}var vt={};function ov(t){return"init"in t}function Sf(t){return!!t.write}function cv(t){return"v"in t||"e"in t}function Ic(t){if("e"in t)throw t.e;if((vt.env?vt.env.MODE:void 0)!=="production"&&!("v"in t))throw new Error("[Bug] atom state is not initialized");return t.v}function $c(t){return typeof t?.then=="function"}function rv(t,e,n){if(!n.p.has(t)){n.p.add(t);let l=()=>n.p.delete(t);e.then(l,l)}}function sv(t,e,n){var l;let a=new Set;for(let i of((l=n.get(t))==null?void 0:l.t)||[])a.add(i);for(let i of e.p)a.add(i);return a}var w2=(t,e,...n)=>e.read(...n),B2=(t,e,...n)=>e.write(...n),U2=(t,e)=>{var n;return(n=e.INTERNAL_onInit)==null?void 0:n.call(e,t)},L2=(t,e,n)=>{var l;return(l=e.onMount)==null?void 0:l.call(e,n)},H2=(t,e)=>{var n;let l=xt(t),a=l[0],i=l[6],u=l[9];if((vt.env?vt.env.MODE:void 0)!=="production"&&!e)throw new Error("Atom is undefined or null");let c=a.get(e);return c||(c={d:new Map,p:new Set,n:0},a.set(e,c),(n=i.i)==null||n.call(i,e),u?.(t,e)),c},V2=t=>{let e=xt(t),n=e[1],l=e[3],a=e[4],i=e[5],u=e[6],c=e[13],o=[],r=f=>{try{f()}catch(d){o.push(d)}};do{u.f&&r(u.f);let f=new Set,d=f.add.bind(f);l.forEach(s=>{var p;return(p=n.get(s))==null?void 0:p.l.forEach(d)}),l.clear(),i.forEach(d),i.clear(),a.forEach(d),a.clear(),f.forEach(r),l.size&&c(t)}while(l.size||i.size||a.size);if(o.length)throw new AggregateError(o)},q2=t=>{let e=xt(t),n=e[1],l=e[2],a=e[3],i=e[11],u=e[14],c=e[17],o=[],r=new WeakSet,f=new WeakSet,d=Array.from(a);for(;d.length;){let s=d[d.length-1],p=i(t,s);if(f.has(s)){d.pop();continue}if(r.has(s)){if(l.get(s)===p.n)o.push([s,p]);else if((vt.env?vt.env.MODE:void 0)!=="production"&&l.has(s))throw new Error("[Bug] invalidated atom exists");f.add(s),d.pop();continue}r.add(s);for(let v of sv(s,p,n))r.has(v)||d.push(v)}for(let s=o.length-1;s>=0;--s){let[p,v]=o[s],S=!1;for(let T of v.d.keys())if(T!==p&&a.has(T)){S=!0;break}S&&(u(t,p),c(t,p)),l.delete(p)}},xf=new WeakSet,Y2=(t,e)=>{var n,l;let a=xt(t),i=a[1],u=a[2],c=a[3],o=a[6],r=a[7],f=a[11],d=a[12],s=a[13],p=a[14],v=a[16],S=a[17],T=a[20],h=a[26],m=f(t,e);if(cv(m)){if(i.has(e)&&u.get(e)!==m.n)return m;let N=!1;for(let[Y,I]of m.d)if(p(t,Y).n!==I){N=!0;break}if(!N)return m}let g=!0,y=new Set(m.d.keys()),x=new Map,R=()=>{for(let N of y)x.has(N)||m.d.delete(N)},E=()=>{if(i.has(e)){let N=!c.size;S(t,e),N&&(s(t),d(t))}},C=N=>{var Y;if(N===e){let nt=f(t,N);if(!cv(nt))if(ov(N))T(t,N,N.init);else throw new Error("no atom init");return Ic(nt)}let I=p(t,N);try{return Ic(I)}finally{x.set(N,I.n),m.d.set(N,I.n),$c(m.v)&&rv(e,m.v,I),i.has(e)&&((Y=i.get(N))==null||Y.t.add(e)),g||E()}},_,O,ut={get signal(){return _||(_=new AbortController),_.signal},get setSelf(){return(vt.env?vt.env.MODE:void 0)!=="production"&&console.warn("[DEPRECATED] setSelf is deprecated and will be removed in v3."),(vt.env?vt.env.MODE:void 0)!=="production"&&!Sf(e)&&console.warn("setSelf function cannot be used with read-only atom"),!O&&Sf(e)&&(O=(...N)=>{if((vt.env?vt.env.MODE:void 0)!=="production"&&g&&console.warn("setSelf function cannot be called in sync"),!g)try{return v(t,e,...N)}finally{s(t),d(t)}}),O}},st=m.n;try{(vt.env?vt.env.MODE:void 0)!=="production"&&xf.delete(t);let N=r(t,e,C,ut);if((vt.env?vt.env.MODE:void 0)!=="production"&&xf.has(t)&&console.warn("Detected store mutation during atom read. This is not supported."),T(t,e,N),$c(N)){h(t,N,()=>_?.abort());let Y=()=>{R(),E()};N.then(Y,Y)}else R();return(n=o.r)==null||n.call(o,e),m}catch(N){return delete m.v,m.e=N,++m.n,m}finally{g=!1,st!==m.n&&u.get(e)===st&&(u.set(e,m.n),c.add(e),(l=o.c)==null||l.call(o,e))}},G2=(t,e)=>{let n=xt(t),l=n[1],a=n[2],i=n[11],u=[e];for(;u.length;){let c=u.pop(),o=i(t,c);for(let r of sv(c,o,l)){let f=i(t,r);a.get(r)!==f.n&&(a.set(r,f.n),u.push(r))}}},j2=(t,e,...n)=>{let l=xt(t),a=l[3],i=l[6],u=l[8],c=l[11],o=l[12],r=l[13],f=l[14],d=l[15],s=l[16],p=l[17],v=l[20],S=!0,T=m=>Ic(f(t,m)),h=(m,...g)=>{var y;let x=c(t,m);try{if(m===e){if(!ov(m))throw new Error("atom not writable");(vt.env?vt.env.MODE:void 0)!=="production"&&xf.add(t);let R=x.n,E=g[0];v(t,m,E),p(t,m),R!==x.n&&(a.add(m),d(t,m),(y=i.c)==null||y.call(i,m));return}else return s(t,m,...g)}finally{S||(r(t),o(t))}};try{return u(t,e,T,h,...n)}finally{S=!1}},Q2=(t,e)=>{var n;let l=xt(t),a=l[1],i=l[3],u=l[6],c=l[11],o=l[15],r=l[18],f=l[19],d=c(t,e),s=a.get(e);if(s){for(let[p,v]of d.d)if(!s.d.has(p)){let S=c(t,p);r(t,p).t.add(e),s.d.add(p),v!==S.n&&(i.add(p),o(t,p),(n=u.c)==null||n.call(u,p))}for(let p of s.d)if(!d.d.has(p)){s.d.delete(p);let v=f(t,p);v?.t.delete(e)}}},X2=(t,e)=>{var n;let l=xt(t),a=l[1],i=l[4],u=l[6],c=l[10],o=l[11],r=l[12],f=l[13],d=l[14],s=l[16],p=l[18],v=o(t,e),S=a.get(e);if(!S){d(t,e);for(let T of v.d.keys())p(t,T).t.add(e);if(S={l:new Set,d:new Set(v.d.keys()),t:new Set},a.set(e,S),Sf(e)){let T=()=>{let h=!0,m=(...g)=>{try{return s(t,e,...g)}finally{h||(f(t),r(t))}};try{let g=c(t,e,m);g&&(S.u=()=>{h=!0;try{g()}finally{h=!1}})}finally{h=!1}};i.add(T)}(n=u.m)==null||n.call(u,e)}return S},Z2=(t,e)=>{var n,l;let a=xt(t),i=a[1],u=a[5],c=a[6],o=a[11],r=a[19],f=o(t,e),d=i.get(e);if(!d||d.l.size)return d;let s=!1;for(let p of d.t)if((n=i.get(p))!=null&&n.d.has(e)){s=!0;break}if(!s){d.u&&u.add(d.u),d=void 0,i.delete(e);for(let p of f.d.keys()){let v=r(t,p);v?.t.delete(e)}(l=c.u)==null||l.call(c,e);return}return d},K2=(t,e,n)=>{let l=xt(t),a=l[11],i=l[27],u=a(t,e),c="v"in u,o=u.v;if($c(n))for(let r of u.d.keys())rv(e,n,a(t,r));u.v=n,delete u.e,(!c||!Object.is(o,u.v))&&(++u.n,$c(o)&&i(t,o))},J2=(t,e)=>{let n=xt(t)[14];return Ic(n(t,e))},F2=(t,e,...n)=>{let l=xt(t),a=l[12],i=l[13],u=l[16];try{return u(t,e,...n)}finally{i(t),a(t)}},I2=(t,e,n)=>{let l=xt(t),a=l[12],i=l[18],u=l[19],o=i(t,e).l;return o.add(n),a(t),()=>{o.delete(n),u(t,e),a(t)}},$2=(t,e,n)=>{let a=xt(t)[25],i=a.get(e);if(!i){i=new Set,a.set(e,i);let u=()=>a.delete(e);e.then(u,u)}i.add(n)},W2=(t,e)=>{let a=xt(t)[25].get(e);a?.forEach(i=>i())},fv=new WeakMap,xt=t=>{let e=fv.get(t);if((vt.env?vt.env.MODE:void 0)!=="production"&&!e)throw new Error("Store must be created by buildStore to read its building blocks");return e};function dv(t){let e=xt(t),n=e[24];return n?n(e):e}function mv(...t){let e={get(l){let a=xt(e)[21];return a(e,l)},set(l,...a){let i=xt(e)[22];return i(e,l,...a)},sub(l,a){let i=xt(e)[23];return i(e,l,a)}},n=[new WeakMap,new WeakMap,new WeakMap,new Set,new Set,new Set,{},w2,B2,U2,L2,H2,V2,q2,Y2,G2,j2,Q2,X2,Z2,K2,J2,F2,I2,void 0,new WeakMap,$2,W2].map((l,a)=>t[a]||l);return fv.set(e,Object.freeze(n)),e}var Wc={},P2=0;function Ef(t,e){let n=`atom${++P2}`,l={toString(){return(Wc.env?Wc.env.MODE:void 0)!=="production"&&this.debugLabel?n+":"+this.debugLabel:n}};return typeof t=="function"?l.read=t:(l.init=t,l.read=tx,l.write=ex),e&&(l.write=e),l}function tx(t){return t(this)}function ex(t,e,n){return e(this,typeof n=="function"?n(t(this)):n)}var pv;function hv(){return pv?pv():mv()}var Hi;function gv(){return Hi||(Hi=hv(),(Wc.env?Wc.env.MODE:void 0)!=="production"&&(globalThis.__JOTAI_DEFAULT_STORE__||(globalThis.__JOTAI_DEFAULT_STORE__=Hi),globalThis.__JOTAI_DEFAULT_STORE__!==Hi&&console.warn("Detected multiple Jotai instances. It may cause unexpected behavior with the default store. https://github.com/pmndrs/jotai/discussions/2044"))),Hi}var kt=A(B(),1);var yv={},nx=(0,kt.createContext)(void 0);function bv(t){let e=(0,kt.useContext)(nx);return t?.store||e||gv()}var Tf=t=>typeof t?.then=="function",Rf=t=>{t.status||(t.status="pending",t.then(e=>{t.status="fulfilled",t.value=e},e=>{t.status="rejected",t.reason=e}))},lx=kt.default.use||(t=>{if(t.status==="pending")throw t;if(t.status==="fulfilled")return t.value;throw t.status==="rejected"?t.reason:(Rf(t),t)}),Af=new WeakMap,vv=(t,e,n)=>{let a=dv(t)[26],i=Af.get(e);return i||(i=new Promise((u,c)=>{let o=e,r=s=>p=>{o===s&&u(p)},f=s=>p=>{o===s&&c(p)},d=()=>{try{let s=n();Tf(s)?(Af.set(s,i),o=s,s.then(r(s),f(s)),a(t,s,d)):u(s)}catch(s){c(s)}};e.then(r(e),f(e)),a(t,e,d)}),Af.set(e,i)),i};function Cf(t,e){let{delay:n,unstable_promiseStatus:l=!kt.default.use}=e||{},a=bv(e),[[i,u,c],o]=(0,kt.useReducer)(f=>{let d=a.get(t);return Object.is(f[0],d)&&f[1]===a&&f[2]===t?f:[d,a,t]},void 0,()=>[a.get(t),a,t]),r=i;if((u!==a||c!==t)&&(o(),r=a.get(t)),(0,kt.useEffect)(()=>{let f=a.sub(t,()=>{if(l)try{let d=a.get(t);Tf(d)&&Rf(vv(a,d,()=>a.get(t)))}catch{}if(typeof n=="number"){setTimeout(o,n);return}o()});return o(),f},[a,t,n,l]),(0,kt.useDebugValue)(r),Tf(r)){let f=vv(a,r,()=>a.get(t));return l&&Rf(f),lx(f)}return r}function ax(t,e){let n=bv(e);return(0,kt.useCallback)((...a)=>{if((yv.env?yv.env.MODE:void 0)!=="production"&&!("write"in t))throw new Error("not writable atom");return n.set(t,...a)},[n,t])}function Sv(t,e){return[Cf(t,e),ax(t,e)]}var xa={},ix=Symbol((xa.env?xa.env.MODE:void 0)!=="production"?"RESET":"");var xv=t=>typeof t?.then=="function";function ux(t=()=>{try{return window.localStorage}catch(n){(xa.env?xa.env.MODE:void 0)!=="production"&&typeof window<"u"&&console.warn(n);return}},e){var n;let l,a,i={getItem:(o,r)=>{var f,d;let s=v=>{if(v=v||"",l!==v){try{a=JSON.parse(v,e?.reviver)}catch{return r}l=v}return a},p=(d=(f=t())==null?void 0:f.getItem(o))!=null?d:null;return xv(p)?p.then(s):s(p)},setItem:(o,r)=>{var f;return(f=t())==null?void 0:f.setItem(o,JSON.stringify(r,e?.replacer))},removeItem:o=>{var r;return(r=t())==null?void 0:r.removeItem(o)}},u=o=>(r,f,d)=>o(r,s=>{let p;try{p=JSON.parse(s||"")}catch{p=d}f(p)}),c;try{c=(n=t())==null?void 0:n.subscribe}catch{}return!c&&typeof window<"u"&&typeof window.addEventListener=="function"&&window.Storage&&(c=(o,r)=>{if(!(t()instanceof window.Storage))return()=>{};let f=d=>{d.storageArea===t()&&d.key===o&&r(d.newValue)};return window.addEventListener("storage",f),()=>{window.removeEventListener("storage",f)}}),c&&(i.subscribe=u(c)),i}var cx=ux();function Ev(t,e,n=cx,l){let a=l?.getOnInit,i=Ef(a?n.getItem(t,e):e);return(xa.env?xa.env.MODE:void 0)!=="production"&&(i.debugPrivate=!0),i.onMount=c=>{c(n.getItem(t,e));let o;return n.subscribe&&(o=n.subscribe(t,c,e)),o},Ef(c=>c(i),(c,o,r)=>{let f=typeof r=="function"?r(c(i)):r;return f===ix?(o(i,e),n.removeItem(t)):xv(f)?f.then(d=>(o(i,d),n.setItem(t,d))):(o(i,f),n.setItem(t,f))})}var Pc=Ev("backlog-show-completed",!1);var Vi=A(z(),1);function Av(){let[t,e]=Sv(Pc);return(0,Vi.jsxs)("label",{className:"flex items-center gap-2 text-sm text-gray-600 cursor-pointer select-none",children:[(0,Vi.jsx)("button",{type:"button",role:"switch","aria-checked":t,onClick:()=>e(!t),className:`relative inline-flex h-5 w-9 items-center rounded-full transition-colors ${t?"bg-blue-600":"bg-gray-300"}`,children:(0,Vi.jsx)("span",{className:`inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform ${t?"translate-x-[18px]":"translate-x-[3px]"}`})}),"Show completed"]})}var Sl=A(z(),1),ox={todo:"\u25CB","in-progress":"\u25D4",done:"\u25CF",wontdo:"\u2715"},rx={todo:"text-gray-400","in-progress":"text-amber-500",done:"text-green-500",wontdo:"text-red-500"},sx={story:"bg-blue-100 text-blue-700",bug:"bg-red-100 text-red-700"};function Tv({item:t,onSelect:e}){return(0,Sl.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:e,children:[(0,Sl.jsx)("span",{className:`text-lg shrink-0 ${rx[t.status]}`,children:ox[t.status]}),(0,Sl.jsx)("span",{className:`text-xs font-medium rounded-full px-2 shrink-0 ${sx[t.type]}`,children:t.type}),(0,Sl.jsxs)("span",{className:"text-gray-400 text-sm shrink-0",children:["#",t.id]}),(0,Sl.jsx)("span",{className:"font-medium",children:t.name})]})}var Ae=A(z(),1);function Rv({items:t,onSelect:e,onAdd:n}){let a=Cf(Pc)?t:t.filter(i=>i.status!=="done"&&i.status!=="wontdo");return(0,Ae.jsxs)(Ae.Fragment,{children:[(0,Ae.jsxs)("header",{className:"flex justify-between items-center mb-6",children:[(0,Ae.jsx)("h1",{className:"text-2xl font-semibold",children:"Backlog"}),(0,Ae.jsxs)("div",{className:"flex items-center gap-4",children:[(0,Ae.jsx)(Av,{}),(0,Ae.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:n,children:"+ Add Item"})]})]}),a.length===0?(0,Ae.jsx)("div",{className:"text-center text-gray-400 py-12 px-4",children:"No items in the backlog."}):a.map(i=>(0,Ae.jsx)(Tv,{item:i,onSelect:()=>e(i.id)},i.id))]})}var Uv=A(B(),1);var Yn=A(z(),1);function Cv({onConfirm:t,onCancel:e}){return(0,Yn.jsx)("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center z-50",children:(0,Yn.jsxs)("div",{className:"bg-white rounded-lg p-6 max-w-sm mx-4",children:[(0,Yn.jsx)("p",{className:"text-gray-800 mb-4",children:"Are you sure you want to delete this item?"}),(0,Yn.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,Yn.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:e,children:"Cancel"}),(0,Yn.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:t,children:"Delete"})]})]})})}var xl=A(z(),1);function _v({criteria:t}){return t.length===0?null:(0,xl.jsxs)("div",{className:"mb-4",children:[(0,xl.jsx)("h3",{className:"text-xs uppercase text-gray-500 mb-2 tracking-wide",children:"Acceptance Criteria"}),(0,xl.jsx)("ol",{className:"list-none",children:t.map((e,n)=>(0,xl.jsxs)("li",{className:"py-1",children:[(0,xl.jsxs)("span",{className:"text-gray-500 mr-2",children:[n+1,"."]}),e]},e))})]})}var Te=A(z(),1),fx={summary:"bg-amber-50 border-amber-200",comment:"bg-gray-50 border-gray-200"},dx={summary:"Phase summary",comment:"Comment"};function mx(t){return new Date(t).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function px({comment:t}){return(0,Te.jsxs)("div",{className:`border rounded-md p-3 ${fx[t.type]}`,children:[(0,Te.jsxs)("div",{className:"flex items-center gap-2 text-xs text-gray-500 mb-1",children:[(0,Te.jsx)("span",{className:"font-medium",children:dx[t.type]}),t.phase!==void 0&&(0,Te.jsxs)("span",{children:["\xB7 Phase ",t.phase]}),(0,Te.jsxs)("span",{children:["\xB7 ",mx(t.timestamp)]})]}),(0,Te.jsx)("p",{className:"text-sm text-gray-800 whitespace-pre-wrap",children:t.text})]})}function zv({comments:t}){return t.length===0?null:(0,Te.jsxs)("div",{className:"mb-4",children:[(0,Te.jsx)("h3",{className:"text-xs uppercase text-gray-500 mb-2 tracking-wide",children:"Comments"}),(0,Te.jsx)("div",{className:"space-y-2",children:t.map((e,n)=>(0,Te.jsx)(px,{comment:e},`${e.timestamp}-${n}`))})]})}var El=A(z(),1);function Ov({checks:t}){return(0,El.jsxs)("div",{className:"mt-2 pt-2 border-t border-gray-200",children:[(0,El.jsx)("span",{className:"text-xs uppercase text-gray-400 tracking-wide",children:"Manual Checks"}),(0,El.jsx)("ul",{className:"list-none ml-1 mt-1",children:t.map(e=>(0,El.jsxs)("li",{className:"py-0.5 text-sm text-gray-600",children:[(0,El.jsx)("span",{className:"mr-2",children:"\u2610"}),e]},e))})]})}var Ea=A(z(),1);function Dv({tasks:t,marker:e}){return(0,Ea.jsx)("ul",{className:"list-none ml-1 space-y-1",children:t.map(n=>(0,Ea.jsxs)("li",{className:"py-0.5",children:[(0,Ea.jsx)("span",{className:"text-gray-500 mr-2",children:e}),n.task,n.verify&&(0,Ea.jsxs)("span",{className:"ml-2 text-xs text-gray-400",children:["verify: ",n.verify]})]},n.task))})}var Gn=A(z(),1),hx={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"},gx={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 Nv({phase:t,index:e,status:n}){let l=gx[n],a=n==="done"?"\u2713":"\u2022",i=t.manualChecks??[];return(0,Gn.jsxs)("div",{className:`rounded-lg border p-4 ${hx[n]}`,children:[(0,Gn.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,Gn.jsxs)("span",{className:"font-medium",children:["Phase ",e+1,": ",t.name]}),(0,Gn.jsx)("span",{className:`inline-block rounded-full px-2 text-xs font-medium ${l.style}`,children:l.label})]}),(0,Gn.jsx)(Dv,{tasks:t.tasks,marker:a}),i.length>0&&(0,Gn.jsx)(Ov,{checks:i})]})}var Aa=A(z(),1);function vx(t,e){return e===void 0?"upcoming":t<e?"done":t===e?"current":"upcoming"}function Mv({phases:t,currentPhase:e}){return t.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:"Plan"}),(0,Aa.jsx)("div",{className:"space-y-3",children:t.map((n,l)=>(0,Aa.jsx)(Nv,{phase:n,index:l,status:vx(l,e)},n.name))})]})}var to=A(z(),1),kv={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"},yx=["todo","in-progress","done","wontdo"];function wv({current:t,onStatusChange:e}){return e?(0,to.jsx)("select",{value:t,onChange:n=>e(n.target.value),className:`rounded-full px-2.5 text-xs font-medium cursor-pointer ${kv[t]}`,children:yx.map(n=>(0,to.jsx)("option",{value:n,children:n},n))}):(0,to.jsx)("span",{className:`inline-block rounded-full px-2.5 text-xs font-medium ${kv[t]}`,children:t})}var Wt=A(z(),1),bx={story:"bg-blue-100 text-blue-700",bug:"bg-red-100 text-red-700"};function Sx({content:t}){return(0,Wt.jsx)("div",{className:"markdown leading-relaxed",dangerouslySetInnerHTML:{__html:q.parse(t)}})}function Bv({item:t,onStatusChange:e}){return(0,Wt.jsxs)("div",{className:"bg-white rounded-lg p-6 border border-gray-200",children:[(0,Wt.jsx)("h2",{children:t.name}),(0,Wt.jsxs)("div",{className:"text-gray-400 text-sm mb-4 flex items-center gap-2",children:["#",t.id,(0,Wt.jsx)("span",{className:`inline-block rounded-full px-2.5 text-xs font-medium ${bx[t.type]}`,children:t.type}),(0,Wt.jsx)(wv,{current:t.status,onStatusChange:e})]}),t.description&&(0,Wt.jsxs)("div",{className:"mb-4",children:[(0,Wt.jsx)("h3",{className:"text-xs uppercase text-gray-500 mb-2 tracking-wide",children:"Description"}),(0,Wt.jsx)(Sx,{content:t.description})]}),(0,Wt.jsx)(_v,{criteria:t.acceptanceCriteria}),t.plan&&(0,Wt.jsx)(Mv,{phases:t.plan,currentPhase:t.currentPhase}),t.comments&&(0,Wt.jsx)(zv,{comments:t.comments})]})}var Lt=A(z(),1);function xx({itemId:t,onDeleted:e}){let[n,l]=(0,Uv.useState)(!1);return(0,Lt.jsxs)(Lt.Fragment,{children:[n&&(0,Lt.jsx)(Cv,{onConfirm:async()=>{await Tg(t),e()},onCancel:()=>l(!1)}),(0,Lt.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:()=>l(!0),children:"Delete"})]})}function Ex({itemId:t,onBack:e,onEdit:n,onDeleted:l}){return(0,Lt.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,Lt.jsx)(Yc,{onClick:e}),(0,Lt.jsxs)("div",{className:"flex gap-2",children:[(0,Lt.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,children:"Edit"}),(0,Lt.jsx)(xx,{itemId:t,onDeleted:l})]})]})}function Lv({item:t,onBack:e,onEdit:n,onDeleted:l,onStatusChanged:a}){return(0,Lt.jsxs)(Lt.Fragment,{children:[(0,Lt.jsx)(Ex,{itemId:t.id,onBack:e,onEdit:n,onDeleted:l}),(0,Lt.jsx)(Bv,{item:t,onStatusChange:async i=>{await Cg(t.id,i),a()}})]})}var _f=A(z(),1);function Hv({item:t,view:e,onNavigate:n,onReloadAndNavigate:l}){return e.kind==="edit"?(0,_f.jsx)(Fc,{item:t,onSaved:a=>l({kind:"detail",id:a}),onCancel:()=>n({kind:"detail",id:e.id})}):(0,_f.jsx)(Lv,{item:t,onBack:()=>n({kind:"list"}),onEdit:()=>n({kind:"edit",id:e.id}),onDeleted:()=>l({kind:"list"}),onStatusChanged:()=>l({kind:"detail",id:e.id})})}var eo=A(z(),1);function Vv({view:t,items:e,onNavigate:n,onReloadAndNavigate:l}){if(t.kind==="detail"||t.kind==="edit"){let a=e.find(i=>i.id===t.id);return a?(0,eo.jsx)(Hv,{item:a,view:t,onNavigate:n,onReloadAndNavigate:l}):null}return t.kind==="add"?(0,eo.jsx)(Fc,{onSaved:()=>l({kind:"list"}),onCancel:()=>n({kind:"list"})}):(0,eo.jsx)(Rv,{items:e,onSelect:a=>n({kind:"detail",id:a}),onAdd:()=>n({kind:"add"})})}var zf=A(z(),1);function Ax(){let[t,e]=(0,jn.useState)([]),[n,l]=(0,jn.useState)({kind:"list"}),a=(0,jn.useCallback)(async()=>{e(await Eg())},[]);(0,jn.useEffect)(()=>{a()},[a]);let i=(0,jn.useCallback)(async u=>{await a(),l(u)},[a]);return(0,zf.jsx)(Vv,{view:n,items:t,onNavigate:l,onReloadAndNavigate:i})}var qv=document.getElementById("app");qv&&(0,Yv.createRoot)(qv).render((0,zf.jsx)(Ax,{}));})();
|
|
66
66
|
/*! Bundled license information:
|
|
67
67
|
|
|
68
68
|
react/cjs/react.production.js:
|