1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[85826],{85826:(e,t,r)=>{r.d(t,{Ay:()=>d,ke:()=>c});var a=r(95155),s=r(12115),o=r(5917),i=r(83457),n=r(6191),l=r(85904);let u=e=>{let{venue:t,variant:r="primary",size:u="md",className:c="",showIcon:d=!0,children:g}=e,{addVenue:b,removeVenue:m,isVenueInShortlist:p}=(0,l.E)(),[E,S]=(0,s.useState)(!1),[f,v]=(0,s.useState)(!1),y=p(null==t?void 0:t.id);(0,s.useEffect)(()=>{if(f){let e=setTimeout(()=>v(!1),2e3);return()=>clearTimeout(e)}},[f]);let h=async e=>{if(e.preventDefault(),e.stopPropagation(),t){S(!0);try{y?m(t.id):(b(t),v(!0))}catch(e){console.error("Error updating shortlist:",e)}setTimeout(()=>S(!1),300)}},_=E?"scale-95 transform":"",T=f?(0,a.jsx)("div",{className:"absolute inset-0 bg-green-400 opacity-25 animate-pulse rounded-lg"}):null;return(0,a.jsxs)("button",{onClick:h,className:"".concat((()=>{let e="font-medium rounded-lg transition-all duration-200 flex items-center justify-center gap-2 relative overflow-hidden";if(y)return"".concat(e," bg-green-100 text-green-800 border-2 border-green-300 hover:bg-green-200 hover:border-green-400");switch(r){case"primary":return"".concat(e," bg-blue-600 text-white border-2 border-blue-600 hover:bg-blue-700 hover:border-blue-700 active:bg-blue-800");case"secondary":return"".concat(e," bg-white bg-opacity-95 text-blue-900 border-2 border-blue-200 hover:bg-white hover:bg-opacity-100 hover:border-blue-300 shadow-lg backdrop-blur-sm");case"outline":return"".concat(e," bg-transparent text-gray-700 border-2 border-gray-300 hover:bg-gray-50 hover:border-gray-400");case"ghost":return"".concat(e," bg-transparent text-gray-600 border-2 border-transparent hover:bg-gray-100");case"heart":return"".concat(e," bg-white text-pink-600 border-2 border-pink-200 hover:bg-pink-50 hover:border-pink-300 shadow-sm");default:return"".concat(e," bg-blue-600 text-white border-2 border-blue-600 hover:bg-blue-700")}})()," ").concat({sm:"px-3 py-1.5 text-sm",md:"px-4 py-2 text-sm",lg:"px-6 py-3 text-base",xl:"px-8 py-4 text-lg"}[u]," ").concat(_," ").concat(c),disabled:E,title:y?"Remove from brief":"Add to brief","aria-label":y?"Remove from brief":"Add to brief",children:[T,(0,a.jsx)("span",{className:"relative z-10 flex items-center gap-2",children:g?g:y?f?(0,a.jsxs)(a.Fragment,{children:[d&&(0,a.jsx)(o.A,{className:"w-4 h-4 animate-bounce"}),(0,a.jsx)("span",{children:"Added to Brief!"})]}):(0,a.jsxs)(a.Fragment,{children:[d&&(0,a.jsx)(o.A,{className:"w-4 h-4"}),(0,a.jsx)("span",{children:"In Brief"})]}):"heart"===r?(0,a.jsxs)(a.Fragment,{children:[d&&(0,a.jsx)(i.A,{className:"w-4 h-4 ".concat(y?"fill-current":"")}),(0,a.jsx)("span",{children:"Save"})]}):(0,a.jsxs)(a.Fragment,{children:[d&&(0,a.jsx)(n.A,{className:"w-4 h-4"}),(0,a.jsx)("span",{children:"Add to Brief"})]})}),E&&(0,a.jsx)("div",{className:"absolute inset-0 bg-white opacity-25 animate-ping rounded-lg"})]})},c=e=>(0,a.jsx)(u,{size:"sm",...e}),d=u},85904:(e,t,r)=>{r.d(t,{E:()=>d,wd:()=>c});var a=r(95155),s=r(12115);let o={ADD_VENUE:"ADD_VENUE",REMOVE_VENUE:"REMOVE_VENUE",CLEAR_SHORTLIST:"CLEAR_SHORTLIST",LOAD_FROM_STORAGE:"LOAD_FROM_STORAGE",SET_BRIEF_STEP:"SET_BRIEF_STEP",UPDATE_BRIEF_DATA:"UPDATE_BRIEF_DATA",SUBMIT_BRIEF:"SUBMIT_BRIEF",RESET_BRIEF:"RESET_BRIEF"},i={venues:[],totalVenues:0,isVisible:!1,briefStep:0,briefData:{eventDetails:{eventType:"",eventDate:"",attendees:"",budget:"",notes:""},requirements:{catering:[],avRequirements:[],accessibility:[],accommodation:!1,additionalNotes:""},contactInfo:{name:"",company:"",email:"",phone:"",preferredContact:"email"}},isSubmitting:!1,submissionError:null,submissionSuccess:!1},n=(e,t)=>{switch(t.type){case o.ADD_VENUE:if(e.venues.some(e=>e.id===t.payload.id))return e;let r=[...e.venues,t.payload];return{...e,venues:r,totalVenues:r.length,isVisible:!0};case o.REMOVE_VENUE:let a=e.venues.filter(e=>e.id!==t.payload);return{...e,venues:a,totalVenues:a.length,isVisible:a.length>0};case o.CLEAR_SHORTLIST:return{...e,venues:[],totalVenues:0,isVisible:!1};case o.LOAD_FROM_STORAGE:var s,n;return{...e,venues:t.payload.venues||[],totalVenues:(null==(s=t.payload.venues)?void 0:s.length)||0,isVisible:((null==(n=t.payload.venues)?void 0:n.length)||0)>0,briefData:t.payload.briefData||e.briefData};case o.SET_BRIEF_STEP:return{...e,briefStep:t.payload};case o.UPDATE_BRIEF_DATA:return{...e,briefData:{...e.briefData,[t.payload.section]:{...e.briefData[t.payload.section],...t.payload.data}}};case o.SUBMIT_BRIEF:return{...e,isSubmitting:t.payload.isSubmitting,submissionError:t.payload.error||null,submissionSuccess:t.payload.success||!1};case o.RESET_BRIEF:return{...e,briefStep:0,briefData:i.briefData,isSubmitting:!1,submissionError:null,submissionSuccess:!1};default:return e}},l=(0,s.createContext)(),u="internationalvenues_shortlist",c=e=>{let{children:t}=e,[r,c]=(0,s.useReducer)(n,i);(0,s.useEffect)(()=>{(()=>{try{console.log("\uD83D\uDD0D Loading shortlist from storage...");let t=sessionStorage.getItem(u);if(console.log("\uD83D\uDCF1 SessionStorage data:",t?"Found":"Not found"),t||(t=localStorage.getItem(u),console.log("\uD83D\uDCBE LocalStorage data:",t?"Found":"Not found")),t){let r=JSON.parse(t);console.log("\uD83D\uDCE6 Parsed data:",r);let a=new Date(r.timestamp),s=(new Date-a)/36e5;if(console.log("â° Data age (hours):",s),s<24){var e;console.log("â
Loading shortlist from storage:",(null==(e=r.venues)?void 0:e.length)||0,"venues"),c({type:o.LOAD_FROM_STORAGE,payload:r})}else console.log("\uD83D\uDDD1ï¸ Data too old, clearing storage"),sessionStorage.removeItem(u),localStorage.removeItem(u)}else console.log("â No stored data found")}catch(e){console.error("\uD83D\uDCA5 Error loading shortlist from storage:",e),sessionStorage.removeItem(u),localStorage.removeItem(u)}})()},[]),(0,s.useEffect)(()=>{let e=setTimeout(()=>{try{let e={venues:r.venues,briefData:r.briefData,briefStep:r.briefStep,timestamp:new Date().toISOString()},t=JSON.stringify(e);console.log("\uD83D\uDCBE Saving to storage:",{venueCount:r.venues.length,briefStep:r.briefStep,timestamp:e.timestamp}),sessionStorage.setItem(u,t),console.log("â
Saved to sessionStorage"),r.venues.length>0||r.briefStep>0?(localStorage.setItem(u,t),console.log("â
Saved to localStorage")):(localStorage.removeItem(u),console.log("\uD83D\uDDD1ï¸ Cleared localStorage (no data)"))}catch(e){console.error("\uD83D\uDCA5 Error saving shortlist to storage:",e)}},100);return()=>clearTimeout(e)},[r.venues,r.briefData,r.briefStep]);let d=async()=>{c({type:o.SUBMIT_BRIEF,payload:{isSubmitting:!0}});try{let e={event_details:r.briefData.eventDetails,requirements:r.briefData.requirements,contact_info:r.briefData.contactInfo,shortlisted_venues:r.venues.map(e=>({venue_id:e.id,venue_name:e.name,venue_slug:e.slug,venue_city:e.city,venue_category:e.category})),submitted_at:new Date().toISOString()},t=await fetch("".concat("","/api/briefs"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error("HTTP error! status: ".concat(t.status));let a=await t.json();return c({type:o.SUBMIT_BRIEF,payload:{isSubmitting:!1,success:!0}}),{success:!0,brief:a}}catch(e){return console.error("Error submitting brief:",e),c({type:o.SUBMIT_BRIEF,payload:{isSubmitting:!1,error:e.message||"Failed to submit brief. Please try again."}}),{success:!1,error:e.message}}},g={venues:r.venues,totalVenues:r.totalVenues,isVisible:r.isVisible,briefStep:r.briefStep,briefData:r.briefData,isSubmitting:r.isSubmitting,submissionError:r.submissionError,submissionSuccess:r.submissionSuccess,addVenue:e=>{var t;let r={id:e.id,name:e.name,slug:e.slug,city:e.city,category:e.category,location:e.location,capacity:e.capacity,priceRange:e.price_range||e.priceRange,image:(null==(t=e.images)?void 0:t[0])||e.image,features:e.features||[],stats:e.stats||{}};c({type:o.ADD_VENUE,payload:r})},removeVenue:e=>{c({type:o.REMOVE_VENUE,payload:e})},clearShortlist:()=>{c({type:o.CLEAR_SHORTLIST})},setBriefStep:e=>{c({type:o.SET_BRIEF_STEP,payload:e})},updateBriefData:(e,t)=>{c({type:o.UPDATE_BRIEF_DATA,payload:{section:e,data:t}})},submitBrief:d,resetBrief:()=>{c({type:o.RESET_BRIEF})},startNewBrief:()=>{c({type:o.RESET_BRIEF}),c({type:o.SET_BRIEF_STEP,payload:1})},isVenueInShortlist:e=>r.venues.some(t=>t.id===e),getVenueById:e=>r.venues.find(t=>
1t.id===e),getBriefProgress:()=>Math.round(r.briefStep/4*100),isBriefComplete:()=>{let{eventDetails:e,requirements:t,contactInfo:a}=r.briefData;return e.eventType&&e.eventDate&&e.attendees&&a.name&&a.email&&a.phone}};return(0,a.jsx)(l.Provider,{value:g,children:t})},d=()=>{let e=(0,s.useContext)(l);if(!e)throw Error("useShortlist must be used within a ShortlistProvider");return e}}}]);
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.