1import{r as o,j as e,az as R,bP as B,Z as D,bI as T,dl as E,R as F}from"./vendor-QOkwwy6v.js";import{a as M}from"./index.module-CDElH-Wz.js";import{b as V,c as H}from"./useAdminData-BKVkoJQM.js";import{u as w,I as k,d as b,e as _,f as g,h as C,i as N,S as h,a as O,B as u,V as U}from"./index-B5Va5PI-.js";import{A as W}from"./AdminLayout-CdBkJQxt.js";import{D as L,a as $,b as q,c as Z,e as G,g as J}from"./Dialog-DxbQY_8i.js";const K="_header_8oz2j_1",Q="_controls_8oz2j_16",X="_searchWrapper_8oz2j_25",Y="_searchIcon_8oz2j_33",ee="_searchInput_8oz2j_40",se="_filters_8oz2j_45",ae="_selectTrigger_8oz2j_50",le="_tableContainer_8oz2j_54",te="_table_8oz2j_54",re="_tableHeader_8oz2j_68",ie="_headerCell_8oz2j_77",ce="_tableBody_8oz2j_83",ne="_tableRow_8oz2j_87",oe="_tableCell_8oz2j_96",de="_userCell_8oz2j_102",he="_avatar_8oz2j_108",ue="_userName_8oz2j_121",je="_userEmail_8oz2j_125",me="_userPhone_8oz2j_130",xe="_errorState_8oz2j_144",pe="_emptyState_8oz2j_145",ve="_pagination_8oz2j_155",be="_modalBody_8oz2j_163",s={header:K,controls:Q,searchWrapper:X,searchIcon:Y,searchInput:ee,filters:se,selectTrigger:ae,tableContainer:le,table:te,tableHeader:re,headerCell:ie,tableBody:ce,tableRow:ne,tableCell:oe,userCell:de,avatar:he,userName:ue,userEmail:je,userPhone:me,errorState:xe,emptyState:pe,pagination:ve,modalBody:be},_e=[{value:"__empty",label:"allRoles"},...U.map(a=>({value:a,label:a}))],ge=[{value:"__empty",label:"allStatuses"},{value:"active",label:"subscriptionActive"},{value:"inactive",label:"subscriptionInactive"},{value:"trial",label:"subscriptionTrial"},{value:"past_due",label:"subscriptionPastDue"},{value:"canceled",label:"subscriptionCanceled"}],Ce=(a,t)=>{switch(a){case"active":return t("subscriptionActive");case"inactive":return t("subscriptionInactive");case"trial":return t("subscriptionTrial");case"past_due":return t("subscriptionPastDue");case"canceled":return t("subscriptionCanceled");default:return t("subscriptionNA")}},Ne=a=>{switch(a){case"active":case"trial":return"success";case"past_due":return"warning";case"canceled":case"inactive":return"destructive";default:return"secondary"}},ye=({user:a,isOpen:t,onOpenChange:j})=>{const{t:r}=w(),[i,m]=o.useState(a?.role),c=H();if(F.useEffect(()=>{a&&m(a.role)},[a]),!a)return null;const d=()=>{i&&c.mutate({userId:a.id,role:i},{onSuccess:()=>j(!1)})};return e.jsx(L,{open:t,onOpenChange:j,children:e.jsxs($,{children:[e.jsx(q,{children:e.jsxs(Z,{children:[r("editUser"),": ",a.displayName]})}),e.jsxs("div",{className:s.modalBody,children:[e.jsx("label",{htmlFor:"role-select",children:r("role")}),e.jsxs(b,{value:i,onValueChange:n=>m(n),children:[e.jsx(_,{id:"role-select",children:e.jsx(g,{placeholder:r("selectRole")})}),e.jsx(C,{children:U.map(n=>e.jsx(N,{value:n,children:r(n)},n))})]})]}),e.jsxs(G,{children:[e.jsx(J,{asChild:!0,children:e.jsx(u,{variant:"ghost",children:r("cancel")})}),e.jsx(u,{onClick:d,disabled:c.isPending,children:c.isPending?r("saving"):r("saveChanges")})]})]})})},Ie=()=>{const{t:a}=w(),[t,j]=o.useState(""),[r]=M(t,300),[i,m]=o.useState({role:void 0,status:void 0}),[c,d]=o.useState(1),[n,y]=o.useState(null),{data:x,isFetching:p,error:A}=V({search:r,role:i.role,status:i.status,page:c,limit:10,sortBy:"createdAt",sortOrder:"desc"}),S=o.useMemo(()=>x?.users??[],[x]),I=o.useMemo(()=>x?.total??0,[x]),z=Math.ceil(I/10),f=(l,v)=>{m(P=>({...P,[l]:v==="__empty"?void 0:v})),d(1)};return e.jsxs(e.Fragment,{children:[e.jsx(R,{children:e.jsx("title",{children:`${a("adminUsersTitle")} - Floot`})}),e.jsxs(W,{children:[e.jsxs("div",{className:s.header,children:[e.jsx("h1",{children:a("userManagement")}),e.jsx("p",{children:a("userManagementDesc")})]}),e.jsxs("div",{className:s.controls,children:[e.jsxs("div",{className:s.searchWrapper,children:[e.jsx(B,{size:18,className:s.searchIcon}),e.jsx(k,{type:"search",placeholder:a("searchUserPlaceholder"),value:t,onChange:l=>j(l.target.value),className:s.searchInput})]}),e.jsxs("div",{className:s.filters,children:[e.jsxs(b,{value:i.role,onValueChange:l=>f("role",l),children:[e.jsx(_,{className:s.selectTrigger,children:e.jsx(g,{placeholder:a("filterByRole")})}),e.jsx(C,{children:_e.map(l=>e.jsx(N,{value:l.value,children:a(l.label)},l.value))})]}),e.jsxs(b,{value:i.status,onValueChange:l=>f("status",l),children:[e.jsx(_,{className:s.selectTrigger,children:e.jsx(g,{placeholder:a("filterByStatus")})}),e.jsx(C,{children:ge.map(l=>e.jsx(N,{value:l.value,children:a(l.label)},l.value))})]})]})]}),e.jsx("div",{className:s.tableContainer,children:e.jsxs("div",{className:s.table,children:[e.jsxs("div",{className:s.tableHeader,children:[e.jsx("div",{className:s.headerCell,children:a("user")}),e.jsx("div",{className:s.headerCell,children:a("role")}),e.jsx("div",{className:s.headerCell,children:a("subscription")}),e.jsx("div",{className:s.headerCell,children:a("joined")}),e.jsx("div",{className:s.headerCell,children:a("actions")})]}
1),e.jsxs("div",{className:s.tableBody,children:[p&&Array.from({length:10}).map((l,v)=>e.jsxs("div",{className:s.tableRow,children:[e.jsx("div",{className:s.tableCell,children:e.jsx(h,{style:{height:"2.5rem",width:"80%"}})}),e.jsx("div",{className:s.tableCell,children:e.jsx(h,{style:{height:"1.5rem",width:"100px"}})}),e.jsx("div",{className:s.tableCell,children:e.jsx(h,{style:{height:"1.5rem",width:"100px"}})}),e.jsx("div",{className:s.tableCell,children:e.jsx(h,{style:{height:"1.5rem",width:"120px"}})}),e.jsx("div",{className:s.tableCell,children:e.jsx(h,{style:{height:"2rem",width:"40px"}})})]},v)),!p&&A&&e.jsx("div",{className:s.tableRow,children:e.jsx("div",{className:s.tableCell,style:{gridColumn:"1 / -1"},children:e.jsxs("div",{className:s.errorState,children:[e.jsx(D,{})," ",a("failedToLoadUsers")]})})}),!p&&S.length===0&&e.jsx("div",{className:s.tableRow,children:e.jsx("div",{className:s.tableCell,style:{gridColumn:"1 / -1"},children:e.jsx("div",{className:s.emptyState,children:a("noUsersFound")})})}),!p&&S.map(l=>e.jsxs("div",{className:s.tableRow,children:[e.jsx("div",{className:s.tableCell,"data-label":a("user"),children:e.jsxs("div",{className:s.userCell,children:[e.jsx("div",{className:s.avatar,children:l.displayName.charAt(0).toUpperCase()}),e.jsxs("div",{children:[e.jsx("div",{className:s.userName,children:l.displayName}),e.jsx("div",{className:s.userEmail,children:l.email}),l.phone&&e.jsxs("a",{href:`tel:${l.phone}`,className:s.userPhone,children:[e.jsx(T,{size:12}),l.phone]})]})]})}),e.jsx("div",{className:s.tableCell,"data-label":a("role"),children:a(l.role)}),e.jsx("div",{className:s.tableCell,"data-label":a("subscription"),children:e.jsx(O,{variant:Ne(l.subscriptionStatus),children:Ce(l.subscriptionStatus,a)})}),e.jsx("div",{className:s.tableCell,"data-label":a("joined"),children:l.createdAt?new Date(l.createdAt).toLocaleDateString():"N/A"}),e.jsx("div",{className:s.tableCell,"data-label":a("actions"),children:e.jsx(u,{variant:"ghost",size:"icon",onClick:()=>y(l),children:e.jsx(E,{size:16})})})]},l.id))]})]})}),e.jsxs("div",{className:s.pagination,children:[e.jsx(u,{onClick:()=>d(l=>l-1),disabled:c<=1,children:a("previous")}),e.jsx("span",{children:a("pageOf",{page:c,total:z})}),e.jsx(u,{onClick:()=>d(l=>l+1),disabled:c>=z,children:a("next")})]})]}),e.jsx(ye,{user:n,isOpen:!!n,onOpenChange:l=>!l&&y(null)})]})};export{Ie 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.