PageSourceSearch

https://global-engage.com/assets/conferences.index-BmF__r6A.js

js global-engage.com collected 2026-10-01 12:29:53 UTC 6,154 bytes, 1 lines download raw bytes

1import{r as e}from"./chunk-QTnfLwEv.js";import{r as t,t as n}from"./jsx-runtime-Bbc2P9zb.js";import{t as r}from"./link-D1atUD2p.js";import{t as i}from"./topics-BDrtwlA7.js";import{S as a,T as o,v as s}from"./index-CrxKOR79.js";import{t as c}from"./button-BUYvWnYS.js";import{n as l}from"./label-JS2b_Uuj.js";import{f as u}from"./SiteHeader-B6iWgYsz.js";import{t as d}from"./ConferenceCard-BnAqS7Os.js";import{t as f}from"./search-cNW7nJ4Q.js";import{t as p}from"./x-Cyd-Wjs6.js";import{t as m}from"./badge-PcAMSwH2.js";import{t as h}from"./PageHero-CQMBUDfX.js";import{t as g}from"./PageShell-B7gBXEFj.js";var _=e(t()),v=n(),y=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`];function b(){let{conferences:e}=o.useLoaderData(),t=o.useSearch(),n={status:t.status??`upcoming`,topic:t.topic??``,country:t.country??``,city:t.city??``,format:t.format??``,month:t.month??0,year:t.year??0,q:t.q??``},b=o.useNavigate(),S=(0,_.useMemo)(()=>s(e),[e]),C=(0,_.useMemo)(()=>a({status:n.status,topic:n.topic||void 0,country:n.country||void 0,city:n.city||void 0,format:n.format||void 0,month:n.month||void 0,year:n.year||void 0,search:n.q||void 0},e),[n,e]),w=e=>b({search:t=>({...t,...e}),replace:!0}),T=()=>b({search:{status:`upcoming`,topic:``,country:``,city:``,format:``,month:0,year:0,q:``},replace:!0}),E=+!!n.topic+ +!!n.country+ +!!n.city+ +!!n.format+ +!!n.month+ +!!n.year+ +!!n.q;return(0,v.jsxs)(g,{children:[(0,v.jsx)(h,{eyebrow:`Conferences`,title:`Every life science conference we run — in one place.`,description:`Filter by topic, country, city, month, year or format. Search across the full catalogue.`,breadcrumbs:[{label:`Home`,href:`/`},{label:`Conferences`}],motif:{src:u.url}}),(0,v.jsxs)(`section`,{className:`container-page py-10 md:py-14`,children:[(0,v.jsxs)(`div`,{className:`mb-8 space-y-4 rounded-2xl border border-border bg-card p-4 md:p-6`,children:[(0,v.jsxs)(`div`,{className:`flex flex-col gap-3 md:flex-row md:items-center`,children:[(0,v.jsxs)(`div`,{className:`relative flex-1`,children:[(0,v.jsx)(f,{className:`pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground`}),(0,v.jsx)(l,{type:`search`,value:n.q,onChange:e=>w({q:e.target.value}),placeholder:`Search conferences, cities, topics…`,className:`pl-9`,"aria-label":`Search conferences`})]}),(0,v.jsx)(`div`,{className:`inline-flex rounded-full border border-border p-1 self-start md:self-auto`,children:[`upcoming`,`past`,`all`].map(e=>(0,v.jsx)(`button`,{type:`button`,onClick:()=>w({status:e}),className:`rounded-full px-4 py-1.5 text-sm font-medium transition-colors `+(n.status===e?`bg-brand text-primary-foreground`:`text-muted-foreground hover:text-foreground`),"aria-pressed":n.status===e,children:e===`upcoming`?`Upcoming`:e===`past`?`Past`:`All`},e))})]}),(0,v.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2 lg:grid-cols-5`,children:[(0,v.jsx)(x,{label:`Country`,value:n.country,onChange:e=>w({country:e}),options:S.countries}),(0,v.jsx)(x,{label:`City`,value:n.city,onChange:e=>w({city:e}),options:S.cities}),(0,v.jsx)(x,{label:`Format`,value:n.format,onChange:e=>w({format:e}),options:S.formats}),(0,v.jsx)(x,{label:`Month`,value:n.month?String(n.month):``,onChange:e=>w({month:e?Number(e):0}),options:y.map((e,t)=>({value:String(t+1),label:e}))}),(0,v.jsx)(x,{label:`Year`,value:n.year?String(n.year):``,onChange:e=>w({year:e?Number(e):0}),options:S.years.map(e=>String(e))})]}),(0,v.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,v.jsx)(`span`,{className:`text-xs font-medium uppercase tracking-wide text-muted-foreground`,children:`Topic`}),(0,v.jsx)(m,{variant:n.topic?`outline`:`default`,className:`cursor-pointer `+(n.topic?`hover:border-brand/40`:`bg-brand text-primary-foreground`),onClick:()=>w({topic:``}),children:`All`}),i.map(e=>(0,v.jsx)(m,{variant:n.topic===e.slug?`default`:`outline`,className:`cursor-pointer `+(n.topic===e.slug?`bg-brand text-primary-foreground`:`hover:border-brand/40`),onClick:()=>w({topic:e.slug}),children:e.name},e.slug))]}),(0,v.jsxs)(`div`,{className:`flex items-center justify-between border-t border-border/60 pt-3 text-sm`,children:[(0,v.jsxs)(`p`,{className:`text-muted-foreground`,children:[(0,v.jsx)(`span`,{className:`font-semibold text-foreground`,children:C.length}),` `,C.length===1?`conference`:`conferences`,E>0&&(0,v.jsxs)(`span`,{className:`ml-2 text-xs`,children:[`(`,E,` filter`,E===1?``:`s`,` active)`]})]}),E>0&&(0,v.jsxs)(c,{variant:`ghost`,size:`sm`,onClick:T,children:[(0,v.jsx)(p,{className:`mr-1 h-3.5 w-3.5`}),` Reset`]})]})]}),C.length===0?(0,v.jsxs)(`div`,{className:`rounded-2xl border border-dashed border-border p-12 text-center`,children:[(0,v.jsx)(`p`,{className:`text-muted-foreground`,children:`No conferences match these filters.`}),(0,v.jsx)(c,{variant:`link`,onClick:T,className:`mt-2`,children:`Reset filters`})]}):(0,v.jsx)(`div`,{className:`grid gap-6 md:grid-cols-2 lg:grid-cols-3`,children:C.map(e=>(0,v.jsx)(d,{conference:e},e.slug))}),(0,v.jsxs)(`div`,{className:`mt-12 rounded-2xl border border-border bg-muted/30 p-6`,children:[(0,v.jsx)(`h2`,{className:`font-display text-lg font-semibold`,children:`Browse by topic`}),(0,v.jsx)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:i.map(e=>(0,v.jsx)(r,{to:`/topics/$slug`,params:{slug:e.slug},className:`rounded-full border border-border bg-background px-3 py-1 text-sm text-foreground hover:border-brand/40 hover:text-brand`,children:e.name},e.slug))})]})]})]})}function x({label:e,value:t,onChange:n,options:r}){let i=r.map(e=>typeof e==`string`?{value:e,label:e}:e),a=`filter-${e.toLowerCase()}`;return(0,v.jsxs)(`div`,{children:[(0,v.jsx)(`label`,{htmlFor:a,className:`mb-1 block text-xs font-medium text-muted-foreground`,children:e}),(0,v.jsxs)(`select`,{id:a,value:t,onChange:e=>n(e.target.value),className:`h-9 w-full rounded-md border border-input bg-background px-3 text-sm focus:outline-none focus:ring-2 focus:ring-brand/40`,children:[(0,v.jsx)(`option`,{value:``,children:`Any`}),i.map(e=>(0,v.jsx)(`option`,{value:e.value,children:e.label},e.value))]})]})}export{b as component};

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.