1<!DOCTYPE html> 2<html 3 lang="en" 4 dir="ltr" 5 class="fi min-h-screen" 6> 7 <head> 8
8<script> 9 (function () { 10 var updatePath = "\/update-app"; 11 12 function isLegacyCapacitor() { 13 try { 14 if (window.Capacitor) return true; 15 var ua = String(navigator.userAgent || ''); 16 return ua.indexOf('Capacitor') !== -1 || ua.indexOf('GlobalSKU') !== -1; 17 } catch (e) { 18 return false; 19 } 20 } 21 22 function redirect() { 23 try { 24 if (!isLegacyCapacitor()) return; 25 if (window.location.pathname === updatePath) return; 26 window.location.replace(updatePath); 27 } catch (e) {} 28 } 29 30 redirect(); 31 document.addEventListener('DOMContentLoaded', redirect); 32 setTimeout(redirect, 50); 33 setTimeout(redirect, 300); 34 })(); 35</script>
35 36<!-- Web Application Manifest --> 37<link rel="manifest" href="https://globalsku.app/manifest.json"> 38<!-- Chrome for Android theme color --> 39<meta name="theme-color" content="#000000"> 40 41<!-- Add to homescreen for Chrome on Android --> 42<meta name="mobile-web-app-capable" content="yes"> 43<meta name="application-name" content="GlobalSKU"> 44<link rel="icon" sizes="512x512" href="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/icons/icon-512x512.png"> 45 46<!-- Add to homescreen for Safari on iOS --> 47<meta name="apple-mobile-web-app-capable" content="yes"> 48<meta name="apple-mobile-web-app-status-bar-style" content="black"> 49<meta name="apple-mobile-web-app-title" content="GlobalSKU"> 50<link rel="apple-touch-icon" href="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/icons/icon-512x512.png"> 51 52 53<link href="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/icons/splash-640x1136.png" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" /> 54<link href="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/icons/splash-750x1334.png" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" /> 55<link href="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/icons/splash-1242x2208.png" media="(device-width: 621px) and (device-height: 1104px) and (-webkit-device-pixel-ratio: 3)" rel="apple-touch-startup-image" /> 56<link href="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/icons/splash-1125x2436.png" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3)" rel="apple-touch-startup-image" /> 57<link href="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/icons/splash-828x1792.png" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" /> 58<link href="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/icons/splash-1242x2688.png" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3)" rel="apple-touch-startup-image" /> 59<link href="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/icons/splash-1536x2048.png" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" /> 60<link href="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/icons/splash-1668x2224.png" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" /> 61<link href="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/icons/splash-1668x2388.png" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" /> 62<link href="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/icons/splash-2048x2732.png" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" /> 63 64<!-- Tile for Win8 --> 65<meta name="msapplication-TileColor" content="#000000"> 66<meta name="msapplication-TileImage" content="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/icons/icon-512x512.png"> 67
68<script type="text/javascript"> 69 var filesToCache = [ 70 '/offline', 71 'https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/css/app.css', 72 'https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/js/app.js', 73 'https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/icons/icon-72x72.png', 74 'https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/icons/icon-96x96.png', 75 'https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/icons/icon-128x128.png', 76 'https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/icons/icon-144x144.png', 77 'https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/icons/icon-152x152.png', 78 'https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/icons/icon-192x192.png', 79 'https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/icons/icon-384x384.png', 80 'https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/icons/icon-512x512.png', 81 ]; 82 83 // Initialize the service worker 84 if ('serviceWorker' in navigator) { 85 86 navigator.serviceWorker.register('/serviceworker.js', { 87 scope: '.' 88 }).then(function (registration) { 89 // Registration was successful 90 console.log('Laravel PWA: ServiceWorker registration successful with scope: ', registration.scope); 91 }, function (err) { 92 // registration failed :( 93 console.log('Laravel PWA: ServiceWorker registration failed: ', err); 94 }); 95 } 96</script>
96<div id="gsku-deeplink-debug-banner" 97 style="display:none; position:fixed; top:0; left:0; right:0; z-index:999999; padding:10px 12px; background:rgba(0,0,0,0.85); color:#fff; font:12px/1.35 -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; word-break:break-word;"> 98 <div style="opacity:0.9; font-weight:600; margin-bottom:4px;">GlobalSKU Deep Link Debug</div> 99 <div id="gsku-deeplink-debug-text"></div> 100 </div> 101
101<script> 102 (function () { 103 try { 104 function isProbablyCapacitor() { 105 try { 106 if (window.Capacitor) return true; 107 var ua = String(navigator.userAgent || ''); 108 return ua.indexOf('Capacitor') !== -1; 109 } catch (e) { 110 return false; 111 } 112 } 113 114 // Enable debug banner via query param once, then persist in localStorage: 115 // open any page in the app with `?deeplink_debug=1`. 116 try { 117 var params = new URL(window.location.href).searchParams; 118 if (params && params.get('deeplink_debug') === '1') { 119 localStorage.setItem('gsku_deeplink_debug', '1'); 120 } 121 } catch (e) {} 122 123 function debugEnabled() { 124 try { return localStorage.getItem('gsku_deeplink_debug') === '1'; } catch (e) { return false; } 125 } 126 127 function debug(msg) { 128 try { 129 if (!debugEnabled()) return; 130 console.log('[gsku-deeplink]', msg); 131 var banner = document.getElementById('gsku-deeplink-debug-banner'); 132 var text = document.getElementById('gsku-deeplink-debug-text'); 133 if (banner && text) { 134 banner.style.display = 'block'; 135 text.textContent = String(msg); 136 } 137 } catch (e) {} 138 } 139 140 function initCapacitorHandlers() { 141 var Cap = window.Capacitor; 142 if (!Cap || !Cap.Plugins || !Cap.Plugins.App) { 143 debug('Capacitor not ready yet'); 144 return false; 145 } 146 147 var App = Cap.Plugins.App; 148 // NOTE: We intentionally do NOT call `Browser.close()` here. 149 // OAuth is happening in external Safari via Universal Links, so there is no in-app Browser 150 // window to close. Calling close() when none exists can spam native logs and can also 151 // increase navigation churn. 152 153 var DEDUPE_KEY = 'gsku_deeplink_last_url'; 154 var DEDUPE_TS_KEY = 'gsku_deeplink_last_ts'; 155 var DEDUPE_WINDOW_MS = 15000; // 15s is plenty to prevent loops while still allowing retries later 156 157 function shouldHandle(urlObj) { 158 if (!urlObj) return false; 159 // Handle custom scheme deep links that carry a target web URL. 160 // Example: globalsku://open?url=https%3A%2F%2Fglobalsku.app%2Fgetting-started 161 // Also handle OAuth callback deep links from social login: 162 // Example: globalsku://auth/google/callback?code=...&state=... 163 try { 164 if (String(urlObj.protocol || '').toLowerCase() === 'globalsku:') { 165 var host = String(urlObj.host || '').toLowerCase(); 166 return host === 'open' || host === 'auth'; 167 } 168 } catch (e) {} 169 var host = String(urlObj.host || '').toLowerCase(); 170 if (!host.endsWith('globalsku.app')) return false; 171 var path = String(urlObj.pathname || ''); 172 173 // Only handle routes where we need to complete auth inside the webview 174 // (avoids surprising navigation for unrelated links). 175 return ( 176 path.indexOf('/integrations/') === 0 || 177 path.indexOf('/oauth/bridge') === 0 || 178 path.indexOf('/auth/') === 0 179 ); 180 } 181 182 function normalizeUrlForCompare(raw) { 183 try { 184 var u = new URL(String(raw)); 185 // Ignore app_mode differences when deduping, since we may add it. 186 u.searchParams.delete('app_mode'); 187 return u.toString(); 188 } catch (e) { 189 return String(raw || ''); 190 } 191 } 192 193 function recentlyHandled(dest) { 194 try { 195 var now = Date.now(); 196 var last = sessionStorage.getItem(DEDUPE_KEY); 197 var lastTs = parseInt(sessionStorage.getItem(DEDUPE_TS_KEY) || '0', 10) || 0; 198 if (!last || !lastTs) return false;
199 if ((now - lastTs) > DEDUPE_WINDOW_MS) return false; 200 return normalizeUrlForCompare(last) === normalizeUrlForCompare(dest); 201 } catch (e) { 202 return false; 203 } 204 } 205 206 function markHandled(dest) { 207 try { 208 sessionStorage.setItem(DEDUPE_KEY, String(dest)); 209 sessionStorage.setItem(DEDUPE_TS_KEY, String(Date.now())); 210 } catch (e) {} 211 } 212 213 function navigateTo(rawUrl) { 214 if (!rawUrl) return; 215 var urlObj; 216 try { 217 urlObj = new URL(String(rawUrl)); 218 } catch (e) { 219 debug('Invalid URL: ' + rawUrl); 220 return; 221 } 222 223 // Translate custom scheme deep links into a real web URL for the in-app webview. 224 // This avoids "resume last screen" behavior when Safari opens the app. 225 var fromCustomOpenDeepLink = false; 226 try { 227 if (String(urlObj.protocol || '').toLowerCase() === 'globalsku:') { 228 var gskuHost = String(urlObj.host || '').toLowerCase(); 229 230 if (gskuHost === 'auth') { 231 // OAuth callback deep link from social login popup: 232 // globalsku://auth/{provider}/callback?code=...&state=... 233 // Convert to a web URL so the main webview can complete 234 // the OAuth exchange (pass-2 of the native flow). 235 // The path on the deep link is /{provider}/callback, so the 236 // full web path becomes /auth/{provider}/callback. 237 try { 238 var webUrl = window.location.origin + '/auth' + urlObj.pathname; 239 var webUrlObj = new URL(webUrl); 240 // Copy every query param from the deep link 241 urlObj.searchParams.forEach(function (val, key) { 242 webUrlObj.searchParams.set(key, val); 243 }); 244 // Signal pass-2 so the server processes the login instead 245 // of redirecting to the custom scheme again. 246 webUrlObj.searchParams.set('app_mode', '1'); 247 urlObj = webUrlObj; 248 fromCustomOpenDeepLink = true; 249 debug('Converted auth deep link to web URL: ' + urlObj.toString()); 250 } catch (e) { 251 debug('Failed to convert auth deep link: ' + e.message); 252 return; 253 } 254 } else { 255 // Standard open deep link: globalsku://open?url=... 256 var target = null; 257 try { target = urlObj.searchParams.get('url'); } catch (e) {} 258 if (!target) { 259 debug('Ignored globalsku:// deep link (missing url param): ' + urlObj.toString()); 260 return; 261 } 262 try { 263 urlObj = new URL(String(target)); 264 fromCustomOpenDeepLink = true; 265 } catch (e) { 266 debug('Invalid target url in globalsku:// deep link: ' + String(target)); 267 return; 268 } 269 } 270 } 271 } catch (e) {} 272 273 // For our explicit custom deep links, allow any path on our own domain. 274 // For all other incoming URLs (Universal Links), keep a strict allow-list. 275 if (fromCustomOpenDeepLink) { 276 try { 277 var hostForCustom = String(urlObj.host || '').toLowerCase(); 278 if (!hostForCustom.endsWith('globalsku.app')) { 279 debug('Ignored custom deep link target (wrong host): ' + urlObj.toString()); 280 return; 281 } 282 } catch (e) { 283 debug('Ignored custom deep link target (host parse error)'); 284 return; 285 } 286 } else if (!shouldHandle(urlObj)) { 287 debug('Ignored URL (not handled): ' + urlObj.toString()); 288 return; 289 } 290 291 // Preserve "native app mode" across navigations 292 try { 293 urlObj.searchParams.set('app_mode', '1'); 294 } catch (e) {} 295 296 var dest = urlObj.toString(); 297 if (recentlyHandled(dest)) { 298 debug('Deduped URL (recently handled): ' + dest); 299 return; 300 } 301 302 // If we are already on the destination (ignoring app_mode), don't churn navigation. 303 try { 304 if (normalizeUrlForCompare(window.location.href) === normalizeUrlForCompare(dest)) { 305 debug('Already at destination: ' + dest); 306 markHandled(dest); 307 return; 308 } 309 } catch (e) {} 310 311 debug('Navigate webview to: ' + dest); 312 313 markHandled(dest); 314 315 if (window.location.href !== dest) { 316 window.location.href = dest; 317 } 318 } 319 320 // Cold-start: if the app was launched by a Universal Link, get it. 321 function tryLaunchUrl(label) { 322 try { 323 if (typeof App.getLaunchUrl !== 'function') return; 324 App.getLaunchUrl().then(function (data) { 325 debug(label + ' getLaunchUrl: ' + (d
325ata && data.url ? data.url : '(none)')); 326 // getLaunchUrl() can keep returning the same value across navigations. 327 // navigateTo() has its own dedupe, but we also avoid doing work if empty. 328 if (data && data.url) navigateTo(data.url); 329 }).catch(function (e) { 330 debug(label + ' getLaunchUrl error'); 331 }); 332 } catch (e) {} 333 } 334 335 // Warm-start: app opened/resumed via a Universal Link. 336 try { 337 if (typeof App.addListener === 'function') { 338 App.addListener('appUrlOpen', function (data) { 339 debug('appUrlOpen: ' + (data && data.url ? data.url : '(none)')); 340 navigateTo(data && data.url); 341 }); 342 } 343 } catch (e) {} 344 345 // Retry a few times to avoid missing cold-start URLs due to race conditions. 346 tryLaunchUrl('[t0]'); 347 setTimeout(function () { tryLaunchUrl('[t250ms]'); }, 250); 348 setTimeout(function () { tryLaunchUrl('[t1500ms]'); }, 1500); 349 350 // Open selected URLs outside the webview (e.g. billing / manage subscription). 351 // Usage: add `data-open-external="1"` to <a> tags. 352 try { 353 document.addEventListener('click', function (event) { 354 var a = event.target && event.target.closest ? event.target.closest('a[data-open-external="1"]') : null; 355 if (!a) return; 356 357 var href = a.getAttribute('href'); 358 if (!href) return; 359 360 // Build an absolute URL (Capacitor native plugins expect fully-qualified URLs). 361 var absolute; 362 try { 363 absolute = new URL(href, window.location.origin).toString(); 364 } catch (e) { 365 absolute = href; 366 } 367 368 event.preventDefault(); 369 event.stopPropagation(); 370 371 debug('Open external URL: ' + absolute); 372 373 // Use App.openUrl() because it leaves the app (opens Safari). 374 try { 375 if (App && typeof App.openUrl === 'function') { 376 var p = App.openUrl({ url: absolute }); 377 if (p && typeof p.catch === 'function') { 378 p.catch(function () {}); 379 } 380 return; 381 } 382 } catch (e) {} 383 384 // Fallback: plain window.open (on iOS WKWebView this may still stay in-app; 385 // keep this only as a last resort when the native bridge isn't available). 386 try { 387 window.open(absolute, '_blank', 'noopener,noreferrer'); 388 } catch (e) { 389 window.location.href = absolute; 390 } 391 }, true); 392 } catch (e) {} 393 394 debug('Capacitor handlers initialized'); 395 return true; 396 } 397 398 // Initialize if we're in-app. If Capacitor isn't ready yet, retry shortly. 399 if (!isProbablyCapacitor()) return; 400 if (!initCapacitorHandlers()) { 401 setTimeout(function () { initCapacitorHandlers(); }, 50); 402 setTimeout(function () { initCapacitorHandlers(); }, 250); 403 } 404 } catch (e) { 405 // no-op 406 } 407 })(); 408 </script>
408 409 410 411 412<!-- Google tag (gtag.js) -->
vendor: 68 bytes, lines 412-413
412 413 <script async src="https://www.googletagmanager.com/gtag/js?id=
413G-HBYLQLGEF4
vendor: 16 bytes, lines 413-414
413"></script> 414
414<script> 415
vendor: 151 bytes, lines 415-418
415window.dataLayer = window.dataLayer || []; 416 function gtag(){dataLayer.push(arguments);} 417 gtag('js', new Date()); 418 gtag('config', "
418G-HBYLQLGEF4
vendor: 8 bytes, lines 418-419
418"); 419
419</script>
419 420 421<!-- Meta Pixel Code (GlobalSKU Marketing 1632544451763683) --> 422
422<script>
vendor: 471 bytes, lines 422-431
422 423 !function(f,b,e,v,n,t,s) 424 {if(f.fbq)return;n=f.fbq=function(){n.callMethod? 425 n.callMethod.apply(n,arguments):n.queue.push(arguments)}; 426 if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; 427 n.queue=[];t=b.createElement(e);t.async=!0; 428 t.src=v;s=b.getElementsByTagName(e)[0]; 429 s.parentNode.insertBefore(t,s)}(window, document,'script', 430 'https://connect.facebook.net/en_US/fbevents.js'); 431 fbq('init', "
4311632544451763683
vendor: 47 bytes, lines 431-434
431"); 432 fbq('track', 'PageView'); 433 434
434window.GlobalSkuMeta = window.GlobalSkuMeta || { 435 pixelId: "1632544451763683", 436 track: function (event, params) { 437 try { 438 if (typeof fbq !== 'function') return; 439 params = params || {}; 440 var eventID = params.eventID || params.event_id || null; 441 var payload = Object.assign({}, params); 442 delete payload.eventID; 443 delete payload.event_id; 444 if (eventID) { 445 fbq('track', event, payload, {eventID: eventID}); 446 } else if (Object.keys(payload).length) { 447 fbq('track', event, payload); 448 } else { 449 fbq('track', event); 450 } 451 } catch (e) {} 452 }, 453 completeRegistration: function (params) { 454 this.track('CompleteRegistration', params || {}); 455 }, 456 initiateCheckout: function (params) { 457 this.track('InitiateCheckout', params || { currency: 'USD' }); 458 }, 459 startTrial: function (params) { 460 this.track('StartTrial', params || { value: 0, currency: 'USD' }); 461 }, 462 purchase: function (params) { 463 this.track('Purchase', params || {}); 464 }, 465 trackOnce: function (storageKey, event, params) { 466 try { 467 if (window.sessionStorage && sessionStorage.getItem(storageKey)) return; 468 if (window.sessionStorage) sessionStorage.setItem(storageKey, '1'); 469 } catch (e) {} 470 this.track(event, params); 471 } 472 }; 473 474 475 476 // Fire InitiateCheckout when the user starts Stripe checkout (link or form). 477 document.addEventListener('click', function (event) { 478 try { 479 var anchor = event.target && event.target.closest 480 ? event.target.closest('a[href*="/checkout/plan/"]') 481 : null; 482 if (!anchor) return; 483 window.GlobalSkuMeta.initiateCheckout({ currency: 'USD' }); 484 if (window.GlobalSkuFunnel && window.GlobalSkuFunnel.checkoutStarted) { 485 window.GlobalSkuFunnel.checkoutStarted(); 486 } 487 } catch (e) {} 488 }, true); 489 490 document.addEventListener('submit', function (event) { 491 try { 492 var form = event.target; 493 if (!form || !form.getAttribute) return; 494 var action = form.getAttribute('action') || ''; 495 if (action.indexOf('/checkout/plan/') === -1) return; 496 window.GlobalSkuMeta.initiateCheckout({ currency: 'USD' }); 497 if (window.GlobalSkuFunnel && window.GlobalSkuFunnel.checkoutStarted) { 498 window.GlobalSkuFunnel.checkoutStarted(); 499 } 500 } catch (e) {} 501 }, true); 502 </script>
502 503 <noscript> 504 <img height="1" width="1" style="display:none" 505 src="https://www.facebook.com/tr?id=1632544451763683&ev=PageView&noscript=1" 506 alt="" /> 507 </noscript> 508 <!-- End Meta Pixel Code --> 509
510<script src="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/js/marketing-funnel.js"></script>
510 511 512 513
514<script> 515 document.addEventListener('DOMContentLoaded', function() { 516 var vp = document.querySelector('meta[name="viewport"]'); 517 if (vp && vp.content.indexOf('viewport-fit') === -1) { 518 vp.content += ', viewport-fit=cover'; 519 } 520 }); 521</script>
521 522<style> 523 @supports(padding: env(safe-area-inset-top)) { 524 .fi-topbar > nav { 525 padding-top: env(safe-area-inset-top); 526 } 527 .fi-sidebar { 528 padding-top: env(safe-area-inset-top); 529 } 530 .fi-topbar-close-sidebar-btn, 531 .fi-topbar-open-sidebar-btn { 532 margin-top: 0; 533 } 534 } 535 536 /* Wordmark is white/silver â sit it on a dark chip in light Filament. */ 537 html:not(.dark) .fi-logo { 538 background: #000; 539 border-radius: 0.5rem; 540 padding: 0.3rem 0.55rem; 541 box-sizing: content-box; 542 } 543</style> 544 545 546 <meta charset="utf-8" /> 547 <meta name="csrf-token" content="Tpa2nqynYl8pi5qh13Fn8eSr8QBzsE9uTvIwrlQS" /> 548 <meta name="viewport" content="width=device-width, initial-scale=1" /> 549 550 <link rel="icon" href="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/favicon.ico" /> 551 552 553 <title> 554 Login - GlobalSKU 555 </title> 556 557 558 559 <style> 560 [x-cloak=''], 561 [x-cloak='x-cloak'], 562 [x-cloak='1'] { 563 display: none !important; 564 } 565 566 @media (max-width: 1023px) { 567 [x-cloak='-lg'] { 568 display: none !important; 569 } 570 } 571 572 @media (min-width: 1024px) { 573 [x-cloak='lg'] { 574 display: none !important; 575 } 576 } 577 </style> 578 579 <link 580 href="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/css/filament/forms/forms.css?v=3.3.43.0" 581 rel="stylesheet" 582 data-navigate-track 583 /> 584 <link 585 href="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/css/filament/support/support.css?v=3.3.43.0" 586 rel="stylesheet" 587 data-navigate-track 588 /> 589 590<style> 591 :root { 592 --danger-50:254, 242, 242; --danger-100:254, 226, 226; --danger-200:254, 202, 202; --danger-300:252, 165, 165; --danger-400:248, 113, 113; --danger-500:239, 68, 68; --danger-600:220, 38, 38; --danger-700:185, 28, 28; --danger-800:153, 27, 27; --danger-900:127, 29, 29; --danger-950:69, 10, 10; --gray-50:249, 250, 251; --gray-100:243, 244, 246; --gray-200:229, 231, 235; --gray-300:209, 213, 219; --gray-400:156, 163, 175; --gray-500:107, 114, 128; --gray-600:75, 85, 99; --gray-700:55, 65, 81; --gray-800:31, 41, 55; --gray-900:17, 24, 39; --gray-950:3, 7, 18; --info-50:239, 246, 255; --info-100:219, 234, 254; --info-200:191, 219, 254; --info-300:147, 197, 253; --info-400:96, 165, 250; --info-500:59, 130, 246; --info-600:37, 99, 235; --info-700:29, 78, 216; --info-800:30, 64, 175; --info-900:30, 58, 138; --info-950:23, 37, 84; --primary-50:242, 252, 251; --primary-100:230, 249, 246; --primary-200:191, 241, 234; --primary-300:153, 233, 221; --primary-400:77, 216, 195; --primary-500:0, 199, 169; --primary-600:0, 179, 152; --primary-700:0, 149, 127; --primary-800:0, 119, 101; --primary-900:0, 98, 83; --primary-950:0, 60, 51; --success-50:240, 253, 244; --success-100:220, 252, 231; --success-200:187, 247, 208; --success-300:134, 239, 172; --success-400:74, 222, 128; --success-500:34, 197, 94; --success-600:22, 163, 74; --success-700:21, 128, 61; --success-800:22, 101, 52; --success-900:20, 83, 45; --success-950:5, 46, 22; --warning-50:255, 247, 237; --warning-100:255, 237, 213; --warning-200:254, 215, 170; --warning-300:253, 186, 116; --warning-400:251, 146, 60; --warning-500:249, 115, 22; --warning-600:234, 88, 12; --warning-700:194, 65, 12; --warning-800:154, 52, 18; --warning-900:124, 45, 18; --warning-950:67, 20, 7; } 593</style> 594 595 <link 596 href="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/css/filament/filament/app.css?v=3.3.43.0" 597 rel="stylesheet" 598 data-navigate-track 599 /> 600 601 <link rel="preconnect" href="https://fonts.bunny.net"> 602 <link href="https://fonts.bunny.net/css?family=inter:400,500,600,700&display=swap" rel="stylesheet" /> 603 604 605 <style> 606 :root { 607 --font-family: 'Inter'; 608 --sidebar-width: 20rem; 609 --collapsed-sidebar-width: 4.5rem; 610 --default-theme-mode: dark; 611 } 612 </style> 613 614 615 616 617
617<script> 618 const loadDarkMode = () => { 619 window.theme = localStorage.getItem('theme') ?? 'dark' 620 if ( 621 window.theme === 'dark' || 622 (window.theme === 'system' && 623 window.matchMedia('(prefers-color-scheme: dark)') 624 .matches) 625 ) { 626 document.documentElement.classList.add('dark') 627 } 628 } 629 630 loadDarkMode() 631 632 document.addEventListener('livewire:navigated', loadDarkMode) 633 </script>
633 634 635 636 <!-- Livewire Styles --><style >[wire\:loading][wire\:loading], [wire\:loading\.delay][wire\:loading\.delay], [wire\:loading\.inline-block][wire\:loading\.inline-block], [wire\:loading\.inline][wire\:loading\.inline], [wire\:loading\.block][wire\:loading\.block], [wire\:loading\.flex][wire\:loading\.flex], [wire\:loading\.table][wire\:loading\.table], [wire\:loading\.grid][wire\:loading\.grid], [wire\:loading\.inline-flex][wire\:loading\.inline-flex] {display: none;}[wire\:loading\.delay\.none][wire\:loading\.delay\.none], [wire\:loading\.delay\.shortest][wire\:loading\.delay\.shortest], [wire\:loading\.delay\.shorter][wire\:loading\.delay\.shorter], [wire\:loading\.delay\.short][wire\:loading\.delay\.short], [wire\:loading\.delay\.default][wire\:loading\.delay\.default], [wire\:loading\.delay\.long][wire\:loading\.delay\.long], [wire\:loading\.delay\.longer][wire\:loading\.delay\.longer], [wire\:loading\.delay\.longest][wire\:loading\.delay\.longest] {display: none;}[wire\:offline][wire\:offline] {display: none;}[wire\:dirty]:not(textarea):not(input):not(select) {display: none;}:root {--livewire-progress-bar-color: #2299dd;}[x-cloak] {display: none !important;}[wire\:cloak] {display: none !important;}</style> 637</head> 638 639 <body 640 class="fi-body fi-panel-app min-h-screen bg-gray-50 font-normal text-gray-950 antialiased dark:bg-gray-950 dark:text-white" 641 > 642 643 644 <div class="fi-simple-layout flex min-h-screen flex-col items-center"> 645 646 <div 647 class="fi-simple-main-ctn flex w-full flex-grow items-center justify-center" 648 > 649 <main 650 class="fi-simple-main my-16 w-full bg-white px-6 py-12 shadow-sm ring-1 ring-gray-950/5 dark:bg-gray-900 dark:ring-white/10 sm:rounded-xl sm:px-12 max-w-lg" 651 > 652 <div wire:snapshot="{"data":{"data":[{"email":null,"password":null,"remember":true},{"s":"arr"}],"mountedActions":[[],{"s":"arr"}],"mountedActionsArguments":[[],{"s":"arr"}],"mountedActionsData":[[],{"s":"arr"}],"defaultAction":null,"defaultActionArguments":null,"componentFileAttachments":[[],{"s":"arr"}],"areFormStateUpdateHooksDisabledForTesting":false,"mountedFormComponentActions":[[],{"s":"arr"}],"mountedFormComponentActionsArguments":[[],{"s":"arr"}],"mountedFormComponentActionsData":[[],{"s":"arr"}],"mountedFormComponentActionsComponents":[[],{"s":"arr"}],"mountedInfolistActions":[[],{"s":"arr"}],"mountedInfolistActionsData":[[],{"s":"arr"}],"mountedInfolistActionsComponent":null,"mountedInfolistActionsInfolist":null},"memo":{"id":"HwrOIPD0a2R5tibIBvqF","name":"app.filament.pages.auth.login","path":"login","method":"GET","children":[],"scripts":[],"assets":[],"errors":[],"locale":"en"},"checksum":"ec3c1bb12478c70ece2655d855afafaca939b171f6c5ac484cad6428852c73a1"}" wire:effects="{"url":{"defaultAction":{"as":"action","use":"replace","alwaysShow":false,"except":null},"defaultActionArguments":{"as":"actionArguments","use":"replace","alwaysShow":false,"except":null}}}" wire:id="HwrOIPD0a2R5tibIBvqF" class="fi-simple-page"> 653 654 655 <section class="grid auto-cols-fr gap-y-6"> 656 <header class="fi-simple-header flex flex-col items-center"> 657 <!--[if BLOCK]><![endif]--> <!--[if BLOCK]><![endif]--> <img 658 alt="GlobalSKU logo" 659 src="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/global-sku-logo.png" 660 style="height: 2rem;" class="fi-logo flex dark:hidden mb-4" 661 /> 662 <!--[if ENDBLOCK]><![endif]--> 663 664 665 666<!--[if BLOCK]><![endif]--> 667 <!--[if BLOCK]><![endif]--> <img 668 alt="GlobalSKU logo" 669 src="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/images/global-sku-logo.png" 670 style="height: 2rem;" class="fi-logo hidden dark:flex mb-4" 671 /> 672 <!--[if ENDBLOCK]><![endif]--> 673 674 675<!--[if ENDBLOCK]><![endif]--> 676 <!--[if ENDBLOCK]><![endif]--> 677 678 <!--[if BLOCK]><![endif]--> <h1 679 class="fi-simple-header-heading text-center text-2xl font-bold tracking-tight text-gray-950 dark:text-white" 680 > 681 Sign in 682 </h1> 683 <!--[if ENDBLOCK]><![endif]--> 684 685 <!--[if BLOCK]><![endif]--> <p 686 class="fi-simple-header-subheading mt-2 text-center text-sm text-gray-500 dark:text-gray-400" 687 > 688 or 689 690 <a 691 href="https://globalsku.app/register" 692 class="fi-link group/link relative inline-flex items-center justify-center outline-none fi-size-md fi-link-size-md gap-1.5 fi-color-custom fi-color-primary fi-ac-action fi-ac-link-action" 693 > 694
695 <span class="font-semibold text-sm text-custom-600 dark:text-custom-400 group-hover/link:underline group-focus-visible/link:underline" style="--c-400:var(--primary-400);--c-600:var(--primary-600);"> 696 sign up for an account 697 </span> 698 699 700 </a> 701 </p> 702 <!--[if ENDBLOCK]><![endif]--> 703</header> 704 705 <!--[if BLOCK]><![endif]--> <!--[if ENDBLOCK]><![endif]--> 706 707 708 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 709 710 711 712 <form 713 method="post" 714 x-data="{ isProcessing: false }" 715 x-on:submit="if (isProcessing) $event.preventDefault()" 716 x-on:form-processing-started="isProcessing = true" 717 x-on:form-processing-finished="isProcessing = false" 718 class="fi-form grid gap-y-6" id="form" wire:submit="authenticate" 719> 720 <div 721 style="--cols-default: repeat(1, minmax(0, 1fr));" class="grid grid-cols-[--cols-default] fi-fo-component-ctn gap-6" x-data="{}" x-on:form-validation-error.window="if ($event.detail.livewireId !== 'HwrOIPD0a2R5tibIBvqF') { 722 return 723 } 724 725 $nextTick(() => { 726 let error = $el.querySelector('[data-validation-error]') 727 728 if (! error) { 729 return 730 } 731 732 let elementToExpand = error 733 734 while (elementToExpand) { 735 elementToExpand.dispatchEvent(new CustomEvent('expand')) 736 737 elementToExpand = elementToExpand.parentNode 738 } 739 740 setTimeout( 741 () => 742 error.closest('[data-field-wrapper]').scrollIntoView({ 743 behavior: 'smooth', 744 block: 'start', 745 inline: 'start', 746 }), 747 200, 748 ) 749 })" 750> 751 <!--[if BLOCK]><![endif]--> 752 <div 753 style="--col-span-default: span 1 / span 1;" class="col-[--col-span-default]" wire:key="HwrOIPD0a2R5tibIBvqF.data.email.Filament\Forms\Components\TextInput" 754> 755 <!--[if BLOCK]><![endif]--> <div 756 data-field-wrapper 757 class="fi-fo-field-wrp" 758> 759 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 760 761 <div 762 class="grid gap-y-2" 763 > 764 <!--[if BLOCK]><![endif]--> <div 765 class="flex items-center gap-x-3 justify-between " 766 > 767 <!--[if BLOCK]><![endif]--> <label 768 class="fi-fo-field-wrp-label inline-flex items-center gap-x-3" for="data.email" 769> 770 771 772 <span class="text-sm font-medium leading-6 text-gray-950 dark:text-white"> 773 774 Email address<!--[if BLOCK]><![endif]-->
774<sup class="text-danger-600 dark:text-danger-400 font-medium">*</sup> 775 <!--[if ENDBLOCK]><![endif]--> 776 </span> 777 778 779</label> 780 <!--[if ENDBLOCK]><![endif]--> 781 782 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 783 </div> 784 <!--[if ENDBLOCK]><![endif]--> 785 786 <!--[if BLOCK]><![endif]--> <div 787 class="grid auto-cols-fr gap-y-2" 788 > 789 <div 790 class="fi-input-wrp flex rounded-lg shadow-sm ring-1 transition duration-75 bg-white dark:bg-white/5 [&:not(:has(.fi-ac-action:focus))]:focus-within:ring-2 ring-gray-950/10 dark:ring-white/20 [&:not(:has(.fi-ac-action:focus))]:focus-within:ring-primary-600 dark:[&:not(:has(.fi-ac-action:focus))]:focus-within:ring-primary-500 fi-fo-text-input overflow-hidden" 791> 792 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 793 794 <div 795 class="fi-input-wrp-input min-w-0 flex-1" 796 > 797 <input 798 class="fi-input block w-full border-none py-1.5 text-base text-gray-950 transition duration-75 placeholder:text-gray-400 focus:ring-0 disabled:text-gray-500 disabled:[-webkit-text-fill-color:theme(colors.gray.500)] disabled:placeholder:[-webkit-text-fill-color:theme(colors.gray.400)] dark:text-white dark:placeholder:text-gray-500 dark:disabled:text-gray-400 dark:disabled:[-webkit-text-fill-color:theme(colors.gray.400)] dark:disabled:placeholder:[-webkit-text-fill-color:theme(colors.gray.500)] sm:text-sm sm:leading-6 bg-white/0 ps-3 pe-3" autocomplete="on" autofocus="autofocus" id="data.email" required="required" type="email" wire:model="data.email" tabindex="1" 799/> 800 </div> 801 802 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 803</div> 804 805 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 806 807 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 808 809 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 810 </div> 811 <!--[if ENDBLOCK]><![endif]--> 812 </div> 813</div> 814 815 <!--[if ENDBLOCK]><![endif]--> 816</div> 817 818 <div 819 style="--col-span-default: span 1 / span 1;" class="col-[--col-span-default]" wire:key="HwrOIPD0a2R5tibIBvqF.data.password.Filament\Forms\Components\TextInput" 820> 821 <!--[if BLOCK]><![endif]--> <div 822 data-field-wrapper 823 class="fi-fo-field-wrp" 824> 825 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 826 827 <div 828 class="grid gap-y-2" 829 > 830 <!--[if BLOCK]><![endif]--> <div 831 class="flex items-center gap-x-3 justify-between " 832 > 833 <!--[if BLOCK]><![endif]--> <label 834 class="fi-fo-field-wrp-label inline-flex items-center gap-x-3" for="data.password" 835> 836 837 838 <span class="text-sm font-medium leading-6 text-gray-950 dark:text-white"> 839 840 Password<!--[if BLOCK]><![endif]-->
840<sup class="text-danger-600 dark:text-danger-400 font-medium">*</sup> 841 <!--[if ENDBLOCK]><![endif]--> 842 </span> 843 844 845</label> 846 <!--[if ENDBLOCK]><![endif]--> 847 848 <!--[if BLOCK]><![endif]--> <div 849 class="fi-fo-field-wrp-hint flex items-center gap-x-3 text-sm" 850> 851 <!--[if BLOCK]><![endif]--> <span 852 class="fi-fo-field-wrp-hint-label text-gray-500 dark:text-gray-400 fi-color-gray" 853 style="--c-400:var(--gray-400);--c-600:var(--gray-600);" 854 > 855 <a 856 href="https://globalsku.app/password-reset/request" 857 class="fi-link group/link relative inline-flex items-center justify-center outline-none fi-size-md fi-link-size-md gap-1.5 fi-color-custom fi-color-primary" tabindex="3" 858 > 859 860 <span class="font-semibold text-sm text-custom-600 dark:text-custom-400 group-hover/link:underline group-focus-visible/link:underline" style="--c-400:var(--primary-400);--c-600:var(--primary-600);"> 861 Forgot password? 862 </span> 863 864 865 </a> 866 </span> 867 <!--[if ENDBLOCK]><![endif]--> 868 869 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 870 871 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 872</div> 873 <!--[if ENDBLOCK]><![endif]--> 874 </div> 875 <!--[if ENDBLOCK]><![endif]--> 876 877 <!--[if BLOCK]><![endif]--> <div 878 class="grid auto-cols-fr gap-y-2" 879 > 880 <div 881 class="fi-input-wrp flex rounded-lg shadow-sm ring-1 transition duration-75 bg-white dark:bg-white/5 [&:not(:has(.fi-ac-action:focus))]:focus-within:ring-2 ring-gray-950/10 dark:ring-white/20 [&:not(:has(.fi-ac-action:focus))]:focus-within:ring-primary-600 dark:[&:not(:has(.fi-ac-action:focus))]:focus-within:ring-primary-500 fi-fo-text-input overflow-hidden" x-data="{ isPasswordRevealed: false }" 882> 883 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 884 885 <div 886 class="fi-input-wrp-input min-w-0 flex-1" 887 > 888 <input 889 class="fi-input block w-full border-none py-1.5 text-base text-gray-950 transition duration-75 placeholder:text-gray-400 focus:ring-0 disabled:text-gray-500 disabled:[-webkit-text-fill-color:theme(colors.gray.500)] disabled:placeholder:[-webkit-text-fill-color:theme(colors.gray.400)] dark:text-white dark:placeholder:text-gray-500 dark:disabled:text-gray-400 dark:disabled:[-webkit-text-fill-color:theme(colors.gray.400)] dark:disabled:placeholder:[-webkit-text-fill-color:theme(colors.gray.500)] sm:text-sm sm:leading-6 bg-white/0 ps-3 pe-3 [&::-ms-reveal]:hidden" autocomplete="current-password" id="data.password" required="required" wire:model="data.password" x-bind:type="isPasswordRevealed ? 'text' : 'password'" tabindex="2" 890/> 891 </div> 892 893 <!--[if BLOCK]><![endif]--> <div 894 class="fi-input-wrp-suffix flex items-center gap-x-3 pe-3 border-s border-gray-200 ps-3 dark:border-white/10" 895 > 896 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 897 898 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 899 900 <!--[if BLOCK]><![endif]--> <div class="flex items-center gap-3"> 901 <!--[if BLOCK]><![endif]--> <!--[if BLOCK]><![endif]--> <button 902 style="--c-300:var(--gray-300);--c-400:var(--gray-400);--c-500:var(--gray-500);--c-600:var(--gray-600);" class="fi-icon-btn relative flex items-center justify-center rounded-lg outline-none transition duration-75 focus-visible:ring-2 -m-1.5 h-8 w-8 text-gray-400 hover:text-gray-500 focus-visible:ring-primary-600 dark:text-gray-500 dark:hover:text-gray-400 dark:focus-visible:ring-primary-500 fi-color-gray fi-ac-action fi-ac-icon-btn-action" title="Show password" type="button" wire:loading.attr="disabled" x-on:click="isPasswordRevealed = true" x-show="! isPasswordRevealed" 903 > 904 <!--[if BLOCK]><![endif]--> <span class="sr-only"> 905 Show password 906 </span> 907 <!--[if ENDBLOCK]><![endif]--> 908 909 <!--[if BLOCK]><![endif]--> <svg class="fi-icon-btn-icon h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" data-slot="icon"> 910 <path d="M10 12.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z"/> 911 <path fill-rule="evenodd" d="M.664 10.59a1.651 1.651 0 0 1 0-1.186A10.004 10.004 0 0 1 10 3c4.257 0 7.893 2.66 9.336 6.41.147.381.146.804 0 1.186A10.004 10.004 0 0 1 10 17c-4.257 0-7.893-2.66-9.336-6.41ZM14 10a4 4 0 1 1-8 0 4 4 0 0 1 8 0Z" clip-rule="evenodd"/> 912</svg><!--[if ENDBLOCK]><![endif]--> 913 914 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 915 916 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 917 </button> 918<!--[if ENDBLOCK]><![endif]--> 919 920 <!--[if BLOCK]><![endif]--> <button 921 style="--c-300:var(--gray-300);--c-400:var(--gray-400);--c-500:var(--gray-500);--c-600:var(--gray-600);" class="fi-icon-btn relative flex items-center justify-center rounded-lg outline-none transition duration-75 focus-visible:ring-2 -m-1.5 h-8 w-8 text-gray-400 hover:text-gray-500 focus-visible:ring-primary-600 dark:text-gray-500 dark:hover:text-gray-400 dark:focus-visible:ring-primary-500 fi-color-gray fi-ac-action fi-ac-icon-btn-action" title="Hide password" type="button" wire:loading.attr="disabled" x-on:click="isPasswordRevealed = false" x-cloak="x-cloak" x-show="isPasswordRevealed" 922 > 923 <!--[if BLOCK]><![endif]-->
923 <span class="sr-only"> 924 Hide password 925 </span> 926 <!--[if ENDBLOCK]><![endif]--> 927 928 <!--[if BLOCK]><![endif]--> <svg class="fi-icon-btn-icon h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" data-slot="icon"> 929 <path fill-rule="evenodd" d="M3.28 2.22a.75.75 0 0 0-1.06 1.06l14.5 14.5a.75.75 0 1 0 1.06-1.06l-1.745-1.745a10.029 10.029 0 0 0 3.3-4.38 1.651 1.651 0 0 0 0-1.185A10.004 10.004 0 0 0 9.999 3a9.956 9.956 0 0 0-4.744 1.194L3.28 2.22ZM7.752 6.69l1.092 1.092a2.5 2.5 0 0 1 3.374 3.373l1.091 1.092a4 4 0 0 0-5.557-5.557Z" clip-rule="evenodd"/> 930 <path d="m10.748 13.93 2.523 2.523a9.987 9.987 0 0 1-3.27.547c-4.258 0-7.894-2.66-9.337-6.41a1.651 1.651 0 0 1 0-1.186A10.007 10.007 0 0 1 2.839 6.02L6.07 9.252a4 4 0 0 0 4.678 4.678Z"/> 931</svg><!--[if ENDBLOCK]><![endif]--> 932 933 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 934 935 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 936 </button> 937<!--[if ENDBLOCK]><![endif]--> 938 939 <!--[if ENDBLOCK]><![endif]--> 940 </div> 941 <!--[if ENDBLOCK]><![endif]--> 942 </div> 943 <!--[if ENDBLOCK]><![endif]--> 944</div> 945 946 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 947 948 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 949 950 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 951 </div> 952 <!--[if ENDBLOCK]><![endif]--> 953 </div> 954</div> 955 956 <!--[if ENDBLOCK]><![endif]--> 957</div> 958 959 <div 960 style="--col-span-default: span 1 / span 1;" class="col-[--col-span-default]" wire:key="HwrOIPD0a2R5tibIBvqF.data.remember.Filament\Forms\Components\Checkbox" 961> 962 <!--[if BLOCK]><![endif]--> <div 963 data-field-wrapper 964 class="fi-fo-field-wrp" 965> 966 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 967 968 <div 969 class="grid gap-y-2" 970 > 971 <!--[if BLOCK]><![endif]--> <div 972 class="flex items-center gap-x-3 justify-between " 973 > 974 <!--[if BLOCK]><![endif]--> <label 975 class="fi-fo-field-wrp-label inline-flex items-center gap-x-3" for="data.remember" 976> 977 <input 978 type="checkbox" 979 class="fi-checkbox-input rounded border-none bg-white shadow-sm ring-1 transition duration-75 checked:ring-0 focus:ring-2 focus:ring-offset-0 disabled:pointer-events-none disabled:bg-gray-50 disabled:text-gray-50 disabled:checked:bg-gray-400 disabled:checked:text-gray-400 dark:bg-white/5 dark:disabled:bg-transparent dark:disabled:checked:bg-gray-600 text-primary-600 ring-gray-950/10 focus:ring-primary-600 checked:focus:ring-primary-500/50 dark:text-primary-500 dark:ring-white/20 dark:checked:bg-primary-500 dark:focus:ring-primary-500 dark:checked:focus:ring-primary-400/50 dark:disabled:ring-white/10" id="data.remember" wire:loading.attr="disabled" wire:model="data.remember" 980/> 981 982 <span class="text-sm font-medium leading-6 text-gray-950 dark:text-white"> 983 984 Remember me<!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 985 </span> 986 987 988</label> 989 <!--[if ENDBLOCK]><![endif]--> 990 991 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 992 </div> 993 <!--[if ENDBLOCK]><![endif]--> 994 995 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 996 </div> 997</div> 998 999 <!--[if ENDBLOCK]><![endif]--> 1000</div> 1001 <!--[if ENDBLOCK]><![endif]--> 1002</div> 1003 1004 1005 <!--[if BLOCK]><![endif]--> <div 1006 class="fi-form-actions" 1007 > 1008 <!--[if BLOCK]><![endif]--> <div 1009 class="fi-ac gap-3 grid grid-cols-[repeat(auto-fit,minmax(0,1fr))]" 1010 > 1011 <!--[if BLOCK]><![endif]--> <!--[if BLOCK]><![endif]--> <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 1012 1013<button 1014 x-data="{ 1015 form: null, 1016 isProcessing: false, 1017 processingMessage: null, 1018 }" 1019 x-init=" 1020 form = $el.closest('form') 1021 1022 form?.addEventListener('form-processing-started', (event) => { 1023 isProcessing = true 1024 processingMessage = event.detail.message 1025 }) 1026 1027 form?.addEventListener('form-processing-finished', () => { 1028 isProcessing = false 1029 }) 1030 " 1031 x-bind:class="{ 'enabled:opacity-70 enabled:cursor-wait': isProcessing }" 1032 style="--c-400:var(--primary-400);--c-500:var(--primary-500);--c-600:var(--primary-600);" class="fi-btn relative grid-flow-col items-center justify-center font-semibold outline-none transition duration-75 focus-visible:ring-2 roun
1032ded-lg fi-color-custom fi-btn-color-primary fi-color-primary fi-size-md fi-btn-size-md gap-1.5 px-3 py-2 text-sm inline-grid shadow-sm bg-custom-600 text-white hover:bg-custom-500 focus-visible:ring-custom-500/50 dark:bg-custom-500 dark:hover:bg-custom-400 dark:focus-visible:ring-custom-400/50 fi-ac-action fi-ac-btn-action" type="submit" wire:loading.attr="disabled" x-bind:disabled="isProcessing" 1033> 1034 <!--[if BLOCK]><![endif]--> <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 1035 1036 <!--[if BLOCK]><![endif]--> <svg 1037 fill="none" 1038 viewBox="0 0 24 24" 1039 xmlns="http://www.w3.org/2000/svg" 1040 class="animate-spin fi-btn-icon transition duration-75 h-5 w-5 text-white" wire:loading.delay.default="" wire:target="authenticate" 1041> 1042 <path 1043 clip-rule="evenodd" 1044 d="M12 19C15.866 19 19 15.866 19 12C19 8.13401 15.866 5 12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19ZM12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z" 1045 fill-rule="evenodd" 1046 fill="currentColor" 1047 opacity="0.2" 1048 ></path> 1049 <path 1050 d="M2 12C2 6.47715 6.47715 2 12 2V5C8.13401 5 5 8.13401 5 12H2Z" 1051 fill="currentColor" 1052 ></path> 1053</svg> 1054 <!--[if ENDBLOCK]><![endif]--> 1055 1056 <!--[if BLOCK]><![endif]--> <svg 1057 fill="none" 1058 viewBox="0 0 24 24" 1059 xmlns="http://www.w3.org/2000/svg" 1060 class="animate-spin fi-btn-icon transition duration-75 h-5 w-5 text-white" x-cloak="x-cloak" x-show="isProcessing" 1061> 1062 <path 1063 clip-rule="evenodd" 1064 d="M12 19C15.866 19 19 15.866 19 12C19 8.13401 15.866 5 12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19ZM12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z" 1065 fill-rule="evenodd" 1066 fill="currentColor" 1067 opacity="0.2" 1068 ></path> 1069 <path 1070 d="M2 12C2 6.47715 6.47715 2 12 2V5C8.13401 5 5 8.13401 5 12H2Z" 1071 fill="currentColor" 1072 ></path> 1073</svg> 1074 <!--[if ENDBLOCK]><![endif]--> 1075 <!--[if ENDBLOCK]><![endif]--> 1076 1077 <span 1078 x-show="! isProcessing" 1079 class="fi-btn-label" 1080 > 1081 Sign in 1082 </span> 1083 1084 <!--[if BLOCK]><![endif]--> <span 1085 x-cloak 1086 x-show="isProcessing" 1087 x-text="processingMessage" 1088 class="fi-btn-label" 1089 ></span> 1090 <!--[if ENDBLOCK]><![endif]--> 1091 1092 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 1093 1094 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 1095</button> 1096 1097 <!--[if ENDBLOCK]><![endif]--> 1098 <!--[if ENDBLOCK]><![endif]--> 1099 </div> 1100<!--[if ENDBLOCK]><![endif]--> 1101 </div> 1102<!--[if ENDBLOCK]><![endif]--> 1103</form> 1104 1105 <!--[if BLOCK]><![endif]--><div class="mt-6"> 1106 1107 <div class="relative"> 1108 <div class="absolute inset-0 flex items-center"> 1109 <div class="w-full border-t border-gray-300 dark:border-gray-600"></div> 1110 </div> 1111 <div class="relative flex justify-center text-sm"> 1112 <span class="px-2 bg-white dark:bg-gray-900 text-gray-500 dark:text-gray-400"> 1113 Or continue with 1114 </span> 1115 </div> 1116 </div> 1117 1118 1119 <div class="mt-6"> 1120 <a href="https://globalsku.app/auth/google/redirect" 1121 class="w-full inline-flex justify-center items-center gap-3 py-3 px-4 border border-gray-300 dark:border-gray-600 rounded-lg shadow-sm bg-white dark:bg-gray-800 text-sm font-medium text-gray-700 dark:text-gray-200 hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500"> 1122 1123 1124 <svg class="w-5 h-5" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> 1125 <path fill="#4285F4" d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"/> 1126 <path fill="#34A853" d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"/> 1127 <path fill="#FBBC05" d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"/> 1128 <path fill="#EA4335" d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"/> 1129 </svg> 1130
1131 <span>Continue with Google</span> 1132 </a> 1133 </div> 1134 1135 1136 <div class="mt-3"> 1137 <a href="https://globalsku.app/auth/facebook/redirect" 1138 class="w-full inline-flex justify-center items-center gap-3 py-3 px-4 border border-gray-300 dark:border-gray-600 rounded-lg shadow-sm bg-white dark:bg-gray-800 text-sm font-medium text-gray-700 dark:text-gray-200 hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500"> 1139 1140 1141 <svg class="w-5 h-5" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> 1142 <path fill="#1877F2" d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/> 1143 </svg> 1144 1145 <span>Continue with Facebook</span> 1146 </a> 1147 </div> 1148 1149 1150 <div class="mt-3"> 1151 <a href="https://globalsku.app/auth/linkedin/redirect" 1152 class="w-full inline-flex justify-center items-center gap-3 py-3 px-4 border border-gray-300 dark:border-gray-600 rounded-lg shadow-sm bg-white dark:bg-gray-800 text-sm font-medium text-gray-700 dark:text-gray-200 hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500"> 1153 1154 1155 <svg class="w-5 h-5" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> 1156 <path fill="#0A66C2" d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/> 1157 </svg> 1158 1159 <span>Continue with LinkedIn</span> 1160 </a> 1161 </div> 1162 1163 1164 <div class="mt-3"> 1165 <a href="https://globalsku.app/auth/apple/redirect" 1166 class="w-full inline-flex justify-center items-center gap-3 py-3 px-4 border border-gray-300 dark:border-gray-600 rounded-lg shadow-sm bg-white dark:bg-gray-800 text-sm font-medium text-gray-700 dark:text-gray-200 hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500"> 1167 1168 1169 <svg class="w-5 h-5" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> 1170 <path fill="#000000" class="dark:fill-white" d="M17.05 20.28c-.98.95-2.05.8-3.08.35-1.09-.46-2.09-.48-3.24 0-1.44.62-2.2.44-3.06-.35C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09l.01-.01zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z"/> 1171 </svg> 1172 1173 <span>Continue with Apple</span> 1174 </a> 1175 </div> 1176 1177 1178 <p class="mt-3 text-xs text-center text-gray-500 dark:text-gray-400"> 1179 One email address can only be linked to one GlobalSKU account. 1180 </p> 1181</div> 1182<!--[if ENDBLOCK]><![endif]--> 1183<div class="fi-simple-footer text-center text-sm text-gray-500 dark:text-gray-400"> 1184 1185 <!--[if BLOCK]><![endif]--> <a href="https://vendidit.com/globalsku" class="text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100"> 1186 Learn More about GlobalSKU 1187 </a> 1188 <br> 1189 <!--[if ENDBLOCK]><![endif]--> 1190 1191 <a href="https://globalsku.app/terms-and-conditions" class="text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100"> 1192 Terms of Service 1193 </a> 1194 <span class="text-gray-400 mx-2">â¢</span> 1195 <a href="https://globalsku.app/privacy" class="text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100"> 1196 Privacy Policy 1197 </a> 1198 <span class="text-gray-400 mx-2">â¢</span> 1199 <a href="https://globalsku.app/refund" class="text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100"> 1200 Refund Policy 1201 </a> 1202</div> 1203 </section> 1204 1205 <!--[if BLOCK]><![endif]--> <!--[if BLOCK]><![endif]--> <form wire:submit.prevent="callMountedAction"> 1206 1207 <div 1208 aria-modal="true" 1209 role="dialog" 1210 x-data="{ 1211 isOpen: false, 1212 1213 livewire: null, 1214 1215 close: function () { 1216 this.isOpen = false 1217
1218 this.$refs.modalContainer.dispatchEvent( 1219 new CustomEvent('modal-closed', { detail: { id: 'HwrOIPD0a2R5tibIBvqF-action' } }), 1220 ) 1221 }, 1222 1223 open: function () { 1224 this.$nextTick(() => { 1225 this.isOpen = true 1226 1227 1228 this.$refs.modalContainer.dispatchEvent( 1229 new CustomEvent('modal-opened', { detail: { id: 'HwrOIPD0a2R5tibIBvqF-action' } }), 1230 ) 1231 }) 1232 }, 1233 }" 1234 x-on:close-modal.window="if ($event.detail.id === 'HwrOIPD0a2R5tibIBvqF-action') close()" 1235 x-on:open-modal.window="if ($event.detail.id === 'HwrOIPD0a2R5tibIBvqF-action') open()" 1236 data-fi-modal-id="HwrOIPD0a2R5tibIBvqF-action" 1237 x-trap.noscroll="isOpen" 1238 x-bind:class="{ 1239 'fi-modal-open': isOpen, 1240 }" 1241 class="fi-modal block" 1242> 1243 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 1244 1245 <div x-cloak x-show="isOpen"> 1246 <div 1247 aria-hidden="true" 1248 x-show="isOpen" 1249 x-transition.duration.300ms.opacity 1250 class="fi-modal-close-overlay fixed inset-0 z-40 bg-gray-950/50 dark:bg-gray-950/75" 1251 ></div> 1252 1253 <div 1254 class="fixed inset-0 z-40 overflow-y-auto cursor-pointer" 1255 > 1256 <div 1257 x-ref="modalContainer" 1258 1259 x-on:click.self=" 1260 document.activeElement.selectionStart === undefined && 1261 document.activeElement.selectionEnd === undefined && 1262 $dispatch('close-modal', { id: 'HwrOIPD0a2R5tibIBvqF-action' }) 1263 " 1264 class="relative grid min-h-full grid-rows-[1fr_auto_1fr] justify-items-center sm:grid-rows-[1fr_auto_3fr] p-4" x-on:closed-form-component-action-modal.window="if (($event.detail.id === 'HwrOIPD0a2R5tibIBvqF') && $wire.mountedActions.length) open()" x-on:modal-closed.stop="if (!$event.detail?.id?.startsWith('HwrOIPD0a2R5tibIBvqF-')) { 1265 return 1266 } 1267 1268 const mountedActionShouldOpenModal = false 1269 1270 1271 if (! mountedActionShouldOpenModal) { 1272 return 1273 } 1274 1275 if ($wire.mountedFormComponentActions.length) { 1276 return 1277 } 1278 1279 $wire.unmountAction(false, false)" x-on:opened-form-component-action-modal.window="if ($event.detail.id === 'HwrOIPD0a2R5tibIBvqF') close()" 1280 > 1281 <div 1282 x-data="{ isShown: false }" 1283 x-init=" 1284 $nextTick(() => { 1285 isShown = isOpen 1286 $watch('isOpen', () => (isShown = isOpen)) 1287 }) 1288 " 1289 x-on:keydown.window.escape="$dispatch('close-modal', { id: 'HwrOIPD0a2R5tibIBvqF-action' })" 1290 x-show="isShown" 1291 x-transition:enter="duration-300" 1292 x-transition:leave="duration-300" 1293 x-transition:enter-start="scale-95 opacity-0" 1294 x-transition:enter-end="scale-100 opacity-100" 1295 x-transition:leave-start="scale-100 opacity-100" 1296 x-transition:leave-end="scale-95 opacity-0" 1297 wire:key="HwrOIPD0a2R5tibIBvqF.modal.HwrOIPD0a2R5tibIBvqF-action.window" 1298 class="fi-modal-window pointer-events-auto relative row-start-2 flex w-full cursor-default flex-col bg-white shadow-xl ring-1 ring-gray-950/5 dark:bg-gray-900 dark:ring-white/10 mx-auto rounded-xl hidden max-w-sm" 1299 > 1300 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 1301 1302 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 1303 1304 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 1305 </div> 1306 </div> 1307 </div> 1308 </div> 1309</div> 1310 </form> 1311 1312 <!--[if ENDBLOCK]><![endif]--> 1313 1314<!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 1315 1316<!--[if BLOCK]><![endif]--> <form wire:submit.prevent="callMountedInfolistAction"> 1317 1318 <div 1319 aria-modal="true" 1320 role="dialog" 1321 x-data="{ 1322 isOpen: false, 1323 1324 livewire: null, 1325 1326 close: function () { 1327 this.isOpen = false 1328
1329 this.$refs.modalContainer.dispatchEvent( 1330 new CustomEvent('modal-closed', { detail: { id: 'HwrOIPD0a2R5tibIBvqF-infolist-action' } }), 1331 ) 1332 }, 1333 1334 open: function () { 1335 this.$nextTick(() => { 1336 this.isOpen = true 1337 1338 1339 this.$refs.modalContainer.dispatchEvent( 1340 new CustomEvent('modal-opened', { detail: { id: 'HwrOIPD0a2R5tibIBvqF-infolist-action' } }), 1341 ) 1342 }) 1343 }, 1344 }" 1345 x-on:close-modal.window="if ($event.detail.id === 'HwrOIPD0a2R5tibIBvqF-infolist-action') close()" 1346 x-on:open-modal.window="if ($event.detail.id === 'HwrOIPD0a2R5tibIBvqF-infolist-action') open()" 1347 data-fi-modal-id="HwrOIPD0a2R5tibIBvqF-infolist-action" 1348 x-trap.noscroll="isOpen" 1349 x-bind:class="{ 1350 'fi-modal-open': isOpen, 1351 }" 1352 class="fi-modal block" 1353> 1354 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 1355 1356 <div x-cloak x-show="isOpen"> 1357 <div 1358 aria-hidden="true" 1359 x-show="isOpen" 1360 x-transition.duration.300ms.opacity 1361 class="fi-modal-close-overlay fixed inset-0 z-40 bg-gray-950/50 dark:bg-gray-950/75" 1362 ></div> 1363 1364 <div 1365 class="fixed inset-0 z-40 overflow-y-auto cursor-pointer" 1366 > 1367 <div 1368 x-ref="modalContainer" 1369 1370 x-on:click.self=" 1371 document.activeElement.selectionStart === undefined && 1372 document.activeElement.selectionEnd === undefined && 1373 $dispatch('close-modal', { id: 'HwrOIPD0a2R5tibIBvqF-infolist-action' }) 1374 " 1375 class="relative grid min-h-full grid-rows-[1fr_auto_1fr] justify-items-center sm:grid-rows-[1fr_auto_3fr] p-4" x-on:closed-form-component-action-modal.window="if (($event.detail.id === 'HwrOIPD0a2R5tibIBvqF') && $wire.mountedInfolistActions.length) open()" x-on:modal-closed.stop="if (!$event.detail?.id?.startsWith('HwrOIPD0a2R5tibIBvqF-')) { 1376 return 1377 } 1378 1379 const mountedInfolistActionShouldOpenModal = false 1380 1381 1382 if (! mountedInfolistActionShouldOpenModal) { 1383 return 1384 } 1385 1386 if ($wire.mountedFormComponentActions.length) { 1387 return 1388 } 1389 1390 $wire.unmountInfolistAction(false, false)" x-on:opened-form-component-action-modal.window="if ($event.detail.id === 'HwrOIPD0a2R5tibIBvqF') close()" 1391 > 1392 <div 1393 x-data="{ isShown: false }" 1394 x-init=" 1395 $nextTick(() => { 1396 isShown = isOpen 1397 $watch('isOpen', () => (isShown = isOpen)) 1398 }) 1399 " 1400 x-on:keydown.window.escape="$dispatch('close-modal', { id: 'HwrOIPD0a2R5tibIBvqF-infolist-action' })" 1401 x-show="isShown" 1402 x-transition:enter="duration-300" 1403 x-transition:leave="duration-300" 1404 x-transition:enter-start="scale-95 opacity-0" 1405 x-transition:enter-end="scale-100 opacity-100" 1406 x-transition:leave-start="scale-100 opacity-100" 1407 x-transition:leave-end="scale-95 opacity-0" 1408 wire:key="HwrOIPD0a2R5tibIBvqF.modal.HwrOIPD0a2R5tibIBvqF-infolist-action.window" 1409 class="fi-modal-window pointer-events-auto relative row-start-2 flex w-full cursor-default flex-col bg-white shadow-xl ring-1 ring-gray-950/5 dark:bg-gray-900 dark:ring-white/10 mx-auto rounded-xl hidden max-w-sm" 1410 > 1411 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 1412 1413 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 1414 1415 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 1416 </div> 1417 </div> 1418 </div> 1419 </div> 1420</div> 1421 </form> 1422 1423 <!--[if ENDBLOCK]><![endif]--> 1424 1425<!--[if BLOCK]><![endif]--> 1426 <form wire:submit.prevent="callMountedFormComponentAction"> 1427 <div 1428 aria-modal="true" 1429 role="dialog" 1430 x-data="{ 1431 isOpen: false, 1432 1433 livewire: null, 1434 1435 close: function () { 1436 this.isOpen = false 1437
1438 this.$refs.modalContainer.dispatchEvent( 1439 new CustomEvent('modal-closed', { detail: { id: 'HwrOIPD0a2R5tibIBvqF-form-component-action' } }), 1440 ) 1441 }, 1442 1443 open: function () { 1444 this.$nextTick(() => { 1445 this.isOpen = true 1446 1447 1448 this.$refs.modalContainer.dispatchEvent( 1449 new CustomEvent('modal-opened', { detail: { id: 'HwrOIPD0a2R5tibIBvqF-form-component-action' } }), 1450 ) 1451 }) 1452 }, 1453 }" 1454 x-on:close-modal.window="if ($event.detail.id === 'HwrOIPD0a2R5tibIBvqF-form-component-action') close()" 1455 x-on:open-modal.window="if ($event.detail.id === 'HwrOIPD0a2R5tibIBvqF-form-component-action') open()" 1456 data-fi-modal-id="HwrOIPD0a2R5tibIBvqF-form-component-action" 1457 x-trap.noscroll="isOpen" 1458 x-bind:class="{ 1459 'fi-modal-open': isOpen, 1460 }" 1461 class="fi-modal block" 1462> 1463 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 1464 1465 <div x-cloak x-show="isOpen"> 1466 <div 1467 aria-hidden="true" 1468 x-show="isOpen" 1469 x-transition.duration.300ms.opacity 1470 class="fi-modal-close-overlay fixed inset-0 z-40 bg-gray-950/50 dark:bg-gray-950/75" 1471 ></div> 1472 1473 <div 1474 class="fixed inset-0 z-40 overflow-y-auto cursor-pointer" 1475 > 1476 <div 1477 x-ref="modalContainer" 1478 1479 x-on:click.self=" 1480 document.activeElement.selectionStart === undefined && 1481 document.activeElement.selectionEnd === undefined && 1482 $dispatch('close-modal', { id: 'HwrOIPD0a2R5tibIBvqF-form-component-action' }) 1483 " 1484 class="relative grid min-h-full grid-rows-[1fr_auto_1fr] justify-items-center sm:grid-rows-[1fr_auto_3fr] p-4" x-on:modal-closed.stop="if (!$event.detail?.id?.startsWith('HwrOIPD0a2R5tibIBvqF-')) { 1485 return 1486 } 1487 1488 const mountedFormComponentActionShouldOpenModal = false 1489 1490 1491 if (mountedFormComponentActionShouldOpenModal) { 1492 $wire.unmountFormComponentAction(false, false) 1493 }" 1494 > 1495 <div 1496 x-data="{ isShown: false }" 1497 x-init=" 1498 $nextTick(() => { 1499 isShown = isOpen 1500 $watch('isOpen', () => (isShown = isOpen)) 1501 }) 1502 " 1503 x-on:keydown.window.escape="$dispatch('close-modal', { id: 'HwrOIPD0a2R5tibIBvqF-form-component-action' })" 1504 x-show="isShown" 1505 x-transition:enter="duration-300" 1506 x-transition:leave="duration-300" 1507 x-transition:enter-start="scale-95 opacity-0" 1508 x-transition:enter-end="scale-100 opacity-100" 1509 x-transition:leave-start="scale-100 opacity-100" 1510 x-transition:leave-end="scale-95 opacity-0" 1511 wire:key="HwrOIPD0a2R5tibIBvqF.modal.HwrOIPD0a2R5tibIBvqF-form-component-action.window" 1512 class="fi-modal-window pointer-events-auto relative row-start-2 flex w-full cursor-default flex-col bg-white shadow-xl ring-1 ring-gray-950/5 dark:bg-gray-900 dark:ring-white/10 mx-auto rounded-xl hidden max-w-sm" 1513 > 1514 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 1515 1516 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 1517 1518 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 1519 </div> 1520 </div> 1521 </div> 1522 </div> 1523</div> 1524 </form> 1525 1526 <!--[if ENDBLOCK]><![endif]--> 1527 <!--[if ENDBLOCK]><![endif]--> 1528 1529 1530</div> 1531 </main> 1532 </div> 1533 1534 1535 </div> 1536
1537 <div wire:snapshot="{"data":{"isFilamentNotificationsComponent":true,"notifications":[[],{"class":"Filament\\Notifications\\Collection","s":"wrbl"}]},"memo":{"id":"8nuGAwkLMic93dfLxMPM","name":"filament.livewire.notifications","path":"login","method":"GET","children":[],"scripts":[],"assets":[],"errors":[],"locale":"en"},"checksum":"20f675f66800737734e170eafd0078b3332b9cdd523106a382104d30009d4b02"}" wire:effects="{"listeners":["notificationsSent","notificationSent","notificationClosed"]}" wire:id="8nuGAwkLMic93dfLxMPM"> 1538 <div 1539 class="fi-no pointer-events-none fixed inset-4 z-50 mx-auto flex gap-3 items-end flex-col-reverse justify-end" 1540 role="status" 1541 > 1542 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 1543 </div> 1544 1545 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 1546</div> 1547 1548 1549 1550
1550<script> 1551 window.filamentData = [] </script>
1551 1552 1553 1554
1554<script 1555 src="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/js/filament/notifications/notifications.js?v=3.3.43.0" 1556 1557 1558 1559 1560 1561 1562 ></script>
1562 1563 1564 1565
1565<script 1566 src="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/js/filament/support/support.js?v=3.3.43.0" 1567 1568 1569 1570 1571 1572 1573 ></script>
1573 1574 1575 1576
1576<script 1577 src="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/js/filament/filament/echo.js?v=3.3.43.0" 1578 1579 1580 1581 1582 1583 1584 ></script>
1584 1585 1586 1587
1587<script 1588 src="https://assets.globalsku.app/dd731a69-d675-4845-8769-0b208ad20c69/js/filament/filament/app.js?v=3.3.43.0" 1589 1590 1591 1592 1593 1594 1595 ></script>
1595 1596 1597 1598<style> 1599 :root { 1600 } 1601</style> 1602 1603 1604
1604<script> 1605 loadDarkMode() 1606 </script>
1606 1607 1608 1609 1610 1611
1611<script> 1612 function copyAffiliateLink() { 1613 const input = document.getElementById('affiliate-link'); 1614 const linkValue = input.value; 1615 navigator.clipboard.writeText(linkValue).then(() => { 1616 new FilamentNotification() 1617 .title('Copied!') 1618 .body('Affiliate link copied to clipboard.') 1619 .success() 1620 .send(); 1621 }); 1622 } 1623 1624 // Image Lightbox Function 1625 window.openImageLightbox = function(src) { 1626 if (!src) return; 1627 1628 // Create overlay 1629 const overlay = document.createElement('div'); 1630 overlay.id = 'image-lightbox-overlay'; 1631 overlay.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.9);z-index:9999;display:flex;align-items:center;justify-content:center;cursor:pointer;'; 1632 1633 // Create image 1634 const img = document.createElement('img'); 1635 img.src = src; 1636 img.style.cssText = 'max-width:90vw;max-height:90vh;object-fit:contain;border-radius:8px;box-shadow:0 4px 20px rgba(0,0,0,0.5);'; 1637 1638 // Create close button 1639 const closeBtn = document.createElement('button'); 1640 closeBtn.innerHTML = '×'; 1641 closeBtn.style.cssText = 'position:absolute;top:20px;right:20px;background:none;border:none;color:white;font-size:40px;cursor:pointer;line-height:1;'; 1642 1643 overlay.appendChild(img); 1644 overlay.appendChild(closeBtn); 1645 document.body.appendChild(overlay); 1646 document.body.style.overflow = 'hidden'; 1647 1648 // Close on click 1649 const closeLightbox = () => { 1650 overlay.remove(); 1651 document.body.style.overflow = ''; 1652 }; 1653 overlay.addEventListener('click', closeLightbox); 1654 document.addEventListener('keydown', function escHandler(e) { 1655 if (e.key === 'Escape') { 1656 closeLightbox(); 1657 document.removeEventListener('keydown', escHandler); 1658 } 1659 }); 1660 }; 1661 </script>
1661 1662
1662<script src="/livewire/livewire.min.js?id=df3a17f2" data-csrf="Tpa2nqynYl8pi5qh13Fn8eSr8QBzsE9uTvIwrlQS" data-update-uri="/livewire/update" data-navigate-once="true"></script>
1662 1663</body> 1664</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.