@lovelybunch/api 1.0.75 → 1.0.76-alpha.1
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/dist/lib/storage/file-storage.d.ts +1 -0
- package/dist/lib/storage/file-storage.js +9 -1
- package/dist/routes/api/v1/mail/route.d.ts +3 -3
- package/dist/routes/api/v1/slack/route.d.ts +6 -6
- package/dist/routes/api/v1/tasks/[id]/route.d.ts +2 -2
- package/dist/routes/api/v1/tasks/[id]/steps/[stepId]/route.d.ts +60 -0
- package/dist/routes/api/v1/tasks/[id]/steps/[stepId]/route.js +81 -0
- package/dist/routes/api/v1/tasks/index.js +2 -0
- package/dist/routes/api/v1/tasks/route.d.ts +2 -2
- package/package.json +4 -4
- package/static/assets/{ActivityPage-k4I7Q53O.js → ActivityPage-DC2t-Kyv.js} +1 -1
- package/static/assets/{ApiKeysSettingsPage-B1YvVdmg.js → ApiKeysSettingsPage-DbXgxh7i.js} +1 -1
- package/static/assets/{ArchitectureEditPage-CpowsIx2.js → ArchitectureEditPage-B5dNFxvL.js} +1 -1
- package/static/assets/{ArchitecturePage-DYxC_aMR.js → ArchitecturePage-D796d-Je.js} +1 -1
- package/static/assets/{AuthSettingsPage-DtSo78Y_.js → AuthSettingsPage-nIgM05Yw.js} +1 -1
- package/static/assets/{CallbackPage-bROCGapx.js → CallbackPage-NNbLun2S.js} +1 -1
- package/static/assets/{CodePage-CPCj64rX.js → CodePage-xbYipiBR.js} +1 -1
- package/static/assets/{CollapsibleSection-M5cXbl92.js → CollapsibleSection-DbKW4cyU.js} +1 -1
- package/static/assets/{DashboardPage-B9BZZfw6.js → DashboardPage-Aw1xWH4M.js} +1 -1
- package/static/assets/{GitPage-BiDtdSK1.js → GitPage-Hi0mdDOi.js} +1 -1
- package/static/assets/{GitSettingsPage-THm6wDjs.js → GitSettingsPage-2vuCM-U-.js} +1 -1
- package/static/assets/{IdentityPage-BC16skg6.js → IdentityPage-2BzLc2EI.js} +1 -1
- package/static/assets/ImplementationStepsEditor-BlmI5YuN.js +6 -0
- package/static/assets/{IntegrationsSettingsPage-CC_VKIQa.js → IntegrationsSettingsPage-Ds16sLG2.js} +1 -1
- package/static/assets/{JobDetailPage-z1QQYvmU.js → JobDetailPage-CLEY1Z5e.js} +1 -1
- package/static/assets/{KnowledgeDetailPage-DzHXBS7Q.js → KnowledgeDetailPage-D94ukozt.js} +1 -1
- package/static/assets/{KnowledgeEditPage-BwGnUH_m.js → KnowledgeEditPage-DpjdauND.js} +1 -1
- package/static/assets/{KnowledgePage-CGIVMS02.js → KnowledgePage-D-ahboFK.js} +1 -1
- package/static/assets/{LoginPage-VQ3lcfLV.js → LoginPage-DQ2rJliF.js} +1 -1
- package/static/assets/{MailInboxPage-DiZKqwdU.js → MailInboxPage-Bfh0_pBU.js} +1 -1
- package/static/assets/{MailProcessingModal-DIeSQBoR.js → MailProcessingModal-NF9kjdgr.js} +1 -1
- package/static/assets/{MailReadPage-C8AACmZQ.js → MailReadPage-C0QhDa1x.js} +1 -1
- package/static/assets/{MailSentPage-C_5yFly_.js → MailSentPage-Ctgcp1RB.js} +1 -1
- package/static/assets/{McpSettingsPage-i9YHcu1s.js → McpSettingsPage-CFgpw5_r.js} +1 -1
- package/static/assets/{NewKnowledgePage-BnVY7WUD.js → NewKnowledgePage-EqWKQ4lU.js} +1 -1
- package/static/assets/{NewSkillPage-DwniHD6D.js → NewSkillPage-CvBSXZFE.js} +1 -1
- package/static/assets/NewTaskPage-DRL-pyjV.js +91 -0
- package/static/assets/{NotFoundPage-BbSZX_4L.js → NotFoundPage-DW0gfvNA.js} +1 -1
- package/static/assets/{NotificationsSettingsPage-C8kjcift.js → NotificationsSettingsPage-BzVS1D5M.js} +1 -1
- package/static/assets/{ProjectEditPage-DUUlIEqI.js → ProjectEditPage-BlQk50Xs.js} +1 -1
- package/static/assets/{ProjectPage-Unz9PQpA.js → ProjectPage-78a-iVFG.js} +1 -1
- package/static/assets/{PromptsSettingsPage-DVpIuRKI.js → PromptsSettingsPage-DWEKgvMD.js} +1 -1
- package/static/assets/{ResourceDetailPage-DqHZ2KYD.js → ResourceDetailPage-CLcuo4yw.js} +1 -1
- package/static/assets/{ResourcesPage-BP5tuAi-.js → ResourcesPage-C0TGRawd.js} +1 -1
- package/static/assets/{RoleEditPage-BgKu8S0-.js → RoleEditPage-m6lOchyA.js} +1 -1
- package/static/assets/{RolePage-Fed52Ov5.js → RolePage-haUf186q.js} +1 -1
- package/static/assets/{RulesSettingsPage-BQ2O0u66.js → RulesSettingsPage-Cc8rvAvm.js} +1 -1
- package/static/assets/{SchedulePage-jkxjuzBx.js → SchedulePage-DUSxe93C.js} +1 -1
- package/static/assets/{SkillDetailPage-k3Q2-NFd.js → SkillDetailPage-BqhoNNkM.js} +1 -1
- package/static/assets/{SkillEditPage-urF4snjo.js → SkillEditPage-cpSdv9D4.js} +1 -1
- package/static/assets/{SkillsPage-DlWDhEjR.js → SkillsPage-Cxkm5ymf.js} +1 -1
- package/static/assets/{SkillsSettingsPage-BViFgckG.js → SkillsSettingsPage-DrmRher8.js} +1 -1
- package/static/assets/{SourceInput-CAFKTHw-.js → SourceInput-C0WkiXS6.js} +1 -1
- package/static/assets/{TagInput-C6lI-ePr.js → TagInput-raThOrbG.js} +1 -1
- package/static/assets/{TaskDetailPage-DpbRHnW_.js → TaskDetailPage-BMzce3uJ.js} +1 -1
- package/static/assets/{TaskEditPage-DssRbW0h.js → TaskEditPage-Dpsi2Rcp.js} +1 -1
- package/static/assets/{TasksPage-CD_eo0Bj.js → TasksPage-CxKJQJ1_.js} +1 -1
- package/static/assets/{TerminalPage-BG_wlccr.js → TerminalPage-BWdNoEM5.js} +1 -1
- package/static/assets/{TerminalSessionPage-CsK-LznK.js → TerminalSessionPage-B6_ssmNM.js} +1 -1
- package/static/assets/{UserPreferencesPage-CWUq3efu.js → UserPreferencesPage-CY_0CoMe.js} +1 -1
- package/static/assets/{UserSettingsPage-CduI_MGS.js → UserSettingsPage-CqooRxDi.js} +1 -1
- package/static/assets/{UtilitiesPage-BAxokhLh.js → UtilitiesPage-e4IaR2YV.js} +1 -1
- package/static/assets/{alert-BXsc6_qu.js → alert-BGFBZOrZ.js} +1 -1
- package/static/assets/{arrow-down-DmW_3gE8.js → arrow-down-DXhs3vvo.js} +1 -1
- package/static/assets/{arrow-left-1S-835kP.js → arrow-left-PEX5RePT.js} +1 -1
- package/static/assets/{arrow-up-BYism_o1.js → arrow-up-D7z0QZsQ.js} +1 -1
- package/static/assets/{arrow-up-down-Dw3J0a4i.js → arrow-up-down-OTrzDHIL.js} +1 -1
- package/static/assets/{badge-BUEY53dV.js → badge-rki-Xf0E.js} +1 -1
- package/static/assets/{browser-modal-DCNdI4NT.js → browser-modal-BKnqJnf5.js} +1 -1
- package/static/assets/{card-BcPlIAH5.js → card-_Grh-Otl.js} +1 -1
- package/static/assets/{chevron-left-FMmNe7yP.js → chevron-left-LQtIDk73.js} +1 -1
- package/static/assets/{chevron-up-CqM3won3.js → chevron-up-BM1GKhAV.js} +1 -1
- package/static/assets/{chevrons-up-DTvCkIHc.js → chevrons-up-Ccej0FyZ.js} +1 -1
- package/static/assets/{circle-alert-dseM-Ib7.js → circle-alert-C5k9mZfC.js} +1 -1
- package/static/assets/{circle-check-big-jKg34xC-.js → circle-check-big-BaFefwt0.js} +1 -1
- package/static/assets/{circle-check-eyo6pBP1.js → circle-check-fwIZxHsK.js} +1 -1
- package/static/assets/{circle-play-BrY_lNiH.js → circle-play-C1R46Kry.js} +1 -1
- package/static/assets/{circle-x-uqmzEce1.js → circle-x-CKuM1691.js} +1 -1
- package/static/assets/{clipboard-tzPFoieb.js → clipboard-DWJnnRi8.js} +1 -1
- package/static/assets/{clock-Bjc06QBM.js → clock-Diqm3Csm.js} +1 -1
- package/static/assets/{code-DrYqPukx.js → code-Ao0cA5nW.js} +1 -1
- package/static/assets/{download-Bg__QCLT.js → download-5iQDQeY0.js} +1 -1
- package/static/assets/{external-link-CNDy2UUo.js → external-link-B6dkiWgP.js} +1 -1
- package/static/assets/{eye-DLFBnC8t.js → eye-DQUzAWBY.js} +1 -1
- package/static/assets/{folder-git-2-DUqd0WRi.js → folder-git-2-CQUj8P5W.js} +1 -1
- package/static/assets/{index-DFcWlnzl.js → index-CIFIEidO.js} +3 -3
- package/static/assets/{info-D6jxZC5X.js → info-BvzdeJ30.js} +1 -1
- package/static/assets/kiro-CGoI3Dqh.js +17 -0
- package/static/assets/{label-DBuh-ke5.js → label-B1lgxULu.js} +1 -1
- package/static/assets/{markdown-editor-B4YNQFT2.js → markdown-editor-C-DC0mFI.js} +1 -1
- package/static/assets/{message-square-B5RWz_ff.js → message-square-LKqx0LRr.js} +1 -1
- package/static/assets/{paperclip-4A_3MaPx.js → paperclip-Cvcr3t6l.js} +1 -1
- package/static/assets/{pause-BzhKXHtR.js → pause-TaMz44vG.js} +1 -1
- package/static/assets/{play-CHIf-Rcz.js → play-C4YxfQOO.js} +1 -1
- package/static/assets/{radio-group-C1ct-VsJ.js → radio-group-D7Rt-k1F.js} +1 -1
- package/static/assets/{refresh-cw-B3OwrDUf.js → refresh-cw-C9ZWZi2c.js} +1 -1
- package/static/assets/{search-Cq1ksEdp.js → search-C1RuN2pO.js} +1 -1
- package/static/assets/{select-44mcS2_G.js → select-Dp3J_OE9.js} +1 -1
- package/static/assets/status-utils-PwF3DXLL.js +1 -0
- package/static/assets/{switch-CIwjYvCt.js → switch-LSkE6hx8.js} +1 -1
- package/static/assets/{tabs-DTV6Su-h.js → tabs-etlvrbtm.js} +1 -1
- package/static/assets/{tag-p6yeowCW.js → tag-B2iP7vv_.js} +1 -1
- package/static/assets/{terminal-preview-DN38x9Jm.js → terminal-preview-PyMHLXJ3.js} +1 -1
- package/static/assets/{use-terminal-BXJqOeJe.js → use-terminal-Blvh8GLp.js} +1 -1
- package/static/assets/{video-BH5ChaoS.js → video-A2wzYKal.js} +1 -1
- package/static/index.html +1 -1
- package/static/assets/ImplementationStepsEditor-HliLQav5.js +0 -6
- package/static/assets/NewTaskPage-F5UX2WMc.js +0 -90
- package/static/assets/kiro-CX1mOsRO.js +0 -17
- package/static/assets/status-utils-CDkPeVfP.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as n,bk as E,am as K,ag as T,j as a,ah as N,bl as U,ak as h,al as w,bm as V,aj as g,bn as z,ap as H,ao as $,e as k,bo as W}from"./index-
|
|
1
|
+
import{r as n,bk as E,am as K,ag as T,j as a,ah as N,bl as U,ak as h,al as w,bm as V,aj as g,bn as z,ap as H,ao as $,e as k,bo as W}from"./index-CIFIEidO.js";var C="Radio",[X,I]=N(C),[Y,J]=X(C),j=n.forwardRef((r,t)=>{const{__scopeRadio:e,name:d,checked:o=!1,required:s,disabled:i,value:p="on",onCheck:f,form:R,...v}=r,[l,m]=n.useState(null),c=w(t,y=>m(y)),u=n.useRef(!1),b=l?R||!!l.closest("form"):!0;return a.jsxs(Y,{scope:e,checked:o,disabled:i,children:[a.jsx(h.button,{type:"button",role:"radio","aria-checked":o,"data-state":S(o),"data-disabled":i?"":void 0,disabled:i,value:p,...v,ref:c,onClick:g(r.onClick,y=>{o||f?.(),b&&(u.current=y.isPropagationStopped(),u.current||y.stopPropagation())})}),b&&a.jsx(P,{control:l,bubbles:!u.current,name:d,value:p,checked:o,required:s,disabled:i,form:R,style:{transform:"translateX(-100%)"}})]})});j.displayName=C;var _="RadioIndicator",G=n.forwardRef((r,t)=>{const{__scopeRadio:e,forceMount:d,...o}=r,s=J(_,e);return a.jsx(z,{present:d||s.checked,children:a.jsx(h.span,{"data-state":S(s.checked),"data-disabled":s.disabled?"":void 0,...o,ref:t})})});G.displayName=_;var Q="RadioBubbleInput",P=n.forwardRef(({__scopeRadio:r,control:t,checked:e,bubbles:d=!0,...o},s)=>{const i=n.useRef(null),p=w(i,s),f=H(e),R=$(t);return n.useEffect(()=>{const v=i.current;if(!v)return;const l=window.HTMLInputElement.prototype,c=Object.getOwnPropertyDescriptor(l,"checked").set;if(f!==e&&c){const u=new Event("click",{bubbles:d});c.call(v,e),v.dispatchEvent(u)}},[f,e,d]),a.jsx(h.input,{type:"radio","aria-hidden":!0,defaultChecked:e,...o,tabIndex:-1,ref:p,style:{...o.style,...R,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});P.displayName=Q;function S(r){return r?"checked":"unchecked"}var Z=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],x="RadioGroup",[ee,de]=N(x,[E,I]),A=E(),D=I(),[oe,re]=ee(x),M=n.forwardRef((r,t)=>{const{__scopeRadioGroup:e,name:d,defaultValue:o,value:s,required:i=!1,disabled:p=!1,orientation:f,dir:R,loop:v=!0,onValueChange:l,...m}=r,c=A(e),u=K(R),[b,y]=T({prop:s,defaultProp:o??null,onChange:l,caller:x});return a.jsx(oe,{scope:e,name:d,required:i,disabled:p,value:b,onValueChange:y,children:a.jsx(U,{asChild:!0,...c,orientation:f,dir:u,loop:v,children:a.jsx(h.div,{role:"radiogroup","aria-required":i,"aria-orientation":f,"data-disabled":p?"":void 0,dir:u,...m,ref:t})})})});M.displayName=x;var O="RadioGroupItem",F=n.forwardRef((r,t)=>{const{__scopeRadioGroup:e,disabled:d,...o}=r,s=re(O,e),i=s.disabled||d,p=A(e),f=D(e),R=n.useRef(null),v=w(t,R),l=s.value===o.value,m=n.useRef(!1);return n.useEffect(()=>{const c=b=>{Z.includes(b.key)&&(m.current=!0)},u=()=>m.current=!1;return document.addEventListener("keydown",c),document.addEventListener("keyup",u),()=>{document.removeEventListener("keydown",c),document.removeEventListener("keyup",u)}},[]),a.jsx(V,{asChild:!0,...p,focusable:!i,active:l,children:a.jsx(j,{disabled:i,required:s.required,checked:l,...f,...o,name:s.name,ref:v,onCheck:()=>s.onValueChange(o.value),onKeyDown:g(c=>{c.key==="Enter"&&c.preventDefault()}),onFocus:g(o.onFocus,()=>{m.current&&R.current?.click()})})})});F.displayName=O;var ae="RadioGroupIndicator",L=n.forwardRef((r,t)=>{const{__scopeRadioGroup:e,...d}=r,o=D(e);return a.jsx(G,{...o,...d,ref:t})});L.displayName=ae;var q=M,B=F,te=L;const se=n.forwardRef(({className:r,...t},e)=>a.jsx(q,{className:k("grid gap-2",r),...t,ref:e}));se.displayName=q.displayName;const ne=n.forwardRef(({className:r,...t},e)=>a.jsx(B,{ref:e,className:k("aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",r),...t,children:a.jsx(te,{className:"flex items-center justify-center",children:a.jsx(W,{className:"h-2.5 w-2.5 fill-current text-current"})})}));ne.displayName=B.displayName;export{se as R,ne as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as t,b3 as Pe,am as ft,ag as Te,j as r,b4 as mt,ah as ht,b5 as be,ai as gt,al as L,b6 as z,ak as j,ap as vt,b7 as xt,b8 as St,aj as N,b9 as wt,ba as Re,bb as yt,bc as Ct,bd as bt,be as It,bf as Tt,bg as Nt,bh as Pt,bi as Rt,an as Ne,bj as Et,e as G,n as Ee,ae as _t}from"./index-DFcWlnzl.js";import{C as jt}from"./chevron-up-CqM3won3.js";var Mt=[" ","Enter","ArrowUp","ArrowDown"],At=[" ","Enter"],Q="Select",[ie,de,Ot]=gt(Q),[oe,mo]=ht(Q,[Ot,Pe]),ue=Pe(),[Dt,Y]=oe(Q),[Lt,kt]=oe(Q),_e=o=>{const{__scopeSelect:n,children:e,open:l,defaultOpen:a,onOpenChange:u,value:s,defaultValue:c,onValueChange:i,dir:f,name:v,autoComplete:w,disabled:P,required:I,form:C}=o,d=ue(n),[h,x]=t.useState(null),[m,g]=t.useState(null),[F,M]=t.useState(!1),ne=ft(f),[R,O]=Te({prop:l,defaultProp:a??!1,onChange:u,caller:Q}),[W,X]=Te({prop:s,defaultProp:c,onChange:i,caller:Q}),k=t.useRef(null),B=h?C||!!h.closest("form"):!0,[K,V]=t.useState(new Set),H=Array.from(K).map(E=>E.props.value).join(";");return r.jsx(mt,{...d,children:r.jsxs(Dt,{required:I,scope:n,trigger:h,onTriggerChange:x,valueNode:m,onValueNodeChange:g,valueNodeHasChildren:F,onValueNodeHasChildrenChange:M,contentId:be(),value:W,onValueChange:X,open:R,onOpenChange:O,dir:ne,triggerPointerDownPosRef:k,disabled:P,children:[r.jsx(ie.Provider,{scope:n,children:r.jsx(Lt,{scope:o.__scopeSelect,onNativeOptionAdd:t.useCallback(E=>{V(D=>new Set(D).add(E))},[]),onNativeOptionRemove:t.useCallback(E=>{V(D=>{const U=new Set(D);return U.delete(E),U})},[]),children:e})}),B?r.jsxs(et,{"aria-hidden":!0,required:I,tabIndex:-1,name:v,autoComplete:w,value:W,onChange:E=>X(E.target.value),disabled:P,form:C,children:[W===void 0?r.jsx("option",{value:""}):null,Array.from(K)]},H):null]})})};_e.displayName=Q;var je="SelectTrigger",Me=t.forwardRef((o,n)=>{const{__scopeSelect:e,disabled:l=!1,...a}=o,u=ue(e),s=Y(je,e),c=s.disabled||l,i=L(n,s.onTriggerChange),f=de(e),v=t.useRef("touch"),[w,P,I]=ot(d=>{const h=f().filter(g=>!g.disabled),x=h.find(g=>g.value===s.value),m=nt(h,d,x);m!==void 0&&s.onValueChange(m.value)}),C=d=>{c||(s.onOpenChange(!0),I()),d&&(s.triggerPointerDownPosRef.current={x:Math.round(d.pageX),y:Math.round(d.pageY)})};return r.jsx(St,{asChild:!0,...u,children:r.jsx(j.button,{type:"button",role:"combobox","aria-controls":s.contentId,"aria-expanded":s.open,"aria-required":s.required,"aria-autocomplete":"none",dir:s.dir,"data-state":s.open?"open":"closed",disabled:c,"data-disabled":c?"":void 0,"data-placeholder":tt(s.value)?"":void 0,...a,ref:i,onClick:N(a.onClick,d=>{d.currentTarget.focus(),v.current!=="mouse"&&C(d)}),onPointerDown:N(a.onPointerDown,d=>{v.current=d.pointerType;const h=d.target;h.hasPointerCapture(d.pointerId)&&h.releasePointerCapture(d.pointerId),d.button===0&&d.ctrlKey===!1&&d.pointerType==="mouse"&&(C(d),d.preventDefault())}),onKeyDown:N(a.onKeyDown,d=>{const h=w.current!=="";!(d.ctrlKey||d.altKey||d.metaKey)&&d.key.length===1&&P(d.key),!(h&&d.key===" ")&&Mt.includes(d.key)&&(C(),d.preventDefault())})})})});Me.displayName=je;var Ae="SelectValue",Oe=t.forwardRef((o,n)=>{const{__scopeSelect:e,className:l,style:a,children:u,placeholder:s="",...c}=o,i=Y(Ae,e),{onValueNodeHasChildrenChange:f}=i,v=u!==void 0,w=L(n,i.onValueNodeChange);return z(()=>{f(v)},[f,v]),r.jsx(j.span,{...c,ref:w,style:{pointerEvents:"none"},children:tt(i.value)?r.jsx(r.Fragment,{children:s}):u})});Oe.displayName=Ae;var Bt="SelectIcon",De=t.forwardRef((o,n)=>{const{__scopeSelect:e,children:l,...a}=o;return r.jsx(j.span,{"aria-hidden":!0,...a,ref:n,children:l||"▼"})});De.displayName=Bt;var Vt="SelectPortal",Le=o=>r.jsx(wt,{asChild:!0,...o});Le.displayName=Vt;var ee="SelectContent",ke=t.forwardRef((o,n)=>{const e=Y(ee,o.__scopeSelect),[l,a]=t.useState();if(z(()=>{a(new DocumentFragment)},[]),!e.open){const u=l;return u?Re.createPortal(r.jsx(Be,{scope:o.__scopeSelect,children:r.jsx(ie.Slot,{scope:o.__scopeSelect,children:r.jsx("div",{children:o.children})})}),u):null}return r.jsx(Ve,{...o,ref:n})});ke.displayName=ee;var A=10,[Be,q]=oe(ee),Ht="SelectContentImpl",Ut=Tt("SelectContent.RemoveScroll"),Ve=t.forwardRef((o,n)=>{const{__scopeSelect:e,position:l="item-aligned",onCloseAutoFocus:a,onEscapeKeyDown:u,onPointerDownOutside:s,side:c,sideOffset:i,align:f,alignOffset:v,arrowPadding:w,collisionBoundary:P,collisionPadding:I,sticky:C,hideWhenDetached:d,avoidCollisions:h,...x}=o,m=Y(ee,e),[g,F]=t.useState(null),[M,ne]=t.useState(null),R=L(n,p=>F(p)),[O,W]=t.useState(null),[X,k]=t.useState(null),B=de(e),[K,V]=t.useState(!1),H=t.useRef(!1);t.useEffect(()=>{if(g)return Ct(g)},[g]),bt();const E=t.useCallback(p=>{const[b,..._]=B().map(T=>T.ref.current),[S]=_.slice(-1),y=document.activeElement;for(const T of p)if(T===y||(T?.scrollIntoView({block:"nearest"}),T===b&&M&&(M.scrollTop=0),T===S&&M&&(M.scrollTop=M.scrollHeight),T?.focus(),document.activeElement!==y))return},[B,M]),D=t.useCallback(()=>E([O,g]),[E,O,g]);t.useEffect(()=>{K&&D()},[K,D]);const{onOpenChange:U,triggerPointerDownPosRef:$}=m;t.useEffect(()=>{if(g){let p={x:0,y:0};const b=S=>{p={x:Math.abs(Math.round(S.pageX)-($.current?.x??0)),y:Math.abs(Math.round(S.pageY)-($.current?.y??0))}},_=S=>{p.x<=10&&p.y<=10?S.preventDefault():g.contains(S.target)||U(!1),document.removeEventListener("pointermove",b),$.current=null};return $.current!==null&&(document.addEventListener("pointermove",b),document.addEventListener("pointerup",_,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",b),document.removeEventListener("pointerup",_,{capture:!0})}}},[g,U,$]),t.useEffect(()=>{const p=()=>U(!1);return window.addEventListener("blur",p),window.addEventListener("resize",p),()=>{window.removeEventListener("blur",p),window.removeEventListener("resize",p)}},[U]);const[pe,ae]=ot(p=>{const b=B().filter(y=>!y.disabled),_=b.find(y=>y.ref.current===document.activeElement),S=nt(b,p,_);S&&setTimeout(()=>S.ref.current.focus())}),fe=t.useCallback((p,b,_)=>{const S=!H.current&&!_;(m.value!==void 0&&m.value===b||S)&&(W(p),S&&(H.current=!0))},[m.value]),me=t.useCallback(()=>g?.focus(),[g]),te=t.useCallback((p,b,_)=>{const S=!H.current&&!_;(m.value!==void 0&&m.value===b||S)&&k(p)},[m.value]),le=l==="popper"?xe:He,re=le===xe?{side:c,sideOffset:i,align:f,alignOffset:v,arrowPadding:w,collisionBoundary:P,collisionPadding:I,sticky:C,hideWhenDetached:d,avoidCollisions:h}:{};return r.jsx(Be,{scope:e,content:g,viewport:M,onViewportChange:ne,itemRefCallback:fe,selectedItem:O,onItemLeave:me,itemTextRefCallback:te,focusSelectedItem:D,selectedItemText:X,position:l,isPositioned:K,searchRef:pe,children:r.jsx(It,{as:Ut,allowPinchZoom:!0,children:r.jsx(Nt,{asChild:!0,trapped:m.open,onMountAutoFocus:p=>{p.preventDefault()},onUnmountAutoFocus:N(a,p=>{m.trigger?.focus({preventScroll:!0}),p.preventDefault()}),children:r.jsx(Pt,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:u,onPointerDownOutside:s,onFocusOutside:p=>p.preventDefault(),onDismiss:()=>m.onOpenChange(!1),children:r.jsx(le,{role:"listbox",id:m.contentId,"data-state":m.open?"open":"closed",dir:m.dir,onContextMenu:p=>p.preventDefault(),...x,...re,onPlaced:()=>V(!0),ref:R,style:{display:"flex",flexDirection:"column",outline:"none",...x.style},onKeyDown:N(x.onKeyDown,p=>{const b=p.ctrlKey||p.altKey||p.metaKey;if(p.key==="Tab"&&p.preventDefault(),!b&&p.key.length===1&&ae(p.key),["ArrowUp","ArrowDown","Home","End"].includes(p.key)){let S=B().filter(y=>!y.disabled).map(y=>y.ref.current);if(["ArrowUp","End"].includes(p.key)&&(S=S.slice().reverse()),["ArrowUp","ArrowDown"].includes(p.key)){const y=p.target,T=S.indexOf(y);S=S.slice(T+1)}setTimeout(()=>E(S)),p.preventDefault()}})})})})})})});Ve.displayName=Ht;var Ft="SelectItemAlignedPosition",He=t.forwardRef((o,n)=>{const{__scopeSelect:e,onPlaced:l,...a}=o,u=Y(ee,e),s=q(ee,e),[c,i]=t.useState(null),[f,v]=t.useState(null),w=L(n,R=>v(R)),P=de(e),I=t.useRef(!1),C=t.useRef(!0),{viewport:d,selectedItem:h,selectedItemText:x,focusSelectedItem:m}=s,g=t.useCallback(()=>{if(u.trigger&&u.valueNode&&c&&f&&d&&h&&x){const R=u.trigger.getBoundingClientRect(),O=f.getBoundingClientRect(),W=u.valueNode.getBoundingClientRect(),X=x.getBoundingClientRect();if(u.dir!=="rtl"){const y=X.left-O.left,T=W.left-y,Z=R.left-T,J=R.width+Z,he=Math.max(J,O.width),ge=window.innerWidth-A,ve=Ne(T,[A,Math.max(A,ge-he)]);c.style.minWidth=J+"px",c.style.left=ve+"px"}else{const y=O.right-X.right,T=window.innerWidth-W.right-y,Z=window.innerWidth-R.right-T,J=R.width+Z,he=Math.max(J,O.width),ge=window.innerWidth-A,ve=Ne(T,[A,Math.max(A,ge-he)]);c.style.minWidth=J+"px",c.style.right=ve+"px"}const k=P(),B=window.innerHeight-A*2,K=d.scrollHeight,V=window.getComputedStyle(f),H=parseInt(V.borderTopWidth,10),E=parseInt(V.paddingTop,10),D=parseInt(V.borderBottomWidth,10),U=parseInt(V.paddingBottom,10),$=H+E+K+U+D,pe=Math.min(h.offsetHeight*5,$),ae=window.getComputedStyle(d),fe=parseInt(ae.paddingTop,10),me=parseInt(ae.paddingBottom,10),te=R.top+R.height/2-A,le=B-te,re=h.offsetHeight/2,p=h.offsetTop+re,b=H+E+p,_=$-b;if(b<=te){const y=k.length>0&&h===k[k.length-1].ref.current;c.style.bottom="0px";const T=f.clientHeight-d.offsetTop-d.offsetHeight,Z=Math.max(le,re+(y?me:0)+T+D),J=b+Z;c.style.height=J+"px"}else{const y=k.length>0&&h===k[0].ref.current;c.style.top="0px";const Z=Math.max(te,H+d.offsetTop+(y?fe:0)+re)+_;c.style.height=Z+"px",d.scrollTop=b-te+d.offsetTop}c.style.margin=`${A}px 0`,c.style.minHeight=pe+"px",c.style.maxHeight=B+"px",l?.(),requestAnimationFrame(()=>I.current=!0)}},[P,u.trigger,u.valueNode,c,f,d,h,x,u.dir,l]);z(()=>g(),[g]);const[F,M]=t.useState();z(()=>{f&&M(window.getComputedStyle(f).zIndex)},[f]);const ne=t.useCallback(R=>{R&&C.current===!0&&(g(),m?.(),C.current=!1)},[g,m]);return r.jsx(Kt,{scope:e,contentWrapper:c,shouldExpandOnScrollRef:I,onScrollButtonChange:ne,children:r.jsx("div",{ref:i,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:F},children:r.jsx(j.div,{...a,ref:w,style:{boxSizing:"border-box",maxHeight:"100%",...a.style}})})})});He.displayName=Ft;var Wt="SelectPopperPosition",xe=t.forwardRef((o,n)=>{const{__scopeSelect:e,align:l="start",collisionPadding:a=A,...u}=o,s=ue(e);return r.jsx(Rt,{...s,...u,ref:n,align:l,collisionPadding:a,style:{boxSizing:"border-box",...u.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});xe.displayName=Wt;var[Kt,Ie]=oe(ee,{}),Se="SelectViewport",Ue=t.forwardRef((o,n)=>{const{__scopeSelect:e,nonce:l,...a}=o,u=q(Se,e),s=Ie(Se,e),c=L(n,u.onViewportChange),i=t.useRef(0);return r.jsxs(r.Fragment,{children:[r.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:l}),r.jsx(ie.Slot,{scope:e,children:r.jsx(j.div,{"data-radix-select-viewport":"",role:"presentation",...a,ref:c,style:{position:"relative",flex:1,overflow:"hidden auto",...a.style},onScroll:N(a.onScroll,f=>{const v=f.currentTarget,{contentWrapper:w,shouldExpandOnScrollRef:P}=s;if(P?.current&&w){const I=Math.abs(i.current-v.scrollTop);if(I>0){const C=window.innerHeight-A*2,d=parseFloat(w.style.minHeight),h=parseFloat(w.style.height),x=Math.max(d,h);if(x<C){const m=x+I,g=Math.min(C,m),F=m-g;w.style.height=g+"px",w.style.bottom==="0px"&&(v.scrollTop=F>0?F:0,w.style.justifyContent="flex-end")}}}i.current=v.scrollTop})})})]})});Ue.displayName=Se;var Fe="SelectGroup",[$t,zt]=oe(Fe),Gt=t.forwardRef((o,n)=>{const{__scopeSelect:e,...l}=o,a=be();return r.jsx($t,{scope:e,id:a,children:r.jsx(j.div,{role:"group","aria-labelledby":a,...l,ref:n})})});Gt.displayName=Fe;var We="SelectLabel",Ke=t.forwardRef((o,n)=>{const{__scopeSelect:e,...l}=o,a=zt(We,e);return r.jsx(j.div,{id:a.id,...l,ref:n})});Ke.displayName=We;var ce="SelectItem",[Yt,$e]=oe(ce),ze=t.forwardRef((o,n)=>{const{__scopeSelect:e,value:l,disabled:a=!1,textValue:u,...s}=o,c=Y(ce,e),i=q(ce,e),f=c.value===l,[v,w]=t.useState(u??""),[P,I]=t.useState(!1),C=L(n,m=>i.itemRefCallback?.(m,l,a)),d=be(),h=t.useRef("touch"),x=()=>{a||(c.onValueChange(l),c.onOpenChange(!1))};if(l==="")throw new Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return r.jsx(Yt,{scope:e,value:l,disabled:a,textId:d,isSelected:f,onItemTextChange:t.useCallback(m=>{w(g=>g||(m?.textContent??"").trim())},[]),children:r.jsx(ie.ItemSlot,{scope:e,value:l,disabled:a,textValue:v,children:r.jsx(j.div,{role:"option","aria-labelledby":d,"data-highlighted":P?"":void 0,"aria-selected":f&&P,"data-state":f?"checked":"unchecked","aria-disabled":a||void 0,"data-disabled":a?"":void 0,tabIndex:a?void 0:-1,...s,ref:C,onFocus:N(s.onFocus,()=>I(!0)),onBlur:N(s.onBlur,()=>I(!1)),onClick:N(s.onClick,()=>{h.current!=="mouse"&&x()}),onPointerUp:N(s.onPointerUp,()=>{h.current==="mouse"&&x()}),onPointerDown:N(s.onPointerDown,m=>{h.current=m.pointerType}),onPointerMove:N(s.onPointerMove,m=>{h.current=m.pointerType,a?i.onItemLeave?.():h.current==="mouse"&&m.currentTarget.focus({preventScroll:!0})}),onPointerLeave:N(s.onPointerLeave,m=>{m.currentTarget===document.activeElement&&i.onItemLeave?.()}),onKeyDown:N(s.onKeyDown,m=>{i.searchRef?.current!==""&&m.key===" "||(At.includes(m.key)&&x(),m.key===" "&&m.preventDefault())})})})})});ze.displayName=ce;var se="SelectItemText",Ge=t.forwardRef((o,n)=>{const{__scopeSelect:e,className:l,style:a,...u}=o,s=Y(se,e),c=q(se,e),i=$e(se,e),f=kt(se,e),[v,w]=t.useState(null),P=L(n,x=>w(x),i.onItemTextChange,x=>c.itemTextRefCallback?.(x,i.value,i.disabled)),I=v?.textContent,C=t.useMemo(()=>r.jsx("option",{value:i.value,disabled:i.disabled,children:I},i.value),[i.disabled,i.value,I]),{onNativeOptionAdd:d,onNativeOptionRemove:h}=f;return z(()=>(d(C),()=>h(C)),[d,h,C]),r.jsxs(r.Fragment,{children:[r.jsx(j.span,{id:i.textId,...u,ref:P}),i.isSelected&&s.valueNode&&!s.valueNodeHasChildren?Re.createPortal(u.children,s.valueNode):null]})});Ge.displayName=se;var Ye="SelectItemIndicator",qe=t.forwardRef((o,n)=>{const{__scopeSelect:e,...l}=o;return $e(Ye,e).isSelected?r.jsx(j.span,{"aria-hidden":!0,...l,ref:n}):null});qe.displayName=Ye;var we="SelectScrollUpButton",Xe=t.forwardRef((o,n)=>{const e=q(we,o.__scopeSelect),l=Ie(we,o.__scopeSelect),[a,u]=t.useState(!1),s=L(n,l.onScrollButtonChange);return z(()=>{if(e.viewport&&e.isPositioned){let c=function(){const f=i.scrollTop>0;u(f)};const i=e.viewport;return c(),i.addEventListener("scroll",c),()=>i.removeEventListener("scroll",c)}},[e.viewport,e.isPositioned]),a?r.jsx(Je,{...o,ref:s,onAutoScroll:()=>{const{viewport:c,selectedItem:i}=e;c&&i&&(c.scrollTop=c.scrollTop-i.offsetHeight)}}):null});Xe.displayName=we;var ye="SelectScrollDownButton",Ze=t.forwardRef((o,n)=>{const e=q(ye,o.__scopeSelect),l=Ie(ye,o.__scopeSelect),[a,u]=t.useState(!1),s=L(n,l.onScrollButtonChange);return z(()=>{if(e.viewport&&e.isPositioned){let c=function(){const f=i.scrollHeight-i.clientHeight,v=Math.ceil(i.scrollTop)<f;u(v)};const i=e.viewport;return c(),i.addEventListener("scroll",c),()=>i.removeEventListener("scroll",c)}},[e.viewport,e.isPositioned]),a?r.jsx(Je,{...o,ref:s,onAutoScroll:()=>{const{viewport:c,selectedItem:i}=e;c&&i&&(c.scrollTop=c.scrollTop+i.offsetHeight)}}):null});Ze.displayName=ye;var Je=t.forwardRef((o,n)=>{const{__scopeSelect:e,onAutoScroll:l,...a}=o,u=q("SelectScrollButton",e),s=t.useRef(null),c=de(e),i=t.useCallback(()=>{s.current!==null&&(window.clearInterval(s.current),s.current=null)},[]);return t.useEffect(()=>()=>i(),[i]),z(()=>{c().find(v=>v.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:"nearest"})},[c]),r.jsx(j.div,{"aria-hidden":!0,...a,ref:n,style:{flexShrink:0,...a.style},onPointerDown:N(a.onPointerDown,()=>{s.current===null&&(s.current=window.setInterval(l,50))}),onPointerMove:N(a.onPointerMove,()=>{u.onItemLeave?.(),s.current===null&&(s.current=window.setInterval(l,50))}),onPointerLeave:N(a.onPointerLeave,()=>{i()})})}),qt="SelectSeparator",Qe=t.forwardRef((o,n)=>{const{__scopeSelect:e,...l}=o;return r.jsx(j.div,{"aria-hidden":!0,...l,ref:n})});Qe.displayName=qt;var Ce="SelectArrow",Xt=t.forwardRef((o,n)=>{const{__scopeSelect:e,...l}=o,a=ue(e),u=Y(Ce,e),s=q(Ce,e);return u.open&&s.position==="popper"?r.jsx(Et,{...a,...l,ref:n}):null});Xt.displayName=Ce;var Zt="SelectBubbleInput",et=t.forwardRef(({__scopeSelect:o,value:n,...e},l)=>{const a=t.useRef(null),u=L(l,a),s=vt(n);return t.useEffect(()=>{const c=a.current;if(!c)return;const i=window.HTMLSelectElement.prototype,v=Object.getOwnPropertyDescriptor(i,"value").set;if(s!==n&&v){const w=new Event("change",{bubbles:!0});v.call(c,n),c.dispatchEvent(w)}},[s,n]),r.jsx(j.select,{...e,style:{...xt,...e.style},ref:u,defaultValue:n})});et.displayName=Zt;function tt(o){return o===""||o===void 0}function ot(o){const n=yt(o),e=t.useRef(""),l=t.useRef(0),a=t.useCallback(s=>{const c=e.current+s;n(c),(function i(f){e.current=f,window.clearTimeout(l.current),f!==""&&(l.current=window.setTimeout(()=>i(""),1e3))})(c)},[n]),u=t.useCallback(()=>{e.current="",window.clearTimeout(l.current)},[]);return t.useEffect(()=>()=>window.clearTimeout(l.current),[]),[e,a,u]}function nt(o,n,e){const a=n.length>1&&Array.from(n).every(f=>f===n[0])?n[0]:n,u=e?o.indexOf(e):-1;let s=Jt(o,Math.max(u,0));a.length===1&&(s=s.filter(f=>f!==e));const i=s.find(f=>f.textValue.toLowerCase().startsWith(a.toLowerCase()));return i!==e?i:void 0}function Jt(o,n){return o.map((e,l)=>o[(n+l)%o.length])}var Qt=_e,rt=Me,eo=Oe,to=De,oo=Le,st=ke,no=Ue,at=Ke,lt=ze,ro=Ge,so=qe,ct=Xe,it=Ze,dt=Qe;const ho=Qt,go=eo,ao=t.forwardRef(({className:o,children:n,...e},l)=>r.jsxs(rt,{ref:l,className:G("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",o),...e,children:[n,r.jsx(to,{asChild:!0,children:r.jsx(Ee,{className:"h-4 w-4 opacity-50"})})]}));ao.displayName=rt.displayName;const ut=t.forwardRef(({className:o,...n},e)=>r.jsx(ct,{ref:e,className:G("flex cursor-default items-center justify-center py-1",o),...n,children:r.jsx(jt,{className:"h-4 w-4"})}));ut.displayName=ct.displayName;const pt=t.forwardRef(({className:o,...n},e)=>r.jsx(it,{ref:e,className:G("flex cursor-default items-center justify-center py-1",o),...n,children:r.jsx(Ee,{className:"h-4 w-4"})}));pt.displayName=it.displayName;const lo=t.forwardRef(({className:o,children:n,position:e="popper",...l},a)=>r.jsx(oo,{children:r.jsxs(st,{ref:a,className:G("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",o),position:e,...l,children:[r.jsx(ut,{}),r.jsx(no,{className:G("p-1",e==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:n}),r.jsx(pt,{})]})}));lo.displayName=st.displayName;const co=t.forwardRef(({className:o,...n},e)=>r.jsx(at,{ref:e,className:G("px-2 py-1.5 text-sm font-semibold",o),...n}));co.displayName=at.displayName;const io=t.forwardRef(({className:o,children:n,...e},l)=>r.jsxs(lt,{ref:l,className:G("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",o),...e,children:[r.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:r.jsx(so,{children:r.jsx(_t,{className:"h-4 w-4"})})}),r.jsx(ro,{children:n})]}));io.displayName=lt.displayName;const uo=t.forwardRef(({className:o,...n},e)=>r.jsx(dt,{ref:e,className:G("-mx-1 my-1 h-px bg-muted",o),...n}));uo.displayName=dt.displayName;export{ho as S,ao as a,go as b,lo as c,io as d};
|
|
1
|
+
import{r as t,b3 as Pe,am as ft,ag as Te,j as r,b4 as mt,ah as ht,b5 as be,ai as gt,al as L,b6 as z,ak as j,ap as vt,b7 as xt,b8 as St,aj as N,b9 as wt,ba as Re,bb as yt,bc as Ct,bd as bt,be as It,bf as Tt,bg as Nt,bh as Pt,bi as Rt,an as Ne,bj as Et,e as G,n as Ee,ae as _t}from"./index-CIFIEidO.js";import{C as jt}from"./chevron-up-BM1GKhAV.js";var Mt=[" ","Enter","ArrowUp","ArrowDown"],At=[" ","Enter"],Q="Select",[ie,de,Ot]=gt(Q),[oe,mo]=ht(Q,[Ot,Pe]),ue=Pe(),[Dt,Y]=oe(Q),[Lt,kt]=oe(Q),_e=o=>{const{__scopeSelect:n,children:e,open:l,defaultOpen:a,onOpenChange:u,value:s,defaultValue:c,onValueChange:i,dir:f,name:v,autoComplete:w,disabled:P,required:I,form:C}=o,d=ue(n),[h,x]=t.useState(null),[m,g]=t.useState(null),[F,M]=t.useState(!1),ne=ft(f),[R,O]=Te({prop:l,defaultProp:a??!1,onChange:u,caller:Q}),[W,X]=Te({prop:s,defaultProp:c,onChange:i,caller:Q}),k=t.useRef(null),B=h?C||!!h.closest("form"):!0,[K,V]=t.useState(new Set),H=Array.from(K).map(E=>E.props.value).join(";");return r.jsx(mt,{...d,children:r.jsxs(Dt,{required:I,scope:n,trigger:h,onTriggerChange:x,valueNode:m,onValueNodeChange:g,valueNodeHasChildren:F,onValueNodeHasChildrenChange:M,contentId:be(),value:W,onValueChange:X,open:R,onOpenChange:O,dir:ne,triggerPointerDownPosRef:k,disabled:P,children:[r.jsx(ie.Provider,{scope:n,children:r.jsx(Lt,{scope:o.__scopeSelect,onNativeOptionAdd:t.useCallback(E=>{V(D=>new Set(D).add(E))},[]),onNativeOptionRemove:t.useCallback(E=>{V(D=>{const U=new Set(D);return U.delete(E),U})},[]),children:e})}),B?r.jsxs(et,{"aria-hidden":!0,required:I,tabIndex:-1,name:v,autoComplete:w,value:W,onChange:E=>X(E.target.value),disabled:P,form:C,children:[W===void 0?r.jsx("option",{value:""}):null,Array.from(K)]},H):null]})})};_e.displayName=Q;var je="SelectTrigger",Me=t.forwardRef((o,n)=>{const{__scopeSelect:e,disabled:l=!1,...a}=o,u=ue(e),s=Y(je,e),c=s.disabled||l,i=L(n,s.onTriggerChange),f=de(e),v=t.useRef("touch"),[w,P,I]=ot(d=>{const h=f().filter(g=>!g.disabled),x=h.find(g=>g.value===s.value),m=nt(h,d,x);m!==void 0&&s.onValueChange(m.value)}),C=d=>{c||(s.onOpenChange(!0),I()),d&&(s.triggerPointerDownPosRef.current={x:Math.round(d.pageX),y:Math.round(d.pageY)})};return r.jsx(St,{asChild:!0,...u,children:r.jsx(j.button,{type:"button",role:"combobox","aria-controls":s.contentId,"aria-expanded":s.open,"aria-required":s.required,"aria-autocomplete":"none",dir:s.dir,"data-state":s.open?"open":"closed",disabled:c,"data-disabled":c?"":void 0,"data-placeholder":tt(s.value)?"":void 0,...a,ref:i,onClick:N(a.onClick,d=>{d.currentTarget.focus(),v.current!=="mouse"&&C(d)}),onPointerDown:N(a.onPointerDown,d=>{v.current=d.pointerType;const h=d.target;h.hasPointerCapture(d.pointerId)&&h.releasePointerCapture(d.pointerId),d.button===0&&d.ctrlKey===!1&&d.pointerType==="mouse"&&(C(d),d.preventDefault())}),onKeyDown:N(a.onKeyDown,d=>{const h=w.current!=="";!(d.ctrlKey||d.altKey||d.metaKey)&&d.key.length===1&&P(d.key),!(h&&d.key===" ")&&Mt.includes(d.key)&&(C(),d.preventDefault())})})})});Me.displayName=je;var Ae="SelectValue",Oe=t.forwardRef((o,n)=>{const{__scopeSelect:e,className:l,style:a,children:u,placeholder:s="",...c}=o,i=Y(Ae,e),{onValueNodeHasChildrenChange:f}=i,v=u!==void 0,w=L(n,i.onValueNodeChange);return z(()=>{f(v)},[f,v]),r.jsx(j.span,{...c,ref:w,style:{pointerEvents:"none"},children:tt(i.value)?r.jsx(r.Fragment,{children:s}):u})});Oe.displayName=Ae;var Bt="SelectIcon",De=t.forwardRef((o,n)=>{const{__scopeSelect:e,children:l,...a}=o;return r.jsx(j.span,{"aria-hidden":!0,...a,ref:n,children:l||"▼"})});De.displayName=Bt;var Vt="SelectPortal",Le=o=>r.jsx(wt,{asChild:!0,...o});Le.displayName=Vt;var ee="SelectContent",ke=t.forwardRef((o,n)=>{const e=Y(ee,o.__scopeSelect),[l,a]=t.useState();if(z(()=>{a(new DocumentFragment)},[]),!e.open){const u=l;return u?Re.createPortal(r.jsx(Be,{scope:o.__scopeSelect,children:r.jsx(ie.Slot,{scope:o.__scopeSelect,children:r.jsx("div",{children:o.children})})}),u):null}return r.jsx(Ve,{...o,ref:n})});ke.displayName=ee;var A=10,[Be,q]=oe(ee),Ht="SelectContentImpl",Ut=Tt("SelectContent.RemoveScroll"),Ve=t.forwardRef((o,n)=>{const{__scopeSelect:e,position:l="item-aligned",onCloseAutoFocus:a,onEscapeKeyDown:u,onPointerDownOutside:s,side:c,sideOffset:i,align:f,alignOffset:v,arrowPadding:w,collisionBoundary:P,collisionPadding:I,sticky:C,hideWhenDetached:d,avoidCollisions:h,...x}=o,m=Y(ee,e),[g,F]=t.useState(null),[M,ne]=t.useState(null),R=L(n,p=>F(p)),[O,W]=t.useState(null),[X,k]=t.useState(null),B=de(e),[K,V]=t.useState(!1),H=t.useRef(!1);t.useEffect(()=>{if(g)return Ct(g)},[g]),bt();const E=t.useCallback(p=>{const[b,..._]=B().map(T=>T.ref.current),[S]=_.slice(-1),y=document.activeElement;for(const T of p)if(T===y||(T?.scrollIntoView({block:"nearest"}),T===b&&M&&(M.scrollTop=0),T===S&&M&&(M.scrollTop=M.scrollHeight),T?.focus(),document.activeElement!==y))return},[B,M]),D=t.useCallback(()=>E([O,g]),[E,O,g]);t.useEffect(()=>{K&&D()},[K,D]);const{onOpenChange:U,triggerPointerDownPosRef:$}=m;t.useEffect(()=>{if(g){let p={x:0,y:0};const b=S=>{p={x:Math.abs(Math.round(S.pageX)-($.current?.x??0)),y:Math.abs(Math.round(S.pageY)-($.current?.y??0))}},_=S=>{p.x<=10&&p.y<=10?S.preventDefault():g.contains(S.target)||U(!1),document.removeEventListener("pointermove",b),$.current=null};return $.current!==null&&(document.addEventListener("pointermove",b),document.addEventListener("pointerup",_,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",b),document.removeEventListener("pointerup",_,{capture:!0})}}},[g,U,$]),t.useEffect(()=>{const p=()=>U(!1);return window.addEventListener("blur",p),window.addEventListener("resize",p),()=>{window.removeEventListener("blur",p),window.removeEventListener("resize",p)}},[U]);const[pe,ae]=ot(p=>{const b=B().filter(y=>!y.disabled),_=b.find(y=>y.ref.current===document.activeElement),S=nt(b,p,_);S&&setTimeout(()=>S.ref.current.focus())}),fe=t.useCallback((p,b,_)=>{const S=!H.current&&!_;(m.value!==void 0&&m.value===b||S)&&(W(p),S&&(H.current=!0))},[m.value]),me=t.useCallback(()=>g?.focus(),[g]),te=t.useCallback((p,b,_)=>{const S=!H.current&&!_;(m.value!==void 0&&m.value===b||S)&&k(p)},[m.value]),le=l==="popper"?xe:He,re=le===xe?{side:c,sideOffset:i,align:f,alignOffset:v,arrowPadding:w,collisionBoundary:P,collisionPadding:I,sticky:C,hideWhenDetached:d,avoidCollisions:h}:{};return r.jsx(Be,{scope:e,content:g,viewport:M,onViewportChange:ne,itemRefCallback:fe,selectedItem:O,onItemLeave:me,itemTextRefCallback:te,focusSelectedItem:D,selectedItemText:X,position:l,isPositioned:K,searchRef:pe,children:r.jsx(It,{as:Ut,allowPinchZoom:!0,children:r.jsx(Nt,{asChild:!0,trapped:m.open,onMountAutoFocus:p=>{p.preventDefault()},onUnmountAutoFocus:N(a,p=>{m.trigger?.focus({preventScroll:!0}),p.preventDefault()}),children:r.jsx(Pt,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:u,onPointerDownOutside:s,onFocusOutside:p=>p.preventDefault(),onDismiss:()=>m.onOpenChange(!1),children:r.jsx(le,{role:"listbox",id:m.contentId,"data-state":m.open?"open":"closed",dir:m.dir,onContextMenu:p=>p.preventDefault(),...x,...re,onPlaced:()=>V(!0),ref:R,style:{display:"flex",flexDirection:"column",outline:"none",...x.style},onKeyDown:N(x.onKeyDown,p=>{const b=p.ctrlKey||p.altKey||p.metaKey;if(p.key==="Tab"&&p.preventDefault(),!b&&p.key.length===1&&ae(p.key),["ArrowUp","ArrowDown","Home","End"].includes(p.key)){let S=B().filter(y=>!y.disabled).map(y=>y.ref.current);if(["ArrowUp","End"].includes(p.key)&&(S=S.slice().reverse()),["ArrowUp","ArrowDown"].includes(p.key)){const y=p.target,T=S.indexOf(y);S=S.slice(T+1)}setTimeout(()=>E(S)),p.preventDefault()}})})})})})})});Ve.displayName=Ht;var Ft="SelectItemAlignedPosition",He=t.forwardRef((o,n)=>{const{__scopeSelect:e,onPlaced:l,...a}=o,u=Y(ee,e),s=q(ee,e),[c,i]=t.useState(null),[f,v]=t.useState(null),w=L(n,R=>v(R)),P=de(e),I=t.useRef(!1),C=t.useRef(!0),{viewport:d,selectedItem:h,selectedItemText:x,focusSelectedItem:m}=s,g=t.useCallback(()=>{if(u.trigger&&u.valueNode&&c&&f&&d&&h&&x){const R=u.trigger.getBoundingClientRect(),O=f.getBoundingClientRect(),W=u.valueNode.getBoundingClientRect(),X=x.getBoundingClientRect();if(u.dir!=="rtl"){const y=X.left-O.left,T=W.left-y,Z=R.left-T,J=R.width+Z,he=Math.max(J,O.width),ge=window.innerWidth-A,ve=Ne(T,[A,Math.max(A,ge-he)]);c.style.minWidth=J+"px",c.style.left=ve+"px"}else{const y=O.right-X.right,T=window.innerWidth-W.right-y,Z=window.innerWidth-R.right-T,J=R.width+Z,he=Math.max(J,O.width),ge=window.innerWidth-A,ve=Ne(T,[A,Math.max(A,ge-he)]);c.style.minWidth=J+"px",c.style.right=ve+"px"}const k=P(),B=window.innerHeight-A*2,K=d.scrollHeight,V=window.getComputedStyle(f),H=parseInt(V.borderTopWidth,10),E=parseInt(V.paddingTop,10),D=parseInt(V.borderBottomWidth,10),U=parseInt(V.paddingBottom,10),$=H+E+K+U+D,pe=Math.min(h.offsetHeight*5,$),ae=window.getComputedStyle(d),fe=parseInt(ae.paddingTop,10),me=parseInt(ae.paddingBottom,10),te=R.top+R.height/2-A,le=B-te,re=h.offsetHeight/2,p=h.offsetTop+re,b=H+E+p,_=$-b;if(b<=te){const y=k.length>0&&h===k[k.length-1].ref.current;c.style.bottom="0px";const T=f.clientHeight-d.offsetTop-d.offsetHeight,Z=Math.max(le,re+(y?me:0)+T+D),J=b+Z;c.style.height=J+"px"}else{const y=k.length>0&&h===k[0].ref.current;c.style.top="0px";const Z=Math.max(te,H+d.offsetTop+(y?fe:0)+re)+_;c.style.height=Z+"px",d.scrollTop=b-te+d.offsetTop}c.style.margin=`${A}px 0`,c.style.minHeight=pe+"px",c.style.maxHeight=B+"px",l?.(),requestAnimationFrame(()=>I.current=!0)}},[P,u.trigger,u.valueNode,c,f,d,h,x,u.dir,l]);z(()=>g(),[g]);const[F,M]=t.useState();z(()=>{f&&M(window.getComputedStyle(f).zIndex)},[f]);const ne=t.useCallback(R=>{R&&C.current===!0&&(g(),m?.(),C.current=!1)},[g,m]);return r.jsx(Kt,{scope:e,contentWrapper:c,shouldExpandOnScrollRef:I,onScrollButtonChange:ne,children:r.jsx("div",{ref:i,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:F},children:r.jsx(j.div,{...a,ref:w,style:{boxSizing:"border-box",maxHeight:"100%",...a.style}})})})});He.displayName=Ft;var Wt="SelectPopperPosition",xe=t.forwardRef((o,n)=>{const{__scopeSelect:e,align:l="start",collisionPadding:a=A,...u}=o,s=ue(e);return r.jsx(Rt,{...s,...u,ref:n,align:l,collisionPadding:a,style:{boxSizing:"border-box",...u.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});xe.displayName=Wt;var[Kt,Ie]=oe(ee,{}),Se="SelectViewport",Ue=t.forwardRef((o,n)=>{const{__scopeSelect:e,nonce:l,...a}=o,u=q(Se,e),s=Ie(Se,e),c=L(n,u.onViewportChange),i=t.useRef(0);return r.jsxs(r.Fragment,{children:[r.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:l}),r.jsx(ie.Slot,{scope:e,children:r.jsx(j.div,{"data-radix-select-viewport":"",role:"presentation",...a,ref:c,style:{position:"relative",flex:1,overflow:"hidden auto",...a.style},onScroll:N(a.onScroll,f=>{const v=f.currentTarget,{contentWrapper:w,shouldExpandOnScrollRef:P}=s;if(P?.current&&w){const I=Math.abs(i.current-v.scrollTop);if(I>0){const C=window.innerHeight-A*2,d=parseFloat(w.style.minHeight),h=parseFloat(w.style.height),x=Math.max(d,h);if(x<C){const m=x+I,g=Math.min(C,m),F=m-g;w.style.height=g+"px",w.style.bottom==="0px"&&(v.scrollTop=F>0?F:0,w.style.justifyContent="flex-end")}}}i.current=v.scrollTop})})})]})});Ue.displayName=Se;var Fe="SelectGroup",[$t,zt]=oe(Fe),Gt=t.forwardRef((o,n)=>{const{__scopeSelect:e,...l}=o,a=be();return r.jsx($t,{scope:e,id:a,children:r.jsx(j.div,{role:"group","aria-labelledby":a,...l,ref:n})})});Gt.displayName=Fe;var We="SelectLabel",Ke=t.forwardRef((o,n)=>{const{__scopeSelect:e,...l}=o,a=zt(We,e);return r.jsx(j.div,{id:a.id,...l,ref:n})});Ke.displayName=We;var ce="SelectItem",[Yt,$e]=oe(ce),ze=t.forwardRef((o,n)=>{const{__scopeSelect:e,value:l,disabled:a=!1,textValue:u,...s}=o,c=Y(ce,e),i=q(ce,e),f=c.value===l,[v,w]=t.useState(u??""),[P,I]=t.useState(!1),C=L(n,m=>i.itemRefCallback?.(m,l,a)),d=be(),h=t.useRef("touch"),x=()=>{a||(c.onValueChange(l),c.onOpenChange(!1))};if(l==="")throw new Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return r.jsx(Yt,{scope:e,value:l,disabled:a,textId:d,isSelected:f,onItemTextChange:t.useCallback(m=>{w(g=>g||(m?.textContent??"").trim())},[]),children:r.jsx(ie.ItemSlot,{scope:e,value:l,disabled:a,textValue:v,children:r.jsx(j.div,{role:"option","aria-labelledby":d,"data-highlighted":P?"":void 0,"aria-selected":f&&P,"data-state":f?"checked":"unchecked","aria-disabled":a||void 0,"data-disabled":a?"":void 0,tabIndex:a?void 0:-1,...s,ref:C,onFocus:N(s.onFocus,()=>I(!0)),onBlur:N(s.onBlur,()=>I(!1)),onClick:N(s.onClick,()=>{h.current!=="mouse"&&x()}),onPointerUp:N(s.onPointerUp,()=>{h.current==="mouse"&&x()}),onPointerDown:N(s.onPointerDown,m=>{h.current=m.pointerType}),onPointerMove:N(s.onPointerMove,m=>{h.current=m.pointerType,a?i.onItemLeave?.():h.current==="mouse"&&m.currentTarget.focus({preventScroll:!0})}),onPointerLeave:N(s.onPointerLeave,m=>{m.currentTarget===document.activeElement&&i.onItemLeave?.()}),onKeyDown:N(s.onKeyDown,m=>{i.searchRef?.current!==""&&m.key===" "||(At.includes(m.key)&&x(),m.key===" "&&m.preventDefault())})})})})});ze.displayName=ce;var se="SelectItemText",Ge=t.forwardRef((o,n)=>{const{__scopeSelect:e,className:l,style:a,...u}=o,s=Y(se,e),c=q(se,e),i=$e(se,e),f=kt(se,e),[v,w]=t.useState(null),P=L(n,x=>w(x),i.onItemTextChange,x=>c.itemTextRefCallback?.(x,i.value,i.disabled)),I=v?.textContent,C=t.useMemo(()=>r.jsx("option",{value:i.value,disabled:i.disabled,children:I},i.value),[i.disabled,i.value,I]),{onNativeOptionAdd:d,onNativeOptionRemove:h}=f;return z(()=>(d(C),()=>h(C)),[d,h,C]),r.jsxs(r.Fragment,{children:[r.jsx(j.span,{id:i.textId,...u,ref:P}),i.isSelected&&s.valueNode&&!s.valueNodeHasChildren?Re.createPortal(u.children,s.valueNode):null]})});Ge.displayName=se;var Ye="SelectItemIndicator",qe=t.forwardRef((o,n)=>{const{__scopeSelect:e,...l}=o;return $e(Ye,e).isSelected?r.jsx(j.span,{"aria-hidden":!0,...l,ref:n}):null});qe.displayName=Ye;var we="SelectScrollUpButton",Xe=t.forwardRef((o,n)=>{const e=q(we,o.__scopeSelect),l=Ie(we,o.__scopeSelect),[a,u]=t.useState(!1),s=L(n,l.onScrollButtonChange);return z(()=>{if(e.viewport&&e.isPositioned){let c=function(){const f=i.scrollTop>0;u(f)};const i=e.viewport;return c(),i.addEventListener("scroll",c),()=>i.removeEventListener("scroll",c)}},[e.viewport,e.isPositioned]),a?r.jsx(Je,{...o,ref:s,onAutoScroll:()=>{const{viewport:c,selectedItem:i}=e;c&&i&&(c.scrollTop=c.scrollTop-i.offsetHeight)}}):null});Xe.displayName=we;var ye="SelectScrollDownButton",Ze=t.forwardRef((o,n)=>{const e=q(ye,o.__scopeSelect),l=Ie(ye,o.__scopeSelect),[a,u]=t.useState(!1),s=L(n,l.onScrollButtonChange);return z(()=>{if(e.viewport&&e.isPositioned){let c=function(){const f=i.scrollHeight-i.clientHeight,v=Math.ceil(i.scrollTop)<f;u(v)};const i=e.viewport;return c(),i.addEventListener("scroll",c),()=>i.removeEventListener("scroll",c)}},[e.viewport,e.isPositioned]),a?r.jsx(Je,{...o,ref:s,onAutoScroll:()=>{const{viewport:c,selectedItem:i}=e;c&&i&&(c.scrollTop=c.scrollTop+i.offsetHeight)}}):null});Ze.displayName=ye;var Je=t.forwardRef((o,n)=>{const{__scopeSelect:e,onAutoScroll:l,...a}=o,u=q("SelectScrollButton",e),s=t.useRef(null),c=de(e),i=t.useCallback(()=>{s.current!==null&&(window.clearInterval(s.current),s.current=null)},[]);return t.useEffect(()=>()=>i(),[i]),z(()=>{c().find(v=>v.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:"nearest"})},[c]),r.jsx(j.div,{"aria-hidden":!0,...a,ref:n,style:{flexShrink:0,...a.style},onPointerDown:N(a.onPointerDown,()=>{s.current===null&&(s.current=window.setInterval(l,50))}),onPointerMove:N(a.onPointerMove,()=>{u.onItemLeave?.(),s.current===null&&(s.current=window.setInterval(l,50))}),onPointerLeave:N(a.onPointerLeave,()=>{i()})})}),qt="SelectSeparator",Qe=t.forwardRef((o,n)=>{const{__scopeSelect:e,...l}=o;return r.jsx(j.div,{"aria-hidden":!0,...l,ref:n})});Qe.displayName=qt;var Ce="SelectArrow",Xt=t.forwardRef((o,n)=>{const{__scopeSelect:e,...l}=o,a=ue(e),u=Y(Ce,e),s=q(Ce,e);return u.open&&s.position==="popper"?r.jsx(Et,{...a,...l,ref:n}):null});Xt.displayName=Ce;var Zt="SelectBubbleInput",et=t.forwardRef(({__scopeSelect:o,value:n,...e},l)=>{const a=t.useRef(null),u=L(l,a),s=vt(n);return t.useEffect(()=>{const c=a.current;if(!c)return;const i=window.HTMLSelectElement.prototype,v=Object.getOwnPropertyDescriptor(i,"value").set;if(s!==n&&v){const w=new Event("change",{bubbles:!0});v.call(c,n),c.dispatchEvent(w)}},[s,n]),r.jsx(j.select,{...e,style:{...xt,...e.style},ref:u,defaultValue:n})});et.displayName=Zt;function tt(o){return o===""||o===void 0}function ot(o){const n=yt(o),e=t.useRef(""),l=t.useRef(0),a=t.useCallback(s=>{const c=e.current+s;n(c),(function i(f){e.current=f,window.clearTimeout(l.current),f!==""&&(l.current=window.setTimeout(()=>i(""),1e3))})(c)},[n]),u=t.useCallback(()=>{e.current="",window.clearTimeout(l.current)},[]);return t.useEffect(()=>()=>window.clearTimeout(l.current),[]),[e,a,u]}function nt(o,n,e){const a=n.length>1&&Array.from(n).every(f=>f===n[0])?n[0]:n,u=e?o.indexOf(e):-1;let s=Jt(o,Math.max(u,0));a.length===1&&(s=s.filter(f=>f!==e));const i=s.find(f=>f.textValue.toLowerCase().startsWith(a.toLowerCase()));return i!==e?i:void 0}function Jt(o,n){return o.map((e,l)=>o[(n+l)%o.length])}var Qt=_e,rt=Me,eo=Oe,to=De,oo=Le,st=ke,no=Ue,at=Ke,lt=ze,ro=Ge,so=qe,ct=Xe,it=Ze,dt=Qe;const ho=Qt,go=eo,ao=t.forwardRef(({className:o,children:n,...e},l)=>r.jsxs(rt,{ref:l,className:G("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",o),...e,children:[n,r.jsx(to,{asChild:!0,children:r.jsx(Ee,{className:"h-4 w-4 opacity-50"})})]}));ao.displayName=rt.displayName;const ut=t.forwardRef(({className:o,...n},e)=>r.jsx(ct,{ref:e,className:G("flex cursor-default items-center justify-center py-1",o),...n,children:r.jsx(jt,{className:"h-4 w-4"})}));ut.displayName=ct.displayName;const pt=t.forwardRef(({className:o,...n},e)=>r.jsx(it,{ref:e,className:G("flex cursor-default items-center justify-center py-1",o),...n,children:r.jsx(Ee,{className:"h-4 w-4"})}));pt.displayName=it.displayName;const lo=t.forwardRef(({className:o,children:n,position:e="popper",...l},a)=>r.jsx(oo,{children:r.jsxs(st,{ref:a,className:G("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",o),position:e,...l,children:[r.jsx(ut,{}),r.jsx(no,{className:G("p-1",e==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:n}),r.jsx(pt,{})]})}));lo.displayName=st.displayName;const co=t.forwardRef(({className:o,...n},e)=>r.jsx(at,{ref:e,className:G("px-2 py-1.5 text-sm font-semibold",o),...n}));co.displayName=at.displayName;const io=t.forwardRef(({className:o,children:n,...e},l)=>r.jsxs(lt,{ref:l,className:G("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",o),...e,children:[r.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:r.jsx(so,{children:r.jsx(_t,{className:"h-4 w-4"})})}),r.jsx(ro,{children:n})]}));io.displayName=lt.displayName;const uo=t.forwardRef(({className:o,...n},e)=>r.jsx(dt,{ref:e,className:G("-mx-1 my-1 h-px bg-muted",o),...n}));uo.displayName=dt.displayName;export{ho as S,ao as a,go as b,lo as c,io as d};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const c=["draft","backlog","ready","queued","active","blocked","review","revision","done","canceled","duplicate"],t=["draft","backlog","ready","queued","active","blocked","review","revision"];function d(e){return{draft:"Draft",backlog:"Backlog",ready:"Ready",queued:"Queued",active:"Active",blocked:"Blocked",review:"Review",revision:"Revision",done:"Done",canceled:"Canceled",duplicate:"Duplicate"}[e]??e}function i(e){switch(e){case"ready":case"done":return"default";case"review":case"revision":case"active":case"queued":return"secondary";case"canceled":case"blocked":case"duplicate":return"destructive";default:return"outline"}}export{t as A,c as T,d as a,i as g};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as c,j as e,e as i}from"./index-
|
|
1
|
+
import{r as c,j as e,e as i}from"./index-CIFIEidO.js";const d=c.forwardRef(({className:s,onCheckedChange:r,onChange:t,...o},n)=>{const l=a=>{t?.(a),r?.(a.target.checked)};return e.jsxs("label",{className:i("relative inline-flex cursor-pointer",s),children:[e.jsx("input",{type:"checkbox",className:"sr-only peer",onChange:l,ref:n,...o}),e.jsx("div",{className:"block bg-gray-300 w-9 h-5 rounded-full transition-colors duration-200 ease-in-out peer-checked:bg-blue-600"}),e.jsx("div",{className:"absolute left-0 top-0 bg-white w-4 h-4 rounded-full mt-0.5 ml-0.5 transition-transform duration-200 ease-in-out transform peer-checked:translate-x-4 shadow"})]})});d.displayName="Switch";export{d as S};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as l,am as F,ag as k,j as c,ah as $,b5 as D,ak as g,bk as y,bl as V,bm as G,aj as p,bn as L,e as T}from"./index-
|
|
1
|
+
import{r as l,am as F,ag as k,j as c,ah as $,b5 as D,ak as g,bk as y,bl as V,bm as G,aj as p,bn as L,e as T}from"./index-CIFIEidO.js";var m="Tabs",[K,Q]=$(m,[y]),h=y(),[B,x]=K(m),N=l.forwardRef((e,a)=>{const{__scopeTabs:t,value:o,onValueChange:r,defaultValue:d,orientation:n="horizontal",dir:u,activationMode:f="automatic",...v}=e,i=F(u),[s,b]=k({prop:o,onChange:r,defaultProp:d??"",caller:m});return c.jsx(B,{scope:t,baseId:D(),value:s,onValueChange:b,orientation:n,dir:i,activationMode:f,children:c.jsx(g.div,{dir:i,"data-orientation":n,...v,ref:a})})});N.displayName=m;var C="TabsList",j=l.forwardRef((e,a)=>{const{__scopeTabs:t,loop:o=!0,...r}=e,d=x(C,t),n=h(t);return c.jsx(V,{asChild:!0,...n,orientation:d.orientation,dir:d.dir,loop:o,children:c.jsx(g.div,{role:"tablist","aria-orientation":d.orientation,...r,ref:a})})});j.displayName=C;var I="TabsTrigger",R=l.forwardRef((e,a)=>{const{__scopeTabs:t,value:o,disabled:r=!1,...d}=e,n=x(I,t),u=h(t),f=A(n.baseId,o),v=E(n.baseId,o),i=o===n.value;return c.jsx(G,{asChild:!0,...u,focusable:!r,active:i,children:c.jsx(g.button,{type:"button",role:"tab","aria-selected":i,"aria-controls":v,"data-state":i?"active":"inactive","data-disabled":r?"":void 0,disabled:r,id:f,...d,ref:a,onMouseDown:p(e.onMouseDown,s=>{!r&&s.button===0&&s.ctrlKey===!1?n.onValueChange(o):s.preventDefault()}),onKeyDown:p(e.onKeyDown,s=>{[" ","Enter"].includes(s.key)&&n.onValueChange(o)}),onFocus:p(e.onFocus,()=>{const s=n.activationMode!=="manual";!i&&!r&&s&&n.onValueChange(o)})})})});R.displayName=I;var w="TabsContent",_=l.forwardRef((e,a)=>{const{__scopeTabs:t,value:o,forceMount:r,children:d,...n}=e,u=x(w,t),f=A(u.baseId,o),v=E(u.baseId,o),i=o===u.value,s=l.useRef(i);return l.useEffect(()=>{const b=requestAnimationFrame(()=>s.current=!1);return()=>cancelAnimationFrame(b)},[]),c.jsx(L,{present:r||i,children:({present:b})=>c.jsx(g.div,{"data-state":i?"active":"inactive","data-orientation":u.orientation,role:"tabpanel","aria-labelledby":f,hidden:!b,id:v,tabIndex:0,...n,ref:a,style:{...e.style,animationDuration:s.current?"0s":void 0},children:b&&d})})});_.displayName=w;function A(e,a){return`${e}-trigger-${a}`}function E(e,a){return`${e}-content-${a}`}var q=N,S=j,M=R,P=_;const U=q,z=l.forwardRef(({className:e,...a},t)=>c.jsx(S,{ref:t,className:T("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",e),...a}));z.displayName=S.displayName;const H=l.forwardRef(({className:e,...a},t)=>c.jsx(M,{ref:t,className:T("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",e),...a}));H.displayName=M.displayName;const O=l.forwardRef(({className:e,...a},t)=>c.jsx(P,{ref:t,className:T("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",e),...a}));O.displayName=P.displayName;export{U as T,z as a,H as b,O as c};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as t,a8 as j,j as u}from"./index-
|
|
1
|
+
import{r as t,a8 as j,j as u}from"./index-CIFIEidO.js";import{x as k,a as B}from"./xterm-DTxiCjtJ.js";function A({sessionId:l,className:p,heightPx:d=160,maxScrollback:m=200}){const h=t.useRef(null),v=t.useRef(null),w=t.useRef(null),y=t.useRef(null),[x,R]=t.useState(!0),o=t.useRef([]),i=t.useRef(null);return t.useEffect(()=>{const a=h.current;if(!a||!l)return;const e=new k.Terminal({disableStdin:!0,cursorBlink:!1,convertEol:!0,scrollback:Math.max(50,Math.min(m,1e3)),fontSize:12,fontFamily:"'IBM Plex Mono', 'Source Code Pro', 'Fira Code', ui-monospace, Menlo, Monaco, monospace",lineHeight:1.25,letterSpacing:.3,theme:{background:"#1a1b26",foreground:"#c0caf5",cursor:"#c0caf5",selectionBackground:"#33467c",black:"#15161e",red:"#f7768e",green:"#9ece6a",yellow:"#e0af68",blue:"#7aa2f7",magenta:"#bb9af7",cyan:"#7dcfff",white:"#a9b1d6",brightBlack:"#414868",brightRed:"#f7768e",brightGreen:"#9ece6a",brightYellow:"#e0af68",brightBlue:"#7aa2f7",brightMagenta:"#bb9af7",brightCyan:"#7dcfff",brightWhite:"#c0caf5"}}),f=new B.FitAddon;e.loadAddon(f),e.open(a),a.style.height=`${d}px`,v.current=e,w.current=f;const s=()=>{try{const n=a.getBoundingClientRect();n.width>8&&n.height>8&&e.element&&f.fit()}catch{}},S=setTimeout(()=>s(),100),g=new ResizeObserver(()=>s());g.observe(a);const b=()=>{document.visibilityState==="visible"&&setTimeout(s,50)};document.addEventListener("visibilitychange",b);const c=new WebSocket(`${j}/ws/terminal-preview/${l}`);y.current=c,c.onopen=()=>R(!1);const E=()=>{i.current=null;const n=o.current;if(n.length){o.current=[];try{e.write(n.join(""))}catch{}}},F=()=>{i.current===null&&(i.current=requestAnimationFrame(E))};return c.onmessage=n=>{let r;try{r=JSON.parse(n.data)}catch{return}if(r?.type==="snapshot"){if(e.reset(),o.current=[],r.data)try{e.write(r.data)}catch{}s()}else r?.type==="data"&&r.data&&(o.current.push(String(r.data)),F())},c.onclose=()=>{},c.onerror=()=>{},()=>{clearTimeout(S),g.disconnect(),document.removeEventListener("visibilitychange",b);try{c.close()}catch{}i.current!==null&&cancelAnimationFrame(i.current),i.current=null,o.current=[],e.dispose()}},[l,d,m]),u.jsxs("div",{className:`relative w-full ${p||""}`.trim(),children:[x&&u.jsx("div",{className:"absolute inset-0 flex items-center justify-center bg-gray-50/60 z-10",children:u.jsx("div",{className:"text-xs text-muted-foreground",children:"Loading preview…"})}),u.jsx("div",{ref:h,className:"border border-muted rounded overflow-hidden"})]})}export{A as T};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as i,ad as v,A as f}from"./index-
|
|
1
|
+
import{r as i,ad as v,A as f}from"./index-CIFIEidO.js";function j(){const[y,p]=i.useState([]),[m,c]=i.useState(!1),[d,o]=i.useState(null),{refresh:w}=v(),S=i.useCallback(async(s,n)=>{try{c(!0),o(null);const e=await fetch(`${f}/api/v1/terminal/${s}/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({startupCommand:n})});if(!e.ok){const t=await e.json();throw new Error(t.error||"Failed to create terminal session")}const r=await e.json();return await w(),r.sessionId}catch(e){const r=e instanceof Error?e.message:"Unknown error";return o(r),null}finally{c(!1)}},[w]),g=i.useCallback(async s=>{try{c(!0),o(null);let n;if(s.startsWith("session-")){const r=s.split("-");n=`${r[0]}-${r[1]}`}else{const r=s.split("-");n=`${r[0]}-${r[1]}`}const e=await fetch(`${f}/api/v1/terminal/${n}/destroy`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:s})});if(!e.ok){const r=await e.json();throw new Error(r.error||"Failed to destroy terminal session")}return p(r=>r.filter(t=>t.id!==s)),await w(),!0}catch(n){const e=n instanceof Error?n.message:"Unknown error";return o(e),!1}finally{c(!1)}},[w]),$=i.useCallback(async(s,n,e)=>{try{o(null);let r;if(s.startsWith("session-")){const a=s.split("-");r=`${a[0]}-${a[1]}`}else{const a=s.split("-");r=`${a[0]}-${a[1]}`}const t=await fetch(`${f}/api/v1/terminal/${r}/resize`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:s,cols:n,rows:e})});if(!t.ok){const a=await t.json();throw new Error(a.error||"Failed to resize terminal session")}return!0}catch(r){const t=r instanceof Error?r.message:"Unknown error";return o(t),!1}},[]),k=i.useCallback(async(s,n,e)=>{try{c(!0),o(null);const r=new URLSearchParams;s&&r.set("taskId",s),n&&(r.set("withPreview","true"),e&&Number.isFinite(e)&&r.set("lines",String(e)));const t=`${f}/api/v1/terminal/sessions${r.toString()?`?${r.toString()}`:""}`,a=await fetch(t);if(!a.ok){const l=await a.json();throw new Error(l.error||"Failed to fetch terminal sessions")}const u=await a.json();p(u.sessions)}catch(r){const t=r instanceof Error?r.message:"Unknown error";o(t)}finally{c(!1)}},[]),E=i.useCallback(async(s,n=8)=>{try{o(null);const e=new URLSearchParams;e.set("sessionId",s),e.set("withPreview","true"),e.set("lines",String(n)),e.set("colorize","true");const r=`${f}/api/v1/terminal/sessions?${e.toString()}`,t=await fetch(r);if(!t.ok){const l=await t.json().catch(()=>({}));throw new Error(l.error||"Failed to fetch preview")}const a=await t.json(),u=Array.isArray(a?.sessions)&&a.sessions[0]?.preview?a.sessions[0].preview:[];return p(l=>l.map(h=>h.id===s?{...h,preview:u}:h)),u}catch(e){const r=e instanceof Error?e.message:"Unknown error";return o(r),[]}},[]);return{sessions:y,loading:m,error:d,createSession:S,destroySession:g,resizeSession:$,refreshSessions:k,fetchPreview:E}}export{j as u};
|
package/static/index.html
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
9
9
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap" rel="stylesheet">
|
|
10
10
|
<title>Coconut - Agentic Development Environment</title>
|
|
11
|
-
<script type="module" crossorigin src="/assets/index-
|
|
11
|
+
<script type="module" crossorigin src="/assets/index-CIFIEidO.js"></script>
|
|
12
12
|
<link rel="stylesheet" crossorigin href="/assets/index-CHdBxVyk.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body class="font-inter">
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{c as u,j as e,e as p,B as c,E as x,I as j,P as v}from"./index-DFcWlnzl.js";import{L as r}from"./label-DBuh-ke5.js";import{S as y,a as S,b as f,c as g,d as b}from"./select-44mcS2_G.js";/**
|
|
2
|
-
* @license lucide-react v0.542.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const k=[["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}],["path",{d:"M13 6h8",key:"15sg57"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 18h8",key:"oe0vm4"}]],E=u("list-checks",k),I=[{value:"pending",label:"Pending"},{value:"in-progress",label:"In Progress"},{value:"completed",label:"Completed"},{value:"failed",label:"Blocked / Failed"}],N=()=>typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():`step-${Date.now()}-${Math.floor(Math.random()*1e3)}`;function L({steps:l,onChange:i,disabled:n,className:o}){const d=(a,t)=>{i(l.map(s=>s.id===a?{...s,...t}:s))},h=a=>{i(l.filter(t=>t.id!==a))},m=()=>{i([...l,{id:N(),description:"",status:"pending"}])};return e.jsxs("div",{className:p("space-y-4",o),children:[l.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"Break the work down into actionable steps."}),l.map((a,t)=>e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("p",{className:"text-sm font-semibold",children:["Step ",t+1]}),e.jsx(c,{type:"button",variant:"ghost",size:"icon",onClick:()=>h(a.id),disabled:n,"aria-label":`Remove step ${t+1}`,children:e.jsx(x,{className:"h-4 w-4"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(r,{htmlFor:`${a.id}-description`,children:"Description"}),e.jsx(j,{id:`${a.id}-description`,value:a.description,onChange:s=>d(a.id,{description:s.target.value}),placeholder:"What needs to be done?",disabled:n})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(r,{htmlFor:`${a.id}-status`,children:"Status"}),e.jsxs(y,{value:a.status,onValueChange:s=>d(a.id,{status:s}),disabled:n,children:[e.jsx(S,{id:`${a.id}-status`,children:e.jsx(f,{placeholder:"Select status"})}),e.jsx(g,{children:I.map(s=>e.jsx(b,{value:s.value,children:s.label},s.value))})]})]})]},a.id)),e.jsxs(c,{type:"button",variant:"outline",onClick:m,disabled:n,children:[e.jsx(v,{className:"mr-2 h-4 w-4"}),"Add Step"]})]})}export{L as I,E as L};
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import{u as X,q as Z,a as ee,s as te,r as n,A,j as e,B as j,L as E,I as y,a0 as se,y as ae,H as ie,J as ne,N as re,O as oe,Q as le,R as ce,U as de}from"./index-DFcWlnzl.js";import{C as he,b as ue,c as me,a as pe}from"./card-BcPlIAH5.js";import{L as h}from"./label-DBuh-ke5.js";import{M as ge}from"./markdown-editor-B4YNQFT2.js";import{S as F,a as L,b as P,c as I,d as r}from"./select-44mcS2_G.js";import{C as xe}from"./CollapsibleSection-M5cXbl92.js";import{I as fe,L as je}from"./ImplementationStepsEditor-HliLQav5.js";import{T as ye}from"./TagInput-C6lI-ePr.js";import{A as ve}from"./arrow-left-1S-835kP.js";import"./chevron-up-CqM3won3.js";import"./badge-BUEY53dV.js";const R={feature:{name:"New Feature",content:`## Problem Statement
|
|
2
|
-
Describe the problem this new feature addresses.
|
|
3
|
-
|
|
4
|
-
## Proposed Solution
|
|
5
|
-
Describe the solution you're proposing.
|
|
6
|
-
|
|
7
|
-
### Key Features
|
|
8
|
-
- Feature 1
|
|
9
|
-
- Feature 2
|
|
10
|
-
- Feature 3
|
|
11
|
-
|
|
12
|
-
## Implementation Details
|
|
13
|
-
Describe the technical implementation approach.
|
|
14
|
-
|
|
15
|
-
## Testing Strategy
|
|
16
|
-
- [ ] Unit tests
|
|
17
|
-
- [ ] Integration tests
|
|
18
|
-
- [ ] Manual testing
|
|
19
|
-
|
|
20
|
-
## Rollout Plan
|
|
21
|
-
1. Development and testing
|
|
22
|
-
2. Staging deployment
|
|
23
|
-
3. Production rollout
|
|
24
|
-
|
|
25
|
-
## Success Metrics
|
|
26
|
-
Define how you'll measure the success of this change.`},"quick-change":{name:"Quick Change",content:`## Overview
|
|
27
|
-
Describe the quick change you're proposing.`},"bug-fix":{name:"Bug Fix",content:`## Bug Description
|
|
28
|
-
Describe the bug that needs to be fixed.
|
|
29
|
-
|
|
30
|
-
## Steps to Reproduce
|
|
31
|
-
1. Step 1
|
|
32
|
-
2. Step 2
|
|
33
|
-
3. Step 3
|
|
34
|
-
|
|
35
|
-
## Expected Behavior
|
|
36
|
-
Describe what should happen.
|
|
37
|
-
|
|
38
|
-
## Actual Behavior
|
|
39
|
-
Describe what currently happens.
|
|
40
|
-
|
|
41
|
-
## Root Cause Analysis
|
|
42
|
-
Explain the underlying cause of the bug.
|
|
43
|
-
|
|
44
|
-
## Proposed Fix
|
|
45
|
-
Describe the solution to fix the bug.
|
|
46
|
-
|
|
47
|
-
## Testing Plan
|
|
48
|
-
- [ ] Verify fix resolves the original issue
|
|
49
|
-
- [ ] Test edge cases
|
|
50
|
-
- [ ] Regression testing
|
|
51
|
-
|
|
52
|
-
## Risk Assessment
|
|
53
|
-
- Impact: Low/Medium/High
|
|
54
|
-
- Complexity: Low/Medium/High
|
|
55
|
-
- Risk of introducing new bugs: Low/Medium/High`},refactor:{name:"Refactor",content:`## Current State
|
|
56
|
-
Describe what needs to be refactored and why.
|
|
57
|
-
|
|
58
|
-
## Refactoring Goals
|
|
59
|
-
- Improve code readability
|
|
60
|
-
- Reduce complexity
|
|
61
|
-
- Enhance maintainability
|
|
62
|
-
|
|
63
|
-
## Proposed Changes
|
|
64
|
-
Describe the refactoring approach.
|
|
65
|
-
|
|
66
|
-
## Risk Assessment
|
|
67
|
-
- Breaking changes: None/Low/Medium/High
|
|
68
|
-
- Testing strategy for regression prevention`},documentation:{name:"Documentation",content:`## Documentation Gap
|
|
69
|
-
What documentation is missing or outdated?
|
|
70
|
-
|
|
71
|
-
## Proposed Updates
|
|
72
|
-
- [ ] API documentation
|
|
73
|
-
- [ ] User guides
|
|
74
|
-
- [ ] Code comments
|
|
75
|
-
- [ ] README updates
|
|
76
|
-
|
|
77
|
-
## Target Audience
|
|
78
|
-
Who will benefit from these documentation changes?`},"security-fix":{name:"Security Fix",content:`## Security Issue
|
|
79
|
-
Brief description (avoid sensitive details).
|
|
80
|
-
|
|
81
|
-
## Impact Assessment
|
|
82
|
-
- Severity: Low/Medium/High/Critical
|
|
83
|
-
- Affected components
|
|
84
|
-
- User impact
|
|
85
|
-
|
|
86
|
-
## Proposed Fix
|
|
87
|
-
High-level approach to resolution.
|
|
88
|
-
|
|
89
|
-
## Verification Plan
|
|
90
|
-
How to confirm the fix works without exposing the vulnerability.`}},M="feature";function Pe(){const B=X(),H=Z(),{toast:v}=ee(),{user:u,authEnabled:S}=te(),[c,w]=n.useState(!1),[U,q]=n.useState(M),[O,p]=n.useState(!1),[C,g]=n.useState(null),b=H.state,N=b?.description||R[M].content,$=b?.title||"",[a,l]=n.useState({title:$,description:N,priority:"medium",author:{id:"current-user",name:"",email:""}}),[m,V]=n.useState([]),[D,z]=n.useState([]),[K,_]=n.useState(N),x=n.useCallback(t=>{if((t.metaKey||t.ctrlKey)&&t.key==="Enter"&&(t.preventDefault(),!c&&a.title)){const s=document.querySelector("form");s&&s.requestSubmit()}},[c,a.title]),Q=a.description!==K,W=t=>{Q?(g(t),p(!0)):k(t)},k=t=>{const s=R[t];q(t),l(i=>({...i,description:s.content})),_(s.content)},G=()=>{C&&(k(C),g(null)),p(!1)},J=()=>{g(null),p(!1)};n.useEffect(()=>(document.addEventListener("keydown",x),()=>{document.removeEventListener("keydown",x)}),[x]);const T=n.useCallback(async()=>{try{const s=await(await fetch(`${A}/api/v1/user/settings`)).json();if(s.success&&s.data){const{profile:i}=s.data;l(d=>({...d,author:{...d.author,name:i?.firstName&&i?.lastName?`${i.firstName} ${i.lastName}`.trim():i?.firstName||i?.lastName||d.author.name,email:i?.email||d.author.email}}))}}catch(t){console.error("Failed to load user settings:",t)}},[]);n.useEffect(()=>{S?u&&l(t=>({...t,author:{...t.author,id:u.id||t.author.id,name:u.name||t.author.name,email:u.email||t.author.email}})):T()},[S,u,T]);const Y=async t=>{t.preventDefault(),w(!0);try{const s=m.map(o=>({id:o.id,description:o.description.trim(),status:o.status})).filter(o=>o.description.length>0),i=D.map(o=>o.trim()).filter(o=>o.length>0),d={title:a.title,author:{...a.author,type:"human"},planSteps:s,metadata:{priority:a.priority,tags:i},content:a.description},f=await(await fetch(`${A}/api/v1/tasks`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(d)})).json();if(f.success)v({title:"Success",description:"Task created successfully."}),B(`/tasks/${f.data.id}`);else throw new Error(f.error?.message||"Failed to create task")}catch(s){const i=s instanceof Error?s.message:"Unknown error occurred";v({title:"Error",description:`Error creating task: ${i}`,variant:"destructive"})}finally{w(!1)}};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold tracking-tight",children:"New Task"}),e.jsx("p",{className:"text-muted-foreground",children:"Create a new task"})]}),e.jsx("div",{className:"flex items-center gap-2",children:e.jsx(j,{variant:"ghost",size:"sm",asChild:!0,children:e.jsx(E,{to:"/tasks",className:"flex items-center gap-1 text-muted-foreground hover:text-foreground transition-colors",children:e.jsx(ve,{className:"h-4 w-4"})})})})]}),e.jsx("form",{onSubmit:Y,children:e.jsxs(he,{children:[e.jsx(ue,{children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(me,{children:"Task Details"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(h,{htmlFor:"template-select",className:"text-sm text-muted-foreground",children:"Template:"}),e.jsxs(F,{value:U,onValueChange:W,children:[e.jsx(L,{className:"w-36",children:e.jsx(P,{})}),e.jsxs(I,{children:[e.jsx(r,{value:"feature",children:"New Feature"}),e.jsx(r,{value:"quick-change",children:"Quick Change"}),e.jsx(r,{value:"bug-fix",children:"Bug Fix"}),e.jsx(r,{value:"refactor",children:"Refactor"}),e.jsx(r,{value:"documentation",children:"Documentation"}),e.jsx(r,{value:"security-fix",children:"Security Fix"})]})]})]})]})}),e.jsxs(pe,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(h,{htmlFor:"title",children:"Title *"}),e.jsx(y,{id:"title",placeholder:"Brief overview of the task",value:a.title,onChange:t=>l(s=>({...s,title:t.target.value})),required:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(h,{htmlFor:"description",children:"Description"}),e.jsx(ge,{value:a.description,onChange:t=>l(s=>({...s,description:t||""})),placeholder:"Write your task description in markdown...",height:300})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(h,{htmlFor:"author-name",children:"Author Name"}),e.jsx(y,{id:"author-name",value:a.author.name,onChange:t=>l(s=>({...s,author:{...s.author,name:t.target.value}})),required:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(h,{htmlFor:"author-email",children:"Author Email"}),e.jsx(y,{id:"author-email",type:"email",value:a.author.email,onChange:t=>l(s=>({...s,author:{...s.author,email:t.target.value}}))})]})]}),e.jsx(xe,{icon:e.jsx(je,{className:"h-4 w-4"}),title:"Optional Implementation Detail",children:e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(h,{htmlFor:"priority",children:"Priority"}),e.jsxs(F,{value:a.priority,onValueChange:t=>l(s=>({...s,priority:t})),children:[e.jsx(L,{children:e.jsx(P,{placeholder:"Select priority"})}),e.jsxs(I,{children:[e.jsx(r,{value:"low",children:"Low"}),e.jsx(r,{value:"medium",children:"Medium"}),e.jsx(r,{value:"high",children:"High"}),e.jsx(r,{value:"critical",children:"Critical"})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-baseline justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"Implementation Steps"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Break the change into actionable steps."})]}),m.length>0&&e.jsxs("span",{className:"text-xs text-muted-foreground",children:[m.length," step",m.length===1?"":"s"]})]}),e.jsx(fe,{steps:m,onChange:V,disabled:c})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium",children:"Tags"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Use tags to categorize this task by area, team, or priority."}),e.jsx(ye,{tags:D,onChange:z,disabled:c,placeholder:"Add a tag (e.g. frontend, infra)"})]})]})}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(j,{type:"button",variant:"outline",asChild:!0,children:e.jsx(E,{to:"/tasks",children:"Cancel"})}),e.jsx(j,{type:"submit",disabled:c||!a.title,className:"relative",children:c?e.jsx(e.Fragment,{children:"Creating..."}):e.jsxs(e.Fragment,{children:[e.jsx(se,{className:"mr-2 h-4 w-4"}),"Create Task",e.jsx("span",{className:"ml-2 text-xs opacity-60 font-mono",children:"⌘↵"})]})})]})]})]})}),e.jsx(ae,{open:O,onOpenChange:p,children:e.jsxs(ie,{children:[e.jsxs(ne,{children:[e.jsx(re,{children:"Switch Template?"}),e.jsx(oe,{children:"You have unsaved changes to your task description. Switching templates will replace your current content with the new template. This action cannot be undone."})]}),e.jsxs(le,{children:[e.jsx(ce,{onClick:J,children:"Cancel"}),e.jsx(de,{onClick:G,children:"Switch Template"})]})]})})]})}export{Pe as NewTaskPage};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
function p(e){return e.replace(/`/g,"'").replace(/[\u2018\u2019]/g,"'").replace(/[\u201C\u201D]/g,'"')}const k="Use .nut/context/project.md and .nut/context/architecture.md for reference.";function d(e,s,t,o=!0){const n=[];return o&&(n.push(["## Task","","- Review and begin working on the following task:",` .nut/tasks/${e}.md`,"- Retrieve your firstName, lastName, and email address from: .nut/config.json and use this identity to address yourself in any task updates, comments, git commits, etc."].join(`
|
|
2
|
-
`)),n.push(["## Task Lifecycle","",`- Before beginning any work: nut task update ${e} --status active`,`- Add appropriate steps with: nut task step ${e} "Step description" --author "firstName lastName"`,"",`- If you need human clarification or input: nut task update ${e} --status blocked. The clarification can be communicated as follows: nut task comment ${e} "Comments here" --author "firstName lastName". At this point please stop work.`,"",`- When implementation is complete and ready for approval: nut task update ${e} --status review`,`- Only mark the task complete once approval criteria are satisfied: nut task update ${e} --status done`].join(`
|
|
3
|
-
`)),n.push(["## Abilities","","- The following abilities are at your disposal and should be factored into the plan where appropriate (each command has its own --help):"," - Work with knowledge documents (used for the output of any research-centric tasks):",' - nut knowledge create "Quick Note" --content "# Quick Note\\n\\nSome content here"'," - nut knowledge list"," - nut knowledge get example-filename.md",' - nut knowledge update example-filename.md --content "# Quick Note\\n\\nSome content here"'," - Creating media such as images, audio, or video or adding existing files to the resource library:"," - nut resource ls"," - nut resource add ./screenshot.png",' - nut resource image "A serene morning in Tokyo" --save',' - nut resource audio "Welcome to the future" --save'," - Using available skills (specialized, reusable, and portable modules). There is also an official registry you can pull from:"," - nut skill list"," - nut skill registry list","- Similarly, the following are available: git, gh, node, python"].join(`
|
|
4
|
-
`)),n.push(["## Operational Rules","","- DO use the nut CLI to update task status as progress changes"," (nut --help or nut task --help for details)","- DO NOT edit files outside the scope of the approved task (unless instructed by the Additional Instructions below)"].join(`
|
|
5
|
-
`))),s.length>0&&n.push(["## Skills","",`Prioritize using these skills:
|
|
6
|
-
`,...s.map(i=>`- ${i}`)].join(`
|
|
7
|
-
`)),t&&t.trim()&&n.push(["## Added Instruction","",t.trim()].join(`
|
|
8
|
-
`)),[n.join(`
|
|
9
|
-
|
|
10
|
-
`)]}function m(e,s,t){const o=[];return o.push(["## Your Task","",`- Review the following task (including all the existing comments and implementation steps) to ensure you have enough information and resources (skills, tools, access, etc) to successfully complete it: .nut/tasks/${e}.md`,"- Note: DO NOT start any work at this stage, this is only a preparatory assessment phase.","- Retrieve your firstName, lastName, and email address from: .nut/config.json and use this identity to address yourself in any task updates, comments, etc.",`- Add a readiness score between 0 and 100 where 100 is total confidence that you could complete the task without any mistakes or further user input: nut task update ${e} --readiness <score>`,`- Add a comment that communicates your readiness and any other relevant information: nut task comment ${e} "Comment here" --author "firstName lastName".`,`- If your readiness score is high enough, add appropriate implementation steps with: nut task step ${e} "Step description"`,"- Of particular importance is whether it would make sense to decompose this into separate tasks, although DO NOT do this without user confirmation first.",`- Finally, update the task status to either 'ready' or 'blocked' based on your assessment: nut task update ${e} --status [ready|blocked]`].join(`
|
|
11
|
-
`)),o.push(["## Abilities","","- The following abilities are at your disposal and should be factored into the plan where appropriate (note that each command has its own --help for more details):"," - Work with knowledge documents (used for the output of any research-centric tasks):",' - nut knowledge create "Quick Note" --content "# Quick Note\\n\\nSome content here"'," - nut knowledge list"," - nut knowledge get example-filename.md"," - Creating media such as images, audio, or video:"," - nut resource"," - Using available skills (specialized, reusable, and portable modules). There is also an official registry you can pull from:"," - nut skill list"," - nut skill registry list","- Similarly, the following are available: git, gh, node, python"].join(`
|
|
12
|
-
`)),o.push(["## Operational Rules","","- DO NOT use 'npx' when running the nut CLI","- DO use the nut CLI to update task status as progress changes"," (nut --help or nut task --help for details)","- DO NOT edit files outside the scope of the approved task (unless instructed by the Additional Instructions below)"].join(`
|
|
13
|
-
`)),s.length>0&&o.push(["## Skills","","These skills are available to you if needed (if you are able to test access, etc without any writes please do so):",...s.map(n=>`- ${n}`)].join(`
|
|
14
|
-
`)),t&&t.trim()&&o.push(["## Added Instruction","",t.trim()].join(`
|
|
15
|
-
`)),[o.join(`
|
|
16
|
-
|
|
17
|
-
`)]}function h(e,s){const t=[];return t.push(k),e.length>0&&t.push(`Please use these skills: ${e.join(", ")}`),s&&s.trim()&&t.push(`Additional instruction: ${s.trim()}`),t}const f=e=>{const s=e.selectedSkillIds.map(l=>`.nut/skills/${l}/SKILL.md`),t=e.customInstruction?p(e.customInstruction):e.customInstruction,n=(e.contextType==="change-task"?d(e.taskId,s,t,e.includeDefaultInstructions??!0):e.contextType==="prepare-task"?m(e.taskId,s,t):h(s,t)).join(" "),i=[e.automationEnabled?"--dangerously-skip-permissions":""].filter(Boolean).join(" "),a=e.selectedMcpServers.map(l=>`'${l.replace(/'/g,"'\\''")}'`).join(","),u=[JSON.stringify(n)].concat(i?[JSON.stringify("--dangerously-skip-permissions")]:[]);return`node -e "${`const fs=require('fs'),{spawn}=require('child_process');const s=new Set([${a}]);const c=require('./.nut/mcp/config.json');const filtered=Object.entries(c.mcpServers||{}).filter(([k])=>s.has(k)).map(([k,v])=>[k,{...v,type:v.type||(v.url?'http':'stdio')}]);const o={mcpServers:Object.fromEntries(filtered)};fs.writeFileSync('.mcp.json',JSON.stringify(o,null,2));const p=spawn('claude',[${u.join(",")}],{stdio:'inherit'});p.on('exit',code=>process.exit(code));`.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`},y=e=>{const s=e.selectedSkillIds.map(c=>`.nut/skills/${c}/SKILL.md`),t=e.customInstruction?p(e.customInstruction):e.customInstruction,n=(e.contextType==="change-task"?d(e.taskId,s,t,e.includeDefaultInstructions??!0):e.contextType==="prepare-task"?m(e.taskId,s,t):h(s,t)).join(" ");return`node -e "${`const fs=require('fs'),path=require('path'),{spawn}=require('child_process');const s=new Set([${e.selectedMcpServers.map(c=>`'${c.replace(/'/g,"'\\''")}'`).join(",")}]);const c=require('./.nut/mcp/config.json');const geminiPath=path.join(require('os').homedir(),'.gemini','settings.json');let settings={};try{settings=JSON.parse(fs.readFileSync(geminiPath,'utf8'))}catch(e){}settings.mcpServers=Object.fromEntries(Object.entries(c.mcpServers||{}).filter(([k])=>s.has(k)));fs.writeFileSync(geminiPath,JSON.stringify(settings,null,2));const p=spawn('gemini',['-i',${JSON.stringify(n)}],{stdio:'inherit'});p.on('exit',code=>process.exit(code));`.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`},g=e=>{const s=e.selectedSkillIds.map(r=>`.nut/skills/${r}/SKILL.md`),t=e.customInstruction?p(e.customInstruction):e.customInstruction,n=(e.contextType==="change-task"?d(e.taskId,s,t,e.includeDefaultInstructions??!0):e.contextType==="prepare-task"?m(e.taskId,s,t):h(s,t)).join(" "),i=e.selectedMcpServers.map(r=>`'${r.replace(/'/g,"'\\''")}'`).join(","),a=[JSON.stringify(n)].concat(e.automationEnabled?[JSON.stringify("--dangerously-bypass-approvals-and-sandbox")]:[]);return`node -e "${`const fs=require('fs'),{spawn}=require('child_process');const s=new Set([${i}]);const c=require('./.nut/mcp/config.json');const filtered=Object.entries(c.mcpServers||{}).filter(([k])=>s.has(k)).map(([k,v])=>[k,{...v,type:v.type||(v.url?'http':'stdio')}]);const o={mcpServers:Object.fromEntries(filtered)};fs.writeFileSync('.mcp.json',JSON.stringify(o,null,2));const p=spawn('codex',[${a.join(",")}],{stdio:'inherit'});p.on('exit',code=>process.exit(code));`.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`},w=e=>{const s=e.selectedSkillIds.map(r=>`.nut/skills/${r}/SKILL.md`),t=e.customInstruction?p(e.customInstruction):e.customInstruction,n=(e.contextType==="change-task"?d(e.taskId,s,t,e.includeDefaultInstructions??!0):e.contextType==="prepare-task"?m(e.taskId,s,t):h(s,t)).join(" "),i=e.selectedMcpServers.map(r=>`'${r.replace(/'/g,"'\\''")}'`).join(","),a=[JSON.stringify(n)];return`node -e "${`const fs=require('fs'),{spawn}=require('child_process');const s=new Set([${i}]);const c=require('./.nut/mcp/config.json');const filtered=Object.entries(c.mcpServers||{}).filter(([k])=>s.has(k)).map(([k,v])=>[k,{...v,type:v.type||(v.url?'http':'stdio')}]);const o={mcpServers:Object.fromEntries(filtered)};fs.writeFileSync('.mcp.json',JSON.stringify(o,null,2));const p=spawn('droid',[${a.join(",")}],{stdio:'inherit'});p.on('exit',code=>process.exit(code));`.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`},S=e=>{const s=e.selectedSkillIds.map(l=>`.nut/skills/${l}/SKILL.md`),t=e.customInstruction?p(e.customInstruction):e.customInstruction,n=(e.contextType==="change-task"?d(e.taskId,s,t,e.includeDefaultInstructions??!0):e.contextType==="prepare-task"?m(e.taskId,s,t):h(s,t)).join(" "),i=e.selectedMcpServers.map(l=>`'${l.replace(/'/g,"'\\''")}'`).join(","),u=["'chat'",...e.automationEnabled?["'--no-interactive'","'--trust-all-tools'"]:[],JSON.stringify(n)];return`node -e "${`const fs=require('fs'),{spawn}=require('child_process');const s=new Set([${i}]);const c=require('./.nut/mcp/config.json');const filtered=Object.entries(c.mcpServers||{}).filter(([k])=>s.has(k)).map(([k,v])=>[k,{...v,type:v.type||(v.url?'http':'stdio')}]);const o={mcpServers:Object.fromEntries(filtered)};fs.writeFileSync('.mcp.json',JSON.stringify(o,null,2));const p=spawn('kiro-cli',[${u.join(",")}],{stdio:'inherit'});p.on('exit',code=>process.exit(code));`.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`};export{S as a,f as b,w as c,g as d,y as e};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const c=["draft","backlog","ready","queued","active","blocked","review","done","canceled","duplicate"],t=["draft","backlog","ready","queued","active","blocked","review"];function d(e){return{draft:"Draft",backlog:"Backlog",ready:"Ready",queued:"Queued",active:"Active",blocked:"Blocked",review:"Review",done:"Done",canceled:"Canceled",duplicate:"Duplicate"}[e]??e}function r(e){switch(e){case"ready":case"done":return"default";case"review":case"active":case"queued":return"secondary";case"canceled":case"blocked":case"duplicate":return"destructive";default:return"outline"}}export{t as A,c as T,d as a,r as g};
|