1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4
4<script> 5 self["MonacoEnvironment"] = (function (paths) { 6 return { 7 globalAPI: false, 8 getWorkerUrl : function (moduleId, label) { 9 var result = paths[label]; 10 if (/^((http:)|(https:)|(file:)|(\/\/))/.test(result)) { 11 var currentUrl = String(window.location); 12 var currentOrigin = currentUrl.substr(0, currentUrl.length - window.location.hash.length - window.location.search.length - window.location.pathname.length); 13 if (result.substring(0, currentOrigin.length) !== currentOrigin) { 14 var js = '/*' + label + '*/importScripts("' + result + '");'; 15 var blob = new Blob([js], { type: 'application/javascript' }); 16 return URL.createObjectURL(blob); 17 } 18 } 19 return result; 20 } 21 }; 22 })({ 23 "editorWorkerService": "/monacoeditorwork/editor.worker.bundle.js", 24 "typescript": "/monacoeditorwork/ts.worker.bundle.js", 25 "json": "/monacoeditorwork/json.worker.bundle.js", 26 "css": "/monacoeditorwork/css.worker.bundle.js", 27 "html": "/monacoeditorwork/html.worker.bundle.js", 28 "javascript": "/monacoeditorwork/ts.worker.bundle.js", 29 "less": "/monacoeditorwork/css.worker.bundle.js", 30 "scss": "/monacoeditorwork/css.worker.bundle.js", 31 "handlebars": "/monacoeditorwork/html.worker.bundle.js", 32 "razor": "/monacoeditorwork/html.worker.bundle.js" 33}); 34 </script>
34 35 <!-- Runtime config â must execute before the Vite module scripts read 36 window.__APP_CONFIG__. `defer` keeps that order (deferred classic 37 scripts and module scripts run in document order after parsing) while 38 unblocking the HTML parser, so asset preloads start immediately 39 instead of stalling ~160ms (p75) on this API round trip. 40 Back on the .js path: Render's extension-keyed edge cache rule twice 41 pinned a wrong body under this URL despite `no-store` (2026-08-20 and 42 2026-08-24); Render has since removed that cache rule for us, so the 43 suffix is safe again. If poisoning recurs: bump the `?v=` cache key, 44 or switch the src to the extension-less /api/frontend-config route 45 (kept serving as an escape hatch). --> 46
46<script defer="" src="/api/frontend-config.js?v=3"> 47 </script>
47 48 <!-- Usercentrics CMP --> 49
49<script type="application/javascript"> 50 var isBypassEnabled = document.cookie.split(';').some(function(cookie) { 51 return cookie.trim().indexOf('no_cmp=') === 0; 52 }); 53 var UC_UI_SUPPRESS_CMP_DISPLAY = isBypassEnabled; 54 </script>
54 55
55<script async="" src="https://accounts.google.com/gsi/client"> 56 </script>
56 57 <meta charset="utf-8"/> 58 <!-- Platform favicon: a real multi-size ICO (16/32/48) of the current sun 59 mark, served from public/. This is the ONLY rel="icon" link, and it 60 must stay that way â App.js rewrites the first match for backoffice. 61 Crawlers and link scrapers read this tag (and probe /favicon.ico 62 directly) with no JS, so the brand has to be correct statically. --> 63 <link href="https://qtrypzzcjebvfcihiynt.supabase.co/storage/v1/object/public/base44-prod/public/68cd27e4c6cd9dde409100c8/ccee23be2_WhatsApp2025-09-19124216_26c19b98.jpg" rel="icon" sizes="any"/> 64
64<script> 65 // Pre-paint theme stamp for the demo Appearance (demo-appearance-themes) 66 // cohort: on a hard load the theme is applied by React (DemoThemeApplier) 67 // only after auth resolves, so the document boots light â a white flash, 68 // then light route skeletons (the FOUC this removes). DemoThemeApplier 69 // persists 'demo-display-theme-applied' only while the feature is active, 70 // so every other cohort (flag-off, native, backoffice, runtime apps) 71 // never sets it and this stays a no-op. React stays the source of truth 72 // after mount: DemoThemeApplier 73 // re-applies or clears these exact attributes. Keys must stay byte-identical 74 // with components/settings/useDemoTheme.ts â BOOT_STAMP_CONTRACT there is 75 // asserted against this file by useDemoTheme.spec.ts, so update both. 76 // 77 // Kill-switch caveat: the marker is written while the feature is active and 78 // only cleared once /me resolves. On the FIRST load after a user loses the 79 // flag â or after the kill switch is flipped mid-incident â this still 80 // stamps dark, then React settles to light: one darkâlight flash, which 81 // self-heals from the next load on. Flipping the switch does not repaint 82 // already-open tabs pre-paint; it collapses them on their next load. 83 try { 84 if (localStorage.getItem('demo-display-theme-applied') === '1') { 85 var demoTheme = localStorage.getItem('demo-display-theme'); 86 var demoDark = demoTheme === 'dark' || 87 (demoTheme === 'system' && window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches); 88 if (demoDark) { 89 var demoRoot = document.documentElement; 90 demoRoot.setAttribute('data-ds', 'base44'); 91 demoRoot.setAttribute('data-theme', 'dark'); 92 demoRoot.classList.add('dark'); 93 // Kill the pre-CSS white document flash; the app paints over it. 94 demoRoot.style.backgroundColor = '#09090b'; 95 } 96 } 97 } catch (e) {} 98 </script>
98 99 <meta content="width=device-width, initial-scale=1.0, viewport-fit=cover" name="viewport"/> 100 <meta content="#000000" name="theme-color"/> 101 <meta content="Elevate your events with Entertainment Star. Seamlessly manage productions, attractions, artists, and more with our all-in-one platform. From initial inquiry to final execution, create unforgettable experiences." name="description"/> 102 <meta content="yes" name="mobile-web-app-capable"/> 103 <meta content="black" name="apple-mobile-web-app-status-bar-style"/> 104 <meta content="EventSpark" name="apple-mobile-web-app-title"/> 105 <link href="https://qtrypzzcjebvfcihiynt.supabase.co/storage/v1/object/public/base44-prod/public/68cd27e4c6cd9dde409100c8/ccee23be2_WhatsApp2025-09-19124216_26c19b98.jpg" rel="apple-touch-icon" sizes="180x180"/> 106 <link href="https://event-spark-409100c8.base44.app/manifest.json" rel="manifest"/> 107 <title> 108 Invitation | EventSpark 109 </title> 110 <!-- Open Graph / Facebook --> 111 <meta content="website" property="og:type"/> 112 <meta content="https://event-spark-409100c8.base44.app/Invitation" property="og:url"/> 113 <meta content="Invitation | EventSpark" property="og:title"/> 114 <meta content="EventSpark" property="og:site_name"/> 115 <meta content="Elevate your events with Entertainment Star. Seamlessly manage productions, attractions, artists, and more with our all-in-one platform. From initial inquiry to final execution, create unforgettable experiences." property="og:description"/> 116 <meta content="https://qtrypzzcjebvfcihiynt.supabase.co/storage/v1/render/image/public/base44-prod/public/68cd27e4c6cd9dde409100c8/ccee23be2_WhatsApp2025-09-19124216_26c19b98.jpg?width=1200&height=630&resize=contain" property="og:image"/> 117 <meta content="1200" property="og:image:width"/> 118 <meta content="630" property="og:image:height"/> 119 <meta content="Base44 link preview" property="og:image:alt"/> 120 <!-- Twitter --> 121 <meta content="summary_large_image" name="twitter:card"/> 122 <meta content="https://event-spark-409100c8.base44.app/Invitation" name="twitter:url"/> 123 <meta content="Invitation | EventSpark" name="twitter:title"/> 124 <meta content="Elevate your events with Entertainment Star. Seamlessly manage productions, attractions, artists, and more with our all-in-one platform. From initial inquiry to final execution, create unforgettable experiences." name="twitter:description"/> 125 <meta content="https://qtrypzzcjebvfcihiynt.supabase.co/storage/v1/render/image/public/base44-prod/public/68cd27e4c6cd9dde409100c8/ccee23be2_WhatsApp2025-09-19124216_26c19b98.jpg?width=1200&height=630&resize=contain" name="twitter:image"/> 126 <meta content="Base44 link preview" name="twitter:image:alt"/> 127
127<script crossorigin="" src="/static/index-D96eRrlv.js" type="module"> 128 </script>
128 129 <link crossorigin="" href="/static/rolldown-runtime-C0FnF6B9.js" rel="modulepreload"/> 130 <link crossorigin="" href="/static/runtime-QtgwY_nV.js" rel="modulepreload"/> 131 <link crossorigin="" href="/static/backend-CC2lXJt_.js" rel="modulepreload"/> 132 <link crossorigin="" href="/static/vendor-react-Ccu8BlQU.js" rel="modulepreload"/> 133 <link crossorigin="" href="/static/preload-helper-BZ1Pz5am.js" rel="modulepreload"/> 134 <link crossorigin="" href="/static/vendor-data-D4IPhVFk.js" rel="modulepreload"/> 135 <link crossorigin="" href="/static/errorReporting-C8KVtz7O.js" rel="modulepreload"/> 136 <link crossorigin="" href="/static/i18n-pkgydE_c.js" rel="modulepreload"/> 137 <link crossorigin="" href="/static/vendor-utils-C8Ev1Z53.js" rel="modulepreload"/> 138 <link crossorigin="" href="/static/mixpanelUtils-CtEUaRBr.js" rel="modulepreload"/> 139 <link crossorigin="" href="/static/bridge-Cq_Szqk4.js" rel="modulepreload"/> 140 <link crossorigin="" href="/static/axiosClient-DnVO32-R.js" rel="modulepreload"/> 141 <link crossorigin="" href="/static/domainValidation-FMKryCR2.js" rel="modulepreload"/> 142 <link crossorigin="" href="/static/vendor-ui-C97dD7rv.js" rel="modulepreload"/> 143 <link crossorigin="" href="/static/base-DLGBKAFy.js" rel="modulepreload"/> 144 <link crossorigin="" href="/static/AuthAPI-C4-6oDY6.js" rel="modulepreload"/> 145 <link crossorigin="" href="/static/useDesignSystem-CehPfIkU.js" rel="modulepreload"/> 146 <link crossorigin="" href="/static/logoutReturnPath-HjtsxsFd.js" rel="modulepreload"/> 147 <link crossorigin="" href="/static/AuthContext-BwFq1txD.js" rel="modulepreload"/> 148 <link crossorigin="" href="/static/dist-XEn2s_wS.js" rel="modulepreload"/> 149 <link crossorigin="" href="/static/featureFlags-DkMoeXMw.js" rel="modulepreload"/> 150 <link crossorigin="" href="/static/useHideNativeBottomTabs-C_i-vpDp.js" rel="modulepreload"/> 151 <link crossorigin="" href="/static/native-mobile-app-DhQk5gto.js" rel="modulepreload"/> 152 <link crossorigin="" href="/static/prop-types-D9WxI36-.js" rel="modulepreload"/> 153 <link crossorigin="" href="/static/esm-BcdKrTNz.js" rel="modulepreload"/> 154 <link crossorigin="" href="/static/use-mobile-CaU875wk.js" rel="modulepreload"/> 155 <link crossorigin="" href="/static/create-zustand-store-BANj7DdM.js" rel="modulepreload"/> 156 <link crossorigin="" href="/static/persist-to-storage-BFlqrUp_.js" rel="modulepreload"/> 157 <link crossorigin="" href="/static/actions.middleware-D_eRWZoy.js" rel="modulepreload"/> 158 <link crossorigin="" href="/static/WorkspaceAPI-NXczXWIe.js" rel="modulepreload"/> 159 <link crossorigin="" href="/static/useWorkspaceUnlockState-CC8XdN-l.js" rel="modulepreload"/> 160 <link crossorigin="" href="/static/WorkspaceContext-SU9dVSL0.js" rel="modulepreload"/> 161 <link crossorigin="" href="/static/usePlatform-C2eTT50O.js" rel="modulepreload"/> 162 <link crossorigin="" href="/static/react-BanELCRV.js" rel="modulepreload"/> 163 <link crossorigin="" href="/static/useFeatureFlags-BRZVRkZF.js" rel="modulepreload"/> 164 <link crossorigin="" href="/static/utils-CrD3uvwO.js" rel="modulepreload"/> 165 <link crossorigin="" href="/static/toast-8IacIur2.js" rel="modulepreload"/> 166 <link crossorigin="" href="/static/index-BGSEU5bQ.css" rel="stylesheet"/> 167
167<script id="base44-runtime-tailwind-config"> 168 window.tailwind = window.tailwind || {}; window.tailwind.config = { darkMode: 'class' }; 169 </script>
169 170
170<script id="base44-runtime-tailwind-cdn" src="https://cdn.tailwindcss.com"> 171 </script>
171 172
172<script> 173 (function () { 174 var titles = {"/home": "EventSpark"}; 175 // PascalCase boundaries -> "-", mirroring _PASCAL_BOUNDARY_RE without lookbehind 176 // (old Safari fails to PARSE a lookbehind, taking the whole script down). 177 var dashed = function (s) { 178 return s.replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/([A-Z])([A-Z][a-z])/g, "$1-$2"); 179 }; 180 var decode = function (s) { 181 // A %2F inside ONE segment must not become a structural separator: /blog/foo%2Fbar is a 182 // dynamic slug, and letting it split would match a static /blog/foo/bar and write ITS title. 183 try { var d = decodeURIComponent(s); return d.indexOf("/") < 0 ? d : s; } catch (e) { return s; } 184 }; 185 var segments = function (path) { return path.split("/").filter(Boolean).map(decode); }; 186 var norm = function (path) { 187 var parts = segments(path).map(function (s) { return dashed(s).toLowerCase(); }); 188 return parts.length ? "/" + parts.join("/") : "/"; 189 }; 190 var lastPath = location.pathname, written = document.title, on = true; 191 var sync = function () { 192 // Path only: a hash/query change is the same page, and the SDK strips its own auth 193 // params with replaceState -- neither must clobber a server-rendered title in place. 194 if (!on || location.pathname === lastPath) return; 195 lastPath = location.pathname; 196 if (document.title !== written) { on = false; return; } 197 // Write ONLY a title the map proves. An unmapped path is a dynamic route (/blog/:slug) the 198 // map cannot carry, and writing a placeholder there is destructive, not merely vague: the 199 // prerender worker runs no setUserAgent, so its capture browser reads as human and executes 200 // this script, and coordinator.js's settle wait explicitly tolerates a full navigation -- 201 // a redirect landing on an unmapped path would bake the placeholder into the stored 202 // snapshot. Leaving the title alone degrades to today's behavior instead. 203 // Exact lookup only. A dash-stripped retry here would let a genuinely different /set-up 204 // claim /setup: the map carries a dash-free key only where a PascalCase boundary put the 205 // dashes there, and the client cannot tell the two apart. The map emits every reachable 206 // shape per segment instead (_client_url_variants). 207 var title = titles[norm(location.pathname)]; 208 if (title === undefined) return; 209 document.title = title; 210 // Re-read: the setter stores verbatim but the getter strips and collapses whitespace, so 211 // keeping the assigned string would make the next sync() read our own write as the app's. 212 written = document.title; 213 }; 214 var wrap = function (fn) { 215 // The history entry is already pushed by the time sync() runs, so a throw here would 216 // surface inside the host app's router and break navigation. This is injected into apps 217 // we cannot test, so it swallows rather than trusting the trace. 218 return function () { 219 var r = fn.apply(this, arguments); 220 try { sync(); } catch (e) {} 221 return r; 222 }; 223 }; 224 history.pushState = wrap(history.pushState); 225 history.replaceState = wrap(history.replaceState); 226 window.addEventListener("popstate", sync); 227})(); 228 </script>
228 229 <link href="https://event-spark-409100c8.base44.app/Invitation" rel="canonical"/> 230
230<script data-seo-source="builder" type="application/ld+json"> 231 {"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{"@type": "ListItem", "position": 1, "name": "Home", "item": "https://event-spark-409100c8.base44.app/"}, {"@type": "ListItem", "position": 2, "name": "Invitation", "item": "https://event-spark-409100c8.base44.app/Invitation"}]} 232 </script>
232 233 </head> 234 <body> 235 <noscript> 236 You need to enable JavaScript to run this app. 237 </noscript> 238 <div id="root"> 239 <div data-seo-source="builder" id="seo-snapshot" style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;"> 240 <main> 241 <header> 242 <h1> 243 Invitation | EventSpark 244 </h1> 245 <p> 246 Elevate your events with Entertainment Star. Seamlessly manage productions, attractions, artists, and more with our all-in-one platform. From initial inquiry to final execution, create unforgettable experiences. 247 </p> 248 </header> 249 <nav aria-label="Pages"> 250 <h2> 251 Pages 252 </h2> 253 <ul> 254 <li> 255 <a href="/Home"> 256 Home 257 </a> 258 </li> 259 <li> 260 <a href="/About"> 261 About 262 </a> 263 </li> 264 <li> 265 <a href="/InvitationGenerator"> 266 Invitation Generator 267 </a> 268 </li> 269 <li> 270 <a href="/Services"> 271 Services 272 </a> 273 </li> 274 <li> 275 <a href="/Gallery"> 276 Gallery 277 </a> 278 </li> 279 <li> 280 <a href="/Artists"> 281 Artists 282 </a> 283 </li> 284 <li> 285 <a href="/Packages"> 286 Packages 287 </a> 288 </li> 289 <li> 290 <a href="/Testimonials"> 291 Testimonials 292 </a> 293 </li> 294 <li> 295 <a href="/Contact"> 296 Contact 297 </a> 298 </li> 299 <li> 300 <a href="/Marketing"> 301 Marketing 302 </a> 303 </li> 304 <li> 305 <a href="/DigitalInvitation"> 306 Digital Invitation 307 </a> 308 </li> 309 <li> 310 <a href="/AdminMarketing"> 311 Admin Marketing 312 </a> 313 </li> 314 <li> 315 <a href="/AdminLogin"> 316 Admin Login 317 </a> 318 </li> 319 <li> 320 <a href="/AdminDashboard"> 321 Admin Dashboard 322 </a> 323 </li> 324 <li> 325 <a href="/Terms"> 326 Terms 327 </a> 328 </li> 329 <li> 330 <a href="/Privacy"> 331 Privacy 332 </a> 333 </li> 334 <li> 335 <a href="/Accessibility"> 336 Accessibility 337 </a> 338 </li> 339 </ul> 340 </nav> 341 </main> 342 </div> 343 </div> 344 </body> 345</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.