PageSourceSearch

https://topfoundersummit.com/_next/static/chunks/pages/admin/speakers-a74ef16e26e577f5.js

js topfoundersummit.com collected 2026-10-05 01:08:39 UTC 14,749 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3570],{3794:(e,a,t)=>{"use strict";t.r(a),t.d(a,{default:()=>v});var l=t(4458),o=t(4627),s=t(213),n=t(6087),r=t.n(n),i=t(6113),d=t.n(i),c=t(3168),m=t(7668),p=t(6176),h=t(4578);let u=(0,t(9845).A)("user-plus",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"19",x2:"19",y1:"8",y2:"14",key:"1bvyxn"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]]);var x=t(7560),b=t(237),g=t(3604),f=t(275),y=t.n(f),j=t(8658);let k={name:"",company:"",title:"",badge:"",companyUrl:"",companyLogo:"",companyLogoDark:"",detail:"",bio:"",linkedinUrl:"",photoUrl:"",headshotUrl:""},w=["CEO","INVESTOR","100M+ ARR","50M+ ARR","10M+ ARR","5M+ ARR","1M+ ARR"];function v(){return(0,l.jsx)(o.T,{title:"Speaker Pool",children:(0,l.jsx)(N,{})})}function N(){let{adminFetch:e,logout:a}=(0,o.b)(),[t,s]=(0,j.useState)([]),[n,i]=(0,j.useState)(""),[u,x]=(0,j.useState)(!1),b=(0,j.useCallback)(async(a,t)=>{x(!0);try{let l=await e("/api/admin/pool?q=".concat(encodeURIComponent(a)),{signal:t});if(!l.ok)return;let o=await l.json();o.speakers&&s(o.speakers)}catch(e){}finally{x(!1)}},[e]);function g(e){s(a=>a.map(a=>a.id===e.id?e:a))}function f(e){s(a=>a.filter(a=>a.id!==e))}return(0,j.useEffect)(()=>{let e=new AbortController,a=setTimeout(()=>b(n.trim(),e.signal),200);return()=>{e.abort(),clearTimeout(a)}},[n,b]),(0,l.jsxs)("div",{className:"".concat(r().variable," ").concat(d().variable," min-h-screen bg-[#f3f5f7]"),children:[(0,l.jsx)(c.g,{title:"Speaker Pool | The Top",description:"Manage the speaker pool.",canonical:"https://topfoundersummit.com/admin/speakers",noindex:!0,nofollow:!0}),(0,l.jsx)("header",{className:"border-b border-[#e5e9ec] bg-[#0F253B]",children:(0,l.jsxs)("div",{className:"mx-auto flex max-w-6xl items-center justify-between px-4 py-4 sm:px-6",children:[(0,l.jsxs)(y(),{href:"/admin",className:"flex items-center gap-3",children:[(0,l.jsx)("img",{src:"/ttf/the-top-logo.svg",alt:"The Top",className:"h-6 w-auto brightness-0 invert"}),(0,l.jsx)("span",{className:"font-[family-name:var(--font-heebo)] text-sm font-bold uppercase tracking-[0.2em] text-white",children:"Speaker Pool"})]}),(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)(y(),{href:"/admin",className:"hidden text-xs font-semibold uppercase tracking-wide text-white/70 hover:text-white sm:inline",children:"All tools"}),(0,l.jsxs)("button",{type:"button",onClick:a,className:"inline-flex items-center gap-1.5 rounded-md border border-white/20 px-3 py-1.5 text-xs font-semibold uppercase tracking-wide text-white/80 hover:bg-white/10",children:[(0,l.jsx)(m.A,{className:"h-3.5 w-3.5","aria-hidden":"true"}),"Sign out"]})]})]})}),(0,l.jsxs)("div",{className:"mx-auto max-w-6xl px-4 py-8 sm:px-6",children:[(0,l.jsxs)("p",{className:"mb-6 max-w-2xl text-sm text-[#5F6F7D]",children:["The pool is the shared list of every speaker. Add someone once here, then attach them to any event's date from"," ",(0,l.jsx)(y(),{href:"/admin",className:"font-semibold text-[#0F253B] underline",children:"the admin home"}),"."]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-6 lg:grid-cols-[360px_minmax(0,1fr)]",children:[(0,l.jsx)(F,{onCreated:function(e){s(a=>[e,...a.filter(a=>a.id!==e.id)])}}),(0,l.jsxs)("main",{className:"min-w-0 rounded-2xl border border-[#e5e9ec] bg-white p-4 shadow-sm sm:p-6",children:[(0,l.jsxs)("div",{className:"mb-5 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,l.jsxs)("h2",{className:"font-[family-name:var(--font-heebo)] text-base font-bold text-[#111]",children:["Speakers ",(0,l.jsxs)("span",{className:"text-[#A1ADB8]",children:["\xb7 ",t.length]})]}),(0,l.jsxs)("label",{className:"relative block sm:w-80",children:[(0,l.jsx)(p.A,{className:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-[#A1ADB8]"}),(0,l.jsx)("input",{type:"search",value:n,onChange:e=>i(e.target.value),placeholder:"Search name or company...",className:"h-10 w-full rounded-md border border-[#d5dbe0] bg-white py-2 pl-9 pr-9 text-sm text-[#111] shadow-sm outline-none focus:border-[#0F253B]"}),u&&(0,l.jsx)(h.A,{className:"absolute right-3 top-1/2 h-4 w-4 -translate-y-1/2 animate-spin text-[#A1ADB8]"})]})]}),(0,l.jsxs)("div",{className:"grid grid-cols-1 gap-3",children:[t.map(e=>(0,l.jsx)(C,{speaker:e,onUpdated:g,onDeleted:f},e.id)),0===t.length&&!u&&(0,l.jsx)("div",{className:"rounded-xl border border-dashed border-[#d5dbe0] px-4 py-8 text-center text-sm text-[#A1ADB8]",children:"No speakers in the pool yet."})]})]})]})]})]})}function F(e){let{onCreated:a}=e,{adminFetch:t}
1=(0,o.b)(),[s,n]=(0,j.useState)(k),[r,i]=(0,j.useState)(null),[d,c]=(0,j.useState)(null),[m,p]=(0,j.useState)(null),[h,x]=(0,j.useState)(!1),[b,g]=(0,j.useState)(null),f=!!(s.name.trim()&&s.company.trim())&&!h;async function y(){if(!f)return;x(!0),g(null);let e=new FormData;for(let[a,t]of Object.entries(s))"photoUrl"!==a&&e.set(a,t);r&&e.set("headshot",r),d&&e.set("logo",d),m&&e.set("logoDark",m);try{let o=await t("/api/admin/pool",{method:"POST",body:e}),s=await o.json();if(!o.ok||!s.speaker){var l;g(null!=(l=s.error)?l:"Failed to save speaker.");return}a(s.speaker),n(k),i(null),c(null),p(null)}catch(e){g("Network error — try again.")}finally{x(!1)}}return(0,l.jsxs)("aside",{className:"h-fit rounded-2xl border border-[#e5e9ec] bg-white p-4 shadow-sm sm:p-6",children:[(0,l.jsxs)("div",{className:"mb-5 flex items-center gap-3",children:[(0,l.jsx)("div",{className:"flex h-10 w-10 items-center justify-center rounded-xl bg-[#0F253B]/10 text-[#0F253B]",children:(0,l.jsx)(u,{className:"h-5 w-5","aria-hidden":"true"})}),(0,l.jsx)("h2",{className:"font-[family-name:var(--font-heebo)] text-base font-bold text-[#111]",children:"New speaker"})]}),(0,l.jsx)(B,{form:s,setForm:n,headshotFile:r,setHeadshotFile:i,logoFile:d,setLogoFile:c,logoDarkFile:m,setLogoDarkFile:p}),b&&(0,l.jsx)("p",{className:"mt-3 text-sm text-red-600",children:b}),(0,l.jsx)("button",{type:"button",onClick:y,disabled:!f,className:"mt-4 w-full rounded-md bg-[#0F253B] px-4 py-2.5 text-sm font-bold uppercase tracking-wide text-white transition-opacity hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-50",children:h?"Saving…":"Add to pool"})]})}function C(e){let{speaker:a,onUpdated:t,onDeleted:s}=e,{adminFetch:n}=(0,o.b)(),[r,i]=(0,j.useState)(!1),[d,c]=(0,j.useState)(!1);async function m(){if(confirm("Remove ".concat(a.name," from the pool? This detaches them from every edition."))){c(!0);try{(await n("/api/admin/pool?id=".concat(a.id),{method:"DELETE"})).ok&&s(a.id)}finally{c(!1)}}}return(0,l.jsxs)("div",{className:"flex items-center gap-3 rounded-xl border border-[#e5e9ec] bg-white p-3",children:[(0,l.jsx)("span",{className:"flex h-12 w-12 shrink-0 items-center justify-center overflow-hidden rounded-full bg-[#f3f5f7] text-xs text-[#A1ADB8]",children:a.photoUrl?(0,l.jsx)("img",{src:a.photoUrl,alt:"",className:"h-full w-full object-cover"}):a.name.slice(0,1)}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsx)("div",{className:"truncate text-sm font-semibold text-[#111]",children:a.name}),(0,l.jsx)("div",{className:"truncate text-sm text-[#5F6F7D]",children:[a.title,a.company].filter(Boolean).join(" \xb7 ")}),(0,l.jsxs)("div",{className:"mt-1 flex flex-wrap items-center gap-1",children:[a.badge&&(0,l.jsx)("span",{className:"inline-block rounded bg-[#0F253B]/10 px-1.5 py-0.5 text-[10px] font-bold uppercase tracking-wide text-[#0F253B]",children:a.badge}),(0,l.jsx)(L,{label:"Light logo",value:a.companyLogo,source:a.companyLogoSource}),(0,l.jsx)(L,{label:"White logo",value:a.companyLogoDark,source:a.companyLogoDarkSource})]})]}),(0,l.jsxs)("div",{className:"flex shrink-0 items-center gap-1",children:[(0,l.jsx)("button",{type:"button",onClick:()=>i(!0),className:"rounded-md p-2 text-[#5F6F7D] hover:bg-[#f3f5f7]","aria-label":"Edit",children:(0,l.jsx)(x.A,{className:"h-4 w-4"})}),(0,l.jsx)("button",{type:"button",onClick:m,disabled:d,className:"rounded-md p-2 text-red-500 hover:bg-red-50 disabled:opacity-50","aria-label":"Delete",children:(0,l.jsx)(b.A,{className:"h-4 w-4"})})]}),r&&(0,l.jsx)(A,{speaker:a,onClose:()=>i(!1),onUpdated:e=>{t(e),i(!1)}})]})}function A(e){var a,t,s,n,r,i,d,c,m;let{speaker:p,onClose:h,onUpdated:u}=e,{adminFetch:x}=(0,o.b)(),[b,f]=(0,j.useState)({name:p.name,company:p.company,title:null!=(a=p.title)?a:"",badge:null!=(t=p.badge)?t:"",companyUrl:null!=(s=p.companyUrl)?s:"",companyLogo:null!=(n=p.companyLogo)?n:"",companyLogoDark:null!=(r=p.companyLogoDark)?r:"",detail:null!=(i=p.detail)?i:"",bio:null!=(d=p.bio)?d:"",linkedinUrl:null!=(c=p.linkedinUrl)?c:"",photoUrl:null!=(m=p.photoUrl)?m:"",headshotUrl:""}
1),[y,k]=(0,j.useState)(null),[w,v]=(0,j.useState)(null),[N,F]=(0,j.useState)(null),[C,A]=(0,j.useState)(!1),[L,S]=(0,j.useState)(null);async function U(){A(!0),S(null);let e=new FormData;for(let[a,t]of Object.entries(b))e.set(a,t);y&&e.set("headshot",y),w&&e.set("logo",w),N&&e.set("logoDark",N);try{let t=await x("/api/admin/pool?id=".concat(p.id),{method:"PATCH",body:e}),l=await t.json();if(!t.ok||!l.speaker){var a;S(null!=(a=l.error)?a:"Failed to update.");return}u(l.speaker)}catch(e){S("Network error — try again.")}finally{A(!1)}}return(0,l.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4",children:[(0,l.jsx)("button",{type:"button","aria-label":"Close",onClick:h,className:"absolute inset-0 cursor-default bg-black/40"}),(0,l.jsxs)("div",{className:"relative max-h-[90vh] w-full max-w-md overflow-auto rounded-2xl bg-white p-6 shadow-xl",children:[(0,l.jsx)("button",{type:"button",onClick:h,className:"absolute right-4 top-4 text-[#A1ADB8] hover:text-[#111]","aria-label":"Close",children:(0,l.jsx)(g.A,{className:"h-5 w-5"})}),(0,l.jsx)("h3",{className:"mb-4 font-[family-name:var(--font-heebo)] text-base font-bold text-[#111]",children:"Edit speaker"}),(0,l.jsx)(B,{form:b,setForm:f,headshotFile:y,setHeadshotFile:k,logoFile:w,setLogoFile:v,logoDarkFile:N,setLogoDarkFile:F,logoSource:p.companyLogoSource,logoDarkSource:p.companyLogoDarkSource}),L&&(0,l.jsx)("p",{className:"mt-3 text-sm text-red-600",children:L}),(0,l.jsx)("button",{type:"button",onClick:U,disabled:C,className:"mt-4 w-full rounded-md bg-[#0F253B] px-4 py-2.5 text-sm font-bold uppercase tracking-wide text-white hover:opacity-90 disabled:opacity-50",children:C?"Saving…":"Save changes"})]})]})}function L(e){let{label:a,value:t,source:o}=e,s=!!(null==t?void 0:t.trim());return(0,l.jsxs)("span",{className:"inline-block rounded border px-1.5 py-0.5 text-[10px] font-semibold ".concat(s?"bg-emerald-50 text-emerald-700 border-emerald-200":"bg-amber-50 text-amber-700 border-amber-200"),children:[a,s?"manual"===o?" \xb7 manual":"":" \xb7 missing"]})}function S(e,a){return"manual"===a?"Manual upload — kept; Brandfetch won’t overwrite it.":e.trim()?"Auto-filled from Brandfetch. Upload to override (yours will stick).":"Empty — set a company URL to auto-fill on save, or upload to set it manually."}function U(e){let{label:a,children:t}=e;return(0,l.jsxs)("label",{className:"block",children:[(0,l.jsx)("span",{className:"mb-1 block text-xs font-bold uppercase tracking-wide text-[#5F6F7D]",children:a}),t]})}let D="w-full rounded-md border border-[#d5dbe0] px-3 py-2 text-sm text-[#111] outline-none focus:border-[#0F253B]";function B(e){let{form:a,setForm:t,headshotFile:o,setHeadshotFile:n,logoFile:r,setLogoFile:i,logoDarkFile:d,setLogoDarkFile:c,logoSource:m,logoDarkSource:p}=e,h=e=>a=>t(t=>({...t,[e]:a.target.value}));return(0,l.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,l.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,l.jsx)(U,{label:"Name",children:(0,l.jsx)("input",{className:D,value:a.name,onChange:h("name")})}),(0,l.jsx)(U,{label:"Company",children:(0,l.jsx)("input",{className:D,value:a.company,onChange:h("company")})})]}),(0,l.jsx)(U,{label:"Title / role",children:(0,l.jsx)("input",{className:D,value:a.title,onChange:h("title"),placeholder:"CEO, Founderpath"})}),(0,l.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,l.jsxs)(U,{label:"Badge",children:[(0,l.jsx)("input",{className:D,value:a.badge,onChange:h("badge"),list:"badge-suggestions"}),(0,l.jsx)("datalist",{id:"badge-suggestions",children:w.map(e=>(0,l.jsx)("option",{value:e},e))})]}),(0,l.jsx)(U,{label:"Proof point",children:(0,l.jsx)("input",{className:D,value:a.detail,onChange:h("detail"),placeholder:"$10M ARR"})})]}),(0,l.jsx)(U,{label:"Company URL (for logo)",children:(0,l.jsx)("input",{className:D,value:a.companyUrl,onChange:h("companyUrl"),placeholder:"founderpath.com"})}),(0,l.jsx)(U,{label:"Bio (host card only)",children:(0,l.jsx)("textarea",{className:"".concat(D," min-h-[90px] resize-y"),value:a.bio,onChange:e=>t(a=>({...a,bio:e.target.value})),placeholder:"Shown in a city page's “Your Host” section when this person is set as the edition's host."})}),(0,l.jsx)(U,{label:"LinkedIn URL (host card only)",children:(0,l.jsx)("input",{className:D,value:a.linkedinUrl,onChange:h("linkedinUrl"),placeholder:"https://www.linkedin.com/in/…"})}),(0,l.jsxs)(U,{label:"Company logo — light background (optional)",children:[(0,l.jsx)(s.R,{urlLabel:"Logo URL",urlValue:a.companyLogo,onUrlChange:e=>t(a=>({...a,companyLogo:e})),file:r,onFileChange:i,uploadLabel:"Upload logo",previewAlt:"Company logo preview",previewShape:"square"}),(0,l.jsx)("p",{className:"mt-1 text-xs text-[#A1ADB8]",children:S(a.companyLogo,m)})]}),(0,l.jsxs)(U,{label:"Company logo — dark background \xb7 white PNG (optional)",children:[(0,l.jsx)(s.R,{urlLabel:"Logo URL",urlValue:a.companyLogoDark,onUrlChange:e=>t(a=>({...a,companyLogoDark:e})),file:d,onFileChange:c,uploadLabel:"Upload white logo",previewAlt:"Company logo (dark background) preview",previewShape:"square",previewBg:"dark"}),(0,l.jsx)("p",{className:"mt-1 text-xs text-[#A1ADB8]",children:S(a.companyLogoDark,p)})]}),(0,l.jsx)(U,{label:"Headshot",children:(0,l.jsx)(s.R,{urlLabel:"Headshot URL",urlValue:a.headsh
1otUrl,onUrlChange:e=>t(a=>({...a,headshotUrl:e})),file:o,onFileChange:n})})]})}},4813:(e,a,t)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/admin/speakers",function(){return t(3794)}])},6087:e=>{e.exports={style:{fontFamily:"'heebo', 'heebo Fallback'"},className:"__className_7b59e3",variable:"__variable_7b59e3"}},7560:(e,a,t)=>{"use strict";t.d(a,{A:()=>l});let l=(0,t(9845).A)("pen-line",[["path",{d:"M12 20h9",key:"t2du7b"}],["path",{d:"M16.376 3.622a1 1 0 0 1 3.002 3.002L7.368 18.635a2 2 0 0 1-.855.506l-2.872.838a.5.5 0 0 1-.62-.62l.838-2.872a2 2 0 0 1 .506-.854z",key:"1ykcvy"}]])}},e=>{e.O(0,[9375,2781,9252,636,6593,8792],()=>e(e.s=4813)),_N_E=e.O()}]);

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.