var __gh = require("react").createElement, __gf = require("react").Fragment; var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var stdin_exports={};__export(stdin_exports,{default:()=>stdin_default,featureConfig:()=>featureConfig});module.exports=__toCommonJS(stdin_exports);var dataSources=[{table:"crm__calendarios",access:"public:read",sensitive:["equipo","ultimo_asignado"]}];var import_react=require("react"),INK="#111113",MUTED="#71717a",FAINT="#a1a1aa",HAIRLINE="#e5e5e7",fmtDiaLargo=new Intl.DateTimeFormat("es-ES",{timeZone:"Europe/Madrid",weekday:"long",day:"numeric",month:"long"}),fmtDiaChip=new Intl.DateTimeFormat("es-ES",{timeZone:"Europe/Madrid",weekday:"short",day:"numeric"}),fmtHora=new Intl.DateTimeFormat("es-ES",{timeZone:"Europe/Madrid",hour:"2-digit",minute:"2-digit"}),fmtClave=new Intl.DateTimeFormat("en-CA",{timeZone:"Europe/Madrid"});function proximosDias(cal){let abiertos=String(cal?.dias_semana||"1,2,3,4,5").split(",").map(s=>Number(s.trim())),salida=[];for(let i=0;i<21;i++){let clave=fmtClave.format(new Date(Date.now()+i*864e5)),alMediodia=new Date(clave+"T12:00:00Z"),wd=(alMediodia.getUTCDay()+6)%7+1;abiertos.includes(wd)&&salida.push({clave,fecha:alMediodia})}return salida}function Flujo({gufi,calendarios}){let ofrecidos=(0,import_react.useMemo)(()=>calendarios.filter(c=>!c.__deleted_at__&&c.activo===!0&&c.tipo==="autoagenda"),[calendarios]),[paso,setPaso]=(0,import_react.useState)("calendario"),[cal,setCal]=(0,import_react.useState)(null),[dia,setDia]=(0,import_react.useState)(""),[huecos,setHuecos]=(0,import_react.useState)(null),[hueco,setHueco]=(0,import_react.useState)(""),[cargandoHuecos,setCargandoHuecos]=(0,import_react.useState)(!1),[enviando,setEnviando]=(0,import_react.useState)(!1),[error,setError]=(0,import_react.useState)(""),[hecha,setHecha]=(0,import_react.useState)(null),[nombre,setNombre]=(0,import_react.useState)(""),[apellidos,setApellidos]=(0,import_react.useState)(""),[telefono,setTelefono]=(0,import_react.useState)(""),[email,setEmail]=(0,import_react.useState)(""),[objetivo,setObjetivo]=(0,import_react.useState)("");(0,import_react.useEffect)(()=>{paso==="calendario"&&ofrecidos.length===1&&(setCal(ofrecidos[0]),setPaso("dia"))},[paso,ofrecidos]),(0,import_react.useEffect)(()=>{if(!cal||!dia){setHuecos(null);return}let vivo=!0;return setCargandoHuecos(!0),setHuecos(null),setHueco(""),setError(""),Promise.resolve(gufi.publicAutomation("citas_huecos").run({calendario:cal.id,fecha:dia})).then(r=>{let res=r&&typeof r=="object"&&"result"in r?r.result:r;vivo&&setHuecos(Array.isArray(res?.huecos)?res.huecos:[])}).catch(e=>{vivo&&(setHuecos([]),setError(e?.message||"No se pudieron cargar los horarios."))}).finally(()=>{vivo&&setCargandoHuecos(!1)}),()=>{vivo=!1}},[cal?.id,dia]);let reservar=async()=>{if(setError(""),!nombre.trim()){setError("Dinos tu nombre.");return}if(!telefono.trim()&&!email.trim()){setError("Deja un tel\xE9fono o un email para confirmarte la cita.");return}setEnviando(!0);try{let r=await gufi.publicAutomation("citas_reservar").run({calendario:cal.id,inicio:hueco,nombre:nombre.trim(),apellidos:apellidos.trim(),telefono:telefono.trim(),email:email.trim(),objetivo:objetivo.trim()}),res=r&&typeof r=="object"&&"result"in r?r.result:r;if(!res?.ok)throw new Error("No se pudo completar la reserva.");setHecha({cuando:res.cuando,calendario:res.calendario}),setPaso("hecha")}catch(e){setError(e?.message||"No se pudo completar la reserva. Prueba con otro horario.")}finally{setEnviando(!1)}},dias=(0,import_react.useMemo)(()=>cal?proximosDias(cal):[],[cal?.id]);return ofrecidos.length===0?__gh("p",{style:{color:MUTED,fontSize:15},"data-gufi-src":"sections/flujo.tsx:111"},"Ahora mismo no hay citas que se puedan reservar online. Ll\xE1manos y te buscamos hueco."):paso==="hecha"&&hecha?__gh("div",{style:{textAlign:"center",padding:"28px 0"},"data-gufi-src":"sections/flujo.tsx:116"},__gh("div",{"aria-hidden":!0,style:{width:52,height:52,borderRadius:999,background:"#111113",color:"#fff",display:"grid",placeItems:"center",margin:"0 auto 18px",fontSize:24},"data-gufi-src":"sections/flujo.tsx:117"},"\u2713"),__gh("h2",{style:{fontSize:24,fontWeight:650,color:INK,margin:"0 0 8px",letterSpacing:"-0.5px"},"data-gufi-src":"sections/flujo.tsx:118"},"Cita confirmada"),__gh("p",{style:{fontSize:16,color:INK,margin:"0 0 4px"},"data-gufi-src":"sections/flujo.tsx:119"},hecha.calendario),__gh("p",{style:{fontSize:16,color:MUTED,margin:0,textTransform:"capitalize"},"data-gufi-src":"sections/flujo.tsx:120"},hecha.cuando),__gh("p",{style:{fontSize:14,color:MUTED,marginTop:18},"data-gufi-src":"sections/flujo.tsx:121"},"Te esperamos en ESC Sports Center, Las Rozas. Si te llega el email de confirmaci\xF3n, ah\xED tienes c\xF3mo avisarnos de cualquier cambio.")):__gh("div",{"data-gufi-src":"sections/flujo.tsx:127"},paso==="calendario"&&__gh("div",{style:{display:"grid",gap:10},"data-gufi-src":"sections/flujo.tsx:130"},__gh("h2",{style:{fontSize:18,fontWeight:600,color:INK,margin:"0 0 2px"},"data-gufi-src":"sections/flujo.tsx:131"},"\xBFQu\xE9 quieres reservar?"),ofrecidos.map(c=>__gh("button",{key:c.id,type:"button",onClick:()=>{setCal(c),setPaso("dia")},style:{textAlign:"left",cursor:"pointer",border:`1px solid ${HAIRLINE}`,borderRadius:14,padding:"16px 18px",background:"#fff"},"data-gufi-src":"sections/flujo.tsx:133"},__gh("span",{style:{display:"block",fontSize:16,fontWeight:600,color:INK},"data-gufi-src":"sections/flujo.tsx:139"},c.nombre),__gh("span",{style:{display:"block",fontSize:13.5,color:MUTED,marginTop:2},"data-gufi-src":"sections/flujo.tsx:140"},Number(c.duracion_min)||30," minutos",c.descripcion?` \xB7 ${c.descripcion}`:"")))),paso==="dia"&&cal&&__gh("div",{"data-gufi-src":"sections/flujo.tsx:150"},__gh(Volver,{onClick:()=>{ofrecidos.length>1&&(setPaso("calendario"),setCal(null)),setDia(""),setHueco("")},oculto:ofrecidos.length===1&&!dia}),__gh("h2",{style:{fontSize:18,fontWeight:600,color:INK,margin:"0 0 2px"},"data-gufi-src":"sections/flujo.tsx:152"},cal.nombre),__gh("p",{style:{fontSize:13.5,color:MUTED,margin:"0 0 14px"},"data-gufi-src":"sections/flujo.tsx:153"},Number(cal.duracion_min)||30," minutos \xB7 elige d\xEDa y hora (hora de Madrid)"),__gh("div",{style:{display:"flex",gap:8,overflowX:"auto",paddingBottom:10},"data-gufi-src":"sections/flujo.tsx:155"},dias.map(d=>__gh("button",{key:d.clave,type:"button",onClick:()=>setDia(d.clave),style:{flexShrink:0,cursor:"pointer",border:`1px solid ${dia===d.clave?INK:HAIRLINE}`,background:dia===d.clave?INK:"#fff",color:dia===d.clave?"#fff":INK,borderRadius:12,padding:"10px 14px",fontSize:13.5,fontWeight:600,textTransform:"capitalize"},"data-gufi-src":"sections/flujo.tsx:157"},fmtDiaChip.format(d.fecha).replace(".","")))),dia&&__gh("div",{style:{marginTop:10},"data-gufi-src":"sections/flujo.tsx:169"},__gh("p",{style:{fontSize:13.5,color:MUTED,margin:"0 0 10px",textTransform:"capitalize"},"data-gufi-src":"sections/flujo.tsx:170"},fmtDiaLargo.format(new Date(dia+"T12:00:00Z"))),cargandoHuecos&&__gh("p",{style:{fontSize:14,color:FAINT},"data-gufi-src":"sections/flujo.tsx:173"},"Buscando horarios\u2026"),!cargandoHuecos&&huecos&&huecos.length===0&&__gh("p",{style:{fontSize:14,color:MUTED},"data-gufi-src":"sections/flujo.tsx:175"},"Ese d\xEDa est\xE1 completo. Prueba otro."),!cargandoHuecos&&huecos&&huecos.length>0&&__gh("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(84px, 1fr))",gap:8},"data-gufi-src":"sections/flujo.tsx:178"},huecos.map(h=>__gh("button",{key:h,type:"button",onClick:()=>{setHueco(h),setPaso("datos"),setError("")},style:{cursor:"pointer",border:`1px solid ${HAIRLINE}`,background:"#fff",color:INK,borderRadius:10,padding:"10px 0",fontSize:14,fontWeight:600,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"sections/flujo.tsx:180"},fmtHora.format(new Date(h))))))),paso==="datos"&&cal&&hueco&&__gh("div",{"data-gufi-src":"sections/flujo.tsx:198"},__gh(Volver,{onClick:()=>{setPaso("dia"),setHueco("")}}),__gh("h2",{style:{fontSize:18,fontWeight:600,color:INK,margin:"0 0 2px"},"data-gufi-src":"sections/flujo.tsx:200"},cal.nombre),__gh("p",{style:{fontSize:13.5,color:MUTED,margin:"0 0 16px",textTransform:"capitalize"},"data-gufi-src":"sections/flujo.tsx:201"},fmtDiaLargo.format(new Date(hueco))," \xB7 ",fmtHora.format(new Date(hueco))," h"),__gh("div",{style:{display:"grid",gap:10},"data-gufi-src":"sections/flujo.tsx:205"},__gh(Campo,{etiqueta:"Nombre",valor:nombre,onCambia:setNombre,autoComplete:"given-name"}),__gh(Campo,{etiqueta:"Apellidos",valor:apellidos,onCambia:setApellidos,autoComplete:"family-name"}),__gh(Campo,{etiqueta:"Tel\xE9fono",valor:telefono,onCambia:setTelefono,tipo:"tel",autoComplete:"tel"}),__gh(Campo,{etiqueta:"Email",valor:email,onCambia:setEmail,tipo:"email",autoComplete:"email"}),__gh(Campo,{etiqueta:"\xBFCu\xE1l es tu objetivo? (opcional)",valor:objetivo,onCambia:setObjetivo})),error&&__gh("p",{style:{fontSize:13.5,color:"#b91c1c",marginTop:12},"data-gufi-src":"sections/flujo.tsx:213"},error),__gh("button",{type:"button",onClick:reservar,disabled:enviando,style:{marginTop:16,width:"100%",height:48,borderRadius:12,border:"none",background:INK,color:"#fff",fontSize:15.5,fontWeight:600,cursor:enviando?"default":"pointer",opacity:enviando?.6:1},"data-gufi-src":"sections/flujo.tsx:215"},enviando?"Reservando\u2026":"Confirmar la cita"),__gh("p",{style:{fontSize:12,color:FAINT,marginTop:10,textAlign:"center"},"data-gufi-src":"sections/flujo.tsx:223"},"Usamos tus datos solo para gestionar esta cita y avisarte de ella.")),paso==="dia"&&error&&__gh("p",{style:{fontSize:13.5,color:"#b91c1c",marginTop:12},"data-gufi-src":"sections/flujo.tsx:229"},error))}function Volver({onClick,oculto}){return oculto?null:__gh("button",{type:"button",onClick,style:{border:"none",background:"transparent",padding:0,marginBottom:14,cursor:"pointer",fontSize:13.5,fontWeight:500,color:MUTED},"data-gufi-src":"sections/flujo.tsx:237"},"\u2190 Volver")}function Campo({etiqueta,valor,onCambia,tipo,autoComplete}){return __gh("label",{style:{display:"block"},"data-gufi-src":"sections/flujo.tsx:247"},__gh("span",{style:{display:"block",fontSize:12.5,fontWeight:500,color:MUTED,marginBottom:4},"data-gufi-src":"sections/flujo.tsx:248"},etiqueta),__gh("input",{type:tipo||"text",value:valor,autoComplete,onChange:e=>onCambia(e.target.value),style:{width:"100%",height:44,borderRadius:10,border:`1px solid ${HAIRLINE}`,padding:"0 12px",fontSize:15,color:INK,background:"#fff",outline:"none",boxSizing:"border-box"},"data-gufi-src":"sections/flujo.tsx:249"}))}function Reserva({id,gufi}){let{data:calendarios,loading}=gufi.useData("crm__calendarios",{pageSize:100});return __gh("div",{style:{minHeight:"100dvh",background:"#fafafa",fontFamily:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif"},"data-gufi-src":"page.tsx:15"},__gh("header",{style:{background:"#fff",borderBottom:"1px solid #e5e5e7"},"data-gufi-src":"page.tsx:16"},__gh("div",{style:{maxWidth:560,margin:"0 auto",padding:"18px 20px"},"data-gufi-src":"page.tsx:17"},__gh("span",{style:{fontSize:15,fontWeight:700,letterSpacing:"-0.2px",color:"#111113"},"data-gufi-src":"page.tsx:18"},"ESC Sports Center"),__gh("span",{style:{fontSize:13,color:"#a1a1aa",marginLeft:10},"data-gufi-src":"page.tsx:19"},"Las Rozas"))),__gh("main",{style:{maxWidth:560,margin:"0 auto",padding:"28px 20px 60px"},"data-gufi-src":"page.tsx:23"},__gh("h1",{style:{fontSize:28,fontWeight:700,letterSpacing:"-0.8px",color:"#111113",margin:"0 0 6px"},"data-gufi-src":"page.tsx:24"},"Reserva tu cita"),__gh("p",{style:{fontSize:15,color:"#71717a",margin:"0 0 24px"},"data-gufi-src":"page.tsx:27"},"Elige el d\xEDa y la hora que mejor te vengan. Tardas menos de un minuto."),__gh("div",{style:{background:"#fff",border:"1px solid #e5e5e7",borderRadius:16,padding:20},"data-gufi-src":"page.tsx:31"},loading?__gh("p",{style:{fontSize:14,color:"#a1a1aa",margin:0},"data-gufi-src":"page.tsx:33"},"Cargando\u2026"):__gh(Flujo,{gufi,calendarios}))))}var featureConfig={dataSources,meta:{name:"Reserva online",version:"1.0.0"}};var stdin_default=Reserva;