@blinkk/root-cms 3.0.4 → 3.0.6

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.
Files changed (106) hide show
  1. package/dist/app.js +4 -2
  2. package/dist/{chunk-RLZFZT42.js → chunk-7L5OI5ES.js} +9 -9
  3. package/dist/core/plugin.d.ts +17 -0
  4. package/dist/core/schema.d.ts +20 -0
  5. package/dist/plugin.js +12 -1
  6. package/dist/shared/auto-slug-words.d.ts +7 -0
  7. package/dist/shared/auto-slug.d.ts +14 -0
  8. package/dist/ui/AIPage-JPZ4QUB4.js +1 -0
  9. package/dist/ui/{AssetsPage-4JNAOFYF.js → AssetsPage-GDJMKS3M.js} +1 -1
  10. package/dist/ui/{CollectionPage-JWHH5G55.js → CollectionPage-5DVXJEET.js} +1 -1
  11. package/dist/ui/ComparePage-LIXA6G66.js +1 -0
  12. package/dist/ui/{DataPage-VRCQSZZG.js → DataPage-AP4Z5JPS.js} +1 -1
  13. package/dist/ui/{DataSourcePage-WMSPBZ3W.js → DataSourcePage-WO3ZKMFI.js} +1 -1
  14. package/dist/ui/DocTranslationsPage-QKYFIVHP.js +1 -0
  15. package/dist/ui/DocumentPage-ON43I5KM.js +1 -0
  16. package/dist/ui/{EditDataSourcePage-LLCX6K4J.js → EditDataSourcePage-XVMEV2LJ.js} +1 -1
  17. package/dist/ui/{EditReleasePage-WQYXXMZQ.js → EditReleasePage-A2NB5TFG.js} +1 -1
  18. package/dist/ui/{ImageEditorDialog-4H665KK2.js → ImageEditorDialog-QEULJAT2.js} +2 -2
  19. package/dist/ui/LogsPage-4LZJX3O4.js +1 -0
  20. package/dist/ui/{NewDataSourcePage-RDYJC4DH.js → NewDataSourcePage-4YWX7IOG.js} +1 -1
  21. package/dist/ui/NewReleasePage-HWLVTEXX.js +1 -0
  22. package/dist/ui/{NotFoundPage-WDZ2K7EF.js → NotFoundPage-72AXQAYX.js} +1 -1
  23. package/dist/ui/{ProjectPage-HYJOQUWR.js → ProjectPage-L4GYDIA5.js} +1 -1
  24. package/dist/ui/ReleasePage-43BSWL5B.js +1 -0
  25. package/dist/ui/{ReleasesPage-NZIBBXU4.js → ReleasesPage-CJXAZBP6.js} +1 -1
  26. package/dist/ui/SettingsPage-SYXAMKSF.js +1 -0
  27. package/dist/ui/{SidebarToolsPage-5C6YBWJ7.js → SidebarToolsPage-OFF5BOXP.js} +1 -1
  28. package/dist/ui/TaskPage-HBDLHFI5.js +1 -0
  29. package/dist/ui/TasksPage-OLCDTQNB.js +1 -0
  30. package/dist/ui/{TranslationsArbPage-UHANA7JD.js → TranslationsArbPage-E3NCMAMS.js} +1 -1
  31. package/dist/ui/{TranslationsEditPage-PQY6W5YG.js → TranslationsEditPage-IWOI7Y5G.js} +1 -1
  32. package/dist/ui/{TranslationsPage-V2PQFCN5.js → TranslationsPage-OBN6CQZZ.js} +31 -31
  33. package/dist/ui/{ai-tools-5E5ELLZX.js → ai-tools-4DWMFQS6.js} +1 -1
  34. package/dist/ui/{chunk-KYDOSLTO.js → chunk-2225WAJ2.js} +1 -1
  35. package/dist/ui/chunk-32LRQ5MJ.js +1 -0
  36. package/dist/ui/{chunk-HKINZLMW.js → chunk-344GZOGG.js} +45 -45
  37. package/dist/ui/{chunk-FBJURT7Z.js → chunk-3HVDIPSS.js} +1 -1
  38. package/dist/ui/{chunk-BZIRGB4W.js → chunk-3IDOZ4MG.js} +1 -1
  39. package/dist/ui/{chunk-HHMG665Z.js → chunk-3XYCOR6Z.js} +1 -1
  40. package/dist/ui/chunk-4CUWZQXT.js +7 -0
  41. package/dist/ui/{chunk-3IYZCUPI.js → chunk-4IXGYXA2.js} +1 -1
  42. package/dist/ui/{chunk-PHBMVORG.js → chunk-6E7PGMZX.js} +1 -1
  43. package/dist/ui/{chunk-VMT7JFAM.js → chunk-6GPTGBA7.js} +1 -1
  44. package/dist/ui/{chunk-767BAQ53.js → chunk-6MOPIV5T.js} +1 -1
  45. package/dist/ui/{chunk-E2RCCK2T.js → chunk-AOCBDKLV.js} +1 -1
  46. package/dist/ui/chunk-AXETBZ6T.js +1 -0
  47. package/dist/ui/{chunk-54DVDYU6.js → chunk-BEDUTYQP.js} +1 -1
  48. package/dist/ui/{chunk-62UWGWON.js → chunk-CVGYBXVH.js} +1 -1
  49. package/dist/ui/{chunk-L4RHGQUG.js → chunk-D37DCENS.js} +1 -1
  50. package/dist/ui/{chunk-4W73RW5I.js → chunk-DXKEDMEI.js} +1 -1
  51. package/dist/ui/{chunk-C5NH23G4.js → chunk-EMYXSVTD.js} +1 -1
  52. package/dist/ui/{chunk-PWKJDYE2.js → chunk-GDSSFO5R.js} +1 -1
  53. package/dist/ui/{chunk-KFAZBEPV.js → chunk-HYARD7BK.js} +1 -1
  54. package/dist/ui/chunk-IDYKCAAL.js +1 -0
  55. package/dist/ui/chunk-IKED2IGU.js +1 -0
  56. package/dist/ui/{chunk-KKEWCXVV.js → chunk-J3EGGI57.js} +1 -1
  57. package/dist/ui/{chunk-HRGYNHZ3.js → chunk-KPJ53X55.js} +1 -1
  58. package/dist/ui/{chunk-W3BJ2EZX.js → chunk-KYKFNAX4.js} +1 -1
  59. package/dist/ui/{chunk-TJBVMFNQ.js → chunk-MZP6RIG2.js} +1 -1
  60. package/dist/ui/chunk-N4DFAIC5.js +7 -0
  61. package/dist/ui/{chunk-HLMBCVRX.js → chunk-N5Y5OWTV.js} +1 -1
  62. package/dist/ui/chunk-NMBXHKIJ.js +81 -0
  63. package/dist/ui/chunk-NQ5ARARP.js +1 -0
  64. package/dist/ui/{chunk-X2WHBGTP.js → chunk-NQB37NMX.js} +1 -1
  65. package/dist/ui/chunk-OVRTVMO5.js +1 -0
  66. package/dist/ui/{chunk-JT5L6GPZ.js → chunk-RI2JWWU3.js} +53 -53
  67. package/dist/ui/{chunk-AL3TN2KI.js → chunk-RPOP6MVJ.js} +1 -1
  68. package/dist/ui/{chunk-JHBAMPGB.js → chunk-RQKL4KXY.js} +1 -1
  69. package/dist/ui/{chunk-P3NETZZP.js → chunk-SEUH7LN2.js} +1 -1
  70. package/dist/ui/{chunk-V7S4IAGB.js → chunk-T47V6AGW.js} +1 -1
  71. package/dist/ui/{chunk-ONTGW2VA.js → chunk-TDKVKTW4.js} +1 -1
  72. package/dist/ui/chunk-TZEZEMRQ.js +1 -0
  73. package/dist/ui/{chunk-RSVO46S3.js → chunk-UA7UCTX5.js} +1 -1
  74. package/dist/ui/chunk-UFQSZ6J2.js +3 -0
  75. package/dist/ui/{chunk-DEGMKEHP.js → chunk-UHWNLNP4.js} +1 -1
  76. package/dist/ui/{chunk-CGCKJFL4.js → chunk-V7RAXP2W.js} +1 -1
  77. package/dist/ui/{chunk-JYFLU7DM.js → chunk-WKOX3VFN.js} +1 -1
  78. package/dist/ui/{chunk-SQRKKWRG.js → chunk-XYBHH5L4.js} +1 -1
  79. package/dist/ui/ui.css +1 -1
  80. package/dist/ui/ui.js +1 -1
  81. package/package.json +10 -10
  82. package/dist/ui/AIPage-YI3RFK5F.js +0 -1
  83. package/dist/ui/ComparePage-YZE3EMU4.js +0 -1
  84. package/dist/ui/DocTranslationsPage-RY2LOZBX.js +0 -1
  85. package/dist/ui/DocumentPage-EEGTJMIW.js +0 -1
  86. package/dist/ui/LogsPage-IP2DKEYR.js +0 -1
  87. package/dist/ui/NewReleasePage-DGMFU2JN.js +0 -1
  88. package/dist/ui/ReleasePage-2KSF23TK.js +0 -1
  89. package/dist/ui/SettingsPage-36XFWV62.js +0 -1
  90. package/dist/ui/TaskPage-SPIFPGPP.js +0 -1
  91. package/dist/ui/TasksPage-ZOXRPBQV.js +0 -1
  92. package/dist/ui/chunk-AFWBSIPL.js +0 -1
  93. package/dist/ui/chunk-GXSAEPU3.js +0 -1
  94. package/dist/ui/chunk-I6ICVKEC.js +0 -1
  95. package/dist/ui/chunk-JZFTZ4X4.js +0 -87
  96. package/dist/ui/chunk-MDUBCXU2.js +0 -1
  97. package/dist/ui/chunk-NXQVLOTK.js +0 -1
  98. package/dist/ui/chunk-NZHF733K.js +0 -7
  99. package/dist/ui/chunk-PJA7YP4A.js +0 -1
  100. package/dist/ui/chunk-XOQ3KDSR.js +0 -3
  101. package/dist/ui/chunk-YFA6U2CV.js +0 -1
  102. /package/dist/ui/{ImageEditorDialog-4H665KK2.js.LEGAL.txt → ImageEditorDialog-QEULJAT2.js.LEGAL.txt} +0 -0
  103. /package/dist/ui/{chunk-NZHF733K.js.LEGAL.txt → chunk-4CUWZQXT.js.LEGAL.txt} +0 -0
  104. /package/dist/ui/{chunk-JZFTZ4X4.js.LEGAL.txt → chunk-NMBXHKIJ.js.LEGAL.txt} +0 -0
  105. /package/dist/ui/{chunk-JT5L6GPZ.js.LEGAL.txt → chunk-RI2JWWU3.js.LEGAL.txt} +0 -0
  106. /package/dist/ui/{prerender-Q4YSDCPB.js → prerender-M47IWV5Q.js} +0 -0
@@ -1 +1 @@
1
- import{C as ye,D as k,E as Se,G as J,H as Ee,I as we,K as Oe,O as xe,P as Pe,Q as Ce,S as Ae,T as be,Y as U,_ as Re,a as P,b as ae,c as q,d as se,e as y,g as le,ga as De,i as $,ia as Ie,j as ve,ja as Le,ka as je,la as Te,v as c,va as ke,y as b}from"./chunk-NZHF733K.js";import{a as Q,b as x,f as _e,i as ne,j as H,k as ie}from"./chunk-KUCVLANF.js";ie();ve();var N,W;function Ot(e){return!W||(typeof W=="string"?e.startsWith(W):W.test(e))}function xt(e,t){let r="";if(N=void 0,t&&t.type==="click"){if(t.ctrlKey||t.metaKey||t.altKey||t.shiftKey||t.button!==0)return e;let o=t.composedPath().find(i=>i.nodeName=="A"&&i.href),n=o&&o.getAttribute("href");if(!o||o.origin!=location.origin||/^#/.test(n)||!/^(_?self)?$/i.test(o.target)||!Ot(n)||o.download)return e;N=!0,t.preventDefault(),r=o.href.replace(location.origin,"")}else t&&t.url?(N=!t.replace,r=t.url):r=location.pathname+location.search;return N===!0?history.pushState(null,"",r):N===!1&&history.replaceState(null,"",r),r}var Pt=(e,t,r={})=>{e=e.split("/").filter(Boolean),t=(t||"").split("/").filter(Boolean),r.params||(r.params={});for(let o=0,n,i;o<Math.max(e.length,t.length);o++){let[,s,u,l]=(t[o]||"").match(/^(:?)(.*?)([+*?]?)$/);if(n=e[o],!(!s&&u==n)){if(!s&&n&&l=="*"){r.rest="/"+e.slice(o).map(decodeURIComponent).join("/");break}if(!s||!n&&l!="?"&&l!="*")return;if(i=l=="+"||l=="*",i?n=e.slice(o).map(decodeURIComponent).join("/")||void 0:n&&(n=decodeURIComponent(n)),r.params[u]=n,u in r||(r[u]=n),i)break}}return r};function F(e){let[t,r]=ae(xt,e.url||location.pathname+location.search);e.scope&&(W=e.scope);let o=N===!0,n=le(()=>{let i=new URL(t,location.origin),s=i.pathname.replace(/\/+$/g,"")||"/";return{url:t,path:s,query:Object.fromEntries(i.searchParams),route:(u,l)=>r({url:u,replace:l}),wasPush:o}},[t]);return se(()=>(addEventListener("click",r),addEventListener("popstate",r),()=>{removeEventListener("click",r),removeEventListener("popstate",r)}),[]),x(F.ctx.Provider,{value:n},e.children)}var Ct=Promise.resolve();function Me(e){let[t,r]=ae(p=>p+1,0),{url:o,query:n,wasPush:i,path:s}=Be();if(!o)throw new Error("preact-iso's <Router> must be used within a <LocationProvider>, see: https://github.com/preactjs/preact-iso#locationprovider");let{rest:u=s,params:l={}}=$(Ne),f=y(!1),d=y(s),h=y(0),a=y(),m=y(),_=y(),g=y(!1),w=y();w.current=!1;let R,C,E;_e(e.children).some(p=>{if(Pt(u,p.props.path,E={...p.props,path:u,query:n,params:Object.assign({},l),rest:""}))return R=ne(p,E);p.props.default&&(C=ne(p,E))});let O=R||C,D=a.current&&a.current.__u&Y&&a.current.__u&Z,I=a.current&&a.current.__h,M=le(()=>{m.current=a.current,a.current=x(Ne.Provider,{value:E},O);let p=m.current&&m.current.props.children;return!p||!O||O.type!==p.type||O.props.component!==p.props.component?(this.__v&&this.__v.__k&&this.__v.__k.reverse(),h.current++,!0):!1},[o,JSON.stringify(E)]);D?(a.current.__u|=Y,a.current.__u|=Z):I&&(a.current.__h=!0);let L=m.current;return m.current=null,this.__c=(p,A)=>{w.current=!0,m.current=L,e.onLoadStart&&e.onLoadStart(o),f.current=!0;let re=h.current;p.then(()=>{re===h.current&&(m.current=null,a.current&&(A.__h&&(a.current.__h=A.__h),A.__u&Z&&(a.current.__u|=Z),A.__u&Y&&(a.current.__u|=Y)),Ct.then(r))})},se(()=>{let p=this.__v&&this.__v.__e;if(w.current){!g.current&&!_.current&&(_.current=p);return}!g.current&&_.current&&(_.current!==p&&_.current.remove(),_.current=null),g.current=!0,d.current!==s&&(i&&scrollTo(0,0),e.onRouteChange&&e.onRouteChange(o),d.current=s),e.onLoadEnd&&f.current&&e.onLoadEnd(o),f.current=!1},[s,i,t]),M?[x(ce,{r:a}),x(ce,{r:m})]:x(ce,{r:a})}var Y=32,Z=128,ce=({r:e})=>e.current;Me.Provider=F;F.ctx=H({});var Ne=H({}),At=e=>x(e.component,e),Be=()=>$(F.ctx);ie();ve();var ze=Q.__b;Q.__b=e=>{e.type&&e.type._forwarded&&e.ref&&(e.props.ref=e.ref,e.ref=null),ze&&ze(e)};function He(e){let t,r,o=()=>e().then(i=>r=i&&i.default||i),n=i=>{let[,s]=P(0),u=y(r);if(t||(t=o()),r!==void 0)return x(r,i);throw u.current||(u.current=t.then(()=>s(1))),t};return n.preload=()=>(t||(t=o()),t),n._forwarded=!0,n}var Qe=Q.__e;Q.__e=(e,t,r)=>{if(e&&e.then){let o=t;for(;o=o.__;)if(o.__c&&o.__c.__c)return t.__e==null&&(t.__c.__z=[r.__e],t.__e=r.__e,t.__k=r.__k),t.__k||(t.__k=[]),o.__c.__c(e,t)}Qe&&Qe(e,t,r)};ie();function Er(...e){return e.filter(t=>!!t).join(" ")||void 0}b();b();var bt=Object.defineProperty,Rt=Object.defineProperties,Dt=Object.getOwnPropertyDescriptors,Ue=Object.getOwnPropertySymbols,It=Object.prototype.hasOwnProperty,Lt=Object.prototype.propertyIsEnumerable,We=(e,t,r)=>t in e?bt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,jt=(e,t)=>{for(var r in t||(t={}))It.call(t,r)&&We(e,r,t[r]);if(Ue)for(var r of Ue(t))Lt.call(t,r)&&We(e,r,t[r]);return e},Tt=(e,t)=>Rt(e,Dt(t));function kt(e){return Tt(jt({},e),{id:e.id||Oe()})}function Nt(e){let t=[];return e.reduceRight((r,o)=>(t.includes(o.id)||(t.push(o.id),r.push(o)),r),[]).reverse()}function X(e){return Nt(e.map(t=>kt(t)))}function Fe(e,t){let[r,o]=P(X(typeof e=="function"?e(t):e));return q(()=>{typeof e=="function"&&o(X(e(t)))},[t]),[r,{registerActions:l=>o(f=>X([...f,...l])),updateActions:l=>o(X(typeof l=="function"?l(t):l)),removeActions:l=>o(f=>f.filter(d=>!l.includes(d.id))),triggerAction:l=>{var f;let d=r.find(h=>h.id===l);(f=d?.onTrigger)==null||f.call(d,d)}}]}function Mt(e,t){return e===null?[]:Array.isArray(e)?e.map(r=>[r,t]):[[e,t]]}function Ke(e,t){Pe(Mt(e,t))}b();b();var Bt=k((e,{radius:t})=>({action:{position:"relative",display:"block",width:"100%",padding:"10px 12px",borderRadius:e.fn.radius(t)},actionHovered:{backgroundColor:e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[1]},actionIcon:{color:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6]},actionBody:{flex:1}})),Ge=Bt;var zt=Object.defineProperty,V=Object.getOwnPropertySymbols,$e=Object.prototype.hasOwnProperty,Je=Object.prototype.propertyIsEnumerable,qe=(e,t,r)=>t in e?zt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Qt=(e,t)=>{for(var r in t||(t={}))$e.call(t,r)&&qe(e,r,t[r]);if(V)for(var r of V(t))Je.call(t,r)&&qe(e,r,t[r]);return e},Ht=(e,t)=>{var r={};for(var o in e)$e.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&V)for(var o of V(e))t.indexOf(o)<0&&Je.call(e,o)&&(r[o]=e[o]);return r};function ue(e){var t=e,{action:r,styles:o,classNames:n,hovered:i,onTrigger:s,highlightQuery:u,highlightColor:l,query:f,radius:d}=t,h=Ht(t,["action","styles","classNames","hovered","onTrigger","highlightQuery","highlightColor","query","radius"]);let{classes:a,cx:m}=Ge({radius:d},{styles:o,classNames:n,name:"Spotlight"});return c.createElement(Ae,Qt({className:m(a.action,{[a.actionHovered]:i}),tabIndex:-1,onMouseDown:_=>_.preventDefault(),onClick:s},h),c.createElement(De,{noWrap:!0},r.icon&&c.createElement(be,{className:a.actionIcon},r.icon),c.createElement("div",{className:a.actionBody},c.createElement(Te,{highlightColor:l,highlight:u?f:null},r.title),r.description&&c.createElement(U,{color:"dimmed",size:"xs"},r.description))))}ue.displayName="@mantine/spotlight/DefaultAction";b();var Ut=k(e=>({nothingFound:{},actions:{padding:e.spacing.xs/2,borderTop:`1px solid ${e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[2]}`},actionsGroup:{textTransform:"uppercase",fontSize:e.spacing.xs,fontWeight:700,padding:"10px 12px",paddingBottom:0,paddingTop:15}})),Ye=Ut;function pe({actions:e,styles:t,classNames:r,actionComponent:o,hovered:n,onActionHover:i,onActionTrigger:s,query:u,nothingFoundMessage:l,highlightQuery:f,highlightColor:d,radius:h}){let{classes:a}=Ye(null,{classNames:r,styles:t,name:"Spotlight"}),m=e.map(g=>g.type==="item"?c.createElement(o,{query:u,key:g.item.id,action:g.item,hovered:g.index===n,onMouseEnter:()=>i(g.index),classNames:r,styles:t,radius:h,onTrigger:()=>s(g.item),highlightQuery:f,highlightColor:d}):c.createElement(U,{className:a.actionsGroup,color:"dimmed",key:g.label},g.label)),_=m.length>0||!!l&&u.trim().length>0;return c.createElement(c.Fragment,null,_&&c.createElement("div",{className:a.actions},m.length>0?m:c.createElement(U,{color:"dimmed",className:a.nothingFound,align:"center",size:"lg",py:"md"},l)))}pe.displayName="@mantine/spotlight/ActionsList";function Wt(e){return Array.isArray(e)?e.map(t=>t.trim()).join(",").toLowerCase().trim():typeof e=="string"?e.toLowerCase().trim():""}function Ze(e,t){let r=e.trim().toLowerCase(),o=[[],[]];return t.forEach(n=>{var i,s;(i=n.title)!=null&&i.toLowerCase().includes(r)?o[0].push(n):((s=n.description)!=null&&s.toLowerCase().includes(r)||Wt(n.keywords).includes(r))&&o[1].push(n)}),o.flat()}var Ft=Object.defineProperty,Kt=Object.defineProperties,Gt=Object.getOwnPropertyDescriptors,Xe=Object.getOwnPropertySymbols,qt=Object.prototype.hasOwnProperty,$t=Object.prototype.propertyIsEnumerable,Ve=(e,t,r)=>t in e?Ft(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,et=(e,t)=>{for(var r in t||(t={}))qt.call(t,r)&&Ve(e,r,t[r]);if(Xe)for(var r of Xe(t))$t.call(t,r)&&Ve(e,r,t[r]);return e},tt=(e,t)=>Kt(e,Gt(t)),Jt=k((e,{centered:t,maxWidth:r,topOffset:o,radius:n})=>({root:tt(et({},e.fn.cover()),{position:"fixed"}),spotlight:{position:"relative",zIndex:2,backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.white,borderRadius:e.fn.radius(n),width:"100%",maxWidth:r,overflow:"hidden",marginLeft:"calc(var(--removed-scroll-width, 0px) * -1)"},overlay:tt(et({},e.fn.cover()),{position:"fixed"}),inner:{height:"100vh",display:"flex",flexDirection:"column",paddingTop:t?e.spacing.md:o,justifyContent:t?"center":"flex-start",alignItems:"center"},searchInput:{border:0,borderBottomRightRadius:0,borderBottomLeftRadius:0,backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.white}})),rt=Jt;var Yt=Object.defineProperty,ee=Object.getOwnPropertySymbols,nt=Object.prototype.hasOwnProperty,it=Object.prototype.propertyIsEnumerable,ot=(e,t,r)=>t in e?Yt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Zt=(e,t)=>{for(var r in t||(t={}))nt.call(t,r)&&ot(e,r,t[r]);if(ee)for(var r of ee(t))it.call(t,r)&&ot(e,r,t[r]);return e},Xt=(e,t)=>{var r={};for(var o in e)nt.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&ee)for(var o of ee(e))t.indexOf(o)<0&&it.call(e,o)&&(r[o]=e[o]);return r};function fe(e){var t=e,{query:r,onQueryChange:o,actions:n,onClose:i,opened:s,withinPortal:u,transition:l="pop",transitionDuration:f,classNames:d,styles:h,overlayColor:a="#000",overlayOpacity:m=.25,overlayBlur:_=3,shadow:g="md",radius:w="sm",centered:R=!1,closeOnActionTrigger:C=!0,highlightQuery:E=!1,highlightColor:O,maxWidth:D=600,topOffset:I=120,className:M,searchPlaceholder:L,searchIcon:p,filter:A=Ze,nothingFoundMessage:re,limit:ft=10,actionComponent:dt=ue,actionsWrapperComponent:mt="div",zIndex:gt=ye("modal")}=t,ht=Xt(t,["query","onQueryChange","actions","onClose","opened","withinPortal","transition","transitionDuration","classNames","styles","overlayColor","overlayOpacity","overlayBlur","shadow","radius","centered","closeOnActionTrigger","highlightQuery","highlightColor","maxWidth","topOffset","className","searchPlaceholder","searchIcon","filter","nothingFoundMessage","limit","actionComponent","actionsWrapperComponent","zIndex"]);let[K,j]=P(-1),[_t,me]=P(!1),{classes:B,cx:vt}=rt({centered:R,maxWidth:D,topOffset:I,radius:w},{classNames:d,styles:h,name:"Spotlight"}),[,ge]=xe(),yt=we(s),oe=()=>j(-1),G=()=>{oe(),i()};Ee({transitionDuration:0,opened:s});let St=A(r,n).slice(0,ft),he=Se(St).items,T=he.map(v=>v.type==="item"?v.item:void 0).filter(v=>v);J(()=>{T.length-1<K&&j(T.length-1)},[T.length]);let Et=v=>{var z;if(!_t)switch(v.code){case"ArrowDown":{v.preventDefault(),j(S=>S<T.length-1?S+1:0);break}case"ArrowUp":{v.preventDefault(),j(S=>S>0?S-1:T.length-1);break}case"Enter":{v.preventDefault();let S=T[K];(z=S?.onTrigger)==null||z.call(S,S),C&&S?.onTrigger&&G();break}case"Escape":v.preventDefault(),G()}},wt=v=>{o(v.currentTarget.value),K===-1&&j(0)};return c.createElement(Ie,{withinPortal:u,zIndex:gt},c.createElement(Le,{onExited:()=>ge(!1),onEntered:()=>ge(!0),mounted:s,transitions:{spotlight:{duration:f,transition:l,timingFunction:"ease"},overlay:{duration:f/2,transition:"fade",timingFunction:"ease"}}},v=>c.createElement("div",Zt({className:vt(B.root,M)},ht),c.createElement("div",{className:B.inner,ref:yt},c.createElement(Re,{style:v.spotlight,className:B.spotlight,shadow:g,radius:w,onMouseLeave:oe},c.createElement(ke,{value:r,onChange:wt,onKeyDown:Et,onCompositionStart:()=>me(!0),onCompositionEnd:()=>me(!1),classNames:{input:B.searchInput},size:"lg",placeholder:L,icon:p,onMouseEnter:oe,autoComplete:"chrome-please-just-do-not-show-it-thanks"}),c.createElement(mt,null,c.createElement(pe,{highlightQuery:E,highlightColor:O,actions:he,actionComponent:dt,hovered:K,query:r,nothingFoundMessage:re,onActionHover:j,onActionTrigger:z=>{z.onTrigger(z),C&&G()},styles:h,classNames:d,radius:w}))),c.createElement("div",{style:v.overlay},c.createElement(je,{className:B.overlay,zIndex:1,onMouseDown:G,color:a,opacity:m,blur:_}))))))}fe.displayName="@mantine/spotlight/Spotlight";b();var de={open:"mantine:open-spotlight",close:"mantine:close-spotlight",toggle:"mantine:toggle-spotlight",triggerAction:"mantine:trigger-spotlight-action",registerActions:"mantine:register-spotlight-actions",removeActions:"mantine:remove-spotlight-actions"};function Vt(e,t){return new CustomEvent(e,{detail:t})}function er(){window.dispatchEvent(Vt(de.open))}function at(e){let t={registerActions:r=>e.registerActions(r.detail),removeActions:r=>e.removeActions(r.detail),triggerAction:r=>e.triggerAction(r.detail),open:e.openSpotlight,close:e.closeSpotlight,toggle:e.toggleSpotlight};q(()=>(Object.keys(t).forEach(r=>{window.addEventListener(de[r],t[r])}),()=>{Object.keys(t).forEach(r=>{window.removeEventListener(de[r],t[r])})}),[])}b();var st=H(null);var tr=Object.defineProperty,te=Object.getOwnPropertySymbols,ct=Object.prototype.hasOwnProperty,ut=Object.prototype.propertyIsEnumerable,lt=(e,t,r)=>t in e?tr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,rr=(e,t)=>{for(var r in t||(t={}))ct.call(t,r)&&lt(e,r,t[r]);if(te)for(var r of te(t))ut.call(t,r)&&lt(e,r,t[r]);return e},or=(e,t)=>{var r={};for(var o in e)ct.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&te)for(var o of te(e))t.indexOf(o)<0&&ut.call(e,o)&&(r[o]=e[o]);return r};function pt(e){var t=e,{actions:r,children:o,shortcut:n="mod + K",onSpotlightClose:i,onSpotlightOpen:s,onQueryChange:u,cleanQueryOnClose:l=!0,transitionDuration:f=150}=t,d=or(t,["actions","children","shortcut","onSpotlightClose","onSpotlightOpen","onQueryChange","cleanQueryOnClose","transitionDuration"]);let h=y(-1),[a,m]=P(""),[_,{registerActions:g,updateActions:w,removeActions:R,triggerAction:C}]=Fe(r,a);J(()=>{w(r)},[r]);let E=p=>{m(p),u?.(p)},[O,{open:D,close:I,toggle:M}]=Ce(!1,{onClose:()=>{i?.(),l&&(h.current=window.setTimeout(()=>{E("")},f))},onOpen:()=>{s?.(),window.clearTimeout(h.current)}}),L={openSpotlight:D,closeSpotlight:I,toggleSpotlight:M,registerActions:g,removeActions:R,triggerAction:C,opened:O,actions:_,query:a};return Ke(n,D),at(L),c.createElement(st.Provider,{value:L},c.createElement(fe,rr({actions:_,onClose:I,opened:O,query:a,onQueryChange:E,transitionDuration:f},d)),o)}pt.displayName="@mantine/spotlight/SpotlightProvider";export{F as a,Me as b,At as c,Be as d,He as e,Er as f,er as g,pt as h};
1
+ import{C as ye,D as k,E as Se,G as J,H as Ee,I as we,K as Oe,O as xe,P as Pe,Q as Ce,S as Ae,T as be,Y as U,Z as Re,a as P,b as ae,c as q,d as se,e as y,fa as De,g as le,ha as Ie,i as $,ia as Le,j as ve,ja as je,ka as Te,ua as ke,v as c,y as b}from"./chunk-4CUWZQXT.js";import{a as Q,b as x,f as _e,i as ne,j as H,k as ie}from"./chunk-KUCVLANF.js";ie();ve();var N,W;function Ot(e){return!W||(typeof W=="string"?e.startsWith(W):W.test(e))}function xt(e,t){let r="";if(N=void 0,t&&t.type==="click"){if(t.ctrlKey||t.metaKey||t.altKey||t.shiftKey||t.button!==0)return e;let o=t.composedPath().find(i=>i.nodeName=="A"&&i.href),n=o&&o.getAttribute("href");if(!o||o.origin!=location.origin||/^#/.test(n)||!/^(_?self)?$/i.test(o.target)||!Ot(n)||o.download)return e;N=!0,t.preventDefault(),r=o.href.replace(location.origin,"")}else t&&t.url?(N=!t.replace,r=t.url):r=location.pathname+location.search;return N===!0?history.pushState(null,"",r):N===!1&&history.replaceState(null,"",r),r}var Pt=(e,t,r={})=>{e=e.split("/").filter(Boolean),t=(t||"").split("/").filter(Boolean),r.params||(r.params={});for(let o=0,n,i;o<Math.max(e.length,t.length);o++){let[,s,u,l]=(t[o]||"").match(/^(:?)(.*?)([+*?]?)$/);if(n=e[o],!(!s&&u==n)){if(!s&&n&&l=="*"){r.rest="/"+e.slice(o).map(decodeURIComponent).join("/");break}if(!s||!n&&l!="?"&&l!="*")return;if(i=l=="+"||l=="*",i?n=e.slice(o).map(decodeURIComponent).join("/")||void 0:n&&(n=decodeURIComponent(n)),r.params[u]=n,u in r||(r[u]=n),i)break}}return r};function F(e){let[t,r]=ae(xt,e.url||location.pathname+location.search);e.scope&&(W=e.scope);let o=N===!0,n=le(()=>{let i=new URL(t,location.origin),s=i.pathname.replace(/\/+$/g,"")||"/";return{url:t,path:s,query:Object.fromEntries(i.searchParams),route:(u,l)=>r({url:u,replace:l}),wasPush:o}},[t]);return se(()=>(addEventListener("click",r),addEventListener("popstate",r),()=>{removeEventListener("click",r),removeEventListener("popstate",r)}),[]),x(F.ctx.Provider,{value:n},e.children)}var Ct=Promise.resolve();function Me(e){let[t,r]=ae(p=>p+1,0),{url:o,query:n,wasPush:i,path:s}=Be();if(!o)throw new Error("preact-iso's <Router> must be used within a <LocationProvider>, see: https://github.com/preactjs/preact-iso#locationprovider");let{rest:u=s,params:l={}}=$(Ne),f=y(!1),d=y(s),h=y(0),a=y(),m=y(),_=y(),g=y(!1),w=y();w.current=!1;let R,C,E;_e(e.children).some(p=>{if(Pt(u,p.props.path,E={...p.props,path:u,query:n,params:Object.assign({},l),rest:""}))return R=ne(p,E);p.props.default&&(C=ne(p,E))});let O=R||C,D=a.current&&a.current.__u&Y&&a.current.__u&Z,I=a.current&&a.current.__h,M=le(()=>{m.current=a.current,a.current=x(Ne.Provider,{value:E},O);let p=m.current&&m.current.props.children;return!p||!O||O.type!==p.type||O.props.component!==p.props.component?(this.__v&&this.__v.__k&&this.__v.__k.reverse(),h.current++,!0):!1},[o,JSON.stringify(E)]);D?(a.current.__u|=Y,a.current.__u|=Z):I&&(a.current.__h=!0);let L=m.current;return m.current=null,this.__c=(p,A)=>{w.current=!0,m.current=L,e.onLoadStart&&e.onLoadStart(o),f.current=!0;let re=h.current;p.then(()=>{re===h.current&&(m.current=null,a.current&&(A.__h&&(a.current.__h=A.__h),A.__u&Z&&(a.current.__u|=Z),A.__u&Y&&(a.current.__u|=Y)),Ct.then(r))})},se(()=>{let p=this.__v&&this.__v.__e;if(w.current){!g.current&&!_.current&&(_.current=p);return}!g.current&&_.current&&(_.current!==p&&_.current.remove(),_.current=null),g.current=!0,d.current!==s&&(i&&scrollTo(0,0),e.onRouteChange&&e.onRouteChange(o),d.current=s),e.onLoadEnd&&f.current&&e.onLoadEnd(o),f.current=!1},[s,i,t]),M?[x(ce,{r:a}),x(ce,{r:m})]:x(ce,{r:a})}var Y=32,Z=128,ce=({r:e})=>e.current;Me.Provider=F;F.ctx=H({});var Ne=H({}),At=e=>x(e.component,e),Be=()=>$(F.ctx);ie();ve();var ze=Q.__b;Q.__b=e=>{e.type&&e.type._forwarded&&e.ref&&(e.props.ref=e.ref,e.ref=null),ze&&ze(e)};function He(e){let t,r,o=()=>e().then(i=>r=i&&i.default||i),n=i=>{let[,s]=P(0),u=y(r);if(t||(t=o()),r!==void 0)return x(r,i);throw u.current||(u.current=t.then(()=>s(1))),t};return n.preload=()=>(t||(t=o()),t),n._forwarded=!0,n}var Qe=Q.__e;Q.__e=(e,t,r)=>{if(e&&e.then){let o=t;for(;o=o.__;)if(o.__c&&o.__c.__c)return t.__e==null&&(t.__c.__z=[r.__e],t.__e=r.__e,t.__k=r.__k),t.__k||(t.__k=[]),o.__c.__c(e,t)}Qe&&Qe(e,t,r)};ie();function Er(...e){return e.filter(t=>!!t).join(" ")||void 0}b();b();var bt=Object.defineProperty,Rt=Object.defineProperties,Dt=Object.getOwnPropertyDescriptors,Ue=Object.getOwnPropertySymbols,It=Object.prototype.hasOwnProperty,Lt=Object.prototype.propertyIsEnumerable,We=(e,t,r)=>t in e?bt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,jt=(e,t)=>{for(var r in t||(t={}))It.call(t,r)&&We(e,r,t[r]);if(Ue)for(var r of Ue(t))Lt.call(t,r)&&We(e,r,t[r]);return e},Tt=(e,t)=>Rt(e,Dt(t));function kt(e){return Tt(jt({},e),{id:e.id||Oe()})}function Nt(e){let t=[];return e.reduceRight((r,o)=>(t.includes(o.id)||(t.push(o.id),r.push(o)),r),[]).reverse()}function X(e){return Nt(e.map(t=>kt(t)))}function Fe(e,t){let[r,o]=P(X(typeof e=="function"?e(t):e));return q(()=>{typeof e=="function"&&o(X(e(t)))},[t]),[r,{registerActions:l=>o(f=>X([...f,...l])),updateActions:l=>o(X(typeof l=="function"?l(t):l)),removeActions:l=>o(f=>f.filter(d=>!l.includes(d.id))),triggerAction:l=>{var f;let d=r.find(h=>h.id===l);(f=d?.onTrigger)==null||f.call(d,d)}}]}function Mt(e,t){return e===null?[]:Array.isArray(e)?e.map(r=>[r,t]):[[e,t]]}function Ke(e,t){Pe(Mt(e,t))}b();b();var Bt=k((e,{radius:t})=>({action:{position:"relative",display:"block",width:"100%",padding:"10px 12px",borderRadius:e.fn.radius(t)},actionHovered:{backgroundColor:e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[1]},actionIcon:{color:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6]},actionBody:{flex:1}})),Ge=Bt;var zt=Object.defineProperty,V=Object.getOwnPropertySymbols,$e=Object.prototype.hasOwnProperty,Je=Object.prototype.propertyIsEnumerable,qe=(e,t,r)=>t in e?zt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Qt=(e,t)=>{for(var r in t||(t={}))$e.call(t,r)&&qe(e,r,t[r]);if(V)for(var r of V(t))Je.call(t,r)&&qe(e,r,t[r]);return e},Ht=(e,t)=>{var r={};for(var o in e)$e.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&V)for(var o of V(e))t.indexOf(o)<0&&Je.call(e,o)&&(r[o]=e[o]);return r};function ue(e){var t=e,{action:r,styles:o,classNames:n,hovered:i,onTrigger:s,highlightQuery:u,highlightColor:l,query:f,radius:d}=t,h=Ht(t,["action","styles","classNames","hovered","onTrigger","highlightQuery","highlightColor","query","radius"]);let{classes:a,cx:m}=Ge({radius:d},{styles:o,classNames:n,name:"Spotlight"});return c.createElement(Ae,Qt({className:m(a.action,{[a.actionHovered]:i}),tabIndex:-1,onMouseDown:_=>_.preventDefault(),onClick:s},h),c.createElement(De,{noWrap:!0},r.icon&&c.createElement(be,{className:a.actionIcon},r.icon),c.createElement("div",{className:a.actionBody},c.createElement(Te,{highlightColor:l,highlight:u?f:null},r.title),r.description&&c.createElement(U,{color:"dimmed",size:"xs"},r.description))))}ue.displayName="@mantine/spotlight/DefaultAction";b();var Ut=k(e=>({nothingFound:{},actions:{padding:e.spacing.xs/2,borderTop:`1px solid ${e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[2]}`},actionsGroup:{textTransform:"uppercase",fontSize:e.spacing.xs,fontWeight:700,padding:"10px 12px",paddingBottom:0,paddingTop:15}})),Ye=Ut;function pe({actions:e,styles:t,classNames:r,actionComponent:o,hovered:n,onActionHover:i,onActionTrigger:s,query:u,nothingFoundMessage:l,highlightQuery:f,highlightColor:d,radius:h}){let{classes:a}=Ye(null,{classNames:r,styles:t,name:"Spotlight"}),m=e.map(g=>g.type==="item"?c.createElement(o,{query:u,key:g.item.id,action:g.item,hovered:g.index===n,onMouseEnter:()=>i(g.index),classNames:r,styles:t,radius:h,onTrigger:()=>s(g.item),highlightQuery:f,highlightColor:d}):c.createElement(U,{className:a.actionsGroup,color:"dimmed",key:g.label},g.label)),_=m.length>0||!!l&&u.trim().length>0;return c.createElement(c.Fragment,null,_&&c.createElement("div",{className:a.actions},m.length>0?m:c.createElement(U,{color:"dimmed",className:a.nothingFound,align:"center",size:"lg",py:"md"},l)))}pe.displayName="@mantine/spotlight/ActionsList";function Wt(e){return Array.isArray(e)?e.map(t=>t.trim()).join(",").toLowerCase().trim():typeof e=="string"?e.toLowerCase().trim():""}function Ze(e,t){let r=e.trim().toLowerCase(),o=[[],[]];return t.forEach(n=>{var i,s;(i=n.title)!=null&&i.toLowerCase().includes(r)?o[0].push(n):((s=n.description)!=null&&s.toLowerCase().includes(r)||Wt(n.keywords).includes(r))&&o[1].push(n)}),o.flat()}var Ft=Object.defineProperty,Kt=Object.defineProperties,Gt=Object.getOwnPropertyDescriptors,Xe=Object.getOwnPropertySymbols,qt=Object.prototype.hasOwnProperty,$t=Object.prototype.propertyIsEnumerable,Ve=(e,t,r)=>t in e?Ft(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,et=(e,t)=>{for(var r in t||(t={}))qt.call(t,r)&&Ve(e,r,t[r]);if(Xe)for(var r of Xe(t))$t.call(t,r)&&Ve(e,r,t[r]);return e},tt=(e,t)=>Kt(e,Gt(t)),Jt=k((e,{centered:t,maxWidth:r,topOffset:o,radius:n})=>({root:tt(et({},e.fn.cover()),{position:"fixed"}),spotlight:{position:"relative",zIndex:2,backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.white,borderRadius:e.fn.radius(n),width:"100%",maxWidth:r,overflow:"hidden",marginLeft:"calc(var(--removed-scroll-width, 0px) * -1)"},overlay:tt(et({},e.fn.cover()),{position:"fixed"}),inner:{height:"100vh",display:"flex",flexDirection:"column",paddingTop:t?e.spacing.md:o,justifyContent:t?"center":"flex-start",alignItems:"center"},searchInput:{border:0,borderBottomRightRadius:0,borderBottomLeftRadius:0,backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.white}})),rt=Jt;var Yt=Object.defineProperty,ee=Object.getOwnPropertySymbols,nt=Object.prototype.hasOwnProperty,it=Object.prototype.propertyIsEnumerable,ot=(e,t,r)=>t in e?Yt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Zt=(e,t)=>{for(var r in t||(t={}))nt.call(t,r)&&ot(e,r,t[r]);if(ee)for(var r of ee(t))it.call(t,r)&&ot(e,r,t[r]);return e},Xt=(e,t)=>{var r={};for(var o in e)nt.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&ee)for(var o of ee(e))t.indexOf(o)<0&&it.call(e,o)&&(r[o]=e[o]);return r};function fe(e){var t=e,{query:r,onQueryChange:o,actions:n,onClose:i,opened:s,withinPortal:u,transition:l="pop",transitionDuration:f,classNames:d,styles:h,overlayColor:a="#000",overlayOpacity:m=.25,overlayBlur:_=3,shadow:g="md",radius:w="sm",centered:R=!1,closeOnActionTrigger:C=!0,highlightQuery:E=!1,highlightColor:O,maxWidth:D=600,topOffset:I=120,className:M,searchPlaceholder:L,searchIcon:p,filter:A=Ze,nothingFoundMessage:re,limit:ft=10,actionComponent:dt=ue,actionsWrapperComponent:mt="div",zIndex:gt=ye("modal")}=t,ht=Xt(t,["query","onQueryChange","actions","onClose","opened","withinPortal","transition","transitionDuration","classNames","styles","overlayColor","overlayOpacity","overlayBlur","shadow","radius","centered","closeOnActionTrigger","highlightQuery","highlightColor","maxWidth","topOffset","className","searchPlaceholder","searchIcon","filter","nothingFoundMessage","limit","actionComponent","actionsWrapperComponent","zIndex"]);let[K,j]=P(-1),[_t,me]=P(!1),{classes:B,cx:vt}=rt({centered:R,maxWidth:D,topOffset:I,radius:w},{classNames:d,styles:h,name:"Spotlight"}),[,ge]=xe(),yt=we(s),oe=()=>j(-1),G=()=>{oe(),i()};Ee({transitionDuration:0,opened:s});let St=A(r,n).slice(0,ft),he=Se(St).items,T=he.map(v=>v.type==="item"?v.item:void 0).filter(v=>v);J(()=>{T.length-1<K&&j(T.length-1)},[T.length]);let Et=v=>{var z;if(!_t)switch(v.code){case"ArrowDown":{v.preventDefault(),j(S=>S<T.length-1?S+1:0);break}case"ArrowUp":{v.preventDefault(),j(S=>S>0?S-1:T.length-1);break}case"Enter":{v.preventDefault();let S=T[K];(z=S?.onTrigger)==null||z.call(S,S),C&&S?.onTrigger&&G();break}case"Escape":v.preventDefault(),G()}},wt=v=>{o(v.currentTarget.value),K===-1&&j(0)};return c.createElement(Ie,{withinPortal:u,zIndex:gt},c.createElement(Le,{onExited:()=>ge(!1),onEntered:()=>ge(!0),mounted:s,transitions:{spotlight:{duration:f,transition:l,timingFunction:"ease"},overlay:{duration:f/2,transition:"fade",timingFunction:"ease"}}},v=>c.createElement("div",Zt({className:vt(B.root,M)},ht),c.createElement("div",{className:B.inner,ref:yt},c.createElement(Re,{style:v.spotlight,className:B.spotlight,shadow:g,radius:w,onMouseLeave:oe},c.createElement(ke,{value:r,onChange:wt,onKeyDown:Et,onCompositionStart:()=>me(!0),onCompositionEnd:()=>me(!1),classNames:{input:B.searchInput},size:"lg",placeholder:L,icon:p,onMouseEnter:oe,autoComplete:"chrome-please-just-do-not-show-it-thanks"}),c.createElement(mt,null,c.createElement(pe,{highlightQuery:E,highlightColor:O,actions:he,actionComponent:dt,hovered:K,query:r,nothingFoundMessage:re,onActionHover:j,onActionTrigger:z=>{z.onTrigger(z),C&&G()},styles:h,classNames:d,radius:w}))),c.createElement("div",{style:v.overlay},c.createElement(je,{className:B.overlay,zIndex:1,onMouseDown:G,color:a,opacity:m,blur:_}))))))}fe.displayName="@mantine/spotlight/Spotlight";b();var de={open:"mantine:open-spotlight",close:"mantine:close-spotlight",toggle:"mantine:toggle-spotlight",triggerAction:"mantine:trigger-spotlight-action",registerActions:"mantine:register-spotlight-actions",removeActions:"mantine:remove-spotlight-actions"};function Vt(e,t){return new CustomEvent(e,{detail:t})}function er(){window.dispatchEvent(Vt(de.open))}function at(e){let t={registerActions:r=>e.registerActions(r.detail),removeActions:r=>e.removeActions(r.detail),triggerAction:r=>e.triggerAction(r.detail),open:e.openSpotlight,close:e.closeSpotlight,toggle:e.toggleSpotlight};q(()=>(Object.keys(t).forEach(r=>{window.addEventListener(de[r],t[r])}),()=>{Object.keys(t).forEach(r=>{window.removeEventListener(de[r],t[r])})}),[])}b();var st=H(null);var tr=Object.defineProperty,te=Object.getOwnPropertySymbols,ct=Object.prototype.hasOwnProperty,ut=Object.prototype.propertyIsEnumerable,lt=(e,t,r)=>t in e?tr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,rr=(e,t)=>{for(var r in t||(t={}))ct.call(t,r)&&lt(e,r,t[r]);if(te)for(var r of te(t))ut.call(t,r)&&lt(e,r,t[r]);return e},or=(e,t)=>{var r={};for(var o in e)ct.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&te)for(var o of te(e))t.indexOf(o)<0&&ut.call(e,o)&&(r[o]=e[o]);return r};function pt(e){var t=e,{actions:r,children:o,shortcut:n="mod + K",onSpotlightClose:i,onSpotlightOpen:s,onQueryChange:u,cleanQueryOnClose:l=!0,transitionDuration:f=150}=t,d=or(t,["actions","children","shortcut","onSpotlightClose","onSpotlightOpen","onQueryChange","cleanQueryOnClose","transitionDuration"]);let h=y(-1),[a,m]=P(""),[_,{registerActions:g,updateActions:w,removeActions:R,triggerAction:C}]=Fe(r,a);J(()=>{w(r)},[r]);let E=p=>{m(p),u?.(p)},[O,{open:D,close:I,toggle:M}]=Ce(!1,{onClose:()=>{i?.(),l&&(h.current=window.setTimeout(()=>{E("")},f))},onOpen:()=>{s?.(),window.clearTimeout(h.current)}}),L={openSpotlight:D,closeSpotlight:I,toggleSpotlight:M,registerActions:g,removeActions:R,triggerAction:C,opened:O,actions:_,query:a};return Ke(n,D),at(L),c.createElement(st.Provider,{value:L},c.createElement(fe,rr({actions:_,onClose:I,opened:O,query:a,onQueryChange:E,transitionDuration:f},d)),o)}pt.displayName="@mantine/spotlight/SpotlightProvider";export{F as a,Me as b,At as c,Be as d,He as e,Er as f,er as g,pt as h};
@@ -1 +1 @@
1
- import{b as _}from"./chunk-4KE2SZKH.js";import{a as S,c as u}from"./chunk-HRGYNHZ3.js";import{Ha as e,V as n,a as l,c as d,ea as c,j as x}from"./chunk-NZHF733K.js";x();var r="DataSourceSelectModal";function L(){let a=S(),t=u();return{open:i=>{a.openContextModal(r,{...t,innerProps:i,size:"600px",overflow:"inside"})},close:()=>{a.closeModal(r)}}}function h(a){let{innerProps:t}=a,[i,m]=l(!0),[s,p]=l([]),D=t.selectedDataSourceIds||[];d(()=>{async function o(){let v=await _();p(v.filter(g=>!g.archivedAt)),m(!1)}o()},[]);function f(o){t.onChange&&t.onChange(o,!0)}function M(o){t.onChange&&t.onChange(o,!1)}return e("div",{className:"DataSourceSelectModal",children:i?e("div",{className:"DataSourceSelectModal__loading",children:e(n,{color:"gray",size:"xl"})}):s.length===0?e("div",{className:"DataSourceSelectModal__empty",children:"No data sources."}):e("div",{className:"DataSourceSelectModal__list",children:s.map(o=>e("div",{className:"DataSourceSelectModal__item",children:[e("div",{className:"DataSourceSelectModal__item__info",children:[e("div",{className:"DataSourceSelectModal__item__id",children:o.id}),e("div",{className:"DataSourceSelectModal__item__description",children:o.description||""})]}),e("div",{className:"DataSourceSelectModal__item__action",children:D.includes(o.id)?e(c,{variant:"light",color:"blue",size:"xs",onClick:()=>M(o.id),children:"Unselect"}):e(c,{variant:"filled",color:"blue",size:"xs",onClick:()=>f(o.id),children:"Select"})})]},o.id))})})}h.id=r;export{L as a,h as b};
1
+ import{b as _}from"./chunk-4KE2SZKH.js";import{a as S,c as u}from"./chunk-KPJ53X55.js";import{Ga as e,V as n,a as l,c as d,da as c,j as x}from"./chunk-4CUWZQXT.js";x();var r="DataSourceSelectModal";function L(){let a=S(),t=u();return{open:i=>{a.openContextModal(r,{...t,innerProps:i,size:"600px",overflow:"inside"})},close:()=>{a.closeModal(r)}}}function h(a){let{innerProps:t}=a,[i,m]=l(!0),[s,p]=l([]),D=t.selectedDataSourceIds||[];d(()=>{async function o(){let v=await _();p(v.filter(g=>!g.archivedAt)),m(!1)}o()},[]);function f(o){t.onChange&&t.onChange(o,!0)}function M(o){t.onChange&&t.onChange(o,!1)}return e("div",{className:"DataSourceSelectModal",children:i?e("div",{className:"DataSourceSelectModal__loading",children:e(n,{color:"gray",size:"xl"})}):s.length===0?e("div",{className:"DataSourceSelectModal__empty",children:"No data sources."}):e("div",{className:"DataSourceSelectModal__list",children:s.map(o=>e("div",{className:"DataSourceSelectModal__item",children:[e("div",{className:"DataSourceSelectModal__item__info",children:[e("div",{className:"DataSourceSelectModal__item__id",children:o.id}),e("div",{className:"DataSourceSelectModal__item__description",children:o.description||""})]}),e("div",{className:"DataSourceSelectModal__item__action",children:D.includes(o.id)?e(c,{variant:"light",color:"blue",size:"xs",onClick:()=>M(o.id),children:"Unselect"}):e(c,{variant:"filled",color:"blue",size:"xs",onClick:()=>f(o.id),children:"Select"})})]},o.id))})})}h.id=r;export{L as a,h as b};
@@ -1 +1 @@
1
- import{a as h}from"./chunk-YDO2EDVY.js";import{g as y}from"./chunk-XOQ3KDSR.js";import{a as x}from"./chunk-5MV6XVGA.js";import{c as f,n as g}from"./chunk-EGEB6N4J.js";async function b(e){let t=window.firebase.db,r=window.__ROOT_CTX.rootConfig.projectId,[o,a]=e.split("/",2),i=await h(o),n=f(t,"Projects",r,"Collections",o,"Drafts",a),c=(await g(n)).data()||{},p=new Set;return m(p,i.fields,c.fields||{},i.types||{}),Array.from(p)}async function C(e){let t=window.firebase.db,r=window.__ROOT_CTX.rootConfig.projectId,[o,a]=e.split("/",2),i=await h(o),n=f(t,"Projects",r,"Collections",o,"Drafts",a),c=(await g(n)).data()||{},p=new Map;return d(p,i.fields,c.fields||{},i.types||{}),p}function m(e,t,r,o={}){t.forEach(a=>{if(!a.id)return;let i=r[a.id],n=`@${a.id}`,s=r[n];s?.translate===!1||s?.disableTranslations||R(e,a,i,o,s)})}function d(e,t,r,o={}){t.forEach(a=>{if(!a.id)return;let i=r[a.id],n=`@${a.id}`,s=r[n];if(s?.translate===!1||s?.disableTranslations)return;let c=s?.description;S(e,a,i,o,c,s)})}function R(e,t,r,o={},a){if(!r)return;function i(n){let s=y(n);s&&e.add(s)}if(t.type==="object")m(e,t.fields||[],r,o);else if(t.type==="array"){let n=r._array||[];for(let s of n)R(e,t.of,r[s],o)}else if(t.type==="string"||t.type==="select")t.translate&&i(r);else if(t.type==="image")t.translate&&r&&r.alt&&t.alt!==!1&&a?.alt!==!1&&i(r.alt);else if(t.type==="multiselect"){if(t.translate&&Array.isArray(r))for(let n of r)i(n)}else if(t.type==="oneof"){let n=t.types||[],s;typeof n[0]=="string"?n.includes(r._type)&&(s=o[r._type]):s=n.find(c=>c.name===r._type),s&&m(e,s.fields||[],r,o)}else t.type==="richtext"?t.translate&&T(e,r):console.log(`extract: ignoring field, id=${t.id}, type=${t.type}`)}function S(e,t,r,o={},a,i){if(!r)return;function n(s){let c=y(s);if(c){let p=e.get(c);(!p||!p.description)&&e.set(c,{description:a})}}if(t.type==="object")d(e,t.fields||[],r,o);else if(t.type==="array"){let s=r._array||[];for(let c of s)S(e,t.of,r[c],o,a)}else if(t.type==="string"||t.type==="select")t.translate&&n(r);else if(t.type==="image")t.translate&&r&&r.alt&&t.alt!==!1&&i?.alt!==!1&&n(r.alt);else if(t.type==="multiselect"){if(t.translate&&Array.isArray(r))for(let s of r)n(s)}else if(t.type==="oneof"){let s=t.types||[],c;typeof s[0]=="string"?s.includes(r._type)&&(c=o[r._type]):c=s.find(p=>p.name===r._type),c&&d(e,c.fields||[],r,o)}else if(t.type==="richtext"&&t.translate){let s=new Set;T(s,r),s.forEach(c=>n(c))}}function T(e,t){(t?.blocks||[]).forEach(o=>{l(e,o)})}function l(e,t){if(!t?.type)return;function r(n){if(!n)return;let s=y(n);s&&e.add(s)}function o(n){n&&Object.values(n).forEach(s=>{a(s)})}function a(n){if(typeof n=="string"){r(n);return}if(Array.isArray(n)){n.forEach(s=>a(s));return}x(n)&&Object.values(n).forEach(s=>a(s))}function i(n){n&&n.forEach(s=>{r(s.content),o(s.components),i(s.items)})}t.type==="heading"||t.type==="paragraph"?(r(t.data?.text),o(t.data?.components)):t.type==="orderedList"||t.type==="unorderedList"?i(t.data?.items):t.type==="html"?r(t.data?.html):t.type==="table"&&(t.data?.rows||[]).forEach(s=>{(s.cells||[]).forEach(p=>{(p.blocks||[]).forEach(w=>{l(e,w)})})})}export{b as a,C as b,R as c};
1
+ import{a as h}from"./chunk-YDO2EDVY.js";import{g as y}from"./chunk-UFQSZ6J2.js";import{a as x}from"./chunk-5MV6XVGA.js";import{c as f,n as g}from"./chunk-EGEB6N4J.js";async function b(e){let t=window.firebase.db,r=window.__ROOT_CTX.rootConfig.projectId,[o,a]=e.split("/",2),i=await h(o),n=f(t,"Projects",r,"Collections",o,"Drafts",a),c=(await g(n)).data()||{},p=new Set;return m(p,i.fields,c.fields||{},i.types||{}),Array.from(p)}async function C(e){let t=window.firebase.db,r=window.__ROOT_CTX.rootConfig.projectId,[o,a]=e.split("/",2),i=await h(o),n=f(t,"Projects",r,"Collections",o,"Drafts",a),c=(await g(n)).data()||{},p=new Map;return d(p,i.fields,c.fields||{},i.types||{}),p}function m(e,t,r,o={}){t.forEach(a=>{if(!a.id)return;let i=r[a.id],n=`@${a.id}`,s=r[n];s?.translate===!1||s?.disableTranslations||R(e,a,i,o,s)})}function d(e,t,r,o={}){t.forEach(a=>{if(!a.id)return;let i=r[a.id],n=`@${a.id}`,s=r[n];if(s?.translate===!1||s?.disableTranslations)return;let c=s?.description;S(e,a,i,o,c,s)})}function R(e,t,r,o={},a){if(!r)return;function i(n){let s=y(n);s&&e.add(s)}if(t.type==="object")m(e,t.fields||[],r,o);else if(t.type==="array"){let n=r._array||[];for(let s of n)R(e,t.of,r[s],o)}else if(t.type==="string"||t.type==="select")t.translate&&i(r);else if(t.type==="image")t.translate&&r&&r.alt&&t.alt!==!1&&a?.alt!==!1&&i(r.alt);else if(t.type==="multiselect"){if(t.translate&&Array.isArray(r))for(let n of r)i(n)}else if(t.type==="oneof"){let n=t.types||[],s;typeof n[0]=="string"?n.includes(r._type)&&(s=o[r._type]):s=n.find(c=>c.name===r._type),s&&m(e,s.fields||[],r,o)}else t.type==="richtext"?t.translate&&T(e,r):console.log(`extract: ignoring field, id=${t.id}, type=${t.type}`)}function S(e,t,r,o={},a,i){if(!r)return;function n(s){let c=y(s);if(c){let p=e.get(c);(!p||!p.description)&&e.set(c,{description:a})}}if(t.type==="object")d(e,t.fields||[],r,o);else if(t.type==="array"){let s=r._array||[];for(let c of s)S(e,t.of,r[c],o,a)}else if(t.type==="string"||t.type==="select")t.translate&&n(r);else if(t.type==="image")t.translate&&r&&r.alt&&t.alt!==!1&&i?.alt!==!1&&n(r.alt);else if(t.type==="multiselect"){if(t.translate&&Array.isArray(r))for(let s of r)n(s)}else if(t.type==="oneof"){let s=t.types||[],c;typeof s[0]=="string"?s.includes(r._type)&&(c=o[r._type]):c=s.find(p=>p.name===r._type),c&&d(e,c.fields||[],r,o)}else if(t.type==="richtext"&&t.translate){let s=new Set;T(s,r),s.forEach(c=>n(c))}}function T(e,t){(t?.blocks||[]).forEach(o=>{l(e,o)})}function l(e,t){if(!t?.type)return;function r(n){if(!n)return;let s=y(n);s&&e.add(s)}function o(n){n&&Object.values(n).forEach(s=>{a(s)})}function a(n){if(typeof n=="string"){r(n);return}if(Array.isArray(n)){n.forEach(s=>a(s));return}x(n)&&Object.values(n).forEach(s=>a(s))}function i(n){n&&n.forEach(s=>{r(s.content),o(s.components),i(s.items)})}t.type==="heading"||t.type==="paragraph"?(r(t.data?.text),o(t.data?.components)):t.type==="orderedList"||t.type==="unorderedList"?i(t.data?.items):t.type==="html"?r(t.data?.html):t.type==="table"&&(t.data?.rows||[]).forEach(s=>{(s.cells||[]).forEach(p=>{(p.blocks||[]).forEach(w=>{l(e,w)})})})}export{b as a,C as b,R as c};
@@ -1 +1 @@
1
- import{e as z,j as I}from"./chunk-NXQVLOTK.js";import{c as N,e as L}from"./chunk-3IYZCUPI.js";import{a as C}from"./chunk-X2WHBGTP.js";import{a as w,c as y}from"./chunk-HRGYNHZ3.js";import{b as v}from"./chunk-5MV6XVGA.js";import{Aa as f,Ac as B,Ha as e,V as P,a as g,ea as p,g as M,j as x,va as S}from"./chunk-NZHF733K.js";x();x();function O(o,t){return M(()=>{if(!t.trim())return o;let l=t.toLowerCase();return o.filter(c=>{let[a,u]=c.id.split("/"),r=c.fields||{},n=window.__ROOT_CTX.collections[a],s=v(r,n.preview?.title||"meta.title")||"";return c.id.toLowerCase().includes(l)||s.toLowerCase().includes(l)||u.toLowerCase().includes(l)})},[o,t])}var h="DocPickerModal";function ee(){let o=w(),t=y();return{open:l=>{o.openContextModal(h,{...t,innerProps:l,size:"700px",overflow:"inside"})},close:()=>{o.closeModal(h)}}}function k(o){let{innerProps:t}=o,l=Object.keys(window.__ROOT_CTX.collections);t.collections?.length&&(l=l.filter(i=>t.collections?.includes(i)));let c=[{value:"",label:"Select"}];l.forEach(i=>{c.push({value:i,label:i})});let[a,u]=C("DocPickerModal.lastSelectedCollection",""),r=()=>t.initialCollection?t.initialCollection:a&&l.includes(a)?a:l.length===1?l[0]:"",[n,D]=g(r()),s=i=>{D(i),u(i)};function m(i){t.multiSelect&&t.onChangeMulti?t.onChangeMulti(i.id,!0):t.onChange&&t.onChange(i.id)}function b(i){t.multiSelect&&t.onChangeMulti&&t.onChangeMulti(i.id,!1)}return e("div",{className:"DocPickerModal",children:[l.length===0&&e("div",{className:"DocPickerModal__noCollections",children:"No collections matching schema field definition."}),l.length>0&&e(k.DocsList,{collection:n,onDocSelected:m,onDocUnselected:b,onCollectionChange:s,multiSelect:t.multiSelect,selectedDocIds:t.selectedDocIds,options:{enableSearch:t.enableSearch??!0,enableSort:t.enableSort??!0,enableCreate:t.enableCreate??!0,enableStatusBadges:t.enableStatusBadges??!0,showCollectionSelect:l.length>1,collectionSelectValue:n,collectionSelectOptions:c}})]})}k.DocsList=o=>{let[t,l]=g(""),[c,a]=C(`root::DocPickerModal:${o.collection}:sortBy`,"modifiedAt"),[u,r]=g(!1),[n,D,s]=z(o.collection||"",{orderBy:c}),m=O(s,t),b=[{value:"modifiedAt",label:"Last Modified"},{value:"slug",label:"A-Z"},{value:"slugDesc",label:"Z-A"},{value:"newest",label:"Newest"},{value:"oldest",label:"Oldest"}],i=o.selectedDocIds||[],d=o.options||{};return e("div",{className:"DocPickerModal__DocsList",children:[e("div",{className:"DocPickerModal__DocsList__stickyHeader",children:[d.showCollectionSelect&&e("div",{className:"DocPickerModal__collection__select",children:[e("div",{className:"DocPickerModal__collection__select__label",children:"Content Type:"}),e(f,{data:d.collectionSelectOptions||[],value:d.collectionSelectValue,placeholder:"Select",onChange:_=>{o.onCollectionChange?.(_||"")},size:"xs",radius:0,searchable:!0,autoFocus:!0,dropdownComponent:"div"}),d.collectionSelectValue&&e(p,{variant:"outline",color:"dark",size:"xs",onClick:()=>r(!0),children:"New"})]}),d.enableSearch&&d.collectionSelectValue&&e("div",{className:"DocPickerModal__DocsList__controls",children:[e(S,{placeholder:"Search documents...",value:t,onChange:_=>l(_.target.value),icon:e(B,{size:16}),size:"xs",className:"DocPickerModal__DocsList__controls__search"}),d.enableSort&&e(f,{data:b,value:c,onChange:_=>a(_||"modifiedAt"),size:"xs",className:"DocPickerModal__DocsList__controls__sort"})]}),!n&&s.length>0&&e("div",{className:"DocPickerModal__DocsList__count",children:["Showing ",m.length," of ",s.length," documents"]})]}),e("div",{className:"DocPickerModal__DocsList__docsContainer",children:o.collection?n?e("div",{className:"DocPickerModal__DocsList__loading",children:e(P,{color:"gray",size:"xl"})}):m.length===0?e("div",{className:"DocPickerModal__DocsList__empty",children:s.length===0?"Collection is empty.":"No documents match your search."}):e("div",{className:"DocPickerModal__DocsList__docs",children:m.map(_=>e(k.DocCard,{doc:_,onDocSelected:o.onDocSelected,onDocUnselected:o.onDocUnselected,multiSelect:o.multiSelect,selected:i.includes(_.id),enableStatusBadges:d.enableStatusBadges},_.id))}):e("div",{className:"DocPickerModal__DocsList__empty",children:"Select a content type to view documents"})}),d.collectionSelectValue&&e(I,{collection:d.collectionSelectValue,opened:u,skipNavigation:!0,onClose:()=>{r(!1),D()}})]})};k.DocCard=o=>{let[t,l]=g(!!o.selected),c=o.doc,[a,u]=c.id.split("/"),r=c.fields||{},n=window.__ROOT_CTX.collections[a],D=`/cms/content/${a}/${u}`,s=v(r,n.preview?.title||"meta.title"),m=v(r,n.preview?.image||"meta.image")||n.preview?.defaultImage;return e("div",{className:"DocPickerModal__DocCard",children:[e("div",{className:"DocPickerModal__DocCard__image",onClick:()=>window.open(D,"_blank"),children:e(L,{file:m,width:120,height:90,withPlaceholder:!m?.src})}),e("div",{className:"DocPickerModal__DocCard__content",children:[e("div",{className:"DocPickerModal__DocCard__content__header",children:e("div",{className:"DocPickerModal__DocCard__content__header__docId",onClick:()=>window.open(D,"_blank"),children:c.id})}),e("div",{className:"DocPickerModal__DocCard__content__title",children:e("div",{className:"DocPickerModal__DocCard__content__link",onClick:()=>window.open(D,"_blank"),children:s||"[UNTITLED]"})}),o.enableStatusBadges&&e("div",{className:"DocPickerModal__DocCard__content__badges",children:e(N,{doc:c})})]}),e("div",{className:"DocPickerModal__DocCard__controls",children:e("div",{className:"DocPickerModal__DocCard__controls__buttons",children:o.multiSelect?t?e(p,{variant:"light",color:"blue",size:"xs",onClick:()=>{l(!1),o.onDocUnselected(o.doc)},children:"Unselect"}):e(p,{variant:"filled",color:"blue",size:"xs",onClick:()=>{l(!0),o.onDocSelected(o.doc)},children:"Select"}):e(p,{color:"blue",size:"xs",onClick:()=>o.onDocSelected(o.doc),children:"Select"})})})]})};k.id=h;export{ee as a,k as b};
1
+ import{e as z,j as I}from"./chunk-IKED2IGU.js";import{c as N,e as L}from"./chunk-4IXGYXA2.js";import{a as C}from"./chunk-NQB37NMX.js";import{a as w,c as y}from"./chunk-KPJ53X55.js";import{b as v}from"./chunk-5MV6XVGA.js";import{Ga as e,V as P,a as g,da as p,g as M,j as x,ua as S,za as f,zc as B}from"./chunk-4CUWZQXT.js";x();x();function O(o,t){return M(()=>{if(!t.trim())return o;let l=t.toLowerCase();return o.filter(c=>{let[a,u]=c.id.split("/"),r=c.fields||{},n=window.__ROOT_CTX.collections[a],s=v(r,n.preview?.title||"meta.title")||"";return c.id.toLowerCase().includes(l)||s.toLowerCase().includes(l)||u.toLowerCase().includes(l)})},[o,t])}var h="DocPickerModal";function ee(){let o=w(),t=y();return{open:l=>{o.openContextModal(h,{...t,innerProps:l,size:"700px",overflow:"inside"})},close:()=>{o.closeModal(h)}}}function k(o){let{innerProps:t}=o,l=Object.keys(window.__ROOT_CTX.collections);t.collections?.length&&(l=l.filter(i=>t.collections?.includes(i)));let c=[{value:"",label:"Select"}];l.forEach(i=>{c.push({value:i,label:i})});let[a,u]=C("DocPickerModal.lastSelectedCollection",""),r=()=>t.initialCollection?t.initialCollection:a&&l.includes(a)?a:l.length===1?l[0]:"",[n,D]=g(r()),s=i=>{D(i),u(i)};function m(i){t.multiSelect&&t.onChangeMulti?t.onChangeMulti(i.id,!0):t.onChange&&t.onChange(i.id)}function b(i){t.multiSelect&&t.onChangeMulti&&t.onChangeMulti(i.id,!1)}return e("div",{className:"DocPickerModal",children:[l.length===0&&e("div",{className:"DocPickerModal__noCollections",children:"No collections matching schema field definition."}),l.length>0&&e(k.DocsList,{collection:n,onDocSelected:m,onDocUnselected:b,onCollectionChange:s,multiSelect:t.multiSelect,selectedDocIds:t.selectedDocIds,options:{enableSearch:t.enableSearch??!0,enableSort:t.enableSort??!0,enableCreate:t.enableCreate??!0,enableStatusBadges:t.enableStatusBadges??!0,showCollectionSelect:l.length>1,collectionSelectValue:n,collectionSelectOptions:c}})]})}k.DocsList=o=>{let[t,l]=g(""),[c,a]=C(`root::DocPickerModal:${o.collection}:sortBy`,"modifiedAt"),[u,r]=g(!1),[n,D,s]=z(o.collection||"",{orderBy:c}),m=O(s,t),b=[{value:"modifiedAt",label:"Last Modified"},{value:"slug",label:"A-Z"},{value:"slugDesc",label:"Z-A"},{value:"newest",label:"Newest"},{value:"oldest",label:"Oldest"}],i=o.selectedDocIds||[],d=o.options||{};return e("div",{className:"DocPickerModal__DocsList",children:[e("div",{className:"DocPickerModal__DocsList__stickyHeader",children:[d.showCollectionSelect&&e("div",{className:"DocPickerModal__collection__select",children:[e("div",{className:"DocPickerModal__collection__select__label",children:"Content Type:"}),e(f,{data:d.collectionSelectOptions||[],value:d.collectionSelectValue,placeholder:"Select",onChange:_=>{o.onCollectionChange?.(_||"")},size:"xs",radius:0,searchable:!0,autoFocus:!0,dropdownComponent:"div"}),d.collectionSelectValue&&e(p,{variant:"outline",color:"dark",size:"xs",onClick:()=>r(!0),children:"New"})]}),d.enableSearch&&d.collectionSelectValue&&e("div",{className:"DocPickerModal__DocsList__controls",children:[e(S,{placeholder:"Search documents...",value:t,onChange:_=>l(_.target.value),icon:e(B,{size:16}),size:"xs",className:"DocPickerModal__DocsList__controls__search"}),d.enableSort&&e(f,{data:b,value:c,onChange:_=>a(_||"modifiedAt"),size:"xs",className:"DocPickerModal__DocsList__controls__sort"})]}),!n&&s.length>0&&e("div",{className:"DocPickerModal__DocsList__count",children:["Showing ",m.length," of ",s.length," documents"]})]}),e("div",{className:"DocPickerModal__DocsList__docsContainer",children:o.collection?n?e("div",{className:"DocPickerModal__DocsList__loading",children:e(P,{color:"gray",size:"xl"})}):m.length===0?e("div",{className:"DocPickerModal__DocsList__empty",children:s.length===0?"Collection is empty.":"No documents match your search."}):e("div",{className:"DocPickerModal__DocsList__docs",children:m.map(_=>e(k.DocCard,{doc:_,onDocSelected:o.onDocSelected,onDocUnselected:o.onDocUnselected,multiSelect:o.multiSelect,selected:i.includes(_.id),enableStatusBadges:d.enableStatusBadges},_.id))}):e("div",{className:"DocPickerModal__DocsList__empty",children:"Select a content type to view documents"})}),d.collectionSelectValue&&e(I,{collection:d.collectionSelectValue,opened:u,skipNavigation:!0,onClose:()=>{r(!1),D()}})]})};k.DocCard=o=>{let[t,l]=g(!!o.selected),c=o.doc,[a,u]=c.id.split("/"),r=c.fields||{},n=window.__ROOT_CTX.collections[a],D=`/cms/content/${a}/${u}`,s=v(r,n.preview?.title||"meta.title"),m=v(r,n.preview?.image||"meta.image")||n.preview?.defaultImage;return e("div",{className:"DocPickerModal__DocCard",children:[e("div",{className:"DocPickerModal__DocCard__image",onClick:()=>window.open(D,"_blank"),children:e(L,{file:m,width:120,height:90,withPlaceholder:!m?.src})}),e("div",{className:"DocPickerModal__DocCard__content",children:[e("div",{className:"DocPickerModal__DocCard__content__header",children:e("div",{className:"DocPickerModal__DocCard__content__header__docId",onClick:()=>window.open(D,"_blank"),children:c.id})}),e("div",{className:"DocPickerModal__DocCard__content__title",children:e("div",{className:"DocPickerModal__DocCard__content__link",onClick:()=>window.open(D,"_blank"),children:s||"[UNTITLED]"})}),o.enableStatusBadges&&e("div",{className:"DocPickerModal__DocCard__content__badges",children:e(N,{doc:c})})]}),e("div",{className:"DocPickerModal__DocCard__controls",children:e("div",{className:"DocPickerModal__DocCard__controls__buttons",children:o.multiSelect?t?e(p,{variant:"light",color:"blue",size:"xs",onClick:()=>{l(!1),o.onDocUnselected(o.doc)},children:"Unselect"}):e(p,{variant:"filled",color:"blue",size:"xs",onClick:()=>{l(!0),o.onDocSelected(o.doc)},children:"Select"}):e(p,{color:"blue",size:"xs",onClick:()=>o.onDocSelected(o.doc),children:"Select"})})})]})};k.id=h;export{ee as a,k as b};
@@ -1 +1 @@
1
- import{f as a}from"./chunk-AL3TN2KI.js";import{Ga as r,Ha as i}from"./chunk-NZHF733K.js";import{d as l}from"./chunk-KUCVLANF.js";function s(o,n){if(n in o)return o[n];let e=`*@${n.split("@").at(-1)}`;return e in o?o[e]:null}function d(o,n){let t=s(o,n);return t==="ADMIN"||t==="EDITOR"}function c(o,n){let t=s(o,n);return t==="ADMIN"||t==="EDITOR"||t==="CONTRIBUTOR"}function f(o){return o.condition?i(r,{label:o.label,children:i("div",{className:a(o.className,"ConditionalTooltip"),style:o.style,children:i("div",{className:"ConditionalTooltip__content",children:o.children})})}):i(l,{children:o.children})}export{d as a,c as b,f as c};
1
+ import{f as a}from"./chunk-RPOP6MVJ.js";import{Fa as r,Ga as i}from"./chunk-4CUWZQXT.js";import{d as l}from"./chunk-KUCVLANF.js";function s(o,n){if(n in o)return o[n];let e=`*@${n.split("@").at(-1)}`;return e in o?o[e]:null}function d(o,n){let t=s(o,n);return t==="ADMIN"||t==="EDITOR"}function c(o,n){let t=s(o,n);return t==="ADMIN"||t==="EDITOR"||t==="CONTRIBUTOR"}function f(o){return o.condition?i(r,{label:o.label,children:i("div",{className:a(o.className,"ConditionalTooltip"),style:o.style,children:i("div",{className:"ConditionalTooltip__content",children:o.children})})}):i(l,{children:o.children})}export{d as a,c as b,f as c};
@@ -0,0 +1 @@
1
+ import{a as k}from"./chunk-N4DFAIC5.js";import{c as z}from"./chunk-NMBXHKIJ.js";import{B as A,C as I,x as y}from"./chunk-NQ5ARARP.js";import{a as b}from"./chunk-N5Y5OWTV.js";import{f as h}from"./chunk-5MV6XVGA.js";import{f as u}from"./chunk-RPOP6MVJ.js";import{Dc as N,Ga as e,U as p,Uc as C,V as g,a as n,c as v,da as S,e as w,j as V}from"./chunk-4CUWZQXT.js";import{d as _}from"./chunk-KUCVLANF.js";V();V();function P(o){let r=o.docId,[i,d]=n("idle"),[c,f]=n(""),[s,l]=n(""),m=w(!1);async function x(){d("loading");try{let t=await I(r,{beforeVersion:o.beforeVersion,afterVersion:o.afterVersion});f(t),d("success")}catch(t){console.error(t),l(t instanceof Error?t.message:"Unknown error"),d("error")}}function D(){m.current||(m.current=!0,x())}let a;return i==="idle"||i==="loading"?a=e("div",{className:"AiSummary__loading",children:e(g,{size:"md",color:"gray"})}):i==="error"?a=e(b,{className:"AiSummary__content",size:"body-sm",color:"gray",children:["Failed to load AI summary.",s&&e(_,{children:[e("br",{}),s]})]}):c?a=e(z,{className:"AiSummary__content",code:c}):a=e(b,{className:"AiSummary__content",size:"body-sm",color:"gray",children:"No AI summary available for this draft yet."}),e("div",{className:u(o.className,"AiSummary"),children:e(p,{iconPosition:"right",onChange:()=>D(),disableIconRotation:!0,children:e(p.Item,{label:"Summarize changes",icon:e(N,{stroke:"1.5"}),iconPosition:"left",children:a})})})}function se(o){let r=o.left,i=o.right,[d,c]=n(!1),[f,s]=n(null),[l,m]=n(null),D=(window.__ROOT_CTX?.experiments||{}).ai&&r.docId===i.docId&&o.showAiSummary!==!1,a=h(T(f?.fields||{})),t=h(T(l?.fields||{})),F=!d&&f&&l&&a===t,M=`/cms/compare?left=${B(r)}&right=${B(i)}`;async function $(){c(!0);let[j,E]=await Promise.all([y(r.docId,r.versionId),y(i.docId,i.versionId)]);s(j),m(E),c(!1)}return v(()=>{$()},[]),d?e("div",{className:"DocDiffViewer DocDiffViewer--loading",children:e(g,{size:"md",color:"gray"})}):e(_,{children:[D&&e(P,{className:"DocDiffViewer__aiSummary",docId:r.docId,beforeVersion:String(r.versionId),afterVersion:String(i.versionId)}),e("div",{className:u(o.className,"DocDiffViewer"),children:[o.showExpandButton&&e("div",{className:"DocDiffViewer__expand",children:e(S,{component:"a",variant:"default",size:"xs",compact:!0,href:M,target:"_blank",children:"Open in new tab"})}),e("div",{className:"DocDiffViewer__header",children:[e("div",{className:"DocDiffViewer__header__label",children:[e("div",{className:"DocDiffViewer__header__label__title",children:[o.left.docId,"@",o.left.versionId]}),e("div",{className:"DocDiffViewer__header__label__meta",children:R(f)})]}),e("div",{className:"DocDiffViewer__header__label",children:[e("div",{className:"DocDiffViewer__header__label__title",children:[o.right.docId,"@",o.right.versionId]}),e("div",{className:"DocDiffViewer__header__label__meta",children:R(l)})]})]}),e("div",{className:"DocDiffViewer__diff",children:F?e("div",{className:"DocDiffViewer__identical",children:[e(C,{size:20}),e("span",{children:"No changes. Both versions are identical."})]}):e(k,{oldCode:a,newCode:t})})]})]})}function R(o){if(!o?.sys?.modifiedAt)return"never";let r=o.sys.modifiedAt.toDate();return`${new Intl.DateTimeFormat("en-US",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}).format(r)} by ${o.sys.modifiedBy}`}function T(o){return A(o,{removeArrayKey:!0})}function B(o){return encodeURIComponent(`${o.docId}@${o.versionId}`).replaceAll("%2F","/").replaceAll("%40","@")}export{P as a,se as b};
@@ -1 +1 @@
1
- import{k as T}from"./chunk-4KE2SZKH.js";import{f as C}from"./chunk-AFWBSIPL.js";import{f as i}from"./chunk-ORXEMIQC.js";import{a as b,b as g,c as n,g as m,i as R,n as I,o as y,q as l,s as j,t as d,u as f,w as _}from"./chunk-EGEB6N4J.js";var c="Releases";async function E(e,t){if(!e)throw new Error("missing data source id");let r=window.__ROOT_CTX.rootConfig.projectId,o=window.firebase.db,s=n(o,"Projects",r,c,e);await j(o,async a=>{if((await a.get(s)).exists())throw new Error(`release exists: ${e}`);await a.set(s,{...t,id:e,createdAt:f(),createdBy:window.firebase.user.email})}),i("release.create",{metadata:{releaseId:e}})}async function S(){let e=window.__ROOT_CTX.rootConfig.projectId,t=window.firebase.db,r=g(t,"Projects",e,c),o=m(r,R("createdAt","desc")),s=await y(o),a=[];return s.forEach(w=>{a.push(w.data())}),a}async function u(e){let t=window.__ROOT_CTX.rootConfig.projectId,r=window.firebase.db,o=n(r,"Projects",t,c,e),s=await I(o);return s.exists()?s.data():null}async function D(e,t){let r=window.__ROOT_CTX.rootConfig.projectId,o=window.firebase.db,s=n(o,"Projects",r,c,e);await l(s,t),i("release.save",{metadata:{releaseId:e}})}async function X(e){let t=window.__ROOT_CTX.rootConfig.projectId,r=window.firebase.db,o=n(r,"Projects",t,c,e);await l(o,{archivedAt:f(),archivedBy:window.firebase.user.email}),i("release.archive",{metadata:{releaseId:e}})}async function M(e){let t=window.__ROOT_CTX.rootConfig.projectId,r=window.firebase.db,o=n(r,"Projects",t,c,e);await l(o,{archivedAt:d(),archivedBy:d()}),i("release.unarchive",{metadata:{releaseId:e}})}async function k(e){let t=await u(e);if(!t)throw new Error(`release not found: ${e}`);if(t.archivedAt)throw new Error(`release is archived: ${e}`);let r=t.docIds||[],o=t.dataSourceIds||[];if(r.length===0&&o.length===0)throw new Error(`no docs or data sources to publish for release: ${e}`);let s=window.__ROOT_CTX.rootConfig.projectId,a=window.firebase.db,w=n(a,"Projects",s,c,e),p=_(a);p.update(w,{publishedAt:f(),publishedBy:window.firebase.user.email,scheduledAt:d(),scheduledBy:d()}),o.length>0&&await T(o,{batch:p,commitBatch:!1}),await C(r,{batch:p,releaseId:e,publishMessage:t.description}),console.log(`published release: ${e}`);let h={releaseId:e,docIds:r,dataSourceIds:o};t.description&&(h.publishMessage=t.description),i("release.publish",{metadata:h})}async function q(e,t){let r=await u(e);if(!r)throw new Error(`release not found: ${e}`);if(r.archivedAt)throw new Error(`release is archived: ${e}`);typeof t=="number"&&(t=b.fromMillis(t));let o=window.__ROOT_CTX.rootConfig.projectId,s=window.firebase.db,a=n(s,"Projects",o,c,e);await l(a,{scheduledAt:t,scheduledBy:window.firebase.user.email}),i("release.publish",{metadata:{releaseId:e,scheduledAt:t.toMillis()}})}var O=["blue","bold","bright","calm","cool","cosmic","crisp","dark","eager","fast","fresh","gentle","golden","grand","happy","idle","jolly","keen","lively","lucky","mellow","mighty","neat","noble","proud","quiet","rapid","sharp","silver","swift","vivid","warm","wild"],v=["arrow","beacon","breeze","canyon","cedar","comet","coral","crane","dune","eagle","ember","falcon","flame","flint","forest","fox","glacier","harbor","hawk","lantern","maple","meadow","orbit","otter","peak","pine","reef","river","sage","spark","spruce","stone","summit","tide","wolf"];function N(){let e=new Date,t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),o=String(e.getDate()).padStart(2,"0"),s=O[Math.floor(Math.random()*O.length)],a=v[Math.floor(Math.random()*v.length)];return`${t}${r}${o}-${s}-${a}`}async function F(e){if(!await u(e))throw new Error(`release not found: ${e}`);let r=window.__ROOT_CTX.rootConfig.projectId,o=window.firebase.db,s=n(o,"Projects",r,c,e);await l(s,{scheduledAt:d(),scheduledBy:d()}),i("release.unschedule",{metadata:{releaseId:e}})}export{E as a,S as b,u as c,D as d,X as e,M as f,k as g,q as h,N as i,F as j};
1
+ import{k as T}from"./chunk-4KE2SZKH.js";import{f as C}from"./chunk-NQ5ARARP.js";import{f as i}from"./chunk-ORXEMIQC.js";import{a as b,b as g,c as n,g as m,i as R,n as I,o as y,q as l,s as j,t as d,u as f,w as _}from"./chunk-EGEB6N4J.js";var c="Releases";async function E(e,t){if(!e)throw new Error("missing data source id");let r=window.__ROOT_CTX.rootConfig.projectId,o=window.firebase.db,s=n(o,"Projects",r,c,e);await j(o,async a=>{if((await a.get(s)).exists())throw new Error(`release exists: ${e}`);await a.set(s,{...t,id:e,createdAt:f(),createdBy:window.firebase.user.email})}),i("release.create",{metadata:{releaseId:e}})}async function S(){let e=window.__ROOT_CTX.rootConfig.projectId,t=window.firebase.db,r=g(t,"Projects",e,c),o=m(r,R("createdAt","desc")),s=await y(o),a=[];return s.forEach(w=>{a.push(w.data())}),a}async function u(e){let t=window.__ROOT_CTX.rootConfig.projectId,r=window.firebase.db,o=n(r,"Projects",t,c,e),s=await I(o);return s.exists()?s.data():null}async function D(e,t){let r=window.__ROOT_CTX.rootConfig.projectId,o=window.firebase.db,s=n(o,"Projects",r,c,e);await l(s,t),i("release.save",{metadata:{releaseId:e}})}async function X(e){let t=window.__ROOT_CTX.rootConfig.projectId,r=window.firebase.db,o=n(r,"Projects",t,c,e);await l(o,{archivedAt:f(),archivedBy:window.firebase.user.email}),i("release.archive",{metadata:{releaseId:e}})}async function M(e){let t=window.__ROOT_CTX.rootConfig.projectId,r=window.firebase.db,o=n(r,"Projects",t,c,e);await l(o,{archivedAt:d(),archivedBy:d()}),i("release.unarchive",{metadata:{releaseId:e}})}async function k(e){let t=await u(e);if(!t)throw new Error(`release not found: ${e}`);if(t.archivedAt)throw new Error(`release is archived: ${e}`);let r=t.docIds||[],o=t.dataSourceIds||[];if(r.length===0&&o.length===0)throw new Error(`no docs or data sources to publish for release: ${e}`);let s=window.__ROOT_CTX.rootConfig.projectId,a=window.firebase.db,w=n(a,"Projects",s,c,e),p=_(a);p.update(w,{publishedAt:f(),publishedBy:window.firebase.user.email,scheduledAt:d(),scheduledBy:d()}),o.length>0&&await T(o,{batch:p,commitBatch:!1}),await C(r,{batch:p,releaseId:e,publishMessage:t.description}),console.log(`published release: ${e}`);let h={releaseId:e,docIds:r,dataSourceIds:o};t.description&&(h.publishMessage=t.description),i("release.publish",{metadata:h})}async function q(e,t){let r=await u(e);if(!r)throw new Error(`release not found: ${e}`);if(r.archivedAt)throw new Error(`release is archived: ${e}`);typeof t=="number"&&(t=b.fromMillis(t));let o=window.__ROOT_CTX.rootConfig.projectId,s=window.firebase.db,a=n(s,"Projects",o,c,e);await l(a,{scheduledAt:t,scheduledBy:window.firebase.user.email}),i("release.publish",{metadata:{releaseId:e,scheduledAt:t.toMillis()}})}var O=["blue","bold","bright","calm","cool","cosmic","crisp","dark","eager","fast","fresh","gentle","golden","grand","happy","idle","jolly","keen","lively","lucky","mellow","mighty","neat","noble","proud","quiet","rapid","sharp","silver","swift","vivid","warm","wild"],v=["arrow","beacon","breeze","canyon","cedar","comet","coral","crane","dune","eagle","ember","falcon","flame","flint","forest","fox","glacier","harbor","hawk","lantern","maple","meadow","orbit","otter","peak","pine","reef","river","sage","spark","spruce","stone","summit","tide","wolf"];function N(){let e=new Date,t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),o=String(e.getDate()).padStart(2,"0"),s=O[Math.floor(Math.random()*O.length)],a=v[Math.floor(Math.random()*v.length)];return`${t}${r}${o}-${s}-${a}`}async function F(e){if(!await u(e))throw new Error(`release not found: ${e}`);let r=window.__ROOT_CTX.rootConfig.projectId,o=window.firebase.db,s=n(o,"Projects",r,c,e);await l(s,{scheduledAt:d(),scheduledBy:d()}),i("release.unschedule",{metadata:{releaseId:e}})}export{E as a,S as b,u as c,D as d,X as e,M as f,k as g,q as h,N as i,F as j};
@@ -0,0 +1,3 @@
1
+ import{a as C,f as h}from"./chunk-ORXEMIQC.js";import{b as m,c as g,g as p,h as b,n as y,o as x,q as _,v as f,w as u}from"./chunk-EGEB6N4J.js";function S(){let t=window.__ROOT_CTX.rootConfig.projectId,n=window.firebase.db;return m(n,"Projects",t,"Translations")}async function $(t){let n=S(),s=t?.tags?p(n,b("tags","array-contains-any",t.tags)):p(n),a=await x(s),e={};return a.forEach(r=>{let o=r.id;e[o]=r.data()}),e}async function k(t){let n=window.__ROOT_CTX.rootConfig.projectId,s=window.firebase.db,a=g(s,"Projects",n,"Translations",t);return(await y(a)).data()}async function H(t,n){let s=window.__ROOT_CTX.rootConfig.projectId,a=window.firebase.db,e=g(a,"Projects",s,"Translations",t),r={};for(let o in n){if(o==="tags"){r.tags=n.tags;continue}let c=O(o);c&&(r[c]=n[o])}console.log("updating translations: ",r),await _(e,r),h("translations.save",{metadata:{hash:t},throttle:5*C.minute,throttleId:t})}async function U(t,n){let s=n?.mode??"replace",a=window.__ROOT_CTX.rootConfig.projectId,e=window.firebase.db,r=500;for(let o=0;o<t.length;o+=r){let c=u(e);t.slice(o,o+r).forEach(({hash:l,tags:d})=>{let i=g(e,"Projects",a,"Translations",l);s==="union"?c.update(i,{tags:f(...d)}):c.update(i,{tags:d})}),await c.commit()}}async function A(t){return P(j(t))}async function P(t){let s=new TextEncoder().encode(t),a=await crypto.subtle.digest("SHA-1",s);return Array.from(new Uint8Array(a)).map(o=>o.toString(16).padStart(2,"0")).join("")}function j(t){return String(t).trim().split(`
2
+ `).map(s=>X(s)).join(`
3
+ `)}function X(t){return String(t).trimEnd().replace(/&nbsp;$/,"")}var R=new Map;function L(t){let n=R.get(t);if(n)return n;let s=t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),a=new RegExp(`^${s}$`,"i");return R.set(t,a),a}function q(t){return(window.__ROOT_CTX.excludeLocalesFromTranslations||[]).some(s=>L(s).test(t))}function O(t){let s=(window.__ROOT_CTX.rootConfig.i18n||{}).locales||["en"];for(let a of s)if(String(a).toLowerCase()===t.toLowerCase())return a;return null}async function B(t,n){let s=window.__ROOT_CTX.rootConfig.projectId,a=window.firebase.db,e=500,r=await Promise.all(t.map(async o=>({hash:await A(o.source),locales:o.locales,source:o.source})));for(let o=0;o<r.length;o+=e){let c=u(a),w=r.slice(o,o+e);for(let l of w){let d=g(a,"Projects",s,"Translations",l.hash),i={source:l.source};for(let[E,I]of Object.entries(l.locales)){let T=O(E);T&&(i[T]=j(I))}n?.tags?.length&&(i.tags=f(...n.tags)),c.set(d,i,{merge:!0})}await c.commit()}h("translations.batch_save",{metadata:{count:t.length}})}export{S as a,$ as b,k as c,H as d,U as e,A as f,j as g,q as h,B as i};
@@ -1 +1 @@
1
- import{h as M}from"./chunk-RSVO46S3.js";import{a as n,c as _}from"./chunk-HRGYNHZ3.js";import{b as h}from"./chunk-62UWGWON.js";import{a as u}from"./chunk-I6ICVKEC.js";import{e as f}from"./chunk-ORXEMIQC.js";import{a as m}from"./chunk-EGEB6N4J.js";import{Ha as e,a as i,e as c,ea as d,j as I}from"./chunk-NZHF733K.js";I();var S="ScheduleReleaseModal";function F(l){let t=n(),a=_();return{open:()=>{t.openContextModal(S,{...a,title:`Schedule release: ${l.releaseId}`,innerProps:l})}}}function T(l){let{innerProps:t,context:a,id:g}=l,[s,x]=i(""),[R,r]=i(!1),v=c(null),b=n();async function w(){r(!0),await h(async()=>{let o=Math.floor(new Date(s).getTime());if(Math.floor(new Date().getTime())>=o)throw new Error("bad datetime, please choose a date in the future");let y=m.fromMillis(o);await M(t.releaseId,o),u({title:"Scheduled!",message:`Release ${t.releaseId} will go live ${s}.`,autoClose:1e4}),b.closeAll(),t.onScheduled&&t.onScheduled(y)}),r(!1)}return e("div",{className:"ScheduleReleaseModal",children:e("div",{className:"ScheduleReleaseModal__content",children:e("form",{className:"ScheduleReleaseModal__form",onSubmit:o=>{o.preventDefault(),w()},children:[e("div",{className:"ScheduleReleaseModal__form__description",children:"Content in the release will go live at the datetime specified below."}),e("div",{className:"ScheduleReleaseModal__form__dateInput",children:[e("input",{ref:v,type:"datetime-local",value:s,min:f(),onChange:o=>{let p=o.target;x(p.value)}}),e("div",{className:"ScheduleReleaseModal__form__dateInput__help",children:["timezone: ",Intl.DateTimeFormat().resolvedOptions().timeZone]})]}),e("div",{className:"ScheduleReleaseModal__form__buttons",children:[e(d,{variant:"outline",onClick:()=>a.closeModal(g),type:"button",size:"xs",color:"dark",children:"Cancel"}),e(d,{variant:"filled",size:"xs",color:"dark",loading:R,type:"submit",children:"Schedule"})]})]})})})}T.id=S;export{F as a,T as b};
1
+ import{h as M}from"./chunk-UA7UCTX5.js";import{a as n,c as _}from"./chunk-KPJ53X55.js";import{b as h}from"./chunk-CVGYBXVH.js";import{a as u}from"./chunk-AXETBZ6T.js";import{e as f}from"./chunk-ORXEMIQC.js";import{a as m}from"./chunk-EGEB6N4J.js";import{Ga as e,a as i,da as d,e as c,j as I}from"./chunk-4CUWZQXT.js";I();var S="ScheduleReleaseModal";function F(l){let t=n(),a=_();return{open:()=>{t.openContextModal(S,{...a,title:`Schedule release: ${l.releaseId}`,innerProps:l})}}}function T(l){let{innerProps:t,context:a,id:g}=l,[s,x]=i(""),[R,r]=i(!1),v=c(null),b=n();async function w(){r(!0),await h(async()=>{let o=Math.floor(new Date(s).getTime());if(Math.floor(new Date().getTime())>=o)throw new Error("bad datetime, please choose a date in the future");let y=m.fromMillis(o);await M(t.releaseId,o),u({title:"Scheduled!",message:`Release ${t.releaseId} will go live ${s}.`,autoClose:1e4}),b.closeAll(),t.onScheduled&&t.onScheduled(y)}),r(!1)}return e("div",{className:"ScheduleReleaseModal",children:e("div",{className:"ScheduleReleaseModal__content",children:e("form",{className:"ScheduleReleaseModal__form",onSubmit:o=>{o.preventDefault(),w()},children:[e("div",{className:"ScheduleReleaseModal__form__description",children:"Content in the release will go live at the datetime specified below."}),e("div",{className:"ScheduleReleaseModal__form__dateInput",children:[e("input",{ref:v,type:"datetime-local",value:s,min:f(),onChange:o=>{let p=o.target;x(p.value)}}),e("div",{className:"ScheduleReleaseModal__form__dateInput__help",children:["timezone: ",Intl.DateTimeFormat().resolvedOptions().timeZone]})]}),e("div",{className:"ScheduleReleaseModal__form__buttons",children:[e(d,{variant:"outline",onClick:()=>a.closeModal(g),type:"button",size:"xs",color:"dark",children:"Cancel"}),e(d,{variant:"filled",size:"xs",color:"dark",loading:R,type:"submit",children:"Schedule"})]})]})})})}T.id=S;export{F as a,T as b};
@@ -1 +1 @@
1
- import{L as m,a,c as f,j as O}from"./chunk-NZHF733K.js";O();var G=["https://www.googleapis.com/auth/drive.file","https://www.googleapis.com/auth/spreadsheets"],P=["https://www.googleapis.com/discovery/v1/apis/drive/v3/rest","https://sheets.googleapis.com/$discovery/rest?version=v4"];function R(){let o=window.__ROOT_CTX.rootConfig.projectId,t=!!(window.__ROOT_CTX.gapi?.apiKey&&window.__ROOT_CTX.gapi?.clientId),[e,n]=a(t),[i,w]=a(0),[s,h]=m({key:`root-cms::${o}::gapi-user-consent`,defaultValue:{}});async function C(){await Promise.all([E(),b()]),n(!1)}f(()=>{t&&C()},[]);function _(r){return new Promise(v=>{let g=window.__ROOT_CTX.gapi.clientId,c=Array.from(new Set([...G,...r?.scopes||[]])),u=google.accounts.oauth2.initTokenClient({client_id:g,scope:c.join(" "),callback:async I=>{let y=l()+parseInt(I.expires_in);w(y),h({at:l(),clientId:g,scopes:c}),v()}});s&&k(s,c)?(console.log("requesting token without prompt"),u.requestAccessToken({prompt:""})):(console.log("requesting token with prompt"),u.requestAccessToken({prompt:"consent"}))})}function S(){return l()<i}function T(r){return s?.scopes?.includes(r)||!1}return{enabled:t,loading:e,isLoggedIn:S,login:_,hasScope:T}}function k(o,t){if(!o||!o.at)return!1;let e=window.__ROOT_CTX.gapi?.clientId;if(o.clientId!==e)return!1;let n=o.scopes||[];return t.every(i=>n.includes(i))}function l(){return Math.floor(new Date().getTime()/1e3)}var p=null;async function E(){return p||(p=new Promise((o,t)=>{let e=document.createElement("script");e.src="https://apis.google.com/js/api.js",e.onload=()=>{gapi.load("client",async()=>{try{await gapi.client.init({}),await Promise.all(P.map(n=>gapi.client.load(n))),console.log("gapi loaded"),o()}catch(n){console.error("Error initializing gapi:",n),t(n)}})},e.onerror=()=>{console.error("gapi script failed to load"),t(new Error("gapi script failed to load"))},document.head.appendChild(e)})),p}var d=null;async function b(){return d||(d=new Promise((o,t)=>{let e=document.createElement("script");e.src="https://accounts.google.com/gsi/client",e.onload=()=>{o()},e.onerror=()=>{console.error("gis script failed to load"),t(new Error("gis script failed to load"))},document.head.appendChild(e)})),d}export{R as a};
1
+ import{L as m,a,c as f,j as O}from"./chunk-4CUWZQXT.js";O();var G=["https://www.googleapis.com/auth/drive.file","https://www.googleapis.com/auth/spreadsheets"],P=["https://www.googleapis.com/discovery/v1/apis/drive/v3/rest","https://sheets.googleapis.com/$discovery/rest?version=v4"];function R(){let o=window.__ROOT_CTX.rootConfig.projectId,t=!!(window.__ROOT_CTX.gapi?.apiKey&&window.__ROOT_CTX.gapi?.clientId),[e,n]=a(t),[i,w]=a(0),[s,h]=m({key:`root-cms::${o}::gapi-user-consent`,defaultValue:{}});async function C(){await Promise.all([E(),b()]),n(!1)}f(()=>{t&&C()},[]);function _(r){return new Promise(v=>{let g=window.__ROOT_CTX.gapi.clientId,c=Array.from(new Set([...G,...r?.scopes||[]])),u=google.accounts.oauth2.initTokenClient({client_id:g,scope:c.join(" "),callback:async I=>{let y=l()+parseInt(I.expires_in);w(y),h({at:l(),clientId:g,scopes:c}),v()}});s&&k(s,c)?(console.log("requesting token without prompt"),u.requestAccessToken({prompt:""})):(console.log("requesting token with prompt"),u.requestAccessToken({prompt:"consent"}))})}function S(){return l()<i}function T(r){return s?.scopes?.includes(r)||!1}return{enabled:t,loading:e,isLoggedIn:S,login:_,hasScope:T}}function k(o,t){if(!o||!o.at)return!1;let e=window.__ROOT_CTX.gapi?.clientId;if(o.clientId!==e)return!1;let n=o.scopes||[];return t.every(i=>n.includes(i))}function l(){return Math.floor(new Date().getTime()/1e3)}var p=null;async function E(){return p||(p=new Promise((o,t)=>{let e=document.createElement("script");e.src="https://apis.google.com/js/api.js",e.onload=()=>{gapi.load("client",async()=>{try{await gapi.client.init({}),await Promise.all(P.map(n=>gapi.client.load(n))),console.log("gapi loaded"),o()}catch(n){console.error("Error initializing gapi:",n),t(n)}})},e.onerror=()=>{console.error("gapi script failed to load"),t(new Error("gapi script failed to load"))},document.head.appendChild(e)})),p}var d=null;async function b(){return d||(d=new Promise((o,t)=>{let e=document.createElement("script");e.src="https://accounts.google.com/gsi/client",e.onload=()=>{o()},e.onerror=()=>{console.error("gis script failed to load"),t(new Error("gis script failed to load"))},document.head.appendChild(e)})),d}export{R as a};
@@ -1,4 +1,4 @@
1
- import{a as _t,b as ht,c as ut,d as tt}from"./chunk-PHBMVORG.js";import{a as lt,b as mt,d as Z}from"./chunk-JZFTZ4X4.js";import{b as dt,d as ct}from"./chunk-HKINZLMW.js";import{f as pt}from"./chunk-SKEP5WYH.js";import{f as K}from"./chunk-5MV6XVGA.js";import{d as at,f as M}from"./chunk-AL3TN2KI.js";import{$a as X,Bc as rt,Ga as O,Ha as t,Pc as st,Uc as B,V,W as E,_a as q,a as p,ab as Y,c as k,ca as J,e as N,ea as S,ec as G,g as ot,h as T,j as At,jc as Q,kc as it,mb as nt,ra as $,vc as j}from"./chunk-NZHF733K.js";import{d as et}from"./chunk-KUCVLANF.js";At();function ft(o){let{size:e=14}=o,a=e*3.57,i=e*2;return t("div",{className:"BouncingLoader",style:{"--dot-size":`${e}px`,width:`${a}px`,height:`${i}px`}})}var W=[{id:"read",label:"Read only",description:"Inspect CMS content without planning or applying writes."},{id:"approve",label:"Ask before writing",description:"Read freely, then pause for approval before draft edits."},{id:"auto",label:"Auto-apply draft edits",description:"Apply draft-only writes without approval in this chat."}],It="root-cms.ai.executionMode",vt="root-cms.ai.selectedModel";function bt(o){return W.some(e=>e.id===o)}function Rt(){if(typeof window>"u")return"approve";try{let o=window.localStorage.getItem(It);if(bt(o))return o}catch(o){console.error("failed to read AI execution mode preference",o)}return"approve"}function yt(o){if(typeof window>"u")return null;try{let e=window.localStorage.getItem(vt);if(e&&o.some(a=>a.id===e))return e}catch(e){console.error("failed to read AI model preference",e)}return null}function wt(o){if(!(typeof window>"u"))try{window.localStorage.setItem(vt,o)}catch(e){console.error("failed to save AI model preference",e)}}function kt(o){if(!(typeof window>"u"))try{window.localStorage.setItem(It,o)}catch(e){console.error("failed to save AI execution mode preference",e)}}var U="";function Ie(o){let[e,a]=p(null),[i,m]=p("");k(()=>{let r=!0;return fetch("/cms/api/ai.config",{credentials:"include"}).then(async l=>{let g=await l.json();r&&a(g)}).catch(l=>{r&&m(String(l))}),()=>{r=!1}},[]);let h=!!e?.enabled&&(e.models?.length||0)>0;return t("div",{className:M("RootAIChat",`RootAIChat--${o.variant}`),children:!e&&!i?t("div",{className:"RootAIChat__loading",children:t(V,{size:"md",color:"gray"})}):h?t(Mt,{variant:o.variant,config:e,initialChatId:o.variant==="panel"?void 0:o.initialChatId,docContext:o.docContext,onClose:o.onClose}):t(Nt,{error:i,onClose:o.onClose})})}function Nt(o){return t("div",{className:"RootAIChat__notEnabled",children:[o.onClose&&t(E,{className:"RootAIChat__notEnabled__close",onClick:o.onClose,title:"Close",children:t(B,{size:16})}),t("div",{className:"RootAIChat__notEnabled__icon",children:t(j,{size:36})}),t("div",{className:"RootAIChat__notEnabled__title",children:"Root AI is not configured for this project."}),t("div",{className:"RootAIChat__notEnabled__body",children:["Add an ",t("code",{children:"ai.models"})," entry to ",t("code",{children:"cmsPlugin()"})," in"," ",t("code",{children:"root.config.ts"}),"."]}),o.error&&t("pre",{className:"RootAIChat__notEnabled__error",children:o.error})]})}function Mt(o){let e=o.variant==="panel",{route:a}=at(),i=o.config.models||[],m=()=>yt(i)||o.config.defaultModel||i[0]?.id||"",[h,r]=p(m),[l,g]=p(Rt),[u,I]=p(o.initialChatId||U),[P,y]=p(o.initialChatId||U),[D,s]=p([]),[f,x]=p([]),[v,w]=p(0),z=async()=>{if(!e)try{let R=await(await fetch("/cms/api/ai.chats.list",{method:"POST",credentials:"include",headers:{"content-type":"application/json"},body:JSON.stringify({})})).json();R.success&&x(R.chats||[])}catch(d){console.error("failed to load chat list",d)}};k(()=>{z(),!e&&o.initialChatId&&n(o.initialChatId)},[]),k(()=>{kt(l)},[l]);let n=async d=>{try{let b=await(await fetch("/cms/api/ai.chats.get",{method:"POST",credentials:"include",headers:{"content-type":"application/json"},body:JSON.stringify({id:d})})).json();if(!b.success)return;I(d),y(d),s(b.chat.messages||[]),b.chat.modelId&&i.find(F=>F.id===b.chat.modelId)&&r(b.chat.modelId),w(L=>L+1)}catch(R){console.error("failed to load chat",R)}},_=()=>{r(m()),I(U),y(U),s([]),w(d=>d+1),e||a("/cms/ai")},c=async d=>{if(d!==P)try{let b=await(await fetch("/cms/api/ai.chats.get",{method:"POST",credentials:"include",headers:{"content-type":"application/json"},body:JSON.stringify({id:d})})).json();if(!b.success)return;I(d),y(d),s(b.chat.messages||[]),b.chat.modelId&&i.find(F=>F.id===b.chat.modelId)&&r(b.chat.modelId),w(L=>L+1),e||a(`/cms/ai/chat/${d}`)}catch(R){console.error("failed to load chat",R)}},C=async d=>{try{await fetch("/cms/api/ai.chats.delete",{method:"POST",credentials:"include",headers:{"content-type":"application/json"},body:JSON.stringify({id:d})}),P===d&&_(),z()}catch(R){console.error("failed to delete chat",R)}},A=i.find(d=>d.id===h)||i[0],H=d=>{r(d),wt(d)};return t("div",{className:"RootAIChat__layout",children:[!e&&t(Tt,{chats:f,activeChatId:P,onSelect:c,onNew:_,onDelete:C}),t("div",{className:"RootAIChat__main",children:[e&&t(Pt,{onNewChat:_,onClose:o.onClose}),t(zt,{initialChatId:u,model:A,initialMessages:D,executionMode:l,models:i,selectedModel:A,docContext:o.docContext,onSelectModel:H,onSelectExecutionMode:g,onChatPersisted:d=>{y(d),z(),e||window.history.replaceState(null,"",`/cms/ai/chat/${d}`)}},v)]})]})}function Pt(o){return t("div",{className:"RootAIChat__panelHeader",children:[t("div",{className:"RootAIChat__panelHeader__title",children:[t(j,{size:14}),t("span",{children:"Root AI"})]}),t("div",{className:"RootAIChat__panelHeader__actions",children:[t(O,{label:"New chat",children:t(E,{size:"xs",onClick:o.onNewChat,children:t(G,{size:14})})}),o.onClose&&t(O,{label:"Close (\u2318 + i)",children:t(E,{size:"xs",onClick:o.onClose,children:t(B,{size:14})})})]})]})}function Tt(o){return t("aside",{className:"RootAIChat__sidebar",children:[t("button",{type:"button",className:"RootAIChat__sidebar__newButton",onClick:o.onNew,children:[t(G,{size:18}),t("span",{children:"New chat"})]}),t("div",{className:"RootAIChat__sidebar__list",children:[o.chats.length===0&&t("div",{className:"RootAIChat__sidebar__empty",children:"No chats yet."}),o.chats.map(e=>t("div",{className:M("RootAIChat__sidebar__item",e.id===o.activeChatId&&"RootAIChat__sidebar__item--active"),onClick:()=>o.onSelect(e.id),children:[t("div",{className:"RootAIChat__sidebar__item__title",title:e.title||"Untitled chat",children:e.title||"Untitled chat"}),t("button",{type:"button",className:"RootAIChat__sidebar__item__delete",title:"Delete chat",onClick:a=>{a.stopPropagation(),window.confirm("Delete this chat?")&&o.onDelete(e.id)},children:t(st,{size:14})})]},e.id))]})]})}function Et(o){let e=W.find(a=>a.id===o.executionMode)||W[0];return t("div",{className:"RootAIChat__options",children:[t($,{control:t(S,{type:"button",className:"RootAIChat__modePicker",variant:"subtle",color:"dark",size:"xs",compact:!0,leftIcon:t(it,{size:16}),children:e.label}),children:W.map(a=>t($.Item,{onClick:()=>o.onSelectExecutionMode(a.id),children:t("div",{className:"RootAIChat__modePicker__option",children:[t("div",{className:"RootAIChat__modePicker__option__label",children:a.label}),t("div",{className:"RootAIChat__modePicker__option__description",children:a.description})]})},a.id))}),t($,{control:t(S,{type:"button",className:"RootAIChat__modelPicker",variant:"subtle",color:"dark",size:"xs",compact:!0,leftIcon:t(j,{size:16}),children:o.selectedModel?.label||"Select model"}),children:o.models.map(a=>t($.Item,{onClick:()=>o.onSelectModel(a.id),children:t("div",{className:"RootAIChat__modelPicker__option",children:[t("div",{className:"RootAIChat__modelPicker__option__label",children:a.label}),a.description&&t("div",{className:"RootAIChat__modelPicker__option__description",children:a.description})]})},a.id))})]})}function zt(o){let[e]=p(()=>o.initialChatId||Gt()),a=N(o.model?.id);a.current=o.model?.id;let i=N(o.executionMode);i.current=o.executionMode;let m=N(o.docContext);m.current=o.docContext;let[h,r]=p({}),l=N({});k(()=>()=>{for(let n of Object.values(l.current))n("reject");l.current={}},[]);let g=T((n,_,c,C)=>new Promise(A=>{l.current[n]=A,r(H=>({...H,[n]:{toolCallId:n,toolName:_,input:c,preview:C,status:"pending"}}))}),[]),u=T(n=>{r(_=>{let c=_[n];return c?{..._,[n]:{...c,status:"executing"}}:_}),l.current[n]?.("approve"),delete l.current[n]},[]),I=T(n=>{r(_=>{let c={..._};return delete c[n],c}),l.current[n]?.("reject"),delete l.current[n]},[]),P=T(async n=>{if(!ht(n.toolName))return await tt(n.toolName,n.input);let _=i.current;if(_==="read")return{success:!1,error:"WRITE_BLOCKED_BY_MODE",message:"The current execution mode is read only. Do not call write tools."};let c;try{c=await ut(n.toolName,n.input)}catch(C){return{success:!1,error:"PREVIEW_FAILED",message:C?.message||String(C)}}if(c.error)return{success:!1,error:c.error,message:c.summary,errors:c.errors,hint:c.hint};if(_==="approve"&&await g(n.toolCallId,n.toolName,n.input,c)==="reject")return{success:!1,error:"USER_REJECTED",message:"The user rejected this draft change. Do not retry unless they ask for a revised version."};try{return await tt(n.toolName,n.input)}finally{r(C=>{if(!C[n.toolCallId])return C;let A={...C};return delete A[n.toolCallId],A})}},[g]),y=ot(()=>new dt({api:"/cms/api/ai.chat",credentials:"include",prepareSendMessagesRequest:({messages:n})=>({body:{message:n.at(-1),chatId:e,modelId:a.current,executionMode:i.current,docId:m.current?.docId}})}),[e]),{messages:D,sendMessage:s,status:f,error:x,stop:v,addToolOutput:w}=_t({id:e,messages:o.initialMessages,transport:y,sendAutomaticallyWhen:ct,onToolCall:async({toolCall:n})=>{let _=await P(n);w({tool:n.toolName,toolCallId:n.toolCallId,output:_})},onFinish:()=>{o.onChatPersisted(e)}}),z=f==="streaming"||f==="submitted";return t(et,{children:[t(St,{messages:D,isStreaming:z,emptyMessage:o.model?void 0:"Select a model to start.",toolApprovals:{approvals:h,onApprove:u,onReject:I}}),x&&t("div",{className:"RootAIChat__error",children:[t("strong",{children:"Error:"})," ",x.message]}),t(Vt,{disabled:!o.model,canAttach:o.model?.capabilities.attachments??!1,isStreaming:z,onStop:v,controls:t(Et,{models:o.models,selectedModel:o.selectedModel,onSelectModel:o.onSelectModel,executionMode:o.executionMode,onSelectExecutionMode:o.onSelectExecutionMode}),onSend:(n,_)=>{if(!n&&_.length===0)return;let c=Jt(_),C=[n,c.text].filter(Boolean).join(`
1
+ import{a as _t,b as ht,c as ut,d as tt}from"./chunk-6E7PGMZX.js";import{a as lt}from"./chunk-N4DFAIC5.js";import{a as mt,c as Z}from"./chunk-NMBXHKIJ.js";import{b as dt,d as ct}from"./chunk-344GZOGG.js";import{f as pt}from"./chunk-SKEP5WYH.js";import{f as K}from"./chunk-5MV6XVGA.js";import{d as at,f as M}from"./chunk-RPOP6MVJ.js";import{$a as Y,Ac as rt,Fa as O,Ga as t,Oc as st,Tc as B,V,W as E,Za as q,_a as X,a as p,ba as J,c as k,da as S,dc as G,e as N,g as ot,h as T,ic as Q,j as At,jc as it,lb as nt,qa as $,uc as j}from"./chunk-4CUWZQXT.js";import{d as et}from"./chunk-KUCVLANF.js";At();function ft(o){let{size:e=14}=o,a=e*3.57,i=e*2;return t("div",{className:"BouncingLoader",style:{"--dot-size":`${e}px`,width:`${a}px`,height:`${i}px`}})}var W=[{id:"read",label:"Read only",description:"Inspect CMS content without planning or applying writes."},{id:"approve",label:"Ask before writing",description:"Read freely, then pause for approval before draft edits."},{id:"auto",label:"Auto-apply draft edits",description:"Apply draft-only writes without approval in this chat."}],It="root-cms.ai.executionMode",vt="root-cms.ai.selectedModel";function bt(o){return W.some(e=>e.id===o)}function Rt(){if(typeof window>"u")return"approve";try{let o=window.localStorage.getItem(It);if(bt(o))return o}catch(o){console.error("failed to read AI execution mode preference",o)}return"approve"}function yt(o){if(typeof window>"u")return null;try{let e=window.localStorage.getItem(vt);if(e&&o.some(a=>a.id===e))return e}catch(e){console.error("failed to read AI model preference",e)}return null}function wt(o){if(!(typeof window>"u"))try{window.localStorage.setItem(vt,o)}catch(e){console.error("failed to save AI model preference",e)}}function kt(o){if(!(typeof window>"u"))try{window.localStorage.setItem(It,o)}catch(e){console.error("failed to save AI execution mode preference",e)}}var U="";function Ie(o){let[e,a]=p(null),[i,m]=p("");k(()=>{let r=!0;return fetch("/cms/api/ai.config",{credentials:"include"}).then(async l=>{let g=await l.json();r&&a(g)}).catch(l=>{r&&m(String(l))}),()=>{r=!1}},[]);let h=!!e?.enabled&&(e.models?.length||0)>0;return t("div",{className:M("RootAIChat",`RootAIChat--${o.variant}`),children:!e&&!i?t("div",{className:"RootAIChat__loading",children:t(V,{size:"md",color:"gray"})}):h?t(Mt,{variant:o.variant,config:e,initialChatId:o.variant==="panel"?void 0:o.initialChatId,docContext:o.docContext,onClose:o.onClose}):t(Nt,{error:i,onClose:o.onClose})})}function Nt(o){return t("div",{className:"RootAIChat__notEnabled",children:[o.onClose&&t(E,{className:"RootAIChat__notEnabled__close",onClick:o.onClose,title:"Close",children:t(B,{size:16})}),t("div",{className:"RootAIChat__notEnabled__icon",children:t(j,{size:36})}),t("div",{className:"RootAIChat__notEnabled__title",children:"Root AI is not configured for this project."}),t("div",{className:"RootAIChat__notEnabled__body",children:["Add an ",t("code",{children:"ai.models"})," entry to ",t("code",{children:"cmsPlugin()"})," in"," ",t("code",{children:"root.config.ts"}),"."]}),o.error&&t("pre",{className:"RootAIChat__notEnabled__error",children:o.error})]})}function Mt(o){let e=o.variant==="panel",{route:a}=at(),i=o.config.models||[],m=()=>yt(i)||o.config.defaultModel||i[0]?.id||"",[h,r]=p(m),[l,g]=p(Rt),[u,I]=p(o.initialChatId||U),[P,y]=p(o.initialChatId||U),[D,s]=p([]),[f,x]=p([]),[v,w]=p(0),z=async()=>{if(!e)try{let R=await(await fetch("/cms/api/ai.chats.list",{method:"POST",credentials:"include",headers:{"content-type":"application/json"},body:JSON.stringify({})})).json();R.success&&x(R.chats||[])}catch(d){console.error("failed to load chat list",d)}};k(()=>{z(),!e&&o.initialChatId&&n(o.initialChatId)},[]),k(()=>{kt(l)},[l]);let n=async d=>{try{let b=await(await fetch("/cms/api/ai.chats.get",{method:"POST",credentials:"include",headers:{"content-type":"application/json"},body:JSON.stringify({id:d})})).json();if(!b.success)return;I(d),y(d),s(b.chat.messages||[]),b.chat.modelId&&i.find(F=>F.id===b.chat.modelId)&&r(b.chat.modelId),w(L=>L+1)}catch(R){console.error("failed to load chat",R)}},_=()=>{r(m()),I(U),y(U),s([]),w(d=>d+1),e||a("/cms/ai")},c=async d=>{if(d!==P)try{let b=await(await fetch("/cms/api/ai.chats.get",{method:"POST",credentials:"include",headers:{"content-type":"application/json"},body:JSON.stringify({id:d})})).json();if(!b.success)return;I(d),y(d),s(b.chat.messages||[]),b.chat.modelId&&i.find(F=>F.id===b.chat.modelId)&&r(b.chat.modelId),w(L=>L+1),e||a(`/cms/ai/chat/${d}`)}catch(R){console.error("failed to load chat",R)}},C=async d=>{try{await fetch("/cms/api/ai.chats.delete",{method:"POST",credentials:"include",headers:{"content-type":"application/json"},body:JSON.stringify({id:d})}),P===d&&_(),z()}catch(R){console.error("failed to delete chat",R)}},A=i.find(d=>d.id===h)||i[0],H=d=>{r(d),wt(d)};return t("div",{className:"RootAIChat__layout",children:[!e&&t(Tt,{chats:f,activeChatId:P,onSelect:c,onNew:_,onDelete:C}),t("div",{className:"RootAIChat__main",children:[e&&t(Pt,{onNewChat:_,onClose:o.onClose}),t(zt,{initialChatId:u,model:A,initialMessages:D,executionMode:l,models:i,selectedModel:A,docContext:o.docContext,onSelectModel:H,onSelectExecutionMode:g,onChatPersisted:d=>{y(d),z(),e||window.history.replaceState(null,"",`/cms/ai/chat/${d}`)}},v)]})]})}function Pt(o){return t("div",{className:"RootAIChat__panelHeader",children:[t("div",{className:"RootAIChat__panelHeader__title",children:[t(j,{size:14}),t("span",{children:"Root AI"})]}),t("div",{className:"RootAIChat__panelHeader__actions",children:[t(O,{label:"New chat",children:t(E,{size:"xs",onClick:o.onNewChat,children:t(G,{size:14})})}),o.onClose&&t(O,{label:"Close (\u2318 + i)",children:t(E,{size:"xs",onClick:o.onClose,children:t(B,{size:14})})})]})]})}function Tt(o){return t("aside",{className:"RootAIChat__sidebar",children:[t("button",{type:"button",className:"RootAIChat__sidebar__newButton",onClick:o.onNew,children:[t(G,{size:18}),t("span",{children:"New chat"})]}),t("div",{className:"RootAIChat__sidebar__list",children:[o.chats.length===0&&t("div",{className:"RootAIChat__sidebar__empty",children:"No chats yet."}),o.chats.map(e=>t("div",{className:M("RootAIChat__sidebar__item",e.id===o.activeChatId&&"RootAIChat__sidebar__item--active"),onClick:()=>o.onSelect(e.id),children:[t("div",{className:"RootAIChat__sidebar__item__title",title:e.title||"Untitled chat",children:e.title||"Untitled chat"}),t("button",{type:"button",className:"RootAIChat__sidebar__item__delete",title:"Delete chat",onClick:a=>{a.stopPropagation(),window.confirm("Delete this chat?")&&o.onDelete(e.id)},children:t(st,{size:14})})]},e.id))]})]})}function Et(o){let e=W.find(a=>a.id===o.executionMode)||W[0];return t("div",{className:"RootAIChat__options",children:[t($,{control:t(S,{type:"button",className:"RootAIChat__modePicker",variant:"subtle",color:"dark",size:"xs",compact:!0,leftIcon:t(it,{size:16}),children:e.label}),children:W.map(a=>t($.Item,{onClick:()=>o.onSelectExecutionMode(a.id),children:t("div",{className:"RootAIChat__modePicker__option",children:[t("div",{className:"RootAIChat__modePicker__option__label",children:a.label}),t("div",{className:"RootAIChat__modePicker__option__description",children:a.description})]})},a.id))}),t($,{control:t(S,{type:"button",className:"RootAIChat__modelPicker",variant:"subtle",color:"dark",size:"xs",compact:!0,leftIcon:t(j,{size:16}),children:o.selectedModel?.label||"Select model"}),children:o.models.map(a=>t($.Item,{onClick:()=>o.onSelectModel(a.id),children:t("div",{className:"RootAIChat__modelPicker__option",children:[t("div",{className:"RootAIChat__modelPicker__option__label",children:a.label}),a.description&&t("div",{className:"RootAIChat__modelPicker__option__description",children:a.description})]})},a.id))})]})}function zt(o){let[e]=p(()=>o.initialChatId||Gt()),a=N(o.model?.id);a.current=o.model?.id;let i=N(o.executionMode);i.current=o.executionMode;let m=N(o.docContext);m.current=o.docContext;let[h,r]=p({}),l=N({});k(()=>()=>{for(let n of Object.values(l.current))n("reject");l.current={}},[]);let g=T((n,_,c,C)=>new Promise(A=>{l.current[n]=A,r(H=>({...H,[n]:{toolCallId:n,toolName:_,input:c,preview:C,status:"pending"}}))}),[]),u=T(n=>{r(_=>{let c=_[n];return c?{..._,[n]:{...c,status:"executing"}}:_}),l.current[n]?.("approve"),delete l.current[n]},[]),I=T(n=>{r(_=>{let c={..._};return delete c[n],c}),l.current[n]?.("reject"),delete l.current[n]},[]),P=T(async n=>{if(!ht(n.toolName))return await tt(n.toolName,n.input);let _=i.current;if(_==="read")return{success:!1,error:"WRITE_BLOCKED_BY_MODE",message:"The current execution mode is read only. Do not call write tools."};let c;try{c=await ut(n.toolName,n.input)}catch(C){return{success:!1,error:"PREVIEW_FAILED",message:C?.message||String(C)}}if(c.error)return{success:!1,error:c.error,message:c.summary,errors:c.errors,hint:c.hint};if(_==="approve"&&await g(n.toolCallId,n.toolName,n.input,c)==="reject")return{success:!1,error:"USER_REJECTED",message:"The user rejected this draft change. Do not retry unless they ask for a revised version."};try{return await tt(n.toolName,n.input)}finally{r(C=>{if(!C[n.toolCallId])return C;let A={...C};return delete A[n.toolCallId],A})}},[g]),y=ot(()=>new dt({api:"/cms/api/ai.chat",credentials:"include",prepareSendMessagesRequest:({messages:n})=>({body:{message:n.at(-1),chatId:e,modelId:a.current,executionMode:i.current,docId:m.current?.docId}})}),[e]),{messages:D,sendMessage:s,status:f,error:x,stop:v,addToolOutput:w}=_t({id:e,messages:o.initialMessages,transport:y,sendAutomaticallyWhen:ct,onToolCall:async({toolCall:n})=>{let _=await P(n);w({tool:n.toolName,toolCallId:n.toolCallId,output:_})},onFinish:()=>{o.onChatPersisted(e)}}),z=f==="streaming"||f==="submitted";return t(et,{children:[t(St,{messages:D,isStreaming:z,emptyMessage:o.model?void 0:"Select a model to start.",toolApprovals:{approvals:h,onApprove:u,onReject:I}}),x&&t("div",{className:"RootAIChat__error",children:[t("strong",{children:"Error:"})," ",x.message]}),t(Vt,{disabled:!o.model,canAttach:o.model?.capabilities.attachments??!1,isStreaming:z,onStop:v,controls:t(Et,{models:o.models,selectedModel:o.selectedModel,onSelectModel:o.onSelectModel,executionMode:o.executionMode,onSelectExecutionMode:o.onSelectExecutionMode}),onSend:(n,_)=>{if(!n&&_.length===0)return;let c=Jt(_),C=[n,c.text].filter(Boolean).join(`
2
2
 
3
3
  `);s({text:C,files:c.files.map(A=>({type:"file",mediaType:A.mediaType,url:A.url,filename:A.filename}))})}})]})}function St(o){let e=N(null);return k(()=>{let a=e.current;a&&(a.scrollTop=a.scrollHeight)},[o.messages]),o.messages.length===0?t("div",{className:"RootAIChat__transcript RootAIChat__transcript--empty",ref:e,children:t("div",{className:"RootAIChat__welcome",children:[t("div",{className:"RootAIChat__welcome__icon",children:t(j,{size:36})}),t("div",{className:"RootAIChat__welcome__title",children:"Root AI"}),t("div",{className:"RootAIChat__welcome__body",children:o.emptyMessage||"What are we going to get done today?"})]})}):t("div",{className:"RootAIChat__transcript",ref:e,children:t("div",{className:"RootAIChat__transcript__inner",children:[o.messages.map(a=>t(jt,{message:a,toolApprovals:o.toolApprovals},a.id)),o.isStreaming&&t("div",{className:"RootAIChat__streamingIndicator",children:t(ft,{size:6})})]})})}function jt(o){let e=o.message,a=e.role==="user",i=a?"You":"Root AI",m=a?window.firebase.user?.photoURL:null,[h,r]=p(!1),l=T(()=>(e.parts||[]).filter(u=>u.type==="text"&&u.text).map(u=>u.text).join(`
4
4
 
@@ -1,3 +1,3 @@
1
- import{a as na,b as P,c as I,d as ia,e as la}from"./chunk-DUJYIOLE.js";import{a as v}from"./chunk-KFAZBEPV.js";import{a as oa}from"./chunk-X2WHBGTP.js";import{a as d}from"./chunk-PJA7YP4A.js";import{a as D}from"./chunk-62UWGWON.js";import{a as A}from"./chunk-I6ICVKEC.js";import{f as Q}from"./chunk-AL3TN2KI.js";import{$a as aa,Db as ta,Ea as J,Ha as a,Kc as ra,Qa as X,Rc as sa,V as G,Xa as Z,a as l,c as W,ea as _,g as V,j as fa,lb as ea,ra as z,va as Y,ya as R,za as q}from"./chunk-NZHF733K.js";fa();var O=[{value:"new",label:"New"},{value:"in-progress",label:"In progress"},{value:"in-review",label:"In review"},{value:"closed",label:"Closed"}],Ta=O.filter(t=>t.value!=="closed"),xa=O.filter(t=>t.value==="closed"),va=[{value:"table",label:a("span",{className:"TaskManager__layoutOption",children:[a(ra,{size:14,strokeWidth:"1.8"}),"Table"]})},{value:"board",label:a("span",{className:"TaskManager__layoutOption",children:[a(ea,{size:14,strokeWidth:"1.8"}),"Board"]})}],ba=[{value:"open",label:"Active"},{value:"assigned-to-me",label:"Assigned to me"}],ha=[{value:"open",label:"Active"},{value:"assigned-to-me",label:"Assigned to me"},{value:"created-by-me",label:"Created by me"},{value:"closed",label:"Closed"},{value:"all",label:"All"}];function qa(t){let e=window.firebase.user.email||"",r=(t.variant||"compact")==="page",{tasks:i,loading:n,error:c}=Sa(r?"all":"open"),[f,b]=l("open"),[p,da]=oa("root-cms-task-manager-layout-v2","table"),[h,j]=l(""),[g,y]=l(""),[M,T]=l(!1),[w,B]=l("normal"),[x,N]=l(""),[C,L]=l(!1),[H,F]=l(!1),pa=r?ha:ba,U=V(()=>za(i,f,e),[i,f,e]),K=U.length,ga=r?`${K} shown`:`${K} active`,ma=!!h.trim()&&!H;async function ka(o){o.preventDefault();let $=h.trim();if(!$)return;let S=Ca($);F(!0);try{await na({title:S.title,description:S.description,assignee:g.trim()||void 0,priority:w,targetLaunchDate:_a(x)}),j(""),y(""),B("normal"),N(""),A({title:"Task created",message:S.title,autoClose:4e3})}catch(ua){A({title:"Could not create task",message:D(ua),color:"red",autoClose:!1})}finally{F(!1)}}return a("div",{className:Q(t.className,"TaskManager",r&&"TaskManager--page"),children:[a(d,{className:"TaskManager__composer",children:a("form",{onSubmit:o=>ka(o),children:[a("div",{className:"TaskManager__composer__header",children:[a("div",{className:"TaskManager__composer__avatar",children:g&&a(v,{email:g,size:32})}),a("div",{children:[a("div",{className:"TaskManager__composer__title",children:"Create a task"}),a("div",{className:"TaskManager__composer__subtitle",children:"Assign it to an agent, a teammate, or yourself."})]})]}),a("textarea",{className:"TaskManager__composer__textarea",value:h,rows:3,placeholder:"Enter a task description. Specify scope, collection, and acceptance criteria.",onInput:o=>{j(o.currentTarget.value)}}),a("div",{className:"TaskManager__composer__footer",children:[a("div",{className:"TaskManager__composer__controls",children:[a(R,{opened:M,onClose:()=>T(!1),position:"bottom",shadow:"md",width:280,withArrow:!0,target:a("button",{className:"TaskManager__composer__control",type:"button","aria-expanded":M,onClick:()=>T(!M),children:[a(sa,{size:15,strokeWidth:"1.8"}),a("span",{children:"assign to..."}),g&&a("span",{className:"TaskManager__composer__control__value",children:m(g)})]}),children:a("div",{className:"TaskManager__composer__popover",children:[a(Y,{autoFocus:!0,label:"Email",placeholder:"teammate@example.com",size:"xs",type:"email",value:g,onChange:o=>y(o.currentTarget.value),onKeyDown:o=>{o.key==="Enter"&&(o.preventDefault(),T(!1))}}),a("div",{className:"TaskManager__composer__popover__actions",children:[a(_,{compact:!0,size:"xs",variant:"default",onClick:()=>y(""),children:"Clear"}),a(_,{compact:!0,size:"xs",color:"dark",onClick:()=>T(!1),children:"Done"})]})]})}),a(z,{position:"bottom",shadow:"md",control:a("button",{className:"TaskManager__composer__control",type:"button",children:[a(ta,{size:15,strokeWidth:"1.8"}),a("span",{children:w}),a(aa,{size:14,strokeWidth:"1.8"})]}),children:["high","medium","normal"].map(o=>a(z.Item,{className:w===o?"TaskManager__composer__menuItem--active":"",onClick:()=>B(o),children:o},o))}),a(R,{opened:C,onClose:()=>L(!1),position:"bottom",shadow:"md",width:260,withArrow:!0,target:a("button",{className:"TaskManager__composer__control",type:"button","aria-expanded":C,onClick:()=>L(!C),children:[a(Z,{size:15,strokeWidth:"1.8"}),a("span",{children:x?Da(x):"target launch date"})]}),children:a("div",{className:"TaskManager__composer__popover",children:[a("label",{className:"TaskManager__composer__dateLabel",children:["Target launch date",a("input",{type:"date",value:x,onInput:o=>{N(o.currentTarget.value)}})]}),a("div",{className:"TaskManager__composer__popover__actions",children:[a(_,{compact:!0,size:"xs",variant:"default",onClick:()=>N(""),children:"Clear"}),a(_,{compact:!0,size:"xs",color:"dark",onClick:()=>L(!1),children:"Done"})]})]})})]}),a(_,{type:"submit",size:"xs",color:"dark",loading:H,disabled:!ma,rightIcon:a(X,{size:15,strokeWidth:"1.8"}),children:"Create task"})]})]})}),a("div",{className:"TaskManager__listHeader",children:[a("div",{className:"TaskManager__listHeader__summary",children:[a("div",{className:"TaskManager__listHeader__titleLine",children:[a("div",{className:"TaskManager__sectionTitle",children:r?"Tasks":"Active tasks"}),a("span",{className:"TaskManager__listHeader__count",children:ga})]}),a("div",{className:"TaskManager__filters","aria-label":"Task filters",children:pa.map(o=>a("button",{className:f===o.value?"active":"",type:"button",onClick:()=>b(o.value),children:o.label},o.value))})]}),a("div",{className:"TaskManager__listHeader__actions",children:r?a(q,{className:"TaskManager__layoutToggle",size:"xs",value:p,onChange:o=>da(o),data:va}):a(_,{component:"a",href:"/cms/tasks",variant:"default",size:"xs",compact:!0,children:"Show all"})})]}),a(ya,{error:c,filter:f,layout:r?p:"compact",loading:n,tasks:U})]})}function ya(t){let{error:e,filter:s,layout:r,loading:i,tasks:n}=t;return i?a(d,{className:"TaskManager__list",children:a("div",{className:"TaskManager__list__state",children:a(G,{color:"gray",size:"sm"})})}):e?a(d,{className:"TaskManager__list",children:a("div",{className:"TaskManager__list__state error",children:e})}):n.length===0?a(d,{className:"TaskManager__list",children:a("div",{className:"TaskManager__list__state",children:Ra(s,r)})}):r==="board"?a(wa,{filter:s,tasks:n}):r==="table"?a(Ma,{tasks:n}):a(d,{className:"TaskManager__list",children:n.map(c=>a(La,{task:c},c.id))})}function Ma(t){return a(d,{className:"TaskManager__tableSurface",children:a(J,{className:"TaskManager__table",verticalSpacing:"xs",striped:!0,highlightOnHover:!0,fontSize:"xs",children:[a("thead",{children:a("tr",{children:[a("th",{children:"task"}),a("th",{children:"status"}),a("th",{children:"priority"}),a("th",{children:"assignee"}),a("th",{children:"target"}),a("th",{children:"opened"})]})}),a("tbody",{children:t.tasks.map(e=>{let s=e.createdBy||"unknown";return a("tr",{children:[a("td",{children:a("a",{className:"TaskManager__tableTask",href:`/cms/tasks/${e.id}`,children:[a("div",{className:"TaskManager__taskRow__avatar",children:e.assignee&&a(v,{email:e.assignee,size:24})}),a("span",{className:"TaskManager__tableTask__content",children:[a("span",{className:"TaskManager__tableTask__title",children:e.title}),a("span",{className:"TaskManager__tableTask__meta",children:["#",e.id," by ",m(s)]})]})]})}),a("td",{children:a("span",{className:"TaskManager__taskRow__status",children:[a("span",{}),E(e.status)]})}),a("td",{children:a("span",{className:`TaskManager__taskRow__priority TaskManager__taskRow__priority--${u(e.priority)}`,children:u(e.priority)})}),a("td",{children:e.assignee?m(e.assignee):"Unassigned"}),a("td",{children:e.targetLaunchDate?k(e.targetLaunchDate):"None"}),a("td",{children:k(e.createdAt)})]},e.id)})})]})})}function wa(t){let e=Aa(t.tasks,t.filter);return a("div",{className:"TaskManager__board",children:e.map(s=>{let r=t.tasks.filter(i=>ca(i)===s.value);return a("section",{className:"TaskManager__boardColumn",children:[a("div",{className:"TaskManager__boardColumn__header",children:[a("span",{children:s.label}),a("span",{children:r.length})]}),a("div",{className:"TaskManager__boardColumn__tasks",children:[r.length===0&&a("div",{className:"TaskManager__boardColumn__empty",children:"No tasks"}),r.map(i=>a(Na,{task:i},i.id))]})]},s.value)})})}function Na(t){let{task:e}=t,s=e.createdBy||"unknown";return a("a",{className:"TaskManager__boardCard",href:`/cms/tasks/${e.id}`,children:[a("div",{className:"TaskManager__boardCard__title",children:e.title}),e.description&&a("div",{className:"TaskManager__boardCard__description",children:e.description}),a("div",{className:"TaskManager__boardCard__meta",children:["#",e.id," opened ",k(e.createdAt)," by"," ",m(s)]}),a("div",{className:"TaskManager__boardCard__badges",children:[a("span",{className:`TaskManager__taskRow__priority TaskManager__taskRow__priority--${u(e.priority)}`,children:u(e.priority)}),a("span",{className:"TaskManager__boardCard__badge",children:e.assignee?m(e.assignee):"Unassigned"}),e.targetLaunchDate&&a("span",{className:"TaskManager__boardCard__badge",children:["target ",k(e.targetLaunchDate)]})]})]})}function Ca(t){let[e,...s]=t.split(`
1
+ import{a as na,b as P,c as I,d as ia,e as la}from"./chunk-DUJYIOLE.js";import{a as v}from"./chunk-HYARD7BK.js";import{a as oa}from"./chunk-NQB37NMX.js";import{a as d}from"./chunk-32LRQ5MJ.js";import{a as D}from"./chunk-CVGYBXVH.js";import{a as A}from"./chunk-AXETBZ6T.js";import{f as Q}from"./chunk-RPOP6MVJ.js";import{Cb as ta,Da as J,Ga as a,Jc as ra,Pa as X,Qc as sa,V as G,Wa as Z,_a as aa,a as l,c as W,da as _,g as V,j as fa,kb as ea,qa as z,ua as Y,xa as R,ya as q}from"./chunk-4CUWZQXT.js";fa();var O=[{value:"new",label:"New"},{value:"in-progress",label:"In progress"},{value:"in-review",label:"In review"},{value:"closed",label:"Closed"}],Ta=O.filter(t=>t.value!=="closed"),xa=O.filter(t=>t.value==="closed"),va=[{value:"table",label:a("span",{className:"TaskManager__layoutOption",children:[a(ra,{size:14,strokeWidth:"1.8"}),"Table"]})},{value:"board",label:a("span",{className:"TaskManager__layoutOption",children:[a(ea,{size:14,strokeWidth:"1.8"}),"Board"]})}],ba=[{value:"open",label:"Active"},{value:"assigned-to-me",label:"Assigned to me"}],ha=[{value:"open",label:"Active"},{value:"assigned-to-me",label:"Assigned to me"},{value:"created-by-me",label:"Created by me"},{value:"closed",label:"Closed"},{value:"all",label:"All"}];function qa(t){let e=window.firebase.user.email||"",r=(t.variant||"compact")==="page",{tasks:i,loading:n,error:c}=Sa(r?"all":"open"),[f,b]=l("open"),[p,da]=oa("root-cms-task-manager-layout-v2","table"),[h,j]=l(""),[g,y]=l(""),[M,T]=l(!1),[w,B]=l("normal"),[x,N]=l(""),[C,L]=l(!1),[H,F]=l(!1),pa=r?ha:ba,U=V(()=>za(i,f,e),[i,f,e]),K=U.length,ga=r?`${K} shown`:`${K} active`,ma=!!h.trim()&&!H;async function ka(o){o.preventDefault();let $=h.trim();if(!$)return;let S=Ca($);F(!0);try{await na({title:S.title,description:S.description,assignee:g.trim()||void 0,priority:w,targetLaunchDate:_a(x)}),j(""),y(""),B("normal"),N(""),A({title:"Task created",message:S.title,autoClose:4e3})}catch(ua){A({title:"Could not create task",message:D(ua),color:"red",autoClose:!1})}finally{F(!1)}}return a("div",{className:Q(t.className,"TaskManager",r&&"TaskManager--page"),children:[a(d,{className:"TaskManager__composer",children:a("form",{onSubmit:o=>ka(o),children:[a("div",{className:"TaskManager__composer__header",children:[a("div",{className:"TaskManager__composer__avatar",children:g&&a(v,{email:g,size:32})}),a("div",{children:[a("div",{className:"TaskManager__composer__title",children:"Create a task"}),a("div",{className:"TaskManager__composer__subtitle",children:"Assign it to an agent, a teammate, or yourself."})]})]}),a("textarea",{className:"TaskManager__composer__textarea",value:h,rows:3,placeholder:"Enter a task description. Specify scope, collection, and acceptance criteria.",onInput:o=>{j(o.currentTarget.value)}}),a("div",{className:"TaskManager__composer__footer",children:[a("div",{className:"TaskManager__composer__controls",children:[a(R,{opened:M,onClose:()=>T(!1),position:"bottom",shadow:"md",width:280,withArrow:!0,target:a("button",{className:"TaskManager__composer__control",type:"button","aria-expanded":M,onClick:()=>T(!M),children:[a(sa,{size:15,strokeWidth:"1.8"}),a("span",{children:"assign to..."}),g&&a("span",{className:"TaskManager__composer__control__value",children:m(g)})]}),children:a("div",{className:"TaskManager__composer__popover",children:[a(Y,{autoFocus:!0,label:"Email",placeholder:"teammate@example.com",size:"xs",type:"email",value:g,onChange:o=>y(o.currentTarget.value),onKeyDown:o=>{o.key==="Enter"&&(o.preventDefault(),T(!1))}}),a("div",{className:"TaskManager__composer__popover__actions",children:[a(_,{compact:!0,size:"xs",variant:"default",onClick:()=>y(""),children:"Clear"}),a(_,{compact:!0,size:"xs",color:"dark",onClick:()=>T(!1),children:"Done"})]})]})}),a(z,{position:"bottom",shadow:"md",control:a("button",{className:"TaskManager__composer__control",type:"button",children:[a(ta,{size:15,strokeWidth:"1.8"}),a("span",{children:w}),a(aa,{size:14,strokeWidth:"1.8"})]}),children:["high","medium","normal"].map(o=>a(z.Item,{className:w===o?"TaskManager__composer__menuItem--active":"",onClick:()=>B(o),children:o},o))}),a(R,{opened:C,onClose:()=>L(!1),position:"bottom",shadow:"md",width:260,withArrow:!0,target:a("button",{className:"TaskManager__composer__control",type:"button","aria-expanded":C,onClick:()=>L(!C),children:[a(Z,{size:15,strokeWidth:"1.8"}),a("span",{children:x?Da(x):"target launch date"})]}),children:a("div",{className:"TaskManager__composer__popover",children:[a("label",{className:"TaskManager__composer__dateLabel",children:["Target launch date",a("input",{type:"date",value:x,onInput:o=>{N(o.currentTarget.value)}})]}),a("div",{className:"TaskManager__composer__popover__actions",children:[a(_,{compact:!0,size:"xs",variant:"default",onClick:()=>N(""),children:"Clear"}),a(_,{compact:!0,size:"xs",color:"dark",onClick:()=>L(!1),children:"Done"})]})]})})]}),a(_,{type:"submit",size:"xs",color:"dark",loading:H,disabled:!ma,rightIcon:a(X,{size:15,strokeWidth:"1.8"}),children:"Create task"})]})]})}),a("div",{className:"TaskManager__listHeader",children:[a("div",{className:"TaskManager__listHeader__summary",children:[a("div",{className:"TaskManager__listHeader__titleLine",children:[a("div",{className:"TaskManager__sectionTitle",children:r?"Tasks":"Active tasks"}),a("span",{className:"TaskManager__listHeader__count",children:ga})]}),a("div",{className:"TaskManager__filters","aria-label":"Task filters",children:pa.map(o=>a("button",{className:f===o.value?"active":"",type:"button",onClick:()=>b(o.value),children:o.label},o.value))})]}),a("div",{className:"TaskManager__listHeader__actions",children:r?a(q,{className:"TaskManager__layoutToggle",size:"xs",value:p,onChange:o=>da(o),data:va}):a(_,{component:"a",href:"/cms/tasks",variant:"default",size:"xs",compact:!0,children:"Show all"})})]}),a(ya,{error:c,filter:f,layout:r?p:"compact",loading:n,tasks:U})]})}function ya(t){let{error:e,filter:s,layout:r,loading:i,tasks:n}=t;return i?a(d,{className:"TaskManager__list",children:a("div",{className:"TaskManager__list__state",children:a(G,{color:"gray",size:"sm"})})}):e?a(d,{className:"TaskManager__list",children:a("div",{className:"TaskManager__list__state error",children:e})}):n.length===0?a(d,{className:"TaskManager__list",children:a("div",{className:"TaskManager__list__state",children:Ra(s,r)})}):r==="board"?a(wa,{filter:s,tasks:n}):r==="table"?a(Ma,{tasks:n}):a(d,{className:"TaskManager__list",children:n.map(c=>a(La,{task:c},c.id))})}function Ma(t){return a(d,{className:"TaskManager__tableSurface",children:a(J,{className:"TaskManager__table",verticalSpacing:"xs",striped:!0,highlightOnHover:!0,fontSize:"xs",children:[a("thead",{children:a("tr",{children:[a("th",{children:"task"}),a("th",{children:"status"}),a("th",{children:"priority"}),a("th",{children:"assignee"}),a("th",{children:"target"}),a("th",{children:"opened"})]})}),a("tbody",{children:t.tasks.map(e=>{let s=e.createdBy||"unknown";return a("tr",{children:[a("td",{children:a("a",{className:"TaskManager__tableTask",href:`/cms/tasks/${e.id}`,children:[a("div",{className:"TaskManager__taskRow__avatar",children:e.assignee&&a(v,{email:e.assignee,size:24})}),a("span",{className:"TaskManager__tableTask__content",children:[a("span",{className:"TaskManager__tableTask__title",children:e.title}),a("span",{className:"TaskManager__tableTask__meta",children:["#",e.id," by ",m(s)]})]})]})}),a("td",{children:a("span",{className:"TaskManager__taskRow__status",children:[a("span",{}),E(e.status)]})}),a("td",{children:a("span",{className:`TaskManager__taskRow__priority TaskManager__taskRow__priority--${u(e.priority)}`,children:u(e.priority)})}),a("td",{children:e.assignee?m(e.assignee):"Unassigned"}),a("td",{children:e.targetLaunchDate?k(e.targetLaunchDate):"None"}),a("td",{children:k(e.createdAt)})]},e.id)})})]})})}function wa(t){let e=Aa(t.tasks,t.filter);return a("div",{className:"TaskManager__board",children:e.map(s=>{let r=t.tasks.filter(i=>ca(i)===s.value);return a("section",{className:"TaskManager__boardColumn",children:[a("div",{className:"TaskManager__boardColumn__header",children:[a("span",{children:s.label}),a("span",{children:r.length})]}),a("div",{className:"TaskManager__boardColumn__tasks",children:[r.length===0&&a("div",{className:"TaskManager__boardColumn__empty",children:"No tasks"}),r.map(i=>a(Na,{task:i},i.id))]})]},s.value)})})}function Na(t){let{task:e}=t,s=e.createdBy||"unknown";return a("a",{className:"TaskManager__boardCard",href:`/cms/tasks/${e.id}`,children:[a("div",{className:"TaskManager__boardCard__title",children:e.title}),e.description&&a("div",{className:"TaskManager__boardCard__description",children:e.description}),a("div",{className:"TaskManager__boardCard__meta",children:["#",e.id," opened ",k(e.createdAt)," by"," ",m(s)]}),a("div",{className:"TaskManager__boardCard__badges",children:[a("span",{className:`TaskManager__taskRow__priority TaskManager__taskRow__priority--${u(e.priority)}`,children:u(e.priority)}),a("span",{className:"TaskManager__boardCard__badge",children:e.assignee?m(e.assignee):"Unassigned"}),e.targetLaunchDate&&a("span",{className:"TaskManager__boardCard__badge",children:["target ",k(e.targetLaunchDate)]})]})]})}function Ca(t){let[e,...s]=t.split(`
2
2
  `);for(;s.length>0&&s[0].trim().length===0;)s.shift();return{title:e.trim(),description:s.join(`
3
3
  `).trim()}}function La(t){let{task:e}=t,s=e.createdBy||"unknown";return a("a",{className:"TaskManager__taskRow",href:`/cms/tasks/${e.id}`,children:[a("div",{className:"TaskManager__taskRow__avatar",children:e.assignee&&a(v,{email:e.assignee,size:28})}),a("div",{className:"TaskManager__taskRow__content",children:[a("div",{className:"TaskManager__taskRow__title",children:e.title}),a("div",{className:"TaskManager__taskRow__meta",children:["opened ",k(e.createdAt)," by ",m(s)]})]}),a("div",{className:"TaskManager__taskRow__badges",children:[a("div",{className:"TaskManager__taskRow__status",children:[a("span",{}),E(e.status)]}),a("div",{className:`TaskManager__taskRow__priority TaskManager__taskRow__priority--${u(e.priority)}`,children:u(e.priority)}),e.targetLaunchDate&&a("div",{className:"TaskManager__taskRow__date",children:["target ",k(e.targetLaunchDate)]})]})]})}function Sa(t){let[e,s]=l([]),[r,i]=l(!0),[n,c]=l("");return W(()=>{i(!0);let b=(t==="all"?ia:la)(p=>{s(p),c(""),i(!1)},p=>{c(D(p)),i(!1)});return()=>b()},[t]),{tasks:e,loading:r,error:n}}function za(t,e,s){switch(e){case"all":return t;case"closed":return t.filter(r=>!P(r.status));case"assigned-to-me":return t.filter(r=>r.assignee===s);case"created-by-me":return t.filter(r=>r.createdBy===s);default:return t.filter(r=>P(r.status))}}function Ra(t,e){switch(t){case"assigned-to-me":return e==="compact"?"No active tasks are assigned to you.":"No tasks are assigned to you.";case"created-by-me":return"No tasks created by you.";case"closed":return"No closed tasks yet.";case"all":return"No tasks yet.";default:return"No active tasks yet."}}function m(t){return t.split("@")[0]||t}function k(t){return t?.toMillis?new Date(t.toMillis()).toLocaleDateString("en",{month:"short",day:"numeric"}):"just now"}function E(t){return I(t).replace(/[-_]/g," ")}function ca(t){return I(t.status)}function Aa(t,e){let s=e==="open"?Ta:e==="closed"?xa:O,r=new Set(s.map(n=>n.value)),i=t.map(n=>ca(n)).filter(n=>!r.has(n));return[...s,...Array.from(new Set(i)).map(n=>({value:n,label:E(n)}))]}function u(t){return t||"normal"}function _a(t){if(!t)return null;let[e,s,r]=t.split("-").map(Number);return!e||!s||!r?null:new Date(e,s-1,r)}function Da(t){let e=_a(t);return e?e.toLocaleDateString("en",{month:"short",day:"numeric"}):"target launch date"}export{qa as a};