PageSourceSearch

https://uzonachamber.org/assets/ClientEventsPage-DOVPpwvx.js

js uzonachamber.org collected 2026-10-04 10:40:43 UTC 30,966 bytes, 1 lines download raw bytes

1import{dE as Oe,bx as Ae,cD as be,r as c,b2 as Ne,b3 as M,aw as e,ds as $e,cB as Q,bC as pe,c$ as je,ch as ze,d9 as Re,bA as We,bV as qe,dk as Ce,aS as X,eF as ye}from"./vendor-Dv8DySgF.js";import{b as we,B as g,f as Z,N as Be,O as Me,Q as Ie,R as Ke,L as l,I as u,g as w}from"./index-DzfKy7jS.js";import{S as N}from"./switch-CJ456Fby.js";import{R as ke}from"./RichTextEditor-BBatwAo4.js";import{A as ee,a as te,b as se,c as ae,d as ne,e as ie,f as le,g as re}from"./alert-dialog-0ssEK394.js";import{S as V,a as H,b as Y,c as G,d as A}from"./select-Ca9Q_FF_.js";import{C as De}from"./CitySearchCombobox-CKOHyvgu.js";import{S as Qe}from"./SectionSettingsSheet-BV1q_X7g.js";import{u as Ve}from"./useSectionSettings-BgC2Gopp.js";import"./vendor-zod-EJO41mb4.js";import"./vendor-dates-DjYGpBD-.js";import"./vendor-pdf-BWZ7rE8i.js";import"./vendor-tiptap-CdbTAxZS.js";import"./CityPicker-C870fNG6.js";import"./addressInput-Cs8Di8tV.js";import"./command-CjWGm5zQ.js";import"./dialog-2fOcxGwS.js";const de=[{value:"America/New_York",label:"Eastern Time"},{value:"America/Chicago",label:"Central Time"},{value:"America/Denver",label:"Mountain Time"},{value:"America/Los_Angeles",label:"Pacific Time"},{value:"America/Phoenix",label:"Arizona (no DST)"},{value:"America/Anchorage",label:"Alaska Time"},{value:"Pacific/Honolulu",label:"Hawaii Time"}],I=()=>({name:"",slug:"",description:"",imageUrl:"",startDate:"",endDate:"",timezone:"America/Denver",venueName:"",addressLine:"",cityName:"",stateCode:"",isOnline:!1,onlineUrl:"",ticketUrl:"",isCancelled:!1,channelWebsite:!0,ownerListingId:"",eventCategory:"",isPublished:!1});function fe(i){if(!i)return"";const o=new Date(i);if(isNaN(o.getTime()))return"";const v=m=>String(m).padStart(2,"0");return`${o.getFullYear()}-${v(o.getMonth()+1)}-${v(o.getDate())}T${v(o.getHours())}:${v(o.getMinutes())}`}function Se(i){return{name:i.name??"",slug:i.slug??"",description:i.description??"",imageUrl:i.imageUrl??"",startDate:fe(i.startDate),endDate:fe(i.endDate),timezone:i.timezone??"America/Denver",venueName:i.venueName??"",addressLine:i.addressLine??"",cityName:i.cityName??"",stateCode:i.stateCode??"",isOnline:i.isOnline??!1,onlineUrl:i.onlineUrl??"",ticketUrl:i.ticketUrl??"",isCancelled:i.isCancelled??!1,channelWebsite:i.channelWebsite??!0,ownerListingId:i.ownerListingId??"",eventCategory:i.eventCategory??"",isPublished:i.isPublished??!1}}function Ue(i,o){return JSON.stringify(i)===JSON.stringify(o)}function He(i,o){if(!i)return"No date";try{return new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit",timeZone:o??"UTC"}).format(new Date(i))}catch{return new Date(i).toLocaleDateString()}}function mt({clientId:i,eventId:o}){const{toast:v}=we(),m=be(),[a,f]=c.useState(I()),S=c.useRef(I()),[K,C]=c.useState(!1),[k,U]=c.useState(null),[n,P]=c.useState(null),[T,F]=c.useState(!1),E=c.useRef(null),{data:b,isLoading:$}=Ne({queryKey:["/api/admin/clients",i,"events",o],queryFn:()=>w("GET",`/api/admin/clients/${i}/events/${o}`),enabled:!!o});c.useEffect(()=>{if(b){const s=Se(b);f(s),S.current=s,C(!1),P(b.imageUrl?`/api/storage/images/${b.imageUrl}`:null),U(null)}},[b==null?void 0:b.id]),c.useEffect(()=>{C(!Ue(a,S.current))},[a]);const r=c.useCallback((s,p)=>{f(j=>({...j,[s]:p}))},[]);function z(s){const p=new FileReader;p.onload=j=>{var B;const d=(B=j.target)==null?void 0:B.result;P(d);const q=d.split(",")[1];U({base64Data:q,filename:s.name,mimeType:s.type})},p.readAsDataURL(s)}const R=M({mutationFn:s=>w("PUT",`/api/admin/clients/${i}/events/${o}`,s),onSuccess:()=>{m.invalidateQueries({queryKey:["/api/admin/clients",i,"events"]}),m.invalidateQueries({queryKey:["/api/admin/clients",i,"events",o]})}}),L=M({mutationFn:()=>w("DELETE",`/api/admin/clients/${i}/events/${o}`),onSuccess:()=>{m.invalidateQueries({queryKey:["/api/admin/clients",i,"events"]}),v({title:"Event deleted"})},onError:s=>v({title:"Delete failed",description:s.message,variant:"destructive"})}),W=R.isPending;async function O(){if(!a.name.trim()){v({title:"Event name is required",variant:"destructive"});return}if(a.isPublished&&!a.startDate){v({title:"Start date is required when publishing",variant:"destructive"});return}let s=a.imageUrl;if(k)try{s=(await w("POST",`/api/admin/clients/${i}/upload-image`,k)).path}catch{v({title:"Banner upload failed",variant:"destructive"});return}const p={name:a.name,slug:a.slug||void 0,description:a.description||null,imageUrl:s||null,startDate:a.startDate||null,endD
1ate:a.endDate||null,timezone:a.timezone||null,venueName:a.venueName||null,addressLine:a.addressLine||null,cityName:a.cityName||null,stateCode:a.stateCode||null,isOnline:a.isOnline,onlineUrl:a.onlineUrl||null,ticketUrl:a.ticketUrl||null,isCancelled:a.isCancelled,channelWebsite:a.channelWebsite,ownerListingId:a.ownerListingId||null,eventCategory:a.eventCategory||null,isPublished:a.isPublished};try{await R.mutateAsync(p),v({title:"Event saved"}),S.current={...a,imageUrl:s},C(!1),U(null)}catch(j){const d=(j==null?void 0:j.message)??"Failed to save event";v({title:d.startsWith("409:")?d.slice(5):d,variant:"destructive"})}}return $?e.jsx("div",{className:"flex items-center justify-center h-full",children:e.jsx("span",{className:"text-muted-foreground text-sm",children:"Loading…"})}):b?e.jsxs("div",{className:"flex flex-col h-full overflow-hidden",children:[e.jsxs("div",{className:"shrink-0 px-4 pt-4 pb-3 border-b space-y-3",children:[e.jsx("h2",{className:"font-semibold text-sm",children:"Edit Event"}),e.jsxs("div",{className:"flex items-center gap-4 flex-wrap",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{id:"ep-isPublished",checked:a.isPublished,onCheckedChange:s=>r("isPublished",s),"data-testid":"switch-published"}),e.jsx(l,{htmlFor:"ep-isPublished",className:"cursor-pointer",children:a.isPublished?"Published":"Draft"})]}),a.isPublished&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{id:"ep-isCancelled",checked:a.isCancelled,onCheckedChange:s=>r("isCancelled",s),"data-testid":"switch-cancelled"}),e.jsx(l,{htmlFor:"ep-isCancelled",className:"cursor-pointer text-destructive",children:"Cancelled"})]})]})]}),e.jsxs("div",{className:"shrink-0 px-4 py-3 border-b bg-muted/30 grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"Start"}),e.jsx(u,{type:"datetime-local",value:a.startDate,onChange:s=>r("startDate",s.target.value),"data-testid":"input-start-date"})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"End"}),e.jsx(u,{type:"datetime-local",value:a.endDate,onChange:s=>r("endDate",s.target.value),"data-testid":"input-end-date"})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"Timezone"}),e.jsxs(V,{value:a.timezone,onValueChange:s=>
1r("timezone",s),children:[e.jsx(H,{"data-testid":"select-timezone",children:e.jsx(Y,{placeholder:"Select timezone"})}),e.jsx(G,{children:de.map(s=>e.jsx(A,{value:s.value,children:s.label},s.value))})]})]})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto px-4 py-4 flex flex-col gap-4 min-h-0",children:[e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1.5 block",children:"Banner Image"}),n?e.jsxs("div",{className:"relative mb-2",children:[e.jsx("img",{src:n,alt:"Banner preview",className:"w-full h-28 object-cover rounded-md","data-testid":"img-banner-preview"}),e.jsx(g,{variant:"ghost",size:"icon",className:"absolute top-1 right-1 bg-background/80",onClick:()=>{U(null),P(null),r("imageUrl","")},"data-testid":"button-remove-banner",children:e.jsx(X,{className:"h-3 w-3"})})]}):e.jsxs("button",{type:"button",onClick:()=>{var s;return(s=E.current)==null?void 0:s.click()},className:"w-full h-20 border-2 border-dashed rounded-md flex flex-col items-center justify-center gap-1 text-muted-foreground hover:border-primary/50 transition-colors","data-testid":"button-upload-banner",children:[e.jsx(Q,{className:"h-4 w-4"}),e.jsx("span",{className:"text-sm",children:"Upload banner"})]}),e.jsx("input",{ref:E,type:"file",accept:"image/*",className:"hidden",onChange:s=>{var p;(p=s.target.files)!=null&&p[0]&&z(s.target.files[0])},"data-testid":"input-banner-file"})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"Event Name *"}),e.jsx(u,{value:a.name,onChange:s=>r("name",s.target.value),placeholder:"e.g. Fall Festival",className:"text-base","data-testid":"input-event-name"})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"URL Slug"}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-muted-foreground text-sm whitespace-nowrap",children:"/events/"}),e.jsx(u,{value:a.slug,onChange:s=>r("slug",s.target.value.toLowerCase().replace(/[^a-z0-9-]/g,"")),placeholder:"event-slug","data-testid":"input-slug"})]})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"Description"}),e.jsx(ke,{value:a.description,onChange:s=>r("description",s)})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"Category"}),e.jsx(u,{value:a.eventCategory,onChange:s=>r("eventCategory",s.target.value),placeholder:"e.g. Festival, Concert, Market","data-testid":"input-event-category"})]}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(l,{className:"text-xs text-muted-foreground",children:"Location"}),e.jsxs("div",{className:"flex items-center gap-2 ml-auto",children:[e.jsx(N,{id:"ep-isOnline",checked:a.isOnline,onCheckedChange:s=>r("isOnline",s),"data-testid":"switch-is-online"}),e.jsx(l,{htmlFor:"ep-isOnline",className:"cursor-pointer text-sm",children:"Online event"})]})]}),a.isOnline?e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"Online URL"}),e.jsx(u,{value:a.onlineUrl,onChange:s=>r("onlineUrl",s.target.value),placeholder:"https://zoom.us/...","data-testid":"input-online-url"})]}):e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"Venue Name"}),e.jsx(u,{value:a.venueName,onChange:s=>r("venueName",s.target.value),placeholder:"e.g. Town Square Park","data-testid":"input-venue-name"})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"Street Address"}),e.jsx(u,{value:a.addressLine,onChange:s=>r("addressLine",s.target.value),placeholder:"123 Main St","data-testid":"input-address"})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"City"}),e.jsx(De,{value:a.cityName&&a.stateCode?`${a.cityName}, ${a.stateCode}`:"",onSelect:(s,p)=>{r("cityName",s),r("stateCode",p)},placeholder:"Search cities...","data-testid":"select-city"})]})]})]}),e.jsxs("div",{children:[e.jsxs(l,{className:"text-xs text-muted-foreground mb-1 block",children:[e.jsx(ye,{className:"h-3.5 w-3.5 inline mr-1"}),"Ticket / Registration URL (optional)"]}),e.jsx(u,{value:a.ticketUrl,onChange:s=>r("ticketUrl",s.target.value),placeholder:"https://eventbrite.com/...","data-testid":"input-ticket-url"})]}),e.jsxs("div",{className:"rounded-md border p-3 flex flex-col gap-2",children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1",children:"Distribution"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{id:"ep-channelWebsite",checked:a.channelWebsite,onCheckedChange:s=>r("channelWebsite",s),"data-testid":"switch-channel-website"}),e.jsx(l,{htmlFor:"ep-channelWebsite",className:"cursor-pointer text-sm",children:"Show on org website"})]}),e.jsxs("div",{className:"flex items-center gap-2 opacity-50",children:[e.jsx(N,{id:"ep-channelWyit",disabled:!0,"data-testid":"switch-channel-wyit"}),e.jsx(l,{htmlFor:"ep-channelWyit",className:"text-sm",children:"Submit to WYIT Directory (coming soon)"})]})]}),e.jsx("div",{className:"pt-2 border-t border-destructive/20",children:e.jsxs(g,{type:"button",variant:"outline",size:"sm",className:"text-destructive border-destructive/40",onClick:()=>F(!0),"data-testid":"button-open-delete-dialog",children:[e.jsx(Ce,{className:"h-3.5 w-3.5 mr-2"}),"Delete Event"]})})]}),e.jsxs("div",{className:"shrink-0 border-t px-4 py-3 flex items-center justify-between gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[K&&e.jsx("span",{className:"h-2 w-2 rounded-full bg-orange-500","data-testid":"dot-unsaved"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:K?"Unsaved changes":"No changes"})]}),e.jsx(g,{onClick:O,disabled:W,"data-testid":"button-save-event",children:W?"Saving…":a.isPublished?"Publish":"Save Draft"})]}),e.jsx(ee,{open:T,onOpenChange:F,children:e.jsxs(te,{children:[e.jsxs(se,{children:[e.jsx(ae,{children:"Delete Event?"}),e.jsx(ne,{children:"This action cannot be undone."})]}),e.jsxs(ie,{children:[e.jsx(le,{children:"Cancel"}),e.jsx(re,{onClick:()=>L.mutate(),className:"bg-destructive text-destructive-foreground","data-testid":"button-confirm-delete",children:L.isPending?"Deleting…":"Delete"})]})]})})]}):e.jsx("div",{className:"flex items-center justify-center h-full",children:e.jsx("span",{className:"text-muted-foreground text-sm",children:"Event not found"})})}function ut({clientId:i,embedded:o}={}){var xe,he,ge;
1const{clientId:v}=Oe(),m=i??v,[,a]=Ae(),{toast:f}=we(),S=be(),[K,C]=c.useState(!1),[k,U]=c.useState(null),[n,P]=c.useState(I()),T=c.useRef(I()),[F,E]=c.useState(!1),[b,$]=c.useState(!1),[r,z]=c.useState(null),[R,L]=c.useState(null),[W,O]=c.useState(null),s=c.useRef(null),[p,j]=c.useState(!1),{settings:d,saveMutation:q}=Ve(m??""),{data:B=[],isLoading:Pe}=Ne({queryKey:["/api/admin/clients",m,"events"],queryFn:async()=>w("GET",`/api/admin/clients/${m}/events`)});c.useEffect(()=>{E(!Ue(n,T.current))},[n]);const x=c.useCallback((t,h)=>{P(D=>{const y={...D,[t]:h};if(t==="name"&&!k){const J=h.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return{...y,slug:J}}return y})},[k]);function ce(){const t=I();U(null),P(t),T.current=t,E(!1),L(null),O(null),C(!0)}function Ee(t){const h=Se(t);U(t),P(h),T.current=h,E(!1),L(null),O(t.imageUrl?`/api/storage/images/${t.imageUrl}`:null),C(!0)}function _(){F?$(!0):C(!1)}function Le(t){const h=new FileReader;h.onload=D=>{var ve;const y=(ve=D.target)==null?void 0:ve.result;O(y);const J=y.split(",")[1];L({base64Data:J,filename:t.name,mimeType:t.type})},h.readAsDataURL(t)}const oe=M({mutationFn:t=>w("POST",`/api/admin/clients/${m}/events`,t),onSuccess:()=>{S.invalidateQueries({queryKey:["/api/admin/clients",m,"events"]})}}),me=M({mutationFn:({id:t,data:h})=>w("PUT",`/api/admin/clients/${m}/events/${t}`,h),onSuccess:()=>{S.invalidateQueries({queryKey:["/api/admin/clients",m,"events"]})}}),Te=M({mutationFn:t=>w("DELETE",`/api/admin/clients/${m}/events/${t}`),onSuccess:()=>{S.invalidateQueries({queryKey:["/api/admin/clients",m,"events"]}),f({title:"Event deleted"})}});async function Fe(){if(!n.name.trim()){f({title:"Event name is required",variant:"destructive"});return}if(n.isPublished&&!n.startDate){f({title:"Start date is required when publishing",variant:"destructive"});return}let t=n.imageUrl;if(R)try{t=(await w("POST",`/api/admin/clients/${m}/upload-image`,R)).path}catch{f({title:"Banner upload failed",variant:"destructive"});return}const h={name:n.name,slug:n.slug||void 0,description:n.description||null,imageUrl:t||null,startDate:n.startDate||null,endDate:n.endDate||null,timezone:n.timezone||null,venueName:n.venueName||null,addressLine:n.addressLine||null,cityName:n.cityName||null,stateCode:n.stateCode||null,isOnline:n.isOnline,onlineUrl:n.onlineUrl||null,ticketUrl:n.ticketUrl||null,isCancelled:n.isCancelled,channelWebsite:n.channelWebsite,ownerListingId:n.ownerListingId||null,eventCategory:n.eventCategory||null,isPublished:n.isPublished};try{k?(await me.mutateAsync({id:k.id,data:h}),f({title:"Event saved"})):(await oe.mutateAsync(h),f({title:"Event created"})),T.current={...n,imageUrl:t},E(!1),C(!1)}catch(D){const y=(D==null?void 0:D.message)??"Failed to save event";f({title:y.startsWith("409:")?y.slice(5):y,variant:"destructive"})}}const ue=oe.isPending||me.isPending;return e.jsxs("div",{className:o?"":"min-h-screen bg-background",children:[o?e.jsxs("div",{className:"flex items-center justify-between gap-2 mb-6 flex-wrap",children:[e.jsx("h2",{className:"text-lg font-semibold",children:"Events"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(g,{variant:"outline",onClick:()=>a(`/admin/events/import?clientId=${m}`),"data-testid":"button-import-from-flyer",children:[e.jsx(Q,{className:"h-4 w-4 mr-1.5"}),"Import from Flyer"]}),e.jsxs(g,{onClick:ce,"data-testid":"button-create-event",children:[e.jsx(pe,{className:"h-4 w-4 mr-1.5"}),"New Event"]}),e.jsx(g,{variant:"ghost",size:"icon",onClick:()=>j(!0),"data-testid":"button-events-settings",children:e.jsx(je,{className:"h-4 w-4"})})]})]}):e.jsxs("div",{className:"border-b px-6 py-4 flex items-center gap-3 flex-wrap",children:[e.jsx(g,{variant:"ghost",size:"icon",onClick:()=>a("/admin/orgs"),"data-testid":"button-back",children:e.jsx($e,{className:"h-4 w-4"})}),e.jsx("h1",{className:"text-xl font-semibold",children:"Events"}),e.jsxs("span",{className:"text-muted-foreground text-sm",children:["Client #",m]}),e.jsxs("div",{className:"ml-auto flex items-center gap-2",children:[e.jsxs(g,{variant:"outline",onClick:()=>a(`/admin/events/import?clientId=${m}`),"data-testid":"button-import-from-flyer",children:[e.jsx(Q,{className:"h-4 w-4 mr-1.5"}),"Import from Flyer"]}),e.jsxs(g,{onClick:ce,"data-testid":"button-create-event",children:[e.jsx(pe,{className:"h-4 w-4 mr-1.5"}),"New Event"]}),e.jsx(g,{variant:"ghost",size:"icon",onClick:()=>j(!0),"data-testid":"button-events-settings",children:e.jsx(je,{className:"h-4 w-4"})})]})]}),e.jsx("div",{className:o?"max-w-4xl mx-auto":"px-6 py-6 max-w-4xl mx-auto",children:Pe?e.jsx("div",{className:"flex justify-center py-12","data-testid":"loading-events",children:e.jsx("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary"})}):B.length===0?e.jsxs("div",{className:"text-center py-16 text-muted-foreground","data-testid":"empty-events",children:[e.jsx(ze,{className:"h-10 w-10 mx-auto mb-3 opacity-30"}),e.jsx("p",{className:"font-medium",children:"No events yet"}),e.jsx("p",{className:"text-sm mt-1",children:"Create the first event for this client."})]}):e.jsx("div",{className:"flex flex-col gap-3","data-testid":"list-events",children:B.map(t=>
1e.jsxs("div",{className:"flex items-start gap-4 rounded-md border bg-card p-4","data-testid":`card-event-${t.id}`,children:[t.imageUrl&&e.jsx("img",{src:`/api/storage/images/${t.imageUrl}`,alt:t.name,className:"h-16 w-24 object-cover rounded-md shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{className:"font-medium truncate","data-testid":`text-event-name-${t.id}`,children:t.name}),t.isCancelled&&e.jsx(Z,{variant:"destructive",children:"Cancelled"}),!t.isPublished&&e.jsx(Z,{variant:"secondary",children:"Draft"}),t.isPublished&&!t.isCancelled&&e.jsx(Z,{className:"bg-green-600 text-white",children:"Published"})]}),t.startDate&&e.jsx("p",{className:"text-sm text-muted-foreground mt-0.5",children:He(t.startDate,t.timezone)}),(t.venueName||t.isOnline)&&e.jsxs("p",{className:"text-sm text-muted-foreground flex items-center gap-1 mt-0.5",children:[t.isOnline?e.jsx(Re,{className:"h-3 w-3"}):e.jsx(We,{className:"h-3 w-3"}),t.isOnline?"Online":t.venueName]})]}),e.jsxs("div",{className:"flex gap-1 shrink-0",children:[e.jsx(g,{variant:"ghost",size:"icon",onClick:()=>Ee(t),"data-testid":`button-edit-event-${t.id}`,children:e.jsx(qe,{className:"h-4 w-4"})}),e.jsx(g,{variant:"ghost",size:"icon",onClick:()=>z(t),"data-testid":`button-delete-event-${t.id}`,children:e.jsx(Ce,{className:"h-4 w-4 text-destructive"})})]})]},t.id))})}),e.jsx(Be,{open:K,onOpenChange:t=>{t||_()},children:e.jsxs(Me,{side:"right",className:"w-full sm:max-w-xl flex flex-col p-0 gap-0","data-testid":"sheet-event-editor",children:[e.jsxs(Ie,{className:"shrink-0 px-6 pt-5 pb-3 border-b",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx(Ke,{className:"text-lg font-semibold",children:k?"Edit Event":"New Event"}),e.jsx(g,{variant:"ghost",size:"icon",onClick:_,"data-testid":"button-sheet-close-top",children:e.jsx(X,{className:"h-4 w-4"})})]}),e.jsxs("div",{className:"flex items-center gap-4 pt-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{id:"isPublished",checked:n.isPublished,onCheckedChange:t=>x("isPublished",t),"data-testid":"switch-published"}),e.jsx(l,{htmlFor:"isPublished",className:"cursor-pointer",children:n.isPublished?"Published":"Draft"})]}),n.isPublished&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{id:"isCancelled",checked:n.isCancelled,onCheckedChange:t=>x("isCancelled",t),"data-testid":"switch-cancelled"}),e.jsx(l,{htmlFor:"isCancelled",className:"cursor-pointer text-destructive",children:"Cancelled"})]})]})]}),e.jsxs("div",{className:"shrink-0 px-6 py-3 border-b bg-muted/30 grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"Start"}),e.jsx(u,{type:"datetime-local",value:n.startDate,onChange:t=>x("startDate",t.target.value),"data-testid":"input-start-date"})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"End"}),e.jsx(u,{type:"datetime-local",value:n.endDate,onChange:t=>x("endDate",t.target.value),"data-testid":"input-end-date"})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"Timezone"}),e.jsxs(V,{value:n.timezone,onValueChange:t=>x("timezone",t),children:[e.jsx(H,{"data-testid":"select-timezone",children:e.jsx(Y,{placeholder:"Select timezone"})}),e.jsx(G,{children:de.map(t=>e.jsx(A,{value:t.value,children:t.label},t.value))})]})]})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto px-6 py-4 flex flex-col gap-5",children:[e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1.5 block",children:"Banner Image"}),W?e.jsxs("div",{className:"relative mb-2",children:[e.jsx("img",{src:W,alt:"Banner preview",className:"w-full h-36 object-cover rounded-md","data-testid":"img-banner-preview"}),e.jsx(g,{variant:"ghost",size:"icon",className:"absolute top-1 right-1 bg-background/80",onClick:()=>{L(null),O(null),x("imageUrl","")},"data-testid":"button-remove-banner",children:e.jsx(X,{className:"h-3 w-3"})})]}):e.jsxs("button",{type:"button",onClick:()=>{var t;return(t=s.current)==null?void 0:t.click()},className:"w-full h-24 border-2 border-dashed rounded-md flex flex-col items-center justify-center gap-1 text-muted-foreground hover:border-primary/50 transition-colors","data-testid":"button-upload-banner",children:[e.jsx(Q,{className:"h-5 w-5"}),e.jsx("span",{className:"text-sm",children:"Upload banner"})]}
1),e.jsx("input",{ref:s,type:"file",accept:"image/*",className:"hidden",onChange:t=>{var h;(h=t.target.files)!=null&&h[0]&&Le(t.target.files[0])},"data-testid":"input-banner-file"})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"Event Name *"}),e.jsx(u,{value:n.name,onChange:t=>x("name",t.target.value),placeholder:"e.g. Marysvale Fall Festival",className:"text-base","data-testid":"input-event-name"})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"URL Slug"}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-muted-foreground text-sm whitespace-nowrap",children:"/events/"}),e.jsx(u,{value:n.slug,onChange:t=>x("slug",t.target.value.toLowerCase().replace(/[^a-z0-9-]/g,"")),placeholder:"event-slug","data-testid":"input-slug"})]})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"Description"}),e.jsx(ke,{value:n.description,onChange:t=>x("description",t)})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"Category"}),e.jsx(u,{value:n.eventCategory,onChange:t=>x("eventCategory",t.target.value),placeholder:"e.g. Festival, Concert, Market","data-testid":"input-event-category"})]}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(l,{className:"text-xs text-muted-foreground",children:"Location"}),e.jsxs("div",{className:"flex items-center gap-2 ml-auto",children:[e.jsx(N,{id:"isOnline",checked:n.isOnline,onCheckedChange:t=>x("isOnline",t),"data-testid":"switch-is-online"}),e.jsx(l,{htmlFor:"isOnline",className:"cursor-pointer text-sm",children:"Online event"})]})]}),n.isOnline?e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"Online URL"}),e.jsx(u,{value:n.onlineUrl,onChange:t=>x("onlineUrl",t.target.value),placeholder:"https://zoom.us/...","data-testid":"input-online-url"})]}):e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"Venue Name"}),e.jsx(u,{value:n.venueName,onChange:t=>x("venueName",t.target.value),placeholder:"e.g. Town Square Park","data-testid":"input-venue-name"})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"Street Address"}),e.jsx(u,{value:n.addressLine,onChange:t=>x("addressLine",t.target.value),placeholder:"123 Main St","data-testid":"input-address"})]}),e.jsxs("div",{children:[e.jsx(l,{className:"text-xs text-muted-foreground mb-1 block",children:"City"}),e.jsx(De,{value:n.cityName&&n.stateCode?`${n.cityName}, ${n.stateCode}`:"",onSelect:(t,h)=>{x("cityName",t),x("stateCode",h)},placeholder:"Search cities...","data-testid":"select-city"})]})]})]}),e.jsxs("div",{children:[e.jsxs(l,{className:"text-xs text-muted-foreground mb-1 block",children:[e.jsx(ye,{className:"h-3.5 w-3.5 inline mr-1"}),"Ticket / Registration URL (optional)"]}),e.jsx(u,{value:n.ticketUrl,onChange:t=>x("ticketUrl",t.target.value),placeholder:"https://eventbrite.com/...","data-testid":"input-ticket-url"})]}),e.jsxs("div",{className:"rounded-md border p-3 flex flex-col gap-2",children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1",children:"Distribution"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{id:"channelWebsite",checked:n.channelWebsite,onCheckedChange:t=>x("channelWebsite",t),"data-testid":"switch-channel-website"}),e.jsx(l,{htmlFor:"channelWebsite",className:"cursor-pointer text-sm",children:"Show on org website"})]}),e.jsxs("div",{className:"flex items-center gap-2 opacity-50",children:[e.jsx(N,{id:"channelWyit",disabled:!0,"data-testid":"switch-channel-wyit"}),e.jsx(l,{htmlFor:"channelWyit",className:"text-sm",children:"Submit to WYIT Directory (coming soon)"})]})]})]}),e.jsxs("div",{className:"shrink-0 border-t px-6 py-4 flex items-center justify-between gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[F&&e.jsx("span",{className:"h-2 w-2 rounded-full bg-orange-500","data-testid":"dot-unsaved",title:"Unsaved changes"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:F?"Unsaved changes":"No changes"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(g,{variant:"outline",onClick:_,"data-testid":"button-sheet-close",children:"Close"}),e.jsx(g,{onClick:Fe,disabled:ue,"data-testid":"button-save-event",children:ue?"Saving…":n.isPublished?"Publish":"Save Draft"})]})]})]})}),e.jsx(ee,{open:b,onOpenChange:$,children:e.jsxs(te,{children:[e.jsxs(se,{children:[e.jsx(ae,{children:"Discard changes?"}),e.jsx(ne,{children:"You have unsaved changes. They will be lost if you close now."})]}),e.jsxs(ie,{children:[e.jsx(le,{"data-testid":"button-discard-cancel",children:"Keep editing"}),e.jsx(re,{onClick:()=>{$(!1),C(!1)},"data-testid":"button-discard-confirm",children:"Discard"})]})]})}),e.jsx(ee,{open:!!r,onOpenChange:t=>{t||z(null)},children:e.jsxs(te,{children:[e.jsxs(se,{children:[e.jsx(ae,{children:"Delete event?"}),e.jsxs(ne,{children:['"',r==null?void 0:r.name,'" will be permanently deleted.']})]}),e.jsxs(ie,{children:[e.jsx(le,{"data-testid":"button-delete-cancel",children:"Cancel"}),e.jsx(re,{className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",onClick:()=>{r&&(Te.mutate(r.id),z(null))},"data-testid":"button-delete-confirm",children:"Delete"})]})]})}),e.jsxs(Qe,{open:p,onOpenChange:j,title:"Events Settings",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-medium",children:"Default Audience Scope"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Pre-fills the audience type on new events."})]}),e.jsxs(V,{value:((xe=d==null?void 0:d.events)==null?void 0:xe.defaultAudienceScope)??"general",onValueChange:t=>q.mutate({events:{...d==null?void 0:d.events,defaultAudienceScope:t}}),children:[e.jsx(H,{"data-testid":"select-default-audience-scope",children:e.jsx(Y,{})}),e.jsxs(G,{children:[e.jsx(A,{value:"general",children:"General"}),e.jsx(A,{value:"tourism",children:"Tourism"}),e.jsx(A,{value:"local",children:"Local"})]})]})]}),e.jsx("div",{className:"border-t"}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-medium",children:"Default Event Link Label"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:'Default CTA text for new event links (e.g. "Learn More", "Buy Tickets").'})]}),e.jsx(u,{placeholder:"Learn More",value:((he=d==null?void 0:d.events)==null?void 0:he.defaultLinkLabel)??"",onChange:t=>q.mutate({events:{...d==null?void 0:d.events,defaultLinkLabel:t.target.value}}),"data-testid":"input-default-link-label"})]}),e.jsx("div",{className:"border-t"}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-medium",children:"Default Timezone"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Pre-fills the timezone field on new events."})]}),e.jsxs(V,{value:((ge=d==null?void 0:d.events)==null?void 0:ge.defaultTimezone)??"America/Denver",onValueChange:t=>q.mutate({events:{...d==null?void 0:d.events,defaultTimezone:t}}),children:[e.jsx(H,{"data-testid":"select-default-timezone",children:e.jsx(Y,{})}),e.jsx(G,{children:de.map(t=>e.jsx(A,{value:t.value,children:t.label},t.value))})]})]})]})]})}export{mt as EventEditorPanel,ut 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.