1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ContentManagement-DMQk1OP_.js","assets/index-BghHNOje.js","assets/index-rVIa3g1Y.css","assets/tabs-OfzD-Nju.js","assets/index-C-CoiJov.js","assets/EmailBuilder-Dc7xphlI.js","assets/alert-dialog-mDrDk6Tk.js","assets/dialog-Clo9IObs.js","assets/index-B6H0OFpw.js","assets/popover-CWI6PBxd.js","assets/select-BuQ2jC-b.js","assets/index-YvgZ23nC.js","assets/check-Cs64SJZX.js","assets/chevron-up-D-aySBK5.js","assets/EmojiPicker-hTPq7zxW.js","assets/loader-circle-B8iw8PN7.js","assets/ImageUpload-BrzJdCbp.js","assets/badge-BCCCWQE0.js","assets/upload-JvDQuh3d.js","assets/circle-check-big-Bp4Yvkwn.js","assets/sparkles-DEWTNoRx.js","assets/image-54Sd8WyT.js","assets/copy-BSLHHWVn.js","assets/refresh-cw-ByVvNyh0.js","assets/download-ByZycj8e.js","assets/trash-2-DU-Ld5Bw.js","assets/textarea-CDQn81xI.js","assets/type-s9MhbAXX.js","assets/palette-D2FvlmiN.js","assets/undo-2-DqhCeFRC.js","assets/quote-DQZjn06q.js","assets/defineProperty-DbXIQDXj.js","assets/typeof-QjJsDpFa.js","assets/tiny-invariant-BaFNuDhB.js","assets/grip-vertical-DVSLh7fz.js","assets/square-pen-Cswvcd8G.js","assets/circle-x-D1uGBboU.js","assets/minus-B2ufVPVp.js","assets/square-CSGF2uBn.js","assets/settings-f9xlGnz5.js","assets/switch-Dlrp5GND.js","assets/save-DCW1niX_.js","assets/EmailBuilder-C3ChpqmZ.css","assets/edgeFunctionError-DFEBOJS0.js","assets/PieChart-fIKY4OJB.js","assets/generateCategoricalChart-Cd6uk4K5.js","assets/video-CCBVfozA.js","assets/send-BJOv5R4x.js","assets/triangle-alert-nzYwmCkk.js","assets/shield-check-BRJsKqt_.js","assets/plus-BjOZUKUH.js","assets/image-plus-BZDDo5jQ.js","assets/highlighter-B0rtIZZO.js","assets/htmlSanitizer-gxNEZbgX.js","assets/storageImage-FoOVgdIf.js","assets/purify.es-DedTAGkB.js","assets/progress-vie7oOMR.js","assets/checkbox-CIRobcpM.js","assets/clock-CsNJYkxI.js","assets/user-plus-Bp-77Iv-.js","assets/formatDistanceToNow-CXg7CpC5.js","assets/en-US-Cd7JVTfs.js","assets/endOfMonth-MJoWre7s.js","assets/useTableSort-B-A7qTri.js","assets/table-C5ZVYO-V.js","assets/circle-check-C1GKZN-7.js","assets/useTagDefinitions-CO6IB2Fh.js","assets/useUpdateCategories-DvVfmlJS.js","assets/pencil-BMlAIgGY.js","assets/paperclip-iDjXjJLm.js","assets/settings-2-DnpxvDar.js","assets/TableToolbar-q0tCHeu7.js","assets/tag-Ci0NFGeZ.js","assets/calendar-clock-BliBvqGA.js","assets/scrollable-tabs-list-CMEwQAOe.js","assets/LastRunNote-CEh43I8s.js","assets/useAdminActionRuns-G3KbyO0S.js","assets/build-day-promo-vertical.mp4.asset-BJV8pmIo.js","assets/message-square-ChptD4Id.js","assets/VoiceDictateButton-d7rBOEtk.js","assets/mic-wTOzDbDU.js","assets/LastSyncBadge-GdfM6pUk.js","assets/history-BQz27IZx.js","assets/link-2-Da3Xdlu_.js","assets/rotate-ccw-CS9N7HZf.js","assets/tooltip-inqb5Bp-.js","assets/chevron-left-CWTjGpKW.js","assets/chevron-right-C5onmajZ.js","assets/calendar-days-2ePY1LVi.js","assets/separator-BXMMoQgP.js","assets/shield-alert-C_wyyMIp.js","assets/SubtabIntro-WRyQGLma.js","assets/EventsCommunity-CiRFISp5.js","assets/date-BZ0iBRYO.js","assets/zod-BcBw7cOK.js","assets/types-Da0zSGn8.js","assets/bell-C62Ugfcq.js","assets/trash-ColBMA1b.js","assets/star-CLmwwr8q.js","assets/dropdown-menu-D9rzll7v.js","assets/circle-Q-DetBwM.js","assets/megaphone-DL_mQt0o.js","assets/scroll-area-DMisExGv.js","assets/ticket-BXLUp8hu.js","assets/user-check-CiT41cUR.js","assets/rsvpOptions-BrHqO-m6.js","assets/clipboard-check-BKwEZwLf.js","assets/command-BzXHHwC7.js","assets/calendar-x-i_B0NINL.js","assets/format-u92PFBEn.js","assets/subscriberService-BpxJeYT9.js","assets/radio-group-CeJ6yfb8.js","assets/receipt-CozoREnr.js","assets/use-mobile-C1btm3PS.js","assets/arrow-up-down-BHi3q2zI.js","assets/ChangeHistory-V9yfu5L4.js","assets/useDebouncedValue-BIgKhHpq.js","assets/map-pin-C7P1OGkE.js","assets/ContactsManagement-6gkQ0oBj.js","assets/DecisionNoteDialog-BjBre4vM.js","assets/shield-BffSzE1n.js","assets/pen-line-CmOVZUEG.js","assets/shield-off-C7wCdgTX.js","assets/rows-3-uqj2mDDe.js","assets/filter-zM3Z9my0.js","assets/building-2-DbXAZakx.js","assets/subscriberTagAssignments-BQrIXJKH.js","assets/SystemAdministration-Bjv5YQN7.js","assets/logoManager-DQG-QXPg.js","assets/useCompanies-D3emJX1r.js","assets/usePartners-Djslm1ZB.js","assets/useExecutiveBoard-0iy1PqsZ.js","assets/logo-CrGY1hRX.js","assets/useSectors-C95uB27o.js","assets/briefcase-DfjVJxEJ.js","assets/protectedPages-DN0VZ7w8.js","assets/AdminOutreach-B_jjJMXI.js","assets/AdminAnalytics-DhvHbfuF.js","assets/AreaChart-D9-OApRb.js","assets/LineChart-B7BO-pYg.js","assets/CompanyKPITable-lOTC9Azd.js","assets/fileToBase64-DBbj5r96.js","assets/flask-conical-OQsOTUdX.js","assets/trophy-CZLP0KKC.js","assets/useBuildDayAd-DKqeX1fx.js","assets/useSponsors-COha0OWH.js","assets/useStartupOutreach-DCOvgUJt.js","assets/target-De-fDtUY.js","assets/mail-question-DWpZ5u2I.js","assets/handshake-DWejDN6F.js","assets/banknote-DqXFxYLR.js","assets/AdminAssistant-B92xZZHx.js","assets/notebook-pen-CZJHfDnb.js","assets/database-B1dOONcq.js","assets/globe-DSfMvcLA.js","assets/MailboxView-CiVl8jVS.js","assets/RichMessageField-Dv2WcD1b.js","assets/sheet-BHx0-Wtl.js","assets/graduation-cap-qtvYT-O5.js","assets/thumbs-up-DLga2DBg.js","assets/thumbs-down-DdXpbLj0.js","assets/folder-ODYl1B4l.js","assets/list-checks-DRMEhNgT.js","assets/mail-open-DC_NINcO.js","assets/NotesWorkspace-CXZkci_g.js"])))=>i.map(i=>d[i]); 2import{e as ee,Q as te,P as ae,V as ne,W as se,d as v,Y as R,l as ie,Z as T,s as l,j as i,_ as M,r as O,$ as re,a0 as h,h as E,t as oe,z as S,a1 as j,b as ce,J as de,a2 as le,S as ue,N as pe,a3 as me,F as _e}from"./index-BghHNOje.js";import{B as K}from"./badge-BCCCWQE0.js";import{L as ge}from"./loader-circle-B8iw8PN7.js";/** 3 * @license lucide-react v0.462.0 - ISC 4 * 5 * This source code is licensed under the ISC license. 6 * See the LICENSE file in the root directory of this source tree. 7 */const fe=ee("ChartColumn",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]);var he=class extends te{constructor(t,n){super(t,n)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(t){t._type="infinite",super.setOptions(t)}getOptimisticResult(t){return t._type="infinite",super.getOptimisticResult(t)}
7fetchNextPage(t){return this.fetch({...t,meta:{fetchMore:{direction:"forward"}}})}fetchPreviousPage(t){return this.fetch({...t,meta:{fetchMore:{direction:"backward"}}})}createResult(t,n){var w,k;const{state:a}=t,s=super.createResult(t,n),{isFetching:o,isRefetching:d,isError:c,isRefetchError:e}=s,r=(k=(w=a.fetchMeta)==null?void 0:w.fetchMore)==null?void 0:k.direction,m=c&&r==="forward",g=o&&r==="forward",A=c&&r==="backward",y=o&&r==="backward";return{...s,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:ne(n,a.data),hasPreviousPage:ae(n,a.data),isFetchNextPageError:m,isFetchingNextPage:g,isFetchPreviousPageError:A,isFetchingPreviousPage:y,isRefetchError:e&&!m&&!A,isRefetching:d&&!g&&!y}}};function V(t,n){return se(t,he)}const Y={teams:"Teams",read_ai:"Read.ai call",mailbox:"Outlook",linkedin:"LinkedIn",support:"Support",contact:"Contact form",meeting_note:"Meeting note",sent_mail:"Sent email",calendar:"Calendar",free_text:"Survey / feedback",internal_comment:"Internal comment",intro_ideas:"Intro idea"},lt={milestone:"Milestone",risk:"Risk",ask_offer:"Ask / offer",event_community:"Event / community",commitment:"Commitment",intro_idea:"Intro idea"},be={dev_log:"Development Log",startup_pipeline:"Startup pipeline note",sponsor_pipeline:"Sponsor pipeline note",planner_task:"Planner task",meeting_note:"Meeting note"},H=["signal-inbox"],ut=()=>v({queryKey:H,queryFn:async()=>{const{data:t,error:n}=await l.from("signal_inbox").select("*").order("occurred_at",{ascending:!1}).limit(1e3);if(n)throw n;return t??[]}}),ve=()=>v({queryKey:["signal-inbox-open-count"],queryFn:async()=>{const{count:t,error:n}=await l.from("signal_inbox").select("id",{count:"exact",head:!0}).eq("status","proposed");if(n)throw n;return t??0},refetchInterval:300*1e3}),ye=(t,n)=>`[${(t.occurred_at??t.created_at).slice(0,10)} · ${Y[t.source_kind]??t.source_kind}] ${n}`;async function we(t,n,a){const{data:s,error:o}=await l.from(t).select("notes").eq("id",n).single();if(o)throw o;const c={notes:[s==null?void 0:s.notes,a].filter(Boolean).join(` 8 9`)};t==="sponsor_prospects"&&(c.last_contact_at=new Date().toISOString());const{error:e}=await l.from(t).update(c).eq("id",n);if(e)throw e}const pt=()=>{const t=R(),{toast:n}=ie(),a=()=>{t.invalidateQueries({queryKey:H}),t.invalidateQueries({queryKey:["signal-inbox-open-count"]})},s=e=>n({title:"Could not save",description:e.message,variant:"destructive"}),o=T({mutationFn:async({item:e,route:r})=>{var k,C,L,u,b,x;const{data:m}=await l.auth.getUser(),g=e.evidence_quote?` 10 11"${e.evidence_quote}"`:"",A=` 12 13Source: ${e.source_label??Y[e.source_kind]??e.source_kind}`;let y=null;if(r==="dev_log"){if(e.target_type!=="company"||!e.target_id)throw new Error("Assign a member company first.");const{data:p,error:f}=await l.from("company_development_logs").insert({company_id:e.target_id,logged_at:e.occurred_at??e.created_at,category:e.signal_type==="risk"?"Risk":e.source_kind==="read_ai"?"Meeting":"Milestone",title:e.summary.slice(0,200),description:`${e.evidence_quote??""}${A}`.trim(),created_by:((k=m.user)==null?void 0:k.id)??null}).select("id").single();if(f)throw f;y=p.id}else if(r==="startup_pipeline"||r==="sponsor_pipeline"){const p=r==="startup_pipeline"?"startup_prospect":"sponsor_prospect";if(e.target_type!==p||!e.target_id)throw new Error("This signal is not linked to a matching pipeline entry.");await we(r==="startup_pipeline"?"startup_prospects":"sponsor_prospects",e.target_id,ye(e,e.summary+g)),y=e.target_id}else if(r==="planner_task"){const{data:p,error:f}=await l.functions.invoke("ms365-task",{body:{action:"create",title:((C=e.proposed_task)==null?void 0:C.title)??e.summary.slice(0,200),description:`${e.summary}${g}${A}`,due_date:((L=e.proposed_task)==null?void 0:L.due_date)??null}});if(f)throw f;y=(p==null?void 0:p.task_id)??null}else{const{data:p,error:f}=await l.from("meeting_notes").insert({title:e.summary.slice(0,200),body:`${e.evidence_quote??""}${A}`.trim(),note_date:(e.occurred_at??e.created_at).slice(0,10),tags:["signal",e.source_kind,e.signal_type],source:"typed",company_id:e.target_type==="company"?e.target_id:null,author_id:((u=m.user)==null?void 0:u.id)??null,author_email:((b=m.user)==null?void 0:b.email)??null}).select("id").single();if(f)throw f;y=p.id}const{error:w}=await l.from("signal_inbox").update({status:"accepted",filed_ref:y,proposed_route:r,accepted_by:((x=m.user)==null?void 0:x.id)??null,accepted_at:new Date().toISOString()}).eq("id",e.id);if(w)throw w},onSuccess:(e,r)=>{a(),t.invalidateQueries({queryKey:["meeting-notes"]}),n({title:`Filed as ${be[r.route]}`})},onError:s}),d=T({mutationFn:async e=>{const{error:r}=await l.from("signal_inbox").update({status:"dismissed"}).eq("id",e);if(r)throw r},onSuccess:()=>{a(),n({title:"Dismissed"})},onError:s}),c=T({mutationFn:async({id:e,target:r})=>{const m=r?r.type==="company"?"dev_log":r.type==="startup_prospect"?"startup_pipeline":"sponsor_pipeline":"assign",{error:g}=await l.from("signal_inbox").update({target_type:(r==null?void 0:r.type)??null,target_id:(r==null?void 0:r.id)??null,target_label:(r==null?void 0:r.label)??null,proposed_route:m}).eq("id",e);if(g)throw g},onSuccess:a,onError:s});return{accept:o,dismiss:d,assign:c}},mt=()=>v({queryKey:["signal-targets"],queryFn:async()=>{const[t,n,a]=await Promise.all([l.from("companies").select("id, name").eq("is_active",!0).order("name").limit(1e3),l.from("startup_prospects").select("id, legal_name, trading_name").limit(1e3),l.from("sponsor_prospects").select("id, company, person_name").limit(1e3)]);return[...(t.data??[]).map(s=>({type:"company",id:s.id,label:s.name,group:"Member startups"})),...(n.data??[]).map(s=>({type:"startup_prospect",id:s.id,label:s.trading_name||s.legal_name,group:"Startup pipeline"})),...(a.data??[]).map(s=>({type:"sponsor_prospect",id:s.id,label:s.company||s.person_name,group:"Sponsors"}))]},staleTime:300*1e3}),_t=()=>{const t=R(),n=v({queryKey:["read-ai-settings"],queryFn:async()=>{const{data:o}=await l.from("read_ai_settings").select("token_hint, last_received_at").eq("id",1).maybeSingle();return o}}),a=v({queryKey:["read-ai-calls"],queryFn:async()=>{const{data:o,error:d}=await l.from("read_ai_calls").select("id, title, started_at, created_at, status, signals_created, is_internal, error").order("created_at",{ascending:!1}).limit(50);if(d)throw d;return o??[]}}),s=T({mutationFn:async()=>{const{data:o,error:d}=await l.functions.invoke("read-ai-webhook",{body:{action:"rotate"}});if(d)throw d;return o.webhook_url},onSuccess:()=>
13t.invalidateQueries({queryKey:["read-ai-settings"]})});return{settings:n,calls:a,rotate:s}},xe=()=>v({queryKey:["pending-approvals-count"],queryFn:async()=>{const{count:t}=await l.from("profiles").select("id",{count:"exact",head:!0}).eq("role","pending").eq("is_approved",!1);return t||0},refetchInterval:3e4}),Se=(t,n)=>{if(t.status==="done")return!1;const a=n??t.organization_id??null;return!(a&&t.author_urn&&t.author_urn.includes(a))},je=(t,n)=>t.filter(a=>Se(a,n)).length,Ae=(t,n,a)=>{const s=je(t,a);return{repliesNeeded:s,pendingMentions:n,totalOpenActions:s+n}},ke=t=>v({queryKey:["linkedin-open-engagements",t??"default"],queryFn:async()=>{var e;let n=t??null;if(!n){const{data:r,error:m}=await l.from("linkedin_pages").select("organization_id").eq("is_active",!0).order("is_default",{ascending:!1}).limit(1);if(m)throw m;n=((e=r==null?void 0:r[0])==null?void 0:e.organization_id)??null}if(!n)return 0;const a=l.from("linkedin_comment_state").select("organization_id, author_urn, status").eq("organization_id",n).neq("status","done").limit(1e3),s=l.from("linkedin_mentions").select("id",{count:"exact",head:!0}).eq("organization_id",n).eq("status","pending"),[{data:o,error:d},c]=await Promise.all([a,s]);if(d)throw d;return Ae(o??[],(c==null?void 0:c.count)??0,n).totalOpenActions},refetchInterval:5*6e4,staleTime:6e4}),Ee="Europe/Zurich";function z(t){const n=new Intl.DateTimeFormat("en-US",{timeZone:Ee,hour12:!1,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}).formatToParts(t),a=o=>{var d;return Number(((d=n.find(c=>c.type===o))==null?void 0:d.value)??"0")},s=Date.UTC(a("year"),a("month")-1,a("day"),a("hour")%24,a("minute"),a("second"));return Math.round((s-t.getTime())/6e4)}function qe(t){if(!t.event_date)return null;const[n,a,s]=t.event_date.slice(0,10).split("-").map(Number);if(!n||!a||!s)return null;const[o,d]=(t.event_start_time||"09:00").slice(0,5).split(":").map(Number),c=Date.UTC(n,a-1,s,o||0,d||0);let e=z(new Date(c));return e=z(new Date(c-e*6e4)),c-e*6e4}function Pe(t,n=Date.now()){const a=qe(t);return a===null?null:Math.round((a-n)/36e5)}const Ne=()=>v({queryKey:["pending-event-actions-count"],queryFn:async()=>{const{data:t}=await l.from("events").select("id, event_date, event_start_time").in("status",["planned","active"]);if(!t||t.length===0)return{total:0,staleCount:0,attendeeCount:0};const n=t.map(u=>u.id),a=new Date().toISOString().split("T")[0],[s,o,d]=await Promise.all([l.from("event_attendees").select("event_id").in("attendance_status",["added","pending","invited"]).is("invitation_sent_at",null).is("registration_id",null).in("event_id",n),l.from("event_registrations").select("event_id, event_attendees!inner(attendance_status)").eq("registration_status","verified").in("event_id",n).not("event_attendees.attendance_status","in","(declined,confirmed,attending,waitlisted)"),l.from("events").select("id").in("status",["planned","active"]).lt("event_date",a)]),c=new Set;for(const u of s.data||[])c.add(u.event_id);for(const u of o.data||[])c.add(u.event_id);const e=new Set((d.data||[]).map(u=>u.id)),r=new Date;r.setHours(0,0,0,0);const m=1e3*60*60*24,g=t.filter(u=>{if(!u.event_date)return!1;const[b,x,p]=u.event_date.slice(0,10).split("-").map(Number),f=new Date(b,(x||1)-1,p||1);f.setHours(0,0,0,0);const _=Math.round((f.getTime()-r.getTime())/m);return _>=0&&_<=14});if(g.length>0){const u=g.map(_=>_.id),{data:b}=await l.from("event_attendees").select("event_id").eq("attendance_status","invited").not("invitation_sent_at","is",null).in("event_id",u),x={};for(const _ of b||[])x[_.event_id]=(x[_.event_id]||0)+1;const{data:p}=await l.from("event_reminder_sends").select("event_id, reminder_sequence, delivered_count").in("event_id",u),f={};for(const _ of p||[])(_.delivered_count??0)>0&&(f[_.event_id]||(f[_.event_id]=new Set),f[_.event_id].add(_.reminder_sequence));for(const _ of g){if((x[_.id]||0)===0)continue;const[Z,J,X]=_.event_date.slice(0,10).split("-").map(Number),D=new Date(Z,(J||1)-1,X||1);D.setHours(0,0,0,0);const I=Math.round((D.getTime()-r.getTime())/m),F=f[_.id]||new Set;(I<=14&&!F.has(1)||I<=7&&!F.has(2))&&c.add(_.id)}}
13const[A,y]=await Promise.all([l.from("event_waitlist_entries").select("event_id").in("event_id",n).in("status",["waiting","offered"]),l.from("event_option_waitlist_entries").select("event_id").in("event_id",n).in("status",["waiting","offered"])]);for(const u of[...A.data||[],...y.data||[]])c.add(u.event_id);const w=t.filter(u=>{const b=Pe(u);return b!==null&&b>=0&&b<=48}).map(u=>u.id);if(w.length>0){const[u,b]=await Promise.all([l.from("event_broadcast_sends").select("event_id").in("event_id",w).gt("recipient_count",0),l.from("event_final_info_alerts").select("event_id").in("event_id",w).not("dismissed_at","is",null)]),x=new Set([...(u.data||[]).map(p=>p.event_id),...(b.data||[]).map(p=>p.event_id)]);for(const p of w)x.has(p)||c.add(p)}const k=new Set([...c,...e]),C=c.size,L=e.size;return{total:k.size,staleCount:L,attendeeCount:C}},refetchInterval:3e4}),Te=t=>t.replace(/[(),\\]/g," ").replace(/\s+/g," ").trim(),gt=t=>t.order("created_at",{ascending:!1}).order("id",{ascending:!1}),ft=(t,n)=>n?t.or(`created_at.lt.${n.created_at},and(created_at.eq.${n.created_at},id.lt.${n.id})`):t,ht=(t,n)=>{const a=t[t.length-1];return{rows:t,nextCursor:t.length===n&&a?{created_at:a.created_at,id:a.id}:null}};function bt({queryKey:t,fetchPage:n,refetchInterval:a,enabled:s=!0}){var c;const o=V({queryKey:t,enabled:s,refetchInterval:a,initialPageParam:null,queryFn:({pageParam:e})=>n(e),getNextPageParam:e=>e.nextCursor??void 0}),d=(((c=o.data)==null?void 0:c.pages)??[]).flatMap(e=>e.rows);return{...o,rows:d}}const Ce=[{value:"new",label:"New"},{value:"in_review",label:"In review"},{value:"replied",label:"Replied"},{value:"qualified",label:"Qualified"},{value:"won",label:"Won"},{value:"declined",label:"Declined"}],Le={new:{badge:"border-blue-200 bg-blue-50 text-blue-700 dark:border-blue-900 dark:bg-blue-950 dark:text-blue-300",dot:"bg-blue-500"},in_review:{badge:"border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-900 dark:bg-amber-950 dark:text-amber-300",dot:"bg-amber-500"},replied:{badge:"border-indigo-200 bg-indigo-50 text-indigo-700 dark:border-indigo-900 dark:bg-indigo-950 dark:text-indigo-300",dot:"bg-indigo-500"},qualified:{badge:"border-violet-200 bg-violet-50 text-violet-700 dark:border-violet-900 dark:bg-violet-950 dark:text-violet-300",dot:"bg-violet-500"},won:{badge:"border-green-200 bg-green-50 text-green-700 dark:border-green-900 dark:bg-green-950 dark:text-green-300",dot:"bg-green-500"},declined:{badge:"border-red-200 bg-red-50 text-red-700 dark:border-red-900 dark:bg-red-950 dark:text-red-300",dot:"bg-red-500"}},Re={badge:"border-slate-200 bg-slate-100 text-slate-600 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-300",dot:"bg-slate-400"},vt=t=>Le[t]??Re,yt=t=>{var n;return((n=Ce.find(a=>a.value===t))==null?void 0:n.label)??t},Oe=t=>{const n=[t.source_page,t.source_section,t.source_cta,t.message].filter(Boolean).join(" ").toLowerCase();return/nordic gateway/.test(n)?!0:/registration form|register interest|event registration/.test(n)},De=50,Ie=async(t,n,a=De)=>{let s=l.from("contact_submissions").select("*").order("created_at",{ascending:!1}).order("id",{ascending:!1}).limit(a);t.includeSpam||(s=s.eq("is_spam",!1)),t.status&&t.status!=="all"&&(s=s.eq("status",t.status));const o=Te(t.search||"");o&&(s=s.or(`name.ilike.*${o}*,email.ilike.*${o}*,company.ilike.*${o}*,message.ilike.*${o}*`)),n&&(s=s.or(`created_at.lt.${n.created_at},and(created_at.eq.${n.created_at},id.lt.${n.id})`));const{data:d,error:c}=await s;if(c)throw c;const e=d||[],r=e[e.length-1];return{rows:e,nextCursor:e.length===a&&r?{created_at:r.created_at,id:r.id}:null}},wt=t=>V({queryKey:["contact-leads",t.includeSpam,t.status,t.search],initialPageParam:null,queryFn:({pageParam:n})=>Ie(t,n),getNextPageParam:n=>n.nextCursor??void 0}),xt=()=>v({queryKey:["contact-lead-stats"],queryFn:async()=>{const{data:t,error:n}=await l.rpc("get_contact_lead_stats");if(n)throw n;const a=(Array.isArray(t)?t[0]:t)??{},s=Number(a.total_all??0),o=Number(a.spam_count??0),d=Number(a.handled_count??0),c=Number(a.won_count??0);return{totalAll:s,spamCount:o,spamShare:s?o/s*100:0,totalThisYear:Number(a.total_this_year??0),openCount:Number(a.open_count??0),wonCount:c,handledCount:d,conversionRate:d?c/d*100:0,medianResponseHours:a.avg_response_hours==null?null:Number(a.avg_response_hours),responseSampleSize:Number(a.response_sample_size??0)}}}),St=()=>{const t=R();return T({mutationFn:async({id:n,updates:a})=>{const{error:s}=await l.from("contact_submissions").update(a).eq("id",n);if(s)throw s},onSuccess:()=>{t.invalidateQueries({queryKey:["contact-leads"]}),t.invalidateQueries({queryKey:["new-contact-leads-count"]}),t.invalidateQueries({queryKey:["contact-lead-stats"]})}})},jt=()=>{const t=R();return T({mutationFn:async({id:n,isSpam:a,reason:s})=>{const{error:o}=await l.from("contact_submissions").update({is_spam:a,spam_reason:a&&(s==null?void 0:s.trim())||null}).eq("id",n);if(o)throw o},onSuccess:()=>{t.invalidateQueries({queryKey:["contact-leads"]}),t.invalidateQueries({queryKey:["new-contact-leads-count"]}),t.invalidateQueries({queryKey:["contact-lead-stats"]})}})},At={vci:"VCI",join:"Join",onboarding:"Onboarding",poc:"PoC",sfn:"SFN",leads:"Lead"},W=[{value:"new",label:"New"},{value:"in_review",label:"In review"},{value:"awaiting_info",label:"Awaiting info"},{value:"approved",label:"Approved"},{value:"rejected",label:"Rejected"}],kt=t=>{var n;return((n=W.find(a=>a.value===t))==null?void 0:n.label)||t},Et={new:"bg-blue-100 text-blue-800",in_review:"bg-amber-100 text-amber-800",awaiting_info:"bg-purple-100 text-purple-800",approved:"bg-green-100 text-green-800",rejected:"bg-red-100 text-red-800"},q=t=>(t||"").replace(/_/g," ").replace(/^./,n=>n.toUpperCase()),P=(t,n)=>{const a=(n||"").toLowerCase();if(a.includes("reject")||a==="declined")return"rejected";switch(t){case"vci":return a==="approved"?"approved":"new";case"join":return a==="submitted"?"new":a==="in_review"?"in_review":a==="info_requested"?"awaiting_info":a==="approved"?"approved":"in_review";case"onboarding":return a==="invited"||a==="draft"?"awaiting_info":a==="submitted"?"new":a==="completed"||a==="exported"?"approved":"in_review";case"poc":return a==="draft"?"awaiting_info":a==="submitted"?"new":a==="under_review"?"in_review":a==="approved"||a==="completed"?"approved":"in_review";case"leads":return a==="new"?"new":a==="won"?"approved":a==="declined"?"rejected":"in_review";case"sfn":return a==="submitted"?"new":a.startsWith("pending_")||a==="replacement_pending_board_approval"||a==="on_hold"?"in_review":a==="awaiting_wet_signature"||a==="awaiting_bank_details"||a==="bank_details_submitted"?"awaiting_info":a==="application_approved"||a==="fully_signed"||a==="paid_out"||a==="accepted"?"approved":"in_review";default:return"in_review"}},Fe=["new","in_review","awaiting_info"],Me=t=>Fe.includes(t),Ke=["e2e test","do not delete","test ag","dummy"],ze=["pending_aldo_approval","pending_christian_approval","pending_patrick_approval","replacement_pending_board_approval","bank_details_submitted"],G=t=>{const n=(t.rawStatus||"").toLowerCase(),a=(t.title||"").toLowerCase();if(Ke.some(s=>a.includes(s)))return!1;switch(t.type){case"join":return n==="submitted";case"vci":return n==="pending";case"poc":return n==="submitted";case"onboarding":return n==="submitted";case"sfn":return ze.includes(n);case"leads":return n==="new";default:return!1}},$e=t=>Math.max(0,Math.floor((Date.now()-new Date(t).getTime())/864e5)),N=l,Be=()=>v({queryKey:["all-applications"],refetchInterval:6e4,queryFn:async()=>{const[t,n,a,s,o,d]=await Promise.all([N.from("vci_applications").select("id, first_name, last_name, email, company, status, created_at, reviewed_at"),N.from("tpl_applications").select("id, company_name, primary_signatory_name, primary_signatory_email, sector, status, created_at, decided_at"),N.from("tenant_onboarding_forms").select("id, firmenname, tenant_first_name, tenant_last_name, tenant_email, email, status, created_at, submitted_at"),N.from("poc_applications").select("id, startup_name, poc_title, contact_name, contact_email, status, created_at, submitted_at, reviewed_at"),N.from("sfn_applications").select("id, company, first_name, last_name, email, status, created_at, submitted_at"),N.from("contact_submissions").select("id, name, email, company, message, status, source_page, source_section, source_cta, handled_at, created_at").eq("is_spam",!1)]),c=[];
13return(t.data||[]).forEach(e=>c.push({id:e.id,type:"vci",title:[e.first_name,e.last_name].filter(Boolean).join(" ")||e.email,subtitle:e.company||"Venture Club Innerschweiz",email:e.email,createdAt:e.created_at,decidedAt:e.reviewed_at,rawStatus:e.status,rawStatusLabel:q(e.status),stage:P("vci",e.status)})),(n.data||[]).forEach(e=>c.push({id:e.id,type:"join",title:e.company_name,subtitle:[e.primary_signatory_name,e.sector].filter(Boolean).join(" · "),email:e.primary_signatory_email,createdAt:e.created_at,decidedAt:e.decided_at,rawStatus:e.status,rawStatusLabel:q(e.status),stage:P("join",e.status)})),(a.data||[]).forEach(e=>c.push({id:e.id,type:"onboarding",title:e.firmenname||"Tenant onboarding",subtitle:[e.tenant_first_name,e.tenant_last_name].filter(Boolean).join(" ")||"Onboarding form",email:e.tenant_email||e.email,createdAt:e.created_at,decidedAt:e.submitted_at,rawStatus:e.status,rawStatusLabel:q(e.status),stage:P("onboarding",e.status)})),(s.data||[]).forEach(e=>c.push({id:e.id,type:"poc",title:e.startup_name||"PoC application",subtitle:e.poc_title||e.contact_name||"",email:e.contact_email,createdAt:e.submitted_at||e.created_at,decidedAt:e.reviewed_at,rawStatus:e.status,rawStatusLabel:q(e.status),stage:P("poc",e.status)})),(o.data||[]).forEach(e=>c.push({id:e.id,type:"sfn",title:e.company||"SFN loan",subtitle:[e.first_name,e.last_name].filter(Boolean).join(" "),email:e.email,createdAt:e.submitted_at||e.created_at,decidedAt:null,rawStatus:e.status,rawStatusLabel:q(e.status),stage:P("sfn",e.status)})),(d.data||[]).filter(e=>
13!Oe(e)).forEach(e=>c.push({id:e.id,type:"leads",title:e.name||e.email,subtitle:e.company||e.source_page||"Contact form",email:e.email,createdAt:e.created_at,decidedAt:e.handled_at,rawStatus:e.status,rawStatusLabel:q(e.status),stage:P("leads",e.status)})),c.filter(e=>!!e.createdAt).sort((e,r)=>+new Date(r.createdAt)-+new Date(e.createdAt))}}),Ue=()=>{const{data:t}=Be();return(t||[]).filter(G).length},qt=t=>{const n=new Date().getFullYear(),a=t.filter(e=>e.stage==="approved"||e.stage==="rejected"),s=a.filter(e=>e.stage==="approved"),o=a.filter(e=>e.decidedAt),d=t.filter(e=>Me(e.stage)),c=W.reduce((e,r)=>(e[r.value]=t.filter(m=>m.stage===r.value).length,e),{});return{thisYear:t.filter(e=>new Date(e.createdAt).getFullYear()===n).length,open:d.length,actionRequired:t.filter(G).length,approvalRate:a.length?s.length/a.length*100:null,avgDecisionDays:o.length?o.reduce((e,r)=>e+(+new Date(r.decidedAt)-+new Date(r.createdAt))/864e5,0)/o.length:null,oldestPendingDays:d.length?Math.max(...d.map(e=>$e(e.createdAt))):null,byStage:c}};function Qe(){return v({queryKey:["open-onboarding-scan"],queryFn:async()=>{const{data:t,error:n}=await l.functions.invoke("tpl-onboarding-run",{body:{mode:"scan"}});if(n)throw n;return(t==null?void 0:t.applications)||[]},staleTime:300*1e3,refetchOnWindowFocus:!1})}function Pt(t){const n=t||[],a=n.reduce((s,o)=>o.waiting_days!=null&&(s==null||o.waiting_days>s)?o.waiting_days:s,null);return{count:n.length,oldestDays:a}}const Ve=S.lazy(()=>j(()=>import("./ContentManagement-DMQk1OP_.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91]))),Ye=S.lazy(()=>j(()=>import("./EventsCommunity-CiRFISp5.js"),__vite__mapDeps([92,1,2,3,4,17,40,11,10,8,12,13,7,57,6,5,9,14,15,16,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,41,42,93,94,95,50,48,58,84,47,65,96,97,56,85,78,98,53,54,55,43,99,87,100,101,102,103,64,104,105,59,106,107,108,109,61,72,110,68,111,82,112,113,114,63,115,116,117,79,80,91]))),He=S.lazy(()=>j(()=>import("./ContactsManagement-6gkQ0oBj.js"),__vite__mapDeps([118,1,2,3,4,17,119,6,7,8,26,57,11,12,79,80,38,15,66,72,120,41,121,122,104,107,34,63,64,13,40,85,10,9,75,76,48,58,23,35,25,20,99,87,100,123,84,24,124,110,116,59,19,18,27,125,115,126,46,50,91]))),We=S.lazy(()=>j(()=>import("./SystemAdministration-Bjv5YQN7.js"),__vite__mapDeps([127,1,2,3,4,91,6,7,8,128,129,130,131,17,132,54,19,22,68,18,97,115,10,11,12,13,64,116,63,15,26,133,134,50,35,25,48,111,100,16,20,40,24,135,73,47]))),Ge=S.lazy(()=>j(()=>import("./AdminOutreach-B_jjJMXI.js"),__vite__mapDeps([136,1,2,15]))),Ze=S.lazy(()=>j(()=>import("./AdminAnalytics-DhvHbfuF.js").then(t=>t.a),__vite__mapDeps([137,1,2,17,16,18,19,20,15,23,36,21,24,45,33,138,44,10,8,11,12,13,139,61,109,87,140,64,9,57,99,4,100,141,69,7,26,80,38,85,34,113,63,123,84,68,50,25,114,124,142,65,48,40,143,75,76,58,3,32,71,144,145,146,125,98,49,147,106,78,148,149,150,103,134,90]))),$=S.lazy(()=>j(()=>import("./AdminAssistant-B92xZZHx.js"),__vite__mapDeps([151,1,2,26,7,8,17,79,80,38,15,68,25,20,152,50,78,87,153,154,47]))),Je=S.lazy(()=>j(()=>import("./MailboxView-CiVl8jVS.js"),__vite__mapDeps([155,1,2,17,3,4,156,9,8,10,11,12,13,14,15,52,57,7,41,26,89,157,75,76,48,58,85,49,154,153,23,158,159,160,25,50,40,46,117,121,79,80,38,116,68,70,141,87,161,83,69,73,108,53,54,55,90,109,61,24,20,126,110,59,88,125,162,47,29,148,163,35]))),Xe=S.lazy(()=>j(()=>import("./NotesWorkspace-CXZkci_g.js"),__vite__mapDeps([164,1,2,3,4,17,64,71,10,8,11,12,13,63,7,26,57,80,38,15,20,29,50,25,68,152,99,87,100,157,75,76,48,58,30,122,40,23,22]))),B={pipeline:"applications",applications:"applications",leads:"applications","join-applications":"applications","sfn-apps":"applications","poc-apps":"applications","vci-applications":"applications",feedback:"mrs",trs:"mrs",surveys:"mrs",security:"security",finance:"stripe",stripe:"stripe",costs:"costs","cta-ab":"cta"},U={pipeline:"leads",applications:"leads",leads:"leads","join-applications":"join","sfn-apps":"sfn","poc-apps":"poc","vci-applications":"vci"},Q={subscribers:"/admin/contacts","user-management":"/admin/contacts",tags:"/admin/contacts",companies:"/admin/system",startups:"/admin/system",entities:"/admin/system",sponsors:"/admin/outreach/sponsors","startup-outreach":"/admin/outreach/startups",startupOutreach:"/admin/outreach/startups",outreach:"/admin/outreach",inbox:"/admin/inbox",ideas:"/admin/system",homepage:"/admin/system",brand:"/admin/system",competition:"/admin/system"},et={content:"/admin/content",events:"/admin/events",contacts:"/admin/contacts",sponsors:"/admin/outreach/sponsors","startup-outreach":"/admin/outreach/startups",startupOutreach:"/admin/outreach/startups",outreach:"/admin/outreach",inbox:"/admin/inbox",system:"/admin/system",analytics:"/admin/analytics",assistant:"/admin/assistant"},tt=()=>{const[t]=oe(),n=t.get("tab"),a=t.get("sub");if(!n&&!a)return i.jsx(E,{to:"content",replace:!0});const s=new URLSearchParams(t);s.delete("tab");let o;a&&B[a]?(s.delete("sub"),s.set("card",B[a]),U[a]&&!s.get("app")&&s.set("app",U[a]),o="/admin/analytics"):a&&Q[a]?o=Q[a]:o=n&&et[n]||"/admin/content";const d=s.toString();return i.jsx(E,{to:d?`${o}?${d}`:o,replace:!0})},at=()=>i.jsx("div",{className:"flex items-center justify-center py-20",children:i.jsx(ge,{className:"h-8 w-8 animate-spin text-muted-foreground"})}),nt=[{to:"/admin/content",label:"Content",badgeKey:"content"},{to:"/admin/events",label:"Events",badgeKey:"events"},{to:"/admin/contacts",label:"Contacts",badgeKey:"contacts"},{to:"/admin/outreach",label:"Outreach"},{to:"/admin/inbox",label:"Inbox"},{to:"/admin/notes",label:"Notes",badgeKey:"notes"},{to:"/admin/system",label:"System"},{to:"/admin/assistant",label:"Assistant"}],st=()=>{const{data:t}=xe(),{data:n}=Ne(),a=Ue(),{data:s}=Qe(),{data:o}=ke(),{data:d}=ve(),c=r=>r==="notes"?d||0:r==="content"?o||0:r==="events"?(n==null?void 0:n.total)||0:r==="contacts"?t||0:r==="applications"?a:r==="analytics"?a+((s==null?void 0:s.length)||0):0,e=({isActive:r})=>`inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 ${r?"bg-background text-foreground shadow-sm":"hover:bg-background/50 hover:text-foreground"}`;return i.jsxs("div",{className:"min-w-0 space-y-6",children:[i.jsx("div",{className:"-mx-4 overflow-x-auto px-4 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden sm:mx-0 sm:px-0",children:i.jsxs("div",{className:"flex min-w-max flex-nowrap items-center gap-2",children:[i.jsx("div",{className:"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",children:nt.map(({to:r,label:m,badgeKey:g})=>i.jsxs(M,{to:r,className:e,children:[m,g&&c(g)>0&&i.jsx(K,{variant:"destructive",className:"ml-1.5 h-5 min-w-5 px-1 text-[10px] rounded-full flex items-center justify-center",children:c(g)})]},r))}),i.jsx("div",{className:"inline-flex h-10 items-center justify-center rounded-md bg-primary/10 p-1 ring-1 ring-primary/20",children:i.jsxs(M,{to:"/admin/analytics",className:({isActive:r})=>`inline-flex items-center gap-1.5 whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-semibold ring-offset-background transition-all ${r?"bg-primary text-primary-foreground shadow-sm":"text-primary hover:bg-primary/15"}`,children:[i.jsx(fe,{className:"h-4 w-4"}),"Analytics",c("analytics")>0&&i.jsx(K,{variant:"destructive",className:"ml-1.5 h-5 min-w-5 px-1 text-[10px] rounded-full flex items-center justify-center",children:c("analytics")})]})})]})}),i.jsx(O.Suspense,{fallback:i.jsx(at,{}),children:i.jsxs(re,{children:[i.jsx(h,{index:!0,element:i.jsx(tt,{})}),i.jsx(h,{path:"content",element:i.jsx(Ve,{})}),i.jsx(h,{path:"events",element:i.jsx(Ye,{})}),i.jsx(h,{path:"contacts",element:i.jsx(He,{})}),i.jsx(h,{path:"inbox",element:i.jsx(Je,{})}),i.jsx(h,{path:"notes",element:i.jsx(Xe,{})}),i.jsx(h,{path:"system",element:i.jsx(We,{})}),i.jsx(h,{path:"intelligence",element:i.jsx(E,{to:"/admin/system?sub=compet
13ition",replace:!0})}),i.jsx(h,{path:"outreach/*",element:i.jsx(Ge,{})}),i.jsx(h,{path:"analytics",element:i.jsx(Ze,{})}),i.jsx(h,{path:"ads",element:i.jsx(E,{to:"/admin/system?sub=ads",replace:!0})}),i.jsx(h,{path:"assistant",element:i.jsx($,{})}),i.jsx(h,{path:"assistant/:threadId",element:i.jsx($,{})}),i.jsx(h,{path:"*",element:i.jsx(E,{to:"/admin/content",replace:!0})})]})})]})},it=()=>{const{user:t,userRole:n,loading:a,session:s}=ce(),o=de(),d=O.useRef(!1);return O.useEffect(()=>{t&&n==="admin"&&!d.current&&(d.current=!0,le.logAdminAccess(t.email||"unknown","admin_dashboard_visit"))},[t,n]),a?i.jsx("div",{className:"min-h-screen bg-gradient-to-br from-slate-50 via-blue-50 to-indigo-50 flex items-center justify-center",children:i.jsxs("div",{className:"text-center",children:[i.jsx("div",{className:"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600 mx-auto mb-4"}),i.jsx("p",{className:"text-gray-600",children:"Loading admin dashboard..."})]})}):!s||!t?i.jsx(E,{to:"/auth",replace:!0,state:{from:o.pathname+o.search}}):n!=="admin"?i.jsx(E,{to:"/auth",replace:!0,state:{from:o.pathname+o.search}}):i.jsxs(i.Fragment,{children:[i.jsx(ue,{title:"Admin Dashboard - Technopark Luzern",description:"Manage content, newsletters, RSS feeds, and SEO optimization for Technopark Luzern.",canonicalUrl:"https://technopark-luzern.ch/admin"}),i.jsxs("div",{className:"min-h-screen overflow-x-hidden bg-gradient-to-br from-slate-50 via-blue-50 to-indigo-50",children:[i.jsx(pe,{}),i.jsx("main",{className:"pt-32 pb-20",children:i.jsxs("div",{className:"max-w-7xl mx-auto min-w-0 px-4 sm:px-6 lg:px-8",children:[i.jsx("div",{className:"text-center mb-12",children:i.jsx("h1",{className:"text-4xl lg:text-6xl font-bold bg-gradient-to-r from-blue-600 via-purple-600 to-blue-800 bg-clip-text text-transparent mb-6",children:"Admin Dashboard"})}),i.jsx(me,{fallback:i.jsx("div",{className:"text-center py-12",children:i.jsxs("div",{className:"bg-red-50 border border-red-200 rounded-lg p-6 max-w-md mx-auto",children:[i.jsx("h3",{className:"text-lg font-semibold text-red-900 mb-2",children:"Loading Error"}),i.jsx("p",{className:"text-red-700 mb-4",children:"Something went wrong loading this section. Please refresh the page."}),i.jsx("button",{onClick:()=>window.location.reload(),className:"px-4 py-2 bg-red-600 text-white rounded-lg hover:bg-red-700 transition-colors",children:"Refresh"})]})}),children:i.jsx(st,{})})]})}),i.jsx(_e,{})]})]})},Nt=Object.freeze(Object.defineProperty({__proto__:null,default:it},Symbol.toStringTag,{value:"Module"}));export{At as A,St as B,fe as C,yt as D,vt as E,wt as F,xt as G,jt as H,Oe as I,Nt as J,Ce as L,be as R,W as S,lt as T,bt as a,ft as b,xe as c,Be as d,Te as e,qt as f,Ae as g,Pe as h,Se as i,Me as j,$e as k,Et as l,Qe as m,Pt as n,gt as o,Y as p,ut as q,G as r,kt as s,ht as t,ke as u,mt as v,pt as w,_t as x,ve as y,P as z};
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.