@bigz-app/booking-widget 0.1.23 → 0.1.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -6669,15 +6669,8 @@ ZodNullable.create;
6669
6669
 
6670
6670
  function n(){return n=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t]);}return e},n.apply(this,arguments)}const r=["children","options"],o=["allowFullScreen","allowTransparency","autoComplete","autoFocus","autoPlay","cellPadding","cellSpacing","charSet","classId","colSpan","contentEditable","contextMenu","crossOrigin","encType","formAction","formEncType","formMethod","formNoValidate","formTarget","frameBorder","hrefLang","inputMode","keyParams","keyType","marginHeight","marginWidth","maxLength","mediaGroup","minLength","noValidate","radioGroup","readOnly","rowSpan","spellCheck","srcDoc","srcLang","srcSet","tabIndex","useMap"].reduce((e,n)=>(e[n.toLowerCase()]=n,e),{class:"className",for:"htmlFor"}),a={amp:"&",apos:"'",gt:">",lt:"<",nbsp:" ",quot:"“"},c=["style","script","pre"],i=["src","href","data","formAction","srcDoc","action"],u=/([-A-Z0-9_:]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|(?:\{((?:\\.|{[^}]*?}|[^}])*)\})))?/gi,l=/mailto:/i,s=/\n{2,}$/,f=/^(\s*>[\s\S]*?)(?=\n\n|$)/,_=/^ *> ?/gm,d=/^(?:\[!([^\]]*)\]\n)?([\s\S]*)/,p=/^ {2,}\n/,y=/^(?:( *[-*_])){3,} *(?:\n *)+\n/,h=/^(?: {1,3})?(`{3,}|~{3,}) *(\S+)? *([^\n]*?)?\n([\s\S]*?)(?:\1\n?|$)/,g=/^(?: {4}[^\n]+\n*)+(?:\n *)+\n?/,m=/^(`+)((?:\\`|(?!\1)`|[^`])+)\1/,k=/^(?:\n *)*\n/,x=/\r\n?/g,v=/^\[\^([^\]]+)](:(.*)((\n+ {4,}.*)|(\n(?!\[\^).+))*)/,q=/^\[\^([^\]]+)]/,b=/\f/g,S=/^---[ \t]*\n(.|\n)*\n---[ \t]*\n/,$=/^\s*?\[(x|\s)\]/,z=/^ *(#{1,6}) *([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/,E=/^ *(#{1,6}) +([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/,A=/^([^\n]+)\n *(=|-){3,} *\n/,R=/^ *(?!<[a-z][^ >/]* ?\/>)<([a-z][^ >/]*) ?((?:[^>]*[^/])?)>\n?(\s*(?:<\1[^>]*?>[\s\S]*?<\/\1>|(?!<\1\b)[\s\S])*?)<\/\1>(?!<\/\1>)\n*/i,B=/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});/gi,L=/^<!--[\s\S]*?(?:-->)/,O=/^(data|aria|x)-[a-z_][a-z\d_.-]*$/,j=/^ *<([a-z][a-z0-9:]*)(?:\s+((?:<.*?>|[^>])*))?\/?>(?!<\/\1>)(\s*\n)?/i,C=/^\{.*\}$/,I=/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,T=/^<([^ >]+@[^ >]+)>/,M=/^<([^ >]+:\/[^ >]+)>/,w=/-([a-z])?/gi,D=/^(\|.*)\n(?: *(\|? *[-:]+ *\|[-| :]*)\n((?:.*\|.*\n)*))?\n?/,F=/^[^\n]+(?: \n|\n{2,})/,P=/^\[([^\]]*)\]:\s+<?([^\s>]+)>?\s*("([^"]*)")?/,Z=/^!\[([^\]]*)\] ?\[([^\]]*)\]/,N=/^\[([^\]]*)\] ?\[([^\]]*)\]/,G=/(\n|^[-*]\s|^#|^ {2,}|^-{2,}|^>\s)/,U=/\t/g,V=/(^ *\||\| *$)/g,H=/^ *:-+: *$/,Q=/^ *:-+ *$/,W=/^ *-+: *$/,J="((?:\\[.*?\\][([].*?[)\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|\\\\\\1|[\\s\\S])+?)",K=RegExp(`^([*_])\\1${J}\\1\\1(?!\\1)`),X=RegExp(`^([*_])${J}\\1(?!\\1)`),Y=RegExp(`^(==)${J}\\1`),ee=RegExp(`^(~~)${J}\\1`),ne=/^(:[a-zA-Z0-9-_]+:)/,re=/^\\([^0-9A-Za-z\s])/,te=/\\([^0-9A-Za-z\s])/g,oe=/^[\s\S](?:(?! \n|[0-9]\.|http)[^=*_~\-\n:<`\\\[!])*/,ae=/^\n+/,ce=/^([ \t]*)/,ie=/(?:^|\n)( *)$/,ue="(?:\\d+\\.)",le="(?:[*+-])";function se(e){return "( *)("+(1===e?ue:le)+") +"}const fe=se(1),_e=se(2);function de(e){return RegExp("^"+(1===e?fe:_e))}const pe=de(1),ye=de(2);function he(e){return RegExp("^"+(1===e?fe:_e)+"[^\\n]*(?:\\n(?!\\1"+(1===e?ue:le)+" )[^\\n]*)*(\\n|$)","gm")}const ge=he(1),me=he(2);function ke(e){const n=1===e?ue:le;return RegExp("^( *)("+n+") [\\s\\S]+?(?:\\n{2,}(?! )(?!\\1"+n+" (?!"+n+" ))\\n*|\\s*\\n*$)")}const xe=ke(1),ve=ke(2);function qe(e,n){const r=1===n,t=r?xe:ve,o=r?ge:me,a=r?pe:ye;return {t:e=>a.test(e),o:je(function(e,n){const r=ie.exec(n.prevCapture);return r&&(n.list||!n.inline&&!n.simple)?t.exec(e=r[1]+e):null}),i:1,u(e,n,t){const c=r?+e[2]:void 0,i=e[0].replace(s,"\n").match(o);let u=false;return {items:i.map(function(e,r){const o=a.exec(e)[0].length,c=RegExp("^ {1,"+o+"}","gm"),l=e.replace(c,"").replace(a,""),s=r===i.length-1,f=-1!==l.indexOf("\n\n")||s&&u;u=f;const _=t.inline,d=t.list;let p;t.list=true,f?(t.inline=false,p=$e(l)+"\n\n"):(t.inline=true,p=$e(l));const y=n(p,t);return t.inline=_,t.list=d,y}),ordered:r,start:c}},l:(n,r,t)=>e(n.ordered?"ol":"ul",{key:t.key,start:"20"===n.type?n.start:void 0},n.items.map(function(n,o){return e("li",{key:o},r(n,t))}))}}const be=RegExp("^\\[((?:\\[[^\\[\\]]*(?:\\[[^\\[\\]]*\\][^\\[\\]]*)*\\]|[^\\[\\]])*)\\]\\(\\s*<?((?:\\([^)]*\\)|[^\\s\\\\]|\\\\.)*?)>?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*\\)"),Se=/^!\[(.*?)\]\( *((?:\([^)]*\)|[^() ])*) *"?([^)"]*)?"?\)/;function $e(e){let n=e.length;for(;n>0&&e[n-1]<=" ";)n--;return e.slice(0,n)}function ze(e,n){return e.startsWith(n)}function Ee(e,n,r){if(Array.isArray(r)){for(let n=0;n<r.length;n++)if(ze(e,r[n]))return true;return false}return r(e,n)}function Ae(e){return e.replace(/[ÀÁÂÃÄÅàáâãä忯]/g,"a").replace(/[çÇ]/g,"c").replace(/[ðÐ]/g,"d").replace(/[ÈÉÊËéèêë]/g,"e").replace(/[ÏïÎîÍíÌì]/g,"i").replace(/[Ññ]/g,"n").replace(/[øØœŒÕõÔôÓóÒò]/g,"o").replace(/[ÜüÛûÚúÙù]/g,"u").replace(/[ŸÿÝý]/g,"y").replace(/[^a-z0-9- ]/gi,"").replace(/ /gi,"-").toLowerCase()}function Re(e){return W.test(e)?"right":H.test(e)?"center":Q.test(e)?"left":null}function Be(e,n,r,t){const o=r.inTable;r.inTable=true;let a=[[]],c="";function i(){if(!c)return;const e=a[a.length-1];e.push.apply(e,n(c,r)),c="";}return e.trim().split(/(`[^`]*`|\\\||\|)/).filter(Boolean).forEach((e,n,r)=>{"|"===e.trim()&&(i(),t)?0!==n&&n!==r.length-1&&a.push([]):c+=e;}),i(),r.inTable=o,a}function Le(e,n,r){r.inline=true;const t=e[2]?e[2].replace(V,"").split("|").map(Re):[],o=e[3]?function(e,n,r){return e.trim().split("\n").map(function(e){return Be(e,n,r,true)})}(e[3],n,r):[],a=Be(e[1],n,r,!!o.length);return r.inline=false,o.length?{align:t,cells:o,header:a,type:"25"}:{children:a,type:"21"}}function Oe(e,n){return null==e.align[n]?{}:{textAlign:e.align[n]}}function je(e){return e.inline=1,e}function Ce(e){return je(function(n,r){return r.inline?e.exec(n):null})}function Ie(e){return je(function(n,r){return r.inline||r.simple?e.exec(n):null})}function Te(e){return function(n,r){return r.inline||r.simple?null:e.exec(n)}}function Me(e){return je(function(n){return e.exec(n)})}const we=/(javascript|vbscript|data(?!:image)):/i;function De(e){try{const n=decodeURIComponent(e).replace(/[^A-Za-z0-9/:]/g,"");if(we.test(n))return null}catch(e){return null}return e}function Fe(e){return e?e.replace(te,"$1"):e}function Pe(e,n,r){const t=r.inline||false,o=r.simple||false;r.inline=true,r.simple=true;const a=e(n,r);return r.inline=t,r.simple=o,a}function Ze(e,n,r){const t=r.inline||false,o=r.simple||false;r.inline=false,r.simple=true;const a=e(n,r);return r.inline=t,r.simple=o,a}function Ne(e,n,r){const t=r.inline||false;r.inline=false;const o=e(n,r);return r.inline=t,o}const Ge=(e,n,r)=>({children:Pe(n,e[2],r)});function Ue(){return {}}function Ve(){return null}function He(...e){return e.filter(Boolean).join(" ")}function Qe(e,n,r){let t=e;const o=n.split(".");for(;o.length&&(t=t[o[0]],void 0!==t);)o.shift();return t||r}function We(r="",t={}){t.overrides=t.overrides||{},t.namedCodesToUnicode=t.namedCodesToUnicode?n({},a,t.namedCodesToUnicode):a;const s=t.slugify||Ae,V=t.sanitizer||De,H=t.createElement||React__default.createElement,Q=[f,h,g,t.enforceAtxHeadings?E:z,A,D,xe,ve],W=[...Q,F,R,L,j];function J(e,r,...o){const a=Qe(t.overrides,e+".props",{});return H(function(e,n){const r=Qe(n,e);return r?"function"==typeof r||"object"==typeof r&&"render"in r?r:Qe(n,e+".component",e):e}(e,t.overrides),n({},r,a,{className:He(null==r?void 0:r.className,a.className)||void 0}),...o)}function te(e){e=e.replace(S,"");let n=false;t.forceInline?n=true:t.forceBlock||(n=false===G.test(e));const r=_e(fe(n?e:$e(e).replace(ae,"")+"\n\n",{inline:n}));for(;"string"==typeof r[r.length-1]&&!r[r.length-1].trim();)r.pop();if(null===t.wrapper)return r;const o=t.wrapper||(n?"span":"div");let a;if(r.length>1||t.forceWrapper)a=r;else {if(1===r.length)return a=r[0],"string"==typeof a?J("span",{key:"outer"},a):a;a=null;}return H(o,{key:"outer"},a)}function ie(e,n){if(!n||!n.trim())return null;const r=n.match(u);return r?r.reduce(function(n,r){const t=r.indexOf("=");if(-1!==t){const a=function(e){return -1!==e.indexOf("-")&&null===e.match(O)&&(e=e.replace(w,function(e,n){return n.toUpperCase()})),e}(r.slice(0,t)).trim(),c=function(e){const n=e[0];return ('"'===n||"'"===n)&&e.length>=2&&e[e.length-1]===n?e.slice(1,-1):e}(r.slice(t+1).trim()),u=o[a]||a;if("ref"===u)return n;const l=n[u]=function(e,n,r,t){return "style"===n?function(e){const n=[];let r="",t=false,o=false,a="";if(!e)return n;for(let c=0;c<e.length;c++){const i=e[c];if('"'!==i&&"'"!==i||t||(o?i===a&&(o=false,a=""):(o=true,a=i)),"("===i&&r.endsWith("url")?t=true:")"===i&&t&&(t=false),";"!==i||o||t)r+=i;else {const e=r.trim();if(e){const r=e.indexOf(":");if(r>0){const t=e.slice(0,r).trim(),o=e.slice(r+1).trim();n.push([t,o]);}}r="";}}const c=r.trim();if(c){const e=c.indexOf(":");if(e>0){const r=c.slice(0,e).trim(),t=c.slice(e+1).trim();n.push([r,t]);}}return n}(r).reduce(function(n,[r,o]){return n[r.replace(/(-[a-z])/g,e=>e[1].toUpperCase())]=t(o,e,r),n},{}):-1!==i.indexOf(n)?t(Fe(r),e,n):(r.match(C)&&(r=Fe(r.slice(1,r.length-1))),"true"===r||"false"!==r&&r)}(e,a,c,V);"string"==typeof l&&(R.test(l)||j.test(l))&&(n[u]=te(l.trim()));}else "style"!==r&&(n[o[r]||r]=true);return n},{}):null}const ue=[],le={},se={0:{t:[">"],o:Te(f),i:1,u(e,n,r){const[,t,o]=e[0].replace(_,"").match(d);return {alert:t,children:n(o,r)}},l(e,n,r){const t={key:r.key};return e.alert&&(t.className="markdown-alert-"+s(e.alert.toLowerCase(),Ae),e.children.unshift({attrs:{},children:[{type:"27",text:e.alert}],noInnerParse:true,type:"11",tag:"header"})),J("blockquote",t,n(e.children,r))}},1:{o:Me(p),i:1,u:Ue,l:(e,n,r)=>J("br",{key:r.key})},2:{t:e=>{const n=e[0];return "-"===n||"*"===n||"_"===n},o:Te(y),i:1,u:Ue,l:(e,n,r)=>J("hr",{key:r.key})},3:{t:[" "],o:Te(g),i:0,u:e=>({lang:void 0,text:Fe($e(e[0].replace(/^ {4}/gm,"")))}),l:(e,r,t)=>J("pre",{key:t.key},J("code",n({},e.attrs,{className:e.lang?"lang-"+e.lang:""}),e.text))},4:{t:["```","~~~"],o:Te(h),i:0,u:e=>({attrs:ie("code",e[3]||""),lang:e[2]||void 0,text:e[4],type:"3"})},5:{t:["`"],o:Ie(m),i:3,u:e=>({text:Fe(e[2])}),l:(e,n,r)=>J("code",{key:r.key},e.text)},6:{t:["[^"],o:Te(v),i:0,u:e=>(ue.push({footnote:e[2],identifier:e[1]}),{}),l:Ve},7:{t:["[^"],o:Ce(q),i:1,u:e=>({target:"#"+s(e[1],Ae),text:e[1]}),l:(e,n,r)=>J("a",{key:r.key,href:V(e.target,"a","href")},J("sup",{key:r.key},e.text))},8:{t:["[ ]","[x]"],o:Ce($),i:1,u:e=>({completed:"x"===e[1].toLowerCase()}),l:(e,n,r)=>J("input",{checked:e.completed,key:r.key,readOnly:true,type:"checkbox"})},9:{t:["#"],o:Te(t.enforceAtxHeadings?E:z),i:1,u:(e,n,r)=>({children:Pe(n,e[2],r),id:s(e[2],Ae),level:e[1].length}),l:(e,n,r)=>J("h"+e.level,{id:e.id,key:r.key},n(e.children,r))},10:{o:Te(A),i:0,u:(e,n,r)=>({children:Pe(n,e[1],r),level:"="===e[2]?1:2,type:"9"})},11:{t:["<"],o:Me(R),i:1,u(e,n,r){const[,t]=e[3].match(ce),o=RegExp("^"+t,"gm"),a=e[3].replace(o,""),i=(u=a,W.some(e=>e.test(u))?Ne:Pe);var u;const l=e[1].toLowerCase(),s=-1!==c.indexOf(l),f=(s?l:e[1]).trim(),_={attrs:ie(f,e[2]),noInnerParse:s,tag:f};if(r.inAnchor=r.inAnchor||"a"===l,s)_.text=e[3];else {const e=r.inHTML;r.inHTML=true,_.children=i(n,a,r),r.inHTML=e;}return r.inAnchor=false,_},l:(e,r,t)=>J(e.tag,n({key:t.key},e.attrs),e.text||(e.children?r(e.children,t):""))},13:{t:["<"],o:Me(j),i:1,u(e){const n=e[1].trim();return {attrs:ie(n,e[2]||""),tag:n}},l:(e,r,t)=>J(e.tag,n({},e.attrs,{key:t.key}))},12:{t:["\x3c!--"],o:Me(L),i:1,u:()=>({}),l:Ve},14:{t:["!["],o:Ie(Se),i:1,u:e=>({alt:Fe(e[1]),target:Fe(e[2]),title:Fe(e[3])}),l:(e,n,r)=>J("img",{key:r.key,alt:e.alt||void 0,title:e.title||void 0,src:V(e.target,"img","src")})},15:{t:["["],o:Ce(be),i:3,u:(e,n,r)=>({children:Ze(n,e[1],r),target:Fe(e[2]),title:Fe(e[3])}),l:(e,n,r)=>J("a",{key:r.key,href:V(e.target,"a","href"),title:e.title},n(e.children,r))},16:{t:["<"],o:Ce(M),i:0,u:e=>({children:[{text:e[1],type:"27"}],target:e[1],type:"15"})},17:{t:(e,n)=>!n.inAnchor&&!t.disableAutoLink&&(ze(e,"http://")||ze(e,"https://")),o:Ce(I),i:0,u:e=>({children:[{text:e[1],type:"27"}],target:e[1],title:void 0,type:"15"})},18:{t:["<"],o:Ce(T),i:0,u(e){let n=e[1],r=e[1];return l.test(r)||(r="mailto:"+r),{children:[{text:n.replace("mailto:",""),type:"27"}],target:r,type:"15"}}},20:qe(J,1),33:qe(J,2),19:{o:Te(k),i:3,u:Ue,l:()=>"\n"},21:{o:je(function(e,n){if(n.inline||n.simple||n.inHTML&&-1===e.indexOf("\n\n")&&-1===n.prevCapture.indexOf("\n\n"))return null;let r="";e.split("\n").every(e=>(e+="\n",!Q.some(n=>n.test(e))&&(r+=e,!!e.trim())));const t=$e(r);return ""===t?null:[r,,t]}),i:3,u:Ge,l:(e,n,r)=>J("p",{key:r.key},n(e.children,r))},22:{t:["["],o:Ce(P),i:0,u:e=>(le[e[1]]={target:e[2],title:e[4]},{}),l:Ve},23:{t:["!["],o:Ie(Z),i:0,u:e=>({alt:e[1]?Fe(e[1]):void 0,ref:e[2]}),l:(e,n,r)=>le[e.ref]?J("img",{key:r.key,alt:e.alt,src:V(le[e.ref].target,"img","src"),title:le[e.ref].title}):null},24:{t:e=>"["===e[0]&&-1===e.indexOf("]("),o:Ce(N),i:0,u:(e,n,r)=>({children:n(e[1],r),fallbackChildren:e[0],ref:e[2]}),l:(e,n,r)=>le[e.ref]?J("a",{key:r.key,href:V(le[e.ref].target,"a","href"),title:le[e.ref].title},n(e.children,r)):J("span",{key:r.key},e.fallbackChildren)},25:{t:["|"],o:Te(D),i:1,u:Le,l(e,n,r){const t=e;return J("table",{key:r.key},J("thead",null,J("tr",null,t.header.map(function(e,o){return J("th",{key:o,style:Oe(t,o)},n(e,r))}))),J("tbody",null,t.cells.map(function(e,o){return J("tr",{key:o},e.map(function(e,o){return J("td",{key:o,style:Oe(t,o)},n(e,r))}))})))}},27:{o:je(function(e,n){let r;return ze(e,":")&&(r=ne.exec(e)),r||oe.exec(e)}),i:4,u(e){const n=e[0];return {text:-1===n.indexOf("&")?n:n.replace(B,(e,n)=>t.namedCodesToUnicode[n]||e)}},l:e=>e.text},28:{t:["**","__"],o:Ie(K),i:2,u:(e,n,r)=>({children:n(e[2],r)}),l:(e,n,r)=>J("strong",{key:r.key},n(e.children,r))},29:{t:e=>{const n=e[0];return ("*"===n||"_"===n)&&e[1]!==n},o:Ie(X),i:3,u:(e,n,r)=>({children:n(e[2],r)}),l:(e,n,r)=>J("em",{key:r.key},n(e.children,r))},30:{t:["\\"],o:Ie(re),i:1,u:e=>({text:e[1],type:"27"})},31:{t:["=="],o:Ie(Y),i:3,u:Ge,l:(e,n,r)=>J("mark",{key:r.key},n(e.children,r))},32:{t:["~~"],o:Ie(ee),i:3,u:Ge,l:(e,n,r)=>J("del",{key:r.key},n(e.children,r))}};true===t.disableParsingRawHTML&&(delete se[11],delete se[13]);const fe=function(e){var n=Object.keys(e);function r(t,o){var a=[];if(o.prevCapture=o.prevCapture||"",t.trim())for(;t;)for(var c=0;c<n.length;){var i=n[c],u=e[i];if(!u.t||Ee(t,o,u.t)){var l=u.o(t,o);if(l&&l[0]){t=t.substring(l[0].length);var s=u.u(l,r,o);o.prevCapture+=l[0],s.type||(s.type=i),a.push(s);break}c++;}else c++;}return o.prevCapture="",a}return n.sort(function(n,r){return e[n].i-e[r].i||(n<r?-1:1)}),function(e,n){return r(function(e){return e.replace(x,"\n").replace(b,"").replace(U," ")}(e),n)}}(se),_e=(de=function(e,n){return function(r,t,o){const a=e[r.type].l;return n?n(()=>a(r,t,o),r,t,o):a(r,t,o)}}(se,t.renderRule),function e(n,r={}){if(Array.isArray(n)){const t=r.key,o=[];let a=false;for(let t=0;t<n.length;t++){r.key=t;const c=e(n[t],r),i="string"==typeof c;i&&a?o[o.length-1]+=c:null!==c&&o.push(c),a=i;}return r.key=t,o}return de(n,e,r)});var de;const pe=te(r);return ue.length?J("div",null,pe,J("footer",{key:"footer"},ue.map(function(e){return J("div",{id:s(e.identifier,Ae),key:e.identifier},e.identifier,_e(fe(e.footnote,{inline:true})))}))):pe}var Markdown = n=>{let{children:t="",options:o}=n,a=function(e,n){if(null==e)return {};var r,t,o={},a=Object.keys(e);for(t=0;t<a.length;t++)n.indexOf(r=a[t])>=0||(o[r]=e[r]);return o}(n,r);return React__default.cloneElement(We(t,o),a)};
6671
6671
 
6672
- // Helper function to preprocess markdown for underline support
6673
- const preprocessMarkdown$1 = (markdown) => {
6674
- // Convert double underscores to HTML underline tags for React Markdown
6675
- return markdown.replace(/__([^_]+)__/g, "<u>$1</u>");
6676
- };
6677
- const IconCheck$1 = ({ size = 16, color = "#10b981" }) => (jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: jsx("polyline", { points: "20 6 9 17 4 12" }) }));
6678
- const IconWave$1 = ({ size = 20, color = "#0ea5e9" }) => (jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [jsx("path", { d: "M2 18c2-2 6-2 8 0s6 2 8 0 6-2 8 0" }), jsx("path", { d: "M2 12c2-2 6-2 8 0s6 2 8 0 6-2 8 0" }), jsx("path", { d: "M2 6c2-2 6-2 8 0s6 2 8 0 6-2 8 0" })] }));
6679
6672
  // Portal component that renders dialog at document body level
6680
- function DialogPortal({ children, isOpen }) {
6673
+ function DialogPortal({ children, isOpen, zIndex = 999999, }) {
6681
6674
  const [portalRoot, setPortalRoot] = React__default__default.useState(null);
6682
6675
  React__default__default.useEffect(() => {
6683
6676
  if (!isOpen) {
@@ -6709,9 +6702,12 @@ function DialogPortal({ children, isOpen }) {
6709
6702
  "--bw-border-radius-small",
6710
6703
  "--bw-spacing",
6711
6704
  "--bw-spacing-large",
6705
+ "--bw-spacing-small",
6712
6706
  "--bw-font-family",
6713
6707
  "--bw-font-size",
6714
6708
  "--bw-font-size-large",
6709
+ "--bw-font-size-small",
6710
+ "--bw-font-size-xl",
6715
6711
  "--bw-shadow-lg",
6716
6712
  "--bw-shadow-md",
6717
6713
  "--bw-highlight-muted",
@@ -6739,7 +6735,7 @@ function DialogPortal({ children, isOpen }) {
6739
6735
  left: 0;
6740
6736
  width: 100%;
6741
6737
  height: 100%;
6742
- z-index: 999999;
6738
+ z-index: ${zIndex};
6743
6739
  pointer-events: none;
6744
6740
  ${cssProperties}
6745
6741
  `;
@@ -6760,7 +6756,7 @@ function DialogPortal({ children, isOpen }) {
6760
6756
  }
6761
6757
  document.body.style.overflow = "";
6762
6758
  };
6763
- }, [isOpen]);
6759
+ }, [isOpen, zIndex]);
6764
6760
  if (!isOpen || !portalRoot)
6765
6761
  return null;
6766
6762
  return createPortal(jsx("div", { style: {
@@ -6769,7 +6765,8 @@ function DialogPortal({ children, isOpen }) {
6769
6765
  height: "100%",
6770
6766
  }, children: children }), portalRoot);
6771
6767
  }
6772
- function EventTypeDetailsDialog({ isOpen, onClose, eventType, onEventTypeSelect, }) {
6768
+ // Shared dialog wrapper component
6769
+ function DialogWrapper({ isOpen, onClose, children, maxWidth = "700px", className, zIndex = 999999, }) {
6773
6770
  // Get fallback styles from the widget container for cases where CSS variables aren't available
6774
6771
  const [fallbackStyles, setFallbackStyles] = React__default__default.useState({});
6775
6772
  React__default__default.useEffect(() => {
@@ -6806,15 +6803,10 @@ function EventTypeDetailsDialog({ isOpen, onClose, eventType, onEventTypeSelect,
6806
6803
  return () => {
6807
6804
  document.removeEventListener("keydown", handleEscape);
6808
6805
  };
6809
- }, [isOpen]);
6810
- if (!isOpen || !eventType)
6806
+ }, [isOpen, onClose]);
6807
+ if (!isOpen)
6811
6808
  return null;
6812
- const isAvailable = eventType.hasAvailableInstances;
6813
- const handleBookingClick = () => {
6814
- onEventTypeSelect(eventType);
6815
- onClose();
6816
- };
6817
- return (jsx(DialogPortal, { isOpen: isOpen, children: jsx("div", { style: fallbackStyles, children: jsx("div", { style: {
6809
+ return (jsx(DialogPortal, { isOpen: isOpen, zIndex: zIndex, children: jsx("div", { style: fallbackStyles, className: className, children: jsx("div", { style: {
6818
6810
  position: "fixed",
6819
6811
  top: 0,
6820
6812
  left: 0,
@@ -6827,11 +6819,11 @@ function EventTypeDetailsDialog({ isOpen, onClose, eventType, onEventTypeSelect,
6827
6819
  alignItems: "center",
6828
6820
  justifyContent: "center",
6829
6821
  padding: "var(--bw-spacing)",
6830
- zIndex: 999999,
6822
+ zIndex: zIndex,
6831
6823
  }, onClick: onClose, children: jsxs("div", { style: {
6832
6824
  backgroundColor: "var(--bw-surface-color)",
6833
6825
  borderRadius: "var(--bw-border-radius)",
6834
- maxWidth: "700px",
6826
+ maxWidth,
6835
6827
  width: "100%",
6836
6828
  maxHeight: "90vh",
6837
6829
  overflow: "auto",
@@ -6859,181 +6851,199 @@ function EventTypeDetailsDialog({ isOpen, onClose, eventType, onEventTypeSelect,
6859
6851
  e.currentTarget.style.backgroundColor = "var(--bw-border-color)";
6860
6852
  }, onMouseLeave: (e) => {
6861
6853
  e.currentTarget.style.backgroundColor = "var(--bw-surface-color)";
6862
- }, children: "\u00D7" }), jsxs("div", { style: { padding: "var(--bw-spacing-large)" }, children: [jsxs("div", { style: {
6863
- marginBottom: "24px",
6864
- padding: "16px",
6865
- backgroundColor: "var(--bw-background-color)",
6866
- borderRadius: "var(--bw-border-radius)",
6867
- border: `1px solid var(--bw-border-color)`,
6868
- }, children: [jsxs("div", { children: [jsx("div", { style: {
6869
- fontSize: "14px",
6870
- fontWeight: "600",
6871
- color: "var(--bw-highlight-color)",
6872
- marginBottom: "8px",
6873
- fontFamily: "var(--bw-font-family)",
6874
- }, children: eventType.category.name }), jsx("h2", { style: {
6875
- fontSize: "28px",
6876
- fontWeight: "700",
6877
- color: "var(--bw-text-color)",
6878
- marginBottom: "16px",
6879
- lineHeight: "1.3",
6880
- fontFamily: "var(--bw-font-family)",
6881
- margin: "0 0 16px 0",
6882
- }, children: eventType.name })] }), eventType.highlights && eventType.highlights.length > 0 && (jsx("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: jsx("div", { style: { marginBottom: "24px" }, children: jsx("ul", { style: {
6883
- listStyle: "none",
6884
- padding: "0",
6885
- margin: "0",
6886
- display: "flex",
6887
- flexDirection: "column",
6888
- gap: "3px",
6889
- }, children: eventType.highlights
6890
- .filter((highlight) => highlight.trim())
6891
- .map((highlight, index) => (jsxs("li", { style: {
6892
- display: "flex",
6893
- alignItems: "flex-start",
6894
- gap: "10px",
6895
- fontFamily: "var(--bw-font-family)",
6896
- fontSize: "16px",
6897
- lineHeight: "1.6",
6898
- color: "var(--bw-text-color)",
6899
- }, children: [jsx("div", { style: { marginTop: "4px", flexShrink: 0 }, children: jsx(IconCheck$1, { size: 16, color: "var(--bw-success-color)" }) }), jsx("span", { children: highlight.trim() })] }, index))) }) }) }))] }), eventType.description && (jsxs("div", { style: {
6900
- marginBottom: "24px",
6901
- color: "var(--bw-text-muted)",
6902
- fontSize: "16px",
6903
- lineHeight: "1.6",
6854
+ }, children: "\u00D7" }), children] }) }) }) }));
6855
+ }
6856
+
6857
+ // Helper function to preprocess markdown for underline support
6858
+ const preprocessMarkdown$1 = (markdown) => {
6859
+ // Convert double underscores to HTML underline tags for React Markdown
6860
+ return markdown.replace(/__([^_]+)__/g, "<u>$1</u>");
6861
+ };
6862
+ const IconCheck$1 = ({ size = 16, color = "#10b981" }) => (jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: jsx("polyline", { points: "20 6 9 17 4 12" }) }));
6863
+ const IconWave$1 = ({ size = 20, color = "#0ea5e9" }) => (jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [jsx("path", { d: "M2 18c2-2 6-2 8 0s6 2 8 0 6-2 8 0" }), jsx("path", { d: "M2 12c2-2 6-2 8 0s6 2 8 0 6-2 8 0" }), jsx("path", { d: "M2 6c2-2 6-2 8 0s6 2 8 0 6-2 8 0" })] }));
6864
+ function EventTypeDetailsDialog({ isOpen, onClose, eventType, onEventTypeSelect, }) {
6865
+ if (!isOpen || !eventType)
6866
+ return null;
6867
+ const isAvailable = eventType.hasAvailableInstances;
6868
+ const handleBookingClick = () => {
6869
+ onEventTypeSelect(eventType);
6870
+ onClose();
6871
+ };
6872
+ return (jsx(DialogWrapper, { isOpen: isOpen, onClose: onClose, maxWidth: "700px", children: jsxs("div", { style: { padding: "var(--bw-spacing-large)" }, children: [jsxs("div", { style: {
6873
+ marginBottom: "24px",
6874
+ padding: "16px",
6875
+ backgroundColor: "var(--bw-background-color)",
6876
+ borderRadius: "var(--bw-border-radius)",
6877
+ border: `1px solid var(--bw-border-color)`,
6878
+ }, children: [jsxs("div", { children: [jsx("div", { style: {
6879
+ fontSize: "14px",
6880
+ fontWeight: "600",
6881
+ color: "var(--bw-highlight-color)",
6882
+ marginBottom: "8px",
6883
+ fontFamily: "var(--bw-font-family)",
6884
+ }, children: eventType.category.name }), jsx("h2", { style: {
6885
+ fontSize: "28px",
6886
+ fontWeight: "700",
6887
+ color: "var(--bw-text-color)",
6888
+ marginBottom: "16px",
6889
+ lineHeight: "1.3",
6904
6890
  fontFamily: "var(--bw-font-family)",
6905
- padding: "0px 20px",
6906
- }, children: [jsx("style", { dangerouslySetInnerHTML: {
6907
- __html: `
6908
- .bw-markdown-content p {
6909
- margin: 0 0 12px 0 !important;
6910
- color: var(--bw-text-muted) !important;
6911
- font-family: var(--bw-font-family) !important;
6912
- line-height: 1.6 !important;
6913
- }
6914
- .bw-markdown-content p:last-child {
6915
- margin-bottom: 0 !important;
6916
- }
6917
- .bw-markdown-content h2 {
6918
- font-size: 20px !important;
6919
- font-weight: 700 !important;
6920
- color: var(--bw-text-color) !important;
6921
- margin: 20px 0 8px 0 !important;
6922
- line-height: 1.3 !important;
6923
- display: block !important;
6924
- }
6925
- .bw-markdown-content h3 {
6926
- font-size: 18px !important;
6927
- font-weight: 600 !important;
6928
- color: var(--bw-text-color) !important;
6929
- margin: 16px 0 8px 0 !important;
6930
- line-height: 1.3 !important;
6931
- display: block !important;
6932
- }
6933
- .bw-markdown-content strong {
6934
- font-weight: 700 !important;
6935
- color: var(--bw-text-color) !important;
6936
- }
6937
- .bw-markdown-content em {
6938
- font-style: italic !important;
6939
- }
6940
- .bw-markdown-content u {
6941
- text-decoration: underline !important;
6942
- }
6943
- .bw-markdown-content ul {
6944
- margin: 12px 0 !important;
6945
- padding-left: 24px !important;
6946
- list-style-type: disc !important;
6947
- display: block !important;
6948
- }
6949
- .bw-markdown-content ol {
6950
- margin: 12px 0 !important;
6951
- padding-left: 24px !important;
6952
- list-style-type: decimal !important;
6953
- display: block !important;
6954
- }
6955
- .bw-markdown-content li {
6956
- margin-bottom: 4px !important;
6957
- display: list-item !important;
6958
- color: var(--bw-text-muted) !important;
6959
- font-family: var(--bw-font-family) !important;
6960
- line-height: 1.6 !important;
6961
- }
6962
- .bw-markdown-content blockquote {
6963
- margin: 12px 0 !important;
6964
- padding-left: 16px !important;
6965
- border-left: 3px solid var(--bw-border-color) !important;
6966
- font-style: italic !important;
6967
- color: var(--bw-text-muted) !important;
6968
- display: block !important;
6969
- }
6970
- .bw-markdown-content a {
6971
- color: var(--bw-highlight-color) !important;
6972
- text-decoration: underline !important;
6973
- }
6974
- .bw-markdown-content a:hover {
6975
- text-decoration: none !important;
6976
- }
6977
- `,
6978
- } }), jsx("div", { className: "bw-markdown-content", children: Markdown({ children: preprocessMarkdown$1(eventType.description) }) })] })), jsxs("div", { style: {
6891
+ margin: "0 0 16px 0",
6892
+ }, children: eventType.name })] }), eventType.highlights && eventType.highlights.length > 0 && (jsx("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: jsx("div", { style: { marginBottom: "24px" }, children: jsx("ul", { style: {
6893
+ listStyle: "none",
6894
+ padding: "0",
6895
+ margin: "0",
6979
6896
  display: "flex",
6980
- justifyContent: "space-between",
6981
- alignItems: "center",
6982
- marginTop: "32px",
6983
- padding: "20px",
6984
- backgroundColor: "var(--bw-background-color)",
6985
- borderRadius: "var(--bw-border-radius)",
6986
- border: `1px solid var(--bw-border-color)`,
6987
- }, children: [jsxs("div", { children: [jsx("div", { className: "bw-event-type-price", style: {
6988
- fontWeight: "700",
6989
- color: "var(--bw-text-color)",
6990
- fontFamily: "var(--bw-font-family)",
6991
- textAlign: "left",
6992
- }, children: eventType.groupedDurations && jsx("span", { children: eventType.groupedDurations }) }), jsx("div", { className: "bw-event-type-price", style: {
6993
- fontSize: "clamp(1.72rem, 4vw, 32px)",
6994
- fontWeight: "700",
6995
- color: "var(--bw-text-color)",
6996
- fontFamily: "var(--bw-font-family)",
6997
- textAlign: "right",
6998
- }, children: jsxs("span", { children: ["ab ", formatCurrency(eventType.minPrice)] }) })] }), isAvailable && (jsxs("button", { onClick: handleBookingClick, style: {
6999
- backgroundColor: "var(--bw-highlight-color)",
7000
- color: "white",
7001
- padding: "14px 28px",
7002
- border: "none",
7003
- borderRadius: "var(--bw-border-radius)",
7004
- fontSize: "16px",
7005
- fontWeight: "600",
7006
- fontFamily: "var(--bw-font-family)",
7007
- display: "flex",
7008
- alignItems: "center",
7009
- gap: "8px",
7010
- cursor: "pointer",
7011
- transition: "all 0.2s ease",
7012
- }, onMouseEnter: (e) => {
7013
- e.currentTarget.style.opacity = "0.9";
7014
- e.currentTarget.style.transform = "translateY(-1px)";
7015
- }, onMouseLeave: (e) => {
7016
- e.currentTarget.style.opacity = "1";
7017
- e.currentTarget.style.transform = "translateY(0)";
7018
- }, children: [jsx(IconWave$1, { size: 20, color: "white" }), "Jetzt buchen"] }))] })] }), !isAvailable && (jsx("div", { style: {
7019
- position: "absolute",
7020
- inset: 0,
7021
- backgroundColor: "rgba(0, 0, 0, 0.3)",
7022
- backdropFilter: "blur(2px)",
6897
+ flexDirection: "column",
6898
+ gap: "3px",
6899
+ }, children: eventType.highlights
6900
+ .filter((highlight) => highlight.trim())
6901
+ .map((highlight, index) => (jsxs("li", { style: {
6902
+ display: "flex",
6903
+ alignItems: "flex-start",
6904
+ gap: "10px",
6905
+ fontFamily: "var(--bw-font-family)",
6906
+ fontSize: "16px",
6907
+ lineHeight: "1.6",
6908
+ color: "var(--bw-text-color)",
6909
+ }, children: [jsx("div", { style: { marginTop: "4px", flexShrink: 0 }, children: jsx(IconCheck$1, { size: 16, color: "var(--bw-success-color)" }) }), jsx("span", { children: highlight.trim() })] }, index))) }) }) }))] }), eventType.description && (jsxs("div", { style: {
6910
+ marginBottom: "24px",
6911
+ color: "var(--bw-text-muted)",
6912
+ fontSize: "16px",
6913
+ lineHeight: "1.6",
6914
+ fontFamily: "var(--bw-font-family)",
6915
+ padding: "0px 20px",
6916
+ }, children: [jsx("style", { dangerouslySetInnerHTML: {
6917
+ __html: `
6918
+ .bw-markdown-content p {
6919
+ margin: 0 0 12px 0 !important;
6920
+ color: var(--bw-text-muted) !important;
6921
+ font-family: var(--bw-font-family) !important;
6922
+ line-height: 1.6 !important;
6923
+ }
6924
+ .bw-markdown-content p:last-child {
6925
+ margin-bottom: 0 !important;
6926
+ }
6927
+ .bw-markdown-content h2 {
6928
+ font-size: 20px !important;
6929
+ font-weight: 700 !important;
6930
+ color: var(--bw-text-color) !important;
6931
+ margin: 20px 0 8px 0 !important;
6932
+ line-height: 1.3 !important;
6933
+ display: block !important;
6934
+ }
6935
+ .bw-markdown-content h3 {
6936
+ font-size: 18px !important;
6937
+ font-weight: 600 !important;
6938
+ color: var(--bw-text-color) !important;
6939
+ margin: 16px 0 8px 0 !important;
6940
+ line-height: 1.3 !important;
6941
+ display: block !important;
6942
+ }
6943
+ .bw-markdown-content strong {
6944
+ font-weight: 700 !important;
6945
+ color: var(--bw-text-color) !important;
6946
+ }
6947
+ .bw-markdown-content em {
6948
+ font-style: italic !important;
6949
+ }
6950
+ .bw-markdown-content u {
6951
+ text-decoration: underline !important;
6952
+ }
6953
+ .bw-markdown-content ul {
6954
+ margin: 12px 0 !important;
6955
+ padding-left: 24px !important;
6956
+ list-style-type: disc !important;
6957
+ display: block !important;
6958
+ }
6959
+ .bw-markdown-content ol {
6960
+ margin: 12px 0 !important;
6961
+ padding-left: 24px !important;
6962
+ list-style-type: decimal !important;
6963
+ display: block !important;
6964
+ }
6965
+ .bw-markdown-content li {
6966
+ margin-bottom: 4px !important;
6967
+ display: list-item !important;
6968
+ color: var(--bw-text-muted) !important;
6969
+ font-family: var(--bw-font-family) !important;
6970
+ line-height: 1.6 !important;
6971
+ }
6972
+ .bw-markdown-content blockquote {
6973
+ margin: 12px 0 !important;
6974
+ padding-left: 16px !important;
6975
+ border-left: 3px solid var(--bw-border-color) !important;
6976
+ font-style: italic !important;
6977
+ color: var(--bw-text-muted) !important;
6978
+ display: block !important;
6979
+ }
6980
+ .bw-markdown-content a {
6981
+ color: var(--bw-highlight-color) !important;
6982
+ text-decoration: underline !important;
6983
+ }
6984
+ .bw-markdown-content a:hover {
6985
+ text-decoration: none !important;
6986
+ }
6987
+ `,
6988
+ } }), jsx("div", { className: "bw-markdown-content", children: Markdown({ children: preprocessMarkdown$1(eventType.description) }) })] })), jsxs("div", { style: {
6989
+ display: "flex",
6990
+ justifyContent: "space-between",
6991
+ alignItems: "center",
6992
+ marginTop: "32px",
6993
+ padding: "20px",
6994
+ backgroundColor: "var(--bw-background-color)",
6995
+ borderRadius: "var(--bw-border-radius)",
6996
+ border: `1px solid var(--bw-border-color)`,
6997
+ }, children: [jsxs("div", { children: [jsx("div", { className: "bw-event-type-price", style: {
6998
+ fontWeight: "700",
6999
+ color: "var(--bw-text-color)",
7000
+ fontFamily: "var(--bw-font-family)",
7001
+ textAlign: "left",
7002
+ }, children: eventType.groupedDurations && jsx("span", { children: eventType.groupedDurations }) }), jsx("div", { className: "bw-event-type-price", style: {
7003
+ fontSize: "clamp(1.72rem, 4vw, 32px)",
7004
+ fontWeight: "700",
7005
+ color: "var(--bw-text-color)",
7006
+ fontFamily: "var(--bw-font-family)",
7007
+ textAlign: "right",
7008
+ }, children: jsxs("span", { children: ["ab ", formatCurrency(eventType.minPrice)] }) })] }), isAvailable && (jsxs("button", { onClick: handleBookingClick, style: {
7009
+ backgroundColor: "var(--bw-highlight-color)",
7010
+ color: "white",
7011
+ padding: "14px 28px",
7012
+ border: "none",
7013
+ borderRadius: "var(--bw-border-radius)",
7014
+ fontSize: "16px",
7015
+ fontWeight: "600",
7016
+ fontFamily: "var(--bw-font-family)",
7023
7017
  display: "flex",
7024
7018
  alignItems: "center",
7025
- justifyContent: "center",
7026
- borderRadius: "var(--bw-border-radius)",
7027
- }, children: jsx("div", { style: {
7028
- backgroundColor: "rgba(255, 255, 255, 0.9)",
7029
- padding: "16px 32px",
7030
- borderRadius: "var(--bw-border-radius)",
7031
- color: "var(--bw-text-color)",
7032
- fontWeight: "600",
7033
- fontSize: "18px",
7034
- fontFamily: "var(--bw-font-family)",
7035
- boxShadow: "var(--bw-shadow-md)",
7036
- }, children: "Ausgebucht" }) }))] }) }) }) }));
7019
+ gap: "8px",
7020
+ cursor: "pointer",
7021
+ transition: "all 0.2s ease",
7022
+ }, onMouseEnter: (e) => {
7023
+ e.currentTarget.style.opacity = "0.9";
7024
+ e.currentTarget.style.transform = "translateY(-1px)";
7025
+ }, onMouseLeave: (e) => {
7026
+ e.currentTarget.style.opacity = "1";
7027
+ e.currentTarget.style.transform = "translateY(0)";
7028
+ }, children: [jsx(IconWave$1, { size: 20, color: "white" }), "Jetzt buchen"] }))] }), !isAvailable && (jsx("div", { style: {
7029
+ position: "absolute",
7030
+ inset: 0,
7031
+ backgroundColor: "rgba(0, 0, 0, 0.3)",
7032
+ backdropFilter: "blur(2px)",
7033
+ display: "flex",
7034
+ alignItems: "center",
7035
+ justifyContent: "center",
7036
+ borderRadius: "var(--bw-border-radius)",
7037
+ }, children: jsx("div", { style: {
7038
+ backgroundColor: "rgba(255, 255, 255, 0.9)",
7039
+ padding: "16px 32px",
7040
+ borderRadius: "var(--bw-border-radius)",
7041
+ color: "var(--bw-text-color)",
7042
+ fontWeight: "600",
7043
+ fontSize: "18px",
7044
+ fontFamily: "var(--bw-font-family)",
7045
+ boxShadow: "var(--bw-shadow-md)",
7046
+ }, children: "Ausgebucht" }) }))] }) }));
7037
7047
  }
7038
7048
 
7039
7049
  // Carousel navigation icons
@@ -7085,7 +7095,7 @@ const ImageCarousel = ({ images, eventName }) => {
7085
7095
  if (images.length === 0) {
7086
7096
  return jsx(EventImagePlaceholder, {});
7087
7097
  }
7088
- return (jsxs("div", { style: { position: "relative", width: "100%", height: "100%", overflow: "hidden" }, children: [jsx("div", { style: {
7098
+ return (jsxs("div", { style: { position: "relative", width: "100%", height: "100%", overflow: "hidden", borderRadius: "inherit" }, children: [jsx("div", { style: {
7089
7099
  display: "flex",
7090
7100
  width: `${images.length * 100}%`,
7091
7101
  height: "100%",
@@ -7097,6 +7107,7 @@ const ImageCarousel = ({ images, eventName }) => {
7097
7107
  flexShrink: 0,
7098
7108
  overflow: "hidden",
7099
7109
  position: "relative",
7110
+ borderRadius: "inherit"
7100
7111
  }, children: jsx("img", { src: image, alt: `${eventName} - Bild ${index + 1}`, style: {
7101
7112
  width: "100%",
7102
7113
  height: "100%",
@@ -7105,6 +7116,7 @@ const ImageCarousel = ({ images, eventName }) => {
7105
7116
  position: "absolute",
7106
7117
  top: 0,
7107
7118
  left: 0,
7119
+ borderRadius: "inherit"
7108
7120
  } }) }, index))) }), images.length > 1 && (jsxs(Fragment, { children: [jsx("button", { onClick: prevImage, disabled: isTransitioning, style: {
7109
7121
  position: "absolute",
7110
7122
  left: "12px",
@@ -7581,6 +7593,7 @@ function EventTypeSelection({ eventTypes, onEventTypeSelect, isLoading = false,
7581
7593
  backgroundColor: "var(--bw-surface-color)",
7582
7594
  border: `1px solid var(--bw-border-color)`,
7583
7595
  borderRadius: "var(--bw-border-radius)",
7596
+ overflow: "hidden",
7584
7597
  transition: "all 0.3s ease",
7585
7598
  cursor: isAvailable ? "pointer" : "not-allowed",
7586
7599
  opacity: isAvailable ? 1 : 0.6,
@@ -7617,153 +7630,154 @@ function EventTypeSelection({ eventTypes, onEventTypeSelect, isLoading = false,
7617
7630
  display: "flex",
7618
7631
  flexDirection: "column",
7619
7632
  justifyContent: "space-between",
7620
- }, children: [jsx("h2", { className: "bw-event-type-title", style: {
7621
- fontSize: "clamp(1.1rem, 2.5vw, 24px)",
7622
- fontWeight: "700",
7623
- color: "var(--bw-text-color)",
7624
- lineHeight: "1.3",
7625
- fontFamily: "var(--bw-font-family)",
7626
- margin: "0 0 12px 0",
7627
- }, children: eventType.name }), jsxs("div", { style: {
7628
- display: "flex",
7629
- alignItems: "center",
7630
- gap: "6px",
7631
- }, children: [jsx(IconCalendar, { size: 17, color: "var(--bw-text-color)" }), jsx("span", { style: {
7632
- fontFamily: "var(--bw-font-family)",
7633
- fontSize: "14px",
7634
- color: "var(--bw-text-muted)",
7635
- }, children: eventType.nextAvailableDate
7636
- ? `Freie Plätze ab ${formatDate(eventType.nextAvailableDate)}`
7637
- : "Keine Termine frei" })] }), jsx("div", { style: { cursor: "pointer" }, onClick: (e) => {
7638
- e.stopPropagation();
7639
- handleShowDetails(eventType);
7640
- }, children: eventType.highlights && eventType.highlights.length > 0 ? (
7641
- // Show highlights as list
7642
- jsx("div", { className: "bw-event-type-highlights", style: {
7643
- margin: "10px 0px 10px 0px",
7644
- minHeight: "128px",
7645
- fontSize: "clamp(0.95rem, 2vw, 16px)",
7646
- }, children: jsx("ul", { style: {
7647
- listStyle: "none",
7648
- display: "-webkit-box",
7649
- WebkitLineClamp: 5,
7650
- WebkitBoxOrient: "vertical",
7651
- maxHeight: "128px",
7652
- padding: "0",
7653
- margin: "0",
7654
- flexDirection: "column",
7655
- gap: "3px",
7656
- position: "relative",
7657
- }, children: eventType.highlights
7658
- .filter((highlight) => highlight.trim())
7659
- .map((highlight, index) => (jsxs("li", { style: {
7660
- display: "flex",
7661
- alignItems: "flex-start",
7662
- gap: "8px",
7663
- fontFamily: "var(--bw-font-family)",
7664
- lineHeight: "1.55",
7665
- color: "var(--bw-text-muted)",
7666
- position: "relative",
7667
- maxWidth: "100%",
7668
- }, children: [jsx("div", { style: { marginTop: "4px", flexShrink: 0 }, children: jsx(IconCheck, { size: 16, color: "var(--bw-success-color)" }) }), jsx("span", { style: {
7669
- textOverflow: "ellipsis",
7670
- overflow: "hidden",
7671
- whiteSpace: "nowrap",
7672
- flex: "1",
7673
- }, children: highlight.trim() })] }, index))) }) })) : eventType.description ? (jsx("div", { className: "bw-event-type-desc", style: {
7674
- color: "var(--bw-text-muted)",
7675
- fontSize: "clamp(0.95rem, 2vw, 16px)",
7676
- lineHeight: "1.6",
7677
- fontFamily: "var(--bw-font-family)",
7678
- margin: "10px 0 10px 0",
7679
- minHeight: "128px",
7680
- maxHeight: "128px",
7681
- overflow: "hidden",
7682
- textAlign: "left",
7683
- }, children: jsx("div", { className: "bw-event-type-markdown", style: {
7684
- display: "-webkit-box",
7685
- WebkitLineClamp: 5,
7686
- WebkitBoxOrient: "vertical",
7687
- overflow: "hidden",
7688
- }, children: Markdown({
7689
- children: preprocessMarkdown(eventType.description),
7690
- }) }) })) : (jsx("div", { className: "bw-event-type-desc", style: {
7691
- color: "var(--bw-text-muted)",
7692
- fontSize: "clamp(0.95rem, 2vw, 16px)",
7693
- lineHeight: "1.6",
7694
- fontFamily: "var(--bw-font-family)",
7695
- margin: "10px 0 10px 0",
7696
- minHeight: "128px",
7697
- maxHeight: "128px",
7698
- overflow: "hidden",
7699
- textAlign: "left",
7700
- }, children: "\u00A0" })) }), jsxs("div", { children: [jsx("div", { className: "bw-event-type-price", style: {
7701
- fontWeight: "700",
7702
- color: "var(--bw-text-color)",
7703
- fontFamily: "var(--bw-font-family)",
7704
- textAlign: "right",
7705
- }, children: eventType.groupedDurations.length > 1 ? (jsx("span", { children: eventType.groupedDurations })) : (jsx("span", { children: eventType.cheapestDurationPerDay % 60 === 0
7706
- ? `${eventType.cheapestDurationPerDay / 60} Stunde${eventType.cheapestDurationPerDay / 60 > 1 ? "n" : ""}`
7707
- : `${eventType.cheapestDurationPerDay} Minuten` })) }), jsx("div", { className: "bw-event-type-price", style: {
7708
- fontSize: "clamp(1.72rem, 4vw, 32px)",
7633
+ height: "400px",
7634
+ }, children: [jsxs("div", { children: [jsx("h2", { className: "bw-event-type-title", style: {
7635
+ fontSize: "clamp(1.1rem, 2.5vw, 24px)",
7709
7636
  fontWeight: "700",
7710
7637
  color: "var(--bw-text-color)",
7638
+ lineHeight: "1.3",
7711
7639
  fontFamily: "var(--bw-font-family)",
7712
- textAlign: "right",
7713
- }, children: jsxs("span", { children: ["ab ", formatCurrency(eventType.minPrice)] }) })] }), jsxs("div", { style: {
7714
- display: "flex",
7715
- justifyContent: "flex-end",
7716
- alignItems: "center",
7717
- marginTop: "10px",
7718
- gap: "12px",
7719
- }, children: [(eventType.description ||
7720
- (eventType.highlights && eventType.highlights.length > 0)) && (jsx("button", { onClick: (e) => {
7721
- e.stopPropagation();
7722
- handleShowDetails(eventType);
7723
- }, style: {
7724
- color: "var(--bw-highlight-color)",
7725
- background: "var(--bw-surface-color)",
7726
- padding: "12px 12px",
7727
- borderRadius: "var(--bw-border-radius)",
7728
- fontSize: "clamp(0.8rem, 2vw, 16px)",
7729
- fontWeight: "600",
7730
- fontFamily: "var(--bw-font-family)",
7640
+ margin: "0 0 12px 0",
7641
+ }, children: eventType.name }), jsxs("div", { style: {
7731
7642
  display: "flex",
7732
7643
  alignItems: "center",
7733
- gap: "8px",
7734
- border: "2px solid var(--bw-highlight-color)",
7735
- cursor: "pointer",
7736
- opacity: "0.6",
7737
- transition: "all 0.2s ease",
7738
- }, onMouseEnter: (e) => {
7739
- e.currentTarget.style.opacity = "1";
7740
- e.currentTarget.style.transform = "translateY(-1px)";
7741
- }, onMouseLeave: (e) => {
7742
- e.currentTarget.style.opacity = "0.6";
7743
- e.currentTarget.style.transform = "translateY(0)";
7744
- }, children: "Mehr Details" })), isAvailable && (jsxs("div", { style: {
7745
- backgroundColor: "var(--bw-highlight-color)",
7746
- color: "var(--bw-surface-color)",
7747
- padding: "12px 24px",
7748
- borderRadius: "var(--bw-border-radius)",
7749
- fontSize: "clamp(1rem, 2vw, 16px)",
7750
- fontWeight: "600",
7751
- fontFamily: "var(--bw-font-family)",
7644
+ gap: "6px",
7645
+ }, children: [jsx(IconCalendar, { size: 17, color: "var(--bw-text-color)" }), jsx("span", { style: {
7646
+ fontFamily: "var(--bw-font-family)",
7647
+ fontSize: "14px",
7648
+ color: "var(--bw-text-muted)",
7649
+ }, children: eventType.nextAvailableDate
7650
+ ? `Freie Plätze ab ${formatDate(eventType.nextAvailableDate)}`
7651
+ : "Keine Termine frei" })] }), jsx("div", { style: { cursor: "pointer" }, onClick: (e) => {
7652
+ e.stopPropagation();
7653
+ handleShowDetails(eventType);
7654
+ }, children: eventType.highlights && eventType.highlights.length > 0 ? (
7655
+ // Show highlights as list
7656
+ jsx("div", { className: "bw-event-type-highlights", style: {
7657
+ margin: "10px 0px 10px 0px",
7658
+ minHeight: "128px",
7659
+ fontSize: "clamp(0.95rem, 2vw, 16px)",
7660
+ }, children: jsx("ul", { style: {
7661
+ listStyle: "none",
7662
+ display: "-webkit-box",
7663
+ WebkitLineClamp: 5,
7664
+ WebkitBoxOrient: "vertical",
7665
+ maxHeight: "128px",
7666
+ padding: "0",
7667
+ margin: "0",
7668
+ flexDirection: "column",
7669
+ gap: "3px",
7670
+ position: "relative",
7671
+ }, children: eventType.highlights
7672
+ .filter((highlight) => highlight.trim())
7673
+ .map((highlight, index) => (jsxs("li", { style: {
7674
+ display: "flex",
7675
+ alignItems: "flex-start",
7676
+ gap: "8px",
7677
+ fontFamily: "var(--bw-font-family)",
7678
+ lineHeight: "1.55",
7679
+ color: "var(--bw-text-muted)",
7680
+ position: "relative",
7681
+ maxWidth: "100%",
7682
+ }, children: [jsx("div", { style: { marginTop: "4px", flexShrink: 0 }, children: jsx(IconCheck, { size: 16, color: "var(--bw-success-color)" }) }), jsx("span", { style: {
7683
+ textOverflow: "ellipsis",
7684
+ overflow: "hidden",
7685
+ whiteSpace: "nowrap",
7686
+ flex: "1",
7687
+ }, children: highlight.trim() })] }, index))) }) })) : eventType.description ? (jsx("div", { className: "bw-event-type-desc", style: {
7688
+ color: "var(--bw-text-muted)",
7689
+ fontSize: "clamp(0.95rem, 2vw, 16px)",
7690
+ lineHeight: "1.6",
7691
+ fontFamily: "var(--bw-font-family)",
7692
+ margin: "10px 0 10px 0",
7693
+ minHeight: "128px",
7694
+ maxHeight: "128px",
7695
+ overflow: "hidden",
7696
+ textAlign: "left",
7697
+ }, children: jsx("div", { className: "bw-event-type-markdown", style: {
7698
+ display: "-webkit-box",
7699
+ WebkitLineClamp: 5,
7700
+ WebkitBoxOrient: "vertical",
7701
+ overflow: "hidden",
7702
+ }, children: Markdown({
7703
+ children: preprocessMarkdown(eventType.description),
7704
+ }) }) })) : (jsx("div", { className: "bw-event-type-desc", style: {
7705
+ color: "var(--bw-text-muted)",
7706
+ fontSize: "clamp(0.95rem, 2vw, 16px)",
7707
+ lineHeight: "1.6",
7708
+ fontFamily: "var(--bw-font-family)",
7709
+ margin: "10px 0 10px 0",
7710
+ minHeight: "128px",
7711
+ maxHeight: "128px",
7712
+ overflow: "hidden",
7713
+ textAlign: "left",
7714
+ }, children: "\u00A0" })) })] }), jsxs("div", { children: [jsxs("div", { children: [jsx("div", { className: "bw-event-type-price", style: {
7715
+ fontWeight: "700",
7716
+ color: "var(--bw-text-color)",
7717
+ fontFamily: "var(--bw-font-family)",
7718
+ textAlign: "right",
7719
+ }, children: eventType.groupedDurations.length > 1 ? (jsx("span", { children: eventType.groupedDurations })) : (jsx("span", { children: eventType.cheapestDurationPerDay % 60 === 0
7720
+ ? `${eventType.cheapestDurationPerDay / 60} Stunde${eventType.cheapestDurationPerDay / 60 > 1 ? "n" : ""}`
7721
+ : `${eventType.cheapestDurationPerDay} Minuten` })) }), jsx("div", { className: "bw-event-type-price", style: {
7722
+ fontSize: "clamp(1.72rem, 4vw, 32px)",
7723
+ fontWeight: "700",
7724
+ color: "var(--bw-text-color)",
7725
+ fontFamily: "var(--bw-font-family)",
7726
+ textAlign: "right",
7727
+ }, children: jsxs("span", { children: ["ab ", formatCurrency(eventType.minPrice)] }) })] }), jsxs("div", { style: {
7752
7728
  display: "flex",
7729
+ justifyContent: "flex-end",
7753
7730
  alignItems: "center",
7754
- justifyContent: "center",
7755
- textAlign: "center",
7756
- gap: "8px",
7757
- border: "none",
7758
- cursor: "pointer",
7759
- transition: "all 0.2s ease",
7760
- }, onMouseEnter: (e) => {
7761
- e.currentTarget.style.opacity = "0.8";
7762
- e.currentTarget.style.transform = "translateY(-1px)";
7763
- }, onMouseLeave: (e) => {
7764
- e.currentTarget.style.opacity = "1";
7765
- e.currentTarget.style.transform = "translateY(0)";
7766
- }, children: [jsx(IconWave, { size: 15, color: "var(--bw-surface-color)" }), " Jetzt buchen"] }))] })] }), !isAvailable && (jsx("div", { style: {
7731
+ marginTop: "10px",
7732
+ gap: "12px",
7733
+ }, children: [(eventType.description ||
7734
+ (eventType.highlights && eventType.highlights.length > 0)) && (jsx("button", { onClick: (e) => {
7735
+ e.stopPropagation();
7736
+ handleShowDetails(eventType);
7737
+ }, style: {
7738
+ color: "var(--bw-highlight-color)",
7739
+ background: "var(--bw-surface-color)",
7740
+ padding: "12px 12px",
7741
+ borderRadius: "var(--bw-border-radius)",
7742
+ fontSize: "clamp(0.8rem, 2vw, 16px)",
7743
+ fontWeight: "600",
7744
+ fontFamily: "var(--bw-font-family)",
7745
+ display: "flex",
7746
+ alignItems: "center",
7747
+ gap: "8px",
7748
+ border: "2px solid var(--bw-highlight-color)",
7749
+ cursor: "pointer",
7750
+ opacity: "0.6",
7751
+ transition: "all 0.2s ease",
7752
+ }, onMouseEnter: (e) => {
7753
+ e.currentTarget.style.opacity = "1";
7754
+ e.currentTarget.style.transform = "translateY(-1px)";
7755
+ }, onMouseLeave: (e) => {
7756
+ e.currentTarget.style.opacity = "0.6";
7757
+ e.currentTarget.style.transform = "translateY(0)";
7758
+ }, children: "Mehr Details" })), isAvailable && (jsxs("div", { style: {
7759
+ backgroundColor: "var(--bw-highlight-color)",
7760
+ color: "var(--bw-surface-color)",
7761
+ padding: "12px 24px",
7762
+ borderRadius: "var(--bw-border-radius)",
7763
+ fontSize: "clamp(1rem, 2vw, 16px)",
7764
+ fontWeight: "600",
7765
+ fontFamily: "var(--bw-font-family)",
7766
+ display: "flex",
7767
+ alignItems: "center",
7768
+ justifyContent: "center",
7769
+ textAlign: "center",
7770
+ gap: "8px",
7771
+ border: "none",
7772
+ cursor: "pointer",
7773
+ transition: "all 0.2s ease",
7774
+ }, onMouseEnter: (e) => {
7775
+ e.currentTarget.style.opacity = "0.8";
7776
+ e.currentTarget.style.transform = "translateY(-1px)";
7777
+ }, onMouseLeave: (e) => {
7778
+ e.currentTarget.style.opacity = "1";
7779
+ e.currentTarget.style.transform = "translateY(0)";
7780
+ }, children: [jsx(IconWave, { size: 15, color: "var(--bw-surface-color)" }), " Jetzt buchen"] }))] })] })] }), !isAvailable && (jsx("div", { style: {
7767
7781
  position: "absolute",
7768
7782
  inset: 0,
7769
7783
  backgroundColor: "rgba(0, 0, 0, 0.3)",
@@ -9548,6 +9562,7 @@ function Sidebar({ isOpen, onClose, title, children, width = "400px" }) {
9548
9562
  position: "absolute",
9549
9563
  inset: 0,
9550
9564
  backgroundColor: "rgba(0, 0, 0, 0.5)",
9565
+ backdropFilter: "blur(10px)",
9551
9566
  opacity: isAnimating ? 1 : 0,
9552
9567
  transition: "opacity 0.25s ease-out",
9553
9568
  }, onClick: onClose }), jsxs("div", { style: {
@@ -9894,11 +9909,11 @@ function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError,
9894
9909
  display: "flex",
9895
9910
  alignItems: "center",
9896
9911
  gap: "4px",
9897
- }, children: [jsx(IconMoney, { size: 20, color: "var(--bw-highlight-color)" }), " Preis:"] }), jsxs("span", { style: {
9912
+ }, children: [jsx(IconCalendar, { size: 20, color: "var(--bw-highlight-color)" }), " Uhrzeit:"] }), jsx("span", { style: {
9898
9913
  color: "var(--bw-text-color)",
9899
9914
  fontWeight: "500",
9900
9915
  fontFamily: "var(--bw-font-family)",
9901
- }, children: [formatCurrency(eventDetails.price), " pro Person"] })] }), jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between" }, children: [jsxs("span", { style: {
9916
+ }, children: formatTime(eventDetails.startTime, "Europe/Berlin", "de") })] }), jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between" }, children: [jsxs("span", { style: {
9902
9917
  color: "var(--bw-text-muted)",
9903
9918
  fontFamily: "var(--bw-font-family)",
9904
9919
  display: "flex",
@@ -9908,7 +9923,17 @@ function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError,
9908
9923
  color: "var(--bw-text-color)",
9909
9924
  fontWeight: "500",
9910
9925
  fontFamily: "var(--bw-font-family)",
9911
- }, children: [eventDetails.durationDays, " Tag", eventDetails.durationDays > 1 ? "e" : ""] })] })] })] }), jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "var(--bw-spacing-large)" }, children: [jsxs("form", { style: { display: "flex", flexDirection: "column", gap: "var(--bw-spacing-large)" }, children: [jsxs("div", { style: {
9926
+ }, children: [eventDetails.durationDays, " Tag", eventDetails.durationDays > 1 ? "e" : ""] })] }), jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between" }, children: [jsxs("span", { style: {
9927
+ color: "var(--bw-text-muted)",
9928
+ fontFamily: "var(--bw-font-family)",
9929
+ display: "flex",
9930
+ alignItems: "center",
9931
+ gap: "4px",
9932
+ }, children: [jsx(IconMoney, { size: 20, color: "var(--bw-highlight-color)" }), " Preis:"] }), jsxs("span", { style: {
9933
+ color: "var(--bw-text-color)",
9934
+ fontWeight: "500",
9935
+ fontFamily: "var(--bw-font-family)",
9936
+ }, children: [formatCurrency(eventDetails.price), " pro Person"] })] })] })] }), jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "var(--bw-spacing-large)" }, children: [jsxs("form", { style: { display: "flex", flexDirection: "column", gap: "var(--bw-spacing-large)" }, children: [jsxs("div", { style: {
9912
9937
  backgroundColor: "var(--bw-surface-color)",
9913
9938
  border: `1px solid var(--bw-border-color)`,
9914
9939
  backdropFilter: "blur(4px)",
@@ -10065,9 +10090,10 @@ function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError,
10065
10090
  height: "20px",
10066
10091
  border: "1px solid var(--bw-border-color)",
10067
10092
  accentColor: "var(--bw-highlight-color)",
10068
- backgroundColor: form.getValues("acceptTerms") === true
10069
- ? "var(--bw-highlight-color)"
10070
- : "var(--bw-surface-color)",
10093
+ cursor: "pointer",
10094
+ appearance: "checkbox",
10095
+ WebkitAppearance: "checkbox",
10096
+ MozAppearance: "checkbox",
10071
10097
  } }), jsxs("label", { htmlFor: "acceptTerms", style: {
10072
10098
  fontSize: "var(--bw-font-size)",
10073
10099
  color: "var(--bw-text-muted)",
@@ -10077,7 +10103,7 @@ function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError,
10077
10103
  }, children: ["Ich akzeptiere die", " ", jsx("a", { href: eventDetails.agbUrl || "/terms", style: {
10078
10104
  color: "var(--bw-highlight-color)",
10079
10105
  textDecoration: "none",
10080
- }, target: "_blank", rel: "noopener noreferrer", children: "Allgemeinen Gesch\u00E4ftsbedingungen" }), "*"] })] }), form.formState.errors.acceptTerms && (jsx("p", { style: {
10106
+ }, target: "_blank", rel: "noopener noreferrer", children: "AGBs" }), "*"] })] }), form.formState.errors.acceptTerms && (jsx("p", { style: {
10081
10107
  color: "var(--bw-error-color)",
10082
10108
  fontSize: "var(--bw-font-size)",
10083
10109
  marginTop: "8px",
@@ -10230,65 +10256,230 @@ function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError,
10230
10256
  ` })] }) }));
10231
10257
  }
10232
10258
 
10233
- const months = [
10234
- "Januar",
10235
- "Februar",
10236
- "März",
10237
- "April",
10238
- "Mai",
10239
- "Juni",
10240
- "Juli",
10241
- "August",
10242
- "September",
10243
- "Oktober",
10244
- "November",
10245
- "Dezember",
10246
- ];
10247
- // Helper function to get allocation badge info based on availability
10248
- const getAllocationBadgeInfo = (availableSpots, maxParticipants) => {
10249
- const availabilityRatio = availableSpots / maxParticipants;
10250
- // Only show badge for low availability (less than 60%)
10251
- if (availabilityRatio >= 0.6)
10252
- return null;
10253
- // Very low availability (30% or less) - "fast ausgebucht"
10254
- if (availabilityRatio <= 0.3) {
10255
- return {
10256
- text: "fast ausgebucht",
10257
- backgroundColor: "#7f1d1d", // Dark red
10258
- textColor: "#fca5a5", // Bright red
10259
- };
10260
- }
10261
- // Low availability (30-60%) - "wenige Plätze"
10262
- return {
10263
- text: "beliebter Termin",
10264
- backgroundColor: "#b45309", // Dark orange/yellow
10265
- textColor: "#fbbf24", // Bright yellow
10266
- };
10267
- };
10268
- // Helper function to get price badge info for special prices
10269
- const getPriceBadgeInfo = (price, yearPrices) => {
10270
- if (yearPrices.length <= 1)
10271
- return null;
10272
- const sortedPrices = [...new Set(yearPrices)].sort((a, b) => a - b); // Remove duplicates and sort
10273
- // Need at least 2 different prices to show badges
10274
- if (sortedPrices.length < 2)
10259
+ const BookingSuccessModal = ({ isOpen, onClose, bookingData, eventDetails, formData, config, }) => {
10260
+ if (!isOpen || !bookingData)
10275
10261
  return null;
10276
- const lowestPrice = sortedPrices[0];
10277
- const secondLowestPrice = sortedPrices[1];
10278
- // Show "am günstigsten" for the lowest price
10279
- if (price === lowestPrice) {
10280
- return {
10281
- text: "bester Preis !!!",
10282
- backgroundColor: "#14532d", // Dark green
10283
- textColor: "#4ade80", // Bright green
10284
- };
10285
- }
10286
- // Show "günstig" for second lowest price, but only if it's not the same as most other prices
10287
- if (price === secondLowestPrice && sortedPrices.length > 2) {
10288
- return {
10289
- text: "günstiger Preis",
10290
- backgroundColor: "#0e7490", // Turquoise
10291
- textColor: "#67e8f9", // Light Turquoise
10262
+ const booking = bookingData.booking;
10263
+ return (jsx(DialogWrapper, { isOpen: isOpen, onClose: onClose, maxWidth: "700px", children: jsxs("div", { style: { padding: "var(--bw-spacing-large)" }, children: [jsxs("div", { style: {
10264
+ textAlign: "center",
10265
+ marginBottom: "var(--bw-spacing-large)",
10266
+ }, children: [jsx("div", { style: {
10267
+ width: "64px",
10268
+ height: "64px",
10269
+ backgroundColor: "var(--bw-success-color, #10B981)",
10270
+ borderRadius: "50%",
10271
+ margin: "0 auto var(--bw-spacing)",
10272
+ display: "flex",
10273
+ alignItems: "center",
10274
+ justifyContent: "center",
10275
+ fontSize: "32px",
10276
+ color: "white",
10277
+ }, children: "\u2713" }), jsx("h2", { style: {
10278
+ fontSize: "var(--bw-font-size-xl)",
10279
+ fontWeight: "700",
10280
+ color: "var(--bw-text-color)",
10281
+ margin: "0 0 var(--bw-spacing-small) 0",
10282
+ fontFamily: "var(--bw-font-family)",
10283
+ }, children: "Buchung erfolgreich!" }), jsx("p", { style: {
10284
+ color: "var(--bw-text-muted)",
10285
+ fontFamily: "var(--bw-font-family)",
10286
+ margin: 0,
10287
+ }, children: "Deine Buchung wurde erfolgreich abgeschlossen." })] }), jsxs("div", { style: {
10288
+ backgroundColor: "var(--bw-surface-color)",
10289
+ border: `1px solid var(--bw-border-color)`,
10290
+ borderRadius: "var(--bw-border-radius)",
10291
+ padding: "var(--bw-spacing)",
10292
+ marginBottom: "var(--bw-spacing-large)",
10293
+ }, children: [jsx("h3", { style: {
10294
+ fontSize: "var(--bw-font-size-large)",
10295
+ fontWeight: "600",
10296
+ color: "var(--bw-text-color)",
10297
+ margin: "0 0 var(--bw-spacing) 0",
10298
+ fontFamily: "var(--bw-font-family)",
10299
+ }, children: "Buchungsdetails" }), jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "var(--bw-spacing)" }, children: [booking.bookingHash && (jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [jsx("span", { style: { color: "var(--bw-text-muted)", fontFamily: "var(--bw-font-family)" }, children: "Buchungs-ID:" }), jsx("span", { style: {
10300
+ color: "var(--bw-text-color)",
10301
+ fontWeight: "500",
10302
+ fontFamily: "monospace",
10303
+ fontSize: "var(--bw-font-size-small)",
10304
+ backgroundColor: "var(--bw-background-color)",
10305
+ padding: "4px 8px",
10306
+ borderRadius: "var(--bw-border-radius-small)",
10307
+ }, children: booking.bookingHash })] })), jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [jsx("span", { style: { color: "var(--bw-text-muted)", fontFamily: "var(--bw-font-family)" }, children: "Event:" }), jsx("span", { style: {
10308
+ color: "var(--bw-text-color)",
10309
+ fontWeight: "500",
10310
+ fontFamily: "var(--bw-font-family)",
10311
+ textAlign: "right",
10312
+ maxWidth: "60%",
10313
+ }, children: eventDetails.name })] }), jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [jsx("span", { style: { color: "var(--bw-text-muted)", fontFamily: "var(--bw-font-family)" }, children: "Datum:" }), jsx("span", { style: {
10314
+ color: "var(--bw-text-color)",
10315
+ fontWeight: "500",
10316
+ fontFamily: "var(--bw-font-family)",
10317
+ textAlign: "right",
10318
+ maxWidth: "60%",
10319
+ }, children: formatEventDate(eventDetails.startTime) })] }), jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [jsx("span", { style: { color: "var(--bw-text-muted)", fontFamily: "var(--bw-font-family)" }, children: "Uhrzeit:" }), jsx("span", { style: {
10320
+ color: "var(--bw-text-color)",
10321
+ fontWeight: "500",
10322
+ fontFamily: "var(--bw-font-family)",
10323
+ textAlign: "right",
10324
+ maxWidth: "60%",
10325
+ }, children: formatTime(eventDetails.startTime, "Europe/Berlin", "de") })] }), jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [jsx("span", { style: { color: "var(--bw-text-muted)", fontFamily: "var(--bw-font-family)" }, children: "Teilnehmer:" }), jsx("span", { style: {
10326
+ color: "var(--bw-text-color)",
10327
+ fontWeight: "500",
10328
+ fontFamily: "var(--bw-font-family)",
10329
+ }, children: booking.participantCount })] }), jsxs("div", { style: {
10330
+ display: "flex",
10331
+ justifyContent: "space-between",
10332
+ alignItems: "center",
10333
+ borderTop: `1px solid var(--bw-border-color)`,
10334
+ paddingTop: "var(--bw-spacing)",
10335
+ marginTop: "var(--bw-spacing)",
10336
+ }, children: [jsx("span", { style: {
10337
+ color: "var(--bw-text-color)",
10338
+ fontWeight: "600",
10339
+ fontFamily: "var(--bw-font-family)",
10340
+ }, children: "Gesamtbetrag:" }), jsx("span", { style: {
10341
+ color: "var(--bw-text-color)",
10342
+ fontWeight: "600",
10343
+ fontSize: "var(--bw-font-size-large)",
10344
+ fontFamily: "var(--bw-font-family)",
10345
+ }, children: formatCurrency(booking.total) })] })] })] }), formData.participants && formData.participants.length > 0 && (jsxs("div", { style: {
10346
+ border: `1px solid var(--bw-border-color)`,
10347
+ borderRadius: "var(--bw-border-radius)",
10348
+ padding: "var(--bw-spacing)",
10349
+ marginBottom: "var(--bw-spacing-large)",
10350
+ }, children: [jsx("h3", { style: {
10351
+ fontSize: "var(--bw-font-size-large)",
10352
+ fontWeight: "600",
10353
+ color: "var(--bw-text-color)",
10354
+ margin: "0 0 var(--bw-spacing) 0",
10355
+ fontFamily: "var(--bw-font-family)",
10356
+ }, children: "Teilnehmer" }), jsx("div", { style: { display: "flex", flexDirection: "column", gap: "var(--bw-spacing-small)" }, children: formData.participants
10357
+ .filter((p) => p.name.trim())
10358
+ .map((participant, index) => (jsxs("div", { style: {
10359
+ display: "flex",
10360
+ justifyContent: "space-between",
10361
+ alignItems: "center",
10362
+ padding: "var(--bw-spacing-small)",
10363
+ borderRadius: "var(--bw-border-radius-small)",
10364
+ }, children: [jsx("span", { style: {
10365
+ color: "var(--bw-text-color)",
10366
+ fontFamily: "var(--bw-font-family)",
10367
+ }, children: participant.name }), participant.age && (jsxs("span", { style: {
10368
+ color: "var(--bw-text-muted)",
10369
+ fontSize: "var(--bw-font-size-small)",
10370
+ fontFamily: "var(--bw-font-family)",
10371
+ }, children: [participant.age, " Jahre"] }))] }, index))) })] })), jsxs("div", { style: {
10372
+ backgroundColor: "var(--bw-surface-color)",
10373
+ border: `1px solid var(--bw-border-color)`,
10374
+ borderRadius: "var(--bw-border-radius)",
10375
+ padding: "var(--bw-spacing)",
10376
+ marginBottom: "var(--bw-spacing-large)",
10377
+ }, children: [jsx("h3", { style: {
10378
+ fontSize: "var(--bw-font-size-large)",
10379
+ fontWeight: "600",
10380
+ color: "var(--bw-text-color)",
10381
+ margin: "0 0 var(--bw-spacing) 0",
10382
+ fontFamily: "var(--bw-font-family)",
10383
+ }, children: "Kontaktdaten" }), jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "var(--bw-spacing-small)" }, children: [jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [jsx("span", { style: { color: "var(--bw-text-muted)", fontFamily: "var(--bw-font-family)" }, children: "Name:" }), jsx("span", { style: { color: "var(--bw-text-color)", fontFamily: "var(--bw-font-family)" }, children: formData.customerName })] }), jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [jsx("span", { style: { color: "var(--bw-text-muted)", fontFamily: "var(--bw-font-family)" }, children: "E-Mail:" }), jsx("span", { style: { color: "var(--bw-text-color)", fontFamily: "var(--bw-font-family)" }, children: formData.customerEmail })] }), formData.customerPhone && (jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [jsx("span", { style: { color: "var(--bw-text-muted)", fontFamily: "var(--bw-font-family)" }, children: "Telefon:" }), jsx("span", { style: { color: "var(--bw-text-color)", fontFamily: "var(--bw-font-family)" }, children: formData.customerPhone })] }))] })] }), jsxs("div", { style: {
10384
+ backgroundColor: "var(--bw-surface-muted-bg, rgba(59, 130, 246, 0.05))",
10385
+ border: `1px solid var(--bw-border-color)`,
10386
+ borderRadius: "var(--bw-border-radius)",
10387
+ padding: "var(--bw-spacing)",
10388
+ marginBottom: "var(--bw-spacing-large)",
10389
+ textAlign: "center",
10390
+ }, children: [jsx("div", { style: {
10391
+ color: "var(--bw-highlight-color)",
10392
+ fontSize: "24px",
10393
+ marginBottom: "var(--bw-spacing-small)",
10394
+ }, children: "\uD83D\uDCE7" }), jsxs("p", { style: {
10395
+ color: "var(--bw-text-muted)",
10396
+ margin: 0,
10397
+ fontFamily: "var(--bw-font-family)",
10398
+ fontSize: "var(--bw-font-size-small)",
10399
+ }, children: ["Eine Best\u00E4tigungs-E-Mail wird in K\u00FCrze an ", formData.customerEmail, " gesendet."] })] }), jsx("div", { style: { textAlign: "center" }, children: jsx("button", { onClick: onClose, style: {
10400
+ backgroundColor: "var(--bw-highlight-color)",
10401
+ color: "white",
10402
+ padding: "12px 32px",
10403
+ border: "none",
10404
+ borderRadius: "var(--bw-border-radius)",
10405
+ fontSize: "var(--bw-font-size)",
10406
+ fontWeight: "600",
10407
+ cursor: "pointer",
10408
+ fontFamily: "var(--bw-font-family)",
10409
+ transition: "all 0.2s ease",
10410
+ }, onMouseEnter: (e) => {
10411
+ e.currentTarget.style.opacity = "0.9";
10412
+ }, onMouseLeave: (e) => {
10413
+ e.currentTarget.style.opacity = "1";
10414
+ }, children: "Schlie\u00DFen" }) })] }) }));
10415
+ };
10416
+
10417
+ const months = [
10418
+ "Januar",
10419
+ "Februar",
10420
+ "März",
10421
+ "April",
10422
+ "Mai",
10423
+ "Juni",
10424
+ "Juli",
10425
+ "August",
10426
+ "September",
10427
+ "Oktober",
10428
+ "November",
10429
+ "Dezember",
10430
+ ];
10431
+ // Helper function to get allocation badge info based on availability
10432
+ const getAllocationBadgeInfo = (availableSpots, maxParticipants) => {
10433
+ const availabilityRatio = availableSpots / maxParticipants;
10434
+ // Only show badge for low availability (less than 60%)
10435
+ if (availabilityRatio >= 0.6)
10436
+ return null;
10437
+ if (availabilityRatio === 0) {
10438
+ return {
10439
+ text: "ausgebucht",
10440
+ backgroundColor: "#7f1d1d", // Dark red
10441
+ textColor: "#fca5a5", // Bright red
10442
+ };
10443
+ }
10444
+ // Very low availability (30% or less) - "fast ausgebucht"
10445
+ if (availabilityRatio <= 0.3) {
10446
+ return {
10447
+ text: "fast ausgebucht",
10448
+ backgroundColor: "#7f1d1d", // Dark red
10449
+ textColor: "#fca5a5", // Bright red
10450
+ };
10451
+ }
10452
+ // Low availability (30-60%) - "wenige Plätze"
10453
+ return {
10454
+ text: "beliebter Termin",
10455
+ backgroundColor: "#b45309", // Dark orange/yellow
10456
+ textColor: "#fbbf24", // Bright yellow
10457
+ };
10458
+ };
10459
+ // Helper function to get price badge info for special prices
10460
+ const getPriceBadgeInfo = (price, yearPrices) => {
10461
+ if (yearPrices.length <= 1)
10462
+ return null;
10463
+ const sortedPrices = [...new Set(yearPrices)].sort((a, b) => a - b); // Remove duplicates and sort
10464
+ // Need at least 2 different prices to show badges
10465
+ if (sortedPrices.length < 2)
10466
+ return null;
10467
+ const lowestPrice = sortedPrices[0];
10468
+ const secondLowestPrice = sortedPrices[1];
10469
+ // Show "am günstigsten" for the lowest price
10470
+ if (price === lowestPrice) {
10471
+ return {
10472
+ text: "bester Preis !!!",
10473
+ backgroundColor: "#14532d", // Dark green
10474
+ textColor: "#4ade80", // Bright green
10475
+ };
10476
+ }
10477
+ // Show "günstig" for second lowest price, but only if it's not the same as most other prices
10478
+ if (price === secondLowestPrice && sortedPrices.length > 2) {
10479
+ return {
10480
+ text: "günstiger Preis",
10481
+ backgroundColor: "#0e7490", // Turquoise
10482
+ textColor: "#67e8f9", // Light Turquoise
10292
10483
  };
10293
10484
  }
10294
10485
  return null;
@@ -10806,7 +10997,7 @@ function EventInstanceSelection({ eventInstances, selectedEventType, onEventInst
10806
10997
  padding: "16px 20px",
10807
10998
  transition: "all 0.2s ease",
10808
10999
  opacity: isFullyBooked || isPastEvent ? 0.3 : 1,
10809
- filter: isFullyBooked || isPastEvent ? "grayscale(100%)" : "none",
11000
+ filter: isFullyBooked || isPastEvent ? "grayscale(40%)" : "none",
10810
11001
  fontFamily: "var(--bw-font-family)",
10811
11002
  }, onClick: () => {
10812
11003
  if (!isFullyBooked && !isPastEvent && event.bookingOpen) {
@@ -11300,198 +11491,6 @@ function NextEventsPreview({ events, onEventSelect, onShowAll, showAllButtonText
11300
11491
  }
11301
11492
 
11302
11493
  // Predefined themes & Style Provider have been moved to ../styles/StyleProvider.tsx
11303
- // Success Modal Component
11304
- const BookingSuccessModal = ({ isOpen, onClose, bookingData, eventDetails, formData, config, }) => {
11305
- if (!isOpen || !bookingData)
11306
- return null;
11307
- const booking = bookingData.booking;
11308
- return (jsx("div", { style: {
11309
- position: "fixed",
11310
- top: 0,
11311
- left: 0,
11312
- right: 0,
11313
- bottom: 0,
11314
- backgroundColor: "rgba(0, 0, 0, 0.5)",
11315
- zIndex: 10000,
11316
- display: "flex",
11317
- alignItems: "center",
11318
- justifyContent: "center",
11319
- padding: "var(--bw-spacing)",
11320
- }, children: jsxs("div", { style: {
11321
- backgroundColor: "var(--bw-background-color)",
11322
- borderRadius: "var(--bw-border-radius)",
11323
- padding: "var(--bw-spacing-large)",
11324
- maxWidth: "500px",
11325
- width: "100%",
11326
- maxHeight: "90vh",
11327
- overflow: "auto",
11328
- position: "relative",
11329
- border: `1px solid var(--bw-border-color)`,
11330
- boxShadow: "0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)",
11331
- }, children: [jsx("button", { onClick: onClose, style: {
11332
- position: "absolute",
11333
- top: "var(--bw-spacing)",
11334
- right: "var(--bw-spacing)",
11335
- background: "none",
11336
- border: "none",
11337
- fontSize: "24px",
11338
- cursor: "pointer",
11339
- color: "var(--bw-text-muted)",
11340
- width: "32px",
11341
- height: "32px",
11342
- display: "flex",
11343
- alignItems: "center",
11344
- justifyContent: "center",
11345
- borderRadius: "var(--bw-border-radius-small)",
11346
- }, children: "\u00D7" }), jsxs("div", { style: {
11347
- textAlign: "center",
11348
- marginBottom: "var(--bw-spacing-large)",
11349
- }, children: [jsx("div", { style: {
11350
- width: "64px",
11351
- height: "64px",
11352
- backgroundColor: "var(--bw-success-color, #10B981)",
11353
- borderRadius: "50%",
11354
- margin: "0 auto var(--bw-spacing)",
11355
- display: "flex",
11356
- alignItems: "center",
11357
- justifyContent: "center",
11358
- fontSize: "32px",
11359
- color: "white",
11360
- }, children: "\u2713" }), jsx("h2", { style: {
11361
- fontSize: "var(--bw-font-size-xl)",
11362
- fontWeight: "700",
11363
- color: "var(--bw-text-color)",
11364
- margin: "0 0 var(--bw-spacing-small) 0",
11365
- fontFamily: "var(--bw-font-family)",
11366
- }, children: "Buchung erfolgreich!" }), jsx("p", { style: {
11367
- color: "var(--bw-text-muted)",
11368
- fontFamily: "var(--bw-font-family)",
11369
- margin: 0,
11370
- }, children: "Deine Buchung wurde erfolgreich abgeschlossen." })] }), jsxs("div", { style: {
11371
- backgroundColor: "var(--bw-surface-color)",
11372
- border: `1px solid var(--bw-border-color)`,
11373
- borderRadius: "var(--bw-border-radius)",
11374
- padding: "var(--bw-spacing)",
11375
- marginBottom: "var(--bw-spacing-large)",
11376
- }, children: [jsx("h3", { style: {
11377
- fontSize: "var(--bw-font-size-large)",
11378
- fontWeight: "600",
11379
- color: "var(--bw-text-color)",
11380
- margin: "0 0 var(--bw-spacing) 0",
11381
- fontFamily: "var(--bw-font-family)",
11382
- }, children: "Buchungsdetails" }), jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "var(--bw-spacing)" }, children: [booking.bookingHash && (jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [jsx("span", { style: { color: "var(--bw-text-muted)", fontFamily: "var(--bw-font-family)" }, children: "Buchungs-ID:" }), jsx("span", { style: {
11383
- color: "var(--bw-text-color)",
11384
- fontWeight: "500",
11385
- fontFamily: "monospace",
11386
- fontSize: "var(--bw-font-size-small)",
11387
- backgroundColor: "var(--bw-background-color)",
11388
- padding: "4px 8px",
11389
- borderRadius: "var(--bw-border-radius-small)",
11390
- }, children: booking.bookingHash })] })), jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [jsx("span", { style: { color: "var(--bw-text-muted)", fontFamily: "var(--bw-font-family)" }, children: "Event:" }), jsx("span", { style: {
11391
- color: "var(--bw-text-color)",
11392
- fontWeight: "500",
11393
- fontFamily: "var(--bw-font-family)",
11394
- textAlign: "right",
11395
- maxWidth: "60%",
11396
- }, children: eventDetails.name })] }), jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [jsx("span", { style: { color: "var(--bw-text-muted)", fontFamily: "var(--bw-font-family)" }, children: "Datum:" }), jsx("span", { style: {
11397
- color: "var(--bw-text-color)",
11398
- fontWeight: "500",
11399
- fontFamily: "var(--bw-font-family)",
11400
- textAlign: "right",
11401
- maxWidth: "60%",
11402
- }, children: formatDate(eventDetails.startTime) })] }), jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [jsx("span", { style: { color: "var(--bw-text-muted)", fontFamily: "var(--bw-font-family)" }, children: "Teilnehmer:" }), jsx("span", { style: {
11403
- color: "var(--bw-text-color)",
11404
- fontWeight: "500",
11405
- fontFamily: "var(--bw-font-family)",
11406
- }, children: booking.participantCount })] }), jsxs("div", { style: {
11407
- display: "flex",
11408
- justifyContent: "space-between",
11409
- alignItems: "center",
11410
- borderTop: `1px solid var(--bw-border-color)`,
11411
- paddingTop: "var(--bw-spacing)",
11412
- marginTop: "var(--bw-spacing)",
11413
- }, children: [jsx("span", { style: {
11414
- color: "var(--bw-text-color)",
11415
- fontWeight: "600",
11416
- fontFamily: "var(--bw-font-family)",
11417
- }, children: "Gesamtbetrag:" }), jsx("span", { style: {
11418
- color: "var(--bw-text-color)",
11419
- fontWeight: "600",
11420
- fontSize: "var(--bw-font-size-large)",
11421
- fontFamily: "var(--bw-font-family)",
11422
- }, children: formatCurrency(booking.total) })] })] })] }), formData.participants && formData.participants.length > 0 && (jsxs("div", { style: {
11423
- backgroundColor: "var(--bw-surface-color)",
11424
- border: `1px solid var(--bw-border-color)`,
11425
- borderRadius: "var(--bw-border-radius)",
11426
- padding: "var(--bw-spacing)",
11427
- marginBottom: "var(--bw-spacing-large)",
11428
- }, children: [jsx("h3", { style: {
11429
- fontSize: "var(--bw-font-size-large)",
11430
- fontWeight: "600",
11431
- color: "var(--bw-text-color)",
11432
- margin: "0 0 var(--bw-spacing) 0",
11433
- fontFamily: "var(--bw-font-family)",
11434
- }, children: "Teilnehmer" }), jsx("div", { style: { display: "flex", flexDirection: "column", gap: "var(--bw-spacing-small)" }, children: formData.participants
11435
- .filter((p) => p.name.trim())
11436
- .map((participant, index) => (jsxs("div", { style: {
11437
- display: "flex",
11438
- justifyContent: "space-between",
11439
- alignItems: "center",
11440
- padding: "var(--bw-spacing-small)",
11441
- backgroundColor: "var(--bw-background-color)",
11442
- borderRadius: "var(--bw-border-radius-small)",
11443
- }, children: [jsx("span", { style: {
11444
- color: "var(--bw-text-color)",
11445
- fontFamily: "var(--bw-font-family)",
11446
- }, children: participant.name }), participant.age && (jsxs("span", { style: {
11447
- color: "var(--bw-text-muted)",
11448
- fontSize: "var(--bw-font-size-small)",
11449
- fontFamily: "var(--bw-font-family)",
11450
- }, children: [participant.age, " Jahre"] }))] }, index))) })] })), jsxs("div", { style: {
11451
- backgroundColor: "var(--bw-surface-color)",
11452
- border: `1px solid var(--bw-border-color)`,
11453
- borderRadius: "var(--bw-border-radius)",
11454
- padding: "var(--bw-spacing)",
11455
- marginBottom: "var(--bw-spacing-large)",
11456
- }, children: [jsx("h3", { style: {
11457
- fontSize: "var(--bw-font-size-large)",
11458
- fontWeight: "600",
11459
- color: "var(--bw-text-color)",
11460
- margin: "0 0 var(--bw-spacing) 0",
11461
- fontFamily: "var(--bw-font-family)",
11462
- }, children: "Kontaktdaten" }), jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "var(--bw-spacing-small)" }, children: [jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [jsx("span", { style: { color: "var(--bw-text-muted)", fontFamily: "var(--bw-font-family)" }, children: "Name:" }), jsx("span", { style: { color: "var(--bw-text-color)", fontFamily: "var(--bw-font-family)" }, children: formData.customerName })] }), jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [jsx("span", { style: { color: "var(--bw-text-muted)", fontFamily: "var(--bw-font-family)" }, children: "E-Mail:" }), jsx("span", { style: { color: "var(--bw-text-color)", fontFamily: "var(--bw-font-family)" }, children: formData.customerEmail })] }), formData.customerPhone && (jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [jsx("span", { style: { color: "var(--bw-text-muted)", fontFamily: "var(--bw-font-family)" }, children: "Telefon:" }), jsx("span", { style: { color: "var(--bw-text-color)", fontFamily: "var(--bw-font-family)" }, children: formData.customerPhone })] }))] })] }), jsxs("div", { style: {
11463
- backgroundColor: "var(--bw-surface-muted-bg, rgba(59, 130, 246, 0.05))",
11464
- border: `1px solid var(--bw-border-color)`,
11465
- borderRadius: "var(--bw-border-radius)",
11466
- padding: "var(--bw-spacing)",
11467
- marginBottom: "var(--bw-spacing-large)",
11468
- textAlign: "center",
11469
- }, children: [jsx("div", { style: {
11470
- color: "var(--bw-highlight-color)",
11471
- fontSize: "24px",
11472
- marginBottom: "var(--bw-spacing-small)",
11473
- }, children: "\uD83D\uDCE7" }), jsxs("p", { style: {
11474
- color: "var(--bw-text-muted)",
11475
- margin: 0,
11476
- fontFamily: "var(--bw-font-family)",
11477
- fontSize: "var(--bw-font-size-small)",
11478
- }, children: ["Eine Best\u00E4tigungs-E-Mail wird in K\u00FCrze an ", formData.customerEmail, " gesendet."] })] }), jsx("div", { style: { textAlign: "center" }, children: jsx("button", { onClick: onClose, style: {
11479
- backgroundColor: "var(--bw-highlight-color)",
11480
- color: "white",
11481
- padding: "12px 32px",
11482
- border: "none",
11483
- borderRadius: "var(--bw-border-radius)",
11484
- fontSize: "var(--bw-font-size)",
11485
- fontWeight: "600",
11486
- cursor: "pointer",
11487
- fontFamily: "var(--bw-font-family)",
11488
- transition: "all 0.2s ease",
11489
- }, onMouseEnter: (e) => {
11490
- e.currentTarget.style.opacity = "0.9";
11491
- }, onMouseLeave: (e) => {
11492
- e.currentTarget.style.opacity = "1";
11493
- }, children: "Schlie\u00DFen" }) })] }) }));
11494
- };
11495
11494
  // Main widget component
11496
11495
  function UniversalBookingWidget({ config: baseConfig }) {
11497
11496
  // Apply URL parameter inference
@@ -11521,7 +11520,6 @@ function UniversalBookingWidget({ config: baseConfig }) {
11521
11520
  // Booking flow state
11522
11521
  const [eventDetails, setEventDetails] = useState(null);
11523
11522
  const [stripePromise, setStripePromise] = useState(null);
11524
- const [clientSecret, setClientSecret] = useState(null);
11525
11523
  // SEPARATED LOADING STATES
11526
11524
  const [isLoading, setIsLoading] = useState(true); // Only for initial widget load
11527
11525
  const [isLoadingEventInstances, setIsLoadingEventInstances] = useState(false); // For loading event instances in sidebar
@@ -11982,16 +11980,6 @@ function UniversalBookingWidget({ config: baseConfig }) {
11982
11980
  fontFamily: "var(--bw-font-family)",
11983
11981
  }, children: "Falls das Problem weiterhin besteht, kontaktiere bitte den Support." })] }) }) }));
11984
11982
  }
11985
- // Success state
11986
- if (isSuccess) {
11987
- return (jsx(StyleProvider, { config: config, children: jsx(BookingSuccessModal, { isOpen: isSuccess, onClose: () => {
11988
- setIsSuccess(false);
11989
- setCurrentStep("eventTypes");
11990
- // Reset lazy loading flags
11991
- setShouldRenderInstanceSelection(false);
11992
- setShouldRenderBookingForm(false);
11993
- }, bookingData: successData, eventDetails: eventDetails, formData: successData.formData, config: config }) }));
11994
- }
11995
11983
  // Main view based on view mode
11996
11984
  if (viewMode === "next-events" && showingPreview) {
11997
11985
  // Next events preview mode
@@ -12007,17 +11995,31 @@ function UniversalBookingWidget({ config: baseConfig }) {
12007
11995
  setCurrentStep("eventTypes");
12008
11996
  setShowingPreview(true);
12009
11997
  setEventDetails(null);
12010
- }, systemConfig: systemConfig }))] }));
11998
+ }, systemConfig: systemConfig })), jsx(BookingSuccessModal, { isOpen: isSuccess, onClose: () => {
11999
+ setIsSuccess(false);
12000
+ setCurrentStep("eventTypes");
12001
+ setShowingPreview(true);
12002
+ // Reset lazy loading flags
12003
+ setShouldRenderInstanceSelection(false);
12004
+ setShouldRenderBookingForm(false);
12005
+ }, bookingData: successData, eventDetails: eventDetails, formData: successData?.formData, config: config })] }));
12011
12006
  }
12012
12007
  if (viewMode === "next-events" && !showingPreview && currentStep === "eventInstances") {
12013
12008
  // Show all events for the single event type
12014
- return (jsx(StyleProvider, { config: config, children: shouldRenderInstanceSelection && (jsx(EventInstanceSelection, { eventInstances: eventInstances, selectedEventType: selectedEventType, onEventInstanceSelect: handleEventInstanceSelect, onBackToEventTypes: () => {
12015
- setShowingPreview(true);
12016
- setCurrentStep("eventTypes");
12017
- }, isOpen: currentStep === "eventInstances", onClose: () => {
12018
- setShowingPreview(true);
12019
- setCurrentStep("eventTypes");
12020
- }, isLoadingEventInstances: isLoadingEventInstances, isLoadingEventDetails: isLoadingEventDetails })) }));
12009
+ return (jsxs(StyleProvider, { config: config, children: [shouldRenderInstanceSelection && (jsx(EventInstanceSelection, { eventInstances: eventInstances, selectedEventType: selectedEventType, onEventInstanceSelect: handleEventInstanceSelect, onBackToEventTypes: () => {
12010
+ setShowingPreview(true);
12011
+ setCurrentStep("eventTypes");
12012
+ }, isOpen: currentStep === "eventInstances", onClose: () => {
12013
+ setShowingPreview(true);
12014
+ setCurrentStep("eventTypes");
12015
+ }, isLoadingEventInstances: isLoadingEventInstances, isLoadingEventDetails: isLoadingEventDetails })), jsx(BookingSuccessModal, { isOpen: isSuccess, onClose: () => {
12016
+ setIsSuccess(false);
12017
+ setCurrentStep("eventTypes");
12018
+ setShowingPreview(true);
12019
+ // Reset lazy loading flags
12020
+ setShouldRenderInstanceSelection(false);
12021
+ setShouldRenderBookingForm(false);
12022
+ }, bookingData: successData, eventDetails: eventDetails, formData: successData?.formData, config: config })] }));
12021
12023
  }
12022
12024
  if (viewMode === "button" && (isSingleEventTypeMode || isDirectInstanceMode)) {
12023
12025
  // Button mode - show button that opens sidebar/booking directly
@@ -12047,7 +12049,14 @@ function UniversalBookingWidget({ config: baseConfig }) {
12047
12049
  setShouldRenderInstanceSelection(true);
12048
12050
  }
12049
12051
  }, children: config.buttonText ||
12050
- (isDirectInstanceMode ? "Jetzt buchen" : "Jetzt Termin auswählen") }), shouldRenderInstanceSelection && (jsx(EventInstanceSelection, { eventInstances: eventInstances, selectedEventType: selectedEventType, onEventInstanceSelect: handleEventInstanceSelect, onBackToEventTypes: () => setSidebarOpen(false), isOpen: sidebarOpen, onClose: () => setSidebarOpen(false), isLoadingEventInstances: isLoadingEventInstances, isLoadingEventDetails: isLoadingEventDetails })), shouldRenderBookingForm && eventDetails && (jsx(BookingForm, { config: config, eventDetails: eventDetails, stripePromise: stripePromise, onSuccess: handleBookingSuccess, onError: handleBookingError, onBackToEventInstances: () => setCurrentStep(isDirectInstanceMode ? "eventTypes" : "eventInstances"), onBackToEventTypes: () => setSidebarOpen(false), selectedEventType: selectedEventType, selectedEventInstance: selectedEventInstance, isOpen: currentStep === "booking" && !!eventDetails, onClose: () => setCurrentStep(isDirectInstanceMode ? "eventTypes" : "eventInstances"), systemConfig: systemConfig }))] }) }));
12052
+ (isDirectInstanceMode ? "Jetzt buchen" : "Jetzt Termin auswählen") }), shouldRenderInstanceSelection && (jsx(EventInstanceSelection, { eventInstances: eventInstances, selectedEventType: selectedEventType, onEventInstanceSelect: handleEventInstanceSelect, onBackToEventTypes: () => setSidebarOpen(false), isOpen: sidebarOpen, onClose: () => setSidebarOpen(false), isLoadingEventInstances: isLoadingEventInstances, isLoadingEventDetails: isLoadingEventDetails })), shouldRenderBookingForm && eventDetails && (jsx(BookingForm, { config: config, eventDetails: eventDetails, stripePromise: stripePromise, onSuccess: handleBookingSuccess, onError: handleBookingError, onBackToEventInstances: () => setCurrentStep(isDirectInstanceMode ? "eventTypes" : "eventInstances"), onBackToEventTypes: () => setSidebarOpen(false), selectedEventType: selectedEventType, selectedEventInstance: selectedEventInstance, isOpen: currentStep === "booking" && !!eventDetails, onClose: () => setCurrentStep(isDirectInstanceMode ? "eventTypes" : "eventInstances"), systemConfig: systemConfig })), jsx(BookingSuccessModal, { isOpen: isSuccess, onClose: () => {
12053
+ setIsSuccess(false);
12054
+ setCurrentStep("eventTypes");
12055
+ setSidebarOpen(false);
12056
+ // Reset lazy loading flags
12057
+ setShouldRenderInstanceSelection(false);
12058
+ setShouldRenderBookingForm(false);
12059
+ }, bookingData: successData, eventDetails: eventDetails, formData: successData?.formData, config: config })] }) }));
12051
12060
  }
12052
12061
  // Cards mode (default) - show event type selection
12053
12062
  const cardsView = (jsx(EventTypeSelection, { eventTypes: eventTypes, onEventTypeSelect: handleEventTypeSelect, isLoading: isLoading, skeletonCount: getSkeletonCount() }));
@@ -12080,7 +12089,13 @@ function UniversalBookingWidget({ config: baseConfig }) {
12080
12089
  };
12081
12090
  };
12082
12091
  const backHandlers = getBackHandlers();
12083
- return (jsxs(StyleProvider, { config: config, children: [cardsView, shouldRenderInstanceSelection && (jsx(EventInstanceSelection, { eventInstances: eventInstances, selectedEventType: selectedEventType, onEventInstanceSelect: handleEventInstanceSelect, onBackToEventTypes: handleBackToEventTypes, isOpen: currentStep === "eventInstances", onClose: handleBackToEventTypes, isLoadingEventInstances: isLoadingEventInstances, isLoadingEventDetails: isLoadingEventDetails })), shouldRenderBookingForm && eventDetails && (jsx(BookingForm, { config: config, eventDetails: eventDetails, stripePromise: stripePromise, onSuccess: handleBookingSuccess, onError: handleBookingError, onBackToEventInstances: backHandlers.onBackToEventInstances, onBackToEventTypes: backHandlers.onBackToEventTypes, selectedEventType: selectedEventType, selectedEventInstance: selectedEventInstance, isOpen: currentStep === "booking" && !!eventDetails, onClose: backHandlers.onClose, systemConfig: systemConfig }))] }));
12092
+ return (jsxs(StyleProvider, { config: config, children: [cardsView, shouldRenderInstanceSelection && (jsx(EventInstanceSelection, { eventInstances: eventInstances, selectedEventType: selectedEventType, onEventInstanceSelect: handleEventInstanceSelect, onBackToEventTypes: handleBackToEventTypes, isOpen: currentStep === "eventInstances", onClose: handleBackToEventTypes, isLoadingEventInstances: isLoadingEventInstances, isLoadingEventDetails: isLoadingEventDetails })), shouldRenderBookingForm && eventDetails && (jsx(BookingForm, { config: config, eventDetails: eventDetails, stripePromise: stripePromise, onSuccess: handleBookingSuccess, onError: handleBookingError, onBackToEventInstances: backHandlers.onBackToEventInstances, onBackToEventTypes: backHandlers.onBackToEventTypes, selectedEventType: selectedEventType, selectedEventInstance: selectedEventInstance, isOpen: currentStep === "booking" && !!eventDetails, onClose: backHandlers.onClose, systemConfig: systemConfig })), jsx(BookingSuccessModal, { isOpen: isSuccess, onClose: () => {
12093
+ setIsSuccess(false);
12094
+ setCurrentStep("eventTypes");
12095
+ // Reset lazy loading flags
12096
+ setShouldRenderInstanceSelection(false);
12097
+ setShouldRenderBookingForm(false);
12098
+ }, bookingData: successData, eventDetails: eventDetails, formData: successData?.formData, config: config })] }));
12084
12099
  }
12085
12100
 
12086
12101
  // Export init function for vanilla JS usage