PageSourceSearch

https://chaplinct.gov/assets/group-detail-CEZn6TLr.js

js chaplinct.gov collected 2026-10-09 16:59:14 UTC 60,162 bytes, 1 lines download raw bytes

1import{at as Ci,au as Di,av as Ti,k as $i,a as Ei,b as Ai,m as Ii,r as a,n as N,i as Fi,j as e,o as l,a0 as K,Q as he,a6 as pe,a7 as xe,a8 as je,U as fe,G as c,I as b,aa as Mi,M as Y,J as Fe,a3 as qi,D as E,t as ha,v as A,w as I,x as F,y as M,K as J,N as q,V as pa,W as xa,X as Pe,Y as w,Z as ja,_ as y,A as Pi,z as Li,F as Ri,ab as os,ac as cs,ad as us,ae as ms,af as U,aw as X,a4 as Oi,ax as Le,ay as Hi,az as rt,aA as fa,p as wa,aB as ga,a2 as j,a1 as h}from"./index-CXFWc77y.js";import{u as g}from"./useMutation-C9lX657s.js";import{T as is}from"./textarea-zPvhRGqV.js";import{S as L,a as R,b as O,c as H,d as T}from"./select-VvpBL6Qg.js";import{P as dt,a as lt,b as ot}from"./popover-CtFkg3ot.js";import{f as Q,C as ct}from"./calendar-CjCy9R7Y.js";import{g as Qi,c as Ki,G as Ui,a as va}from"./group-seats-BXafERRr.js";import{u as Gi,a as ba,D as ns,c as rs,S as ds,v as ls,b as Me,s as zi,K as Vi,P as _i,d as Sa,A as ka,e as Ca,C as Da}from"./sortable.esm-BEw4cMQn.js";import{A as ya}from"./arrow-left-C1yIE3Q_.js";import{S as Bi}from"./star-XnqyuYUx.js";import{S as Wi}from"./save-Cm0azTbs.js";import{P as qe}from"./plus-C4_w98-t.js";import{G as hs}from"./grip-vertical-Lijj6W_4.js";import{P as Re}from"./pen-H--7gI6R.js";import"./ai-assist-button-nloOkHV2.js";const Yi=Ci,Ji=Di,Xi=Ti;function Zi(u){const v=u.trim();if(!v||v.length>2048||/[\u0000-\u0020\\]/.test(v))throw new Error("Enter a valid website URL, such as https://example.com.");const o=v.match(/^([a-z][a-z\d+.-]*):/i)?.[1]?.toLowerCase(),d=/^[^/:?#]+:\d+(?:[/?#]|$)/.test(v);if(o&&o!=="https"&&o!=="http"&&!d)throw new Error("Only website URLs using HTTP or HTTPS are allowed.");const r=v.replace(/^(?:(?:https?):\/\/)+/i,"");if(!r||r.startsWith("//"))throw new Error("Enter a valid website URL, such as https://example.com.");try{const n=new URL(`https://${r}`);if(n.protocol!=="https:"||!n.hostname||n.username||n.password||n.href.length>2048)throw new Error;return n.href}catch{throw new Error("Enter a valid website URL, such as https://example.com.")}}function fn(){const u=$i(),[,v]=Ei(),{tenantId:o}=Ai(),{toast:d}=Ii(),r=u.id,n=`/api/tenants/${o}`,[S,G]=a.useState(""),[z,V]=a.useState(""),[k,Z]=a.useState(""),[ee,Oe]=a.useState("active"),[ge,ve]=a.useState(""),[ps,xs]=a.useState(""),[js,fs]=a.useState(""),[He,gs]=a.useState(""),[ut,mt]=a.useState(""),[vs,bs]=a.useState(""),[ht,ys]=a.useState(""),[pt,Ns]=a.useState(""),[ws,Ss]=a.useState(!1),[P,te]=a.useState(null),[Ta,xt]=a.useState(!1),[$a,Qe]=a.useState(!1),[ks,jt]=a.useState(null),[ft,Cs]=a.useState(""),[gt,Ds]=a.useState(""),[se,Ts]=a.useState(),[ae,vt]=a.useState(),[be,$s]=a.useState(!1),[bt,Es]=a.useState(""),[ie,As]=a.useState(),[ne,yt]=a.useState(),[ye,Is]=a.useState(!1),[Ne,Ke]=a.useState(null),[Ea,Nt]=a.useState(null),[Aa,wt]=a.useState(!1),[Fs,Ia]=a.useState(!1),[we,Ue]=a.useState(""),[Ms,St]=a.useState(""),[Se,kt]=a.useState(""),[Fa,qs]=a.useState(""),[re,Ge]=a.useState(null),[Ps,ze]=a.useState(!1),[Ma,Ve]=a.useState(!1),Ls=a.useRef(null),[qa,_e]=a.useState(!1),[Ct,Dt]=a.useState(null),[Tt,Rs]=a.useState(""),[Os,Hs]=a.useState(""),[Be,Qs]=a.use
1State(""),[Ks,Us]=a.useState(""),[Gs,zs]=a.useState([]),[Pa,de]=a.useState(!1),[C,Vs]=a.useState(null),[We,$t]=a.useState(""),[Ye,Et]=a.useState(""),[At,It]=a.useState(!0),[Ft,Je]=a.useState(null),[La,le]=a.useState(!1),[oe,_s]=a.useState(null),[Xe,Mt]=a.useState(""),[qt,Pt]=a.useState(""),[Lt,Rt]=a.useState(!0),[Ot,Ze]=a.useState(null),[Ra,ce]=a.useState(!1),[ke,Bs]=a.useState(null),[Ce,Ht]=a.useState(""),[Ws,et]=a.useState(""),[tt,Qt]=a.useState(""),[Kt,_]=a.useState(""),[Ut,st]=a.useState(null),{data:p,isLoading:Oa,isError:Ha}=N({queryKey:[n,"groups",r],enabled:!!o&&!!r}),{data:De=[]}=N({queryKey:[n,"groups",r,"memberships"],enabled:!!o&&!!r}),{data:Gt=[]}=N({queryKey:[n,"members"],enabled:!!o}),{data:at=[]}=N({queryKey:[n,"positions"],enabled:!!o}),{data:Ys=[]}=N({queryKey:[n,"group-types"],enabled:!!o}),{data:Qa=[]}=N({queryKey:[n,"parties"],enabled:!!o}),{data:Ka=[]}=N({queryKey:[n,"resources"],enabled:!!o}),{data:Te=[]}=N({queryKey:[n,"resource-groups"],enabled:!!o}),{data:Ua=[]}=N({queryKey:[`${n}/locations`],enabled:!!o}),{data:it=[]}=N({queryKey:[n,"resource-types"],enabled:!!o}),{data:Js=[]}=N({queryKey:[`/api/tenants/${o}/groups`],enabled:!!o}),Ga=new Set(Te.filter(t=>t.groupId===Number(r)).map(t=>t.resourceId)),Xs=Te.filter(t=>t.groupId===Number(r)),ue=Ka.filter(t=>Ga.has(t.id)).sort((t,s)=>{const i=Xs.find(x=>x.resourceId===t.id)?.sortOrder,m=Xs.find(x=>x.resourceId===s.id)?.sortOrder;return i!=null&&m!=null?i-m:i!=null?-1:m!=null?1:(s.resourceDate??"").localeCompare(t.resourceDate??"")}),za=Object.fromEntries(it.map(t=>[t.id,t.name])),zt=a.useCallback(t=>{if(Ge(t),!we.trim()){const s=t.name.replace(/\.[^/.]+$/,"").replace(/[-_]/g," ");Ue(s.charAt(0).toUpperCase()+s.slice(1))}},[we]),Va=a.useCallback(t=>{t.preventDefault(),t.stopPropagation(),Ve(!0)},[]),_a=a.useCallback(t=>{t.preventDefault(),t.stopPropagation(),Ve(!1)},[]),Ba=a.useCallback(t=>{t.preventDefault(),t.stopPropagation(),Ve(!1);const s=t.dataTransfer.files;s.length>0&&zt(s[0])},[zt]),Vt=g({mutationFn:async()=>{let t=Fa||null;if(re){ze(!0);const i=new FormData;i.append("file",re);const m=Se&&it.find(D=>String(D.id)===Se)?.name||"default";i.append("folder",`resources/${m.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}`);const x=localStorage.getItem("authToken"),f=await fetch(`${n}/upload`,{method:"POST",body:i,headers:x?{Authorization:`Bearer ${x}`}:{}});if(!f.ok)throw new Error("File upload failed");t=(await f.json()).fileUrl,ze(!1)}return(await j("POST",`${n}/resources`,{title:we,description:Ms||null,resourceTypeId:Se?Number(Se):null,fileUrl:t,isActive:!0})).json()},onSuccess:async t=>{await j("PUT",`${n}/resources/${t.id}/groups`,{groupIds:[Number(r)]}),h.invalidateQueries({queryKey:[n,"resources"]}),h.invalidateQueries({queryKey:[n,"resource-groups"]}),wt(!1),Ue(""),St(""),kt(""),qs(""),Ge(null),ze(!1),d({title:"Resource added",description:"Document has been added to this group."})},onError:t=>{ze(!1),d({title:"Error",description:t.message,variant:"destructive"})}}),Wa=g({mutationFn:async t=>{const i=Te.filter(m=>m.resourceId===t).filter(m=>m.groupId!==Number(r)).map(m=>m.groupId);await j("PUT",`${n}/resources/${t}/groups`,{groupIds:i})},onSuccess:()=>{h.invalidateQueries({queryKey:[n,"resource-groups"]}),d({title:"Resource removed",description:"Document has been unlinked from this group."})}}),_t=g({mutationFn:async()=>{Ct&&(await j("PATCH",`${n}/resources/${Ct.id}`,{title:Tt,description:Os||null,resourceTypeId:Be&&Be!=="none"?Number(Be):null,resourceDate:Ks||null}),await j("PUT",`${n}/resources/${Ct.id}/groups`,{groupIds:Gs}))},onSuccess:()=>{h.invalidateQueries({queryKey:[n,"resources"]}),h.invalidateQueries({queryKey:[n,"resource-groups"]}),_e(!1),Dt(null),d({title:"Resource updated",description:"Document details have been saved."})},onError:t=>{d({title:"Error",description:t.message,variant:"destructive"})}}),Ya=t=>{const s=Te.filter(i=>i.resourceId===t.id).map(i=>i.groupId);Dt(t),Rs(t.title),Hs(t.description||""),Qs(t.resourceTypeId?String(t.resourceTypeId):"none"),Us(t.resourceDate??""),zs(s),_e(!0)},{data:Zs=[]}=N({queryKey:[`/api/tenants/${o}/faqs`,{group:r}],queryFn:async()=>(await j("GET",`/api/tenants/${o}/faqs?group=${r}
1`)).json(),enabled:!!o&&!!r}),$e=()=>{$t(""),Et(""),It(!0),Vs(null)},Ja=()=>{$e(),de(!0)},Xa=t=>{Vs(t),$t(t.question),Et(t.answer),It(t.isActive),de(!0)},ea=g({mutationFn:async()=>(await j("POST",`/api/tenants/${o}/faqs`,{question:We.trim(),answer:Ye,isGlobal:!1,departmentIds:[Number(r)],isActive:At})).json(),onSuccess:()=>{h.invalidateQueries({queryKey:[`/api/tenants/${o}/faqs`]}),de(!1),$e(),d({title:"FAQ created",description:"The FAQ has been added to this group."})},onError:t=>{d({title:"Error",description:t.message,variant:"destructive"})}}),ta=g({mutationFn:async()=>C?(await j("PATCH",`/api/tenants/${o}/faqs/${C.id}`,{question:We.trim(),answer:Ye,isGlobal:C.isGlobal,departmentIds:C.isGlobal?[]:C.departmentIds.includes(Number(r))?C.departmentIds:[...C.departmentIds,Number(r)],isActive:At})).json():void 0,onSuccess:()=>{h.invalidateQueries({queryKey:[`/api/tenants/${o}/faqs`]}),de(!1),$e(),d({title:"FAQ updated",description:"The FAQ has been saved."})},onError:t=>{d({title:"Error",description:t.message,variant:"destructive"})}}),sa=g({mutationFn:async t=>{await j("DELETE",`/api/tenants/${o}/faqs/${t}`)},onSuccess:()=>{h.invalidateQueries({queryKey:[`/api/tenants/${o}/faqs`]}),Je(null),d({title:"FAQ deleted"})},onError:t=>{d({title:"Error",description:t.message,variant:"destructive"})}}),Za=()=>{if(!We.trim()||!Ye.trim()){d({title:"Question and answer are required",variant:"destructive"});return}C?ta.mutate():ea.mutate()},B=[`/api/tenants/${o}/groups/${r}/additional-info`],{data:$=[]}=N({queryKey:B,queryFn:async()=>(await j("GET",`/api/tenants/${o}/groups/${r}
1/additional-info`)).json(),enabled:!!o&&!!r}),Ee=[`/api/tenants/${o}/groups/${r}/helpful-links`],{data:W=[]}=N({queryKey:Ee,queryFn:async()=>(await j("GET",`/api/tenants/${o}/groups/${r}/helpful-links`)).json(),enabled:!!o&&!!r}),Ae=()=>{Mt(""),Pt(""),Rt(!0),_s(null)},ei=()=>{Ae(),le(!0)},ti=t=>{_s(t),Mt(t.title),Pt(t.body),Rt(t.isActive),le(!0)},aa=g({mutationFn:async()=>(await j("POST",`/api/tenants/${o}/groups/${r}/additional-info`,{title:Xe.trim(),body:qt,isActive:Lt,sortOrder:$.length})).json(),onSuccess:()=>{h.invalidateQueries({queryKey:B}),le(!1),Ae(),d({title:"Entry created",description:"Additional info entry has been added."})},onError:t=>{d({title:"Error",description:t.message,variant:"destructive"})}}),ia=g({mutationFn:async()=>oe?(await j("PATCH",`/api/tenants/${o}/groups/${r}/additional-info/${oe.id}`,{title:Xe.trim(),body:qt,isActive:Lt})).json():void 0,onSuccess:()=>{h.invalidateQueries({queryKey:B}),le(!1),Ae(),d({title:"Entry updated",description:"Additional info entry has been saved."})},onError:t=>{d({title:"Error",description:t.message,variant:"destructive"})}}),si=g({mutationFn:async t=>(await j("PUT",`/api/tenants/${o}/groups/${r}/additional-info/reorder`,{orderedIds:t})).json(),onSuccess:t=>{h.setQueryData(B,t)},onError:t=>{h.invalidateQueries({queryKey:B}),d({title:"Reorder failed",description:t.message,variant:"destructive"})}}),na=t=>{h.setQueryData(B,t),si.mutate(t.map(s=>s.id))},ai=t=>{const{active:s,over:i}=t;if(!i||s.id===i.id)return;const m=$.findIndex(f=>f.id===s.id),x=$.findIndex(f=>f.id===i.id);m<0||x<0||na(Me($,m,x))},ii=(t,s)=>{const i=t+s;i<0||i>=$.length||na(Me($,t,i))},[me,ra]=a.useState(null),Bt=async(t,s)=>{if(me)return;ra(t);const i=t==="links"?Ee:[n,"resource-groups"],m=h.getQueryData(i);t==="links"?h.setQueryData(i,s.map(x=>W.find(f=>f.id===x))):h.setQueryData(i,Te.map(x=>x.groupId===Number(r)?{...x,sortOrder:s.indexOf(x.resourceId)}:x));try{await j("PUT",`${n}/groups/${r}/${t==="links"?"helpful-links":"resources"}/reorder`,{orderedIds:s}),await h.invalidateQueries({queryKey:i})}catch(x){h.setQueryData(i,m),await h.invalidateQueries({queryKey:i}),d({title:"Reorder failed",description:x instanceof Error?x.message:"Could not save order",variant:"destructive"})}finally{ra(null)}},da=(t,s,i,m)=>{const x=i+m;x<0||x>=s.length||me||Bt(t,Me(s,i,x))},nt=()=>{Ht(""),et(""),Qt(""),_(""),Bs(null)},ni=()=>{nt(),ce(!0)},ri=t=>{Bs(t),Ht(t.name),et(t.url),Qt(t.description??""),_(""),ce(!0)},Wt=g({mutationFn:async t=>(await j("POST",`/api/tenants/${o}/groups/${r}/helpful-links`,{name:Ce.trim(),url:t,description:tt.trim()||null})).json(),onSuccess:()=>{h.invalidateQueries({queryKey:Ee}),ce(!1),nt(),d({title:"Helpful link added",description:"The link is now available on this group's public page."})},onError:t=>{_(t.message),d({title:"Could not save helpful link",description:t.message,variant:"destructive"})}}),Yt=g({mutationFn:async t=>ke?(await j("PATCH",`/api/tenants/${o}/groups/${r}/helpful-links/${ke.id}`,{name:Ce.trim(),url:t,description:tt.trim()||null})).json():void 0,onSuccess:()=>{h.invalidateQueries({queryKey:Ee}),ce(!1),nt(),d({title:"Helpful link updated",description:"Your changes have been saved."})},onError:t=>{_(t.message),d({title:"Could not update helpful link",description:t.message,variant:"destructive"})}}),Jt=g({mutationFn:async t=>{await j("DELETE",`/api/tenants/${o}/groups/${r}/helpful-links/${t}`)},onSuccess:()=>{h.invalidateQueries({queryKey:Ee}),st(null),d({title:"Helpful link deleted"})},onError:t=>{d({title:"Could not delete helpful link",description:t.message,variant:"destructive"})}}),di=()=>{if(!Ce.trim()){d({title:"Link name is required",variant:"destructive"});return}if(Ce.trim().length>120){d({title:"Link name must be 120 characters or fewer",variant:"destructive"});return}if(tt.trim().length>500){d({title:"Description must be 500 characters or fewer",variant:"destructive"});return}try{const t=Zi(Ws);et(t),_(""),ke?Yt.mutate(t):Wt.mutate(t)}catch(t){_(t instanceof Error?t.message:"Enter a valid website URL.")}},Xt=Gi(ba(_i,{activationConstraint:{distance:5}}),ba(Vi,{coordinateGetter:zi})),la=g({mutationFn:async t=>{await j("DELETE",`/api/tenants/${o}/groups/${r}/additional-info/${t}`)},onSuccess:()=>{h.invalidateQueries({queryKey:B}),Ze(null),d({title:"Entry deleted"})},onError:t=>{d({title:"Error",description:t.message,variant:"destructive"})}}),li=()=>
1{if(!Xe.trim()){d({title:"Title is required",variant:"destructive"});return}oe?ia.mutate():aa.mutate()},oi=Object.fromEntries(Gt.map(t=>[t.id,t])),ci=Object.fromEntries(at.map(t=>[t.id,t.name])),ui=Object.fromEntries(Qa.map(t=>[t.id,t.name])),Zt=Object.fromEntries(Ys.map(t=>[t.id,t.name])),oa=Fi(Zt[Number(k)]),ca=["monday","tuesday","wednesday","thursday","friday","saturday","sunday"],mi={monday:"Mon",tuesday:"Tue",wednesday:"Wed",thursday:"Thu",friday:"Fri",saturday:"Sat",sunday:"Sun"},hi=()=>Object.fromEntries(ca.map(t=>[t,{open:"09:00",close:"17:00",closed:t==="saturday"||t==="sunday"}])),pi=new Set(De.filter(t=>t.isActive).map(t=>t.memberId)),xi=Gt.filter(t=>t.isActive&&!pi.has(t.id));a.useEffect(()=>{p&&(G(p.name),V(p.shortDescription||""),Z(p.groupTypeId?String(p.groupTypeId):""),Oe(p.isActive?"active":"inactive"),ve(p.phone||""),xs(p.fax||""),fs(p.email||""),gs(p.location||""),mt(p.description||""),bs(p.url||""),ys(p.totalSeats!=null?String(p.totalSeats):""),Ns(p.alternateSeats!=null?String(p.alternateSeats):""),Ss(p.isFeatured??!1),te(p.departmentHours??null))},[p]);const es=g({mutationFn:async()=>{await j("PATCH",`${n}/groups/${r}`,{name:S,shortDescription:z||null,groupTypeId:k?Number(k):null,isActive:ee==="active",phone:ge||null,fax:ps||null,email:js||null,location:He&&He!=="__none__"?He:null,description:ut||null,url:vs||null,totalSeats:ht?Number(ht):null,alternateSeats:pt?Number(pt):null,isFeatured:ws,departmentHours:oa?P:null})},onSuccess:()=>{h.invalidateQueries({queryKey:[n,"groups",r]}),h.invalidateQueries({queryKey:[n,"groups"]}),d({title:"Group updated",description:"Group details have been saved."})},onError:t=>{d({title:"Error",description:t.message,variant:"destructive"})}}),ts=g({mutationFn:async()=>(await j("POST",`${n}/groups/${r}/relink-events`,{})).json(),onSuccess:t=>{d({title:"Events re-linked",description:t.linked>0?`Linked ${t.linked} event${t.linked===1?"":"s"} to ${S}.`:`No new events found to link to ${S}.`})},onError:t=>{d({title:"Error",description:t.message,variant:"destructive"})}}),ua=()=>{Cs(""),Ds(""),Ts(void 0),vt(void 0),$s(!1)},ss=g({mutationFn:async()=>{await j("POST",`${n}/group-memberships`,{memberId:Number(ft),groupId:Number(r),positionId:gt?Number(gt):null,termStartDate:se?Q(se,"yyyy-MM-dd"):null,termEndDate:be?null:ae?Q(ae,"yyyy-MM-dd"):null,noTermLimit:be,tenantId:o,isActive:!0})},onSuccess:()=>{h.invalidateQueries({queryKey:[n,"groups",r,"memberships"]}),xt(!1),ua(),d({title:"Member added",description:"Member has been added to the group."})},onError:t=>{d({title:"Error",description:t.message,variant:"destructive"})}}),as=g({mutationFn:async()=>{ks&&await j("PATCH",`${n}/group-memberships/${ks.id}`,{positionId:bt?Number(bt):null,termStartDate:ie?Q(ie,"yyyy-MM-dd"):null,termEndDate:ye?null:ne?Q(ne,"yyyy-MM-dd"):null,noTermLimit:ye})},onSuccess:()=>{h.invalidateQueries({queryKey:[n,"groups",r,"memberships"]}),Qe(!1),jt(null),d({title:"Membership updated",description:"Membership details have been updated."})},onError:t=>{d({title:"Error",description:t.message,variant:"destructive"})}}),ji=g({mutationFn:async t=>{await j("PUT",`${n}/groups/${r}/memberships/reorder`,{orderedIds:t})},onSuccess:()=>{h.invalidateQueries({queryKey:[n,"groups",r,"memberships"]})},onError:t=>{d({title:"Reorder failed",description:t.message,variant:"destructive"})}}),fi=(t,s)=>{Ke(s),t.dataTransfer.effectAllowed="move",t.dataTransfer.setData("text/plain",String(s))},gi=(t,s)=>{t.preventDefault(),t.dataTransfer.dropEffect="move",s!==Ne&&Nt(s)},vi=(t,s)=>{if(t.preventDefault(),Nt(null),Ne===null||Ne===s){Ke(null);return}const i=[...De].sort((D,ki)=>(D.sortOrder??0)-(ki.sortOrder??0)),m=i.findIndex(D=>D.id===Ne),x=i.findIndex(D=>D.id===s);if(m===-1||x===-1)return;const f=[...i],[Ie]=f.splice(m,1);f.splice(x,0,Ie),ji.mutate(f.map(D=>D.id)),Ke(null)},bi=()=>{Ke(null),Nt(null)},yi=g({mutationFn:async t=>{await j("PATCH",`${n}/group-memberships/${t}`,{isActive:!1})},onSuccess:()=>{h.invalidateQueries({queryKey:[n,"groups",r,"memberships"]}),d({title:"Membership deactivated",description:"Member has been deactivated from the group."})}}),Ni=g({mutationFn:async t=>{await j("PATCH",`${n}/group-memberships/${t}`,{isActive:!0})},onSuccess:()=>{h.invalidateQueries({queryKey:[n,"groups",r,"memberships"]}),d({title:"Membership reactivated",description:"Membership has been reactivated."})}}),wi=g({mutationFn:async t=>{await j("DELETE",`${n}/group-memberships/${t}`)},onSuccess:()=>{h.invalidateQueries({queryKey:[n,"groups",r,"memberships"]}),d({title:"Membership removed",description:"Membership has been permanently removed."})}}),Si=t=>{jt(t),Es(t.positionId?String(t.positionId):""),As(t.termStartDate?new Date(t.termStartDate):void 0),yt(t.termEndDate?new Date(t.termEndDate):void 0),Is(t.noTermLimit),Qe(!0)};if(Oa)return e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("div",{className:"text-muted-foreground","data-testid":"text-loading",children:"Loading group details..."})});if(Ha||!p)return e.jsxs("div",{className:"flex flex-col items-center justify-center h-64 gap-4",children:[e.jsx("div",{className:"text-lg font-medium","data-testid":"text-not-found",children:"Group Not Found"}),e.jsx("p",{className:"text-muted-foreground",children:"The group you're looking for doesn't exist or you don't have access."}),e.jsxs(l,{variant:"outline",onClick:()=>v("/admin/groups"),"data-testid":"button-back-to-groups",children:[e.jsx(ya,{className:"mr-2 h-4 w-4"}),"Back to Groups"]})]});const ma=p.groupTypeId?Zt[p.groupTypeId]:void 0;return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(l,{variant:"ghost",size:"icon",onClick:()=>v("/admin/groups"),"data-testid":"button-back",children:e.jsx(ya,{className:"h-5 w-5"})}),e.jsxs("div",{className:"flex items-center gap-3 flex-1",children:[e.jsx("div",{children:e.jsx("h2",{className:"text-3xl font-serif font-bold tracking-tight","data-testid":"text-group-name",children:p.name})}),ma&&e.jsx(K,{variant:"outline","data-testid":"text-group-type",children:ma}),e.jsx(K,{variant:p.isActive?"default":"secondary",className:p.isActive?"bg-green-100 text-green-700 hover:bg-green-100 border-green-200 shadow-none":"bg-gray-100 text-gray-700 hover:bg-gray-100 border-gray-200 shadow-none","data-testid":"text-group-status",children:p.isActive?"Active":"Inactive"}),(p.totalSeats!=null||p.alternateSeats!=null)&&(()=>{const t=Qi(p,Ki(De,Gt,at));return t.regular||t.alternate?e.jsx(K,{variant:"outline",className:"bg-amber-50 text-amber-700 border-amber-200 shadow-none","data-testid":"text-group-vacancies",children:[t.regular?`${t.regular} Member ${t.regular===1?"Vacancy":"Vacancies"}`:"",t.alternate?`${t.alternate} Alternate ${t.alternate===1?"Vacancy":"Vacancies"}
1`:""].filter(Boolean).join(" · ")}):e.jsx(K,{variant:"outline",className:"bg-green-50 text-green-700 border-green-200 shadow-none","data-testid":"text-group-vacancies",children:"No Vacancies"})})()]})]}),e.jsxs(he,{children:[e.jsxs(pe,{children:[e.jsx(xe,{className:"font-serif",children:"Group Information"}),e.jsx(je,{children:"Update the group's details and status."})]}),e.jsx(fe,{children:e.jsxs("div",{className:"grid gap-6",children:[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(c,{htmlFor:"detail-name",children:"Name"}),e.jsx(b,{id:"detail-name",value:S,onChange:t=>G(t.target.value),"data-testid":"input-group-name"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(c,{htmlFor:"detail-groupType",children:[e.jsx(Mi,{className:"inline h-4 w-4 mr-1"}),"Group Type"]}),e.jsxs(L,{value:k,onValueChange:Z,children:[e.jsx(R,{"data-testid":"select-group-type",children:e.jsx(O,{placeholder:"Select group type"})}),e.jsx(H,{children:[...Ys].sort((t,s)=>t.name.localeCompare(s.name)).map(t=>e.jsx(T,{value:String(t.id),children:t.name},t.id))})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(c,{children:"Descriptions"}),e.jsx(Ui,{groupName:S,groupType:k&&Zt[Number(k)]||"Group",shortDescription:z,description:ut,onAccept:t=>
1{V(t.shortDescription),mt(t.description)},"data-testid":"ai-assist-group-descriptions"})]}),e.jsx(c,{children:"Short Description (Rich Text)"}),e.jsx(va,{value:z,onChange:V,"data-testid":"input-short-description"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(c,{children:"Full Description (Rich Text)"}),e.jsx(va,{value:ut,onChange:mt,"data-testid":"input-description-rich"})]}),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(c,{htmlFor:"detail-phone",children:"Phone"}),e.jsx(b,{id:"detail-phone",value:ge,onChange:t=>ve(t.target.value),placeholder:"Phone number","data-testid":"input-phone"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(c,{htmlFor:"detail-fax",children:"Fax"}),e.jsx(b,{id:"detail-fax",value:ps,onChange:t=>xs(t.target.value),placeholder:"Fax number","data-testid":"input-fax"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(c,{htmlFor:"detail-email",children:"Email"}),e.jsx(b,{id:"detail-email",value:js,onChange:t=>fs(t.target.value),placeholder:"Email address","data-testid":"input-email"})]})]}),oa&&e.jsxs("div",{className:"rounded-md border p-4 space-y-4","data-testid":"section-department-hours",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("div",{children:[e.jsx(c,{className:"text-base font-semibold",children:"Department Hours"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:P?"These hours override the active Town Hall schedule.":"This department inherits the active Town Hall schedule."})]}),P?e.jsx(l,{type:"button",variant:"outline",onClick:()=>te(null),"data-testid":"button-inherit-town-hours",children:"Inherit Town Hall Hours"}):e.jsx(l,{type:"button",variant:"outline",onClick:()=>te(hi()),"data-testid":"button-custom-department-hours",children:"Set Department Hours"})]}),P&&e.jsx("div",{className:"space-y-2",children:ca.map(t=>e.jsxs("div",{className:"flex flex-wrap items-center gap-3","data-testid":`department-hours-row-${t}`,children:[e.jsx("span",{className:"w-10 text-sm font-medium",children:mi[t]}),e.jsx(Y,{checked:!P[t]?.closed,onCheckedChange:s=>te(i=>({...i,[t]:{...i[t],open:i[t]?.open||"09:00",close:i[t]?.close||"17:00",closed:!s}})),"data-testid":`checkbox-department-open-${t}`}),e.jsx("span",{className:"w-12 text-xs text-muted-foreground",children:P[t]?.closed?"Closed":"Open"}),!P[t]?.closed&&e.jsxs(e.Fragment,{children:[e.jsx(b,{type:"time",className:"w-32",value:P[t]?.open||"09:00",onChange:s=>te(i=>({...i,[t]:{...i[t],open:s.target.value}})),"data-testid":`input-department-open-${t}`}),e.jsx("span",{className:"text-sm",children:"to"}),e.jsx(b,{type:"time",className:"w-32",value:P[t]?.close||"17:00",onChange:s=>te(i=>({...i,[t]:{...i[t],close:s.target.value}})),"data-testid":`input-department-close-${t}`})]})]},t))})]}),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(c,{htmlFor:"detail-location",children:"Location"}),e.jsxs(L,{value:He,onValueChange:gs,children:[e.jsx(R,{"data-testid":"select-location",children:e.jsx(O,{placeholder:"Select a location"})}
1),e.jsxs(H,{children:[e.jsx(T,{value:"__none__",children:"No location"}),[...Ua].filter(t=>t.isActive).sort((t,s)=>t.name.localeCompare(s.name)).map(t=>e.jsxs(T,{value:t.name,"data-testid":`option-location-${t.id}`,children:[t.name,t.address?` — ${t.address}`:""]},t.id))]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(c,{htmlFor:"detail-url",children:"URL"}),e.jsx(b,{id:"detail-url",value:vs,onChange:t=>bs(t.target.value),placeholder:"https://...","data-testid":"input-url"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(c,{htmlFor:"detail-total-seats",children:"Member Seats"}),e.jsx(b,{id:"detail-total-seats",type:"number",min:"0",step:"1",value:ht,onChange:t=>ys(t.target.value),placeholder:"e.g. 7","data-testid":"input-total-seats"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(c,{htmlFor:"detail-alternate-seats",children:"Alternates"}),e.jsx(b,{id:"detail-alternate-seats",type:"number",min:"0",step:"1",value:pt,onChange:t=>Ns(t.target.value),placeholder:"e.g. 2","data-testid":"input-alternate-seats"})]})]}),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(c,{htmlFor:"detail-status",children:"Status"}),e.jsxs(L,{value:ee,onValueChange:Oe,children:[e.jsx(R,{"data-testid":"select-status",children:e.jsx(O,{placeholder:"Select status"})}
1),e.jsxs(H,{children:[e.jsx(T,{value:"active",children:"Active"}),e.jsx(T,{value:"inactive",children:"Inactive"})]})]})]}),e.jsx("div",{className:"space-y-2 flex flex-col justify-end",children:e.jsxs("div",{className:"flex items-center gap-2 py-2",children:[e.jsx(Y,{id:"detail-featured",checked:ws,onCheckedChange:t=>Ss(t===!0),"data-testid":"checkbox-featured"}),e.jsxs(c,{htmlFor:"detail-featured",className:"flex items-center gap-1 cursor-pointer",children:[e.jsx(Bi,{className:"h-4 w-4 text-amber-500"}),"Featured"]})]})})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(l,{variant:"outline",onClick:()=>ts.mutate(),disabled:ts.isPending,"data-testid":"button-relink-events",title:"Find and link events whose title starts with this group's name",children:[e.jsx(Fe,{className:"mr-2 h-4 w-4"}),ts.isPending?"Linking...":"Re-link matching events"]}),e.jsxs(l,{onClick:()=>es.mutate(),disabled:!S||es.isPending,"data-testid":"button-save-group",children:[e.jsx(Wi,{className:"mr-2 h-4 w-4"}),es.isPending?"Saving...":"Save Changes"]})]})]})})]}),e.jsxs(he,{children:[e.jsxs(pe,{className:"flex flex-row items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs(xe,{className:"font-serif",children:[e.jsx(qi,{className:"inline h-5 w-5 mr-2"}),"Member Roster"]}),e.jsx(je,{children:"Manage members assigned to this group."})]}),e.jsxs(E,{open:Ta,onOpenChange:t=>{xt(t),t||ua()},children:[e.jsx(ha,{asChild:!0,children:e.jsxs(l,{size:"sm","data-testid":"button-add-member",children:[e.jsx(qe,{className:"mr-2 h-4 w-4"}),"Add Member"]})}),e.jsxs(A,{children:[e.jsxs(I,{children:[e.jsx(F,{children:"Add Member to Group"}),e.jsx(M,{children:"Select a member and assign them a position and term."})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(c,{children:"Member"}),e.jsxs(L,{value:ft,onValueChange:Cs,children:[e.jsx(R,{"data-testid":"select-add-member",children:e.jsx(O,{placeholder:"Select member"})}),e.jsx(H,{children:xi.map(t=>e.jsxs(T,{value:String(t.id),children:[t.firstName," ",t.lastName]},t.id))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(c,{children:"Position"}),e.jsxs(L,{value:gt,onValueChange:Ds,children:[e.jsx(R,{"data-testid":"select-add-position",children:e.jsx(O,{placeholder:"Select position"})}),e.jsx(H,{children:[...at].filter(t=>t.isActive).sort((t,s)=>t.name.localeCompare(s.name)).map(t=>e.jsx(T,{value:String(t.id),children:t.name},t.id))})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2 flex flex-col",children:[e.jsx(c,{children:"Term Start Date"}),e.jsxs(dt,{children:[e.jsx(lt,{asChild:!0,children:e.jsxs(l,{variant:"outline",className:J("w-full justify-start text-left font-normal",!se&&"text-muted-foreground"),"data-testid":"button-add-term-start",children:[e.jsx(Fe,{className:"mr-2 h-4 w-4"}),se?Q(se,"PPP"):e.jsx("span",{children:"Pick a date"})]})}),e.jsx(ot,{className:"w-auto p-0",align:"start",children:e.jsx(ct,{mode:"single",selected:se,onSelect:Ts,initialFocus:!0})})]})]}),e.jsxs("div",{className:"space-y-2 flex flex-col",children:[e.jsx(c,{className:be?"text-muted-foreground":"",children:"Term End Date"}),e.jsxs(dt,{children:[e.jsx(lt,{asChild:!0,children:e.jsxs(l,{variant:"outline",disabled:be,className:J("w-full justify-start text-left font-normal",!ae&&"text-muted-foreground"),"data-testid":"button-add-term-end",children:[e.jsx(Fe,{className:"mr-2 h-4 w-4"}),ae?Q(ae,"PPP"):e.jsx("span",{children:"Pick a date"})]})}),e.jsx(ot,{className:"w-auto p-0",align:"start",children:e.jsx(ct,{mode:"single",selected:ae,onSelect:vt,initialFocus:!0})})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Y,{id:"addNoTermLimit",checked:be,onCheckedChange:t=>{$s(t),t&&vt(void 0)},"data-testid":"checkbox-add-no-term-limit"}),e.jsx(c,{htmlFor:"addNoTermLimit",className:"text-sm font-medium leading-none",children:"No term limit (Indefinite term)"})]})]}),e.jsxs(q,{children:[e.jsx(l,{variant:"outline",onClick:()=>xt(!1),"data-testid":"button-cancel-add-member",children:"Cancel"}),e.jsx(l,{onClick:()=>ss.mutate(),disabled:!ft||ss.isPending,"data-testid":"button-submit-add-member",children:ss.isPending?"Adding...":"Add Member"})]})]})]})]}),e.jsx(fe,{className:"p-0",children:e.jsxs(pa,{children:[e.jsx(xa,{
1children:e.jsxs(Pe,{children:[e.jsx(w,{className:"w-10"}),e.jsx(w,{children:"Member Name"}),e.jsx(w,{children:"Position"}),e.jsx(w,{children:"Party"}),e.jsx(w,{children:"Term Start"}),e.jsx(w,{children:"Term End"}),e.jsx(w,{children:"Status"}),e.jsx(w,{className:"text-right",children:"Actions"})]})}),e.jsx(ja,{children:De.length===0?e.jsx(Pe,{children:e.jsx(y,{colSpan:8,className:"text-center text-muted-foreground py-8",children:"No members assigned to this group yet."})}):[...De].sort((t,s)=>(t.sortOrder??0)-(s.sortOrder??0)).map(t=>{const s=oi[t.memberId],i=s?`${s.firstName} ${s.lastName}`:"Unknown",m=s?`${s.firstName[0]}${s.lastName[0]}`:"?",x=s?.partyId?ui[s.partyId]:"—";return e.jsxs(Pe,{"data-testid":`row-membership-${t.id}`,draggable:!0,onDragStart:f=>fi(f,t.id),onDragOver:f=>gi(f,t.id),onDrop:f=>vi(f,t.id),onDragEnd:bi,className:J("transition-colors",Ne===t.id&&"opacity-50",Ea===t.id&&"bg-primary/10 border-t-2 border-primary"),children:[e.jsx(y,{className:"w-10 cursor-grab active:cursor-grabbing",children:e.jsx(hs,{className:"h-4 w-4 text-muted-foreground"})}),e.jsx(y,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(Pi,{className:"h-8 w-8",children:[e.jsx(Li,{src:s?.photoUrl||`https://api.dicebear.com/7.x/initials/svg?seed=${i}`}),e.jsx(Ri,{children:m})]}),e.jsx("span",{className:"font-medium","data-testid":`text-member-name-${t.id}`,children:i})]})}),e.jsx(y,{"data-testid":`text-membership-position-${t.id}`,children:t.positionId&&ci[t.positionId]||"—"}),e.jsx(y,{"data-testid":`text-membership-party-${t.id}`,children:x}),e.jsx(y,{className:"font-mono text-sm",children:t.termStartDate||"—"}),e.jsx(y,{className:`font-mono text-sm ${!t.noTermLimit&&t.termEndDate&&(()=>{const f=new Date(t.termEndDate+"T00:00:00"),Ie=new Date,D=new Date(Ie.getTime()+2160*60*60*1e3);return f>=Ie&&f<=D})()?"text-red-600 font-semibold":""}`,children:t.noTermLimit?"No term limit":t.termEndDate||"—"}),e.jsx(y,{children:e.jsx(K,{variant:t.isActive?"default":"secondary",className:t.isActive?"bg-green-100 text-green-700 hover:bg-green-100 border-green-200 shadow-none":"bg-gray-100 text-gray-700 hover:bg-gray-100 border-gray-200 shadow-none",children:t.isActive?"Active":"Inactive"})}),e.jsx(y,{className:"text-right",children:e.jsxs(os,{children:[e.jsx(cs,{asChild:!0,children:e.jsx(l,{variant:"ghost",size:"icon",className:"h-8 w-8","data-testid":`button-membership-actions-${t.id}`,children:e.jsx(us,{className:"h-4 w-4"})})}),e.jsxs(ms,{align:"end",children:[e.jsxs(U,{onClick:()=>Si(t),"data-testid":`button-edit-membership-${t.id}`,children:[e.jsx(Re,{className:"mr-2 h-4 w-4"}),"Edit Membership"]}),t.isActive&&e.jsx(U,{className:"text-destructive",onClick:()=>yi.mutate(t.id),"data-testid":`button-deactivate-membership-${t.id}`,children:"Deactivate"}),!t.isActive&&e.jsxs(e.Fragment,{children:[e.jsx(U,{onClick:()=>Ni.mutate(t.id),"data-testid":`button-reactivate-membership-${t.id}`,children:"Reactivate"}),e.jsx(U,{className:"text-destructive",onClick:()=>wi.mutate(t.id),"data-testid":`button-remove-membership-${t.id}`,children:"Remove"})]})]})]})})]},t.id)})})]})})]}),e.jsx(E,{open:$a,onOpenChange:t=>{Qe(t),t||jt(null)},children:e.jsxs(A,{children:[e.jsxs(I,{children:[e.jsx(F,{children:"Edit Membership"}),e.jsx(M,{children:"Update the position and term for this membership."})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(c,{children:"Position"}),e.jsxs(L,{value:bt,onValueChange:Es,children:[e.jsx(R,{"data-testid":"select-edit-position",children:e.jsx(O,{placeholder:"Select position"})}),e.jsx(H,{children:[...at].filter(t=>t.isActive).sort((t,s)=>t.name.localeCompare(s.name)).map(t=>e.jsx(T,{value:String(t.id),children:t.name},t.id))})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2 flex flex-col",children:[e.jsx(c,{children:"Term Start Date"}),e.jsxs(dt,{children:[e.jsx(lt,{asChild:!0,children:e.jsxs(l,{variant:"outline",className:J("w-full justify-start text-left font-normal",!ie&&"text-muted-foreground"),"data-testid":"button-edit-term-start",children:[e.jsx(Fe,{className:"mr-2 h-4 w-4"}),ie?Q(ie,"PPP"):e.jsx("span",{children:"Pick a date"})]})}),e.jsx(ot,{className:"w-auto p-0",align:"start",children:e.jsx(ct,{mode:"single",selected:ie,onSelect:As,initialFocus:!0})})]})]}),e.jsxs("div",{className:"space-y-2 flex flex-col",children:[e.jsx(c,{className:ye?"text-muted-foreground":"",children:"Term End Date"}),e.jsxs(dt,{children:[e.jsx(lt,{asChild:!0,children:e.jsxs(l,{variant:"outline",disabled:ye,className:J("w-full justify-start text-left font-normal",!ne&&"text-muted-foreground"),"data-testid":"button-edit-term-end",children:[e.jsx(Fe,{className:"mr-2 h-4 w-4"}),ne?Q(ne,"PPP"):e.jsx("span",{children:"Pick a date"})]})}),e.jsx(ot,{className:"w-auto p-0",align:"start",children:e.jsx(ct,{mode:"single",selected:ne,onSelect:yt,initialFocus:!0})})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Y,{id:"editNoTermLimit",checked:ye,onCheckedChange:t=>{Is(t),t&&yt(void 0)},"data-testid":"checkbox-edit-no-term-limit"}),e.jsx(c,{htmlFor:"editNoTermLimit",className:"text-sm font-medium leading-none",children:"No term limit (Indefinite term)"})]})]}),e.jsxs(q,{children:[e.jsx(l,{variant:"outline",onClick:()=>Qe(!1),"data-testid":"button-cancel-edit-membership",children:"Cancel"}),e.jsx(l,{onClick:()=>as.mutate(),disabled:as.isPending,"data-testid":"button-submit-edit-membership",children:as.isPending?"Saving...":"Save Changes"})]})]})}),e.jsx(Yi,{open:Fs,onOpenChange:Ia,children:e.jsxs(he,{children:[e.jsx(Ji,{asChild:!0,children:e.jsxs(pe,{className:"flex flex-row items-center justify-between cursor-pointer select-none","data-testid":"header-related-documents",children:[e.jsxs("div",{children:[e.jsxs(xe,{className:"font-serif flex items-center gap-2",children:[e.jsx(X,{className:"h-5 w-5"}),"Related Documents"]}),e.jsx(je,{children:"Documents and resources associated with this group."})]}),e.jsx(Oi,{className:J("h-5 w-5 text-muted-foreground transition-transform duration-200",Fs&&"rotate-180")}
1)]})}),e.jsx(Xi,{children:e.jsxs(fe,{children:[e.jsx("div",{className:"flex justify-end mb-4",children:e.jsxs(E,{open:Aa,onOpenChange:t=>{wt(t),t||(Ue(""),St(""),kt(""),qs(""),Ge(null),Ve(!1))},children:[e.jsx(ha,{asChild:!0,children:e.jsxs(l,{size:"sm","data-testid":"button-add-resource",children:[e.jsx(qe,{className:"mr-2 h-4 w-4"}),"Add Document"]})}),e.jsxs(A,{children:[e.jsxs(I,{children:[e.jsxs(F,{children:["Add Document to ",p.name]}),e.jsx(M,{children:"This document will be created in Resources and linked to this group."})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(c,{htmlFor:"res-title",children:"Title"}),e.jsx(b,{id:"res-title",value:we,onChange:t=>Ue(t.target.value),placeholder:"Document title","data-testid":"input-resource-title"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(c,{htmlFor:"res-description",children:"Description"}),e.jsx(is,{id:"res-description",value:Ms,onChange:t=>St(t.target.value),placeholder:"Brief description","data-testid":"input-resource-description"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(c,{htmlFor:"res-type",children:"Resource Type"}),e.jsxs(L,{value:Se,onValueChange:kt,children:[e.jsx(R,{"data-testid":"select-resource-type",children:e.jsx(O,{placeholder:"Select type"})}),e.jsx(H,{children:[...it].sort((t,s)=>t.name.localeCompare(s.name)).map(t=>e.jsx(T,{value:String(t.id),children:t.name},t.id))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(c,{children:"File"}),e.jsx("input",{ref:Ls,type:"file",className:"hidden",onChange:t=>{const s=t.target.files?.[0];s&&zt(s),t.target.value=""},"data-testid":"input-resource-file"}),re?e.jsxs("div",{className:"flex items-center gap-3 rounded-lg border border-primary/30 bg-primary/5 p-3",children:[e.jsx(X,{className:"h-8 w-8 text-primary shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium truncate",children:re.name}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[(re.size/1024).toFixed(1)," KB"]})]}),e.jsx(l,{variant:"ghost",size:"icon",className:"h-8 w-8 shrink-0",onClick:()=>Ge(null),"data-testid":"button-remove-file",children:e.jsx(Le,{className:"h-4 w-4"})})]}):e.jsxs("div",{className:J("flex flex-col items-center justify-center rounded-lg border-2 border-dashed p-6 cursor-pointer transition-colors",Ma?"border-primary bg-primary/10":"border-muted-foreground/25 hover:border-primary/50 hover:bg-muted/50"),onDragOver:Va,onDragLeave:_a,onDrop:Ba,onClick:()=>Ls.current?.click(),"data-testid":"dropzone-resource-file",children:[e.jsx(Hi,{className:"h-8 w-8 text-muted-foreground mb-2"}),e.jsx("p",{className:"text-sm font-medium",children:"Drag and drop a file here"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"or click to browse"})]})]})]}),e.jsxs(q,{children:[e.jsx(l,{variant:"outline",onClick:()=>wt(!1),children:"Cancel"}),e.jsx(l,{onClick:()=>Vt.mutate(),disabled:!we.trim()||!re||Vt.isPending||Ps,"data-testid":"button-submit-resource",children:Ps?"Uploading...":Vt.isPending?"Adding...":"Add Document"})]})]})]})}),ue.length===0?e.jsxs("div",{className:"text-center py-8 text-muted-foreground",children:[e.jsx(X,{className:"h-10 w-10 mx-auto mb-3 opacity-50"}),e.jsx("p",{children:"No documents linked to this group yet."}),e.jsx("p",{className:"text-sm mt-1",children:'Click "Add Document" to attach one.'})]}):e.jsx(ns,{sensors:Xt,collisionDetection:rs,onDragEnd:({active:t,over:s})=>{if(!s||t.id===s.id||me)return;const i=ue.map(m=>m.id);Bt("documents",Me(i,i.indexOf(Number(t.id)),i.indexOf(Number(s.id))))},children:e.jsx(ds,{items:ue.map(t=>t.id),strategy:ls,children:e.jsxs(pa,{children:[e.jsx(xa,{children:e.jsxs(Pe,{children:[e.jsx(w,{className:"w-[112px]",children:"Order"}),e.jsx(w,{children:"Title"}),e.jsx(w,{children:"Type"}),e.jsx(w,{children:"Date"}),e.jsx(w,{children:"Description"}),e.jsx(w,{className:"w-[120px] text-right",children:"Actions"})]})}),e.jsx(ja,{children:ue.map((t,s)=>e.jsxs(Na,{id:t.id,label:t.title,index:s,count:ue.length,kind:"documents",disabled:!!me,onMove:i=>da("documents",ue.map(m=>m.id),s,i),children:[e.jsx(y,{className:"font-medium",children:t.fileUrl?e.jsxs("a",{href:t.fileUrl,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1 text-primary hover:underline",children:[e.jsx(X,{className:"h-4 w-4"}),t.title,e.jsx(rt,{className:"h-3 w-3"})]}):e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(X,{className:"h-4 w-4"}),t.title]})}),e.jsx(y,{className:"text-muted-foreground",children:t.resourceTypeId&&za[t.resourceTypeId]||"—"}),e.jsx(y,{className:"text-muted-foreground text-sm","data-testid":`cell-resource-date-${t.id}`,children:t.resourceDate?new Date(t.resourceDate+"T00:00:00").toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):"—"}),e.jsx(y,{className:"text-muted-foreground text-sm max-w-[300px] truncate",children:t.description||"—"}),e.jsx(y,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-1",children:[e.jsx(l,{variant:"ghost",size:"icon",className:"h-8 w-8 text-muted-foreground hover:text-primary",onClick:()=>Ya(t),"data-testid":`button-edit-resource-${t.id}`,children:e.jsx(Re,{className:"h-4 w-4"})}),e.jsx(l,{variant:"ghost",size:"icon",className:"h-8 w-8 text-muted-foreground hover:text-destructive",onClick:()=>Wa.mutate(t.id),"data-testid":`button-unlink-resource-${t.id}`,children:e.jsx(Le,{className:"h-4 w-4"})})]})})]},t.id))})]})})})]})})]})}),e.jsx(E,{open:qa,onOpenChange:t=>{_e(t),t||Dt(null)},children:e.jsxs(A,{children:[e.jsxs(I,{children:[e.jsx(F,{children:"Edit Document"}),e.jsx(M,{children:"Update the details for this document."})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(c,{htmlFor:"edit-res-title",children:"Title"}),e.jsx(b,{id:"edit-res-title",value:Tt,onChange:t=>Rs(t.target.value),"data-testid":"input-edit-resource-title"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(c,{htmlFor:"edit-res-description",children:"Description"}),e.jsx(is,{id:"edit-res-description",value:Os,onChange:t=>Hs(t.target.value),placeholder:"Brief description","data-testid":"input-edit-resource-description"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(c,{htmlFor:"edit-res-type",children:"Resource Type"}),e.jsxs(L,{value:Be,onValueChange:Qs,children:[e.jsx(R,{"data-testid":"select-edit-resource-type",children:e.jsx(O,{placeholder:"Select type"})}),e.jsxs(H,{position:"popper",children:[e.jsx(T,{value:"none",children:"No type"}),[...it].filter(t=>t.isActive).sort((t,s)=>t.name.localeCompare(s.name)).map(t=>e.jsx(T,{value:String(t.id),children:t.name},t.id))]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(c,{htmlFor:"edit-res-date",children:"Resource Date"}),e.jsx(b,{id:"edit-res-date","data-testid":"input-edit-resource-date",type:"date",value:Ks,onChange:t=>Us(t.target.value)})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(c,{children:"Related Groups"}),e.jsx("div",{className:"max-h-40 overflow-y-auto border rounded-md p-3 space-y-2","data-testid":"section-edit-related-groups",children:Js.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:"No groups available."}):[...Js].sort((t,s)=>t.name.localeCompare(s.name)).map(t=>e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Y,{id:`edit-res-group-${t.id}`,"data-testid":`checkbox-edit-resource-group-${t.id}`,checked:Gs.includes(t.id),onCheckedChange:()=>zs(s=>
1s.includes(t.id)?s.filter(i=>i!==t.id):[...s,t.id])}),e.jsx("label",{htmlFor:`edit-res-group-${t.id}`,className:"text-sm font-medium leading-none cursor-pointer",children:t.name})]},t.id))})]})]}),e.jsxs(q,{children:[e.jsx(l,{variant:"outline",onClick:()=>_e(!1),children:"Cancel"}),e.jsx(l,{onClick:()=>_t.mutate(),disabled:!Tt.trim()||_t.isPending,"data-testid":"button-submit-edit-resource",children:_t.isPending?"Saving...":"Save Changes"})]})]})}),e.jsxs(he,{"data-testid":"card-faqs-section",children:[e.jsxs(pe,{className:"flex flex-row items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs(xe,{className:"font-serif",children:[e.jsx(fa,{className:"inline h-5 w-5 mr-2"}),"FAQs"]}),e.jsx(je,{children:"Frequently asked questions for this group."})]}),e.jsxs(l,{size:"sm",onClick:Ja,"data-testid":"button-add-faq",children:[e.jsx(qe,{className:"mr-2 h-4 w-4"}),"Add FAQ"]})]}),e.jsx(fe,{children:Zs.length===0?e.jsxs("div",{className:"text-center py-8 text-muted-foreground",children:[e.jsx(fa,{className:"h-10 w-10 mx-auto mb-3 opacity-50"}),e.jsx("p",{children:"No FAQs for this group yet."}),e.jsx("p",{className:"text-sm mt-1",children:'Click "Add FAQ" to create one.'})]}):e.jsx("div",{className:"space-y-3",children:Zs.map(t=>e.jsx("div",{className:`border rounded-lg p-4 ${t.isActive?"":"opacity-60"}`,"data-testid":`card-group-faq-${t.id}`,children:e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("h4",{className:"font-medium","data-testid":`text-group-faq-question-${t.id}`,children:t.question}),t.isGlobal&&e.jsx(K,{variant:"default",className:"shrink-0 text-xs","data-testid":`badge-group-faq-global-${t.id}`,children:"Town-wide"}),!t.isActive&&e.jsx(K,{variant:"outline",className:"shrink-0 text-xs text-muted-foreground","data-testid":`badge-group-faq-inactive-${t.id}`,children:"Inactive"})]}),e.jsx("div",{className:"text-sm text-muted-foreground line-clamp-2 prose prose-sm max-w-none","data-testid":`text-group-faq-answer-preview-${t.id}`,dangerouslySetInnerHTML:{__html:wa.sanitize(t.answer)}})]}),e.jsx("div",{className:"flex items-center gap-1 shrink-0",children:e.jsxs(os,{children:[e.jsx(cs,{asChild:!0,children:e.jsx(l,{variant:"ghost",size:"icon",className:"h-8 w-8","data-testid":`button-menu-group-faq-${t.id}`,children:e.jsx(us,{className:"h-4 w-4"})})}),e.jsxs(ms,{align:"end",children:[e.jsxs(U,{onClick:()=>Xa(t),"data-testid":`button-edit-group-faq-${t.id}`,children:[e.jsx(Re,{className:"h-4 w-4 mr-2"}),"Edit"]}),e.jsxs(U,{className:"text-destructive",onClick:()=>Je(t.id),"data-testid":`button-delete-group-faq-${t.id}`,children:[e.jsx(Le,{className:"h-4 w-4 mr-2"}),"Delete"]})]})]})})]})},t.id))})})]}),e.jsx(E,{open:Pa,onOpenChange:t=>{de(t),t||$e()},children:e.jsxs(A,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(I,{children:[e.jsx(F,{"data-testid":"text-faq-dialog-title",children:C?"Edit FAQ":"Add FAQ"}),e.jsx(M,{children:C?"Update this frequently asked question.":"Add a new FAQ for this group."})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(c,{htmlFor:"faq-question",children:"Question"}),e.jsx(b,{id:"faq-question",value:We,onChange:t=>$t(t.target.value),placeholder:"Enter the question...","data-testid":"input-group-faq-question"})]}),e.jsxs("div",{children:[e.jsx(c,{className:"mb-1 block",children:"Answer"}),e.jsx(ga,{value:Ye,onChange:Et})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Y,{id:"faq-is-active",checked:At,onCheckedChange:t=>It(!!t),"data-testid":"checkbox-group-faq-active"}),e.jsx(c,{htmlFor:"faq-is-active",className:"cursor-pointer",children:"Active"})]})]}),e.jsxs(q,{children:[e.jsx(l,{variant:"outline",onClick:()=>{de(!1),$e()},"data-testid":"button-cancel-group-faq",children:"Cancel"}),e.jsx(l,{onClick:Za,disabled:ea.isPending||ta.isPending,"data-testid":"button-save-group-faq",children:C?"Update":"Create"})]})]})}),e.jsx(E,{open:Ft!==null,onOpenChange:t=>{t||Je(null)},children:e.jsxs(A,{children:[e.jsxs(I,{children:[e.jsx(F,{children:"Delete FAQ"}),e.jsx(M,{children:"Are you sure you want to delete this FAQ? This action cannot be undone."})]}),e.jsxs(q,{children:[e.jsx(l,{variant:"outline",onClick:()=>Je(null),"data-testid":"button-cancel-delete-group-faq",children:"Cancel"}),e.jsx(l,{variant:"destructive",onClick:()=>Ft!==null&&sa.mutate(Ft),disabled:sa.isPending,"data-testid":"button-confirm-delete-group-faq",children:"Delete"})]})]})}),e.jsxs(he,{"data-testid":"card-additional-info-section",children:[e.jsxs(pe,{className:"flex flex-row items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs(xe,{className:"font-serif",children:[e.jsx(X,{className:"inline h-5 w-5 mr-2"}),"Additional Information"]}),e.jsx(je,{children:"Extra informational entries for this group."})]}),e.jsxs(l,{size:"sm",onClick:ei,"data-testid":"button-add-additional-info",children:[e.jsx(qe,{className:"mr-2 h-4 w-4"}),"Add Entry"]})]}),e.jsx(fe,{children:$.length===0?e.jsxs("div",{className:"text-center py-8 text-muted-foreground",children:[e.jsx(X,{className:"h-10 w-10 mx-auto mb-3 opacity-50"}),e.jsx("p",{children:"No additional information entries yet."}),e.jsx("p",{className:"text-sm mt-1",children:'Click "Add Entry" to create one.'})]}
1):e.jsx(ns,{sensors:Xt,collisionDetection:rs,onDragEnd:ai,children:e.jsx(ds,{items:$.map(t=>t.id),strategy:ls,children:e.jsx("div",{className:"space-y-3",children:$.map((t,s)=>e.jsx(en,{entry:t,index:s,lastIndex:$.length-1,onMove:ii,onEdit:ti,onDelete:Ze},t.id))})})})})]}),e.jsxs(he,{"data-testid":"card-group-helpful-links",children:[e.jsxs(pe,{className:"flex flex-row items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs(xe,{className:"font-serif flex items-center gap-2",children:[e.jsx(rt,{className:"h-5 w-5"}),"Helpful Links"]}),e.jsx(je,{children:"External websites associated with this group."})]}),e.jsxs(l,{size:"sm",onClick:ni,"data-testid":"button-add-helpful-link",children:[e.jsx(qe,{className:"mr-2 h-4 w-4"}),"Add Link"]})]}),e.jsx(fe,{children:W.length===0?e.jsxs("div",{className:"text-center py-8 text-muted-foreground",children:[e.jsx(rt,{className:"h-10 w-10 mx-auto mb-3 opacity-50"}),e.jsx("p",{children:"No helpful links yet."}),e.jsx("p",{className:"text-sm mt-1",children:"Add a website residents may find useful."})]}):e.jsx(ns,{sensors:Xt,collisionDetection:rs,onDragEnd:({active:t,over:s})=>{if(!s||t.id===s.id||me)return;const i=W.map(m=>m.id);Bt("links",Me(i,i.indexOf(Number(t.id)),i.indexOf(Number(s.id))))},children:e.jsx(ds,{items:W.map(t=>t.id),strategy:ls,children:e.jsx("div",{className:"space-y-3",children:W.map((t,s)=>e.jsxs(Na,{id:t.id,label:t.name,index:s,count:W.length,kind:"links",disabled:!!me,onMove:i=>da("links",W.map(m=>m.id),s,i),children:[e.jsx(rt,{className:"h-4 w-4 mt-1 shrink-0 text-muted-foreground"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("p",{className:"font-medium",children:t.name}),e.jsx("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",className:"text-sm text-primary underline break-all",children:t.url}),t.description&&e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:t.description})]}),e.jsxs("div",{className:"flex shrink-0 gap-1",children:[e.jsx(l,{variant:"ghost",size:"icon","aria-label":`Edit ${t.name}`,onClick:()=>ri(t),"data-testid":`button-edit-helpful-link-${t.id}`,children:e.jsx(Re,{className:"h-4 w-4"})}),e.jsx(l,{variant:"ghost",size:"icon","aria-label":`Delete ${t.name}`,onClick:()=>st(t.id),"data-testid":`button-delete-helpful-link-${t.id}`,children:e.jsx(Le,{className:"h-4 w-4 text-destructive"})})]})]},t.id))})})})})]}),e.jsx(E,{open:La,onOpenChange:t=>{le(t),t||Ae()},children:e.jsxs(A,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(I,{children:[e.jsx(F,{"data-testid":"text-additional-info-dialog-title",children:oe?"Edit Entry":"Add Entry"}),e.jsx(M,{children:oe?"Update this additional information entry.":"Add a new additional information entry for this group."})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(c,{htmlFor:"additional-info-title",children:"Title"}),e.jsx(b,{id:"additional-info-title",value:Xe,onChange:t=>Mt(t.target.value),placeholder:"Enter the title...","data-testid":"input-additional-info-title"})]}),e.jsxs("div",{children:[e.jsx(c,{className:"mb-1 block",children:"Body"}),e.jsx(ga,{value:qt,onChange:Pt})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Y,{id:"additional-info-is-active",checked:Lt,onCheckedChange:t=>Rt(!!t),"data-testid":"checkbox-additional-info-active"}),e.jsx(c,{htmlFor:"additional-info-is-active",className:"cursor-pointer",children:"Active"})]})]}),e.jsxs(q,{children:[e.jsx(l,{variant:"outline",onClick:()=>{le(!1),Ae()},"data-testid":"button-cancel-additional-info",children:"Cancel"}),e.jsx(l,{onClick:li,disabled:aa.isPending||ia.isPending,"data-testid":"button-save-additional-info",children:oe?"Update":"Create"})]})]})}),e.jsx(E,{open:Ot!==null,onOpenChange:t=>{t||Ze(null)},children:e.jsxs(A,{children:[e.jsxs(I,{children:[e.jsx(F,{children:"Delete Entry"}),e.jsx(M,{children:"Are you sure you want to delete this entry? This action cannot be undone."})]}),e.jsxs(q,{children:[e.jsx(l,{variant:"outline",onClick:()=>Ze(null),"data-testid":"button-cancel-delete-additional-info",children:"Cancel"}),e.jsx(l,{variant:"destructive",onClick:()=>Ot!==null&&la.mutate(Ot),disabled:la.isPending,"data-testid":"button-confirm-delete-additional-info",children:"Delete"})]})]})}),e.jsx(E,{open:Ra,onOpenChange:t=>{ce(t),t||nt()},children:e.jsxs(A,{children:[e.jsxs(I,{children:[e.jsx(F,{children:ke?"Edit Helpful Link":"Add Helpful Link"}),e.jsx(M,{children:"Add an external website for residents. Bare domains and HTTP/HTTPS addresses are saved as one HTTPS 
1URL."})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(c,{htmlFor:"helpful-link-name",children:["Name ",e.jsx("span",{"aria-hidden":"true",children:"*"})]}),e.jsx(b,{id:"helpful-link-name",value:Ce,onChange:t=>Ht(t.target.value),maxLength:120,placeholder:"Website or resource name",required:!0,"data-testid":"input-helpful-link-name"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(c,{htmlFor:"helpful-link-url",children:["Full URL ",e.jsx("span",{"aria-hidden":"true",children:"*"})]}),e.jsx(b,{id:"helpful-link-url",value:Ws,onChange:t=>{et(t.target.value),_("")},maxLength:2048,placeholder:"example.org or https://example.org","aria-invalid":!!Kt,"aria-describedby":"helpful-link-url-hint helpful-link-url-error",required:!0,"data-testid":"input-helpful-link-url"}),e.jsx("p",{id:"helpful-link-url-hint",className:"text-xs text-muted-foreground",children:"HTTPS is added automatically. Repeated http:// or https:// prefixes are cleaned up."}),Kt&&e.jsx("p",{id:"helpful-link-url-error",role:"alert",className:"text-sm text-destructive","data-testid":"error-helpful-link-url",children:Kt})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(c,{htmlFor:"helpful-link-description",children:"Short description (optional)"}),e.jsx(is,{id:"helpful-link-description",value:tt,onChange:t=>Qt(t.target.value),maxLength:500,placeholder:"What residents can find there","data-testid":"input-helpful-link-description"})]})]}),e.jsxs(q,{children:[e.jsx(l,{variant:"outline",onClick:()=>ce(!1),"data-testid":"button-cancel-helpful-link",children:"Cancel"}),e.jsx(l,{onClick:di,disabled:Wt.isPending||Yt.isPending,"data-testid":"button-save-helpful-link",children:Wt.isPending||Yt.isPending?"Saving...":ke?"Save Changes":"Add Link"})]})]})}),e.jsx(E,{open:Ut!==null,onOpenChange:t=>{t||st(null)},children:e.jsxs(A,{children:[e.jsxs(I,{children:[e.jsx(F,{children:"Delete Helpful Link"}),e.jsx(M,{children:"Remove this link from the group? This action cannot be undone."})]}),e.jsxs(q,{children:[e.jsx(l,{variant:"outline",onClick:()=>st(null),"data-testid":"button-cancel-delete-helpful-link",children:"Cancel"}),e.jsx(l,{variant:"destructive",onClick:()=>Ut!==null&&Jt.mutate(Ut),disabled:Jt.isPending,"data-testid":"button-confirm-delete-helpful-link",children:Jt.isPending?"Deleting...":"Delete"})]})]})})]})}function Na({id:u,label:v,index:o,count:d,kind:r,disabled:n,onMove:S,children:G}){const{attributes:z,listeners:V,setNodeRef:k,transform:Z,transition:ee,isDragging:Oe}=Sa({id:u,disabled:n}),ge=e.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[e.jsx("button",{type:"button",...z,...V,disabled:n,className:"cursor-grab touch-none p-1 text-muted-foreground","aria-label":`Drag to reorder ${v}`,"data-testid":`drag-${r}-${u}`,children:e.jsx(hs,{className:"h-4 w-4"})}),e.jsx(l,{type:"button",variant:"ghost",size:"icon",className:"h-8 w-8","aria-label":`Move ${v} up`,disabled:n||o===0,onClick:()=>S(-1),"data-testid":`button-move-up-${r}-${u}`,children:e.jsx(ka,{className:"h-4 w-4"})}),e.jsx(l,{type:"button",variant:"ghost",size:"icon",className:"h-8 w-8","aria-label":`Move ${v} down`,disabled:n||o===d-1,onClick:()=>S(1),"data-testid":`button-move-down-${r}-${u}`,children:e.jsx(Ca,{className:"h-4 w-4"})})]}),ve={transform:Da.Transform.toString(Z),transition:ee,opacity:Oe?.6:1};return r==="documents"?e.jsxs(Pe,{ref:k,style:ve,"data-testid":`row-resource-${u}`,children:[e.jsx(y,{children:ge}),G]}):e.jsxs("div",{ref:k,style:ve,className:"flex items-start gap-3 rounded-md border p-4 bg-card","data-testid":`row-helpful-link-${u}`,children:[ge,G]})}function en({entry:u,index:v,lastIndex:o,onMove:d,onEdit:r,onDelete:n}){const{attributes:S,listeners:G,setNodeRef:z,transform:V,transition:k,isDragging:Z}=Sa({id:u.id}),ee={transform:Da.Transform.toString(V),transition:k,opacity:Z?.6:u.isActive?1:.6};return e.jsx("div",{ref:z,style:ee,className:"border rounded-lg p-4 bg-card","data-testid":`card-additional-info-${u.id}`,children:e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsx("button",{type:"button",...S,...G,className:"cursor-grab active:cursor-grabbing touch-none p-1 mt-0.5 text-muted-foreground hover:text-foreground shrink-0","aria-label":`Drag to reorder ${u.title}`,"data-testid":`drag-additional-info-${u.id}`,children:e.jsx(hs,{className:"h-4 w-4"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("h4",{className:"font-medium","data-testid":`text-additional-info-title-${u.id}`,children:u.title}),!u.isActive&&e.jsx(K,{variant:"outline",className:"shrink-0 text-xs text-muted-foreground","data-testid":`badge-ad
1ditional-info-inactive-${u.id}`,children:"Inactive"})]}),e.jsx("div",{className:"text-sm text-muted-foreground line-clamp-2 prose prose-sm max-w-none","data-testid":`text-additional-info-body-preview-${u.id}`,dangerouslySetInnerHTML:{__html:wa.sanitize(u.body)}})]}),e.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[e.jsx(l,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:()=>d(v,-1),disabled:v===0,"aria-label":`Move ${u.title} up`,"data-testid":`button-move-up-additional-info-${u.id}`,children:e.jsx(ka,{className:"h-4 w-4"})}),e.jsx(l,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:()=>d(v,1),disabled:v===o,"aria-label":`Move ${u.title} down`,"data-testid":`button-move-down-additional-info-${u.id}`,children:e.jsx(Ca,{className:"h-4 w-4"})}),e.jsxs(os,{children:[e.jsx(cs,{asChild:!0,children:e.jsx(l,{variant:"ghost",size:"icon",className:"h-8 w-8","data-testid":`button-menu-additional-info-${u.id}`,children:e.jsx(us,{className:"h-4 w-4"})})}),e.jsxs(ms,{align:"end",children:[e.jsxs(U,{onClick:()=>r(u),"data-testid":`button-edit-additional-info-${u.id}`,children:[e.jsx(Re,{className:"h-4 w-4 mr-2"}),"Edit"]}),e.jsxs(U,{className:"text-destructive",onClick:()=>n(u.id),"data-testid":`button-delete-additional-info-${u.id}`,children:[e.jsx(Le,{className:"h-4 w-4 mr-2"}),"Delete"]})]})]})]})]})})}export{fn 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.