1import{u as v,r as t,j as e,bA as w}from"./main-Bo0oayNO.js";import{i as g,a as y}from"./index-ThM9GGfP.js";function F(){const u=v(),[o,c]=t.useState(!1),[m,n]=t.useState(null),[r,h]=t.useState({}),[s,p]=t.useState({username:"",email:"",password:"",confirmPassword:"",displayName:"",firstName:"",lastName:"",role:"subscriber",bio:"",isActive:!0}),i=a=>{const{name:l,value:j,type:b}=a.target,f=a.target.checked;p(d=>({...d,[l]:b==="checkbox"?f:j})),r[l]&&h(d=>({...d,[l]:""}))},x=()=>{const a={};return s.username?g(s.username)||(a.username="Username must be 3-30 characters, alphanumeric with underscores/hyphens"):a.username="Username is required",s.email?y(s.email)||(a.email="Please enter a valid email address"):a.email="Email is required",s.password?s.password.length<8&&(a.password="Password must be at least 8 characters"):a.password="Password is required",s.password!==s.confirmPassword&&(a.confirmPassword="Passwords do not match"),h(a),Object.keys(a).length===0},N=async a=>{if(a.preventDefault(),!!x()){c(!0),n(null);try{const l=await w({data:{username:s.username,email:s.email,password:s.password,displayName:s.displayName||void 0,firstName:s.firstName||void 0,lastName:s.lastName||void 0,role:s.role,bio:s.bio||void 0,isActive:s.isActive}});if(!l.success){n(l.error||"Failed to create user");return}u({to:"/admin/users",search:{page:1,role:"all",status:"active",search:""}})}catch(l){n(l instanceof Error?l.message:"Failed to create user")}finally{c(!1)}}};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-gray-900",children:"Add New User"}),e.jsx("p",{className:"text-gray-600",children:"Create a new user account"})]}),e.jsxs("a",{href:"/admin/users",className:"btn-secondary",children:[e.jsx("svg",{className:"w-4 h-4 mr-2",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 19l-7-7m0 0l7-7m-7 7h18"})}),"Back to Users"]})]}),m&&e.jsx("div",{className:"bg-red-50 border border-red-200 text-red-700 px-4 py-3 rounded-lg",children:m}),e.jsx("form",{onSubmit:N,className:"space-y-6",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[e.jsxs("div",{className:"lg:col-span-2 space-y-6",children:[e.jsxs("div",{className:"card p-6 space-y-4",children:[e.jsx("h3",{className:"font-semibold text-gray-900",children:"Account Information"}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"firstName",className:"label",children:"First Name"}),e.jsx("input",{type:"text",id:"firstName",name:"firstName",value:s.firstName,onChange:i,className:"input"})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"lastName",className:"label",children:"Last Name"}),e.jsx("input",{type:"text",id:"lastName",name:"lastName",value:s.lastName,onChange:i,className:"input"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"displayName",className:"label",children:"Display Name"}),e.jsx("input",{type:"text",id:"displayName",name:"displayName",value:s.displayName,onChange:i,className:"input",placeholder:"How the name will appear on the site"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"username",className:"label",children:["Username ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx("input",{type:"text",id:"username",name:"username",value:s.username,onChange:i,required:!0,className:`input ${r.username?"border-red-500":""}`}),r.username&&e.jsx("p",{className:"form-error",children:r.username})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"email",className:"label",children:["Email ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx("input",{type:"email",id:"email",name:"email",value:s.email,onChange:i,required:!0,className:`input ${r.email?"border-red-500":""}`}),r.email&&e.jsx("p",{className:"form-error",children:r.email})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"bio",className:"label",children:"Bio"}),e.jsx("textarea",{id:"bio",name:"bio",value:s.bio,onChange:i,rows:3,className:"input",placeholder:"Brief biography"})]})]}),e.jsxs("div",{className:"card p-6 space-y-4",children:[e.jsx("h3",{className:"font-semibold text-gray-900",children:"Password"}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"password",className:"label",children:["Password ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx("input",{type:"password",id:"password",name:"password",value:s.password,onChange:i,required:!0,className:`input ${r.password?"border-red-500":""}`}),r.password&&e.jsx("p",{className:"form-error",children:r.password})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"confirmPassword",className:"label",children:["Confirm Password ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx("input",{type:"password",id:"confirmPassword",name:"confirmPassword",value:s.confirmPassword,onChange:i,required:!0,className:`input ${r.confirmPassword?"border-red-500":""}`}),r.confirmPassword&&e.jsx("p",{className:"form-error",children:r.confirmPassword})]})]})]}),e.jsx("div",{className:"space-y-6",children:e.jsxs("div",{className:"card p-6 space-y-4",children:[e.jsx("h3",{className:"font-semibold text-gray-900",children:"Role & Status"}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"role",className:"label",children:"Role"}),e.jsxs("select",{id:"role",name:"role",value:s.role,onChange:i,className:"input",children:[e.jsx("option",{value:"subscriber",children:"Subscriber"}),e.jsx("option",{value:"contributor",children:"Contributor"}),e.jsx("option",{value:"author",children:"Author"}),e.jsx("option",{value:"editor",children:"Editor"}),e.jsx("option",{value:"administrator",children:"Administrator"})]})]}),e.jsx("div",{children:e.jsxs("label",{className:"flex items-center",children:[e.jsx("input",{type:"checkbox",name:"isActive",checked:s.isActive,onChange:i,className:"h-4 w-4 text-primary-600 focus:ring-primary-500 border-gray-300 rounded-sm"}),e.jsx("span",{className:"ml-2 text-sm text-gray-700",children:"Account is active"})]})}),e.jsx("button",{type:"submit",disabled:o,className:"w-full btn-primary",children:o?"Creating...":"Create User"})]})})]})})]})}export{F as component};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.