1import{p as fs,r as U,C as le,D as Q,j as e,q as fn}from"./vendor-react-BnQ9fM-T-c2.js";import{Z as Ns,_ as ce,m as c,F as cs,V as Xs,q as A,a as P,y as yn,G as ms,S as Fs,O as ma,a5 as Ss,x as ct,Y as Mt,L as pi,b as ji,W as Qs,U as Ds,B as wa,j as Kt,e as Qt,c as Js,f as Nn,$ as Oe,k as Za,h as et,I as bn,J as wn,a3 as kn,K as Cn,Q as ks,P as st,a0 as En,z as zt}from"./App-D7PYqPVb-c2.js";import{C as Y,d as X,a as Be,b as He,c as Ye}from"./card-DMgMxTuf-c2.js";import{I as g}from"./input-IxzIx0tf-c2.js";import{L as i}from"./label-DOkvVJSv-c2.js";import{T as G}from"./textarea-CTYfRCUo-c2.js";import{R as ua}from"./rich-text-editor-hxoNCdoQ-c2.js";import{B as N}from"./badge-s9qqEw5w-c2.js";import{D as fe,a as ye,b as Ne,c as be,d as Se,e as Ue}from"./dialog-DaefULPF-c2.js";import{S as Z,a as ee,b as se,c as ae,d as l}from"./select-DuNUm4Sn-c2.js";import{T as Qe,a as ze,b as ne,c as k,d as Re,e as y}from"./table-C4g6GTjH-c2.js";import{T as pa,a as ja,b as ve,c as je}from"./tabs-Cvr2UY0n-c2.js";import{P as Ee}from"./plus-B9YN9Jpx-c2.js";import{C as Fa}from"./calendar-B7SQ1ids-c2.js";import{f as Ys}from"./format-B2OAZQiw-c2.js";import{P as ht}from"./pencil-DAJxxxuy-c2.js";import{T as Te}from"./trash-2-BWeU1Ii--c2.js";import{I as Un}from"./image-CwrhcMWG-c2.js";import{L as ha}from"./loader-circle-DGzkfSXY-c2.js";import{U as Sn}from"./upload-D-hXev9E-c2.js";import{S as Fe}from"./switch-Ddd6tXbP-c2.js";import{A as js,a as gs,b as vs}from"./avatar-DyySmOz2-c2.js";import{M as Rt}from"./message-circle-D0NBjL0P-c2.js";import{S as Cs}from"./search-BBNzyeE1-c2.js";import{R as Vt,T as gi,a as vi}from"./thumbs-up-Ccy2q_mN-c2.js";import{E as fi,L as Bt}from"./list-ordered-wT0vYSVR-c2.js";import{A as Dn,a as An,b as In,c as Fn,d as Tn,e as qn,f as On,g as Pn}from"./alert-dialog-B7WcvRaI-c2.js";import{H as ot}from"./heart-5GuJR5Xu-c2.js";import{V as Ln}from"./video-BQ9O5w3f-c2.js";import{C as pt}from"./clock-kzBon4eK-c2.js";import{C as xa}from"./circle-x-Bocmy1Fe-c2.js";import{C as Es}from"./circle-check-big-Q1VflUrO-c2.js";import{T as Ea}from"./trophy-DA9vMPOE-c2.js";import{R as Gs}from"./refresh-cw-jqzmaWhj-c2.js";import{A as ls}from"./award-DdNLWq_v-c2.js";import{S as _t,C as $n,F as Ht,G as Mn,a as Kn,U as at,b as Gt,B as Wt,A as Jt,c as Yt}from"./user-x-Cfj-VE7T-c2.js";import{G as ka}from"./gift-C3CqyZr5-c2.js";import{Z as Ua}from"./zap-DmCbE4S3-c2.js";import{P as ss}from"./pen-DoNHueYP-c2.js";import{E as mt}from"./external-link-BOGtV600-c2.js";import{u as Qn,e as zn}from"./uk-DvEIZWbN-c2.js";import{e as Rn}from"./en-US-hRY55JQi-c2.js";import{L as Vn}from"./LanguageMultiSelect-CLq0GQnD-c2.js";import{S as zs}from"./scroll-area-CLynQUEj-c2.js";import{P as Xt,a as Zt,b as ei,C as si,c as ai,d as ti,e as ii,f as ni,g as tt}from"./command-BZu6piXj-c2.js";import{C as Bn}from"./checkbox-DuSE2POZ-c2.js";import{S as _n}from"./school-CfBGsj5g-c2.js";import{R as Hn}from"./rocket-DMq46uik-c2.js";import{S as Ge}from"./save-DFBCWYjY-c2.js";import{S as Da,H as Gn}from"./sliders-vertical-D60IMutF-c2.js";import{S as Wn}from"./square-check-big-BGwY8Otb-c2.js";import{I as ut}from"./info-BoRcw5s_-c2.js";import{M as Ts}from"./message-square-CMeykcGZ-c2.js";import{F as Jn}from"./funnel-BD8BYsTT-c2.js";import{S as Yn}from"./slider-c7W9jO-z-c2.js";import{A as Xn,a as Ls,b as $s,c as Ms}from"./accordion-GSeYUrf5-c2.js";import{S as ri}from"./settings-g7AbYF33-c2.js";import{T as os}from"./target-CJLFfOlO-c2.js";import{T as Ks}from"./trending-up-BGjAG2GE-c2.js";import{C as Aa}from"./circle-alert-DLuSl3HU-c2.js";import{A as it}from"./activity-Et2X9qBu-c2.js";import{C as yi}from"./circle-check-C6x4rDZP-c2.js";import{L as Zn}from"./languages-Bd0j5sRU-c2.js";import{C as di}from"./code-BPPtjA6a-c2.js";import{B as er}from"./brain-DxITWZyB-c2.js";import{P as sr}from"./pen-line-BKFoEVbs-c2.js";import{S as Sa}from"./shield-DCqoadk_-c2.js";import{C as xt}from"./chart-column-DRYmOVkG-c2.js";import{C as Ia}from"./clipboard-list-bFo2w5Zx-c2.js";import{N as li}from"./newspaper-DEF0LzgX-c2.js";import{H as oa}from"./history-DB829xD3-c2.js";import{M as Ws}from"./mail-CQXRg4bm-c2.js";import{A as ar}from"./arrow-up-down-D1qf3ICe-c2.js";import{C as ci}from"./chevrons-up-down-C43XSpS0-c2.js";import{P as oi}from"./phone-COqkkU-a-c2.js";import"./index-BjKm8gLZ-c2.js";import"./vendor-ui-DPojF9f0-c2.js";import"./chevron-up-DxlMYeK3-c2.js";const nt={title:"",titleUk:"",titleEs:"",content:"",contentUk:"",contentEs:"",excerpt:"",excerptUk:"",excerptEs:"",coverImageUrl:"",status:"draft",slug:""};function Ni(s){return new DOMParser().parseFromString(s,"text/html").body.textContent||""}function Hs(s){return Ni(s).length}function tr(){const{t:s}=fs(),{toast:q}=Ns(),[O,p]=U.useState(!1),[re,z]=U.useState(null),[j,C]=U.useState(nt),[W,I]=U.useState("uk"),[b,T]=U.useState(null),[m,M]=U.useState(!1),xe=U.useRef(null),{data:B,isLoading:oe}=le({queryKey:["/api/admin/articles"]}),ge=Q({mutationFn:async S=>P("POST","/api/admin/articles",S),onSuccess:()=>
1{A.invalidateQueries({queryKey:["/api/admin/articles"]}),A.invalidateQueries({queryKey:["/api/blog"]}),q({title:s("admin.blog.articleCreated","Article created successfully")}),R()},onError:S=>{q({title:s("common.error","Error"),description:S.message||s("admin.blog.createError","Failed to create article"),variant:"destructive"})}}),we=Q({mutationFn:async({id:S,data:v})=>P("PATCH",`/api/admin/articles/${S}`,v),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/articles"]}),A.invalidateQueries({queryKey:["/api/blog"]}),q({title:s("admin.blog.articleUpdated","Article updated successfully")}),R()},onError:S=>{q({title:s("common.error","Error"),description:S.message||s("admin.blog.updateError","Failed to update article"),variant:"destructive"})}}),K=Q({mutationFn:async S=>P("DELETE",`/api/admin/articles/${S}`),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/articles"]}),A.invalidateQueries({queryKey:["/api/blog"]}),q({title:s("admin.blog.articleDeleted","Article deleted successfully")}),T(null)},onError:S=>{q({title:s("common.error","Error"),description:S.message||s("admin.blog.deleteError","Failed to delete article"),variant:"destructive"})}}),R=()=>{p(!1),z(null),C(nt),I("uk")},f=async S=>{const v=S.target.files?.[0];if(v){M(!0);try{const d=new FormData;d.append("file",v);const D=await fetch("/api/upload/blog-image",{method:"POST",body:d,credentials:"include"});if(!D.ok){const r=await D.json().catch(()=>({}));throw new Error(r.message||"Upload failed")}const{imageUrl:_}=await D.json();C(r=>({...r,coverImageUrl:_})),q({title:s("admin.blog.imageUploaded","Image uploaded successfully")})}catch(d){q({title:s("common.error","Error"),description:d.message||s("admin.blog.uploadError","Failed to upload image"),variant:"destructive"})}finally{M(!1),xe.current&&(xe.current.value="")}}},ie=()=>{C(nt),z(null),p(!0)},h=S=>{z(S),C({title:S.title||"",titleUk:S.titleUk||"",titleEs:S.titleEs||"",content:S.content||"",contentUk:S.contentUk||"",contentEs:S.contentEs||"",excerpt:S.excerpt||"",excerptUk:S.excerptUk||"",excerptEs:S.excerptEs||"",coverImageUrl:S.coverImageUrl||"",status:S.status||"draft",slug:S.slug||""}),p(!0)},w=()=>{if(!j.title&&!j.titleUk){q({title:s("common.error","Error"),description:s("admin.blog.titleRequired","Title is required"),variant:"destructive"});return}const S=j.content||j.contentUk||j.contentEs,v=Ni(S);if(!v.trim()){q({title:s("common.error","Error"),description:s("admin.blog.contentRequired","Content is required"),variant:"destructive"});return}if(v.length>7e3){q({title:s("common.error","Error"),description:s("admin.blog.contentTooLong","Content exceeds 7000 characters"),variant:"destructive"});return}re?we.mutate({id:re.id,data:j}):ge.mutate(j)},pe=S=>{switch(S){case"published":return e.jsx(N,{className:"bg-green-500/10 text-green-600 border-green-500/30",children:s("admin.blog.published","Published")});case"draft":return e.jsx(N,{variant:"secondary",children:s("admin.blog.draft","Draft")});case"archived":return e.jsx(N,{variant:"outline",children:s("admin.blog.archived","Archived")});default:return e.jsx(N,{variant:"secondary",children:S})}};return oe?e.jsxs("div",{className:"space-y-4",children:[e.jsx(ce,{className:"h-10 w-32"}),e.jsx(ce,{className:"h-64 w-full"})]}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold","data-testid":"heading-blog-manager",children:s("admin.blog.title","Blog Management")}),e.jsx("p",{className:"text-muted-foreground",children:s("admin.blog.description","Create and manage blog articles")})]}),e.jsxs(c,{onClick:ie,"data-testid":"button-create-article",children:[e.jsx(Ee,{className:"h-4 w-4 mr-2"}),s("admin.blog.createArticle","Create Article")]})]}),e.jsx(Y,{children:e.jsx(X,{className:"p-0",children:e.jsxs(Qe,{children:[e.jsx(ze,{children:e.jsxs(ne,{children:[e.jsx(k,{children:s("admin.blog.titleColumn","Title")}),e.jsx(k,{children:s("admin.blog.status","Status")}),e.jsx(k,{children:s("admin.blog.views","Views")}),e.jsx(k,{children:s("admin.blog.date","Date")}),e.jsx(k,{className:"text-right",children:s("admin.actions","Actions")})]})}),e.jsx(Re,{children:B&&B.length>0?B.map(S=>e.jsxs(ne,{"data-testid":`row-article-${S.id}`,children:[e.jsx(y,{className:"font-medium",children:e.jsxs("div",{className:"flex items-center gap-2",children:[S.coverImageUrl?e.jsx("img",{src:S.coverImageUrl,alt:"",className:"w-10 h-10 rounded object-cover"}):e.jsx("div",{className:"w-10 h-10 rounded bg-muted flex items-center justify-center",children:e.jsx(cs,{className:"h-4 w-4 text-muted-foreground"})}),e.jsxs("div",{children:[e.jsx("div",{children:S.titleUk||S.title}),S.slug&&e.jsxs("div",{className:"text-xs text-muted-foreground",children:["/",S.slug]})]})]})}),e.jsx(y,{children:pe(S.status||"draft")}),e.jsx(y,{children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Xs,{className:"h-4 w-4 text-muted-foreground"}),S.viewCount||0]})}),e.jsx(y,{children:e.jsxs("div",{className:"flex items-center gap-1 text-muted-foreground",children:[e.jsx(Fa,{className:"h-4 w-4"}),S.publishedAt?Ys(new Date(S.publishedAt),"dd.MM.yyyy"):Ys(new Date(S.createdAt),"dd.MM.yyyy")]})}),e.jsx(y,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(c,{size:"icon",variant:"ghost",onClick:()=>h(S),"data-testid":`button-edit-article-${S.id}`,children:e.jsx(ht,{className:"h-4 w-4"})}),e.jsx(c,{size:"icon",variant:"ghost",onClick:()=>T(S.id),"data-testid":`button-delete-article-${S.id}`,children:e.jsx(Te,{className:"h-4 w-4 text-destructive"})})]})})]},S.id)):e.jsx(ne,{children:e.jsx(y,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:s("admin.blog.noArticles","No articles yet. Create your first article!")})})})]})})}),e.jsx(fe,{open:O,onOpenChange:S=>!S&&R(),children:e.jsxs(ye,{className:"max-w-4xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(Ne,{children:[e.jsx(be,{children:re?s("admin.blog.editArticle","Edit Article"):s("admin.blog.createArticle","Create Article")}),e.jsx(Se,{children:s("admin.blog.formDescription","Add article content in multiple languages. Maximum 7000 characters.")})]}),e.jsxs(pa,{value:W,onValueChange:I,children:[e.jsxs(ja,{className:"grid w-full grid-cols-3",children:[e.jsx(ve,{value:"uk",children:"УкÑаÑнÑÑка"}),e.jsx(ve,{value:"en",children:"English"}),e.jsx(ve,{value:"es",children:"Español"})]}
1),e.jsxs(je,{value:"uk",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{htmlFor:"titleUk",children:[s("admin.blog.title","Title")," (UK)"]}),e.jsx(g,{id:"titleUk",value:j.titleUk,onChange:S=>C({...j,titleUk:S.target.value}),placeholder:"Ðаголовок ÑÑаÑÑÑ","data-testid":"input-title-uk"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{htmlFor:"excerptUk",children:[s("admin.blog.excerpt","Excerpt")," (UK)"]}),e.jsx(G,{id:"excerptUk",value:j.excerptUk,onChange:S=>C({...j,excerptUk:S.target.value}),placeholder:"ÐоÑоÑкий Ð¾Ð¿Ð¸Ñ ÑÑаÑÑÑ",rows:2,"data-testid":"input-excerpt-uk"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsxs(i,{htmlFor:"contentUk",children:[s("admin.blog.content","Content")," (UK)"]}),e.jsxs("span",{className:`text-xs ${Hs(j.contentUk)>7e3?"text-destructive":"text-muted-foreground"}`,children:[Hs(j.contentUk),"/7000"]})]}),e.jsx(ua,{value:j.contentUk,onChange:S=>C({...j,contentUk:S}),placeholder:"ТекÑÑ ÑÑаÑÑÑ...","data-testid":"input-content-uk"})]})]}),e.jsxs(je,{value:"en",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{htmlFor:"title",children:[s("admin.blog.title","Title")," (EN)"]}),e.jsx(g,{id:"title",value:j.title,onChange:S=>C({...j,title:S.target.value}),placeholder:"Article title","data-testid":"input-title-en"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{htmlFor:"excerpt",children:[s("admin.blog.excerpt","Excerpt")," (EN)"]}),e.jsx(G,{id:"excerpt",value:j.excerpt,onChange:S=>C({...j,excerpt:S.target.value}),placeholder:"Short description",rows:2,"data-testid":"input-excerpt-en"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsxs(i,{htmlFor:"content",children:[s("admin.blog.content","Content")," (EN)"]}),e.jsxs("span",{className:`text-xs ${Hs(j.content)>7e3?"text-destructive":"text-muted-foreground"}`,children:[Hs(j.content),"/7000"]})]}),e.jsx(ua,{value:j.content,onChange:S=>C({...j,content:S}),placeholder:"Article content...","data-testid":"input-content-en"})]})]}),e.jsxs(je,{value:"es",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{htmlFor:"titleEs",children:[s("admin.blog.title","Title")," (ES)"]}),e.jsx(g,{id:"titleEs",value:j.titleEs,onChange:S=>C({...j,titleEs:S.target.value}),placeholder:"TÃtulo del artÃculo","data-testid":"input-title-es"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{htmlFor:"excerptEs",children:[s("admin.blog.excerpt","Excerpt")," (ES)"]}),e.jsx(G,{id:"excerptEs",value:j.excerptEs,onChange:S=>C({...j,excerptEs:S.target.value}),placeholder:"Breve descripción",rows:2,"data-testid":"input-excerpt-es"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsxs(i,{htmlFor:"contentEs",children:[s("admin.blog.content","Content")," (ES)"]}),e.jsxs("span",{className:`text-xs ${Hs(j.contentEs)>7e3?"text-destructive":"text-muted-foreground"}`,children:[Hs(j.contentEs),"/7000"]})]}),e.jsx(ua,{value:j.contentEs,onChange:S=>C({...j,contentEs:S}),placeholder:"Contenido del artÃculo...","data-testid":"input-content-es"})]})]})]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-2 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{htmlFor:"coverImageUrl",children:[e.jsx(Un,{className:"h-4 w-4 inline mr-1"}),s("admin.blog.coverImage","Cover Image")]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(g,{id:"coverImageUrl",value:j.coverImageUrl,onChange:S=>C({...j,coverImageUrl:S.target.value}),placeholder:"https://example.com/image.jpg","data-testid":"input-cover-image",className:"flex-1"}),e.jsxs(c,{type:"button",variant:"outline",onClick:()=>xe.current?.click(),disabled:m,"data-testid":"button-upload-image",className:"shrink-0",children:[m?e.jsx(ha,{className:"h-4 w-4 animate-spin mr-1"}):e.jsx(Sn,{className:"h-4 w-4 mr-1"}),s("admin.blog.uploadFile","Upload file")]}),e.jsx("input",{ref:xe,type:"file",accept:"image/jpeg,image/png,image/webp,image/gif",className:"hidden",onChange:f,"data-testid":"input-cover-file"})]}),j.coverImageUrl&&e.jsx("div",{className:"mt-2",children:e.jsx("img",{src:j.coverImageUrl,alt:"Cover preview",className:"rounded-md object-cover w-full max-h-32","data-testid":"img-cover-preview",onError:S=>{S.currentTarget.style.display="none"}})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{htmlFor:"status",children:s("admin.blog.status","Status")}),e.jsxs(Z,{value:j.status,onValueChange:S=>C({...j,status:S}),children:[e.jsx(ee,{id:"status","data-testid":"select-status",children:e.jsx(se,{})}),e.jsxs(ae,{children:[e.jsx(l,{value:"draft",children:s("admin.blog.draft","Draft")}),e.jsx(l,{value:"published",children:s("admin.blog.published","Published")}),e.jsx(l,{value:"archived",children:s("admin.blog.archived","Archived")})]})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{htmlFor:"slug",children:[s("admin.blog.slug","URL Slug")," (",s("admin.blog.optional","optional"),")"]}),e.jsx(g,{id:"slug",value:j.slug,onChange:S=>C({...j,slug:S.target.value}),placeholder:"article-url-slug","data-testid":"input-slug"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s("admin.blog.slugHint","Leave empty to auto-generate from title")})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:R,"data-testid":"button-cancel",children:s("common.cancel","Cancel")}),e.jsx(c,{onClick:w,disabled:ge.isPending||we.isPending,"data-testid":"button-save-article",children:ge.isPending||we.isPending?s("common.saving","Saving..."):re?s("common.save","Save"):s("admin.blog.create","Create")})]})]})}),e.jsx(fe,{open:!!b,onOpenChange:()=>T(null),children:e.jsxs(ye,{children:[e.jsxs(Ne,{children:[e.jsx(be,{children:s("admin.blog.deleteConfirmTitle","Delete Article?")}),e.jsx(Se,{children:s("admin.blog.deleteConfirmDescription","This action cannot be undone. The article will be permanently deleted.")})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:()=>T(null),children:s("common.cancel","Cancel")}),e.jsx(c,{variant:"destructive",onClick:()=>b&&K.mutate(b),disabled:K.isPending,"data-testid":"button-confirm-delete",children:K.isPending?s("common.deleting","Deleting..."):s("common.delete","Delete")})]})]})})]})}const rt={userId:"",targetType:"article",targetId:"",parentId:null,content:"",createdAt:new Date().toISOString().slice(0,16),isApproved:!0};function ir(){const{t:s}=fs(),{toast:q}=Ns(),[O,p]=U.useState(!1),[re,z]=U.useState(null),[j,C]=U.useState(rt),[W,I]=U.useState(null),[b,T]=U.useState("all"),[m,M]=U.useState(""),{data:xe,isLoading:B}=le({queryKey:["/api/admin/comments"]}),{data:oe}=le({queryKey:["/api/admin/fake-users"]}),{data:ge}=le({queryKey:["/api/admin/articles"]}),{data:we}=le({queryKey:["/api/admin/success-stories"]}),K=Q({mutationFn:async r=>P("POST","/api/admin/comments",{...r,createdAt:new Date(r.createdAt).toISOString()}),onSuccess:()=>
1{A.invalidateQueries({queryKey:["/api/admin/comments"]}),q({title:s("admin.comments.created","Comment created successfully")}),ie()},onError:r=>{q({title:s("common.error","Error"),description:r.message||s("admin.comments.createError","Failed to create comment"),variant:"destructive"})}}),R=Q({mutationFn:async({id:r,data:x})=>P("PATCH",`/api/admin/comments/${r}`,x),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/comments"]}),q({title:s("admin.comments.updated","Comment updated successfully")}),ie()},onError:r=>{q({title:s("common.error","Error"),description:r.message||s("admin.comments.updateError","Failed to update comment"),variant:"destructive"})}}),f=Q({mutationFn:async r=>P("DELETE",`/api/admin/comments/${r}`),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/comments"]}),q({title:s("admin.comments.deleted","Comment deleted successfully")}),I(null)},onError:r=>{q({title:s("common.error","Error"),description:r.message||s("admin.comments.deleteError","Failed to delete comment"),variant:"destructive"})}}),ie=()=>{p(!1),z(null),C(rt)},h=(r,x,V)=>{z(null),C({...rt,parentId:r||null,targetType:x||"article",targetId:V||"",createdAt:new Date().toISOString().slice(0,16)}),p(!0)},w=r=>{z(r),C({userId:r.userId,targetType:r.targetType,targetId:r.targetId,parentId:r.parentId,content:r.content,createdAt:r.createdAt?new Date(r.createdAt).toISOString().slice(0,16):new Date().toISOString().slice(0,16),isApproved:r.isApproved??!0}),p(!0)},pe=()=>{if(!j.content.trim()){q({title:s("common.error","Error"),description:s("admin.comments.contentRequired","Comment content is required"),variant:"destructive"});return}if(!j.userId){q({title:s("common.error","Error"),description:s("admin.comments.userRequired","Please select a user"),variant:"destructive"});return}if(!j.targetId){q({title:s("common.error","Error"),description:s("admin.comments.targetRequired","Please select an article or university"),variant:"destructive"});return}re?R.mutate({id:re.id,data:{content:j.content,isApproved:j.isApproved}}):K.mutate(j)},S=r=>r.firstName&&r.lastName?`${r.firstName} ${r.lastName}`:r.username||r.email||"Unknown User",v=r=>r.firstName&&r.lastName?`${r.firstName[0]}${r.lastName[0]}`.toUpperCase():r.username?.slice(0,2).toUpperCase()||"U",d=r=>{const x=ge?.find(V=>V.id===r);return x?.titleUk||x?.title||r},D=(xe||[]).filter(r=>{const x=b==="all"||r.targetId===b,V=m===""||r.content.toLowerCase().includes(m.toLowerCase())||S(r.user).toLowerCase().includes(m.toLowerCase());return x&&V}),_=D.filter(r=>!r.parentId);return B?e.jsxs(Y,{children:[e.jsxs(Be,{children:[e.jsx(ce,{className:"h-8 w-48"}),e.jsx(ce,{className:"h-4 w-64"})]}),e.jsx(X,{children:e.jsx("div",{className:"space-y-4",children:[1,2,3].map(r=>e.jsx(ce,{className:"h-20 w-full"},r))})})]}):e.jsxs(Y,{children:[e.jsx(Be,{children:e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsxs(He,{className:"flex items-center gap-2",children:[e.jsx(Rt,{className:"h-5 w-5"}),s("admin.comments.title","Comment Manager")]}),e.jsx(Ye,{children:s("admin.comments.description","Manage comments and create promotional comments")})]}),e.jsxs(c,{onClick:()=>h(),"data-testid":"button-add-comment",children:[e.jsx(Ee,{className:"h-4 w-4 mr-2"}),s("admin.comments.addComment","Add Comment")]})]})}),e.jsxs(X,{children:[e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 mb-6",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(Cs,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(g,{placeholder:s("admin.comments.searchPlaceholder","Search comments..."),value:m,onChange:r=>M(r.target.value),className:"pl-10","data-testid":"input-search-comments"})]}),e.jsxs(Z,{value:b,onValueChange:T,children:[e.jsx(ee,{className:"w-full sm:w-[250px]","data-testid":"select-filter-article",children:e.jsx(se,{placeholder:s("admin.comments.filterByArticle","Filter by article")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"all",children:s("admin.comments.allArticles","All articles")}),ge?.map(r=>
1e.jsx(l,{value:r.id,children:r.titleUk||r.title},r.id))]})]})]}),e.jsx("div",{className:"rounded-md border",children:e.jsxs(Qe,{children:[e.jsx(ze,{children:e.jsxs(ne,{children:[e.jsx(k,{children:s("admin.comments.user","User")}),e.jsx(k,{children:s("admin.comments.content","Content")}),e.jsx(k,{children:s("admin.comments.article","Article")}),e.jsx(k,{className:"text-center",children:s("admin.comments.reactions","Reactions")}),e.jsx(k,{children:s("admin.comments.date","Date")}),e.jsx(k,{children:s("admin.comments.status","Status")}),e.jsx(k,{className:"text-right",children:s("common.actions","Actions")})]})}),e.jsx(Re,{children:_.length===0?e.jsx(ne,{children:e.jsxs(y,{colSpan:7,className:"text-center py-8 text-muted-foreground",children:[e.jsx(Rt,{className:"h-8 w-8 mx-auto mb-2 opacity-50"}),s("admin.comments.noComments","No comments found")]})}):_.map(r=>e.jsx(bi,{comment:r,comments:D,onEdit:w,onDelete:I,onReply:x=>h(x,r.targetType,r.targetId),getArticleTitle:d,getUserDisplayName:S,getUserInitials:v,t:s,level:0},r.id))})]})}),e.jsx(fe,{open:O,onOpenChange:p,children:e.jsxs(ye,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(Ne,{children:[e.jsx(be,{children:re?s("admin.comments.editComment","Edit Comment"):j.parentId?s("admin.comments.addReply","Add Reply"):s("admin.comments.addComment","Add Comment")}),e.jsx(Se,{children:re?s("admin.comments.editDescription","Modify the comment content"):s("admin.comments.createDescription","Create a promotional comment as any user")})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[!re&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{htmlFor:"user",children:[s("admin.comments.selectUser","Select User")," *"]}),e.jsxs(Z,{value:j.userId,onValueChange:r=>C({...j,userId:r}),children:[e.jsx(ee,{"data-testid":"select-user",children:e.jsx(se,{placeholder:s("admin.comments.selectUserPlaceholder","Choose a user...")})}),e.jsxs(ae,{children:[oe?.length===0&&e.jsx("div",{className:"py-2 px-2 text-muted-foreground text-sm",children:s("admin.comments.noFakeUsers","No fake users found. Create users without Clerk login first.")}),oe?.map(r=>e.jsx(l,{value:r.id,children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(js,{className:"h-6 w-6",children:[e.jsx(gs,{src:r.profileImageUrl||void 0}),e.jsx(vs,{className:"text-xs",children:v(r)})]}),e.jsx("span",{children:S(r)}),e.jsxs("span",{className:"text-muted-foreground text-xs",children:["(",r.preferredLanguage==="uk"?"UA":r.preferredLanguage?.toUpperCase()||"EN",")"]})]})},r.id))]})]})]}),!j.parentId&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{htmlFor:"targetType",children:s("admin.comments.targetType","Comment Type")}),e.jsxs(Z,{value:j.targetType,onValueChange:r=>C({...j,targetType:r,targetId:""}),children:[e.jsx(ee,{"data-testid":"select-target-type",children:e.jsx(se,{})}),e.jsxs(ae,{children:[e.jsx(l,{value:"article",children:s("admin.comments.typeArticle","Article")}),e.jsx(l,{value:"university",children:s("admin.comments.typeUniversity","University")}),e.jsx(l,{value:"success_story",children:s("admin.comments.typeSuccessStory","Success Story")})]})]})]}),j.targetType==="article"&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{htmlFor:"article",children:[s("admin.comments.selectArticle","Select Article")," *"]}),e.jsxs(Z,{value:j.targetId,onValueChange:r=>C({...j,targetId:r}),children:[e.jsx(ee,{"data-testid":"select-article",children:e.jsx(se,{placeholder:s("admin.comments.selectArticlePlaceholder","Choose an article...")})}),e.jsx(ae,{children:ge?.filter(r=>r.status==="published").map(r=>e.jsx(l,{value:r.id,children:r.titleUk||r.title},r.id))})]})]}),j.targetType==="success_story"&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{htmlFor:"successStory",children:[s("admin.comments.selectSuccessStory","Select Success Story")," *"]}),e.jsxs(Z,{value:j.targetId,onValueChange:r=>C({...j,targetId:r}),children:[e.jsx(ee,{"data-testid":"select-success-story",children:e.jsx(se,{placeholder:s("admin.comments.selectSuccessStoryPlaceholder","Choose a success story...")})}),e.jsx(ae,{children:we?.filter(r=>r.status==="approved").map(r=>
1e.jsx(l,{value:r.id,children:r.titleUk||r.title},r.id))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{htmlFor:"parentComment",children:s("admin.comments.parentComment","Reply to Comment (optional)")}),e.jsxs(Z,{value:j.parentId||"none",onValueChange:r=>C({...j,parentId:r==="none"?null:r}),children:[e.jsx(ee,{"data-testid":"select-parent-comment",children:e.jsx(se,{placeholder:s("admin.comments.noParent","No parent (root comment)")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"none",children:s("admin.comments.noParent","No parent (root comment)")}),xe?.filter(r=>r.targetId===j.targetId&&!r.parentId).map(r=>e.jsx(l,{value:r.id,children:e.jsxs("span",{className:"truncate max-w-[300px] block",children:[S(r.user),": ",r.content.slice(0,50),"..."]})},r.id))]})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{htmlFor:"createdAt",children:s("admin.comments.date","Date")}),e.jsx(g,{id:"createdAt",type:"datetime-local",value:j.createdAt,onChange:r=>C({...j,createdAt:r.target.value}),"data-testid":"input-comment-date"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{htmlFor:"content",children:[s("admin.comments.content","Content")," *"]}),e.jsx(G,{id:"content",value:j.content,onChange:r=>C({...j,content:r.target.value}),placeholder:s("admin.comments.contentPlaceholder","Write the comment..."),className:"min-h-[120px]",maxLength:2e3,"data-testid":"input-comment-content"}),e.jsxs("p",{className:"text-xs text-muted-foreground text-right",children:[j.content.length,"/2000"]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Fe,{id:"isApproved",checked:j.isApproved,onCheckedChange:r=>C({...j,isApproved:r}),"data-testid":"switch-approved"}),e.jsx(i,{htmlFor:"isApproved",children:s("admin.comments.approved","Approved (visible)")})]})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:ie,children:s("common.cancel","Cancel")}),e.jsx(c,{onClick:pe,disabled:K.isPending||R.isPending,"data-testid":"button-submit-comment",children:K.isPending||R.isPending?s("common.saving","Saving..."):re?s("common.save","Save"):s("common.create","Create")})]})]})}),e.jsx(fe,{open:!!W,onOpenChange:()=>I(null),children:e.jsxs(ye,{children:[e.jsxs(Ne,{children:[e.jsx(be,{children:s("admin.comments.deleteConfirm","Delete Comment?")}),e.jsx(Se,{children:s("admin.comments.deleteWarning","This will also delete all replies to this comment. This action cannot be undone.")})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:()=>I(null),children:s("common.cancel","Cancel")}),e.jsx(c,{variant:"destructive",onClick:()=>W&&f.mutate(W),disabled:f.isPending,"data-testid":"button-confirm-delete",children:f.isPending?s("common.deleting","Deleting..."):s("common.delete","Delete")})]})]})})]})]})}function bi({comment:s,comments:q,onEdit:O,onDelete:p,onReply:re,getArticleTitle:z,getUserDisplayName:j,getUserInitials:C,t:W,level:I}){const[b,T]=U.useState(I<2),m=q.filter(M=>M.parentId===s.id);return e.jsxs(e.Fragment,{children:[e.jsxs(ne,{className:I>0?"bg-muted/30":"","data-testid":`comment-row-${s.id}`,children:[e.jsx(y,{children:e.jsxs("div",{className:"flex items-center gap-2",style:{paddingLeft:`${I*20}px`},children:[I>0&&e.jsx(Vt,{className:"h-3 w-3 text-muted-foreground"}),e.jsxs(js,{className:"h-8 w-8",children:[e.jsx(gs,{src:s.user.profileImageUrl||void 0}),e.jsx(vs,{className:"text-xs",children:C(s.user)})]}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-sm",children:j(s.user)}),s.isFake&&e.jsx(N,{variant:"outline",className:"text-xs",children:W("admin.comments.fake","Promo")})]})]})}),e.jsxs(y,{className:"max-w-[300px]",children:[e.jsx("p",{className:"truncate text-sm",children:s.content}),m.length>0&&e.jsxs(c,{variant:"ghost",size:"sm",className:"mt-1 h-6 text-xs",onClick:()=>T(!b),children:[b?W("admin.comments.hideReplies","Hide"):W("admin.comments.showReplies","Show")," (",m.length,")"]})]}),e.jsx(y,{children:s.targetType==="article"&&e.jsxs("div",{className:"flex items-center gap-1 text-sm",children:[e.jsx(cs,{className:"h-3 w-3"}),e.jsx("span",{className:"truncate max-w-[150px]",children:z(s.targetId)})]})}),e.jsx(y,{children:e.jsxs("div",{className:"flex items-center justify-center gap-2",children:[e.jsxs("span",{className:"flex items-center gap-1 text-sm",children:[e.jsx(gi,{className:"h-3 w-3 text-green-600"}),s.likesCount||0]}),e.jsxs("span",{className:"flex items-center gap-1 text-sm",children:[e.jsx(vi,{className:"h-3 w-3 text-red-600"}),s.dislikesCount||0]})]})}),e.jsx(y,{children:e.jsx("span",{className:"text-sm text-muted-foreground",children:s.createdAt?Ys(new Date(s.createdAt),"dd.MM.yyyy HH:mm"):"-"})}),e.jsx(y,{children:s.isApproved?e.jsxs(N,{variant:"default",className:"gap-1",children:[e.jsx(Xs,{className:"h-3 w-3"}),W("admin.comments.visible","Visible")]}):e.jsxs(N,{variant:"secondary",className:"gap-1",children:[e.jsx(fi,{className:"h-3 w-3"}),W("admin.comments.hidden","Hidden")]})}),e.jsx(y,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-1",children:[e.jsx(c,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:()=>re(s.id),"data-testid":`button-reply-${s.id}`,children:e.jsx(Vt,{className:"h-4 w-4"})}),e.jsx(c,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:()=>O(s),"data-testid":`button-edit-${s.id}`,children:e.jsx(ht,{className:"h-4 w-4"})}),e.jsx(c,{variant:"ghost",size:"icon",className:"h-8 w-8 text-destructive",onClick:()=>p(s.id),"data-testid":`button-delete-${s.id}`,children:e.jsx(Te,{className:"h-4 w-4"})})]})})]}),b&&m.map(M=>e.jsx(bi,{comment:M,comments:q,onEdit:O,onDelete:p,onReply:re,getArticleTitle:z,getUserDisplayName:j,getUserInitials:C,t:W,level:I+1},M.id))]})}const dt={title:"",titleUk:"",titleEs:"",profile:"",profileUk:"",profileEs:"",journey:"",journeyUk:"",journeyEs:"",result:"",resultUk:"",resultEs:"",youtubeUrl:"",isAnonymous:!0,admissionYear:new Date().getFullYear(),countryCode:"",universityId:"",majorId:"",status:"pending",userId:"",mentorId:""};function nr(){const{t:s}=fs(),{toast:q}=Ns(),[O,p]=U.useState(!1),[re,z]=U.useState(null),[j,C]=U.useState(dt),[W,I]=U.useState(null),[b,T]=U.useState("all"),{data:m,isLoading:M}=le({queryKey:["/api/admin/success-stories"]}),{data:xe}=le({queryKey:["/api/universities"]}),{data:B}=le({queryKey:["/api/countries"]}),{data:oe}=le({queryKey:["/api/admin/users"]}),{data:ge}=le({queryKey:["/api/admin/mentors"]}),we=Q({mutationFn:async d=>P("POST","/api/admin/success-stories",d),onSuccess:()=>
1{A.invalidateQueries({queryKey:["/api/admin/success-stories"]}),A.invalidateQueries({queryKey:["/api/success-stories"]}),q({title:s("admin.successStories.created","Success story created")}),f()},onError:d=>{q({title:s("common.error","Error"),description:d.message||s("admin.successStories.createError","Failed to create story"),variant:"destructive"})}}),K=Q({mutationFn:async({id:d,data:D})=>P("PATCH",`/api/admin/success-stories/${d}`,D),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/success-stories"]}),A.invalidateQueries({queryKey:["/api/success-stories"]}),q({title:s("admin.successStories.updated","Success story updated")}),f()},onError:d=>{q({title:s("common.error","Error"),description:d.message||s("admin.successStories.updateError","Failed to update story"),variant:"destructive"})}}),R=Q({mutationFn:async d=>P("DELETE",`/api/admin/success-stories/${d}`),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/success-stories"]}),A.invalidateQueries({queryKey:["/api/success-stories"]}),q({title:s("admin.successStories.deleted","Success story deleted")}),I(null)},onError:d=>{q({title:s("common.error","Error"),description:d.message||s("admin.successStories.deleteError","Failed to delete story"),variant:"destructive"})}}),f=()=>{p(!1),z(null),C(dt)},ie=()=>{C(dt),z(null),p(!0)},h=d=>{z(d),C({title:d.title||"",titleUk:d.titleUk||"",titleEs:d.titleEs||"",profile:d.profile||"",profileUk:d.profileUk||"",profileEs:d.profileEs||"",journey:d.journey||"",journeyUk:d.journeyUk||"",journeyEs:d.journeyEs||"",result:d.result||"",resultUk:d.resultUk||"",resultEs:d.resultEs||"",youtubeUrl:d.youtubeUrl||"",isAnonymous:d.isAnonymous??!0,admissionYear:d.admissionYear||null,countryCode:d.countryCode||"",universityId:d.universityId||"",majorId:d.majorId||"",status:d.status||"pending",userId:d.userId||"",mentorId:d.mentorId||""}),p(!0)},w=()=>{if(!j.title&&!j.titleUk){q({title:s("common.error","Error"),description:s("admin.successStories.titleRequired","Title is required"),variant:"destructive"});return}if(!j.profile&&!j.profileUk){q({title:s("common.error","Error"),description:s("admin.successStories.profileRequired","Profile section is required"),variant:"destructive"});return}if(!re&&!j.userId){q({title:s("common.error","Error"),description:s("admin.successStories.userRequired","User is required"),variant:"destructive"});return}re?K.mutate({id:re.id,data:j}):we.mutate(j)},pe=d=>{switch(d){case"approved":return e.jsxs(N,{className:"bg-green-500/10 text-green-600 border-green-500/30",children:[e.jsx(Es,{className:"h-3 w-3 mr-1"}),s("admin.successStories.approved","Approved")]});case"rejected":return e.jsxs(N,{variant:"destructive",children:[e.jsx(xa,{className:"h-3 w-3 mr-1"}),s("admin.successStories.rejected","Rejected")]});default:return e.jsxs(N,{variant:"secondary",children:[e.jsx(pt,{className:"h-3 w-3 mr-1"}),s("admin.successStories.pending","Pending")]})}},S=m?.filter(d=>b==="all"?!0:d.status===b),v=j.countryCode?xe?.filter(d=>d.countryCode===j.countryCode):xe;return M?e.jsxs("div",{className:"space-y-4",children:[e.jsx(ce,{className:"h-10 w-32"}),e.jsx(ce,{className:"h-64 w-full"})]}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold","data-testid":"heading-success-stories-manager",children:s("admin.successStories.title","Success Stories")}),e.jsx("p",{className:"text-muted-foreground",children:s("admin.successStories.description","Manage admission success stories")})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(Z,{value:b,onValueChange:T,children:[e.jsx(ee,{className:"w-[160px]","data-testid":"filter-status",children:e.jsx(se,{placeholder:s("admin.successStories.filterStatus","Filter by status")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"all",children:s("common.all","All")}),e.jsx(l,{value:"pending",children:s("admin.successStories.pending","Pending")}),e.jsx(l,{value:"approved",children:s("admin.successStories.approved","Approved")}),e.jsx(l,{value:"rejected",children:s("admin.successStories.rejected","Rejected")})]})]}),e.jsxs(c,{onClick:ie,"data-testid":"button-create-story",children:[e.jsx(Ee,{className:"h-4 w-4 mr-2"}),s("admin.successStories.create","Create Story")]})]})]}),e.jsx(Y,{children:e.jsx(X,{className:"p-0",children:e.jsxs(Qe,{children:[e.jsx(ze,{children:e.jsxs(ne,{children:[e.jsx(k,{children:s("admin.successStories.titleColumn","Title")}),e.jsx(k,{children:s("admin.successStories.university","University")}),e.jsx(k,{children:s("admin.successStories.year","Year")}),e.jsx(k,{children:s("admin.successStories.status","Status")}),e.jsx(k,{children:s("admin.successStories.stats","Stats")}
1),e.jsx(k,{className:"text-right",children:s("admin.actions","Actions")})]})}),e.jsx(Re,{children:S&&S.length>0?S.map(d=>e.jsxs(ne,{"data-testid":`row-story-${d.id}`,children:[e.jsx(y,{className:"font-medium",children:e.jsxs("div",{className:"flex items-center gap-2",children:[d.isAnonymous?e.jsx(yn,{className:"h-8 w-8 text-muted-foreground"}):e.jsx(ms,{className:"h-8 w-8 text-primary"}),e.jsxs("div",{children:[e.jsx("div",{className:"line-clamp-1",children:d.titleUk||d.title}),e.jsx("div",{className:"text-xs text-muted-foreground",children:d.isAnonymous?s("successStories.anonymous","Anonymous"):s("successStories.withName","With name")})]})]})}),e.jsx(y,{children:d.universityId?e.jsxs(N,{variant:"outline",children:[e.jsx(ms,{className:"h-3 w-3 mr-1"}),xe?.find(D=>D.id===d.universityId)?.name||"Unknown"]}):e.jsx("span",{className:"text-muted-foreground",children:"-"})}),e.jsx(y,{children:d.admissionYear?e.jsxs("div",{className:"flex items-center gap-1 text-muted-foreground",children:[e.jsx(Fa,{className:"h-4 w-4"}),d.admissionYear]}):"-"}),e.jsx(y,{children:pe(d.status||"pending")}),e.jsx(y,{children:e.jsxs("div",{className:"flex items-center gap-3 text-muted-foreground text-sm",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Xs,{className:"h-4 w-4"}),d.viewCount||0]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(ot,{className:"h-4 w-4"}),d.likesCount||0]})]})}),e.jsx(y,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(c,{size:"icon",variant:"ghost",onClick:()=>h(d),"data-testid":`button-edit-story-${d.id}`,children:e.jsx(ht,{className:"h-4 w-4"})}),e.jsx(c,{size:"icon",variant:"ghost",onClick:()=>I(d.id),"data-testid":`button-delete-story-${d.id}`,children:e.jsx(Te,{className:"h-4 w-4"})})]})})]},d.id)):e.jsx(ne,{children:e.jsx(y,{colSpan:6,className:"text-center py-8 text-muted-foreground",children:s("admin.successStories.noStories","No success stories found")})})})]})})}),e.jsx(fe,{open:O,onOpenChange:p,children:e.jsxs(ye,{className:"max-w-4xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(Ne,{children:[e.jsx(be,{children:re?s("admin.successStories.edit","Edit Success Story"):s("admin.successStories.create","Create Success Story")}),e.jsx(Se,{children:s("admin.successStories.formDescription","Fill in the story details in multiple languages")})]}),e.jsxs("div",{className:"space-y-6 py-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.successStories.country","Country")}),e.jsxs(Z,{value:j.countryCode,onValueChange:d=>C({...j,countryCode:d,universityId:""}),children:[e.jsx(ee,{"data-testid":"select-country",children:e.jsx(se,{placeholder:s("admin.successStories.selectCountry","Select country")})}),e.jsx(ae,{children:B?.map(d=>e.jsxs(l,{value:d.code,children:[d.flagEmoji," ",d.name]},d.code))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.successStories.university","University")}),e.jsxs(Z,{value:j.universityId,onValueChange:d=>C({...j,universityId:d}),children:[e.jsx(ee,{"data-testid":"select-university",children:e.jsx(se,{placeholder:s("admin.successStories.selectUniversity","Select university")})}),e.jsx(ae,{children:v?.map(d=>e.jsx(l,{value:d.id,children:d.name},d.id))})]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.successStories.admissionYear","Admission Year")}),e.jsx(g,{type:"number",value:j.admissionYear||"",onChange:d=>C({...j,admissionYear:parseInt(d.target.value)||null}),placeholder:"2024","data-testid":"input-year"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.successStories.status","Status")}),e.jsxs(Z,{value:j.status,onValueChange:d=>C({...j,status:d}),children:[e.jsx(ee,{"data-testid":"select-status",children:e.jsx(se,{})}),e.jsxs(ae,{children:[e.jsx(l,{value:"pending",children:s("admin.successStories.pending","Pending")}),e.jsx(l,{value:"approved",children:s("admin.successStories.approved","Approved")}),e.jsx(l,{value:"rejected",children:s("admin.successStories.rejected","Rejected")})]})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{children:[s("admin.successStories.user","User (Author)")," *"]}),e.jsxs(Z,{value:j.userId,onValueChange:d=>C({...j,userId:d}),children:[e.jsx(ee,{"data-testid":"select-user",children:e.jsx(se,{placeholder:s("admin.successStories.selectUser","Select user")})}),e.jsx(ae,{children:oe?.map(d=>e.jsxs(l,{value:d.id,children:[d.firstName&&d.lastName?`${d.firstName} ${d.lastName}`:d.email," (",d.role,")"]},d.id))})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s("admin.successStories.userHint","Select the user this story belongs to")})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.successStories.mentor","Mentor")}),e.jsxs(Z,{value:j.mentorId,onValueChange:d=>C({...j,mentorId:d==="none"?"":d}),children:[e.jsx(ee,{"data-testid":"select-mentor",children:e.jsx(se,{placeholder:s("admin.successStories.selectMentor","Select mentor (optional)")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"none",children:s("admin.successStories.noMentor","No mentor")}
1),ge?.filter(d=>d.userId).map(d=>e.jsx(l,{value:d.userId,children:d.user?.firstName&&d.user?.lastName?`${d.user.firstName} ${d.user.lastName}`:d.user?.email||d.userId},d.id))]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s("admin.successStories.mentorHint","Optionally link this story to a platform mentor")})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(i,{htmlFor:"anonymous",children:s("admin.successStories.anonymous","Anonymous Story")}),e.jsx(Fe,{id:"anonymous",checked:j.isAnonymous,onCheckedChange:d=>C({...j,isAnonymous:d}),"data-testid":"switch-anonymous"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{children:[s("admin.successStories.titleField")," *"]}),e.jsx(g,{value:j.title,onChange:d=>C({...j,title:d.target.value}),placeholder:s("admin.successStories.titlePlaceholder","Story title"),"data-testid":"input-title"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{children:[s("admin.successStories.profileField")," *"]}),e.jsx(G,{value:j.profile,onChange:d=>C({...j,profile:d.target.value}),placeholder:s("admin.successStories.profilePlaceholder","Tell about yourself..."),rows:3,"data-testid":"input-profile"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{children:[s("admin.successStories.journeyField")," *"]}),e.jsx(ua,{value:j.journey,onChange:d=>C({...j,journey:d}),placeholder:s("admin.successStories.journeyPlaceholder","Describe your preparation journey..."),"data-testid":"input-journey"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{children:[s("admin.successStories.resultField")," *"]}),e.jsx(ua,{value:j.result,onChange:d=>C({...j,result:d}),placeholder:s("admin.successStories.resultPlaceholder","Tell about the result..."),"data-testid":"input-result"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{className:"flex items-center gap-2",children:[e.jsx(Ln,{className:"h-4 w-4 text-red-500"}),s("admin.successStories.youtubeUrl","YouTube Video URL")]}),e.jsx(g,{value:j.youtubeUrl,onChange:d=>C({...j,youtubeUrl:d.target.value}),placeholder:"https://www.youtube.com/watch?v=... or https://youtu.be/...","data-testid":"input-youtube-url"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s("admin.successStories.youtubeUrlHint","Optional. Paste a YouTube video link to embed in the story.")})]})]})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:f,children:s("common.cancel","Cancel")}),e.jsx(c,{onClick:w,disabled:we.isPending||K.isPending,"data-testid":"button-save-story",children:we.isPending||K.isPending?s("common.saving","Saving..."):re?s("common.save","Save"):s("common.create","Create")})]})]})}),e.jsx(Dn,{open:!!W,onOpenChange:()=>I(null),children:e.jsxs(An,{children:[e.jsxs(In,{children:[e.jsx(Fn,{children:s("admin.successStories.deleteConfirm","Delete Success Story?")}),e.jsx(Tn,{children:s("admin.successStories.deleteWarning","This action cannot be undone. The story will be permanently deleted.")})]}),e.jsxs(qn,{children:[e.jsx(On,{children:s("common.cancel","Cancel")}),e.jsx(Pn,{onClick:()=>W&&R.mutate(W),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:s("common.delete","Delete")})]})]})})]})}const Ca={name:"",nameUk:"",nameEs:"",description:"",descriptionUk:"",descriptionEs:"",condition:"",conditionUk:"",conditionEs:"",iconUrl:"",category:"academic",badgeType:"activity",points:10,requiresVerification:!1,isActive:!0};function rr(){const{t:s,i18n:q}=fs(),{toast:O}=Ns(),p=q.language,[re,z]=U.useState("badges"),[j,C]=U.useState({isOpen:!1,request:null,action:null}),[W,I]=U.useState(""),[b,T]=U.useState({isOpen:!1,mode:"create",badge:null}),[m,M]=U.useState(Ca),xe=()=>p==="uk"?Qn:p==="es"?zn:Rn,B=o=>p==="uk"&&o.nameUk?o.nameUk:p==="es"&&o.nameEs?o.nameEs:o.name,oe=o=>o?p==="uk"&&o.nameUk?o.nameUk:p==="es"&&o.nameEs?o.nameEs:o.name:"Unknown Badge",{data:ge,isLoading:we,refetch:K}=le({queryKey:["/api/admin/badges"],staleTime:0}),{data:R,isLoading:f,refetch:ie}=le({queryKey:["/api/admin/badge-requests/pending"]}),{data:h,isLoading:w}=le({queryKey:["/api/admin/badge-requests/all"]}),{data:pe,isLoading:S}=le({queryKey:["/api/rewards"]}),{data:v,isLoading:d}=le({queryKey:["/api/admin/user-rewards"]}),D=Q({mutationFn:async o=>(await P("POST","/api/admin/badges",o)).json(),onSuccess:()=>
1{A.invalidateQueries({queryKey:["/api/admin/badges"]}),A.invalidateQueries({queryKey:["/api/gamification/badges"]}),O({title:s("admin.gamification.badgeCreated","Badge Created"),description:s("admin.gamification.badgeCreatedDesc","The badge has been created successfully")}),T({isOpen:!1,mode:"create",badge:null}),M(Ca)},onError:()=>{O({title:s("common.error"),description:s("admin.gamification.badgeCreateError","Failed to create badge"),variant:"destructive"})}}),_=Q({mutationFn:async({id:o,data:$e})=>(await P("PATCH",`/api/admin/badges/${o}`,$e)).json(),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/badges"]}),A.invalidateQueries({queryKey:["/api/gamification/badges"]}),O({title:s("admin.gamification.badgeUpdated","Badge Updated"),description:s("admin.gamification.badgeUpdatedDesc","The badge has been updated successfully")}),T({isOpen:!1,mode:"create",badge:null}),M(Ca)},onError:()=>{O({title:s("common.error"),description:s("admin.gamification.badgeUpdateError","Failed to update badge"),variant:"destructive"})}}),r=Q({mutationFn:async o=>(await P("DELETE",`/api/admin/badges/${o}`)).json(),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/badges"]}
1),A.invalidateQueries({queryKey:["/api/gamification/badges"]}),O({title:s("admin.gamification.badgeDeleted","Badge Deleted"),description:s("admin.gamification.badgeDeletedDesc","The badge has been deleted successfully")})},onError:()=>{O({title:s("common.error"),description:s("admin.gamification.badgeDeleteError","Failed to delete badge"),variant:"destructive"})}}),x=Q({mutationFn:async({requestId:o,action:$e,notes:t})=>(await P("POST",`/api/admin/badge-requests/${o}/verify`,{action:$e,notes:t})).json(),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/badge-requests/pending"]}),A.invalidateQueries({queryKey:["/api/admin/badge-requests/all"]}),O({title:s("admin.gamification.requestProcessed","Request Processed"),description:j.action==="approve"?s("admin.gamification.badgeApproved","Badge has been approved"):s("admin.gamification.badgeRejected","Badge request has been rejected")}),C({isOpen:!1,request:null,action:null}),I("")},onError:()=>{O({title:s("common.error"),description:s("admin.gamification.verifyError","Failed to process request"),variant:"destructive"})}}),V=(o,$e)=>{C({isOpen:!0,request:o,action:$e})},ue=()=>{!j.request||!j.action||x.mutate({requestId:j.request.id,action:j.action,notes:W||void 0})},Pe=()=>{M(Ca),T({isOpen:!0,mode:"create",badge:null})},Le=o=>{M({name:o.name||"",nameUk:o.nameUk||"",nameEs:o.nameEs||"",description:o.description||"",descriptionUk:o.descriptionUk||"",descriptionEs:o.descriptionEs||"",condition:o.condition||"",conditionUk:o.conditionUk||"",conditionEs:o.conditionEs||"",iconUrl:o.iconUrl||"",category:o.category||"academic",badgeType:o.badgeType||"activity",points:o.points||10,requiresVerification:o.requiresVerification||!1,isActive:o.isActive!==!1}),T({isOpen:!0,mode:"edit",badge:o})},F=()=>{b.mode==="create"?D.mutate(m):b.badge&&_.mutate({id:b.badge.id,data:m})},ke=o=>p==="uk"&&o.nameUk?o.nameUk:p==="es"&&o.nameEs?o.nameEs:o.name,rs=o=>{switch(o){case"activity":return s("admin.gamification.badgeTypeActivity","Activity");case"achievement":return s("admin.gamification.badgeTypeAchievement","Achievement");case"streak":return s("admin.gamification.badgeTypeStreak","Streak");case"special":return s("admin.gamification.badgeTypeSpecial","Special");default:return o||"Unknown"}},as=o=>{switch(o){case"academic":return s("admin.gamification.categoryAcademic","Academic");case"social":return s("admin.gamification.categorySocial","Social");case"leadership":return s("admin.gamification.categoryLeadership","Leadership");case"creative":return s("admin.gamification.categoryCreative","Creative");case"volunteer":return s("admin.gamification.categoryVolunteer","Volunteer");case"special":return s("admin.gamification.categorySpecial","Special");default:return o||"Unknown"}},H=o=>{switch(o){case"pending":return e.jsxs(N,{variant:"outline",className:"gap-1",children:[e.jsx(pt,{className:"h-3 w-3"}),s("gamification.pending")]});case"approved":return e.jsxs(N,{className:"gap-1 bg-green-500",children:[e.jsx(ma,{className:"h-3 w-3"}),s("admin.gamification.approved","Approved")]});case"rejected":return e.jsxs(N,{variant:"destructive",className:"gap-1",children:[e.jsx(Ss,{className:"h-3 w-3"}),s("gamification.rejected")]});default:return e.jsx(N,{variant:"secondary",children:o})}};return e.jsxs("div",{className:"space-y-6","data-testid":"gamification-manager",children:[e.jsxs(Y,{children:[e.jsx(Be,{children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs(He,{className:"flex items-center gap-2",children:[e.jsx(Ea,{className:"h-5 w-5 text-amber-500"}),s("admin.gamification.title","Gamification Management")]}),e.jsx(Ye,{children:s("admin.gamification.description","Manage badges, rewards, and XP settings")})]}),e.jsxs(c,{variant:"outline",size:"sm",onClick:()=>ie(),className:"gap-1","data-testid":"btn-refresh",children:[e.jsx(Gs,{className:"h-4 w-4"}),s("common.refresh","Refresh")]})]})}),e.jsx(X,{children:e.jsxs(pa,{value:re,onValueChange:z,children:[e.jsxs(ja,{className:"grid w-full grid-cols-4",children:[e.jsxs(ve,{value:"badges",className:"gap-1","data-testid":"tab-badges",children:[e.jsx(ls,{className:"h-4 w-4"}),s("gamification.badges")]}),e.jsxs(ve,{value:"badge-requests",className:"gap-1","data-testid":"tab-badge-requests",children:[e.jsx(_t,{className:"h-4 w-4"}),s("admin.gamification.badgeRequests","Badge Requests"),R&&R.length>0&&e.jsx(N,{variant:"destructive",className:"ml-1",children:R.length})]}),e.jsxs(ve,{value:"rewards",className:"gap-1","data-testid":"tab-rewards",children:[e.jsx(ka,{className:"h-4 w-4"}),s("gamification.rewards")]}),e.jsxs(ve,{value:"stats",className:"gap-1","data-testid":"tab-stats",children:[e.jsx(Ua,{className:"h-4 w-4"}),s("admin.gamification.stats","Stats")]})]}),e.jsxs(je,{value:"badges",className:"mt-4",children:[e.jsxs("div",{className:"flex justify-between items-center mb-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:s("admin.gamification.allBadges","All Badges")}),e.jsxs(c,{onClick:Pe,className:"gap-1","data-testid":"btn-create-badge",children:[e.jsx(Ee,{className:"h-4 w-4"}),s("admin.gamification.createBadge","Create Badge")]})]}),we?e.jsx("div",{className:"space-y-3",children:[1,2,3].map(o=>e.jsx(ce,{className:"h-16 w-full"},o))}):ge&&ge.length>0?e.jsxs(Qe,{children:[e.jsx(ze,{children:e.jsxs(ne,{children:[e.jsx(k,{children:s("admin.gamification.badgeIcon","Icon")}),e.jsx(k,{children:s("admin.name","Name")}),e.jsx(k,{children:s("admin.gamification.category","Category")}),e.jsx(k,{children:s("admin.gamification.type","Type")}),e.jsx(k,{children:s("admin.gamification.xpPoints","XP Points")}),e.jsx(k,{children:s("admin.status","Status")}),e.jsx(k,{className:"text-right",children:s("admin.actions","Actions")})]})}),e.jsx(Re,{children:ge.map(o=>e.jsxs(ne,{"data-testid":`badge-row-${o.id}`,children:[e.jsx(y,{children:o.iconUrl?e.jsx("img",{src:o.iconUrl,alt:o.name,className:"h-8 w-8 object-contain rounded"}):e.jsx("div",{className:"h-8 w-8 bg-muted rounded flex items-center justify-center",children:e.jsx(ls,{className:"h-4 w-4 text-amber-500"})})}),e.jsx(y,{children:e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:ke(o)}),o.description&&e.jsx("div",{className:"text-xs text-muted-foreground truncate max-w-[200px]",children:o.description})]})}),e.jsx(y,{children:e.jsx(N,{variant:"outline",children:as(o.category)})}),e.jsx(y,{children:e.jsx(N,{variant:"secondary",children:rs(o.badgeType)})}),e.jsx(y,{children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Fs,{className:"h-4 w-4 text-amber-500"}),o.points||0]})}),e.jsx(y,{children:e.jsx(N,{variant:o.isActive?"default":"secondary",children:o.isActive?s("admin.active","Active"):s("admin.inactive","Inactive")})}),e.jsx(y,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-1",children:[e.jsx(c,{size:"icon",variant:"ghost",onClick:()=>Le(o),"data-testid":`btn-edit-badge-${o.id}`,children:e.jsx(ss,{className:"h-4 w-4"})}),e.jsx(c,{size:"icon",variant:"ghost",onClick:()=>{confirm(s("admin.gamification.confirmDeleteBadge","Are you sure you want to delete this badge?"))&&r.mutate(o.id)},"data-testid":`btn-delete-badge-${o.id}`,children:e.jsx(Te,{className:"h-4 w-4 text-destructive"})})]})})]},o.id))})]}):e.jsxs("div",{className:"text-center py-8 text-muted-foreground",children:[e.jsx(ls,{className:"h-12 w-12 mx-auto mb-3 opacity-50"}),e.jsx("p",{children:s("admin.gamification.noBadges","No badges found")}),e.jsxs(c,{variant:"outline",onClick:Pe,className:"mt-4 gap-1",children:[e.jsx(Ee,{className:"h-4 w-4"}),s("admin.gamification.createFirstBadge","Create your first badge")]})]})]}),e.jsxs(je,{value:"badge-requests",className:"mt-4",children:[f?e.jsx("div",{className:"space-y-3",children:[1,2,3].map(o=>e.jsx(ce,{className:"h-16 w-full"},o))}):R&&R.length>0?e.jsxs(Qe,{children:[e.jsx(ze,{children:e.jsxs(ne,{children:[e.jsx(k,{children:s("admin.user","User")}),e.jsx(k,{children:s("gamification.badges")}),e.jsx(k,{children:s("admin.gamification.proof","Proof")}
1),e.jsx(k,{children:s("admin.gamification.date","Date")}),e.jsx(k,{className:"text-right",children:s("admin.actions","Actions")})]})}),e.jsx(Re,{children:R.map(o=>e.jsxs(ne,{"data-testid":`request-row-${o.id}`,children:[e.jsx(y,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(js,{className:"h-8 w-8",children:[e.jsx(gs,{src:o.user?.avatarUrl||void 0}),e.jsx(vs,{children:(o.user?.firstName?.[0]||"")+(o.user?.lastName?.[0]||"")})]}),e.jsxs("span",{className:"font-medium",children:[o.user?.firstName," ",o.user?.lastName]})]})}),e.jsx(y,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ls,{className:"h-4 w-4 text-amber-500"}),oe(o.badge)]})}),e.jsx(y,{children:e.jsxs("div",{className:"flex flex-col gap-1",children:[o.proofUrl&&e.jsxs("a",{href:o.proofUrl,target:"_blank",rel:"noopener noreferrer",className:"text-sm text-blue-500 hover:underline flex items-center gap-1",children:[e.jsx(mt,{className:"h-3 w-3"}),s("admin.gamification.viewProof","View")]}),o.proofNotes&&e.jsx("span",{className:"text-xs text-muted-foreground truncate max-w-[200px]",children:o.proofNotes})]})}),e.jsx(y,{children:Ys(new Date(o.createdAt),"PPp",{locale:xe()})}),e.jsx(y,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-2",children:[e.jsxs(c,{size:"sm",variant:"outline",onClick:()=>V(o,"approve"),className:"gap-1","data-testid":`btn-approve-${o.id}`,children:[e.jsx(ma,{className:"h-4 w-4 text-green-500"}),s("admin.gamification.approve","Approve")]}),e.jsxs(c,{size:"sm",variant:"outline",onClick:()=>V(o,"reject"),className:"gap-1","data-testid":`btn-reject-${o.id}`,children:[e.jsx(Ss,{className:"h-4 w-4 text-red-500"}),s("admin.gamification.reject","Reject")]})]})})]},o.id))})]}):e.jsxs("div",{className:"text-center py-8 text-muted-foreground",children:[e.jsx(_t,{className:"h-12 w-12 mx-auto mb-3 opacity-50"}),e.jsx("p",{children:s("admin.gamification.noPendingRequests","No pending badge requests")})]}),h&&h.length>0&&e.jsxs("div",{className:"mt-8",children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:s("admin.gamification.allRequests","All Requests")}),e.jsxs(Qe,{children:[e.jsx(ze,{children:e.jsxs(ne,{children:[e.jsx(k,{children:s("admin.user","User")}),e.jsx(k,{children:s("gamification.badges")}),e.jsx(k,{children:s("admin.gamification.status","Status")}),e.jsx(k,{children:s("admin.gamification.date","Date")})]})}),e.jsx(Re,{children:h.slice(0,10).map(o=>e.jsxs(ne,{children:[e.jsxs(y,{children:[o.user?.firstName," ",o.user?.lastName]}),e.jsx(y,{children:oe(o.badge)}),e.jsx(y,{children:H(o.status)}),e.jsx(y,{children:Ys(new Date(o.createdAt),"PP",{locale:xe()})})]},o.id))})]})]})]}),e.jsxs(je,{value:"rewards",className:"mt-4",children:[S?e.jsx("div",{className:"space-y-3",children:[1,2,3].map(o=>e.jsx(ce,{className:"h-16 w-full"},o))}):pe&&pe.length>0?e.jsx("div",{className:"grid gap-4 md:grid-cols-2 lg:grid-cols-3",children:pe.map(o=>e.jsx(Y,{className:o.isActive?"":"opacity-60",children:e.jsxs(X,{className:"pt-4",children:[e.jsxs("div",{className:"flex items-start justify-between mb-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ka,{className:"h-5 w-5 text-purple-500"}),e.jsx("span",{className:"font-semibold",children:B(o)})]}),e.jsx(N,{variant:o.isActive?"default":"secondary",children:o.isActive?s("admin.active","Active"):s("admin.inactive","Inactive")})]}),e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground mb-2",children:[e.jsx(Fs,{className:"h-4 w-4 text-amber-500"}),o.xpCost," XP"]}),o.stockQuantity!==null&&e.jsxs("div",{className:"text-xs text-muted-foreground",children:[s("admin.gamification.stock","Stock"),": ",o.stockQuantity]})]})},o.id))}):e.jsxs("div",{className:"text-center py-8 text-muted-foreground",children:[e.jsx(ka,{className:"h-12 w-12 mx-auto mb-3 opacity-50"}),e.jsx("p",{children:s("gamification.noRewardsAvailable")})]}),v&&v.length>0&&e.jsxs("div",{className:"mt-8",children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:s("admin.gamification.purchasedRewards","Purchased Rewards")}),e.jsxs(Qe,{children:[e.jsx(ze,{children:e.jsxs(ne,{children:[e.jsx(k,{children:s("admin.user","User")}),e.jsx(k,{children:s("gamification.rewards")}),e.jsx(k,{children:s("admin.gamification.purchaseDate","Purchase Date")}),e.jsx(k,{children:s("admin.gamification.status","Status")})]})}),e.jsx(Re,{children:v.slice(0,10).map(o=>e.jsxs(ne,{children:[e.jsxs(y,{children:[o.user?.firstName," ",o.user?.lastName]}),e.jsx(y,{children:o.reward?B(o.reward):"Unknown"}),e.jsx(y,{children:Ys(new Date(o.purchasedAt),"PP",{locale:xe()})}),e.jsx(y,{children:e.jsx(N,{variant:o.usedAt?"secondary":"default",children:o.usedAt?s("gamification.used"):s("gamification.owned")})})]},o.id))})]})]})]}),e.jsx(je,{value:"stats",className:"mt-4",children:e.jsxs("div",{className:"grid gap-4 md:grid-cols-3",children:[e.jsx(Y,{children:e.jsx(X,{className:"pt-6",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-lg bg-amber-500/10",children:e.jsx(ls,{className:"h-6 w-6 text-amber-500"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-2xl font-bold",children:R?.length||0}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s("admin.gamification.pendingBadges","Pending Badges")})]})]})})}),e.jsx(Y,{children:e.jsx(X,{className:"pt-6",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-lg bg-green-500/10",children:e.jsx(ma,{className:"h-6 w-6 text-green-500"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-2xl font-bold",children:h?.filter(o=>o.status==="approved").length||0}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s("admin.gamification.approvedBadges","Approved Badges")})]})]})})}),e.jsx(Y,{children:e.jsx(X,{className:"pt-6",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-lg bg-purple-500/10",children:e.jsx(ka,{className:"h-6 w-6 text-purple-500"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-2xl font-bold",children:v?.length||0}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s("admin.gamification.totalPurchases","Total Purchases")})]})]})})})]})})]})})]}),e.jsx(fe,{open:j.isOpen,onOpenChange:o=>!o&&C({isOpen:!1,request:null,action:null}),children:e.jsxs(ye,{children:[e.jsxs(Ne,{children:[e.jsx(be,{children:j.action==="approve"?s("admin.gamification.approveBadge","Approve Badge"):s("admin.gamification.rejectBadge","Reject Badge")}),e.jsx(Se,{children:j.action==="approve"?s("admin.gamification.approveDescription","Approving will award the badge and XP to the user."):s("admin.gamification.rejectDescription","Please provide a reason for rejection.")})]}),j.request&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-muted rounded-lg",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx(ls,{className:"h-5 w-5 text-amber-500"}),e.jsx("span",{className:"font-semibold",children:oe(j.request.badge)})]}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[s("admin.gamification.requestedBy","Requested by"),": ",j.request.user?.firstName," ",j.request.user?.lastName]}),j.request.proofNotes&&e.jsx("p",{className:"text-sm mt-2 p-2 bg-background rounded",children:j.request.proofNotes})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"text-sm font-medium",children:[s("admin.gamification.reviewNotes","Review Notes")," (",s("common.optional","Optional"),")"]}),e.jsx(G,{value:W,onChange:o=>I(o.target.value),placeholder:s("admin.gamification.notesPlaceholder","Add any notes about this decision..."),className:"mt-1"})]})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:()=>C({isOpen:!1,request:null,action:null}),children:s("common.cancel")}),e.jsxs(c,{variant:j.action==="approve"?"default":"destructive",onClick:ue,disabled:x.isPending,"data-testid":"btn-confirm-review",children:[x.isPending&&e.jsx(ha,{className:"h-4 w-4 mr-2 animate-spin"}),j.action==="approve"?s("admin.gamification.approve","Approve"):s("admin.gamification.reject","Reject")]})]})]})}),e.jsx(fe,{open:b.isOpen,onOpenChange:o=>!o&&T({isOpen:!1,mode:"create",badge:null}),children:e.jsxs(ye,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(Ne,{children:[e.jsx(be,{children:b.mode==="create"?s("admin.gamification.createBadge","Create Badge"):s("admin.gamification.editBadge","Edit Badge")}),e.jsx(Se,{children:s("admin.gamification.badgeDialogDescription","Configure badge settings that will be visible to users")})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{htmlFor:"badge-name",children:[s("admin.name")," (EN) *"]}),e.jsx(g,{id:"badge-name",value:m.name,onChange:o=>M({...m,name:o.target.value}),placeholder:"Badge Name","data-testid":"input-badge-name"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{htmlFor:"badge-nameUk",children:[s("admin.nameUk")," (UK)"]}),e.jsx(g,{id:"badge-nameUk",value:m.nameUk,onChange:o=>M({...m,nameUk:o.target.value}
1),placeholder:"Ðазва бейджа","data-testid":"input-badge-nameUk"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{htmlFor:"badge-nameEs",children:[s("admin.nameEs")," (ES)"]}),e.jsx(g,{id:"badge-nameEs",value:m.nameEs,onChange:o=>M({...m,nameEs:o.target.value}),placeholder:"Nombre de la insignia","data-testid":"input-badge-nameEs"})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{htmlFor:"badge-description",children:[s("admin.description")," (EN)"]}),e.jsx(G,{id:"badge-description",value:m.description,onChange:o=>M({...m,description:o.target.value}),placeholder:"Badge description",className:"min-h-[80px]","data-testid":"input-badge-description"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{htmlFor:"badge-descriptionUk",children:[s("admin.description")," (UK)"]}),e.jsx(G,{id:"badge-descriptionUk",value:m.descriptionUk,onChange:o=>M({...m,descriptionUk:o.target.value}),placeholder:"ÐÐ¿Ð¸Ñ Ð±ÐµÐ¹Ð´Ð¶Ð°",className:"min-h-[80px]","data-testid":"input-badge-descriptionUk"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{htmlFor:"badge-descriptionEs",children:[s("admin.description")," (ES)"]}),e.jsx(G,{id:"badge-descriptionEs",value:m.descriptionEs,onChange:o=>M({...m,descriptionEs:o.target.value}),placeholder:"Descripción de la insignia",className:"min-h-[80px]","data-testid":"input-badge-descriptionEs"})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{htmlFor:"badge-condition",children:[s("admin.gamification.condition","Condition")," (EN)"]}),e.jsx(g,{id:"badge-condition",value:m.condition,onChange:o=>M({...m,condition:o.target.value}),placeholder:"Complete 5 goals","data-testid":"input-badge-condition"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{htmlFor:"badge-conditionUk",children:[s("admin.gamification.condition","Condition")," (UK)"]}),e.jsx(g,{id:"badge-conditionUk",value:m.conditionUk,onChange:o=>M({...m,conditionUk:o.target.value}),placeholder:"ÐиконаÑи 5 ÑÑлей","data-testid":"input-badge-conditionUk"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{htmlFor:"badge-conditionEs",children:[s("admin.gamification.condition","Condition")," (ES)"]}),e.jsx(g,{id:"badge-conditionEs",value:m.conditionEs,onChange:o=>M({...m,conditionEs:o.target.value}),placeholder:"Completar 5 objetivos","data-testid":"input-badge-conditionEs"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{htmlFor:"badge-iconUrl",children:s("admin.gamification.iconUrl","Icon URL")}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(g,{id:"badge-iconUrl",value:m.iconUrl,onChange:o=>M({...m,iconUrl:o.target.value}),placeholder:"https://example.com/badge-icon.png","data-testid":"input-badge-iconUrl"}),m.iconUrl&&e.jsx("div",{className:"h-9 w-9 shrink-0 border rounded flex items-center justify-center",children:e.jsx("img",{src:m.iconUrl,alt:"Preview",className:"h-7 w-7 object-contain"})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s("admin.gamification.iconUrlHelp","Enter a URL to an image for the badge icon")})]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{htmlFor:"badge-category",children:s("admin.gamification.category","Category")}),e.jsxs(Z,{value:m.category,onValueChange:o=>M({...m,category:o}),children:[e.jsx(ee,{"data-testid":"select-badge-category",children:e.jsx(se,{})}),e.jsxs(ae,{children:[e.jsx(l,{value:"academic",children:s("admin.gamification.categoryAcademic","Academic")}),e.jsx(l,{value:"social",children:s("admin.gamification.categorySocial","Social")}),e.jsx(l,{value:"leadership",children:s("admin.gamification.categoryLeadership","Leadership")}),e.jsx(l,{value:"creative",children:s("admin.gamification.categoryCreative","Creative")}),e.jsx(l,{value:"volunteer",children:s("admin.gamification.categoryVolunteer","Volunteer")}),e.jsx(l,{value:"special",children:s("admin.gamification.categorySpecial","Special")})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{htmlFor:"badge-type",children:s("admin.gamification.type","Type")}),e.jsxs(Z,{value:m.badgeType,onValueChange:o=>
1M({...m,badgeType:o}),children:[e.jsx(ee,{"data-testid":"select-badge-type",children:e.jsx(se,{})}),e.jsxs(ae,{children:[e.jsx(l,{value:"activity",children:s("admin.gamification.badgeTypeActivity","Activity")}),e.jsx(l,{value:"achievement",children:s("admin.gamification.badgeTypeAchievement","Achievement")}),e.jsx(l,{value:"streak",children:s("admin.gamification.badgeTypeStreak","Streak")}),e.jsx(l,{value:"special",children:s("admin.gamification.badgeTypeSpecial","Special")})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{htmlFor:"badge-points",children:s("admin.gamification.xpPoints","XP Points")}),e.jsx(g,{id:"badge-points",type:"number",min:0,value:m.points,onChange:o=>M({...m,points:parseInt(o.target.value)||0}),"data-testid":"input-badge-points"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.status","Status")}),e.jsxs("div",{className:"flex items-center gap-2 h-9",children:[e.jsx(Fe,{id:"badge-isActive",checked:m.isActive,onCheckedChange:o=>M({...m,isActive:o}),"data-testid":"switch-badge-isActive"}),e.jsx(i,{htmlFor:"badge-isActive",className:"text-sm font-normal",children:m.isActive?s("admin.active","Active"):s("admin.inactive","Inactive")})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Fe,{id:"badge-requiresVerification",checked:m.requiresVerification,onCheckedChange:o=>M({...m,requiresVerification:o}),"data-testid":"switch-badge-verification"}),e.jsx(i,{htmlFor:"badge-requiresVerification",className:"text-sm font-normal",children:s("admin.gamification.requiresVerification","Requires admin/mentor verification")})]})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:()=>T({isOpen:!1,mode:"create",badge:null}),children:s("common.cancel")}),e.jsxs(c,{onClick:F,disabled:!m.name||D.isPending||_.isPending,"data-testid":"btn-submit-badge",children:[(D.isPending||_.isPending)&&e.jsx(ha,{className:"h-4 w-4 mr-2 animate-spin"}),b.mode==="create"?s("admin.gamification.createBadge","Create Badge"):s("common.save","Save")]})]})]})})]})}function lt(s,q,O="text",p="textUk",re="textEs"){if(!s)return"";switch(q){case"uk":return s[p]||s[O]||"";case"es":return s[re]||s[O]||"";default:return s[O]||""}}const mi={Sparkles:ji,Gamepad2:Mn,Star:Fs,GraduationCap:ms,Rocket:Hn,School:_n};function dr(){const{t:s,i18n:q}=fs(),{toast:O}=Ns(),p=q.language,[re,z]=U.useState(null),[j,C]=U.useState(null),[W,I]=U.useState(!1),[b,T]=U.useState(!1),[m,M]=U.useState(!1),[xe,B]=U.useState(null),[oe,ge]=U.useState(new Set),[we,K]=U.useState(new Set),[R,f]=U.useState({id:"",title:"",titleUk:"",titleEs:"",description:"",descriptionUk:"",descriptionEs:"",icon:"Sparkles",orderIndex:1,isActive:!0}),[ie,h]=U.useState({id:"",sectionId:"",text:"",textUk:"",textEs:"",helpText:"",helpTextUk:"",helpTextEs:"",questionType:"single",minSelections:1,maxSelections:1,orderIndex:1,isRequired:!0}),[w,pe]=U.useState({id:"",questionId:"",text:"",textUk:"",textEs:"",icon:"",orderIndex:1,dimensionWeights:"{}",majorTags:"[]",countryCode:"",budgetMin:null,budgetMax:null}),{data:S,isLoading:v}=le({queryKey:["/api/admin/questionnaire/full"]}),d=Q({mutationFn:async n=>await P("POST","/api/admin/questionnaire/sections",n),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/questionnaire/full"]}),I(!1),O({title:s("admin.sectionCreated","Section created successfully")})},onError:n=>{O({title:s("common.error","Error"),description:n.message,variant:"destructive"})}}),D=Q({mutationFn:async n=>await P("PATCH",`/api/admin/questionnaire/sections/${n.id}`,n),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/questionnaire/full"]}),I(!1),O({title:s("admin.sectionUpdated","Section updated successfully")})},onError:n=>{O({title:s("common.error","Error"),description:n.message,variant:"destructive"})}}),_=Q({mutationFn:async n=>await P("DELETE",`/api/admin/questionnaire/sections/${n}`),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/questionnaire/full"]}),O({title:s("admin.sectionDeleted","Section deleted successfully")})},onError:n=>{O({title:s("common.error","Error"),description:n.message,variant:"destructive"})}}),r=Q({mutationFn:async n=>await P("POST","/api/admin/questionnaire/questions",n),onSuccess:()=>
1{A.invalidateQueries({queryKey:["/api/admin/questionnaire/full"]}),T(!1),O({title:s("admin.questionCreated","Question created successfully")})},onError:n=>{O({title:s("common.error","Error"),description:n.message,variant:"destructive"})}}),x=Q({mutationFn:async n=>await P("PATCH",`/api/admin/questionnaire/questions/${n.id}`,n),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/questionnaire/full"]}),T(!1),O({title:s("admin.questionUpdated","Question updated successfully")})},onError:n=>{O({title:s("common.error","Error"),description:n.message,variant:"destructive"})}}),V=Q({mutationFn:async n=>await P("DELETE",`/api/admin/questionnaire/questions/${n}`),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/questionnaire/full"]}),O({title:s("admin.questionDeleted","Question deleted successfully")})},onError:n=>{O({title:s("common.error","Error"),description:n.message,variant:"destructive"})}}),ue=Q({mutationFn:async n=>{const J={...n,dimensionWeights:JSON.parse(n.dimensionWeights||"{}"),majorTags:JSON.parse(n.majorTags||"[]")};return await P("POST","/api/admin/questionnaire/options",J)},onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/questionnaire/full"]}),M(!1),O({title:s("admin.optionCreated","Option created successfully")})},onError:n=>{O({title:s("common.error","Error"),description:n.message,variant:"destructive"})}}),Pe=Q({mutationFn:async n=>{const J={...n,dimensionWeights:JSON.parse(n.dimensionWeights||"{}"),majorTags:JSON.parse(n.majorTags||"[]")};return await P("PATCH",`/api/admin/questionnaire/options/${n.id}`,J)},onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/questionnaire/full"]}),M(!1),O({title:s("admin.optionUpdated","Option updated successfully")})},onError:n=>{O({title:s("common.error","Error"),description:n.message,variant:"destructive"})}}),Le=Q({mutationFn:async n=>await P("DELETE",`/api/admin/questionnaire/options/${n}`),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/questionnaire/full"]}),O({title:s("admin.optionDeleted","Option deleted successfully")})},onError:n=>{O({title:s("common.error","Error"),description:n.message,variant:"destructive"})}}),F=()=>{f({id:"",title:"",titleUk:"",titleEs:"",description:"",descriptionUk:"",descriptionEs:"",icon:"Sparkles",orderIndex:(S?.length??0)+1,isActive:!0}),z(null),I(!0)},ke=n=>{f({id:n.id,title:n.title,titleUk:n.titleUk||"",titleEs:n.titleEs||"",description:n.description||"",descriptionUk:n.descriptionUk||"",descriptionEs:n.descriptionEs||"",icon:n.icon||"Sparkles",orderIndex:n.orderIndex,isActive:n.isActive??!0}),z(n),I(!0)},rs=n=>{h({id:"",sectionId:n.id,text:"",textUk:"",textEs:"",helpText:"",helpTextUk:"",helpTextEs:"",questionType:"single",minSelections:1,maxSelections:1,orderIndex:(n.questions?.length??0)+1,isRequired:!0}),C(null),T(!0)},as=n=>{h({id:n.id,sectionId:n.sectionId,text:n.text,textUk:n.textUk||"",textEs:n.textEs||"",helpText:n.helpText||"",helpTextUk:n.helpTextUk||"",helpTextEs:n.helpTextEs||"",questionType:n.questionType,minSelections:n.minSelections||1,maxSelections:n.maxSelections||1,orderIndex:n.orderIndex,isRequired:n.isRequired??!0}),C(n),T(!0)},H=n=>{pe({id:"",questionId:n.id,text:"",textUk:"",textEs:"",icon:"",orderIndex:(n.options?.length??0)+1,dimensionWeights:"{}",majorTags:"[]",countryCode:"",budgetMin:null,budgetMax:null}),B(null),M(!0)},o=n=>{pe({id:n.id,questionId:n.questionId,text:n.text,textUk:n.textUk||"",textEs:n.textEs||"",icon:n.icon||"",orderIndex:n.orderIndex,dimensionWeights:JSON.stringify(n.dimensionWeights||{}),majorTags:JSON.stringify(n.majorTags||[]),countryCode:n.countryCode||"",budgetMin:n.budgetMin,budgetMax:n.budgetMax}),B(n),M(!0)},$e=n=>{const J=new Set(oe);J.has(n)?J.delete(n):J.add(n),ge(J)},t=n=>{const J=new Set(we);J.has(n)?J.delete(n):J.add(n),K(J)},L=n=>{const J=mi[n]||Ht;return e.jsx(J,{className:"h-4 w-4"})};return v?e.jsxs("div",{className:"space-y-4",children:[e.jsx(ce,{className:"h-10 w-full"}),e.jsx(ce,{className:"h-10 w-full"}),e.jsx(ce,{className:"h-10 w-full"})]}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:s("admin.questionnaireManagement","Questionnaire Management")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s("admin.questionnaireDesc","Manage pre-registration questionnaire sections, questions, and answer options")})]}),e.jsxs(c,{onClick:F,className:"gap-2","data-testid":"btn-add-section",children:[e.jsx(Ee,{className:"h-4 w-4"}),s("admin.addSection","Add Section")]})]}),e.jsx(Y,{children:e.jsx(X,{className:"p-0",children:e.jsx(zs,{className:"h-[600px]",children:e.jsxs("div",{className:"p-4 space-y-2",children:[S?.map(n=>e.jsxs("div",{className:"border rounded-lg",children:[e.jsxs("div",{className:"flex items-center justify-between p-3 cursor-pointer hover-elevate bg-muted/30",onClick:()=>$e(n.id),"data-testid":`section-header-${n.id}`,children:[e.jsxs("div",{className:"flex items-center gap-3",children:[oe.has(n.id)?e.jsx(ct,{className:"h-4 w-4"}):e.jsx(Mt,{className:"h-4 w-4"}),L(n.icon||"Sparkles"),e.jsxs("div",{children:[e.jsx("span",{className:"font-medium",children:lt(n,p,"title","titleUk","titleEs")}),e.jsxs("span",{className:"ml-2 text-muted-foreground text-sm",children:["(",n.questions?.length||0," ",s("admin.questions","questions"),")"]})]}),e.jsx(N,{variant:n.isActive?"default":"secondary",children:n.isActive?s("common.active","Active"):s("common.inactive","Inactive")})]}),e.jsxs("div",{className:"flex items-center gap-2",onClick:J=>J.stopPropagation(),children:[e.jsx(c,{size:"icon",variant:"ghost",onClick:()=>ke(n),"data-testid":`btn-edit-section-${n.id}`,children:e.jsx(ss,{className:"h-4 w-4"})}),e.jsx(c,{size:"icon",variant:"ghost",onClick:()=>{confirm(s("admin.confirmDeleteSection","Are you sure you want to delete this section?"))&&_.mutate(n.id)},"data-testid":`btn-delete-section-${n.id}`,children:e.jsx(Te,{className:"h-4 w-4"})})]})]}),oe.has(n.id)&&e.jsxs("div",{className:"border-t p-3 space-y-2 bg-background",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("span",{className:"text-sm font-medium",children:s("admin.questions","Questions")}),e.jsxs(c,{size:"sm",variant:"outline",onClick:()=>rs(n),"data-testid":`btn-add-question-${n.id}`,children:[e.jsx(Ee,{className:"h-3 w-3 mr-1"}),s("admin.addQuestion","Add Question")]})]}),n.questions?.map(J=>e.jsxs("div",{className:"border rounded-md ml-4",children:[e.jsxs("div",{className:"flex items-center justify-between p-2 cursor-pointer hover-elevate bg-muted/20",onClick:()=>t(J.id),"data-testid":`question-header-${J.id}`,children:[e.jsxs("div",{className:"flex items-center gap-2",children:[we.has(J.id)?e.jsx(ct,{className:"h-3 w-3"}):e.jsx(Mt,{className:"h-3 w-3"}),J.questionType==="multi"?e.jsx(pi,{className:"h-4 w-4 text-muted-foreground"}):e.jsx($n,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{className:"text-sm",children:lt(J,p,"text","textUk","textEs")}),e.jsx(N,{variant:"outline",className:"text-xs",children:J.questionType})]}),e.jsxs("div",{className:"flex items-center gap-1",onClick:Ce=>Ce.stopPropagation(),children:[e.jsxs("span",{className:"text-xs text-muted-foreground",children:[J.options?.length||0," ",s("admin.options","options")]}),e.jsx(c,{size:"icon",variant:"ghost",className:"h-7 w-7",onClick:()=>as(J),"data-testid":`btn-edit-question-${J.id}`,children:e.jsx(ss,{className:"h-3 w-3"})}),e.jsx(c,{size:"icon",variant:"ghost",className:"h-7 w-7",onClick:()=>{confirm(s("admin.confirmDeleteQuestion","Are you sure you want to delete this question?"))&&V.mutate(J.id)},"data-testid":`btn-delete-question-${J.id}`,children:e.jsx(Te,{className:"h-3 w-3"})})]})]}),we.has(J.id)&&e.jsxs("div",{className:"border-t p-2 space-y-1 bg-background",children:[e.jsxs("div",{className:"flex items-center justify-between mb-1",children:[e.jsx("span",{className:"text-xs font-medium",children:s("admin.answerOptions","Answer Options")}),e.jsxs(c,{size:"sm",variant:"ghost",className:"h-6 text-xs",onClick:()=>H(J),"data-testid":`btn-add-option-${J.id}`,children:[e.jsx(Ee,{className:"h-3 w-3 mr-1"}),s("admin.addOption","Add")]})]}),e.jsxs(Qe,{children:[e.jsx(ze,{children:e.jsxs(ne,{children:[e.jsx(k,{className:"text-xs h-8",children:s("admin.optionText","Option")}),e.jsx(k,{className:"text-xs h-8",children:s("admin.weights","Weights")}),e.jsx(k,{className:"text-xs h-8 w-20",children:s("common.actions","Actions")})]})}),e.jsx(Re,{children:J.options?.map(Ce=>e.jsxs(ne,{children:[e.jsx(y,{className:"text-xs py-1",children:e.jsxs("div",{className:"flex items-center gap-1",children:[Ce.icon&&e.jsx("span",{className:"text-muted-foreground",children:Ce.icon}),lt(Ce,p,"text","textUk","textEs")]})}),e.jsx(y,{className:"text-xs py-1",children:Ce.dimensionWeights&&Object.keys(Ce.dimensionWeights).length>0?e.jsx("div",{className:"flex flex-wrap gap-1",children:Object.entries(Ce.dimensionWeights).map(([he,Xe])=>e.jsxs(N,{variant:"outline",className:"text-xs py-0",children:[he,": ",String(Xe)]},he))}):e.jsx("span",{className:"text-muted-foreground",children:"-"})}),e.jsx(y,{className:"py-1",children:e.jsxs("div",{className:"flex gap-1",children:[e.jsx(c,{size:"icon",variant:"ghost",className:"h-6 w-6",onClick:()=>o(Ce),"data-testid":`btn-edit-option-${Ce.id}`,children:e.jsx(ss,{className:"h-3 w-3"})}),e.jsx(c,{size:"icon",variant:"ghost",className:"h-6 w-6",onClick:()=>{confirm(s("admin.confirmDeleteOption","Are you sure?"))&&Le.mutate(Ce.id)},"data-testid":`btn-delete-option-${Ce.id}`,children:e.jsx(Te,{className:"h-3 w-3"})})]})})]},Ce.id))})]})]})]},J.id))]})]},n.id)),(!S||S.length===0)&&e.jsxs("div",{className:"text-center py-8 text-muted-foreground",children:[e.jsx(Ht,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),e.jsx("p",{children:s("admin.noSections","No questionnaire sections yet")}),e.jsxs(c,{onClick:F,className:"mt-4",variant:"outline",children:[e.jsx(Ee,{className:"h-4 w-4 mr-2"}),s("admin.createFirstSection","Create your first section")]})]})]})})})}),e.jsx(fe,{open:W,onOpenChange:I,children:e.jsxs(ye,{className:"max-w-2xl",children:[e.jsxs(Ne,{children:[e.jsx(be,{children:re?s("admin.editSection","Edit Section"):s("admin.addSection","Add Section")}),e.jsx(Se,{children:s("admin.sectionFormDesc","Configure the questionnaire section details")})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.titleEn","Title (English)")}),e.jsx(g,{value:R.title,onChange:n=>
1f({...R,title:n.target.value}),placeholder:"Section title","data-testid":"input-section-title"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.titleUk","Title (Ukrainian)")}),e.jsx(g,{value:R.titleUk,onChange:n=>f({...R,titleUk:n.target.value}),placeholder:"Ðазва ÑекÑÑÑ","data-testid":"input-section-title-uk"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.titleEs","Title (Spanish)")}),e.jsx(g,{value:R.titleEs,onChange:n=>f({...R,titleEs:n.target.value}),placeholder:"TÃtulo de la sección","data-testid":"input-section-title-es"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.descriptionEn","Description (English)")}),e.jsx(G,{value:R.description,onChange:n=>f({...R,description:n.target.value}),placeholder:"Section description","data-testid":"input-section-desc"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.descriptionUk","Description (Ukrainian)")}),e.jsx(G,{value:R.descriptionUk,onChange:n=>f({...R,descriptionUk:n.target.value}),placeholder:"ÐÐ¿Ð¸Ñ ÑекÑÑÑ","data-testid":"input-section-desc-uk"})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.icon","Icon")}),e.jsxs(Z,{value:R.icon,onValueChange:n=>
1f({...R,icon:n}),children:[e.jsx(ee,{"data-testid":"select-section-icon",children:e.jsx(se,{})}),e.jsx(ae,{children:Object.keys(mi).map(n=>e.jsx(l,{value:n,children:e.jsxs("div",{className:"flex items-center gap-2",children:[L(n),n]})},n))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.order","Order")}),e.jsx(g,{type:"number",value:R.orderIndex,onChange:n=>f({...R,orderIndex:parseInt(n.target.value)||1}),"data-testid":"input-section-order"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.active","Active")}),e.jsx("div",{className:"flex items-center h-10",children:e.jsx(Fe,{checked:R.isActive,onCheckedChange:n=>f({...R,isActive:n}),"data-testid":"switch-section-active"})})]})]})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:()=>I(!1),children:s("common.cancel","Cancel")}),e.jsxs(c,{onClick:()=>{re?D.mutate(R):d.mutate(R)},disabled:d.isPending||D.isPending,"data-testid":"btn-save-section",children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),s("common.save","Save")]})]})]})}),e.jsx(fe,{open:b,onOpenChange:T,children:e.jsxs(ye,{className:"max-w-2xl",children:[e.jsx(Ne,{children:e.jsx(be,{children:j?s("admin.editQuestion","Edit Question"):s("admin.addQuestion","Add Question")})}),e.jsxs("div",{className:"grid gap-4 py-4 max-h-[60vh] overflow-y-auto",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.questionTextEn","Question (English)")}),e.jsx(G,{value:ie.text,onChange:n=>h({...ie,text:n.target.value}),placeholder:"Question text","data-testid":"input-question-text"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.questionTextUk","Question (Ukrainian)")}),e.jsx(G,{value:ie.textUk,onChange:n=>h({...ie,textUk:n.target.value}),placeholder:"ТекÑÑ Ð¿Ð¸ÑаннÑ","data-testid":"input-question-text-uk"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.questionTextEs","Question (Spanish)")}),e.jsx(G,{value:ie.textEs,onChange:n=>h({...ie,textEs:n.target.value}),placeholder:"Texto de la pregunta","data-testid":"input-question-text-es"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.helpTextEn","Help Text (English)")}),e.jsx(g,{value:ie.helpText,onChange:n=>h({...ie,helpText:n.target.value}),placeholder:"Optional help text","data-testid":"input-question-help"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.helpTextUk","Help Text (Ukrainian)")}),e.jsx(g,{value:ie.helpTextUk,onChange:n=>h({...ie,helpTextUk:n.target.value}),placeholder:"ÐÑдказка","data-testid":"input-question-help-uk"})]})]}),e.jsxs("div",{className:"grid grid-cols-4 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.questionType","Type")}),e.jsxs(Z,{value:ie.questionType,onValueChange:n=>h({...ie,questionType:n}),children:[e.jsx(ee,{"data-testid":"select-question-type",children:e.jsx(se,{})}),e.jsxs(ae,{children:[e.jsx(l,{value:"single",children:s("admin.singleChoice","Single Choice")}),e.jsx(l,{value:"multi",children:s("admin.multiChoice","Multiple Choice")}),e.jsx(l,{value:"scale",children:s("admin.scale","Scale")}),e.jsx(l,{value:"text",children:s("admin.textInput","Text Input")})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.minSelections","Min Selections")}),e.jsx(g,{type:"number",value:ie.minSelections,onChange:n=>h({...ie,minSelections:parseInt(n.target.value)||1}),"data-testid":"input-question-min"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.maxSelections","Max Selections")}),e.jsx(g,{type:"number",value:ie.maxSelections,onChange:n=>h({...ie,maxSelections:parseInt(n.target.value)||1}),"data-testid":"input-question-max"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.required","Required")}),e.jsx("div",{className:"flex items-center h-10",children:e.jsx(Fe,{checked:ie.isRequired,onCheckedChange:n=>h({...ie,isRequired:n}),"data-testid":"switch-question-required"})})]})]})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:()=>T(!1),children:s("common.cancel","Cancel")}),e.jsxs(c,{onClick:()=>{j?x.mutate(ie):r.mutate(ie)},disabled:r.isPending||x.isPending,"data-testid":"btn-save-question",children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),s("common.save","Save")]})]})]})}),e.jsx(fe,{open:m,onOpenChange:M,children:e.jsxs(ye,{className:"max-w-2xl",children:[e.jsx(Ne,{children:e.jsx(be,{children:xe?s("admin.editOption","Edit Option"):s("admin.addOption","Add Option")})}),e.jsxs("div",{className:"grid gap-4 py-4 max-h-[60vh] overflow-y-auto",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.optionTextEn","Option (English)")}),e.jsx(g,{value:w.text,onChange:n=>pe({...w,text:n.target.value}),placeholder:"Option text","data-testid":"input-option-text"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.optionTextUk","Option (Ukrainian)")}),e.jsx(g,{value:w.textUk,onChange:n=>pe({...w,textUk:n.target.value}),placeholder:"ТекÑÑ Ð¾Ð¿ÑÑÑ","data-testid":"input-option-text-uk"})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.optionTextEs","Option (Spanish)")}),e.jsx(g,{value:w.textEs,onChange:n=>pe({...w,textEs:n.target.value}
1),placeholder:"Texto de la opción","data-testid":"input-option-text-es"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.icon","Icon Name")}),e.jsx(g,{value:w.icon,onChange:n=>pe({...w,icon:n.target.value}),placeholder:"e.g., Palette, Calculator","data-testid":"input-option-icon"})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.dimensionWeights","Dimension Weights (JSON)")}),e.jsx(G,{value:w.dimensionWeights,onChange:n=>pe({...w,dimensionWeights:n.target.value}),placeholder:'{"creativity": 5, "logic": 3}',"data-testid":"input-option-weights"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.majorTags","Major Tags (JSON Array)")}),e.jsx(G,{value:w.majorTags,onChange:n=>pe({...w,majorTags:n.target.value}),placeholder:'["design", "arts", "media"]',"data-testid":"input-option-tags"})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.countryCode","Country Code")}),e.jsx(g,{value:w.countryCode,onChange:n=>pe({...w,countryCode:n.target.value}),placeholder:"e.g., UA, UK","data-testid":"input-option-country"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.budgetMin","Budget Min")}),e.jsx(g,{type:"number",value:w.budgetMin??"",onChange:n=>pe({...w,budgetMin:n.target.value?parseInt(n.target.value):null}),placeholder:"0","data-testid":"input-option-budget-min"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.budgetMax","Budget Max")}),e.jsx(g,{type:"number",value:w.budgetMax??"",onChange:n=>pe({...w,budgetMax:n.target.value?parseInt(n.target.value):null}),placeholder:"50000","data-testid":"input-option-budget-max"})]})]})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:()=>M(!1),children:s("common.cancel","Cancel")}),e.jsxs(c,{onClick:()=>{xe?Pe.mutate(w):ue.mutate(w)},disabled:ue.isPending||Pe.isPending,"data-testid":"btn-save-option",children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),s("common.save","Save")]})]})]})})]})}const lr=[{value:"academics",labelKey:"admission.categories.academics"},{value:"tests",labelKey:"admission.categories.tests"},{value:"extracurriculars",labelKey:"admission.categories.extracurriculars"},{value:"essays",labelKey:"admission.categories.essays"},{value:"recommendations",labelKey:"admission.categories.recommendations"},{value:"language",labelKey:"admission.categories.language"},{value:"documents",labelKey:"admission.categories.documents"}],ui=[{value:"number",icon:Gn},{value:"slider",icon:Da},{value:"checkbox",icon:Wn},{value:"select",icon:pi},{value:"text",icon:cs}],cr={academics:"bg-blue-500/10 text-blue-600 dark:text-blue-400",tests:"bg-red-500/10 text-red-600 dark:text-red-400",extracurriculars:"bg-green-500/10 text-green-600 dark:text-green-400",essays:"bg-purple-500/10 text-purple-600 dark:text-purple-400",recommendations:"bg-amber-500/10 text-amber-600 dark:text-amber-400",language:"bg-cyan-500/10 text-cyan-600 dark:text-cyan-400",documents:"bg-orange-500/10 text-orange-600 dark:text-orange-400"},xi={countryCode:"",fieldKey:"",fieldType:"number",category:"academics",label:"",labelUk:"",labelEs:"",description:"",descriptionUk:"",descriptionEs:"",improvementTip:"",improvementTipUk:"",improvementTipEs:"",minValue:"",maxValue:"",step:"1",defaultValue:"",weight:10,displayOrder:0,isRequired:!1,isActive:!0};function or(){const{t:s,i18n:q}=fs(),{toast:O}=Ns(),p=q.language,[re,z]=U.useState(""),[j,C]=U.useState("all"),[W,I]=U.useState(!1),[b,T]=U.useState(null),[m,M]=U.useState(xi),[xe,B]=U.useState(!1),[oe,ge]=U.useState(null),{data:we,isLoading:K}=le({queryKey:["/api/admin/admission-fields"]}),{data:R}=le({queryKey:["/api/admin/countries"]}),f=Q({mutationFn:async x=>P("POST","/api/admin/admission-fields",x),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/admission-fields"]}),I(!1),w(),O({title:s("admin.fieldCreated","Field created successfully")})},onError:()=>{O({title:s("admin.fieldCreateFailed","Failed to create field"),variant:"destructive"})}}),ie=Q({mutationFn:async({id:x,data:V})=>P("PATCH",`/api/admin/admission-fields/${x}`,V),onSuccess:()=>
1{A.invalidateQueries({queryKey:["/api/admin/admission-fields"]}),I(!1),w(),O({title:s("admin.fieldUpdated","Field updated successfully")})},onError:()=>{O({title:s("admin.fieldUpdateFailed","Failed to update field"),variant:"destructive"})}}),h=Q({mutationFn:async x=>P("DELETE",`/api/admin/admission-fields/${x}`),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/admission-fields"]}),B(!1),ge(null),O({title:s("admin.fieldDeleted","Field deleted successfully")})},onError:()=>{O({title:s("admin.fieldDeleteFailed","Failed to delete field"),variant:"destructive"})}}),w=()=>{M(xi),T(null)},pe=()=>{w(),I(!0)},S=x=>{T(x),M({countryCode:x.countryCode,fieldKey:x.fieldKey,fieldType:x.fieldType,category:x.category,label:x.label,labelUk:x.labelUk||"",labelEs:x.labelEs||"",description:x.description||"",descriptionUk:x.descriptionUk||"",descriptionEs:x.descriptionEs||"",improvementTip:x.improvementTip||"",improvementTipUk:x.improvementTipUk||"",improvementTipEs:x.improvementTipEs||"",minValue:x.minValue||"",maxValue:x.maxValue||"",step:x.step||"1",defaultValue:x.defaultValue||"",weight:x.weight||10,displayOrder:x.displayOrder||0,isRequired:x.isRequired||!1,isActive:x.isActive!==!1}),I(!0)},v=()=>{const x={...m,minValue:m.minValue||null,maxValue:m.maxValue||null,labelUk:m.labelUk||null,labelEs:m.labelEs||null,description:m.description||null,descriptionUk:m.descriptionUk||null,descriptionEs:m.descriptionEs||null,improvementTip:m.improvementTip||null,improvementTipUk:m.improvementTipUk||null,improvementTipEs:m.improvementTipEs||null};b?ie.mutate({id:b.id,data:x}):f.mutate(x)},d=x=>p.startsWith("uk")&&x.labelUk?x.labelUk:p.startsWith("es")&&x.labelEs?x.labelEs:x.label,D=x=>{const V=R?.find(ue=>ue.code===x);return V?p.startsWith("uk")&&V.nameUk?V.nameUk:p.startsWith("es")&&V.nameEs?V.nameEs:V.name:x},_=we?.filter(x=>{const V=x.label.toLowerCase().includes(re.toLowerCase())||x.fieldKey.toLowerCase().includes(re.toLowerCase())||x.labelUk?.toLowerCase().includes(re.toLowerCase())||x.labelEs?.toLowerCase().includes(re.toLowerCase()),ue=j==="all"||x.countryCode===j;return V&&ue})||[],r=_.reduce((x,V)=>(x[V.countryCode]||(x[V.countryCode]=[]),x[V.countryCode].push(V),x),{});return K?e.jsxs("div",{className:"space-y-4",children:[e.jsx(ce,{className:"h-10 w-full"}),e.jsx(ce,{className:"h-64 w-full"})]}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs(Y,{children:[e.jsx(Be,{children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs(He,{className:"flex items-center gap-2",children:[e.jsx(Da,{className:"h-5 w-5"}),s("admin.admissionFields","Admission Calculator Fields")]}),e.jsx(Ye,{children:s("admin.admissionFieldsDescription","Manage country-specific fields for admission chances calculation")})]}),e.jsxs(c,{onClick:pe,"data-testid":"button-create-field",children:[e.jsx(Ee,{className:"h-4 w-4 mr-2"}),s("admin.addField","Add Field")]})]})}),e.jsxs(X,{children:[e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 mb-6",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(Cs,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(g,{placeholder:s("admin.searchFields","Search fields..."),value:re,onChange:x=>z(x.target.value),className:"pl-10","data-testid":"input-search-fields"})]}),e.jsxs(Z,{value:j,onValueChange:C,children:[e.jsxs(ee,{className:"w-full sm:w-[200px]","data-testid":"select-country-filter",children:[e.jsx(Qs,{className:"h-4 w-4 mr-2"}),e.jsx(se,{placeholder:s("admin.allCountries","All Countries")})]}),e.jsxs(ae,{children:[e.jsx(l,{value:"all",children:s("admin.allCountries","All Countries")}),R&&[...R].filter(x=>x.isActive).sort((x,V)=>D(x.code).localeCompare(D(V.code),q.language)).map(x=>e.jsx(l,{value:x.code,children:D(x.code)},x.code))]})]})]}),e.jsxs("div",{className:"text-sm text-muted-foreground mb-4",children:[s("admin.totalFields","Total fields"),": ",_.length]}),e.jsxs(zs,{className:"h-[500px]",children:[Object.entries(r).map(([x,V])=>e.jsxs("div",{className:"mb-6",children:[e.jsxs("h3",{className:"text-lg font-semibold mb-3 flex items-center gap-2",children:[e.jsx(Qs,{className:"h-4 w-4"}),D(x),e.jsx(N,{variant:"outline",children:V.length})]}),e.jsxs(Qe,{children:[e.jsx(ze,{children:e.jsxs(ne,{children:[e.jsx(k,{children:s("admin.fieldLabel","Label")}),e.jsx(k,{children:s("admin.fieldKey","Key")}),e.jsx(k,{children:s("admin.fieldType","Type")}),e.jsx(k,{children:s("admin.category","Category")}),e.jsx(k,{children:s("admission.weight","Weight")}),e.jsx(k,{children:s("common.status","Status")}),e.jsx(k,{className:"text-right",children:s("common.actions","Actions")})]})}),e.jsx(Re,{children:V.sort((ue,Pe)=>(ue.displayOrder||0)-(Pe.displayOrder||0)).map(ue=>{const Pe=ui.find(Le=>Le.value===ue.fieldType)?.icon||cs;return e.jsxs(ne,{"data-testid":`row-field-${ue.id}`,children:[e.jsx(y,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-medium",children:d(ue)}),ue.description&&e.jsx(ut,{className:"h-3 w-3 text-muted-foreground"})]})}),e.jsx(y,{children:e.jsx("code",{className:"text-xs bg-muted px-1 py-0.5 rounded",children:ue.fieldKey})}),e.jsx(y,{children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Pe,{className:"h-3 w-3"}),e.jsx("span",{className:"text-sm",children:s(`admission.fieldTypes.${ue.fieldType}`,ue.fieldType)})]})}),e.jsx(y,{children:e.jsx(N,{variant:"outline",className:cr[ue.category]||"",children:s(`admission.categories.${ue.category}`,ue.category)})}),e.jsxs(y,{children:[ue.weight,"%"]}),e.jsx(y,{children:e.jsx(N,{variant:ue.isActive?"default":"secondary",children:ue.isActive?s("common.active","Active"):s("common.inactive","Inactive")})}),e.jsx(y,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-1",children:[e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>S(ue),"data-testid":`button-edit-field-${ue.id}`,children:e.jsx(ss,{className:"h-4 w-4"})}),e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>{ge(ue),B(!0)},"data-testid":`button-delete-field-${ue.id}`,children:e.jsx(Te,{className:"h-4 w-4 text-destructive"})})]})})]},ue.id)})})]})]},x)),_.length===0&&e.jsx("div",{className:"text-center py-12 text-muted-foreground",children:s("admin.noFieldsFound","No fields foun
1d")})]})]})]}),e.jsx(fe,{open:W,onOpenChange:I,children:e.jsxs(ye,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(Ne,{children:[e.jsx(be,{children:b?s("admin.editField","Edit Field"):s("admin.createField","Create Field")}),e.jsx(Se,{children:s("admin.fieldDialogDescription","Configure the admission calculator field")})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{children:[s("admin.country","Country")," *"]}),e.jsxs(Z,{value:m.countryCode,onValueChange:x=>M({...m,countryCode:x}),children:[e.jsx(ee,{"data-testid":"select-country",children:e.jsx(se,{placeholder:s("admin.selectCountry","Select country")})}),e.jsx(ae,{children:R&&[...R].filter(x=>x.isActive).sort((x,V)=>D(x.code).localeCompare(D(V.code),q.language)).map(x=>e.jsx(l,{value:x.code,children:D(x.code)},x.code))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{children:[s("admin.fieldKey","Field Key")," *"]}),e.jsx(g,{value:m.fieldKey,onChange:x=>M({...m,fieldKey:x.target.value.toLowerCase().replace(/\s/g,"_")}),placeholder:"e.g., gpa, sat_score","data-testid":"input-field-key"})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{children:[s("admin.fieldType","Field Type")," *"]}),e.jsxs(Z,{value:m.fieldType,onValueChange:x=>M({...m,fieldType:x}),children:[e.jsx(ee,{"data-testid":"select-field-type",children:e.jsx(se,{})}),e.jsx(ae,{children:ui.map(x=>e.jsx(l,{value:x.value,children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(x.icon,{className:"h-4 w-4"}),s(`admission.fieldTypes.${x.value}`,x.value)]})},x.value))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{children:[s("admin.category","Category")," *"]}),e.jsxs(Z,{value:m.category,onValueChange:x=>M({...m,category:x}),children:[e.jsx(ee,{"data-testid":"select-category",children:e.jsx(se,{})}),e.jsx(ae,{children:lr.map(x=>e.jsx(l,{value:x.value,children:s(x.labelKey,x.value)},x.value))})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{children:[s("admin.labelEn","Label (EN)")," *"]}),e.jsx(g,{value:m.label,onChange:x=>M({...m,label:x.target.value}),placeholder:"GPA Score","data-testid":"input-label-en"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.labelUk","Label (UA)")}),e.jsx(g,{value:m.labelUk,onChange:x=>M({...m,labelUk:x.target.value}
1),placeholder:"СеÑеднÑй бал","data-testid":"input-label-uk"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.labelEs","Label (ES)")}),e.jsx(g,{value:m.labelEs,onChange:x=>M({...m,labelEs:x.target.value}),placeholder:"Promedio","data-testid":"input-label-es"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.descriptionEn","Description (EN)")}),e.jsx(G,{value:m.description,onChange:x=>M({...m,description:x.target.value}),placeholder:"Enter a detailed description of this field...",rows:3,"data-testid":"textarea-description-en"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.descriptionUk","Description (UA)")}),e.jsx(G,{value:m.descriptionUk,onChange:x=>M({...m,descriptionUk:x.target.value}),placeholder:"ÐведÑÑÑ Ð´ÐµÑалÑний Ð¾Ð¿Ð¸Ñ ÑÑого полÑ...",rows:3,"data-testid":"textarea-description-uk"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.descriptionEs","Description (ES)")}),e.jsx(G,{value:m.descriptionEs,onChange:x=>M({...m,descriptionEs:x.target.value}),placeholder:"Ingrese una descripción detallada...",rows:3,"data-testid":"textarea-description-es"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{className:"flex items-center gap-2",children:[e.jsx(ut,{className:"h-4 w-4 text-muted-foreground"}),s("admin.improvementTipEn","Improvement Tip (EN)")]}),e.jsx(G,{value:m.improvementTip,onChange:x=>M({...m,improvementTip:x.target.value}),placeholder:"Tips for improving this field in English...",rows:3,"data-testid":"textarea-improvement-tip-en"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s("admin.improvementTipHelp","This tip is shown when recommending to improve this field")})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.improvementTipUk","Improvement Tip (UA)")}),e.jsx(G,{value:m.improvementTipUk,onChange:x=>M({...m,improvementTipUk:x.target.value}),placeholder:"ÐоÑади Ñк покÑаÑиÑи Ñей показник...",rows:3,"data-testid":"textarea-improvement-tip-uk"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.improvementTipEs","Improvement Tip (ES)")}),e.jsx(G,{value:m.improvementTipEs,onChange:x=>M({...m,improvementTipEs:x.target.value}),placeholder:"Consejos para mejorar este campo...",rows:3,"data-testid":"textarea-improvement-tip-es"})]})]}),(m.fieldType==="number"||m.fieldType==="slider")&&e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admission.min","Min")}),e.jsx(g,{type:"number",value:m.minValue,onChange:x=>M({...m,minValue:x.target.value}),placeholder:"0","data-testid":"input-min-value"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admission.max","Max")}),e.jsx(g,{type:"number",value:m.maxValue,onChange:x=>M({...m,maxValue:x.target.value}),placeholder:"100","data-testid":"input-max-value"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.step","Step")}),e.jsx(g,{type:"number",value:m.step,onChange:x=>M({...m,step:x.target.value}),placeholder:"1","data-testid":"input-step"})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{children:[s("admission.weight","Weight")," (%)"]}),e.jsx(g,{type:"number",min:"0",max:"100",value:m.weight,onChange:x=>M({...m,weight:parseInt(x.target.value)||0}),"data-testid":"input-weight"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.displayOrder","Display Order")}),e.jsx(g,{type:"number",value:m.displayOrder,onChange:x=>M({...m,displayOrder:parseInt(x.target.value)||0}),"data-testid":"input-display-order"})]})]}),e.jsxs("div",{className:"flex items-center gap-6",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Fe,{checked:m.isRequired,onCheckedChange:x=>M({...m,isRequired:x}),"data-testid":"switch-required"}),e.jsx(i,{children:s("admission.required","Required")})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Fe,{checked:m.isActive,onCheckedChange:x=>M({...m,isActive:x}),"data-testid":"switch-active"}),e.jsx(i,{children:s("common.active","Active")}
1)]})]})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:()=>I(!1),children:s("common.cancel","Cancel")}),e.jsx(c,{onClick:v,disabled:!m.countryCode||!m.fieldKey||!m.label||f.isPending||ie.isPending,"data-testid":"button-save-field",children:b?s("common.save","Save"):s("common.create","Create")})]})]})}),e.jsx(fe,{open:xe,onOpenChange:B,children:e.jsxs(ye,{children:[e.jsxs(Ne,{children:[e.jsx(be,{children:s("admin.confirmDelete","Confirm Delete")}),e.jsx(Se,{children:s("admin.deleteFieldConfirm","Are you sure you want to delete this field? This action cannot be undone.")})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:()=>B(!1),children:s("common.cancel","Cancel")}),e.jsx(c,{variant:"destructive",onClick:()=>oe&&h.mutate(oe.id),disabled:h.isPending,"data-testid":"button-confirm-delete",children:s("common.delete","Delete")})]})]})})]})}const hi={pending:"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400",accepted:"bg-green-500/10 text-green-600 dark:text-green-400",rejected:"bg-red-500/10 text-red-600 dark:text-red-400",cancelled:"bg-gray-500/10 text-gray-600 dark:text-gray-400",completed:"bg-blue-500/10 text-blue-600 dark:text-blue-400"};function mr(){const{t:s,i18n:q}=fs(),{toast:O}=Ns(),[p,re]=U.useState(""),[z,j]=U.useState("all"),[C,W]=U.useState(null),[I,b]=U.useState(!1),[T,m]=U.useState(!1),[M,xe]=U.useState(null),{data:B,isLoading:oe,refetch:ge}=le({queryKey:["/api/admin/consultations"]}),we=Q({mutationFn:w=>P("DELETE",`/api/admin/consultations/${w}`),onSuccess:()=>{O({title:s("common.success"),description:s("consultations.deleted")}
1),A.invalidateQueries({queryKey:["/api/admin/consultations"]}),m(!1),xe(null)},onError:()=>{O({title:s("common.error"),description:s("consultations.deleteError"),variant:"destructive"})}}),K=B?.filter(w=>{const pe=w.topic?.toLowerCase().includes(p.toLowerCase())||w.message?.toLowerCase().includes(p.toLowerCase())||w.student?.firstName?.toLowerCase().includes(p.toLowerCase())||w.student?.lastName?.toLowerCase().includes(p.toLowerCase())||w.mentor?.user.firstName?.toLowerCase().includes(p.toLowerCase())||w.mentor?.user.lastName?.toLowerCase().includes(p.toLowerCase()),S=z==="all"||w.status===z;return pe&&S})||[],R={total:B?.length||0,pending:B?.filter(w=>w.status==="pending").length||0,accepted:B?.filter(w=>w.status==="accepted").length||0,completed:B?.filter(w=>w.status==="completed").length||0,rejected:B?.filter(w=>w.status==="rejected"||w.status==="cancelled").length||0},f=w=>{W(w),b(!0)},ie=w=>{xe(w),m(!0)},h=()=>{M&&we.mutate(M)};return oe?e.jsxs("div",{className:"space-y-4",children:[e.jsx(ce,{className:"h-32 w-full"}),e.jsx(ce,{className:"h-64 w-full"})]}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:s("admin.consultations","Consultations")}),e.jsx("p",{className:"text-muted-foreground",children:s("consultations.adminDescription","Manage and monitor all consultation requests")})]}),e.jsxs(c,{variant:"outline",size:"sm",onClick:()=>ge(),"data-testid":"button-refresh-consultations",children:[e.jsx(Gs,{className:"h-4 w-4 mr-2"}),s("common.refresh","Refresh")]})]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-4",children:[e.jsx(Y,{children:e.jsx(X,{className:"p-4",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-full bg-primary/10",children:e.jsx(Ts,{className:"h-5 w-5 text-primary"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-2xl font-bold",children:R.total}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s("consultations.totalRequests","Total Requests")})]})]})})}),e.jsx(Y,{children:e.jsx(X,{className:"p-4",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-full bg-yellow-500/10",children:e.jsx(pt,{className:"h-5 w-5 text-yellow-500"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-2xl font-bold",children:R.pending}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s("mentors.requestStatuses.pending","Pending")})]})]})})}),e.jsx(Y,{children:e.jsx(X,{className:"p-4",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-full bg-green-500/10",children:e.jsx(Es,{className:"h-5 w-5 text-green-500"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-2xl font-bold",children:R.accepted}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s("mentors.requestStatuses.accepted","Accepted")})]})]})})}),e.jsx(Y,{children:e.jsx(X,{className:"p-4",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-full bg-blue-500/10",children:e.jsx(Es,{className:"h-5 w-5 text-blue-500"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-2xl font-bold",children:R.completed}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s("mentors.requestStatuses.completed","Completed")})]})]})})})]}),e.jsxs(Y,{children:[e.jsx(Be,{className:"pb-3",children:e.jsxs("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("div",{children:[e.jsx(He,{children:s("consultations.allRequests","All Requests")}
1),e.jsx(Ye,{children:s("consultations.requestsDescription","View and manage consultation requests from students")})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center",children:[e.jsxs("div",{className:"relative",children:[e.jsx(Cs,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(g,{placeholder:s("admin.search","Search..."),value:p,onChange:w=>re(w.target.value),className:"pl-9 w-full sm:w-64","data-testid":"input-consultations-search"})]}),e.jsxs(Z,{value:z,onValueChange:j,children:[e.jsxs(ee,{className:"w-full sm:w-40","data-testid":"select-status-filter",children:[e.jsx(Jn,{className:"h-4 w-4 mr-2"}),e.jsx(se,{})]}),e.jsxs(ae,{children:[e.jsx(l,{value:"all",children:s("common.all","All")}),e.jsx(l,{value:"pending",children:s("mentors.requestStatuses.pending","Pending")}),e.jsx(l,{value:"accepted",children:s("mentors.requestStatuses.accepted","Accepted")}),e.jsx(l,{value:"completed",children:s("mentors.requestStatuses.completed","Completed")}),e.jsx(l,{value:"rejected",children:s("mentors.requestStatuses.rejected","Rejected")}),e.jsx(l,{value:"cancelled",children:s("mentors.requestStatuses.cancelled","Cancelled")})]})]})]})]})}),e.jsx(X,{children:e.jsx(zs,{className:"h-[500px]",children:e.jsxs(Qe,{children:[e.jsx(ze,{children:e.jsxs(ne,{children:[e.jsx(k,{children:s("consultations.topic","Topic")}),e.jsx(k,{children:s("consultations.student","Student")}),e.jsx(k,{children:s("consultations.mentor","Mentor")}),e.jsx(k,{children:s("consultations.status","Status")}),e.jsx(k,{children:s("consultations.contactMethod","Contact")}),e.jsx(k,{children:s("common.date","Date")}),e.jsx(k,{className:"text-right",children:s("common.actions","Actions")})]})}),e.jsx(Re,{children:K.length===0?e.jsx(ne,{children:e.jsx(y,{colSpan:7,className:"text-center py-8 text-muted-foreground",children:s("consultations.noConsultations","No consultations found")})}):K.map(w=>e.jsxs(ne,{"data-testid":`row-consultation-${w.id}`,children:[e.jsx(y,{className:"font-medium max-w-48 truncate",children:w.topic}),e.jsx(y,{children:w.student?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(js,{className:"h-6 w-6",children:[e.jsx(gs,{src:w.student.profileImageUrl||""}),e.jsxs(vs,{className:"text-xs",children:[w.student.firstName?.charAt(0),w.student.lastName?.charAt(0)]})]}),e.jsxs("span",{className:"text-sm",children:[w.student.firstName," ",w.student.lastName]})]}):e.jsx("span",{className:"text-muted-foreground",children:"-"})}),e.jsx(y,{children:w.mentor?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(js,{className:"h-6 w-6",children:[e.jsx(gs,{src:w.mentor.user.profileImageUrl||""}),e.jsxs(vs,{className:"text-xs",children:[w.mentor.user.firstName?.charAt(0),w.mentor.user.lastName?.charAt(0)]})]}),e.jsxs("span",{className:"text-sm",children:[w.mentor.user.firstName," ",w.mentor.user.lastName]})]}):e.jsx("span",{className:"text-muted-foreground",children:"-"})}),e.jsx(y,{children:e.jsx(N,{variant:"outline",className:hi[w.status||"pending"],children:s(`mentors.requestStatuses.${w.status||"pending"}`)})}),e.jsx(y,{children:w.contactMethod?e.jsx(N,{variant:"secondary",className:"gap-1",children:s(`consultations.contactMethods.${w.contactMethod}`)}):e.jsx("span",{className:"text-muted-foreground",children:"-"})}),e.jsx(y,{className:"text-sm text-muted-foreground",children:w.createdAt?new Date(w.createdAt).toLocaleDateString():"-"}),e.jsx(y,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>f(w),"data-testid":`button-view-${w.id}`,children:e.jsx(Xs,{className:"h-4 w-4"})}),e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>ie(w.id),"data-testid":`button-delete-${w.id}`,children:e.jsx(Te,{className:"h-4 w-4"})})]})})]},w.id))})]})})})]}),e.jsx(fe,{open:I,onOpenChange:b,children:e.jsxs(ye,{className:"max-w-lg",children:[e.jsxs(Ne,{children:[e.jsx(be,{children:s("consultations.details","Consultation Details")}),e.jsx(Se,{children:C?.topic})]}),C&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:s("consultations.status","Status")}),e.jsx(N,{variant:"outline",className:hi[C.status||"pending"],children:s(`mentors.requestStatuses.${C.status||"pending"}`)})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:s("consultations.contactMethod","Contact Method")}),C.contactMethod?e.jsxs("p",{className:"font-medium",children:[s(`consultations.contactMethods.${C.contactMethod}`),": ",C.contactInfo]}):e.jsx("p",{className:"text-muted-foreground",children:"-"})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:s("consultations.student","Student")}),C.student?e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs(js,{className:"h-8 w-8",children:[e.jsx(gs,{src:C.student.profileImageUrl||""}),e.jsxs(vs,{children:[C.student.firstName?.charAt(0),C.student.lastName?.charAt(0)]})]}),e.jsxs("div",{children:[e.jsxs("p",{className:"font-medium",children:[C.student.firstName," ",C.student.lastName]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:C.student.email})]})]}):e.jsx("p",{className:"text-muted-foreground",children:"-"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:s("consultations.mentor","Mentor")}),C.mentor?e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs(js,{className:"h-8 w-8",children:[e.jsx(gs,{src:C.mentor.user.profileImageUrl||""}),e.jsxs(vs,{children:[C.mentor.user.firstName?.charAt(0),C.mentor.user.lastName?.charAt(0)]})]}),e.jsxs("div",{children:[e.jsxs("p",{className:"font-medium",children:[C.mentor.user.firstName," ",C.mentor.user.lastName]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:C.mentor.user.email})]})]}):e.jsx("p",{className:"text-muted-foreground",children:"-"})]}),C.message&&e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:s("mentors.message","Message")}),e.jsx("p",{className:"p-3 bg-muted rounded-lg text-sm",children:C.message})]}),C.responseMessage&&e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:s("consultations.responseMessage","Response")}),e.jsx("p",{className:"p-3 bg-muted rounded-lg text-sm",children:C.responseMessage})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4 text-sm",children:[C.preferredDate&&e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-muted-foreground",children:s("mentors.preferredDate","Preferred Date")}),e.jsxs("p",{className:"flex items-center gap-1",children:[e.jsx(Fa,{className:"h-4 w-4"}),new Date(C.preferredDate).toLocaleDateString()]})]}),C.scheduledAt&&e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-muted-foreground",children:s("consultations.scheduledAt","Sc
1heduled At")}),e.jsxs("p",{className:"flex items-center gap-1 text-green-600 dark:text-green-400",children:[e.jsx(Es,{className:"h-4 w-4"}),new Date(C.scheduledAt).toLocaleString()]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-muted-foreground",children:s("common.createdAt","Created")}),e.jsx("p",{children:C.createdAt?new Date(C.createdAt).toLocaleString():"-"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-muted-foreground",children:s("common.updatedAt","Updated")}),e.jsx("p",{children:C.updatedAt?new Date(C.updatedAt).toLocaleString():"-"})]})]})]})]})}),e.jsx(fe,{open:T,onOpenChange:m,children:e.jsxs(ye,{children:[e.jsxs(Ne,{children:[e.jsx(be,{children:s("consultations.deleteTitle","Delete Consultation")}),e.jsx(Se,{children:s("consultations.deleteConfirm","Are you sure you want to delete this consultation request? This action cannot be undone.")})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:()=>m(!1),children:s("common.cancel","Cancel")}),e.jsx(c,{variant:"destructive",onClick:h,disabled:we.isPending,"data-testid":"button-confirm-delete",children:we.isPending?s("common.deleting","Deleting..."):s("common.delete","Delete")})]})]})})]})}function ur(){const{t:s,i18n:q}=fs(),{toast:O}=Ns(),[p,re]=U.useState("students"),[z,j]=U.useState({}),[C,W]=U.useState(!1),[I,b]=U.useState({isOpen:!1,student:null,detailedScore:null}),[T,m]=U.useState(""),[M,xe]=U.useState(0),[B,oe]=U.useState(1),[ge,we]=U.useState({isOpen:!1,studentId:null,studentName:""}),[K,R]=U.useState(new Set),f=t=>s(`admin.talent.${t}`),ie=t=>t>=90?f("proficiencyExpert"):t>=75?f("proficiencyAdvanced"):t>=50?f("proficiencyIntermediate"):t>=25?f("proficiencyBasic"):f("proficiencyBeginner"),h=t=>t>=90?"text-purple-600 dark:text-purple-400":t>=75?"text-blue-600 dark:text-blue-400":t>=50?"text-green-600 dark:text-green-400":t>=25?"text-yellow-600 dark:text-yellow-400":"text-muted-foreground",{data:w,isLoading:pe}=le({queryKey:["/api/admin/talent-config"]}),{data:S,isLoading:v}=le({queryKey:["/api/talent/students",M,B],queryFn:async()=>{const t=await fetch(`/api/talent/students?minScore=${M}&page=${B}&pageSize=20`,{credentials:"include"});if(!t.ok)throw new Error("Failed to fetch");return t.json()}}),d=S?.students,D=Q({mutationFn:async t=>P("PUT","/api/admin/talent-config",{configs:t}),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/talent-config"]}
1),A.invalidateQueries({queryKey:["/api/talent/students"]}),W(!1),O({title:f("saved")})}}),_=Q({mutationFn:async({userId:t,status:L,notes:n})=>P("POST",`/api/talent/assess/${t}`,{status:L,notes:n}),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/talent/students"]}),b({isOpen:!1,student:null,detailedScore:null}),m(""),O({title:f("saved")})}}),{data:r,isLoading:x}=le({queryKey:["/api/talent/students",ge.studentId,"portfolio"],queryFn:async()=>{const t=await fetch(`/api/talent/students/${ge.studentId}/portfolio`,{credentials:"include"});if(!t.ok)throw new Error("Failed to fetch portfolio");return t.json()},enabled:!!ge.studentId&&ge.isOpen}),V=(t,L)=>{j(n=>({...n,[t]:L})),W(!0)},ue=()=>{const t=Object.entries(z).map(([L,n])=>({key:L,value:n}));t.length>0&&D.mutate(t)},Pe=t=>q.language==="uk"&&t.labelUk?t.labelUk:q.language==="es"&&t.labelEs?t.labelEs:t.label||t.key,Le=t=>q.language==="uk"&&t.descriptionUk?t.descriptionUk:q.language==="es"&&t.descriptionEs?t.descriptionEs:t.description||"",F=t=>t.includes("engagement")?e.jsx(os,{className:"h-4 w-4"}):t.includes("skills")?e.jsx(Ks,{className:"h-4 w-4"}):t.includes("achievements")?e.jsx(ls,{className:"h-4 w-4"}):t.includes("portfolio")?e.jsx(wa,{className:"h-4 w-4"}):t.includes("essay")?e.jsx(cs,{className:"h-4 w-4"}):t.includes("threshold")?e.jsx(Aa,{className:"h-4 w-4"}):e.jsx(ri,{className:"h-4 w-4"}),ke=t=>{if(!t)return e.jsx(N,{variant:"outline",children:f("noAssessment")});switch(t){case"confirmed":return e.jsx(N,{className:"bg-green-600 text-white",children:f("confirmed")});case"rejected":return e.jsx(N,{variant:"destructive",children:f("rejected")});case"potential":return e.jsx(N,{className:"bg-amber-500 text-white",children:f("potential")});default:return e.jsx(N,{variant:"outline",children:t})}},rs=t=>t>=75?"text-green-600":t>=60?"text-amber-500":t>=40?"text-orange-500":"text-muted-foreground",as=({label:t,value:L,icon:n})=>e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 text-sm",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[n,e.jsx("span",{children:t})]}),e.jsx("span",{className:`font-semibold ${rs(L)}`,children:L.toFixed(1)})]}),e.jsx("div",{className:"h-2 bg-muted rounded-full overflow-hidden",children:e.jsx("div",{className:`h-full rounded-full transition-all ${L>=75?"bg-green-500":L>=60?"bg-amber-500":L>=40?"bg-orange-500":"bg-muted-foreground/30"}`,style:{width:`${Math.min(L,100)}%`}})})]}),H=w?.filter(t=>t.category==="weight")||[],o=w?.filter(t=>t.category==="threshold")||[],$e=H.reduce((t,L)=>{const n=z[L.key]!==void 0?z[L.key]:parseFloat(L.value);return t+n},0);return e.jsxs(Y,{children:[e.jsx(Be,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Fs,{className:"h-5 w-5 text-amber-500"}),e.jsxs("div",{children:[e.jsx(He,{children:f("talentDetection")}),e.jsx(Ye,{children:f("talentDescription")})]})]})}),e.jsxs(X,{children:[e.jsxs(pa,{value:p,onValueChange:re,children:[e.jsxs(ja,{className:"mb-4",children:[e.jsxs(ve,{value:"students",className:"gap-1.5","data-testid":"tab-talent-students",children:[e.jsx(Ds,{className:"h-4 w-4"}),f("students")]}),e.jsxs(ve,{value:"settings",className:"gap-1.5","data-testid":"tab-talent-settings",children:[e.jsx(ri,{className:"h-4 w-4"}),f("settings")]})]}),e.jsx(je,{value:"students",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-4 flex-wrap",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(i,{className:"text-sm whitespace-nowrap",children:[f("minScore"),":"]}),e.jsx(g,{type:"number",min:0,max:100,value:M,onChange:t=>{xe(parseInt(t.target.value)||0),oe(1)},className:"w-20","data-testid":"input-min-score"})]}),e.jsxs(N,{variant:"outline",className:"gap-1",children:[e.jsx(Ds,{className:"h-3 w-3"}),S?.total||0," ",f("students")]})]}),v?e.jsx("div",{className:"space-y-2",children:[1,2,3].map(t=>e.jsx(ce,{className:"h-16 w-full"},t))}):d?.length?e.jsx("div",{className:"rounded-md border",children:e.jsxs(Qe,{children:[e.jsx(ze,{children:e.jsxs(ne,{children:[e.jsx(k,{children:f("students")}),e.jsx(k,{className:"text-center",children:f("score")}),e.jsx(k,{className:"hidden md:table-cell",children:f("scoreBreakdown")}),e.jsx(k,{className:"text-center",children:f("status")}),e.jsx(k,{className:"text-right",children:f("actions")})]})}),e.jsx(Re,{children:d.map(t=>e.jsxs(ne,{"data-testid":`talent-row-${t.user.id}`,children:[e.jsx(y,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[t.user.profileImageUrl?e.jsx("img",{src:t.user.profileImageUrl,alt:"",className:"h-8 w-8 rounded-full object-cover"}):e.jsx("div",{className:"h-8 w-8 rounded-full bg-primary/10 flex items-center justify-center text-sm font-medium",children:(t.user.firstName?.[0]||t.user.username[0]).toUpperCase()}),e.jsxs("div",{children:[e.jsxs("div",{className:"font-medium text-sm",children:[t.user.firstName," ",t.user.lastName]}),e.jsx("div",{className:"text-xs text-muted-foreground",children:t.user.email})]})]})}),e.jsx(y,{className:"text-center",children:e.jsx("span",{className:`text-lg font-bold ${rs(t.talentScore)}`,children:t.talentScore.toFixed(1)})}),e.jsx(y,{className:"hidden md:table-cell",children:e.jsxs("div",{className:"flex gap-1.5 flex-wrap",children:[e.jsxs(N,{variant:"outline",className:"text-xs gap-1",children:[e.jsx(os,{className:"h-3 w-3"}),t.breakdown.engagement.toFixed(0)]}),e.jsxs(N,{variant:"outline",className:"text-xs gap-1",children:[e.jsx(Ks,{className:"h-3 w-3"}),t.breakdown.skills.toFixed(0)]}),e.jsxs(N,{variant:"outline",className:"text-xs gap-1",children:[e.jsx(ls,{className:"h-3 w-3"}),t.breakdown.achievements.toFixed(0)]}),e.jsxs(N,{variant:"outline",className:"text-xs gap-1",children:[e.jsx(wa,{className:"h-3 w-3"}),t.breakdown.portfolio.toFixed(0)]}),e.jsxs(N,{variant:"outline",className:"text-xs gap-1",children:[e.jsx(cs,{className:"h-3 w-3"}),t.breakdown.essay.toFixed(0)]})]})}),e.jsx(y,{className:"text-center",children:ke(t.assessment?.status)}),e.jsx(y,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-1",children:[e.jsx(c,{size:"icon",variant:"ghost",onClick:()=>{we({isOpen:!0,studentId:t.user.id,studentName:`${t.user.firstName||""} ${t.user.lastName||""}`.trim()||t.user.username})},"data-testid":`btn-portfolio-${t.user.id}`,title:f("viewPortfolio"),children:e.jsx(Kt,{className:"h-4 w-4"})}),e.jsx(c,{size:"icon",variant:"ghost",onClick:()=>{b({isOpen:!0,student:t,detailedScore:null}),m(t.assessment?.notes||"")},"data-testid":`btn-review-${t.user.id}`,children:e.jsx(Xs,{className:"h-4 w-4"})})]})})]},t.user.id))})]})}):e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:f("noStudents")}),S&&S.totalPages>1&&e.jsxs("div",{className:"flex items-center justify-between gap-4 pt-4 flex-wrap",children:[e.jsxs("p",{className:"text-sm text-muted-foreground",children:[f("totalStudents"),": ",S.total," · ",f("page")," ",S.page," ",f("of")," ",S.totalPages]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(c,{variant:"outline",size:"sm",disabled:B<=1,onClick:()=>oe(t=>Math.max(1,t-1)),"data-testid":"button-talent-prev",children:f("previous")}),e.jsx(c,{variant:"outline",size:"sm",disabled:B>=S.totalPages,onClick:()=>oe(t=>t+1),"data-testid":"button-talent-next",children:f("next")})]})]})]})}),e.jsx(je,{value:"settings",children:e.jsx("div",{className:"space-y-6",children:e.jsxs(Y,{children:[e.jsxs(Be,{children:[e.jsx(He,{className:"text-base",children:f("weightConfig")}),e.jsx(Ye,{children:f("weightConfigDesc")})]}),e.jsx(X,{className:"space-y-6",children:pe?e.jsx("div",{className:"space-y-4",children:[1,2,3,4,5].map(t=>e.jsx(ce,{className:"h-16 w-full"},t))}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"space-y-5",children:H.map(t=>{const L=z[t.key]!==void 0?z[t.key]:parseFloat(t.value);return e.jsxs("div",{className:"space-y-2","data-testid":`config-${t.key}`,children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[F(t.key),e.jsx(i,{className:"text-sm font-medium",children:Pe(t)})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(g,{type:"number",min:0,max:100,value:L,onChange:n=>V(t.key,parseFloat(n.target.value)||0),className:"w-20 text-right","data-testid":`input-${t.key}`}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"%"})]})]}),e.jsx(Yn,{value:[L],onValueChange:([n])=>V(t.key,n),min:0,max:50,step:1,"data-testid":`slider-${t.key}`}),e.jsx("p",{className:"text-xs text-muted-foreground",children:Le(t)})]},t.key)})}),e.jsx("div",{className:"flex items-center justify-between pt-2 border-t",children:e.jsxs("div",{className:"text-sm",children:[e.jsxs("span",{className:"text-muted-foreground",children:[f("totalWeight"),": "]}),e.jsxs("span",{className:`font-bold ${$e===100?"text-green-600":"text-amber-500"}`,children:[$e,"%"]}),$e!==100&&e.jsxs("span",{className:"text-xs text-amber-500 ml-2",children:["(",q.language==="uk"?"Ñекомендовано 100%":q.language==="es"?"recomendado 100%":"recommended 100%",")"]})]})}),e.jsxs("div",{className:"space-y-4 pt-4 border-t",children:[e.jsxs("h4",{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(Aa,{className:"h-4 w-4"}),f("thresholds")]}),o.map(t=>{const L=z[t.key]!==void 0?z[t.key]:parseFloat(t.value);return e.jsxs("div",{className:"space-y-2","data-testid":`config-${t.key}`,children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[F(t.key),e.jsx(i,{className:"text-sm font-medium",children:Pe(t)})]}),e.jsx(g,{type:"number",min:0,max:100,value:L,onChange:n=>V(t.key,parseFloat(n.target.value)||0),className:"w-20 text-right","data-testid":`input-${t.key}`})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:Le(t)})]},t.key)})]}),e.jsx("div",{className:"flex justify-end pt-4",children:e.jsxs(c,{onClick:ue,disabled:!C||D.isPending,className:"gap-2","data-testid":"btn-save-config",children:[e.jsx(Ge,{className:"h-4 w-4"}),f("save")]})})]})})]})})})]}),e.jsx(fe,{open:I.isOpen,onOpenChange:t=>{t||b({isOpen:!1,student:null,detailedScore:null})},children:e.jsxs(ye,{className:"max-w-lg",children:[e.jsxs(Ne,{children:[e.jsxs(be,{className:"flex items-center gap-2",children:[e.jsx(Fs,{className:"h-5 w-5 text-amber-500"}),f("assessStudent")]}),e.jsxs(Se,{children:[I.student?.user.firstName," ",I.student?.user.lastName," ","(",I.student?.user.email,")"]})]}),I.student&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:`text-4xl font-bold ${rs(I.student.talentScore)}`,children:I.student.talentScore.toFixed(1)}),e.jsx("div",{className:"text-sm text-muted-foreground",children:"Talent Score"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("h4",{className:"text-sm font-medium",children:f("scoreBreakdown")}
1),e.jsx(as,{label:f("engagement"),value:I.student.breakdown.engagement,icon:e.jsx(os,{className:"h-3.5 w-3.5"})}),e.jsx(as,{label:f("skills"),value:I.student.breakdown.skills,icon:e.jsx(Ks,{className:"h-3.5 w-3.5"})}),e.jsx(as,{label:f("achievements"),value:I.student.breakdown.achievements,icon:e.jsx(ls,{className:"h-3.5 w-3.5"})}),e.jsx(as,{label:f("portfolio"),value:I.student.breakdown.portfolio,icon:e.jsx(wa,{className:"h-3.5 w-3.5"})}),e.jsx(as,{label:f("essay"),value:I.student.breakdown.essay,icon:e.jsx(cs,{className:"h-3.5 w-3.5"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{className:"text-sm",children:f("notes")}),e.jsx(G,{value:T,onChange:t=>m(t.target.value),placeholder:f("notesPlaceholder"),rows:3,"data-testid":"textarea-assess-notes"})]}),I.student.assessment&&e.jsxs("div",{className:"text-xs text-muted-foreground",children:[q.language==="uk"?"ÐоÑоÑний ÑÑаÑÑÑ":q.language==="es"?"Estado actual":"Current status",":"," ",ke(I.student.assessment.status)]})]}),e.jsxs(Ue,{className:"gap-2 sm:gap-0",children:[e.jsxs(c,{variant:"destructive",onClick:()=>{I.student&&_.mutate({userId:I.student.user.id,status:"rejected",notes:T})},disabled:_.isPending,className:"gap-1.5","data-testid":"btn-reject-talent",children:[e.jsx(xa,{className:"h-4 w-4"}),f("reject")]}),e.jsxs(c,{onClick:()=>{I.student&&_.mutate({userId:I.student.user.id,status:"confirmed",notes:T})},disabled:_.isPending,className:"gap-1.5 bg-green-600 hover:bg-green-700","data-testid":"btn-confirm-talent",children:[e.jsx(Es,{className:"h-4 w-4"}),f("confirm")]})]})]})}),e.jsx(fe,{open:ge.isOpen,onOpenChange:t=>{t||(we({isOpen:!1,studentId:null,studentName:""}),R(new Set))},children:e.jsxs(ye,{className:"max-w-2xl max-h-[85vh] flex flex-col overflow-hidden","data-testid":"dialog-portfolio",children:[e.jsxs(Ne,{className:"flex-shrink-0",children:[e.jsxs(be,{className:"flex items-center gap-2",children:[e.jsx(Kt,{className:"h-5 w-5 text-primary"}),f("studentPortfolio")]}),e.jsx(Se,{children:ge.studentName})]}),e.jsx("div",{className:"flex-1 min-h-0 overflow-y-auto pr-1",children:x?e.jsx("div",{className:"space-y-3 py-4",children:[1,2,3,4].map(t=>e.jsx(ce,{className:"h-20 w-full"},t))}):r?e.jsxs(Xn,{type:"multiple",defaultValue:["plans","skills","activities","projects","talent","essays","custom"],className:"space-y-2",children:[e.jsxs(Ls,{value:"plans",className:"border rounded-md px-3",children:[e.jsx($s,{className:"text-sm font-medium gap-2","data-testid":"accordion-trigger-plans",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ms,{className:"h-4 w-4 text-blue-500"}),f("admissionPlans"),e.jsx(N,{variant:"outline",className:"ml-1 text-xs",children:r.admissionPlans?.length||0})]})}),e.jsx(Ms,{children:r.admissionPlans?.length?e.jsx("div",{className:"space-y-3 pb-2",children:r.admissionPlans.map(t=>e.jsxs("div",{className:"p-3 rounded-md border bg-muted/30","data-testid":`portfolio-plan-${t.id}`,children:[e.jsxs("div",{className:"flex items-start justify-between gap-2 flex-wrap",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx(Qt,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),e.jsx("span",{className:"font-medium text-sm truncate",children:t.university?q.language==="uk"&&t.university.nameUk?t.university.nameUk:q.language==="es"&&t.university.nameEs?t.university.nameEs:t.university.name:f("noData")})]}),e.jsx(N,{variant:t.status==="accepted"?"default":"outline",className:"text-xs flex-shrink-0",children:t.status==="accepted"?f("accepted"):f("pending")})]}),t.major&&e.jsxs("div",{className:"flex items-center gap-2 mt-1 text-xs text-muted-foreground",children:[e.jsx(Js,{className:"h-3 w-3"}),e.jsx("span",{children:q.language==="uk"&&t.major.nameUk?t.major.nameUk:q.language==="es"&&t.major.nameEs?t.major.nameEs:t.major.name})]}),(t.portfolioSkills?.length>0||t.portfolioActivities?.length>0||t.portfolioVolunteering?.length>0||t.portfolioAchievements?.length>0)&&e.jsxs("div",{className:"mt-2 pt-2 border-t",children:[e.jsxs("p",{className:"text-xs font-medium text-muted-foreground mb-1.5",children:[f("portfolioItems"),":"]}),e.jsxs("div",{className:"flex flex-wrap gap-1",children:[t.portfolioSkills?.map((L,n)=>e.jsxs(N,{variant:"outline",className:"text-xs gap-1",children:[e.jsx(Ua,{className:"h-3 w-3 text-yellow-500"}),L.name]},`s-${n}`)),t.portfolioActivities?.map((L,n)=>e.jsxs(N,{variant:"outline",className:"text-xs gap-1",children:[e.jsx(it,{className:"h-3 w-3 text-green-500"}),L.name]},`a-${n}`)),t.portfolioVolunteering?.map((L,n)=>e.jsxs(N,{variant:"outline",className:"text-xs gap-1",children:[e.jsx(ot,{className:"h-3 w-3 text-pink-500"}),L.name]},`v-${n}`)),t.portfolioAchievements?.map((L,n)=>e.jsxs(N,{variant:"outline",className:"text-xs gap-1",children:[e.jsx(Ea,{className:"h-3 w-3 text-amber-500"}),L.name]},`ach-${n}`))]})]}),t.generatedGoals&&e.jsx("div",{className:"mt-2 pt-2 border-t",children:e.jsxs("div",{className:"flex items-center gap-1 text-xs text-muted-foreground mb-1",children:[e.jsx(yi,{className:"h-3 w-3 text-green-500"}),f("completedGoals"),": ",t.generatedGoals.filter(L=>L.isCompleted).length,"/",t.generatedGoals.length]})})]},t.id))}):e.jsx("p",{className:"text-sm text-muted-foreground py-2",children:f("noData")})})]}),e.jsxs(Ls,{value:"skills",className:"border rounded-md px-3",children:[e.jsx($s,{className:"text-sm font-medium gap-2","data-testid":"accordion-trigger-skills",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ua,{className:"h-4 w-4 text-yellow-500"}),f("skillsAndCompetencies"),e.jsx(N,{variant:"outline",className:"ml-1 text-xs",children:r.skills?.length||0})]})}),e.jsx(Ms,{children:r.skills?.length?e.jsx("div",{className:"space-y-2 pb-2",children:r.skills.map(t=>e.jsxs("div",{className:"p-2.5 rounded-md border bg-muted/30","data-testid":`portfolio-skill-${t.id}`,children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 flex-wrap",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[t.category==="language"?e.jsx(Zn,{className:"h-4 w-4 text-amber-500 flex-shrink-0"}):t.category==="technical"?e.jsx(di,{className:"h-4 w-4 text-blue-500 flex-shrink-0"}):e.jsx(er,{className:"h-4 w-4 text-purple-500 flex-shrink-0"}),e.jsx("span",{className:"text-sm font-medium truncate",children:t.name}),e.jsx(N,{variant:"outline",className:"text-xs",children:t.category==="language"?q.language==="uk"?"мова":q.language==="es"?"idioma":"language":t.category==="technical"?q.language==="uk"?"ÑеÑ
нÑÑна":q.language==="es"?"técnica":"technical":q.language==="uk"?"гнÑÑка":q.language==="es"?"blanda":"soft"})]}),e.jsx(N,{variant:"secondary",className:`text-xs font-semibold ${h(t.level)}`,children:ie(t.level)})]}),e.jsxs("div",{className:"flex items-center gap-2 mt-1.5",children:[e.jsx("div",{className:"flex-1 h-2 bg-muted rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full rounded-full bg-gradient-to-r from-blue-500 to-purple-500 transition-all",style:{width:`${t.level}%`}})}),e.jsxs("span",{className:"text-xs font-medium w-8 text-right text-muted-foreground",children:[t.level,"%"]})]})]},t.id))}):e.jsx("p",{className:"text-sm text-muted-foreground py-2",children:f("noData")})})]}),e.jsxs(Ls,{value:"activities",className:"border rounded-md px-3",children:[e.jsx($s,{className:"text-sm font-medium gap-2","data-testid":"accordion-trigger-activities",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(it,{className:"h-4 w-4 text-green-500"}),f("activitiesLabel"),e.jsx(N,{variant:"outline",className:"ml-1 text-xs",children:r.activities?.length||0})]})}),e.jsx(Ms,{children:r.activities?.length?e.jsx("div",{className:"space-y-2 pb-2",children:r.activities.map(t=>e.jsxs("div",{className:"p-2 rounded-md border bg-muted/30",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[t.category==="volunteering"?e.jsx(ot,{className:"h-4 w-4 text-pink-500 flex-shrink-0"}):t.category==="sport"?e.jsx(it,{className:"h-4 w-4 text-red-500 flex-shrink-0"}):t.category==="competition"?e.jsx(Ea,{className:"h-4 w-4 text-amber-500 flex-shrink-0"}):e.jsx(wa,{className:"h-4 w-4 text-green-500 flex-shrink-0"}),e.jsx("span",{className:"text-sm font-medium",children:t.title})]}),e.jsx(N,{variant:"outline",className:"text-xs flex-shrink-0",children:t.category})]}),t.description&&e.jsx("p",{className:"text-xs text-muted-foreground mt-1 ml-6",children:t.description}),t.organization&&e.jsxs("div",{className:"flex items-center gap-1.5 mt-1 ml-6 text-xs text-muted-foreground",children:[e.jsx(Qt,{className:"h-3 w-3"}),t.organization,t.role&&e.jsxs("span",{children:["(",t.role,")"]})]}),t.achievements&&e.jsxs("div",{className:"flex items-center gap-1.5 mt-1 ml-6 text-xs",children:[e.jsx(Ea,{className:"h-3 w-3 text-amber-500"}),e.jsx("span",{children:t.achievements})]})]},t.id))}):e.jsx("p",{className:"text-sm text-muted-foreground py-2",children:f("noData")})})]}),e.jsxs(Ls,{value:"projects",className:"border rounded-md px-3",children:[e.jsx($s,{className:"text-sm font-medium gap-2","data-testid":"accordion-trigger-projects",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(di,{className:"h-4 w-4 text-purple-500"}),f("projectsLabel"),e.jsx(N,{variant:"outline",className:"ml-1 text-xs",children:r.projects?.length||0})]})}),e.jsx(Ms,{children:r.projects?.length?e.jsx("div",{className:"space-y-2 pb-2",children:r.projects.map(t=>e.jsxs("div",{className:"p-2 rounded-md border bg-muted/30",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ji,{className:"h-4 w-4 text-blue-500 flex-shrink-0"}),e.jsx("span",{className:"text-sm font-medium",children:t.title})]}),t.description&&e.jsx("p",{className:"text-xs text-muted-foreground mt-1 ml-6",children:t.description}),t.technologies&&t.technologies.length>0&&e.jsx("div",{className:"flex flex-wrap gap-1 mt-1.5 ml-6",children:t.technologies.map((L,n)=>e.jsx(N,{variant:"secondary",className:"text-xs",children:L},n))}),t.projectUrl&&e.jsx("a",{href:t.projectUrl,target:"_blank",rel:"noopener noreferrer",className:"text-xs text-primary ml-6 mt-1 inline-block",children:t.projectUrl})]},t.id))}):e.jsx("p",{className:"text-sm text-muted-foreground py-2",children:f("noData")})})]}),e.jsxs(Ls,{value:"talent",className:"border rounded-md px-3",children:[e.jsx($s,{className:"text-sm font-medium gap-2","data-testid":"accordion-trigger-talent-profile",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Fs,{className:"h-4 w-4 text-amber-500"}),f("talentProfileLabel")]})}),e.jsx(Ms,{children:r.talentProfile?e.jsxs("div",{className:"space-y-3 pb-2",children:[r.talentProfile.academicInterests?.length>0&&e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground mb-1",children:f("academicInterests")}),e.jsx("div",{className:"flex flex-wrap gap-1",children:r.talentProfile.academicInterests.map(t=>e.jsxs(N,{variant:"outline",className:"text-xs gap-1",children:[e.jsx(Js,{className:"h-3 w-3"}),q.language==="uk"&&t.nameUk?t.nameUk:q.language==="es"&&t.nameEs?t.nameEs:t.name]},t.id))})]}),r.talentProfile.careerInterests?.length>0&&e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground mb-1",children:f("careerInterests")}),e.jsx("div",{className:"flex flex-wrap gap-1",children:r.talentProfile.careerInterests.map(t=>e.jsxs(N,{variant:"outline",className:"text-xs gap-1",children:[e.jsx(os,{className:"h-3 w-3"}),q.language==="uk"&&t.nameUk?t.nameUk:q.language==="es"&&t.nameEs?t.nameEs:t.name]},t.id))})]}),r.talentProfile.skills?.length>0&&e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground mb-1",children:f("skills")}),e.jsx("div",{className:"space-y-1.5",children:r.talentProfile.skills.map(t=>e.jsxs("div",{className:"flex items-center justify-between gap-2 p-1.5 rounded border bg-muted/30",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx(Ua,{className:"h-3.5 w-3.5 text-yellow-500 flex-shrink-0"}),e.jsx("span",{className:"text-sm truncate",children:q.language==="uk"&&t.nameUk?t.nameUk:q.language==="es"&&t.nameEs?t.nameEs:t.name})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[t.yearsOfExperience&&e.jsxs("span",{className:"text-xs text-muted-foreground",children:[t.yearsOfExperience," ",f("years")]}),t.level!=null&&e.jsx(N,{variant:"secondary",className:`text-xs font-semibold ${h(t.level)}`,children:ie(t.level)})]})]},t.id))})]}),r.talentProfile.tests?.length>0&&e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground mb-1",children:f("tests")}),e.jsx("div",{className:"space-y-1",children:r.talentProfile.tests.map(t=>e.jsxs("div",{className:"flex items-center justify-between gap-2 text-sm p-1.5 rounded border bg-muted/30",children:[e.jsx("span",{children:t.testType}),t.score&&e.jsx(N,{variant:"secondary",className:"text-xs",children:t.score})]},t.id))})]}),r.talentProfile.achievements?.length>0&&e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground mb-1",children:f("achievements")}),e.jsx("div",{className:"space-y-1",children:r.talentProfile.achievements.map(t=>e.jsxs("div",{className:"flex items-start gap-2 text-sm p-1.5 rounded border bg-muted/30",children:[e.jsx(ls,{className:"h-4 w-4 text-amber-500 mt-0.5 flex-shrink-0"}),e.jsxs("div",{children:[e.jsx("span",{className:"font-medium",children:t.title}),t.description&&e.jsx("p",{className:"text-xs text-muted-foreground",children:t.description})]})]},t.id))})]})]}):e.jsx("p",{className:"text-sm text-muted-foreground py-2",children:f("noData")})})]}),e.jsxs(Ls,{value:"essays",className:"border rounded-md px-3",children:[e.jsx($s,{className:"text-sm font-medium gap-2","data-testid":"accordion-trigger-essays",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(cs,{className:"h-4 w-4 text-indigo-500"}),f("essayAnalysesLabel"),e.jsx(N,{variant:"outline",className:"ml-1 text-xs",children:r.essayAnalyses?.length||0})]})}),e.jsx(Ms,{children:r.essayAnalyses?.length?e.jsx("div",{className:"space-y-3 pb-2",children:r.essayAnalyses.map(t=>{const L=K.has(t.id),n=t.overallScore??t.score;return e.jsxs("div",{className:"rounded-md border bg-muted/30 overflow-hidden",children:[e.jsxs("button",{type:"button",className:"w-full p-3 text-left",onClick:()=>{R(J=>{const Ce=new Set(J);return Ce.has(t.id)?Ce.delete(t.id):Ce.add(t.id),Ce})},"data-testid":`essay-toggle-${t.id}`,children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("span",{className:"text-sm font-medium truncate flex-1",children:[t.essayText?.substring(0,80),"..."]}),e.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[n!=null&&e.jsxs(N,{variant:Number(n)>=70?"default":"outline",className:"text-xs",children:[n,"/100"]}),e.jsx(ct,{className:`h-4 w-4 text-muted-foreground transition-transform ${L?"rotate-180":""}`})]})]}),t.createdAt&&e.jsxs("div",{className:"flex items-center gap-1.5 mt-1 text-xs text-muted-foreground",children:[e.jsx(Fa,{className:"h-3 w-3"}),new Date(t.createdAt).toLocaleDateString(q.language==="uk"?"uk-UA":q.language==="es"?"es-ES":"en-US",{year:"numeric",month:"short",day:"numeric"})]})]}),L&&e.jsxs("div",{className:"px-3 pb-3 space-y-3 border-t",children:[t.summary&&e.jsxs("div",{className:"pt-3",children:[e.jsxs("div",{className:"flex items-center gap-1.5 text-xs font-semibold text-muted-foreground mb-1",children:[e.jsx(Ts,{className:"h-3.5 w-3.5"}),f("summary")]}),e.jsx("p",{className:"text-sm",children:t.summary})]}),t.strengths?.length>0&&e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-1.5 text-xs font-semibold text-green-600 dark:text-green-400 mb-1",children:[e.jsx(gi,{className:"h-3.5 w-3.5"}),f("strengths")]}),e.jsx("ul",{className:"list-disc list-inside space-y-0.5",children:t.strengths.map((J,Ce)=>e.jsx("li",{className:"text-sm text-muted-foreground",children:J},Ce))})]}),t.weaknesses?.length>0&&e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-1.5 text-xs font-semibold text-red-600 dark:text-red-400 mb-1",children:[e.jsx(vi,{className:"h-3.5 w-3.5"}),f("weaknesses")]}),e.jsx("ul",{class
1Name:"list-disc list-inside space-y-0.5",children:t.weaknesses.map((J,Ce)=>e.jsx("li",{className:"text-sm text-muted-foreground",children:J},Ce))})]}),t.suggestions?.length>0&&e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-1.5 text-xs font-semibold text-blue-600 dark:text-blue-400 mb-1",children:[e.jsx(Nn,{className:"h-3.5 w-3.5"}),f("suggestions")]}),e.jsx("ul",{className:"list-disc list-inside space-y-0.5",children:t.suggestions.map((J,Ce)=>e.jsx("li",{className:"text-sm text-muted-foreground",children:J},Ce))})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-1.5 text-xs font-semibold text-muted-foreground mb-1",children:[e.jsx(cs,{className:"h-3.5 w-3.5"}),f("essayText")]}),e.jsx("div",{className:"text-sm bg-background/60 rounded-md p-2 max-h-40 overflow-y-auto whitespace-pre-wrap break-words",children:t.essayText})]})]})]},t.id)})}):e.jsx("p",{className:"text-sm text-muted-foreground py-2",children:f("noData")})})]}),r.customEntries?.length>0&&e.jsxs(Ls,{value:"custom",className:"border rounded-md px-3 border-dashed border-primary/30",children:[e.jsx($s,{className:"text-sm font-medium gap-2","data-testid":"accordion-trigger-custom",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(sr,{className:"h-4 w-4 text-primary"}),f("customAdditions"),e.jsx(N,{variant:"outline",className:"ml-1 text-xs",children:r.customEntries.length})]})}),e.jsx(Ms,{children:e.jsx("div",{className:"space-y-2 pb-2",children:["interests","skills","tests","achievements"].map(t=>{const L=r.customEntries.filter(J=>J.section===t);if(L.length===0)return null;const n=f(t==="interests"?"academicInterests":t==="skills"?"skillsAndCompetencies":t==="tests"?"tests":"achievements");return e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground mb-1.5",children:n}),L.map(J=>e.jsxs("div",{className:"p-2 rounded-md border border-dashed bg-muted/20 mb-1.5","data-testid":`custom-entry-view-${J.id}`,children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 flex-wrap",children:[e.jsx("span",{className:"text-sm font-medium",children:J.title}),J.level!=null&&e.jsx(N,{variant:"secondary",className:`text-xs font-semibold ${h(J.level)}`,children:ie(J.level)})]}),J.description&&e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:J.description})]},J.id))]},t)})})})]})]}):e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:f("noData")})})]})})]})]})}function ps(s){if(!s)return[];try{return JSON.parse(s)}catch{return[]}}function xr(){const{t:s,i18n:q}=fs(),{toast:O}=Ns(),[p,re]=U.useState(""),[z,j]=U.useState(null),[C,W]=U.useState("en"),I=v=>q.language==="uk"&&v.nameUk?v.nameUk:q.language==="es"&&v.nameEs?v.nameEs:v.name,[b,T]=U.useState({overview:"",overviewUk:"",overviewEs:"",whyStudy:[],whyStudyUk:[],whyStudyEs:[],careerPaths:[],careerPathsUk:[],careerPathsEs:[],requirements:"",requirementsUk:"",requirementsEs:"",faq:[],faqUk:[],faqEs:[],keyStats:[],keyStatsUk:[],keyStatsEs:[],salaryData:{entryLevel:"",median:"",seniorLevel:"",currency:"USD",source:""},salaryDataUk:{entryLevel:"",median:"",seniorLevel:"",currency:"USD",source:""},salaryDataEs:{entryLevel:"",median:"",seniorLevel:"",currency:"USD",source:""},jobMarket:"",jobMarketUk:"",jobMarketEs:"",relatedMajors:"",seoTitle:"",seoTitleUk:"",seoTitleEs:"",seoDescription:"",seoDescriptionUk:"",seoDescriptionEs:"",isPublished:!1}),{data:m,isLoading:M}=le({queryKey:["/api/admin/major-pages"]}),xe=U.useMemo(()=>(m||[]).filter(v=>v.pageStatus==="published"&&!!v.slug),[m]),B=Q({mutationFn:async({majorId:v,data:d})=>P("POST",`/api/admin/major-pages/${v}`,d),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/major-pages"]}),O({title:s("admin.majorPages.saved")}),j(null)},onError:()=>{O({title:s("admin.majorPages.saveError"),variant:"destructive"})}}),oe=v=>{if(!v)return{entryLevel:"",median:"",seniorLevel:"",currency:"USD",source:""};try{return JSON.parse(v)}catch{return{entryLevel:"",median:"",seniorLevel:"",currency:"USD",source:""}}},ge=v=>{const d=v.page;T({overview:d?.overview||"",overviewUk:d?.overviewUk||"",overviewEs:d?.overviewEs||"",whyStudy:ps(d?.whyStudy),whyStudyUk:ps(d?.whyStudyUk),whyStudyEs:ps(d?.whyStudyEs),careerPaths:
1ps(d?.careerPaths),careerPathsUk:ps(d?.careerPathsUk),careerPathsEs:ps(d?.careerPathsEs),requirements:d?.requirements||"",requirementsUk:d?.requirementsUk||"",requirementsEs:d?.requirementsEs||"",faq:ps(d?.faq),faqUk:ps(d?.faqUk),faqEs:ps(d?.faqEs),keyStats:ps(d?.keyStats),keyStatsUk:ps(d?.keyStatsUk),keyStatsEs:ps(d?.keyStatsEs),salaryData:oe(d?.salaryData),salaryDataUk:oe(d?.salaryDataUk),salaryDataEs:oe(d?.salaryDataEs),jobMarket:d?.jobMarket||"",jobMarketUk:d?.jobMarketUk||"",jobMarketEs:d?.jobMarketEs||"",relatedMajors:d?.relatedMajors||"",seoTitle:d?.seoTitle||"",seoTitleUk:d?.seoTitleUk||"",seoTitleEs:d?.seoTitleEs||"",seoDescription:d?.seoDescription||"",seoDescriptionUk:d?.seoDescriptionUk||"",seoDescriptionEs:d?.seoDescriptionEs||"",isPublished:d?.isPublished||!1}),W("en"),j(v)},we=()=>{if(!z)return;const v=b.salaryData.median||b.salaryData.entryLevel||b.salaryData.seniorLevel,d=b.salaryDataUk.median||b.salaryDataUk.entryLevel||b.salaryDataUk.seniorLevel,D=b.salaryDataEs.median||b.salaryDataEs.entryLevel||b.salaryDataEs.seniorLevel;B.mutate({majorId:z.id,data:{overview:b.overview||null,overviewUk:b.overviewUk||null,overviewEs:b.overviewEs||null,whyStudy:b.whyStudy.length?JSON.stringify(b.whyStudy):null,whyStudyUk:b.whyStudyUk.length?JSON.stringify(b.whyStudyUk):null,whyStudyEs:b.whyStudyEs.length?JSON.stringify(b.whyStudyEs):null,careerPaths:b.careerPaths.length?JSON.stringify(b.careerPaths):null,careerPathsUk:b.careerPathsUk.length?JSON.stringify(b.careerPathsUk):null,careerPathsEs:b.careerPathsEs.length?JSON.stringify(b.careerPathsEs):null,requirements:b.requirements||null,requirementsUk:b.requirementsUk||null,requirementsEs:b.requirementsEs||null,faq:b.faq.length?JSON.stringify(b.faq):null,faqUk:b.faqUk.length?JSON.stringify(b.faqUk):null,faqEs:b.faqEs.length?JSON.stringify(b.faqEs):null,keyStats:b.keyStats.length?JSON.stringify(b.keyStats):null,keyStatsUk:b.keyStatsUk.length?JSON.stringify(b.keyStatsUk):null,keyStatsEs:b.keyStatsEs.length?JSON.stringify(b.keyStatsEs):null,salaryData:v?JSON.stringify(b.salaryData):null,salaryDataUk:d?JSON.stringify(b.salaryDataUk):null,salaryDataEs:D?JSON.stringify(b.salaryDataEs):null,jobMarket:b.jobMarket||null,jobMarketUk:b.jobMarketUk||null,
1jobMarketEs:b.jobMarketEs||null,relatedMajors:b.relatedMajors||null,seoTitle:b.seoTitle||null,seoTitleUk:b.seoTitleUk||null,seoTitleEs:b.seoTitleEs||null,seoDescription:b.seoDescription||null,seoDescriptionUk:b.seoDescriptionUk||null,seoDescriptionEs:b.seoDescriptionEs||null,isPublished:b.isPublished}})},K=(m||[]).filter(v=>{if(!p)return!0;const d=p.toLowerCase();return v.name.toLowerCase().includes(d)||(v.slug||"").toLowerCase().includes(d)||(v.category||"").toLowerCase().includes(d)}),R=v=>v==="published"?e.jsx(N,{className:"bg-emerald-500/15 text-emerald-700 dark:text-emerald-400 border-emerald-500/30","data-testid":"badge-published",children:s("admin.majorPages.published")}):v==="draft"?e.jsx(N,{variant:"outline",className:"text-amber-600 dark:text-amber-400 border-amber-500/30","data-testid":"badge-draft",children:s("admin.majorPages.draft")}):e.jsx(N,{variant:"outline",className:"text-muted-foreground","data-testid":"badge-empty",children:s("admin.majorPages.empty")}),f=(v,d)=>{const D=b[v];return e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx(i,{className:"text-sm font-medium",children:d}),e.jsxs(c,{variant:"outline",size:"sm",onClick:()=>T({...b,[v]:[...D,{title:"",description:""}]}),"data-testid":`button-add-${v}`,children:[e.jsx(Ee,{className:"h-4 w-4 mr-1"})," ",s("admin.majorPages.add")]})]}),D.map((_,r)=>e.jsx(Y,{children:e.jsxs(X,{className:"p-3 space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(g,{placeholder:s("admin.majorPages.titlePlaceholder"),value:_.title,onChange:x=>{const V=[...D];V[r]={..._,title:x.target.value},T({...b,[v]:V})},"data-testid":`input-${v}-title-${r}`}),e.jsx(c,{variant:"outline",size:"icon",onClick:()=>{const x=D.filter((V,ue)=>ue!==r);T({...b,[v]:x})},"data-testid":`button-remove-${v}-${r}`,children:e.jsx(Te,{className:"h-4 w-4"})})]}),e.jsx(G,{placeholder:s("admin.majorPages.descriptionPlaceholder"),value:_.description,onChange:x=>{const V=[...D];V[r]={..._,description:x.target.value},T({...b,[v]:V})},rows:2,"data-testid":`input-${v}-desc-${r}`})]})},r))]})},ie=(v,d)=>{const D=b[v];return e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx(i,{className:"text-sm font-medium",children:d}),e.jsxs(c,{variant:"outline",size:"sm",onClick:()=>T({...b,[v]:[...D,{q:"",a:""}]}),"data-testid":`button-add-${v}`,children:[e.jsx(Ee,{className:"h-4 w-4 mr-1"})," ",s("admin.majorPages.add")]})]}),D.map((_,r)=>e.jsx(Y,{children:e.jsxs(X,{className:"p-3 space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(g,{placeholder:s("admin.majorPages.questionPlaceholder"),value:_.q,onChange:x=>{const V=[...D];V[r]={..._,q:x.target.value},T({...b,[v]:V})},"data-testid":`input-${v}-q-${r}`}),e.jsx(c,{variant:"outline",size:"icon",onClick:()=>{const x=D.filter((V,ue)=>ue!==r);T({...b,[v]:x})},"data-testid":`button-remove-${v}-${r}`,children:e.jsx(Te,{className:"h-4 w-4"})})]}),e.jsx(G,{placeholder:s("admin.majorPages.answerPlaceholder"),value:_.a,onChange:x=>{const V=[...D];V[r]={..._,a:x.target.value},T({...b,[v]:V})},rows:2,"data-testid":`input-${v}-a-${r}`})]})},r))]})},h=(v,d)=>{const D=b[v];return e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx(i,{className:"text-sm font-medium",children:d}),e.jsxs(c,{variant:"outline",size:"sm",onClick:()=>T({...b,[v]:[...D,{label:"",value:""}]}),"data-testid":`button-add-${v}`,children:[e.jsx(Ee,{className:"h-4 w-4 mr-1"})," ",s("admin.majorPages.add")]})]}),D.map((_,r)=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(g,{placeholder:"Label (e.g. Job growth)",value:_.label,onChange:x=>{const V=[...D];V[r]={..._,label:x.target.value},T({...b,[v]:V})},className:"flex-1","data-testid":`input-${v}-label-${r}`}),e.jsx(g,{placeholder:"Value (e.g. +15%)",value:_.value,onChange:x=>{const V=[...D];V[r]={..._,value:x.target.value},T({...b,[v]:V})},className:"w-32","data-testid":`input-${v}-value-${r}`}),e.jsx(c,{variant:"outline",size:"icon",onClick:()=>T({...b,[v]:D.filter((x,V)=>V!==r)}),"data-testid":`button-remove-${v}-${r}`,children:e.jsx(Te,{className:"h-4 w-4"})})]},r))]})},w=(v,d)=>{const D=b[v],_=r=>T({...b,[v]:{...D,...r}});return e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{className:"text-xs font-semibold text-muted-foreground uppercase tracking-wide",children:d}),e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(i,{className:"text-xs",children:"Entry"}),e.jsx(g,{placeholder:"$55K",value:D.entryLevel,onChange:r=>_({entryLevel:r.target.value}),"data-testid":`input-${v}-entry`})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(i,{className:"text-xs",children:"Median"}),e.jsx(g,{placeholder:"$85K",value:D.median,onChange:r=>_({median:r.target.value}),"data-testid":`input-${v}-median`})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(i,{className:"text-xs",children:"Senior"}),e.jsx(g,{placeholder:"$130K",value:D.seniorLevel,onChange:r=>_({seniorLevel:r.target.value}),"data-testid":`input-${v}-senior`})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(i,{className:"text-xs",children:"Currency"}),e.jsx(g,{placeholder:"USD",value:D.currency,onChange:r=>_({currency:r.target.value}),"data-testid":`input-${v}-currency`})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(i,{className:"text-xs",children:"Source"}
1),e.jsx(g,{placeholder:"BLS 2024",value:D.source,onChange:r=>_({source:r.target.value}),"data-testid":`input-${v}-source`})]})]})]})},pe=v=>{const d=v==="en"?"":v==="uk"?"Uk":"Es",D=`overview${d}`,_=`requirements${d}`,r=`seoTitle${d}`,x=`seoDescription${d}`,V=`whyStudy${d}`,ue=`careerPaths${d}`,Pe=`faq${d}`,Le=s(v==="en"?"admin.majorPages.langEnglish":v==="uk"?"admin.majorPages.langUkrainian":"admin.majorPages.langSpanish");return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{className:"text-sm font-medium",children:[s("admin.majorPages.overview")," (",Le,")"]}),e.jsx(G,{value:b[D],onChange:F=>T({...b,[D]:F.target.value}),rows:4,placeholder:s("admin.majorPages.overviewPlaceholder"),"data-testid":`textarea-overview-${v}`})]}),f(V,`${s("admin.majorPages.whyStudy")} (${Le})`),f(ue,`${s("admin.majorPages.careerPaths")} (${Le})`),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(i,{className:"text-sm font-medium",children:[s("admin.majorPages.requirements")," (",Le,")"]}),e.jsx(G,{value:b[_],onChange:F=>T({...b,[_]:F.target.value}),rows:3,placeholder:s("admin.majorPages.requirementsPlaceholder"),"data-testid":`textarea-requirements-${v}`})]}),ie(Pe,`${s("admin.majorPages.faq")} (${Le})`),e.jsxs("div",{className:"border-t pt-4 space-y-3",children:[e.jsxs("h4",{className:"font-semibold text-sm flex items-center gap-2",children:[e.jsx(Qs,{className:"h-4 w-4"})," ",s("admin.majorPages.seo")," (",Le,")"]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{className:"text-xs",children:s("admin.majorPages.seoTitle")}),e.jsx(g,{value:b[r],onChange:F=>T({...b,[r]:F.target.value}),placeholder:s("admin.majorPages.seoTitlePlaceholder"),"data-testid":`input-seo-title-${v}`})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{className:"text-xs",children:s("admin.majorPages.seoDescription")}),e.jsx(G,{value:b[x],onChange:F=>T({...b,[x]:F.target.value}),rows:2,placeholder:s("admin.majorPages.seoDescPlaceholder"),"data-testid":`textarea-seo-desc-${v}`})]})]})]})},S=()=>{const v=b.relatedMajors?b.relatedMajors.split(",").map(D=>D.trim()).filter(Boolean):[],d=D=>{const _=new Set(v);_.has(D)?_.delete(D):_.add(D),T({...b,relatedMajors:Array.from(_).join(",")})};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h4",{className:"font-semibold text-sm border-b pb-2",children:"Key Stats"}),h("keyStats","Key Stats (EN)"),h("keyStatsUk","Key Stats (UK)"),h("keyStatsEs","Key Stats (ES)")]}),e.jsxs("div",{className:"space-y-4 border-t pt-4",children:[e.jsx("h4",{className:"font-semibold text-sm border-b pb-2",children:"Salary Data"}),w("salaryData","Base / EN"),w("salaryDataUk","UK"),w("salaryDataEs","ES")]}),e.jsxs("div",{className:"space-y-3 border-t pt-4",children:[e.jsx("h4",{className:"font-semibold text-sm border-b pb-2",children:"Job Market"}),["en","uk","es"].map(D=>{const _=D==="en"?"jobMarket":D==="uk"?"jobMarketUk":"jobMarketEs",r=D==="en"?"EN":D==="uk"?"UK":"ES";return e.jsxs("div",{className:"space-y-1",children:[e.jsx(i,{className:"text-xs font-semibold text-muted-foreground uppercase",children:r}),e.jsx(G,{value:b[_],onChange:x=>T({...b,[_]:x.target.value}),rows:3,placeholder:"Describe job market demand and trends...","data-testid":`textarea-job-market-${D}`})]},D)})]}),e.jsxs("div",{className:"space-y-3 border-t pt-4",children:[e.jsx("h4",{className:"font-semibold text-sm border-b pb-2",children:"Related Majors"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Select related fields of study (click to toggle)"}),e.jsx("div",{className:"flex flex-wrap gap-2","data-testid":"related-majors-select",children:xe.filter(D=>D.slug!==z?.slug).map(D=>{const _=q.language==="uk"&&D.nameUk?D.nameUk:q.language==="es"&&D.nameEs?D.nameEs:D.name,r=D.slug,x=v.includes(r);return e.jsx("button",{type:"button",onClick:()=>d(r),"data-testid":`toggle-related-${r}`,className:`px-3 py-1 rounded-full text-xs border transition-colors ${x?"bg-primary text-primary-foreground border-primary":"bg-background text-muted-foreground border-border hover-elevate"}`,children:_},r)})}),v.length>0&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Selected: ",v.join(", ")
1]})]})]})};return M?e.jsx("div",{className:"space-y-4",children:[1,2,3].map(v=>e.jsx(ce,{className:"h-16"},v))}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold","data-testid":"text-major-pages-header",children:s("admin.majorPages.title","Major Pages")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s("admin.majorPages.description")})]}),e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsxs(N,{variant:"outline",children:[K.filter(v=>v.pageStatus==="published").length," ",s("admin.majorPages.publishedCount")]}),e.jsxs(N,{variant:"outline",children:[K.filter(v=>v.pageStatus==="draft").length," ",s("admin.majorPages.draftsCount")]})]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(Cs,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(g,{placeholder:s("admin.majorPages.searchPlaceholder"),value:p,onChange:v=>re(v.target.value),className:"pl-10","data-testid":"input-search-majors"})]}),e.jsx("div",{className:"grid gap-2",children:K.map(v=>e.jsx(Y,{className:"hover-elevate","data-testid":`card-major-${v.id}`,children:e.jsxs(X,{className:"p-4 flex flex-wrap items-center justify-between gap-3",children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx(ms,{className:"h-5 w-5 text-muted-foreground shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"font-medium truncate",children:I(v)}),e.jsxs("div",{className:"text-xs text-muted-foreground flex flex-wrap items-center gap-2",children:[e.jsxs("span",{children:["/",v.slug]}),v.category&&e.jsx(N,{variant:"outline",className:"text-xs",children:v.category})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[R(v.pageStatus),v.slug&&e.jsx("a",{href:`/majors/${v.slug}`,target:"_blank",rel:"noopener noreferrer",children:e.jsx(c,{variant:"outline",size:"icon","data-testid":`button-preview-${v.id}`,children:e.jsx(mt,{className:"h-4 w-4"})})}),e.jsx(c,{variant:"outline",size:"icon",onClick:()=>ge(v),"data-testid":`button-edit-${v.id}`,children:e.jsx(Kn,{className:"h-4 w-4"})})]})]})},v.id))}),e.jsx(fe,{open:!!z,onOpenChange:v=>!v&&j(null),children:e.jsxs(ye,{className:"max-w-3xl max-h-[85vh] overflow-y-auto",children:[e.jsx(Ne,{children:e.jsxs(be,{className:"flex items-center gap-2",children:[e.jsx(ms,{className:"h-5 w-5"}),z&&I(z)," â ",s("admin.majorPages.editPage")]})}),e.jsxs("div",{className:"flex items-center justify-between gap-4 py-2 border-b",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[b.isPublished?e.jsx(Xs,{className:"h-4 w-4 text-emerald-600"}):e.jsx(fi,{className:"h-4 w-4 text-muted-foreground"}),e.jsx(i,{htmlFor:"published-toggle",className:"text-sm",children:b.isPublished?s("admin.majorPages.published"):s("admin.majorPages.draft")}),e.jsx(Fe,{id:"published-toggle",checked:b.isPublished,onCheckedChange:v=>T({...b,isPublished:v}),"data-testid":"switch-published"})]}),z?.slug&&e.jsxs("a",{href:`/majors/${z.slug}`,target:"_blank",rel:"noopener noreferrer",className:"text-sm text-primary flex items-center gap-1",children:[e.jsx(mt,{className:"h-3 w-3"})," /majors/",z.slug]})]}),e.jsxs(pa,{value:C,onValueChange:W,children:[e.jsxs(ja,{className:"w-full",children:[e.jsx(ve,{value:"en",className:"flex-1","data-testid":"tab-lang-en",children:"EN"}),e.jsx(ve,{value:"uk",className:"flex-1","data-testid":"tab-lang-uk",children:"UK"}),e.jsx(ve,{value:"es",className:"flex-1","data-testid":"tab-lang-es",children:"ES"}),e.jsx(ve,{value:"data",className:"flex-1","data-testid":"tab-data-stats",children:"Data & Stats"})]}),e.jsx(je,{value:"en",className:"mt-4",children:pe("en")}),e.jsx(je,{value:"uk",className:"mt-4",children:pe("uk")}),e.jsx(je,{value:"es",className:"mt-4",children:pe("es")}),e.jsx(je,{value:"data",className:"mt-4",children:S()})]}),e.jsxs("div",{className:"flex justify-end gap-2 pt-4 border-t",children:[e.jsx(c,{variant:"outline",onClick:()=>j(null),"data-testid":"button-cancel-edit",children:s("common.cancel")}),e.jsxs(c,{onClick:we,disabled:B.isPending,className:"gap-2","data-testid":"button-save-major-page",children:[e.jsx(Ge,{className:"h-4 w-4"}),B.isPending?s("common.saving"):s("common.save")]})]})]})})]})}function hr(){const{t:s,i18n:q}=fs(),{toast:O}=Ns(),[p,re]=U.useState(!1),[z,j]=U.useState(null),[C,W]=U.useState(""),{data:I=[],isLoading:b,refetch:T}=le({queryKey:["/api/admin/contact-messages",p],queryFn:async()=>{const K=await fetch(`/api/admin/contact-messages?archived=${p}`,{credentials:"include"});if(!K.ok)throw new Error("Failed to fetch messages");return K.json()}}),{data:m}=le({queryKey:["/api/admin/contact-messages/unread-count"],queryFn:async()=>{const K=await fetch("/api/admin/contact-messages/unread-count",{credentials:"include"});if(!K.ok)throw new Error("Failed to fetch unread count");return K.json()}}),M=Q({mutationFn:async({id:K,isRead:R})=>P("PATCH",`/api/admin/contact-messages/${K}`,{isRead:R}),onSuccess:()=>
1{A.invalidateQueries({queryKey:["/api/admin/contact-messages"]}),A.invalidateQueries({queryKey:["/api/admin/contact-messages/unread-count"]})},onError:()=>{O({title:s("admin.messages.errorUpdating","Failed to update message"),variant:"destructive"})}}),xe=Q({mutationFn:async({id:K,isArchived:R})=>P("PATCH",`/api/admin/contact-messages/${K}`,{isArchived:R}),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/contact-messages"]}),O({title:s("admin.messages.archived","Message archived")})},onError:()=>{O({title:s("admin.messages.errorUpdating","Failed to update message"),variant:"destructive"})}}),B=Q({mutationFn:async({id:K,notes:R})=>P("PATCH",`/api/admin/contact-messages/${K}`,{notes:R}),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/contact-messages"]}),O({title:s("admin.messages.notesSaved","Notes saved")})},onError:()=>{O({title:s("admin.messages.errorUpdating","Failed to update message"),variant:"destructive"})}}),oe=Q({mutationFn:async K=>P("DELETE",`/api/admin/contact-messages/${K}`),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/contact-messages"]}),j(null),O({title:s("admin.messages.deleted","Message deleted")})},onError:()=>{O({title:s("admin.messages.errorDeleting","Failed to delete message"),variant:"destructive"})}}),ge=K=>new Date(K).toLocaleDateString(q.language,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}),we=K=>{j(K),W(K.notes||""),K.isRead||M.mutate({id:K.id,isRead:!0})};return b?e.jsxs("div",{className:"space-y-4",children:[e.jsx(ce,{className:"h-10 w-full"}),e.jsx(ce,{className:"h-32 w-full"}),e.jsx(ce,{className:"h-32 w-full"})]}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:s("admin.messages.title","Contact Messages")}),e.jsx("p",{className:"text-muted-foreground text-sm",children:s("admin.messages.description","Collaboration proposals from the contact form")})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[m&&m.count>0&&e.jsxs(N,{variant:"default",className:"gap-1",children:[m.count," ",s("admin.messages.unread","unread")]}),e.jsx(c,{variant:p?"default":"outline",size:"sm",onClick:()=>re(!p),"data-testid":"button-toggle-archived",children:p?e.jsxs(e.Fragment,{children:[e.jsx(Jt,{className:"h-4 w-4 mr-2"}),s("admin.messages.showActive","Show Active")]}):e.jsxs(e.Fragment,{children:[e.jsx(Yt,{className:"h-4 w-4 mr-2"}),s("admin.messages.showArchived","Show Archived")]})})]})]}),I.length===0?e.jsx(Y,{children:e.jsxs(X,{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsx(Ws,{className:"h-12 w-12 text-muted-foreground mb-4"}),e.jsx("h3",{className:"font-semibold text-lg",children:p?s("admin.messages.noArchived","No archived messages"):s("admin.messages.noMessages","No messages yet")}),e.jsx("p",{className:"text-muted-foreground text-sm mt-1",children:p?s("admin.messages.noArchivedDesc","Archived messages will appear here"):s("admin.messages.noMessagesDesc","New collaboration proposals will appear here")})]})}):e.jsx("div",{className:"grid gap-4",children:I.map(K=>e.jsx(Y,{className:`cursor-pointer transition-colors hover-elevate ${K.isRead?"":"border-primary/50 bg-primary/5"}`,onClick:()=>we(K),"data-testid":`card-message-${K.id}`,children:e.jsx(X,{className:"p-4",children:e.jsxs("div",{className:"flex flex-col sm:flex-row items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[!K.isRead&&e.jsx("div",{className:"h-2 w-2 rounded-full bg-primary flex-shrink-0"}),e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground flex-wrap",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ws,{className:"h-3 w-3"}),e.jsx("span",{className:"font-medium text-foreground",children:K.email})]}),K.phone&&e.jsxs(e.Fragment,{children:[e.jsx("span",{children:"|"}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(oi,{className:"h-3 w-3"}),e.jsx("span",{children:K.phone})]})]})]})]}),e.jsx("p",{className:"text-sm line-clamp-2",children:K.message})]}),e.jsx("div",{className:"flex items-center gap-2 text-xs text-muted-foreground flex-shrink-0",children:e.jsx("span",{children:ge(K.createdAt)})})]})})},K.id))}),e.jsx(fe,{open:!!z,onOpenChange:K=>!K&&j(null),children:e.jsxs(ye,{className:"max-w-lg",children:[e.jsx(Ne,{children:e.jsxs(be,{className:"flex items-center gap-2",children:[e.jsx(Ws,{className:"h-5 w-5"}),s("admin.messages.messageDetails","Message Details")]})}),z&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[e.jsx(Ws,{className:"h-4 w-4 text-muted-foreground"}),e.jsxs("span",{className:"font-medium",children:[s("admin.messages.email","Email"),":"]}),e.jsx("a",{href:`mailto:${z.email}`,className:"text-primary hover:underline",children:z.email})]}),z.phone&&e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[e.jsx(oi,{className:"h-4 w-4 text-muted-foreground"}),e.jsxs("span",{className:"font-medium",children:[s("admin.messages.phone","Phone"),":"]}),e.jsx("a",{href:`tel:${z.phone}`,className:"text-primary hover:underline",children:z.phone})]}),e.jsx("div",{className:"text-sm text-muted-foreground",children:ge(z.createdAt)})]}),e.jsxs("div",{className:"bg-muted/50 p-4 rounded-lg",children:[e.jsx(i,{className:"text-xs text-muted-foreground mb-2 block",children:s("admin.messages.message","Message")}),e.jsx("p",{className:"text-sm whitespace-pre-wrap",children:z.message})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{htmlFor:"admin-notes",className:"text-sm font-medium",children:s("admin.messages.notes","Admin Notes")}),e.jsx(G,{id:"admin-notes",placeholder:s("admin.messages.notesPlaceholder","Add notes about this message..."),value:C,onChange:K=>W(K.target.value),rows:3,"data-testid":"textarea-admin-notes"}),e.jsxs(c,{size:"sm",variant:"outline",onClick:()=>B.mutate({id:z.id,notes:C}),disabled:B.isPending,"data-testid":"button-save-notes",children:[B.isPending?e.jsx(ha,{className:"h-4 w-4 animate-spin mr-2"}):e.jsx(Ge,{className:"h-4 w-4 mr-2"}),s("admin.messages.saveNotes","Save Notes")]})]})]}),e.jsxs(Ue,{className:"flex-col sm:flex-row gap-2",children:[z&&!z.isArchived&&e.jsxs(c,{variant:"outline",onClick:()=>{xe.mutate({id:z.id,isArchived:!0}),j(null)},disabled:xe.isPending,"data-testid":"button-archive-message",children:[e.jsx(Yt,{className:"h-4 w-4 mr-2"}),s("admin.messages.archive","Archive")]}),z&&z.isArchived&&e.jsxs(c,{variant:"outline",onClick:()=>{xe.mutate({id:z.id,isArchived:!1}),j(null)},disabled:xe.isPending,"data-testid":"button-unarchive-message",children:[e.jsx(Jt,{className:"h-4 w-4 mr-2"}),s("admin.messages.unarchive","Restore")]}),e.jsxs(c,{variant:"destructive",onClick:()=>z&&oe.mutate(z.id),disabled:oe.isPending,"data-testid":"button-delete-message",children:[e.jsx(Te,{className:"h-4 w-4 mr-2"}),s("admin.messages.delete","Delete")]})]})]})})]})}function pr(){const{t:s}=fs(),[q,O]=U.useState("all"),[p,re]=U.useState(""),[z,j]=U.useState(""),C=()=>q==="custom"&&p&&z?["/api/admin/analytics",q,p,z]:["/api/admin/analytics",q],W=()=>{let m=`/api/admin/analytics?range=${q}`;return q==="custom"&&p&&z&&(m+=`&startDate=${p}&endDate=${z}`),m},{data:I,isLoading:b}=le({queryKey:C(),queryFn:async()=>{const m=await fetch(W(),{credentials:"include"});if(!m.ok)throw new Error("Failed to fetch analytics");return m.json()}}),T=m=>({student:s("admin.roleStudent","Student"),parent:s("admin.roleParent","Parent"),mentor:s("admin.roleMentor","Mentor"),admin:s("admin.roleAdmin","Admin"),super_admin:s("admin.roleSuperAdmin","Super Admin"),country_admin:s("admin.roleCountryAdmin","Country Admin")})[m]||m;return b?e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsx(ce,{className:"h-8 w-48"}),e.jsx(ce,{className:"h-10 w-40"})]}),e.jsx("div",{className:"grid gap-4 md:grid-cols-2 lg:grid-cols-4",children:[1,2,3,4,5,6,7,8].map(m=>e.jsx(ce,{className:"h-32"},m))})]}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold","data-testid":"text-analytics-title",children:s("admin.analyticsTitle","Platform Analytics")}),e.jsx("p",{className:"text-muted-foreground",children:s("admin.analyticsDescription","Key metrics and statistics for your platform")})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs(Z,{value:q,onValueChange:m=>O(m),children:[e.jsx(ee,{className:"w-[180px]","data-testid":"select-time-range",children:e.jsx(se,{placeholder:s("admin.selectTimeRange","Select time range")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"today",children:s("admin.today","Today")}),e.jsx(l,{value:"7d",children:s("admin.last7Days","Last 7 days")}),e.jsx(l,{value:"30d",children:s("admin.last30Days","Last 30 days")}),e.jsx(l,{value:"all",children:s("admin.allTime","All time")}
1),e.jsx(l,{value:"custom",children:s("admin.customRange","Custom Range")})]})]}),q==="custom"&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(g,{type:"date",value:p,onChange:m=>re(m.target.value),className:"w-[150px]","data-testid":"input-start-date"}),e.jsx("span",{className:"text-muted-foreground",children:s("admin.dateTo","to")}),e.jsx(g,{type:"date",value:z,onChange:m=>j(m.target.value),className:"w-[150px]","data-testid":"input-end-date"})]})]})]}),e.jsxs("div",{children:[e.jsxs("h3",{className:"text-lg font-semibold mb-4 flex items-center gap-2",children:[e.jsx(Ds,{className:"h-5 w-5 text-blue-500"}),s("admin.usersAnalytics","Users")]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-2 lg:grid-cols-4",children:[e.jsx(Y,{"data-testid":"analytics-total-users",children:e.jsxs(X,{className:"p-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(Ds,{className:"h-5 w-5 text-blue-500"}),q!=="all"&&I?.newUsersInPeriod!==void 0&&I.newUsersInPeriod>0&&e.jsxs(N,{variant:"secondary",className:"text-xs text-green-600",children:["+",I.newUsersInPeriod]})]}),e.jsxs("div",{className:"mt-4",children:[e.jsx("div",{className:"text-3xl font-bold",children:I?.totalUsers||0}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s("admin.totalUsers","Total Users")})]})]})}),I?.usersByRole?.map(m=>e.jsx(Y,{"data-testid":`analytics-role-${m.role}`,children:e.jsxs(X,{className:"p-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[m.role==="student"&&e.jsx(os,{className:"h-5 w-5 text-green-500"}),m.role==="parent"&&e.jsx(Ds,{className:"h-5 w-5 text-purple-500"}),m.role==="mentor"&&e.jsx(ls,{className:"h-5 w-5 text-orange-500"}),(m.role==="admin"||m.role==="super_admin"||m.role==="country_admin")&&e.jsx(Sa,{className:"h-5 w-5 text-red-500"})]}),e.jsxs("div",{className:"mt-4",children:[e.jsx("div",{className:"text-3xl font-bold",children:m.count}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:T(m.role)})]})]})},m.role))]})]}),e.jsxs("div",{children:[e.jsxs("h3",{className:"text-lg font-semibold mb-4 flex items-center gap-2",children:[e.jsx(Ia,{className:"h-5 w-5 text-purple-500"}),s("admin.publicToolsAnalytics","Public Tools Usage")]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-2 lg:grid-cols-4",children:[e.jsx(Y,{"data-testid":"analytics-questionnaires",children:e.jsxs(X,{className:"p-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(Ia,{className:"h-5 w-5 text-purple-500"}),q!=="all"&&I?.newQuestionnairesInPeriod!==void 0&&I.newQuestionnairesInPeriod>0&&e.jsxs(N,{variant:"secondary",className:"text-xs text-green-600",children:["+",I.newQuestionnairesInPeriod]})]}),e.jsxs("div",{className:"mt-4",children:[e.jsx("div",{className:"text-3xl font-bold",children:I?.totalQuestionnaireSessions||0}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s("admin.questionnaireSessions","Questionnaire Sessions")})]})]})}),e.jsx(Y,{"data-testid":"analytics-completed-questionnaires",children:e.jsxs(X,{className:"p-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(Es,{className:"h-5 w-5 text-green-500"}),e.jsxs(N,{variant:"outline",className:"text-xs",children:[I?.questionnaire
1CompletionRate||0,"%"]})]}),e.jsxs("div",{className:"mt-4",children:[e.jsx("div",{className:"text-3xl font-bold",children:I?.completedQuestionnaires||0}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s("admin.completedQuestionnaires","Completed Questionnaires")})]})]})}),e.jsx(Y,{"data-testid":"analytics-calculations",children:e.jsxs(X,{className:"p-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(xt,{className:"h-5 w-5 text-blue-500"}),q!=="all"&&I?.newCalculationsInPeriod!==void 0&&I.newCalculationsInPeriod>0&&e.jsxs(N,{variant:"secondary",className:"text-xs text-green-600",children:["+",I.newCalculationsInPeriod]})]}),e.jsxs("div",{className:"mt-4",children:[e.jsx("div",{className:"text-3xl font-bold",children:I?.totalCalculations||0}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s("admin.admissionCalculations","Admission Calculations")})]})]})}),e.jsx(Y,{"data-testid":"analytics-admission-plans",children:e.jsxs(X,{className:"p-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(cs,{className:"h-5 w-5 text-orange-500"}),q!=="all"&&I?.newPlansInPeriod!==void 0&&I.newPlansInPeriod>0&&e.jsxs(N,{variant:"secondary",className:"text-xs text-green-600",children:["+",I.newPlansInPeriod]})]}),e.jsxs("div",{className:"mt-4",children:[e.jsx("div",{className:"text-3xl font-bold",children:I?.totalAdmissionPlans||0}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s("admin.admissionPlans","Admission Plans")})]})]})})]})]}),e.jsxs("div",{children:[e.jsxs("h3",{className:"text-lg font-semibold mb-4 flex items-center gap-2",children:[e.jsx(Ts,{className:"h-5 w-5 text-green-500"}),s("admin.mentorshipAnalytics","Mentorship")]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-2 lg:grid-cols-4",children:[e.jsx(Y,{"data-testid":"analytics-mentorship-requests",children:e.jsxs(X,{className:"p-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(Ts,{className:"h-5 w-5 text-green-500"}),q!=="all"&&I?.newRequestsInPeriod!==void 0&&I.newRequestsInPeriod>0&&e.jsxs(N,{variant:"secondary",className:"text-xs text-green-600",children:["+",I.newRequestsInPeriod]})]}),e.jsxs("div",{className:"mt-4",children:[e.jsx("div",{className:"text-3xl font-bold",children:I?.totalMentorshipRequests||0}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s("admin.totalMentorshipRequests","Total Requests")})]})]})}),e.jsx(Y,{"data-testid":"analytics-pending-requests",children:e.jsxs(X,{className:"p-6",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsx(Aa,{className:"h-5 w-5 text-yellow-500"})}),e.jsxs("div",{className:"mt-4",children:[e.jsx("div",{className:"text-3xl font-bold",children:I?.pendingRequests||0}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s("admin.pendingRequests","Pending Requests")})]})]})}),e.jsx(Y,{"data-testid":"analytics-completed-consultations",children:e.jsxs(X,{className:"p-6",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsx(Es,{className:"h-5 w-5 text-green-500"})}),e.jsxs("div",{className:"mt-4",children:[e.jsx("div",{className:"text-3xl font-bold",children:I?.completedConsultations||0}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s("admin.completedConsultations","Completed Consultations")})]})]})})]})]}),e.jsxs("div",{children:[e.jsxs("h3",{className:"text-lg font-semibold mb-4 flex items-center gap-2",children:[e.jsx(ms,{className:"h-5 w-5 text-indigo-500"}),s("admin.contentStats","Content Statistics")]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-2 lg:grid-cols-4",children:[e.jsx(Y,{"data-testid":"analytics-countries",children:e.jsxs(X,{className:"p-6",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsx(Qs,{className:"h-5 w-5 text-blue-500"})}),e.jsxs("div",{className:"mt-4",children:[e.jsx("div",{className:"text-3xl font-bold",children:I?.totalCountries||0}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s("admin.countries","Countries")})]})]})}),e.jsx(Y,{"data-testid":"analytics-universities",children:e.jsxs(X,{className:"p-6",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsx(ms,{className:"h-5 w-5 text-purple-500"})}),e.jsxs("div",{className:"mt-4",children:[e.jsx("div",{className:"text-3xl font-bold",children:I?.totalUniversities||0}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s("admin.universities","Universities")})]})]})}),e.jsx(Y,{"data-testid":"analytics-majors",children:e.jsxs(X,{className:"p-6",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsx(Js,{className:"h-5 w-5 text-green-500"})}),e.jsxs("div",{className:"mt-4",children:[e.jsx("div",{className:"text-3xl font-bold",children:I?.totalMajors||0}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s("admin.majors","Majors")})]})]})}),e.jsx(Y,{"data-testid":"analytics-opportunities",children:e.jsxs(X,{className:"p-6",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsx(Cs,{className:"h-5 w-5 text-orange-500"})}),e.jsxs("div",{className:"mt-4",children:[e.jsx("div",{className:"text-3xl font-bold",children:I?.totalOpportunities||0}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s("admin.opportunities","Opportunities")})]})]})})]})]}),I?.mentorshipRequests&&I.mentorshipRequests.length>0&&e.jsxs("div",{children:[e.jsxs("h3",{className:"text-lg font-semibold mb-4 flex items-center gap-2",children:[e.jsx(Ts,{className:"h-5 w-5 text-blue-500"}),s("admin.mentorshipRequestsDetails","Mentorship Requests Details")]}),e.jsx(Y,{children:e.jsx(X,{className:"p-0",children:e.jsx(zs,{className:"max-h-[400px]",children:e.jsxs(Qe,{"data-testid":"table-mentorship-requests",children:[e.jsx(ze,{children:e.jsxs(ne,{children:[e.jsx(k,{children:s("admin.studentName","Student")}),e.jsx(k,{children:s("admin.mentorName","Mentor")}),e.jsx(k,{children:s("admin.requestTopic","Topic")}),e.jsx(k,{children:s("admin.requestStatus","Status")}),e.jsx(k,{children:s("admin.requestDate","Request Date")})]})}),e.jsx(Re,{children:I.mentorshipRequests.map(m=>e.jsxs(ne,{"data-testid":`row-mentorship-request-${m.id}`,children:[e.jsx(y,{className:"font-medium","data-testid":`text-student-name-${m.id}`,children:m.studentName}),e.jsx(y,{"data-testid":`text-mentor-name-${m.id}`,children:m.mentorName}),e.jsx(y,{className:"max-w-[200px] truncate","data-testid":`text-topic-${m.id}`,children:m.topic}),e.jsx(y,{children:e.jsxs(N,{variant:m.status==="completed"?"default":m.status==="accepted"?"secondary":m.status==="pending"?"outline":"destructive","data-testid":`badge-status-${m.id}`,children:[m.status==="pending"&&s("admin.statusPending","Pending"),m.status==="accepted"&&s("admin.statusAccepted","Accepted"),m.status==="completed"&&s("admin.statusCompleted","Completed"),m.status==="rejected"&&s("admin.statusRejected","Rejected"),m.status==="cancelled"&&s("admin.statusCancelled","Cancelled")]})}),e.jsx(y,{"data-testid":`text-date-${m.id}`,children:new Date(m.createdAt).toLocaleDateString()})]},m.id))})]})})})})]})]})}function Hd(){const{t:s,i18n:q}=fs(),O=q.language,{toast:p}=Ns(),[,re]=fn(),z=a=>{const u=q.language;return u==="uk"&&a.titleUk?a.titleUk:u==="es"&&a.titleEs?a.titleEs:a.title},j=a=>{const u=q.language;return u==="uk"&&a.descriptionUk?a.descriptionUk:u==="es"&&a.descriptionEs?a.descriptionEs:a.description},[C,W]=U.useState("overview"),[I,b]=U.useState(""),[T,m]=U.useState({type:"",item:null,isOpen:!1}),[M,xe]=U.useState({isOpen:!1,mode:"create",user:null}),[B,oe]=U.useState({username:"",password:"",firstName:"",lastName:"",email:"",role:"student"}
1),[ge,we]=U.useState({isOpen:!1,mode:"create"}),[K,R]=U.useState({code:"",name:"",nameUk:"",nameEs:"",flagEmoji:"",isActive:!0}),[f,ie]=U.useState({isOpen:!1,mode:"create",university:null,majorsSynced:!1}),[h,w]=U.useState({id:"",name:"",nameUk:"",nameEs:"",country:"",countryCode:"",city:"",ranking:0,website:"",logoUrl:"",isActive:!0,selectedMajorIds:[],scholarshipInfo:"",scholarshipInfoUk:"",scholarshipInfoEs:"",additionalCosts:"",additionalCostsUk:"",additionalCostsEs:"",campusLife:"",campusLifeUk:"",campusLifeEs:"",internshipInfo:"",internshipInfoUk:"",internshipInfoEs:"",requiredDocuments:"",requiredDocumentsUk:"",requiredDocumentsEs:"",housingOptions:"",housingOptionsUk:"",housingOptionsEs:"",popularFaculties:"",popularFacultiesUk:"",popularFacultiesEs:"",teachingLanguages:""}),[pe,S]=U.useState(""),[v,d]=U.useState({isOpen:!1,mode:"create",major:null}),[D,_]=U.useState({id:"",name:"",nameUk:"",nameEs:"",category:"",description:"",isActive:!0}),[r,x]=U.useState({isOpen:!1,universityId:"",universityName:""}),[V,ue]=U.useState(""),[Pe,Le]=U.useState({isOpen:!1,mode:"create",opportunity:null}),[F,ke]=U.useState({id:"",title:"",titleUk:"",titleEs:"",description:"",descriptionUk:"",descriptionEs:"",type:"",provider:"",country:"",universityId:"",majorId:"",applicationDeadline:"",startDate:"",endDate:"",link:"",requirements:"",fundingAmount:"",promoCode:"",promoDiscount:"",isFeatured:!1,isActive:!0}),[rs,as]=U.useState({isOpen:!1,mode:"create",template:null}),[H,o]=U.useState({id:"",name:"",nameUk:"",nameEs:"",country:"",universityIds:[],majorId:"",description:"",descriptionUk:"",descriptionEs:"",isDefault:!1,isActive:!0}),[$e,t]=U.useState({isOpen:!1,mode:"create",goal:null,templateId:""}),[L,n]=U.useState({id:"",title:"",titleUk:"",titleEs:"",description:"",descriptionUk:"",descriptionEs:"",category:"academic",priority:"medium",monthsBeforeDeadline:12,orderIndex:0}),[J,Ce]=U.useState({isOpen:!1,mode:"create",goal:null}),[he,Xe]=U.useState({id:"",title:"",titleUk:"",titleEs:"",description:"",descriptionUk:"",descriptionEs:"",category:"academic",country:"",priority:"medium",monthsBeforeDeadline:12,isActive:!0}),[us,jt]=U.useState({category:"",country:""}),[Zs,wi]=U.useState(""),[ga,ki]=U.useState("all"),[_e,gt]=U.useState(null),[We,Rs]=U.useState({isOpen:!1,mode:"create",assignment:null,templateId:""}),[Ve,As]=U.useState({goalId:"",orderIndex:0,monthsBeforeDeadline:null,priority:"",isRequired:!0}),[Ta,qa]=U.useState(""),[ys,Oa]=U.useState({category:"",country:""}),[bs,Vs]=U.useState({isOpen:!1,mode:"create",mentor:null}),[$,Ie]=U.useState({id:"",userId:"",specialization:[],universityId:"",majorId:"",countries:[],degree:"",yearsOfExperience:0,bio:"",bioUk:"",bioEs:"",hourlyRate:0,languages:[],isAvailable:!0,isVerified:!1,linkedUniversityIds:[]}),[vt,Ci]=U.useState(""),[Ze,Pa]=U.useState({country:"",status:"",verified:""}),[Bs,ea]=U.useState({open:!1,tutor:null}),[me,Ke]=U.useState({userId:"",name:"",nameUk:"",nameEs:"",subject:"",subjectUk:"",subjectEs:"",specialization:"",specializationUk:"",specializationEs:"",specializations:[],bio:"",bioUk:"",bioEs:"",languages:[],yearsOfExperience:0,hourlyRate:"",isAvailable:!0,isVerified:!1}),[ft,Ei]=U.useState(""),[xs,yt]=U.useState({status:"",verified:""}),[sa,La]=U.useState(""),[aa,$a]=U.useState(""),[va,ta]=U.useState({open:!1,test:null}),[De,es]=U.useState({title:"",titleUk:"",titleEs:"",description:"",descriptionUk:"",descriptionEs:"",category:"",categoryUk:"",categoryEs:"",difficulty:"medium",questionsCount:0,durationMinutes:30,isActive:!0}),[ws,Nt]=U.useState({open:!1,test:null}),[fa,ia]=U.useState({open:!1,question:null}),[de,ts]=U.useState({questionText:"",questionTextUk:"",questionTextEs:"",options:[{text:"",textUk:"",textEs:""},{text:"",textUk:"",textEs:""},{text:"",textUk:"",textEs:""},{text:"",textUk:"",textEs:""}],correctOptionIndex:0,explanation:"",explanationUk:"",explanationEs:"",orderIndex:0}),[bt,Ma]=U.useState(!1),[wt,Ui]=U.useState(""),[ds,kt]=U.useState({country:"",status:""}),[Ct,Si]=U.useState("name"),[na,Ka]=U.useState(""),[jr,gr]=U.useState(""),{data:qe,isLoading:Di}=le({queryKey:["/api/admin/check-access"]}),{data:qs,isLoading:vr}=le({queryKey:["/api/admin/stats"],enabled:!!qe?.hasAccess}),{data:ra,isLoading:Ai}=le({queryKey:["/api/admin/users"],enabled:!!qe?.hasAccess}),{data:Je,isLoading:Ii}=le({queryKey:["/api/admin/countries"],enabled:!!qe?.hasAccess}),{data:Is,isLoading:Fi}=le({queryKey:["/api/admin/universities"],enabled:!!qe?.hasAccess}),{data:Os,isLoading:Ti}=le({queryKey:["/api/admin/majors"],enabled:!!qe?.hasAccess}),{data:qi,isLoading:Oi}=le({queryKey:["/api/admin/opportunities"],enabled:!!qe?.hasAccess}),{data:Qa,isLoading:Pi}=le({queryKey:["/api/admin/mentors"],enabled:!!qe?.hasAccess}),{data:za,isLoading:Li}=le({queryKey:["/api/admin/tutors"]}),{data:Ra,isLoading:$i}=le({queryKey:["/api/admin/practice-tests"]}),Va=ws.test?.id,{data:ya,isLoading:Mi}=le({queryKey:["/api/admin/practice-tests",Va,"questions"],queryFn:async()=>{const a=await fetch(`/api/admin/practice-tests/${Va}/questions`,{credentials:"include"});if(!a.ok)throw new Error("Failed to fetch questions");return a.json()},enabled:!!Va}),{data:Na,isLoading:Ki}=le({queryKey:["/api/admin/templates"],enabled:!!qe?.hasAccess}),{data:fr,isLoading:yr}=le({queryKey:[`/api/admin/templates/${_e}/goals`],enabled:!!_e}),{data:da,isLoading:Et}=le({queryKey:["/api/admin/goal-catalog"],enabled:!!qe?.hasAccess}),{data:hs,isLoading:Qi}=le({queryKey:["/api/admin/templates",_e,"assigned-goals"],enabled:!!_e}),{data:Nr,isLoading:br}=le({queryKey:["/api/admin/scoring-configs"],enabled:!!qe?.hasAccess}),Ut=f.mode==="edit"&&f.university?f.university.id:r.isOpen?r.universityId:void 0,{data:Ps,isLoading:zi}=le({queryKey:["/api/admin/university-majors",{universityId:Ut}],enabled:!!qe?.hasAccess&&!!Ut});U.useEffect(()=>{if(f.mode==="edit"&&f.university&&Ps&&!f.majorsSynced){const a=f.university.id,u=Ps.filter(E=>E.universityId===a).map(E=>E.majorId);w(E=>({...E,selectedMajorIds:u})),ie(E=>({...E,majorsSynced:!0}))}},[Ps,f.university?.id,f.mode,f.majorsSynced]);const{data:_s,isLoading:St}=le({queryKey:["/api/admin/audit-logs",{limit:50}],enabled:!!qe?.hasAccess}),Ri=Q({mutationFn:async a=>P("POST","/api/admin/users",a),onSuccess:()=>
1{A.invalidateQueries({queryKey:["/api/admin/users"]}),A.invalidateQueries({queryKey:["/api/admin/stats"]}),xe({isOpen:!1,mode:"create",user:null}),oe({username:"",password:"",firstName:"",lastName:"",email:"",role:"student"}),p({title:s("common.success"),description:s("admin.userCreated")})},onError:a=>{p({title:s("common.error"),description:a?.message||s("admin.userCreateFailed"),variant:"destructive"})}}),Us=Q({mutationFn:async({id:a,data:u})=>P("PATCH",`/api/admin/users/${a}`,u),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/users"]}),A.invalidateQueries({queryKey:["/api/admin/stats"]}),xe({isOpen:!1,mode:"create",user:null}),oe({username:"",password:"",firstName:"",lastName:"",email:"",role:"student"}),p({title:s("common.success"),description:s("admin.userUpdated")})},onError:()=>{p({title:s("common.error"),description:s("admin.userUpdateFailed"),variant:"destructive"})}}),Vi=Q({mutationFn:async a=>P("DELETE",`/api/admin/users/${a}`),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/users"]}
1),A.invalidateQueries({queryKey:["/api/admin/stats"]}),p({title:s("common.success"),description:s("admin.userDeleted")})},onError:()=>{p({title:s("common.error"),description:s("admin.userDeleteFailed"),variant:"destructive"})}}),Dt=Q({mutationFn:async({id:a,data:u,newMajorIds:E,oldMajorIds:te})=>{const Ae=await P("PATCH",`/api/admin/universities/${a}`,u);if(E&&te){const Me=E.filter(ns=>!te.includes(ns)),is=te.filter(ns=>!E.includes(ns));for(const ns of Me)await P("POST","/api/admin/university-majors",{universityId:a,majorId:ns});if(is.length>0){const ca=await(await P("GET",`/api/admin/university-majors?universityId=${a}`)).json();for(const gn of is){const $t=ca.find(vn=>vn.majorId===gn);$t&&await P("DELETE",`/api/admin/university-majors/${$t.id}`)}}}return Ae},onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/universities"]}),A.invalidateQueries({queryKey:["/api/admin/university-majors"]}),A.invalidateQueries({queryKey:["/api/admin/stats"]}),ie({isOpen:!1,mode:"create",university:null,majorsSynced:!1}),w({id:"",name:"",nameUk:"",nameEs:"",country:"",countryCode:"",city:"",ranking:0,website:"",logoUrl:"",isActive:!0,selectedMajorIds:[],scholarshipInfo:"",scholarshipInfoUk:"",scholarshipInfoEs:"",additionalCosts:"",additionalCostsUk:"",additionalCostsEs:"",campusLife:"",campusLifeUk:"",campusLifeEs:"",internshipInfo:"",internshipInfoUk:"",internshipInfoEs:"",requiredDocuments:"",requiredDocumentsUk:"",requiredDocumentsEs:"",housingOptions:"",housingOptionsUk:"",housingOptionsEs:"",popularFaculties:"",popularFacultiesUk:"",popularFacultiesEs:"",teachingLanguages:""}),S(""),p({title:s("common.success"),description:s("admin.universityUpdated")})},onError:()=>{p({title:s("common.error"),description:s("admin.universityUpdateFailed"),variant:"destructive"})}}),Bi=Q({mutationFn:async a=>P("DELETE",`/api/admin/universities/${a}`),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/universities"]}),p({title:s("common.success"),description:"University deleted successfully"})},onError:()=>{p({title:s("common.error"),description:"Failed to delete university",variant:"destructive"})}}),_i=Q({mutationFn:async a=>P("POST","/api/admin/opportunities",a),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/opportunities"]}
1),A.invalidateQueries({queryKey:["/api/admin/stats"]}),Le({isOpen:!1,mode:"create",opportunity:null}),ke({id:"",title:"",titleUk:"",titleEs:"",description:"",descriptionUk:"",descriptionEs:"",type:"",provider:"",country:"",universityId:"",majorId:"",applicationDeadline:"",startDate:"",endDate:"",link:"",requirements:"",fundingAmount:"",promoCode:"",promoDiscount:"",isFeatured:!1,isActive:!0}),p({title:s("common.success"),description:s("admin.opportunityCreated")})},onError:a=>{p({title:s("common.error"),description:a?.message||s("admin.opportunityCreateFailed"),variant:"destructive"})}}),Hi=Q({mutationFn:async({id:a,data:u})=>P("PATCH",`/api/admin/opportunities/${a}`,u),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/opportunities"]}),A.invalidateQueries({queryKey:["/api/admin/stats"]}),Le({isOpen:!1,mode:"create",opportunity:null}),ke({id:"",title:"",titleUk:"",titleEs:"",description:"",descriptionUk:"",descriptionEs:"",type:"",provider:"",country:"",universityId:"",majorId:"",applicationDeadline:"",startDate:"",endDate:"",link:"",requirements:"",fundingAmount:"",promoCode:"",promoDiscount:"",isFeatured:!1,isActive:!0}),p({title:s("common.success"),description:s("admin.opportunityUpdated")})},onError:()=>{p({title:s("common.error"),description:s("admin.opportunityUpdateFailed"),variant:"destructive"})}}),Gi=Q({mutationFn:async a=>P("DELETE",`/api/admin/opportunities/${a}`),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/opportunities"]}
1),A.invalidateQueries({queryKey:["/api/admin/stats"]}),p({title:s("common.success"),description:s("admin.opportunityDeleted")})},onError:()=>{p({title:s("common.error"),description:s("admin.opportunityDeleteFailed"),variant:"destructive"})}}),Wi=Q({mutationFn:async a=>await(await P("POST","/api/admin/mentors",a)).json(),onSuccess:async a=>{if($.linkedUniversityIds.length>0&&a?.id)try{await P("PUT",`/api/admin/mentors/${a.id}/universities`,{universityIds:$.linkedUniversityIds})}catch(u){console.error("Failed to save mentor universities:",u)}A.invalidateQueries({queryKey:["/api/admin/mentors"]}),A.invalidateQueries({queryKey:["/api/admin/stats"]}),Vs({isOpen:!1,mode:"create",mentor:null}),Ie({id:"",userId:"",specialization:[],universityId:"",majorId:"",countries:[],degree:"",yearsOfExperience:0,bio:"",bioUk:"",bioEs:"",hourlyRate:0,languages:[],isAvailable:!0,isVerified:!1,linkedUniversityIds:[]}),p({title:s("common.success"),description:s("admin.mentorCreated")})},onError:a=>{p({title:s("common.error"),description:a?.message||s("admin.mentorCreateFailed"),variant:"destructive"})}}),Ba=Q({mutationFn:async({id:a,data:u})=>P("PATCH",`/api/admin/mentors/${a}`,u),onSuccess:async()=>{if(bs.mentor?.id)try{await P("PUT",`/api/admin/mentors/${bs.mentor.id}/universities`,{universityIds:$.linkedUniversityIds})}catch(a){console.error("Failed to save mentor universities:",a)}A.invalidateQueries({queryKey:["/api/admin/mentors"]}
1),A.invalidateQueries({queryKey:["/api/admin/stats"]}),Vs({isOpen:!1,mode:"create",mentor:null}),Ie({id:"",userId:"",specialization:[],universityId:"",majorId:"",countries:[],degree:"",yearsOfExperience:0,bio:"",bioUk:"",bioEs:"",hourlyRate:0,languages:[],isAvailable:!0,isVerified:!1,linkedUniversityIds:[]}),p({title:s("common.success"),description:s("admin.mentorUpdated")})},onError:()=>{p({title:s("common.error"),description:s("admin.mentorUpdateFailed"),variant:"destructive"})}}),Ji=Q({mutationFn:async a=>P("DELETE",`/api/admin/mentors/${a}`),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/mentors"]}),A.invalidateQueries({queryKey:["/api/admin/stats"]}),p({title:s("common.success"),description:s("admin.mentorDeleted")})},onError:()=>{p({title:s("common.error"),description:s("admin.mentorDeleteFailed"),variant:"destructive"})}}),At=Q({mutationFn:async a=>P("POST","/api/admin/tutors",a),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/tutors"]}),ea({open:!1,tutor:null}),Ke({userId:"",name:"",nameUk:"",nameEs:"",subject:"",subjectUk:"",subjectEs:"",specialization:"",specializationUk:"",specializationEs:"",specializations:[],bio:"",bioUk:"",bioEs:"",languages:[],yearsOfExperience:0,hourlyRate:"",isAvailable:!0,isVerified:!1}),p({title:s("common.success"),description:s("admin.tutorCreated","Tutor created")})},onError:a=>{p({title:s("common.error"),description:a?.message||s("admin.tutorCreateFailed","Failed to create tutor"),variant:"destructive"})}}),ba=Q({mutationFn:async({id:a,data:u})=>P("PATCH",`/api/admin/tutors/${a}`,u),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/tutors"]}),ea({open:!1,tutor:null}),Ke({userId:"",name:"",nameUk:"",nameEs:"",subject:"",subjectUk:"",subjectEs:"",specialization:"",specializationUk:"",specializationEs:"",specializations:[],bio:"",bioUk:"",bioEs:"",languages:[],yearsOfExperience:0,hourlyRate:"",isAvailable:!0,isVerified:!1}),p({title:s("common.success"),description:s("admin.tutorUpdated","Tutor updated")})},onError:()=>{p({title:s("common.error"),description:s("admin.tutorUpdateFailed","Failed to update tutor"),variant:"destructive"})}}),Yi=Q({mutationFn:async a=>P("DELETE",`/api/admin/tutors/${a}`),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/tutors"]}),p({title:s("common.success"),description:s("admin.tutorDeleted","Tutor deleted")})},onError:()=>{p({title:s("common.error"),description:s("admin.tutorDeleteFailed","Failed to delete tutor"),variant:"destructive"})}}),It=Q({mutationFn:async a=>P("POST","/api/admin/practice-tests",a),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/practice-tests"]}),ta({open:!1,test:null}),es({title:"",titleUk:"",titleEs:"",description:"",descriptionUk:"",descriptionEs:"",category:"",categoryUk:"",categoryEs:"",difficulty:"medium",questionsCount:0,durationMinutes:30,isActive:!0}),p({title:s("common.success"),description:s("admin.testCreated","Test created")})},onError:a=>{p({title:s("common.error"),description:a?.message||s("admin.testCreateFailed","Failed to create test"),variant:"destructive"})}}),Ft=Q({mutationFn:async({id:a,data:u})=>P("PATCH",`/api/admin/practice-tests/${a}`,u),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/practice-tests"]}),ta({open:!1,test:null}),es({title:"",titleUk:"",titleEs:"",description:"",descriptionUk:"",descriptionEs:"",category:"",categoryUk:"",categoryEs:"",difficulty:"medium",questionsCount:0,durationMinutes:30,isActive:!0}),p({title:s("common.success"),description:s("admin.testUpdated","Test updated")})},onError:()=>{p({title:s("common.error"),description:s("admin.testUpdateFailed","Failed to update test"),variant:"destructive"})}}),Xi=Q({mutationFn:async a=>P("DELETE",`/api/admin/practice-tests/${a}`),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/practice-tests"]}),p({title:s("common.success"),description:s("admin.testDeleted","Test deleted")})},onError:()=>{p({title:s("common.error"),description:s("admin.testDeleteFailed","Failed to delete test"),variant:"destructive"})}}),Tt=Q({mutationFn:async({testId:a,status:u})=>P("PATCH",`/api/admin/practice-tests/${a}`,{approvalStatus:u}),onSuccess:()=>
1{A.invalidateQueries({queryKey:["/api/admin/practice-tests"]}),p({title:s("common.success"),description:s("admin.approvalUpdated","Approval status updated")})},onError:()=>{p({title:s("common.error"),description:s("admin.approvalUpdateFailed","Failed to update approval status"),variant:"destructive"})}}),_a=Q({mutationFn:async a=>P("POST",`/api/admin/practice-tests/${ws.test?.id}/questions`,a),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/practice-tests",ws.test?.id,"questions"]}),A.invalidateQueries({queryKey:["/api/admin/practice-tests"]}),ia({open:!1,question:null}),p({title:s("admin.questionCreated","Question created")})}}),Ha=Q({mutationFn:async({id:a,data:u})=>P("PATCH",`/api/admin/practice-tests/${ws.test?.id}/questions/${a}`,u),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/practice-tests",ws.test?.id,"questions"]}),ia({open:!1,question:null}),p({title:s("admin.questionUpdated","Question updated")})}}),Zi=Q({mutationFn:async a=>P("DELETE",`/api/admin/practice-tests/${ws.test?.id}/questions/${a}`),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/practice-tests",ws.test?.id,"questions"]}
1),A.invalidateQueries({queryKey:["/api/admin/practice-tests"]}),p({title:s("admin.questionDeleted","Question deleted")})}}),en=Q({mutationFn:async a=>{const{universityIds:u,...E}=a,Ae=await(await P("POST","/api/admin/templates",E)).json();return u&&u.length>0&&await P("PUT",`/api/admin/templates/${Ae.id}/universities`,{universityIds:u}),Ae},onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/templates"]}),as({isOpen:!1,mode:"create",template:null}),o({id:"",name:"",nameUk:"",nameEs:"",country:"",universityIds:[],majorId:"",description:"",descriptionUk:"",descriptionEs:"",isDefault:!1,isActive:!0}),p({title:s("common.success"),description:s("admin.templateCreated")})},onError:()=>{p({title:s("common.error"),description:s("admin.templateCreateFailed"),variant:"destructive"})}}),sn=Q({mutationFn:async({id:a,data:u,universityIds:E})=>{await P("PATCH",`/api/admin/templates/${a}`,u),E!==void 0&&await P("PUT",`/api/admin/templates/${a}/universities`,{universityIds:E})},onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/templates"]}),as({isOpen:!1,mode:"create",template:null}),o({id:"",name:"",nameUk:"",nameEs:"",country:"",universityIds:[],majorId:"",description:"",descriptionUk:"",descriptionEs:"",isDefault:!1,isActive:!0}),p({title:s("common.success"),description:s("admin.templateUpdated")})},onError:()=>{p({title:s("common.error"),description:s("admin.templateUpdateFailed"),variant:"destructive"})}}),an=Q({mutationFn:async a=>P("DELETE",`/api/admin/templates/${a}`),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/templates"]}),_e&>(null),p({title:s("common.success"),description:s("admin.templateDeleted")})},onError:()=>{p({title:s("common.error"),description:s("admin.templateDeleteFailed"),variant:"destructive"})}}),tn=Q({mutationFn:async({templateId:a,data:u})=>P("POST",`/api/admin/templates/${a}/goals`,u),onSuccess:()=>{A.invalidateQueries({queryKey:[`/api/admin/templates/${_e}/goals`]}),t({isOpen:!1,mode:"create",goal:null,templateId:""}),n({id:"",title:"",titleUk:"",titleEs:"",description:"",descriptionUk:"",descriptionEs:"",category:"academic",priority:"medium",monthsBeforeDeadline:12,orderIndex:0}),p({title:s("common.success"),description:s("admin.goalCreated")})},onError:()=>{p({title:s("common.error"),description:s("admin.goalCreateFailed"),variant:"destructive"})}}),nn=Q({mutationFn:async({id:a,data:u})=>P("PATCH",`/api/admin/template-goals/${a}`,u),onSuccess:()=>{A.invalidateQueries({queryKey:[`/api/admin/templates/${_e}/goals`]}),t({isOpen:!1,mode:"create",goal:null,templateId:""}),n({id:"",title:"",titleUk:"",titleEs:"",description:"",descriptionUk:"",descriptionEs:"",category:"academic",priority:"medium",monthsBeforeDeadline:12,orderIndex:0}),p({title:s("common.success"),description:s("admin.goalUpdated")})},onError:()=>{p({title:s("common.error"),description:s("admin.goalUpdateFailed"),variant:"destructive"})}});Q({mutationFn:async a=>P("DELETE",`/api/admin/template-goals/${a}`),onSuccess:()=>{A.invalidateQueries({queryKey:[`/api/admin/templates/${_e}/goals`]}),p({title:s("common.success"),description:s("admin.goalDeleted")})},onError:()=>{p({title:s("common.error"),description:s("admin.goalDeleteFailed"),variant:"destructive"})}});const rn=Q({mutationFn:async a=>P("POST","/api/admin/goal-catalog",a),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/goal-catalog"]}),Ce({isOpen:!1,mode:"create",goal:null}),Xe({id:"",title:"",titleUk:"",titleEs:"",description:"",descriptionUk:"",descriptionEs:"",category:"academic",country:"",priority:"medium",monthsBeforeDeadline:12,isActive:!0}),p({title:s("common.success"),description:s("admin.catalogGoalCreated")})},onError:()=>{p({title:s("common.error"),description:s("admin.catalogGoalCreateFailed"),variant:"destructive"})}}),dn=Q({mutationFn:async({id:a,data:u})=>P("PATCH",`/api/admin/goal-catalog/${a}`,u),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/goal-catalog"]}),Ce({isOpen:!1,mode:"create",goal:null}),Xe({id:"",title:"",titleUk:"",titleEs:"",description:"",descriptionUk:"",descriptionEs:"",category:"academic",country:"",priority:"medium",monthsBeforeDeadline:12,isActive:!0}),p({title:s("common.success"),description:s("admin.catalogGoalUpdated")})},onError:()=>{p({title:s("common.error"),description:s("admin.catalogGoalUpdateFailed"),variant:"destructive"})}}),ln=Q({mutationFn:async a=>P("DELETE",`/api/admin/goal-catalog/${a}`),onSuccess:()=>
1{A.invalidateQueries({queryKey:["/api/admin/goal-catalog"]}),p({title:s("common.success"),description:s("admin.catalogGoalDeleted")})},onError:()=>{p({title:s("common.error"),description:s("admin.catalogGoalDeleteFailed"),variant:"destructive"})}}),cn=Q({mutationFn:async({templateId:a,data:u})=>P("POST",`/api/admin/templates/${a}/assigned-goals`,u),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/templates",_e,"assigned-goals"]}),Rs({isOpen:!1,mode:"create",assignment:null,templateId:""}),As({goalId:"",orderIndex:0,monthsBeforeDeadline:null,priority:"",isRequired:!0}),qa(""),p({title:s("common.success"),description:s("admin.goalAssigned")})},onError:()=>{p({title:s("common.error"),description:s("admin.goalAssignFailed"),variant:"destructive"})}}),la=Q({mutationFn:async({id:a,data:u})=>P("PATCH",`/api/admin/template-goal-assignments/${a}`,u),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/templates",_e,"assigned-goals"]}),Rs({isOpen:!1,mode:"create",assignment:null,templateId:""}),As({goalId:"",orderIndex:0,monthsBeforeDeadline:null,priority:"",isRequired:!0}),p({title:s("common.success"),description:s("admin.goalAssignmentUpdated")})},onError:()=>{p({title:s("common.error"),description:s("admin.goalAssignmentUpdateFailed"),variant:"destructive"})}}),on=Q({mutationFn:async a=>P("DELETE",`/api/admin/template-goal-assignments/${a}`),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/templates",_e,"assigned-goals"]}),p({title:s("common.success"),description:s("admin.goalUnassigned")})},onError:()=>{p({title:s("common.error"),description:s("admin.goalUnassignFailed"),variant:"destructive"})}}),mn=Q({mutationFn:async({code:a,data:u})=>P("PATCH",`/api/admin/countries/${a}`,u),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/countries"]}
1),A.invalidateQueries({queryKey:["/api/countries"]}),m({type:"",item:null,isOpen:!1}),p({title:s("common.success"),description:s("admin.countryUpdated")})},onError:()=>{p({title:s("common.error"),description:s("admin.countryUpdateFailed"),variant:"destructive"})}}),un=Q({mutationFn:async a=>P("POST","/api/admin/countries",a),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/countries"]}),A.invalidateQueries({queryKey:["/api/countries"]}),we({isOpen:!1,mode:"create"}),R({code:"",name:"",nameUk:"",nameEs:"",flagEmoji:"",isActive:!0}),p({title:s("common.success"),description:s("admin.countryCreated")})},onError:a=>{p({title:s("common.error"),description:a?.message||s("admin.countryCreateFailed"),variant:"destructive"})}}),xn=Q({mutationFn:async a=>{const{majorIds:u,...E}=a,Ae=await(await P("POST","/api/admin/universities",E)).json();if(u&&u.length>0)for(const Me of u)await P("POST","/api/admin/university-majors",{universityId:Ae.id,majorId:Me});return Ae},onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/universities"]}
1),A.invalidateQueries({queryKey:["/api/admin/university-majors"]}),A.invalidateQueries({queryKey:["/api/admin/stats"]}),ie({isOpen:!1,mode:"create",university:null,majorsSynced:!1}),w({id:"",name:"",nameUk:"",nameEs:"",country:"",countryCode:"",city:"",ranking:0,website:"",logoUrl:"",isActive:!0,selectedMajorIds:[],scholarshipInfo:"",scholarshipInfoUk:"",scholarshipInfoEs:"",additionalCosts:"",additionalCostsUk:"",additionalCostsEs:"",campusLife:"",campusLifeUk:"",campusLifeEs:"",internshipInfo:"",internshipInfoUk:"",internshipInfoEs:"",requiredDocuments:"",requiredDocumentsUk:"",requiredDocumentsEs:"",housingOptions:"",housingOptionsUk:"",housingOptionsEs:"",popularFaculties:"",popularFacultiesUk:"",popularFacultiesEs:"",teachingLanguages:""}),S(""),p({title:s("common.success"),description:s("admin.universityCreated")})},onError:a=>{p({title:s("common.error"),description:a?.message||s("admin.universityCreateFailed"),variant:"destructive"})}}),hn=Q({mutationFn:async a=>P("POST","/api/admin/majors",a),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/majors"]}),d({isOpen:!1,mode:"create",major:null}),_({id:"",name:"",nameUk:"",nameEs:"",category:"",description:"",isActive:!0}),p({title:s("common.success"),description:s("admin.majorCreated")})},onError:a=>{p({title:s("common.error"),description:a?.message||s("admin.majorCreateFailed"),variant:"destructive"})}}),pn=Q({mutationFn:async({id:a,data:u})=>P("PATCH",`/api/admin/majors/${a}`,u),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/majors"]}),d({isOpen:!1,mode:"create",major:null}),_({id:"",name:"",nameUk:"",nameEs:"",category:"",description:"",isActive:!0}),p({title:s("common.success"),description:s("admin.majorUpdated")})},onError:()=>{p({title:s("common.error"),description:s("admin.majorUpdateFailed"),variant:"destructive"})}}),jn=Q({mutationFn:async a=>P("DELETE",`/api/admin/majors/${a}`),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/majors"]}),p({title:s("common.success"),description:s("admin.majorDeleted")})},onError:()=>{p({title:s("common.error"),description:s("admin.majorDeleteFailed"),variant:"destructive"})}}),qt=Q({mutationFn:async a=>P("POST","/api/admin/university-majors",a),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/university-majors"]}),ue(""),p({title:s("common.success"),description:s("admin.majorAssigned")})},onError:a=>{p({title:s("common.error"),description:a?.message||s("admin.majorAssignFailed"),variant:"destructive"})}}),Ot=Q({mutationFn:async a=>P("DELETE",`/api/admin/university-majors/${a}`),onSuccess:()=>{A.invalidateQueries({queryKey:["/api/admin/university-majors"]}),p({title:s("common.success"),description:s("admin.majorUnassigned")})},onError:()=>{p({title:s("common.error"),description:s("admin.majorUnassignFailed"),variant:"destructive"})}}),Pt=a=>{switch(a){case"super_admin":return"bg-purple-500/10 text-purple-500 border-purple-500/20";case"country_admin":return"bg-orange-500/10 text-orange-500 border-orange-500/20";case"admin":return"bg-red-500/10 text-red-500 border-red-500/20";case"mentor":return"bg-blue-500/10 text-blue-500 border-blue-500/20";case"parent":return"bg-green-500/10 text-green-500 border-green-500/20";default:return"bg-gray-500/10 text-gray-500 border-gray-500/20"}},Lt=a=>{switch(a){case"create":return"text-green-500";case"update":return"text-blue-500";case"delete":return"text-red-500";default:return"text-muted-foreground"}};if(Di)return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsx(ce,{className:"h-12 w-64"}),e.jsx("div",{className:"grid gap-4 md:grid-cols-4",children:[1,2,3,4].map(a=>e.jsx(ce,{className:"h-32"},a))})]});if(!qe?.hasAccess)return e.jsxs("div",{className:"p-6 flex flex-col items-center justify-center min-h-[60vh]",children:[e.jsx(Aa,{className:"h-16 w-16 text-destructive mb-4"}),e.jsx("h1",{className:"text-[30px] font-bold mb-2",children:s("admin.accessDenied")}),e.jsx("p",{className:"text-muted-foreground text-center max-w-md",children:s("admin.accessDeniedDescription")})]});const Ga=ra?.filter(a=>{const u=`${a.firstName} ${a.lastName}`.toLowerCase(),E=(a.email||"").toLowerCase();return u.includes(I.toLowerCase())||E.includes(I.toLowerCase())}),Wa=Is?.filter(a=>{const u=wt.toLowerCase(),E=Oe(a,O),te=!u||a.name.toLowerCase().includes(u)||E.toLowerCase().includes(u)||(a.nameUk||"").toLowerCase().includes(u)||(a.nameEs||"").toLowerCase().includes(u)||(a.city||"").toLowerCase().includes(u),Ae=ds.country==="all"||!ds.country||a.countryCode===ds.country,Me=
1ds.status==="all"||!ds.status||ds.status==="active"&&a.isActive||ds.status==="inactive"&&!a.isActive;return te&&Ae&&Me})?.sort((a,u)=>{if(Ct==="updatedAt"){const E=a.updatedAt?new Date(a.updatedAt).getTime():0;return(u.updatedAt?new Date(u.updatedAt).getTime():0)-E}return Oe(a,O).localeCompare(Oe(u,O),O)}),Ja=Os?.filter(a=>a.name.toLowerCase().includes(I.toLowerCase())),Ya=qi?.filter(a=>a.title.toLowerCase().includes(I.toLowerCase())),Xa=Je?.filter(a=>a.name.toLowerCase().includes(I.toLowerCase())||a.code.toLowerCase().includes(I.toLowerCase()));return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center md:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-[30px] font-bold tracking-tight flex items-center gap-2","data-testid":"text-admin-title",children:[e.jsx(Sa,{className:"h-8 w-8"}),s("admin.title")]}),e.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[e.jsx(N,{variant:"outline",className:Pt(qe.role),children:qe.role.replace("_"," ").toUpperCase()}),qe.isCountryAdmin&&qe.adminCountries.length>0&&e.jsxs("span",{className:"text-sm text-muted-foreground",children:["(",qe.adminCountries.join(", "),")"]})]})]}),e.jsx("div",{className:"flex gap-2",children:e.jsxs(c,{variant:"outline",onClick:()=>{A.invalidateQueries({queryKey:["/api/admin"]})},"data-testid":"button-refresh-admin",children:[e.jsx(Gs,{className:"h-4 w-4 mr-2"}),s("common.refresh")]})})]}),e.jsx(pa,{value:C,onValueChange:W,children:e.jsxs("div",{className:"flex flex-col lg:flex-row gap-6",children:[e.jsxs("div",{className:"lg:w-56 flex-shrink-0",children:[e.jsx(Y,{className:"hidden lg:block",children:e.jsx(X,{className:"p-2",children:e.jsxs("nav",{className:"space-y-1",children:[e.jsxs(c,{variant:C==="overview"?"secondary":"ghost",className:"w-full justify-start gap-2",onClick:()=>W("overview"),"data-testid":"nav-overview",children:[e.jsx(xt,{className:"h-4 w-4"}),s("admin.overview")]}),e.jsxs("div",{className:"pt-2",children:[e.jsx("p",{className:"px-3 py-1 text-xs font-semibold text-muted-foreground uppercase tracking-wider",children:s("admin.usersManagement")}),e.jsxs(c,{variant:C==="users"?"secondary":"ghost",className:"w-full justify-start gap-2",onClick:()=>W("users"),"data-testid":"nav-users",children:[e.jsx(Ds,{className:"h-4 w-4"}),s("admin.users")]}),e.jsxs(c,{variant:C==="mentors"?"secondary":"ghost",className:"w-full justify-start gap-2",onClick:()=>W("mentors"),"data-testid":"nav-mentors",children:[e.jsx(at,{className:"h-4 w-4"}),s("admin.mentors")]}),e.jsxs(c,{variant:C==="tutors"?"secondary":"ghost",className:"w-full justify-start gap-2",onClick:()=>W("tutors"),"data-testid":"nav-tutors",children:[e.jsx(Za,{className:"h-4 w-4"}),s("admin.tutors","Tutors")]}),e.jsxs(c,{variant:C==="tests"?"secondary":"ghost",className:"w-full justify-start gap-2",onClick:()=>W("tests"),"data-testid":"nav-tests",children:[e.jsx(et,{className:"h-4 w-4"}),s("admin.practiceTests","Tests")]})]}),e.jsxs("div",{className:"pt-2",children:[e.jsx("p",{className:"px-3 py-1 text-xs font-semibold text-muted-foreground uppercase tracking-wider",children:s("admin.educationalData")}),e.jsxs(c,{variant:C==="countries"?"secondary":"ghost",className:"w-full justify-start gap-2",onClick:()=>W("countries"),"data-testid":"nav-countries",children:[e.jsx(Qs,{className:"h-4 w-4"}),s("admin.countries")]}),e.jsxs(c,{variant:C==="universities"?"secondary":"ghost",className:"w-full justify-start gap-2",onClick:()=>W("universities"),"data-testid":"nav-universities",children:[e.jsx(ms,{className:"h-4 w-4"}),s("admin.universities")]}),e.jsxs(c,{variant:C==="majors"?"secondary":"ghost",className:"w-full justify-start gap-2",onClick:()=>W("majors"),"data-testid":"nav-majors",children:[e.jsx(Js,{className:"h-4 w-4"}),s("admin.majors")]}),e.jsxs(c,{variant:C==="major-pages"?"secondary":"ghost",className:"w-full justify-start gap-2 pl-7",onClick:()=>W("major-pages"),"data-testid":"nav-major-pages",children:[e.jsx(cs,{className:"h-4 w-4"}),s("admin.majorPages.title","Major Pages")]})]}),e.jsxs("div",{className:"pt-2",children:[e.jsx("p",{className:"px-3 py-1 text-xs font-semibold text-muted-foreground uppercase tracking-wider",children:s("admin.contentManagement")}),e.jsxs(c,{variant:C==="opportunities"?"secondary":"ghost",className:"w-full justify-start gap-2",onClick:()=>W("opportunities"),"data-testid":"nav-opportunities",children:[e.jsx(Cs,{className:"h-4 w-4"}),s("admin.opportunities")]}),e.jsxs(c,{variant:C==="templates"?"secondary":"ghost",className:"w-full justify-start gap-2",onClick:()=>W("templates"),"data-testid":"nav-templates",children:[e.jsx(cs,{className:"h-4 w-4"}),s("admin.templates")]}),e.jsxs(c,{variant:C==="goal-catalog"?"secondary":"ghost",className:"w-full justify-start gap-2",onClick:()=>W("goal-catalog"),"data-testid":"nav-goal-catalog",children:[e.jsx(os,{className:"h-4 w-4"}),s("admin.goalCatalog")]}),e.jsxs(c,{variant:C==="questionnaire"?"secondary":"ghost",className:"w-full justify-start gap-2",onClick:()=>W("questionnaire"),"data-testid":"nav-questionnaire",children:[e.jsx(Ia,{className:"h-4 w-4"}),s("admin.questionnaire","Questionnaire")]}),e.jsxs(c,{variant:C==="admission-fields"?"secondary":"ghost",className:"w-full justify-start gap-2",onClick:()=>W("admission-fields"),"data-testid":"nav-admission-fields",children:[e.jsx(Da,{className:"h-4 w-4"}),s("admin.admissionFields","Admission Fields")]}),e.jsxs(c,{variant:C==="blog"?"secondary":"ghost",className:"w-full justify-start gap-2",onClick:()=>W("blog"),"data-testid":"nav-blog",children:[e.jsx(li,{className:"h-4 w-4"}),s("admin.blog.title","Blog")]}),e.jsxs(c,{variant:C==="comments"?"secondary":"ghost",className:"w-full justify-start gap-2",onClick:()=>W("comments"),"data-testid":"nav-comments",children:[e.jsx(Ts,{className:"h-4 w-4"}),s("admin.comments.title","Comments")]}),e.jsxs(c,{variant:C==="success-stories"?"secondary":"ghost",className:"w-full justify-start gap-2",onClick:()=>W("success-stories"),"data-testid":"nav-success-stories",children:[e.jsx(ls,{className:"h-4 w-4"}),s("admin.successStories.title","Success Stories")]}),e.jsxs(c,{variant:C==="gamification"?"secondary":"ghost",className:"w-full justify-start gap-2",onClick:()=>W("gamification"),"data-testid":"nav-gamification",children:[e.jsx(Ks,{className:"h-4 w-4"}),s("admin.gamification.title","Gamification")]}),e.jsxs(c,{variant:C==="talent"?"secondary":"ghost",className:"w-full justify-start gap-2",onClick:()=>W("talent"),"data-testid":"nav-talent",children:[e.jsx(Fs,{className:"h-4 w-4"}),s("admin.talent.title","Talent Detection")]})]}),e.jsxs("div",{className:"pt-2",children:[e.jsx("p",{className:"px-3 py-1 text-xs font-semibold text-muted-foreground uppercase tracking-wider",children:s("admin.system")}),e.jsxs(c,{variant:C==="analytics"?"secondary":"ghost",className:"w-full justify-start gap-2",onClick:()=>W("analytics"),"data-testid":"nav-analytics",children:[e.jsx(Ks,{className:"h-4 w-4"}),s("admin.analytics","Analytics")]}),e.jsxs(c,{variant:C==="logs"?"secondary":"ghost",className:"w-full justify-start gap-2",onClick:()=>W("logs"),"data-testid":"nav-logs",children:[e.jsx(oa,{className:"h-4 w-4"}),s("admin.auditLogs")]}),e.jsxs(c,{variant:C==="messages"?"secondary":"ghost",className:"w-full justify-start gap-2",onClick:()=>W("messages"),"data-testid":"nav-messages",children:[e.jsx(Ws,{className:"h-4 w-4"}),s("admin.contactMessages","Messages")]})]})]})})}),e.jsx(zs,{className:"w-full lg:hidden",children:e.jsxs(ja,{className:"w-full justify-start flex-nowrap",children:[e.jsxs(ve,{value:"overview",className:"gap-2","data-testid":"tab-overview",children:[e.jsx(xt,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.overview")})]}),e.jsxs(ve,{value:"users",className:"gap-2","data-testid":"tab-users",children:[e.jsx(Ds,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.users")})]}),e.jsxs(ve,{value:"countries",className:"gap-2","data-testid":"tab-countries",children:[e.jsx(Qs,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.countries")})]}),e.jsxs(ve,{value:"universities",className:"gap-2","data-testid":"tab-universities",children:[e.jsx(ms,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.universities")})]}),e.jsxs(ve,{value:"majors",className:"gap-2","data-testid":"tab-majors",children:[e.jsx(Js,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.majors")})]}),e.jsxs(ve,{value:"opportunities",className:"gap-2","data-testid":"tab-opportunities",children:[e.jsx(Cs,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.opportunities")})]}),e.jsxs(ve,{value:"mentors",className:"gap-2","data-testid":"tab-mentors",children:[e.jsx(at,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.mentors")})]}),e.jsxs(ve,{value:"tutors",className:"gap-2","data-testid":"tab-tutors",children:[e.jsx(Za,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.tutors","Tutors")})]}),e.jsxs(ve,{value:"tests",className:"gap-2","data-testid":"tab-tests",children:[e.jsx(et,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.practiceTests","Tests")})]}),e.jsxs(ve,{value:"templates",className:"gap-2","data-testid":"tab-templates",children:[e.jsx(cs,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.templates")}
1)]}),e.jsxs(ve,{value:"goal-catalog",className:"gap-2","data-testid":"tab-goal-catalog",children:[e.jsx(os,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.goalCatalog")})]}),e.jsxs(ve,{value:"logs",className:"gap-2","data-testid":"tab-logs",children:[e.jsx(oa,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.auditLogs")})]}),e.jsxs(ve,{value:"questionnaire",className:"gap-2","data-testid":"tab-questionnaire",children:[e.jsx(Ia,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.questionnaire","Questionnaire")})]}),e.jsxs(ve,{value:"admission-fields",className:"gap-2","data-testid":"tab-admission-fields",children:[e.jsx(Da,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.admissionFields","Admission Fields")})]}),e.jsxs(ve,{value:"consultations",className:"gap-2","data-testid":"tab-consultations",children:[e.jsx(Ts,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.consultations","Consultations")})]}),e.jsxs(ve,{value:"analytics",className:"gap-2","data-testid":"tab-analytics",children:[e.jsx(Ks,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.analytics","Analytics")})]}),e.jsxs(ve,{value:"messages",className:"gap-2","data-testid":"tab-messages",children:[e.jsx(Ws,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.contactMessages","Messages")})]}),e.jsxs(ve,{value:"blog",className:"gap-2","data-testid":"tab-blog",children:[e.jsx(li,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.blog.title","Blog")})]}),e.jsxs(ve,{value:"success-stories",className:"gap-2","data-testid":"tab-success-stories",children:[e.jsx(ls,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.successStories.title","Success Stories")})]}),e.jsxs(ve,{value:"comments",className:"gap-2","data-testid":"tab-comments",children:[e.jsx(Ts,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.comments.title","Comments")})]}),e.jsxs(ve,{value:"talent",className:"gap-2","data-testid":"tab-talent",children:[e.jsx(Fs,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.talent.title","Talent Detection")})]}),e.jsxs(ve,{value:"major-pages",className:"gap-2","data-testid":"tab-major-pages",children:[e.jsx(ms,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("admin.majorPages.title","Major Pages")})]})]})})]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"relative mb-6",children:[e.jsx(Cs,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(g,{placeholder:s("admin.search"),value:I,onChange:a=>b(a.target.value),className:"pl-10","data-testid":"input-admin-search"})]}),e.jsxs(je,{value:"overview",className:"space-y-6 mt-0",children:[e.jsxs("div",{className:"grid gap-4 md:grid-cols-2 lg:grid-cols-4",children:[e.jsx(Y,{"data-testid":"stat-total-users",children:e.jsxs(X,{className:"p-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(Ds,{className:"h-5 w-5 text-blue-500"}),e.jsxs(N,{variant:"outline",className:"text-xs",children:[qs?.activeUsers||0," active"]})]}),e.jsxs("div",{className:"mt-4",children:[e.jsx("div",{className:"text-3xl font-bold",children:qs?.totalUsers||0}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s("admin.totalUsers")})]})]})}),e.jsx(Y,{"data-testid":"stat-students",children:e.jsxs(X,{className:"p-6",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsx(os,{className:"h-5 w-5 text-green-500"})}),e.jsxs("div",{className:"mt-4",children:[e.jsx("div",{className:"text-3xl font-bold",children:qs?.totalStudents||0}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s("admin.totalStudents")})]})]})}),e.jsx(Y,{"data-testid":"stat-universities",children:e.jsxs(X,{className:"p-6",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsx(ms,{className:"h-5 w-5 text-purple-500"})}),e.jsxs("div",{className:"mt-4",children:[e.jsx("div",{className:"text-3xl font-bold",children:qs?.totalUniversities||0}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s("admin.universities")})]})]})}),e.jsx(Y,{"data-testid":"stat-mentors",children:e.jsxs(X,{className:"p-6",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsx(ls,{className:"h-5 w-5 text-orange-500"})}),e.jsxs("div",{className:"mt-4",children:[e.jsx("div",{className:"text-3xl font-bold",children:qs?.totalMentors||0}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s("admin.mentors")})]})]})})]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[e.jsx(Y,{"data-testid":"stat-opportunities",children:e.jsxs(X,{className:"p-6",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsx(Cs,{className:"h-5 w-5 text-cyan-500"})}),e.jsxs("div",{className:"mt-4",children:[e.jsx("div",{className:"text-3xl font-bold",children:qs?.totalOpportunities||0}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s("admin.opportunities")})]})]})}),e.jsx(Y,{"data-testid":"stat-plans",children:e.jsxs(X,{className:"p-6",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsx(Ks,{className:"h-5 w-5 text-emerald-500"})}),e.jsxs("div",{className:"mt-4",children:[e.jsx("div",{className:"text-3xl font-bold",children:qs?.totalAdmissionPlans||0}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s("admin.admissionPlans")})]})]})})]}),e.jsxs(Y,{children:[e.jsx(Be,{children:e.jsxs(He,{className:"flex items-center gap-2",children:[e.jsx(oa,{className:"h-5 w-5"}),s("admin.recentActivity")]})}),e.jsx(X,{children:St?e.jsx("div",{className:"space-y-2",children:[1,2,3,4,5].map(a=>e.jsx(ce,{className:"h-12 w-full"},a))}):_s&&_s.length>0?e.jsx("div",{className:"space-y-2",children:_s.slice(0,10).map(a=>e.jsxs("div",{className:"flex items-center gap-4 p-2 rounded-md hover:bg-muted/50",children:[e.jsxs(js,{className:"h-8 w-8",children:[e.jsx(gs,{src:a.actor?.profileImageUrl||void 0}),e.jsxs(vs,{children:[a.actor?.firstName?.charAt(0),a.actor?.lastName?.charAt(0)]})]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("p",{className:"text-sm",children:[e.jsxs("span",{className:"font-medium",children:[a.actor?.firstName," ",a.actor?.lastName]})," ",e.jsx("span",{className:Lt(a.action),children:a.action})," ",e.jsx("span",{className:"text-muted-foreground",children:a.targetType})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:new Date(a.createdAt).toLocaleStr
1ing()})]})]},a.id))}):e.jsx("p",{className:"text-muted-foreground text-center py-4",children:s("admin.noRecentActivity")})})]})]}),e.jsx(je,{value:"users",className:"mt-6",children:e.jsxs(Y,{children:[e.jsxs(Be,{className:"flex flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx(He,{children:s("admin.users")}),e.jsx(Ye,{children:s("admin.manageUsers")})]}),qe.isSuperAdmin&&e.jsxs(c,{onClick:()=>{oe({username:"",password:"",firstName:"",lastName:"",email:"",role:"student"}),xe({isOpen:!0,mode:"create",user:null})},"data-testid":"button-create-user",children:[e.jsx(Ee,{className:"h-4 w-4 mr-2"}),s("admin.createUser")]})]}),e.jsx(X,{children:Ai?e.jsx("div",{className:"space-y-4",children:[1,2,3,4,5].map(a=>e.jsx(ce,{className:"h-16 w-full"},a))}):Ga&&Ga.length>0?e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(Qe,{children:[e.jsx(ze,{children:e.jsxs(ne,{children:[e.jsx(k,{children:s("admin.user")}),e.jsx(k,{children:s("admin.email")}),e.jsx(k,{children:s("admin.role")}),e.jsx(k,{children:s("admin.registeredAt","Registered")}),e.jsx(k,{children:s("admin.status")}),e.jsx(k,{className:"w-[100px]",children:s("admin.actions")})]})}),e.jsx(Re,{children:Ga.map(a=>e.jsxs(ne,{"data-testid":`user-row-${a.id}`,children:[e.jsx(y,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs(js,{className:"h-8 w-8",children:[e.jsx(gs,{src:a.profileImageUrl||void 0}),e.jsxs(vs,{children:[a.firstName?.charAt(0),a.lastName?.charAt(0)]})]}),e.jsxs("span",{className:"font-medium",children:[a.firstName," ",a.lastName]})]})}),e.jsx(y,{children:a.email}),e.jsx(y,{children:e.jsx(N,{variant:"outline",className:Pt(a.role||"student"),children:(a.role||"student").replace("_"," ")})}),e.jsx(y,{className:"text-sm text-muted-foreground",children:a.createdAt?new Date(a.createdAt).toLocaleDateString(q.language,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):"-"}),e.jsx(y,{children:a.isActive?e.jsxs("div",{className:"flex items-center gap-1 text-green-500",children:[e.jsx(Es,{className:"h-4 w-4"}),e.jsx("span",{className:"text-sm",children:s("admin.active")})]}):e.jsxs("div",{className:"flex items-center gap-1 text-red-500",children:[e.jsx(xa,{className:"h-4 w-4"}),e.jsx("span",{className:"text-sm",children:s("admin.inactive")})]})}),e.jsx(y,{children:e.jsxs(bn,{children:[e.jsx(wn,{asChild:!0,children:e.jsx(c,{variant:"ghost",size:"icon","data-testid":`button-user-actions-${a.id}`,children:e.jsx(kn,{className:"h-4 w-4"})})}),e.jsxs(Cn,{align:"end",children:[qe.isSuperAdmin&&e.jsxs(e.Fragment,{children:[e.jsx(ks,{onClick:()=>Us.mutate({id:a.id,data:{role:"super_admin"}}),children:s("admin.makeSuperAdmin")}),e.jsx(ks,{onClick:()=>Us.mutate({id:a.id,data:{role:"country_admin"}}),children:s("admin.makeCountryAdmin")}),e.jsx(ks,{onClick:()=>Us.mutate({id:a.id,data:{role:"admin"}}),children:s("admin.makeAdmin")}),e.jsx(st,{})]}),e.jsx(ks,{onClick:()=>Us.mutate({id:a.id,data:{role:"mentor"}}),children:s("admin.makeMentor")}),e.jsx(ks,{onClick:()=>Us.mutate({id:a.id,data:{role:"tutor"}}),"data-testid":`button-make-tutor-${a.id}`,children:s("admin.makeTutor")}),e.jsx(ks,{onClick:()=>Us.mutate({id:a.id,data:{role:"student"}}),children:s("admin.makeStudent")}),e.jsx(ks,{onClick:()=>Us.mutate({id:a.id,data:{role:"parent"}}),children:s("admin.makeParent","Make Parent")}),e.jsx(st,{}),e.jsx(ks,{onClick:()=>Us.mutate({id:a.id,data:{isActive:!a.isActive}}),children:a.isActive?s("admin.deactivate"):s("admin.activate")}),e.jsx(st,{}),e.jsxs(ks,{onClick:()=>{oe({username:a.username||"",password:"",firstName:a.firstName||"",lastName:a.lastName||"",email:a.email||"",role:a.role||"student"}),xe({isOpen:!0,mode:"edit",user:a})},"data-testid":`button-edit-user-${a.id}`,children:[e.jsx(ss,{className:"h-4 w-4 mr-2"}),s("admin.editUser")]}),qe.isSuperAdmin&&e.jsxs(ks,{onClick:()=>{confirm(s("admin.confirmDeleteUser"))&&Vi.mutate(a.id)},className:"text-destructive","data-testid":`button-delete-user-${a.id}`,children:[e.jsx(Te,{className:"h-4 w-4 mr-2"}),s("admin.deleteUser")]})]})]})})]},a.id))})]})}):e.jsxs("div",{className:"text-center py-12 text-muted-foreground",children:[e.jsx(Ds,{className:"h-12 w-12 mx-auto mb-3 opacity-50"}),e.jsx("p",{children:s("admin.noUsersFound")})]})})]})}),e.jsx(je,{value:"countries",className:"mt-6",children:e.jsxs(Y,{children:[e.jsxs(Be,{className:"flex flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx(He,{children:s("admin.countries")}),e.jsx(Ye,{children:s("admin.manageCountries")})]}),qe.isSuperAdmin&&e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(c,{variant:"outline",className:"gap-2","data-testid":"button-sync-countries",onClick:async()=>{try{const u=await(await P("POST","/api/admin/sync-countries")).json();
1A.invalidateQueries({queryKey:["/api/admin/countries"]}),A.invalidateQueries({queryKey:["/api/countries"]}),p({title:s("admin.syncSuccess"),description:u.message})}catch(a){p({title:s("admin.syncError"),description:String(a),variant:"destructive"})}},children:[e.jsx(Gs,{className:"h-4 w-4"}),s("admin.syncCountries")]}),e.jsxs(c,{className:"gap-2","data-testid":"button-add-country",onClick:()=>{R({code:"",name:"",nameUk:"",nameEs:"",flagEmoji:"",isActive:!0}),we({isOpen:!0,mode:"create"})},children:[e.jsx(Ee,{className:"h-4 w-4"}),s("admin.addNew")]})]})]}),e.jsx(X,{children:Ii?e.jsx("div",{className:"space-y-4",children:[1,2,3].map(a=>e.jsx(ce,{className:"h-16 w-full"},a))}):Xa&&Xa.length>0?e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(Qe,{children:[e.jsx(ze,{children:e.jsxs(ne,{children:[e.jsx(k,{children:s("admin.code")}),e.jsx(k,{children:s("admin.name")}),e.jsx(k,{children:s("admin.nameUk")}),e.jsx(k,{children:s("admin.nameEs")}),e.jsx(k,{children:s("admin.status")}),e.jsx(k,{className:"w-[100px]",children:s("admin.actions")})]})}),e.jsx(Re,{children:Xa.map(a=>e.jsxs(ne,{"data-testid":`country-row-${a.code}`,children:[e.jsx(y,{className:"font-mono",children:a.code}),e.jsx(y,{className:"font-medium",children:a.name}),e.jsx(y,{children:a.nameUk}),e.jsx(y,{children:a.nameEs}),e.jsx(y,{children:a.isActive?e.jsx(N,{className:"bg-green-500/10 text-green-500 border-green-500/20",children:s("admin.active")}):e.jsx(N,{variant:"secondary",children:s("admin.inactive")})}),e.jsx(y,{children:qe.hasAccess&&e.jsx("div",{className:"flex gap-1",children:e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>m({type:"country",item:a,isOpen:!0}),"data-testid":`button-edit-country-${a.code}`,children:e.jsx(ss,{className:"h-4 w-4"})})})})]},a.code))})]})}):e.jsxs("div",{className:"text-center py-12 text-muted-foreground",children:[e.jsx(Qs,{className:"h-12 w-12 mx-auto mb-3 opacity-50"}),e.jsx("p",{children:s("admin.noCountriesFound")})]})})]})}),e.jsx(je,{value:"universities",className:"mt-6",children:e.jsxs(Y,{children:[e.jsxs(Be,{className:"flex flex-row items-center justify-between gap-4 flex-wrap",children:[e.jsxs("div",{children:[e.jsx(He,{children:s("admin.universities")}),e.jsx(Ye,{children:s("admin.manageUniversities")})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(c,{variant:"outline",className:"gap-2","data-testid":"button-sync-universities",onClick:async()=>{try{const u=await(await P("POST","/api/admin/sync-universities")).json();A.invalidateQueries({queryKey:["/api/admin/universities"]}
1),A.invalidateQueries({queryKey:["/api/admission-planner/countries"]}),p({title:s("admin.syncSuccess"),description:u.message})}catch(a){p({title:s("admin.syncError"),description:String(a),variant:"destructive"})}},children:[e.jsx(Gs,{className:"h-4 w-4"}),s("admin.syncUniversities")]}),e.jsxs(c,{variant:"outline",className:"gap-2","data-testid":"button-migrate-logos",onClick:async()=>{const a=ds.country&&ds.country!=="all"?ds.country:window.prompt("Ðод кÑаÑни (напÑ. BE, UA, PL) або ALL Ð´Ð»Ñ Ð²ÑÑÑ :","ALL")?.trim().toUpperCase();if(a)try{p({title:"ÐÑок 1/2: пеÑевÑÑÑÑ...",description:`ÐÑаÑна: ${a}. Це dry-run, нÑÑого не змÑниÑÑÑÑ.`});const E=await(await P("POST",`/api/admin/migrate-university-logos?country=${a}&dryRun=1`)).json();if(!window.confirm(`ÐÑаÑна ${a} 2 3Ðнайдено ÑнÑвеÑÑиÑеÑÑв Ñз зовнÑÑнÑм лого: ${E.found} 4ÐоÑÐ¾Ð²Ñ Ð´Ð¾ мÑгÑаÑÑÑ: ${E.migrated} 5Ðже в /objects/ (пÑопÑÑÑимо): ${E.skipped} 6Ðомилки заванÑаженнÑ: ${E.failed} 7 8ÐиконаÑи Ð ÐÐÐЬÐУ мÑгÑаÑÑÑ Ð·Ð°Ñаз? (запиÑе в ÐÐ)`)){p({title:"СкаÑовано",description:"ÐÐ¾Ð´Ð½Ð¸Ñ Ð·Ð¼Ñн не зÑоблено."});return}p({title:"ÐÑок 2/2: мÑгÑÑÑ...",description:`ТÑÐ¸Ð²Ð°Ñ ÑеалÑна мÑгÑаÑÑÑ. Ðоже зайнÑÑи ~${Math.max(10,E.migrated*2)}Ñ.`});const Me=await(await P("POST",`/api/admin/migrate-university-logos?country=${a}`)).json();A.invalidateQueries({queryKey:["/api/admin/universities"]});const is=(Me.details??[]).filter(ns=>ns.status==="failed").map(ns=>`${ns.name}: ${ns.error??""}`).slice(0,5).join(` 9`);p({title:"ÐоÑово",description:`ÐÑгÑовано: ${Me.migrated}, пÑопÑÑено: ${Me.skipped}, помилок: ${Me.failed}`+(is?` 10Ðомилки: 11${is}`:"")})}catch(u){p({title:"Ðомилка мÑгÑаÑÑÑ",description:String(u),variant:"destructive"})}},children:[e.jsx(Gs,{className:"h-4 w-4"}),"ÐÑгÑÑваÑи логоÑипи"]}),e.jsxs(c,{className:"gap-2","data-testid":"button-add-university",onClick:()=>{w({id:"",name:"",nameUk:"",nameEs:"",country:"",countryCode:"",city:"",ranking:0,website:"",logoUrl:"",isActive:!0,selectedMajorIds:[],scholarshipInfo:"",scholarshipInfoUk:"",scholarshipInfoEs:"",additionalCosts:"",additionalCostsUk:"",additionalCostsEs:"",campusLife:"",campusLifeUk:"",campusLifeEs:"",internshipInfo:"",internshipInfoUk:"",internshipInfoEs:"",requiredDocuments:"",requiredDocumentsUk:"",requiredDocumentsEs:"",housingOptions:"",housingOptionsUk:"",housingOptionsEs:"",popularFaculties:"",popularFacultiesUk:"",popularFacultiesEs:"",teachingLanguages:""}),S(""),ie({isOpen:!0,mode:"create",university:null,majorsSynced:!1})},children:[e.jsx(Ee,{className:"h-4 w-4"}),s("admin.addNew")]})]})]}),e.jsxs(X,{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-wrap gap-4",children:[e.jsx("div",{className:"flex-1 min-w-[200px]",children:e.jsx(g,{placeholder:s("admin.searchByName"),value:wt,onChange:a=>Ui(a.target.value),className:"w-full","data-testid":"input-university-search"})}),e.jsxs(Z,{value:ds.country,onValueChange:a=>kt({...ds,country:a}),children:[e.jsx(ee,{className:"w-[160px]","data-testid":"select-university-country-filter",children:e.jsx(se,{placeholder:s("admin.filterByCountry")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"all",children:s("admin.allCountries")}),Je?.map(a=>e.jsx(l,{value:a.code,children:a.name},a.code))]})]}),e.jsxs(Z,{value:ds.status,onValueChange:a=>kt({...ds,status:a}),children:[e.jsx(ee,{className:"w-[160px]","data-testid":"select-university-status-filter",children:e.jsx(se,{placeholder:s("admin.filterByStatus")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"all",children:s("admin.allStatuses")}),e.jsx(l,{value:"active",children:s("admin.active")}),e.jsx(l,{value:"inactive",children:s("admin.inactive")})]})]}),e.jsxs(Z,{value:Ct,onValueChange:a=>Si(a),children:[e.jsxs(ee,{className:"w-[180px]","data-testid":"select-university-sort",children:[e.jsx(ar,{className:"h-4 w-4 mr-2 shrink-0"}),e.jsx(se,{})]}),e.jsxs(ae,{children:[e.jsx(l,{value:"name",children:s("admin.sortByName","Ðа назвоÑ")}),e.jsx(l,{value:"updatedAt",children:s("admin.sortByUpdated","Ðа даÑÐ¾Ñ Ð·Ð¼Ñни")})]})]})]}),Fi?e.jsx("div",{className:"space-y-4",children:[1,2,3].map(a=>e.jsx(ce,{className:"h-16 w-full"},a))}):Wa&&Wa.length>0?e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(Qe,{children:[e.jsx(ze,{children:e.jsxs(ne,{children:[e.jsx(k,{children:s("admin.name")}
11),e.jsx(k,{children:s("admin.country")}),e.jsx(k,{children:s("admin.ranking")}),e.jsx(k,{children:s("admin.updated","Ðновлено")}),e.jsx(k,{children:s("admin.status")}),e.jsx(k,{className:"w-[100px]",children:s("admin.actions")})]})}),e.jsx(Re,{children:Wa.map(a=>e.jsxs(ne,{"data-testid":`university-row-${a.id}`,children:[e.jsx(y,{className:"font-medium",children:Oe(a,O)}),e.jsx(y,{children:a.country}),e.jsxs(y,{children:["#",a.ranking||"-"]}),e.jsx(y,{className:"text-sm text-muted-foreground whitespace-nowrap",children:a.updatedAt?new Date(a.updatedAt).toLocaleDateString(O==="uk"?"uk-UA":O==="es"?"es-ES":"en-GB",{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit"}):"-"}),e.jsx(y,{children:a.isActive?e.jsx(N,{className:"bg-green-500/10 text-green-500 border-green-500/20",children:s("admin.active")}):e.jsx(N,{variant:"secondary",children:s("admin.inactive")})}),e.jsx(y,{children:e.jsxs("div",{className:"flex gap-1",children:[e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>re(`/admin/universities/${a.id}`),title:s("admin.universityDetails.viewDetails"),"data-testid":`button-details-university-${a.id}`,children:e.jsx(ut,{className:"h-4 w-4"})}),e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>{w({id:a.id,name:a.name,nameUk:a.nameUk||"",nameEs:a.nameEs||"",country:a.country||"",countryCode:a.countryCode||"",city:a.city||"",ranking:a.ranking||0,website:a.website||"",logoUrl:a.logoUrl||"",isActive:a.isActive??!0,selectedMajorIds:[],scholarshipInfo:a.extendedInfo?.scholarshipInfo||"",scholarshipInfoUk:a.extendedInfo?.scholarshipInfoUk||"",scholarshipInfoEs:a.extendedInfo?.scholarshipInfoEs||"",additionalCosts:a.extendedInfo?.additionalCosts||"",additionalCostsUk:a.extendedInfo?.additionalCostsUk||"",additionalCostsEs:a.extendedInfo?.additionalCostsEs||"",campusLife:a.extendedInfo?.campusLife||"",campusLifeUk:a.extendedInfo?.campusLifeUk||"",campusLifeEs:a.extendedInfo?.campusLifeEs||"",internshipInfo:a.extendedInfo?.internshipInfo||"",internshipInfoUk:a.extendedInfo?.internshipInfoUk||"",internshipInfoEs:a.extendedInfo?.internshipInfoEs||"",requiredDocuments:(a.extendedInfo?.requiredDocuments||[]).join(` 12`),requiredDocumentsUk:(a.extendedInfo?.requiredDocumentsUk||[]).join(` 13`),requiredDocumentsEs:(a.extendedInfo?.requiredDocumentsEs||[]).join(` 14`),housingOptions:(a.extendedInfo?.housingOptions||[]).join(` 15`),housingOptionsUk:(a.extendedInfo?.housingOptionsUk||[]).join(` 16`),housingOptionsEs:(a.extendedInfo?.housingOptionsEs||[]).join(` 17`),popularFaculties:(a.extendedInfo?.popularFaculties||[]).join(` 18`),popularFacultiesUk:(a.extendedInfo?.popularFacultiesUk||[]).join(` 19`),popularFacultiesEs:(a.extendedInfo?.popularFacultiesEs||[]).join(` 20`),teachingLanguages:(a.extendedInfo?.teachingLanguages||[]).join(` 21`)}),ie({isOpen:!0,mode:"edit",university:a,majorsSynced:!1})},"data-testid":`button-edit-university-${a.id}`,children:e.jsx(ss,{className:"h-4 w-4"})}),e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>Bi.mutate(a.id),"data-testid":`button-delete-university-${a.id}`,children:e.jsx(Te,{className:"h-4 w-4 text-destructive"})})]})})]},a.id))})]})}):e.jsxs("div",{className:"text-center py-12 text-muted-foreground",children:[e.jsx(ms,{className:"h-12 w-12 mx-auto mb-3 opacity-50"}),e.jsx("p",{children:s("admin.noUniversitiesFound")})]})]})]})}),e.jsx(je,{value:"majors",className:"mt-6",children:e.jsxs(Y,{children:[e.jsxs(Be,{className:"flex flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx(He,{children:s("admin.majors")}),e.jsx(Ye,{children:s("admin.manageMajors")})]}),e.jsxs(c,{className:"gap-2","data-testid":"button-add-major",onClick:()=>{_({id:"",name:"",nameUk:"",nameEs:"",category:"",description:"",isActive:!0}),d({isOpen:!0,mode:"create",major:null})},children:[e.jsx(Ee,{className:"h-4 w-4"}),s("admin.addNew")]})]}),e.jsx(X,{children:Ti?e.jsx("div",{className:"space-y-4",children:[1,2,3].map(a=>e.jsx(ce,{className:"h-16 w-full"},a))}):Ja&&Ja.length>0?e.jsx("div",{className:"grid gap-4 md:grid-cols-2 lg:grid-cols-3",children:Ja.map(a=>e.jsx(Y,{className:"hover-elevate","data-testid":`major-card-${a.id}`,children:e.jsxs(X,{className:"p-4 flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-medium",children:Oe(a,O)}),a.category&&e.jsx("p",{className:"text-sm text-muted-foreground",children:a.category})]}),e.jsxs("div",{className:"flex gap-1",children:[e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>{_({id:a.id,name:a.name||"",nameUk:a.nameUk||"",nameEs:a.nameEs||"",category:a.category||"",description:a.description||"",isActive:a.isActive??!0}),d({isOpen:!0,mode:"edit",major:a})},"data-testid":`button-edit-major-${a.id}`,children:e.jsx(ss,{className:"h-4 w-4"})}),e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>jn.mutate(a.id),"data-testid":`button-delete-major-${a.id}`,children:e.jsx(Te,{className:"h-4 w-4"})})]})]})},a.id))}):e.jsxs("div",{className:"text-center py-12 text-muted-foreground",children:[e.jsx(Js,{className:"h-12 w-12 mx-auto mb-3 opacity-50"}),e.jsx("p",{children:s("admin.noMajorsFound")})]})})]})}),e.jsx(je,{value:"opportunities",className:"mt-6",children:e.jsxs(Y,{children:[e.jsxs(Be,{className:"flex flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx(He,{children:s("admin.opportunities")}),e.jsx(Ye,{children:s("admin.manageOpportunities")})]}),e.jsxs(c,{className:"gap-2","data-testid":"button-add-opportunity",onClick:()=>{ke({id:"",title:"",titleUk:"",titleEs:"",description:"",descriptionUk:"",descriptionEs:"",type:"",provider:"",country:"",universityId:"",majorId:"",applicationDeadline:"",startDate:"",endDate:"",link:"",requirements:"",fundingAmount:"",promoCode:"",promoDiscount:"",isFeatured:!1,isActive:!0}),Le({isOpen:!0,mode:"create",opportunity:null})},children:[e.jsx(Ee,{className:"h-4 w-4"}),s("admin.addNew")]})]}),e.jsx(X,{children:Oi?e.jsx("div",{className:"space-y-4",children:[1,2,3].map(a=>e.jsx(ce,{className:"h-16 w-full"},a))}):Ya&&Ya.length>0?e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(Qe,{children:[e.jsx(ze,{children:e.jsxs(ne,{children:[e.jsx(k,{children:s("admin.title")}),e.jsx(k,{children:s("admin.type")}),e.jsx(k,{children:s("admin.provider")}),e.jsx(k,{children:s("admin.country")}),e.jsx(k,{children:s("admin.status")}),e.jsx(k,{className:"w-[120px]",children:s("admin.actions")})]})}),e.jsx(Re,{children:Ya.map(a=>e.jsxs(ne,{"data-testid":`opportunity-row-${a.id}`,children:[e.jsx(y,{className:"font-medium",children:e.jsxs("div",{className:"flex items-center gap-2",children:[En(a,O),a.isFeatured&&e.jsx(N,{className:"bg-yellow-500/10 text-yellow-600 border-yellow-500/20",children:s("admin.featured")})]})}),e.jsx(y,{children:e.jsx(N,{variant:"outline",children:a.type})}),e.jsx(y,{children:a.provider||"-"}),e.jsx(y,{children:a.country||"-"}),e.jsx(y,{children:a.isActive?e.jsx(N,{className:"bg-green-500/10 text-green-500 border-green-500/20",children:s("admin.active")}):e.jsx(N,{variant:"secondary",children:s("admin.inactive")})}),e.jsx(y,{children:e.jsxs("div",{className:"flex gap-1",children:[e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>{ke({id:a.id,title:a.title||"",titleUk:a.titleUk||"",titleEs:a.titleEs||"",description:a.description||"",descriptionUk:a.descriptionUk||"",descriptionEs:a.descriptionEs||"",type:a.type||"",provider:a.provider||"",country:a.country||"",universityId:a.universityId||"",majorId:a.majorId||"",applicationDeadline:a.applicationDeadline||"",startDate:a.startDate||"",endDate:a.endDate||"",link:a.link||"",requirements:a.requirements||"",fundingAmount:a.fundingAmount||"",promoCode:a.promoCode||"",promoDiscount:a.promoDiscount||"",isFeatured:a.isFeatured??
21!1,isActive:a.isActive??!0}),Le({isOpen:!0,mode:"edit",opportunity:a})},"data-testid":`button-edit-opportunity-${a.id}`,children:e.jsx(ss,{className:"h-4 w-4"})}),e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>Gi.mutate(a.id),"data-testid":`button-delete-opportunity-${a.id}`,children:e.jsx(Te,{className:"h-4 w-4 text-destructive"})})]})})]},a.id))})]})}):e.jsxs("div",{className:"text-center py-12 text-muted-foreground",children:[e.jsx(Cs,{className:"h-12 w-12 mx-auto mb-3 opacity-50"}),e.jsx("p",{children:s("admin.noOpportunitiesFound")})]})})]})}),e.jsx(je,{value:"mentors",className:"mt-6",children:e.jsxs(Y,{children:[e.jsxs(Be,{className:"flex flex-row items-center justify-between gap-4 flex-wrap",children:[e.jsxs("div",{children:[e.jsx(He,{children:s("admin.mentors")}),e.jsx(Ye,{children:s("admin.manageMentors")})]}),e.jsxs(c,{size:"sm",onClick:()=>{Ie({id:"",userId:"",specialization:[],universityId:"",majorId:"",countries:[],degree:"",yearsOfExperience:0,bio:"",bioUk:"",bioEs:"",hourlyRate:0,languages:[],isAvailable:!0,isVerified:!1,linkedUniversityIds:[]}),Vs({isOpen:!0,mode:"create",mentor:null})},"data-testid":"button-create-mentor",children:[e.jsx(Ee,{className:"h-4 w-4 mr-2"}),s("admin.createMentor")]})]}),e.jsxs(X,{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-wrap gap-4",children:[e.jsx("div",{className:"flex-1 min-w-[200px]",children:e.jsx(g,{placeholder:s("admin.searchMentors"),value:vt,onChange:a=>Ci(a.target.value),className:"w-full","data-testid":"input-mentor-search"})}),e.jsxs(Z,{value:Ze.status,onValueChange:a=>Pa({...Ze,status:a}),children:[e.jsx(ee,{className:"w-[160px]","data-testid":"select-mentor-status-filter",children:e.jsx(se,{placeholder:s("admin.filterByStatus")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"all",children:s("admin.allStatuses")}),e.jsx(l,{value:"available",children:s("admin.available")}),e.jsx(l,{value:"unavailable",children:s("admin.unavailable")})]})]}),e.jsxs(Z,{value:Ze.verified,onValueChange:a=>Pa({...Ze,verified:a}),children:[e.jsx(ee,{className:"w-[160px]","data-testid":"select-mentor-verified-filter",children:e.jsx(se,{placeholder:s("admin.filterByVerification")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"all",children:s("admin.allVerificationStatuses")}),e.jsx(l,{value:"verified",children:s("admin.verified")}),e.jsx(l,{value:"unverified",children:s("admin.notVerified")})]})]}),e.jsxs(Z,{value:Ze.country,onValueChange:a=>Pa({...Ze,country:a}),children:[e.jsx(ee,{className:"w-[160px]","data-testid":"select-mentor-country-filter",children:e.jsx(se,{placeholder:s("admin.filterByCountry")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"all",children:s("admin.allCountries")}),Je?.map(a=>e.jsx(l,{value:a.code,children:a.name},a.code))]})]})]}),Pi?e.jsx("div",{className:"space-y-4",children:[1,2,3].map(a=>e.jsx(ce,{className:"h-16 w-full"},a))}):Qa&&Qa.length>0?e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(Qe,{children:[e.jsx(ze,{children:e.jsxs(ne,{children:[e.jsx(k,{children:s("admin.mentor")}
21),e.jsx(k,{children:s("admin.specializations")}),e.jsx(k,{children:s("admin.university")}),e.jsx(k,{children:s("admin.rating")}),e.jsx(k,{children:s("admin.totalSessions")}),e.jsx(k,{children:s("admin.totalReviews")}),e.jsx(k,{children:s("admin.hourlyRate")}),e.jsx(k,{children:s("admin.status")}),e.jsx(k,{className:"w-[150px]",children:s("admin.actions")})]})}),e.jsx(Re,{children:Qa.filter(a=>{const u=vt.toLowerCase(),E=!u||a.user?.firstName?.toLowerCase().includes(u)||a.user?.lastName?.toLowerCase().includes(u)||a.specialization?.some(is=>is.toLowerCase().includes(u)),te=Ze.status==="all"||!Ze.status||Ze.status==="available"&&a.isAvailable||Ze.status==="unavailable"&&!a.isAvailable,Ae=Ze.verified==="all"||!Ze.verified||Ze.verified==="verified"&&a.isVerified||Ze.verified==="unverified"&&!a.isVerified,Me=Ze.country==="all"||!Ze.country||a.linkedUniversity?.countryCode===Ze.country;return E&&te&&Ae&&Me}).map(a=>e.jsxs(ne,{"data-testid":`mentor-row-${a.id}`,children:[e.jsx(y,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs(js,{className:"h-8 w-8",children:[e.jsx(gs,{src:a.user?.profileImageUrl||void 0}),e.jsxs(vs,{children:[a.user?.firstName?.charAt(0),a.user?.lastName?.charAt(0)]})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"font-medium",children:[a.user?.firstName," ",a.user?.lastName]}),a.degree&&e.jsx("div",{className:"text-xs text-muted-foreground",children:a.degree})]})]})}),e.jsx(y,{children:e.jsxs("div",{className:"flex flex-wrap gap-1",children:[a.specialization?.slice(0,2).map((u,E)=>e.jsx(N,{variant:"outline",className:"text-xs",children:u},E)),a.specialization&&a.specialization.length>2&&e.jsxs(N,{variant:"outline",className:"text-xs",children:["+",a.specialization.length-2]})]})}),e.jsx(y,{children:a.linkedUniversity?Oe(a.linkedUniversity,O):"-"}),e.jsx(y,{children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"text-yellow-500",children:"â
"}),e.jsx("span",{children:a.rating?Number(a.rating).toFixed(1):"-"})]})}),e.jsx(y,{children:a.totalSessions||0}),e.jsx(y,{children:a.totalReviews||0}),e.jsx(y,{children:a.hourlyRate?`$${a.hourlyRate}`:"-"}),e.jsx(y,{children:e.jsxs("div",{className:"flex flex-col gap-1",children:[a.isAvailable?e.jsx(N,{className:"bg-green-500/10 text-green-500 border-green-500/20 text-xs",children:s("admin.available")}):e.jsx(N,{variant:"secondary",className:"text-xs",children:s("admin.unavailable")}),a.isVerified?e.jsx(N,{className:"bg-blue-500/10 text-blue-500 border-blue-500/20 text-xs",children:s("admin.verified")}):e.jsx(N,{variant:"outline",className:"text-xs",children:s("admin.notVerified")})]})}),e.jsx(y,{children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(c,{variant:"ghost",size:"icon",onClick:async()=>{Ie({id:a.id,userId:a.userId,specialization:a.specialization||[],universityId:a.universityId||"",majorId:a.majorId||"",countries:a.countries||(a.country?[a.country]:[]),degree:a.degree||"",yearsOfExperience:a.yearsOfExperience||0,bio:a.bio||"",bioUk:a.bioUk||"",bioEs:a.bioEs||"",hourlyRate:Number(a.hourlyRate)||0,languages:a.languages||[],isAvailable:a.isAvailable??!0,isVerified:a.isVerified??!1,linkedUniversityIds:[]}),Vs({isOpen:!0,mode:"edit",mentor:a});try{const E=await(await P("GET",`/api/admin/mentors/${a.id}/universities`)).json();Ie(te=>({...te,linkedUniversityIds:E.map(Ae=>Ae.universityId)}))}catch(u){console.error("Failed to fetch mentor universities:",u)}},"data-testid":`button-edit-mentor-${a.id}`,children:e.jsx(ss,{className:"h-4 w-4"})}),e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>{Ba.mutate({id:a.id,data:{isAvailable:!a.isAvailable}})},title:s("admin.toggleAvailability"),"data-testid":`button-toggle-availability-${a.id}`,children:a.isAvailable?e.jsx(Gt,{className:"h-4 w-4 text-orange-500"}):e.jsx(zt,{className:"h-4 w-4 text-green-500"})}),e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>{Ba.mutate({id:a.id,data:{isVerified:!a.isVerified}})},title:s("admin.toggleVerification"),"data-testid":`button-toggle-verification-${a.id}`,children:a.isVerified?e.jsx(Wt,{className:"h-4 w-4 text-blue-500"}):e.jsx(Sa,{className:"h-4 w-4 text-muted-foreground"})}),e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>Ji.mutate(a.id),"data-testid":`button-delete-mentor-${a.id}`,children:e.jsx(Te,{className:"h-4 w-4 text-destructive"})})]})})]},a.id))})]})}):e.jsxs("div",{className:"text-center py-12 text-muted-foreground",children:[e.jsx(at,{className:"h-12 w-12 mx-auto mb-3 opacity-50"}),e.jsx("p",{children:s("admin.noMentorsFound")})]})]})]})}),e.jsxs(je,{value:"tutors",className:"mt-6",children:[e.jsxs(Y,{children:[e.jsxs(Be,{className:"flex flex-row items-center justify-between gap-4 flex-wrap",children:[e.jsxs("div",{children:[e.jsx(He,{children:s("admin.tutors","Tutors")}),e.jsx(Ye,{children:s("admin.manageTutors","Manage platform tutors")})]}),e.jsxs(c,{size:"sm",onClick:()=>{Ke({userId:"",name:"",nameUk:"",nameEs:"",subject:"",subjectUk:"",subjectEs:"",specialization:"",specializationUk:"",specializationEs:"",specializations:[],bio:"",bioUk:"",bioEs:"",languages:[],yearsOfExperience:0,hourlyRate:"",isAvailable:!0,isVerified:!1}),ea({open:!0,tutor:null})},"data-testid":"button-create-tutor",children:[e.jsx(Ee,{className:"h-4 w-4 mr-2"}
21),s("admin.addTutor","Add Tutor")]})]}),e.jsxs(X,{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-wrap gap-4",children:[e.jsx("div",{className:"flex-1 min-w-[200px]",children:e.jsx(g,{placeholder:s("admin.searchTutors","Search tutors..."),value:ft,onChange:a=>Ei(a.target.value),className:"w-full","data-testid":"input-tutor-search"})}),e.jsxs(Z,{value:xs.status,onValueChange:a=>yt({...xs,status:a}),children:[e.jsx(ee,{className:"w-[160px]","data-testid":"select-tutor-status-filter",children:e.jsx(se,{placeholder:s("admin.filterByStatus")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"all",children:s("admin.allStatuses")}),e.jsx(l,{value:"available",children:s("admin.available")}),e.jsx(l,{value:"unavailable",children:s("admin.unavailable")})]})]}),e.jsxs(Z,{value:xs.verified,onValueChange:a=>yt({...xs,verified:a}),children:[e.jsx(ee,{className:"w-[160px]","data-testid":"select-tutor-verified-filter",children:e.jsx(se,{placeholder:s("admin.filterByVerification")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"all",children:s("admin.allVerificationStatuses")}),e.jsx(l,{value:"verified",children:s("admin.verified")}),e.jsx(l,{value:"unverified",children:s("admin.notVerified")})]})]})]}),Li?e.jsx("div",{className:"space-y-4",children:[1,2,3].map(a=>e.jsx(ce,{className:"h-16 w-full"},a))}):za&&za.length>0?e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(Qe,{children:[e.jsx(ze,{children:e.jsxs(ne,{children:[e.jsx(k,{children:s("admin.name","Name")}),e.jsx(k,{children:s("admin.subject","Subject")}),e.jsx(k,{children:s("admin.specialization","Specialization")}),e.jsx(k,{children:s("admin.rating")}),e.jsx(k,{children:s("admin.totalSessions")}),e.jsx(k,{children:s("admin.students","УÑнÑв")}),e.jsx(k,{children:s("admin.totalReviews")}),e.jsx(k,{children:s("admin.hourlyRate")}),e.jsx(k,{children:s("admin.status")}),e.jsx(k,{className:"w-[150px]",children:s("admin.actions")})]})}),e.jsx(Re,{children:za.filter(a=>{const u=ft.toLowerCase(),E=a.user?`${a.user.firstName||""} ${a.user.lastName||""}`.toLowerCase():"",te=!u||a.name?.toLowerCase().includes(u)||a.nameUk?.toLowerCase().includes(u)||a.nameEs?.toLowerCase().includes(u)||a.subject?.toLowerCase().includes(u)||a.specialization?.toLowerCase().includes(u)||E.includes(u),Ae=xs.status==="all"||!xs.status||xs.status==="available"&&a.isAvailable||xs.status==="unavailable"&&!a.isAvailable,Me=xs.verified==="all"||!xs.verified||xs.verified==="verified"&&a.isVerified||xs.verified==="unverified"&&!a.isVerified;return te&&Ae&&Me}).map(a=>e.jsxs(ne,{"data-testid":`tutor-row-${a.id}`,children:[e.jsx(y,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[a.user?e.jsxs(js,{className:"h-8 w-8",children:[e.jsx(gs,{src:a.user?.profileImageUrl||void 0}),e.jsxs(vs,{children:[a.user?.firstName?.charAt(0),a.user?.lastName?.charAt(0)]})]}):null,e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:a.user?`${a.user.firstName} ${a.user.lastName}`:a.name}),a.languages&&a.languages.length>0&&e.jsxs("div",{className:"flex flex-wrap gap-1 mt-1",children:[a.languages.slice(0,2).map((u,E)=>e.jsx(N,{variant:"outline",className:"text-xs",children:u},E)),a.languages.length>2&&e.jsxs(N,{variant:"outline",className:"text-xs",children:["+",a.languages.length-2]})]})]})]})}),e.jsx(y,{children:a.subject||"-"}),e.jsx(y,{children:a.specialization||"-"}),e.jsx(y,{children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"text-yellow-500",children:"â
"}),e.jsx("span",{children:a.rating?Number(a.rating).toFixed(1):"-"})]})}),e.jsx(y,{children:a.totalSessions||0}),e.jsx(y,{children:a.studentsCount??0}),e.jsx(y,{children:a.totalReviews||0}),e.jsx(y,{children:a.hourlyRate?`$${a.hourlyRate}`:"-"}),e.jsx(y,{children:e.jsxs("div",{className:"flex flex-col gap-1",children:[a.isAvailable?e.jsx(N,{className:"bg-green-500/10 text-green-500 border-green-500/20 text-xs",children:s("admin.available")}):e.jsx(N,{variant:"secondary",className:"text-xs",children:s("admin.unavailable")}),a.isVerified?e.jsx(N,{className:"bg-blue-500/10 text-blue-500 border-blue-500/20 text-xs",children:s("admin.verified")}):e.jsx(N,{variant:"outline",className:"text-xs",children:s("admin.notVerified")})]})}),e.jsx(y,{children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>{Ke({userId:a.userId||"",name:a.name||"",nameUk:a.nameUk||"",nameEs:a.nameEs||"",subject:a.subject||"",subjectUk:a.subjectUk||"",subjectEs:a.subjectEs||"",specialization:a.specialization||"",specializationUk:a.specializationUk||"",specializationEs:a.specializationEs||"",specializations:a.specialization?a.specialization.split(",").map(u=>
21u.trim()).filter(Boolean):[],bio:a.bio||"",bioUk:a.bioUk||"",bioEs:a.bioEs||"",languages:a.languages||[],yearsOfExperience:a.yearsOfExperience||0,hourlyRate:a.hourlyRate||"",isAvailable:a.isAvailable??!0,isVerified:a.isVerified??!1}),ea({open:!0,tutor:a})},"data-testid":`button-edit-tutor-${a.id}`,children:e.jsx(ss,{className:"h-4 w-4"})}),e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>{ba.mutate({id:a.id,data:{isAvailable:!a.isAvailable}})},title:s("admin.toggleAvailability"),"data-testid":`button-toggle-tutor-availability-${a.id}`,children:a.isAvailable?e.jsx(Gt,{className:"h-4 w-4 text-orange-500"}):e.jsx(zt,{className:"h-4 w-4 text-green-500"})}),e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>{ba.mutate({id:a.id,data:{isVerified:!a.isVerified}})},title:s("admin.toggleVerification"),"data-testid":`button-toggle-tutor-verification-${a.id}`,children:a.isVerified?e.jsx(Wt,{className:"h-4 w-4 text-blue-500"}):e.jsx(Sa,{className:"h-4 w-4 text-muted-foreground"})}),e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>Yi.mutate(a.id),"data-testid":`button-delete-tutor-${a.id}`,children:e.jsx(Te,{className:"h-4 w-4 text-destructive"})})]})})]},a.id))})]})}):e.jsxs("div",{className:"text-center py-12 text-muted-foreground",children:[e.jsx(Za,{className:"h-12 w-12 mx-auto mb-3 opacity-50"}),e.jsx("p",{children:s("admin.noTutorsFound","No tutors found")})]})]})]}),e.jsx(fe,{open:Bs.open,onOpenChange:a=>!a&&ea({open:!1,tutor:null}),children:e.jsxs(ye,{className:"sm:max-w-4xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(Ne,{children:[e.jsx(be,{children:Bs.tutor?s("admin.editTutor","Edit Tutor"):s("admin.addTutor","Add Tutor")}),e.jsx(Se,{children:s("admin.tutorFormDescription","Fill in the tutor details below")})]}),e.jsxs("div",{className:"grid gap-6 py-4",children:[!Bs.tutor&&e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(i,{children:[s("admin.selectUser")," *"]}),e.jsxs(Z,{value:me.userId||"__none__",onValueChange:a=>{const u=ra?.find(E=>E.id===(a==="__none__"?"":a));Ke({...me,userId:a==="__none__"?"":a,name:u?`${u.firstName||""} ${u.lastName||""}`.trim():me.name})},children:[e.jsx(ee,{"data-testid":"select-tutor-user",children:e.jsx(se,{placeholder:s("admin.selectUser")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"__none__",children:s("admin.noUserSelected","No user selected")}),ra?.filter(a=>a.role==="tutor"||a.role==="mentor").map(a=>e.jsxs(l,{value:a.id,children:[a.firstName," ",a.lastName," (",a.email,")"]},a.id))]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s("admin.selectTutorUserHint","Select a registered user with tutor or mentor role")})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{children:s("admin.subjectEn","Subject (EN)")}),e.jsx(g,{value:me.subject,onChange:a=>Ke({...me,subject:a.target.value}),"data-testid":"input-tutor-subject"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{children:s("admin.subjectUk","Subject (UK)")}),e.jsx(g,{value:me.subjectUk,onChange:a=>Ke({...me,subjectUk:a.target.value}),"data-testid":"input-tutor-subject-uk"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{children:s("admin.subjectEs","Subject (ES)")}),e.jsx(g,{value:me.subjectEs,onChange:a=>Ke({...me,subjectEs:a.target.value}),"data-testid":"input-tutor-subject-es"})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{children:s("admin.yearsOfExperience","Years of Experience")}),e.jsx(g,{type:"number",min:0,value:me.yearsOfExperience,onChange:a=>Ke({...me,yearsOfExperience:parseInt(a.target.value)||0}),"data-testid":"input-tutor-experience"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{children:s("admin.hourlyRate","Hourly Rate ($)")}),e.jsx(g,{type:"number",min:0,value:me.hourlyRate,onChange:a=>Ke({...me,hourlyRate:a.target.value}),placeholder:"50","data-testid":"input-tutor-rate"})]}),e.jsxs("div",{className:"flex items-end gap-6 pb-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Fe,{checked:me.isAvailable,onCheckedChange:a=>Ke({...me,isAvailable:a}),"data-testid":"switch-tutor-available"}),e.jsx(i,{children:s("admin.isAvailable")})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Fe,{checked:me.isVerified,onCheckedChange:a=>Ke({...me,isVerified:a}),"data-testid":"switch-tutor-verified"}),e.jsx(i,{children:s("admin.isVerified")})]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{children:s("admin.specializations")}),e.jsx("div",{className:"flex flex-wrap gap-1 min-h-[28px]",children:me.specializations.map((a,u)=>e.jsxs(N,{variant:"secondary",className:"gap-1",children:[a,e.jsx("button",{type:"button",onClick:()=>{const E=[...me.specializations];
21E.splice(u,1),Ke({...me,specializations:E})},className:"ml-1 hover:text-destructive",children:e.jsx(Ss,{className:"h-3 w-3"})})]},u))}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(g,{placeholder:s("admin.specializationPlaceholder","Add specialization..."),value:sa,onChange:a=>La(a.target.value),onKeyDown:a=>{a.key==="Enter"&&sa.trim()&&(a.preventDefault(),Ke({...me,specializations:[...me.specializations,sa.trim()]}),La(""))},"data-testid":"input-tutor-specialization"}),e.jsx(c,{type:"button",variant:"outline",size:"icon",onClick:()=>{sa.trim()&&(Ke({...me,specializations:[...me.specializations,sa.trim()]}),La(""))},"data-testid":"button-add-tutor-specialization",children:e.jsx(Ee,{className:"h-4 w-4"})})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{children:s("admin.languages")}),e.jsx("div",{className:"flex flex-wrap gap-1 min-h-[28px]",children:me.languages.map((a,u)=>e.jsxs(N,{variant:"outline",className:"gap-1",children:[a,e.jsx("button",{type:"button",onClick:()=>{const E=[...me.languages];E.splice(u,1),Ke({...me,languages:E})},className:"ml-1 hover:text-destructive",children:e.jsx(Ss,{className:"h-3 w-3"})})]},u))}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(g,{placeholder:s("admin.languagePlaceholder","Add language..."),value:aa,onChange:a=>$a(a.target.value),onKeyDown:a=>{a.key==="Enter"&&aa.trim()&&(a.preventDefault(),Ke({...me,languages:[...me.languages,aa.trim()]}),$a(""))},"data-testid":"input-tutor-language"}),e.jsx(c,{type:"button",variant:"outline",size:"icon",onClick:()=>{aa.trim()&&(Ke({...me,languages:[...me.languages,aa.trim()]}),$a(""))},"data-testid":"button-add-tutor-language",children:e.jsx(Ee,{className:"h-4 w-4"})})]})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{children:s("admin.bioEn","Bio (EN)")}),e.jsx(G,{value:me.bio,onChange:a=>Ke({...me,bio:a.target.value}),"data-testid":"input-tutor-bio"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{children:s("admin.bioUk","Bio (UK)")}),e.jsx(G,{value:me.bioUk,onChange:a=>Ke({...me,bioUk:a.target.value}),"data-testid":"input-tutor-bio-uk"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{children:s("admin.bioEs","Bio (ES)")}),e.jsx(G,{value:me.bioEs,onChange:a=>Ke({...me,bioEs:a.target.value}),"data-testid":"input-tutor-bio-es"})]})]})]}),e.jsx(Ue,{children:e.jsxs(c,{onClick:()=>{const a={...me,specialization:me.specializations.join(", ")};if(delete a.specializations,!a.name&&a.userId){const u=ra?.find(E=>E.id===a.userId);a.name=u?`${u.firstName||""} ${u.lastName||""}`.trim():"Tutor"}(!a.hourlyRate||a.hourlyRate==="")&&delete a.hourlyRate,Bs.tutor?ba.mutate({id:Bs.tutor.id,data:a}):At.mutate(a)},disabled:!Bs.tutor&&!me.userId||!me.subject||At.isPending||ba.isPending,"data-testid":"button-save-tutor",children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),s("common.save","Save")]})})]})})]}),e.jsxs(je,{value:"tests",className:"mt-6",children:[e.jsxs(Y,{children:[e.jsxs(Be,{className:"flex flex-row items-center justify-between gap-4 flex-wrap",children:[e.jsxs("div",{children:[e.jsx(He,{children:s("admin.practiceTests","Practice Tests")}),e.jsx(Ye,{children:s("admin.manageTests","Manage practice tests")})]}),e.jsxs(c,{size:"sm",onClick:()=>{es({title:"",titleUk:"",titleEs:"",description:"",descriptionUk:"",descriptionEs:"",category:"",categoryUk:"",categoryEs:"",difficulty:"medium",questionsCount:0,durationMinutes:30,isActive:!0}),ta({open:!0,test:null})},"data-testid":"button-create-test",children:[e.jsx(Ee,{className:"h-4 w-4 mr-2"}),s("admin.addTest","Add Test")]})]}),e.jsx(X,{children:$i?e.jsx("div",{className:"space-y-4",children:[1,2,3].map(a=>e.jsx(ce,{className:"h-16 w-full"},a))}):Ra&&Ra.length>0?e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(Qe,{children:[e.jsx(ze,{children:e.jsxs(ne,{children:[e.jsx(k,{children:s("admin.title","Title")}),e.jsx(k,{children:s("admin.category","Category")}),e.jsx(k,{children:s("admin.difficulty","Difficulty")}),e.jsx(k,{children:s("admin.questions","Questions")}),e.jsx(k,{children:s("admin.duration","Duration")}),e.jsx(k,{children:s("admin.visibility","Visibility")}),e.jsx(k,{children:s("admin.approvalStatus","Approval")}),e.jsx(k,{children:s("admin.active","Active")}
21),e.jsx(k,{className:"w-[150px]",children:s("admin.actions","Actions")})]})}),e.jsx(Re,{children:Ra.map(a=>e.jsxs(ne,{"data-testid":`test-row-${a.id}`,children:[e.jsx(y,{className:"font-medium",children:a.title}),e.jsx(y,{children:a.category||"-"}),e.jsx(y,{children:e.jsx(N,{variant:a.difficulty==="hard"?"destructive":a.difficulty==="easy"?"secondary":"outline",className:"text-xs",children:s(`admin.difficulty${(a.difficulty||"medium").charAt(0).toUpperCase()+(a.difficulty||"medium").slice(1)}`,a.difficulty||"medium")})}),e.jsx(y,{children:a.questionsCount||0}),e.jsx(y,{children:a.durationMinutes?`${a.durationMinutes} min`:"-"}),e.jsx(y,{children:e.jsx(N,{variant:a.visibility==="public"?"default":"secondary",className:"text-xs",children:a.visibility==="public"?s("admin.public","Public"):s("admin.private","Private")})}),e.jsx(y,{children:a.visibility==="public"?e.jsx(N,{variant:"outline",className:`text-xs ${a.approvalStatus==="approved"?"bg-green-500/10 text-green-500 border-green-500/20":a.approvalStatus==="rejected"?"bg-red-500/10 text-red-500 border-red-500/20":"bg-yellow-500/10 text-yellow-500 border-yellow-500/20"}`,children:a.approvalStatus==="approved"?s("admin.approved","Approved"):a.approvalStatus==="rejected"?s("admin.rejected","Rejected"):s("admin.pending","Pending")}):e.jsx("span",{className:"text-muted-foreground text-xs",children:"-"})}),e.jsx(y,{children:a.isActive?e.jsx(N,{className:"bg-green-500/10 text-green-500 border-green-500/20 text-xs",children:s("admin.active","Active")}
21):e.jsx(N,{variant:"secondary",className:"text-xs",children:s("admin.inactive","Inactive")})}),e.jsx(y,{children:e.jsxs("div",{className:"flex items-center gap-1",children:[a.visibility==="public"&&a.approvalStatus==="pending"&&e.jsxs(e.Fragment,{children:[e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>Tt.mutate({testId:a.id,status:"approved"}),"data-testid":`button-approve-test-${a.id}`,title:s("admin.approve","Approve"),children:e.jsx(yi,{className:"h-4 w-4 text-green-500"})}),e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>Tt.mutate({testId:a.id,status:"rejected"}),"data-testid":`button-reject-test-${a.id}`,title:s("admin.reject","Reject"),children:e.jsx(xa,{className:"h-4 w-4 text-red-500"})})]}),e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>Nt({open:!0,test:a}),"data-testid":`button-manage-questions-${a.id}`,title:s("admin.manageQuestions","Manage Questions"),children:e.jsx(Bt,{className:"h-4 w-4"})}),e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>{es({title:a.title||"",titleUk:a.titleUk||"",titleEs:a.titleEs||"",description:a.description||"",descriptionUk:a.descriptionUk||"",descriptionEs:a.descriptionEs||"",category:a.category||"",categoryUk:a.categoryUk||"",categoryEs:a.categoryEs||"",difficulty:a.difficulty||"medium",questionsCount:a.questionsCount||0,durationMinutes:a.durationMinutes||30,isActive:a.isActive??!0}),ta({open:!0,test:a})},"data-testid":`button-edit-test-${a.id}`,children:e.jsx(ss,{className:"h-4 w-4"})}),e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>Xi.mutate(a.id),"data-testid":`button-delete-test-${a.id}`,children:e.jsx(Te,{className:"h-4 w-4 text-destructive"})})]})})]},a.id))})]})}):e.jsxs("div",{className:"text-center py-12 text-muted-foreground",children:[e.jsx(et,{className:"h-12 w-12 mx-auto mb-3 opacity-50"}),e.jsx("p",{children:s("admin.noTestsFound","No practice tests found")})]})})]}),e.jsx(fe,{open:va.open,onOpenChange:a=>!a&&ta({open:!1,test:null}),children:e.jsxs(ye,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(Ne,{children:[e.jsx(be,{children:va.test?s("admin.editTest","Edit Test"):s("admin.addTest","Add Test")}),e.jsx(Se,{children:s("admin.testFormDescription","Fill in the test details below")})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.titleEn","Title (EN)")}),e.jsx(g,{value:De.title,onChange:a=>es({...De,title:a.target.value}),"data-testid":"input-test-title"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.titleUk","Title (UK)")}),e.jsx(g,{value:De.titleUk,onChange:a=>es({...De,titleUk:a.target.value}),"data-testid":"input-test-title-uk"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.titleEs","Title (ES)")}),e.jsx(g,{value:De.titleEs,onChange:a=>es({...De,titleEs:a.target.value}),"data-testid":"input-test-title-es"})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.descriptionEn","Description (EN)")}),e.jsx(G,{value:De.description,onChange:a=>es({...De,description:a.target.value}),"data-testid":"input-test-description"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.descriptionUk","Description (UK)")}),e.jsx(G,{value:De.descriptionUk,onChange:a=>es({...De,descriptionUk:a.target.value}),"data-testid":"input-test-description-uk"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.descriptionEs","Description (ES)")}),e.jsx(G,{value:De.descriptionEs,onChange:a=>es({...De,descriptionEs:a.target.value}),"data-testid":"input-test-description-es"})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.categoryEn","Category (EN)")}),e.jsx(g,{value:De.category,onChange:a=>es({...De,category:a.target.value}),"data-testid":"input-test-category"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.categoryUk","Category (UK)")}),e.jsx(g,{value:De.categoryUk,onChange:a=>es({...De,categoryUk:a.target.value}),"data-testid":"input-test-category-uk"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.categoryEs","Category (ES)")}),e.jsx(g,{value:De.categoryEs,onChange:a=>es({...De,categoryEs:a.target.value}),"data-testid":"input-test-category-es"})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.difficulty","Difficulty")}),e.jsxs(Z,{value:De.difficulty,onValueChange:a=>es({...De,difficulty:a}),children:[e.jsx(ee,{"data-testid":"select-test-difficulty",children:e.jsx(se,{})}),e.jsxs(ae,{children:[e.jsx(l,{value:"easy",children:s("admin.difficultyEasy","Easy")}),e.jsx(l,{value:"medium",children:s("admin.difficultyMedium","Medium")}),e.jsx(l,{value:"hard",children:s("admin.difficultyHard","Hard")})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.questionsCount","Questions Count")}),e.jsx(g,{type:"number",value:De.questionsCount,onChange:a=>es({...De,questionsCount:parseInt(a.target.value)||0}),"data-testid":"input-test-questions"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.durationMinutes","Duration (minutes)")}),e.jsx(g,{type:"number",value:De.durationMinutes,onChange:a=>es({...De,durationMinutes:parseInt(a.target.value)||0}),"data-testid":"input-test-duration"})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Fe,{checked:De.isActive,onCheckedChange:a=>es({...De,isActive:a}),"data-testid":"switch-test-active"}),e.jsx(i,{children:s("admin.active","Active")}
21)]})]}),e.jsx(Ue,{children:e.jsxs(c,{onClick:()=>{const a={...De};va.test?Ft.mutate({id:va.test.id,data:a}):It.mutate(a)},disabled:!De.title||It.isPending||Ft.isPending,"data-testid":"button-save-test",children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),s("common.save","Save")]})})]})}),e.jsx(fe,{open:ws.open,onOpenChange:a=>!a&&Nt({open:!1,test:null}),children:e.jsxs(ye,{className:"max-w-4xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(Ne,{children:[e.jsxs(be,{children:[s("admin.manageQuestions","Manage Questions")," â ",ws.test?.title]}),e.jsx(Se,{children:s("admin.questionsDescription","Add, edit, and manage test questions and answer options")})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex justify-end",children:e.jsxs(c,{size:"sm",onClick:()=>{ts({questionText:"",questionTextUk:"",questionTextEs:"",options:[{text:"",textUk:"",textEs:""},{text:"",textUk:"",textEs:""},{text:"",textUk:"",textEs:""},{text:"",textUk:"",textEs:""}],correctOptionIndex:0,explanation:"",explanationUk:"",explanationEs:"",orderIndex:(ya?.length||0)+1}),ia({open:!0,question:null})},"data-testid":"button-add-question",children:[e.jsx(Ee,{className:"h-4 w-4 mr-2"}),s("admin.addQuestion","Add Question")]})}),Mi?e.jsx("div",{className:"space-y-3",children:[1,2,3].map(a=>e.jsx(ce,{className:"h-20 w-full"},a))}):ya&&ya.length>0?e.jsx("div",{className:"space-y-3",children:ya.map((a,u)=>e.jsx(Y,{"data-testid":`question-card-${a.id}`,children:e.jsx(X,{className:"p-4",children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsxs(N,{variant:"outline",className:"text-xs shrink-0",children:["#",a.orderIndex||u+1]}),e.jsx("span",{className:"font-medium text-sm",children:a.questionText})]}),(a.questionTextUk||a.questionTextEs)&&e.jsxs("div",{className:"ml-8 mb-2 space-y-0.5",children:[a.questionTextUk&&e.jsxs("div",{className:"text-xs text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"UK:"})," ",a.questionTextUk]}),a.questionTextEs&&e.jsxs("div",{className:"text-xs text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"ES:"})," ",a.questionTextEs]})]}),e.jsx("div",{className:"grid grid-cols-2 gap-2 mt-2",children:a.options.map((E,te)=>e.jsxs("div",{className:`text-xs px-3 py-1.5 rounded-md border ${te===a.correctOptionIndex?"bg-green-500/10 border-green-500/30 text-green-700 dark:text-green-400 font-medium":"bg-muted/50"}`,children:[e.jsxs("div",{children:[String.fromCharCode(65+te),". ",E.text,te===a.correctOptionIndex&&" â"]}),(E.textUk||E.textEs)&&e.jsxs("div",{className:"mt-0.5 opacity-70",children:[E.textUk&&e.jsxs("span",{className:"mr-2",children:["UK: ",E.textUk]}),E.textEs&&e.jsxs("span",{children:["ES: ",E.textEs]})]})]},te))})]}),e.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>{const E=a.options;ts({questionText:a.questionText||"",questionTextUk:a.questionTextUk||"",questionTextEs:a.questionTextEs||"",options:E.length>=2?E.map(te=>({text:te.text||"",textUk:te.textUk||"",textEs:te.textEs||""})):[{text:"",textUk:"",textEs:""},{text:"",textUk:"",textEs:""},{text:"",textUk:"",textEs:""},{text:"",textUk:"",textEs:""}],correctOptionIndex:a.correctOptionIndex,explanation:a.explanation||"",explanationUk:a.explanationUk||"",explanationEs:a.explanationEs||"",orderIndex:a.orderIndex||u+1}),ia({open:!0,question:a})},"data-testid":`button-edit-question-${a.id}`,children:e.jsx(ss,{className:"h-4 w-4"})}),e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>Zi.mutate(a.id),"data-testid":`button-delete-question-${a.id}`,children:e.jsx(Te,{className:"h-4 w-4 text-destructive"})})]})]})})},a.id))}):e.jsxs("div",{className:"text-center py-8 text-muted-foreground",children:[e.jsx(Bt,{className:"h-10 w-10 mx-auto mb-3 opacity-50"}),e.jsx("p",{children:s("admin.noQuestionsYet","No questions added yet")}),e.jsx("p",{className:"text-sm mt-1",children:s("admin.addFirstQuestion","Click 'Add Question' to create the first question")})]})]})]})}),e.jsx(fe,{open:fa.open,onOpenChange:a=>!a&&ia({open:!1,question:null}),children:e.jsxs(ye,{className:"max-w-3xl max-h-[90vh] overflow-y-auto",children:[e.jsx(Ne,{children:e.jsx(be,{children:fa.question?s("admin.editQuestion","Edit Question"):s("admin.addQuestion","Add Question")})}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.questionOrder","Question #")}),e.jsx(g,{type:"number",value:de.orderIndex,onChange:a=>ts({...de,orderIndex:parseInt(a.target.value)||0}),"data-testid":"input-question-order"})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.questionEn","Question (EN)")}),e.jsx(G,{value:de.questionText,onChange:a=>ts({...de,questionText:a.target.value}),"data-testid":"input-question-text"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.questionUk","Question (UK)")}),e.jsx(G,{value:de.questionTextUk,onChange:a=>ts({...de,questionTextUk:a.target.value}),"data-testid":"input-question-text-uk"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.questionEs","Question (ES)")}),e.jsx(G,{value:de.questionTextEs,onChange:a=>ts({...de,questionTextEs:a.target.value}),"data-testid":"input-question-text-es"})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-4 flex-wrap",children:[e.jsx(i,{children:s("admin.answerOptions","Answer Options")}),e.jsxs(c,{variant:"outline",size:"sm",onClick:()=>ts({...de,options:[...de.options,{text:"",textUk:"",textEs:""}]}),"data-testid":"button-add-option",children:[e.jsx(Ee,{className:"h-3 w-3 mr-1"}),s("admin.addOption","Add Option")]})]}),de.options.map((a,u)=>e.jsx(Y,{className:`${u===de.correctOptionIndex?"border-green-500/50":""}`,children:e.jsx(X,{className:"p-3",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsxs("div",{className:"flex flex-col items-center gap-1 pt-1",children:[e.jsx(N,{variant:u===de.correctOptionIndex?"default":"outline",className:"text-xs cursor-pointer",onClick:()=>ts({...de,correctOptionIndex:u}),"data-testid":`button-correct-option-${u}`,children:String.fromCharCode(65+u)}),u===de.correctOptionIndex&&e.jsx("span",{className:"text-[10px] text-green-600 dark:text-green-400 font-medium",children:s("admin.correct","Correct")})]}),e.jsxs("div",{className:"flex-1 grid grid-cols-3 gap-2",children:[e.jsx(g,{placeholder:"EN",value:a.text,onChange:E=>{const te=[...de.options];te[u]={...te[u],text:E.target.value},ts({...de,options:te})},"data-testid":`input-option-${u}-en`}),e.jsx(g,{placeholder:"UK",value:a.textUk||"",onChange:E=>{const te=[...de.options];te[u]={...te[u],textUk:E.target.value},ts({...de,options:te})},"data-testid":`input-option-${u}-uk`}),e.jsx(g,{placeholder:"ES",value:a.textEs||"",onChange:E=>{const te=[...de.options];te[u]={...te[u],textEs:E.target.value},ts({...de,options:te})},"data-testid":`input-option-${u}-es`})]}),de.options.length>2&&e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>{const E=de.options.filter((Ae,Me)=>
21Me!==u),te=de.correctOptionIndex>=E.length?0:de.correctOptionIndex>u?de.correctOptionIndex-1:de.correctOptionIndex;ts({...de,options:E,correctOptionIndex:te})},"data-testid":`button-remove-option-${u}`,children:e.jsx(Te,{className:"h-3 w-3 text-destructive"})})]})})},u)),e.jsx("p",{className:"text-xs text-muted-foreground",children:s("admin.clickToMarkCorrect","Click the letter badge to mark the correct answer")})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.explanationEn","Explanation (EN)")}),e.jsx(G,{value:de.explanation,onChange:a=>ts({...de,explanation:a.target.value}),"data-testid":"input-question-explanation"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.explanationUk","Explanation (UK)")}),e.jsx(G,{value:de.explanationUk,onChange:a=>ts({...de,explanationUk:a.target.value}),"data-testid":"input-question-explanation-uk"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.explanationEs","Explanation (ES)")}),e.jsx(G,{value:de.explanationEs,onChange:a=>ts({...de,explanationEs:a.target.value}),"data-testid":"input-question-explanation-es"})]})]})]}),e.jsx(Ue,{children:e.jsx(c,{onClick:()=>{const a={testId:ws.test?.id,questionText:de.questionText,questionTextUk:de.questionTextUk||null,questionTextEs:de.questionTextEs||null,options:de.options,correctOptionIndex:de.correctOptionIndex,explanation:de.explanation||null,explanationUk:de.explanationUk||null,explanationEs:de.explanationEs||null,orderIndex:de.orderIndex};fa.question?Ha.mutate({id:fa.question.id,data:a}):_a.mutate(a)},disabled:!de.questionText||de.options.filter(a=>a.text).length<2||_a.isPending||Ha.isPending,"data-testid":"button-save-question",children:_a.isPending||Ha.isPending?s("admin.saving","Saving..."):s("admin.save","Save")})})]})})]}),e.jsx(je,{value:"templates",className:"mt-6",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[e.jsx("div",{className:"lg:col-span-1",children:e.jsxs(Y,{children:[e.jsxs(Be,{className:"flex flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx(He,{children:s("admin.templates")}),e.jsx(Ye,{children:s("admin.manageTemplates")})]}),e.jsxs(c,{size:"sm",onClick:()=>{o({id:"",name:"",nameUk:"",nameEs:"",country:"",universityIds:[],majorId:"",description:"",descriptionUk:"",descriptionEs:"",isDefault:!1,isActive:!0}),as({isOpen:!0,mode:"create",template:null})},"data-testid":"button-create-template",children:[e.jsx(Ee,{className:"h-4 w-4 mr-2"}),s("admin.createTemplate")]})]}),e.jsxs(X,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(g,{placeholder:s("admin.searchByName"),value:Zs,onChange:a=>wi(a.target.value),className:"w-full","data-testid":"input-template-search"}),e.jsxs(Z,{value:ga,onValueChange:ki,children:[e.jsx(ee,{className:"w-full","data-testid":"select-template-country-filter",children:e.jsx(se,{placeholder:s("admin.filterByCountry")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"all",children:s("admin.allCountries")}),Je?.map(a=>e.jsx(l,{value:a.code,children:a.name},a.code))]})]})]}),Ki?e.jsx("div",{className:"space-y-2",children:[1,2,3].map(a=>e.jsx(ce,{className:"h-16 w-full"},a))}):Na&&Na.length>0?e.jsx(zs,{className:"h-[440px]",children:e.jsx("div",{className:"space-y-2",children:Na.filter(a=>{const u=Zs===""||a.name?.toLowerCase().includes(Zs.toLowerCase())||a.nameUk?.toLowerCase().includes(Zs.toLowerCase())||a.nameEs?.toLowerCase().includes(Zs.toLowerCase()),E=Je?.find(Ae=>Ae.code===ga),te=ga==="all"||a.country===ga||a.country===E?.name||a.country===E?.nameUk||a.country===E?.nameEs;return u&&te}).map(a=>e.jsx("div",{className:`p-3 rounded-md border cursor-pointer transition-colors ${_e===a.id?"border-primary bg-primary/5":"hover:bg-muted/50"}`,onClick:()=>gt(a.id),"data-testid":`template-card-${a.id}`,children:e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium truncate",children:a.name}),e.jsxs("div",{className:"flex items-center gap-2 mt-1 flex-wrap",children:[a.country&&e.jsx(N,{variant:"outline",className:"text-xs",children:Je?.find(u=>u.code===a.country)?.name||a.country}),a.isDefault&&e.jsx(N,{className:"text-xs bg-blue-500/10 text-blue-600 border-blue-500/20",children:s("admin.countryDefault")}),!a.isActive&&e.jsx(N,{variant:"secondary",className:"text-xs",children:s("admin.inactive")})]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(c,{variant:"ghost",size:"icon",onClick:async u=>{u.stopPropagation();let E=[];try{const te=await fetch(`/api/admin/templates/${a.id}/universities`,{credentials:"include"});te.ok&&(E=(await te.json()).map(Me=>Me.universityId))}catch(te){console.error("Error fetching template universities:",te)}o({id:a.id,name:a.name||"",nameUk:a.nameUk||"",nameEs:a.nameEs||"",country:a.country||"",universityIds:E,majorId:a.majorId||"",description:a.description||"",descriptionUk:a.descriptionUk||"",descriptionEs:a.descriptionEs||"",isDefault:a.isDefault||!1,isActive:a.isActive??!0}),as({isOpen:!0,mode:"edit",template:a})},"data-testid":`button-edit-template-${a.id}`,children:e.jsx(ss,{className:"h-4 w-4"})}),e.jsx(c,{variant:"ghost",size:"icon",onClick:u=>{u.stopPropagation(),an.mutate(a.id)},"data-testid":`button-delete-template-${a.id}`,children:e.jsx(Te,{className:"h-4 w-4 text-destructive"})})]})]})},a.id))})}):e.jsxs("div",{className:"text-center py-12 text-muted-foreground",children:[e.jsx(cs,{className:"h-12 w-12 mx-auto mb-3 opacity-50"}),e.jsx("p",{children:s("admin.noTemplatesFound")})]})]})]})}),e.jsx("div",{className:"lg:col-span-2",children:e.jsxs(Y,{children:[e.jsxs(Be,{className:"flex flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx(He,{children:s(_e?"admin.planGoals":"admin.selectTemplateToEdit")}),_e&&e.jsxs(Ye,{children:[Na?.find(a=>a.id===_e)?.name,hs&&hs.length>0&&e.jsxs("span",{className:"ml-2",children:["(",hs.length," ",s("admin.goalsCount"),")"]})]})]}),_e&&e.jsxs(c,{size:"sm",onClick:()=>{const a=hs?.reduce((u,E)=>
21Math.max(u,E.orderIndex||0),0)||0;As({goalId:"",orderIndex:a+1,monthsBeforeDeadline:null,priority:"",isRequired:!0}),qa(""),Oa({category:"",country:""}),Rs({isOpen:!0,mode:"create",assignment:null,templateId:_e})},"data-testid":"button-add-catalog-goal",children:[e.jsx(Ee,{className:"h-4 w-4 mr-2"}),s("admin.addGoalFromCatalog")]})]}),e.jsx(X,{children:_e?Qi?e.jsx("div",{className:"space-y-3",children:[1,2,3,4].map(a=>e.jsx(ce,{className:"h-20 w-full"},a))}):hs&&hs.length>0?e.jsx(zs,{className:"h-[500px]",children:e.jsx("div",{className:"space-y-3",children:hs.sort((a,u)=>(a.orderIndex||0)-(u.orderIndex||0)).map((a,u)=>{const E=a.goal,te=a.priority||E.priority||"medium",Ae=a.monthsBeforeDeadline??E.defaultMonthsBeforeDeadline;return e.jsx("div",{className:`p-4 rounded-md border bg-card ${a.isRequired?"":"opacity-75"}`,"data-testid":`assignment-card-${a.id}`,children:e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex items-start gap-3 flex-1",children:[e.jsxs("div",{className:"flex flex-col items-center gap-1",children:[e.jsxs("span",{className:"text-xs text-muted-foreground font-medium",children:["#",u+1]}),e.jsx(c,{variant:"ghost",size:"icon",className:"h-6 w-6",disabled:u===0,onClick:()=>{const is=[...hs].sort((ns,ca)=>(ns.orderIndex||0)-(ca.orderIndex||0))[u-1];is&&(la.mutate({id:a.id,data:{orderIndex:is.orderIndex}}),la.mutate({id:is.id,data:{orderIndex:a.orderIndex}}))},"data-testid":`button-move-up-${a.id}`,children:"â²"}),e.jsx(c,{variant:"ghost",size:"icon",className:"h-6 w-6",disabled:u===hs.length-1,onClick:()=>{const is=[...hs].sort((ns,ca)=>(ns.orderIndex||0)-(ca.orderIndex||0))[u+1];is&&(la.mutate({id:a.id,data:{orderIndex:is.orderIndex}}),la.mutate({id:is.id,data:{orderIndex:a.orderIndex}}))},"data-testid":`button-move-down-${a.id}`,children:"â¼"})]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-medium",children:z(E)}),!a.isRequired&&e.jsx(N,{variant:"outline",className:"text-xs",children:s("admin.optional")})]}),j(E)&&e.jsx("p",{className:"text-sm text-muted-foreground mt-1 line-clamp-2",children:j(E)}),e.jsxs("div",{className:"flex items-center gap-2 mt-2 flex-wrap",children:[e.jsx(N,{variant:"outline",className:"text-xs",children:s(`goals.category.${E.category}`)}),e.jsxs(N,{variant:"outline",className:`text-xs ${te==="critical"?"border-purple-500 text-purple-600":te==="high"?"border-red-500 text-red-600":te==="medium"?"border-yellow-500 text-yellow-600":"border-green-500 text-green-600"}`,children:[s(`goals.priorities.${te}`),a.priority&&e.jsx("span",{className:"ml-1 opacity-60",children:"(override)"})]}),Ae&&e.jsxs(N,{variant:"secondary",className:"text-xs",children:[Ae," ",s("admin.monthsBefore"),a.monthsBeforeDeadline&&e.jsx("span",{className:"ml-1 opacity-60",children:"(override)"})]}),E.country&&e.jsx(N,{variant:"outline",className:"text-xs bg-blue-500/10 text-blue-600 border-blue-500/20",children:Je?.find(Me=>Me.code===E.country)?.name||E.country})]})]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>{As({goalId:a.goalId,orderIndex:a.orderIndex||0,monthsBeforeDeadline:a.monthsBeforeDeadline??null,priority:a.priority||"",isRequired:a.isRequired??!0}),Rs({isOpen:!0,mode:"edit",assignment:a,templateId:_e})},"data-testid":`button-edit-assignment-${a.id}`,children:e.jsx(ss,{className:"h-4 w-4"})}),e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>on.mutate(a.id),"data-testid":`button-delete-assignment-${a.id}`,children:e.jsx(Te,{className:"h-4 w-4 text-destructive"})})]})]})},a.id)})})}):e.jsxs("div",{className:"text-center py-16 text-muted-foreground",children:[e.jsx(os,{className:"h-16 w-16 mx-auto mb-4 opacity-30"}),e.jsx("p",{className:"text-lg",children:s("admin.noGoalsInTemplate")}),e.jsx("p",{className:"text-sm mt-2",children:s("admin.addGoalFromCatalogHint")})]}):e.jsxs("div",{className:"text-center py-16 text-muted-foreground",children:[e.jsx(os,{className:"h-16 w-16 mx-auto mb-4 opacity-30"}),e.jsx("p",{className:"text-lg",children:s("admin.selectTemplatePrompt")}),e.jsx("p",{className:"text-sm mt-2",children:s("admin.selectTemplateHint")})]})})]})})]})}),e.jsx(je,{value:"goal-catalog",className:"mt-6",children:e.jsxs(Y,{children:[e.jsxs(Be,{children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsxs(He,{className:"flex items-center gap-2",children:[e.jsx(os,{className:"h-5 w-5"}),s("admin.goalCatalog")]}),e.jsx(Ye,{children:s("admin.goalCatalogDescription")})]}),e.jsxs(c,{onClick:()=>{Xe({id:"",title:"",titleUk:"",titleEs:"",description:"",descriptionUk:"",descriptionEs:"",category:"academic",country:"",priority:"medium",monthsBeforeDeadline:12,isActive:!0}
21),Ce({isOpen:!0,mode:"create",goal:null})},"data-testid":"button-add-catalog-goal",children:[e.jsx(Ee,{className:"h-4 w-4 mr-2"}),s("admin.addGoal")]})]}),e.jsxs("div",{className:"flex flex-wrap gap-4 mt-4",children:[e.jsxs(Z,{value:us.category,onValueChange:a=>jt({...us,category:a}),children:[e.jsx(ee,{className:"w-[180px]","data-testid":"select-catalog-category-filter",children:e.jsx(se,{placeholder:s("admin.allCategories")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"all",children:s("admin.allCategories")}),e.jsx(l,{value:"academic",children:s("goals.categories.academic")}),e.jsx(l,{value:"academics",children:s("goals.categories.academics")}),e.jsx(l,{value:"extracurricular",children:s("goals.categories.extracurricular")}),e.jsx(l,{value:"language",children:s("goals.categories.language")}),e.jsx(l,{value:"tests",children:s("goals.categories.tests")}),e.jsx(l,{value:"test_prep",children:s("goals.categories.test_prep")}),e.jsx(l,{value:"portfolio",children:s("goals.categories.portfolio")}),e.jsx(l,{value:"application",children:s("goals.categories.application")}),e.jsx(l,{value:"financial",children:s("goals.categories.financial")}),e.jsx(l,{value:"logistics",children:s("goals.categories.logistics")}),e.jsx(l,{value:"documents",children:s("goals.categories.documents")}),e.jsx(l,{value:"profile",children:s("goals.categories.profile")}),e.jsx(l,{value:"funding",children:s("goals.categories.funding")}),e.jsx(l,{value:"research",children:s("goals.categories.research")})]})]}),e.jsxs(Z,{value:us.country,onValueChange:a=>jt({...us,country:a}),children:[e.jsx(ee,{className:"w-[180px]","data-testid":"select-catalog-country-filter",children:e.jsx(se,{placeholder:s("admin.allCountries")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"all",children:s("admin.allCountries")}),e.jsx(l,{value:"universal",children:s("admin.universalGoals")}),Je?.map(a=>e.jsx(l,{value:a.code,children:a.name},a.code))]})]})]})]}),e.jsx(X,{children:Et?e.jsx("div",{className:"space-y-4",children:[1,2,3,4,5].map(a=>e.jsx(ce,{className:"h-20 w-full"},a))}):da&&da.length>0?e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(Qe,{children:[e.jsx(ze,{children:e.jsxs(ne,{children:[e.jsx(k,{children:s("admin.title")}),e.jsx(k,{children:s("admin.category")}),e.jsx(k,{children:s("admin.country")}),e.jsx(k,{children:s("admin.priority")}),e.jsx(k,{children:s("admin.monthsBefore")}),e.jsx(k,{children:s("admin.status")}),e.jsx(k,{className:"text-right",children:s("admin.actions")})]})}),e.jsx(Re,{children:da.filter(a=>!(us.category&&us.category!=="all"&&a.category!==us.category||us.country==="universal"&&a.country!==null||us.country&&us.country!=="all"&&us.country!=="universal"&&a.country!==us.country||I&&!a.title.toLowerCase().includes(I.toLowerCase())&&!a.titleUk?.toLowerCase().includes(I.toLowerCase()))).map(a=>e.jsxs(ne,{"data-testid":`catalog-goal-row-${a.id}`,children:[e.jsx(y,{children:e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:z(a)}),q.language==="en"&&a.titleUk&&a.titleUk!==a.title&&e.jsx("div",{className:"text-sm text-muted-foreground",children:a.titleUk})]})}),e.jsx(y,{children:e.jsx(N,{variant:"outline",children:s(`goals.categories.${a.category}`)})}),e.jsx(y,{children:a.country?e.jsx(N,{variant:"secondary",children:Je?.find(u=>u.code===a.country)?.name||a.country}):e.jsx(N,{variant:"outline",className:"text-green-600",children:s("admin.universal")})}),e.jsx(y,{children:e.jsx(N,{variant:"outline",className:a.priority==="high"?"text-red-600 border-red-200":a.priority==="medium"?"text-yellow-600 border-yellow-200":"text-gray-600",children:s(`goals.priorities.${a.priority}`)})}),e.jsx(y,{children:e.jsxs("span",{className:"text-sm",children:[a.defaultMonthsBeforeDeadline," ",s("common.months")]})}),e.jsx(y,{children:a.isActive?e.jsxs(N,{variant:"outline",className:"text-green-600",children:[e.jsx(Es,{className:"h-3 w-3 mr-1"}),s("admin.active")]}):e.jsxs(N,{variant:"outline",className:"text-gray-400",children:[e.jsx(xa,{className:"h-3 w-3 mr-1"}),s("admin.inactive")]})}),e.jsx(y,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>{Xe({id:a.id,title:a.title,titleUk:a.titleUk||"",titleEs:a.titleEs||"",description:a.description||"",descriptionUk:a.descriptionUk||"",descriptionEs:a.descriptionEs||"",category:a.category,country:a.country||"",priority:a.priority||"medium",monthsBeforeDeadline:a.defaultMonthsBeforeDeadline||12,isActive:a.isActive!==!1}),Ce({isOpen:!0,mode:"edit",goal:a})},"data-testid":`button-edit-catalog-goal-${a.id}`,children:e.jsx(ss,{className:"h-4 w-4"})}),e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>ln.mutate(a.id),"data-testid":`button-delete-catalog-goal-${a.id}`,children:e.jsx(Te,{className:"h-4 w-4 text-destructive"})})]})})]},a.id))})]})}):e.jsxs("div",{className:"text-center py-12 text-muted-foreground",children:[e.jsx(os,{className:"h-12 w-12 mx-auto mb-3 opacity-50"}),e.jsx("p",{children:s("admin.noGoalsInCatalog")}),e.jsx("p",{className:"text-sm mt-1",children:s("admin.createGoalHint")})]})})]})}),e.jsx(je,{value:"logs",className:"mt-6",children:e.jsxs(Y,{children:[e.jsxs(Be,{children:[e.jsxs(He,{className:"flex items-center gap-2",children:[e.jsx(oa,{className:"h-5 w-5"}),s("admin.auditLogs")]}),e.jsx(Ye,{children:s("admin.auditLogsDescription")})]}),e.jsx(X,{children:St?e.jsx("div",{className:"space-y-4",children:[1,2,3,4,5].map(a=>e.jsx(ce,{className:"h-16 w-full"},a))}):_s&&_s.length>0?e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(Qe,{children:[e.jsx(ze,{children:e.jsxs(ne,{children:[e.jsx(k,{children:s("admin.actor")}),e.jsx(k,{children:s("admin.action")}),e.jsx(k,{children:s("admin.target")}),e.jsx(k,{children:s("admin.date")})]})}),e.jsx(Re,{children:_s.map(a=>e.jsxs(ne,{"data-testid":`log-row-${a.id}`,children:[e.jsx(y,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(js,{className:"h-6 w-6",children:[e.jsx(gs,{src:a.actor?.profileImageUrl||void 0}),e.jsxs(vs,{className:"text-xs",children:[a.actor?.firstName?.charAt(0),a.actor?.lastName?.charAt(0)]})]}),e.jsxs("span",{className:"text-sm",children:[a.actor?.firstName," ",a.actor?.lastName]})]})}),e.jsx(y,{children:e.jsx(N,{variant:"outline",className:Lt(a.action),children:a.action})}),e.jsx(y,{children:e.jsxs("span",{className:"text-sm text-muted-foreground",children:[a.targetType," ",a.targetId?`(${a.targetId.substring(0,8)}...)`:""]})}),e.jsx(y,{children:e.jsx("span",{className:"text-sm text-muted-foreground",children:new Date(a.createdAt).toLocaleStr
21ing()})})]},a.id))})]})}):e.jsxs("div",{className:"text-center py-12 text-muted-foreground",children:[e.jsx(oa,{className:"h-12 w-12 mx-auto mb-3 opacity-50"}),e.jsx("p",{children:s("admin.noLogsFound")})]})})]})}),e.jsx(je,{value:"questionnaire",className:"mt-6",children:e.jsx(dr,{})}),e.jsx(je,{value:"admission-fields",className:"mt-6",children:e.jsx(or,{})}),e.jsx(je,{value:"consultations",className:"mt-6",children:e.jsx(mr,{})}),e.jsx(je,{value:"analytics",className:"mt-6",children:e.jsx(pr,{})}),e.jsx(je,{value:"messages",className:"mt-6",children:e.jsx(hr,{})}),e.jsx(je,{value:"blog",className:"mt-6",children:e.jsx(tr,{})}),e.jsx(je,{value:"success-stories",className:"mt-6",children:e.jsx(nr,{})}),e.jsx(je,{value:"comments",className:"mt-6",children:e.jsx(ir,{})}),e.jsx(je,{value:"gamification",className:"mt-6",children:e.jsx(rr,{})}),e.jsx(je,{value:"talent",className:"mt-6",children:e.jsx(ur,{})}),e.jsx(je,{value:"major-pages",className:"mt-6",children:e.jsx(xr,{})})]})]})}),e.jsx(fe,{open:T.isOpen,onOpenChange:a=>!a&&m({type:"",item:null,isOpen:!1}),children:e.jsxs(ye,{className:"max-w-2xl",children:[e.jsxs(Ne,{children:[e.jsxs(be,{children:[s("admin.edit")," ",T.type]}),e.jsx(Se,{children:s("admin.editDescription")})]}),T.type==="university"&&T.item&&e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"uni-name",children:s("admin.name")}),e.jsx(g,{id:"uni-name",defaultValue:T.item.name,onChange:a=>T.item.name=a.target.value})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"uni-country",children:s("admin.country")}),e.jsx(g,{id:"uni-country",defaultValue:T.item.country,onChange:a=>T.item.country=a.target.value})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"uni-ranking",children:s("admin.ranking")}),e.jsx(g,{id:"uni-ranking",type:"number",defaultValue:T.item.ranking,onChange:a=>T.item.ranking=parseInt(a.target.value)})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Fe,{id:"uni-active",defaultChecked:T.item.isActive,onCheckedChange:a=>T.item.isActive=a}),e.jsx(i,{htmlFor:"uni-active",children:s("admin.active")})]})]}),T.type==="country"&&T.item&&e.jsxs("div",{className:"grid gap-4 py-4 max-h-[70vh] overflow-y-auto pr-1",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"country-name",children:s("admin.name")}),e.jsx(g,{id:"country-name",defaultValue:T.item.name,onChange:a=>T.item.name=a.target.value})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"country-nameUk",children:s("admin.nameUk")}),e.jsx(g,{id:"country-nameUk",defaultValue:T.item.nameUk,onChange:a=>T.item.nameUk=a.target.value})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"country-nameEs",children:s("admin.nameEs")}),e.jsx(g,{id:"country-nameEs",defaultValue:T.item.nameEs,onChange:a=>T.item.nameEs=a.target.value})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Fe,{id:"country-active",defaultChecked:T.item.isActive,onCheckedChange:a=>T.item.isActive=a}),e.jsx(i,{htmlFor:"country-active",children:s("admin.active")})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"country-imageUrl",children:"ÐобÑÐ°Ð¶ÐµÐ½Ð½Ñ ÐºÑаÑни (URL)"}),e.jsx(g,{id:"country-imageUrl",defaultValue:T.item.imageUrl||"",onChange:a=>T.item.imageUrl=a.target.value||null,placeholder:"https://images.unsplash.com/photo-... (Ñекомендовано: 600Ã900)","data-testid":"input-country-image-url"}),T.item.imageUrl&&e.jsx("div",{className:"relative h-32 rounded-md overflow-hidden bg-muted",children:e.jsx("img",{src:T.item.imageUrl,alt:"Preview",className:"w-full h-full object-cover",onError:a=>{a.target.style.display="none"}})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"ÐобÑÐ°Ð¶ÐµÐ½Ð½Ñ Ð²ÑдобÑажаÑÑÑÑÑ Ð½Ð° кÑокаÑ
2-3 калÑкÑлÑÑоÑа вÑÑÑпниÑ
ÑанÑÑв. ÐеÑÑикалÑне ÑоÑо (3:2 або 2:3) â ÑдеалÑно."})]}),e.jsxs("div",{className:"border-t pt-4 grid gap-4",children:[e.jsx("p",{className:"text-sm font-medium text-muted-foreground",children:"СкладнÑÑÑÑ Ð¾ÑÑÐ¸Ð¼Ð°Ð½Ð½Ñ Ð²Ñзи"}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"country-v
21isa-difficulty",children:"СкладнÑÑÑÑ"}),e.jsxs(Z,{defaultValue:T.item.visaDifficulty||"",onValueChange:a=>T.item.visaDifficulty=a||null,children:[e.jsx(ee,{id:"country-visa-difficulty","data-testid":"select-visa-difficulty",children:e.jsx(se,{placeholder:"ÐбеÑÑÑÑ ÑÑвенÑ"})}),e.jsxs(ae,{children:[e.jsx(l,{value:"easy",children:"Ðегко"}),e.jsx(l,{value:"medium",children:"СеÑеднÑо"}),e.jsx(l,{value:"hard",children:"Складно"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"country-visa-days",children:"ÐнÑв обÑобки"}),e.jsx(g,{id:"country-visa-days",type:"number",min:0,defaultValue:T.item.visaProcessingDays??"",onChange:a=>T.item.visaProcessingDays=a.target.value?parseInt(a.target.value):null,"data-testid":"input-visa-days"})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"country-visa-en",children:"ÐоÑади (ÐнглÑйÑÑка)"}),e.jsx(G,{id:"country-visa-en",rows:3,defaultValue:T.item.visaTips||"",onChange:a=>T.item.visaTips=a.target.value,placeholder:"Tips for obtaining a student visa...","data-testid":"textarea-visa-tips-en"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"country-visa-uk",children:"ÐоÑади (УкÑаÑнÑÑка)"}),e.jsx(G,{id:"country-visa-uk",rows:3,defaultValue:T.item.visaTipsUk||"",onChange:a=>T.item.visaTipsUk=a.target.value,placeholder:"ÐоÑади Ð´Ð»Ñ Ð¾ÑÑÐ¸Ð¼Ð°Ð½Ð½Ñ ÑÑÑденÑÑÑÐºÐ¾Ñ Ð²Ñзи...","data-testid":"textarea-visa-tips-uk"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"country-visa-es",children:"ÐоÑади (ÐÑпанÑÑка)"}),e.jsx(G,{id:"country-visa-es",rows:3,defaultValue:T.item.visaTipsEs||"",onChange:a=>T.item.visaTipsEs=a.target.value,placeholder:"Consejos para obtener la visa de estudiante...","data-testid":"textarea-visa-tips-es"})]})]})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:()=>m({type:"",item:null,isOpen:!1}),children:s("common.cancel")}),e.jsxs(c,{onClick:()=>{T.type==="university"?Dt.mutate({id:T.item.id,data:T.item}):T.type==="country"&&mn.mutate({code:T.item.code,data:T.item})},children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),s("common.save")]})]})]})}),e.jsx(fe,{open:M.isOpen,onOpenChange:a=>xe({...M,isOpen:a}),children:e.jsxs(ye,{className:"sm:max-w-md",children:[e.jsxs(Ne,{children:[e.jsx(be,{children:M.mode==="create"?s("admin.createUser"):s("admin.editUser")}),e.jsx(Se,{children:s("admin.editDescription")})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"user-username",children:s("admin.username")}),e.jsx(g,{id:"user-username",value:B.username,onChange:a=>oe({...B,username:a.target.value}),placeholder:"username","data-testid":"input-user-username"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(i,{htmlFor:"user-password",children:[s("admin.password"),M.mode==="edit"&&e.jsxs("span",{className:"text-muted-foreground text-xs ml-2",children:["(",s("admin.passwordHint"),")"]})]}),e.jsx(g,{id:"user-password",type:"password",value:B.password,onChange:a=>oe({...B,password:a.target.value}),placeholder:M.mode==="edit"?"â¢â¢â¢â¢â¢â¢â¢â¢":"","data-testid":"input-user-password"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"user-firstName",children:s("admin.firstName")}),e.jsx(g,{id:"user-firstName",value:B.firstName,onChange:a=>oe({...B,firstName:a.target.value}),"data-testid":"input-user-firstName"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"user-lastName",children:s("admin.lastName")}),e.jsx(g,{id:"user-lastName",value:B.lastName,onChange:a=>oe({...B,lastName:a.target.value}),"data-testid":"input-user-lastName"})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"user-email",children:s("admin.email")}),e.jsx(g,{id:"user-email",type:"email",value:B.email,onChange:a=>oe({...B,email:a.target.value}),"data-testid":"input-user-email"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"user-role",children:s("admin.selectRole")}
21),e.jsxs(Z,{value:B.role,onValueChange:a=>oe({...B,role:a}),children:[e.jsx(ee,{"data-testid":"select-user-role",children:e.jsx(se,{placeholder:s("admin.selectRole")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"student",children:s("roles.student")}),e.jsx(l,{value:"parent",children:s("roles.parent")}),e.jsx(l,{value:"mentor",children:s("roles.mentor")}),e.jsx(l,{value:"admin",children:s("roles.admin")}),qe?.isSuperAdmin&&e.jsxs(e.Fragment,{children:[e.jsx(l,{value:"country_admin",children:s("roles.country_admin")}),e.jsx(l,{value:"super_admin",children:s("roles.super_admin")})]})]})]})]})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:()=>xe({isOpen:!1,mode:"create",user:null}),children:s("common.cancel")}),e.jsxs(c,{onClick:()=>{if(M.mode==="create")Ri.mutate({username:B.username,password:B.password,firstName:B.firstName||void 0,lastName:B.lastName||void 0,email:B.email||void 0,role:B.role});else if(M.user){const a={firstName:B.firstName||void 0,lastName:B.lastName||void 0,email:B.email||void 0,role:B.role};B.password&&(a.password=B.password),Us.mutate({id:M.user.id,data:a})}},disabled:M.mode==="create"&&(!B.username||!B.password),"data-testid":"button-save-user",children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),s("common.save")]})]})]})}),e.jsx(fe,{open:f.isOpen,onOpenChange:a=>ie({...f,isOpen:a}),children:e.jsxs(ye,{className:"sm:max-w-4xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(Ne,{children:[e.jsx(be,{children:f.mode==="create"?s("admin.createUniversity"):s("admin.editUniversity")}),e.jsx(Se,{children:s("admin.editDescription")})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6 py-4",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"text-sm font-medium text-muted-foreground border-b pb-2",children:s("admin.universityDetails.title")}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{className:"grid gap-1.5",children:[e.jsx(i,{htmlFor:"uni-id",className:"text-xs",children:s("admin.id")}),e.jsx(g,{id:"uni-id",value:h.id,onChange:a=>w({...h,id:a.target.value}),placeholder:"uni-harvard",disabled:f.mode==="edit",className:"h-9","data-testid":"input-university-id"})]}),e.jsxs("div",{className:"grid gap-1.5",children:[e.jsx(i,{htmlFor:"uni-ranking",className:"text-xs",children:s("admin.ranking")}),e.jsx(g,{id:"uni-ranking",type:"number",value:h.ranking||"",onChange:a=>w({...h,ranking:parseInt(a.target.value)||0}),placeholder:"1",className:"h-9","data-testid":"input-university-ranking"})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-1.5",children:[e.jsxs(i,{htmlFor:"uni-name",className:"text-xs",children:[s("admin.name")," (EN)"]}),e.jsx(g,{id:"uni-name",value:h.name,onChange:a=>w({...h,name:a.target.value}),placeholder:"Harvard University",className:"h-9","data-testid":"input-university-name"})]}),e.jsxs("div",{className:"grid gap-1.5",children:[e.jsx(i,{htmlFor:"uni-nameUk",className:"text-xs",children:s("admin.nameUk")}),e.jsx(g,{id:"uni-nameUk",value:h.nameUk,onChange:a=>w({...h,nameUk:a.target.value}),placeholder:"ÐаÑваÑдÑÑкий",className:"h-9","data-testid":"input-university-nameUk"})]}),e.jsxs("div",{className:"grid gap-1.5",children:[e.jsx(i,{htmlFor:"uni-nameEs",className:"text-xs",children:s("admin.nameEs")}),e.jsx(g,{id:"uni-nameEs",value:h.nameEs,onChange:a=>w({...h,nameEs:a.target.value}),placeholder:"Harvard",className:"h-9","data-testid":"input-university-nameEs"})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{className:"grid gap-1.5",children:[e.jsx(i,{htmlFor:"uni-country",className:"text-xs",children:s("admin.country")}),e.jsxs(Z,{value:h.countryCode,onValueChange:a=>{const u=Je?.find(E=>E.code===a);w({...h,countryCode:a,country:u?.name||""})},children:[e.jsx(ee,{className:"h-9","data-testid":"select-university-country",children:e.jsx(se,{placeholder:s("admin.selectCountry")})}),e.jsx(ae,{children:Je?.map(a=>e.jsxs(l,{value:a.code,children:[a.flagEmoji," ",a.name]},a.code))})]})]}),e.jsxs("div",{className:"grid gap-1.5",children:[e.jsx(i,{htmlFor:"uni-city",className:"text-xs",children:s("admin.city")}),e.jsx(g,{id:"uni-city",value:h.city,onChange:a=>w({...h,city:a.target.value}),placeholder:"Cambridge",className:"h-9","data-testid":"input-university-city"})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{className:"grid gap-1.5",children:[e.jsx(i,{htmlFor:"uni-website",className:"text-xs",children:s("admin.website")}),e.jsx(g,{id:"uni-website",value:h.website,onChange:a=>w({...h,website:a.target.value}),placeholder:"https://harvard.edu",className:"h-9","data-testid":"input-university-website"})]}),e.jsxs("div",{className:"grid gap-1.5",children:[e.jsx(i,{htmlFor:"uni-logo",className:"text-xs",children:s("admin.logoUrl")}),e.jsx(g,{id:"uni-logo",value:h.logoUrl,onChange:a=>w({...h,logoUrl:a.target.value}),placeholder:"https://...",className:"h-9","data-testid":"input-university-logo"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 pt-2",children:[e.jsx(Fe,{id:"uni-isActive",checked:h.isActive,onCheckedChange:a=>w({...h,isActive:a})}),e.jsx(i,{htmlFor:"uni-isActive",className:"text-sm",children:s("admin.active")})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("h3",{className:"text-sm font-medium text-muted-foreground border-b pb-2",children:[s("admin.majors")," (",h.selectedMajorIds.length,")"]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(Z,{value:pe,onValueChange:S,children:[e.jsx(ee,{className:"flex-1 h-9","data-testid":"select-university-major",children:e.jsx(se,{placeholder:s("admin.selectMajor")})}),e.jsx(ae,{className:"max-h-[300px]",children:Os?.filter(a=>!h.selectedMajorIds.includes(a.id)).map(a=>e.jsx(l,{value:a.id,children:Oe(a,O)},a.id))})]}),e.jsxs(c,{type:"button",variant:"default",size:"sm",className:"h-9 px-3",onClick:()=>{pe&&!h.selectedMajorIds.includes(pe)&&(w({...h,selectedMajorIds:[...h.selectedMajorIds,pe]}),S(""))},disabled:!pe,"data-testid":"button-add-major-to-university",children:[e.jsx(Ee,{className:"h-4 w-4 mr-1"}),s("admin.add")]})]}),e.jsx("div",{className:"border rounded-md h-[280px] overflow-y-auto bg-muted/30",children:zi&&f.mode==="edit"?e.jsxs("div",{className:"h-full flex items-center justify-center text-muted-foreground text-sm",children:[e.jsx(ha,{className:"h-4 w-4 animate-spin mr-2"}),s("common.loading")]}):h.selectedMajorIds.length>0?e.jsx("div",{className:"p-2 flex flex-wrap gap-2",children:h.selectedMajorIds.map(a=>{const u=Os?.find(E=>E.id===a);return e.jsxs(N,{variant:"secondary",className:"h-7 pl-2 pr-1 gap-1 text-xs",children:[u?Oe(u,O):a,e.jsx(c,{type:"button",size:"icon",variant:"ghost",className:"h-5 w-5 ml-1 hover:bg-destructive/20",onClick:()=>w({...h,selectedMajorIds:h.selectedMajorIds.filter(E=>E!==a)}),"data-testid":`button-remove-major-${a}`,children:e.jsx(Ss,{className:"h-3 w-3"})})]},a)})}):e.jsx("div",{className:"h-full flex items-center justify-center text-muted-foreground text-sm",children:s("admin.noMajorsSelected")})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s("admin.majorsHint")})]})]}),e.jsxs("div",{className:"space-y-4 border-t pt-4",children:[e.jsx("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Extended Info"}),e.jsxs("div",{className:"space-y-1",children:[e.jsxs("label",{className:"text-sm font-medium",children:["Teaching Languages ",e.jsx("span",{className:"text-xs text-muted-foreground",children:"(one per line)"})]}
21),e.jsx("textarea",{className:"w-full min-h-[60px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",placeholder:`English 22Ukrainian`,value:h.teachingLanguages,onChange:a=>w({...h,teachingLanguages:a.target.value}),"data-testid":"input-teaching-languages"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("label",{className:"text-sm font-medium",children:"Scholarship Info"}),e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"EN"}),e.jsx("textarea",{className:"w-full min-h-[80px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",value:h.scholarshipInfo,onChange:a=>w({...h,scholarshipInfo:a.target.value}),"data-testid":"input-scholarship-info-en"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"UK"}),e.jsx("textarea",{className:"w-full min-h-[80px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",value:h.scholarshipInfoUk,onChange:a=>w({...h,scholarshipInfoUk:a.target.value}),"data-testid":"input-scholarship-info-uk"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"ES"}),e.jsx("textarea",{className:"w-full min-h-[80px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",value:h.scholarshipInfoEs,onChange:a=>w({...h,scholarshipInfoEs:a.target.value}),"data-testid":"input-scholarship-info-es"})]})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("label",{className:"text-sm font-medium",children:"Additional Costs"}),e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"EN"}),e.jsx("textarea",{className:"w-full min-h-[80px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",value:h.additionalCosts,onChange:a=>w({...h,additionalCosts:a.target.value}),"data-testid":"input-additional-costs-en"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"UK"}),e.jsx("textarea",{className:"w-full min-h-[80px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",value:h.additionalCostsUk,onChange:a=>w({...h,additionalCostsUk:a.target.value}),"data-testid":"input-additional-costs-uk"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"ES"}),e.jsx("textarea",{className:"w-full min-h-[80px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",value:h.additionalCostsEs,onChange:a=>w({...h,additionalCostsEs:a.target.value}),"data-testid":"input-additional-costs-es"})]})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("label",{className:"text-sm font-medium",children:"Campus Life"}),e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"EN"}),e.jsx("textarea",{className:"w-full min-h-[80px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",value:h.campusLife,onChange:a=>w({...h,campusLife:a.target.value}),"data-testid":"input-campus-life-en"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"UK"}),e.jsx("textarea",{className:"w-full min-h-[80px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",value:h.campusLifeUk,onChange:a=>w({...h,campusLifeUk:a.target.value}),"data-testid":"input-campus-life-uk"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"ES"}),e.jsx("textarea",{className:"w-full min-h-[80px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",value:h.campusLifeEs,onChange:a=>w({...h,campusLifeEs:a.target.value}),"data-testid":"input-campus-life-es"})]})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("label",{className:"text-sm font-medium",children:"Internship Info"}),e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"EN"}),e.jsx("textarea",{className:"w-full min-h-[80px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",value:h.internshipInfo,onChange:a=>w({...h,internshipInfo:a.target.value}),"data-testid":"input-internship-info-en"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"UK"}),e.jsx("textarea",{className:"w-full min-h-[80px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",value:h.internshipInfoUk,onChange:a=>w({...h,internshipInfoUk:a.target.value}),"data-testid":"input-internship-info-uk"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"ES"}),e.jsx("textarea",{className:"w-full min-h-[80px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",value:h.internshipInfoEs,onChange:a=>w({...h,internshipInfoEs:a.target.value}),"data-testid":"input-internship-info-es"})]})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsxs("label",{className:"text-sm font-medium",children:["Required Documents ",e.jsx("span",{className:"text-xs text-muted-foreground",children:"(one per line)"})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"EN"}),e.jsx("textarea",{className:"w-full min-h-[100px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",placeholder:`Transcript 23Recommendation letters 24...`,value:h.requiredDocuments,onChange:a=>w({...h,requiredDocuments:a.target.value}),"data-testid":"input-required-docs-en"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"UK"}),e.jsx("textarea",{className:"w-full min-h-[100px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",value:h.requiredDocumentsUk,onChange:a=>w({...h,requiredDocumentsUk:a.target.value}),"data-testid":"input-required-docs-uk"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"ES"}),e.jsx("textarea",{className:"w-full min-h-[100px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",value:h.requiredDocumentsEs,onChange:a=>w({...h,requiredDocumentsEs:a.target.value}),"data-testid":"input-required-docs-es"})]})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsxs("label",{className:"text-sm font-medium",children:["Housing Options ",e.jsx("span",{className:"text-xs text-muted-foreground",children:"(one per line)"})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"EN"}),e.jsx("textarea",{className:"w-full min-h-[80px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",value:h.housingOptions,onChange:a=>w({...h,housingOptions:a.target.value}),"data-testid":"input-housing-options-en"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"UK"}),e.jsx("textarea",{className:"w-full min-h-[80px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",value:h.housingOptionsUk,onChange:a=>w({...h,housingOptionsUk:a.target.value}),"data-testid":"input-housing-options-uk"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"ES"}),e.jsx("textarea",{className:"w-full min-h-[80px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",value:h.housingOptionsEs,onChange:a=>w({...h,housingOptionsEs:a.target.value}),"data-testid":"input-housing-options-es"})]})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsxs("label",{className:"text-sm font-medium",children:["Popular Faculties ",e.jsx("span",{className:"text-xs text-muted-foreground",children:"(one per line)"})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"EN"}),e.jsx("textarea",{className:"w-full min-h-[80px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",value:h.popularFaculties,onChange:a=>w({...h,popularFaculties:a.target.value}),"data-testid":"input-popular-faculties-en"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"UK"}),e.jsx("textarea",{className:"w-full min-h-[80px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",value:h.popularFacultiesUk,onChange:a=>w({...h,popularFacultiesUk:a.target.value}),"data-testid":"input-popular-faculties-uk"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"ES"}),e.jsx("textarea",{className:"w-full min-h-[80px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-y",value:h.popularFacultiesEs,onChange:a=>w({...h,popularFacultiesEs:a.target.value}),"data-testid":"input-popular-faculties-es"})]})]})]})]}),e.jsxs(Ue,{className:"border-t pt-4",children:[e.jsx(c,{variant:"outline",onClick:()=>{ie({isOpen:!1,mode:"create",university:null,majorsSynced:!1}),S("")},children:s("common.cancel")}),e.jsxs(c,{onClick:()=>{const a=E=>E?E.split(` 25`).map(te=>
25te.trim()).filter(Boolean):void 0,u=E=>({...E||{},scholarshipInfo:h.scholarshipInfo||void 0,scholarshipInfoUk:h.scholarshipInfoUk||void 0,scholarshipInfoEs:h.scholarshipInfoEs||void 0,additionalCosts:h.additionalCosts||void 0,additionalCostsUk:h.additionalCostsUk||void 0,additionalCostsEs:h.additionalCostsEs||void 0,campusLife:h.campusLife||void 0,campusLifeUk:h.campusLifeUk||void 0,campusLifeEs:h.campusLifeEs||void 0,internshipInfo:h.internshipInfo||void 0,internshipInfoUk:h.internshipInfoUk||void 0,internshipInfoEs:h.internshipInfoEs||void 0,requiredDocuments:a(h.requiredDocuments),requiredDocumentsUk:a(h.requiredDocumentsUk),requiredDocumentsEs:a(h.requiredDocumentsEs),housingOptions:a(h.housingOptions),housingOptionsUk:a(h.housingOptionsUk),housingOptionsEs:a(h.housingOptionsEs),popularFaculties:a(h.popularFaculties),popularFacultiesUk:a(h.popularFacultiesUk),popularFacultiesEs:a(h.popularFacultiesEs),teachingLanguages:a(h.teachingLanguages)});if(f.mode==="create")xn.mutate({id:h.id,name:h.name,nameUk:h.nameUk||void 0,nameEs:h.nameEs||void 0,country:h.country||void 0,countryCode:h.countryCode||void 0,city:h.city||void 0,ranking:h.ranking||void 0,website:h.website||void 0,logoUrl:h.logoUrl||void 0,isActive:h.isActive,majorIds:h.selectedMajorIds,extendedInfo:u()});else if(f.university){const E=f.university.id,te=Ps?.filter(Ae=>Ae.universityId===E).map(Ae=>Ae.majorId)||[];Dt.mutate({id:E,data:{name:h.name,nameUk:h.nameUk||void 0,nameEs:h.nameEs||void 0,country:h.country||void 0,countryCode:h.countryCode||void 0,city:h.city||void 0,ranking:h.ranking||void 0,website:h.website||void 0,logoUrl:h.logoUrl||void 0,isActive:h.isActive,extendedInfo:u(f.university.extendedInfo??void 0)},newMajorIds:h.selectedMajorIds,oldMajorIds:te})}},disabled:f.mode==="create"&&(!h.id||!h.name),"data-testid":"button-save-university",children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),s("common.save")]})]})]})}),e.jsx(fe,{open:ge.isOpen,onOpenChange:a=>we({...ge,isOpen:a}),children:e.jsxs(ye,{className:"sm:max-w-md",children:[e.jsxs(Ne,{children:[e.jsx(be,{children:s("admin.createCountry")}),e.jsx(Se,{children:s("admin.editDescription")})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"country-code",children:s("admin.code")}),e.jsx(g,{id:"country-code",value:K.code,onChange:a=>R({...K,code:a.target.value.toUpperCase()}),placeholder:"UA",maxLength:10,"data-testid":"input-country-code"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"country-flag",children:s("admin.flagEmoji")}),e.jsx(g,{id:"country-flag",value:K.flagEmoji,onChange:a=>R({...K,flagEmoji:a.target.value}),placeholder:"ðºð¦",maxLength:10,"data-testid":"input-country-flag"})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"country-name",children:s("admin.name")}),e.jsx(g,{id:"country-name",value:K.name,onChange:a=>R({...K,name:a.target.value}),placeholder:"Ukraine","data-testid":"input-country-name"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"country-nameUk",children:s("admin.nameUk")}),e.jsx(g,{id:"country-nameUk",value:K.nameUk,onChange:a=>R({...K,nameUk:a.target.value}),placeholder:"УкÑаÑна","data-testid":"input-country-nameUk"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"country-nameEs",children:s("admin.nameEs")}),e.jsx(g,{id:"country-nameEs",value:K.nameEs,onChange:a=>R({...K,nameEs:a.target.value}),placeholder:"Ucrania","data-testid":"input-country-nameEs"})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Fe,{id:"country-isActive",checked:K.isActive,onCheckedChange:a=>R({...K,isActive:a})}),e.jsx(i,{htmlFor:"country-isActive",children:s("admin.active")})]})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:()=>we({isOpen:!1,mode:"create"}),children:s("common.cancel")}),e.jsxs(c,{onClick:()=>{un.mutate({code:K.code,name:K.name,nameUk:K.nameUk||void 0,nameEs:K.nameEs||void 0,flagEmoji:K.flagEmoji||void 0,isActive:K.isActive})}
25,disabled:!K.code||!K.name,"data-testid":"button-save-country",children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),s("common.save")]})]})]})}),e.jsx(fe,{open:v.isOpen,onOpenChange:a=>d({...v,isOpen:a}),children:e.jsxs(ye,{className:"sm:max-w-md",children:[e.jsxs(Ne,{children:[e.jsx(be,{children:v.mode==="create"?s("admin.createMajor"):s("admin.editMajor")}),e.jsx(Se,{children:s("admin.editDescription")})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[v.mode==="create"&&e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"major-id",children:s("admin.id")}),e.jsx(g,{id:"major-id",value:D.id,onChange:a=>_({...D,id:a.target.value}),placeholder:"major-computer-science","data-testid":"input-major-id"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"major-name",children:s("admin.name")}),e.jsx(g,{id:"major-name",value:D.name,onChange:a=>_({...D,name:a.target.value}),placeholder:"Computer Science","data-testid":"input-major-name"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"major-nameUk",children:s("admin.nameUk")}),e.jsx(g,{id:"major-nameUk",value:D.nameUk,onChange:a=>_({...D,nameUk:a.target.value}),placeholder:"Ðомп'ÑÑеÑÐ½Ñ Ð½Ð°Ñки","data-testid":"input-major-nameUk"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"major-nameEs",children:s("admin.nameEs")}),e.jsx(g,{id:"major-nameEs",value:D.nameEs,onChange:a=>_({...D,nameEs:a.target.value}),placeholder:"Ciencias de la Computación","data-testid":"input-major-nameEs"})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"major-category",children:s("admin.category")}),e.jsxs(Z,{value:D.category,onValueChange:a=>_({...D,category:a}),children:[e.jsx(ee,{"data-testid":"select-major-category",children:e.jsx(se,{placeholder:s("admin.selectCategory")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"STEM",children:"STEM"}),e.jsx(l,{value:"Business",children:"Business"}),e.jsx(l,{value:"Arts",children:"Arts"}),e.jsx(l,{value:"Humanities",children:"Humanities"}),e.jsx(l,{value:"Social Sciences",children:"Social Sciences"}),e.jsx(l,{value:"Health",children:"Health"}),e.jsx(l,{value:"Law",children:"Law"}),e.jsx(l,{value:"Education",children:"Education"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"major-description",children:s("admin.description")}),e.jsx(g,{id:"major-description",value:D.description,onChange:a=>_({...D,description:a.target.value}),placeholder:"Study of computation and information","data-testid":"input-major-description"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Fe,{id:"major-isActive",checked:D.isActive,onCheckedChange:a=>_({...D,isActive:a})}),e.jsx(i,{htmlFor:"major-isActive",children:s("admin.active")})]})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:()=>d({isOpen:!1,mode:"create",major:null}),children:s("common.cancel")}),e.jsxs(c,{onClick:()=>{v.mode==="create"?hn.mutate({id:D.id||void 0,name:D.name,nameUk:D.nameUk||void 0,nameEs:D.nameEs||void 0,category:D.category||void 0,description:D.description||void 0,isActive:D.isActive}):v.major&&pn.mutate({id:v.major.id,data:{name:D.name,nameUk:D.nameUk||void 0,nameEs:D.nameEs||void 0,category:D.category||void 0,description:D.description||void 0,isActive:D.isActive}})},disabled:!D.name,"data-testid":"button-save-major",children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),s("common.save")]})]})]})}),e.jsx(fe,{open:r.isOpen,onOpenChange:a=>x({...r,isOpen:a}),children:e.jsxs(ye,{className:"sm:max-w-lg",children:[e.jsxs(Ne,{children:[e.jsx(be,{children:s("admin.assignMajors")}),e.jsxs(Se,{children:[s("admin.assignMajorsTo")," ",r.universityName]})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(Z,{value:V,onValueChange:ue,children:[e.jsx(ee,{className:"flex-1","data-testid":"select-assign-major",children:e.jsx(se,{placeholder:s("admin.selectMajor")})}),e.jsx(ae,{children:Os?.filter(a=>!Ps?.some(u=>u.universityId===r.universityId&&u.majorId===a.id)).map(a=>e.jsx(l,{value:a.id,children:Oe(a,O)},a.id))})]}),e.jsxs(c,{onClick:()=>{V&&r.universityId&&qt.mutate({universityId:r.universityId,majorId:V})},disabled:!V||qt.isPending,"data-testid":"button-assign-major",children:[e.jsx(Ee,{className:"h-4 w-4 mr-2"}),s("admin.assign")]})]}),e.jsxs("div",{className:"border rounded-md",children:[e.jsx("div",{className:"p-2 bg-muted/50 border-b font-medium text-sm",children:s("admin.assignedMajors")}),e.jsx("div",{className:"max-h-60 overflow-auto",children:Ps?.filter(a=>a.universityId===r.universityId).length===0?e.jsx("div",{className:"p-4 text-center text-muted-foreground text-sm",children:s("admin.noMajorsAssigned")}):e.jsx("div",{className:"divide-y",children:Ps?.filter(a=>a.universityId===r.universityId).map(a=>e.jsxs("div",{className:"flex items-center justify-between p-2",children:[e.jsx("span",{className:"text-sm",children:a.major?Oe(a.major,O):a.majorId}),e.jsx(c,{size:"icon",variant:"ghost",onClick:()=>Ot.mutate(a.id),disabled:Ot.isPending,"data-testid":`button-unassign-major-${a.majorId}`,children:e.jsx(Ss,{className:"h-4 w-4"})})]},a.id))})})]})]}),e.jsx(Ue,{children:e.jsx(c,{variant:"outline",onClick:()=>x({isOpen:!1,universityId:"",universityName:""}),children:s("common.close")})})]})}),e.jsx(fe,{open:Pe.isOpen,onOpenChange:a=>Le({...Pe,isOpen:a}),children:e.jsxs(ye,{className:"sm:max-w-2xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(Ne,{children:[e.jsx(be,{children:Pe.mode==="create"?s("admin.createOpportunity"):s("admin.editOpportunity")}),e.jsx(Se,{children:s("admin.editDescription")})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[Pe.mode==="create"&&e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"opp-id",children:s("admin.id")}),e.jsx(g,{id:"opp-id",value:F.id,onChange:a=>ke({...F,id:a.target.value}),placeholder:"opp-scholarship-2024","data-testid":"input-opportunity-id"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(i,{htmlFor:"opp-title",children:[s("admin.title")," *"]}),e.jsx(g,{id:"opp-title",value:F.title,onChange:a=>ke({...F,title:a.target.value}),placeholder:"Scholarship Program","data-testid":"input-opportunity-title"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"opp-titleUk",children:s("admin.titleUk")}),e.jsx(g,{id:"opp-titleUk",value:F.titleUk,onChange:a=>ke({...F,titleUk:a.target.value}),placeholder:"ÐÑогÑама ÑÑипендÑй","data-testid":"input-opportunity-titleUk"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"opp-titleEs",children:s("admin.titleEs")}),e.jsx(g,{id:"opp-titleEs",value:F.titleEs,onChange:a=>ke({...F,titleEs:a.target.value}),placeholder:"Programa de Becas","data-testid":"input-opportunity-titleEs"})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(i,{htmlFor:"opp-type",children:[s("admin.type")," *"]}),e.jsxs(Z,{value:F.type,onValueChange:a=>ke({...F,type:a}),children:[e.jsx(ee,{"data-testid":"select-opportunity-type",children:e.jsx(se,{placeholder:s("admin.selectType")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"scholarship",children:s("admin.typeScholarship")}),e.jsx(l,{value:"grant",children:s("admin.typeGrant")}),e.jsx(l,{value:"internship",children:s("admin.typeInternship")}),e.jsx(l,{value:"course",children:s("admin.typeCourse")}),e.jsx(l,{value:"competition",children:s("admin.typeCompetition")}),e.jsx(l,{value:"volunteer",children:s("admin.typeVolunteer")}),e.jsx(l,{value:"service",children:s("admin.typeService")})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"opp-provider",children:s("admin.provider")}
25),e.jsx(g,{id:"opp-provider",value:F.provider,onChange:a=>ke({...F,provider:a.target.value}),placeholder:"British Council","data-testid":"input-opportunity-provider"})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"opp-country",children:s("admin.country")}),e.jsxs(Z,{value:F.country,onValueChange:a=>ke({...F,country:a}),children:[e.jsx(ee,{"data-testid":"select-opportunity-country",children:e.jsx(se,{placeholder:s("admin.selectCountry")})}),e.jsx(ae,{children:Je?.map(a=>e.jsxs(l,{value:a.name,children:[a.flagEmoji," ",a.name]},a.code))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"opp-fundingAmount",children:s("admin.fundingAmount")}),e.jsx(g,{id:"opp-fundingAmount",value:F.fundingAmount,onChange:a=>ke({...F,fundingAmount:a.target.value}),placeholder:"10000","data-testid":"input-opportunity-funding"})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"opp-promoCode",children:s("admin.promoCode","Promo Code")}),e.jsx(g,{id:"opp-promoCode",value:F.promoCode,onChange:a=>ke({...F,promoCode:a.target.value}),placeholder:"DISCOUNT20","data-testid":"input-opportunity-promo-code"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"opp-promoDiscount",children:s("admin.promoDiscount","Promo Discount")}),e.jsx(g,{id:"opp-promoDiscount",value:F.promoDiscount,onChange:a=>ke({...F,promoDiscount:a.target.value}),placeholder:"20% off","data-testid":"input-opportunity-promo-discount"})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"opp-university",children:s("admin.university")}),e.jsxs(Z,{value:F.universityId||"__none__",onValueChange:a=>ke({...F,universityId:a==="__none__"?"":a}),children:[e.jsx(ee,{"data-testid":"select-opportunity-university",children:e.jsx(se,{placeholder:s("admin.selectUniversity")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"__none__",children:s("admin.noUniversity")}),Is?.map(a=>e.jsx(l,{value:a.id,children:Oe(a,O)},a.id))]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"opp-major",children:s("admin.major")}),e.jsxs(Z,{value:F.majorId||"__none__",onValueChange:a=>ke({...F,majorId:a==="__none__"?"":a}),children:[e.jsx(ee,{"data-testid":"select-opportunity-major",children:e.jsx(se,{placeholder:s("admin.selectMajor")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"__none__",children:s("admin.noMajor")}),Os?.map(a=>e.jsx(l,{value:a.id,children:Oe(a,O)},a.id))]})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"opp-description",children:s("admin.description")}),e.jsx(G,{id:"opp-description",value:F.description,onChange:a=>ke({...F,description:a.target.value}),placeholder:"Describe the opportunity...",rows:3,"data-testid":"input-opportunity-description"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"opp-descriptionUk",children:s("admin.descriptionUk")}),e.jsx(G,{id:"opp-descriptionUk",value:F.descriptionUk,onChange:a=>ke({...F,descriptionUk:a.target.value}),placeholder:"ÐÐ¿Ð¸Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ÑÑÑ...",rows:2,"data-testid":"input-opportunity-descriptionUk"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"opp-descriptionEs",children:s("admin.descriptionEs")}),e.jsx(G,{id:"opp-descriptionEs",value:F.descriptionEs,onChange:a=>ke({...F,descriptionEs:a.target.value}),placeholder:"Descripción de la oportunidad...",rows:2,"data-testid":"input-opportunity-descriptionEs"})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"opp-requirements",children:s("admin.requirements")}),e.jsx(G,{id:"opp-requirements",value:F.requirements,onChange:a=>ke({...F,requirements:a.target.value}),placeholder:"List of requirements...",rows:2,"data-testid":"input-opportunity-requirements"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"opp-link",children:s("admin.link")}),e.jsx(g,{id:"opp-link",value:F.link,onChange:a=>ke({...F,link:a.target.value}),placeholder:"https://example.com/apply","data-testid":"input-opportunity-link"})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"opp-applicationDeadline",children:s("admin.applicationDeadline")}),e.jsx(g,{id:"opp-applicationDeadline",type:"date",value:F.applicationDeadline,onChange:a=>ke({...F,applicationDeadline:a.target.value}),"data-testid":"input-opportunity-deadline"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"opp-startDate",children:s("admin.startDate")}),e.jsx(g,{id:"opp-startDate",type:"date",value:F.startDate,onChange:a=>ke({...F,startDate:a.target.value}),"data-testid":"input-opportunity-startDate"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"opp-endDate",children:s("admin.endDate")}),e.jsx(g,{id:"opp-endDate",type:"date",value:F.endDate,onChange:a=>ke({...F,endDate:a.target.value}),"data-testid":"input-opportunity-endDate"})]})]}),e.jsxs("div",{className:"flex items-center gap-6",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Fe,{id:"opp-isFeatured",checked:F.isFeatured,onCheckedChange:a=>ke({...F,isFeatured:a})}),e.jsx(i,{htmlFor:"opp-isFeatured",children:s("admin.featured")})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Fe,{id:"opp-isActive",checked:F.isActive,onCheckedChange:a=>ke({...F,isActive:a})}),e.jsx(i,{htmlFor:"opp-isActive",children:s("admin.active")})]})]})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:()=>Le({isOpen:!1,mode:"create",opportunity:null}),children:s("common.cancel")}),e.jsxs(c,{onClick:()=>{Pe.mode==="create"?_i.mutate({id:F.id||void 0,title:F.title,titleUk:F.titleUk||void 0,titleEs:F.titleEs||void 0,description:F.description||void 0,descriptionUk:F.descriptionUk||void 0,descriptionEs:F.descriptionEs||void 0,type:F.type,provider:F.provider||void 0,country:F.country||void 0,universityId:F.universityId||void 0,majorId:F.majorId||void 0,applicationDeadline:F.applicationDeadline||void 0,startDate:F.startDate||void 0,endDate:F.endDate||void 0,link:F.link||void 0,requirements:F.requirements||void 0,fundingAmount:F.fundingAmount||void 0,promoCode:F.promoCode||void 0,promoDiscount:F.promoDiscount||void 0,isFeatured:F.isFeatured,isActive:F.isActive}):Pe.opportunity&&Hi.mutate({id:Pe.opportunity.id,data:{title:F.title,titleUk:F.titleUk||void 0,titleEs:F.titleEs||void 0,description:F.description||void 0,descriptionUk:F.descriptionUk||void 0,descriptionEs:F.descriptionEs||void 0,type:F.type,provider:F.provider||void 0,country:F.country||void 0,universityId:F.universityId||void 0,majorId:F.majorId||void 0,applicationDeadline:F.applicationDeadline||void 0,startDate:F.startDate||void 0,endDate:F.endDate||void 0,link:F.link||void 0,requirements:F.requirements||void 0,fundingAmount:F.fundingAmount||void 0,promoCode:F.promoCode||void 0,promoDiscount:F.promoDiscount||void 0,isFeatured:F.isFeatured,isActive:F.isActive}})},disabled:!F.title||!F.type,"data-testid":"button-save-opportunity",children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),s("common.save")]})]})]})}),e.jsx(fe,{open:bs.isOpen,onOpenChange:a=>Vs({...bs,isOpen:a}),children:e.jsxs(ye,{className:"sm:max-w-4xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(Ne,{children:[e.jsx(be,{children:bs.mode==="create"?s("admin.createMentor"):s("admin.editMentor")}),e.jsx(Se,{children:s("admin.editDescription")})]}),e.jsxs("div",{className:"grid gap-6 py-4",children:[bs.mode==="create"&&e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(i,{htmlFor:"mentor-userId",children:[s("admin.selectUser")," *"]}),e.jsxs(Z,{value:$.userId||"__none__",onValueChange:a=>Ie({...$,userId:a==="__none__"?"":a}),children:[e.jsx(ee,{"data-testid":"select-mentor-user",children:e.jsx(se,{placeholder:s("admin.selectUser")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"__none__",children:s("admin.noUserSelected")}),ra?.filter(a=>a.role==="mentor").map(a=>
25e.jsxs(l,{value:a.id,children:[a.firstName," ",a.lastName," (",a.username,")"]},a.id))]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s("admin.userWithMentorRole")})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"mentor-university",children:s("admin.university")}),e.jsxs(Xt,{open:bt,onOpenChange:Ma,children:[e.jsx(Zt,{asChild:!0,children:e.jsxs(c,{variant:"outline",role:"combobox","aria-expanded":bt,className:"w-full justify-between font-normal","data-testid":"select-mentor-university",children:[e.jsx("span",{className:"truncate",children:$.universityId?(()=>{const a=Is?.find(u=>u.id===$.universityId);return a?Oe(a,O):s("admin.selectUniversity")})():s("admin.selectUniversity")}),e.jsx(ci,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(ei,{className:"w-[300px] p-0",align:"start",children:e.jsxs(si,{children:[e.jsx(ai,{placeholder:s("admin.searchUniversity")}),e.jsxs(ti,{children:[e.jsx(ii,{children:s("admin.noUniversityFound")}),e.jsxs(ni,{children:[e.jsxs(tt,{value:"-",onSelect:()=>{Ie({...$,universityId:""}),Ma(!1)},children:[e.jsx(ma,{className:`mr-2 h-4 w-4 ${$.universityId?"opacity-0":"opacity-100"}`}),"-"]}),Is?.map(a=>e.jsxs(tt,{value:Oe(a,O),onSelect:()=>{Ie({...$,universityId:a.id}),Ma(!1)},"data-testid":`mentor-university-option-${a.id}`,children:[e.jsx(ma,{className:`mr-2 h-4 w-4 ${$.universityId===a.id?"opacity-100":"opacity-0"}`}),Oe(a,O)]},a.id))]})]})]})})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"mentor-major",children:s("admin.major")}),e.jsxs(Z,{value:$.majorId||"__none__",onValueChange:a=>Ie({...$,majorId:a==="__none__"?"":a}),children:[e.jsx(ee,{"data-testid":"select-mentor-major",children:e.jsx(se,{placeholder:s("admin.selectMajor")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"__none__",children:"-"}),Os?.map(a=>e.jsx(l,{value:a.id,children:Oe(a,O)},a.id))]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"mentor-degree",children:s("admin.degree")}),e.jsxs(Z,{value:$.degree||"__none__",onValueChange:a=>Ie({...$,degree:a==="__none__"?"":a}),children:[e.jsx(ee,{"data-testid":"select-mentor-degree",children:e.jsx(se,{placeholder:s("admin.degree")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"__none__",children:"-"}),e.jsx(l,{value:"Bachelor",children:s("admin.degreeOptions.bachelor")}),e.jsx(l,{value:"Master",children:s("admin.degreeOptions.master")}),e.jsx(l,{value:"PhD",children:s("admin.degreeOptions.phd")}),e.jsx(l,{value:"Professor",children:s("admin.degreeOptions.professor")})]})]})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"mentor-experience",children:s("admin.yearsOfExperience")}),e.jsx(g,{id:"mentor-experience",type:"number",min:0,value:$.yearsOfExperience,onChange:a=>Ie({...$,yearsOfExperience:parseInt(a.target.value)||0}),"data-testid":"input-mentor-experience"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"mentor-hourlyRate",children:s("admin.hourlyRate")}),e.jsx(g,{id:"mentor-hourlyRate",type:"number",min:0,value:$.hourlyRate,onChange:a=>Ie({...$,hourlyRate:parseInt(a.target.value)||0}),placeholder:"50","data-testid":"input-mentor-hourlyRate"})]}),e.jsxs("div",{className:"flex items-end gap-6 pb-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Fe,{id:"mentor-isAvailable",checked:$.isAvailable,onCheckedChange:a=>Ie({...$,isAvailable:a})}),e.jsx(i,{htmlFor:"mentor-isAvailable",children:s("admin.isAvailable")})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Fe,{id:"mentor-isVerified",checked:$.isVerified,onCheckedChange:a=>Ie({...$,isVerified:a})}),e.jsx(i,{htmlFor:"mentor-isVerified",children:s("admin.isVerified")})]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{children:s("admin.specializations")}),e.jsx("div",{className:"flex flex-wrap gap-1 min-h-[28px]",children:$.specialization.map((a,u)=>e.jsxs(N,{variant:"secondary",className:"gap-1",children:[a,e.jsx("button",{type:"button",onClick:()=>{const E=[...$.specialization];E.splice(u,1),Ie({...$,specialization:E})},className:"ml-1 hover:text-destructive",children:e.jsx(Ss,{className:"h-3 w-3"})})]},u))}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(g,{placeholder:s("admin.specializationPlaceholder"),value:na,onChange:a=>Ka(a.target.value),onKeyDown:a=>{a.key==="Enter"&&na.trim()&&(a.preventDefault(),Ie({...$,specialization:[...$.specialization,na.trim()]}),Ka(""))},"data-testid":"input-mentor-specialization"}),e.jsx(c,{type:"button",variant:"outline",size:"icon",onClick:()=>{na.trim()&&(Ie({...$,specialization:[...$.specialization,na.trim()]}),Ka(""))},"data-testid":"button-add-specialization",children:e.jsx(Ee,{className:"h-4 w-4"})})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{children:s("admin.languages")}),e.jsx(Vn,{selected:$.languages,onChange:a=>Ie({...$,languages:a})})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{children:s("admin.linkedUniversities")}),$.linkedUniversityIds.length>0&&e.jsx("div",{className:"flex flex-wrap gap-1",children:$.linkedUniversityIds.map(a=>{const u=Is?.find(E=>E.id===a);return e.jsxs(N,{variant:"secondary",className:"text-xs",children:[u?Oe(u,O):a,e.jsx("button",{onClick:()=>Ie({...$,linkedUniversityIds:$.linkedUniversityIds.filter(E=>E!==a)}),className:"ml-1","data-testid":`button-remove-linked-uni-${a}`,children:e.jsx(Ss,{className:"h-3 w-3"})})]},a)})}),e.jsxs(Xt,{children:[e.jsx(Zt,{asChild:!0,children:e.jsxs(c,{variant:"outline",className:"w-full justify-between font-normal","data-testid":"select-mentor-linked-universities",children:[s("admin.addUniversity"),e.jsx(ci,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(ei,{className:"w-[300px] p-0",align:"start",children:e.jsxs(si,{children:[e.jsx(ai,{placeholder:s("admin.searchUniversity")}),e.jsxs(ti,{children:[e.jsx(ii,{children:s("admin.noUniversityFound")}),e.jsx(ni,{children:Is?.filter(a=>!$.linkedUniversityIds.includes(a.id)).map(a=>e.jsx(tt,{value:Oe(a,O),onSelect:()=>{Ie({...$,linkedUniversityIds:[...$.linkedUniversityIds,a.id]})},"data-testid":`mentor-linked-university-option-${a.id}`,children:Oe(a,O)},a.id))})]})]})})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{children:s("admin.countries","Countries")}),e.jsxs("div",{className:"border rounded-md p-2 max-h-40 overflow-y-auto",children:[$.countries.length>0&&e.jsx("div",{className:"flex flex-wrap gap-1 mb-2 pb-2 border-b",children:$.countries.map(a=>{const u=Je?.find(E=>E.code===a);return e.jsxs(N,{variant:"secondary",className:"gap-1",children:[u?Oe(u,O):a,e.jsx("button",{type:"button",onClick:()=>Ie({...$,countries:$.countries.filter(E=>E!==a)}),className:"ml-1 hover:text-destructive",children:e.jsx(Ss,{className:"h-3 w-3"})})]},a)})}),e.jsx("div",{className:"space-y-1",children:Je?.filter(a=>!$.countries.includes(a.code)).map(a=>e.jsx("button",{type:"button",onClick:()=>Ie({...$,countries:[...$.countries,a.code]}),className:"w-full text-left px-2 py-1 text-sm hover:bg-accent rounded","data-testid":`btn-add-country-${a.code}`,children:Oe(a,O)},a.code))})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"mentor-bio",children:s("admin.bioEn")}),e.jsx(G,{id:"mentor-bio",value:$.bio,onChange:a=>Ie({...$,bio:a.target.value}),placeholder:s("admin.bioPlaceholder"),rows:2,"data-testid":"input-mentor-bio"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"mentor-bioUk",children:s("admin.bioUk")}),e.jsx(G,{id:"mentor-bioUk",value:$.bioUk,onChange:a=>Ie({...$,bioUk:a.target.value}),placeholder:"ÐÑогÑаÑÑÑ Ð¼ÐµÐ½ÑоÑа...",rows:2,"data-testid":"input-mentor-bioUk"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"mentor-bioEs",children:s("admin.bioEs")}),e.jsx(G,{id:"mentor-bioEs",value:$.bioEs,onChange:a=>Ie({...$,bioEs:a.target.value}),placeholder:"BiografÃa del mentor...",rows:2,"data-testid":"input-mentor-bioEs"})]})]})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:()=>Vs({isOpen:!1,mode:"create",mentor:null}),children:s("common.cancel")}),e.jsxs(c,{onClick:()=>{bs.mode==="create"?Wi.mutate({userId:$.userId,specialization:$.specialization,universityId:$.universityId||void 0,majorId:$.majorId||void 0,countries:$.countries.length>0?$.countries:void 0,country:$.countries[0]||void 0,degree:$.degree||void 0,yearsOfExperience:$.yearsOfExperience,bio:$.bio||void 0,bioUk:$.bioUk||void 0,bioEs:$.bioEs||void 0,hourlyRate:$.hourlyRate,languages:$.languages,isAvailable:$.isAvailable,isVerified:$.isVerified}):bs.mentor&&Ba.mutate({id:bs.mentor.id,data:{specialization:$.specialization,universityId:$.universityId||void 0,majorId:$.majorId||void 0,countries:$.countries.length>0?$.countries:void 0,country:$.countries[0]||void 0,degree:$.degree||void 0,yearsOfExperience:$.yearsOfExperience,bio:$.bio||void 0,bioUk:$.bioUk||void 0,bioEs:$.bioEs||void 0,hourlyRate:String($.hourlyRate),languages:$.languages,isAvailable:$.isAvailable,isVerified:$.isVerified}})},disabled:bs.mode==="create"&&!$.userId,"data-testid":"button-save-mentor",children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),s("common.save")]})]})]})}),e.jsx(fe,{open:rs.isOpen,onOpenChange:a=>as({...rs,isOpen:a}),children:e.jsxs(ye,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(Ne,{children:[e.jsx(be,{children:rs.mode==="create"?s("admin.createTemplate"):s("admin.editTemplate")}),e.jsx(Se,{children:s("admin.templateDialogDescription")})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(i,{htmlFor:"template-name",children:[s("admin.name")," (EN) *"]}),e.jsx(g,{id:"template-name",value:H.name,onChange:a=>o({...H,name:a.target.value}),placeholder:"Standard UK Admission Plan","data-testid":"input-template-name"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(i,{htmlFor:"template-nameUk",children:[s("admin.name")," (UK)"]}),e.jsx(g,{id:"template-nameUk",value:H.nameUk,onChange:a=>o({...H,nameUk:a.target.value}),placeholder:"СÑандаÑÑний план вÑÑÑÐ¿Ñ Ð´Ð¾ UK","data-testid":"input-template-nameUk"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(i,{htmlFor:"template-nameEs",children:[s("admin.name")," (ES)"]}),e.jsx(g,{id:"template-nameEs",value:H.nameEs,onChange:a=>o({...H,nameEs:a.target.value}),placeholder:"Plan estándar de admisión UK","data-testid":"input-template-nameEs"})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"template-country",children:s("admin.country")}),e.jsxs(Z,{value:H.country||"none",onValueChange:a=>o({...H,country:a==="none"?"":a}),children:[e.jsx(ee,{id:"template-country","data-testid":"select-template-country",children:e.jsx(se,{placeholder:s("admin.selectCountry")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"none",children:s("admin.noCountry")}),Je?.map(a=>e.jsx(l,{value:a.code,children:a.name},a.code))]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{children:s("admin.universities")}),e.jsx("div",{className:"border rounded-md p-3 max-h-48 overflow-y-auto",children:Is?.filter(a=>!H.country||a.countryCode===H.country).length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:s("admin.noUniversitiesForCountry")}):e.jsx("div",{className:"space-y-2",children:Is?.filter(a=>!H.country||a.countryCode===H.country).map(a=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Bn,{id:`uni-${a.id}`,checked:H.universityIds.includes(a.id),onCheckedChange:u=>{o(u?{...H,universityIds:[...H.universityIds,a.id]}:{...H,universityIds:H.universityIds.filter(E=>E!==a.id)})},"data-testid":`checkbox-university-${a.id}`}),e.jsx(i,{htmlFor:`uni-${a.id}`,className:"text-sm font-normal cursor-pointer",children:Oe(a,O)})]},a.id))})}),H.universityIds.length>0&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:[s("admin.selectedUniversities"),": ",H.universityIds.length]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"template-major",children:s("admin.major")}),e.jsxs(Z,{value:H.majorId||"none",onValueChange:a=>o({...H,majorId:a==="none"?"":a}),children:[e.jsx(ee,{id:"template-major","data-testid":"select-template-major",children:e.jsx(se,{placeholder:s("admin.selectMajor")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"none",children:s("admin.noMajor")}),Os?.map(a=>e.jsx(l,{value:a.id,children:Oe(a,O)},a.id))]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(i,{htmlFor:"template-description",children:[s("admin.description")," (EN)"]}),e.jsx(G,{id:"template-description",value:H.description,onChange:a=>o({...H,description:a.target.value}),placeholder:"Description of this admission plan template...",rows:3,"data-testid":"input-template-description"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(i,{htmlFor:"template-descriptionUk",children:[s("admin.description")," (UK)"]}),e.jsx(G,{id:"template-descriptionUk",value:H.descriptionUk,onChange:a=>o({...H,descriptionUk:a.target.value}),rows:2,"data-testid":"input-template-descriptionUk"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(i,{htmlFor:"template-descriptionEs",children:[s("admin.description")," (ES)"]}),e.jsx(G,{id:"template-descriptionEs",value:H.descriptionEs,onChange:a=>o({...H,descriptionEs:a.target.value}),rows:2,"data-testid":"input-template-descriptionEs"})]})]}),e.jsxs("div",{className:"flex items-center gap-6",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Fe,{id:"template-isDefault",checked:H.isDefault,onCheckedChange:a=>o({...H,isDefault:a})}),e.jsx(i,{htmlFor:"template-isDefault",children:s("admin.setAsCountryDefault")})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Fe,{id:"template-isActive",checked:H.isActive,onCheckedChange:a=>o({...H,isActive:a})}),e.jsx(i,{htmlFor:"template-isActive",children:s("admin.active")})]})]}),H.isDefault&&e.jsx("div",{className:"p-3 bg-blue-50 dark:bg-blue-950 rounded-md border border-blue-200 dark:border-blue-800",children:e.jsx("p",{className:"text-sm text-blue-800 dark:text-blue-200",children:s("admin.countryDefaultHint")})})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:()=>as({isOpen:!1,mode:"create",template:null}),children:s("common.cancel")}),e.jsxs(c,{onClick:()=>{rs.mode==="create"?en.mutate({name:H.name,nameUk:H.nameUk||void 0,nameEs:H.nameEs||void 0,country:H.country||void 0,majorId:H.majorId||void 0,description:H.description||void 0,descriptionUk:H.descriptionUk||void 0,descriptionEs:H.descriptionEs||void 0,isDefault:H.isDefault,isActive:H.isActive,universityIds:H.universityIds}):rs.template&&sn.mutate({id:rs.template.id,data:{name:H.name,nameUk:H.nameUk||void 0,nameEs:H.nameEs||void 0,country:H.country||void 0,majorId:H.majorId||void 0,description:H.description||void 0,descriptionUk:H.descriptionUk||void 0,descriptionEs:H.descriptionEs||void 0,isDefault:H.isDefault,isActive:H.isActive},universityIds:H.universityIds})},disabled:!H.name,"data-testid":"button-save-template",children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),s("common.save")]})]})]})}),e.jsx(fe,{open:$e.isOpen,onOpenChange:a=>
25t({...$e,isOpen:a}),children:e.jsxs(ye,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(Ne,{children:[e.jsx(be,{children:$e.mode==="create"?s("admin.addGoal"):s("admin.editGoal")}),e.jsx(Se,{children:s("admin.goalDialogDescription")})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(i,{htmlFor:"goal-title",children:[s("admin.title")," (EN) *"]}),e.jsx(g,{id:"goal-title",value:L.title,onChange:a=>n({...L,title:a.target.value}),placeholder:"Complete IELTS exam","data-testid":"input-goal-title"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(i,{htmlFor:"goal-titleUk",children:[s("admin.title")," (UK)"]}),e.jsx(g,{id:"goal-titleUk",value:L.titleUk,onChange:a=>n({...L,titleUk:a.target.value}),placeholder:"СклаÑÑи ÑÑÐ¿Ð¸Ñ IELTS","data-testid":"input-goal-titleUk"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(i,{htmlFor:"goal-titleEs",children:[s("admin.title")," (ES)"]}),e.jsx(g,{id:"goal-titleEs",value:L.titleEs,onChange:a=>n({...L,titleEs:a.target.value}),placeholder:"Completar examen IELTS","data-testid":"input-goal-titleEs"})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(i,{htmlFor:"goal-description",children:[s("admin.description")," (EN)"]}),e.jsx(G,{id:"goal-description",value:L.description,onChange:a=>n({...L,description:a.target.value}),placeholder:"Prepare and take the IELTS academic test...",rows:3,"data-testid":"input-goal-description"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(i,{htmlFor:"goal-descriptionUk",children:[s("admin.description")," (UK)"]}),e.jsx(G,{id:"goal-descriptionUk",value:L.descriptionUk,onChange:a=>n({...L,descriptionUk:a.target.value}),rows:2,"data-testid":"input-goal-descriptionUk"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(i,{htmlFor:"goal-descriptionEs",children:[s("admin.description")," (ES)"]}),e.jsx(G,{id:"goal-descriptionEs",value:L.descriptionEs,onChange:a=>n({...L,descriptionEs:a.target.value}),rows:2,"data-testid":"input-goal-descriptionEs"})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(i,{htmlFor:"goal-category",children:[s("admin.category")," *"]}),e.jsxs(Z,{value:L.category,onValueChange:a=>n({...L,category:a}),children:[e.jsx(ee,{id:"goal-category","data-testid":"select-goal-category",children:e.jsx(se,{})}),e.jsxs(ae,{children:[e.jsx(l,{value:"academic",children:s("goals.category.academic")}),e.jsx(l,{value:"career",children:s("goals.category.career")}),e.jsx(l,{value:"skills",children:s("goals.category.skills")}),e.jsx(l,{value:"language",children:s("goals.category.language")}),e.jsx(l,{value:"documents",children:s("goals.category.documents")}),e.jsx(l,{value:"tests",children:s("goals.category.tests")})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"goal-priority",children:s("admin.priority")}),e.jsxs(Z,{value:L.priority,onValueChange:a=>n({...L,priority:a}),children:[e.jsx(ee,{id:"goal-priority","data-testid":"select-goal-priority",children:e.jsx(se,{})}),e.jsxs(ae,{children:[e.jsx(l,{value:"low",children:s("goals.priority.low")}),e.jsx(l,{value:"medium",children:s("goals.priority.medium")}),e.jsx(l,{value:"high",children:s("goals.priority.high")})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(i,{htmlFor:"goal-months",children:s("admin.monthsBeforeDeadline")}),e.jsx(g,{id:"goal-months",type:"number",min:"1",max:"36",value:L.monthsBeforeDeadline,onChange:a=>n({...L,monthsBeforeDeadline:parseInt(a.target.value)||12}),"data-testid":"input-goal-months"})]})]})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:()=>t({isOpen:!1,mode:"create",goal:null,templateId:""}),children:s("common.cancel")}),e.jsxs(c,{onClick:()=>{$e.mode==="create"&&$e.templateId?tn.mutate({templateId:$e.templateId,data:{title:L.title,titleUk:L.titleUk||void 0,titleEs:L.titleEs||void 0,description:L.description||void 0,descriptionUk:L.descriptionUk||void 0,descriptionEs:L.descriptionEs||void 0,category:L.category,priority:L.priority,monthsBeforeDeadline:L.monthsBeforeDeadline,orderIndex:L.orderIndex}}):$e.goal&&nn.mutate({id:$e.goal.id,data:{title:L.title,titleUk:L.titleUk||void 0,titleEs:L.titleEs||void 0,description:L.description||void 0,descriptionUk:L.descriptionUk||void 0,descriptionEs:L.descriptionEs||void 0,category:L.category,priority:L.priority,monthsBeforeDeadline:L.monthsBeforeDeadline,orderIndex:L.orderIndex}})},disabled:!L.title||!L.category,"data-testid":"button-save-goal",children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),s("common.save")]})]})]})}
25),e.jsx(fe,{open:We.isOpen,onOpenChange:a=>Rs({...We,isOpen:a}),children:e.jsxs(ye,{className:"max-w-3xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(Ne,{children:[e.jsx(be,{children:We.mode==="create"?s("admin.addGoalFromCatalog"):s("admin.editGoalAssignment")}),e.jsx(Se,{children:We.mode==="create"?s("admin.selectGoalFromCatalog"):s("admin.editGoalAssignmentDescription")})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[We.mode==="create"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("div",{className:"flex-1 min-w-[200px]",children:e.jsx(g,{placeholder:s("admin.searchCatalog"),value:Ta,onChange:a=>qa(a.target.value),className:"w-full","data-testid":"input-catalog-search"})}),e.jsxs(Z,{value:ys.category,onValueChange:a=>Oa({...ys,category:a}),children:[e.jsx(ee,{className:"w-[150px]","data-testid":"select-catalog-category-filter",children:e.jsx(se,{placeholder:s("admin.allCategories")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"all",children:s("admin.allCategories")}),e.jsx(l,{value:"academic",children:s("goals.category.academic")}),e.jsx(l,{value:"extracurricular",children:s("goals.category.extracurricular")}
25),e.jsx(l,{value:"language",children:s("goals.category.language")}),e.jsx(l,{value:"test_prep",children:s("goals.category.test_prep")}),e.jsx(l,{value:"portfolio",children:s("goals.category.portfolio")}),e.jsx(l,{value:"application",children:s("goals.category.application")}),e.jsx(l,{value:"financial",children:s("goals.category.financial")})]})]}),e.jsxs(Z,{value:ys.country,onValueChange:a=>Oa({...ys,country:a}),children:[e.jsx(ee,{className:"w-[150px]","data-testid":"select-catalog-country-filter",children:e.jsx(se,{placeholder:s("admin.allCountries")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"all",children:s("admin.allCountries")}),e.jsx(l,{value:"universal",children:s("admin.universal")}),Je?.filter(a=>a.isActive).map(a=>e.jsx(l,{value:a.code,children:a.name},a.code))]})]})]}),e.jsx("div",{className:"border rounded-lg max-h-[300px] overflow-y-auto",children:Et?e.jsx("div",{className:"p-4 space-y-2",children:[1,2,3].map(a=>e.jsx(ce,{className:"h-16 w-full"},a))}):e.jsxs("div",{className:"divide-y",children:[da?.filter(a=>{if(!a.isActive||hs?.some(E=>E.goalId===a.id))return!1;if(Ta){const E=Ta.toLowerCase();if(!a.title.toLowerCase().includes(E)&&!a.description?.toLowerCase().includes(E))return!1}if(ys.category&&ys.category!=="all"&&a.category!==ys.category)return!1;if(ys.country&&ys.country!=="all"){if(ys.country==="universal"){if(a.country)return!1}else if(a.country!==ys.country)return!1}return!0}).map(a=>e.jsx("div",{className:`p-3 cursor-pointer transition-colors ${Ve.goalId===a.id?"bg-primary/10 border-l-4 border-primary":"hover:bg-muted/50"}`,onClick:()=>As({...Ve,goalId:a.id,monthsBeforeDeadline:null,priority:""}),"data-testid":`catalog-goal-item-${a.id}`,children:e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium",children:z(a)}),j(a)&&e.jsx("p",{className:"text-sm text-muted-foreground line-clamp-1 mt-1",children:j(a)}),e.jsxs("div",{className:"flex items-center gap-2 mt-1 flex-wrap",children:[e.jsx(N,{variant:"outline",className:"text-xs",children:s(`goals.category.${a.category}`)}),e.jsx(N,{variant:"outline",className:`text-xs ${a.priority==="critical"?"border-purple-500 text-purple-600":a.priority==="high"?"border-red-500 text-red-600":a.priority==="medium"?"border-yellow-500 text-yellow-600":"border-green-500 text-green-600"}`,children:s(`goals.priorities.${a.priority}`)}),a.defaultMonthsBeforeDeadline&&e.jsxs(N,{variant:"secondary",className:"text-xs",children:[a.defaultMonthsBeforeDeadline," ",s("admin.monthsBefore")]}),a.country?e.jsx(N,{variant:"outline",className:"text-xs bg-blue-500/10 text-blue-600 border-blue-500/20",children:Je?.find(u=>u.code===a.country)?.name||a.country}):e.jsx(N,{variant:"outline",className:"text-xs bg-green-500/10 text-green-600 border-green-500/20",children:s("admin.universal")})]})]}),Ve.goalId===a.id&&e.jsx(Es,{className:"h-5 w-5 text-primary flex-shrink-0"})]})},a.id)),da?.filter(a=>a.isActive?!hs?.some(E=>E.goalId===a.id):!1).length===0&&e.jsxs("div",{className:"p-8 text-center text-muted-foreground",children:[e.jsx(os,{className:"h-12 w-12 mx-auto mb-3 opacity-30"}),e.jsx("p",{children:s("admin.allGoalsAssigned")})]})]})})]}),(We.mode==="edit"||Ve.goalId)&&e.jsxs("div",{className:"border rounded-lg p-4 space-y-4 bg-muted/30",children:[e.jsx("h4",{className:"font-medium",children:s("admin.goalSettings")}),We.mode==="edit"&&We.assignment&&e.jsxs("div",{className:"p-3 rounded-md bg-card border mb-4",children:[e.jsx("div",{className:"font-medium",children:z(We.assignment.goal)}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:j(We.assignment.goal)})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.priorityOverride")}),e.jsxs(Z,{value:Ve.priority||"default",onValueChange:a=>As({...Ve,priority:a==="default"?"":a}),children:[e.jsx(ee,{"data-testid":"select-assignment-priority",children:e.jsx(se,{placeholder:s("admin.useCatalogDefault")})}),e.jsxs(ae,{children:[e.jsx(l,{value:"default",children:s("admin.useCatalogDefault")}),e.jsx(l,{value:"low",children:s("goals.priorities.low")}),e.jsx(l,{value:"medium",children:s("goals.priorities.medium")}),e.jsx(l,{value:"high",children:s("goals.priorities.high")}),e.jsx(l,{value:"critical",children:s("goals.priorities.critical")})]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s("admin.priorityOverrideHint")})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.monthsOverride")}),e.jsx(g,{type:"number",min:"1",max:"36",value:Ve.monthsBeforeDeadline??"",onChange:a=>As({...Ve,monthsBeforeDeadline:a.target.value?parseInt(a.target.value):null}),placeholder:s("admin.useCatalogDefault"),"data-testid":"input-assignment-months"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s("admin.monthsOverrideHint")})]})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(i,{children:s("admin.isRequired")}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s("admin.isRequiredHint")})]}),e.jsx(Fe,{checked:Ve.isRequired,onCheckedChange:a=>As({...Ve,isRequired:a}),"data-testid":"switch-assignment-required"})]})]})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:()=>Rs({isOpen:!1,mode:"create",assignment:null,templateId:""}),children:s("common.cancel")}),e.jsxs(c,{onClick:()=>{We.mode==="create"&&We.templateId&&Ve.goalId?cn.mutate({templateId:We.templateId,data:{goalId:Ve.goalId,orderIndex:Ve.orderIndex,monthsBeforeDeadline:Ve.monthsBeforeDeadline,priority:Ve.priority||void 0,isRequired:Ve.isRequired}}):We.mode==="edit"&&We.assignment&&la.mutate({id:We.assignment.id,data:{monthsBeforeDeadline:Ve.monthsBeforeDeadline,priority:Ve.priority||void 0,isRequired:Ve.isRequired}})},disabled:We.mode==="create"&&!Ve.goalId,"data-testid":"button-save-assignment",children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),We.mode==="create"?s("admin.assignGoal"):s("common.save")]})]})]})}),e.jsx(fe,{open:J.isOpen,onOpenChange:a=>
25Ce({...J,isOpen:a}),children:e.jsxs(ye,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(Ne,{children:[e.jsx(be,{children:J.mode==="create"?s("admin.addCatalogGoal"):s("admin.editCatalogGoal")}),e.jsx(Se,{children:s("admin.catalogGoalDialogDescription")})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{htmlFor:"catalogTitle",children:s("admin.titleEn")}),e.jsx(g,{id:"catalogTitle",value:he.title,onChange:a=>Xe({...he,title:a.target.value}),placeholder:s("admin.titleEnPlaceholder"),"data-testid":"input-catalog-goal-title"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{htmlFor:"catalogTitleUk",children:s("admin.titleUk")}),e.jsx(g,{id:"catalogTitleUk",value:he.titleUk,onChange:a=>Xe({...he,titleUk:a.target.value}),placeholder:s("admin.titleUkPlaceholder"),"data-testid":"input-catalog-goal-title-uk"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{htmlFor:"catalogTitleEs",children:s("admin.titleEs")}),e.jsx(g,{id:"catalogTitleEs",value:he.titleEs,onChange:a=>Xe({...he,titleEs:a.target.value}),placeholder:s("admin.titleEsPlaceholder"),"data-testid":"input-catalog-goal-title-es"})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{htmlFor:"catalogDescription",children:s("admin.descriptionEn")}),e.jsx(G,{id:"catalogDescription",value:he.description,onChange:a=>Xe({...he,description:a.target.value}),placeholder:s("admin.descriptionEnPlaceholder"),className:"min-h-20","data-testid":"input-catalog-goal-description"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{htmlFor:"catalogDescriptionUk",children:s("admin.descriptionUk")}),e.jsx(G,{id:"catalogDescriptionUk",value:he.descriptionUk,onChange:a=>Xe({...he,descriptionUk:a.target.value}),placeholder:s("admin.descriptionUkPlaceholder"),className:"min-h-20","data-testid":"input-catalog-goal-description-uk"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{htmlFor:"catalogDescriptionEs",children:s("admin.descriptionEs")}),e.jsx(G,{id:"catalogDescriptionEs",value:he.descriptionEs,onChange:a=>Xe({...he,descriptionEs:a.target.value}),placeholder:s("admin.descriptionEsPlaceholder"),className:"min-h-20","data-testid":"input-catalog-goal-description-es"})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.category")}),e.jsxs(Z,{value:he.category,onValueChange:a=>Xe({...he,category:a}),children:[e.jsx(ee,{"data-testid":"select-catalog-goal-category",children:e.jsx(se,{})}),e.jsxs(ae,{children:[e.jsx(l,{value:"academic",children:s("goals.categories.academic")}),e.jsx(l,{value:"academics",children:s("goals.categories.academics")}),e.jsx(l,{value:"extracurricular",children:s("goals.categories.extracurricular")}
25),e.jsx(l,{value:"language",children:s("goals.categories.language")}),e.jsx(l,{value:"tests",children:s("goals.categories.tests")}),e.jsx(l,{value:"test_prep",children:s("goals.categories.test_prep")}),e.jsx(l,{value:"portfolio",children:s("goals.categories.portfolio")}),e.jsx(l,{value:"application",children:s("goals.categories.application")}),e.jsx(l,{value:"financial",children:s("goals.categories.financial")}),e.jsx(l,{value:"logistics",children:s("goals.categories.logistics")}),e.jsx(l,{value:"documents",children:s("goals.categories.documents")}),e.jsx(l,{value:"profile",children:s("goals.categories.profile")}),e.jsx(l,{value:"funding",children:s("goals.categories.funding")}),e.jsx(l,{value:"research",children:s("goals.categories.research")})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.country")}),e.jsxs(Z,{value:he.country||"universal",onValueChange:a=>Xe({...he,country:a==="universal"?"":a}),children:[e.jsx(ee,{"data-testid":"select-catalog-goal-country",children:e.jsx(se,{})}),e.jsxs(ae,{children:[e.jsx(l,{value:"universal",children:s("admin.universalGoal")}),Je?.map(a=>e.jsx(l,{value:a.code,children:a.name},a.code))]})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{children:s("admin.priority")}),e.jsxs(Z,{value:he.priority,onValueChange:a=>Xe({...he,priority:a}),children:[e.jsx(ee,{"data-testid":"select-catalog-goal-priority",children:e.jsx(se,{})}),e.jsxs(ae,{children:[e.jsx(l,{value:"low",children:s("goals.priority.low")}),e.jsx(l,{value:"medium",children:s("goals.priority.medium")}),e.jsx(l,{value:"high",children:s("goals.priority.high")}),e.jsx(l,{value:"critical",children:s("goals.priority.critical")})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(i,{htmlFor:"catalogMonths",children:s("admin.defaultMonthsBeforeDeadline")}),e.jsx(g,{id:"catalogMonths",type:"number",min:"1",max:"60",value:he.monthsBeforeDeadline,onChange:a=>Xe({...he,monthsBeforeDeadline:parseInt(a.target.value)||12}),"data-testid":"input-catalog-goal-months"})]})]}),e.jsxs("div",{className:"flex items-center justify-between rounded-lg border p-4",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(i,{children:s("admin.activeStatus")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s("admin.activeStatusDescription")})]}),e.jsx(Fe,{checked:he.isActive,onCheckedChange:a=>Xe({...he,isActive:a}),"data-testid":"switch-catalog-goal-active"})]})]}),e.jsxs(Ue,{children:[e.jsx(c,{variant:"outline",onClick:()=>Ce({isOpen:!1,mode:"create",goal:null}),children:s("common.cancel")}),e.jsxs(c,{onClick:()=>{const a={title:he.title,titleUk:he.titleUk||void 0,titleEs:he.titleEs||void 0,description:he.description||void 0,descriptionUk:he.descriptionUk||void 0,descriptionEs:he.descriptionEs||void 0,category:he.category,country:he.country||null,priority:he.priority,defaultMonthsBeforeDeadline:he.monthsBeforeDeadline,isActive:he.isActive};J.mode==="create"?rn.mutate(a):J.goal&&dn.mutate({id:J.goal.id,data:a})},disabled:!he.title||!he.category,"data-testid":"button-save-catalog-goal",children:[e.jsx(Ge,{className:"h-4 w-4 mr-2"}),s("common.save")]})]})]})})]})}export{Hd 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.