libre-webui 0.19.2 → 0.19.4

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 (143) hide show
  1. package/backend/dist/index.d.ts.map +1 -1
  2. package/backend/dist/index.js +61 -2
  3. package/backend/dist/index.js.map +1 -1
  4. package/backend/dist/routes/artifacts.d.ts +3 -0
  5. package/backend/dist/routes/artifacts.d.ts.map +1 -0
  6. package/backend/dist/routes/artifacts.js +167 -0
  7. package/backend/dist/routes/artifacts.js.map +1 -0
  8. package/backend/dist/routes/ollama.d.ts.map +1 -1
  9. package/backend/dist/routes/ollama.js +25 -0
  10. package/backend/dist/routes/ollama.js.map +1 -1
  11. package/backend/dist/routes/preferences.d.ts.map +1 -1
  12. package/backend/dist/routes/preferences.js +44 -0
  13. package/backend/dist/routes/preferences.js.map +1 -1
  14. package/backend/dist/services/chatGenerationService.d.ts +11 -0
  15. package/backend/dist/services/chatGenerationService.d.ts.map +1 -1
  16. package/backend/dist/services/chatGenerationService.js +20 -1
  17. package/backend/dist/services/chatGenerationService.js.map +1 -1
  18. package/backend/dist/services/ollamaService.d.ts +9 -0
  19. package/backend/dist/services/ollamaService.d.ts.map +1 -1
  20. package/backend/dist/services/ollamaService.js +27 -0
  21. package/backend/dist/services/ollamaService.js.map +1 -1
  22. package/backend/dist/services/preferencesService.d.ts +7 -0
  23. package/backend/dist/services/preferencesService.d.ts.map +1 -1
  24. package/backend/dist/services/preferencesService.js +22 -0
  25. package/backend/dist/services/preferencesService.js.map +1 -1
  26. package/backend/dist/types/index.d.ts +5 -0
  27. package/backend/dist/types/index.d.ts.map +1 -1
  28. package/backend/dist/types/index.js.map +1 -1
  29. package/backend/dist/utils/ollamaModelDefaults.d.ts +39 -0
  30. package/backend/dist/utils/ollamaModelDefaults.d.ts.map +1 -0
  31. package/backend/dist/utils/ollamaModelDefaults.js +157 -0
  32. package/backend/dist/utils/ollamaModelDefaults.js.map +1 -0
  33. package/backend/package.json +1 -1
  34. package/frontend/dist/apple-touch-icon.png +0 -0
  35. package/frontend/dist/artifact-runtime/.build-fingerprint +1 -0
  36. package/frontend/dist/artifact-runtime/babel.js +613 -0
  37. package/frontend/dist/artifact-runtime/chart.js +3 -0
  38. package/frontend/dist/artifact-runtime/d3.js +5 -0
  39. package/frontend/dist/artifact-runtime/fonts.js +255 -0
  40. package/frontend/dist/artifact-runtime/framer-motion.js +10 -0
  41. package/frontend/dist/artifact-runtime/lodash.js +20 -0
  42. package/frontend/dist/artifact-runtime/lucide-react.js +1 -0
  43. package/frontend/dist/artifact-runtime/mathjs.js +54 -0
  44. package/frontend/dist/artifact-runtime/mermaid.js +3535 -0
  45. package/frontend/dist/artifact-runtime/papaparse.js +10 -0
  46. package/frontend/dist/artifact-runtime/plotly.js +3790 -0
  47. package/frontend/dist/artifact-runtime/react.js +9 -0
  48. package/frontend/dist/artifact-runtime/recharts.js +69 -0
  49. package/frontend/dist/artifact-runtime/runtime.js +1 -0
  50. package/frontend/dist/artifact-runtime/tailwind.js +952 -0
  51. package/frontend/dist/artifact-runtime/three.js +5271 -0
  52. package/frontend/dist/artifact-runtime/tone.js +210 -0
  53. package/frontend/dist/assets/index-DrcHGnwk.js +64 -0
  54. package/frontend/dist/assets/index-DtkGuqvC.css +1 -0
  55. package/frontend/dist/favicon-dark.png +0 -0
  56. package/frontend/dist/favicon-light.png +0 -0
  57. package/frontend/dist/favicon.svg +1 -0
  58. package/frontend/dist/fonts/inter.css +254 -0
  59. package/frontend/dist/fonts/v20-UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7W0Q5n-wU.woff2 +0 -0
  60. package/frontend/dist/fonts/v20-UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw.woff2 +0 -0
  61. package/frontend/dist/fonts/v20-UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7W0Q5n-wU.woff2 +0 -0
  62. package/frontend/dist/fonts/v20-UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7W0Q5n-wU.woff2 +0 -0
  63. package/frontend/dist/fonts/v20-UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7W0Q5n-wU.woff2 +0 -0
  64. package/frontend/dist/fonts/v20-UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7W0Q5n-wU.woff2 +0 -0
  65. package/frontend/dist/fonts/v20-UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7W0Q5n-wU.woff2 +0 -0
  66. package/frontend/dist/icon-192.png +0 -0
  67. package/frontend/dist/icon-512.png +0 -0
  68. package/frontend/dist/index.html +16 -11
  69. package/frontend/dist/js/ArtifactContainer-CEBbQqtg.js +1 -0
  70. package/frontend/dist/js/{ArtifactDemoPage-BlVBMy6a.js → ArtifactDemoPage-BDTtUPjk.js} +58 -2
  71. package/frontend/dist/js/ArtifactSandboxFrame-DOQWmEAm.js +151 -0
  72. package/frontend/dist/js/ArtifactSlideOutPanel-BMhWWM3P.js +1 -0
  73. package/frontend/dist/js/ChatPage-B64xgIPZ.js +16 -0
  74. package/frontend/dist/js/FirstTimeSetup-1IqkWCsV.js +1 -0
  75. package/frontend/dist/js/{GalleryPage-BnaFZERr.js → GalleryPage-CKgQAYmH.js} +1 -1
  76. package/frontend/dist/js/{HomePage-BvpoUzGG.js → HomePage-aNO615Go.js} +1 -1
  77. package/frontend/dist/js/{LibreClawPage-B-6rO5Jl.js → LibreClawPage-DZqgIOgT.js} +1 -1
  78. package/frontend/dist/js/ModelSelector-DhmVTh2d.js +1 -0
  79. package/frontend/dist/js/{ModelsPage-D5H70fs3.js → ModelsPage-tzXaut3l.js} +1 -1
  80. package/frontend/dist/js/{NotesPage-D9b3JxCx.js → NotesPage-Ciwrazz9.js} +1 -1
  81. package/frontend/dist/js/{PersonasPage-CJOGnyQV.js → PersonasPage-C9Pkl4yH.js} +2 -2
  82. package/frontend/dist/js/{PluginUsagePage-DHNMWquK.js → PluginUsagePage-DPfyos1y.js} +1 -1
  83. package/frontend/dist/js/{RichMessageContent-C7NG7gs-.js → RichMessageContent-CUcmvdXW.js} +1 -1
  84. package/frontend/dist/js/SettingsModal-DhrjNMcd.js +1 -0
  85. package/frontend/dist/js/{SystemPage-BsPen2Qb.js → SystemPage-CkUsJ-UR.js} +1 -1
  86. package/frontend/dist/js/{UserManagementPage-I9i5r0V3.js → UserManagementPage-DClRsCeA.js} +1 -1
  87. package/frontend/dist/js/WorkPage-cJEe9LZ_.js +5 -0
  88. package/frontend/dist/js/api-iDBo7I0x.js +19 -0
  89. package/frontend/dist/js/{appStore-CLIS0fvz.js → appStore-BAFz_6aP.js} +2 -2
  90. package/frontend/dist/js/{ar-B_uYj5Gv.js → ar-D3PgKaYD.js} +1 -1
  91. package/frontend/dist/js/{authStore-CsCkBmaG.js → authStore-2665PsVB.js} +2 -2
  92. package/frontend/dist/js/{bn-Pd4HHYsG.js → bn-DJiNo5j1.js} +1 -1
  93. package/frontend/dist/js/chatStore-fX9gMb9B.js +2 -0
  94. package/frontend/dist/js/config-CmH3hRFc.js +1 -0
  95. package/frontend/dist/js/{cs-CgVXogHE.js → cs-BJ7pToPB.js} +1 -1
  96. package/frontend/dist/js/{da-DTUIrClO.js → da-Cqw35YeI.js} +1 -1
  97. package/frontend/dist/js/{de-CKITtmnY.js → de-DLw7O2DX.js} +1 -1
  98. package/frontend/dist/js/{es-DKDhsL9J.js → es-CLg6Zl_p.js} +1 -1
  99. package/frontend/dist/js/{estree-CrfVSazx.js → estree-63s2XfPj.js} +1 -1
  100. package/frontend/dist/js/{fr-CUvNp0pc.js → fr-BUmG4BWs.js} +1 -1
  101. package/frontend/dist/js/{hi-Bwdmc__g.js → hi-CGktbsaL.js} +1 -1
  102. package/frontend/dist/js/{html-BbJLJMaV.js → html-CRbptZf3.js} +1 -1
  103. package/frontend/dist/js/{i18n-ZJQSoIuM.js → i18n-DFbHZ75-.js} +2 -2
  104. package/frontend/dist/js/{id-CWTPw3NJ.js → id-C7FnPtw9.js} +1 -1
  105. package/frontend/dist/js/{is-4dV6F4Bo.js → is-_FSS24Pj.js} +1 -1
  106. package/frontend/dist/js/{it-8uw2-j2s.js → it-DWTgF8my.js} +1 -1
  107. package/frontend/dist/js/{ja-Bl7gd3kp.js → ja-jYrlZiIs.js} +1 -1
  108. package/frontend/dist/js/{ko-C_CYwJnL.js → ko-3PZ87sc7.js} +1 -1
  109. package/frontend/dist/js/{markdown-DiMg1QLf.js → markdown-C23cybKA.js} +1 -1
  110. package/frontend/dist/js/{messageCodeStyles-CfzjQF-R.js → messageCodeStyles-BJVb4sK7.js} +1 -1
  111. package/frontend/dist/js/{ms-Dznw3AkA.js → ms-BfySq07T.js} +1 -1
  112. package/frontend/dist/js/{nl-fW-4lPWK.js → nl-DupdNsDK.js} +1 -1
  113. package/frontend/dist/js/{pl-CanprK04.js → pl-DYoPcTNe.js} +1 -1
  114. package/frontend/dist/js/{pt-JhTaVvKa.js → pt-p_-S_r1k.js} +1 -1
  115. package/frontend/dist/js/{ru-uPtHQATq.js → ru-CuJFlVPc.js} +1 -1
  116. package/frontend/dist/js/{standalone-Vs6LnjM6.js → standalone-BwzoPJoZ.js} +1 -1
  117. package/frontend/dist/js/{sv-yr6iqxR-.js → sv-DyZJcYOQ.js} +1 -1
  118. package/frontend/dist/js/{th-Bx4U5yKy.js → th-Cd6fTxUn.js} +1 -1
  119. package/frontend/dist/js/{tr-C7tCwYuZ.js → tr-BB1gefYF.js} +1 -1
  120. package/frontend/dist/js/{typescript-BhVG1zGU.js → typescript-CS-sPC9m.js} +1 -1
  121. package/frontend/dist/js/{ui-Dj9IFugT.js → ui-B-C2BCTb.js} +2 -2
  122. package/frontend/dist/js/{uk-C4SbiAUn.js → uk-DFURilqa.js} +1 -1
  123. package/frontend/dist/js/{vi-C3-TmuzC.js → vi-BXclLwGp.js} +1 -1
  124. package/frontend/dist/js/{zh-CRfqIC_I.js → zh-BS8f68w1.js} +1 -1
  125. package/frontend/dist/logo-dark.png +0 -0
  126. package/frontend/dist/logo-dark.svg +1 -0
  127. package/frontend/dist/logo-light.png +0 -0
  128. package/frontend/dist/logo-light.svg +1 -0
  129. package/frontend/dist/logo.svg +1 -6
  130. package/frontend/dist/maskable-512.png +0 -0
  131. package/package.json +3 -3
  132. package/frontend/dist/assets/index-B9H3vQ-n.css +0 -1
  133. package/frontend/dist/assets/index-D4LhtFTX.js +0 -38
  134. package/frontend/dist/js/ArtifactContainer-DvuGeXXu.js +0 -1
  135. package/frontend/dist/js/ArtifactSlideOutPanel-CaPMk1Qj.js +0 -1
  136. package/frontend/dist/js/ChatPage-D4UBhGLk.js +0 -16
  137. package/frontend/dist/js/FirstTimeSetup-DJiDNTXY.js +0 -1
  138. package/frontend/dist/js/ModelSelector-BV1kuaVg.js +0 -1
  139. package/frontend/dist/js/SettingsModal-DEBxDPne.js +0 -1
  140. package/frontend/dist/js/WorkPage-e30yqvJe.js +0 -5
  141. package/frontend/dist/js/api-jwjnjqx6.js +0 -19
  142. package/frontend/dist/js/artifactHtml-C0Hu9I1u.js +0 -41
  143. package/frontend/dist/js/chatStore-DRY8C0J1.js +0 -2
@@ -0,0 +1,64 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/SettingsModal-DhrjNMcd.js","js/rolldown-runtime-hePW80VL.js","js/markdown-core-DHnR5Hw8.js","js/useTranslation-CdeLZqSW.js","js/i18n-DFbHZ75-.js","js/router-vendor-Ca9zqOqT.js","js/i18next-DgmgtwsV.js","js/ui-vendor-D_pYT79f.js","js/logger-DSXjF4ye.js","js/api-iDBo7I0x.js","js/utils-vendor-1zob7nK9.js","js/config-CmH3hRFc.js","js/imageGenModels-Dx_QMLJQ.js","js/utils-BhpNrGnR.js","js/chatStore-fX9gMb9B.js","js/authStore-2665PsVB.js","js/appStore-BAFz_6aP.js","js/messageCodeStyles-BJVb4sK7.js","js/Button-X9TT9gTD.js","js/ui-B-C2BCTb.js","js/HomePage-aNO615Go.js","js/work-DVgm81bJ.js","js/ChatPage-B64xgIPZ.js","js/react-vendor-DPNXrO-8.js","js/welcomePrompts-to5mv_gx.js","js/ArtifactSandboxFrame-DOQWmEAm.js","js/ArtifactContainer-CEBbQqtg.js","js/OptimizedSyntaxHighlighter-CWYUn9Oe.js","js/syntax-highlight-Ca9bHsaz.js","js/ModelSelector-DhmVTh2d.js","js/ModelsPage-tzXaut3l.js","js/PersonasPage-C9Pkl4yH.js","js/GalleryPage-CKgQAYmH.js","js/NotesPage-Ciwrazz9.js","js/RichMessageContent-CUcmvdXW.js","js/markdown-math-B7FlYsmr.js","assets/markdown-math-ClQbWekD.css","js/LibreClawPage-DZqgIOgT.js","js/WorkPage-cJEe9LZ_.js","js/UserManagementPage-DClRsCeA.js","js/PluginUsagePage-DPfyos1y.js","js/SystemPage-CkUsJ-UR.js","js/ArtifactDemoPage-BDTtUPjk.js","js/ArtifactSlideOutPanel-BMhWWM3P.js","js/FirstTimeSetup-1IqkWCsV.js"])))=>i.map(i=>d[i]);
2
+ import{r as e}from"../js/rolldown-runtime-hePW80VL.js";import{d as t,f as n,i as r}from"../js/markdown-core-DHnR5Hw8.js";import{n as i,t as a}from"../js/react-vendor-DPNXrO-8.js";import{_ as o,a as s,c,d as l,g as u,h as d,i as f,m as p,n as m,o as h,r as g,s as _,t as v,u as y,v as b}from"../js/router-vendor-Ca9zqOqT.js";import{t as x}from"../js/useTranslation-CdeLZqSW.js";import{i as S,r as C,t as w}from"../js/i18n-DFbHZ75-.js";import{A as T,At as ee,B as E,Bt as D,Cn as O,Ct as k,Dt as te,J as ne,K as A,M as j,O as re,Ot as ie,P as ae,R as M,Rt as N,S as oe,T as P,Tn as F,U as se,Ut as ce,Vt as le,Y as ue,Z as de,Zt as fe,an as pe,at as me,bn as he,c as ge,cn as _e,ct as ve,d as ye,f as be,ft as xe,hn as Se,ht as Ce,in as we,it as Te,k as Ee,l as De,m as Oe,n as ke,on as Ae,pn as je,rn as Me,s as Ne,sn as Pe,st as Fe,tt as Ie,un as Le,vt as Re,wn as I,wt as ze,y as Be,zt as Ve}from"../js/ui-vendor-D_pYT79f.js";import{a as He,o as Ue,t as We}from"../js/utils-vendor-1zob7nK9.js";import{i as Ge,t as L}from"../js/logger-DSXjF4ye.js";import{t as Ke}from"../js/config-CmH3hRFc.js";import{C as qe,m as Je,p as Ye,w as Xe}from"../js/api-iDBo7I0x.js";import{i as Ze,n as Qe,o as $e,t as R}from"../js/utils-BhpNrGnR.js";import{i as et,o as tt,t as nt}from"../js/chatStore-fX9gMb9B.js";import{a as rt,c as it,l as at,n as z,r as ot}from"../js/authStore-2665PsVB.js";import{t as st}from"../js/appStore-BAFz_6aP.js";import{n as ct}from"../js/welcomePrompts-to5mv_gx.js";import{l as lt}from"../js/messageCodeStyles-BJVb4sK7.js";import{t as B}from"../js/Button-X9TT9gTD.js";import{p as ut}from"../js/ui-B-C2BCTb.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var dt=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},ft,pt,mt,ht=new(ft=new WeakMap,pt=new WeakMap,mt=new WeakMap,class extends dt{constructor(){super(),o(this,ft,void 0),o(this,pt,void 0),o(this,mt,void 0),d(mt,this,e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e();return window.addEventListener(`visibilitychange`,t,!1),()=>{window.removeEventListener(`visibilitychange`,t)}}})}onSubscribe(){p(pt,this)||this.setEventListener(p(mt,this))}onUnsubscribe(){this.hasListeners()||(p(pt,this)?.call(this),d(pt,this,void 0))}setEventListener(e){d(mt,this,e),p(pt,this)?.call(this),d(pt,this,e(e=>{typeof e==`boolean`?this.setFocused(e):this.onFocus()}))}setFocused(e){p(ft,this)!==e&&(d(ft,this,e),this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return typeof p(ft,this)==`boolean`?p(ft,this):globalThis.document?.visibilityState!==`hidden`}}),gt,_t,vt={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},yt=new(gt=new WeakMap,_t=new WeakMap,class{constructor(){o(this,gt,vt),o(this,_t,!1)}setTimeoutProvider(e){d(gt,this,e)}setTimeout(e,t){return p(gt,this).setTimeout(e,t)}clearTimeout(e){p(gt,this).clearTimeout(e)}setInterval(e,t){return p(gt,this).setInterval(e,t)}clearInterval(e){p(gt,this).clearInterval(e)}});function bt(e){setTimeout(e,0)}var xt=typeof window>`u`||`Deno`in globalThis;function V(){}function St(e,t){return typeof e==`function`?e(t):e}function Ct(e){return typeof e==`number`&&e>=0&&e!==1/0}function wt(e,t){return Math.max(e+(t||0)-Date.now(),0)}function Tt(e,t){return typeof e==`function`?e(t):e}function H(e,t){return typeof e==`function`?e(t):e}function Et(e,t){let{type:n=`all`,exact:r,fetchStatus:i,predicate:a,queryKey:o,stale:s}=e;if(o){if(r){if(t.queryHash!==Ot(o,t.options))return!1}else if(!At(t.queryKey,o))return!1}if(n!==`all`){let e=t.isActive();if(n===`active`&&!e||n===`inactive`&&e)return!1}return!(typeof s==`boolean`&&t.isStale()!==s||i&&i!==t.state.fetchStatus||a&&!a(t))}function Dt(e,t){let{exact:n,status:r,predicate:i,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(n){if(kt(t.options.mutationKey)!==kt(a))return!1}else if(!At(t.options.mutationKey,a))return!1}return!(r&&t.state.status!==r||i&&!i(t))}function Ot(e,t){return(t?.queryKeyHashFn||kt)(e)}function kt(e){return JSON.stringify(e,(e,t)=>Ft(t)?Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}):t)}function At(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(Array.isArray(e)&&Array.isArray(t)){for(let n=0;n<t.length;n++)if(!At(e[n],t[n]))return!1;return!0}let n=Object.keys(t);for(let r of n)if(!At(e[r],t[r]))return!1;return!0}return!1}var jt=Object.prototype.hasOwnProperty;function Mt(e,t,n=0){if(e===t)return e;if(n>500)return t;let r=Pt(e)&&Pt(t);if(!r&&!(Ft(e)&&Ft(t)))return t;let i=(r?e:Object.keys(e)).length,a=r?t:Object.keys(t),o=a.length,s=r?Array(o):{},c=0;for(let l=0;l<o;l++){let o=r?l:a[l],u=e[o],d=t[o];if(u===d){s[o]=u,(r?l<i:jt.call(e,o))&&c++;continue}if(u===null||d===null||typeof u!=`object`||typeof d!=`object`){s[o]=d;continue}let f=Mt(u,d,n+1);s[o]=f,f===u&&c++}return i===o&&c===i?e:s}function Nt(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(e[n]!==t[n])return!1;return!0}function Pt(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function Ft(e){if(!It(e))return!1;let t=e.constructor;if(t===void 0)return!0;let n=t.prototype;return!(!It(n)||!n.hasOwnProperty(`isPrototypeOf`)||Object.getPrototypeOf(e)!==Object.prototype)}function It(e){return Object.prototype.toString.call(e)===`[object Object]`}function Lt(e){return new Promise(t=>{yt.setTimeout(t,e)})}function Rt(e,t,n){return typeof n.structuralSharing==`function`?n.structuralSharing(e,t):n.structuralSharing===!1?t:Mt(e,t)}function zt(e,t,n=0){let r=[...e,t];return n&&r.length>n?r.slice(1):r}function Bt(e,t,n=0){let r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var Vt=Symbol();function Ht(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:!e.queryFn||e.queryFn===Vt?()=>Promise.reject(Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function Ut(e,t){return typeof e==`function`?e(...t):!!e}function Wt(e,t,n){let r=!1,i;return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(i??(i=t()),r?i:(r=!0,i.aborted?n():i.addEventListener(`abort`,n,{once:!0}),i))}),e}var Gt=(()=>{let e=()=>xt;return{isServer(){return e()},setIsServer(t){e=t}}})();function Kt(){let e,t,n=new Promise((n,r)=>{e=n,t=r});n.status=`pending`,n.catch(()=>{});function r(e){Object.assign(n,e),delete n.resolve,delete n.reject}return n.resolve=t=>{r({status:`fulfilled`,value:t}),e(t)},n.reject=e=>{r({status:`rejected`,reason:e}),t(e)},n}var qt=bt;function Jt(){let e=[],t=0,n=e=>{e()},r=e=>{e()},i=qt,a=r=>{t?e.push(r):i(()=>{n(r)})},o=()=>{let t=e;e=[],t.length&&i(()=>{r(()=>{t.forEach(e=>{n(e)})})})};return{batch:e=>{let n;t++;try{n=e()}finally{t--,t||o()}return n},batchCalls:e=>(...t)=>{a(()=>{e(...t)})},schedule:a,setNotifyFunction:e=>{n=e},setBatchNotifyFunction:e=>{r=e},setScheduler:e=>{i=e}}}var U=Jt(),Yt,Xt,Zt,Qt=new(Yt=new WeakMap,Xt=new WeakMap,Zt=new WeakMap,class extends dt{constructor(){super(),o(this,Yt,!0),o(this,Xt,void 0),o(this,Zt,void 0),d(Zt,this,e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e(!0),n=()=>e(!1);return window.addEventListener(`online`,t,!1),window.addEventListener(`offline`,n,!1),()=>{window.removeEventListener(`online`,t),window.removeEventListener(`offline`,n)}}})}onSubscribe(){p(Xt,this)||this.setEventListener(p(Zt,this))}onUnsubscribe(){this.hasListeners()||(p(Xt,this)?.call(this),d(Xt,this,void 0))}setEventListener(e){d(Zt,this,e),p(Xt,this)?.call(this),d(Xt,this,e(this.setOnline.bind(this)))}setOnline(e){p(Yt,this)!==e&&(d(Yt,this,e),this.listeners.forEach(t=>{t(e)}))}isOnline(){return p(Yt,this)}});function $t(e){return Math.min(1e3*2**e,3e4)}function en(e){return(e??`online`)!==`online`||Qt.isOnline()}var tn=class extends Error{constructor(e){super(`CancelledError`),this.revert=e?.revert,this.silent=e?.silent}};function nn(e){let t=!1,n=0,r,i=Kt(),a=()=>i.status!==`pending`,o=t=>{if(!a()){let n=new tn(t);f(n),e.onCancel?.(n)}},s=()=>{t=!0},c=()=>{t=!1},l=()=>ht.isFocused()&&(e.networkMode===`always`||Qt.isOnline())&&e.canRun(),u=()=>en(e.networkMode)&&e.canRun(),d=e=>{a()||(r?.(),i.resolve(e))},f=e=>{a()||(r?.(),i.reject(e))},p=()=>new Promise(t=>{r=e=>{(a()||l())&&t(e)},e.onPause?.()}).then(()=>{r=void 0,a()||e.onContinue?.()}),m=()=>{if(a())return;let r,i=n===0?e.initialPromise:void 0;try{r=i??e.fn()}catch(e){r=Promise.reject(e)}Promise.resolve(r).then(d).catch(r=>{if(a())return;let i=e.retry??(Gt.isServer()?0:3),o=e.retryDelay??$t,s=typeof o==`function`?o(n,r):o,c=i===!0||typeof i==`number`&&n<i||typeof i==`function`&&i(n,r);if(t||!c){f(r);return}n++,e.onFail?.(n,r),Lt(s).then(()=>l()?void 0:p()).then(()=>{t?f(r):m()})})};return{promise:i,status:()=>i.status,cancel:o,continue:()=>(r?.(),i),cancelRetry:s,continueRetry:c,canStart:u,start:()=>(u()?m():p().then(m),i)}}var rn,an=(rn=new WeakMap,class{constructor(){o(this,rn,void 0)}destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),Ct(this.gcTime)&&d(rn,this,yt.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(Gt.isServer()?1/0:3e5))}clearGcTimeout(){p(rn,this)!==void 0&&(yt.clearTimeout(p(rn,this)),d(rn,this,void 0))}});function on(e){return{onFetch:(t,n)=>{let r=t.options,i=t.fetchOptions?.meta?.fetchMore?.direction,a=t.state.data?.pages||[],o=t.state.data?.pageParams||[],s={pages:[],pageParams:[]},c=0,l=async()=>{let n=!1,l=e=>{Wt(e,()=>t.signal,()=>n=!0)},u=Ht(t.options,t.fetchOptions),d=async(e,r,i)=>{if(n)return Promise.reject(t.signal.reason);if(r==null&&e.pages.length)return Promise.resolve(e);let a=(()=>{let e={client:t.client,queryKey:t.queryKey,pageParam:r,direction:i?`backward`:`forward`,meta:t.options.meta};return l(e),e})(),o=await u(a),{maxPages:s}=t.options,c=i?Bt:zt;return{pages:c(e.pages,o,s),pageParams:c(e.pageParams,r,s)}};if(i&&a.length){let e=i===`backward`,t=e?cn:sn,n={pages:a,pageParams:o};s=await d(n,t(r,n),e)}else{let t=e??a.length;do{let e=c===0?o[0]??r.initialPageParam:sn(r,s);if(c>0&&e==null)break;s=await d(s,e),c++}while(c<t)}return s};t.fetchFn=t.options.persister?()=>t.options.persister?.(l,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n):l}}}function sn(e,{pages:t,pageParams:n}){let r=t.length-1;return t.length>0?e.getNextPageParam(t[r],t,n[r],n):void 0}function cn(e,{pages:t,pageParams:n}){return t.length>0?e.getPreviousPageParam?.(t[0],t,n[0],n):void 0}function ln(e,t){return t?sn(e,t)!=null:!1}function un(e,t){return!t||!e.getPreviousPageParam?!1:cn(e,t)!=null}function dn(e,t){b(e,t),t.add(e)}var fn,pn,mn,hn,gn,W,_n,vn,yn,bn=(fn=new WeakMap,pn=new WeakMap,mn=new WeakMap,hn=new WeakMap,gn=new WeakMap,W=new WeakMap,_n=new WeakMap,vn=new WeakMap,yn=new WeakSet,class extends an{constructor(e){super(),dn(this,yn),o(this,fn,void 0),o(this,pn,void 0),o(this,mn,void 0),o(this,hn,void 0),o(this,gn,void 0),o(this,W,void 0),o(this,_n,void 0),o(this,vn,void 0),d(vn,this,!1),d(_n,this,e.defaultOptions),this.setOptions(e.options),this.observers=[],d(gn,this,e.client),d(hn,this,p(gn,this).getQueryCache()),this.queryKey=e.queryKey,this.queryHash=e.queryHash,d(pn,this,Tn(this.options)),this.state=e.state??p(pn,this),this.scheduleGc()}get meta(){return this.options.meta}get queryType(){return p(fn,this)}get promise(){return p(W,this)?.promise}setOptions(e){if(this.options={...p(_n,this),...e},e?._type&&d(fn,this,e._type),this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){let e=Tn(this.options);e.data!==void 0&&(this.setState(wn(e.data,e.dataUpdatedAt)),d(pn,this,e))}}optionalRemove(){!this.observers.length&&this.state.fetchStatus===`idle`&&p(hn,this).remove(this)}setData(e,t){let n=Rt(this.state.data,e,this.options);return u(yn,this,Sn).call(this,{data:n,type:`success`,dataUpdatedAt:t?.updatedAt,manual:t?.manual}),n}setState(e){u(yn,this,Sn).call(this,{type:`setState`,state:e})}cancel(e){let t=p(W,this)?.promise;return p(W,this)?.cancel(e),t?t.then(V).catch(V):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}get resetState(){return p(pn,this)}reset(){this.destroy(),this.setState(this.resetState)}isActive(){return this.observers.some(e=>H(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===Vt||!this.isFetched()}isFetched(){return this.state.dataUpdateCount+this.state.errorUpdateCount>0}isStatic(){return this.getObserversCount()>0&&this.observers.some(e=>Tt(e.options.staleTime,this)===`static`)}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(e=0){return this.state.data===void 0?!0:e===`static`?!1:this.state.isInvalidated?!0:!wt(this.state.dataUpdatedAt,e)}onFocus(){this.observers.find(e=>e.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),p(W,this)?.continue()}onOnline(){this.observers.find(e=>e.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),p(W,this)?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),p(hn,this).notify({type:`observerAdded`,query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(p(W,this)&&(p(vn,this)||u(yn,this,xn).call(this)?p(W,this).cancel({revert:!0}):p(W,this).cancelRetry()),this.scheduleGc()),p(hn,this).notify({type:`observerRemoved`,query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||u(yn,this,Sn).call(this,{type:`invalidate`})}async fetch(e,t){if(this.state.fetchStatus!==`idle`&&p(W,this)?.status()!==`rejected`){if(this.state.data!==void 0&&t?.cancelRefetch)this.cancel({silent:!0});else if(p(W,this))return p(W,this).continueRetry(),p(W,this).promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let n=new AbortController,r=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(d(vn,this,!0),n.signal)})},i=()=>{let e=Ht(this.options,t),n=(()=>{let e={client:p(gn,this),queryKey:this.queryKey,meta:this.meta};return r(e),e})();return d(vn,this,!1),this.options.persister?this.options.persister(e,n,this):e(n)},a=(()=>{let e={fetchOptions:t,options:this.options,queryKey:this.queryKey,client:p(gn,this),state:this.state,fetchFn:i};return r(e),e})();(p(fn,this)===`infinite`?on(this.options.pages):this.options.behavior)?.onFetch(a,this),d(mn,this,this.state),(this.state.fetchStatus===`idle`||this.state.fetchMeta!==a.fetchOptions?.meta)&&u(yn,this,Sn).call(this,{type:`fetch`,meta:a.fetchOptions?.meta}),d(W,this,nn({initialPromise:t?.initialPromise,fn:a.fetchFn,onCancel:e=>{e instanceof tn&&e.revert&&this.setState({...p(mn,this),fetchStatus:`idle`}),n.abort()},onFail:(e,t)=>{u(yn,this,Sn).call(this,{type:`failed`,failureCount:e,error:t})},onPause:()=>{u(yn,this,Sn).call(this,{type:`pause`})},onContinue:()=>{u(yn,this,Sn).call(this,{type:`continue`})},retry:a.options.retry,retryDelay:a.options.retryDelay,networkMode:a.options.networkMode,canRun:()=>!0}));try{let e=await p(W,this).start();if(e===void 0)throw Error(`${this.queryHash} data is undefined`);return this.setData(e),p(hn,this).config.onSuccess?.(e,this),p(hn,this).config.onSettled?.(e,this.state.error,this),e}catch(e){if(e instanceof tn){if(e.silent)return p(W,this).promise;if(e.revert){if(this.state.data===void 0)throw e;return this.state.data}}throw u(yn,this,Sn).call(this,{type:`error`,error:e}),p(hn,this).config.onError?.(e,this),p(hn,this).config.onSettled?.(this.state.data,e,this),e}finally{this.scheduleGc()}}});function xn(){return this.state.fetchStatus===`paused`&&this.state.status===`pending`}function Sn(e){let t=t=>{switch(e.type){case`failed`:return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case`pause`:return{...t,fetchStatus:`paused`};case`continue`:return{...t,fetchStatus:`fetching`};case`fetch`:return{...t,...Cn(t.data,this.options),fetchMeta:e.meta??null};case`success`:let n={...t,...wn(e.data,e.dataUpdatedAt),dataUpdateCount:t.dataUpdateCount+1,...!e.manual&&{fetchStatus:`idle`,fetchFailureCount:0,fetchFailureReason:null}};return d(mn,this,e.manual?n:void 0),n;case`error`:let r=e.error;return{...t,error:r,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:r,fetchStatus:`idle`,status:`error`,isInvalidated:!0};case`invalidate`:return{...t,isInvalidated:!0};case`setState`:return{...t,...e.state}}};this.state=t(this.state),U.batch(()=>{this.observers.forEach(e=>{e.onQueryUpdate()}),p(hn,this).notify({query:this,type:`updated`,action:e})})}function Cn(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:en(t.networkMode)?`fetching`:`paused`,...e===void 0&&{error:null,status:`pending`}}}function wn(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:`success`}}function Tn(e){let t=typeof e.initialData==`function`?e.initialData():e.initialData,n=t!==void 0,r=n?typeof e.initialDataUpdatedAt==`function`?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?`success`:`pending`,fetchStatus:`idle`}}var G,K,En,q,Dn,On,kn,An,jn,Mn,Nn,Pn,Fn,In,Ln,J,Rn=(G=new WeakMap,K=new WeakMap,En=new WeakMap,q=new WeakMap,Dn=new WeakMap,On=new WeakMap,kn=new WeakMap,An=new WeakMap,jn=new WeakMap,Mn=new WeakMap,Nn=new WeakMap,Pn=new WeakMap,Fn=new WeakMap,In=new WeakMap,Ln=new WeakMap,J=new WeakSet,class extends dt{constructor(e,t){super(),dn(this,J),o(this,G,void 0),o(this,K,void 0),o(this,En,void 0),o(this,q,void 0),o(this,Dn,void 0),o(this,On,void 0),o(this,kn,void 0),o(this,An,void 0),o(this,jn,void 0),o(this,Mn,void 0),o(this,Nn,void 0),o(this,Pn,void 0),o(this,Fn,void 0),o(this,In,void 0),o(this,Ln,new Set),this.options=t,d(G,this,e),d(An,this,null),d(kn,this,Kt()),this.bindMethods(),this.setOptions(t)}bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(p(K,this).addObserver(this),Yn(p(K,this),this.options)?u(J,this,zn).call(this):this.updateResult(),u(J,this,Un).call(this))}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return Xn(p(K,this),this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return Xn(p(K,this),this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,u(J,this,Wn).call(this),u(J,this,Gn).call(this),p(K,this).removeObserver(this)}setOptions(e){let t=this.options,n=p(K,this);if(this.options=p(G,this).defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!=`boolean`&&typeof this.options.enabled!=`function`&&typeof H(this.options.enabled,p(K,this))!=`boolean`)throw Error(`Expected enabled to be a boolean or a callback that returns a boolean`);u(J,this,Kn).call(this),p(K,this).setOptions(this.options),t._defaulted&&!Nt(this.options,t)&&p(G,this).getQueryCache().notify({type:`observerOptionsUpdated`,query:p(K,this),observer:this});let r=this.hasListeners();r&&Zn(p(K,this),n,this.options,t)&&u(J,this,zn).call(this),this.updateResult(),r&&(p(K,this)!==n||H(this.options.enabled,p(K,this))!==H(t.enabled,p(K,this))||Tt(this.options.staleTime,p(K,this))!==Tt(t.staleTime,p(K,this)))&&u(J,this,Bn).call(this);let i=u(J,this,Vn).call(this);r&&(p(K,this)!==n||H(this.options.enabled,p(K,this))!==H(t.enabled,p(K,this))||i!==p(In,this))&&u(J,this,Hn).call(this,i)}getOptimisticResult(e){let t=p(G,this).getQueryCache().build(p(G,this),e),n=this.createResult(t,e);return $n(this,n)&&(d(q,this,n),d(On,this,this.options),d(Dn,this,p(K,this).state)),n}getCurrentResult(){return p(q,this)}trackResult(e,t){return new Proxy(e,{get:(e,n)=>(this.trackProp(n),t?.(n),n===`promise`&&(this.trackProp(`data`),!this.options.experimental_prefetchInRender&&p(kn,this).status===`pending`&&p(kn,this).reject(Error(`experimental_prefetchInRender feature flag is not enabled`))),Reflect.get(e,n))})}trackProp(e){p(Ln,this).add(e)}getCurrentQuery(){return p(K,this)}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=p(G,this).defaultQueryOptions(e),n=p(G,this).getQueryCache().build(p(G,this),t);return n.fetch().then(()=>this.createResult(n,t))}fetch(e){return u(J,this,zn).call(this,{...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),p(q,this)))}createResult(e,t){let n=p(K,this),r=this.options,i=p(q,this),a=p(Dn,this),o=p(On,this),s=e===n?p(En,this):e.state,{state:c}=e,l={...c},u=!1,f;if(t._optimisticResults){let i=this.hasListeners(),a=!i&&Yn(e,t),o=i&&Zn(e,n,t,r);(a||o)&&(l={...l,...Cn(c.data,e.options)}),t._optimisticResults===`isRestoring`&&(l.fetchStatus=`idle`)}let{error:m,errorUpdatedAt:h,status:g}=l;f=l.data;let _=!1;if(t.placeholderData!==void 0&&f===void 0&&g===`pending`){let e;i?.isPlaceholderData&&t.placeholderData===o?.placeholderData?(e=i.data,_=!0):e=typeof t.placeholderData==`function`?t.placeholderData(p(Nn,this)?.state.data,p(Nn,this)):t.placeholderData,e!==void 0&&(g=`success`,f=Rt(i?.data,e,t),u=!0)}if(t.select&&f!==void 0&&!_)if(i&&f===a?.data&&t.select===p(jn,this))f=p(Mn,this);else try{d(jn,this,t.select),f=t.select(f),f=Rt(i?.data,f,t),d(Mn,this,f),d(An,this,null)}catch(e){d(An,this,e)}p(An,this)&&(m=p(An,this),f=p(Mn,this),h=Date.now(),g=`error`);let v=l.fetchStatus===`fetching`,y=g===`pending`,b=g===`error`,x=y&&v,S=f!==void 0,C={status:g,fetchStatus:l.fetchStatus,isPending:y,isSuccess:g===`success`,isError:b,isInitialLoading:x,isLoading:x,data:f,dataUpdatedAt:l.dataUpdatedAt,error:m,errorUpdatedAt:h,failureCount:l.fetchFailureCount,failureReason:l.fetchFailureReason,errorUpdateCount:l.errorUpdateCount,isFetched:e.isFetched(),isFetchedAfterMount:l.dataUpdateCount>s.dataUpdateCount||l.errorUpdateCount>s.errorUpdateCount,isFetching:v,isRefetching:v&&!y,isLoadingError:b&&!S,isPaused:l.fetchStatus===`paused`,isPlaceholderData:u,isRefetchError:b&&S,isStale:Qn(e,t),refetch:this.refetch,promise:p(kn,this),isEnabled:H(t.enabled,e)!==!1};if(this.options.experimental_prefetchInRender){let t=C.data!==void 0,r=C.status===`error`&&!t,i=e=>{r?e.reject(C.error):t&&e.resolve(C.data)},a=()=>{let e=d(kn,this,C.promise=Kt());i(e)},o=p(kn,this);switch(o.status){case`pending`:e.queryHash===n.queryHash&&i(o);break;case`fulfilled`:(r||C.data!==o.value)&&a();break;case`rejected`:(!r||C.error!==o.reason)&&a()}}return C}updateResult(){let e=p(q,this),t=this.createResult(p(K,this),this.options);d(Dn,this,p(K,this).state),d(On,this,this.options),p(Dn,this).data!==void 0&&d(Nn,this,p(K,this)),!Nt(t,e)&&(d(q,this,t),u(J,this,qn).call(this,{listeners:(()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,n=typeof t==`function`?t():t;if(n===`all`||!n&&!p(Ln,this).size)return!0;let r=new Set(n??p(Ln,this));return this.options.throwOnError&&r.add(`error`),Object.keys(p(q,this)).some(t=>{let n=t;return p(q,this)[n]!==e[n]&&r.has(n)})})()}))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&u(J,this,Un).call(this)}});function zn(e){u(J,this,Kn).call(this);let t=p(K,this).fetch(this.options,e);return e?.throwOnError||(t=t.catch(V)),t}function Bn(){u(J,this,Wn).call(this);let e=Tt(this.options.staleTime,p(K,this));if(Gt.isServer()||p(q,this).isStale||!Ct(e))return;let t=wt(p(q,this).dataUpdatedAt,e)+1;d(Pn,this,yt.setTimeout(()=>{p(q,this).isStale||this.updateResult()},t))}function Vn(){return(typeof this.options.refetchInterval==`function`?this.options.refetchInterval(p(K,this)):this.options.refetchInterval)??!1}function Hn(e){u(J,this,Gn).call(this),d(In,this,e),!(Gt.isServer()||H(this.options.enabled,p(K,this))===!1||!Ct(p(In,this))||p(In,this)===0)&&d(Fn,this,yt.setInterval(()=>{(this.options.refetchIntervalInBackground||ht.isFocused())&&u(J,this,zn).call(this)},p(In,this)))}function Un(){u(J,this,Bn).call(this),u(J,this,Hn).call(this,u(J,this,Vn).call(this))}function Wn(){p(Pn,this)!==void 0&&(yt.clearTimeout(p(Pn,this)),d(Pn,this,void 0))}function Gn(){p(Fn,this)!==void 0&&(yt.clearInterval(p(Fn,this)),d(Fn,this,void 0))}function Kn(){let e=p(G,this).getQueryCache().build(p(G,this),this.options);if(e===p(K,this))return;let t=p(K,this);d(K,this,e),d(En,this,e.state),this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}function qn(e){U.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(p(q,this))}),p(G,this).getQueryCache().notify({query:p(K,this),type:`observerResultsUpdated`})})}function Jn(e,t){return H(t.enabled,e)!==!1&&e.state.data===void 0&&(e.state.status!==`error`||H(t.retryOnMount,e)!==!1)}function Yn(e,t){return Jn(e,t)||e.state.data!==void 0&&Xn(e,t,t.refetchOnMount)}function Xn(e,t,n){if(H(t.enabled,e)!==!1&&Tt(t.staleTime,e)!==`static`){let r=typeof n==`function`?n(e):n;return r===`always`||r!==!1&&Qn(e,t)}return!1}function Zn(e,t,n,r){return(e!==t||H(r.enabled,e)===!1)&&(!n.suspense||e.state.status!==`error`)&&Qn(e,n)}function Qn(e,t){return H(t.enabled,e)!==!1&&e.isStaleByTime(Tt(t.staleTime,e))}function $n(e,t){return!Nt(e.getCurrentResult(),t)}var er,tr,Y,nr,rr,ir=(er=new WeakMap,tr=new WeakMap,Y=new WeakMap,nr=new WeakMap,rr=new WeakSet,class extends an{constructor(e){super(),dn(this,rr),o(this,er,void 0),o(this,tr,void 0),o(this,Y,void 0),o(this,nr,void 0),d(er,this,e.client),this.mutationId=e.mutationId,d(Y,this,e.mutationCache),d(tr,this,[]),this.state=e.state||or(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){p(tr,this).includes(e)||(p(tr,this).push(e),this.clearGcTimeout(),p(Y,this).notify({type:`observerAdded`,mutation:this,observer:e}))}removeObserver(e){d(tr,this,p(tr,this).filter(t=>t!==e)),this.scheduleGc(),p(Y,this).notify({type:`observerRemoved`,mutation:this,observer:e})}optionalRemove(){p(tr,this).length||(this.state.status===`pending`?this.scheduleGc():p(Y,this).remove(this))}continue(){return p(nr,this)?.continue()??this.execute(this.state.variables)}async execute(e){let t=()=>{u(rr,this,ar).call(this,{type:`continue`})},n={client:p(er,this),meta:this.options.meta,mutationKey:this.options.mutationKey};d(nr,this,nn({fn:()=>this.options.mutationFn?this.options.mutationFn(e,n):Promise.reject(Error(`No mutationFn found`)),onFail:(e,t)=>{u(rr,this,ar).call(this,{type:`failed`,failureCount:e,error:t})},onPause:()=>{u(rr,this,ar).call(this,{type:`pause`})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>p(Y,this).canRun(this)}));let r=this.state.status===`pending`,i=!p(nr,this).canStart();try{if(r)t();else{u(rr,this,ar).call(this,{type:`pending`,variables:e,isPaused:i}),p(Y,this).config.onMutate&&await p(Y,this).config.onMutate(e,this,n);let t=await this.options.onMutate?.(e,n);t!==this.state.context&&u(rr,this,ar).call(this,{type:`pending`,context:t,variables:e,isPaused:i})}let a=await p(nr,this).start();return await p(Y,this).config.onSuccess?.(a,e,this.state.context,this,n),await this.options.onSuccess?.(a,e,this.state.context,n),await p(Y,this).config.onSettled?.(a,null,this.state.variables,this.state.context,this,n),await this.options.onSettled?.(a,null,e,this.state.context,n),u(rr,this,ar).call(this,{type:`success`,data:a}),a}catch(t){try{await p(Y,this).config.onError?.(t,e,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onError?.(t,e,this.state.context,n)}catch(e){Promise.reject(e)}try{await p(Y,this).config.onSettled?.(void 0,t,this.state.variables,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onSettled?.(void 0,t,e,this.state.context,n)}catch(e){Promise.reject(e)}throw u(rr,this,ar).call(this,{type:`error`,error:t}),t}finally{p(Y,this).runNext(this)}}});function ar(e){let t=t=>{switch(e.type){case`failed`:return{...t,failureCount:e.failureCount,failureReason:e.error};case`pause`:return{...t,isPaused:!0};case`continue`:return{...t,isPaused:!1};case`pending`:return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:`pending`,variables:e.variables,submittedAt:Date.now()};case`success`:return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:`success`,isPaused:!1};case`error`:return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:`error`}}};this.state=t(this.state),U.batch(()=>{p(tr,this).forEach(t=>{t.onMutationUpdate(e)}),p(Y,this).notify({mutation:this,type:`updated`,action:e})})}function or(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:`idle`,variables:void 0,submittedAt:0}}var sr,cr,lr,ur=(sr=new WeakMap,cr=new WeakMap,lr=new WeakMap,class extends dt{constructor(e={}){super(),o(this,sr,void 0),o(this,cr,void 0),o(this,lr,void 0),this.config=e,d(sr,this,new Set),d(cr,this,new Map),d(lr,this,0)}build(e,t,n){var r;let i=new ir({client:e,mutationCache:this,mutationId:d(lr,this,(r=p(lr,this),++r)),options:e.defaultMutationOptions(t),state:n});return this.add(i),i}add(e){p(sr,this).add(e);let t=dr(e);if(typeof t==`string`){let n=p(cr,this).get(t);n?n.push(e):p(cr,this).set(t,[e])}this.notify({type:`added`,mutation:e})}remove(e){if(p(sr,this).delete(e)){let t=dr(e);if(typeof t==`string`){let n=p(cr,this).get(t);if(n)if(n.length>1){let t=n.indexOf(e);t!==-1&&n.splice(t,1)}else n[0]===e&&p(cr,this).delete(t)}}this.notify({type:`removed`,mutation:e})}canRun(e){let t=dr(e);if(typeof t==`string`){let n=p(cr,this).get(t)?.find(e=>e.state.status===`pending`);return!n||n===e}return!0}runNext(e){let t=dr(e);return typeof t==`string`?(p(cr,this).get(t)?.find(t=>t!==e&&t.state.isPaused))?.continue()??Promise.resolve():Promise.resolve()}clear(){U.batch(()=>{p(sr,this).forEach(e=>{this.notify({type:`removed`,mutation:e})}),p(sr,this).clear(),p(cr,this).clear()})}getAll(){return Array.from(p(sr,this))}find(e){let t={exact:!0,...e};return this.getAll().find(e=>Dt(t,e))}findAll(e={}){return this.getAll().filter(t=>Dt(e,t))}notify(e){U.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return U.batch(()=>Promise.all(e.map(e=>e.continue().catch(V))))}});function dr(e){return e.options.scope?.id}var fr,pr=(fr=new WeakMap,class extends dt{constructor(e={}){super(),o(this,fr,void 0),this.config=e,d(fr,this,new Map)}build(e,t,n){let r=t.queryKey,i=t.queryHash??Ot(r,t),a=this.get(i);return a||(a=new bn({client:e,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(a)),a}add(e){p(fr,this).has(e.queryHash)||(p(fr,this).set(e.queryHash,e),this.notify({type:`added`,query:e}))}remove(e){let t=p(fr,this).get(e.queryHash);t&&(e.destroy(),t===e&&p(fr,this).delete(e.queryHash),this.notify({type:`removed`,query:e}))}clear(){U.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return p(fr,this).get(e)}getAll(){return[...p(fr,this).values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>Et(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>Et(e,t)):t}notify(e){U.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){U.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){U.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}}),X,mr,hr,gr,_r,vr,yr,br,xr=(X=new WeakMap,mr=new WeakMap,hr=new WeakMap,gr=new WeakMap,_r=new WeakMap,vr=new WeakMap,yr=new WeakMap,br=new WeakMap,class{constructor(e={}){o(this,X,void 0),o(this,mr,void 0),o(this,hr,void 0),o(this,gr,void 0),o(this,_r,void 0),o(this,vr,void 0),o(this,yr,void 0),o(this,br,void 0),d(X,this,e.queryCache||new pr),d(mr,this,e.mutationCache||new ur),d(hr,this,e.defaultOptions||{}),d(gr,this,new Map),d(_r,this,new Map),d(vr,this,0)}mount(){var e;d(vr,this,(e=p(vr,this),e++,e)),p(vr,this)===1&&(d(yr,this,ht.subscribe(async e=>{e&&(await this.resumePausedMutations(),p(X,this).onFocus())})),d(br,this,Qt.subscribe(async e=>{e&&(await this.resumePausedMutations(),p(X,this).onOnline())})))}unmount(){var e;d(vr,this,(e=p(vr,this),e--,e)),p(vr,this)===0&&(p(yr,this)?.call(this),d(yr,this,void 0),p(br,this)?.call(this),d(br,this,void 0))}isFetching(e){return p(X,this).findAll({...e,fetchStatus:`fetching`}).length}isMutating(e){return p(mr,this).findAll({...e,status:`pending`}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return p(X,this).get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),n=p(X,this).build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(Tt(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return p(X,this).findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,n){let r=this.defaultQueryOptions({queryKey:e}),i=p(X,this).get(r.queryHash)?.state.data,a=St(t,i);if(a!==void 0)return p(X,this).build(this,r).setData(a,{...n,manual:!0})}setQueriesData(e,t,n){return U.batch(()=>p(X,this).findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return p(X,this).get(t.queryHash)?.state}removeQueries(e){let t=p(X,this);U.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=p(X,this);return U.batch(()=>(n.findAll(e).forEach(e=>{e.reset()}),this.refetchQueries({type:`active`,...e},t)))}cancelQueries(e,t={}){let n={revert:!0,...t},r=U.batch(()=>p(X,this).findAll(e).map(e=>e.cancel(n)));return Promise.all(r).then(V).catch(V)}invalidateQueries(e,t={}){return U.batch(()=>(p(X,this).findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType===`none`?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??`active`},t)))}refetchQueries(e,t={}){let n={...t,cancelRefetch:t.cancelRefetch??!0},r=U.batch(()=>p(X,this).findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(V)),e.state.fetchStatus===`paused`?Promise.resolve():t}));return Promise.all(r).then(V)}fetchQuery(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=p(X,this).build(this,t);return n.isStaleByTime(Tt(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(V).catch(V)}fetchInfiniteQuery(e){return e._type=`infinite`,this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(V).catch(V)}ensureInfiniteQueryData(e){return e._type=`infinite`,this.ensureQueryData(e)}resumePausedMutations(){return Qt.isOnline()?p(mr,this).resumePausedMutations():Promise.resolve()}getQueryCache(){return p(X,this)}getMutationCache(){return p(mr,this)}getDefaultOptions(){return p(hr,this)}setDefaultOptions(e){d(hr,this,e)}setQueryDefaults(e,t){p(gr,this).set(kt(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...p(gr,this).values()],n={};return t.forEach(t=>{At(e,t.queryKey)&&Object.assign(n,t.defaultOptions)}),n}setMutationDefaults(e,t){p(_r,this).set(kt(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...p(_r,this).values()],n={};return t.forEach(t=>{At(e,t.mutationKey)&&Object.assign(n,t.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let t={...p(hr,this).queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=Ot(t.queryKey,t)),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!==`always`),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode=`offlineFirst`),t.queryFn===Vt&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...p(hr,this).mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){p(X,this).clear(),p(mr,this).clear()}}),Z=e(n(),1),Q=t(),Sr=Z.createContext(void 0),Cr=e=>{let t=Z.useContext(Sr);if(e)return e;if(!t)throw Error(`No QueryClient set, use QueryClientProvider to set one`);return t},wr=({client:e,children:t})=>(Z.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,Q.jsx)(Sr.Provider,{value:e,children:t})),Tr=Z.createContext(!1),Er=()=>Z.useContext(Tr);Tr.Provider;function Dr(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var Or=Z.createContext(Dr()),kr=()=>Z.useContext(Or),Ar=(e,t,n)=>{let r=n?.state.error&&typeof e.throwOnError==`function`?Ut(e.throwOnError,[n.state.error,n]):e.throwOnError;(e.suspense||e.experimental_prefetchInRender||r)&&(t.isReset()||(e.retryOnMount=!1))},jr=e=>{Z.useEffect(()=>{e.clearReset()},[e])},Mr=({result:e,errorResetBoundary:t,throwOnError:n,query:r,suspense:i})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&(i&&e.data===void 0||Ut(n,[e.error,r])),Nr=e=>{if(e.suspense){let t=1e3,n=e=>e===`static`?e:Math.max(e??t,t),r=e.staleTime;e.staleTime=typeof r==`function`?(...e)=>n(r(...e)):n(r),typeof e.gcTime==`number`&&(e.gcTime=Math.max(e.gcTime,t))}},Pr=(e,t)=>e.isLoading&&e.isFetching&&!t,Fr=(e,t)=>e?.suspense&&t.isPending,Ir=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function Lr(e,t,n){let r=Er(),i=kr(),a=Cr(n),o=a.defaultQueryOptions(e);a.getDefaultOptions().queries?._experimental_beforeQuery?.(o);let s=a.getQueryCache().get(o.queryHash),c=e.subscribed!==!1;o._optimisticResults=r?`isRestoring`:c?`optimistic`:void 0,Nr(o),Ar(o,i,s),jr(i);let l=!a.getQueryCache().get(o.queryHash),[u]=Z.useState(()=>new t(a,o)),d=u.getOptimisticResult(o),f=!r&&c;if(Z.useSyncExternalStore(Z.useCallback(e=>{let t=f?u.subscribe(U.batchCalls(e)):V;return u.updateResult(),t},[u,f]),()=>u.getCurrentResult(),()=>u.getCurrentResult()),Z.useEffect(()=>{u.setOptions(o)},[o,u]),Fr(o,d))throw Ir(o,u,i);if(Mr({result:d,errorResetBoundary:i,throwOnError:o.throwOnError,query:s,suspense:o.suspense}))throw d.error;return a.getDefaultOptions().queries?._experimental_afterQuery?.(o,d),o.experimental_prefetchInRender&&!Gt.isServer()&&Pr(d,r)&&(l?Ir(o,u,i):s?.promise)?.catch(V).finally(()=>{u.updateResult()}),o.notifyOnChangeProps?d:u.trackResult(d)}function Rr(e,t){return Lr(e,Rn,t)}var zr=e(a(),1),Br={id:`home`,kind:`home`,path:`/`},Vr=[`/models`,`/personas`,`/gallery`,`/agents`,`/users`,`/usage`,`/system`,`/artifacts`],Hr=e=>{if(e===`/`||e===`/home`)return Br;if(e===`/chat`)return{id:`chat:new`,kind:`chat`,path:`/chat`};let t=e.match(/^\/c\/([^/]+)$/);if(t)return{id:`chat:${t[1]}`,kind:`chat`,path:e};if(e===`/work`)return{id:`work:new`,kind:`work`,path:`/work`};let n=e.match(/^\/work\/([^/]+)$/);return n?{id:`work:${n[1]}`,kind:`work`,path:e}:Vr.includes(e)?{id:`page:${e}`,kind:`page`,path:e}:null},Ur=e=>[Br,...e.filter(e=>e.id!==Br.id)],Wr=Ue()(We((e,t)=>({tabs:[Br],activeTabId:Br.id,syncWithPath:t=>{let n=Hr(t);n&&e(e=>{let t=Ur(e.tabs),r=t.find(e=>e.id===n.id);if(r)return{tabs:t,activeTabId:r.id};let i=t.find(t=>t.id===e.activeTabId);return i&&i.kind===n.kind&&i.id.endsWith(`:new`)&&!n.id.endsWith(`:new`)?{tabs:t.map(e=>e.id===i.id?n:e),activeTabId:n.id}:{tabs:[...t,n],activeTabId:n.id}})},closeTab:e=>t().closeTabs([e]),closeTabs:(n,r)=>{let i=t(),a=Ur(i.tabs),o=new Set(n.filter(e=>e!==Br.id&&a.some(t=>t.id===e)));if(o.size===0)return null;let s=a.findIndex(e=>e.id===i.activeTabId),c=a.filter(e=>!o.has(e.id));if(!o.has(i.activeTabId))return e({tabs:c}),null;let l=r?c.find(e=>e.id===r):void 0,u=a.slice(0,Math.max(0,s)).reverse().find(e=>!o.has(e.id)),d=l??u??c[0]??Br;return e({tabs:c,activeTabId:d.id}),d},reset:()=>e({tabs:[Br],activeTabId:Br.id})}),{name:`libre-webui-tabs`,merge:(e,t)=>{let n=e??{},r=Array.isArray(n.tabs)?Ur(n.tabs.filter(e=>!!e&&typeof e.id==`string`&&typeof e.path==`string`&&Hr(e.path)?.id===e.id)):t.tabs,i=r.some(e=>e.id===n.activeTabId)?n.activeTabId:Br.id;return{...t,tabs:r,activeTabId:i}}})),Gr=i(),Kr=L(`components:avatar-upload`),qr=({value:e,onChange:t,className:n=``})=>{let{t:r}=x(),i=(0,Z.useRef)(null),[a,o]=(0,Z.useState)(!1),[s,c]=(0,Z.useState)(!1),l=async e=>{if(!e.type.startsWith(`image/`)){F.error(r(`user.avatar.invalidFile`));return}if(e.size>2097152){F.error(r(`user.avatar.fileTooLarge`));return}o(!0);try{let n=new FileReader;n.onload=e=>{let n=e.target?.result;t(n),F.success(r(`user.avatar.uploaded`))},n.onerror=()=>{F.error(r(`user.avatar.readFailed`))},n.readAsDataURL(e)}catch(e){Kr.error(`Failed to upload avatar:`,e),F.error(r(`user.avatar.uploadFailed`))}finally{o(!1)}},u=e=>{let t=e.target.files?.[0];t&&l(t)},d=e=>{e.preventDefault(),c(!0)},f=e=>{e.preventDefault(),c(!1)},p=e=>{e.preventDefault(),c(!1);let t=e.dataTransfer.files?.[0];t&&l(t)},m=()=>{t(``),F.success(r(`user.avatar.removed`))},h=()=>e||null;return(0,Q.jsx)(`div`,{className:`space-y-4 ${n}`,children:(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`label`,{className:`block text-sm font-medium text-gray-700 dark:text-dark-600 mb-2`,children:r(`user.avatar.label`)}),(0,Q.jsxs)(`div`,{className:`flex items-start gap-4`,children:[(0,Q.jsx)(`div`,{className:`flex-shrink-0`,children:(0,Q.jsx)(`div`,{className:`w-20 h-20 rounded-full overflow-hidden bg-gray-100 dark:bg-dark-200 border-2 border-gray-300 dark:border-dark-300 flex items-center justify-center`,children:h()?(0,Q.jsx)(`img`,{src:h(),alt:`Avatar preview`,className:`w-full h-full object-cover`}):(0,Q.jsx)(ge,{className:`h-8 w-8 text-gray-400 dark:text-gray-500`})})}),(0,Q.jsxs)(`div`,{className:`flex-1 space-y-3`,children:[e?(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 p-3 bg-gray-50 dark:bg-dark-200 rounded-lg`,children:[(0,Q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-medium text-gray-900 dark:text-gray-100 truncate`,children:r(`user.avatar.customAvatar`)}),(0,Q.jsx)(`p`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:r(`user.avatar.clickToChange`)})]}),(0,Q.jsx)(B,{variant:`ghost`,size:`sm`,onClick:m,className:`text-red-600 hover:text-red-700 hover:bg-red-50 dark:text-red-400 dark:hover:text-red-300 dark:hover:bg-red-900/20`,children:(0,Q.jsx)(ke,{className:`h-4 w-4`})})]}):(0,Q.jsxs)(`div`,{className:`border-2 border-dashed rounded-lg p-4 text-center cursor-pointer transition-colors ${s?`border-primary-500 bg-primary-50 dark:bg-primary-900/20`:`border-gray-300 dark:border-gray-600 hover:border-gray-400 dark:hover:border-gray-500`}`,onDragOver:d,onDragLeave:f,onDrop:p,onClick:()=>i.current?.click(),children:[(0,Q.jsx)(ye,{className:`h-8 w-8 mx-auto text-gray-400 dark:text-gray-500 mb-2`}),(0,Q.jsx)(`p`,{className:`text-sm font-medium text-gray-900 dark:text-gray-100 mb-2`,children:r(`user.avatar.uploadAvatarImage`)}),(0,Q.jsx)(`p`,{className:`text-xs text-gray-500 dark:text-gray-400 mb-2`,children:r(`user.avatar.dragAndDrop`)}),(0,Q.jsxs)(B,{variant:`outline`,size:`sm`,disabled:a,className:`mx-auto`,children:[(0,Q.jsx)(ye,{className:`h-4 w-4 mr-2`}),r(a?`user.avatar.uploading`:`user.avatar.chooseImage`)]})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`label`,{className:`block text-xs font-medium text-gray-600 dark:text-gray-400 mb-1`,children:r(`user.avatar.enterImageUrl`)}),(0,Q.jsx)(`input`,{type:`url`,value:e,onChange:e=>t(e.target.value),className:`w-full px-3 py-2 text-sm border border-gray-300 dark:border-dark-300 rounded-md bg-white dark:bg-dark-50 text-gray-900 dark:text-dark-800`,placeholder:`https://example.com/avatar.jpg`})]})]})]}),(0,Q.jsx)(`input`,{ref:i,type:`file`,accept:`image/*`,onChange:u,className:`hidden`}),(0,Q.jsx)(`p`,{className:`text-xs text-gray-500 dark:text-gray-400 mt-2`,children:r(`user.avatar.supportedFormats`)})]})})};function Jr({open:e,value:t,saving:n,onChange:r,onClose:i,onSave:a}){let{t:o}=x();return e?(0,Gr.createPortal)((0,Q.jsx)(`div`,{className:`fixed inset-0 z-[2147483647] flex items-center justify-center bg-gray-950/55 p-4 backdrop-blur-md`,onClick:i,children:(0,Q.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-labelledby":`avatar-modal-title`,className:`bg-white dark:bg-dark-25 rounded-3xl shadow-[0_24px_80px_rgba(0,0,0,0.24)] p-6 w-full max-w-md border border-black/[0.07] dark:border-white/[0.08] animate-scale-in`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,Q.jsx)(`h3`,{id:`avatar-modal-title`,className:`text-lg font-medium tracking-[-0.02em] text-gray-950 dark:text-dark-950`,children:o(`user.avatar.title`)}),(0,Q.jsx)(`button`,{onClick:i,className:`p-2 hover:bg-gray-100 dark:hover:bg-dark-200 rounded-xl transition-colors`,children:(0,Q.jsx)(ke,{size:20,className:`text-gray-500`})})]}),(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsx)(qr,{value:t,onChange:r}),(0,Q.jsxs)(`div`,{className:`flex justify-end gap-3 pt-4 border-t border-gray-200 dark:border-dark-300`,children:[(0,Q.jsx)(`button`,{onClick:i,className:`px-4 py-2 text-sm font-medium text-gray-700 dark:text-dark-700 hover:bg-gray-100 dark:hover:bg-dark-200 rounded-xl transition-colors`,children:o(`common.cancel`)}),(0,Q.jsx)(`button`,{onClick:a,disabled:n,className:`px-4 py-2 text-sm font-medium text-white bg-gray-950 hover:bg-gray-800 dark:bg-white dark:text-gray-950 dark:hover:bg-gray-100 disabled:opacity-50 disabled:cursor-not-allowed rounded-xl transition-colors`,children:o(n?`common.saving`:`common.save`)})]})]})]})}),document.body):null}var Yr={sm:`text-[1.0625rem] leading-none`,md:`text-[1.625rem] leading-none`,lg:`text-[2.5rem] leading-none`},Xr=({className:e,size:t=`md`,wordmark:n=!0})=>(0,Q.jsxs)(`span`,{dir:`ltr`,className:R(`libre-brand inline-flex items-baseline whitespace-nowrap`,Yr[t],e),children:[`Libre`,n&&(0,Q.jsx)(`span`,{className:`ms-1 font-normal tracking-[-0.035em]`,children:`WebUI`})]}),Zr={sm:`h-6 w-6`,md:`h-8 w-8`,lg:`h-12 w-12`},Qr=({className:e,size:t=`md`,label:n=`Libre WebUI`})=>(0,Q.jsxs)(`svg`,{viewBox:`0 0 64 64`,className:R(`shrink-0`,Zr[t],e),role:n?`img`:`presentation`,"aria-label":n??void 0,"aria-hidden":!n||void 0,focusable:`false`,children:[(0,Q.jsx)(`path`,{d:`M 11.5 18.0 L 11.5 32 A 20.5 20.5 0 0 0 50.58 40.66`,fill:`none`,stroke:`currentColor`,strokeWidth:`11`,strokeLinecap:`round`}),(0,Q.jsx)(`path`,{d:`M 50.58 18.0 L 50.58 25.66`,fill:`none`,stroke:`currentColor`,strokeWidth:`11`,strokeLinecap:`round`})]}),$r=()=>{let{theme:e,toggleTheme:t}=st(),n=e.mode===`light`?`dark`:`light`,r=e.mode===`light`?(0,Q.jsx)(de,{className:`h-4 w-4 text-ink-muted transition-colors duration-150 group-hover:text-ink motion-reduce:transition-none`,strokeWidth:1.75,"aria-hidden":`true`}):(0,Q.jsx)(Be,{className:`h-4 w-4 text-ink-muted transition-colors duration-150 group-hover:text-ink motion-reduce:transition-none`,strokeWidth:1.75,"aria-hidden":`true`}),i=`Switch to ${n} mode`;return(0,Q.jsx)(B,{variant:`ghost`,size:`sm`,onClick:t,className:`h-9 w-9 rounded-full p-0`,"aria-label":i,title:`${i} (⌘D)`,children:r})};function ei({sidebarCompact:e,isElectron:t,showWork:n,activeMode:r,selectedModel:i,modelCount:a,onToggleCompact:o,onStartWork:s,onCreateSession:c}){let{t:l}=x(),u=!i||a===0,d=u?l(`chat.model.noModelsTooltip`):``;return(0,Q.jsxs)(`div`,{className:R(e?`px-2 pb-2 pt-3`:`px-4 pb-4 pt-4`,t&&`pt-10`),children:[(0,Q.jsx)(`div`,{className:R(`flex min-w-0 items-center`,e?`justify-center mb-3`:`justify-between mb-4`),children:e?(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-2`,children:[(0,Q.jsx)(Qr,{size:`sm`,className:`h-11 w-11 p-2.5 text-gray-950 dark:text-dark-950`}),(0,Q.jsx)(B,{type:`button`,variant:`ghost`,size:`sm`,onClick:o,className:`h-11 w-11 rounded-xl p-0 text-gray-600 ring-1 ring-black/[0.06] transition-colors hover:bg-white hover:text-gray-950 dark:text-dark-600 dark:ring-white/[0.08] dark:hover:bg-dark-200 dark:hover:text-dark-950`,title:l(`sidebar.expandSidebar`),"aria-label":l(`sidebar.expandSidebar`),"data-testid":`sidebar-rail-expand`,children:(0,Q.jsx)(Me,{className:`h-5 w-5 rtl:rotate-180`})})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 text-gray-950 dark:text-dark-950`,children:[(0,Q.jsx)(Qr,{size:`sm`,label:null}),(0,Q.jsx)(Xr,{size:`sm`,className:`tracking-[-0.035em]`})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,Q.jsx)(`div`,{className:`hidden sm:block`,children:(0,Q.jsx)($r,{})}),(0,Q.jsx)(B,{variant:`ghost`,size:`sm`,onClick:o,className:`h-9 w-9 p-0 rounded-xl text-gray-500 dark:text-dark-600 hover:bg-white/80 dark:hover:bg-dark-200 hover:text-gray-950 dark:hover:text-dark-950 touch-manipulation`,title:l(`sidebar.toggleSize`),"aria-label":l(`sidebar.toggleSize`),"data-testid":`sidebar-toggle-size`,children:(0,Q.jsx)(we,{className:`h-4 w-4 rtl:rotate-180`})})]})]})}),(0,Q.jsxs)(`div`,{className:R(`grid w-full gap-2`,e||!n?`grid-cols-1`:`grid-cols-2`),"data-testid":`sidebar-create-actions`,children:[n&&(0,Q.jsxs)(B,{variant:r===`work`?`primary`:`secondary`,onClick:s,className:R(`h-10 rounded-xl shadow-none touch-manipulation`,e&&`mx-auto h-11 w-11 p-0`),size:`sm`,title:l(`chat.session.work`),"aria-label":l(`chat.session.work`),"aria-pressed":r===`work`,"data-testid":`sidebar-work-button`,children:[(0,Q.jsx)(Le,{className:`h-4 w-4`}),!e&&l(`chat.session.work`)]}),(0,Q.jsxs)(B,{variant:r===`chat`?`primary`:`secondary`,onClick:c,disabled:u,className:R(`h-10 rounded-xl shadow-none touch-manipulation`,e&&`mx-auto h-11 w-11 p-0`),size:`sm`,title:u?d:l(`chat.session.chat`),"aria-label":l(`chat.session.chat`),"aria-pressed":r===`chat`,"data-testid":`sidebar-chat-button`,children:[(0,Q.jsx)(Ie,{className:`h-4 w-4`}),!e&&l(`chat.session.chat`)]})]}),(0,Q.jsxs)(`button`,{type:`button`,"data-testid":`sidebar-search-button`,onClick:()=>window.dispatchEvent(new Event(`libre:open-palette`)),title:l(`palette.search`,`Search`),"aria-label":l(`palette.search`,`Search`),className:R(`mt-2 flex items-center gap-2.5 rounded-xl text-[13px] text-gray-500 transition-colors hover:bg-white/60 hover:text-gray-950 dark:text-dark-600 dark:hover:bg-dark-200/60 dark:hover:text-dark-950 outline-none focus-visible:ring-2 focus-visible:ring-primary-500/30 touch-manipulation`,e?`h-11 w-11 justify-center p-0 mx-auto`:`w-full px-2.5 py-2`),children:[(0,Q.jsx)(ae,{className:`h-4 w-4 shrink-0`}),!e&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`flex-1 text-start`,children:l(`palette.search`,`Search`)}),(0,Q.jsxs)(`span`,{className:`font-mono text-[10px] tracking-wide text-gray-400 dark:text-dark-500`,children:[Ze()?`⌘`:`Ctrl`,`K`]})]})]})]})}var ti=[{path:`/notes`,icon:ue,labelKey:`sidebar.navigation.notes`},{path:`/models`,icon:ce,labelKey:`sidebar.navigation.models`},{path:`/personas`,icon:ge,labelKey:`sidebar.navigation.personas`},{path:`/gallery`,icon:P,labelKey:`sidebar.navigation.imagine`},{path:`/agents`,icon:Se,labelKey:`sidebar.navigation.agents`}];function ni({sidebarCompact:e,activePath:t,showAgents:n,onMobileNavigate:r}){let{t:i}=x();return(0,Q.jsx)(`div`,{className:R(`pb-3`,e?`px-2`:`px-3`),children:(0,Q.jsx)(`nav`,{"data-testid":`sidebar-navigation`,"aria-label":i(`sidebar.navigation.exploreLabel`,`Explore`),className:R(`flex gap-1`,e?`flex-col items-center`:`items-center`),children:ti.filter(e=>e.path!==`/agents`||n).map(({path:n,icon:a,labelKey:o})=>{let s=t===n,c=i(o);return(0,Q.jsxs)(v,{to:n,onClick:r,title:c,"aria-label":c,"aria-current":s?`page`:void 0,className:R(`relative flex items-center justify-center rounded-xl transition-colors duration-150 touch-manipulation outline-none focus-visible:ring-2 focus-visible:ring-primary-500/30`,e?`h-11 w-11`:`h-9 flex-1`,s?`bg-primary-500/10 text-primary-700 ring-1 ring-primary-500/10 dark:bg-primary-500/15 dark:text-primary-300 dark:ring-primary-400/10`:`text-gray-500 hover:bg-white/60 hover:text-gray-950 dark:text-dark-600 dark:hover:bg-dark-200/60 dark:hover:text-dark-950`),children:[e&&s&&(0,Q.jsx)(`span`,{"aria-hidden":`true`,className:`absolute -start-2 h-5 w-0.5 rounded-full bg-primary-500 shadow-[0_0_12px_rgb(var(--color-primary-500)/0.55)]`}),(0,Q.jsx)(a,{className:`h-[18px] w-[18px] shrink-0`})]},n)})})})}function ri(e){let t=new Date,n=new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime(),r=864e5;return e>=n?`today`:e>=n-r?`yesterday`:e>=n-7*r?`previous7Days`:e>=n-30*r?`previous30Days`:`older`}var ii=[`today`,`yesterday`,`previous7Days`,`previous30Days`,`older`];function ai(e){let t=e.trim().split(/\s+/u).filter(Boolean);return t.length===0?`•`:t.length===1?Array.from(t[0]).slice(0,2).join(``).toLocaleUpperCase():`${Array.from(t[0])[0]}${Array.from(t[t.length-1])[0]}`.toLocaleUpperCase()}function oi({preview:e}){let{t,i18n:n}=x(),{session:r}=e,i=r.messages.find(e=>e.role===`user`&&e.content.trim()),a=r.messages.find(e=>e.role===`assistant`&&e.content.trim());return(0,Gr.createPortal)((0,Q.jsxs)(`div`,{role:`tooltip`,className:`pointer-events-none fixed z-[70] hidden w-72 rounded-2xl border border-black/[0.07] bg-surface/95 p-3.5 shadow-[0_16px_48px_rgba(15,23,42,0.18)] backdrop-blur-xl animate-scale-in dark:border-white/[0.09] dark:bg-dark-100/95 md:block`,style:{top:Math.max(8,Math.min(e.top,window.innerHeight-220)),left:e.left},children:[(0,Q.jsx)(`p`,{className:`mb-1 truncate text-[13px] font-semibold text-gray-900 dark:text-dark-900`,children:r.title}),(0,Q.jsx)(`p`,{className:`mb-2 text-[10px] tabular-nums text-gray-400 dark:text-dark-500`,children:Qe(r.updatedAt,n.language)}),i&&(0,Q.jsx)(`div`,{className:`mb-1.5 flex justify-end`,children:(0,Q.jsx)(`p`,{dir:`auto`,className:`max-w-[85%] rounded-xl rounded-ee-sm bg-gray-900 px-2.5 py-1.5 text-[11px] leading-snug text-white dark:bg-dark-300`,children:$e(i.content,110)})}),a&&(0,Q.jsx)(`p`,{dir:`auto`,className:`text-[11px] leading-snug text-gray-600 dark:text-dark-700`,children:$e(a.content.replace(/\s+/g,` `),180)}),!i&&!a&&(0,Q.jsx)(`p`,{className:`text-[11px] italic text-gray-400 dark:text-dark-500`,children:t(`chat.session.noChats`)})]}),document.body)}function si({sessions:e,personas:t,currentSessionId:n,generatingTitleForSession:r,sidebarCompact:i,editingSessionId:a,editingTitle:o,onEditingTitleChange:s,onSelectSession:c,onStartEditing:l,onSaveEdit:u,onCancelEdit:d,onDeleteSession:f,onArchiveSession:p,folders:m=[],onCreateFolder:h,onRenameFolder:g,onDeleteFolder:_,onMoveSession:v,onExpandSidebar:y}){let{t:b,i18n:S}=x(),[C,w]=(0,Z.useState)(null),[T,E]=(0,Z.useState)(null),D=(0,Z.useRef)(null),O=T?e.find(e=>e.id===T)??null:null;(0,Z.useEffect)(()=>()=>{D.current!==null&&window.clearTimeout(D.current)},[]);let k=()=>{D.current!==null&&(window.clearTimeout(D.current),D.current=null),w(null)},ne=(e,t)=>{let n=window.matchMedia(`(hover: hover) and (pointer: fine)`).matches;i||window.innerWidth<768||!n||(D.current!==null&&window.clearTimeout(D.current),D.current=window.setTimeout(()=>{let n=t.getBoundingClientRect();w({session:e,top:n.top,left:n.right+10})},500))},[A,j]=(0,Z.useState)(()=>new Set),[re,ae]=(0,Z.useState)(!1),[M,N]=(0,Z.useState)(``),[oe,P]=(0,Z.useState)(null),[F,ce]=(0,Z.useState)(null),ue=e=>{j(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},de=()=>{let e=M.trim();ae(!1),N(``),e&&h&&h(e)},fe=e=>{let t=M.trim();P(null),N(``),t&&g&&g(e,t)},me=new Set(m.map(e=>e.id)),ge=e.filter(e=>!e.folderId||!me.has(e.folderId)),_e=[...m.map(t=>({key:`folder:${t.id}`,folder:t,sessions:e.filter(e=>e.folderId===t.id)})),...ii.map(e=>({key:e,labelKey:e,sessions:ge.filter(t=>ri(t.updatedAt)===e)})).filter(e=>e.sessions.length>0)],ve=[...e].sort((e,t)=>t.updatedAt-e.updatedAt);return(0,Q.jsxs)(`div`,{"data-testid":`sidebar-session-scroll-region`,className:`scroll-region min-h-0 flex-1 scrollbar-thin border-t border-black/[0.05] dark:border-white/[0.05]`,style:{willChange:`scroll-position`},children:[(0,Q.jsxs)(`div`,{className:R(`px-3 py-3`,i&&`px-2`),children:[!i&&e.length>0&&(0,Q.jsxs)(`div`,{className:`flex items-center justify-between mb-2 px-1`,children:[(0,Q.jsx)(`h3`,{className:`text-[10px] font-semibold text-gray-500 dark:text-dark-500 uppercase tracking-[0.16em] rtl:tracking-normal`,children:b(`chat.session.chats`)}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-1`,children:[h&&(0,Q.jsx)(`button`,{onClick:()=>{ae(!0),N(``)},className:`rounded-md p-0.5 text-gray-400 transition-colors hover:bg-white/70 hover:text-gray-700 dark:text-dark-500 dark:hover:bg-dark-200 dark:hover:text-dark-800`,title:b(`chat.session.folder.new`),children:(0,Q.jsx)(ie,{className:`h-3.5 w-3.5`})}),(0,Q.jsx)(`span`,{className:`text-[10px] tabular-nums text-gray-400 dark:text-dark-500 font-medium`,children:e.length})]})]}),!i&&re&&(0,Q.jsx)(`div`,{className:`mb-2 px-1`,children:(0,Q.jsx)(ut,{value:M,onChange:e=>N(e.target.value),onKeyDown:e=>{e.key===`Enter`?de():e.key===`Escape`&&(ae(!1),N(``))},onBlur:de,placeholder:b(`chat.session.folder.namePlaceholder`),className:`h-8 text-sm`,autoFocus:!0})}),i?(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-1`,children:[(0,Q.jsxs)(`button`,{type:`button`,onClick:y,"data-testid":`sidebar-mobile-chats`,"aria-label":`${b(`chat.session.chats`)} (${e.length})`,title:b(`chat.session.chats`),className:`relative flex h-12 w-12 items-center justify-center rounded-xl text-gray-500 outline-none transition-colors hover:bg-white/70 hover:text-gray-950 focus-visible:ring-2 focus-visible:ring-primary-500/30 dark:text-dark-600 dark:hover:bg-dark-200 dark:hover:text-dark-950 md:hidden`,children:[(0,Q.jsx)(Ie,{className:`h-[18px] w-[18px]`}),e.length>0&&(0,Q.jsx)(`span`,{className:`absolute -end-0.5 -top-0.5 flex h-4 min-w-4 items-center justify-center rounded-md bg-primary-500 px-1 text-[9px] font-semibold tabular-nums text-white shadow-sm`,children:e.length>99?`99+`:e.length})]}),(0,Q.jsx)(`div`,{"data-testid":`sidebar-compact-session-list`,className:`flex w-full flex-col items-center gap-1`,children:ve.map(e=>{let t=n===e.id;return(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>c(e),"data-testid":`sidebar-compact-session`,"aria-current":t?`page`:void 0,"aria-label":e.title,title:e.title,className:R(`relative flex h-12 w-12 items-center justify-center rounded-xl outline-none transition-colors focus-visible:ring-2 focus-visible:ring-primary-500/30`,t?`bg-gray-950 text-white ring-1 ring-black/10 shadow-[0_8px_24px_-14px_rgba(0,0,0,0.7)] dark:bg-white dark:text-gray-950 dark:ring-white/20 dark:shadow-[0_8px_24px_-14px_rgba(255,255,255,0.45)]`:`text-gray-500 hover:bg-white/70 hover:text-gray-950 dark:text-dark-600 dark:hover:bg-dark-200 dark:hover:text-dark-950`),children:[t&&(0,Q.jsx)(`span`,{"aria-hidden":`true`,className:`absolute -start-2 h-5 w-0.5 rounded-full bg-gray-950 shadow-[0_0_10px_rgba(0,0,0,0.35)] dark:bg-white dark:shadow-[0_0_10px_rgba(255,255,255,0.35)]`}),(0,Q.jsx)(`span`,{className:`font-mono text-[11px] font-semibold tracking-[-0.03em]`,children:ai(e.title)}),r===e.id&&(0,Q.jsx)(`span`,{className:`absolute end-1.5 top-1.5 h-1.5 w-1.5 animate-pulse rounded-full bg-primary-500`})]},e.id)})})]}):e.length===0?(0,Q.jsxs)(`div`,{className:R(`text-center py-8`,i?`px-1`:`px-2`),children:[(0,Q.jsx)(`div`,{className:R(`mx-auto mb-3 bg-white/70 dark:bg-dark-200 rounded-xl flex items-center justify-center ring-1 ring-black/[0.04] dark:ring-white/[0.05]`,i?`w-8 h-8`:`w-12 h-12`),children:(0,Q.jsx)(Ie,{className:R(`text-gray-400 dark:text-gray-500`,i?`h-4 w-4`:`h-5 w-5`)})}),!i&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`text-sm font-medium text-gray-600 dark:text-dark-600`,children:b(`chat.session.noChats`)}),(0,Q.jsx)(`p`,{className:`text-xs mt-1 text-gray-400 dark:text-dark-500`,children:b(`chat.session.createFirst`)})]})]}):(0,Q.jsx)(`div`,{className:R(`space-y-2`,i&&`space-y-1`),children:_e.map(e=>(0,Q.jsxs)(`div`,{children:[!i&&e.folder&&(0,Q.jsx)(`div`,{className:`group/folder mb-1 flex items-center justify-between px-1`,children:oe===e.folder.id?(0,Q.jsx)(ut,{value:M,onChange:e=>N(e.target.value),onKeyDown:t=>{t.key===`Enter`?fe(e.folder.id):t.key===`Escape`&&(P(null),N(``))},onBlur:()=>fe(e.folder.id),className:`h-7 text-sm`,autoFocus:!0}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`button`,{onClick:()=>ue(e.folder.id),className:`flex min-w-0 flex-1 items-center gap-1 text-[11px] font-semibold text-gray-500 transition-colors hover:text-gray-800 dark:text-dark-600 dark:hover:text-dark-800`,"aria-expanded":!A.has(e.folder.id),children:[A.has(e.folder.id)?(0,Q.jsx)(Me,{className:`h-3 w-3 shrink-0 rtl:rotate-180`}):(0,Q.jsx)(pe,{className:`h-3 w-3 shrink-0`}),(0,Q.jsx)(te,{className:`h-3 w-3 shrink-0`}),(0,Q.jsx)(`span`,{className:`truncate`,children:e.folder.name}),(0,Q.jsx)(`span`,{className:`text-[10px] font-medium tabular-nums text-gray-400 dark:text-dark-500`,children:e.sessions.length})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-0.5 opacity-0 transition-opacity group-hover/folder:opacity-100`,children:[g&&(0,Q.jsx)(`button`,{onClick:()=>{P(e.folder.id),N(e.folder.name)},className:`rounded-md p-0.5 text-gray-400 hover:text-gray-700 dark:text-dark-500 dark:hover:text-dark-800`,title:b(`chat.session.renameChat`),children:(0,Q.jsx)(se,{className:`h-3 w-3`})}),_&&(0,Q.jsx)(`button`,{onClick:()=>{window.confirm(b(`chat.session.folder.deleteConfirm`))&&_(e.folder.id)},className:`rounded-md p-0.5 text-gray-400 hover:text-red-500 dark:text-dark-500 dark:hover:text-red-400`,title:b(`chat.session.folder.delete`),children:(0,Q.jsx)(Oe,{className:`h-3 w-3`})})]})]})}),!i&&!e.folder&&(0,Q.jsx)(`p`,{className:`mb-1 px-1 text-[10px] font-semibold uppercase tracking-[0.12em] text-gray-400 dark:text-dark-500 rtl:tracking-normal`,children:b(`chat.session.groups.${e.labelKey}`)}),e.folder&&A.has(e.folder.id)?null:(0,Q.jsx)(`div`,{className:R(`space-y-0.5`,i&&`space-y-1`),children:e.sessions.map(e=>{let h=n===e.id,g=e.personaId?t[e.personaId]:null;return(0,Q.jsx)(`div`,{className:R(`group relative cursor-pointer transition-colors duration-150 touch-manipulation outline-none`,i?`rounded-xl p-1 flex items-center justify-center`:`rounded-lg px-2.5 py-2`,h?`bg-white ring-1 ring-black/[0.04] dark:bg-dark-200 dark:ring-white/[0.05]`:`hover:bg-white/60 dark:hover:bg-dark-200/60`),onClick:()=>{k(),c(e)},onMouseEnter:t=>ne(e,t.currentTarget),onMouseLeave:k,title:i?`${e.title} - ${e.model}`:void 0,children:i?(0,Q.jsx)(`div`,{className:`flex items-center justify-center w-full h-10`,children:(0,Q.jsx)(`div`,{className:R(`flex h-9 w-9 items-center justify-center rounded-xl text-[11px] font-semibold uppercase transition-colors`,r===e.id?`bg-white text-primary-600 animate-pulse dark:bg-dark-200 dark:text-primary-400`:h?`bg-gray-950 text-white dark:bg-white dark:text-gray-950`:`bg-white/70 text-gray-500 ring-1 ring-black/[0.04] dark:bg-dark-200/70 dark:text-dark-600 dark:ring-white/[0.05]`),children:e.title.trim().charAt(0)||`•`})}):a===e.id?(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,onClick:e=>e.stopPropagation(),children:[(0,Q.jsx)(ut,{value:o,onChange:e=>s(e.target.value),onKeyDown:t=>{t.key===`Enter`?u(e.id):t.key===`Escape`&&d()},className:`text-sm h-8`,autoFocus:!0}),(0,Q.jsx)(B,{variant:`ghost`,size:`sm`,onClick:()=>u(e.id),className:`h-8 w-8 p-0 shrink-0 hover:bg-gray-100 dark:hover:bg-dark-300 active:bg-gray-200 dark:active:bg-dark-400 touch-manipulation`,children:(0,Q.jsx)(Ae,{className:`h-3 w-3`})}),(0,Q.jsx)(B,{variant:`ghost`,size:`sm`,onClick:d,className:`h-8 w-8 p-0 shrink-0 hover:bg-gray-100 dark:hover:bg-dark-300 active:bg-gray-200 dark:active:bg-dark-400 touch-manipulation`,children:(0,Q.jsx)(ke,{className:`h-3 w-3`})})]}):(0,Q.jsxs)(`div`,{className:`flex items-center justify-between w-full`,children:[(0,Q.jsxs)(`div`,{className:`flex-1 min-w-0 me-2`,children:[(0,Q.jsx)(`h3`,{className:`text-[13px] font-medium truncate leading-tight text-gray-900 dark:text-dark-900`,children:r===e.id?(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,Q.jsx)(`span`,{className:`animate-pulse`,children:b(`chat.session.generatingTitle`)}),(0,Q.jsxs)(`span`,{className:`inline-flex`,children:[(0,Q.jsx)(`span`,{className:`animate-bounce`,style:{animationDelay:`0ms`},children:`.`}),(0,Q.jsx)(`span`,{className:`animate-bounce`,style:{animationDelay:`150ms`},children:`.`}),(0,Q.jsx)(`span`,{className:`animate-bounce`,style:{animationDelay:`300ms`},children:`.`})]})]}):$e(e.title,32)}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5 mt-0.5`,children:[(0,Q.jsx)(`span`,{dir:`auto`,className:R(`text-[11px] tabular-nums`,h?`text-gray-500 dark:text-dark-600`:`text-gray-400 dark:text-dark-500`),children:Qe(e.updatedAt,S.language)}),(0,Q.jsx)(`span`,{className:`text-gray-300 dark:text-dark-400`,children:`•`}),e.personaId?g?(0,Q.jsxs)(`span`,{className:R(`flex items-center gap-1 text-[11px] font-medium`,h?`text-primary-600 dark:text-primary-400`:`text-primary-500 dark:text-primary-500`),title:g.description||g.name,children:[g.avatar&&!g.avatar.startsWith(`data:`)&&(0,Q.jsx)(`span`,{className:`text-[10px]`,children:g.avatar}),(0,Q.jsx)(`span`,{className:`truncate max-w-[100px]`,children:g.name})]}):(0,Q.jsx)(`span`,{className:R(`text-[11px] font-medium italic`,h?`text-gray-500 dark:text-gray-500`:`text-gray-400 dark:text-gray-600`),children:`Persona`}):(0,Q.jsx)(`span`,{dir:`ltr`,className:R(`font-mono text-[10px] truncate max-w-[108px]`,h?`text-gray-700 dark:text-gray-300`:`text-gray-600 dark:text-gray-400`),title:e.model,children:e.model})]})]}),(0,Q.jsx)(B,{variant:`ghost`,size:`sm`,onClick:t=>{t.stopPropagation(),k(),E(e.id)},className:`h-8 w-8 shrink-0 rounded-lg p-0 touch-manipulation sm:hidden`,title:b(`palette.actions`),"aria-label":b(`palette.actions`),"data-testid":`sidebar-session-actions-mobile`,children:(0,Q.jsx)(le,{className:`h-4 w-4`})}),(0,Q.jsxs)(`div`,{className:`hidden shrink-0 items-center gap-0.5 opacity-0 transition-opacity duration-150 group-hover:opacity-100 group-focus-within:opacity-100 sm:flex`,children:[(0,Q.jsx)(B,{variant:`ghost`,size:`sm`,onClick:t=>l(e,t),className:`h-7 w-7 sm:h-7 sm:w-7 p-0 hover:bg-gray-100 dark:hover:bg-dark-300 rounded-lg touch-manipulation`,title:b(`chat.session.renameChat`),children:(0,Q.jsx)(se,{className:`h-3 w-3`})}),v&&m.length>0&&(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsx)(B,{variant:`ghost`,size:`sm`,onClick:t=>{t.stopPropagation(),k(),ce(t=>t===e.id?null:e.id)},className:`h-7 w-7 sm:h-7 sm:w-7 p-0 hover:bg-gray-100 dark:hover:bg-dark-300 rounded-lg touch-manipulation`,title:b(`chat.session.folder.move`),children:(0,Q.jsx)(ee,{className:`h-3 w-3`})}),F===e.id&&(0,Q.jsxs)(`div`,{className:`absolute end-0 top-full z-40 mt-1 w-44 rounded-xl border border-black/[0.08] bg-surface/95 p-1 shadow-[0_12px_36px_rgba(15,23,42,0.16)] backdrop-blur-xl dark:border-white/[0.09] dark:bg-dark-100/95`,onClick:e=>e.stopPropagation(),children:[m.map(t=>(0,Q.jsxs)(`button`,{onClick:()=>{ce(null),v(e.id,t.id)},className:R(`flex w-full items-center gap-2 rounded-lg px-2 py-1.5 text-start text-[12px] text-gray-700 hover:bg-gray-100 dark:text-dark-800 dark:hover:bg-dark-200`,e.folderId===t.id&&`text-primary-600 dark:text-primary-400`),children:[(0,Q.jsx)(te,{className:`h-3 w-3 shrink-0`}),(0,Q.jsx)(`span`,{className:`truncate`,children:t.name})]},t.id)),e.folderId&&(0,Q.jsxs)(`button`,{onClick:()=>{ce(null),v(e.id,null)},className:`flex w-full items-center gap-2 rounded-lg border-t border-gray-100 px-2 py-1.5 text-start text-[12px] text-gray-500 hover:bg-gray-100 dark:border-dark-300 dark:text-dark-600 dark:hover:bg-dark-200`,children:[(0,Q.jsx)(ke,{className:`h-3 w-3 shrink-0`}),b(`chat.session.folder.remove`)]})]})]}),p&&(0,Q.jsx)(B,{variant:`ghost`,size:`sm`,onClick:t=>{k(),p(e.id,t)},className:`h-7 w-7 sm:h-7 sm:w-7 p-0 hover:bg-gray-100 dark:hover:bg-dark-300 rounded-lg touch-manipulation`,title:b(`chat.session.archiveChat`),children:(0,Q.jsx)(he,{className:`h-3 w-3`})}),(0,Q.jsx)(B,{variant:`ghost`,size:`sm`,onClick:t=>f(e.id,t),className:`h-7 w-7 sm:h-7 sm:w-7 p-0 text-red-500 hover:text-red-600 hover:bg-red-50 dark:hover:bg-red-900/20 rounded-lg touch-manipulation`,title:b(`chat.session.deleteChat`),children:(0,Q.jsx)(Oe,{className:`h-3 w-3`})})]})]})},e.id)})})]},e.key))})]}),C&&(0,Q.jsx)(oi,{preview:C}),O&&(0,Gr.createPortal)((0,Q.jsxs)(`div`,{className:`fixed inset-0 z-[80] sm:hidden`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`absolute inset-0 bg-black/35 backdrop-blur-[2px]`,onClick:()=>E(null),"aria-label":b(`common.close`)}),(0,Q.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-label":b(`palette.actions`),className:`absolute inset-x-3 bottom-3 rounded-2xl border border-black/[0.08] bg-surface p-2 shadow-[0_20px_70px_rgba(0,0,0,0.3)] dark:border-white/[0.09] dark:bg-dark-100`,"data-testid":`sidebar-session-actions-sheet`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-3 px-2 pb-2 pt-1`,children:[(0,Q.jsx)(`p`,{className:`min-w-0 truncate text-sm font-semibold text-gray-900 dark:text-dark-900`,children:O.title}),(0,Q.jsx)(B,{variant:`ghost`,size:`sm`,onClick:()=>E(null),className:`h-9 w-9 shrink-0 rounded-xl p-0`,title:b(`common.close`),"aria-label":b(`common.close`),children:(0,Q.jsx)(ke,{className:`h-4 w-4`})})]}),(0,Q.jsxs)(`button`,{type:`button`,onClick:e=>{E(null),l(O,e)},className:`flex min-h-11 w-full items-center gap-3 rounded-xl px-3 py-2 text-start text-sm text-gray-700 hover:bg-gray-100 dark:text-dark-800 dark:hover:bg-dark-200`,children:[(0,Q.jsx)(se,{className:`h-4 w-4 shrink-0`}),b(`chat.session.renameChat`)]}),p&&(0,Q.jsxs)(`button`,{type:`button`,onClick:e=>{E(null),p(O.id,e)},className:`flex min-h-11 w-full items-center gap-3 rounded-xl px-3 py-2 text-start text-sm text-gray-700 hover:bg-gray-100 dark:text-dark-800 dark:hover:bg-dark-200`,children:[(0,Q.jsx)(he,{className:`h-4 w-4 shrink-0`}),b(`chat.session.archiveChat`)]}),v&&m.length>0&&(0,Q.jsxs)(`div`,{className:`mt-1 border-t border-black/[0.06] pt-1 dark:border-white/[0.07]`,children:[(0,Q.jsx)(`p`,{className:`px-3 py-1 text-[10px] font-semibold uppercase tracking-[0.12em] text-gray-400 dark:text-dark-500`,children:b(`chat.session.folder.move`)}),m.map(e=>(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>{E(null),v(O.id,e.id)},className:R(`flex min-h-11 w-full items-center gap-3 rounded-xl px-3 py-2 text-start text-sm text-gray-700 hover:bg-gray-100 dark:text-dark-800 dark:hover:bg-dark-200`,O.folderId===e.id&&`text-primary-600 dark:text-primary-400`),children:[(0,Q.jsx)(te,{className:`h-4 w-4 shrink-0`}),(0,Q.jsx)(`span`,{className:`truncate`,children:e.name})]},e.id)),O.folderId&&(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>{E(null),v(O.id,null)},className:`flex min-h-11 w-full items-center gap-3 rounded-xl px-3 py-2 text-start text-sm text-gray-500 hover:bg-gray-100 dark:text-dark-600 dark:hover:bg-dark-200`,children:[(0,Q.jsx)(ke,{className:`h-4 w-4 shrink-0`}),b(`chat.session.folder.remove`)]})]}),(0,Q.jsxs)(`button`,{type:`button`,onClick:e=>{E(null),f(O.id,e)},className:`mt-1 flex min-h-11 w-full items-center gap-3 rounded-xl border-t border-black/[0.06] px-3 py-2 text-start text-sm text-red-500 hover:bg-red-50 dark:border-white/[0.07] dark:hover:bg-red-900/20`,children:[(0,Q.jsx)(Oe,{className:`h-4 w-4 shrink-0`}),b(`chat.session.deleteChat`)]})]})]}),document.body)]})}function ci({user:e,size:t}){let n=t===`sm`?`w-7 h-7`:`w-8 h-8`,r=t===`sm`?`text-xs`:`text-sm`;return e.avatar?(0,Q.jsx)(`img`,{src:e.avatar,alt:e.username,className:`${n} rounded-full object-cover ring-1 ring-black/10 dark:ring-white/10`,title:`${e.username} (${e.role})`}):(0,Q.jsx)(`div`,{className:`${n} bg-gray-950 dark:bg-white rounded-full flex items-center justify-center`,title:`${e.username} (${e.role})`,children:(0,Q.jsx)(`span`,{className:`text-white dark:text-gray-950 ${r} font-medium`,children:e.username.charAt(0).toUpperCase()})})}function li({requiresAuth:e,user:t,isAdmin:n,pendingApprovalCount:r,sidebarCompact:i,userMenuOpen:a,userMenuRef:o,onToggleUserMenu:s,onOpenSettings:c,onOpenAvatar:l,onLogout:u,onMobileNavigate:d,onCloseUserMenu:f}){let{t:p}=x();return!e||!t?null:(0,Q.jsx)(`div`,{className:R(`border-t border-black/[0.05] dark:border-white/[0.05]`,i?`p-2`:`p-3`),children:i?(0,Q.jsxs)(`div`,{className:`relative flex justify-center`,ref:o,children:[(0,Q.jsxs)(`button`,{type:`button`,onClick:s,className:`relative flex h-11 w-11 items-center justify-center rounded-xl outline-none transition-colors hover:bg-white/70 focus-visible:ring-2 focus-visible:ring-primary-500/30 dark:hover:bg-dark-200`,"aria-label":t.username,"aria-expanded":a,title:t.username,"data-testid":`sidebar-rail-user-menu-button`,children:[(0,Q.jsx)(ci,{user:t,size:`sm`}),r>0&&(0,Q.jsx)(`span`,{"data-testid":`pending-user-notification-badge`,className:`absolute -end-0.5 -top-0.5 flex h-4 min-w-4 items-center justify-center rounded-md bg-error-500 px-1 text-[9px] font-semibold text-white shadow-sm`,"aria-label":p(`userManager.approval.notificationBadge`,{count:r,defaultValue:`{{count}} pending user approvals`}),children:r>99?`99+`:r})]}),a&&(0,Q.jsxs)(`div`,{"data-testid":`sidebar-user-menu`,className:`scroll-region absolute bottom-0 start-full z-[70] ms-3 w-64 max-h-[calc(100dvh-1rem)] overflow-y-auto rounded-xl border border-black/[0.07] bg-white/95 py-2 shadow-[0_18px_60px_rgba(15,23,42,0.16)] backdrop-blur-xl animate-scale-in scrollbar-thin dark:border-white/[0.08] dark:bg-dark-25/95`,children:[(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>{l(t.avatar||``),f()},className:`flex w-full items-center gap-2.5 border-b border-gray-100 px-3 py-2.5 text-start transition-colors hover:bg-gray-100/70 dark:border-dark-200/50 dark:hover:bg-dark-200/70`,children:[(0,Q.jsx)(ci,{user:t,size:`md`}),(0,Q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`span`,{className:`block truncate text-sm font-medium text-gray-900 dark:text-gray-100`,children:t.username}),(0,Q.jsx)(`span`,{className:`block truncate text-xs text-gray-500 dark:text-gray-400`,children:p(`user.menu.changePicture`)})]}),(0,Q.jsx)(_e,{className:`h-4 w-4 shrink-0 text-gray-400`})]}),(0,Q.jsxs)(`div`,{className:`py-1`,children:[n&&(0,Q.jsxs)(v,{to:`/users`,onClick:()=>{f(),d()},className:`flex w-full items-center gap-3 px-3 py-2.5 text-[13px] text-gray-700 transition-colors hover:bg-gray-100/70 dark:text-dark-700 dark:hover:bg-dark-200/70`,children:[(0,Q.jsx)(ge,{className:`h-4 w-4 shrink-0`}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 text-start`,children:p(`user.menu.userManagement`)}),r>0&&(0,Q.jsx)(`span`,{className:`rounded-md bg-error-500 px-1.5 py-0.5 text-[10px] font-semibold text-white`,children:r>99?`99+`:r})]}),n&&(0,Q.jsxs)(v,{to:`/system`,onClick:()=>{f(),d()},className:`flex w-full items-center gap-3 px-3 py-2.5 text-[13px] text-gray-700 transition-colors hover:bg-gray-100/70 dark:text-dark-700 dark:hover:bg-dark-200/70`,children:[(0,Q.jsx)(j,{className:`h-4 w-4 shrink-0`}),p(`user.menu.system`)]}),n&&(0,Q.jsxs)(v,{to:`/usage`,onClick:()=>{f(),d()},className:`flex w-full items-center gap-3 px-3 py-2.5 text-[13px] text-gray-700 transition-colors hover:bg-gray-100/70 dark:text-dark-700 dark:hover:bg-dark-200/70`,children:[(0,Q.jsx)(Pe,{className:`h-4 w-4 shrink-0`}),p(`user.menu.usageAnalytics`)]}),(0,Q.jsx)(`div`,{className:`my-1 border-t border-gray-100 dark:border-dark-200/50`}),(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>{c(),f()},className:`flex w-full items-center gap-3 px-3 py-2.5 text-start text-[13px] text-gray-700 transition-colors hover:bg-gray-100/70 dark:text-dark-700 dark:hover:bg-dark-200/70`,children:[(0,Q.jsx)(T,{className:`h-4 w-4 shrink-0`}),p(`user.menu.settings`)]}),(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>{u(),f()},className:`flex w-full items-center gap-3 px-3 py-2.5 text-start text-[13px] text-red-600 transition-colors hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-900/20`,children:[(0,Q.jsx)(Te,{className:`h-4 w-4 shrink-0`}),p(`user.menu.logout`)]})]})]})]}):(0,Q.jsxs)(`div`,{className:`relative`,ref:o,children:[(0,Q.jsxs)(`button`,{onClick:s,className:`relative w-full p-2.5 rounded-xl hover:bg-white/70 dark:hover:bg-dark-200 transition-colors duration-150 text-start touch-manipulation outline-none focus-visible:ring-2 focus-visible:ring-primary-500/30`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,Q.jsx)(ci,{user:t,size:`sm`}),(0,Q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-medium text-gray-900 dark:text-gray-100 truncate`,children:t.username}),(0,Q.jsxs)(`div`,{className:`flex items-center mt-0.5`,children:[t.role===`admin`&&(0,Q.jsx)(re,{size:10,className:`text-primary-500 me-1`}),(0,Q.jsx)(`span`,{className:`text-[11px] text-gray-500 dark:text-dark-500 capitalize`,children:t.role})]})]}),(0,Q.jsx)(Me,{className:R(`h-4 w-4 text-gray-400 dark:text-dark-500 transition-transform duration-150 rtl:rotate-180`,a&&`rotate-90 rtl:rotate-90`)})]}),n&&r>0&&(0,Q.jsx)(`span`,{"data-testid":`pending-user-notification-badge`,className:`absolute -end-1 -top-1 flex h-5 min-w-5 items-center justify-center rounded-full bg-error-500 px-1 text-[10px] font-semibold text-white shadow-subtle`,"aria-label":p(`userManager.approval.notificationBadge`,{count:r,defaultValue:`{{count}} pending user approvals`}),children:r>99?`99+`:r})]}),a&&(0,Q.jsxs)(`div`,{"data-testid":`sidebar-user-menu`,className:`scroll-region absolute bottom-full left-0 right-0 z-50 mb-2 max-h-[calc(100dvh-1rem)] rounded-2xl border border-black/[0.07] bg-white/95 py-2 shadow-[0_18px_60px_rgba(15,23,42,0.16)] backdrop-blur-xl animate-scale-in scrollbar-thin dark:border-white/[0.08] dark:bg-dark-25/95`,children:[(0,Q.jsx)(`div`,{className:`px-3 py-2 border-b border-gray-100 dark:border-dark-200/50`,children:(0,Q.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,Q.jsx)(ci,{user:t,size:`md`}),(0,Q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-medium text-gray-900 dark:text-gray-100 truncate`,children:t.username}),(0,Q.jsx)(`p`,{className:`text-xs text-gray-500 dark:text-gray-400 truncate`,children:t.email||p(`user.profile.noEmail`)})]})]})}),(0,Q.jsxs)(`div`,{className:`py-1`,children:[(0,Q.jsxs)(`button`,{onClick:()=>{l(t.avatar||``),f()},className:`w-full flex items-center gap-3 px-3 py-2.5 text-[13px] text-gray-700 dark:text-dark-700 hover:bg-gray-100/70 dark:hover:bg-dark-200/70 transition-colors duration-150 text-start`,children:[(0,Q.jsx)(_e,{className:`h-4 w-4 shrink-0`}),p(`user.menu.changePicture`)]}),n&&(0,Q.jsxs)(v,{to:`/users`,onClick:()=>{f(),d()},className:`w-full flex items-center gap-3 px-3 py-2.5 text-[13px] text-gray-700 dark:text-dark-700 hover:bg-gray-100/70 dark:hover:bg-dark-200/70 transition-colors duration-150`,children:[(0,Q.jsx)(ge,{className:`h-4 w-4 shrink-0`}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 text-start`,children:p(`user.menu.userManagement`)}),r>0&&(0,Q.jsx)(`span`,{className:`ms-2 rounded-full bg-error-500 px-1.5 py-0.5 text-[10px] font-semibold text-white`,children:r>99?`99+`:r})]}),n&&(0,Q.jsxs)(v,{to:`/system`,onClick:()=>{f(),d()},className:`w-full flex items-center gap-3 px-3 py-2.5 text-[13px] text-gray-700 dark:text-dark-700 hover:bg-gray-100/70 dark:hover:bg-dark-200/70 transition-colors duration-150`,children:[(0,Q.jsx)(j,{className:`h-4 w-4 shrink-0`}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 text-start`,children:p(`user.menu.system`)})]}),n&&(0,Q.jsxs)(v,{to:`/usage`,onClick:()=>{f(),d()},className:`w-full flex items-center gap-3 px-3 py-2.5 text-[13px] text-gray-700 dark:text-dark-700 hover:bg-gray-100/70 dark:hover:bg-dark-200/70 transition-colors duration-150`,children:[(0,Q.jsx)(Pe,{className:`h-4 w-4 shrink-0`}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 text-start`,children:p(`user.menu.usageAnalytics`)})]}),(0,Q.jsx)(`div`,{className:`border-t border-gray-100 dark:border-dark-200/50 my-1`}),(0,Q.jsxs)(`button`,{onClick:()=>{c(),f()},className:`w-full flex items-center gap-3 px-3 py-2.5 text-[13px] text-gray-700 dark:text-dark-700 hover:bg-gray-100/70 dark:hover:bg-dark-200/70 transition-colors duration-150 text-start`,children:[(0,Q.jsx)(T,{className:`h-4 w-4 shrink-0`}),p(`user.menu.settings`)]}),(0,Q.jsxs)(`button`,{onClick:()=>{u(),f()},className:`w-full flex items-center gap-3 px-3 py-2.5 text-[13px] text-red-600 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/20 transition-colors duration-150 text-start`,children:[(0,Q.jsx)(Te,{className:`h-4 w-4 shrink-0`}),p(`user.menu.logout`)]})]})]})]})})}var ui={idle:{labelKey:`work.statusLabels.idle`,label:`Idle`,color:`rgb(255, 255, 255)`,animated:!1},preparing:{labelKey:`work.statusLabels.thinking`,label:`Thinking`,color:`rgb(48, 121, 255)`,animated:!0},running:{labelKey:`work.statusLabels.thinking`,label:`Thinking`,color:`rgb(48, 121, 255)`,animated:!0},completed:{labelKey:`work.statusLabels.complete`,label:`Complete`,color:`rgb(76, 212, 117)`,animated:!1},needs_input:{labelKey:`work.statusLabels.needsInput`,label:`Needs input`,color:`rgb(255, 204, 0)`,animated:!1},cancelled:{labelKey:`work.statusLabels.needsInput`,label:`Needs input`,color:`rgb(255, 204, 0)`,animated:!1},failed:{labelKey:`work.statusLabels.error`,label:`Error`,color:`rgb(255, 61, 129)`,animated:!1}};function di(e){let t=e.trim().split(/\s+/u).filter(Boolean);return t.length===0?`•`:t.length===1?Array.from(t[0]).slice(0,2).join(``).toLocaleUpperCase():`${Array.from(t[0])[0]}${Array.from(t[t.length-1])[0]}`.toLocaleUpperCase()}function fi({tasks:e,currentTaskId:t,loading:n,actionLoading:r,sidebarCompact:i,onSelectTask:a,onDeleteTask:o,onExpandSidebar:s}){let{t:c,i18n:l}=x(),u=[...e].sort((e,t)=>t.updatedAt-e.updatedAt);return(0,Q.jsx)(`div`,{"data-testid":`sidebar-work-task-scroll-region`,className:`scroll-region min-h-0 flex-1 border-t border-black/[0.05] scrollbar-thin dark:border-white/[0.05]`,style:{willChange:`scroll-position`},children:(0,Q.jsxs)(`div`,{className:R(`px-3 py-3`,i&&`px-2`),children:[!i&&e.length>0&&(0,Q.jsxs)(`div`,{className:`mb-2 flex items-center justify-between px-1`,children:[(0,Q.jsx)(`h3`,{className:`text-[10px] font-semibold uppercase tracking-[0.16em] text-gray-500 dark:text-dark-500 rtl:tracking-normal`,children:c(`work.tasks.title`,{defaultValue:`Work tasks`})}),(0,Q.jsx)(`span`,{className:`text-[10px] font-medium tabular-nums text-gray-400 dark:text-dark-500`,children:e.length})]}),i?(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-1`,children:[(0,Q.jsxs)(`button`,{type:`button`,onClick:s,"data-testid":`sidebar-mobile-work-tasks`,"aria-label":`${c(`work.tasks.title`,{defaultValue:`Work tasks`})} (${e.length})`,title:c(`work.tasks.title`,{defaultValue:`Work tasks`}),className:`relative flex h-12 w-12 items-center justify-center rounded-xl text-gray-500 outline-none transition-colors hover:bg-white/70 hover:text-gray-950 focus-visible:ring-2 focus-visible:ring-primary-500/30 dark:text-dark-600 dark:hover:bg-dark-200 dark:hover:text-dark-950 md:hidden`,children:[(0,Q.jsx)(Le,{className:`h-[18px] w-[18px]`}),e.length>0&&(0,Q.jsx)(`span`,{className:`absolute -end-0.5 -top-0.5 flex h-4 min-w-4 items-center justify-center rounded-md bg-primary-500 px-1 text-[9px] font-semibold tabular-nums text-white shadow-sm`,children:e.length>99?`99+`:e.length})]}),(0,Q.jsx)(`div`,{"data-testid":`sidebar-compact-work-task-list`,className:`flex w-full flex-col items-center gap-1`,children:u.map(e=>{let n=t===e.id,r=ui[e.status],i=e.title||c(`work.tasks.untitled`,{defaultValue:`Untitled task`});return(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>a(e.id),"data-testid":`sidebar-compact-work-task`,"aria-current":n?`page`:void 0,"aria-label":i,title:i,className:R(`relative flex h-12 w-12 items-center justify-center rounded-xl outline-none transition-colors focus-visible:ring-2 focus-visible:ring-primary-500/30`,n?`bg-primary-500/10 text-primary-700 ring-1 ring-primary-500/10 dark:bg-primary-500/15 dark:text-primary-300 dark:ring-primary-400/10`:`text-gray-500 hover:bg-white/70 hover:text-gray-950 dark:text-dark-600 dark:hover:bg-dark-200 dark:hover:text-dark-950`),children:[n&&(0,Q.jsx)(`span`,{"aria-hidden":`true`,className:`absolute -start-2 h-5 w-0.5 rounded-full bg-primary-500 shadow-[0_0_12px_rgb(var(--color-primary-500)/0.55)]`}),(0,Q.jsx)(`span`,{className:`font-mono text-[11px] font-semibold tracking-[-0.03em]`,children:di(i)}),(0,Q.jsx)(`span`,{"aria-hidden":`true`,className:R(`absolute bottom-1.5 end-1.5 h-2 w-2 rounded-full border-2 border-gray-100 dark:border-dark-50`,r.animated&&`animate-pulse`,e.status===`idle`&&`ring-1 ring-black/20 dark:ring-white/20`),style:{backgroundColor:r.color}})]},e.id)})})]}):n&&e.length===0?(0,Q.jsxs)(`div`,{role:`status`,"aria-live":`polite`,className:`flex items-center justify-center py-10 text-gray-400 dark:text-dark-500`,children:[(0,Q.jsx)(Fe,{"aria-hidden":`true`,className:`h-5 w-5 animate-spin`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:c(`work.tasks.loading`,{defaultValue:`Loading Work tasks`})})]}):e.length===0?(0,Q.jsxs)(`div`,{className:R(`py-8 text-center`,i?`px-1`:`px-2`),children:[(0,Q.jsx)(`div`,{className:R(`mx-auto mb-3 flex items-center justify-center rounded-xl bg-white/70 ring-1 ring-black/[0.04] dark:bg-dark-200 dark:ring-white/[0.05]`,i?`h-8 w-8`:`h-12 w-12`),children:(0,Q.jsx)(Le,{className:R(`text-gray-400 dark:text-gray-500`,i?`h-4 w-4`:`h-5 w-5`)})}),!i&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`p`,{className:`text-sm font-medium text-gray-600 dark:text-dark-600`,children:c(`work.tasks.emptyTitle`,{defaultValue:`No Work tasks yet`})}),(0,Q.jsx)(`p`,{className:`mt-1 text-xs text-gray-400 dark:text-dark-500`,children:c(`work.tasks.empty`,{defaultValue:`Your Work tasks will appear here after you send the first message.`})})]})]}):(0,Q.jsx)(`div`,{"data-testid":`sidebar-work-task-list`,className:R(`space-y-0.5`,i&&`space-y-1`),children:e.map(e=>{let n=t===e.id,s=ui[e.status],u=c(s.labelKey,{defaultValue:s.label});return(0,Q.jsxs)(`div`,{"data-testid":`sidebar-work-task-item`,"data-task-id":e.id,className:R(`group relative transition-colors duration-150 outline-none`,i?`flex items-center justify-center rounded-xl p-1`:`rounded-xl px-3 py-2.5`,n?`bg-white ring-1 ring-black/[0.04] dark:bg-dark-200 dark:ring-white/[0.05]`:`hover:bg-white/60 dark:hover:bg-dark-200/60`),children:[(0,Q.jsxs)(`button`,{type:`button`,"aria-current":n?`page`:void 0,className:R(`w-full text-start outline-none focus-visible:ring-2 focus-visible:ring-primary-500/30`,i?`flex h-10 items-center justify-center`:`pe-8`),title:i?`${e.title} · ${e.model}`:void 0,onClick:()=>a(e.id),children:[i?(0,Q.jsxs)(`span`,{className:R(`relative flex h-9 w-9 items-center justify-center rounded-xl text-[11px] font-semibold uppercase transition-colors`,n?`bg-gray-950 text-white dark:bg-white dark:text-gray-950`:`bg-white/70 text-gray-500 ring-1 ring-black/[0.04] dark:bg-dark-200/70 dark:text-dark-600 dark:ring-white/[0.05]`),children:[e.title.trim().charAt(0)||`•`,(0,Q.jsx)(`span`,{"aria-hidden":`true`,"data-testid":`sidebar-work-task-status`,"data-status-label":u,className:R(`absolute -bottom-0.5 -end-0.5 h-2.5 w-2.5 rounded-full border-2 border-gray-100 dark:border-dark-50`,s.animated&&`animate-pulse`,e.status===`idle`&&`ring-1 ring-black/20 dark:ring-white/20`),style:{backgroundColor:s.color}})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,"data-testid":`sidebar-work-task-status`,"data-status-label":u,className:R(`h-2 w-2 shrink-0 rounded-full`,s.animated&&`animate-pulse`,e.status===`idle`&&`ring-1 ring-black/20 dark:ring-white/20`),style:{backgroundColor:s.color}}),(0,Q.jsx)(`span`,{dir:`auto`,className:`min-w-0 flex-1 truncate text-[13px] font-medium leading-tight text-gray-900 dark:text-dark-900`,children:$e(e.title||c(`work.tasks.untitled`,{defaultValue:`Untitled task`}),32)})]}),(0,Q.jsxs)(`span`,{className:`mt-1 flex items-center gap-1.5 ps-4 text-[11px] text-gray-400 dark:text-dark-500`,children:[(0,Q.jsx)(`span`,{className:`tabular-nums`,children:Qe(e.updatedAt,l.language)}),(0,Q.jsx)(`span`,{className:`text-gray-300 dark:text-dark-400`,children:`•`}),(0,Q.jsx)(`span`,{dir:`ltr`,className:`min-w-0 truncate font-medium text-gray-600 dark:text-gray-400`,title:e.model,children:e.model})]})]}),(0,Q.jsx)(`span`,{className:`sr-only`,children:c(`work.tasks.status`,{defaultValue:`Status: {{status}}`,status:u})})]}),!i&&(0,Q.jsx)(`button`,{type:`button`,"data-testid":`sidebar-work-task-delete`,disabled:r,className:R(`absolute end-2 top-1/2 -translate-y-1/2 rounded-lg p-1.5 text-gray-400 transition-[color,background-color,opacity] hover:bg-error-500/10 hover:text-error-600 focus:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-error-500/30 disabled:cursor-not-allowed disabled:opacity-40 group-focus-within:opacity-100 group-hover:opacity-100 dark:text-dark-500`,n?`opacity-100`:`opacity-0`),"aria-label":c(`work.tasks.deleteNamed`,{defaultValue:`Delete {{title}}`,title:e.title||c(`work.tasks.untitled`,{defaultValue:`Untitled task`})}),onClick:t=>{t.stopPropagation(),o(e)},children:(0,Q.jsx)(Oe,{"aria-hidden":`true`,className:`h-3.5 w-3.5`})})]},e.id)})})]})})}function pi(e){let{t}=x(),n=(0,Z.useRef)(null),r=Rr({queryKey:[`users`,`pending-approvals`],enabled:e,queryFn:async()=>{let e=await Xe.getPendingApprovals();if(!e.success||!e.data)throw Error(e.message||`Could not load pending accounts`);return e.data},refetchInterval:6e4,refetchOnWindowFocus:!0});return(0,Z.useEffect)(()=>{if(!r.data)return;let e=n.current,i=e?!!(r.data.count>e.count||r.data.latestCreatedAt&&r.data.latestCreatedAt!==e.latestCreatedAt):r.data.count>0;n.current=r.data,i&&I(t(`userManager.approval.notification`,{count:r.data.count,defaultValue:`{{count}} registration(s) are waiting for your approval.`}),{icon:`👤`})},[r.data,t]),{...r,pendingApprovalCount:r.data?.count??0}}var mi=L(`components:sidebar`),hi=Z.lazy(()=>f(()=>import(`../js/SettingsModal-DhrjNMcd.js`).then(e=>({default:e.SettingsModal})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]))),gi=({isOpen:e,onClose:t,className:n})=>{let{t:r}=x(),i=y(),a=l(),{sessions:o,deleteSession:s,updateSessionTitle:c,setSessionArchived:u,folders:d,loadFolders:f,createFolder:p,renameFolder:m,deleteFolder:h,moveSessionToFolder:g,selectedModel:_,models:v,currentSession:b,generatingTitleForSession:S,personas:C}=nt(),w=at(e=>e.tasks),T=at(e=>e.loadingTasks),ee=at(e=>e.actionLoading),E=at(e=>e.deleteTask),{user:D,isAdmin:O,systemInfo:k,setUser:te}=z(),{backgroundImage:ne,sidebarCompact:A,toggleSidebarCompact:j}=st(),re=O(),{pendingApprovalCount:ie}=pi(!!(D&&re&&k?.requiresAuth)),[ae,M]=(0,Z.useState)(null),[N,oe]=(0,Z.useState)(``),[P,F]=(0,Z.useState)(!1),[se,ce]=(0,Z.useState)(!1),[le,ue]=(0,Z.useState)(!1),[de,fe]=(0,Z.useState)(``),[pe,me]=(0,Z.useState)(!1),he=(0,Z.useRef)(null),ge=(0,Z.useRef)(null),_e=i.pathname.match(/^\/c\/([^/]+)$/)?.[1]||b?.id,ve=()=>{window.innerWidth<768&&!A&&j()},ye=()=>{lt(`selection`),j()},be=()=>{let{setCurrentSession:e}=nt.getState();ct(),e(null),sessionStorage.setItem(`forceWelcomeScreen`,`true`)};(0,Z.useEffect)(()=>{let e=e=>{he.current&&!he.current.contains(e.target)&&ce(!1)};if(se)return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[se]),(0,Z.useEffect)(()=>{let t=t=>{ge.current&&!ge.current.contains(t.target)&&window.innerWidth<768&&e&&!A&&j()};if(e&&!A&&window.innerWidth<768)return document.addEventListener(`mousedown`,t),()=>document.removeEventListener(`mousedown`,t)},[e,A,j]);let xe=async()=>{me(!0);try{let e=await Xe.updateMyAvatar(de||null);e.success&&e.data?(te(e.data),I.success(r(`user.avatar.updated`)),ue(!1)):I.error(e.message||r(`user.avatar.updateFailed`))}catch(e){mi.error(`Failed to update avatar:`,e),I.error(r(`user.avatar.updateFailed`))}finally{me(!1)}},Se=()=>{lt(`impact`),be(),a(`/chat`,{replace:!0}),ve()},Ce=()=>{lt(`impact`),at.getState().clearError(),a(`/work`),ve()},we=e=>{lt(`selection`),a(`/c/${e.id}`,{replace:!0}),ve()},Te=e=>{lt(`selection`),a(`/work/${e}`,{replace:!0}),ve()},Ee=async e=>{if(window.confirm(r(`work.tasks.deleteConfirm`,{defaultValue:`Delete “{{title}}” and its workspace permanently?`,title:e.title||r(`work.tasks.untitled`,{defaultValue:`Untitled task`})}))){lt(`warning`);try{await E(e.id),rt(e.id),Wr.getState().closeTab(`work:${e.id}`),Le===e.id&&a(`/work`,{replace:!0,state:{deletedWorkTaskId:e.id}})}catch(e){mi.error(`Failed to delete Work task:`,e),I.error(r(`work.toasts.deleteFailed`,{defaultValue:`Could not delete this Work task.`}))}}},De=async(e,t)=>{if(t.stopPropagation(),mi.debug(`Delete session clicked:`,e),window.confirm(r(`chat.session.deleteConfirm`))){lt(`warning`);try{mi.debug(`Attempting to delete session:`,e);let t=_e===e;if(await s(e),mi.debug(`Session deleted successfully`),Wr.getState().closeTab(`chat:${e}`),t){let t=o.filter(t=>t.id!==e);t.length>0?a(`/c/${t[0].id}`,{replace:!0}):a(`/`,{replace:!0})}}catch(e){mi.error(`Error deleting session:`,e)}}};(0,Z.useEffect)(()=>{f()},[f]);let Oe=async(e,t)=>{if(t.stopPropagation(),await u(e,!0),Wr.getState().closeTab(`chat:${e}`),_e===e){let t=o.filter(t=>t.id!==e&&!t.archived);t.length>0?a(`/c/${t[0].id}`,{replace:!0}):a(`/`,{replace:!0})}},ke=(e,t)=>{t.stopPropagation(),M(e.id),oe(e.title)},Ae=async e=>{N.trim()&&await c(e,N.trim()),M(null),oe(``)},je=()=>{M(null),oe(``)},Me=async()=>{try{await qe.logout();let{logout:e}=z.getState();e(),a(`/login`),I.success(r(`auth.logout.success`))}catch(e){mi.error(`Logout error:`,e);let{logout:t}=z.getState();t(),a(`/login`)}},Ne=()=>{F(!0),ve()},Pe=e=>{fe(e),ue(!0)},Fe=window.location.protocol===`file:`,Ie=i.pathname===`/work`||i.pathname.startsWith(`/work/`),Le=i.pathname.match(/^\/work\/([^/]+)$/)?.[1]||null,Re=i.pathname===`/`||i.pathname===`/chat`||i.pathname.startsWith(`/c/`),ze=k?.requiresAuth===!1||O();return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{ref:ge,"data-testid":`sidebar`,className:R(`fixed inset-y-0 start-0 z-50 border-e border-black/[0.06] dark:border-white/[0.06] transform transition-[width,transform,background-color] duration-200 ease-out shadow-[0_24px_80px_rgba(15,23,42,0.12)]`,A?`w-20`:`w-72 max-sm:w-[calc(100vw-4.5rem)] max-sm:max-w-80`,e?`translate-x-0`:`ltr:-translate-x-full rtl:translate-x-full`,`lg:shadow-none`,ne?`bg-gray-100/75 dark:bg-dark-50/75 backdrop-blur-xl`:`bg-gray-100 dark:bg-dark-50`,`overscroll-behavior-contain`,n),style:{WebkitOverflowScrolling:`touch`},children:[Fe&&(0,Q.jsx)(`div`,{className:`absolute top-0 start-16 end-0 h-8 z-[60]`,style:{WebkitAppRegion:`drag`}}),(0,Q.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,Q.jsx)(ei,{sidebarCompact:A,isElectron:Fe,showWork:ze,activeMode:Ie?`work`:Re?`chat`:null,selectedModel:_,modelCount:v.length,onToggleCompact:ye,onStartWork:Ce,onCreateSession:Se}),!A&&(0,Q.jsx)(ni,{sidebarCompact:A,activePath:i.pathname,showAgents:ze,onMobileNavigate:ve}),Ie&&ze?(0,Q.jsx)(fi,{tasks:w,currentTaskId:Le,loading:T,actionLoading:ee,sidebarCompact:A,onSelectTask:Te,onDeleteTask:e=>void Ee(e),onExpandSidebar:ye}):(0,Q.jsx)(si,{sessions:o.filter(e=>!e.archived),personas:C,currentSessionId:_e,generatingTitleForSession:S,sidebarCompact:A,editingSessionId:ae,editingTitle:N,onEditingTitleChange:oe,onSelectSession:we,onStartEditing:ke,onSaveEdit:Ae,onCancelEdit:je,onDeleteSession:De,onArchiveSession:Oe,folders:d,onCreateFolder:e=>void p(e),onRenameFolder:(e,t)=>void m(e,t),onDeleteFolder:e=>void h(e),onMoveSession:(e,t)=>void g(e,t),onExpandSidebar:ye}),(0,Q.jsx)(li,{requiresAuth:k?.requiresAuth,user:D,isAdmin:re,pendingApprovalCount:ie,sidebarCompact:A,userMenuOpen:se,userMenuRef:he,onToggleUserMenu:()=>ce(e=>!e),onOpenSettings:Ne,onOpenAvatar:Pe,onLogout:Me,onMobileNavigate:ve,onCloseUserMenu:()=>ce(!1)})]})]}),P&&(0,Q.jsx)(Z.Suspense,{fallback:null,children:(0,Q.jsx)(hi,{isOpen:P,onClose:()=>F(!1)})}),(0,Q.jsx)(Jr,{open:le,value:de,saving:pe,onChange:fe,onClose:()=>ue(!1),onSave:xe})]})},$=({children:e,requireAuth:t=!0,requireAdmin:n=!1})=>{let{isAuthenticated:r,user:i,systemInfo:a,isLoading:o}=z();return y(),o?(0,Q.jsx)(`div`,{className:`min-h-screen flex items-center justify-center bg-gray-50 dark:bg-dark-50`,children:(0,Q.jsx)(`div`,{className:`w-8 h-8 border-4 border-gray-200 dark:border-dark-300 border-t-primary-500 dark:border-t-primary-400 rounded-full animate-spin`})}):a&&!a.requiresAuth?(0,Q.jsx)(Q.Fragment,{children:e}):t&&!r?(0,Q.jsx)(s,{to:`/login`,replace:!0}):n&&(!i||i.role!==`admin`)?(0,Q.jsx)(s,{to:`/`,replace:!0}):(0,Q.jsx)(Q.Fragment,{children:e})},_i=L(`components:error-boundary`),vi=({error:e})=>{let{t}=x();return(0,Q.jsx)(`div`,{className:`min-h-screen bg-gray-50 dark:bg-dark-50 flex items-center justify-center p-4 text-gray-900 dark:text-dark-800`,children:(0,Q.jsx)(`div`,{className:`w-full max-w-md rounded-2xl border border-gray-200 dark:border-dark-300 bg-white/95 dark:bg-dark-100/95 shadow-card backdrop-blur-sm`,children:(0,Q.jsxs)(`div`,{className:`p-6 text-center`,children:[(0,Q.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-2xl bg-primary-100 text-primary-700 dark:bg-primary-900/35 dark:text-primary-300 ring-1 ring-primary-200 dark:ring-primary-800/60`,children:(0,Q.jsx)(be,{className:`h-6 w-6`})}),(0,Q.jsx)(`h1`,{className:`mb-2 text-xl font-semibold text-gray-950 dark:text-dark-950`,children:t(`errorBoundary.title`)}),(0,Q.jsx)(`p`,{className:`mb-5 text-sm leading-6 text-gray-600 dark:text-dark-600`,children:t(`errorBoundary.description`)}),(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:justify-center`,children:[(0,Q.jsxs)(`button`,{onClick:()=>window.location.reload(),className:`inline-flex items-center justify-center gap-2 rounded-xl bg-primary-600 px-4 py-2.5 text-sm font-medium text-white shadow-sm transition-all hover:bg-primary-700 hover:shadow-md focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 dark:focus:ring-offset-dark-100`,children:[(0,Q.jsx)(M,{className:`h-4 w-4`}),t(`errorBoundary.tryAgain`)]}),(0,Q.jsxs)(`button`,{onClick:()=>{window.location.assign(`/`)},className:`inline-flex items-center justify-center gap-2 rounded-xl border border-gray-200 bg-white px-4 py-2.5 text-sm font-medium text-gray-700 shadow-sm transition-all hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 dark:border-dark-300 dark:bg-dark-50 dark:text-dark-700 dark:hover:bg-dark-200 dark:focus:ring-offset-dark-100`,children:[(0,Q.jsx)(Ce,{className:`h-4 w-4`}),t(`common.home`,`Home`)]})]}),!1]})})})},yi=class extends Z.Component{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){_i.error(`ErrorBoundary caught an error:`,e,t)}render(){return this.state.hasError?this.props.fallback?this.props.fallback:(0,Q.jsx)(vi,{error:this.state.error}):this.props.children}},bi=({notes:e,onDismiss:t})=>{let{t:n}=x();return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`fixed inset-0 z-[60] bg-black/55 backdrop-blur-sm transition-opacity duration-200`,onClick:t}),(0,Q.jsx)(`div`,{className:`fixed inset-0 z-[60] flex items-center justify-center p-4`,role:`dialog`,"aria-modal":`true`,"aria-label":n(`whatsNew.title`),onMouseDown:e=>{e.target===e.currentTarget&&t()},children:(0,Q.jsxs)(`div`,{className:`flex max-h-[82vh] w-full max-w-2xl flex-col rounded-3xl border border-gray-200/80 bg-surface/95 shadow-2xl backdrop-blur-xl animate-scale-in dark:border-white/10 dark:bg-dark-25/95`,children:[(0,Q.jsxs)(`div`,{className:`flex items-start justify-between px-6 pb-3 pt-6`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h2`,{className:`text-xl font-semibold tracking-[-0.02em] text-gray-950 dark:text-dark-950`,children:n(`whatsNew.title`)}),(0,Q.jsxs)(`p`,{className:`mt-1 text-xs text-gray-500 dark:text-dark-500`,children:[n(`whatsNew.releaseNotes`),` · v`,e.version,` · `,e.date]})]}),(0,Q.jsx)(`button`,{onClick:t,className:`rounded-full p-2 text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-900 dark:text-dark-600 dark:hover:bg-white/[0.06] dark:hover:text-dark-900`,title:n(`common.close`),children:(0,Q.jsx)(ke,{className:`h-4 w-4`})})]}),(0,Q.jsx)(`div`,{className:`scroll-region min-h-0 flex-1 overflow-y-auto px-6 py-3 scrollbar-thin`,children:(0,Q.jsx)(r,{components:{h3:({children:e})=>(0,Q.jsx)(`h3`,{className:`mb-2 mt-5 text-[11px] font-semibold uppercase tracking-[0.1em] text-primary-600 first:mt-0 dark:text-primary-400`,children:e}),ul:({children:e})=>(0,Q.jsx)(`ul`,{className:`space-y-2.5`,children:e}),li:({children:e})=>(0,Q.jsxs)(`li`,{className:`flex gap-2 text-[13.5px] leading-relaxed text-gray-700 dark:text-dark-700`,children:[(0,Q.jsx)(`span`,{className:`mt-[7px] h-1 w-1 shrink-0 rounded-full bg-gray-300 dark:bg-dark-400`}),(0,Q.jsx)(`span`,{className:`min-w-0`,children:e})]}),strong:({children:e})=>(0,Q.jsx)(`strong`,{className:`font-semibold text-gray-900 dark:text-dark-900`,children:e}),a:({children:e,href:t})=>(0,Q.jsx)(`a`,{href:t,target:`_blank`,rel:`noreferrer`,className:`text-primary-600 underline decoration-primary-300 underline-offset-2 hover:text-primary-700 dark:text-primary-400`,children:e}),code:({children:e})=>(0,Q.jsx)(`code`,{className:`rounded-md border border-gray-200 bg-gray-100 px-1 py-0.5 font-mono text-[0.85em] text-gray-800 dark:border-dark-300 dark:bg-dark-200 dark:text-dark-800`,children:e}),p:({children:e})=>(0,Q.jsx)(`p`,{className:`mb-2 text-[13.5px] leading-relaxed text-gray-700 dark:text-dark-700`,children:e})},children:e.body})}),(0,Q.jsx)(`div`,{className:`flex justify-end border-t border-gray-200/70 px-6 py-4 dark:border-white/[0.08]`,children:(0,Q.jsx)(B,{onClick:t,size:`sm`,children:n(`whatsNew.cta`)})})]})})]})},xi=`libre-webui:whats-new-seen`;function Si(){let e={version:`0.19.4`,date:`2026-08-07`,body:`Models now run the way they ask to be run. Ollama models are started with the
3
+ parameters their modelfile recommends and the context they were trained for,
4
+ instead of one fixed profile applied to everything, and any value you change is
5
+ remembered for that model alone. The chat controls also open before a chat
6
+ exists, so a conversation can start the way you want it.
7
+
8
+ ### ✨ New Features
9
+
10
+ - Ollama models run with the settings they recommend for themselves. The
11
+ modelfile's parameters and the context length the model was trained for are
12
+ read from the model and applied, instead of one fixed set of options used for
13
+ every model.
14
+ - Generation settings are stored per model. Changing a value pins it for that
15
+ model alone, and resetting returns it to what the model recommends.
16
+ - Chat controls can be opened before a chat exists. The system prompt and
17
+ sampling chosen on the welcome screen are carried onto the session the first
18
+ message creates.
19
+ - Keyboard shortcuts have their own tab in Settings, which \`?\` opens directly.
20
+ The floating button and its dialog are gone, and the list now covers the
21
+ command palette, new chats and Work sessions, message editing and the Work
22
+ code editor — none of which the old dialog mentioned.
23
+
24
+ ### 🔧 Improvements
25
+
26
+ - Chat controls show the value a message will actually run with, mark the ones
27
+ that came from the model, and say so when a context window was capped to keep
28
+ the model loadable.
29
+ - The Work landing screen sits in the same ambient glow as the chat welcome
30
+ screen, so the two read as one surface.
31
+
32
+ ### 🐛 Bug Fixes
33
+
34
+ - A value pinned for one model is no longer overridden on every request. Each
35
+ message carried the application-wide generation options with it, and options
36
+ sent with a request are the server's final word, so a model pinned to a longer
37
+ output still stopped at the global limit. A message now carries only that
38
+ chat's own overrides; the server applies the global settings, then what the
39
+ model recommends, then what was pinned for it.
40
+ - A model no longer runs with a 2048-token context regardless of what it
41
+ supports. The application sent that value explicitly, which overrode the
42
+ model's own window and silently truncated anything longer — a model trained
43
+ for 8k or 128k was capped at 2048. Adopted context is limited to 32768 by
44
+ default so a very large window cannot stop the model loading; raise it with
45
+ \`OLLAMA_MAX_CONTEXT\`.
46
+ - Stop sequences declared by a model are now sent with the request. Without
47
+ them a model can carry on past the end of its turn.
48
+ - A model pulled from Ollama or HuggingFace can be selected straight away.
49
+ Installing a model refreshed only the manager's own list, so the chat model
50
+ picker kept showing the old one until the whole application was reloaded.
51
+ - Everything on the message bar sits on one centre line. The buttons, the model
52
+ selector and the text row were three different heights, and an inline text
53
+ area left a phantom line box under it, so the controls sat low against the
54
+ text. On narrow screens the bar also grew before anything had been typed,
55
+ because a wrapped placeholder counted towards the text area's height.
56
+
57
+ ### 🔒 Security
58
+
59
+ - The js-yaml advisory (CVE-2026-59870) is remediated with a 4.3.1 override.
60
+
61
+ ### 📚 Documentation
62
+
63
+ - The README screenshot is the current release, taken from the desktop
64
+ application.`},[t,n]=(0,Z.useState)(()=>{if(!e||typeof window>`u`)return!1;try{return window.localStorage.getItem(xi)!==e.version}catch{return!1}});return{open:t,dismiss:()=>{if(n(!1),e)try{window.localStorage.setItem(xi,e.version)}catch{}},notes:e}}var Ci=({message:e=`This is a demo version for presentation purposes only. The Ollama backend is not connected.`,onDismiss:t,className:n})=>{let[r,i]=(0,Z.useState)(!1),{t:a}=x();return r?null:(0,Q.jsx)(`div`,{className:R(`bg-gray-950 text-white dark:bg-white dark:text-gray-950`,`border-b border-black/10 dark:border-white/10`,`px-4 py-2`,n),children:(0,Q.jsxs)(`div`,{className:`flex items-center justify-between max-w-6xl mx-auto gap-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2.5 min-w-0`,children:[(0,Q.jsx)(`div`,{className:`flex-shrink-0`,children:(0,Q.jsx)(xe,{className:`h-4 w-4 text-white/65 dark:text-gray-950/60`})}),(0,Q.jsxs)(`div`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,Q.jsx)(`p`,{className:`shrink-0 text-xs font-semibold tracking-wide`,children:a(`demoMode.title`)}),(0,Q.jsx)(`p`,{className:`hidden truncate text-xs text-white/60 dark:text-gray-950/60 sm:block`,children:e})]})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 ml-4`,children:[(0,Q.jsxs)(B,{variant:`ghost`,size:`sm`,className:`h-8 px-2 text-white/70 hover:bg-white/10 hover:text-white dark:text-gray-950/70 dark:hover:bg-black/[0.06] dark:hover:text-gray-950`,onClick:()=>window.open(`https://github.com/libre-webui/libre-webui`,`_blank`),title:`View on GitHub`,children:[(0,Q.jsx)(D,{className:`h-4 w-4`}),(0,Q.jsx)(`span`,{className:`ml-1 hidden sm:inline`,children:a(`demoMode.github`)})]}),(0,Q.jsx)(B,{variant:`ghost`,size:`sm`,onClick:()=>{i(!0),t?.()},className:`h-8 w-8 p-0 text-white/70 hover:bg-white/10 hover:text-white dark:text-gray-950/70 dark:hover:bg-black/[0.06] dark:hover:text-gray-950`,title:`Dismiss`,children:(0,Q.jsx)(ke,{className:`h-4 w-4`})})]})]})})},wi=()=>{let{preferences:e,backgroundImage:t}=st(),n=e.backgroundSettings||{enabled:!1,imageUrl:``,blurAmount:10,opacity:.6},r=t||n.imageUrl;return!n.enabled||!r?null:(0,Q.jsx)(`div`,{"data-testid":`app-background`,className:`fixed inset-0 pointer-events-none z-0`,style:{backgroundImage:`url(${r})`,backgroundSize:`cover`,backgroundPosition:`center`,backgroundRepeat:`no-repeat`,filter:`blur(${n.blurAmount}px)`,opacity:n.opacity,transform:`scale(1.1)`}})},Ti=e=>{ct(),nt.getState().setCurrentSession(null),sessionStorage.setItem(`forceWelcomeScreen`,`true`),e(`/chat`)},Ei=e=>{ct(),nt.getState().setCurrentSession(null),sessionStorage.removeItem(`pendingMessage`),sessionStorage.setItem(`forceWelcomeScreen`,`true`),e(`/chat?incognito=1`)},Di=e=>{at.getState().clearError(),e(`/work`)},Oi={"/notes":{icon:ue,labelKey:`sidebar.navigation.notes`},"/models":{icon:ce,labelKey:`sidebar.navigation.models`},"/personas":{icon:ge,labelKey:`sidebar.navigation.personas`},"/gallery":{icon:P,labelKey:`sidebar.navigation.imagine`},"/agents":{icon:Se,labelKey:`sidebar.navigation.agents`},"/users":{icon:Ne,labelKey:`sidebar.navigation.userManagement`},"/usage":{icon:Pe,labelKey:`usageAnalytics.title`},"/system":{icon:j,labelKey:`systemPage.title`},"/artifacts":{icon:ne,labelKey:`tabs.artifacts`}},ki=e=>e.kind===`home`?Ce:e.kind===`chat`?Ie:e.kind===`work`?Le:Oi[e.path]?.icon??ne,Ai=()=>Ze()?`⌘`:`Ctrl`,ji=new Set([`/agents`,`/users`,`/usage`,`/system`]),Mi=e=>e.kind===`work`||ji.has(e.path),Ni=()=>{let{t:e}=x(),t=y(),n=l(),r=Wr(e=>e.tabs),i=Wr(e=>e.activeTabId),a=Wr(e=>e.syncWithPath),o=Wr(e=>e.closeTab),s=Wr(e=>e.closeTabs),c=nt(e=>e.sessions),u=nt(e=>e.currentSession),d=at(e=>e.tasks),{systemInfo:f,isAdmin:p}=z(),[m,h]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(null),[v,b]=(0,Z.useState)(null),S=(0,Z.useRef)(null),C=(0,Z.useRef)(null),w=(0,Z.useRef)(null),T=(0,Z.useRef)(null),ee=p(),D=f?.requiresAuth===!1||ee,O=D,k=D?r:r.filter(e=>!Mi(e));(0,Z.useEffect)(()=>{a(t.pathname)},[t.pathname,a]),(0,Z.useEffect)(()=>{(T.current?.querySelector(`[data-active="true"]`))?.scrollIntoView({block:`nearest`,inline:`nearest`})},[k.length,i]),(0,Z.useEffect)(()=>{if(!f||D)return;let e=r.filter(Mi).map(e=>e.id);if(e.length===0)return;let t=s(e,`home`);t&&n(t.path,{replace:!0})},[s,n,D,f,r]),(0,Z.useEffect)(()=>{if(!m&&!v)return;let e=e=>{let t=e.target;!S.current?.contains(t)&&!w.current?.contains(t)&&(h(!1),b(null))},t=e=>{e.key===`Escape`&&(h(!1),b(null))};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[v,m]),(0,Z.useEffect)(()=>{if(!m)return;let e=()=>{let e=C.current;if(!e)return;let t=e.getBoundingClientRect(),n=e.closest(`[data-testid="app-shell-content"]`)?.getBoundingClientRect(),r=n?.left??0,i=n?.right??window.innerWidth,a=r+8,o=i-8,s=Math.max(0,Math.min(224,o-a)),c=o-t.left>=s?t.left:t.right-s,l=Math.max(a,Math.min(c,o-s));_({left:l,top:t.bottom+4,width:s})};return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[m]),(0,Z.useEffect)(()=>{v&&w.current?.querySelector(`[role="menuitem"]:not(:disabled)`)?.focus()},[v]);let te=t=>{if(t.kind===`home`)return e(`tabs.home`,`Home`);if(t.kind===`chat`){if(t.id===`chat:new`)return u?.isPrivate?e(`chat.session.incognito`,`Incognito Chat`):e(`tabs.newChat`,`New Chat`);let n=t.id.slice(5);return c.find(e=>e.id===n)?.title||e(`tabs.chat`,`Chat`)}if(t.kind===`work`){if(t.id===`work:new`)return e(`tabs.work`,`Work`);let n=t.id.slice(5);return d.find(e=>e.id===n)?.title||e(`tabs.work`,`Work`)}let n=Oi[t.path];return n?e(n.labelKey,t.path.slice(1)):t.path.slice(1)},ne=(e,t)=>{e.stopPropagation(),e.preventDefault();let r=o(t.id);r&&n(r.path)},j=(e,t,n)=>{h(!1),b({tabId:e.id,x:Math.max(8,Math.min(t,window.innerWidth-224-8)),y:Math.max(8,Math.min(n,window.innerHeight-176-8))})},re=(e,t)=>{e.preventDefault(),e.stopPropagation(),j(t,e.clientX,e.clientY)},ie=(e,t)=>{if(e.key!==`ContextMenu`&&!(e.shiftKey&&e.key===`F10`))return;e.preventDefault();let n=e.currentTarget.getBoundingClientRect();j(t,n.left+12,n.bottom+4)},ae=e=>{let t=Array.from(w.current?.querySelectorAll(`[role="menuitem"]:not(:disabled)`)??[]);if(t.length===0)return;let n=t.indexOf(document.activeElement),r=n;if(e.key===`ArrowDown`)r=(n+1+t.length)%t.length;else if(e.key===`ArrowUp`)r=(n-1+t.length)%t.length;else if(e.key===`Home`)r=0;else if(e.key===`End`)r=t.length-1;else return;e.preventDefault(),t[r]?.focus()},M=(e,t)=>{let r=s(e,t);b(null),r&&n(r.path)},N=[{key:`chat`,label:e(`tabs.newChat`,`New Chat`),icon:Ie,shortcut:`${Ai()}⇧O`,action:()=>Ti(n)},{key:`incognito-chat`,label:e(`chat.session.incognito`,`Incognito Chat`),icon:ze,action:()=>Ei(n)},...O?[{key:`work`,label:e(`tabs.newWork`,`New Work`),icon:Le,shortcut:`${Ai()}⇧U`,action:()=>Di(n)}]:[],...[`/notes`,`/models`,`/personas`,`/gallery`].map(t=>({key:t,label:e(Oi[t].labelKey,t.slice(1)),icon:Oi[t].icon,action:()=>n(t)})),...D?[{key:`/agents`,label:e(Oi[`/agents`].labelKey,`Agents`),icon:Oi[`/agents`].icon,separatorBefore:!0,action:()=>n(`/agents`)}]:[],...ee?[`/users`,`/system`,`/usage`].map(t=>({key:t,label:e(Oi[t].labelKey,t.slice(1)),icon:Oi[t].icon,action:()=>n(t)})):[]],P=v?k.find(e=>e.id===v.tabId):void 0,F=P?k.findIndex(e=>e.id===P.id):-1,se=P?k.filter(e=>e.id!==`home`&&e.id!==P.id).map(e=>e.id):[],ce=F>=0?k.slice(F+1).filter(e=>e.id!==`home`).map(e=>e.id):[],le=k.filter(e=>e.id!==`home`).map(e=>e.id);return(0,Q.jsxs)(`div`,{"data-testid":`app-tab-bar`,className:`relative z-20 flex h-9 flex-none items-center gap-1 px-1 pb-1 lg:px-0`,children:[(0,Q.jsx)(`div`,{ref:T,role:`tablist`,"aria-label":e(`tabs.label`,`Open tabs`),className:`flex min-w-0 items-center gap-1 overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden`,children:k.map(t=>{let r=t.id===`chat:new`&&u?.isPrivate?ze:ki(t),a=t.id===i;return(0,Q.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":a,"data-active":a||void 0,"data-tab-id":t.id,"data-testid":`app-tab`,title:te(t),onClick:()=>n(t.path),onContextMenu:e=>re(e,t),onKeyDown:e=>ie(e,t),onAuxClick:e=>{e.button===1&&t.id!==`home`&&ne(e,t)},className:R(`group flex h-7 min-w-0 flex-none items-center gap-1.5 rounded-lg border text-[13px] transition-colors duration-150 outline-none focus-visible:ring-2 focus-visible:ring-primary-500/40`,t.id===`home`?`px-2.5`:`ps-2.5 pe-1`,a?`border-black/[0.06] bg-gray-50 text-gray-950 shadow-subtle dark:border-white/[0.07] dark:bg-dark-100 dark:text-dark-950`:`border-transparent text-gray-500 hover:bg-white/60 hover:text-gray-900 dark:text-dark-600 dark:hover:bg-dark-200/60 dark:hover:text-dark-900`),children:[(0,Q.jsx)(r,{className:`h-3.5 w-3.5 shrink-0`}),(0,Q.jsx)(`span`,{className:`max-w-[9rem] truncate`,children:te(t)}),t.id!==`home`&&(0,Q.jsx)(`span`,{role:`button`,tabIndex:-1,"aria-label":e(`tabs.close`,`Close tab`),"data-testid":`app-tab-close`,onClick:e=>ne(e,t),className:R(`flex h-5 w-5 shrink-0 items-center justify-center rounded-md text-gray-400 transition-opacity hover:bg-black/[0.06] hover:text-gray-700 dark:text-dark-500 dark:hover:bg-white/[0.08] dark:hover:text-dark-800`,a?`opacity-100`:`sm:opacity-0 sm:group-hover:opacity-100 sm:group-focus-visible:opacity-100`),children:(0,Q.jsx)(ke,{className:`h-3 w-3`})})]},t.id)})}),v&&P&&(0,Q.jsxs)(`div`,{ref:w,role:`menu`,"aria-label":e(`tabs.actions`,`Tab actions`),"data-testid":`app-tab-context-menu`,onContextMenu:e=>e.preventDefault(),onKeyDown:ae,className:`fixed z-[100] w-56 rounded-xl border border-line bg-surface-overlay/95 p-1 shadow-overlay backdrop-blur-xl animate-fade-in motion-reduce:animate-none`,style:{left:v.x,top:v.y},children:[(0,Q.jsxs)(`button`,{type:`button`,role:`menuitem`,"data-testid":`app-tab-context-close`,disabled:P.id===`home`,onClick:()=>{let e=o(P.id);b(null),e&&n(e.path)},className:`flex w-full items-center gap-2.5 rounded-lg px-2.5 py-1.5 text-[13px] text-ink-muted transition-colors hover:bg-black/[0.05] hover:text-ink disabled:cursor-not-allowed disabled:opacity-40 dark:hover:bg-white/[0.06]`,children:[(0,Q.jsx)(ke,{className:`h-4 w-4 shrink-0`}),(0,Q.jsx)(`span`,{children:e(`tabs.close`,`Close tab`)})]}),(0,Q.jsxs)(`button`,{type:`button`,role:`menuitem`,"data-testid":`app-tab-context-close-others`,disabled:se.length===0,onClick:()=>M(se,P.id),className:`flex w-full items-center gap-2.5 rounded-lg px-2.5 py-1.5 text-[13px] text-ink-muted transition-colors hover:bg-black/[0.05] hover:text-ink disabled:cursor-not-allowed disabled:opacity-40 dark:hover:bg-white/[0.06]`,children:[(0,Q.jsx)(oe,{className:`h-4 w-4 shrink-0`}),(0,Q.jsx)(`span`,{children:e(`tabs.closeOthers`,`Close other tabs`)})]}),(0,Q.jsxs)(`button`,{type:`button`,role:`menuitem`,"data-testid":`app-tab-context-close-right`,disabled:ce.length===0,onClick:()=>M(ce,P.id),className:`flex w-full items-center gap-2.5 rounded-lg px-2.5 py-1.5 text-[13px] text-ink-muted transition-colors hover:bg-black/[0.05] hover:text-ink disabled:cursor-not-allowed disabled:opacity-40 dark:hover:bg-white/[0.06]`,children:[(0,Q.jsx)(A,{className:`h-4 w-4 shrink-0`}),(0,Q.jsx)(`span`,{children:e(`tabs.closeRight`,`Close tabs to the right`)})]}),(0,Q.jsx)(`div`,{className:`mx-2 my-1 h-px bg-line`,role:`separator`}),(0,Q.jsxs)(`button`,{type:`button`,role:`menuitem`,"data-testid":`app-tab-context-close-all`,disabled:le.length===0,onClick:()=>M(le,`home`),className:`flex w-full items-center gap-2.5 rounded-lg px-2.5 py-1.5 text-[13px] text-ink-muted transition-colors hover:bg-black/[0.05] hover:text-ink disabled:cursor-not-allowed disabled:opacity-40 dark:hover:bg-white/[0.06]`,children:[(0,Q.jsx)(ve,{className:`h-4 w-4 shrink-0`}),(0,Q.jsx)(`span`,{children:e(`tabs.closeAll`,`Close all tabs`)})]})]}),(0,Q.jsxs)(`div`,{className:`relative flex-none`,ref:S,children:[(0,Q.jsx)(`button`,{ref:C,type:`button`,"aria-label":e(`tabs.new`,`New tab`),"aria-expanded":m,"data-testid":`app-tab-new`,onClick:()=>h(e=>!e),className:`flex h-7 w-7 items-center justify-center rounded-lg text-gray-500 transition-colors hover:bg-white/60 hover:text-gray-900 dark:text-dark-600 dark:hover:bg-dark-200/60 dark:hover:text-dark-900 outline-none focus-visible:ring-2 focus-visible:ring-primary-500/40`,children:(0,Q.jsx)(E,{className:`h-4 w-4`})}),m&&g&&(0,Q.jsx)(`div`,{role:`menu`,"data-testid":`app-tab-new-menu`,className:`fixed z-50 max-h-[calc(100dvh-4rem)] overflow-y-auto rounded-xl border border-line bg-surface-overlay/95 p-1 shadow-overlay backdrop-blur-xl animate-fade-in motion-reduce:animate-none`,style:g,children:N.map(e=>(0,Q.jsxs)(Z.Fragment,{children:[e.separatorBefore&&(0,Q.jsx)(`div`,{className:`mx-2 my-1 h-px bg-line`,role:`separator`}),(0,Q.jsxs)(`button`,{type:`button`,role:`menuitem`,onClick:()=>{h(!1),e.action()},className:`flex w-full items-center gap-2.5 rounded-lg px-2.5 py-1.5 text-[13px] text-ink-muted transition-colors hover:bg-black/[0.05] hover:text-ink dark:hover:bg-white/[0.06]`,children:[(0,Q.jsx)(e.icon,{className:`h-4 w-4 shrink-0`}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-start`,children:e.label}),e.shortcut&&(0,Q.jsx)(`span`,{className:`font-mono text-[10px] tracking-wide text-ink-subtle`,children:e.shortcut})]})]},e.key))})]})]})},Pi=({onOpenSettings:e})=>{let{t,i18n:n}=x(),r=l(),[i,a]=(0,Z.useState)(!1),[o,s]=(0,Z.useState)(``),[c,u]=(0,Z.useState)(0),d=(0,Z.useRef)(null),f=(0,Z.useRef)(null),p=nt(e=>e.sessions),m=at(e=>e.tasks),h=st(e=>e.toggleTheme),{systemInfo:g,isAdmin:_}=z(),v=g?.requiresAuth===!1||_(),y=v,b=Ze()?`⌘`:`Ctrl`;(0,Z.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`k`&&(e.preventDefault(),s(``),u(0),a(e=>!e))},t=()=>{s(``),u(0),a(!0)};return document.addEventListener(`keydown`,e,!0),window.addEventListener(`libre:open-palette`,t),()=>{document.removeEventListener(`keydown`,e,!0),window.removeEventListener(`libre:open-palette`,t)}},[]),(0,Z.useEffect)(()=>{if(!i)return;let e=window.requestAnimationFrame(()=>d.current?.focus());return()=>window.cancelAnimationFrame(e)},[i]);let S=(0,Z.useCallback)(()=>a(!1),[]),C=(0,Z.useMemo)(()=>{let i=t(`palette.actions`,`Actions`),a=[{id:`action:new-chat`,section:i,label:t(`tabs.newChat`,`New Chat`),icon:Ie,hint:`${b}⇧O`,run:()=>Ti(r)},{id:`action:incognito-chat`,section:i,label:t(`chat.session.incognito`,`Incognito Chat`),icon:ze,run:()=>Ei(r)},...v?[{id:`action:new-work`,section:i,label:t(`tabs.newWork`,`New Work`),icon:Le,hint:`${b}⇧U`,run:()=>Di(r)}]:[],{id:`action:home`,section:i,label:t(`tabs.home`,`Home`),icon:Ce,run:()=>r(`/`)},{id:`action:models`,section:i,label:t(`sidebar.navigation.models`,`Models`),icon:ce,run:()=>r(`/models`)},{id:`action:personas`,section:i,label:t(`sidebar.navigation.personas`,`Personas`),icon:ge,run:()=>r(`/personas`)},{id:`action:gallery`,section:i,label:t(`sidebar.navigation.imagine`,`Imagine`),icon:P,run:()=>r(`/gallery`)},...y?[{id:`action:agents`,section:i,label:t(`sidebar.navigation.agents`,`Agents`),icon:Se,run:()=>r(`/agents`)}]:[],{id:`action:settings`,section:i,label:t(`palette.settings`,`Settings`),icon:T,hint:`${b},`,run:e},{id:`action:theme`,section:i,label:t(`palette.toggleTheme`,`Toggle theme`),icon:de,hint:`${b}D`,run:h}],o=[...p].sort((e,t)=>t.updatedAt-e.updatedAt).map(e=>({id:`session:${e.id}`,section:t(`palette.chats`,`Chats`),label:e.title||t(`tabs.chat`,`Chat`),icon:Ie,hint:Qe(e.updatedAt,n.language),keywords:e.model,run:()=>r(`/c/${e.id}`)})),s=v?[...m].sort((e,t)=>new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime()).map(e=>({id:`work:${e.id}`,section:t(`palette.work`,`Work`),label:e.title||t(`work.tasks.untitled`,`Untitled task`),icon:Le,hint:e.status,run:()=>r(`/work/${e.id}`)})):[];return[...a,...o,...s]},[t,b,r,e,h,p,m,v,y,n.language]),w=(0,Z.useMemo)(()=>{let e=o.trim().toLowerCase();if(!e){let e=C.filter(e=>e.id.startsWith(`action:`)),t=C.filter(e=>e.id.startsWith(`session:`)).slice(0,4),n=C.filter(e=>e.id.startsWith(`work:`)).slice(0,3);return[...e,...t,...n]}return C.filter(t=>`${t.label} ${t.keywords??``}`.toLowerCase().includes(e)).slice(0,20)},[C,o]);(0,Z.useEffect)(()=>{(f.current?.querySelector(`[data-selected="true"]`))?.scrollIntoView({block:`nearest`})},[c,w.length]);let ee=e=>{e&&(S(),e.run())};if(!i)return null;let E=``;return(0,Gr.createPortal)((0,Q.jsx)(`div`,{"data-testid":`command-palette`,className:`fixed inset-0 z-[120] flex items-start justify-center bg-black/25 px-4 pt-[14vh] backdrop-blur-[2px] dark:bg-black/45`,onMouseDown:e=>{e.target===e.currentTarget&&S()},children:(0,Q.jsxs)(`div`,{className:`w-full max-w-lg overflow-hidden rounded-2xl border border-line bg-surface-overlay/95 shadow-overlay backdrop-blur-xl animate-scale-in motion-reduce:animate-none`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2.5 border-b border-line px-3.5`,children:[(0,Q.jsx)(ae,{className:`h-4 w-4 shrink-0 text-ink-subtle`}),(0,Q.jsx)(`input`,{ref:d,"data-testid":`command-palette-input`,value:o,onChange:e=>{s(e.target.value),u(0)},onKeyDown:e=>{e.key===`Escape`?(e.preventDefault(),S()):e.key===`ArrowDown`?(e.preventDefault(),u(e=>Math.min(w.length-1,e+1))):e.key===`ArrowUp`?(e.preventDefault(),u(e=>Math.max(0,e-1))):e.key===`Enter`&&(e.preventDefault(),ee(w[c]))},placeholder:t(`palette.placeholder`,`Search chats, Work, actions…`),className:`h-11 w-full bg-transparent text-sm text-ink outline-none placeholder:text-ink-subtle`}),(0,Q.jsx)(`kbd`,{className:`shrink-0 rounded-md border border-line px-1.5 py-0.5 font-mono text-[10px] text-ink-subtle`,children:`esc`})]}),(0,Q.jsxs)(`div`,{ref:f,className:`max-h-[19rem] overflow-y-auto p-1.5 scrollbar-thin`,children:[w.length===0&&(0,Q.jsx)(`p`,{className:`px-3 py-6 text-center text-sm text-ink-subtle`,children:t(`palette.empty`,`No matches.`)}),w.map((e,t)=>{let n=e.section!==E;return E=e.section,(0,Q.jsxs)(Z.Fragment,{children:[n&&(0,Q.jsx)(`p`,{className:`px-2.5 pb-1 pt-2 text-[10px] font-medium uppercase tracking-[0.08em] text-ink-subtle first:pt-1`,children:e.section}),(0,Q.jsxs)(`button`,{type:`button`,"data-selected":t===c||void 0,onMouseEnter:()=>u(t),onClick:()=>ee(e),className:R(`flex w-full items-center gap-2.5 rounded-lg px-2.5 py-1.5 text-start text-sm transition-colors`,t===c?`bg-black/[0.05] text-ink dark:bg-white/[0.07]`:`text-ink-muted`),children:[(0,Q.jsx)(e.icon,{className:`h-4 w-4 shrink-0 text-ink-subtle`}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.label}),e.hint&&(0,Q.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] text-ink-subtle`,children:e.hint})]})]},e.id)})]})]})}),document.body)},Fi=L(`user-service`),Ii=class{static async initializeAuth(){let{setLoading:e,setSystemInfo:t,login:n}=z.getState();try{e(!0),Fi.debug(`Starting auth initialization...`),Fi.debug(`Fetching system info...`);let r=await qe.getSystemInfo();Fi.debug(`System info response:`,r),r.success&&r.data?(Fi.debug(`Setting system info:`,r.data),t(r.data)):Fi.error(`System info response failed:`,r);let i=localStorage.getItem(`auth-token`);if(i)try{let e=(await f(async()=>{let{default:e}=await import(`../js/utils-vendor-1zob7nK9.js`).then(e=>e.i);return{default:e}},__vite__mapDeps([10,1,2]))).default,t=e.defaults.headers.common;e.defaults.headers.common.Authorization=`Bearer ${i}`;let r=await qe.verifyToken();if(r.success&&r.data){let e=z.getState().systemInfo;e&&n(r.data,i,e)}e.defaults.headers.common=t}catch(e){Fi.error(`Token verification failed:`,e),localStorage.removeItem(`auth-token`)}}catch(e){Fi.error(`Auth initialization error:`,e)}finally{e(!1)}}};He.interceptors.request.use(e=>{let t=localStorage.getItem(`auth-token`);return t&&(e.headers.Authorization=`Bearer ${t}`),e},e=>Promise.reject(e)),He.interceptors.response.use(e=>e,e=>{if(e.response?.status===401){localStorage.removeItem(`auth-token`);let{logout:e}=z.getState();e();let t=window.location.protocol===`file:`;window.location.href=t?`#/login`:`/login`}return Promise.reject(e)});var Li=L(`initialize`),Ri=()=>{let e=(0,Z.useRef)(!1),t=(0,Z.useRef)(!1),{loadSessions:n,loadModels:r,loadPreferences:i,setSelectedModel:a,models:o}=nt(),{loadPreferences:s}=st(),{loadPlugins:c,plugins:l}=it();(0,Z.useEffect)(()=>{e.current||t.current||(async()=>{t.current=!0;try{Li.debug(`Initializing Libre WebUI...`),await Ii.initializeAuth();let t=z.getState();if(t.requiresAuth()&&!t.isAuthenticated){Li.debug(`Authentication required; deferring protected app initialization`),e.current=!0;return}try{!(await Je.checkHealth()).success&&!Ge()&&F.error(`Ollama service is not available. Plugin models may still be used.`)}catch(e){Li.warn(`Ollama health check failed; continuing provider initialization:`,e),Ge()||F.error(`Ollama service is not available. Plugin models may still be used.`)}await Promise.all([s(),i()]),await Promise.all([r(),n(),c()]),e.current=!0,Li.debug(`Libre WebUI initialized successfully`)}catch(t){Ge()?(await Promise.all([s(),i()]),await Promise.all([r(),n(),c()]),e.current=!0):(Li.error(`Failed to initialize app:`,t),F.error(`Failed to connect to the backend service`))}finally{t.current=!1}})()},[s,i,r,n,c]),(0,Z.useEffect)(()=>{if(o.length>0){let e=o.filter(e=>!e.name.includes(`embed`))[0]||o[0],{selectedModel:t,selectedProviderType:n,selectedProviderId:r}=nt.getState();if(t){if(!tt(o,{model:t,providerType:n,providerId:r})&&n!==`ollama`&&n!==`plugin`){let t=et(e);Li.debug(`Legacy selected model not available, falling back to:`,t.model),a(t.model,t.providerType,t.providerId)}}else{let t=et(e);Li.debug(`No model selected, using first available:`,t.model),a(t.model,t.providerType,t.providerId)}}},[o,a]),(0,Z.useEffect)(()=>{e.current&&(Li.debug(`Plugin availability changed, reloading models...`),r())},[l,r]),(0,Z.useEffect)(()=>{let e=()=>{Li.debug(`Installed models changed, reloading models...`),r()};return window.addEventListener(Ye,e),()=>window.removeEventListener(Ye,e)},[r])},zi=(e,t=!0)=>{let n=(0,Z.useCallback)(n=>{if(!t)return;let r=n.target;if(r.tagName===`INPUT`||r.tagName===`TEXTAREA`||r.contentEditable===`true`||r.isContentEditable)return;if(n.key===`?`||n.key===`/`&&n.shiftKey){let t=e.find(e=>e.key===`?`||e.key===`h`);if(t){n.preventDefault(),n.stopPropagation(),t.action();return}}let i=e.find(e=>{let t=e.key.toLowerCase()===n.key.toLowerCase(),r=!!e.metaKey,i=n.metaKey||n.ctrlKey,a=!r||i,o=!e.ctrlKey||n.ctrlKey,s=!!e.shiftKey===n.shiftKey,c=!!e.altKey===n.altKey;return t&&a&&o&&s&&c});i&&(n.preventDefault(),n.stopPropagation(),i.action())},[e,t]);(0,Z.useEffect)(()=>{if(t)return document.addEventListener(`keydown`,n),()=>{document.removeEventListener(`keydown`,n)}},[n,t])},Bi=L(`components:git-hub-auth-button`),Vi=()=>{let{t:e}=x(),[t,n]=(0,Z.useState)(!1),[r,i]=(0,Z.useState)(!1);return(0,Z.useEffect)(()=>{(async()=>{try{let e=await fetch(`${Ke}/auth/oauth/github/status`,{method:`GET`,credentials:`include`});if(e.ok){let t=await e.json();i(t.configured||!1),Bi.debug(`GitHub OAuth configured:`,t.configured)}else Bi.debug(`GitHub OAuth status check failed`),i(!1)}catch(e){Bi.debug(`GitHub OAuth not configured:`,e),i(!1)}})()},[]),r?(0,Q.jsx)(`button`,{type:`button`,onClick:()=>{if(!r||t)return;n(!0);let e=`${Ke}/auth/oauth/github`;window.location.href=e},disabled:t,className:`flex h-11 w-full items-center justify-center rounded-xl border border-line bg-surface-raised px-4 text-sm font-medium text-ink shadow-subtle transition-colors hover:border-line-strong hover:bg-surface-subtle focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 focus-visible:ring-offset-canvas disabled:cursor-not-allowed disabled:opacity-40 motion-reduce:transition-none`,children:t?(0,Q.jsxs)(`div`,{className:`flex items-center`,children:[(0,Q.jsx)(Fe,{size:16,className:`me-2 animate-spin`}),e(`auth.oauth.connectingTo`,{provider:e(`auth.oauth.github`)})]}):(0,Q.jsxs)(`div`,{className:`flex items-center`,children:[(0,Q.jsx)(k,{size:16,className:`me-2`}),e(`auth.oauth.continueWith`,{provider:e(`auth.oauth.github`)})]})}):null},Hi=L(`components:hugging-face-auth-button`),Ui=()=>{let{t:e}=x(),[t,n]=(0,Z.useState)(!1),[r,i]=(0,Z.useState)(!1);return(0,Z.useEffect)(()=>{(async()=>{try{let e=await fetch(`${Ke}/auth/oauth/huggingface/status`,{method:`GET`,credentials:`include`});if(e.ok){let t=await e.json();i(t.configured||!1),Hi.debug(`Hugging Face OAuth configured:`,t.configured)}else Hi.debug(`Hugging Face OAuth status check failed`),i(!1)}catch(e){Hi.debug(`Hugging Face OAuth not configured:`,e),i(!1)}})()},[]),r?(0,Q.jsx)(`button`,{type:`button`,onClick:()=>{if(!r||t)return;n(!0);let e=`${Ke}/auth/oauth/huggingface`;window.location.href=e},disabled:t,className:`flex h-11 w-full items-center justify-center rounded-xl border border-line bg-surface-raised px-4 text-sm font-medium text-ink shadow-subtle transition-colors hover:border-line-strong hover:bg-surface-subtle focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 focus-visible:ring-offset-canvas disabled:cursor-not-allowed disabled:opacity-40 motion-reduce:transition-none`,children:t?(0,Q.jsxs)(`div`,{className:`flex items-center`,children:[(0,Q.jsx)(Fe,{size:16,className:`me-2 animate-spin`}),e(`auth.oauth.connectingTo`,{provider:e(`auth.oauth.huggingFace`)})]}):(0,Q.jsxs)(`div`,{className:`flex items-center`,children:[(0,Q.jsx)(`span`,{className:`me-2 text-base`,children:`🤗`}),e(`auth.oauth.continueWith`,{provider:e(`auth.oauth.huggingFace`)})]})}):null},Wi=L(`hooks:oauth-providers`),Gi=async e=>{try{let t=await fetch(`${Ke}/auth/oauth/${e}/status`,{method:`GET`,credentials:`include`});return t.ok?!!(await t.json()).configured:!1}catch(t){return Wi.debug(`${e} OAuth not configured:`,t),!1}},Ki=()=>{let[e,t]=(0,Z.useState)({github:!1,huggingface:!1});return(0,Z.useEffect)(()=>{let e=!0;return Promise.all([Gi(`github`),Gi(`huggingface`)]).then(([n,r])=>{e&&t({github:n,huggingface:r})}),()=>{e=!1}},[]),{...e,hasAny:e.github||e.huggingface}},qi=L(`components:turnstile-widget`),Ji=`https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit`,Yi=null,Xi=()=>window.turnstile?Promise.resolve():Yi||(Yi=new Promise((e,t)=>{let n=document.querySelector(`script[src="${Ji}"]`);if(n){n.addEventListener(`load`,()=>e(),{once:!0}),n.addEventListener(`error`,t,{once:!0});return}let r=document.createElement(`script`);r.src=Ji,r.async=!0,r.defer=!0,r.onload=()=>e(),r.onerror=t,document.head.appendChild(r)}),Yi),Zi=({siteKey:e,action:t,disabled:n=!1,errorMessage:r,onTokenChange:i})=>{let a=(0,Z.useRef)(null),o=(0,Z.useRef)(null),[s,c]=(0,Z.useState)(!1);return(0,Z.useEffect)(()=>{let n=!1,r=a.current;return i(``),Xi().then(()=>{n||!r||!window.turnstile||(r.innerHTML=``,o.current=window.turnstile.render(r,{sitekey:e,theme:`auto`,action:t,callback:e=>i(e),"expired-callback":()=>i(``),"error-callback":()=>i(``)}))}).catch(e=>{qi.error(`Turnstile script failed to load:`,e),n||c(!0)}),()=>{n=!0,i(``),o.current&&window.turnstile?.remove?window.turnstile.remove(o.current):r&&(r.innerHTML=``),o.current=null}},[t,i,e]),(0,Z.useEffect)(()=>{n&&o.current&&(window.turnstile?.reset(o.current),i(``))},[n,i]),s?(0,Q.jsx)(`div`,{className:`rounded-lg border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700 dark:border-red-900/50 dark:bg-red-950/30 dark:text-red-300`,children:r}):(0,Q.jsx)(`div`,{className:`rounded-lg border border-accent-200 bg-accent-50/40 p-3 transition-opacity dark:border-accent-800/70 dark:bg-accent-950/20 ${n?`pointer-events-none opacity-60`:``}`,"aria-label":`Security verification`,children:(0,Q.jsx)(`div`,{ref:a,className:`min-h-[65px]`})})},Qi=L(`components:login-form`),$i={username:`demo`,password:`demo`},ea=({onLogin:e,onShowSignup:t,initialApprovalPending:n=!1,bare:r=!1})=>{let{t:i}=x(),a=Ge(),o=Ki(),[s,c]=(0,Z.useState)(a?$i.username:``),[u,d]=(0,Z.useState)(a?$i.password:``),[f,p]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(n),[v,y]=(0,Z.useState)(``),b=l(),{login:S,systemInfo:C}=z(),w=C?.turnstile?.siteKey,T=!!(C?.turnstile?.enabled&&w&&!a),ee=(0,Z.useCallback)(e=>{y(e)},[]),E=(0,Z.useMemo)(()=>m||T&&!v,[m,T,v]),D=async t=>{t.preventDefault();let n=a?$i.username:s.trim(),r=a?$i.password:u;if(!n||!r){I.error(i(`auth.login.enterBoth`));return}if(T&&!v){I.error(i(`auth.login.verificationFailed`,`Security verification failed. Please refresh and try again.`));return}h(!0),_(!1);try{localStorage.removeItem(`auth-token`);let t=await qe.login({username:n,password:r,turnstileToken:v});t.success&&t.data?(S(t.data.user,t.data.token,t.data.systemInfo),I.success(i(`auth.login.loginSuccess`)),e?.(),b(`/`)):I.error(t.message||i(`auth.login.loginFailed`))}catch(e){Qi.error(`Login error:`,e);let t=e;t.response?.data?.code===`ACCOUNT_PENDING`?(_(!0),I.error(t.response.data.message||i(`auth.login.approvalPending`,`Your account is waiting for administrator approval.`))):I.error(i(`auth.login.checkCredentials`))}finally{y(``),h(!1)}},O=e=>{if(e.key===`Enter`){let t=e.currentTarget.form;t&&t.requestSubmit()}};return(0,Q.jsxs)(`div`,{className:R(`mx-auto w-full max-w-md`,!r&&`rounded-3xl border border-line bg-surface-raised p-6 shadow-card sm:p-8`),children:[(0,Q.jsxs)(`div`,{className:R(`mb-8`,r?`text-start`:`text-center`),children:[(0,Q.jsx)(`h1`,{className:`mb-2 text-3xl font-light tracking-[-0.04em] text-ink`,children:i(`auth.login.title`)}),(0,Q.jsx)(`p`,{className:`text-sm leading-6 text-ink-muted`,children:i(`auth.login.subtitle`)})]}),(0,Q.jsxs)(`form`,{onSubmit:D,className:`space-y-5`,children:[g&&(0,Q.jsxs)(`div`,{"data-testid":`login-approval-pending`,role:`status`,className:`flex gap-3 rounded-xl border border-warning-500/30 bg-warning-500/10 p-3 text-start`,children:[(0,Q.jsx)(fe,{"aria-hidden":`true`,className:`mt-0.5 h-4 w-4 shrink-0 text-warning-700 dark:text-warning-400`}),(0,Q.jsx)(`p`,{className:`text-xs leading-5 text-ink-muted`,children:i(`auth.login.approvalPending`,`Your account is waiting for administrator approval.`)})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`label`,{htmlFor:`username`,className:`mb-2 block text-sm font-medium text-ink`,children:i(`auth.login.username`)}),(0,Q.jsx)(`input`,{id:`username`,type:`text`,value:s,onChange:e=>c(e.target.value),onKeyDown:O,className:`h-11 w-full rounded-xl border border-line bg-surface px-3 text-sm text-ink shadow-subtle outline-none transition-[border-color,box-shadow,background-color] placeholder:text-ink-muted focus:border-line-strong focus:ring-2 focus:ring-primary-500/35 disabled:cursor-not-allowed disabled:bg-surface-subtle disabled:text-ink-muted motion-reduce:transition-none`,placeholder:i(`auth.login.usernamePlaceholder`),required:!0,disabled:m||a})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`label`,{htmlFor:`password`,className:`mb-2 block text-sm font-medium text-ink`,children:i(`auth.login.password`)}),(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsx)(`input`,{id:`password`,type:f?`text`:`password`,value:u,onChange:e=>d(e.target.value),onKeyDown:O,className:`h-11 w-full rounded-xl border border-line bg-surface px-3 pe-11 text-sm text-ink shadow-subtle outline-none transition-[border-color,box-shadow,background-color] placeholder:text-ink-muted focus:border-line-strong focus:ring-2 focus:ring-primary-500/35 disabled:cursor-not-allowed disabled:bg-surface-subtle disabled:text-ink-muted motion-reduce:transition-none`,placeholder:i(`auth.login.passwordPlaceholder`),required:!0,disabled:m||a}),(0,Q.jsx)(`button`,{type:`button`,onClick:()=>p(!f),className:`absolute inset-y-0 end-0 flex items-center pe-3 text-ink-muted transition-colors hover:text-ink disabled:cursor-not-allowed disabled:opacity-50`,disabled:m||a,"aria-label":f?`Hide characters`:`Reveal characters`,children:f?(0,Q.jsx)(Ve,{size:20}):(0,Q.jsx)(N,{size:20})})]})]}),T&&w&&(0,Q.jsx)(Zi,{siteKey:w,action:`login`,disabled:m,errorMessage:i(`auth.login.verificationFailed`,`Security verification failed. Please refresh and try again.`),onTokenChange:ee}),(0,Q.jsx)(`button`,{type:`submit`,disabled:E,className:`flex h-11 w-full items-center justify-center rounded-xl border border-transparent bg-ink px-4 text-sm font-medium text-ink-inverse shadow-subtle transition-opacity hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 focus-visible:ring-offset-canvas disabled:cursor-not-allowed disabled:opacity-40 motion-reduce:transition-none`,children:m?(0,Q.jsxs)(`div`,{className:`flex items-center`,children:[(0,Q.jsx)(`div`,{className:`me-2 h-4 w-4 animate-spin rounded-full border-b-2 border-current`}),i(`auth.login.signingIn`)]}):(0,Q.jsxs)(`div`,{className:`flex items-center`,children:[(0,Q.jsx)(me,{size:16,className:`me-2`}),i(`auth.login.signIn`)]})})]}),!a&&(0,Q.jsxs)(Q.Fragment,{children:[o.hasAny&&(0,Q.jsxs)(`div`,{className:`mt-6`,children:[(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsx)(`div`,{className:`absolute inset-0 flex items-center`,children:(0,Q.jsx)(`div`,{className:`w-full border-t border-line`})}),(0,Q.jsx)(`div`,{className:`relative flex justify-center text-sm`,children:(0,Q.jsx)(`span`,{className:R(`px-2 text-ink-muted`,r?`bg-canvas`:`bg-surface-raised`),children:i(`common.or`)})})]}),(0,Q.jsxs)(`div`,{className:`mt-6 space-y-3`,children:[o.github&&(0,Q.jsx)(Vi,{}),o.huggingface&&(0,Q.jsx)(Ui,{})]})]}),t&&(0,Q.jsx)(`div`,{className:`mt-6 text-center`,children:(0,Q.jsxs)(`p`,{className:`text-sm text-ink-muted`,children:[i(`auth.login.noAccount`),` `,(0,Q.jsx)(`button`,{onClick:t,className:`font-medium text-primary-600 transition-colors hover:text-primary-700 dark:text-primary-400 dark:hover:text-primary-300`,children:i(`auth.login.signUpHere`)})]})})]})]})},ta=`Use at least 12 characters, no more than 72 UTF-8 bytes, with uppercase, lowercase, and a number.`,na=e=>e.length<12?`Password must be at least 12 characters.`:new TextEncoder().encode(e).length>72?`Password must be no more than 72 UTF-8 bytes.`:/[A-Z]/.test(e)?/[a-z]/.test(e)?/[0-9]/.test(e)?null:`Password must contain a number.`:`Password must contain a lowercase letter.`:`Password must contain an uppercase letter.`,ra=L(`components:signup-form`),ia=({onSignup:e,onBackToLogin:t,bare:n=!1})=>{let{t:r}=x(),[i,a]=(0,Z.useState)(``),[o,s]=(0,Z.useState)(``),[c,u]=(0,Z.useState)(``),[d,f]=(0,Z.useState)(``),[p,m]=(0,Z.useState)(!1),[h,g]=(0,Z.useState)(!1),[_,v]=(0,Z.useState)(!1),[y,b]=(0,Z.useState)(!1),[S,C]=(0,Z.useState)(``),w=l(),{login:T,systemInfo:ee}=z(),E=ee?.turnstile?.siteKey,D=!!(ee?.turnstile?.enabled&&E),O=(0,Z.useCallback)(e=>{C(e)},[]),k=(0,Z.useMemo)(()=>_||D&&!S,[_,D,S]),te=async t=>{if(t.preventDefault(),!i.trim()||!c.trim()){I.error(r(`auth.signup.usernameRequired`));return}if(c!==d){I.error(r(`auth.signup.passwordMismatch`));return}let n=na(c);if(n){I.error(n);return}if(D&&!S){I.error(r(`auth.signup.tryAgain`));return}v(!0);try{let t=await qe.signup({username:i,password:c,email:o,turnstileToken:S});if(t.success&&t.data){if(!(`token`in t.data)){b(!0),I.success(r(`auth.signup.approvalPending`,`Registration received. An administrator must approve your account.`));return}T(t.data.user,t.data.token,t.data.systemInfo),I.success(r(`auth.signup.signupSuccess`)),e?.(),w(`/`)}else I.error(t.message||r(`auth.signup.signupFailed`))}catch(e){ra.error(`Signup error:`,e),I.error(r(`auth.signup.tryAgain`))}finally{C(``),v(!1)}},ne=e=>{if(e.key===`Enter`){let t=e.currentTarget.form;t&&t.requestSubmit()}};return y?(0,Q.jsxs)(`div`,{"data-testid":`signup-approval-pending`,className:R(`mx-auto w-full max-w-md text-center`,!n&&`rounded-3xl border border-line bg-surface-raised p-6 shadow-card sm:p-8`),children:[(0,Q.jsx)(`div`,{className:`mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-warning-500/15 text-warning-700 dark:text-warning-400`,children:(0,Q.jsx)(fe,{"aria-hidden":`true`,className:`h-6 w-6`})}),(0,Q.jsx)(`h1`,{className:`mt-5 text-3xl font-light tracking-[-0.04em] text-ink`,children:r(`auth.signup.awaitingApproval`,`Awaiting approval`)}),(0,Q.jsx)(`p`,{className:`mt-3 text-sm leading-6 text-ink-muted`,children:r(`auth.signup.awaitingApprovalDescription`,`Your account has been created, but an administrator must activate it before you can sign in.`)}),(0,Q.jsx)(`button`,{type:`button`,onClick:t,className:`mt-6 inline-flex h-11 w-full items-center justify-center rounded-xl border border-line bg-surface px-4 text-sm font-medium text-ink shadow-subtle transition-colors hover:bg-surface-raised`,children:r(`auth.signup.backToSignIn`,`Back to sign in`)})]}):(0,Q.jsxs)(`div`,{className:R(`mx-auto w-full max-w-md`,!n&&`rounded-3xl border border-line bg-surface-raised p-6 shadow-card sm:p-8`),children:[(0,Q.jsxs)(`div`,{className:R(`mb-8`,n?`text-start`:`text-center`),children:[(0,Q.jsx)(`h1`,{className:`mb-2 text-3xl font-light tracking-[-0.04em] text-ink`,children:r(`auth.signup.title`)}),(0,Q.jsx)(`p`,{className:`text-sm leading-6 text-ink-muted`,children:r(`auth.signup.subtitle`)})]}),(0,Q.jsxs)(`form`,{onSubmit:te,className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`label`,{htmlFor:`username`,className:`mb-2 block text-sm font-medium text-ink`,children:r(`auth.signup.username`)}),(0,Q.jsx)(`input`,{id:`username`,type:`text`,value:i,onChange:e=>a(e.target.value),onKeyDown:ne,className:`h-11 w-full rounded-xl border border-line bg-surface px-3 text-sm text-ink shadow-subtle outline-none transition-[border-color,box-shadow,background-color] placeholder:text-ink-muted focus:border-line-strong focus:ring-2 focus:ring-primary-500/35 disabled:cursor-not-allowed disabled:opacity-50 motion-reduce:transition-none`,placeholder:r(`auth.signup.usernamePlaceholder`),required:!0,disabled:_})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`label`,{htmlFor:`email`,className:`mb-2 block text-sm font-medium text-ink`,children:[r(`auth.signup.email`),` `,(0,Q.jsxs)(`span`,{className:`text-ink-muted`,children:[`(`,r(`common.optional`),`)`]})]}),(0,Q.jsx)(`input`,{id:`email`,type:`email`,value:o,onChange:e=>s(e.target.value),onKeyDown:ne,className:`h-11 w-full rounded-xl border border-line bg-surface px-3 text-sm text-ink shadow-subtle outline-none transition-[border-color,box-shadow,background-color] placeholder:text-ink-muted focus:border-line-strong focus:ring-2 focus:ring-primary-500/35 disabled:cursor-not-allowed disabled:opacity-50 motion-reduce:transition-none`,placeholder:r(`auth.signup.emailPlaceholder`),disabled:_})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`label`,{htmlFor:`password`,className:`mb-2 block text-sm font-medium text-ink`,children:r(`auth.signup.password`)}),(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsx)(`input`,{id:`password`,type:p?`text`:`password`,value:c,onChange:e=>u(e.target.value),onKeyDown:ne,className:`h-11 w-full rounded-xl border border-line bg-surface px-3 pe-11 text-sm text-ink shadow-subtle outline-none transition-[border-color,box-shadow,background-color] placeholder:text-ink-muted focus:border-line-strong focus:ring-2 focus:ring-primary-500/35 disabled:cursor-not-allowed disabled:opacity-50 motion-reduce:transition-none`,placeholder:r(`auth.signup.passwordPlaceholder`),required:!0,disabled:_}),(0,Q.jsx)(`button`,{type:`button`,onClick:()=>m(!p),className:`absolute inset-y-0 end-0 flex items-center pe-3 text-ink-muted transition-colors hover:text-ink disabled:cursor-not-allowed disabled:opacity-50`,disabled:_,"aria-label":p?`Hide characters`:`Reveal characters`,children:p?(0,Q.jsx)(Ve,{size:20}):(0,Q.jsx)(N,{size:20})})]}),(0,Q.jsx)(`p`,{className:`mt-1.5 text-xs text-ink-muted`,children:ta})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`label`,{htmlFor:`confirmPassword`,className:`mb-2 block text-sm font-medium text-ink`,children:r(`auth.signup.confirmPassword`)}),(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsx)(`input`,{id:`confirmPassword`,type:h?`text`:`password`,value:d,onChange:e=>f(e.target.value),onKeyDown:ne,className:`h-11 w-full rounded-xl border border-line bg-surface px-3 pe-11 text-sm text-ink shadow-subtle outline-none transition-[border-color,box-shadow,background-color] placeholder:text-ink-muted focus:border-line-strong focus:ring-2 focus:ring-primary-500/35 disabled:cursor-not-allowed disabled:opacity-50 motion-reduce:transition-none`,placeholder:r(`auth.signup.confirmPasswordPlaceholder`),required:!0,disabled:_}),(0,Q.jsx)(`button`,{type:`button`,onClick:()=>g(!h),className:`absolute inset-y-0 end-0 flex items-center pe-3 text-ink-muted transition-colors hover:text-ink disabled:cursor-not-allowed disabled:opacity-50`,disabled:_,"aria-label":h?`Hide confirmation`:`Reveal confirmation`,children:h?(0,Q.jsx)(Ve,{size:20}):(0,Q.jsx)(N,{size:20})})]})]}),D&&E&&(0,Q.jsx)(Zi,{siteKey:E,action:`signup`,disabled:_,errorMessage:r(`auth.signup.tryAgain`),onTokenChange:O}),(0,Q.jsx)(`button`,{type:`submit`,disabled:k,className:`flex h-11 w-full items-center justify-center rounded-xl border border-transparent bg-ink px-4 text-sm font-medium text-ink-inverse shadow-subtle transition-opacity hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 focus-visible:ring-offset-canvas disabled:cursor-not-allowed disabled:opacity-40 motion-reduce:transition-none`,children:_?(0,Q.jsxs)(`div`,{className:`flex items-center`,children:[(0,Q.jsx)(`div`,{className:`me-2 h-4 w-4 animate-spin rounded-full border-b-2 border-current`}),r(`auth.signup.creatingAccount`)]}):(0,Q.jsxs)(`div`,{className:`flex items-center`,children:[(0,Q.jsx)(De,{size:16,className:`me-2`}),r(`auth.signup.createAccount`)]})})]}),(0,Q.jsx)(Vi,{}),(0,Q.jsx)(`div`,{className:`mt-6 text-center`,children:(0,Q.jsxs)(`p`,{className:`text-sm text-ink-muted`,children:[r(`auth.signup.hasAccount`),` `,(0,Q.jsx)(`button`,{onClick:t,className:`font-medium text-primary-600 transition-colors hover:text-primary-700 dark:text-primary-400 dark:hover:text-primary-300`,children:r(`auth.signup.signInHere`)})]})})]})};function aa(e,t=`0.19.4`){return t?.trim()||e?.trim()||``}var oa=()=>{let{t:e}=x(),t=l(),n=y(),{isAuthenticated:r,requiresAuth:i,systemInfo:a}=z(),[o,s]=(0,Z.useState)(!1),c=i(),u=a?.signupEnabled??!0,d=new URLSearchParams(n.search).get(`approval`)===`pending`;if((0,Z.useEffect)(()=>{(r||!c)&&t(`/`)},[c,r,t]),r||!c)return null;let f=[{icon:Ee,title:e(`auth.highlights.local.title`,`Local first`),body:e(`auth.highlights.local.body`,`Your conversations and files stay on the machine you run this on.`)},{icon:je,title:e(`auth.highlights.providers.title`,`Any provider`),body:e(`auth.highlights.providers.body`,`Local models through Ollama, plus the remote providers you choose to add.`)},{icon:Re,title:e(`auth.highlights.work.title`,`Isolated Work`),body:e(`auth.highlights.work.body`,`Give a model a sandboxed workspace with files, a terminal, and a preview.`)}],p=aa(a?.version);return(0,Q.jsxs)(`div`,{className:`relative min-h-screen overflow-y-auto bg-canvas text-ink`,children:[(0,Q.jsxs)(`header`,{className:`absolute inset-x-0 top-0 z-10 flex h-14 items-center justify-between px-5 sm:px-8`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-ink lg:invisible`,children:[(0,Q.jsx)(Qr,{size:`sm`,label:null}),(0,Q.jsx)(Xr,{size:`sm`})]}),(0,Q.jsx)($r,{})]}),(0,Q.jsxs)(`main`,{className:`grid min-h-screen lg:grid-cols-2`,children:[(0,Q.jsxs)(`section`,{className:`relative hidden flex-col justify-between border-e border-line bg-surface px-10 py-12 lg:flex xl:px-16`,children:[(0,Q.jsxs)(`div`,{className:`relative z-10 flex items-center gap-3.5 text-ink`,children:[(0,Q.jsx)(Qr,{size:`lg`,label:null}),(0,Q.jsx)(Xr,{size:`lg`})]}),(0,Q.jsxs)(`div`,{className:`relative z-10 max-w-lg`,children:[(0,Q.jsx)(`p`,{className:`text-[2.6rem] font-light leading-[1.05] tracking-[-0.04em] text-ink xl:text-5xl`,children:e(`auth.tagline`,`Your AI stack should answer to you.`)}),(0,Q.jsx)(`ul`,{className:`mt-10 space-y-5`,children:f.map(e=>(0,Q.jsxs)(`li`,{className:`flex gap-3`,children:[(0,Q.jsx)(e.icon,{"aria-hidden":`true`,className:`mt-0.5 h-4 w-4 shrink-0 text-ink-subtle`}),(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[(0,Q.jsx)(`p`,{className:`text-[13px] font-medium text-ink`,children:e.title}),(0,Q.jsx)(`p`,{className:`mt-0.5 text-[13px] leading-relaxed text-ink-muted`,children:e.body})]})]},e.title))})]}),(0,Q.jsxs)(`p`,{"data-testid":`app-version`,className:`relative z-10 font-mono text-[11px] text-ink-subtle`,children:[p?`v${p}`:``,p?` · `:``,e(`auth.selfHosted`,`Self-hosted · Apache 2.0`)]})]}),(0,Q.jsx)(`section`,{className:`flex items-center justify-center px-5 pb-12 pt-24 sm:px-8 lg:px-12 lg:py-12`,children:(0,Q.jsx)(`div`,{className:`w-full max-w-sm`,children:o&&u?(0,Q.jsx)(ia,{bare:!0,onBackToLogin:()=>s(!1),onSignup:()=>s(!1)}):(0,Q.jsx)(ea,{bare:!0,initialApprovalPending:d,onShowSignup:u?()=>s(!0):void 0})})})]})]})},sa=window.location.protocol===`file:`,ca=()=>sa?(0,Q.jsx)(`div`,{className:`absolute top-0 left-0 right-0 h-8 z-50`,style:{WebkitAppRegion:`drag`}}):null,la=L(`app`),ua=Z.lazy(()=>f(()=>import(`../js/HomePage-aNO615Go.js`),__vite__mapDeps([20,1,2,5,3,7,13,10,14,8,9,11,15,16,21]))),da=Z.lazy(()=>f(()=>import(`../js/ChatPage-B64xgIPZ.js`),__vite__mapDeps([22,1,2,23,5,3,4,6,7,8,9,10,11,13,14,15,16,24,17,18,19,25,26,27,28,29]))),fa=Z.lazy(()=>f(()=>import(`../js/ModelsPage-tzXaut3l.js`),__vite__mapDeps([30,1,2,5,3,7,8,9,10,11,13,15,14,16,18,19,17]))),pa=Z.lazy(()=>f(()=>import(`../js/PersonasPage-C9Pkl4yH.js`),__vite__mapDeps([31,1,2,3,7,8,9,5,10,11,13,16,18,19,17]))),ma=Z.lazy(()=>f(()=>import(`../js/GalleryPage-CKgQAYmH.js`),__vite__mapDeps([32,1,2,23,3,7,8,9,5,10,11,12,13,16,18,19,17]))),ha=Z.lazy(()=>f(()=>import(`../js/NotesPage-Ciwrazz9.js`),__vite__mapDeps([33,1,2,3,7,8,9,5,10,11,13,18,19,17,16,34,35,36]))),ga=Z.lazy(()=>f(()=>import(`../js/LibreClawPage-DZqgIOgT.js`),__vite__mapDeps([37,1,2,6,3,7,8,9,5,10,11,13,18,19,17,16]))),_a=Z.lazy(()=>f(()=>import(`../js/WorkPage-cJEe9LZ_.js`),__vite__mapDeps([38,1,2,5,3,4,6,7,11,8,9,10,13,14,15,16,18,19,17,34,35,36,29,23,21]))),va=Z.lazy(()=>f(()=>import(`../js/UserManagementPage-DClRsCeA.js`),__vite__mapDeps([39,1,2,3,7,8,9,5,10,11,15,14,13,16,18,19,17]))),ya=Z.lazy(()=>f(()=>import(`../js/PluginUsagePage-DPfyos1y.js`),__vite__mapDeps([40,1,2,3,7,9,5,10,8,11,13,18,19,17,16]))),ba=Z.lazy(()=>f(()=>import(`../js/SystemPage-CkUsJ-UR.js`),__vite__mapDeps([41,1,2,3,7,9,5,10,8,11,13,18,19,17,16]))),xa=Z.lazy(()=>f(()=>import(`../js/ArtifactDemoPage-BDTtUPjk.js`),__vite__mapDeps([42,1,2,18,13,10,19,5,17,3,7,8,16,26,27,28,25,11]))),Sa=Z.lazy(()=>f(()=>import(`../js/SettingsModal-DhrjNMcd.js`).then(e=>({default:e.SettingsModal})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]))),Ca=Z.lazy(()=>f(()=>import(`../js/ArtifactSlideOutPanel-BMhWWM3P.js`).then(e=>({default:e.ArtifactSlideOutPanel})),__vite__mapDeps([43,1,2,23,3,4,5,6,7,8,13,10,14,9,11,16,18,27,28,25]))),wa=Z.lazy(()=>f(()=>import(`../js/FirstTimeSetup-1IqkWCsV.js`).then(e=>({default:e.FirstTimeSetup})),__vite__mapDeps([44,1,2,3,7,8,9,5,10,11,15,14,13,16]))),Ta=()=>{let{t:e}=x();return(0,Q.jsx)(`div`,{className:`flex h-full min-h-screen items-center justify-center bg-gray-50 dark:bg-dark-100`,children:(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[(0,Q.jsx)(`div`,{className:`h-8 w-8 rounded-full border-4 border-gray-200 border-t-primary-500 animate-spin dark:border-dark-300 dark:border-t-primary-400`}),(0,Q.jsx)(`div`,{className:`text-gray-600 dark:text-dark-600`,children:e(`common.loading`)})]})})},Ea=({isOpen:e,compact:t})=>(0,Q.jsx)(`div`,{"aria-hidden":`true`,className:R(`hidden lg:block flex-shrink-0 transition-[width] duration-200 ease-out`,e?t?`w-20`:`w-72`:`w-0`)}),Da=({hasBackground:e,sidebarOpen:t,sidebarCompact:n,onCloseSidebar:r,showDemoBanner:i,demoMessage:a,children:o})=>(0,Q.jsxs)(`div`,{className:R(`flex h-dvh min-h-0 text-gray-950 dark:text-dark-900 relative overflow-hidden`,e?`bg-gray-100/60 dark:bg-dark-50/60`:`bg-gray-100 dark:bg-dark-50`),children:[(0,Q.jsx)(ca,{}),(0,Q.jsx)(wi,{}),(0,Q.jsx)(gi,{isOpen:t,onClose:r}),(0,Q.jsx)(Ea,{isOpen:t,compact:n}),(0,Q.jsxs)(`div`,{"data-testid":`app-shell-content`,className:R(`flex-1 basis-0 flex min-h-0 flex-col min-w-0 transition-[margin,background-color] duration-200 ease-out relative z-10 lg:pb-2 lg:pe-2`,sa?`pt-8`:`lg:pt-1.5`,t&&n?`max-lg:ms-20`:`max-lg:ms-0`,e?`bg-white/10 dark:bg-dark-50/10`:`bg-transparent`),children:[i&&(0,Q.jsx)(Ci,{message:a}),(0,Q.jsx)(Ni,{}),(0,Q.jsx)(`main`,{className:R(`min-h-0 flex-1 overflow-hidden lg:rounded-[1.5rem] lg:border lg:border-black/[0.06] dark:lg:border-white/[0.07] lg:shadow-[0_1px_2px_rgba(0,0,0,0.03),0_18px_60px_rgba(15,23,42,0.04)]`,e?`bg-white/30 dark:bg-dark-100/35 backdrop-blur-sm`:`bg-gray-50 dark:bg-dark-100`),children:(0,Q.jsx)(yi,{children:(0,Q.jsx)(Z.Suspense,{fallback:(0,Q.jsx)(Ta,{}),children:o})})})]})]}),Oa=()=>{let{t:e,i18n:t}=x(),n=l(),[r,i]=(0,Z.useState)(!1),[a,o]=(0,Z.useState)(void 0),[s,u]=(0,Z.useState)(0),[d,f]=(0,Z.useState)(!1),{sidebarOpen:p,sidebarCompact:m,setSidebarOpen:g,setSidebarCompact:_,toggleSidebar:v,toggleSidebarCompact:y,toggleTheme:b,backgroundImage:C,preferences:w,artifactPanelOpen:T,closeArtifactPanel:ee}=st(),{systemInfo:E,isLoading:D,user:k,isAuthenticated:te}=z(),{isDemoMode:ne,demoConfig:A}=st(),j=E?.requiresAuth===!1||te,re=Si(),[ie,ae]=Z.useState(!1),M=Z.useRef(!1);Z.useEffect(()=>{(async()=>{if(M.current){la.debug(`OAuth already processing, skipping...`);return}if(la.debug(`Starting OAuth callback processing...`),M.current=!0,new URLSearchParams(window.location.search).get(`auth`)===`success`){try{let e=await fetch(`${Ke}/auth/oauth/exchange`,{method:`POST`,credentials:`include`});if(e.ok){let t=await e.json();if(t.success&&t.data){let{login:e}=z.getState();e(t.data.user,t.data.token,t.data.systemInfo),la.debug(`OAuth login successful`),F.success(`OAuth login successful!`)}else F.error(`Failed to complete OAuth authentication`)}else F.error(`OAuth authentication verification failed`)}catch(e){la.error(`OAuth processing error:`,e),F.error(`OAuth authentication failed`)}window.history.replaceState({},document.title,window.location.pathname)}la.debug(`OAuth processing completed`),ae(!0),M.current=!1})()},[]),Ri();let N=()=>{if(C)return!0;let e=w.backgroundSettings;return e?.enabled&&e?.imageUrl};zi([{key:`b`,metaKey:!0,action:()=>{window.innerWidth>=1024?p?y():(_(!1),v()):(!p&&m&&_(!1),v())},description:e(`keyboard.toggleSidebar`)},{key:`,`,metaKey:!0,action:()=>{o(void 0),i(!0)},description:e(`keyboard.openSettings`)},{key:`o`,metaKey:!0,shiftKey:!0,action:()=>Ti(n),description:e(`keyboard.newChat`)},{key:`u`,metaKey:!0,shiftKey:!0,action:()=>{let{systemInfo:e,isAdmin:t}=z.getState();(e?.requiresAuth===!1||t())&&Di(n)},description:e(`keyboard.newWork`)},{key:`d`,metaKey:!0,action:b,description:e(`keyboard.toggleDarkMode`)},{key:`h`,action:()=>{o(`shortcuts`),i(!0)},description:e(`keyboard.showShortcuts`)},{key:`Escape`,action:()=>i(!1),description:e(`keyboard.closeModals`)}],j),Z.useEffect(()=>{if(j)return;let e=window.requestAnimationFrame(()=>{i(!1),ee()});return()=>window.cancelAnimationFrame(e)},[ee,j]),Z.useEffect(()=>{if(!j){ot.disconnect();return}return ot.connect().catch(la.error),()=>{ot.disconnect()}},[j]),Z.useEffect(()=>{if(!E&&!D&&s<15){let e=setTimeout(async()=>{u(e=>e+1);try{await Ii.initializeAuth()}catch{}},2e3);return()=>clearTimeout(e)}},[E,D,s]);let oe=!d&&E?.requiresAuth===!0&&E?.hasUsers===!1;return D?(0,Q.jsxs)(`div`,{className:`min-h-screen bg-gray-50 dark:bg-dark-50 flex flex-col justify-center py-12 sm:px-6 lg:px-8`,children:[(0,Q.jsx)(`div`,{className:`sm:mx-auto sm:w-full sm:max-w-md`,children:(0,Q.jsx)(`div`,{className:`flex flex-col items-center`,children:(0,Q.jsx)(Qr,{size:`lg`,className:`text-gray-900 dark:text-gray-100`})})}),(0,Q.jsx)(`div`,{className:`mt-8 flex flex-col items-center gap-4`,children:(0,Q.jsx)(`div`,{className:`w-8 h-8 border-4 border-gray-300 dark:border-gray-600 border-t-primary-500 dark:border-t-primary-400 rounded-full animate-spin`})})]}):E?oe&&!d?(0,Q.jsx)(yi,{children:(0,Q.jsx)(Z.Suspense,{fallback:(0,Q.jsx)(Ta,{}),children:(0,Q.jsx)(wa,{onComplete:()=>{f(!0)}})})}):ie?(0,Q.jsxs)(Q.Fragment,{children:[E&&!E.requiresAuth?(0,Q.jsx)(Da,{hasBackground:!!N(),sidebarOpen:p,sidebarCompact:m,onCloseSidebar:()=>g(!1),showDemoBanner:ne&&A.showBanner,demoMessage:A.message,children:(0,Q.jsxs)(c,{children:[(0,Q.jsx)(h,{path:`/`,element:(0,Q.jsx)(ua,{})}),(0,Q.jsx)(h,{path:`/chat`,element:(0,Q.jsx)(da,{})}),(0,Q.jsx)(h,{path:`/c/:sessionId`,element:(0,Q.jsx)(da,{})}),(0,Q.jsx)(h,{path:`/models`,element:(0,Q.jsx)(fa,{})}),(0,Q.jsx)(h,{path:`/personas`,element:(0,Q.jsx)(pa,{})}),(0,Q.jsx)(h,{path:`/gallery`,element:(0,Q.jsx)(ma,{})}),(0,Q.jsx)(h,{path:`/notes`,element:(0,Q.jsx)(ha,{})}),(0,Q.jsx)(h,{path:`/work`,element:(0,Q.jsx)($,{requireAdmin:!0,children:(0,Q.jsx)(_a,{})})}),(0,Q.jsx)(h,{path:`/work/:taskId`,element:(0,Q.jsx)($,{requireAdmin:!0,children:(0,Q.jsx)(_a,{})})}),(0,Q.jsx)(h,{path:`/agents`,element:(0,Q.jsx)($,{requireAdmin:!0,children:(0,Q.jsx)(ga,{})})}),(0,Q.jsx)(h,{path:`/usage`,element:(0,Q.jsx)($,{requireAdmin:!0,children:(0,Q.jsx)(ya,{})})}),(0,Q.jsx)(h,{path:`/system`,element:(0,Q.jsx)($,{requireAdmin:!0,children:(0,Q.jsx)(ba,{})})}),(0,Q.jsx)(h,{path:`/login`,element:(0,Q.jsx)(oa,{})})]})}):(0,Q.jsxs)(c,{children:[(0,Q.jsx)(h,{path:`/login`,element:(0,Q.jsx)(oa,{})}),(0,Q.jsx)(h,{path:`/*`,element:(0,Q.jsx)($,{children:(0,Q.jsx)(Da,{hasBackground:!!N(),sidebarOpen:p,sidebarCompact:m,onCloseSidebar:()=>g(!1),showDemoBanner:ne&&A.showBanner,demoMessage:A.message,children:(0,Q.jsxs)(c,{children:[(0,Q.jsx)(h,{path:`/`,element:(0,Q.jsx)(ua,{})}),(0,Q.jsx)(h,{path:`/chat`,element:(0,Q.jsx)(da,{})}),(0,Q.jsx)(h,{path:`/c/:sessionId`,element:(0,Q.jsx)(da,{})}),(0,Q.jsx)(h,{path:`/models`,element:(0,Q.jsx)(fa,{})}),(0,Q.jsx)(h,{path:`/personas`,element:(0,Q.jsx)(pa,{})}),(0,Q.jsx)(h,{path:`/gallery`,element:(0,Q.jsx)(ma,{})}),(0,Q.jsx)(h,{path:`/notes`,element:(0,Q.jsx)(ha,{})}),(0,Q.jsx)(h,{path:`/work`,element:(0,Q.jsx)($,{requireAdmin:!0,children:(0,Q.jsx)(_a,{})})}),(0,Q.jsx)(h,{path:`/work/:taskId`,element:(0,Q.jsx)($,{requireAdmin:!0,children:(0,Q.jsx)(_a,{})})}),(0,Q.jsx)(h,{path:`/agents`,element:(0,Q.jsx)($,{requireAdmin:!0,children:(0,Q.jsx)(ga,{})})}),(0,Q.jsx)(h,{path:`/artifacts`,element:(0,Q.jsx)(xa,{})}),(0,Q.jsx)(h,{path:`/usage`,element:(0,Q.jsx)($,{requireAdmin:!0,children:(0,Q.jsx)(ya,{})})}),(0,Q.jsx)(h,{path:`/system`,element:(0,Q.jsx)($,{requireAdmin:!0,children:(0,Q.jsx)(ba,{})})}),(0,Q.jsx)(h,{path:`/users`,element:(0,Q.jsx)($,{requireAdmin:!0,children:(0,Q.jsx)(va,{})})})]})})})})]}),j&&r&&(0,Q.jsx)(Z.Suspense,{fallback:null,children:(0,Q.jsx)(Sa,{isOpen:r,initialTab:a,onClose:()=>i(!1)})}),j&&re.open&&re.notes&&(0,Q.jsx)(bi,{notes:re.notes,onDismiss:re.dismiss}),j&&T&&(0,Q.jsx)(Z.Suspense,{fallback:null,children:(0,Q.jsx)(Ca,{})}),(0,Q.jsx)(O,{position:S(t.language)?`top-left`:`top-right`,toastOptions:{duration:4e3,className:`animate-slide-up`,style:{background:`var(--toast-bg)`,color:`var(--toast-color)`,border:`1px solid var(--toast-border)`,borderRadius:`0.75rem`,boxShadow:`0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)`,cursor:`pointer`},success:{iconTheme:{primary:`rgb(var(--color-primary-600))`,secondary:`#ffffff`}},error:{iconTheme:{primary:`rgb(var(--color-primary-600))`,secondary:`#ffffff`}}},containerStyle:{top:80,insetInlineEnd:20}}),j&&(0,Q.jsx)(Pi,{onOpenSettings:()=>i(!0)})]}):(0,Q.jsx)(`div`,{className:`min-h-screen bg-gray-50 dark:bg-dark-50 flex items-center justify-center`,children:(0,Q.jsx)(`div`,{className:`w-8 h-8 border-4 border-gray-300 dark:border-gray-600 border-t-primary-500 dark:border-t-primary-400 rounded-full animate-spin`})}):(0,Q.jsx)(`div`,{className:`min-h-screen bg-gray-50 dark:bg-dark-50 flex items-center justify-center p-4`,children:(0,Q.jsxs)(`div`,{className:`text-center`,children:[(0,Q.jsx)(`div`,{className:`mb-8`,children:(0,Q.jsx)(Qr,{size:`lg`,className:`mx-auto text-gray-900 dark:text-white`})}),(0,Q.jsx)(`div`,{className:`flex justify-center mb-4`,children:(0,Q.jsx)(`div`,{className:`w-8 h-8 border-4 border-gray-300 dark:border-dark-300 border-t-primary-500 dark:border-t-primary-400 rounded-full animate-spin`})}),(0,Q.jsx)(`p`,{className:`text-gray-600 dark:text-dark-600 text-sm`,children:s>0?`Connecting to backend... (${s}/15)`:`Starting up...`})]})})},ka=sa?g([{path:`*`,element:(0,Q.jsx)(Oa,{})}]):m([{path:`*`,element:(0,Q.jsx)(Oa,{})}]),Aa=()=>(0,Q.jsx)(yi,{children:(0,Q.jsx)(_,{router:ka})}),ja=new xr({defaultOptions:{queries:{staleTime:3e4,refetchOnWindowFocus:!1,retry:1}}});C.catch(()=>{w(`en`)}).then(()=>{zr.createRoot(document.getElementById(`root`)).render((0,Q.jsx)(Z.StrictMode,{children:(0,Q.jsx)(wr,{client:ja,children:(0,Q.jsx)(Aa,{})})}))});export{ln as _,Ei as a,ui as c,qr as d,Rr as f,dn as g,Rn as h,Zi as i,Qr as l,Cr as m,ta as n,Ti as o,Lr as p,na as r,Di as s,aa as t,Xr as u,un as v};