PageSourceSearch

https://www.utahbrazilianfestival.com/Shop.html

html utahbrazilianfestival.com collected 2026-10-02 22:48:19 UTC 17,518 bytes, 378 lines download raw bytes

1<!DOCTYPE html>
2<html style="font-size: 16px;" lang="en-US"><head>
3    <meta name="viewport" content="width=device-width, initial-scale=1.0">
4    <meta charset="utf-8">
5    <meta name="keywords" content="">
6    <meta name="description" content="">
7    <title>Shop</title>
8    <link rel="stylesheet" href="nicepage.css" media="screen">
9<link rel="stylesheet" href="Shop.css" media="screen">
10    
10<script class="u-script" type="text/javascript" src="jquery.js" defer=""></script>
10
11    
11<script class="u-script" type="text/javascript" src="nicepage.js" defer=""></script>
11
12    <meta name="generator" content="Nicepage 8.6.2, nicepage.com">
13
14
15
16
17
18    
18<script type="application/ld+json">{
19		"@context": "http://schema.org",
20		"@type": "Organization",
21		"name": "Utah Brazilian Festival  2026",
22		"logo": "images/UBF_Colorful.png"
23}</script>
23
24    <meta name="theme-color" content="#478ac9">
25    <meta property="og:title" content="Shop">
26    <meta property="og:description" content="">
27    <meta property="og:type" content="website">
28  
28<script>
29    (function() {
30    function gdprConfirmed() {
31        return true;
32    }
33
34    var added = false;
35    var currentScript = document.currentScript;
36
37    function insertHTML(html) {
38        var container = document.createElement('div');
39        container.innerHTML = html;
40        container.querySelectorAll('script').forEach(s => {
41            const ns = document.createElement('script');
42            ns.async = s.async;
43            if (s.src) {
44                ns.src = s.src;
45            } else {
46                ns.textContent = s.textContent;
47            }
48            s.replaceWith(ns);
49        });
50
51            var fragment = document.createDocumentFragment();
52            fragment.append(...container.childNodes);
53
54            if (currentScript && currentScript.parentNode) {
55                currentScript.after(fragment);
56            }
57    }
58
59    window._npAddGAnalytics = function () {
60        if (gdprConfirmed() && !added) {
61            var gaBody = "<!-- Google Analytics -->\n    <gascript async src=\"https://www.googletagmanager.com/gtag/js?id=G-N2XQHR16XZ\"></gascript>\n    <gascript>\n        window.dataLayer = window.dataLayer || [];\n        function gtag(){dataLayer.push(arguments);}\n        gtag('js', new Date());\n        gtag('config', 'G-N2XQHR16XZ');\n    </gascript>\n    <!-- End Google Analytics -->";
62            var replacedBody = gaBody.replace(/gascript/g, 'script');
63            insertHTML(replacedBody);
64            added = true;
65        }
66    }
67
68    window._npAddGAnalytics();
69    })();
70    </script>
70<meta name="referrer" content="origin">
70<script>
71    window.recaptchaRenderedV2 = false;
72    window.recaptchaFallback = false;
73    window.recaptchaSiteKeyV2 = '6LebRIorAAAAAEBCYCVXLpZKNt1KxwfbefWqDvFL';
74
75    function gdprConfirmed() {
76        return true;
77    }
78
79    function dynamicLoadScript() {
80        var script = document.createElement('script');
81        script.src = 'https://www.google.com/recaptcha/api.js?render=6LepmIorAAAAAOBS8hQCdl-qPMLC3n2AucNtUjPt';
82        script.async = true;
83        script.onload = function () {
84            var event = new CustomEvent("recaptchaLoaded");
85            document.dispatchEvent(event);
86        };
87        document.body.appendChild(script);
88    }
89
90    function showRecaptchaError(error) {
91        error = error || '';
92        var formError = document.querySelector('.u-form-send-error');
93
94        if (formError) {
95            formError.innerText = 'Site Owner Error: ' + error.replace(/:[\s\S]*/, '');
96            formError.style.display = 'block';
97        }
98
99        console.error('Error in grecaptcha: ', error);
100    }
101
102    document.addEventListener('DOMContentLoaded', function () {
103        var confirmButtons = document.querySelectorAll('.u-cookies-consent .u-button-confirm');
104        confirmButtons.forEach(function (button) {
105            button.onclick = dynamicLoadScript;
106        });
107    });
108    </script>
108
109
110    
110<script>
111        document.addEventListener("DOMContentLoaded", function(){
112            if (!gdprConfirmed()) {
113                return;
114            }
115            dynamicLoadScript();
116        });
117    </script>
117
118
119    
119<script>
120        document.addEventListener("recaptchaLoaded", function() {
121            if (!gdprConfirmed()) {
122                return;
123            }
124
125            (function (grecaptcha, sitekey, actions) {
126                var recaptcha = {
127                    execute: function (action, submitFormCb) {
128                        if (typeof grecaptcha === 'undefined' || typeof grecaptcha.execute !== 'function') {
129                            showRecaptchaError('reCAPTCHA script failed to load.');
130                            return;
131                        }
132
133                        try {
134                            grecaptcha.execute(sitekey, {action: action}).then((token) => {
135                                if (!token) {
136                                    throw new Error('Empty token received from reCAPTCHA');
137                                }
138
139                                var forms = document.getElementsByTagName('form');
140
141                                for (var i = 0; i < forms.length; i++) {
142                                    var response = forms[i].querySelector('[name="recaptchaResponse"]');
143
144                                    if (!response) {
145                                        response = document.createElement('input');
146                                        response.setAttribute('type', 'hidden');
147                                        response.setAttribute('name', 'recaptchaResponse');
148                                        forms[i].appendChild(response);
149                                    }
150
151                                    response.value = token;
152                                }
153
154                                submitFormCb();
155                            }).catch((e) => {
156                                showRecaptchaError(e.message);
157                            });
158                        } catch (e) {
159                            showRecaptchaError(e.message);
160                        }
161                    },
162
163                    executeContact: function (submitFormCb) {
164                        recaptcha.execute(actions['contact'], submitFormCb);
165                    }
166                };
167
168                window.recaptchaObject = recaptcha;
169                window.grecaptchaObject = grecaptcha;
170            })(
171                grecaptcha,
172
173                '6LepmIorAAAAAOBS8hQCdl-qPMLC3n2AucNtUjPt',
174                {'contact': 'contact'}
175            );
176        });
177    </script>
177
178
179    
179<script>
180    window.showRecaptchaV2 = function (form) {
181        if (!form || !form.length) {
182            return;
183        }
184        if (typeof window.grecaptchaObject === 'undefined' || !window.grecaptchaObject) {
185            return;
186        }
187
188        const formEl = form[0];
189
190        let container = document.getElementById('recaptcha-v2-container');
191        if (!container) {
192            container = document.createElement('div');
193            container.id = 'recaptcha-v2-container';
194            formEl.parentElement.appendChild(container);
195        }
196
197        let tokenReceived = false;
198        let timeoutHandle;
199
200        if (window.recaptchaRenderedV2 === false || typeof window.recaptchaRenderedV2 === 'undefined') {
201            window.recaptchaRenderedV2 = window.grecaptchaObject.render('recaptcha-v2-container', {
202                'sitekey': window.recaptchaSiteKeyV2,
203                'size': 'invisible',
204                'callback': function (token) {
205                    clearTimeout(timeoutHandle);
206
207                    if (!token) {
208                        showRecaptchaError('reCAPTCHA v2 token was empty. Please try again.');
209                        return;
210                    }
211
212                    tokenReceived = true;
213
214                    let recaptchaResponseV2 = formEl.querySelector('input[name="recaptchaResponseV2"]');
215
216                    if (!recaptchaResponseV2) {
217                        recaptchaResponseV2 = document.createElement('input');
218                        recaptchaResponseV2.type = 'hidden';
219                        recaptchaResponseV2.name = 'recaptchaResponseV2';
220                        formEl.appendChild(recaptchaResponseV2);
221                    }
222
223                    recaptchaResponseV2.value = token;
224
225                    if (window.recaptchaSiteKeyV2) {
226                        let siteKeyInput = formEl.querySelector('input[name="siteKey"]');
227
228                        if (siteKeyInput) {
229                            siteKeyInput.value = window.recaptchaSiteKeyV2;
230                        }
231                    }
232
233                    document.querySelectorAll('.u-form-send-error').forEach(el => {
234                        el.style.display = 'none';
235                    });
236
237                    const event = new CustomEvent('submit', {
238                        detail: { recaptchaPassed: true },
239                        bubbles: true,
240                        cancelable: true,
241                    });
242
243                    formEl.dispatchEvent(event);
244                },
245                'error-callback': function () {
246                    clearTimeout(timeoutHandle);
247                    showRecaptchaError('reCAPTCHA v2 error. Please try again.');
248                },
249                'expired-callback': function () {
250                    clearTimeout(timeoutHandle);
251                }
252            });
253
254            window.grecaptchaObject.reset(window.recaptchaRenderedV2);
255
256            setTimeout(() => {
257                window.grecaptchaObject.execute(window.recaptchaRenderedV2);
258            }, 300);
259
260            timeoutHandle = setTimeout(function () {
261                if (!tokenReceived) {
262                    showRecaptchaError('The Contact Form could not be submitted because Google reCAPTCHA v3 detected unusual activity from your connection. Please try again later, or complete the reCAPTCHA v2 challenge if it appears.');
263                }
264            }, 120000);
265        } else {
266            window.grecaptchaObject.reset(window.recaptchaRenderedV2);
267
268            setTimeout(() => {
269                window.grecaptchaObject.execute(window.recaptchaRenderedV2);
270            }, 300);
271        }
272    };
273    </script>
273
274<meta data-intl-tel-input-cdn-path="intlTelInput/"></head>
275  <body data-path-to-root="./" data-include-products="true" class="u-body u-clearfix u-xl-mode" data-lang="en"><header class="u-clearfix u-header u-header" id="sec-8a6e"><div class="u-clearfix u-sheet u-sheet-1">
276        <a href="#" class="u-image u-logo u-image-1" data-image-width="1309" data-image-height="1201">
277          <img src="images/UBF_Colorful.png" class="u-logo-image u-logo-image-1">
278        </a>
279        <nav class="u-menu u-menu-one-level u-offcanvas u-menu-1" role="navigation">
280          <div class="menu-collapse" style="font-size: 1rem; letter-spacing: 0px;">
281            <a class="u-button-style u-custom-left-right-menu-spacing u-custom-padding-bottom u-custom-top-bottom-menu-spacing u-hamburger-link u-nav-link u-text-active-palette-1-base u-text-hover-palette-2-base" href="#" tabindex="-1" aria-label="Open menu" aria-controls="1b27">
282              <svg class="u-svg-link" viewBox="0 0 24 24"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#menu-hamburger"></use></svg>
283              <svg class="u-svg-content" version="1.1" id="menu-hamburger" viewBox="0 0 16 16" x="0px" y="0px" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"><g><rect y="1" width="16" height="2"></rect><rect y="7" width="16" height="2"></rect><rect y="13" width="16" height="2"></rect>
284</g></svg>
285            </a>
286          </div>
287          <div class="u-custom-menu u-nav-container">
288            <ul class="u-nav u-unstyled u-nav-1" role="menubar"><li role="none" class="u-nav-item"><a role="menuitem" class="u-button-style u-nav-link u-text-active-palette-1-base u-text-hover-palette-2-base u-nav-link-2" href="./">Home</a>
289</li><li role="none" class="u-nav-item"><a role="menuitem" class="u-button-style u-nav-link u-text-active-palette-1-base u-text-hover-palette-2-base u-nav-link-2" href="About.html">About</a>
290</li><li role="none" class="u-nav-item"><a role="menuitem" class="u-button-style u-nav-link u-text-active-palette-1-base u-text-hover-palette-2-base u-nav-link-2" href="Shop.html">Shop</a>
291</li></ul>
292          </div>
293          <div class="u-custom-menu u-nav-container-collapse" id="1b27" role="region" aria-label="Menu panel">
294            <div class="u-black u-container-style u-inner-container-layout u-opacity u-opacity-95 u-sidenav">
295              <div class="u-inner-container-layout u-sidenav-overflow">
296                <div class="u-menu-close" tabindex="-1" aria-label="Close menu"></div>
297                <ul class="u-align-center u-nav u-popupmenu-items u-unstyled u-nav-2" role="menubar"><li role="none" class="u-nav-item"><a role="menuitem" class="u-button-style u-nav-link" href="./">Home</a>
298</li><li role="none" class="u-nav-item"><a role="menuitem" class="u-button-style u-nav-link" href="About.html">About</a>
299</li><li role="none" class="u-nav-item"><a role="menuitem" class="u-button-style u-nav-link" href="Shop.html">Shop</a>
300</li></ul>
301              </div>
302            </div>
303            <div class="u-black u-menu-overlay u-opacity u-opacity-70"></div>
304          </div>
305        </nav>
306        <a href="https://www.paypal.com/donate/?hosted_button_id=HC4E6XPQ4BNSN" class="u-active-none u-border-2 u-border-no-left u-border-no-right u-border-no-top u-border-palette-1-base u-btn u-btn-rectangle u-button-style u-hover-none u-none u-btn-1" target="_blank">Donate</a>
307      </div></header>
308    <section class="u-clearfix u-section-1" id="shop-section">
309      <div class="u-clearfix u-sheet u-sheet-1">
310        <div class="shop-container">
311          <h1>Festival T&#8209;Shirts</h1>
312          <p>Support the Utah Brazilian Festival — grab your festival t-shirt!</p>
313          <p>Buy a shirt and you'll have a space in the VIP area of the festival.</p>
314
315          <div class="shop-product">
316            <div class="shop-product-image">
317              <img src="images/tshirt.png" alt="Utah Brazilian Festival T-Shirt" width="560" height="581">
318            </div>
319            <div class="shop-product-details">
320              <h2>Utah Brazilian Festival T-Shirt</h2>
321              <p class="shop-price">$30.00</p>
322
323              <div class="shop-options">
324                <div class="shop-field">
325                  <label for="shirt-size">Size</label>
326                  <select id="shirt-size" class="u-input u-input-rectangle">
327                    <option value="X-Small">X-Small</option>
328                    <option value="Small">Small</option>
329                    <option value="Medium" selected="">Medium</option>
330                    <option value="Large">Large</option>
331                    <option value="X-Large">X-Large</option>
332                    <option value="XX-Large">XX-Large</option>
333                  </select>
334                </div>
335
336                <div class="shop-field">
337                  <label for="shirt-qty">Quantity</label>
338                  <input type="number" id="shirt-qty" class="u-input u-input-rectangle" value="1" min="1" max="20">
339                </div>
340              </div>
341
342              <a href="#" id="add-to-cart-btn" class="u-active-none u-btn u-btn-rectangle u-button-style u-hover-none u-btn-1">
342Add to Cart</a>
343            </div>
344          </div>
345        </div>
346      </div>
347    </section>
348    <section class="u-align-left u-clearfix u-container-align-left u-section-2" id="cart-section">
349      <div class="u-clearfix u-sheet u-sheet-1">
350        <div class="shop-container">
351          <h2>Your Cart</h2>
352          <div id="cart-empty-message" class="shop-cart-empty">Your cart is empty. Add a t-shirt above to get started.</div>
353          <div id="cart-items" class="shop-cart-items" hidden=""></div>
354          <div id="cart-summary" class="shop-cart-summary" hidden="">
355            <p><strong>Items:</strong> <span id="cart-item-count">0</span></p>
356            <p><strong>Total:</strong> $<span id="cart-total">0.00</span></p>
357          </div>
358        </div>
359      </div>
360    </section>
361    <section class="u-align-left u-clearfix u-container-align-left u-section-3" id="checkout-section">
362      <div class="u-clearfix u-sheet u-sheet-1">
363        <div class="shop-container">
364          <div class="shop-payment">
365            <h3>Complete Your Payment</h3>
366            <p>Total due: <strong>$<span id="checkout-total">0.00</span></strong></p>
367
368            <a href="#" id="pay-stripe" class="u-active-none u-btn u-btn-rectangle u-button-style u-hover-none u-btn-1">Pay with Card</a>
369          </div>
370        </div>
371      </div>
372    </section>
373    <footer class="u-align-center u-clearfix u-container-align-center u-footer u-grey-80 u-footer" id="sec-6a69"><div class="u-clearfix u-sheet u-sheet-1">
374        <p class="u-small-text u-text u-text-variant u-text-1">Utah Brazilian Festival</p>
375      </div></footer>
376    
376<script class="u-script" type="text/javascript" src="Shop.js" defer=""></script>
vendor: 1 bytes, line 376
376
377<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"fb7f3efd2dd8411881534e9f5f09ee99","r":1,"spa":2}' crossorigin="anonymous"></script>
377
378</body></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.