@maudecode/kanvil 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/apps/server/dist/{auth-Cs_whzgk.mjs → auth-Bm6cIseE.mjs} +16 -10
  2. package/apps/server/dist/client.mjs +10 -9
  3. package/apps/server/dist/{config-DKuNQY5b.mjs → config-CrJuk5mY.mjs} +1 -1
  4. package/apps/server/dist/index.mjs +4 -4
  5. package/apps/server/dist/migrate.mjs +1 -1
  6. package/apps/server/dist/recover.mjs +3 -3
  7. package/apps/server/dist/{src-DptOUNRd.mjs → src-D80LNZKP.mjs} +5 -2
  8. package/apps/web/dist/assets/{CompositeItem-CXqewtEL.js → CompositeItem-Tueq2VKR.js} +1 -1
  9. package/apps/web/dist/assets/{Trans-B1rRlWca.js → Trans-BgU0eWAX.js} +1 -1
  10. package/apps/web/dist/assets/admin-settings-Ckis3XJG.js +1 -0
  11. package/apps/web/dist/assets/{archive-restore-76sStk8K.js → archive-restore-CSpoH6mS.js} +1 -1
  12. package/apps/web/dist/assets/{az-B7OgHoaE.js → az-DUcDY8Bp.js} +1 -1
  13. package/apps/web/dist/assets/{corner-left-up-PD-73Nae.js → corner-left-up-C3OGlXIB.js} +1 -1
  14. package/apps/web/dist/assets/{de-B-bv38Q0.js → de-89C1V8Ut.js} +1 -1
  15. package/apps/web/dist/assets/{default-bQFGTwIp.js → default-Dnep8Yat.js} +1 -1
  16. package/apps/web/dist/assets/{delivery-settings-BvMeOsCS.js → delivery-settings-cMldZ9K7.js} +1 -1
  17. package/apps/web/dist/assets/{el-BQHQHQgX.js → el-D6CICkhi.js} +1 -1
  18. package/apps/web/dist/assets/{ellipsis-GF1HwTDb.js → ellipsis-lJJU8zB7.js} +1 -1
  19. package/apps/web/dist/assets/{es-f5Xr8ldr.js → es-B20Izib2.js} +1 -1
  20. package/apps/web/dist/assets/{forms-BlEL8C_P.js → forms--87R7VQW.js} +1 -1
  21. package/apps/web/dist/assets/{fr-DSR0htnl.js → fr-DVlGnGsu.js} +1 -1
  22. package/apps/web/dist/assets/{hi-BaAJEWuW.js → hi-D1F5Pi_I.js} +1 -1
  23. package/apps/web/dist/assets/{highlight-DXT2xgt8.js → highlight-ygDJPvRy.js} +1 -1
  24. package/apps/web/dist/assets/{id-kxogWcip.js → id-LESXKW7G.js} +1 -1
  25. package/apps/web/dist/assets/index-Bn-MADyj.css +2 -0
  26. package/apps/web/dist/assets/index-Ds3IHeIi.js +17 -0
  27. package/apps/web/dist/assets/{invitations-BPik3J_G.js → invitations-C5WbdDUQ.js} +1 -1
  28. package/apps/web/dist/assets/{it-C_qk40U6.js → it-CgRGAs6u.js} +1 -1
  29. package/apps/web/dist/assets/{item-TCHuZNK6.js → item-BD1Poxfs.js} +1 -1
  30. package/apps/web/dist/assets/{ja-Dn5h64V9.js → ja-B7arhzgX.js} +1 -1
  31. package/apps/web/dist/assets/{ko-CjaoEPuG.js → ko-Ro_UonyA.js} +1 -1
  32. package/apps/web/dist/assets/{label-settings-DZTorNDm.js → label-settings-BaikCfal.js} +1 -1
  33. package/apps/web/dist/assets/{markdown-blocks-BQLO-H_7.js → markdown-blocks-toSPlHSc.js} +1 -1
  34. package/apps/web/dist/assets/{member-directory-Dx_jQYfI.js → member-directory-BjUy1KuK.js} +1 -1
  35. package/apps/web/dist/assets/{mk-jLeGD50T.js → mk-DR3kmrIp.js} +1 -1
  36. package/apps/web/dist/assets/{nl-AVtC5ygT.js → nl-D3uRJJLT.js} +1 -1
  37. package/apps/web/dist/assets/{pl-Dup1h_Y1.js → pl-CtzDOLdV.js} +1 -1
  38. package/apps/web/dist/assets/{project-lifecycle-n1ZZbYfu.js → project-lifecycle-BBHcRi6p.js} +1 -1
  39. package/apps/web/dist/assets/project-settings-BaYuxYjg.js +1 -0
  40. package/apps/web/dist/assets/{pt-BR-Cm04EWM-.js → pt-BR-FarXHHuf.js} +1 -1
  41. package/apps/web/dist/assets/{public-project-BivDjU_a.js → public-project-DGf3nkg2.js} +1 -1
  42. package/apps/web/dist/assets/{rotate-ccw-CSaKhZYt.js → rotate-ccw-Byx7O3RH.js} +1 -1
  43. package/apps/web/dist/assets/{ru-IeycXsyE.js → ru-DHMEVxvB.js} +1 -1
  44. package/apps/web/dist/assets/{search-Ble6WSEU.js → search-DwsPEC4E.js} +35 -35
  45. package/apps/web/dist/assets/{send-BLMZ8gQ0.js → send-DlGV2XQS.js} +1 -1
  46. package/apps/web/dist/assets/settings-C_sN8Y1h.js +1 -0
  47. package/apps/web/dist/assets/{sliders-horizontal-Db6kRvuw.js → sliders-horizontal-CEHGGft_.js} +1 -1
  48. package/apps/web/dist/assets/{switch-BeX-0Fwq.js → switch-B_rsZYBf.js} +1 -1
  49. package/apps/web/dist/assets/{table-UJp5S9yy.js → table-2AEfwytk.js} +1 -1
  50. package/apps/web/dist/assets/{ticket-detail-C24opfNW.js → ticket-detail-C2l8nwF-.js} +2 -2
  51. package/apps/web/dist/assets/ticket-editor-B0UB98HS.js +2 -0
  52. package/apps/web/dist/assets/ticket-list-D_MHudj1.js +6 -0
  53. package/apps/web/dist/assets/{ticket-list-controls-fYBottFC.js → ticket-list-controls-jKg4i-NA.js} +1 -1
  54. package/apps/web/dist/assets/{tr-DtT_dKUK.js → tr-CjdSDu0z.js} +1 -1
  55. package/apps/web/dist/assets/{uk-CsbeHSS6.js → uk-C8od6u_H.js} +1 -1
  56. package/apps/web/dist/assets/{upload-DUEg04Nj.js → upload-BeTAGU_W.js} +1 -1
  57. package/apps/web/dist/assets/{useQueries-5lW2C5Sb.js → useQueries-BtRgTciJ.js} +1 -1
  58. package/apps/web/dist/assets/{vi-rkf1BOLx.js → vi-BwdBtgfS.js} +1 -1
  59. package/apps/web/dist/assets/{visual-editor-DkFLjouD.js → visual-editor-CzB_qwvB.js} +3 -3
  60. package/apps/web/dist/assets/{workspace-settings-Bcsp-VoJ.js → workspace-settings-DOr9j8X1.js} +1 -1
  61. package/apps/web/dist/assets/{zh-CN-Xo-QId5w.js → zh-CN-DM-UoFmL.js} +1 -1
  62. package/apps/web/dist/assets/{zh-TW-DEnTqjbn.js → zh-TW-q2nrwFjt.js} +1 -1
  63. package/apps/web/dist/index.html +8 -8
  64. package/docs/api.md +3 -1
  65. package/docs/cli.md +1 -1
  66. package/package.json +1 -1
  67. package/apps/web/dist/assets/admin-settings-DE3MfBFE.js +0 -1
  68. package/apps/web/dist/assets/index-CYVrs22O.js +0 -17
  69. package/apps/web/dist/assets/index-DyQNFS69.css +0 -2
  70. package/apps/web/dist/assets/project-settings-B_Ih5kiz.js +0 -1
  71. package/apps/web/dist/assets/settings-CH48qQK2.js +0 -1
  72. package/apps/web/dist/assets/ticket-editor--d_bG9C1.js +0 -2
  73. package/apps/web/dist/assets/ticket-list-DRbZWYHf.js +0 -5
@@ -1 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{An as t,Cn as n,Dn as r,G as i,Mn as a,Nn as o,On as s,Rt as c,Sn as l,W as u,_n as d,an as f,bn as p,bt as m,gn as h,it as g,mn as _,mt as v,r as y,wn as b,xn as x,yn as ee,zt as S}from"./default-bQFGTwIp.js";import{B as te,G as C,Ga as w,Hi as T,J as E,Ji as D,K as O,Oa as k,Pt as A,Q as ne,U as j,Ui as M,V as N,X as P,Y as F,Yi as re,Zi as ie,aa as ae,at as I,cr as L,di as R,ia as oe,it as z,nt as se,ot as ce,po as le,q as B,qa as V,ra as ue,rt as de,tt as fe,vt as H,wo as U}from"./search-Ble6WSEU.js";import{g as pe}from"./item-TCHuZNK6.js";import{l as me,r as he}from"./project-lifecycle-n1ZZbYfu.js";import{r as ge}from"./CompositeItem-CXqewtEL.js";import{t as _e}from"./ellipsis-GF1HwTDb.js";import{t as ve}from"./invitations-BPik3J_G.js";import{t as W}from"./forms-BlEL8C_P.js";import{A as ye,D as be,E as xe,Ht as G,M as Se,O as Ce,T as we,an as Te,fn as Ee,hn as De,i as K,k as Oe,n as q,r as ke}from"./index-CYVrs22O.js";import{t as Ae}from"./switch-BeX-0Fwq.js";import{a as je,i as J,n as Me,o as Y,r as X,t as Ne}from"./table-UJp5S9yy.js";import{t as Pe}from"./member-directory-Dx_jQYfI.js";var Fe={name:`user-plus`,size:24,node:[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}],[`line`,{x1:`19`,x2:`19`,y1:`8`,y2:`14`,key:`1bvyxn`}],[`line`,{x1:`22`,x2:`16`,y1:`11`,y2:`11`,key:`1shjgl`}]]};Fe.node;var Ie=w(Fe),Z=e(o(),1),Q=y(),Le={get local(){return _(`admin.instance.provider.local`)},get s3(){return _(`admin.instance.provider.s3`)},get postgres(){return _(`admin.instance.provider.postgres`)},get elasticsearch(){return _(`admin.instance.provider.elasticsearch`)},rabbitmq:`RabbitMQ`};function Re({data:e,section:t,onConfigure:n}){if(t===`general`)return(0,Q.jsxs)(`section`,{children:[(0,Q.jsx)(z,{title:_(`admin.instance.heading`),action:(0,Q.jsx)(E,{label:_(`admin.instance.edit`),onClick:n,children:(0,Q.jsx)(ge,{})})}),(0,Q.jsx)(q,{title:_(`admin.instance.name`),description:e.name}),(0,Q.jsx)(q,{title:_(`admin.instance.description`),description:e.description||_(`admin.instance.noDescription`)}),(0,Q.jsx)(q,{title:_(`admin.instance.version`),children:(0,Q.jsx)(`code`,{children:e.deployment.version})}),(0,Q.jsx)(q,{title:_(`admin.instance.publicUrl`),children:(0,Q.jsx)(j,{label:_(`admin.instance.publicUrl`),value:e.deployment.url,inline:!0})})]});let r=t===`storage`?e.storage:t===`search`?e.search:e.broker,i=_(t===`storage`?`admin.instance.section.storage`:t===`search`?`admin.instance.section.search`:`admin.instance.section.events`),a=r.source===`deployment`;return(0,Q.jsxs)(`section`,{children:[(0,Q.jsx)(z,{title:i,action:(0,Q.jsx)(E,{label:_(a?`admin.instance.viewConfiguration`:`admin.instance.configure.${t}`),onClick:n,children:(0,Q.jsx)(Te,{})})}),(0,Q.jsx)(q,{title:_(`admin.instance.providerTitle`),description:Le[r.provider],children:(0,Q.jsx)(H,{variant:`secondary`,children:_(a?`admin.instance.deploymentManaged`:`admin.instance.instanceManaged`)})}),(0,Q.jsx)(q,{title:_(t===`storage`?`admin.instance.transfers`:t===`search`?`admin.instance.indexStatus`:`admin.instance.connection`),description:t===`storage`?e.storage.provider===`s3`?_(`admin.instance.transfersS3`):_(`admin.instance.transfersLocal`):t===`search`?r.status===`builtin`?_(`admin.instance.searchBuiltIn`):_(`admin.instance.searchIndexed`):_(`admin.instance.eventsConnection`),children:(0,Q.jsx)(H,{variant:r.status===`unavailable`?`destructive`:`outline`,children:r.status===`builtin`?_(`admin.instance.builtIn`):r.status===`ready`?_(t===`events`?`admin.instance.connected`:`admin.instance.upToDate`):_(`admin.instance.status.${r.status}`)})}),t===`storage`&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(q,{title:_(`admin.instance.pendingTransfers`),description:e.storage.pending?_(`admin.instance.pendingRemain`):_(`admin.instance.noPending`),children:e.storage.pending}),e.storage.settings&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(q,{title:_(`admin.instance.bucket`),description:e.storage.settings.bucket}),(0,Q.jsx)(j,{label:_(`admin.instance.storageEndpoint`),value:e.storage.settings.endpoint||`Amazon S3`})]}),(0,Q.jsx)(q,{title:_(`admin.instance.backup`),description:e.locations.length?_(`admin.instance.backupBuckets`):_(`admin.instance.backupDatabase`)})]}),t===`search`&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(q,{title:_(`admin.instance.fallback`),description:_(`admin.instance.fallbackDescription`)}),e.search.settings&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(j,{label:_(`admin.instance.searchEndpoint`),value:e.search.settings.url}),(0,Q.jsx)(q,{title:_(`admin.instance.index`),description:e.search.settings.index})]})]}),t===`events`&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(q,{title:_(`admin.instance.delivery`),description:_(`admin.instance.deliveryDescription`)}),e.broker.settings&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(j,{label:_(`admin.instance.brokerEndpoint`),value:e.broker.settings.endpoint}),(0,Q.jsx)(q,{title:_(`admin.instance.exchange`),description:e.broker.settings.exchange})]})]}),(0,Q.jsx)(O,{error:r.error?Error(r.error):void 0})]})}var ze=g.pick({name:!0,email:!0,image:!0}).extend({id:t(),role:t().nullable(),banned:b(),createdAt:x()}),Be=s({q:t().trim().max(200).default(``),role:l([`all`,`user`,`admin`]).default(`all`),status:l([`all`,`active`,`disabled`]).default(`all`),limit:p().int().min(1).max(100).default(25),offset:p().int().min(0).default(0)}),Ve=s({users:n(ze),total:r().int().nonnegative()}),He=ze.extend({workspaces:n(s({id:a(),name:t(),role:l(S)})),projects:n(s({id:a(),name:t(),role:l(S)})),providers:n(t()),sessionCount:r().int().nonnegative()});s({password:t().min(12).max(128)}).strict(),Be.pick({q:!0,limit:!0,offset:!0});var Ue=s({workspaces:n(s({id:a(),name:t(),slug:t(),ownerId:t().nullable().default(null),createdAt:x(),memberCount:r().int().nonnegative(),projectCount:r().int().nonnegative(),administrators:n(ze.pick({id:!0,name:!0,email:!0,image:!0}))})),total:r().int().nonnegative()});function $({children:e,badge:t}){return(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-4 border-b py-3`,children:[e,(0,Q.jsx)(H,{variant:`outline`,children:t})]})}function We({userId:e,onClose:t,onChanged:n}){let{shown:r,settled:i}=we(e,e=>e),[a,o]=(0,Z.useState)(!1);return(0,Q.jsx)(xe,{open:!!e,onOpenChange:e=>{!e&&!a&&t()},onOpenChangeComplete:i,children:(0,Q.jsx)(be,{className:`w-full! sm:max-w-lg!`,children:r&&(0,Q.jsx)(Ge,{userId:r,pending:a,setPending:o,onClose:t,onChanged:n},r)})})}function Ge({userId:e,pending:t,setPending:n,onClose:r,onChanged:a}){let o=D(),[s,l]=(0,Z.useState)(null),[d,f]=(0,Z.useState)(),p=ue(),m=ie(`set_workspace_member`),h=V({queryKey:[`kanvil`,`user`,e],queryFn:()=>T.request(`/api/v1/admin/users/${encodeURIComponent(e)}`,He)}),g=h.data;async function y(e,t){n(!0),f(void 0);try{let n=await e();if(n&&typeof n==`object`&&`error`in n&&n.error){let e=n.error;throw Error(typeof e==`object`&&`message`in e?String(e.message):_(`admin.account.updateFailed`))}await a(),l(null),k.success(t)}catch(e){throw f(e),e}finally{n(!1)}}return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(Oe,{className:`shrink-0 border-b pr-14`,children:[(0,Q.jsx)(ye,{className:`mb-0`,children:g?.name??_(`admin.account.details`)}),(0,Q.jsx)(Ce,{className:`break-all`,children:g?.email})]}),(0,Q.jsxs)(`div`,{className:`@container min-h-0 overflow-y-auto px-6 pb-8`,children:[(0,Q.jsx)(O,{error:h.error??(s?void 0:d)}),h.isPending?(0,Q.jsx)(P,{}):g&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`mb-7 flex flex-wrap items-center gap-4`,children:[(0,Q.jsx)(oe,{name:g.name,image:g.image,className:`size-16 text-xl`}),(0,Q.jsxs)(`div`,{className:`min-w-40 flex-1`,children:[(0,Q.jsx)(H,{variant:g.banned?`destructive`:`secondary`,children:g.banned?_(`admin.users.disabled`):_(`admin.users.active`)}),(0,Q.jsx)(`p`,{className:`mt-2 mb-0 text-xs text-muted-foreground`,children:_(`admin.account.joined`,{date:u(g.createdAt)})})]}),(0,Q.jsxs)(R,{className:`ml-auto`,onClick:()=>{f(void 0),l(`profile`)},children:[(0,Q.jsx)(ge,{}),_(`admin.account.edit`)]})]}),(0,Q.jsx)(q,{title:_(`admin.account.instanceRole`),description:i(g.role)?_(`admin.account.adminDescription`):_(`admin.account.userDescription`),children:(0,Q.jsx)(R,{onClick:()=>{f(void 0),l(`role`)},children:_(`admin.account.changeRole`)})}),(0,Q.jsx)(q,{title:_(`admin.account.signInMethods`),description:me(g.providers),children:(0,Q.jsxs)(R,{onClick:()=>{f(void 0),l(`password`)},children:[(0,Q.jsx)(Ee,{}),_(`admin.account.setPassword`)]})}),(0,Q.jsx)(q,{title:_(`admin.account.activeSessions`),description:_(`admin.account.sessions`,{count:g.sessionCount}),children:(0,Q.jsx)(N,{label:_(`admin.account.revokeSessions`),description:_(`admin.account.revokeConfirm`,{name:g.name}),onConfirm:()=>y(()=>M.admin.revokeUserSessions({userId:g.id}),_(`admin.account.sessionsRevoked`))})}),g.id!==o.id&&(0,Q.jsx)(q,{title:_(`admin.account.access`),description:g.banned?_(`admin.account.accessDisabled`):_(`admin.account.accessPreserved`),children:(0,Q.jsx)(N,{label:g.banned?_(`admin.account.enable`):_(`admin.account.disable`),danger:!g.banned,description:g.banned?_(`admin.account.enableConfirm`,{name:g.name}):_(`admin.account.disableConfirm`,{name:g.name}),onConfirm:()=>y(()=>g.banned?M.admin.unbanUser({userId:g.id}):M.admin.banUser({userId:g.id,banReason:`Disabled by an instance administrator`}),g.banned?_(`admin.account.enabled`):_(`admin.account.disabledToast`))})}),g.id!==o.id&&(0,Q.jsx)(he,{account:g,onDeleted:async()=>{r(),await a()}}),(0,Q.jsxs)(`section`,{className:`pt-7`,children:[(0,Q.jsxs)(`div`,{className:`mb-3 flex items-center justify-between gap-3`,children:[(0,Q.jsx)(`h3`,{className:`mb-0`,children:_(`admin.account.workspaces`)}),(0,Q.jsxs)(R,{size:`sm`,onClick:()=>{f(void 0),l(`workspace`)},children:[(0,Q.jsx)(pe,{}),_(`admin.account.addToWorkspace`)]})]}),g.workspaces.length?g.workspaces.map(e=>(0,Q.jsx)($,{badge:c[e.role],children:(0,Q.jsx)(G,{to:`/workspaces/$workspaceId/settings`,params:{workspaceId:e.id},search:{section:`members`},onClick:r,className:`text-primary`,dir:`auto`,children:e.name})},e.id)):(0,Q.jsx)(C,{title:_(`admin.account.noWorkspaces`),className:`py-5`})]}),!!g.projects.length&&(0,Q.jsxs)(`section`,{className:`pt-7`,children:[(0,Q.jsx)(`h3`,{children:_(`admin.account.projectAccess`)}),g.projects.map(e=>(0,Q.jsx)($,{badge:c[e.role],children:(0,Q.jsx)(G,{to:`/projects/$projectId/settings`,params:{projectId:e.id},search:{section:`members`},onClick:r,className:`text-primary`,dir:`auto`,children:e.name})},e.id))]})]})]}),g&&(0,Q.jsx)(ne,{title:_(s===`profile`?`admin.account.edit`:s===`role`?`admin.account.changeRoleTitle`:s===`workspace`?`admin.account.addToWorkspace`:`admin.account.setPassword`),open:!!s,onOpenChange:e=>{e||l(null)},busy:t,children:(0,Q.jsxs)(`form`,{onSubmit:e=>{e.preventDefault();let t=new FormData(e.currentTarget),n,r;if(s===`profile`)n=()=>M.admin.updateUser({userId:g.id,data:{name:W(t,`name`),email:W(t,`email`)}}),r=_(`admin.account.updated`);else if(s===`role`)n=()=>M.admin.setRole({userId:g.id,role:t.get(`role`)===`admin`?`admin`:`user`}),r=_(`admin.account.roleUpdated`);else if(s===`workspace`)n=()=>m.mutateAsync({workspaceId:W(t,`workspace`),email:g.email,role:W(t,`role`)===`reader`?`reader`:W(t,`role`)===`admin`?`admin`:`writer`}),r=_(`admin.account.workspaceAdded`);else{let e=W(t,`password`);if(e!==W(t,`confirm`)){f(Error(_(`admin.account.passwordMismatch`)));return}n=()=>T.request(`/api/v1/admin/users/${encodeURIComponent(g.id)}/password`,v,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({password:e})}),r=_(`admin.account.passwordSet`)}y(n,r).catch(()=>{})},children:[s===`profile`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(F,{label:_(`admin.account.name`),name:`name`,defaultValue:g.name,required:!0,maxLength:120,autoFocus:!0}),(0,Q.jsx)(F,{label:_(`admin.account.email`),name:`email`,type:`email`,defaultValue:g.email,required:!0})]}):s===`role`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(I,{label:_(`admin.account.instanceRole`),name:`role`,defaultValue:i(g.role)?`admin`:`user`,children:[(0,Q.jsx)(A,{value:`user`,children:_(`admin.account.user`)}),(0,Q.jsx)(A,{value:`admin`,children:_(`admin.account.administrator`)})]}),(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:_(`admin.account.adminsNote`)})]}):s===`workspace`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(I,{label:_(`admin.account.workspace`),name:`workspace`,required:!0,children:p.data?.filter(e=>!g.workspaces.some(t=>t.id===e.id)).map(e=>(0,Q.jsx)(A,{value:e.id,children:e.name},e.id))}),(0,Q.jsxs)(I,{label:_(`admin.account.workspaceRole`),name:`role`,defaultValue:`writer`,children:[(0,Q.jsx)(A,{value:`reader`,children:c.reader}),(0,Q.jsx)(A,{value:`writer`,children:c.writer}),(0,Q.jsx)(A,{value:`admin`,children:c.admin})]})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(F,{label:_(`admin.account.newPassword`),name:`password`,type:`password`,autoComplete:`new-password`,required:!0,minLength:12,maxLength:128}),(0,Q.jsx)(F,{label:_(`admin.account.confirmPassword`),name:`confirm`,type:`password`,autoComplete:`new-password`,required:!0,minLength:12,maxLength:128}),(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:_(`admin.account.passwordNote`)})]}),(0,Q.jsx)(B,{error:d,pending:t,submitLabel:_(`admin.account.save`),pendingLabel:_(`common.state.saving`),onCancel:()=>l(null)})]},s)})]})}function Ke({onCreated:e,onCancel:t,pending:n,setPending:r}){let i=U(),[a,o]=(0,Z.useState)();async function s(t){t.preventDefault();let n=t.currentTarget,a=new FormData(n);r(!0),o(void 0);try{let t=await M.admin.createUser({name:W(a,`name`),email:W(a,`email`),password:W(a,`password`),role:a.get(`role`)===`admin`?`admin`:`user`});if(t.error)throw Error(t.error.message);await i.invalidateQueries({queryKey:[`kanvil`,`users`]}),e(t.data.user.id,t.data.user.email)}catch(e){o(e)}finally{r(!1)}}return(0,Q.jsx)(`section`,{children:(0,Q.jsxs)(`form`,{onSubmit:e=>{s(e)},children:[(0,Q.jsx)(F,{label:_(`admin.users.name`),name:`name`,required:!0,maxLength:120,autoFocus:!0}),(0,Q.jsx)(F,{label:_(`admin.users.email`),name:`email`,type:`email`,required:!0,autoComplete:`off`}),(0,Q.jsx)(F,{label:_(`admin.users.initialPassword`),name:`password`,type:`password`,autoComplete:`new-password`,minLength:12,maxLength:128,required:!0}),(0,Q.jsxs)(I,{label:_(`admin.users.instanceRole`),name:`role`,children:[(0,Q.jsx)(A,{value:`user`,children:_(`admin.users.user`)}),(0,Q.jsx)(A,{value:`admin`,children:_(`admin.users.administrator`)})]}),(0,Q.jsx)(B,{error:a,pending:n,submitLabel:_(`admin.users.create`),pendingLabel:_(`admin.users.creating`),onCancel:t})]})})}function qe(){let e=U(),t=M.useSession(),[n,r]=(0,Z.useState)(!1),[a,o]=(0,Z.useState)(!1),[s,c]=(0,Z.useState)(``),[l,u]=(0,Z.useState)(`all`),[d,f]=(0,Z.useState)(`all`),[p,m]=(0,Z.useState)(0),[h,g]=(0,Z.useState)(null),v=V({queryKey:[`kanvil`,`users`,s,l,d,p],queryFn:()=>T.request(`/api/v1/admin/users?${new URLSearchParams({q:s,role:l,status:d,offset:String(p),limit:`25`})}`,Ve),placeholderData:le});async function y(){await Promise.all([e.invalidateQueries({queryKey:[`kanvil`]}),t.refetch()])}return(0,Q.jsxs)(`section`,{children:[(0,Q.jsx)(z,{title:_(`admin.users.title`),action:(0,Q.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center justify-end gap-2`,children:[(0,Q.jsx)(de,{label:_(`admin.users.search`),placeholder:_(`admin.users.searchPlaceholder`),value:s,onChange:e=>{c(e),m(0)}}),(0,Q.jsx)(E,{label:_(`admin.users.new`),variant:`default`,onClick:()=>r(!0),children:(0,Q.jsx)(Ie,{})})]})}),(0,Q.jsxs)(`div`,{className:`mb-5 flex flex-wrap items-center gap-2`,children:[(0,Q.jsxs)(I,{label:_(`admin.users.roleFilter`),labelHidden:!0,className:`mb-0 w-40`,value:l,onValueChange:e=>{e&&u(e),m(0)},children:[(0,Q.jsx)(A,{value:`all`,children:_(`admin.users.allRoles`)}),(0,Q.jsx)(A,{value:`admin`,children:_(`admin.users.administrators`)}),(0,Q.jsx)(A,{value:`user`,children:_(`admin.users.users`)})]}),(0,Q.jsxs)(I,{label:_(`admin.users.statusFilter`),labelHidden:!0,className:`mb-0 w-40`,value:d,onValueChange:e=>{e&&f(e),m(0)},children:[(0,Q.jsx)(A,{value:`all`,children:_(`admin.users.allAccounts`)}),(0,Q.jsx)(A,{value:`active`,children:_(`admin.users.active`)}),(0,Q.jsx)(A,{value:`disabled`,children:_(`admin.users.disabled`)})]})]}),(0,Q.jsx)(O,{error:v.error}),v.isPending?(0,Q.jsx)(P,{}):v.data?.users.length?(0,Q.jsx)(`div`,{"aria-busy":v.isFetching,children:(0,Q.jsxs)(Ne,{mobileLayout:`rows`,"aria-label":_(`admin.users.title`),children:[(0,Q.jsx)(je,{children:(0,Q.jsxs)(Y,{children:[(0,Q.jsx)(J,{children:_(`admin.users.user`)}),(0,Q.jsx)(J,{children:_(`admin.users.role`)}),(0,Q.jsx)(J,{children:_(`admin.users.status`)}),(0,Q.jsx)(J,{children:_(`admin.users.joined`)}),(0,Q.jsx)(J,{children:(0,Q.jsx)(`span`,{className:`sr-only`,children:_(`admin.users.actions`)})})]})}),(0,Q.jsx)(Me,{children:v.data.users.map(e=>(0,Q.jsx)(Se,{name:e.name,email:e.email,onOpen:()=>g(e.id),children:(0,Q.jsxs)(Y,{children:[(0,Q.jsx)(X,{className:`whitespace-normal`,children:(0,Q.jsx)(R,{variant:`ghost`,className:`h-auto max-w-full justify-start p-0 text-left hover:bg-transparent`,onClick:()=>g(e.id),children:(0,Q.jsx)(ae,{name:e.name,email:e.email,image:e.image})})}),(0,Q.jsx)(X,{"data-label":_(`admin.users.role`),children:(0,Q.jsx)(H,{variant:`secondary`,children:i(e.role)?_(`admin.users.administrator`):_(`admin.users.user`)})}),(0,Q.jsx)(X,{"data-label":_(`admin.users.status`),children:(0,Q.jsx)(H,{variant:e.banned?`destructive`:`outline`,children:e.banned?_(`admin.users.disabled`):_(`admin.users.active`)})}),(0,Q.jsx)(X,{"data-label":_(`admin.users.joined`),className:`text-xs text-muted-foreground`,children:(0,Q.jsx)(se,{value:e.createdAt})}),(0,Q.jsx)(X,{children:(0,Q.jsx)(R,{variant:`ghost`,size:`icon`,"aria-label":_(`admin.users.manage`,{name:e.name}),onClick:()=>g(e.id),children:(0,Q.jsx)(_e,{})})})]})},e.id))})]})}):(0,Q.jsx)(C,{title:_(s||l!==`all`||d!==`all`?`admin.users.noMatches`:`admin.users.empty`),className:`py-12`}),(0,Q.jsx)(fe,{noun:_(`admin.users.pagerNoun`),offset:p,total:v.data?.total??0,size:25,onChange:m}),(0,Q.jsx)(ne,{title:_(`admin.users.create`),open:n,onOpenChange:r,busy:a,children:(0,Q.jsx)(Ke,{pending:a,setPending:o,onCancel:()=>r(!1),onCreated:(e,t)=>{r(!1),c(``),u(`all`),f(`all`),m(0),g(e),k.success(_(`admin.users.created`,{email:t}))}})}),(0,Q.jsx)(We,{userId:h,onClose:()=>g(null),onChanged:y})]})}var Je=25;function Ye(){let[e,t]=(0,Z.useState)(``),[n,r]=(0,Z.useState)(0),[i,a]=(0,Z.useState)(null),o=V({queryKey:[`kanvil`,`admin-workspaces`,e,n],queryFn:()=>T.request(`/api/v1/admin/workspaces?${new URLSearchParams({q:e,offset:String(n),limit:String(Je)})}`,Ue),placeholderData:le});return(0,Q.jsxs)(`section`,{children:[(0,Q.jsx)(z,{title:_(`settings.workspaces.title`),action:(0,Q.jsx)(`div`,{className:`flex min-w-0 flex-1 items-center justify-end gap-2`,children:(0,Q.jsx)(de,{label:_(`settings.workspaces.search`),placeholder:_(`settings.workspaces.searchPlaceholder`),value:e,onChange:e=>{t(e),r(0)}})})}),(0,Q.jsx)(O,{error:o.error}),o.isPending?(0,Q.jsx)(P,{}):o.data?.workspaces.length?(0,Q.jsx)(`div`,{"aria-busy":o.isFetching,children:(0,Q.jsxs)(Ne,{mobileLayout:`rows`,"aria-label":_(`settings.workspaces.title`),children:[(0,Q.jsx)(je,{children:(0,Q.jsxs)(Y,{children:[(0,Q.jsx)(J,{children:_(`settings.workspaces.workspace`)}),(0,Q.jsx)(J,{children:_(`settings.workspaces.administrators`)}),(0,Q.jsx)(J,{children:_(`settings.workspaces.members`)}),(0,Q.jsx)(J,{children:_(`settings.workspaces.projects`)}),(0,Q.jsx)(J,{children:_(`settings.workspaces.created`)}),(0,Q.jsx)(J,{children:(0,Q.jsx)(`span`,{className:`sr-only`,children:_(`settings.workspaces.actions`)})})]})}),(0,Q.jsx)(Me,{children:o.data.workspaces.map(e=>(0,Q.jsxs)(Y,{children:[(0,Q.jsx)(X,{className:`whitespace-normal`,children:(0,Q.jsxs)(R,{variant:`ghost`,className:`h-auto max-w-full flex-col items-start gap-0.5 p-0 text-left hover:bg-transparent`,onClick:()=>a(e),children:[(0,Q.jsx)(`span`,{dir:`auto`,className:`font-medium wrap-anywhere whitespace-normal`,children:e.name}),(0,Q.jsx)(`span`,{className:`font-mono text-xs font-normal text-muted-foreground`,children:e.slug})]})}),(0,Q.jsx)(X,{"data-label":_(`settings.workspaces.administrators`),className:`text-xs wrap-anywhere whitespace-normal`,children:e.administrators.length?f(e.administrators.map(e=>e.name)):(0,Q.jsx)(H,{variant:`destructive`,children:_(`settings.workspaces.noAdministrator`)})}),(0,Q.jsx)(X,{"data-label":_(`settings.workspaces.members`),className:`tabular-nums`,children:e.memberCount}),(0,Q.jsx)(X,{"data-label":_(`settings.workspaces.projects`),className:`tabular-nums`,children:e.projectCount}),(0,Q.jsx)(X,{"data-label":_(`settings.workspaces.created`),className:`text-xs text-muted-foreground`,children:(0,Q.jsx)(se,{value:e.createdAt})}),(0,Q.jsx)(X,{children:(0,Q.jsx)(R,{variant:`ghost`,size:`icon`,"aria-label":_(`settings.workspaces.manage`,{name:e.name}),onClick:()=>a(e),children:(0,Q.jsx)(_e,{})})})]},e.id))})]})}):(0,Q.jsx)(C,{title:_(e?`settings.workspaces.noMatches`:`settings.workspaces.empty`),className:`py-12`}),(0,Q.jsx)(fe,{noun:_(`settings.workspaces.pagerNoun`),offset:n,total:o.data?.total??0,size:Je,onChange:r}),(0,Q.jsx)(Xe,{workspace:i,onClose:()=>a(null)})]})}function Xe({workspace:e,onClose:t}){let{shown:n,settled:r}=we(e,e=>e.id),i=n?.id??``,a=V({...T.query(`list_workspace_members`,{workspaceId:i}),enabled:!!n}),o=V({...T.query(`list_projects`,{workspaceId:i,archived:`include`}),enabled:!!n}),s=V({...T.query(`list_workspace_roles`,{workspaceId:i}),enabled:!!n}),c=ie(`set_workspace_member`);return(0,Q.jsx)(xe,{open:!!e,onOpenChange:e=>{!e&&!c.isPending&&t()},onOpenChangeComplete:r,children:(0,Q.jsxs)(be,{className:`w-full! sm:max-w-lg!`,children:[(0,Q.jsxs)(Oe,{className:`shrink-0 border-b pr-14`,children:[(0,Q.jsx)(ye,{className:`mb-0`,children:n?.name??_(`settings.workspaces.workspace`)}),(0,Q.jsx)(Ce,{className:`font-mono`,children:n?.slug})]}),(0,Q.jsxs)(`div`,{className:`@container min-h-0 overflow-y-auto px-6 pb-8`,children:[(0,Q.jsx)(Pe,{people:a.data??[],pending:c.isPending,loading:a.isPending,error:a.error,canAdmin:!0,ownerId:n?.ownerId,scope:`workspace`,roles:s.data,authority:{admin:!0,capabilities:m},onChange:(e,t)=>c.mutateAsync({workspaceId:i,email:e,role:t})}),n&&(0,Q.jsx)(ve,{workspaceId:n.id}),(0,Q.jsxs)(`section`,{className:`pt-7`,children:[(0,Q.jsx)(`h3`,{children:_(`settings.workspaces.projects`)}),(0,Q.jsx)(O,{error:o.error}),o.isPending?(0,Q.jsx)(P,{}):o.data?.length?o.data.map(e=>(0,Q.jsx)($,{badge:e.visibility===`private`?_(`settings.workspaces.private`):_(`settings.members.workspaceAccess`),children:(0,Q.jsx)(G,{to:`/projects/$projectId/settings`,params:{projectId:e.id},search:{section:`members`},onClick:t,className:`text-primary`,children:e.name})},e.id)):(0,Q.jsx)(C,{title:_(`settings.workspaces.noProjects`),className:`py-5`})]})]},n?.id)]})})}var Ze={queryKey:[`kanvil`,`instance`],queryFn:()=>T.request(`/api/v1/admin/instance`,h)};function Qe({section:e}){let t=V({...Ze,refetchOnMount:`always`,refetchInterval:[`search`,`storage`,`events`].includes(e)?5e3:!1});return t.data&&t.isFetchedAfterMount?(0,Q.jsx)(et,{data:t.data,section:e},e):t.isPending||t.isFetching?(0,Q.jsx)(P,{}):(0,Q.jsx)(O,{error:t.error})}function $e(e){return{expectedVersion:e.version,authentication:e.authentication,name:e.name,description:e.description,storageProvider:e.storage.provider,s3:{endpoint:``,region:`us-east-1`,bucket:``,prefix:`kanvil/`,forcePathStyle:!0,accessKeyId:``,...e.storage.settings,secretAccessKey:``},brokerProvider:e.broker.provider,rabbit:{url:``,exchange:e.broker.settings?.exchange??`kanvil.events`},searchProvider:e.search.provider,elastic:{url:``,index:`kanvil-${e.id}`,username:``,...e.search.settings,auth:e.search.settings?.auth??`none`,apiKey:``,password:``}}}function et({data:e,section:t}){let n=U(),i=re(),[a,o]=(0,Z.useState)(()=>$e(e)),[c,l]=(0,Z.useState)(!1),[u,p]=(0,Z.useState)(),[m,h]=(0,Z.useState)(``),[g,y]=(0,Z.useState)(!1),b=e.storage.source===`deployment`,x=e.search.source===`deployment`,S=e.broker.source===`deployment`,C=t===`storage`?b:t===`search`?x:t===`events`&&S,w=e=>o(t=>({...t,s3:{...t.s3,...e}})),E=e=>o(t=>({...t,elastic:{...t.elastic,...e}}));async function D(e,t,n=!1){p(void 0),h(``),l(!0);try{await e(),n?k.success(t,{id:`instance-settings`}):h(t)}catch(e){p(e)}finally{l(!1)}}async function M(){let e=d.parse({expectedVersion:a.expectedVersion,...t===`authentication`?{authentication:a.authentication}:{},name:a.name,description:a.description,storage:a.storageProvider===`s3`?{provider:`s3`,...a.s3}:{provider:`local`},broker:a.brokerProvider===`rabbitmq`?{provider:`rabbitmq`,...a.rabbit,url:a.rabbit.url||void 0}:{provider:`postgres`},search:a.searchProvider===`elasticsearch`?{provider:`elasticsearch`,...a.elastic}:{provider:`postgres`}});await T.request(`/api/v1/admin/instance`,v,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),o(e=>({...e,expectedVersion:e.expectedVersion+1,s3:{...e.s3,secretAccessKey:``},elastic:{...e.elastic,apiKey:``,password:``},rabbit:{...e.rabbit,url:``}})),await n.invalidateQueries({queryKey:[`kanvil`,`instance`]}),await n.invalidateQueries({queryKey:[`info`]}),y(!1)}return(0,Q.jsxs)(ke,{title:_(`admin.instance.title`),section:t,children:[[`general`,`storage`,`search`,`events`].map(t=>(0,Q.jsx)(K,{value:t,children:(0,Q.jsx)(Re,{data:e,section:t,onConfigure:()=>{o($e(e)),p(void 0),h(``),y(!0)}})},t)),!g&&t!==`authentication`&&(0,Q.jsx)(O,{error:u}),(0,Q.jsx)(ne,{title:_(t===`general`?`admin.instance.edit`:t===`storage`?`admin.configure.storageTitle`:t===`search`?`admin.configure.searchTitle`:`admin.configure.eventsTitle`),open:g,onOpenChange:y,busy:c,children:(0,Q.jsxs)(`form`,{className:`[&_section]:py-0 [&>[data-slot=field-set]>section:first-child]:pt-0`,onSubmit:e=>{e.preventDefault(),C||D(M,_(`admin.configure.saved`),!0)},children:[(0,Q.jsxs)(L,{disabled:c,className:`gap-0`,children:[t===`general`&&(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsxs)(`section`,{children:[(0,Q.jsx)(`h2`,{children:_(`admin.instance.heading`)}),(0,Q.jsx)(F,{label:_(`admin.configure.instanceName`),required:!0,maxLength:100,value:a.name,onChange:e=>o({...a,name:e.target.value})}),(0,Q.jsx)(ce,{label:_(`admin.configure.instanceDescription`),maxLength:500,value:a.description,onChange:e=>o({...a,description:e.target.value})}),(0,Q.jsx)(j,{label:_(`admin.instance.publicUrl`),value:e.deployment.url}),(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:_(`admin.configure.publicUrlSource`)})]})}),t===`storage`&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`section`,{children:[(0,Q.jsxs)(`div`,{className:`mb-5 flex items-center gap-3`,children:[(0,Q.jsx)(`h2`,{className:`mb-0`,children:_(`admin.instance.section.storage`)}),(0,Q.jsx)(H,{variant:`secondary`,children:_(b?`admin.instance.deploymentManaged`:`admin.instance.instanceManaged`)})]}),(0,Q.jsx)(`p`,{children:_(`admin.configure.storageIntro`)}),(0,Q.jsxs)(I,{label:_(`admin.configure.storageProvider`),disabled:b,value:a.storageProvider,onValueChange:e=>o({...a,storageProvider:e===`s3`?`s3`:`local`}),children:[(0,Q.jsx)(A,{value:`local`,children:_(`admin.instance.provider.local`)}),(0,Q.jsx)(A,{value:`s3`,children:_(`admin.instance.provider.s3`)})]}),a.storageProvider===`local`?(0,Q.jsx)(`p`,{children:_(`admin.configure.localDescription`)}):(0,Q.jsxs)(L,{disabled:b,className:`gap-0`,children:[(0,Q.jsx)(F,{label:_(`admin.configure.s3Endpoint`),type:`url`,placeholder:`https://s3.example.com`,value:a.s3.endpoint,onChange:e=>w({endpoint:e.target.value})}),(0,Q.jsx)(`p`,{className:`-mt-2 text-xs`,children:_(`admin.configure.s3EndpointHint`)}),(0,Q.jsxs)(`div`,{className:`grid grid-cols-1 gap-x-5 sm:grid-cols-2`,children:[(0,Q.jsx)(F,{label:_(`admin.instance.bucket`),value:a.s3.bucket,required:!0,onChange:e=>w({bucket:e.target.value})}),(0,Q.jsx)(F,{label:_(`admin.configure.region`),value:a.s3.region,required:!0,onChange:e=>w({region:e.target.value})})]}),(0,Q.jsx)(F,{label:_(`admin.configure.prefix`),value:a.s3.prefix,onChange:e=>w({prefix:e.target.value})}),(0,Q.jsx)(F,{label:_(`admin.configure.accessKeyId`),autoComplete:`off`,value:a.s3.accessKeyId,onChange:e=>w({accessKeyId:e.target.value})}),(0,Q.jsx)(F,{label:_(`admin.configure.secretAccessKey`),type:`password`,autoComplete:`new-password`,value:a.s3.secretAccessKey,placeholder:e.storage.secretConfigured?_(`admin.configure.savedSecret`):_(`admin.configure.deploymentCredentials`),onChange:e=>w({secretAccessKey:e.target.value})}),(0,Q.jsx)(te,{label:_(`admin.configure.pathStyle`),checked:a.s3.forcePathStyle,onCheckedChange:e=>w({forcePathStyle:e})})]}),a.storageProvider===`s3`&&(0,Q.jsx)(R,{disabled:c,onClick:()=>{D(()=>T.request(`/api/v1/admin/storage/test`,v,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(a.s3)}),_(`admin.configure.storageVerified`))},children:_(`admin.configure.testStorage`)}),(0,Q.jsx)(`p`,{className:`mt-4 text-xs`,role:`status`,children:e.storage.pending?_(`admin.configure.filesWaiting`,{count:e.storage.pending}):_(`admin.configure.transfersComplete`)}),e.storage.error&&(0,Q.jsx)(O,{error:Error(e.storage.error)}),b&&(0,Q.jsx)(`p`,{className:`mt-4 text-xs`,children:_(`admin.configure.storageDeployment`)})]}),e.locations.length>0&&(0,Q.jsxs)(`section`,{children:[(0,Q.jsx)(`h2`,{children:_(`admin.configure.locations`)}),e.locations.map(e=>(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3 border-b py-2.5 text-xs wrap-anywhere [&>:first-child]:min-w-24 [&>:first-child]:flex-1`,children:[(0,Q.jsxs)(`span`,{className:`grid gap-1`,children:[(0,Q.jsx)(`strong`,{children:e.bucket}),(0,Q.jsxs)(`span`,{className:`text-muted-foreground`,children:[e.endpoint||`Amazon S3`,` / `,e.prefix]})]}),(0,Q.jsx)(`span`,{children:_(`admin.configure.locationFiles`,{count:e.objects})})]},e.id)),(0,Q.jsx)(`div`,{className:`mt-4`,children:(0,Q.jsx)(N,{label:_(`admin.configure.cleanUp`),description:_(`admin.configure.cleanUpConfirm`),onConfirm:async()=>{await T.request(`/api/v1/admin/storage/cleanup`,s({removed:r()}),{method:`POST`}),await n.invalidateQueries({queryKey:[`kanvil`,`instance`]})}})}),(0,Q.jsx)(`p`,{className:`mt-3 text-xs`,children:_(`admin.configure.cleanUpNote`)})]})]}),t===`search`&&(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsxs)(`section`,{children:[(0,Q.jsxs)(`div`,{className:`mb-5 flex items-center gap-3`,children:[(0,Q.jsx)(`h2`,{className:`mb-0`,children:_(`admin.instance.section.search`)}),(0,Q.jsx)(H,{variant:`secondary`,children:e.search.status===`builtin`?`PostgreSQL`:_(`admin.instance.status.${e.search.status}`)})]}),(0,Q.jsxs)(I,{label:_(`admin.configure.searchProvider`),disabled:x,value:a.searchProvider,onValueChange:e=>o({...a,searchProvider:e===`elasticsearch`?`elasticsearch`:`postgres`}),children:[(0,Q.jsx)(A,{value:`postgres`,children:_(`admin.configure.searchBuiltIn`)}),(0,Q.jsx)(A,{value:`elasticsearch`,children:_(`admin.instance.provider.elasticsearch`)})]}),a.searchProvider===`elasticsearch`&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(L,{disabled:x,className:`gap-0`,children:[(0,Q.jsx)(F,{label:_(`admin.instance.searchEndpoint`),type:`url`,required:!0,value:a.elastic.url,onChange:e=>E({url:e.target.value})}),(0,Q.jsx)(F,{label:_(`admin.configure.indexName`),required:!0,value:a.elastic.index,onChange:e=>E({index:e.target.value})}),(0,Q.jsxs)(I,{label:_(`admin.configure.searchAuthentication`),value:a.elastic.auth,onValueChange:e=>E({auth:ee.parse(e)}),children:[(0,Q.jsx)(A,{value:`none`,children:_(`admin.configure.noAuthentication`)}),(0,Q.jsx)(A,{value:`apiKey`,children:_(`admin.configure.apiKey`)}),(0,Q.jsx)(A,{value:`basic`,children:_(`admin.configure.basic`)})]}),a.elastic.auth===`apiKey`&&(0,Q.jsx)(F,{label:_(`admin.configure.searchApiKey`),type:`password`,autoComplete:`new-password`,placeholder:e.search.secretConfigured?_(`admin.configure.savedSecret`):_(`admin.configure.optional`),value:a.elastic.apiKey,onChange:e=>E({apiKey:e.target.value})}),a.elastic.auth===`basic`&&(0,Q.jsxs)(`div`,{className:`grid grid-cols-1 gap-x-5 sm:grid-cols-2`,children:[(0,Q.jsx)(F,{label:_(`admin.configure.searchUsername`),autoComplete:`off`,value:a.elastic.username,onChange:e=>E({username:e.target.value})}),(0,Q.jsx)(F,{label:_(`admin.configure.searchPassword`),type:`password`,autoComplete:`new-password`,value:a.elastic.password,onChange:e=>E({password:e.target.value})})]})]}),(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Q.jsx)(R,{onClick:()=>{D(()=>T.request(`/api/v1/admin/search/test`,v,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(a.elastic)}),_(`admin.configure.searchVerified`))},children:_(`admin.configure.testSearch`)}),e.search.provider===`elasticsearch`&&(0,Q.jsx)(R,{onClick:()=>{D(()=>T.request(`/api/v1/admin/search/reindex`,v,{method:`POST`}),_(`admin.configure.rebuildQueued`))},children:_(`admin.configure.rebuild`)})]})]}),(0,Q.jsx)(`p`,{className:`mt-5`,children:_(`admin.configure.searchNote`)}),e.search.error&&(0,Q.jsx)(O,{error:Error(e.search.error)})]})}),t===`events`&&(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsxs)(`section`,{children:[(0,Q.jsxs)(`div`,{className:`mb-5 flex items-center gap-3`,children:[(0,Q.jsx)(`h2`,{className:`mb-0`,children:_(`admin.instance.section.events`)}),(0,Q.jsx)(H,{variant:`secondary`,children:e.broker.status===`builtin`?`PostgreSQL`:_(`admin.instance.status.${e.broker.status}`)})]}),(0,Q.jsxs)(I,{label:_(`admin.configure.brokerProvider`),disabled:S,value:a.brokerProvider,onValueChange:e=>o({...a,brokerProvider:e===`rabbitmq`?`rabbitmq`:`postgres`}),children:[(0,Q.jsx)(A,{value:`postgres`,children:_(`admin.configure.brokerBuiltIn`)}),(0,Q.jsx)(A,{value:`rabbitmq`,children:`RabbitMQ`})]}),a.brokerProvider===`rabbitmq`&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(L,{disabled:S,className:`gap-0`,children:[(0,Q.jsx)(F,{label:_(`admin.configure.rabbitUrl`),type:`password`,autoComplete:`new-password`,value:a.rabbit.url,placeholder:e.broker.secretConfigured?_(`admin.configure.savedSecret`):`amqps://user:password@host/vhost`,onChange:e=>o({...a,rabbit:{...a.rabbit,url:e.target.value}})}),e.broker.settings&&(0,Q.jsx)(j,{label:_(`admin.configure.savedBrokerEndpoint`),value:e.broker.settings.endpoint}),(0,Q.jsx)(F,{label:_(`admin.configure.rabbitExchange`),required:!0,value:a.rabbit.exchange,onChange:e=>o({...a,rabbit:{...a.rabbit,exchange:e.target.value}})})]}),(0,Q.jsx)(R,{onClick:()=>{D(()=>T.request(`/api/v1/admin/broker/test`,v,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...a.rabbit,url:a.rabbit.url||void 0})}),_(`admin.configure.brokerVerified`))},children:_(`admin.configure.testBroker`)})]}),(0,Q.jsx)(`p`,{className:`mt-5`,children:_(`admin.configure.brokerNote`)}),S&&(0,Q.jsx)(`p`,{className:`mt-4 text-xs`,children:_(`admin.configure.brokerDeployment`)}),e.broker.error&&(0,Q.jsx)(O,{error:Error(e.broker.error)})]})})]}),[`general`,`storage`,`search`,`events`].includes(t)&&(0,Q.jsxs)(`div`,{className:`sticky bottom-0 mt-6 flex flex-wrap items-center gap-3 border-t bg-background/95 py-4 backdrop-blur`,children:[(0,Q.jsx)(R,{disabled:c,onClick:()=>y(!1),children:_(C?`common.action.done`:`common.action.cancel`)}),!C&&(0,Q.jsx)(R,{variant:`default`,type:`submit`,disabled:c,children:_(c?`common.state.saving`:`admin.configure.save`)}),m&&(0,Q.jsx)(`span`,{role:`status`,className:`text-sm text-muted-foreground`,children:m}),(0,Q.jsx)(O,{error:u})]})]})}),(0,Q.jsx)(K,{value:`users`,children:(0,Q.jsx)(qe,{})}),(0,Q.jsx)(K,{value:`workspaces`,children:(0,Q.jsx)(Ye,{})}),(0,Q.jsx)(K,{value:`authentication`,children:(0,Q.jsxs)(`section`,{children:[(0,Q.jsx)(z,{title:_(`admin.authentication.title`)}),(0,Q.jsxs)(`form`,{className:`mb-6`,onSubmit:e=>{e.preventDefault(),D(M,_(`admin.authentication.saved`),!0)},children:[(0,Q.jsx)(q,{title:_(`admin.authentication.emailPassword`),description:_(`admin.authentication.emailPasswordDescription`),children:(0,Q.jsx)(Ae,{"aria-label":_(`admin.authentication.emailPassword`),checked:a.authentication.emailPasswordEnabled,disabled:c,onCheckedChange:e=>o(t=>({...t,authentication:{...t.authentication,emailPasswordEnabled:e}}))})}),(0,Q.jsx)(q,{title:_(`admin.authentication.ssoProvision`),description:_(`admin.authentication.ssoProvisionDescription`),children:(0,Q.jsx)(Ae,{"aria-label":_(`admin.authentication.ssoProvision`),checked:a.authentication.ssoAutoProvision,disabled:c,onCheckedChange:e=>o(t=>({...t,authentication:{...t.authentication,ssoAutoProvision:e}}))})}),(0,Q.jsx)(q,{title:_(`admin.authentication.registration`),children:_(`admin.authentication.registrationClosed`)}),(0,Q.jsx)(q,{title:_(`admin.authentication.identityProvider`),children:e.deployment.oidc?.name??_(`admin.authentication.notConfigured`)}),(0,Q.jsx)(q,{title:_(`admin.authentication.linkedProviders`),description:_(`admin.authentication.linkedProvidersDescription`),children:f(i.data?.providers.filter(e=>e.id!==`oidc`).map(e=>e.name)??[])||_(`admin.authentication.notConfigured`)}),(0,Q.jsx)(B,{layout:`inline`,error:u,pending:c,submitLabel:_(`admin.authentication.save`),pendingLabel:_(`common.state.saving`),submitDisabled:a.authentication.emailPasswordEnabled===e.authentication.emailPasswordEnabled&&a.authentication.ssoAutoProvision===e.authentication.ssoAutoProvision})]}),e.deployment.oidc&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(j,{label:_(`admin.authentication.discoveryUrl`),value:e.deployment.oidc.discoveryUrl}),(0,Q.jsx)(j,{label:_(`admin.authentication.clientId`),value:e.deployment.oidc.clientId})]}),(0,Q.jsx)(`p`,{children:_(`admin.authentication.oidcSetup`)}),(0,Q.jsx)(`h3`,{children:_(`admin.authentication.consumers`)}),(0,Q.jsx)(j,{label:`HTTP API`,value:`${e.deployment.url}/api/v1`}),(0,Q.jsx)(j,{label:_(`admin.authentication.mcpEndpoint`),value:`${e.deployment.url}/mcp`}),(0,Q.jsx)(j,{label:_(`admin.authentication.eventFeed`),value:`${e.deployment.url}/api/v1/events`}),(0,Q.jsxs)(`a`,{className:`inline-flex items-center gap-2 text-primary`,href:`/api/openapi.json`,target:`_blank`,rel:`noreferrer`,children:[_(`admin.authentication.openApi`),(0,Q.jsx)(De,{className:`size-4`})]})]})})]})}export{Qe as AdminSettings};