1import{u as z,r as m,a as S,j as e,H as te,b as D}from"./app-JqkQZVIN.js";import{A as se}from"./AdminLayout-CDz-YJdT.js";import{B as I}from"./Badge-BA2-ydfg.js";import{B as i}from"./Button-CHtPmOzg.js";import{C as b,T as re,M as r}from"./Tabs-CiMIPf0s.js";import{u as ae}from"./useTranslation-CC9YJjOt.js";import{P as W}from"./pencil-Cj7k8tYM.js";import{T as L}from"./trash-2-C_X6fPQP.js";import"./Sidebar-6eadgIJq.js";import"./createLucideIcon-Czgutyob.js";import"./ApplicationLogo--hUvSb0B.js";import"./plus-DcMxgEln.js";import"./x-Xjez3RjT.js";import"./chevron-down-BBg5fR1h.js";import"./Topbar-B1hfr8AF.js";import"./useLocale-vnABZqrL.js";import"./search-D76L6Ums.js";import"./loader-circle-D5FJt85h.js";import"./user-Cjfar1bv.js";import"./file-text-DQIUnHmO.js";import"./users-B_b_fWS2.js";import"./megaphone-eEjwNA2B.js";import"./globe-lHh7Sru4.js";import"./shield-check-DSIY3cwh.js";import"./user-cog-uRAmfEOG.js";import"./refresh-cw-B4xOmNX5.js";import"./transition-QUi7Lekh.js";function Re({roles:h=[],permissions:c=[],filters:F={},flash:M}){const{t:s}=ae(),{auth:B}=z().props,x=z().props.flash||M,C=((B==null?void 0:B.permissions)??[]).includes("manage_admin_roles"),[H,U]=m.useState(0),[P,$]=m.useState(F.role_search??""),[q,G]=m.useState(F.permission_search??""),[J,j]=m.useState(!1),[K,y]=m.useState(!1),[f,k]=m.useState(null),[u,g]=m.useState(null),[Q,N]=m.useState(!1),[V,v]=m.useState(!1),[T,_]=m.useState(null),[p,w]=m.useState(null),a=S({name:"",key:"",description:"",permission_ids:[]}),n=S({name:"",key:"",description:"",permission_ids:[]}),l=S({key:"",name:"",category:"",description:""}),d=S({key:"",name:"",category:"",description:""}),X=t=>{t.preventDefault(),D.get(route("admin.roles-permissions.index"),{role_search:P||void 0,permission_search:q||void 0},{preserveState:!0})},Y=t=>{t.preventDefault(),D.get(route("admin.roles-permissions.index"),{role_search:P||void 0,permission_search:q||void 0},{preserveState:!0})},Z=t=>{k(t),n.setData({name:t.name,key:t.key,description:t.description??"",permission_ids:t.permission_ids??[]}),y(!0)},ee=t=>{_(t),d.setData({key:t.key,name:t.name,category:t.category,description:t.description??""}),v(!0)},A=[...new Set((c||[]).map(t=>t.category))].sort();return e.jsxs(se,{title:s("admin.roles_permissions"),children:[e.jsx(te,{title:`${s("admin.roles_permissions")} · ${s("head.admin")}`}),e.jsxs("div",{className:"space-y-6",children:[(x==null?void 0:x.success)&&e.jsx("div",{className:"rounded-soft-lg bg-green-50 dark:bg-green-900/30 text-green-800 dark:text-green-200 px-4 py-2 text-sm",children:x.success}),(x==null?void 0:x.error)&&e.jsx("div",{className:"rounded-soft-lg bg-red-50 dark:bg-red-900/30 text-red-800 dark:text-red-200 px-4 py-2 text-sm",children:x.error}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl font-semibold text-neutral-900 dark:text-neutral-100",children:s("admin.roles_permissions")}),e.jsx("p",{className:"mt-0.5 text-sm text-neutral-500 dark:text-neutral-400",children:s("admin.roles_permissions_desc")})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsx(b,{children:e.jsxs(b.Body,{children:[e.jsx("p",{className:"text-sm text-neutral-500 dark:text-neutral-400",children:s("admin.total_roles")}),e.jsx("p",{className:"text-2xl font-semibold text-neutral-900 dark:text-neutral-100",children:(h==null?void 0:h.length)??0})]})}),e.jsx(b,{children:e.jsxs(b.Body,{children:[e.jsx("p",{className:"text-sm text-neutral-500 dark:text-neutral-400",children:s("admin.total_permissions")}),e.jsx("p",{className:"text-2xl font-semibold text-neutral-900 dark:text-neutral-100",children:(c==null?void 0:c.length)??0})]})})]}),e.jsx(re,{tabs:[{label:s("admin.tab_roles")},{label:s("admin.tab_permissions")}],defaultIndex:0,onChange:t=>U(t),children:e.jsxs("div",{className:"py-4",children:[H===0&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[e.jsxs("form",{onSubmit:X,className:"flex gap-2",children:[e.jsx("input",{type:"text",value:P,onChange:t=>$(t.target.value),placeholder:s("admin.search_roles"),className:"rounded-soft border border-neutral-300 dark:border-neutral-600 bg-white dark:bg-neutral-800 px-3 py-2 text-sm w-48"}),e.jsx(i,{type:"submit",variant:"outline",size:"sm",children:s("common.search")})]}),C&&e.jsx(i,{onClick:()=>j(!0),children:s("admin.add_role")})]}),e.jsxs(b,{children:[e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"min-w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-neutral-200 dark:border-neutral-700 text-left text-neutral-500 dark:text-neutral-400",children:[e.jsx("th",{className:"pb-2 pr-4 font-medium",children:s("admin.role_name_label")}),e.jsx("th",{className:"pb-2 pr-4 font-medium",children:s("admin.col_description")}),e.jsx("th",{className:"pb-2 pr-4 font-medium",children:s("admin.col_permissions")}),e.jsx("th",{className:"pb-2 pr-4 font-medium",children:s("admin.col_admins")}),e.jsx("th",{className:"pb-2 pr-4 w-24",children:s("common.actions")})]})}),e.jsx("tbody",{children:(h||[]).map(t=>
1e.jsxs("tr",{className:"border-b border-neutral-100 dark:border-neutral-800",children:[e.jsx("td",{className:"py-3 pr-4 font-medium text-neutral-900 dark:text-neutral-100",children:t.name}),e.jsx("td",{className:"py-3 pr-4 text-neutral-600 dark:text-neutral-400",children:t.description||"â"}),e.jsx("td",{className:"py-3 pr-4",children:e.jsx(I,{variant:"default",size:"sm",children:t.permissions_count??0})}),e.jsx("td",{className:"py-3 pr-4",children:t.admins_count??0}),e.jsxs("td",{className:"py-3 pr-4",children:[C&&!t.is_system&&e.jsxs("div",{className:"flex gap-1",children:[e.jsx("button",{type:"button",onClick:()=>Z(t),className:"rounded-soft p-1.5 text-neutral-500 hover:bg-neutral-100 dark:hover:bg-neutral-800",title:s("admin.edit_role"),children:e.jsx(W,{className:"h-4 w-4"})}),e.jsx("button",{type:"button",onClick:()=>g(t),className:"rounded-soft p-1.5 text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20",title:s("admin.delete_role"),children:e.jsx(L,{className:"h-4 w-4"})})]}),t.is_system&&e.jsx("span",{className:"text-xs text-neutral-400",children:s("admin.system_role_badge")})]})]},t.id))})]})}),(!h||h.length===0)&&e.jsx("div",{className:"py-8 text-center text-neutral-500 dark:text-neutral-400",children:s("admin.no_roles_found")})]})]}),H===1&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[e.jsxs("form",{onSubmit:Y,className:"flex gap-2",children:[e.jsx("input",{type:"text",value:q,onChange:t=>G(t.target.value),placeholder:s("admin.search_permissions"),className:"rounded-soft border border-neutral-300 dark:border-neutral-600 bg-white dark:bg-neutral-800 px-3 py-2 text-sm w-56"}),e.jsx(i,{type:"submit",variant:"outline",size:"sm",children:s("common.search")})]}),C&&e.jsx(i,{onClick:()=>N(!0),children:s("admin.add_permission")})]}),e.jsxs(b,{children:[e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"min-w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-neutral-200 dark:border-neutral-700 text-left text-neutral-500 dark:text-neutral-400",children:[e.jsx("th",{className:"pb-2 pr-4 font-medium",children:s("admin.col_key")}),e.jsx("th",{className:"pb-2 pr-4 font-medium",children:s("common.name")}),e.jsx("th",{className:"pb-2 pr-4 font-medium",children:s("admin.col_category")}),e.jsx("th",{className:"pb-2 pr-4 font-medium",children:s("admin.col_description")}),e.jsx("th",{className:"pb-2 pr-4 w-24",children:s("common.actions")})]})}),e.jsx("tbody",{children:(c||[]).map(t=>e.jsxs("tr",{className:"border-b border-neutral-100 dark:border-neutral-800",children:[e.jsx("td",{className:"py-3 pr-4 font-mono text-neutral-900 dark:text-neutral-100",children:t.key}),e.jsx("td",{className:"py-3 pr-4 text-neutral-900 dark:text-neutral-100",children:t.name}),e.jsx("td",{className:"py-3 pr-4",children:e.jsx(I,{variant:"default",size:"sm",children:t.category})}
1),e.jsx("td",{className:"py-3 pr-4 text-neutral-600 dark:text-neutral-400",children:t.description||"â"}),e.jsx("td",{className:"py-3 pr-4",children:C&&e.jsxs("div",{className:"flex gap-1",children:[e.jsx("button",{type:"button",onClick:()=>ee(t),className:"rounded-soft p-1.5 text-neutral-500 hover:bg-neutral-100 dark:hover:bg-neutral-800",title:s("admin.edit_permission"),children:e.jsx(W,{className:"h-4 w-4"})}),e.jsx("button",{type:"button",onClick:()=>w(t),className:"rounded-soft p-1.5 text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20",title:s("admin.delete_permission"),children:e.jsx(L,{className:"h-4 w-4"})})]})})]},t.id))})]})}),(!c||c.length===0)&&e.jsx("div",{className:"py-8 text-center text-neutral-500 dark:text-neutral-400",children:s("admin.no_permissions_found")})]})]})]})})]}),e.jsxs(r,{show:J,onClose:()=>j(!1),maxWidth:"2xl",children:[e.jsx(r.Header,{title:s("admin.add_role"),onClose:()=>j(!1)}),e.jsxs("form",{onSubmit:t=>{t.preventDefault(),a.post(route("admin.roles.store"),{onSuccess:()=>{j(!1),a.reset()}})},children:[e.jsx(r.Body,{children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1",children:s("admin.role_name_label")}),e.jsx("input",{type:"text",value:a.data.name,onChange:t=>a.setData("name",t.target.value),className:"w-full rounded-soft border border-neutral-300 dark:border-neutral-600 bg-white dark:bg-neutral-800 px-3 py-2 text-sm",required:!0}),a.errors.name&&e.jsx("p",{className:"mt-1 text-sm text-red-500",children:a.errors.name})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1",children:s("admin.role_key_label")}),e.jsx("input",{type:"text",value:a.data.key,onChange:t=>a.setData("key",t.target.value.toUpperCase()),className:"w-full rounded-soft border border-neutral-300 dark:border-neutral-600 bg-white dark:bg-neutral-800 px-3 py-2 text-sm font-mono",placeholder:s("admin.role_key_placeholder"),required:!0}),a.errors.key&&e.jsx("p",{className:"mt-1 text-sm text-red-500",children:a.errors.key})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1",children:s("admin.col_description")}),e.jsx("input",{type:"text",value:a.data.description,onChange:t=>a.setData("description",t.target.value),className:"w-full rounded-soft border border-neutral-300 dark:border-neutral-600 bg-white dark:bg-neutral-800 px-3 py-2 text-sm"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-2",children:s("admin.col_permissions")}),e.jsx("div",{className:"max-h-48 overflow-y-auto space-y-2 border border-neutral-200 dark:border-neutral-700 rounded-soft p-3",children:A.map(t=>e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium text-neutral-500 dark:text-neutral-400 mb-1",children:t}),c.filter(o=>o.category===t).map(o=>e.jsxs("label",{className:"flex items-center gap-2 ml-2",children:[e.jsx("input",{type:"checkbox",checked:a.data.permission_ids.includes(o.id),onChange:O=>{const R=O.target.checked?[...a.data.permission_ids,o.id]:a.data.permission_ids.filter(E=>E!==o.id);a.setData("permission_ids",R)},className:"rounded"}),e.jsx("span",{className:"text-sm",children:o.key})]},o.id))]},t))})]})]})}),e.jsxs(r.Footer,{children:[e.jsx(i,{type:"button",variant:"outline",onClick:()=>j(!1),children:s("common.cancel")}),e.jsx(i,{type:"submit",disabled:a.processing,children:s("common.create")})]})]})]}),e.jsxs(r,{show:K,onClose:()=>{y(!1),k(null)},maxWidth:"2xl",children:[e.jsx(r.Header,{title:s("admin.edit_role"),onClose:()=>{y(!1),k(null)}}),f&&e.jsxs("form",{onSubmit:t=>{t.preventDefault(),n.put(route("admin.roles.update",f.id),{onSuccess:()=>{y(!1),k(null)}})},children:[e.jsx(r.Body,{children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1",children:s("admin.role_name_label")}),e.jsx("input",{type:"text",value:n.data.name,onChange:t=>n.setData("name",t.target.value),className:"w-full rounded-soft border border-neutral-300 dark:border-neutral-600 bg-white dark:bg-neutral-800 px-3 py-2 text-sm",required:!0}),n.errors.name&&e.jsx("p",{className:"mt-1 text-sm text-red-500",children:n.errors.name})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1",children:s("admin.role_key_label")}),e.jsx("input",{type:"text",value:n.data.key,onChange:t=>n.setData("key",t.target.value.toUpperCase()),className:"w-full rounded-soft border border-neutral-300 dark:border-neutral-600 bg-white dark:bg-neutral-800 px-3 py-2 text-sm font-mono",required:!0,readOnly:f==null?void 0:f.is_system}),n.errors.key&&e.jsx("p",{className:"mt-1 text-sm text-red-500",children:n.errors.key})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1",children:s("admin.col_description")}),e.jsx("input",{type:"text",value:n.data.description,onChange:t=>n.setData("description",t.target.value),className:"w-full rounded-soft border border-neutral-300 dark:border-neutral-600 bg-white dark:bg-neutral-800 px-3 py-2 text-sm"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-2",children:s("admin.col_permissions")}),e.jsx("div",{className:"max-h-48 overflow-y-auto space-y-2 border border-neutral-200 dark:border-neutral-700 rounded-soft p-3",children:A.map(t=>e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium text-neutral-500 dark:text-neutral-400 mb-1",children:t}),c.filter(o=>o.category===t).map(o=>e.jsxs("label",{className:"flex items-center gap-2 ml-2",children:[e.jsx("input",{type:"checkbox",checked:n.data.permission_ids.includes(o.id),onChange:O=>{const R=O.target.checked?[...n.data.permission_ids,o.id]:n.data.permission_ids.filter(E=>E!==o.id);n.setData("permission_ids",R)},className:"rounded"}),e.jsx("span",{className:"text-sm",children:o.key})]},o.id))]},t))})]})]})}),e.jsxs(r.Footer,{children:[e.jsx(i,{type:"button",variant:"outline",onClick:()=>{y(!1),k(null)},children:s("common.cancel")}),e.jsx(i,{type:"submit",disabled:n.processing,children:s("common.save")})]})]})]}),e.jsxs(r,{show:Q,onClose:()=>N(!1),children:[e.jsx(r.Header,{title:s("admin.add_permission"),onClose:()=>N(!1)}),e.jsxs("form",{onSubmit:t=>{t.preventDefault(),l.post(route("admin.permissions.store"),{onSuccess:()=>{N(!1),l.reset()}})},children:[e.jsx(r.Body,{children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1",children:s("admin.permission_key_label")}),e.jsx("input",{type:"text",value:l.data.key,onChange:t=>l.setData("key",t.target.value),className:"w-full rounded-soft border border-neutral-300 dark:border-neutral-600 bg-white dark:bg-neutral-800 px-3 py-2 text-sm font-mono",placeholder:s("admin.permission_key_placeholder"),required:!0}),l.errors.key&&e.jsx("p",{className:"mt-1 text-sm text-red-500",children:l.errors.key})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1",children:s("admin.permission_name_label")}),e.jsx("input",{type:"text",value:l.data.name,onChange:t=>l.setData("name",t.target.value),className:"w-full rounded-soft border border-neutral-300 dark:border-neutral-600 bg-white dark:bg-neutral-800 px-3 py-2 text-sm",required:!0}),l.errors.name&&e.jsx("p",{className:"mt-1 text-sm text-red-500",children:l.errors.name})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1",children:s("admin.permission_category_label")}),e.jsx("input",{type:"text",value:l.data.category,onChange:t=>l.setData("category",t.target.value),className:"w-full rounded-soft border border-neutral-300 dark:border-neutral-600 bg-white dark:bg-neutral-800 px-3 py-2 text-sm",required:!0}),l.errors.category&&e.jsx("p",{className:"mt-1 text-sm text-red-500",children:l.errors.category})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1",children:s("admin.permission_description_label")}),e.jsx("input",{type:"text",value:l.data.description,onChange:t=>l.setData("description",t.target.value),className:"w-full rounded-soft border border-neutral-300 dark:border-neutral-600 bg-white dark:bg-neutral-800 px-3 py-2 text-sm"})]})]})}),e.jsxs(r.Footer,{children:[e.jsx(i,{type:"button",variant:"outline",onClick:()=>N(!1),children:s("common.cancel")}),e.jsx(i,{type:"submit",disabled:l.processing,children:s("common.create")})]})]})]}),e.jsxs(r,{show:V,onClose:()=>
1{v(!1),_(null)},children:[e.jsx(r.Header,{title:s("admin.edit_permission"),onClose:()=>{v(!1),_(null)}}),T&&e.jsxs("form",{onSubmit:t=>{t.preventDefault(),d.put(route("admin.permissions.update",T.id),{onSuccess:()=>{v(!1),_(null)}})},children:[e.jsx(r.Body,{children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1",children:s("admin.permission_key_label")}),e.jsx("input",{type:"text",value:d.data.key,onChange:t=>d.setData("key",t.target.value),className:"w-full rounded-soft border border-neutral-300 dark:border-neutral-600 bg-white dark:bg-neutral-800 px-3 py-2 text-sm font-mono",required:!0}),d.errors.key&&e.jsx("p",{className:"mt-1 text-sm text-red-500",children:d.errors.key})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1",children:s("admin.permission_name_label")}),e.jsx("input",{type:"text",value:d.data.name,onChange:t=>d.setData("name",t.target.value),className:"w-full rounded-soft border border-neutral-300 dark:border-neutral-600 bg-white dark:bg-neutral-800 px-3 py-2 text-sm",required:!0}),d.errors.name&&e.jsx("p",{className:"mt-1 text-sm text-red-500",children:d.errors.name})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1",children:s("admin.permission_category_label")}),e.jsx("input",{type:"text",value:d.data.category,onChange:t=>d.setData("category",t.target.value),className:"w-full rounded-soft border border-neutral-300 dark:border-neutral-600 bg-white dark:bg-neutral-800 px-3 py-2 text-sm",required:!0}),d.errors.category&&e.jsx("p",{className:"mt-1 text-sm text-red-500",children:d.errors.category})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium mb-1",children:s("admin.permission_description_label")}),e.jsx("input",{type:"text",value:d.data.description,onChange:t=>d.setData("description",t.target.value),className:"w-full rounded-soft border border-neutral-300 dark:border-neutral-600 bg-white dark:bg-neutral-800 px-3 py-2 text-sm"})]})]})}),e.jsxs(r.Footer,{children:[e.jsx(i,{type:"button",variant:"outline",onClick:()=>{v(!1),_(null)},children:s("common.cancel")}),e.jsx(i,{type:"submit",disabled:d.processing,children:s("common.save")})]})]})]}),e.jsxs(r,{show:!!u,onClose:()=>g(null),maxWidth:"sm",children:[e.jsx(r.Header,{title:s("admin.delete_role"),onClose:()=>g(null)}),e.jsx(r.Body,{children:e.jsx("p",{className:"text-sm text-neutral-600 dar
1k:text-neutral-400",children:s("admin.confirm_delete_role",{name:u==null?void 0:u.name})})}),e.jsxs(r.Footer,{children:[e.jsx(i,{variant:"outline",onClick:()=>g(null),children:s("common.cancel")}),e.jsx(i,{variant:"danger",onClick:()=>{D.delete(route("admin.roles.destroy",u==null?void 0:u.id),{preserveScroll:!0}),g(null)},children:s("common.delete")})]})]}),e.jsxs(r,{show:!!p,onClose:()=>w(null),maxWidth:"sm",children:[e.jsx(r.Header,{title:s("admin.delete_permission"),onClose:()=>w(null)}),e.jsx(r.Body,{children:e.jsx("p",{className:"text-sm text-neutral-600 dark:text-neutral-400",children:s("admin.confirm_delete_permission",{name:p==null?void 0:p.key})})}),e.jsxs(r.Footer,{children:[e.jsx(i,{variant:"outline",onClick:()=>w(null),children:s("common.cancel")}),e.jsx(i,{variant:"danger",onClick:()=>{D.delete(route("admin.permissions.destroy",p==null?void 0:p.id),{preserveScroll:!0}),w(null)},children:s("common.delete")})]})]})]})}export{Re as default};
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.