import{rasn,jase,Masv,OasE,PasK,QasG,RasV,SasW}from"./index-Cvh4tLHo.js";import{Masa}from"./Modal-CCihVZTY.js";import{Aasb}from"./AdminAlert-Bt3L8_zJ.js";import{Aas_}from"./AdminButton-BKglG8kI.js";import{AasX}from"./AdminTable-BQ5Lf7EC.js";import{EasY}from"./EmptyState-D6lCh4WN.js";import{PasD}from"./PageHeader-D6k34vvM.js";functionre(){const[j,Q]=n.useState([]),[T,C]=n.useState(!0),[o,c]=n.useState(""),[A,d]=n.useState(!1),[S,B]=n.useState(!1),[P,f]=n.useState(""),[l,m]=n.useState(null),[L,g]=n.useState([]),[N,u]=n.useState(!1),[y,h]=n.useState(null),[M,p]=n.useState(""),w=()=>{C(!0),v("/database/list").then(Q).catch(s=>c(s.message)).finally(()=>C(!1))};n.useEffect(()=>{w()},[]);constI=s=>{s.preventDefault();constt=s.currentTarget,r=t.elements.namedItem("name").value.trim(),i=t.elements.namedItem("username").value.trim(),x=t.elements.namedItem("password").value,k=t.elements.namedItem("db_type").value,$=t.elements.namedItem("ps").value.trim();if(!r||!i||!x){f("Name, username and password are required");return}B(!0),f(""),v("/database/create",{method:"POST",body:JSON.stringify({name:r,username:i,password:x,db_type:k,ps:$})}).then(()=>{d(!1),t.reset(),w()}).catch(J=>f(J.message)).finally(()=>B(!1))},F=(s,t)=>{confirm(`Delete database "${t}"?`)&&v(`/database/${s}`,{method:"DELETE"}).then(w).catch(r=>c(r.message))},R=s=>{m(s),g([]),E(s).then(t=>g(t.backups||[])).catch(t=>c(t.message))},q=()=>{l&&(u(!0),K(l).then(()=>E(l).then(s=>g(s.backups||[]))).catch(s=>c(s.message)).finally(()=>u(!1)))},H=s=>{!l||!confirm(`Restore from ${s}? This will overwrite the database.`)||(u(!0),V(l,s).then(()=>m(null)).catch(t=>c(t.message)).finally(()=>u(!1)))},z=s=>{l&&G(l,s).catch(t=>c(t.message))},O=(s,t)=>{s.preventDefault();constr=s.currentTarget,i=r.elements.namedItem("new_password").value,x=r.elements.namedItem("confirm_password").value;if(!i||i.length<6){p("Password must be at least 6 characters");return}if(i!==x){p("Passwords do not match");return}p(""),W(t,i).then(()=>h(null)).catch(k=>p(k.message))},U=s=>s<1024?s+" B":s<1024*1024?(s/1024).toFixed(1)+" KB":(s/1024/1024).toFixed(1)+" MB";returnT?e.jsxs(e.Fragment,{children:[e.jsx(D,{title:"Databases"}),e.jsx("div",{className:"text-center py-5 text-muted",children:"Loading…"})]}):o&&!j.length?e.jsxs(e.Fragment,{children:[e.jsx(D,{title:"Databases"}),e.jsx(b,{variant:"danger",children:o})]}):e.jsxs(e.Fragment,{children:[e.jsx(D,{title:"Databases",actions:e.jsxs(_,{onClick:()=>d(!0),children:[e.jsx("i",{className:"ti ti-plus me-1"}),"Add Database"]})}),o?e.jsx(b,{variant:"warning",children:o}):null,e.jsxs(a,{show:A,onHide:()=>d(!1),centered:!0,children:[e.jsx(a.Header,{closeButton:!0,children:e.jsx(a.Title,{children:"Create Database"})}),e.jsxs("form",{onSubmit:I,children:[e.jsxs(a.Body,{children:[P?e.jsx(b,{variant:"danger",children:P}):null,e.jsxs("div",{className:"mb-3",children:[e.jsx("label",{className:"form-label",children:"Database Name"}),e.jsx("input",{name:"name",type:"text",placeholder:"mydb",className:"form-control",required:!0})]}),e.jsxs("div",{className:"mb-3",children:[e.jsx("label",{className:"form-label",children:"Username"}),e.jsx("input",{name:"username",type:"text",placeholder:"dbuser",className:"form-control",required:!0})]}),e.jsxs("div",{className:"mb-3",children:[e.jsx("label",{className:"form-label",children:"Password"}),e.jsx("input",{name:"password",type:"password",className:"form-control",required:!0})]}),e.jsxs("div",{className:"mb-3",children:[e.jsx("label",{className:"form-label",children:"Type"}),e.jsxs("select",{name:"db_type",className:"form-select",children:[e.jsx("option",{value:"MySQL",children:"MySQL (full support)"}),e.jsx("option",{value:"PostgreSQL",children:"PostgreSQL (full support)"}),e.jsx("option",{value:"MongoDB",children:"MongoDB (full support)"}),e.jsx("option",{value:"Redis",children:"Redis (panel record only)"})]}),e.jsx("div",{className:"form-text",children:"MySQL, PostgreSQL, MongoDB: create, delete, backup/restore. Password change supported for those types."})]}),e.jsxs("div",{className:"mb-0",childr