libre-webui 0.37.0 → 0.37.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/backend/dist/cordis/dsh/engine-plugin.d.ts.map +1 -1
- package/backend/dist/cordis/dsh/engine-plugin.js +4 -1
- package/backend/dist/cordis/dsh/engine-plugin.js.map +1 -1
- package/backend/dist/cordis/host/config.d.ts.map +1 -1
- package/backend/dist/cordis/host/config.js +14 -4
- package/backend/dist/cordis/host/config.js.map +1 -1
- package/backend/dist/cordis/host/host.d.ts.map +1 -1
- package/backend/dist/cordis/host/host.js +7 -2
- package/backend/dist/cordis/host/host.js.map +1 -1
- package/backend/dist/cordis/host/privacy.d.ts +8 -0
- package/backend/dist/cordis/host/privacy.d.ts.map +1 -0
- package/backend/dist/cordis/host/privacy.js +73 -0
- package/backend/dist/cordis/host/privacy.js.map +1 -0
- package/backend/dist/cordis/runtime.d.ts.map +1 -1
- package/backend/dist/cordis/runtime.js +12 -1
- package/backend/dist/cordis/runtime.js.map +1 -1
- package/backend/dist/services/agentCliService.d.ts.map +1 -1
- package/backend/dist/services/agentCliService.js +3 -0
- package/backend/dist/services/agentCliService.js.map +1 -1
- package/backend/dist/utils/pluginDefinitionTrust.js +1 -1
- package/backend/package.json +2 -2
- package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
- package/frontend/dist/artifact-runtime/framer-motion.js +3 -3
- package/frontend/dist/artifact-runtime/lucide-react.js +1 -1
- package/frontend/dist/artifact-runtime/react.js +5 -5
- package/frontend/dist/artifact-runtime/recharts.js +45 -45
- package/frontend/dist/assets/index-DWLnkKwj.js +16 -0
- package/frontend/dist/index.html +30 -30
- package/frontend/dist/js/{ArtifactContainer-Bd0IrnmH.js → ArtifactContainer-D4v4l15L.js} +1 -1
- package/frontend/dist/js/{ArtifactDemoPage-CL_ROEDy.js → ArtifactDemoPage-B2uaVpsi.js} +1 -1
- package/frontend/dist/js/{ArtifactSandboxFrame-Dv32Q7Q9.js → ArtifactSandboxFrame-DlWJHI-r.js} +1 -1
- package/frontend/dist/js/{ArtifactSlideOutPanel-BIeQrdzE.js → ArtifactSlideOutPanel-laZ98QKB.js} +1 -1
- package/frontend/dist/js/{AutomationModal-Dy42OlIk.js → AutomationModal-CjjiEZFA.js} +1 -1
- package/frontend/dist/js/{AutomationsPage-DWtmeftv.js → AutomationsPage-jnWmD58y.js} +1 -1
- package/frontend/dist/js/{AvatarUpload-ClO6yGZX.js → AvatarUpload-KaBaTKoG.js} +1 -1
- package/frontend/dist/js/{Button-ZQ6BePid.js → Button-CGMYia4g.js} +1 -1
- package/frontend/dist/js/{CalendarPage-ChZgPFIy.js → CalendarPage-Dc7r-86c.js} +1 -1
- package/frontend/dist/js/ChannelsPage-DHPabX1e.js +1 -0
- package/frontend/dist/js/ChatPage-ZvGp-iqV.js +14 -0
- package/frontend/dist/js/{ConnectModels-S4NOCxtb.js → ConnectModels-aUTD6s9B.js} +1 -1
- package/frontend/dist/js/{CordisPage-BN6AcgVv.js → CordisPage-DZKcpPVj.js} +1 -1
- package/frontend/dist/js/{EvaluationsPage-DsGvkOBY.js → EvaluationsPage-BB7sPhIR.js} +1 -1
- package/frontend/dist/js/{FirstTimeSetup-DOHfNdJo.js → FirstTimeSetup-elqSi9JH.js} +1 -1
- package/frontend/dist/js/{GalleryPage-Fndn6_oZ.js → GalleryPage-CrlNRnkn.js} +1 -1
- package/frontend/dist/js/{HomePage-DPoIA-VC.js → HomePage-lR9h7_a1.js} +1 -1
- package/frontend/dist/js/{LanguageSwitcher-DAkaWEHB.js → LanguageSwitcher-CWkbzpxT.js} +1 -1
- package/frontend/dist/js/{LibreClawPage-CdFXe8Mg.js → LibreClawPage-P19FnNlu.js} +1 -1
- package/frontend/dist/js/{Logo-C9fsEUaY.js → Logo-HZvdAk2c.js} +1 -1
- package/frontend/dist/js/{LogoMark-Cvu5CQOW.js → LogoMark-GJnfMXsk.js} +1 -1
- package/frontend/dist/js/{ModelManagerModals-oO3ygVfy.js → ModelManagerModals-Bk6OQzJI.js} +1 -1
- package/frontend/dist/js/{NotesPage-44VKCZNH.js → NotesPage-DopG0M4B.js} +2 -2
- package/frontend/dist/js/{OptimizedSyntaxHighlighter-aKWyHj_c.js → OptimizedSyntaxHighlighter-CzzV6ONG.js} +1 -1
- package/frontend/dist/js/OptimizedSyntaxHighlighter-ajqwyBQm.js +1 -0
- package/frontend/dist/js/{PasswordStrengthMeter-BZF8U24d.js → PasswordStrengthMeter-DasfJa4P.js} +1 -1
- package/frontend/dist/js/{PersonasPage-DoHAgNb3.js → PersonasPage-CIJINcQK.js} +1 -1
- package/frontend/dist/js/{PluginUsagePage-BfkgiWdb.js → PluginUsagePage-Cj0mUxD8.js} +1 -1
- package/frontend/dist/js/RichMessageContent-BZndQSJU.js +1 -0
- package/frontend/dist/js/{RichMessageContent-B3V8vNPB.js → RichMessageContent-DxCHlUlY.js} +2 -2
- package/frontend/dist/js/SettingsModal-wAuFQOE4.js +19 -0
- package/frontend/dist/js/{SettingsToggle-CKLHOUt-.js → SettingsToggle-oxvw7ulA.js} +1 -1
- package/frontend/dist/js/{ShareDialog-DFCFk_5o.js → ShareDialog-Bhpt_Y1N.js} +1 -1
- package/frontend/dist/js/{SystemPage-CqZLDXog.js → SystemPage-BfhVXqar.js} +1 -1
- package/frontend/dist/js/{TurnstileWidget-BO2ceTt8.js → TurnstileWidget-CVepEMEQ.js} +1 -1
- package/frontend/dist/js/{UserManagementPage-Ch-PvYQ9.js → UserManagementPage-2yHv89ZA.js} +1 -1
- package/frontend/dist/js/{UserManagementPanel-D7TNSA3i.js → UserManagementPanel-BU95ZPOv.js} +1 -1
- package/frontend/dist/js/{WhatsNewModal-5hfNdmEV.js → WhatsNewModal-Dl69bG2T.js} +1 -1
- package/frontend/dist/js/WorkPage-CSderbeT.js +8 -0
- package/frontend/dist/js/api-CU-JXx2u.js +1 -0
- package/frontend/dist/js/{api-jEschMu2.js → api-DPXCtanG.js} +1 -1
- package/frontend/dist/js/{appNavigation-Dr7gFa_n.js → appNavigation-R8iKverf.js} +1 -1
- package/frontend/dist/js/{appStore-DglPGdPW.js → appStore-BD70bvas.js} +2 -2
- package/frontend/dist/js/appVersion-C7sxqgMd.js +1 -0
- package/frontend/dist/js/{authStore-BSn9e-LG.js → authStore-D8fc-Hl0.js} +3 -3
- package/frontend/dist/js/authStore-FNKLFUQp.js +1 -0
- package/frontend/dist/js/{chatStore-BtjmZY_D.js → chatStore-CK5ojwft.js} +3 -3
- package/frontend/dist/js/{client-CUuh7qtw.js → client-BeJbHHWx.js} +2 -2
- package/frontend/dist/js/{config-CBGiqPGG.js → config-D6Kcp5n3.js} +1 -1
- package/frontend/dist/js/{cordisApi-c6Um_474.js → cordisApi-BS8QMSV4.js} +1 -1
- package/frontend/dist/js/{estree-DCT3Jm65.js → estree-DGmLqopC.js} +17 -17
- package/frontend/dist/js/{evaluationsApi-_U24Slqu.js → evaluationsApi-2YwZBPk5.js} +1 -1
- package/frontend/dist/js/{html-CBXMuS97.js → html-BryNQ_yx.js} +6 -6
- package/frontend/dist/js/{markdown-Bo71X2X2.js → markdown-CZ1tYEW8.js} +17 -17
- package/frontend/dist/js/{markdown-core-BFkBYv2v.js → markdown-core-KjS96SYW.js} +1 -1
- package/frontend/dist/js/{markdown-html-CwjnwJbl.js → markdown-html-DQEwrWcf.js} +1 -1
- package/frontend/dist/js/{markdown-math-CJvHdD1l.js → markdown-math-CKi32S5d.js} +1 -1
- package/frontend/dist/js/{markdownHtml-egpK3_YY.js → markdownHtml-lrXhxBhK.js} +1 -1
- package/frontend/dist/js/markdownMath-B0BpyFBS.js +1 -0
- package/frontend/dist/js/{messageCodeStyles-BuSENDg_.js → messageCodeStyles-D4haBw80.js} +1 -1
- package/frontend/dist/js/react-vendor-wiHys0m2.js +9 -0
- package/frontend/dist/js/router-vendor-HZm4FR0A.js +1 -0
- package/frontend/dist/js/{standalone-6z5x8CWe.js → standalone-DbyFjvTU.js} +1 -1
- package/frontend/dist/js/{syntax-highlight-7t8DGG2n.js → syntax-highlight-DNc3FFCa.js} +1 -1
- package/frontend/dist/js/{teamEventStream-B37335ai.js → teamEventStream-omPy51va.js} +1 -1
- package/frontend/dist/js/{typescript-CslHIgIJ.js → typescript-DUM5niRM.js} +1 -1
- package/frontend/dist/js/{ui-CwzgKeUQ.js → ui-D5-4niRk.js} +2 -2
- package/frontend/dist/js/ui-vendor-BhHHyHk3.js +1 -0
- package/frontend/dist/js/{useChat-yWCeS8Rw.js → useChat-DnGClJeX.js} +1 -1
- package/frontend/dist/js/{useDialogFocus-BQLdAGYH.js → useDialogFocus-BPTG_Zmy.js} +1 -1
- package/frontend/dist/js/{useDictation-a98XeJii.js → useDictation-D7zVBjDJ.js} +1 -1
- package/frontend/dist/js/useQuery-hWmQjdLu.js +1 -0
- package/frontend/dist/js/{useTranslation-Kn7_iLGj.js → useTranslation-B9kflK9S.js} +1 -1
- package/frontend/dist/js/{utils-Dq1w7K0c.js → utils-p8Gt72YP.js} +1 -1
- package/frontend/dist/js/{utils-vendor-dx9vGAt3.js → utils-vendor-DISWt2y9.js} +1 -1
- package/frontend/dist/js/{workApi-Xmj4wmPi.js → workApi-C5InfT8x.js} +1 -1
- package/frontend/dist/js/workApi-FV75LKJn.js +1 -0
- package/package.json +5 -5
- package/plugins/codex-oauth.json +2 -0
- package/frontend/dist/assets/index-C1SuPfNL.js +0 -71
- package/frontend/dist/js/ChannelsPage-zN03cSNe.js +0 -1
- package/frontend/dist/js/ChatPage-8miRtYkQ.js +0 -14
- package/frontend/dist/js/OptimizedSyntaxHighlighter-BFjOBavF.js +0 -1
- package/frontend/dist/js/RichMessageContent-Cm-Sw-ux.js +0 -1
- package/frontend/dist/js/SettingsModal-DhBjTuR7.js +0 -19
- package/frontend/dist/js/WorkPage-CTd_UrET.js +0 -8
- package/frontend/dist/js/api-D7VJAMui.js +0 -1
- package/frontend/dist/js/appVersion-BQ7RP6kt.js +0 -1
- package/frontend/dist/js/authStore-DSIpfiYd.js +0 -1
- package/frontend/dist/js/markdownMath-mesq3ZcY.js +0 -1
- package/frontend/dist/js/react-vendor-D0Ec-185.js +0 -9
- package/frontend/dist/js/router-vendor-CM0PhOMl.js +0 -1
- package/frontend/dist/js/ui-vendor-wayYH9Nf.js +0 -177
- package/frontend/dist/js/useQuery-C3O4CZ54.js +0 -1
- package/frontend/dist/js/workApi-DXie0wBj.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-vendor-D0Ec-185.js";import{t as r}from"./logger-BR4forr_.js";import{n as i}from"./i18next-DOICz7ZY.js";import{a,i as o,n as s,o as c,r as l,t as u}from"./useTranslation-Kn7_iLGj.js";import{f as d,m as f,t as p,u as m}from"./utils-Dq1w7K0c.js";import{Lt as h,O as g,Qn as _,Rn as v,S as y,Tn as b,Z as x,ct as S,lr as C,n as w,on as ee,rr as T,rt as E,v as te,wr as D,xr as O,z as k}from"./ui-vendor-wayYH9Nf.js";import{x as A}from"./api-jEschMu2.js";import{t as j}from"./Button-ZQ6BePid.js";import{a as ne,o as M}from"./ui-CwzgKeUQ.js";var N={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,"!doctype":!0,"!DOCTYPE":!0},re=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?("[^"]*"|'[^']*')/g;function P(e){let t={type:`tag`,name:``,voidElement:!1,attrs:{},children:[]},n=e.match(/<\/?([^\s]+?)[/\s>]/);if(n&&(t.name=n[1],(N[n[1]]||e.charAt(e.length-2)===`/`)&&(t.voidElement=!0),t.name.startsWith(`!--`))){let t=e.indexOf(`-->`);return{type:`comment`,comment:t===-1?``:e.slice(4,t)}}let r=new RegExp(re),i=null;for(;i=r.exec(e),i!==null;)if(i[0].trim()){if(i[1]){let e=i[1].trim(),n=[e,null],a=e.indexOf(`=`);a>-1&&(n=[e.slice(0,a),e.slice(a+1)]),t.attrs[n[0]]=n[1],r.lastIndex--}else i[2]&&(t.attrs[i[2]]=i[3].trim().substring(1,i[3].length-1))}return t}var F=/<!--[\s\S]*?-->|<[a-zA-Z0-9\-!/](?:"[^"]*"|'[^']*'|[^'">])*>/g,I=/<\/?([^\s]+?)[/\s>]/,ie=/^\s*$/,ae=/^(script|style)$/i,L=`\0`,oe=Object.create(null);function R(e){e.forEach(function(e){if(e.type===`text`){e.content=e.content.split(L).join(`<`);return}if(e.type===`comment`){e.comment=e.comment.split(L).join(`<`);return}for(let t in e.attrs){let n=e.attrs[t];typeof n==`string`&&n.indexOf(L)>-1&&(e.attrs[t]=n.split(L).join(`<`))}e.children.length&&R(e.children)})}function se(e,t){let n=t&&t.components||oe,r=t&&t.allowedTags,i=!1;if(r){let t=typeof r==`function`?r:function(e){return r.indexOf(e)>-1},n=``,a=0;F.lastIndex=0;let o;for(;o=F.exec(e);){let r=o[0];n+=e.slice(a,o.index);let s=r.match(I);r.startsWith(`<!--`)||s&&t(s[1])?(n+=r,a=o.index+r.length):(i=!0,n+=L,a=o.index+1,F.lastIndex=a)}e=n+e.slice(a)}let a=[],o=[],s,c=-1,l=!1,u=0,d;if(e.indexOf(`<`)!==0){let t=e.indexOf(`<`);a.push({type:`text`,content:t===-1?e:e.substring(0,t)})}let f=[],p;for(;p=F.exec(e);)f.push(p);return f.forEach(function(e,t){let n=e[0];if(!n||n.startsWith(`<!--`))return;let r=0,i=0,a=-1,o=null;for(let e=0;e<n.length;e++){let t=n.charAt(e);o?t===o&&(o=null):t===`"`||t===`'`?o=t:t===`<`?(r++,r===2&&(a=e)):t===`>`&&i++}let s=a>-1&&/[a-zA-Z0-9\-!/]/.test(n.charAt(a+1));if(r>i&&s){let e=n.substring(0,a),r=n.substring(e.length);f[t][0]=r,f[t].index+=e.length}}),f.forEach(function(t,r){let i=t[0];if(!i)return;let p=t.index;if(p<u)return;if(l){if(i!==`</`+s.name+`>`)return;l=!1}let m=i.charAt(1)!==`/`,h=i.startsWith(`<!--`),g=p+i.length,_=e.charAt(g),v=f[r+1],y;if(_===`<`&&v){let t=e.substring(g,v.index);y=t.split(`<`).length>t.split(`>`).length}let b;if(h){let t=P(i);if(c<0)return a.push(t),a;b=o[c],b.children.push(t);let n=e.slice(g,v?v.index:void 0);return n.length>0&&b.children.push({type:`text`,content:n}),a}if(m){c++,s=P(i),s.type===`tag`&&n[s.name]&&(s.type=`component`,l=!0);let t=!1;if(!l&&!s.voidElement&&ae.test(s.name)){t=!0,d||=e.toLowerCase();let n=d.indexOf(`</`+s.name.toLowerCase()+`>`,g),r=n===-1?e.length:n,i=e.slice(g,r);i&&s.children.push({type:`text`,content:i}),u=r}!s.voidElement&&!l&&!t&&_&&_!==`<`&&s.children.push({type:`text`,content:e.slice(g,v?v.index:void 0)}),c===0&&a.push(s),b=o[c-1],b&&b.children.push(s),o[c]=s}if((!m||s.voidElement)&&(c>-1&&(s.voidElement||s.name===i.slice(2,-1))&&(c--,s=c===-1?a:o[c]),!l&&(_!==`<`||y)&&_)){b=c===-1?a:o[c].children;let t=v?v.index:-1,n=e.slice(g,t===-1?void 0:t);ie.test(n)&&(n=` `),(t>-1&&c+b.length>=0||n!==` `)&&b.push({type:`text`,content:n})}}),i&&R(a),a}function ce(e){let t=[];for(let n in e)e[n]===null?t.push(n):t.push(n+`="`+String(e[n]).replace(/"/g,`"`)+`"`);return t.length?` `+t.join(` `):``}function le(e,t){switch(t.type){case`text`:return e+t.content;case`tag`:{let n=t.voidElement&&t.name.toLowerCase()!==`!doctype`?`/>`:`>`;return e+=`<`+t.name+(t.attrs?ce(t.attrs):``)+n,t.voidElement?e:e+t.children.reduce(le,``)+`</`+t.name+`>`}case`comment`:return e+=`<!--`+t.comment+`-->`,e}}function ue(e){return e.reduce(function(e,t){return e+le(``,t)},``)}var z={parse:se,stringify:ue},B=e(t()),V=(e,t)=>{if(!e)return!1;let n=e.props?.children??e.children;return t?n.length>0:!!n},H=e=>{if(!e)return[];let t=e.props?.children??e.children;return e.props?.i18nIsDynamicList?U(t):t},de=e=>Array.isArray(e)&&e.every(B.isValidElement),U=e=>Array.isArray(e)?e:[e],fe=(e,t)=>{let n={...t};return n.props={...t.props,...e.props},n},pe=e=>{let t={};if(!e)return t;let n=e=>{U(e).forEach(e=>{o(e)||(V(e)?n(H(e)):l(e)&&!(0,B.isValidElement)(e)&&Object.assign(t,e))})};return n(e),t},W=(e,t,n,r)=>{if(!e)return``;let i=``,s=U(e),c=t?.transSupportBasicHtmlNodes?t.transKeepBasicHtmlNodesFor??[]:[];return s.forEach((e,s)=>{if(o(e)){i+=`${e}`;return}if((0,B.isValidElement)(e)){let{props:a,type:l}=e,u=Object.keys(a).length,d=c.indexOf(l)>-1,f=a.children;if(!f&&d&&!u){i+=`<${l}/>`;return}if(!f&&(!d||u)||a.i18nIsDynamicList){i+=`<${s}></${s}>`;return}if(d&&u<=1){let e=o(f)?f:W(f,t,n,r);i+=`<${l}>${e}</${l}>`;return}let p=W(f,t,n,r);i+=`<${s}>${p}</${s}>`;return}if(e===null){a(n,`TRANS_NULL_VALUE`,`Passed in a null value as child`,{i18nKey:r});return}if(l(e)){let{format:t,...o}=e,s=Object.keys(o);if(s.length===1){let e=t?`${s[0]}, ${t}`:s[0];i+=`{{${e}}}`;return}a(n,`TRANS_INVALID_OBJ`,`Invalid child - Object should only have keys {{ value, format }} (format is optional).`,{i18nKey:r,child:e});return}a(n,`TRANS_INVALID_VAR`,`Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.`,{i18nKey:r,child:e})}),i},G=(e,t,n,r,i,a,s)=>{if(n===``)return[];let c=i.transKeepBasicHtmlNodesFor||[],u=n&&new RegExp(c.map(e=>`<${e}`).join(`|`)).test(n);if(!e&&!t&&!u&&!s)return[n];let p=t??{},m=e=>{U(e).forEach(e=>{o(e)||(V(e)?m(H(e)):l(e)&&!(0,B.isValidElement)(e)&&Object.assign(p,e))})};m(e);let h=Object.keys(p),g=z.parse(`<0>${n}</0>`,{allowedTags:e=>/^\d+$/.test(e)||c.indexOf(e)>-1||h.indexOf(e)>-1}),_={...p,...a},v=(e,t,n)=>{let r=H(e),i=b(r,t.children,n);return de(r)&&i.length===0||e.props?.i18nIsDynamicList?r:i},y=(e,t,n,r,i)=>{e.dummy?(e.children=t,n.push((0,B.cloneElement)(e,{key:r},i?void 0:t))):n.push(...B.Children.map([e],e=>{if(e.type===B.Fragment||e.props?.i18nIsDynamicList!==void 0){let n={key:r};return e&&e.props&&Object.keys(e.props).forEach(t=>{t!==`children`&&t!==`i18nIsDynamicList`&&(n[t]=e.props[t])}),(0,B.createElement)(e.type,n,i?null:t)}let n={key:r};return e&&e.props&&Object.keys(e.props).forEach(t=>{t!==`ref`&&t!==`children`&&(n[t]=e.props[t])}),(0,B.cloneElement)(e,n,i?null:t)}))},b=(e,n,a)=>{let p=U(e),m=U(n),h={};return m.reduce((e,n,m)=>{let g=n.children?.[0]?.content&&r.services.interpolator.interpolate(n.children[0].content,_,r.language);if(n.type===`tag`){let d=p[parseInt(n.name,10)];!d&&t&&(d=t[n.name]),a.length===1&&!d&&(d=a[0][n.name]),d||={};let x={...n.attrs};s&&Object.keys(x).forEach(e=>{let t=x[e];o(t)&&(x[e]=f(t))});let S=Object.keys(x).length===0?d:fe({props:x},d),C=(0,B.isValidElement)(S),w=C&&V(n,!0)&&!n.voidElement,ee=u&&l(S)&&S.dummy&&!C,T=l(t)&&Object.hasOwnProperty.call(t,n.name);if(o(S)){let t=r.services.interpolator.interpolate(S,_,r.language);e.push(t)}else if(V(S)||w){let t=v(S,n,a);y(S,t,e,m)}else if(ee){let t=b(p,n.children,a);y(S,t,e,m)}else if(Number.isNaN(parseFloat(n.name))){if(T){let t=v(S,n,a);y(S,t,e,m,n.voidElement)}else if(i.transSupportBasicHtmlNodes&&c.indexOf(n.name)>-1){if(n.voidElement)e.push((0,B.createElement)(n.name,{key:`${n.name}-${m}`}));else{let t=h[n.name]||0;h[n.name]=t+1;let r,i=0;for(let e=0;e<p.length;e+=1){let a=p[e];if((0,B.isValidElement)(a)&&a.type===n.name){if(i===t){r=a;break}i+=1}}let o=r?U(H(r)):p,s=b(o,n.children,a);e.push((0,B.createElement)(n.name,{key:`${n.name}-${m}`},s))}}else if(n.voidElement)e.push(`<${n.name} />`);else{let t=b(p,n.children,a);e.push(`<${n.name}>${t}</${n.name}>`)}}else if(l(S)&&!C){let t=n.children[0]?g:null;t&&e.push(t)}else y(S,g,e,m,n.children.length!==1||!g)}else if(n.type===`text`){let t=i.transWrapTextNodes,a=typeof i.unescape==`function`?i.unescape:d().unescape,o=s?a(r.services.interpolator.interpolate(n.content,_,r.language)):r.services.interpolator.interpolate(n.content,_,r.language);t?e.push((0,B.createElement)(t,{key:`${n.name}-${m}`},o)):e.push(o)}return e},[])};return H(b([{dummy:!0,children:e||[]}],g,U(e||[]))[0])},me=(e,t,n)=>{let r=e.key||t,i=(0,B.cloneElement)(e,{key:r});if(!i.props||!i.props.children||n.indexOf(`${t}/>`)<0&&n.indexOf(`${t} />`)<0)return i;function a(){return(0,B.createElement)(B.Fragment,null,i)}return(0,B.createElement)(a,{key:r})},he=(e,t)=>e.map((e,n)=>me(e,n,t)),ge=(e,t)=>{let n={};return Object.keys(e).forEach(r=>{Object.assign(n,{[r]:me(e[r],r,t)})}),n},_e=(e,t,n,r)=>e?Array.isArray(e)?he(e,t):l(e)?ge(e,t):(c(n,`TRANS_INVALID_COMPONENTS`,`<Trans /> "components" prop expects an object or array`,{i18nKey:r}),null):null,ve=e=>!l(e)||Array.isArray(e)?!1:Object.keys(e).reduce((e,t)=>e&&Number.isNaN(Number.parseFloat(t)),!0);function ye({children:e,count:t,parent:n,i18nKey:r,context:a,tOptions:s={},values:l,defaults:u,components:f,ns:p,i18n:h,t:g,shouldUnescape:_,...v}){let y=h||m();if(!y)return c(y,`NO_I18NEXT_INSTANCE`,`Trans: You need to pass in an i18next instance using initReactI18next or by passing it via props or context. In monorepo setups, make sure there is only one instance of react-i18next.`,{i18nKey:r}),e;let b=g||y.t.bind(y)||(e=>e),x={...d(),...y.options?.react},S=p||b.ns||y.options?.defaultNS;S=o(S)?[S]:S||[`translation`];let{transDefaultProps:C}=x,w=C?.tOptions?{...C.tOptions,...s}:s,ee=_??C?.shouldUnescape,T=C?.values?{...C.values,...l}:l,E=C?.components?{...C.components,...f}:f,te=W(e,x,y,r),D=u||w?.defaultValue||te||x.transEmptyNodeValue||(typeof r==`function`?i(r):r),{hashTransKey:O}=x,k=r||(O?O(te||D):te||D);l=y.options?.interpolation?.defaultVariables?T&&Object.keys(T).length>0?{...T,...y.options.interpolation.defaultVariables}:{...y.options.interpolation.defaultVariables}:T;let A=pe(e);A&&typeof A.count==`number`&&t===void 0&&(t=A.count);let j=l||t!==void 0&&!y.options?.interpolation?.alwaysFormat||!e?w.interpolation:{interpolation:{...w.interpolation,prefix:`#$?`,suffix:`?$#`}},ne={...w,context:a||w.context,count:t,...l,...j,defaultValue:D,ns:S},M=k?b(k,ne):D;M===k&&D&&(M=D);let N=_e(E,M,y,r),re=N||e,P=null;ve(N)&&(P=N,re=e);let F=G(re,P,M,y,x,ne,ee),I=n??x.defaultTransParent;return I?(0,B.createElement)(I,v,F):F}function be({children:e,count:t,parent:n,i18nKey:r,context:i,tOptions:a={},values:o,defaults:c,components:l,ns:u,i18n:d,t:f,shouldUnescape:p,...h}){let{i18n:g,defaultNS:_}=(0,B.useContext)(s)||{},v=d||g||m(),y=f||v?.t.bind(v);return ye({children:e,count:t,parent:n,i18nKey:r,context:i,tOptions:a,values:o,defaults:c,components:l,ns:u||y?.ns||_||v?.options?.defaultNS,i18n:v,t:f,shouldUnescape:p,...h})}var K=n(),q=r(`pages:libre-claw`),xe={queued:`bg-gray-100 text-gray-700 dark:bg-dark-200 dark:text-dark-700`,running:`bg-primary-100 text-primary-700 dark:bg-primary-900/25 dark:text-primary-300`,blocked:`bg-amber-500/20 text-ink dark:bg-amber-900/30`,done:`bg-emerald-100 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-300`,failed:`bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-300`,cancelled:`bg-slate-100 text-slate-700 dark:bg-slate-800 dark:text-slate-300`},Se={assistant_message:`text-primary-600 dark:text-primary-300`,assistant_delta:`text-primary-600 dark:text-primary-300`,user_message:`text-gray-700 dark:text-dark-700`,permission_request:`text-ink`,permission_response:`text-gray-600 dark:text-dark-600`,tool_call:`text-gray-600 dark:text-dark-600`,tool_result:`text-gray-600 dark:text-dark-600`,usage:`text-gray-600 dark:text-dark-600`,error:`text-red-600 dark:text-red-300`,run_finished:`text-emerald-600 dark:text-emerald-300`},Ce=[[`lobster`,`Lobster`],[`lobster-light`,`Lobster Light`],[`github-dark`,`GitHub Dark`],[`github-light`,`GitHub Light`],[`monokai-pro`,`Monokai Pro`],[`night-owl`,`Night Owl`],[`tokyo-night`,`Tokyo Night`],[`ayu`,`Ayu`],[`dracula`,`Dracula`],[`catppuccin-mocha`,`Catppuccin Mocha`],[`catppuccin-latte`,`Catppuccin Latte`],[`gruvbox-dark`,`Gruvbox Dark`],[`nord`,`Nord`],[`solarized-dark`,`Solarized Dark`],[`solarized-light`,`Solarized Light`],[`one-dark-pro`,`One Dark Pro`],[`rose-pine`,`Rose Pine`],[`kanagawa`,`Kanagawa`],[`matrix`,`Matrix`]],we=()=>{let{t:e}=u(),[t,n]=(0,B.useState)(null),[r,i]=(0,B.useState)([]),[a,o]=(0,B.useState)([]),[s,c]=(0,B.useState)([]),[l,d]=(0,B.useState)(null),[f,m]=(0,B.useState)(null),[N,re]=(0,B.useState)(``),[P,F]=(0,B.useState)(null),[I,ie]=(0,B.useState)(!0),[ae,L]=(0,B.useState)(!1),[oe,R]=(0,B.useState)(!1),[se,ce]=(0,B.useState)(!1),[le,ue]=(0,B.useState)(!1),[z,V]=(0,B.useState)(``),[H,de]=(0,B.useState)(`chat`),[U,fe]=(0,B.useState)(``),[pe,W]=(0,B.useState)(``),[G,me]=(0,B.useState)(``),[he,ge]=(0,B.useState)(``),[_e,ve]=(0,B.useState)(!1),[ye,xe]=(0,B.useState)(`lobster`),[Se,we]=(0,B.useState)(!0),[ke,Ae]=(0,B.useState)(``),[je,Y]=(0,B.useState)(``),[X,Fe]=(0,B.useState)(``),[Ie,Le]=(0,B.useState)(`report`),Z=(0,B.useMemo)(()=>r.find(e=>e.run_id===P)||null,[r,P]),Q=(0,B.useMemo)(()=>{let e=new Set(a.filter(e=>e.type===`permission_response`).map(e=>String(e.data.tool_call_id||``)));return a.filter(t=>{if(t.type!==`permission_request`)return!1;let n=String(t.data.tool_call_id||``);return n&&!e.has(n)})},[a]),Re=(0,B.useMemo)(()=>Pe(a,e),[a,e]),$=(0,B.useCallback)(async()=>{try{let[e,t,r,a,o,s]=await Promise.all([A.status(),A.listRuns(30),A.currentModel(),A.currentFallback(),A.usage(``,100),A.listAutomations(50)]);e.success&&e.data&&n(e.data),t.success&&t.data&&(i(t.data.runs),F(e=>e||t.data?.runs[0]?.run_id||null)),r.success&&r.data&&(d(r.data),me(String(r.data.provider||``)),ge(String(r.data.model||``))),a.success&&a.data&&m(a.data),o.success&&o.data&&re(String(o.data.text||``)),s.success&&s.data&&c(s.data.automations)}catch(t){q.error(`Failed to load Libre Claw overview:`,t),D.error(e(`libreClaw.toasts.loadStatusFailed`))}finally{ie(!1)}},[e]),ze=(0,B.useCallback)(async(e,t=!1)=>{let n=t?0:a.length>0&&a[a.length-1]?.event_id||0;try{let r=await A.getEvents(e,n);r.success&&r.data&&o(e=>t?r.data?.events||[]:[...e,...r.data?.events||[]])}catch(e){q.error(`Failed to load Libre Claw events:`,e)}},[a]);(0,B.useEffect)(()=>{let e=window.setTimeout(()=>{$()},0);return()=>window.clearTimeout(e)},[$]),(0,B.useEffect)(()=>{if(!P){let e=window.setTimeout(()=>{o([])},0);return()=>window.clearTimeout(e)}let e=P;A.getEvents(e,0).then(e=>{e.success&&e.data&&o(e.data.events)}).catch(e=>{q.error(`Failed to load Libre Claw events:`,e)})},[P]),(0,B.useEffect)(()=>{if(!P||!Z||![`queued`,`running`,`blocked`].includes(Z.state))return;let e=window.setInterval(()=>{ze(P),A.listRuns(30).then(e=>{e.success&&e.data&&i(e.data.runs)})},1500);return()=>window.clearInterval(e)},[ze,Z,P]);let Be=async()=>{if(!z.trim()){D.error(e(`libreClaw.toasts.enterTask`));return}L(!0);try{let t=await A.startRun({message:z,kind:H,provider:U||void 0,model:pe||void 0});if(t.success&&t.data){let n=t.data.run;i(e=>[n,...e.filter(e=>e.run_id!==n.run_id)]),F(n.run_id),V(``),D.success(e(`libreClaw.toasts.runStarted`))}else D.error(t.error||e(`libreClaw.toasts.startRunFailed`))}catch(t){q.error(`Failed to start Libre Claw run:`,t),D.error(e(`libreClaw.toasts.startRunFailed`))}finally{L(!1)}},Ve=async t=>{try{await A.cancelRun(t),await $(),D.success(e(`libreClaw.toasts.runCancelled`))}catch(t){q.error(`Failed to cancel Libre Claw run:`,t),D.error(e(`libreClaw.toasts.cancelRunFailed`))}},He=async(t,n)=>{if(!P)return;let r=String(t.data.tool_call_id||``);if(r)try{await A.resolvePermission(P,r,n),await ze(P,!0),D.success(e(n===`deny`?`libreClaw.toasts.denied`:`libreClaw.toasts.approved`))}catch(t){q.error(`Failed to resolve Libre Claw permission:`,t),D.error(e(`libreClaw.toasts.resolvePermissionFailed`))}},Ue=async()=>{if(!G.trim()||!he.trim()){D.error(e(`libreClaw.toasts.providerModelRequired`));return}R(!0);try{let t=await A.updateModel(G,he,_e);t.success&&t.data?(d(t.data),D.success(e(`libreClaw.toasts.modelUpdated`))):D.error(t.error||e(`libreClaw.toasts.updateModelFailed`))}catch(t){q.error(`Failed to update Libre Claw model:`,t),D.error(e(`libreClaw.toasts.updateModelFailed`))}finally{R(!1)}},We=async()=>{ce(!0);try{let t=await A.updateTheme(ye,Se);t.success?D.success(e(`libreClaw.toasts.themeUpdated`)):D.error(t.error||e(`libreClaw.toasts.updateThemeFailed`))}catch(t){q.error(`Failed to update Libre Claw theme:`,t),D.error(e(`libreClaw.toasts.updateThemeFailed`))}finally{ce(!1)}},Ge=async()=>{if(!ke.trim()||!je.trim()||!X.trim()){D.error(e(`libreClaw.toasts.automationRequired`));return}ue(!0);try{let t=await A.createAutomation({name:ke,schedule:je,prompt:X,route:Ie});t.success?(Ae(``),Y(``),Fe(``),await $(),D.success(e(`libreClaw.toasts.automationCreated`))):D.error(t.error||e(`libreClaw.toasts.createAutomationFailed`))}catch(t){q.error(`Failed to create Libre Claw automation:`,t),D.error(e(`libreClaw.toasts.createAutomationFailed`))}finally{ue(!1)}},Ke=async(t,n)=>{try{n===`pause`&&await A.pauseAutomation(t),n===`resume`&&await A.resumeAutomation(t),n===`run`&&await A.runAutomationNow(t),n===`delete`&&await A.deleteAutomation(t),await $(),D.success(e(`libreClaw.toasts.automationUpdated`))}catch(t){q.error(`Failed to update Libre Claw automation:`,t),D.error(e(`libreClaw.toasts.updateAutomationFailed`))}};return(0,K.jsxs)(M,{width:`wide`,contentClassName:`space-y-6`,children:[(0,K.jsx)(ne,{className:`mb-0`,title:e(`libreClaw.title`),description:e(`libreClaw.subtitle`),actions:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Te,{status:t,t:e}),(0,K.jsxs)(j,{variant:`secondary`,size:`sm`,onClick:$,children:[(0,K.jsx)(x,{className:`h-4 w-4`}),e(`common.refresh`)]}),(0,K.jsxs)(`a`,{href:t?.dashboardUrl||`http://127.0.0.1:8766/dashboard`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex min-h-9 items-center gap-1.5 rounded-xl border border-gray-200/80 bg-white/70 px-3 py-1.5 text-sm font-medium text-gray-700 transition-colors hover:bg-white dark:border-white/10 dark:bg-white/[0.04] dark:text-dark-700 dark:hover:bg-white/[0.08]`,children:[(0,K.jsx)(b,{className:`h-4 w-4`}),e(`libreClaw.dashboard`)]})]})}),!t?.connected&&!I&&(0,K.jsx)(`section`,{className:`rounded-xl border border-amber-200 bg-amber-500/10 p-4 text-ink dark:border-amber-800 dark:bg-amber-900/20`,children:(0,K.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,K.jsx)(y,{className:`mt-0.5 h-5 w-5 shrink-0 text-amber-500`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h2`,{className:`font-semibold`,children:e(`libreClaw.connection.disconnectedTitle`)}),(0,K.jsx)(`p`,{className:`mt-1 text-sm opacity-90`,children:(0,K.jsx)(be,{i18nKey:`libreClaw.connection.disconnectedDescription`,components:{command:(0,K.jsx)(`code`,{}),env:(0,K.jsx)(`code`,{})}})}),t?.error&&(0,K.jsx)(`p`,{className:`mt-2 text-xs opacity-80`,children:t.error})]})]})}),(0,K.jsxs)(`section`,{className:`grid gap-4 lg:grid-cols-[minmax(0,1fr)_360px]`,children:[(0,K.jsx)(J,{title:e(`libreClaw.startRun.title`),icon:(0,K.jsx)(E,{className:`h-4 w-4`}),children:(0,K.jsxs)(`div`,{className:`space-y-3`,children:[(0,K.jsx)(`textarea`,{value:z,onChange:e=>V(e.target.value),placeholder:e(`libreClaw.startRun.placeholder`),className:`min-h-32 w-full rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm text-gray-900 outline-none transition focus:border-primary-400 focus:ring-2 focus:ring-primary-100 dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800 dark:focus:border-primary-500 dark:focus:ring-primary-900/30`}),(0,K.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-4`,children:[(0,K.jsxs)(`select`,{value:H,onChange:e=>de(e.target.value),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`,children:[(0,K.jsx)(`option`,{value:`chat`,children:e(`libreClaw.startRun.chatRun`)}),(0,K.jsx)(`option`,{value:`goal`,children:e(`libreClaw.startRun.goalMode`)})]}),(0,K.jsx)(`input`,{value:U,onChange:e=>fe(e.target.value),placeholder:e(`libreClaw.startRun.providerOverride`),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`}),(0,K.jsx)(`input`,{value:pe,onChange:e=>W(e.target.value),placeholder:e(`libreClaw.startRun.modelOverride`),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`}),(0,K.jsxs)(j,{onClick:Be,loading:ae,children:[(0,K.jsx)(C,{className:`h-4 w-4`}),e(`libreClaw.startRun.run`)]})]})]})}),(0,K.jsx)(J,{title:e(`libreClaw.modelRoute.title`),icon:(0,K.jsx)(ee,{className:`h-4 w-4`}),children:(0,K.jsxs)(`div`,{className:`space-y-3`,children:[(0,K.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2 lg:grid-cols-1`,children:[(0,K.jsx)(`input`,{value:G,onChange:e=>me(e.target.value),placeholder:e(`libreClaw.modelRoute.providerPlaceholder`),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`}),(0,K.jsx)(`input`,{value:he,onChange:e=>ge(e.target.value),placeholder:e(`libreClaw.modelRoute.modelPlaceholder`),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`})]}),(0,K.jsxs)(`label`,{className:`flex items-center gap-2 text-sm text-gray-600 dark:text-dark-600`,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:_e,onChange:e=>ve(e.target.checked),className:`h-4 w-4 rounded border-gray-300 text-primary-600 focus:ring-primary-500`}),e(`libreClaw.modelRoute.persistGlobal`)]}),(0,K.jsx)(j,{variant:`secondary`,onClick:Ue,loading:oe,children:e(`libreClaw.modelRoute.saveModel`)}),(0,K.jsxs)(`div`,{className:`border-t border-gray-100 pt-3 dark:border-dark-200`,children:[(0,K.jsx)(`label`,{className:`mb-1 block text-xs font-semibold uppercase tracking-wide text-gray-500 dark:text-dark-500`,children:e(`libreClaw.modelRoute.theme`)}),(0,K.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto] lg:grid-cols-1`,children:[(0,K.jsx)(`select`,{value:ye,onChange:e=>xe(e.target.value),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`,children:Ce.map(([e,t])=>(0,K.jsx)(`option`,{value:e,children:t},e))}),(0,K.jsx)(j,{variant:`secondary`,onClick:We,loading:se,children:e(`libreClaw.modelRoute.saveTheme`)})]}),(0,K.jsxs)(`label`,{className:`mt-2 flex items-center gap-2 text-sm text-gray-600 dark:text-dark-600`,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:Se,onChange:e=>we(e.target.checked),className:`h-4 w-4 rounded border-gray-300 text-primary-600 focus:ring-primary-500`}),e(`libreClaw.modelRoute.persistGlobal`)]})]}),l&&(0,K.jsx)(`pre`,{className:`max-h-32 overflow-auto rounded-lg bg-gray-100 p-2 text-xs text-gray-700 dark:bg-dark-200 dark:text-dark-700`,children:JSON.stringify(l,null,2)})]})})]}),(0,K.jsxs)(`section`,{className:`grid gap-4 xl:grid-cols-[360px_minmax(0,1fr)]`,children:[(0,K.jsx)(J,{title:e(`libreClaw.runs.title`),icon:(0,K.jsx)(O,{className:`h-4 w-4`}),children:(0,K.jsxs)(`div`,{className:`space-y-2`,children:[r.length===0&&(0,K.jsx)(Me,{text:e(`libreClaw.runs.empty`)}),r.map(t=>(0,K.jsxs)(`button`,{onClick:()=>F(t.run_id),className:p(`w-full rounded-xl border p-3 text-start transition`,P===t.run_id?`border-primary-300 bg-primary-50 dark:border-primary-700 dark:bg-primary-900/20`:`border-gray-200 bg-white hover:bg-gray-50 dark:border-dark-300 dark:bg-dark-50 dark:hover:bg-dark-100`),children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsx)(`span`,{className:`truncate text-sm font-medium text-gray-900 dark:text-dark-900`,children:t.title}),(0,K.jsx)(Ee,{state:t.state,t:e})]}),(0,K.jsxs)(`div`,{className:`mt-1 truncate text-xs text-gray-500 dark:text-dark-500`,children:[t.provider,`:`,t.model]}),(0,K.jsx)(`div`,{className:`mt-1 text-xs text-gray-400 dark:text-dark-500`,children:Ne(t.updated_at)})]},t.run_id))]})}),(0,K.jsxs)(J,{title:Z?Z.title:e(`libreClaw.timeline.title`),icon:(0,K.jsx)(v,{className:`h-4 w-4`}),actions:Z&&[`queued`,`running`,`blocked`].includes(Z.state)?(0,K.jsxs)(j,{variant:`danger`,size:`sm`,onClick:()=>Ve(Z.run_id),children:[(0,K.jsx)(g,{className:`h-4 w-4`}),e(`common.cancel`)]}):null,children:[Q.length>0&&(0,K.jsxs)(`div`,{className:`mb-4 space-y-2 rounded-xl border border-amber-200 bg-amber-500/10 p-3 dark:border-amber-800 dark:bg-amber-900/20`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-semibold text-ink`,children:[(0,K.jsx)(k,{className:`h-4 w-4 text-amber-500`}),e(`libreClaw.approvals.needed`)]}),Q.map(t=>(0,K.jsxs)(`div`,{className:`rounded-lg bg-white/70 p-3 dark:bg-dark-50/70`,children:[(0,K.jsx)(`div`,{className:`text-sm font-medium text-gray-900 dark:text-dark-900`,children:String(t.data.name||e(`libreClaw.fallbacks.tool`))}),(0,K.jsx)(`pre`,{className:`mt-2 max-h-36 overflow-auto rounded bg-gray-100 p-2 text-xs text-gray-700 dark:bg-dark-200 dark:text-dark-700`,children:JSON.stringify(t.data.arguments||{},null,2)}),(0,K.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:[(0,K.jsxs)(j,{size:`sm`,onClick:()=>He(t,`allow_once`),children:[(0,K.jsx)(_,{className:`h-4 w-4`}),e(`libreClaw.approvals.allowOnce`)]}),(0,K.jsx)(j,{size:`sm`,variant:`secondary`,onClick:()=>He(t,`always_allow_tool`),children:e(`libreClaw.approvals.alwaysAllowTool`)}),(0,K.jsxs)(j,{size:`sm`,variant:`danger`,onClick:()=>He(t,`deny`),children:[(0,K.jsx)(w,{className:`h-4 w-4`}),e(`libreClaw.approvals.deny`)]})]})]},t.event_id))]}),(0,K.jsxs)(`div`,{className:`space-y-3`,children:[a.length===0&&(0,K.jsx)(Me,{text:e(`libreClaw.timeline.empty`)}),Re.map(t=>(0,K.jsx)(Oe,{item:t,t:e},t.key))]})]})]}),(0,K.jsxs)(`section`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,K.jsx)(J,{title:e(`libreClaw.automations.title`),icon:(0,K.jsx)(T,{className:`h-4 w-4`}),children:(0,K.jsxs)(`div`,{className:`space-y-4`,children:[(0,K.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[(0,K.jsx)(`input`,{value:ke,onChange:e=>Ae(e.target.value),placeholder:e(`libreClaw.automations.namePlaceholder`),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`}),(0,K.jsx)(`input`,{value:je,onChange:e=>Y(e.target.value),placeholder:e(`libreClaw.automations.schedulePlaceholder`),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`}),(0,K.jsxs)(`select`,{value:Ie,onChange:e=>Le(e.target.value),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`,children:[(0,K.jsx)(`option`,{value:`report`,children:e(`libreClaw.automations.routes.report`)}),(0,K.jsx)(`option`,{value:`telegram`,children:e(`libreClaw.automations.routes.telegram`)})]}),(0,K.jsx)(j,{onClick:Ge,loading:le,children:e(`libreClaw.automations.create`)})]}),(0,K.jsx)(`textarea`,{value:X,onChange:e=>Fe(e.target.value),placeholder:e(`libreClaw.automations.promptPlaceholder`),className:`min-h-24 w-full rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`}),(0,K.jsxs)(`div`,{className:`space-y-2`,children:[s.length===0&&(0,K.jsx)(Me,{text:e(`libreClaw.automations.empty`)}),s.map(t=>(0,K.jsx)(`div`,{className:`rounded-xl border border-gray-200 bg-white p-3 dark:border-dark-300 dark:bg-dark-50`,children:(0,K.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,K.jsxs)(`div`,{className:`min-w-0`,children:[(0,K.jsx)(`div`,{className:`truncate text-sm font-medium text-gray-900 dark:text-dark-900`,children:t.name}),(0,K.jsxs)(`div`,{className:`mt-1 text-xs text-gray-500 dark:text-dark-500`,children:[t.schedule,` ·`,` `,e(`libreClaw.automations.routes.${t.route}`,{defaultValue:t.route}),` `,`·`,` `,e(`libreClaw.automations.status.${t.status}`,{defaultValue:t.status})]})]}),(0,K.jsxs)(`div`,{className:`flex shrink-0 gap-1`,children:[(0,K.jsx)(De,{title:e(`libreClaw.automations.runNow`),onClick:()=>Ke(t.automation_id,`run`),children:(0,K.jsx)(E,{className:`h-4 w-4`})}),(0,K.jsx)(De,{title:t.status===`paused`?e(`libreClaw.automations.resume`):e(`libreClaw.automations.pause`),onClick:()=>Ke(t.automation_id,t.status===`paused`?`resume`:`pause`),children:t.status===`paused`?(0,K.jsx)(E,{className:`h-4 w-4`}):(0,K.jsx)(S,{className:`h-4 w-4`})}),(0,K.jsx)(De,{title:e(`common.delete`),danger:!0,onClick:()=>Ke(t.automation_id,`delete`),children:(0,K.jsx)(te,{className:`h-4 w-4`})})]})]})},t.automation_id))]})]})}),(0,K.jsx)(J,{title:e(`libreClaw.usageFallback.title`),icon:(0,K.jsx)(O,{className:`h-4 w-4`}),children:(0,K.jsxs)(`div`,{className:`space-y-4`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h3`,{className:`mb-2 text-sm font-semibold text-gray-900 dark:text-dark-900`,children:e(`libreClaw.usageFallback.usage`)}),(0,K.jsx)(`pre`,{className:`max-h-52 overflow-auto rounded-xl bg-gray-100 p-3 text-xs text-gray-700 dark:bg-dark-200 dark:text-dark-700`,children:N||e(`libreClaw.usageFallback.noUsage`)})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h3`,{className:`mb-2 text-sm font-semibold text-gray-900 dark:text-dark-900`,children:e(`libreClaw.usageFallback.fallbackRoute`)}),(0,K.jsx)(`pre`,{className:`max-h-52 overflow-auto rounded-xl bg-gray-100 p-3 text-xs text-gray-700 dark:bg-dark-200 dark:text-dark-700`,children:JSON.stringify(f||{},null,2)})]})]})})]}),I&&(0,K.jsx)(`div`,{className:`fixed inset-0 z-40 flex items-center justify-center bg-white/60 backdrop-blur-sm dark:bg-dark-50/60`,children:(0,K.jsx)(h,{className:`h-7 w-7 animate-spin text-primary-600`})})]})},Te=({status:e,t})=>{let n=!!e?.connected;return(0,K.jsxs)(`span`,{className:p(`inline-flex items-center gap-2 rounded-full px-3 py-1.5 text-sm font-medium`,n?`bg-emerald-100 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-300`:`bg-amber-500/20 text-ink dark:bg-amber-900/30`),children:[(0,K.jsx)(`span`,{className:p(`h-2 w-2 rounded-full`,n?`bg-emerald-500`:`bg-amber-500`)}),t(n?`libreClaw.status.connected`:`libreClaw.status.disconnected`),e?.health?.active_runs!==void 0&&(0,K.jsxs)(`span`,{className:`opacity-70`,children:[`·`,` `,t(`libreClaw.status.activeRuns`,{count:e.health.active_runs})]})]})},Ee=({state:e,t})=>(0,K.jsx)(`span`,{className:p(`rounded-full px-2 py-0.5 text-[11px] font-semibold uppercase tracking-wide`,xe[e]||xe.queued),children:t(`libreClaw.states.${e}`,{defaultValue:e})}),J=({title:e,icon:t,actions:n,children:r})=>(0,K.jsxs)(`section`,{className:`rounded-2xl border border-gray-200/80 bg-white/60 dark:border-white/10 dark:bg-white/[0.03]`,children:[(0,K.jsxs)(`header`,{className:`flex items-center justify-between gap-3 border-b border-gray-200/70 px-5 py-4 dark:border-white/[0.08]`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-semibold text-gray-900 dark:text-dark-900`,children:[(0,K.jsx)(`span`,{className:`text-primary-600 dark:text-primary-300`,children:t}),e]}),n]}),(0,K.jsx)(`div`,{className:`p-5`,children:r})]}),De=({title:e,danger:t,onClick:n,children:r})=>(0,K.jsx)(`button`,{type:`button`,title:e,onClick:n,className:p(`inline-flex h-8 w-8 items-center justify-center rounded-lg transition-colors`,t?`text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20`:`text-gray-500 hover:bg-gray-100 dark:text-dark-500 dark:hover:bg-dark-200`),children:r}),Oe=({item:e,t})=>(0,K.jsxs)(`article`,{className:p(`rounded-xl border p-3 transition-colors`,e.eventType===`assistant_message`?`border-primary-200 bg-primary-50/60 dark:border-primary-900/60 dark:bg-primary-900/10`:(e.eventType,`border-gray-200/80 bg-white/50 dark:border-white/[0.08] dark:bg-white/[0.025]`)),children:[(0,K.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-3`,children:[(0,K.jsx)(`span`,{className:p(`text-xs font-semibold uppercase tracking-wide`,Se[e.eventType]||`text-gray-500 dark:text-dark-500`),children:e.label}),(0,K.jsxs)(`span`,{className:`shrink-0 text-xs text-gray-400 dark:text-dark-500`,children:[Le(e),` · `,Ne(e.timestamp)]})]}),(0,K.jsx)(ke,{item:e,t})]}),ke=({item:e,t})=>{if(e.kind===`assistant_message`)return(0,K.jsx)(`p`,{className:`whitespace-pre-wrap text-sm leading-6 text-gray-900 dark:text-dark-900`,children:Fe(e.events)||t(`libreClaw.timeline.streaming`)});let n=e.events[0];return n?n.type===`assistant_delta`?(0,K.jsx)(`p`,{className:`whitespace-pre-wrap text-sm text-gray-800 dark:text-dark-800`,children:String(n.data.text||``)}):n.type===`user_message`?(0,K.jsx)(`p`,{className:`whitespace-pre-wrap text-sm text-gray-800 dark:text-dark-800`,children:String(n.data.content||``)}):n.type===`tool_call`?(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`div`,{className:`text-sm font-medium text-gray-900 dark:text-dark-900`,children:String(n.data.name||t(`libreClaw.fallbacks.tool`))}),(0,K.jsx)(X,{value:n.data.arguments||{}})]}):n.type===`tool_result`?(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:`text-sm font-medium text-gray-900 dark:text-dark-900`,children:[String(n.data.name||t(`libreClaw.fallbacks.tool`)),` ·`,` `,n.data.is_error?t(`libreClaw.timeline.resultError`):t(`libreClaw.timeline.resultOk`)]}),(0,K.jsx)(`pre`,{className:`mt-2 max-h-56 overflow-auto whitespace-pre-wrap rounded-lg bg-gray-100 p-2 text-xs text-gray-700 dark:bg-dark-200 dark:text-dark-700`,children:String(n.data.content||``)})]}):n.type===`permission_request`?(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`div`,{className:`text-sm font-medium text-gray-900 dark:text-dark-900`,children:String(n.data.name||t(`libreClaw.approvals.toolApprovalRequested`))}),(0,K.jsx)(X,{value:n.data.arguments||{}})]}):n.type===`permission_response`?(0,K.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,K.jsx)(Y,{label:t(`libreClaw.metrics.tool`),value:String(n.data.name||n.data.tool_call_id||t(`libreClaw.fallbacks.tool`))}),(0,K.jsx)(Y,{label:t(`libreClaw.metrics.resolution`),value:String(n.data.resolution||t(`libreClaw.fallbacks.resolved`))})]}):n.type===`usage`?(0,K.jsx)(Ae,{data:n.data,t}):n.type===`run_finished`?(0,K.jsx)(je,{data:n.data,t}):n.type===`error`?(0,K.jsx)(`p`,{className:`text-sm text-red-700 dark:text-red-300`,children:String(n.data.message||t(`libreClaw.fallbacks.unknownError`))}):(0,K.jsx)(X,{value:n.data}):null},Ae=({data:e,t})=>(0,K.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,K.jsx)(Y,{label:t(`libreClaw.metrics.provider`),value:String(e.provider||t(`libreClaw.fallbacks.unknown`))}),(0,K.jsx)(Y,{label:t(`libreClaw.metrics.model`),value:String(e.model||t(`libreClaw.fallbacks.unknown`))}),(0,K.jsx)(Y,{label:t(`libreClaw.metrics.input`),value:t(`libreClaw.metrics.tokens`,{count:Z(e.input_tokens),formatted:Q(e.input_tokens)})}),(0,K.jsx)(Y,{label:t(`libreClaw.metrics.output`),value:t(`libreClaw.metrics.tokens`,{count:Z(e.output_tokens),formatted:Q(e.output_tokens)})}),Z(e.cached_tokens)>0&&(0,K.jsx)(Y,{label:t(`libreClaw.metrics.cached`),value:t(`libreClaw.metrics.tokens`,{count:Z(e.cached_tokens),formatted:Q(e.cached_tokens)})}),Z(e.reasoning_tokens)>0&&(0,K.jsx)(Y,{label:t(`libreClaw.metrics.reasoning`),value:t(`libreClaw.metrics.tokens`,{count:Z(e.reasoning_tokens),formatted:Q(e.reasoning_tokens)})}),(0,K.jsx)(Y,{label:t(`libreClaw.metrics.cost`),value:Re(e.cost)})]}),je=({data:e,t})=>(0,K.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,K.jsx)(Y,{label:t(`libreClaw.metrics.state`),value:t(`libreClaw.states.${String(e.state||`done`)}`,{defaultValue:String(e.state||`done`)})}),e.stop_reason!==void 0&&(0,K.jsx)(Y,{label:t(`libreClaw.metrics.stopReason`),value:String(e.stop_reason)})]}),Y=({label:e,value:t})=>(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 rounded-full border border-gray-200/80 bg-white/50 px-2.5 py-1 text-xs text-gray-700 dark:border-white/10 dark:bg-white/[0.035] dark:text-dark-700`,children:[(0,K.jsx)(`span`,{className:`font-semibold text-gray-500 dark:text-dark-500`,children:e}),(0,K.jsx)(`span`,{children:t})]}),X=({value:e})=>(0,K.jsx)(`pre`,{className:`mt-2 max-h-56 overflow-auto rounded-lg bg-gray-100 p-2 text-xs text-gray-700 dark:bg-dark-200 dark:text-dark-700`,children:JSON.stringify(e,null,2)}),Me=({text:e})=>(0,K.jsx)(`div`,{className:`rounded-xl border border-dashed border-gray-300 bg-white/30 px-4 py-8 text-center text-sm text-gray-500 dark:border-white/15 dark:bg-white/[0.02] dark:text-dark-500`,children:e}),Ne=e=>{if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()},Pe=(e,t)=>{let n=[],r=0;for(;r<e.length;){let i=e[r];if(!i)break;if(i.type===`assistant_delta`){let i=[];for(;e[r]?.type===`assistant_delta`;){let t=e[r];t&&i.push(t),r+=1}let a=i[0],o=i[i.length-1]||a;a&&o&&n.push({key:`assistant-${a.event_id}-${o.event_id}`,kind:`assistant_message`,eventType:`assistant_message`,label:t(`libreClaw.timeline.assistantResponse`),firstEventId:a.event_id,lastEventId:o.event_id,timestamp:a.timestamp,events:i});continue}n.push({key:`${i.type}-${i.event_id}`,kind:`event`,eventType:i.type,label:Ie(i.type,t),firstEventId:i.event_id,lastEventId:i.event_id,timestamp:i.timestamp,events:[i]}),r+=1}return n},Fe=e=>e.map(e=>String(e.data.text||``)).join(``),Ie=(e,t)=>({user_message:t(`libreClaw.timeline.labels.userMessage`),tool_call:t(`libreClaw.timeline.labels.toolCall`),tool_result:t(`libreClaw.timeline.labels.toolResult`),permission_request:t(`libreClaw.timeline.labels.approvalRequest`),permission_response:t(`libreClaw.timeline.labels.approvalResponse`),run_started:t(`libreClaw.timeline.labels.runStarted`),run_finished:t(`libreClaw.timeline.labels.runFinished`),usage:t(`libreClaw.timeline.labels.usage`),error:t(`libreClaw.timeline.labels.error`)})[e]||e.replace(/_/g,` `),Le=e=>e.firstEventId===e.lastEventId?`#${e.firstEventId}`:`#${e.firstEventId}-#${e.lastEventId}`,Z=e=>{let t=Number(e);return Number.isFinite(t)?t:0},Q=e=>new Intl.NumberFormat().format(Z(e)),Re=e=>{let t=Z(e);return t<=0?`$0.00`:t<.01?`$${t.toFixed(6)}`:`$${t.toFixed(4)}`};export{we as default};
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-vendor-wiHys0m2.js";import{t as r}from"./logger-BR4forr_.js";import{n as i}from"./i18next-DOICz7ZY.js";import{a,i as o,n as s,o as c,r as l,t as u}from"./useTranslation-B9kflK9S.js";import{f as d,m as f,t as p,u as m}from"./utils-p8Gt72YP.js";import{Lt as h,O as g,Qn as _,Rn as v,S as y,Tn as b,Z as x,ct as S,lr as C,n as w,on as ee,rr as T,rt as E,v as te,wr as D,xr as O,z as k}from"./ui-vendor-BhHHyHk3.js";import{x as A}from"./api-DPXCtanG.js";import{t as j}from"./Button-CGMYia4g.js";import{a as ne,o as M}from"./ui-D5-4niRk.js";var N={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,"!doctype":!0,"!DOCTYPE":!0},re=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?("[^"]*"|'[^']*')/g;function P(e){let t={type:`tag`,name:``,voidElement:!1,attrs:{},children:[]},n=e.match(/<\/?([^\s]+?)[/\s>]/);if(n&&(t.name=n[1],(N[n[1]]||e.charAt(e.length-2)===`/`)&&(t.voidElement=!0),t.name.startsWith(`!--`))){let t=e.indexOf(`-->`);return{type:`comment`,comment:t===-1?``:e.slice(4,t)}}let r=new RegExp(re),i=null;for(;i=r.exec(e),i!==null;)if(i[0].trim()){if(i[1]){let e=i[1].trim(),n=[e,null],a=e.indexOf(`=`);a>-1&&(n=[e.slice(0,a),e.slice(a+1)]),t.attrs[n[0]]=n[1],r.lastIndex--}else i[2]&&(t.attrs[i[2]]=i[3].trim().substring(1,i[3].length-1))}return t}var F=/<!--[\s\S]*?-->|<[a-zA-Z0-9\-!/](?:"[^"]*"|'[^']*'|[^'">])*>/g,I=/<\/?([^\s]+?)[/\s>]/,ie=/^\s*$/,ae=/^(script|style)$/i,L=`\0`,oe=Object.create(null);function R(e){e.forEach(function(e){if(e.type===`text`){e.content=e.content.split(L).join(`<`);return}if(e.type===`comment`){e.comment=e.comment.split(L).join(`<`);return}for(let t in e.attrs){let n=e.attrs[t];typeof n==`string`&&n.indexOf(L)>-1&&(e.attrs[t]=n.split(L).join(`<`))}e.children.length&&R(e.children)})}function se(e,t){let n=t&&t.components||oe,r=t&&t.allowedTags,i=!1;if(r){let t=typeof r==`function`?r:function(e){return r.indexOf(e)>-1},n=``,a=0;F.lastIndex=0;let o;for(;o=F.exec(e);){let r=o[0];n+=e.slice(a,o.index);let s=r.match(I);r.startsWith(`<!--`)||s&&t(s[1])?(n+=r,a=o.index+r.length):(i=!0,n+=L,a=o.index+1,F.lastIndex=a)}e=n+e.slice(a)}let a=[],o=[],s,c=-1,l=!1,u=0,d;if(e.indexOf(`<`)!==0){let t=e.indexOf(`<`);a.push({type:`text`,content:t===-1?e:e.substring(0,t)})}let f=[],p;for(;p=F.exec(e);)f.push(p);return f.forEach(function(e,t){let n=e[0];if(!n||n.startsWith(`<!--`))return;let r=0,i=0,a=-1,o=null;for(let e=0;e<n.length;e++){let t=n.charAt(e);o?t===o&&(o=null):t===`"`||t===`'`?o=t:t===`<`?(r++,r===2&&(a=e)):t===`>`&&i++}let s=a>-1&&/[a-zA-Z0-9\-!/]/.test(n.charAt(a+1));if(r>i&&s){let e=n.substring(0,a),r=n.substring(e.length);f[t][0]=r,f[t].index+=e.length}}),f.forEach(function(t,r){let i=t[0];if(!i)return;let p=t.index;if(p<u)return;if(l){if(i!==`</`+s.name+`>`)return;l=!1}let m=i.charAt(1)!==`/`,h=i.startsWith(`<!--`),g=p+i.length,_=e.charAt(g),v=f[r+1],y;if(_===`<`&&v){let t=e.substring(g,v.index);y=t.split(`<`).length>t.split(`>`).length}let b;if(h){let t=P(i);if(c<0)return a.push(t),a;b=o[c],b.children.push(t);let n=e.slice(g,v?v.index:void 0);return n.length>0&&b.children.push({type:`text`,content:n}),a}if(m){c++,s=P(i),s.type===`tag`&&n[s.name]&&(s.type=`component`,l=!0);let t=!1;if(!l&&!s.voidElement&&ae.test(s.name)){t=!0,d||=e.toLowerCase();let n=d.indexOf(`</`+s.name.toLowerCase()+`>`,g),r=n===-1?e.length:n,i=e.slice(g,r);i&&s.children.push({type:`text`,content:i}),u=r}!s.voidElement&&!l&&!t&&_&&_!==`<`&&s.children.push({type:`text`,content:e.slice(g,v?v.index:void 0)}),c===0&&a.push(s),b=o[c-1],b&&b.children.push(s),o[c]=s}if((!m||s.voidElement)&&(c>-1&&(s.voidElement||s.name===i.slice(2,-1))&&(c--,s=c===-1?a:o[c]),!l&&(_!==`<`||y)&&_)){b=c===-1?a:o[c].children;let t=v?v.index:-1,n=e.slice(g,t===-1?void 0:t);ie.test(n)&&(n=` `),(t>-1&&c+b.length>=0||n!==` `)&&b.push({type:`text`,content:n})}}),i&&R(a),a}function ce(e){let t=[];for(let n in e)e[n]===null?t.push(n):t.push(n+`="`+String(e[n]).replace(/"/g,`"`)+`"`);return t.length?` `+t.join(` `):``}function le(e,t){switch(t.type){case`text`:return e+t.content;case`tag`:{let n=t.voidElement&&t.name.toLowerCase()!==`!doctype`?`/>`:`>`;return e+=`<`+t.name+(t.attrs?ce(t.attrs):``)+n,t.voidElement?e:e+t.children.reduce(le,``)+`</`+t.name+`>`}case`comment`:return e+=`<!--`+t.comment+`-->`,e}}function ue(e){return e.reduce(function(e,t){return e+le(``,t)},``)}var z={parse:se,stringify:ue},B=e(t()),V=(e,t)=>{if(!e)return!1;let n=e.props?.children??e.children;return t?n.length>0:!!n},H=e=>{if(!e)return[];let t=e.props?.children??e.children;return e.props?.i18nIsDynamicList?U(t):t},de=e=>Array.isArray(e)&&e.every(B.isValidElement),U=e=>Array.isArray(e)?e:[e],fe=(e,t)=>{let n={...t};return n.props={...t.props,...e.props},n},pe=e=>{let t={};if(!e)return t;let n=e=>{U(e).forEach(e=>{o(e)||(V(e)?n(H(e)):l(e)&&!(0,B.isValidElement)(e)&&Object.assign(t,e))})};return n(e),t},W=(e,t,n,r)=>{if(!e)return``;let i=``,s=U(e),c=t?.transSupportBasicHtmlNodes?t.transKeepBasicHtmlNodesFor??[]:[];return s.forEach((e,s)=>{if(o(e)){i+=`${e}`;return}if((0,B.isValidElement)(e)){let{props:a,type:l}=e,u=Object.keys(a).length,d=c.indexOf(l)>-1,f=a.children;if(!f&&d&&!u){i+=`<${l}/>`;return}if(!f&&(!d||u)||a.i18nIsDynamicList){i+=`<${s}></${s}>`;return}if(d&&u<=1){let e=o(f)?f:W(f,t,n,r);i+=`<${l}>${e}</${l}>`;return}let p=W(f,t,n,r);i+=`<${s}>${p}</${s}>`;return}if(e===null){a(n,`TRANS_NULL_VALUE`,`Passed in a null value as child`,{i18nKey:r});return}if(l(e)){let{format:t,...o}=e,s=Object.keys(o);if(s.length===1){let e=t?`${s[0]}, ${t}`:s[0];i+=`{{${e}}}`;return}a(n,`TRANS_INVALID_OBJ`,`Invalid child - Object should only have keys {{ value, format }} (format is optional).`,{i18nKey:r,child:e});return}a(n,`TRANS_INVALID_VAR`,`Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.`,{i18nKey:r,child:e})}),i},G=(e,t,n,r,i,a,s)=>{if(n===``)return[];let c=i.transKeepBasicHtmlNodesFor||[],u=n&&new RegExp(c.map(e=>`<${e}`).join(`|`)).test(n);if(!e&&!t&&!u&&!s)return[n];let p=t??{},m=e=>{U(e).forEach(e=>{o(e)||(V(e)?m(H(e)):l(e)&&!(0,B.isValidElement)(e)&&Object.assign(p,e))})};m(e);let h=Object.keys(p),g=z.parse(`<0>${n}</0>`,{allowedTags:e=>/^\d+$/.test(e)||c.indexOf(e)>-1||h.indexOf(e)>-1}),_={...p,...a},v=(e,t,n)=>{let r=H(e),i=b(r,t.children,n);return de(r)&&i.length===0||e.props?.i18nIsDynamicList?r:i},y=(e,t,n,r,i)=>{e.dummy?(e.children=t,n.push((0,B.cloneElement)(e,{key:r},i?void 0:t))):n.push(...B.Children.map([e],e=>{if(e.type===B.Fragment||e.props?.i18nIsDynamicList!==void 0){let n={key:r};return e&&e.props&&Object.keys(e.props).forEach(t=>{t!==`children`&&t!==`i18nIsDynamicList`&&(n[t]=e.props[t])}),(0,B.createElement)(e.type,n,i?null:t)}let n={key:r};return e&&e.props&&Object.keys(e.props).forEach(t=>{t!==`ref`&&t!==`children`&&(n[t]=e.props[t])}),(0,B.cloneElement)(e,n,i?null:t)}))},b=(e,n,a)=>{let p=U(e),m=U(n),h={};return m.reduce((e,n,m)=>{let g=n.children?.[0]?.content&&r.services.interpolator.interpolate(n.children[0].content,_,r.language);if(n.type===`tag`){let d=p[parseInt(n.name,10)];!d&&t&&(d=t[n.name]),a.length===1&&!d&&(d=a[0][n.name]),d||={};let x={...n.attrs};s&&Object.keys(x).forEach(e=>{let t=x[e];o(t)&&(x[e]=f(t))});let S=Object.keys(x).length===0?d:fe({props:x},d),C=(0,B.isValidElement)(S),w=C&&V(n,!0)&&!n.voidElement,ee=u&&l(S)&&S.dummy&&!C,T=l(t)&&Object.hasOwnProperty.call(t,n.name);if(o(S)){let t=r.services.interpolator.interpolate(S,_,r.language);e.push(t)}else if(V(S)||w){let t=v(S,n,a);y(S,t,e,m)}else if(ee){let t=b(p,n.children,a);y(S,t,e,m)}else if(Number.isNaN(parseFloat(n.name))){if(T){let t=v(S,n,a);y(S,t,e,m,n.voidElement)}else if(i.transSupportBasicHtmlNodes&&c.indexOf(n.name)>-1){if(n.voidElement)e.push((0,B.createElement)(n.name,{key:`${n.name}-${m}`}));else{let t=h[n.name]||0;h[n.name]=t+1;let r,i=0;for(let e=0;e<p.length;e+=1){let a=p[e];if((0,B.isValidElement)(a)&&a.type===n.name){if(i===t){r=a;break}i+=1}}let o=r?U(H(r)):p,s=b(o,n.children,a);e.push((0,B.createElement)(n.name,{key:`${n.name}-${m}`},s))}}else if(n.voidElement)e.push(`<${n.name} />`);else{let t=b(p,n.children,a);e.push(`<${n.name}>${t}</${n.name}>`)}}else if(l(S)&&!C){let t=n.children[0]?g:null;t&&e.push(t)}else y(S,g,e,m,n.children.length!==1||!g)}else if(n.type===`text`){let t=i.transWrapTextNodes,a=typeof i.unescape==`function`?i.unescape:d().unescape,o=s?a(r.services.interpolator.interpolate(n.content,_,r.language)):r.services.interpolator.interpolate(n.content,_,r.language);t?e.push((0,B.createElement)(t,{key:`${n.name}-${m}`},o)):e.push(o)}return e},[])};return H(b([{dummy:!0,children:e||[]}],g,U(e||[]))[0])},me=(e,t,n)=>{let r=e.key||t,i=(0,B.cloneElement)(e,{key:r});if(!i.props||!i.props.children||n.indexOf(`${t}/>`)<0&&n.indexOf(`${t} />`)<0)return i;function a(){return(0,B.createElement)(B.Fragment,null,i)}return(0,B.createElement)(a,{key:r})},he=(e,t)=>e.map((e,n)=>me(e,n,t)),ge=(e,t)=>{let n={};return Object.keys(e).forEach(r=>{Object.assign(n,{[r]:me(e[r],r,t)})}),n},_e=(e,t,n,r)=>e?Array.isArray(e)?he(e,t):l(e)?ge(e,t):(c(n,`TRANS_INVALID_COMPONENTS`,`<Trans /> "components" prop expects an object or array`,{i18nKey:r}),null):null,ve=e=>!l(e)||Array.isArray(e)?!1:Object.keys(e).reduce((e,t)=>e&&Number.isNaN(Number.parseFloat(t)),!0);function ye({children:e,count:t,parent:n,i18nKey:r,context:a,tOptions:s={},values:l,defaults:u,components:f,ns:p,i18n:h,t:g,shouldUnescape:_,...v}){let y=h||m();if(!y)return c(y,`NO_I18NEXT_INSTANCE`,`Trans: You need to pass in an i18next instance using initReactI18next or by passing it via props or context. In monorepo setups, make sure there is only one instance of react-i18next.`,{i18nKey:r}),e;let b=g||y.t.bind(y)||(e=>e),x={...d(),...y.options?.react},S=p||b.ns||y.options?.defaultNS;S=o(S)?[S]:S||[`translation`];let{transDefaultProps:C}=x,w=C?.tOptions?{...C.tOptions,...s}:s,ee=_??C?.shouldUnescape,T=C?.values?{...C.values,...l}:l,E=C?.components?{...C.components,...f}:f,te=W(e,x,y,r),D=u||w?.defaultValue||te||x.transEmptyNodeValue||(typeof r==`function`?i(r):r),{hashTransKey:O}=x,k=r||(O?O(te||D):te||D);l=y.options?.interpolation?.defaultVariables?T&&Object.keys(T).length>0?{...T,...y.options.interpolation.defaultVariables}:{...y.options.interpolation.defaultVariables}:T;let A=pe(e);A&&typeof A.count==`number`&&t===void 0&&(t=A.count);let j=l||t!==void 0&&!y.options?.interpolation?.alwaysFormat||!e?w.interpolation:{interpolation:{...w.interpolation,prefix:`#$?`,suffix:`?$#`}},ne={...w,context:a||w.context,count:t,...l,...j,defaultValue:D,ns:S},M=k?b(k,ne):D;M===k&&D&&(M=D);let N=_e(E,M,y,r),re=N||e,P=null;ve(N)&&(P=N,re=e);let F=G(re,P,M,y,x,ne,ee),I=n??x.defaultTransParent;return I?(0,B.createElement)(I,v,F):F}function be({children:e,count:t,parent:n,i18nKey:r,context:i,tOptions:a={},values:o,defaults:c,components:l,ns:u,i18n:d,t:f,shouldUnescape:p,...h}){let{i18n:g,defaultNS:_}=(0,B.useContext)(s)||{},v=d||g||m(),y=f||v?.t.bind(v);return ye({children:e,count:t,parent:n,i18nKey:r,context:i,tOptions:a,values:o,defaults:c,components:l,ns:u||y?.ns||_||v?.options?.defaultNS,i18n:v,t:f,shouldUnescape:p,...h})}var K=n(),q=r(`pages:libre-claw`),xe={queued:`bg-gray-100 text-gray-700 dark:bg-dark-200 dark:text-dark-700`,running:`bg-primary-100 text-primary-700 dark:bg-primary-900/25 dark:text-primary-300`,blocked:`bg-amber-500/20 text-ink dark:bg-amber-900/30`,done:`bg-emerald-100 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-300`,failed:`bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-300`,cancelled:`bg-slate-100 text-slate-700 dark:bg-slate-800 dark:text-slate-300`},Se={assistant_message:`text-primary-600 dark:text-primary-300`,assistant_delta:`text-primary-600 dark:text-primary-300`,user_message:`text-gray-700 dark:text-dark-700`,permission_request:`text-ink`,permission_response:`text-gray-600 dark:text-dark-600`,tool_call:`text-gray-600 dark:text-dark-600`,tool_result:`text-gray-600 dark:text-dark-600`,usage:`text-gray-600 dark:text-dark-600`,error:`text-red-600 dark:text-red-300`,run_finished:`text-emerald-600 dark:text-emerald-300`},Ce=[[`lobster`,`Lobster`],[`lobster-light`,`Lobster Light`],[`github-dark`,`GitHub Dark`],[`github-light`,`GitHub Light`],[`monokai-pro`,`Monokai Pro`],[`night-owl`,`Night Owl`],[`tokyo-night`,`Tokyo Night`],[`ayu`,`Ayu`],[`dracula`,`Dracula`],[`catppuccin-mocha`,`Catppuccin Mocha`],[`catppuccin-latte`,`Catppuccin Latte`],[`gruvbox-dark`,`Gruvbox Dark`],[`nord`,`Nord`],[`solarized-dark`,`Solarized Dark`],[`solarized-light`,`Solarized Light`],[`one-dark-pro`,`One Dark Pro`],[`rose-pine`,`Rose Pine`],[`kanagawa`,`Kanagawa`],[`matrix`,`Matrix`]],we=()=>{let{t:e}=u(),[t,n]=(0,B.useState)(null),[r,i]=(0,B.useState)([]),[a,o]=(0,B.useState)([]),[s,c]=(0,B.useState)([]),[l,d]=(0,B.useState)(null),[f,m]=(0,B.useState)(null),[N,re]=(0,B.useState)(``),[P,F]=(0,B.useState)(null),[I,ie]=(0,B.useState)(!0),[ae,L]=(0,B.useState)(!1),[oe,R]=(0,B.useState)(!1),[se,ce]=(0,B.useState)(!1),[le,ue]=(0,B.useState)(!1),[z,V]=(0,B.useState)(``),[H,de]=(0,B.useState)(`chat`),[U,fe]=(0,B.useState)(``),[pe,W]=(0,B.useState)(``),[G,me]=(0,B.useState)(``),[he,ge]=(0,B.useState)(``),[_e,ve]=(0,B.useState)(!1),[ye,xe]=(0,B.useState)(`lobster`),[Se,we]=(0,B.useState)(!0),[ke,Ae]=(0,B.useState)(``),[je,Y]=(0,B.useState)(``),[X,Fe]=(0,B.useState)(``),[Ie,Le]=(0,B.useState)(`report`),Z=(0,B.useMemo)(()=>r.find(e=>e.run_id===P)||null,[r,P]),Q=(0,B.useMemo)(()=>{let e=new Set(a.filter(e=>e.type===`permission_response`).map(e=>String(e.data.tool_call_id||``)));return a.filter(t=>{if(t.type!==`permission_request`)return!1;let n=String(t.data.tool_call_id||``);return n&&!e.has(n)})},[a]),Re=(0,B.useMemo)(()=>Pe(a,e),[a,e]),$=(0,B.useCallback)(async()=>{try{let[e,t,r,a,o,s]=await Promise.all([A.status(),A.listRuns(30),A.currentModel(),A.currentFallback(),A.usage(``,100),A.listAutomations(50)]);e.success&&e.data&&n(e.data),t.success&&t.data&&(i(t.data.runs),F(e=>e||t.data?.runs[0]?.run_id||null)),r.success&&r.data&&(d(r.data),me(String(r.data.provider||``)),ge(String(r.data.model||``))),a.success&&a.data&&m(a.data),o.success&&o.data&&re(String(o.data.text||``)),s.success&&s.data&&c(s.data.automations)}catch(t){q.error(`Failed to load Libre Claw overview:`,t),D.error(e(`libreClaw.toasts.loadStatusFailed`))}finally{ie(!1)}},[e]),ze=(0,B.useCallback)(async(e,t=!1)=>{let n=t?0:a.length>0&&a[a.length-1]?.event_id||0;try{let r=await A.getEvents(e,n);r.success&&r.data&&o(e=>t?r.data?.events||[]:[...e,...r.data?.events||[]])}catch(e){q.error(`Failed to load Libre Claw events:`,e)}},[a]);(0,B.useEffect)(()=>{let e=window.setTimeout(()=>{$()},0);return()=>window.clearTimeout(e)},[$]),(0,B.useEffect)(()=>{if(!P){let e=window.setTimeout(()=>{o([])},0);return()=>window.clearTimeout(e)}let e=P;A.getEvents(e,0).then(e=>{e.success&&e.data&&o(e.data.events)}).catch(e=>{q.error(`Failed to load Libre Claw events:`,e)})},[P]),(0,B.useEffect)(()=>{if(!P||!Z||![`queued`,`running`,`blocked`].includes(Z.state))return;let e=window.setInterval(()=>{ze(P),A.listRuns(30).then(e=>{e.success&&e.data&&i(e.data.runs)})},1500);return()=>window.clearInterval(e)},[ze,Z,P]);let Be=async()=>{if(!z.trim()){D.error(e(`libreClaw.toasts.enterTask`));return}L(!0);try{let t=await A.startRun({message:z,kind:H,provider:U||void 0,model:pe||void 0});if(t.success&&t.data){let n=t.data.run;i(e=>[n,...e.filter(e=>e.run_id!==n.run_id)]),F(n.run_id),V(``),D.success(e(`libreClaw.toasts.runStarted`))}else D.error(t.error||e(`libreClaw.toasts.startRunFailed`))}catch(t){q.error(`Failed to start Libre Claw run:`,t),D.error(e(`libreClaw.toasts.startRunFailed`))}finally{L(!1)}},Ve=async t=>{try{await A.cancelRun(t),await $(),D.success(e(`libreClaw.toasts.runCancelled`))}catch(t){q.error(`Failed to cancel Libre Claw run:`,t),D.error(e(`libreClaw.toasts.cancelRunFailed`))}},He=async(t,n)=>{if(!P)return;let r=String(t.data.tool_call_id||``);if(r)try{await A.resolvePermission(P,r,n),await ze(P,!0),D.success(e(n===`deny`?`libreClaw.toasts.denied`:`libreClaw.toasts.approved`))}catch(t){q.error(`Failed to resolve Libre Claw permission:`,t),D.error(e(`libreClaw.toasts.resolvePermissionFailed`))}},Ue=async()=>{if(!G.trim()||!he.trim()){D.error(e(`libreClaw.toasts.providerModelRequired`));return}R(!0);try{let t=await A.updateModel(G,he,_e);t.success&&t.data?(d(t.data),D.success(e(`libreClaw.toasts.modelUpdated`))):D.error(t.error||e(`libreClaw.toasts.updateModelFailed`))}catch(t){q.error(`Failed to update Libre Claw model:`,t),D.error(e(`libreClaw.toasts.updateModelFailed`))}finally{R(!1)}},We=async()=>{ce(!0);try{let t=await A.updateTheme(ye,Se);t.success?D.success(e(`libreClaw.toasts.themeUpdated`)):D.error(t.error||e(`libreClaw.toasts.updateThemeFailed`))}catch(t){q.error(`Failed to update Libre Claw theme:`,t),D.error(e(`libreClaw.toasts.updateThemeFailed`))}finally{ce(!1)}},Ge=async()=>{if(!ke.trim()||!je.trim()||!X.trim()){D.error(e(`libreClaw.toasts.automationRequired`));return}ue(!0);try{let t=await A.createAutomation({name:ke,schedule:je,prompt:X,route:Ie});t.success?(Ae(``),Y(``),Fe(``),await $(),D.success(e(`libreClaw.toasts.automationCreated`))):D.error(t.error||e(`libreClaw.toasts.createAutomationFailed`))}catch(t){q.error(`Failed to create Libre Claw automation:`,t),D.error(e(`libreClaw.toasts.createAutomationFailed`))}finally{ue(!1)}},Ke=async(t,n)=>{try{n===`pause`&&await A.pauseAutomation(t),n===`resume`&&await A.resumeAutomation(t),n===`run`&&await A.runAutomationNow(t),n===`delete`&&await A.deleteAutomation(t),await $(),D.success(e(`libreClaw.toasts.automationUpdated`))}catch(t){q.error(`Failed to update Libre Claw automation:`,t),D.error(e(`libreClaw.toasts.updateAutomationFailed`))}};return(0,K.jsxs)(M,{width:`wide`,contentClassName:`space-y-6`,children:[(0,K.jsx)(ne,{className:`mb-0`,title:e(`libreClaw.title`),description:e(`libreClaw.subtitle`),actions:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Te,{status:t,t:e}),(0,K.jsxs)(j,{variant:`secondary`,size:`sm`,onClick:$,children:[(0,K.jsx)(x,{className:`h-4 w-4`}),e(`common.refresh`)]}),(0,K.jsxs)(`a`,{href:t?.dashboardUrl||`http://127.0.0.1:8766/dashboard`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex min-h-9 items-center gap-1.5 rounded-xl border border-gray-200/80 bg-white/70 px-3 py-1.5 text-sm font-medium text-gray-700 transition-colors hover:bg-white dark:border-white/10 dark:bg-white/[0.04] dark:text-dark-700 dark:hover:bg-white/[0.08]`,children:[(0,K.jsx)(b,{className:`h-4 w-4`}),e(`libreClaw.dashboard`)]})]})}),!t?.connected&&!I&&(0,K.jsx)(`section`,{className:`rounded-xl border border-amber-200 bg-amber-500/10 p-4 text-ink dark:border-amber-800 dark:bg-amber-900/20`,children:(0,K.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,K.jsx)(y,{className:`mt-0.5 h-5 w-5 shrink-0 text-amber-500`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h2`,{className:`font-semibold`,children:e(`libreClaw.connection.disconnectedTitle`)}),(0,K.jsx)(`p`,{className:`mt-1 text-sm opacity-90`,children:(0,K.jsx)(be,{i18nKey:`libreClaw.connection.disconnectedDescription`,components:{command:(0,K.jsx)(`code`,{}),env:(0,K.jsx)(`code`,{})}})}),t?.error&&(0,K.jsx)(`p`,{className:`mt-2 text-xs opacity-80`,children:t.error})]})]})}),(0,K.jsxs)(`section`,{className:`grid gap-4 lg:grid-cols-[minmax(0,1fr)_360px]`,children:[(0,K.jsx)(J,{title:e(`libreClaw.startRun.title`),icon:(0,K.jsx)(E,{className:`h-4 w-4`}),children:(0,K.jsxs)(`div`,{className:`space-y-3`,children:[(0,K.jsx)(`textarea`,{value:z,onChange:e=>V(e.target.value),placeholder:e(`libreClaw.startRun.placeholder`),className:`min-h-32 w-full rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm text-gray-900 outline-none transition focus:border-primary-400 focus:ring-2 focus:ring-primary-100 dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800 dark:focus:border-primary-500 dark:focus:ring-primary-900/30`}),(0,K.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-4`,children:[(0,K.jsxs)(`select`,{value:H,onChange:e=>de(e.target.value),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`,children:[(0,K.jsx)(`option`,{value:`chat`,children:e(`libreClaw.startRun.chatRun`)}),(0,K.jsx)(`option`,{value:`goal`,children:e(`libreClaw.startRun.goalMode`)})]}),(0,K.jsx)(`input`,{value:U,onChange:e=>fe(e.target.value),placeholder:e(`libreClaw.startRun.providerOverride`),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`}),(0,K.jsx)(`input`,{value:pe,onChange:e=>W(e.target.value),placeholder:e(`libreClaw.startRun.modelOverride`),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`}),(0,K.jsxs)(j,{onClick:Be,loading:ae,children:[(0,K.jsx)(C,{className:`h-4 w-4`}),e(`libreClaw.startRun.run`)]})]})]})}),(0,K.jsx)(J,{title:e(`libreClaw.modelRoute.title`),icon:(0,K.jsx)(ee,{className:`h-4 w-4`}),children:(0,K.jsxs)(`div`,{className:`space-y-3`,children:[(0,K.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2 lg:grid-cols-1`,children:[(0,K.jsx)(`input`,{value:G,onChange:e=>me(e.target.value),placeholder:e(`libreClaw.modelRoute.providerPlaceholder`),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`}),(0,K.jsx)(`input`,{value:he,onChange:e=>ge(e.target.value),placeholder:e(`libreClaw.modelRoute.modelPlaceholder`),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`})]}),(0,K.jsxs)(`label`,{className:`flex items-center gap-2 text-sm text-gray-600 dark:text-dark-600`,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:_e,onChange:e=>ve(e.target.checked),className:`h-4 w-4 rounded border-gray-300 text-primary-600 focus:ring-primary-500`}),e(`libreClaw.modelRoute.persistGlobal`)]}),(0,K.jsx)(j,{variant:`secondary`,onClick:Ue,loading:oe,children:e(`libreClaw.modelRoute.saveModel`)}),(0,K.jsxs)(`div`,{className:`border-t border-gray-100 pt-3 dark:border-dark-200`,children:[(0,K.jsx)(`label`,{className:`mb-1 block text-xs font-semibold uppercase tracking-wide text-gray-500 dark:text-dark-500`,children:e(`libreClaw.modelRoute.theme`)}),(0,K.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto] lg:grid-cols-1`,children:[(0,K.jsx)(`select`,{value:ye,onChange:e=>xe(e.target.value),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`,children:Ce.map(([e,t])=>(0,K.jsx)(`option`,{value:e,children:t},e))}),(0,K.jsx)(j,{variant:`secondary`,onClick:We,loading:se,children:e(`libreClaw.modelRoute.saveTheme`)})]}),(0,K.jsxs)(`label`,{className:`mt-2 flex items-center gap-2 text-sm text-gray-600 dark:text-dark-600`,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:Se,onChange:e=>we(e.target.checked),className:`h-4 w-4 rounded border-gray-300 text-primary-600 focus:ring-primary-500`}),e(`libreClaw.modelRoute.persistGlobal`)]})]}),l&&(0,K.jsx)(`pre`,{className:`max-h-32 overflow-auto rounded-lg bg-gray-100 p-2 text-xs text-gray-700 dark:bg-dark-200 dark:text-dark-700`,children:JSON.stringify(l,null,2)})]})})]}),(0,K.jsxs)(`section`,{className:`grid gap-4 xl:grid-cols-[360px_minmax(0,1fr)]`,children:[(0,K.jsx)(J,{title:e(`libreClaw.runs.title`),icon:(0,K.jsx)(O,{className:`h-4 w-4`}),children:(0,K.jsxs)(`div`,{className:`space-y-2`,children:[r.length===0&&(0,K.jsx)(Me,{text:e(`libreClaw.runs.empty`)}),r.map(t=>(0,K.jsxs)(`button`,{onClick:()=>F(t.run_id),className:p(`w-full rounded-xl border p-3 text-start transition`,P===t.run_id?`border-primary-300 bg-primary-50 dark:border-primary-700 dark:bg-primary-900/20`:`border-gray-200 bg-white hover:bg-gray-50 dark:border-dark-300 dark:bg-dark-50 dark:hover:bg-dark-100`),children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsx)(`span`,{className:`truncate text-sm font-medium text-gray-900 dark:text-dark-900`,children:t.title}),(0,K.jsx)(Ee,{state:t.state,t:e})]}),(0,K.jsxs)(`div`,{className:`mt-1 truncate text-xs text-gray-500 dark:text-dark-500`,children:[t.provider,`:`,t.model]}),(0,K.jsx)(`div`,{className:`mt-1 text-xs text-gray-400 dark:text-dark-500`,children:Ne(t.updated_at)})]},t.run_id))]})}),(0,K.jsxs)(J,{title:Z?Z.title:e(`libreClaw.timeline.title`),icon:(0,K.jsx)(v,{className:`h-4 w-4`}),actions:Z&&[`queued`,`running`,`blocked`].includes(Z.state)?(0,K.jsxs)(j,{variant:`danger`,size:`sm`,onClick:()=>Ve(Z.run_id),children:[(0,K.jsx)(g,{className:`h-4 w-4`}),e(`common.cancel`)]}):null,children:[Q.length>0&&(0,K.jsxs)(`div`,{className:`mb-4 space-y-2 rounded-xl border border-amber-200 bg-amber-500/10 p-3 dark:border-amber-800 dark:bg-amber-900/20`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-semibold text-ink`,children:[(0,K.jsx)(k,{className:`h-4 w-4 text-amber-500`}),e(`libreClaw.approvals.needed`)]}),Q.map(t=>(0,K.jsxs)(`div`,{className:`rounded-lg bg-white/70 p-3 dark:bg-dark-50/70`,children:[(0,K.jsx)(`div`,{className:`text-sm font-medium text-gray-900 dark:text-dark-900`,children:String(t.data.name||e(`libreClaw.fallbacks.tool`))}),(0,K.jsx)(`pre`,{className:`mt-2 max-h-36 overflow-auto rounded bg-gray-100 p-2 text-xs text-gray-700 dark:bg-dark-200 dark:text-dark-700`,children:JSON.stringify(t.data.arguments||{},null,2)}),(0,K.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:[(0,K.jsxs)(j,{size:`sm`,onClick:()=>He(t,`allow_once`),children:[(0,K.jsx)(_,{className:`h-4 w-4`}),e(`libreClaw.approvals.allowOnce`)]}),(0,K.jsx)(j,{size:`sm`,variant:`secondary`,onClick:()=>He(t,`always_allow_tool`),children:e(`libreClaw.approvals.alwaysAllowTool`)}),(0,K.jsxs)(j,{size:`sm`,variant:`danger`,onClick:()=>He(t,`deny`),children:[(0,K.jsx)(w,{className:`h-4 w-4`}),e(`libreClaw.approvals.deny`)]})]})]},t.event_id))]}),(0,K.jsxs)(`div`,{className:`space-y-3`,children:[a.length===0&&(0,K.jsx)(Me,{text:e(`libreClaw.timeline.empty`)}),Re.map(t=>(0,K.jsx)(Oe,{item:t,t:e},t.key))]})]})]}),(0,K.jsxs)(`section`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,K.jsx)(J,{title:e(`libreClaw.automations.title`),icon:(0,K.jsx)(T,{className:`h-4 w-4`}),children:(0,K.jsxs)(`div`,{className:`space-y-4`,children:[(0,K.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[(0,K.jsx)(`input`,{value:ke,onChange:e=>Ae(e.target.value),placeholder:e(`libreClaw.automations.namePlaceholder`),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`}),(0,K.jsx)(`input`,{value:je,onChange:e=>Y(e.target.value),placeholder:e(`libreClaw.automations.schedulePlaceholder`),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`}),(0,K.jsxs)(`select`,{value:Ie,onChange:e=>Le(e.target.value),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`,children:[(0,K.jsx)(`option`,{value:`report`,children:e(`libreClaw.automations.routes.report`)}),(0,K.jsx)(`option`,{value:`telegram`,children:e(`libreClaw.automations.routes.telegram`)})]}),(0,K.jsx)(j,{onClick:Ge,loading:le,children:e(`libreClaw.automations.create`)})]}),(0,K.jsx)(`textarea`,{value:X,onChange:e=>Fe(e.target.value),placeholder:e(`libreClaw.automations.promptPlaceholder`),className:`min-h-24 w-full rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`}),(0,K.jsxs)(`div`,{className:`space-y-2`,children:[s.length===0&&(0,K.jsx)(Me,{text:e(`libreClaw.automations.empty`)}),s.map(t=>(0,K.jsx)(`div`,{className:`rounded-xl border border-gray-200 bg-white p-3 dark:border-dark-300 dark:bg-dark-50`,children:(0,K.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,K.jsxs)(`div`,{className:`min-w-0`,children:[(0,K.jsx)(`div`,{className:`truncate text-sm font-medium text-gray-900 dark:text-dark-900`,children:t.name}),(0,K.jsxs)(`div`,{className:`mt-1 text-xs text-gray-500 dark:text-dark-500`,children:[t.schedule,` ·`,` `,e(`libreClaw.automations.routes.${t.route}`,{defaultValue:t.route}),` `,`·`,` `,e(`libreClaw.automations.status.${t.status}`,{defaultValue:t.status})]})]}),(0,K.jsxs)(`div`,{className:`flex shrink-0 gap-1`,children:[(0,K.jsx)(De,{title:e(`libreClaw.automations.runNow`),onClick:()=>Ke(t.automation_id,`run`),children:(0,K.jsx)(E,{className:`h-4 w-4`})}),(0,K.jsx)(De,{title:t.status===`paused`?e(`libreClaw.automations.resume`):e(`libreClaw.automations.pause`),onClick:()=>Ke(t.automation_id,t.status===`paused`?`resume`:`pause`),children:t.status===`paused`?(0,K.jsx)(E,{className:`h-4 w-4`}):(0,K.jsx)(S,{className:`h-4 w-4`})}),(0,K.jsx)(De,{title:e(`common.delete`),danger:!0,onClick:()=>Ke(t.automation_id,`delete`),children:(0,K.jsx)(te,{className:`h-4 w-4`})})]})]})},t.automation_id))]})]})}),(0,K.jsx)(J,{title:e(`libreClaw.usageFallback.title`),icon:(0,K.jsx)(O,{className:`h-4 w-4`}),children:(0,K.jsxs)(`div`,{className:`space-y-4`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h3`,{className:`mb-2 text-sm font-semibold text-gray-900 dark:text-dark-900`,children:e(`libreClaw.usageFallback.usage`)}),(0,K.jsx)(`pre`,{className:`max-h-52 overflow-auto rounded-xl bg-gray-100 p-3 text-xs text-gray-700 dark:bg-dark-200 dark:text-dark-700`,children:N||e(`libreClaw.usageFallback.noUsage`)})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h3`,{className:`mb-2 text-sm font-semibold text-gray-900 dark:text-dark-900`,children:e(`libreClaw.usageFallback.fallbackRoute`)}),(0,K.jsx)(`pre`,{className:`max-h-52 overflow-auto rounded-xl bg-gray-100 p-3 text-xs text-gray-700 dark:bg-dark-200 dark:text-dark-700`,children:JSON.stringify(f||{},null,2)})]})]})})]}),I&&(0,K.jsx)(`div`,{className:`fixed inset-0 z-40 flex items-center justify-center bg-white/60 backdrop-blur-sm dark:bg-dark-50/60`,children:(0,K.jsx)(h,{className:`h-7 w-7 animate-spin text-primary-600`})})]})},Te=({status:e,t})=>{let n=!!e?.connected;return(0,K.jsxs)(`span`,{className:p(`inline-flex items-center gap-2 rounded-full px-3 py-1.5 text-sm font-medium`,n?`bg-emerald-100 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-300`:`bg-amber-500/20 text-ink dark:bg-amber-900/30`),children:[(0,K.jsx)(`span`,{className:p(`h-2 w-2 rounded-full`,n?`bg-emerald-500`:`bg-amber-500`)}),t(n?`libreClaw.status.connected`:`libreClaw.status.disconnected`),e?.health?.active_runs!==void 0&&(0,K.jsxs)(`span`,{className:`opacity-70`,children:[`·`,` `,t(`libreClaw.status.activeRuns`,{count:e.health.active_runs})]})]})},Ee=({state:e,t})=>(0,K.jsx)(`span`,{className:p(`rounded-full px-2 py-0.5 text-[11px] font-semibold uppercase tracking-wide`,xe[e]||xe.queued),children:t(`libreClaw.states.${e}`,{defaultValue:e})}),J=({title:e,icon:t,actions:n,children:r})=>(0,K.jsxs)(`section`,{className:`rounded-2xl border border-gray-200/80 bg-white/60 dark:border-white/10 dark:bg-white/[0.03]`,children:[(0,K.jsxs)(`header`,{className:`flex items-center justify-between gap-3 border-b border-gray-200/70 px-5 py-4 dark:border-white/[0.08]`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-semibold text-gray-900 dark:text-dark-900`,children:[(0,K.jsx)(`span`,{className:`text-primary-600 dark:text-primary-300`,children:t}),e]}),n]}),(0,K.jsx)(`div`,{className:`p-5`,children:r})]}),De=({title:e,danger:t,onClick:n,children:r})=>(0,K.jsx)(`button`,{type:`button`,title:e,onClick:n,className:p(`inline-flex h-8 w-8 items-center justify-center rounded-lg transition-colors`,t?`text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20`:`text-gray-500 hover:bg-gray-100 dark:text-dark-500 dark:hover:bg-dark-200`),children:r}),Oe=({item:e,t})=>(0,K.jsxs)(`article`,{className:p(`rounded-xl border p-3 transition-colors`,e.eventType===`assistant_message`?`border-primary-200 bg-primary-50/60 dark:border-primary-900/60 dark:bg-primary-900/10`:(e.eventType,`border-gray-200/80 bg-white/50 dark:border-white/[0.08] dark:bg-white/[0.025]`)),children:[(0,K.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-3`,children:[(0,K.jsx)(`span`,{className:p(`text-xs font-semibold uppercase tracking-wide`,Se[e.eventType]||`text-gray-500 dark:text-dark-500`),children:e.label}),(0,K.jsxs)(`span`,{className:`shrink-0 text-xs text-gray-400 dark:text-dark-500`,children:[Le(e),` · `,Ne(e.timestamp)]})]}),(0,K.jsx)(ke,{item:e,t})]}),ke=({item:e,t})=>{if(e.kind===`assistant_message`)return(0,K.jsx)(`p`,{className:`whitespace-pre-wrap text-sm leading-6 text-gray-900 dark:text-dark-900`,children:Fe(e.events)||t(`libreClaw.timeline.streaming`)});let n=e.events[0];return n?n.type===`assistant_delta`?(0,K.jsx)(`p`,{className:`whitespace-pre-wrap text-sm text-gray-800 dark:text-dark-800`,children:String(n.data.text||``)}):n.type===`user_message`?(0,K.jsx)(`p`,{className:`whitespace-pre-wrap text-sm text-gray-800 dark:text-dark-800`,children:String(n.data.content||``)}):n.type===`tool_call`?(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`div`,{className:`text-sm font-medium text-gray-900 dark:text-dark-900`,children:String(n.data.name||t(`libreClaw.fallbacks.tool`))}),(0,K.jsx)(X,{value:n.data.arguments||{}})]}):n.type===`tool_result`?(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:`text-sm font-medium text-gray-900 dark:text-dark-900`,children:[String(n.data.name||t(`libreClaw.fallbacks.tool`)),` ·`,` `,n.data.is_error?t(`libreClaw.timeline.resultError`):t(`libreClaw.timeline.resultOk`)]}),(0,K.jsx)(`pre`,{className:`mt-2 max-h-56 overflow-auto whitespace-pre-wrap rounded-lg bg-gray-100 p-2 text-xs text-gray-700 dark:bg-dark-200 dark:text-dark-700`,children:String(n.data.content||``)})]}):n.type===`permission_request`?(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`div`,{className:`text-sm font-medium text-gray-900 dark:text-dark-900`,children:String(n.data.name||t(`libreClaw.approvals.toolApprovalRequested`))}),(0,K.jsx)(X,{value:n.data.arguments||{}})]}):n.type===`permission_response`?(0,K.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,K.jsx)(Y,{label:t(`libreClaw.metrics.tool`),value:String(n.data.name||n.data.tool_call_id||t(`libreClaw.fallbacks.tool`))}),(0,K.jsx)(Y,{label:t(`libreClaw.metrics.resolution`),value:String(n.data.resolution||t(`libreClaw.fallbacks.resolved`))})]}):n.type===`usage`?(0,K.jsx)(Ae,{data:n.data,t}):n.type===`run_finished`?(0,K.jsx)(je,{data:n.data,t}):n.type===`error`?(0,K.jsx)(`p`,{className:`text-sm text-red-700 dark:text-red-300`,children:String(n.data.message||t(`libreClaw.fallbacks.unknownError`))}):(0,K.jsx)(X,{value:n.data}):null},Ae=({data:e,t})=>(0,K.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,K.jsx)(Y,{label:t(`libreClaw.metrics.provider`),value:String(e.provider||t(`libreClaw.fallbacks.unknown`))}),(0,K.jsx)(Y,{label:t(`libreClaw.metrics.model`),value:String(e.model||t(`libreClaw.fallbacks.unknown`))}),(0,K.jsx)(Y,{label:t(`libreClaw.metrics.input`),value:t(`libreClaw.metrics.tokens`,{count:Z(e.input_tokens),formatted:Q(e.input_tokens)})}),(0,K.jsx)(Y,{label:t(`libreClaw.metrics.output`),value:t(`libreClaw.metrics.tokens`,{count:Z(e.output_tokens),formatted:Q(e.output_tokens)})}),Z(e.cached_tokens)>0&&(0,K.jsx)(Y,{label:t(`libreClaw.metrics.cached`),value:t(`libreClaw.metrics.tokens`,{count:Z(e.cached_tokens),formatted:Q(e.cached_tokens)})}),Z(e.reasoning_tokens)>0&&(0,K.jsx)(Y,{label:t(`libreClaw.metrics.reasoning`),value:t(`libreClaw.metrics.tokens`,{count:Z(e.reasoning_tokens),formatted:Q(e.reasoning_tokens)})}),(0,K.jsx)(Y,{label:t(`libreClaw.metrics.cost`),value:Re(e.cost)})]}),je=({data:e,t})=>(0,K.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,K.jsx)(Y,{label:t(`libreClaw.metrics.state`),value:t(`libreClaw.states.${String(e.state||`done`)}`,{defaultValue:String(e.state||`done`)})}),e.stop_reason!==void 0&&(0,K.jsx)(Y,{label:t(`libreClaw.metrics.stopReason`),value:String(e.stop_reason)})]}),Y=({label:e,value:t})=>(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 rounded-full border border-gray-200/80 bg-white/50 px-2.5 py-1 text-xs text-gray-700 dark:border-white/10 dark:bg-white/[0.035] dark:text-dark-700`,children:[(0,K.jsx)(`span`,{className:`font-semibold text-gray-500 dark:text-dark-500`,children:e}),(0,K.jsx)(`span`,{children:t})]}),X=({value:e})=>(0,K.jsx)(`pre`,{className:`mt-2 max-h-56 overflow-auto rounded-lg bg-gray-100 p-2 text-xs text-gray-700 dark:bg-dark-200 dark:text-dark-700`,children:JSON.stringify(e,null,2)}),Me=({text:e})=>(0,K.jsx)(`div`,{className:`rounded-xl border border-dashed border-gray-300 bg-white/30 px-4 py-8 text-center text-sm text-gray-500 dark:border-white/15 dark:bg-white/[0.02] dark:text-dark-500`,children:e}),Ne=e=>{if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()},Pe=(e,t)=>{let n=[],r=0;for(;r<e.length;){let i=e[r];if(!i)break;if(i.type===`assistant_delta`){let i=[];for(;e[r]?.type===`assistant_delta`;){let t=e[r];t&&i.push(t),r+=1}let a=i[0],o=i[i.length-1]||a;a&&o&&n.push({key:`assistant-${a.event_id}-${o.event_id}`,kind:`assistant_message`,eventType:`assistant_message`,label:t(`libreClaw.timeline.assistantResponse`),firstEventId:a.event_id,lastEventId:o.event_id,timestamp:a.timestamp,events:i});continue}n.push({key:`${i.type}-${i.event_id}`,kind:`event`,eventType:i.type,label:Ie(i.type,t),firstEventId:i.event_id,lastEventId:i.event_id,timestamp:i.timestamp,events:[i]}),r+=1}return n},Fe=e=>e.map(e=>String(e.data.text||``)).join(``),Ie=(e,t)=>({user_message:t(`libreClaw.timeline.labels.userMessage`),tool_call:t(`libreClaw.timeline.labels.toolCall`),tool_result:t(`libreClaw.timeline.labels.toolResult`),permission_request:t(`libreClaw.timeline.labels.approvalRequest`),permission_response:t(`libreClaw.timeline.labels.approvalResponse`),run_started:t(`libreClaw.timeline.labels.runStarted`),run_finished:t(`libreClaw.timeline.labels.runFinished`),usage:t(`libreClaw.timeline.labels.usage`),error:t(`libreClaw.timeline.labels.error`)})[e]||e.replace(/_/g,` `),Le=e=>e.firstEventId===e.lastEventId?`#${e.firstEventId}`:`#${e.firstEventId}-#${e.lastEventId}`,Z=e=>{let t=Number(e);return Number.isFinite(t)?t:0},Q=e=>new Intl.NumberFormat().format(Z(e)),Re=e=>{let t=Z(e);return t<=0?`$0.00`:t<.01?`$${t.toFixed(6)}`:`$${t.toFixed(4)}`};export{we as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./rolldown-runtime-hePW80VL.js";import{i as e,t}from"./react-vendor-
|
|
1
|
+
import"./rolldown-runtime-hePW80VL.js";import{i as e,t}from"./react-vendor-wiHys0m2.js";import{t as n}from"./utils-p8Gt72YP.js";e();var r=t(),i={sm:`text-[1.0625rem] leading-none`,md:`text-[1.625rem] leading-none`,lg:`text-[2.5rem] leading-none`},a=({className:e,size:t=`md`,wordmark:a=!0})=>(0,r.jsxs)(`span`,{dir:`ltr`,className:n(`libre-brand inline-flex items-baseline whitespace-nowrap`,i[t],e),children:[`Libre`,a&&(0,r.jsx)(`span`,{className:`ms-1 font-normal tracking-[-0.035em]`,children:`WebUI`})]});export{a as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./rolldown-runtime-hePW80VL.js";import{i as e,t}from"./react-vendor-
|
|
1
|
+
import"./rolldown-runtime-hePW80VL.js";import{i as e,t}from"./react-vendor-wiHys0m2.js";import{t as n}from"./utils-p8Gt72YP.js";e();var r=t(),i={sm:`h-6 w-6`,md:`h-8 w-8`,lg:`h-12 w-12`},a=({className:e,size:t=`md`,label:a=`Libre WebUI`})=>(0,r.jsxs)(`svg`,{viewBox:`0 0 64 64`,className:n(`shrink-0`,i[t],e),role:a?`img`:`presentation`,"aria-label":a??void 0,"aria-hidden":!a||void 0,focusable:`false`,children:[(0,r.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,r.jsx)(`path`,{d:`M 50.58 18.0 L 50.58 25.66`,fill:`none`,stroke:`currentColor`,strokeWidth:`11`,strokeLinecap:`round`})]});export{a as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,r as n,t as r}from"./react-vendor-D0Ec-185.js";import{t as i}from"./useTranslation-Kn7_iLGj.js";import{t as a}from"./utils-Dq1w7K0c.js";import{Z as o,jn as s,n as c,x as l,xn as u}from"./ui-vendor-wayYH9Nf.js";import{t as d}from"./Button-ZQ6BePid.js";import{t as f}from"./useDialogFocus-BQLdAGYH.js";var p=e(t(),1),m=n(),h=r(),g=({models:e,showDetailsModal:t,setShowDetailsModal:n,selectedModelName:r,selectedModelDetails:g,loadingDetails:_,showCopyModal:v,setShowCopyModal:y,copySource:b,setCopySource:x,copyDestination:S,setCopyDestination:C,copying:w,handleCopyModel:T,showCreateModal:E,setShowCreateModal:D,createModelName:O,setCreateModelName:k,createModelfile:A,setCreateModelfile:j,creating:M,handleCreateModel:N,showEmbeddingsModal:P,setShowEmbeddingsModal:F,embeddingsModel:I,setEmbeddingsModel:L,embeddingsInput:R,setEmbeddingsInput:z,embeddingsResult:B,generatingEmbeddings:V,handleGenerateEmbeddings:H})=>{let{t:U}=i(),W=(0,p.useId)(),G=(0,p.useRef)(null),K=(0,p.useRef)(null),q=(0,p.useRef)(null),J=(0,p.useRef)(null);return f(G,{enabled:t,onClose:()=>n(!1)}),f(K,{enabled:v,onClose:()=>y(!1)}),f(q,{enabled:E,onClose:()=>D(!1)}),f(J,{enabled:P,onClose:()=>F(!1)}),(0,h.jsxs)(h.Fragment,{children:[t&&(0,m.createPortal)((0,h.jsxs)(`div`,{className:`fixed inset-0 z-[999999] flex items-center justify-center p-4`,children:[(0,h.jsx)(`div`,{className:`absolute inset-0 bg-black/50 backdrop-blur-sm`,onClick:()=>n(!1)}),(0,h.jsxs)(`div`,{ref:G,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`${W}-details-title`,tabIndex:-1,className:a(`relative w-full max-w-2xl max-h-[85vh] overflow-hidden rounded-xl border shadow-2xl`,`bg-white dark:bg-dark-100`,`border-gray-200 dark:border-dark-300`),children:[(0,h.jsxs)(`div`,{className:a(`flex items-center justify-between p-4 border-b`,`border-gray-200 dark:border-dark-300`),children:[(0,h.jsxs)(`h3`,{id:`${W}-details-title`,className:`text-lg font-semibold text-gray-900 dark:text-gray-100`,children:[U(`modelManager.modals.details.title`),`: `,r]}),(0,h.jsx)(`button`,{type:`button`,"aria-label":U(`common.close`),onClick:()=>n(!1),className:`p-1.5 rounded-lg hover:bg-gray-100 dark:hover:bg-dark-200`,children:(0,h.jsx)(c,{className:`h-5 w-5 text-gray-500`})})]}),(0,h.jsx)(`div`,{className:`overflow-y-auto max-h-[calc(85vh-60px)] p-4 space-y-4`,children:_?(0,h.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,h.jsx)(o,{className:`h-6 w-6 animate-spin text-gray-400`})}):g?(0,h.jsxs)(h.Fragment,{children:[g.details&&(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`h4`,{className:`text-sm font-medium text-gray-700 dark:text-gray-300 mb-2`,children:U(`modelManager.modals.details.info`)}),(0,h.jsx)(`div`,{className:a(`p-3 rounded-lg text-sm`,`bg-gray-50 dark:bg-dark-50`),children:(0,h.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[g.details.family&&(0,h.jsxs)(`div`,{children:[(0,h.jsxs)(`span`,{className:`text-gray-500`,children:[U(`modelManager.modals.details.family`),`:`]}),` `,(0,h.jsx)(`span`,{className:`text-gray-900 dark:text-gray-100`,children:g.details.family})]}),g.details.parameter_size&&(0,h.jsxs)(`div`,{children:[(0,h.jsxs)(`span`,{className:`text-gray-500`,children:[U(`modelManager.modals.details.parameters`),`:`]}),` `,(0,h.jsx)(`span`,{className:`text-gray-900 dark:text-gray-100`,children:g.details.parameter_size})]}),g.details.quantization_level&&(0,h.jsxs)(`div`,{children:[(0,h.jsxs)(`span`,{className:`text-gray-500`,children:[U(`modelManager.modals.details.quantization`),`:`]}),` `,(0,h.jsx)(`span`,{className:`text-gray-900 dark:text-gray-100`,children:g.details.quantization_level})]}),g.details.format&&(0,h.jsxs)(`div`,{children:[(0,h.jsxs)(`span`,{className:`text-gray-500`,children:[U(`modelManager.modals.details.format`),`:`]}),` `,(0,h.jsx)(`span`,{className:`text-gray-900 dark:text-gray-100`,children:g.details.format})]})]})})]}),g.system&&(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`h4`,{className:`text-sm font-medium text-gray-700 dark:text-gray-300 mb-2`,children:U(`modelManager.modals.details.systemPrompt`)}),(0,h.jsx)(`pre`,{className:a(`p-3 rounded-lg text-xs overflow-x-auto`,`bg-gray-50 dark:bg-dark-50`,`text-gray-700 dark:text-gray-300`),children:g.system})]}),g.template&&(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`h4`,{className:`text-sm font-medium text-gray-700 dark:text-gray-300 mb-2`,children:U(`modelManager.modals.details.template`)}),(0,h.jsx)(`pre`,{className:a(`p-3 rounded-lg text-xs overflow-x-auto max-h-40`,`bg-gray-50 dark:bg-dark-50`,`text-gray-700 dark:text-gray-300`),children:g.template})]}),g.parameters&&(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`h4`,{className:`text-sm font-medium text-gray-700 dark:text-gray-300 mb-2`,children:U(`modelManager.modals.details.parameters`)}),(0,h.jsx)(`pre`,{className:a(`p-3 rounded-lg text-xs overflow-x-auto`,`bg-gray-50 dark:bg-dark-50`,`text-gray-700 dark:text-gray-300`),children:g.parameters})]}),g.license&&(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`h4`,{className:`text-sm font-medium text-gray-700 dark:text-gray-300 mb-2`,children:U(`modelManager.modals.details.license`)}),(0,h.jsx)(`pre`,{className:a(`p-3 rounded-lg text-xs overflow-x-auto max-h-32`,`bg-gray-50 dark:bg-dark-50`,`text-gray-700 dark:text-gray-300`),children:g.license})]}),g.modelfile&&(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`h4`,{className:`text-sm font-medium text-gray-700 dark:text-gray-300 mb-2`,children:U(`modelManager.modals.details.modelfile`)}),(0,h.jsx)(`pre`,{className:a(`p-3 rounded-lg text-xs overflow-x-auto max-h-60`,`bg-gray-50 dark:bg-dark-50`,`text-gray-700 dark:text-gray-300`),children:g.modelfile})]})]}):(0,h.jsx)(`p`,{className:`text-center text-gray-500`,children:U(`modelManager.modals.details.noDetails`)})})]})]}),document.body),v&&(0,m.createPortal)((0,h.jsxs)(`div`,{className:`fixed inset-0 z-[999999] flex items-center justify-center p-4`,children:[(0,h.jsx)(`div`,{className:`absolute inset-0 bg-black/50 backdrop-blur-sm`,onClick:()=>y(!1)}),(0,h.jsxs)(`div`,{ref:K,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`${W}-copy-title`,tabIndex:-1,className:a(`relative w-full max-w-md rounded-xl border shadow-2xl`,`bg-white dark:bg-dark-100`,`border-gray-200 dark:border-dark-300`),children:[(0,h.jsxs)(`div`,{className:a(`flex items-center justify-between p-4 border-b`,`border-gray-200 dark:border-dark-300`),children:[(0,h.jsx)(`h3`,{id:`${W}-copy-title`,className:`text-lg font-semibold text-gray-900 dark:text-gray-100`,children:U(`modelManager.modals.copy.title`)}),(0,h.jsx)(`button`,{type:`button`,"aria-label":U(`common.close`),onClick:()=>y(!1),className:`p-1.5 rounded-lg hover:bg-gray-100 dark:hover:bg-dark-200`,children:(0,h.jsx)(c,{className:`h-5 w-5 text-gray-500`})})]}),(0,h.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`label`,{htmlFor:`${W}-copy-source`,className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:U(`modelManager.modals.copy.source`)}),(0,h.jsxs)(`select`,{id:`${W}-copy-source`,value:b,onChange:e=>x(e.target.value),className:a(`w-full px-3 py-2 rounded-lg border text-sm`,`bg-gray-50 dark:bg-dark-50`,`border-gray-200 dark:border-dark-300`,`text-gray-900 dark:text-gray-100`),children:[(0,h.jsx)(`option`,{value:``,children:U(`modelManager.modals.copy.selectModel`)}),e.map(e=>(0,h.jsx)(`option`,{value:e.name,children:e.name},e.name))]})]}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`label`,{htmlFor:`${W}-copy-newName`,className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:U(`modelManager.modals.copy.newName`)}),(0,h.jsx)(`input`,{id:`${W}-copy-newName`,type:`text`,value:S,onChange:e=>C(e.target.value),placeholder:U(`modelManager.modals.copy.placeholder`),className:a(`w-full px-3 py-2 rounded-lg border text-sm`,`bg-gray-50 dark:bg-dark-50`,`border-gray-200 dark:border-dark-300`,`text-gray-900 dark:text-gray-100`,`placeholder-gray-500`)})]}),(0,h.jsxs)(d,{onClick:T,disabled:!b.trim()||!S.trim()||w,className:a(`w-full gap-2`,``),children:[w?(0,h.jsx)(o,{className:`h-4 w-4 animate-spin`}):(0,h.jsx)(s,{className:`h-4 w-4`}),U(w?`modelManager.modals.copy.copying`:`modelManager.modals.copy.button`)]})]})]})]}),document.body),E&&(0,m.createPortal)((0,h.jsxs)(`div`,{className:`fixed inset-0 z-[999999] flex items-center justify-center p-4`,children:[(0,h.jsx)(`div`,{className:`absolute inset-0 bg-black/50 backdrop-blur-sm`,onClick:()=>D(!1)}),(0,h.jsxs)(`div`,{ref:q,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`${W}-create-title`,tabIndex:-1,className:a(`relative w-full max-w-lg rounded-xl border shadow-2xl`,`bg-white dark:bg-dark-100`,`border-gray-200 dark:border-dark-300`),children:[(0,h.jsxs)(`div`,{className:a(`flex items-center justify-between p-4 border-b`,`border-gray-200 dark:border-dark-300`),children:[(0,h.jsx)(`h3`,{id:`${W}-create-title`,className:`text-lg font-semibold text-gray-900 dark:text-gray-100`,children:U(`modelManager.modals.create.title`)}),(0,h.jsx)(`button`,{type:`button`,"aria-label":U(`common.close`),onClick:()=>D(!1),className:`p-1.5 rounded-lg hover:bg-gray-100 dark:hover:bg-dark-200`,children:(0,h.jsx)(c,{className:`h-5 w-5 text-gray-500`})})]}),(0,h.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`label`,{htmlFor:`${W}-create-name`,className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:U(`modelManager.modals.create.name`)}),(0,h.jsx)(`input`,{id:`${W}-create-name`,type:`text`,value:O,onChange:e=>k(e.target.value),placeholder:U(`modelManager.modals.create.namePlaceholder`),className:a(`w-full px-3 py-2 rounded-lg border text-sm`,`bg-gray-50 dark:bg-dark-50`,`border-gray-200 dark:border-dark-300`,`text-gray-900 dark:text-gray-100`,`placeholder-gray-500`)})]}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`label`,{htmlFor:`${W}-create-modelfile`,className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:U(`modelManager.modals.create.modelfile`)}),(0,h.jsx)(`textarea`,{id:`${W}-create-modelfile`,value:A,onChange:e=>j(e.target.value),placeholder:U(`modelManager.modals.create.modelfilePlaceholder`),rows:8,className:a(`w-full px-3 py-2 rounded-lg border text-sm font-mono`,`bg-gray-50 dark:bg-dark-50`,`border-gray-200 dark:border-dark-300`,`text-gray-900 dark:text-gray-100`,`placeholder-gray-500`,`resize-none`)}),(0,h.jsxs)(`p`,{className:`mt-1 text-xs text-gray-500`,children:[U(`modelManager.modals.create.see`),` `,(0,h.jsx)(`a`,{href:`https://github.com/ollama/ollama/blob/main/docs/modelfile.md`,target:`_blank`,rel:`noopener noreferrer`,className:`text-primary-600 hover:underline`,children:U(`modelManager.modals.create.docs`)}),` `,U(`modelManager.modals.create.docsLink`)]})]}),(0,h.jsxs)(d,{onClick:N,disabled:!O.trim()||!A.trim()||M,className:a(`w-full gap-2`,``),children:[M?(0,h.jsx)(o,{className:`h-4 w-4 animate-spin`}):(0,h.jsx)(u,{className:`h-4 w-4`}),U(M?`modelManager.modals.create.creating`:`modelManager.modals.create.button`)]})]})]})]}),document.body),P&&(0,m.createPortal)((0,h.jsxs)(`div`,{className:`fixed inset-0 z-[999999] flex items-center justify-center p-4`,children:[(0,h.jsx)(`div`,{className:`absolute inset-0 bg-black/50 backdrop-blur-sm`,onClick:()=>F(!1)}),(0,h.jsxs)(`div`,{ref:J,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`${W}-embeddings-title`,tabIndex:-1,className:a(`relative w-full max-w-lg rounded-xl border shadow-2xl`,`bg-white dark:bg-dark-100`,`border-gray-200 dark:border-dark-300`),children:[(0,h.jsxs)(`div`,{className:a(`flex items-center justify-between p-4 border-b`,`border-gray-200 dark:border-dark-300`),children:[(0,h.jsx)(`h3`,{id:`${W}-embeddings-title`,className:`text-lg font-semibold text-gray-900 dark:text-gray-100`,children:U(`modelManager.modals.embeddings.title`)}),(0,h.jsx)(`button`,{type:`button`,"aria-label":U(`common.close`),onClick:()=>F(!1),className:`p-1.5 rounded-lg hover:bg-gray-100 dark:hover:bg-dark-200`,children:(0,h.jsx)(c,{className:`h-5 w-5 text-gray-500`})})]}),(0,h.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`label`,{htmlFor:`${W}-embeddings-model`,className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:U(`modelManager.modals.embeddings.model`)}),(0,h.jsxs)(`select`,{id:`${W}-embeddings-model`,value:I,onChange:e=>L(e.target.value),className:a(`w-full px-3 py-2 rounded-lg border text-sm`,`bg-gray-50 dark:bg-dark-50`,`border-gray-200 dark:border-dark-300`,`text-gray-900 dark:text-gray-100`),children:[(0,h.jsx)(`option`,{value:``,children:U(`modelManager.modals.embeddings.selectModel`)}),e.map(e=>(0,h.jsx)(`option`,{value:e.name,children:e.name},e.name))]}),(0,h.jsx)(`p`,{className:`mt-1 text-xs text-gray-500`,children:U(`modelManager.modals.embeddings.recommended`)})]}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`label`,{htmlFor:`${W}-embeddings-input`,className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:U(`modelManager.modals.embeddings.input`)}),(0,h.jsx)(`textarea`,{id:`${W}-embeddings-input`,value:R,onChange:e=>z(e.target.value),placeholder:U(`modelManager.modals.embeddings.placeholder`),rows:3,className:a(`w-full px-3 py-2 rounded-lg border text-sm`,`bg-gray-50 dark:bg-dark-50`,`border-gray-200 dark:border-dark-300`,`text-gray-900 dark:text-gray-100`,`placeholder-gray-500`,`resize-none`)})]}),(0,h.jsxs)(d,{onClick:H,disabled:!I.trim()||!R.trim()||V,className:a(`w-full gap-2`,``),children:[V?(0,h.jsx)(o,{className:`h-4 w-4 animate-spin`}):(0,h.jsx)(l,{className:`h-4 w-4`}),U(V?`modelManager.modals.embeddings.generating`:`modelManager.modals.embeddings.button`)]}),B&&(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`label`,{className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:U(`modelManager.modals.embeddings.result`,{count:B.length})}),(0,h.jsxs)(`pre`,{className:a(`p-3 rounded-lg text-xs overflow-x-auto max-h-32`,`bg-gray-50 dark:bg-dark-50`,`text-gray-700 dark:text-gray-300`),children:[`[`,B.slice(0,10).join(`, `),B.length>10&&`, ...`,` ]`]})]})]})]})]}),document.body)]})};export{g as ModelManagerModals,g as default};
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,r as n,t as r}from"./react-vendor-wiHys0m2.js";import{t as i}from"./useTranslation-B9kflK9S.js";import{t as a}from"./utils-p8Gt72YP.js";import{Z as o,jn as s,n as c,x as l,xn as u}from"./ui-vendor-BhHHyHk3.js";import{t as d}from"./Button-CGMYia4g.js";import{t as f}from"./useDialogFocus-BPTG_Zmy.js";var p=e(t(),1),m=n(),h=r(),g=({models:e,showDetailsModal:t,setShowDetailsModal:n,selectedModelName:r,selectedModelDetails:g,loadingDetails:_,showCopyModal:v,setShowCopyModal:y,copySource:b,setCopySource:x,copyDestination:S,setCopyDestination:C,copying:w,handleCopyModel:T,showCreateModal:E,setShowCreateModal:D,createModelName:O,setCreateModelName:k,createModelfile:A,setCreateModelfile:j,creating:M,handleCreateModel:N,showEmbeddingsModal:P,setShowEmbeddingsModal:F,embeddingsModel:I,setEmbeddingsModel:L,embeddingsInput:R,setEmbeddingsInput:z,embeddingsResult:B,generatingEmbeddings:V,handleGenerateEmbeddings:H})=>{let{t:U}=i(),W=(0,p.useId)(),G=(0,p.useRef)(null),K=(0,p.useRef)(null),q=(0,p.useRef)(null),J=(0,p.useRef)(null);return f(G,{enabled:t,onClose:()=>n(!1)}),f(K,{enabled:v,onClose:()=>y(!1)}),f(q,{enabled:E,onClose:()=>D(!1)}),f(J,{enabled:P,onClose:()=>F(!1)}),(0,h.jsxs)(h.Fragment,{children:[t&&(0,m.createPortal)((0,h.jsxs)(`div`,{className:`fixed inset-0 z-[999999] flex items-center justify-center p-4`,children:[(0,h.jsx)(`div`,{className:`absolute inset-0 bg-black/50 backdrop-blur-sm`,onClick:()=>n(!1)}),(0,h.jsxs)(`div`,{ref:G,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`${W}-details-title`,tabIndex:-1,className:a(`relative w-full max-w-2xl max-h-[85vh] overflow-hidden rounded-xl border shadow-2xl`,`bg-white dark:bg-dark-100`,`border-gray-200 dark:border-dark-300`),children:[(0,h.jsxs)(`div`,{className:a(`flex items-center justify-between p-4 border-b`,`border-gray-200 dark:border-dark-300`),children:[(0,h.jsxs)(`h3`,{id:`${W}-details-title`,className:`text-lg font-semibold text-gray-900 dark:text-gray-100`,children:[U(`modelManager.modals.details.title`),`: `,r]}),(0,h.jsx)(`button`,{type:`button`,"aria-label":U(`common.close`),onClick:()=>n(!1),className:`p-1.5 rounded-lg hover:bg-gray-100 dark:hover:bg-dark-200`,children:(0,h.jsx)(c,{className:`h-5 w-5 text-gray-500`})})]}),(0,h.jsx)(`div`,{className:`overflow-y-auto max-h-[calc(85vh-60px)] p-4 space-y-4`,children:_?(0,h.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,h.jsx)(o,{className:`h-6 w-6 animate-spin text-gray-400`})}):g?(0,h.jsxs)(h.Fragment,{children:[g.details&&(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`h4`,{className:`text-sm font-medium text-gray-700 dark:text-gray-300 mb-2`,children:U(`modelManager.modals.details.info`)}),(0,h.jsx)(`div`,{className:a(`p-3 rounded-lg text-sm`,`bg-gray-50 dark:bg-dark-50`),children:(0,h.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[g.details.family&&(0,h.jsxs)(`div`,{children:[(0,h.jsxs)(`span`,{className:`text-gray-500`,children:[U(`modelManager.modals.details.family`),`:`]}),` `,(0,h.jsx)(`span`,{className:`text-gray-900 dark:text-gray-100`,children:g.details.family})]}),g.details.parameter_size&&(0,h.jsxs)(`div`,{children:[(0,h.jsxs)(`span`,{className:`text-gray-500`,children:[U(`modelManager.modals.details.parameters`),`:`]}),` `,(0,h.jsx)(`span`,{className:`text-gray-900 dark:text-gray-100`,children:g.details.parameter_size})]}),g.details.quantization_level&&(0,h.jsxs)(`div`,{children:[(0,h.jsxs)(`span`,{className:`text-gray-500`,children:[U(`modelManager.modals.details.quantization`),`:`]}),` `,(0,h.jsx)(`span`,{className:`text-gray-900 dark:text-gray-100`,children:g.details.quantization_level})]}),g.details.format&&(0,h.jsxs)(`div`,{children:[(0,h.jsxs)(`span`,{className:`text-gray-500`,children:[U(`modelManager.modals.details.format`),`:`]}),` `,(0,h.jsx)(`span`,{className:`text-gray-900 dark:text-gray-100`,children:g.details.format})]})]})})]}),g.system&&(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`h4`,{className:`text-sm font-medium text-gray-700 dark:text-gray-300 mb-2`,children:U(`modelManager.modals.details.systemPrompt`)}),(0,h.jsx)(`pre`,{className:a(`p-3 rounded-lg text-xs overflow-x-auto`,`bg-gray-50 dark:bg-dark-50`,`text-gray-700 dark:text-gray-300`),children:g.system})]}),g.template&&(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`h4`,{className:`text-sm font-medium text-gray-700 dark:text-gray-300 mb-2`,children:U(`modelManager.modals.details.template`)}),(0,h.jsx)(`pre`,{className:a(`p-3 rounded-lg text-xs overflow-x-auto max-h-40`,`bg-gray-50 dark:bg-dark-50`,`text-gray-700 dark:text-gray-300`),children:g.template})]}),g.parameters&&(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`h4`,{className:`text-sm font-medium text-gray-700 dark:text-gray-300 mb-2`,children:U(`modelManager.modals.details.parameters`)}),(0,h.jsx)(`pre`,{className:a(`p-3 rounded-lg text-xs overflow-x-auto`,`bg-gray-50 dark:bg-dark-50`,`text-gray-700 dark:text-gray-300`),children:g.parameters})]}),g.license&&(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`h4`,{className:`text-sm font-medium text-gray-700 dark:text-gray-300 mb-2`,children:U(`modelManager.modals.details.license`)}),(0,h.jsx)(`pre`,{className:a(`p-3 rounded-lg text-xs overflow-x-auto max-h-32`,`bg-gray-50 dark:bg-dark-50`,`text-gray-700 dark:text-gray-300`),children:g.license})]}),g.modelfile&&(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`h4`,{className:`text-sm font-medium text-gray-700 dark:text-gray-300 mb-2`,children:U(`modelManager.modals.details.modelfile`)}),(0,h.jsx)(`pre`,{className:a(`p-3 rounded-lg text-xs overflow-x-auto max-h-60`,`bg-gray-50 dark:bg-dark-50`,`text-gray-700 dark:text-gray-300`),children:g.modelfile})]})]}):(0,h.jsx)(`p`,{className:`text-center text-gray-500`,children:U(`modelManager.modals.details.noDetails`)})})]})]}),document.body),v&&(0,m.createPortal)((0,h.jsxs)(`div`,{className:`fixed inset-0 z-[999999] flex items-center justify-center p-4`,children:[(0,h.jsx)(`div`,{className:`absolute inset-0 bg-black/50 backdrop-blur-sm`,onClick:()=>y(!1)}),(0,h.jsxs)(`div`,{ref:K,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`${W}-copy-title`,tabIndex:-1,className:a(`relative w-full max-w-md rounded-xl border shadow-2xl`,`bg-white dark:bg-dark-100`,`border-gray-200 dark:border-dark-300`),children:[(0,h.jsxs)(`div`,{className:a(`flex items-center justify-between p-4 border-b`,`border-gray-200 dark:border-dark-300`),children:[(0,h.jsx)(`h3`,{id:`${W}-copy-title`,className:`text-lg font-semibold text-gray-900 dark:text-gray-100`,children:U(`modelManager.modals.copy.title`)}),(0,h.jsx)(`button`,{type:`button`,"aria-label":U(`common.close`),onClick:()=>y(!1),className:`p-1.5 rounded-lg hover:bg-gray-100 dark:hover:bg-dark-200`,children:(0,h.jsx)(c,{className:`h-5 w-5 text-gray-500`})})]}),(0,h.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`label`,{htmlFor:`${W}-copy-source`,className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:U(`modelManager.modals.copy.source`)}),(0,h.jsxs)(`select`,{id:`${W}-copy-source`,value:b,onChange:e=>x(e.target.value),className:a(`w-full px-3 py-2 rounded-lg border text-sm`,`bg-gray-50 dark:bg-dark-50`,`border-gray-200 dark:border-dark-300`,`text-gray-900 dark:text-gray-100`),children:[(0,h.jsx)(`option`,{value:``,children:U(`modelManager.modals.copy.selectModel`)}),e.map(e=>(0,h.jsx)(`option`,{value:e.name,children:e.name},e.name))]})]}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`label`,{htmlFor:`${W}-copy-newName`,className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:U(`modelManager.modals.copy.newName`)}),(0,h.jsx)(`input`,{id:`${W}-copy-newName`,type:`text`,value:S,onChange:e=>C(e.target.value),placeholder:U(`modelManager.modals.copy.placeholder`),className:a(`w-full px-3 py-2 rounded-lg border text-sm`,`bg-gray-50 dark:bg-dark-50`,`border-gray-200 dark:border-dark-300`,`text-gray-900 dark:text-gray-100`,`placeholder-gray-500`)})]}),(0,h.jsxs)(d,{onClick:T,disabled:!b.trim()||!S.trim()||w,className:a(`w-full gap-2`,``),children:[w?(0,h.jsx)(o,{className:`h-4 w-4 animate-spin`}):(0,h.jsx)(s,{className:`h-4 w-4`}),U(w?`modelManager.modals.copy.copying`:`modelManager.modals.copy.button`)]})]})]})]}),document.body),E&&(0,m.createPortal)((0,h.jsxs)(`div`,{className:`fixed inset-0 z-[999999] flex items-center justify-center p-4`,children:[(0,h.jsx)(`div`,{className:`absolute inset-0 bg-black/50 backdrop-blur-sm`,onClick:()=>D(!1)}),(0,h.jsxs)(`div`,{ref:q,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`${W}-create-title`,tabIndex:-1,className:a(`relative w-full max-w-lg rounded-xl border shadow-2xl`,`bg-white dark:bg-dark-100`,`border-gray-200 dark:border-dark-300`),children:[(0,h.jsxs)(`div`,{className:a(`flex items-center justify-between p-4 border-b`,`border-gray-200 dark:border-dark-300`),children:[(0,h.jsx)(`h3`,{id:`${W}-create-title`,className:`text-lg font-semibold text-gray-900 dark:text-gray-100`,children:U(`modelManager.modals.create.title`)}),(0,h.jsx)(`button`,{type:`button`,"aria-label":U(`common.close`),onClick:()=>D(!1),className:`p-1.5 rounded-lg hover:bg-gray-100 dark:hover:bg-dark-200`,children:(0,h.jsx)(c,{className:`h-5 w-5 text-gray-500`})})]}),(0,h.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`label`,{htmlFor:`${W}-create-name`,className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:U(`modelManager.modals.create.name`)}),(0,h.jsx)(`input`,{id:`${W}-create-name`,type:`text`,value:O,onChange:e=>k(e.target.value),placeholder:U(`modelManager.modals.create.namePlaceholder`),className:a(`w-full px-3 py-2 rounded-lg border text-sm`,`bg-gray-50 dark:bg-dark-50`,`border-gray-200 dark:border-dark-300`,`text-gray-900 dark:text-gray-100`,`placeholder-gray-500`)})]}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`label`,{htmlFor:`${W}-create-modelfile`,className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:U(`modelManager.modals.create.modelfile`)}),(0,h.jsx)(`textarea`,{id:`${W}-create-modelfile`,value:A,onChange:e=>j(e.target.value),placeholder:U(`modelManager.modals.create.modelfilePlaceholder`),rows:8,className:a(`w-full px-3 py-2 rounded-lg border text-sm font-mono`,`bg-gray-50 dark:bg-dark-50`,`border-gray-200 dark:border-dark-300`,`text-gray-900 dark:text-gray-100`,`placeholder-gray-500`,`resize-none`)}),(0,h.jsxs)(`p`,{className:`mt-1 text-xs text-gray-500`,children:[U(`modelManager.modals.create.see`),` `,(0,h.jsx)(`a`,{href:`https://github.com/ollama/ollama/blob/main/docs/modelfile.md`,target:`_blank`,rel:`noopener noreferrer`,className:`text-primary-600 hover:underline`,children:U(`modelManager.modals.create.docs`)}),` `,U(`modelManager.modals.create.docsLink`)]})]}),(0,h.jsxs)(d,{onClick:N,disabled:!O.trim()||!A.trim()||M,className:a(`w-full gap-2`,``),children:[M?(0,h.jsx)(o,{className:`h-4 w-4 animate-spin`}):(0,h.jsx)(u,{className:`h-4 w-4`}),U(M?`modelManager.modals.create.creating`:`modelManager.modals.create.button`)]})]})]})]}),document.body),P&&(0,m.createPortal)((0,h.jsxs)(`div`,{className:`fixed inset-0 z-[999999] flex items-center justify-center p-4`,children:[(0,h.jsx)(`div`,{className:`absolute inset-0 bg-black/50 backdrop-blur-sm`,onClick:()=>F(!1)}),(0,h.jsxs)(`div`,{ref:J,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`${W}-embeddings-title`,tabIndex:-1,className:a(`relative w-full max-w-lg rounded-xl border shadow-2xl`,`bg-white dark:bg-dark-100`,`border-gray-200 dark:border-dark-300`),children:[(0,h.jsxs)(`div`,{className:a(`flex items-center justify-between p-4 border-b`,`border-gray-200 dark:border-dark-300`),children:[(0,h.jsx)(`h3`,{id:`${W}-embeddings-title`,className:`text-lg font-semibold text-gray-900 dark:text-gray-100`,children:U(`modelManager.modals.embeddings.title`)}),(0,h.jsx)(`button`,{type:`button`,"aria-label":U(`common.close`),onClick:()=>F(!1),className:`p-1.5 rounded-lg hover:bg-gray-100 dark:hover:bg-dark-200`,children:(0,h.jsx)(c,{className:`h-5 w-5 text-gray-500`})})]}),(0,h.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`label`,{htmlFor:`${W}-embeddings-model`,className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:U(`modelManager.modals.embeddings.model`)}),(0,h.jsxs)(`select`,{id:`${W}-embeddings-model`,value:I,onChange:e=>L(e.target.value),className:a(`w-full px-3 py-2 rounded-lg border text-sm`,`bg-gray-50 dark:bg-dark-50`,`border-gray-200 dark:border-dark-300`,`text-gray-900 dark:text-gray-100`),children:[(0,h.jsx)(`option`,{value:``,children:U(`modelManager.modals.embeddings.selectModel`)}),e.map(e=>(0,h.jsx)(`option`,{value:e.name,children:e.name},e.name))]}),(0,h.jsx)(`p`,{className:`mt-1 text-xs text-gray-500`,children:U(`modelManager.modals.embeddings.recommended`)})]}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`label`,{htmlFor:`${W}-embeddings-input`,className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:U(`modelManager.modals.embeddings.input`)}),(0,h.jsx)(`textarea`,{id:`${W}-embeddings-input`,value:R,onChange:e=>z(e.target.value),placeholder:U(`modelManager.modals.embeddings.placeholder`),rows:3,className:a(`w-full px-3 py-2 rounded-lg border text-sm`,`bg-gray-50 dark:bg-dark-50`,`border-gray-200 dark:border-dark-300`,`text-gray-900 dark:text-gray-100`,`placeholder-gray-500`,`resize-none`)})]}),(0,h.jsxs)(d,{onClick:H,disabled:!I.trim()||!R.trim()||V,className:a(`w-full gap-2`,``),children:[V?(0,h.jsx)(o,{className:`h-4 w-4 animate-spin`}):(0,h.jsx)(l,{className:`h-4 w-4`}),U(V?`modelManager.modals.embeddings.generating`:`modelManager.modals.embeddings.button`)]}),B&&(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`label`,{className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:U(`modelManager.modals.embeddings.result`,{count:B.length})}),(0,h.jsxs)(`pre`,{className:a(`p-3 rounded-lg text-xs overflow-x-auto max-h-32`,`bg-gray-50 dark:bg-dark-50`,`text-gray-700 dark:text-gray-300`),children:[`[`,B.slice(0,10).join(`, `),B.length>10&&`, ...`,` ]`]})]})]})]})]}),document.body)]})};export{g as ModelManagerModals,g as default};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-vendor-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-vendor-wiHys0m2.js";import{i as r}from"./router-vendor-HZm4FR0A.js";import{t as i}from"./logger-BR4forr_.js";import{t as a}from"./useTranslation-B9kflK9S.js";import{i as o,t as s}from"./utils-p8Gt72YP.js";import{t as c}from"./chatStore-CK5ojwft.js";import{B as ee,Cn as te,G as ne,Lt as l,M as u,On as re,P as d,Y as f,_r as p,et as ie,it as m,lt as h,m as g,mt as _,n as v,ot as y,s as b,v as ae,wr as x}from"./ui-vendor-BhHHyHk3.js";import{A as S,j as C}from"./api-DPXCtanG.js";import{t as w}from"./Button-CGMYia4g.js";import"./ui-D5-4niRk.js";import{t as oe}from"./RichMessageContent-DxCHlUlY.js";var T=e(t(),1),E=4e3,D=(e,t)=>{let n=e.split(`
|
|
2
2
|
`),r=t.split(`
|
|
3
|
-
`);if(n.length>E||r.length>E)return[...n.map(e=>({type:`removed`,text:e})),...r.map(e=>({type:`added`,text:e}))];let i=Array.from({length:n.length+1},()=>Array(r.length+1).fill(0));for(let e=n.length-1;e>=0;--e)for(let t=r.length-1;t>=0;--t)i[e][t]=n[e]===r[t]?i[e+1][t+1]+1:Math.max(i[e+1][t],i[e][t+1]);let a=[],o=0,s=0;for(;o<n.length&&s<r.length;)n[o]===r[s]?(a.push({type:`context`,text:n[o]}),o+=1,s+=1):i[o+1][s]>=i[o][s+1]?(a.push({type:`removed`,text:n[o]}),o+=1):(a.push({type:`added`,text:r[s]}),s+=1);for(;o<n.length;)a.push({type:`removed`,text:n[o]}),o+=1;for(;s<r.length;)a.push({type:`added`,text:r[s]}),s+=1;return a},O=e=>e.some(e=>e.type!==`context`),k=n(),A=i(`components:note-tools`),j=({rows:e})=>(0,k.jsx)(`div`,{className:`max-h-64 overflow-auto rounded-lg border border-black/[0.06] font-mono text-[12px] leading-relaxed dark:border-white/[0.08]`,"data-testid":`note-diff-view`,children:e.map((e,t)=>(0,k.jsx)(`div`,{className:s(`whitespace-pre-wrap px-2`,e.type===`added`&&`bg-[rgb(76,212,117)]/[0.12] text-green-800 dark:text-green-300`,e.type===`removed`&&`bg-[rgb(255,61,129)]/[0.10] text-red-800 line-through dark:text-red-300`,e.type===`context`&&`text-gray-600 dark:text-dark-700`),children:e.text||`\xA0`},t))}),M=({note:e,currentContent:t,currentTitle:n,canWrite:r,isOwner:i,initialTab:te,onClose:ne,onApplyContent:d})=>{let{t:p,i18n:ie}=a(),[m,_]=(0,T.useState)(te),[y,b]=(0,T.useState)(null),[oe,E]=(0,T.useState)(null),[M,N]=(0,T.useState)(null),[se,P]=(0,T.useState)(!1),F=(0,T.useRef)(null),[I,ce]=(0,T.useState)(null),[L,R]=(0,T.useState)(``),[z,B]=(0,T.useState)(`read`),[V,H]=(0,T.useState)(!1),[U,W]=(0,T.useState)(``),[G,K]=(0,T.useState)(!1),[q,J]=(0,T.useState)(null),Y=c(e=>e.selectedModel),X=c(e=>e.selectedProviderType),le=c(e=>e.selectedProviderId),ue=(0,T.useCallback)(()=>{C.getRevisions(e.id).then(e=>{e.success&&Array.isArray(e.data)&&b(e.data)}).catch(e=>A.error(`Failed to load revisions:`,e))},[e.id]),Z=(0,T.useCallback)(()=>{C.getAttachments(e.id).then(e=>{e.success&&Array.isArray(e.data)&&N(e.data)}).catch(e=>A.error(`Failed to load attachments:`,e))},[e.id]),Q=(0,T.useCallback)(()=>{S.listGrants(`note`,e.id).then(e=>{e.success&&Array.isArray(e.data)&&ce(e.data)}).catch(e=>A.error(`Failed to load shares:`,e))},[e.id]);(0,T.useEffect)(()=>{m===`revisions`&&y===null&&ue(),m===`attachments`&&M===null&&Z(),m===`share`&&i&&I===null&&Q()},[m,y,M,I,i,ue,Z,Q]);let de=async t=>{try{let n=await C.restoreRevision(e.id,t);n.success&&n.data?(d(n.data.content,n.data.title),b(null),E(null),x.success(p(`notes.revisionRestored`))):x.error(n.error||p(`notes.revisionRestoreFailed`))}catch(e){A.error(`Failed to restore revision:`,e),x.error(p(`notes.revisionRestoreFailed`))}},fe=async t=>{if(t&&t.length!==0){P(!0);try{let n=await C.uploadAttachment(e.id,t[0]);n.success?(Z(),x.success(p(`notes.attachmentAdded`))):x.error(n.error||p(`notes.attachmentFailed`))}catch(e){A.error(`Failed to upload attachment:`,e),x.error(p(`notes.attachmentFailed`))}finally{P(!1),F.current&&(F.current.value=``)}}},pe=async t=>{try{let n=await C.downloadAttachment(e.id,t.id),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=t.filename,i.click(),URL.revokeObjectURL(r)}catch(e){A.error(`Failed to download attachment:`,e),x.error(p(`notes.attachmentDownloadFailed`))}},me=async t=>{try{(await C.deleteAttachment(e.id,t)).success&&Z()}catch(e){A.error(`Failed to delete attachment:`,e)}},he=async()=>{let t=L.trim();if(t){H(!0);try{let n=await S.resolvePrincipal(t);if(!n.success||!n.data){x.error(p(`notes.shareUserNotFound`));return}let r=await S.createGrant({resourceType:`note`,resourceId:e.id,principalType:`user`,principalId:n.data.id,permission:z});r.success?(R(``),Q(),x.success(p(`notes.shareAdded`,{username:t}))):x.error(r.error||p(`notes.shareFailed`))}catch(e){A.error(`Failed to share note:`,e),x.error(p(`notes.shareFailed`))}finally{H(!1)}}},ge=async e=>{try{(await S.deleteGrant(e)).success&&Q()}catch(e){A.error(`Failed to revoke share:`,e)}},_e=async()=>{if(U.trim()&&Y){K(!0),J(null);try{let t=await C.assist(e.id,{instruction:U,model:Y,providerType:X,providerId:le});t.success&&t.data?.content!==void 0?J(t.data.content):x.error(t.error||p(`notes.assistFailed`))}catch(e){A.error(`Note assist failed:`,e),x.error(p(`notes.assistFailed`))}finally{K(!1)}}},$=(0,T.useMemo)(()=>q===null?null:D(t,q),[q,t]),ve=[{id:`revisions`,icon:(0,k.jsx)(f,{className:`h-3.5 w-3.5`}),label:p(`notes.revisions`)},{id:`attachments`,icon:(0,k.jsx)(h,{className:`h-3.5 w-3.5`}),label:p(`notes.attachments`)},{id:`share`,icon:(0,k.jsx)(ee,{className:`h-3.5 w-3.5`}),label:p(`notes.share`),hidden:!i},{id:`assist`,icon:(0,k.jsx)(u,{className:`h-3.5 w-3.5`}),label:p(`notes.assist`),hidden:!r}];return(0,k.jsxs)(`div`,{className:`absolute inset-y-0 end-0 z-30 flex w-full max-w-md flex-col border-s border-black/[0.06] bg-surface shadow-xl dark:border-white/[0.07] dark:bg-dark-100`,"data-testid":`note-tools-drawer`,role:`dialog`,"aria-label":p(`notes.tools`),children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-1 border-b border-black/[0.06] px-3 py-2 dark:border-white/[0.07]`,children:[ve.filter(e=>!e.hidden).map(e=>(0,k.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":m===e.id,onClick:()=>_(e.id),"data-testid":`note-tools-tab-${e.id}`,className:s(`flex items-center gap-1.5 rounded-lg px-2.5 py-1.5 text-[12px] transition-colors`,m===e.id?`bg-black/[0.06] text-gray-900 dark:bg-white/[0.08] dark:text-dark-900`:`text-gray-500 hover:text-gray-800 dark:text-dark-500 dark:hover:text-dark-800`),children:[e.icon,e.label]},e.id)),(0,k.jsx)(`button`,{type:`button`,onClick:ne,className:`ms-auto rounded-md p-1.5 text-gray-400 hover:text-gray-700 dark:text-dark-500 dark:hover:text-dark-800`,"aria-label":p(`common.close`),"data-testid":`note-tools-close`,children:(0,k.jsx)(v,{className:`h-4 w-4`})})]}),(0,k.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-4 scrollbar-thin`,children:[m===`revisions`&&(0,k.jsx)(`div`,{className:`space-y-2`,children:y===null?(0,k.jsx)(l,{className:`mx-auto h-4 w-4 animate-spin text-gray-400`}):y.length===0?(0,k.jsx)(`p`,{className:`text-center text-xs text-gray-400 dark:text-dark-500`,children:p(`notes.noRevisions`)}):y.map(e=>(0,k.jsxs)(`div`,{className:`rounded-lg border border-black/[0.06] p-2.5 dark:border-white/[0.08]`,"data-testid":`note-revision-item`,children:[(0,k.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,k.jsxs)(`button`,{type:`button`,onClick:()=>E(t=>t===e.id?null:e.id),className:`min-w-0 flex-1 truncate text-start text-[13px] text-gray-800 dark:text-dark-800`,children:[o(e.createdAt,ie.language),e.title!==n&&(0,k.jsxs)(`span`,{className:`ms-1 text-gray-400 dark:text-dark-500`,children:[`· `,e.title||p(`notes.untitled`)]})]}),r&&(0,k.jsxs)(w,{size:`sm`,variant:`ghost`,className:`h-7 gap-1 px-2 text-[11px]`,onClick:()=>void de(e.id),"data-testid":`note-revision-restore`,children:[(0,k.jsx)(g,{className:`h-3 w-3`}),p(`notes.restore`)]})]}),oe===e.id&&(0,k.jsx)(`div`,{className:`mt-2`,children:(0,k.jsx)(j,{rows:D(e.content,t)})})]},e.id))}),m===`attachments`&&(0,k.jsxs)(`div`,{className:`space-y-2`,children:[r&&(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(`input`,{ref:F,type:`file`,className:`hidden`,onChange:e=>void fe(e.target.files),"data-testid":`note-attachment-input`}),(0,k.jsxs)(w,{size:`sm`,variant:`outline`,className:`w-full gap-1.5`,disabled:se,onClick:()=>F.current?.click(),"data-testid":`note-attachment-upload`,children:[se?(0,k.jsx)(l,{className:`h-3.5 w-3.5 animate-spin`}):(0,k.jsx)(h,{className:`h-3.5 w-3.5`}),p(`notes.addAttachment`)]})]}),M===null?(0,k.jsx)(l,{className:`mx-auto h-4 w-4 animate-spin text-gray-400`}):M.length===0?(0,k.jsx)(`p`,{className:`text-center text-xs text-gray-400 dark:text-dark-500`,children:p(`notes.noAttachments`)}):M.map(e=>(0,k.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-black/[0.06] px-2.5 py-2 dark:border-white/[0.08]`,"data-testid":`note-attachment-item`,children:[(0,k.jsx)(h,{className:`h-3.5 w-3.5 shrink-0 text-gray-400 dark:text-dark-500`}),(0,k.jsx)(`span`,{dir:`ltr`,className:`min-w-0 flex-1 truncate text-[13px] text-gray-800 dark:text-dark-800`,children:e.filename}),(0,k.jsxs)(`span`,{className:`shrink-0 text-[11px] text-gray-400 dark:text-dark-500`,children:[Math.max(1,Math.round(e.size/1024)),` KB`]}),(0,k.jsx)(`button`,{type:`button`,onClick:()=>void pe(e),className:`rounded-md p-1 text-gray-400 hover:text-gray-700 dark:text-dark-500 dark:hover:text-dark-800`,title:p(`common.download`),children:(0,k.jsx)(re,{className:`h-3.5 w-3.5`})}),r&&(0,k.jsx)(`button`,{type:`button`,onClick:()=>void me(e.id),className:`rounded-md p-1 text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20`,title:p(`common.delete`),children:(0,k.jsx)(ae,{className:`h-3.5 w-3.5`})})]},e.id))]}),m===`share`&&i&&(0,k.jsxs)(`div`,{className:`space-y-3`,children:[(0,k.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,k.jsx)(`input`,{type:`text`,value:L,onChange:e=>R(e.target.value),onKeyDown:e=>{e.key===`Enter`&&he()},placeholder:p(`notes.shareUsernamePlaceholder`),className:`min-w-0 flex-1 rounded-lg border border-black/[0.08] bg-transparent px-2.5 py-1.5 text-[13px] text-gray-900 placeholder:text-gray-400 focus:border-primary-500/40 focus:outline-none dark:border-white/[0.1] dark:text-dark-900`,"data-testid":`note-share-username`}),(0,k.jsxs)(`select`,{value:z,onChange:e=>B(e.target.value),className:`rounded-lg border border-black/[0.08] bg-transparent px-2 py-1.5 text-[12px] text-gray-700 focus:outline-none dark:border-white/[0.1] dark:bg-dark-100 dark:text-dark-800`,"data-testid":`note-share-permission`,children:[(0,k.jsx)(`option`,{value:`read`,children:p(`notes.permissionRead`)}),(0,k.jsx)(`option`,{value:`write`,children:p(`notes.permissionWrite`)})]}),(0,k.jsx)(w,{size:`sm`,disabled:V||!L.trim(),onClick:()=>void he(),"data-testid":`note-share-submit`,children:V?(0,k.jsx)(l,{className:`h-3.5 w-3.5 animate-spin`}):p(`notes.shareAction`)})]}),I===null?(0,k.jsx)(l,{className:`mx-auto h-4 w-4 animate-spin text-gray-400`}):I.length===0?(0,k.jsx)(`p`,{className:`text-center text-xs text-gray-400 dark:text-dark-500`,children:p(`notes.notShared`)}):I.map(e=>(0,k.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-black/[0.06] px-2.5 py-2 dark:border-white/[0.08]`,"data-testid":`note-share-item`,children:[(0,k.jsx)(ee,{className:`h-3.5 w-3.5 shrink-0 text-gray-400 dark:text-dark-500`}),(0,k.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[13px] text-gray-800 dark:text-dark-800`,children:e.principalId}),(0,k.jsx)(`span`,{className:`shrink-0 text-[11px] uppercase text-gray-400 dark:text-dark-500`,children:e.permission}),(0,k.jsx)(`button`,{type:`button`,onClick:()=>void ge(e.id),className:`rounded-md p-1 text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20`,title:p(`notes.revokeShare`),children:(0,k.jsx)(v,{className:`h-3.5 w-3.5`})})]},e.id)),(0,k.jsx)(`p`,{className:`text-[11px] leading-relaxed text-gray-400 dark:text-dark-500`,children:p(`notes.shareHint`)})]}),m===`assist`&&r&&(0,k.jsxs)(`div`,{className:`space-y-3`,children:[(0,k.jsx)(`textarea`,{value:U,onChange:e=>W(e.target.value),placeholder:p(`notes.assistPlaceholder`),rows:3,className:`w-full resize-none rounded-lg border border-black/[0.08] bg-transparent px-2.5 py-2 text-[13px] text-gray-900 placeholder:text-gray-400 focus:border-primary-500/40 focus:outline-none dark:border-white/[0.1] dark:text-dark-900`,"data-testid":`note-assist-instruction`}),(0,k.jsxs)(w,{size:`sm`,className:`w-full gap-1.5`,disabled:G||!U.trim()||!Y,onClick:()=>void _e(),"data-testid":`note-assist-generate`,children:[G?(0,k.jsx)(l,{className:`h-3.5 w-3.5 animate-spin`}):(0,k.jsx)(u,{className:`h-3.5 w-3.5`}),p(`notes.assistGenerate`)]}),!Y&&(0,k.jsx)(`p`,{className:`text-[11px] text-amber-600 dark:text-amber-400`,children:p(`notes.assistNoModel`)}),q!==null&&$&&(0,k.jsxs)(`div`,{className:`space-y-2`,children:[O($)?(0,k.jsx)(j,{rows:$}):(0,k.jsx)(`p`,{className:`text-center text-xs text-gray-400 dark:text-dark-500`,children:p(`notes.assistNoChanges`)}),(0,k.jsxs)(`div`,{className:`flex gap-2`,children:[(0,k.jsx)(w,{size:`sm`,className:`flex-1`,disabled:!O($),onClick:()=>{d(q),J(null),W(``),x.success(p(`notes.assistApplied`))},"data-testid":`note-assist-apply`,children:p(`notes.assistApply`)}),(0,k.jsx)(w,{size:`sm`,variant:`outline`,className:`flex-1`,onClick:()=>J(null),"data-testid":`note-assist-discard`,children:p(`notes.assistDiscard`)})]}),(0,k.jsx)(`p`,{className:`text-[11px] leading-relaxed text-gray-400 dark:text-dark-500`,children:p(`notes.assistRevisionHint`)})]})]})]})]})},N=i(`pages:notes`),se=800,P=()=>{let{t:e,i18n:t}=a(),[n,i]=(0,T.useState)([]),[c,ee]=(0,T.useState)(!0),[l,u]=(0,T.useState)(null),[f,h]=(0,T.useState)(``),[g,v]=(0,T.useState)(``),[S,E]=(0,T.useState)(``),[D,O]=(0,T.useState)(!0),[A,j]=(0,T.useState)(`idle`),[P,F]=(0,T.useState)(null),I=(0,T.useRef)(null),ce=(0,T.useRef)(null),[L,R]=r(),z=(0,T.useMemo)(()=>n.find(e=>e.id===l)??null,[n,l]);(0,T.useEffect)(()=>{let e=!1;return C.getNotes().then(t=>{e||t.success&&t.data&&i(t.data)}).catch(e=>N.error(`Failed to load notes:`,e)).finally(()=>{e||ee(!1)}),()=>{e=!0}},[]);let B=L.get(`note`),V=B?n.find(e=>e.id===B):void 0;V&&l!==V.id&&(u(V.id),v(V.title),E(V.content),O(!0),j(`idle`));let H=B!==null&&(V!==void 0||!c);(0,T.useEffect)(()=>{H&&R({},{replace:!0})},[H,R]);let U=!z||!z.shared,W=z?!z.shared||z.shared.permission===`write`:!1,G=(e,t=`preview`)=>{X(),u(e.id),v(e.title),E(e.content),O(t===`preview`),j(`idle`),F(null)},K=async()=>{if(z)try{let e=await C.updateNote(z.id,{pinned:!z.pinned});if(e.success&&e.data){let t=e.data;i(e=>e.map(e=>e.id===t.id?t:e))}}catch(e){N.error(`Failed to toggle pin:`,e)}},q=()=>{if(!z)return;let e=new Blob([S],{type:`text/markdown;charset=utf-8`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`${(g||`note`).replace(/[\\/:*?"<>|]/g,`-`)}.md`,n.click(),URL.revokeObjectURL(t)},J=(e,t,n)=>{I.current!==null&&window.clearTimeout(I.current),j(`saving`),I.current=window.setTimeout(()=>{I.current=null,Y(e,t,n)},se)},Y=async(t,n,r)=>{try{let e=await C.updateNote(t,{title:n,content:r});if(e.success&&e.data){let n=e.data;i(e=>[n,...e.filter(e=>e.id!==t)].sort((e,t)=>t.updatedAt-e.updatedAt)),j(`saved`)}}catch(t){N.error(`Failed to save note:`,t),x.error(e(`notes.saveFailed`)),j(`idle`)}},X=()=>{I.current!==null&&l&&(window.clearTimeout(I.current),I.current=null,Y(l,g,S))};(0,T.useEffect)(()=>()=>{I.current!==null&&window.clearTimeout(I.current)},[]);let le=async()=>{try{let e=await C.createNote(``,``);if(e.success&&e.data){let t=e.data;i(e=>[t,...e]),G(t,`edit`)}}catch(t){N.error(`Failed to create note:`,t),x.error(e(`notes.createFailed`))}},ue=async t=>{if(window.confirm(e(`notes.deleteConfirm`)))try{(await C.deleteNote(t)).success&&(i(e=>e.filter(e=>e.id!==t)),l===t&&u(null))}catch(t){N.error(`Failed to delete note:`,t),x.error(e(`notes.deleteFailed`))}},Z=(0,T.useMemo)(()=>{let e=f.trim().toLowerCase();return e?n.filter(t=>t.title.toLowerCase().includes(e)||t.content.toLowerCase().includes(e)):n},[n,f]);return(0,k.jsxs)(`div`,{className:`relative flex h-full min-h-0 overflow-hidden`,"data-testid":`notes-page`,children:[(0,k.jsxs)(`div`,{"data-testid":`notes-list`,className:s(`min-h-0 w-full shrink-0 flex-col border-e border-black/[0.06] dark:border-white/[0.07] md:w-72`,z?`hidden md:flex`:`flex`),children:[(0,k.jsxs)(`div`,{className:`flex items-center justify-between px-4 pb-2 pt-4`,children:[(0,k.jsx)(`h1`,{className:`text-sm font-semibold text-gray-900 dark:text-dark-900`,children:e(`notes.title`)}),(0,k.jsx)(w,{size:`sm`,variant:`ghost`,onClick:()=>void le(),className:`h-7 w-7 p-0`,title:e(`notes.new`),children:(0,k.jsx)(m,{className:`h-4 w-4`})})]}),(0,k.jsxs)(`div`,{className:`relative mx-3 mb-2`,children:[(0,k.jsx)(ne,{className:`pointer-events-none absolute start-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-gray-400 dark:text-dark-500`}),(0,k.jsx)(`input`,{ref:ce,type:`search`,value:f,onChange:e=>h(e.target.value),placeholder:e(`common.search`),"aria-label":e(`common.search`),className:`w-full rounded-lg border border-transparent bg-black/[0.04] py-1.5 pe-2.5 ps-8 text-base text-gray-900 placeholder:text-gray-400 focus:border-primary-500/40 focus:outline-none dark:bg-white/[0.05] dark:text-dark-900 dark:placeholder:text-dark-500 sm:text-[13px]`})]}),(0,k.jsx)(`div`,{className:`scroll-region min-h-0 flex-1 overflow-y-auto px-2 pb-3 scrollbar-thin`,children:c?null:Z.length===0?(0,k.jsxs)(`div`,{className:`px-3 py-10 text-center`,children:[(0,k.jsx)(_,{className:`mx-auto mb-2 h-6 w-6 text-gray-300 dark:text-dark-400`}),(0,k.jsx)(`p`,{className:`text-xs text-gray-500 dark:text-dark-500`,role:`status`,children:f.trim()?e(`common.noResults`):e(`notes.empty`)}),f.trim()&&(0,k.jsx)(w,{size:`sm`,variant:`ghost`,className:`mt-2`,onClick:()=>{h(``),ce.current?.focus()},children:e(`common.clear`)})]}):(0,k.jsx)(`div`,{className:`space-y-0.5`,children:Z.map(n=>(0,k.jsxs)(`div`,{"data-testid":`note-list-item`,className:s(`group relative flex items-center rounded-lg transition-colors`,l===n.id?`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,k.jsxs)(`button`,{type:`button`,onClick:()=>G(n),"aria-label":n.title||e(`notes.untitled`),"aria-current":l===n.id?`true`:void 0,className:`min-w-0 flex-1 rounded-lg px-2.5 py-2 text-start focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 focus-visible:ring-offset-canvas`,children:[(0,k.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1 truncate text-[13px] font-medium text-gray-900 dark:text-dark-900`,children:[n.pinned&&(0,k.jsx)(ie,{className:`h-3 w-3 shrink-0 text-primary-500`,"aria-label":e(`notes.pinned`)}),n.shared&&(0,k.jsx)(b,{className:`h-3 w-3 shrink-0 text-gray-400 dark:text-dark-500`,"aria-label":e(`notes.sharedWithYou`)}),(0,k.jsx)(`span`,{className:`truncate`,children:n.title||e(`notes.untitled`)})]}),(0,k.jsxs)(`span`,{className:`mt-0.5 block truncate text-[11px] text-gray-500 dark:text-dark-500`,children:[o(n.updatedAt,t.language),n.content.trim()&&(0,k.jsxs)(k.Fragment,{children:[` · `,n.content.trim().slice(0,60)]})]})]}),!n.shared&&(0,k.jsx)(`button`,{type:`button`,onClick:()=>void ue(n.id),className:`me-1.5 shrink-0 rounded-md p-1.5 text-gray-500 opacity-100 transition-opacity hover:bg-red-50 hover:text-red-600 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 sm:opacity-0 sm:group-hover:opacity-100 sm:group-focus-within:opacity-100 dark:text-dark-500 dark:hover:bg-red-900/20 dark:hover:text-red-400`,title:e(`common.delete`),"aria-label":`${e(`common.delete`)}: ${n.title||e(`notes.untitled`)}`,children:(0,k.jsx)(ae,{className:`h-3 w-3`,"aria-hidden":`true`})})]},n.id))})})]}),(0,k.jsx)(`div`,{"data-testid":`notes-editor`,className:s(`min-w-0 flex-1 flex-col`,z?`flex`:`hidden md:flex`),children:z?(0,k.jsxs)(k.Fragment,{children:[(0,k.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5 border-b border-black/[0.06] px-2.5 py-2.5 dark:border-white/[0.07] sm:gap-2 sm:px-5 sm:py-3`,children:[(0,k.jsx)(w,{size:`sm`,variant:`ghost`,onClick:()=>{X(),u(null),O(!0)},className:`h-9 w-9 shrink-0 p-0 md:hidden`,title:`${e(`common.back`)}: ${e(`notes.title`)}`,"aria-label":`${e(`common.back`)}: ${e(`notes.title`)}`,"data-testid":`notes-mobile-back`,children:(0,k.jsx)(p,{className:`h-4 w-4 rtl:rotate-180`})}),D?(0,k.jsx)(`h2`,{"data-testid":`notes-title-preview`,dir:`auto`,className:`min-w-0 flex-1 truncate text-base font-semibold text-gray-950 dark:text-dark-950 sm:text-lg`,children:g||e(`notes.untitled`)}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(`input`,{"data-testid":`notes-title-editor`,dir:`auto`,readOnly:!W,value:g,onChange:e=>{v(e.target.value),J(z.id,e.target.value,S)},placeholder:e(`notes.untitled`),className:`min-w-0 flex-1 bg-transparent text-base font-semibold text-gray-950 placeholder:text-gray-400 focus:outline-none dark:text-dark-950 dark:placeholder:text-dark-500 sm:text-lg`}),(0,k.jsx)(`span`,{className:`hidden shrink-0 text-[11px] text-gray-400 dark:text-dark-500 sm:inline`,"aria-live":`polite`,children:A===`saving`?e(`common.saving`):A===`saved`?e(`notes.saved`):``})]}),U&&(0,k.jsx)(w,{size:`sm`,variant:`ghost`,onClick:()=>void K(),className:s(`hidden h-8 w-8 shrink-0 p-0 sm:flex`,z.pinned&&`text-primary-500`),title:z.pinned?e(`notes.unpin`):e(`notes.pin`),"aria-label":z.pinned?e(`notes.unpin`):e(`notes.pin`),"data-testid":`notes-pin-toggle`,children:(0,k.jsx)(ie,{className:`h-3.5 w-3.5`})}),(0,k.jsx)(w,{size:`sm`,variant:`ghost`,onClick:q,className:`hidden h-8 w-8 shrink-0 p-0 sm:flex`,title:e(`notes.export`),"aria-label":e(`notes.export`),"data-testid":`notes-export`,children:(0,k.jsx)(re,{className:`h-3.5 w-3.5`})}),(0,k.jsx)(w,{size:`sm`,variant:`ghost`,onClick:()=>F(e=>e===null?`revisions`:null),className:`h-9 w-9 shrink-0 p-0 sm:h-8 sm:w-8`,title:e(`notes.tools`),"aria-label":e(`notes.tools`),"aria-expanded":P!==null,"data-testid":`notes-tools-toggle`,children:(0,k.jsx)(d,{className:`h-3.5 w-3.5`})}),(0,k.jsx)(w,{size:`sm`,variant:`ghost`,onClick:()=>{D||X(),O(e=>!e)},className:`h-9 w-9 shrink-0 gap-1.5 p-0 text-xs sm:h-8 sm:w-auto sm:px-2.5`,title:e(D?`common.edit`:`artifacts.preview`),"aria-label":e(D?`common.edit`:`artifacts.preview`),"data-testid":`notes-preview-toggle`,children:D?(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(y,{className:`h-3.5 w-3.5`}),(0,k.jsx)(`span`,{className:`hidden sm:inline`,children:e(`common.edit`)})]}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(te,{className:`h-3.5 w-3.5`}),(0,k.jsx)(`span`,{className:`hidden sm:inline`,children:e(`artifacts.preview`)})]})})]}),D?(0,k.jsx)(`div`,{"data-testid":`notes-preview`,className:`scroll-region min-h-0 flex-1 overflow-y-auto px-4 py-3 scrollbar-thin sm:px-5 sm:py-4`,children:(0,k.jsx)(oe,{content:S,allowHtml:!0,className:`mx-auto w-full max-w-5xl pb-12`})}):(0,k.jsx)(`textarea`,{"data-testid":`notes-content-editor`,dir:`auto`,readOnly:!W,value:S,onChange:e=>{E(e.target.value),J(z.id,g,e.target.value)},onBlur:X,placeholder:e(`notes.contentPlaceholder`),className:`min-h-0 flex-1 resize-none bg-transparent px-4 py-3 font-mono text-base leading-relaxed text-gray-900 placeholder:text-gray-400 focus:outline-none dark:text-dark-900 dark:placeholder:text-dark-500 sm:px-5 sm:py-4 sm:text-[13.5px]`}),P!==null&&(0,k.jsx)(M,{note:z,currentContent:S,currentTitle:g,canWrite:W,isOwner:U,initialTab:P,onClose:()=>F(null),onApplyContent:(e,t)=>{E(e),t!==void 0&&v(t),Y(z.id,t===void 0?g:t,e)}})]}):(0,k.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,k.jsxs)(`div`,{className:`text-center`,children:[(0,k.jsx)(_,{className:`mx-auto mb-3 h-8 w-8 text-gray-300 dark:text-dark-400`}),(0,k.jsx)(`p`,{className:`text-sm text-gray-500 dark:text-dark-600`,children:e(`notes.selectOrCreate`)}),(0,k.jsxs)(w,{size:`sm`,onClick:()=>void le(),className:`mt-4 gap-1.5`,children:[(0,k.jsx)(m,{className:`h-3.5 w-3.5`}),e(`notes.new`)]})]})})})]})};export{P as NotesPage,P as default};
|
|
3
|
+
`);if(n.length>E||r.length>E)return[...n.map(e=>({type:`removed`,text:e})),...r.map(e=>({type:`added`,text:e}))];let i=Array.from({length:n.length+1},()=>Array(r.length+1).fill(0));for(let e=n.length-1;e>=0;--e)for(let t=r.length-1;t>=0;--t)i[e][t]=n[e]===r[t]?i[e+1][t+1]+1:Math.max(i[e+1][t],i[e][t+1]);let a=[],o=0,s=0;for(;o<n.length&&s<r.length;)n[o]===r[s]?(a.push({type:`context`,text:n[o]}),o+=1,s+=1):i[o+1][s]>=i[o][s+1]?(a.push({type:`removed`,text:n[o]}),o+=1):(a.push({type:`added`,text:r[s]}),s+=1);for(;o<n.length;)a.push({type:`removed`,text:n[o]}),o+=1;for(;s<r.length;)a.push({type:`added`,text:r[s]}),s+=1;return a},O=e=>e.some(e=>e.type!==`context`),k=n(),A=i(`components:note-tools`),j=({rows:e})=>(0,k.jsx)(`div`,{className:`max-h-64 overflow-auto rounded-lg border border-black/[0.06] font-mono text-[12px] leading-relaxed dark:border-white/[0.08]`,"data-testid":`note-diff-view`,children:e.map((e,t)=>(0,k.jsx)(`div`,{className:s(`whitespace-pre-wrap px-2`,e.type===`added`&&`bg-[rgb(76,212,117)]/[0.12] text-green-800 dark:text-green-300`,e.type===`removed`&&`bg-[rgb(255,61,129)]/[0.10] text-red-800 line-through dark:text-red-300`,e.type===`context`&&`text-gray-600 dark:text-dark-700`),children:e.text||`\xA0`},t))}),M=({note:e,currentContent:t,currentTitle:n,canWrite:r,isOwner:i,initialTab:te,onClose:ne,onApplyContent:d})=>{let{t:p,i18n:ie}=a(),[m,_]=(0,T.useState)(te),[y,b]=(0,T.useState)(null),[oe,E]=(0,T.useState)(null),[M,N]=(0,T.useState)(null),[se,P]=(0,T.useState)(!1),F=(0,T.useRef)(null),[I,ce]=(0,T.useState)(null),[L,R]=(0,T.useState)(``),[z,B]=(0,T.useState)(`read`),[V,H]=(0,T.useState)(!1),[U,W]=(0,T.useState)(``),[G,K]=(0,T.useState)(!1),[q,J]=(0,T.useState)(null),Y=c(e=>e.selectedModel),X=c(e=>e.selectedProviderType),le=c(e=>e.selectedProviderId),ue=(0,T.useCallback)(()=>{C.getRevisions(e.id).then(e=>{e.success&&Array.isArray(e.data)&&b(e.data)}).catch(e=>A.error(`Failed to load revisions:`,e))},[e.id]),Z=(0,T.useCallback)(()=>{C.getAttachments(e.id).then(e=>{e.success&&Array.isArray(e.data)&&N(e.data)}).catch(e=>A.error(`Failed to load attachments:`,e))},[e.id]),Q=(0,T.useCallback)(()=>{S.listGrants(`note`,e.id).then(e=>{e.success&&Array.isArray(e.data)&&ce(e.data)}).catch(e=>A.error(`Failed to load shares:`,e))},[e.id]);(0,T.useEffect)(()=>{m===`revisions`&&y===null&&ue(),m===`attachments`&&M===null&&Z(),m===`share`&&i&&I===null&&Q()},[m,y,M,I,i,ue,Z,Q]);let de=async t=>{try{let n=await C.restoreRevision(e.id,t);n.success&&n.data?(d(n.data.content,n.data.title),b(null),E(null),x.success(p(`notes.revisionRestored`))):x.error(n.error||p(`notes.revisionRestoreFailed`))}catch(e){A.error(`Failed to restore revision:`,e),x.error(p(`notes.revisionRestoreFailed`))}},fe=async t=>{if(t&&t.length!==0){P(!0);try{let n=await C.uploadAttachment(e.id,t[0]);n.success?(Z(),x.success(p(`notes.attachmentAdded`))):x.error(n.error||p(`notes.attachmentFailed`))}catch(e){A.error(`Failed to upload attachment:`,e),x.error(p(`notes.attachmentFailed`))}finally{P(!1),F.current&&(F.current.value=``)}}},pe=async t=>{try{let n=await C.downloadAttachment(e.id,t.id),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=t.filename,i.click(),URL.revokeObjectURL(r)}catch(e){A.error(`Failed to download attachment:`,e),x.error(p(`notes.attachmentDownloadFailed`))}},me=async t=>{try{(await C.deleteAttachment(e.id,t)).success&&Z()}catch(e){A.error(`Failed to delete attachment:`,e)}},he=async()=>{let t=L.trim();if(t){H(!0);try{let n=await S.resolvePrincipal(t);if(!n.success||!n.data){x.error(p(`notes.shareUserNotFound`));return}let r=await S.createGrant({resourceType:`note`,resourceId:e.id,principalType:`user`,principalId:n.data.id,permission:z});r.success?(R(``),Q(),x.success(p(`notes.shareAdded`,{username:t}))):x.error(r.error||p(`notes.shareFailed`))}catch(e){A.error(`Failed to share note:`,e),x.error(p(`notes.shareFailed`))}finally{H(!1)}}},ge=async e=>{try{(await S.deleteGrant(e)).success&&Q()}catch(e){A.error(`Failed to revoke share:`,e)}},_e=async()=>{if(U.trim()&&Y){K(!0),J(null);try{let t=await C.assist(e.id,{instruction:U,model:Y,providerType:X,providerId:le});t.success&&t.data?.content!==void 0?J(t.data.content):x.error(t.error||p(`notes.assistFailed`))}catch(e){A.error(`Note assist failed:`,e),x.error(p(`notes.assistFailed`))}finally{K(!1)}}},$=(0,T.useMemo)(()=>q===null?null:D(t,q),[q,t]),ve=[{id:`revisions`,icon:(0,k.jsx)(f,{className:`h-3.5 w-3.5`}),label:p(`notes.revisions`)},{id:`attachments`,icon:(0,k.jsx)(h,{className:`h-3.5 w-3.5`}),label:p(`notes.attachments`)},{id:`share`,icon:(0,k.jsx)(ee,{className:`h-3.5 w-3.5`}),label:p(`notes.share`),hidden:!i},{id:`assist`,icon:(0,k.jsx)(u,{className:`h-3.5 w-3.5`}),label:p(`notes.assist`),hidden:!r}];return(0,k.jsxs)(`div`,{className:`absolute inset-y-0 end-0 z-30 flex w-full max-w-md flex-col border-s border-black/[0.06] bg-surface shadow-xl dark:border-white/[0.07] dark:bg-dark-100`,"data-testid":`note-tools-drawer`,role:`dialog`,"aria-label":p(`notes.tools`),children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-1 border-b border-black/[0.06] px-3 py-2 dark:border-white/[0.07]`,children:[ve.filter(e=>!e.hidden).map(e=>(0,k.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":m===e.id,onClick:()=>_(e.id),"data-testid":`note-tools-tab-${e.id}`,className:s(`flex items-center gap-1.5 rounded-lg px-2.5 py-1.5 text-[12px] transition-colors`,m===e.id?`bg-black/[0.06] text-gray-900 dark:bg-white/[0.08] dark:text-dark-900`:`text-gray-500 hover:text-gray-800 dark:text-dark-500 dark:hover:text-dark-800`),children:[e.icon,e.label]},e.id)),(0,k.jsx)(`button`,{type:`button`,onClick:ne,className:`ms-auto rounded-md p-1.5 text-gray-400 hover:text-gray-700 dark:text-dark-500 dark:hover:text-dark-800`,"aria-label":p(`common.close`),"data-testid":`note-tools-close`,children:(0,k.jsx)(v,{className:`h-4 w-4`})})]}),(0,k.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-4 scrollbar-thin`,children:[m===`revisions`&&(0,k.jsx)(`div`,{className:`space-y-2`,children:y===null?(0,k.jsx)(l,{className:`mx-auto h-4 w-4 animate-spin text-gray-400`}):y.length===0?(0,k.jsx)(`p`,{className:`text-center text-xs text-gray-400 dark:text-dark-500`,children:p(`notes.noRevisions`)}):y.map(e=>(0,k.jsxs)(`div`,{className:`rounded-lg border border-black/[0.06] p-2.5 dark:border-white/[0.08]`,"data-testid":`note-revision-item`,children:[(0,k.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,k.jsxs)(`button`,{type:`button`,onClick:()=>E(t=>t===e.id?null:e.id),className:`min-w-0 flex-1 truncate text-start text-[13px] text-gray-800 dark:text-dark-800`,children:[o(e.createdAt,ie.language),e.title!==n&&(0,k.jsxs)(`span`,{className:`ms-1 text-gray-400 dark:text-dark-500`,children:[`· `,e.title||p(`notes.untitled`)]})]}),r&&(0,k.jsxs)(w,{size:`sm`,variant:`ghost`,className:`h-7 gap-1 px-2 text-[11px]`,onClick:()=>void de(e.id),"data-testid":`note-revision-restore`,children:[(0,k.jsx)(g,{className:`h-3 w-3`}),p(`notes.restore`)]})]}),oe===e.id&&(0,k.jsx)(`div`,{className:`mt-2`,children:(0,k.jsx)(j,{rows:D(e.content,t)})})]},e.id))}),m===`attachments`&&(0,k.jsxs)(`div`,{className:`space-y-2`,children:[r&&(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(`input`,{ref:F,type:`file`,className:`hidden`,onChange:e=>void fe(e.target.files),"data-testid":`note-attachment-input`}),(0,k.jsxs)(w,{size:`sm`,variant:`outline`,className:`w-full gap-1.5`,disabled:se,onClick:()=>F.current?.click(),"data-testid":`note-attachment-upload`,children:[se?(0,k.jsx)(l,{className:`h-3.5 w-3.5 animate-spin`}):(0,k.jsx)(h,{className:`h-3.5 w-3.5`}),p(`notes.addAttachment`)]})]}),M===null?(0,k.jsx)(l,{className:`mx-auto h-4 w-4 animate-spin text-gray-400`}):M.length===0?(0,k.jsx)(`p`,{className:`text-center text-xs text-gray-400 dark:text-dark-500`,children:p(`notes.noAttachments`)}):M.map(e=>(0,k.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-black/[0.06] px-2.5 py-2 dark:border-white/[0.08]`,"data-testid":`note-attachment-item`,children:[(0,k.jsx)(h,{className:`h-3.5 w-3.5 shrink-0 text-gray-400 dark:text-dark-500`}),(0,k.jsx)(`span`,{dir:`ltr`,className:`min-w-0 flex-1 truncate text-[13px] text-gray-800 dark:text-dark-800`,children:e.filename}),(0,k.jsxs)(`span`,{className:`shrink-0 text-[11px] text-gray-400 dark:text-dark-500`,children:[Math.max(1,Math.round(e.size/1024)),` KB`]}),(0,k.jsx)(`button`,{type:`button`,onClick:()=>void pe(e),className:`rounded-md p-1 text-gray-400 hover:text-gray-700 dark:text-dark-500 dark:hover:text-dark-800`,title:p(`common.download`),children:(0,k.jsx)(re,{className:`h-3.5 w-3.5`})}),r&&(0,k.jsx)(`button`,{type:`button`,onClick:()=>void me(e.id),className:`rounded-md p-1 text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20`,title:p(`common.delete`),children:(0,k.jsx)(ae,{className:`h-3.5 w-3.5`})})]},e.id))]}),m===`share`&&i&&(0,k.jsxs)(`div`,{className:`space-y-3`,children:[(0,k.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,k.jsx)(`input`,{type:`text`,value:L,onChange:e=>R(e.target.value),onKeyDown:e=>{e.key===`Enter`&&he()},placeholder:p(`notes.shareUsernamePlaceholder`),className:`min-w-0 flex-1 rounded-lg border border-black/[0.08] bg-transparent px-2.5 py-1.5 text-[13px] text-gray-900 placeholder:text-gray-400 focus:border-primary-500/40 focus:outline-none dark:border-white/[0.1] dark:text-dark-900`,"data-testid":`note-share-username`}),(0,k.jsxs)(`select`,{value:z,onChange:e=>B(e.target.value),className:`rounded-lg border border-black/[0.08] bg-transparent px-2 py-1.5 text-[12px] text-gray-700 focus:outline-none dark:border-white/[0.1] dark:bg-dark-100 dark:text-dark-800`,"data-testid":`note-share-permission`,children:[(0,k.jsx)(`option`,{value:`read`,children:p(`notes.permissionRead`)}),(0,k.jsx)(`option`,{value:`write`,children:p(`notes.permissionWrite`)})]}),(0,k.jsx)(w,{size:`sm`,disabled:V||!L.trim(),onClick:()=>void he(),"data-testid":`note-share-submit`,children:V?(0,k.jsx)(l,{className:`h-3.5 w-3.5 animate-spin`}):p(`notes.shareAction`)})]}),I===null?(0,k.jsx)(l,{className:`mx-auto h-4 w-4 animate-spin text-gray-400`}):I.length===0?(0,k.jsx)(`p`,{className:`text-center text-xs text-gray-400 dark:text-dark-500`,children:p(`notes.notShared`)}):I.map(e=>(0,k.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-black/[0.06] px-2.5 py-2 dark:border-white/[0.08]`,"data-testid":`note-share-item`,children:[(0,k.jsx)(ee,{className:`h-3.5 w-3.5 shrink-0 text-gray-400 dark:text-dark-500`}),(0,k.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[13px] text-gray-800 dark:text-dark-800`,children:e.principalId}),(0,k.jsx)(`span`,{className:`shrink-0 text-[11px] uppercase text-gray-400 dark:text-dark-500`,children:e.permission}),(0,k.jsx)(`button`,{type:`button`,onClick:()=>void ge(e.id),className:`rounded-md p-1 text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20`,title:p(`notes.revokeShare`),children:(0,k.jsx)(v,{className:`h-3.5 w-3.5`})})]},e.id)),(0,k.jsx)(`p`,{className:`text-[11px] leading-relaxed text-gray-400 dark:text-dark-500`,children:p(`notes.shareHint`)})]}),m===`assist`&&r&&(0,k.jsxs)(`div`,{className:`space-y-3`,children:[(0,k.jsx)(`textarea`,{value:U,onChange:e=>W(e.target.value),placeholder:p(`notes.assistPlaceholder`),rows:3,className:`w-full resize-none rounded-lg border border-black/[0.08] bg-transparent px-2.5 py-2 text-[13px] text-gray-900 placeholder:text-gray-400 focus:border-primary-500/40 focus:outline-none dark:border-white/[0.1] dark:text-dark-900`,"data-testid":`note-assist-instruction`}),(0,k.jsxs)(w,{size:`sm`,className:`w-full gap-1.5`,disabled:G||!U.trim()||!Y,onClick:()=>void _e(),"data-testid":`note-assist-generate`,children:[G?(0,k.jsx)(l,{className:`h-3.5 w-3.5 animate-spin`}):(0,k.jsx)(u,{className:`h-3.5 w-3.5`}),p(`notes.assistGenerate`)]}),!Y&&(0,k.jsx)(`p`,{className:`text-[11px] text-amber-600 dark:text-amber-400`,children:p(`notes.assistNoModel`)}),q!==null&&$&&(0,k.jsxs)(`div`,{className:`space-y-2`,children:[O($)?(0,k.jsx)(j,{rows:$}):(0,k.jsx)(`p`,{className:`text-center text-xs text-gray-400 dark:text-dark-500`,children:p(`notes.assistNoChanges`)}),(0,k.jsxs)(`div`,{className:`flex gap-2`,children:[(0,k.jsx)(w,{size:`sm`,className:`flex-1`,disabled:!O($),onClick:()=>{d(q),J(null),W(``),x.success(p(`notes.assistApplied`))},"data-testid":`note-assist-apply`,children:p(`notes.assistApply`)}),(0,k.jsx)(w,{size:`sm`,variant:`outline`,className:`flex-1`,onClick:()=>J(null),"data-testid":`note-assist-discard`,children:p(`notes.assistDiscard`)})]}),(0,k.jsx)(`p`,{className:`text-[11px] leading-relaxed text-gray-400 dark:text-dark-500`,children:p(`notes.assistRevisionHint`)})]})]})]})]})},N=i(`pages:notes`),se=800,P=()=>{let{t:e,i18n:t}=a(),[n,i]=(0,T.useState)([]),[c,ee]=(0,T.useState)(!0),[l,u]=(0,T.useState)(null),[f,h]=(0,T.useState)(``),[g,v]=(0,T.useState)(``),[S,E]=(0,T.useState)(``),[D,O]=(0,T.useState)(!0),[A,j]=(0,T.useState)(`idle`),[P,F]=(0,T.useState)(null),I=(0,T.useRef)(null),ce=(0,T.useRef)(null),[L,R]=r(),z=(0,T.useMemo)(()=>n.find(e=>e.id===l)??null,[n,l]);(0,T.useEffect)(()=>{let e=!1;return C.getNotes().then(t=>{e||t.success&&t.data&&i(t.data)}).catch(e=>N.error(`Failed to load notes:`,e)).finally(()=>{e||ee(!1)}),()=>{e=!0}},[]);let B=L.get(`note`),V=B?n.find(e=>e.id===B):void 0;V&&l!==V.id&&(u(V.id),v(V.title),E(V.content),O(!0),j(`idle`));let H=B!==null&&(V!==void 0||!c);(0,T.useEffect)(()=>{H&&R({},{replace:!0})},[H,R]);let U=!z||!z.shared,W=z?!z.shared||z.shared.permission===`write`:!1,G=(e,t=`preview`)=>{X(),u(e.id),v(e.title),E(e.content),O(t===`preview`),j(`idle`),F(null)},K=async()=>{if(z)try{let e=await C.updateNote(z.id,{pinned:!z.pinned});if(e.success&&e.data){let t=e.data;i(e=>e.map(e=>e.id===t.id?t:e))}}catch(e){N.error(`Failed to toggle pin:`,e)}},q=()=>{if(!z)return;let e=new Blob([S],{type:`text/markdown;charset=utf-8`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`${(g||`note`).replace(/[\\/:*?"<>|]/g,`-`)}.md`,n.click(),URL.revokeObjectURL(t)},J=(e,t,n)=>{I.current!==null&&window.clearTimeout(I.current),j(`saving`),I.current=window.setTimeout(()=>{I.current=null,Y(e,t,n)},se)},Y=async(t,n,r)=>{try{let e=await C.updateNote(t,{title:n,content:r});if(e.success&&e.data){let n=e.data;i(e=>[n,...e.filter(e=>e.id!==t)].sort((e,t)=>t.updatedAt-e.updatedAt)),j(`saved`)}}catch(t){N.error(`Failed to save note:`,t),x.error(e(`notes.saveFailed`)),j(`idle`)}},X=()=>{I.current!==null&&l&&(window.clearTimeout(I.current),I.current=null,Y(l,g,S))};(0,T.useEffect)(()=>()=>{I.current!==null&&window.clearTimeout(I.current)},[]);let le=async()=>{try{let e=await C.createNote(``,``);if(e.success&&e.data){let t=e.data;i(e=>[t,...e]),G(t,`edit`)}}catch(t){N.error(`Failed to create note:`,t),x.error(e(`notes.createFailed`))}},ue=async t=>{if(window.confirm(e(`notes.deleteConfirm`)))try{(await C.deleteNote(t)).success&&(i(e=>e.filter(e=>e.id!==t)),l===t&&u(null))}catch(t){N.error(`Failed to delete note:`,t),x.error(e(`notes.deleteFailed`))}},Z=(0,T.useMemo)(()=>{let e=f.trim().toLowerCase();return e?n.filter(t=>t.title.toLowerCase().includes(e)||t.content.toLowerCase().includes(e)):n},[n,f]);return(0,k.jsxs)(`div`,{className:`relative flex h-full min-h-0 overflow-hidden`,"data-testid":`notes-page`,children:[(0,k.jsxs)(`div`,{"data-testid":`notes-list`,className:s(`min-h-0 w-full shrink-0 flex-col border-e border-black/[0.06] dark:border-white/[0.07] md:w-72`,z?`hidden md:flex`:`flex`),children:[(0,k.jsxs)(`div`,{className:`flex items-center justify-between px-4 pb-2 pt-4`,children:[(0,k.jsx)(`h1`,{className:`text-sm font-semibold text-gray-900 dark:text-dark-900`,children:e(`notes.title`)}),(0,k.jsx)(w,{size:`sm`,variant:`ghost`,onClick:()=>void le(),className:`h-7 w-7 p-0`,title:e(`notes.new`),children:(0,k.jsx)(ie,{className:`h-4 w-4`})})]}),(0,k.jsxs)(`div`,{className:`relative mx-3 mb-2`,children:[(0,k.jsx)(ne,{className:`pointer-events-none absolute start-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-gray-400 dark:text-dark-500`}),(0,k.jsx)(`input`,{ref:ce,type:`search`,value:f,onChange:e=>h(e.target.value),placeholder:e(`common.search`),"aria-label":e(`common.search`),className:`w-full rounded-lg border border-transparent bg-black/[0.04] py-1.5 pe-2.5 ps-8 text-base text-gray-900 placeholder:text-gray-400 focus:border-primary-500/40 focus:outline-none dark:bg-white/[0.05] dark:text-dark-900 dark:placeholder:text-dark-500 sm:text-[13px]`})]}),(0,k.jsx)(`div`,{className:`scroll-region min-h-0 flex-1 overflow-y-auto px-2 pb-3 scrollbar-thin`,children:c?null:Z.length===0?(0,k.jsxs)(`div`,{className:`px-3 py-10 text-center`,children:[(0,k.jsx)(_,{className:`mx-auto mb-2 h-6 w-6 text-gray-300 dark:text-dark-400`}),(0,k.jsx)(`p`,{className:`text-xs text-gray-500 dark:text-dark-500`,role:`status`,children:f.trim()?e(`common.noResults`):e(`notes.empty`)}),f.trim()&&(0,k.jsx)(w,{size:`sm`,variant:`ghost`,className:`mt-2`,onClick:()=>{h(``),ce.current?.focus()},children:e(`common.clear`)})]}):(0,k.jsx)(`div`,{className:`space-y-0.5`,children:Z.map(n=>(0,k.jsxs)(`div`,{"data-testid":`note-list-item`,className:s(`group relative flex items-center rounded-lg transition-colors`,l===n.id?`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,k.jsxs)(`button`,{type:`button`,onClick:()=>G(n),"aria-label":n.title||e(`notes.untitled`),"aria-current":l===n.id?`true`:void 0,className:`min-w-0 flex-1 rounded-lg px-2.5 py-2 text-start focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 focus-visible:ring-offset-canvas`,children:[(0,k.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1 truncate text-[13px] font-medium text-gray-900 dark:text-dark-900`,children:[n.pinned&&(0,k.jsx)(m,{className:`h-3 w-3 shrink-0 text-primary-500`,"aria-label":e(`notes.pinned`)}),n.shared&&(0,k.jsx)(b,{className:`h-3 w-3 shrink-0 text-gray-400 dark:text-dark-500`,"aria-label":e(`notes.sharedWithYou`)}),(0,k.jsx)(`span`,{className:`truncate`,children:n.title||e(`notes.untitled`)})]}),(0,k.jsxs)(`span`,{className:`mt-0.5 block truncate text-[11px] text-gray-500 dark:text-dark-500`,children:[o(n.updatedAt,t.language),n.content.trim()&&(0,k.jsxs)(k.Fragment,{children:[` · `,n.content.trim().slice(0,60)]})]})]}),!n.shared&&(0,k.jsx)(`button`,{type:`button`,onClick:()=>void ue(n.id),className:`me-1.5 shrink-0 rounded-md p-1.5 text-gray-500 opacity-100 transition-opacity hover:bg-red-50 hover:text-red-600 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 sm:opacity-0 sm:group-hover:opacity-100 sm:group-focus-within:opacity-100 dark:text-dark-500 dark:hover:bg-red-900/20 dark:hover:text-red-400`,title:e(`common.delete`),"aria-label":`${e(`common.delete`)}: ${n.title||e(`notes.untitled`)}`,children:(0,k.jsx)(ae,{className:`h-3 w-3`,"aria-hidden":`true`})})]},n.id))})})]}),(0,k.jsx)(`div`,{"data-testid":`notes-editor`,className:s(`min-w-0 flex-1 flex-col`,z?`flex`:`hidden md:flex`),children:z?(0,k.jsxs)(k.Fragment,{children:[(0,k.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5 border-b border-black/[0.06] px-2.5 py-2.5 dark:border-white/[0.07] sm:gap-2 sm:px-5 sm:py-3`,children:[(0,k.jsx)(w,{size:`sm`,variant:`ghost`,onClick:()=>{X(),u(null),O(!0)},className:`h-9 w-9 shrink-0 p-0 md:hidden`,title:`${e(`common.back`)}: ${e(`notes.title`)}`,"aria-label":`${e(`common.back`)}: ${e(`notes.title`)}`,"data-testid":`notes-mobile-back`,children:(0,k.jsx)(p,{className:`h-4 w-4 rtl:rotate-180`})}),D?(0,k.jsx)(`h2`,{"data-testid":`notes-title-preview`,dir:`auto`,className:`min-w-0 flex-1 truncate text-base font-semibold text-gray-950 dark:text-dark-950 sm:text-lg`,children:g||e(`notes.untitled`)}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(`input`,{"data-testid":`notes-title-editor`,dir:`auto`,readOnly:!W,value:g,onChange:e=>{v(e.target.value),J(z.id,e.target.value,S)},placeholder:e(`notes.untitled`),className:`min-w-0 flex-1 bg-transparent text-base font-semibold text-gray-950 placeholder:text-gray-400 focus:outline-none dark:text-dark-950 dark:placeholder:text-dark-500 sm:text-lg`}),(0,k.jsx)(`span`,{className:`hidden shrink-0 text-[11px] text-gray-400 dark:text-dark-500 sm:inline`,"aria-live":`polite`,children:A===`saving`?e(`common.saving`):A===`saved`?e(`notes.saved`):``})]}),U&&(0,k.jsx)(w,{size:`sm`,variant:`ghost`,onClick:()=>void K(),className:s(`hidden h-8 w-8 shrink-0 p-0 sm:flex`,z.pinned&&`text-primary-500`),title:z.pinned?e(`notes.unpin`):e(`notes.pin`),"aria-label":z.pinned?e(`notes.unpin`):e(`notes.pin`),"data-testid":`notes-pin-toggle`,children:(0,k.jsx)(m,{className:`h-3.5 w-3.5`})}),(0,k.jsx)(w,{size:`sm`,variant:`ghost`,onClick:q,className:`hidden h-8 w-8 shrink-0 p-0 sm:flex`,title:e(`notes.export`),"aria-label":e(`notes.export`),"data-testid":`notes-export`,children:(0,k.jsx)(re,{className:`h-3.5 w-3.5`})}),(0,k.jsx)(w,{size:`sm`,variant:`ghost`,onClick:()=>F(e=>e===null?`revisions`:null),className:`h-9 w-9 shrink-0 p-0 sm:h-8 sm:w-8`,title:e(`notes.tools`),"aria-label":e(`notes.tools`),"aria-expanded":P!==null,"data-testid":`notes-tools-toggle`,children:(0,k.jsx)(d,{className:`h-3.5 w-3.5`})}),(0,k.jsx)(w,{size:`sm`,variant:`ghost`,onClick:()=>{D||X(),O(e=>!e)},className:`h-9 w-9 shrink-0 gap-1.5 p-0 text-xs sm:h-8 sm:w-auto sm:px-2.5`,title:e(D?`common.edit`:`artifacts.preview`),"aria-label":e(D?`common.edit`:`artifacts.preview`),"data-testid":`notes-preview-toggle`,children:D?(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(y,{className:`h-3.5 w-3.5`}),(0,k.jsx)(`span`,{className:`hidden sm:inline`,children:e(`common.edit`)})]}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(te,{className:`h-3.5 w-3.5`}),(0,k.jsx)(`span`,{className:`hidden sm:inline`,children:e(`artifacts.preview`)})]})})]}),D?(0,k.jsx)(`div`,{"data-testid":`notes-preview`,className:`scroll-region min-h-0 flex-1 overflow-y-auto px-4 py-3 scrollbar-thin sm:px-5 sm:py-4`,children:(0,k.jsx)(oe,{content:S,allowHtml:!0,className:`mx-auto w-full max-w-5xl pb-12`})}):(0,k.jsx)(`textarea`,{"data-testid":`notes-content-editor`,dir:`auto`,readOnly:!W,value:S,onChange:e=>{E(e.target.value),J(z.id,g,e.target.value)},onBlur:X,placeholder:e(`notes.contentPlaceholder`),className:`min-h-0 flex-1 resize-none bg-transparent px-4 py-3 font-mono text-base leading-relaxed text-gray-900 placeholder:text-gray-400 focus:outline-none dark:text-dark-900 dark:placeholder:text-dark-500 sm:px-5 sm:py-4 sm:text-[13.5px]`}),P!==null&&(0,k.jsx)(M,{note:z,currentContent:S,currentTitle:g,canWrite:W,isOwner:U,initialTab:P,onClose:()=>F(null),onApplyContent:(e,t)=>{E(e),t!==void 0&&v(t),Y(z.id,t===void 0?g:t,e)}})]}):(0,k.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,k.jsxs)(`div`,{className:`text-center`,children:[(0,k.jsx)(_,{className:`mx-auto mb-3 h-8 w-8 text-gray-300 dark:text-dark-400`}),(0,k.jsx)(`p`,{className:`text-sm text-gray-500 dark:text-dark-600`,children:e(`notes.selectOrCreate`)}),(0,k.jsxs)(w,{size:`sm`,onClick:()=>void le(),className:`mt-4 gap-1.5`,children:[(0,k.jsx)(ie,{className:`h-3.5 w-3.5`}),e(`notes.new`)]})]})})})]})};export{P as NotesPage,P as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"./rolldown-runtime-hePW80VL.js";import{i as e,t}from"./react-vendor-
|
|
1
|
+
import"./rolldown-runtime-hePW80VL.js";import{i as e,t}from"./react-vendor-wiHys0m2.js";import{C as n,D as r,E as i,O as a,S as o,T as s,_ as c,a as l,b as u,c as d,d as f,f as p,g as m,h,i as g,l as _,m as v,n as y,o as b,p as x,r as S,s as C,t as w,u as T,v as E,w as ee,x as D,y as O}from"./syntax-highlight-DNc3FFCa.js";import{v as k,y as A}from"./markdown-core-KjS96SYW.js";function j(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function M(e,t){if(e==null)return{};var n,r,i=j(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function N(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function P(e){if(Array.isArray(e))return N(e)}function F(e){if(typeof Symbol<`u`&&e[Symbol.iterator]!=null||e[`@@iterator`]!=null)return Array.from(e)}function I(e,t){if(e){if(typeof e==`string`)return N(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?N(e,t):void 0}}function L(){throw TypeError(`Invalid attempt to spread non-iterable instance.
|
|
2
2
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function R(e){return P(e)||F(e)||I(e)||L()}function z(e){"@babel/helpers - typeof";return z=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},z(e)}function B(e,t){if(z(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(z(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function V(e){var t=B(e,`string`);return z(t)==`symbol`?t:t+``}function H(e,t,n){return(t=V(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function U(){return U=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},U.apply(null,arguments)}var W={0:`�`,128:`€`,130:`‚`,131:`ƒ`,132:`„`,133:`…`,134:`†`,135:`‡`,136:`ˆ`,137:`‰`,138:`Š`,139:`‹`,140:`Œ`,142:`Ž`,145:`‘`,146:`’`,147:`“`,148:`”`,149:`•`,150:`–`,151:`—`,152:`˜`,153:`™`,154:`š`,155:`›`,156:`œ`,158:`ž`,159:`Ÿ`};function G(e){let t=typeof e==`string`?e.charCodeAt(0):e;return t>=48&&t<=57}function K(e){let t=typeof e==`string`?e.charCodeAt(0):e;return t>=97&&t<=102||t>=65&&t<=70||t>=48&&t<=57}function q(e){let t=typeof e==`string`?e.charCodeAt(0):e;return t>=97&&t<=122||t>=65&&t<=90}function J(e){return q(e)||G(e)}var Y=[``,`Named character references must be terminated by a semicolon`,`Numeric character references must be terminated by a semicolon`,`Named character references cannot be empty`,`Numeric character references cannot be empty`,`Named character references must be known`,`Numeric character references cannot be disallowed`,`Numeric character references cannot be outside the permissible Unicode range`];function X(e,t){let n=t||{},r=typeof n.additional==`string`?n.additional.charCodeAt(0):n.additional,i=[],a=0,o=-1,s=``,c,l;n.position&&(`start`in n.position||`indent`in n.position?(l=n.position.indent,c=n.position.start):c=n.position);let u=(c?c.line:0)||1,d=(c?c.column:0)||1,f=m(),p;for(a--;++a<=e.length;)if(p===10&&(d=(l?l[o]:0)||1),p=e.charCodeAt(a),p===38){let t=e.charCodeAt(a+1);if(t===9||t===10||t===12||t===32||t===38||t===60||Number.isNaN(t)||r&&t===r){s+=String.fromCharCode(p),d++;continue}let o=a+1,c=o,l=o,u;if(t===35){l=++c;let t=e.charCodeAt(l);t===88||t===120?(u=`hexadecimal`,l=++c):u=`decimal`}else u=`named`;let _=``,v=``,y=``,b=u===`named`?J:u===`decimal`?G:K;for(l--;++l<=e.length;){let t=e.charCodeAt(l);if(!b(t))break;y+=String.fromCharCode(t),u===`named`&&A.includes(y)&&(_=y,v=k(y))}let x=e.charCodeAt(l)===59;if(x){l++;let e=u===`named`&&k(y);e&&(_=y,v=e)}let S=1+l-o,C=``;if(x||n.nonTerminated!==!1){if(!y)u!==`named`&&h(4,S);else if(u===`named`){if(x&&!v)h(5,1);else if(_!==y&&(l=c+_.length,S=1+l-c,x=!1),!x){let t=_?1:3;if(n.attribute){let n=e.charCodeAt(l);n===61?(h(t,S),v=``):J(n)?v=``:h(t,S)}else h(t,S)}C=v}else{x||h(2,S);let e=Number.parseInt(y,u===`hexadecimal`?16:10);if(Z(e))h(7,S),C=`�`;else if(e in W)h(6,S),C=W[e];else{let t=``;te(e)&&h(6,S),e>65535&&(e-=65536,t+=String.fromCharCode(e>>>10|55296),e=56320|e&1023),C=t+String.fromCharCode(e)}}}if(C){g(),f=m(),a=l-1,d+=l-o+1,i.push(C);let t=m();t.offset++,n.reference&&n.reference.call(n.referenceContext||void 0,C,{start:f,end:t},e.slice(o-1,l)),f=t}else y=e.slice(o-1,l),s+=y,d+=y.length,a=l-1}else p===10&&(u++,o++,d=0),Number.isNaN(p)?g():(s+=String.fromCharCode(p),d++);return i.join(``);function m(){return{line:u,column:d,offset:a+((c?c.offset:0)||0)}}function h(e,t){let r;n.warning&&(r=m(),r.column+=t,r.offset+=t,n.warning.call(n.warningContext||void 0,Y[e],r,e))}function g(){s&&=(i.push(s),n.text&&n.text.call(n.textContext||void 0,s,{start:f,end:m()}),``)}}function Z(e){return e>=55296&&e<=57343||e>1114111}function te(e){return e>=1&&e<=8||e===11||e>=13&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||(e&65535)==65535||(e&65535)==65534}e();var Q=t(),ne={js:`javascript`,ts:`typescript`,py:`python`,sh:`bash`,shell:`bash`,zsh:`bash`,terminal:`shell-session`,console:`shell-session`,html:`markup`,xml:`markup`,svg:`markup`,"c++":`cpp`,cs:`csharp`,"c#":`csharp`,golang:`go`,kt:`kotlin`,rb:`ruby`,rs:`rust`,yml:`yaml`},$={bash:r,c:i,cpp:s,css:ee,csharp:n,diff:o,go:D,java:u,javascript:O,json:E,jsx:c,kotlin:m,markdown:h,markup:v,php:x,python:p,ruby:f,rust:T,"shell-session":_,sql:d,swift:C,tsx:b,typescript:l,yaml:g};Object.entries($).forEach(([e,t])=>{a.registerLanguage(e,t)}),a.alias(`markup`,[`html`,`xml`,`svg`]);var re=new Set(Object.keys($)),ie=({children:e,language:t,isDark:n=!1,className:r=``,backgroundColor:i,borderRadius:o=`0.5rem`,customStyle:s,showLineNumbers:c=!1,codeTheme:l=`default`,preTag:u})=>{let d=ne[t.toLowerCase()]||t.toLowerCase();return re.has(d)?(0,Q.jsx)(`div`,{dir:`ltr`,className:`text-left`,children:(0,Q.jsx)(a,{language:d,style:n?l===`night`?S:y:w,className:r,customStyle:{margin:0,padding:`0.75rem`,borderRadius:o,fontSize:`0.875rem`,fontFamily:`"JetBrains Mono", ui-monospace, SFMono-Regular, monospace`,...s,...i?{background:i,backgroundColor:i}:{}},showLineNumbers:c,lineNumberStyle:{minWidth:`2.5em`,paddingRight:`1.25em`,color:n?`#6E7681`:`#9CA3AF`,userSelect:`none`},...u?{PreTag:u}:{},children:e})}):(0,Q.jsx)(u??`pre`,{dir:`ltr`,style:{...s,...i?{backgroundColor:i}:{}},className:`${n?`bg-dark-50 text-dark-900`:`bg-gray-100 text-gray-900`} overflow-x-auto rounded-lg p-3 text-left font-mono text-sm ${r}`,children:(0,Q.jsx)(`code`,{className:``,children:e})})};export{R as a,H as i,X as n,M as o,U as r,ie as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./OptimizedSyntaxHighlighter-CzzV6ONG.js";export{e as OptimizedSyntaxHighlighter,e as default};
|
package/frontend/dist/js/{PasswordStrengthMeter-BZF8U24d.js → PasswordStrengthMeter-DasfJa4P.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./rolldown-runtime-hePW80VL.js";import{i as e,t}from"./react-vendor-
|
|
1
|
+
import"./rolldown-runtime-hePW80VL.js";import{i as e,t}from"./react-vendor-wiHys0m2.js";import{t as n}from"./useTranslation-B9kflK9S.js";import{t as r}from"./utils-p8Gt72YP.js";import{Qn as i,n as a}from"./ui-vendor-BhHHyHk3.js";e();var o=`Use at least 12 characters, no more than 72 UTF-8 bytes, with uppercase, lowercase, and a number.`,s=e=>{let t={minLength:e.length>=12,withinBytes:new TextEncoder().encode(e).length<=72,hasCase:/[A-Z]/.test(e)&&/[a-z]/.test(e),hasNumber:/[0-9]/.test(e)},n=t.minLength&&t.withinBytes&&t.hasCase&&t.hasNumber,r=Number(t.minLength)+Number(t.hasCase)+Number(t.hasNumber),i=e.length>=16||/[^A-Za-z0-9]/.test(e),a;return a=t.withinBytes?r<=1?+(e.length>0):r===2?2:i?4:3:1,{checks:t,satisfied:n,score:a,level:a<=1?`weak`:a===2?`fair`:a===3?`good`:`strong`}},c=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.`,l=t(),u={weak:`bg-red-500`,fair:`bg-amber-500`,good:`bg-lime-500`,strong:`bg-green-500`},d={weak:`text-red-600 dark:text-red-400`,fair:`text-amber-600 dark:text-amber-400`,good:`text-lime-600 dark:text-lime-400`,strong:`text-green-600 dark:text-green-400`},f=({met:e,label:t})=>(0,l.jsxs)(`li`,{className:r(`flex items-center gap-1.5`,e?`text-green-600 dark:text-green-400`:`text-gray-500 dark:text-dark-500`),children:[e?(0,l.jsx)(i,{className:`h-3 w-3 shrink-0`,"aria-hidden":`true`}):(0,l.jsx)(a,{className:`h-3 w-3 shrink-0`,"aria-hidden":`true`}),(0,l.jsx)(`span`,{children:t})]}),p=({password:e})=>{let{t}=n();if(!e)return(0,l.jsx)(`p`,{className:`mt-1.5 text-xs text-gray-500 dark:text-dark-500`,children:o});let i=s(e);return(0,l.jsxs)(`div`,{className:`mt-2 space-y-1.5`,"data-testid":`password-strength-meter`,"aria-live":`polite`,children:[(0,l.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,l.jsx)(`div`,{className:`flex flex-1 gap-1`,children:[1,2,3,4].map(e=>(0,l.jsx)(`div`,{className:r(`h-1 flex-1 rounded-full transition-colors motion-reduce:transition-none`,e<=i.score?u[i.level]:`bg-gray-200 dark:bg-dark-300`)},e))}),(0,l.jsx)(`span`,{"data-testid":`password-strength-label`,className:r(`text-xs font-medium`,d[i.level]),children:t(`passwordStrength.levels.${i.level}`)})]}),(0,l.jsxs)(`ul`,{className:`space-y-0.5 text-xs`,children:[(0,l.jsx)(f,{met:i.checks.minLength,label:t(`passwordStrength.checks.minLength`)}),(0,l.jsx)(f,{met:i.checks.hasCase,label:t(`passwordStrength.checks.hasCase`)}),(0,l.jsx)(f,{met:i.checks.hasNumber,label:t(`passwordStrength.checks.hasNumber`)}),!i.checks.withinBytes&&(0,l.jsx)(f,{met:!1,label:t(`passwordStrength.checks.tooLong`)})]})]})};export{c as n,p as t};
|