1import{a as ne}from"./chunk-SRVOUX2X.js";import{A as J,Nd as ee,Od as te,R as K,S as Q,wb as Y}from"./chunk-UCWPALVB.js";import"./chunk-BSJVWSZ5.js";import{D as Z,b as $,c as L,f as O,g as q,i as j,k as R,l as W,x as U,y as G,z as X}from"./chunk-4M6DCBQZ.js";import"./chunk-DEYJRJKY.js";import{y as A}from"./chunk-EK2LUO54.js";import"./chunk-JQPFVPBT.js";import{Ac as C,Bc as S,Cc as H,Nb as w,Pb as _,Qb as g,Tb as I,Ub as M,Vb as u,Wb as i,Xb as o,Yb as h,Za as z,cb as a,fc as f,ha as N,jc as b,jd as y,kd as P,lc as d,oa as p,pa as x,s as D,ub as F,wc as v,xa as c,zc as s}from"./chunk-UBTXYZ6Y.js";import{a as T,i as E}from"./chunk-RKIXE2YC.js";var re=(n,t)=>t.id,le=(n,t)=>t.startAt;function se(n,t){if(n&1&&(i(0,"div",2)(1,"div",4),h(2,"lucide-icon",5),o(),i(3,"h1",6),s(4,"Booking unavailable"),o(),i(5,"p",7),s(6),o()()),n&2){let e=d();a(2),u("img",e.AlertCircleIcon)("size",24),a(4),C(t)}}function de(n,t){n&1&&s(0,"A confirmation text is on the way too.")}function me(n,t){if(n&1){let e=f();i(0,"div",2)(1,"div",8),h(2,"lucide-icon",9),o(),i(3,"h1",10),s(4,"Demo request received"),o(),i(5,"p",7),s(6),o(),i(7,"p",11),s(8," Check your email for a confirmation link. "),_(9,de,1,0),o(),i(10,"button",12),b("click",function(){p(e);let l=d();return x(l.reset())}),s(11," Submit another request "),o()()}if(n&2){let e=d();a(2),u("img",e.CheckCircleIcon)("size",24),a(4),C(e.success()),a(3),g(e.smsAcked()?9:-1)}}function ce(n,t){if(n&1&&(i(0,"div",29),s(1),o()),n&2){let e=d().$implicit;a(),C(e.description)}}function ue(n,t){if(n&1){let e=f();i(0,"button",26),b("click",function(){let l=p(e).$implicit,m=d(3);return x(m.selectTemplate(l.id))}),i(1,"div",27),s(2),o(),i(3,"div",28),s(4),o(),_(5,ce,2,1,"div",29),o()}if(n&2){let e=t.$implicit,r=d(3);v("border-blue-500",r.selectedTemplateId()===e.id),a(2),C(e.name),a(2),S("",e.durationMin," minutes"),a(),g(e.description?5:-1)}}function pe(n,t){if(n&1&&(i(0,"div")(1,"h2",23),s(2,"Pick a session length"),o(),i(3,"div",24),I(4,ue,6,5,"button",25,re),o()()),n&2){let e=d(2);a(4),M(e.templates())}}function xe(n,t){if(n&1&&h(0,"img",33),n&2){let e=d().$implicit;u("src",e.photoUrl,z)("alt",e.displayName)}}function _e(n,t){if(n&1&&(i(0,"div",28),s(1),o()),n&2){let e=d().$implicit;a(),C(e.bio)}}function ge(n,t){if(n&1){let e=f();i(0,"button",26),b("click",function(){let l=p(e).$implicit,m=d(3);return x(m.selectHost(l.id))}),i(1,"div",13),_(2,xe,1,2,"img",33),i(3,"div",16)(4,"div",27),s(5),o(),i(6,"div",32),s(7),o(),_(8,_e,2,1,"div",28),o()()()}if(n&2){let e=t.$implicit,r=d(3);v("border-blue-500",r.selectedHostId()===e.id),a(2),g(e.photoUrl?2:-1),a(3),C(e.displayName),a(2),C(e.timezone),a(),g(e.bio?8:-1)}}function be(n,t){if(n&1){let e=f();i(0,"div")(1,"h2",23),s(2,"Pick a host"),o(),i(3,"div",30)(4,"button",26),b("click",function(){p(e);let l=d(2);return x(l.selectHost(l.anyHostId))}),i(5,"div",13)(6,"div",31),s(7," \u2605 "),o(),i(8,"div",16)(9,"div",27),s(10,"Any available host"),o(),i(11,"div",32),s(12," We'll match you with the first free host \u2014 usually the soonest times. "),o()()()(),I(13,ge,9,6,"button",25,re),o()()}if(n&2){let e=d(2);a(4),v("border-blue-500",e.selectedHostId()===e.anyHostId),a(9),M(e.hosts())}}function Ce(n,t){if(n&1&&(i(0,"div",35),h(1,"lucide-icon",37),s(2," Loading available times\u2026 "),o()),n&2){let e=d(3);a(),u("img",e.Loader2Icon)("size",14)}}function fe(n,t){n&1&&(i(0,"p",18),s(1," No open slots in the current window. Please check back later or contact us directly. "),o())}function he(n,t){if(n&1&&(i(0,"span",40),s(1),o()),n&2){let e=d().$implicit;a(),S("",e.availableHostCount," hosts free")}}function ve(n,t){if(n&1){let e=f();i(0,"button",39),b("click",function(){let l=p(e).$implicit,m=d(4);return x(m.selectSlot(l.startAt))}),s(1),_(2,he,2,1,"span",40),o()}if(n&2){let e=t.$implicit,r=d(4);v("border-blue-500",r.selectedSlotStart()===e.startAt),a(),S(" ",r.formatSlotLabel(e.startAt)," "),a(),g(e.availableHostCount&&e.availableHostCount>1?2:-1)}}function ye(n,t){if(n&1&&(i(0,"div",36),I(1,ve,3,4,"button",38,le),o()),n&2){let e=d(3);a(),M(e.availableSlots())}}function Se(n,t){if(n&1&&(i(0,"div")(1,"h2",23),s(2,"Pick a time"),o(),i(3,"p",34),s(4),o(),_(5,Ce,3,2,"div",35)(6,fe,2,0,"p",18)(7,ye,3,0,"div",36),o()),n&2){let e=d(2);a(4),S(" Times shown in your timezone (",e.viewerTimezone,") "),a(),g(e.loadingSlots()?5:e.availableSlots().length===0?6:7)}}function ke(n,t){if(n&1&&(i(0,"p",46),s(1),o()),n&2){let e=d(3);a(),C(e.nameError())}}function Ee(n,t){if(n&1&&(i(0,"p",46),s(1),o()),n&2){let e=d(3);a(),C(e.emailError())}}function De(n,t){if(n&1&&(i(0,"p",46),s(1),o()),n&2){let e=d(3);a(),C(e.phoneError())}}function we(n,t){if(n&1&&(i(0,"div",61),h(1,"lucide-icon",63),i(2,"span"),s(3),o()()),n&2){let e=d(3);a(),u("img",e.AlertCircleIcon)("size",16),a(2),C(e.submitError())}}function Ie(n,t){if(n&1&&h(0,"lucide-icon",37),n&2){let e=d(3);u("img",e.Loader2Icon)("size",14)}}function Me(n,t){if(n&1){let e=f();i(0,"form",41),b("ngSubmit",function(){p(e);let l=d(2);return x(l.submit())}),i(1,"div",42)(2,"div")(3,"label",43),s(4," Full name "),i(5,"span",44),s(6,"*"),o()(),i(7,"input",45),b("ngModelChange",function(l){p(e);let m=d(2);return x(m.updateForm({name:l}))}),o(),_(8,ke,2,1,"p",46),o(),i(9,"div")(10,"label",47),s(11,"Company"),o(),i(12,"input",48),b("ngModelChange",function(l){p(e);let m=d(2);return x(m.updateForm({company:l}))}),o()()(),i(13,"div")(14,"label",49),s(15," Email "),i(16,"span",44),s(17,"*"),o()(),i(18,"input",50),b("ngModelChange",function(l){p(e);let m=d(2);return x(m.updateForm({email:l}))}),o(),_(19,Ee,2,1,"p",46),o(),i(20,"div")(21,"label",51),s(22," Mobile number "),i(23,"span",44),s(24,"*"),o()(),i(25,"input",52),b("ngModelChange",function(l){p(e);let m=d(2);return x(m.updateForm({phone:l}))}),o(),i(26,"p",53),s(27," US numbers: type 10 digits with or without dashes (e.g. 347-782-5474). International: include country code (e.g. +447911123456). "),o(),_(28,De,2,1,"p",46),o(),i(29,"div")(30,"label",54),s(31," What would you like to cover? "),i(32,"span",55),s(33,"(optional)"),o()(),i(34,"textarea",56),b("ngModelChange",function(l){p(e);let m=d(2);return x(m.updateForm({message:l}))}),o()(),i(35,"label",57)(36,"input",58),b("ngModelChange",function(l){p(e);let m=d(2);return x(m.updateForm({smsConsent:l}))}
1),o(),i(37,"span",59),s(38," I agree to receive SMS appointment reminders and confirmation links from LivestreamPro at this number. Message frequency varies. Message and data rates may apply. Reply HELP for help or STOP to opt out at any time. View our "),i(39,"a",60),s(40,"privacy policy"),o(),s(41,". "),o()(),_(42,we,4,3,"div",61),i(43,"button",62),_(44,Ie,1,2,"lucide-icon",37),s(45," Request demo "),o()()}if(n&2){let e=d(2);a(7),v("border-red-500",e.nameError()),u("ngModel",e.form().name),w("aria-invalid",e.nameError()?"true":null),a(),g(e.nameError()?8:-1),a(4),u("ngModel",e.form().company),a(6),v("border-red-500",e.emailError()),u("ngModel",e.form().email),w("aria-invalid",e.emailError()?"true":null),a(),g(e.emailError()?19:-1),a(6),v("border-red-500",e.phoneError()),u("ngModel",e.form().phone),w("aria-invalid",e.phoneError()?"true":null),a(3),g(e.phoneError()?28:-1),a(6),u("ngModel",e.form().message),a(2),u("ngModel",e.form().smsConsent),a(6),g(e.submitError()?42:-1),a(),u("disabled",e.submitting()||!e.canSubmit()),a(),g(e.submitting()?44:-1)}}function Te(n,t){if(n&1){let e=f();i(0,"button",64),b("click",function(){p(e);let l=d(2);return x(l.next())}),s(1," Continue "),o()}if(n&2){let e=d(2);u("disabled",!e.canProceed())}}function Be(n,t){if(n&1){let e=f();i(0,"div",3)(1,"div",13)(2,"div",14),h(3,"lucide-icon",15),o(),i(4,"div",16)(5,"h1",17),s(6,"Book a demo"),o(),i(7,"p",18),s(8),o()()(),_(9,pe,6,0,"div")(10,be,15,2,"div")(11,Se,8,2,"div")(12,Me,46,21,"form",19),i(13,"div",20)(14,"button",21),b("click",function(){p(e);let l=d();return x(l.back())}),s(15," Back "),o(),_(16,Te,2,1,"button",22),o()()}if(n&2){let e,r=d();a(3),u("img",r.CalendarClockIcon)("size",20),a(5),H("Step ",r.stepIndex()+1," of ",r.totalSteps()),a(),g((e=r.currentStep())==="template"?9:e==="host"?10:e==="slot"?11:e==="contact"?12:-1),a(5),u("disabled",r.stepIndex()===0),a(2),g(r.currentStep()!=="contact"?16:-1)}}var B=/^\+[1-9]\d{1,14}$/,ie=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function V(n){let t=n.trim();if(!t)return null;let e=t.replace(/[\s().\-]/g,"");if(e.startsWith("+"))return B.test(e)?e:null;let r=e.replace(/\D/g,"");if(r.length===10){let l=`+1${r}`;return B.test(l)?l:null}if(r.length===11&&r.startsWith("1")){let l=`+${r}`;return B.test(l)?l:null}return null}var oe=class n{api=N(ne);CalendarClockIcon=J;CheckCircleIcon=Q;AlertCircleIcon=K;Loader2Icon=Y;viewerTimezone=Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC";templates=c([]);hosts=c([]);maxFutureDays=c(30);fatalError=c(null);anyHostId="__any__";selectedTemplateId=c(null);selectedHostId=c(null);selectedSlotStart=c(null);availableSlots=c([]);loadingSlots=c(!1);form=c({name:"",email:"",phone:"",company:"",message:"",smsConsent:!1});submitting=c(!1);submitError=c(null);success=c(null);smsAcked=c(!1);stepOrder=c(["template","host","slot","contact"]);stepIndex=c(0);currentStep=y(()=>this.stepOrder()[this.stepIndex()]);totalSteps=y(()=>this.stepOrder().length);canProceed=y(()=>{switch(this.currentStep()){case"template":return this.selectedTemplateId()!==null;case"host":return this.selectedHostId()!==null;case"slot":return this.selectedSlotStart()!==null;default:return!1}});nameError=y(()=>{let t=this.form().name.trim();return t?t.length<2?"Please enter your full name (at least 2 characters)":t.length>100?"Name is too long (max 100 characters)":null:null});emailError=y(()=>{let t=this.form().email.trim();return t?ie.test(t)?t.length>254?"Email is too long":null:"Enter a valid email address":null});phoneError=y(()=>{let t=this.form().phone.trim();return t&&V(t)===null?"Enter a valid US number (e.g., 347-782-5474) or international with country code (+15551234567)":null});canSubmit=y(()=>{let t=this.form();return!(!this.selectedTemplateId()||!this.selectedHostId()||!this.selectedSlotStart()||!t.name.trim()||t.name.trim().length<2||!ie.test(t.email.trim())||V(t.phone)===null)});constructor(){this.loadConfig(),P(()=>{this.currentStep()==="slot"&&this.selectedTemplateId()&&this.selectedHostId()&&this.loadAvailableSlots()})}loadConfig(){return E(this,null,function*(){try{let t=yield D(this.api.getConfig());this.templates.set(t.slotTemplates),this.hosts.set(t.hosts),this.maxFutureDays.set(t.maxFutureDays);let e=["template","host","slot","contact"];
1if(t.slotTemplates.length===1){this.selectedTemplateId.set(t.slotTemplates[0].id);let r=e.indexOf("template");r!==-1&&e.splice(r,1)}if(t.hosts.length===1){this.selectedHostId.set(t.hosts[0].id);let r=e.indexOf("host");r!==-1&&e.splice(r,1)}else t.hosts.length>1&&this.selectedHostId.set(this.anyHostId);this.stepOrder.set(e)}catch(t){this.fatalError.set(this.extractErrorMessage(t))}})}loadAvailableSlots(){return E(this,null,function*(){let t=this.selectedHostId(),e=this.selectedTemplateId();if(!(!t||!e)){this.loadingSlots.set(!0);try{let r=new Date,l=new Date(Date.now()+this.maxFutureDays()*24*60*60*1e3),m=yield D(t===this.anyHostId?this.api.getTeamSlots({slotTemplateId:e,from:r.toISOString(),to:l.toISOString(),tz:this.viewerTimezone}):this.api.getSlots({hostId:t,slotTemplateId:e,from:r.toISOString(),to:l.toISOString(),tz:this.viewerTimezone}));this.availableSlots.set(m.slots)}catch(r){this.submitError.set(this.extractErrorMessage(r)),this.availableSlots.set([])}finally{this.loadingSlots.set(!1)}}})}selectTemplate(t){this.selectedTemplateId.set(t),this.selectedSlotStart.set(null)}selectHost(t){this.selectedHostId.set(t),this.selectedSlotStart.set(null)}selectSlot(t){this.selectedSlotStart.set(t)}updateForm(t){this.form.update(e=>T(T({},e),t))}next(){this.stepIndex.set(Math.min(this.stepIndex()+1,this.stepOrder().length-1))}back(){this.stepIndex.set(Math.max(this.stepIndex()-1,0))}formatSlotLabel(t){return new Date(t).toLocaleString([],{weekday:"short",month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}submit(){return E(this,null,function*(){if(this.submitting()||!this.canSubmit())return;this.submitError.set(null),this.submitting.set(!0);let t=this.selectedTemplateId(),e=this.selectedHostId(),r=this.selectedSlotStart();if(!t||!e||!r){this.submitting.set(!1);return}let l=this.form(),m=V(l.phone);if(!m){this.submitError.set("Phone number could not be normalized \u2014 please re-check."),this.submitting.set(!1);return}let ae={name:l.name.trim(),email:l.email.trim(),phone:m,company:l.company.trim()||void 0,requestedSlot:r,timezone:this.viewerTimezone,message:l.message.trim()||void 0,smsConsent:l.smsConsent===!0,slotTemplateId:t,demoHostId:e===this.anyHostId?void 0:e};try{let k=yield D(this.api.create(ae));this.success.set(k.message),this.smsAcked.set(k.smsAcknowledgmentSent===!0)}catch(k){this.submitError.set(this.extractErrorMessage(k))}finally{this.submitting.set(!1)}})}reset(){this.form.set({name:"",email:"",phone:"",company:"",message:"",smsConsent:!1}),this.selectedSlotStart.set(null),this.success.set(null),this.smsAcked.set(!1),this.submitError.set(null),this.stepIndex.set(0)}extractErrorMessage(t){if(typeof t=="object"&&t!==null){let e=t;if(e.error?.message)return e.error.message;if(e.message)return e.message}return"Could not complete your request. Please try again."}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=F({type:n,selectors:[["app-book-demo"]],decls:5,vars:1,consts:[[1,"min-h-screen","bg-background","flex","items-start","justify-center","px-4","py-12"],[1,"w-full","max-w-2xl"],[1,"bg-surface","border","border-border","rounded-2xl","p-8","text-center"],[1,"bg-surface","border","border-border","rounded-2xl","p-8","space-y-6"],[1,"w-12","h-12","mx-auto","mb-4","rounded-full","bg-red-100","dark:bg-red-900/30","flex","items-center","justify-center"],[1,"text-red-600","dark:text-red-400",3,"img","size"],[1,"text-xl","font-semibold","text-text","mb-2"],[1,"text-secondary","text-sm"],[1,"w-12","h-12","mx-auto","mb-4","rounded-full","bg-emerald-100","dark:bg-emerald-900/30","flex","items-center","justify-center"],[1,"text-emerald-600","dark:text-emerald-400",3,"img","size"],[1,"text-2xl","font-semibold","text-text","mb-2"],[1,"mt-4","text-xs","text-secondary"],["type","button",1,"mt-6","px-4","py-2","text-sm","text-text","border","border-border","rounded-lg","hover:bg-hover",3,"click"],[1,"flex","items-center","gap-3"],[1,"w-10","h-10","rounded-lg","bg-blue-100","dark:bg-blue-900/30","flex","items-center","justify-center"],[1,"text-blue-600","dark:text-blue-400",3,"img","size"],[1,"flex-1"],[1,"text-xl","font-semibold","text-text"],[1,"text-sm","text-secondary"],["novalidate","",1,"space-y-4"],[1,"flex","items-center","justify-between","pt-4","border-t","border-border"],["type","button",1,"px-3","py-1.5","text-sm","text-text","border","border-border","rounded-lg","hover:bg-hover","disabled:opacity-40",3,"click","disabled"],["type","button",1,"px-4","py-1.5","text-sm","font-medium","text-white","bg-blue-600","hover:bg-blue-700","rounded-lg","disabled:opacity-50",3,"disabled"],[1,"text-sm","font-semibold","text-text","mb-3"],[1,"grid","gap-3","sm:grid-cols-2"],["type","button",1,"text-left","px-4","py-3","border","border-border","rounded-xl","hover:border-blue-500","focus:outline-none","focus:ring-2","focus:ring-blue-500",3,"border-blue-500"],["type","button",1,"text-left","px-4","py-3","border","border-border","rounded-xl","hover:border-blue-500","focus:outline-none","focus:ring-2","focus:ring-blue-500",3,"click"],[1,"font-semibold","text-text"],[1,"text-xs","text-secondary","mt-1"],[1,"text-xs","text-secondary","mt-2"],[1,"grid","gap-3"],["aria-hidden","true",1,"w-10","h-10","rounded-full","bg-blue-100","dark:bg-blue-900/30","flex","items-center","justify-center","text-blue-600","dark:text-blue-400","font-semibold"],[1,"text-xs","text-secondary"],[1,"w-10","h-10","rounded-full","object-cover",3,"src","alt"],[1,"text-xs","text-secondary","mb-3"],[1,"flex","items-center","gap-2","text-sm","text-secondary"],[1,"grid","gap-2","sm:grid-cols-3","max-h-[360px]","overflow-y-auto","pr-1"],[1,"animate-spin",3,"img","size"],["type","button",1,"text-sm","px-3","py-2","border","border-border","rounded-lg","hover:border-blue-500","focus:outline-none","focus:ring-2","focus:ring-blue-500",3,"border-blue-500"],["type","button",1,"text-sm","px-3","py-2","border","border-border","rounded-lg","hover:border-blue-500","focus:outline-none","focus:ring-2","focus:ring-blue-500",3,"click"],[1,"block","text-[10px]","text-secondary"],["novalidate","",1,"space-y-4",3,"ngSubmit"],[1,"grid","grid-cols-1","gap-4","sm:grid-cols-2"],["for","name",1,"block","text-sm","font-medium","text-text","mb-1"],["aria-hidden","true",1,"text-red-500"],["id","name","type","text","name","name","required","","minlength","2","maxlength","100","autocomplete","name","aria-required","true",1,"w-full","px-3","py-2","text-sm","border","border-border","rounded-lg","bg-background","text-text",3,"ngModelChange","ngModel"],[1,"mt-1","text-xs","text-red-600","dark:text-red-400"],["for","company",1,"block","text-sm","font-medium","text-text","mb-1"],["
1id","company","type","text","name","company","maxlength","200","autocomplete","organization",1,"w-full","px-3","py-2","text-sm","border","border-border","rounded-lg","bg-background","text-text",3,"ngModelChange","ngModel"],["for","email",1,"block","text-sm","font-medium","text-text","mb-1"],["id","email","type","email","name","email","required","","maxlength","254","autocomplete","email","inputmode","email","aria-required","true",1,"w-full","px-3","py-2","text-sm","border","border-border","rounded-lg","bg-background","text-text",3,"ngModelChange","ngModel"],["for","phone",1,"block","text-sm","font-medium","text-text","mb-1"],["id","phone","type","tel","name","phone","required","","placeholder","+15551234567","autocomplete","tel","inputmode","tel","aria-required","true",1,"w-full","px-3","py-2","text-sm","border","border-border","rounded-lg","bg-background","text-text",3,"ngModelChange","ngModel"],[1,"mt-1","text-xs","text-secondary"],["for","message",1,"block","text-sm","font-medium","text-text","mb-1"],[1,"text-secondary","text-xs"],["id","message","name","message","rows","3","maxlength","1000",1,"w-full","px-3","py-2","text-sm","border","border-border","rounded-lg","bg-background","text-text",3,"ngModelChange","ngModel"],[1,"flex","items-start","gap-3","cursor-pointer","pt-2"],["type","checkbox","name","smsConsent",1,"mt-0.5","w-4","h-4","text-blue-600","bg-background","border-border","rounded",3,"ngModelChange","ngModel"],[1,"text-xs","text-secondary","leading-relaxed"],["href","https://livestreampro.ai/privacy","target","_blank","rel","noopener",1,"underline","hover:text-text"],[1,"flex","items-center","gap-2","text-sm","text-red-600","dark:text-red-400"],["type","submit",1,"w-full","px-4","py-2.5","text-sm","font-medium","text-white","bg-blue-600","hover:bg-blue-700","rounded-lg","disabled:opacity-50","flex","items-center","justify-center","gap-2",3,"disabled"],[3,"img","size"],["type","button",1,"px-4","py-1.5","text-sm","font-medium","text-white","bg-blue-600","hover:bg-blue-700","rounded-lg","disabled:opacity-50",3,"click","disabled"]],template:function(e,r){if(e&1&&(i(0,"div",0)(1,"div",1),_(2,se,7,3,"div",2)(3,me,12,4,"div",2)(4,Be,17,7,"div",3),o()()),e&2){let l;a(2),g((l=r.fatalError())?2:r.success()?3:4,l)}},dependencies:[A,Z,W,L,$,O,q,U,G,X,R,j,te,ee],encapsulation:2,changeDetection:0})};export{oe as BookDemoComponent};
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.