1<!doctype html> 2 3<html lang="en" dir="ltr"> 4 <head> 5 <meta charset="utf-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0, height=device-height, minimum-scale=1.0, maximum-scale=1.0"> 7 <meta name="theme-color" content="#fdf8f0"> 8 9 <title> 10 Your Shopping Cart 11 </title><link rel="canonical" href="https://texaspecancakes.com/cart"><link rel="shortcut icon" href="//texaspecancakes.com/cdn/shop/files/Favicon3.png?v=1684942441&width=96"> 12 <link rel="apple-touch-icon" href="//texaspecancakes.com/cdn/shop/files/Favicon3.png?v=1684942441&width=180"><link rel="preconnect" href="https://cdn.shopify.com"> 13 <link rel="preconnect" href="https://fonts.shopifycdn.com" crossorigin> 14 <link rel="dns-prefetch" href="https://productreviews.shopifycdn.com"><meta property="og:type" content="website"> 15 <meta property="og:title" content="Your Shopping Cart"><meta property="og:image" content="http://texaspecancakes.com/cdn/shop/files/Capital_Cake_Pic.jpg?v=1783375415&width=2048"> 16 <meta property="og:image:secure_url" content="https://texaspecancakes.com/cdn/shop/files/Capital_Cake_Pic.jpg?v=1783375415&width=2048"> 17 <meta property="og:image:width" content="2752"> 18 <meta property="og:image:height" content="1536"><meta property="og:url" content="https://texaspecancakes.com/cart"> 19<meta property="og:site_name" content="Texas Pecan Cakes"><meta name="twitter:card" content="summary"><meta name="twitter:title" content="Your Shopping Cart"> 20 <meta name="twitter:description" content="Your Shopping Cart"><meta name="twitter:image" content="https://texaspecancakes.com/cdn/shop/files/Capital_Cake_Pic.jpg?crop=center&height=1200&v=1783375415&width=1200"> 21 <meta name="twitter:image:alt" content="Gift box of Texas-shaped pecan cakes with a Texas flag pattern, a 'Keep Austin Weird' mug, gift cards, and a sign reading 'Authentic Austin: The Perfect Corporate & Event Gift', with the Texas Capitol building in the background.">
21<script type="application/ld+json"> 22 { 23 "@context": "https://schema.org", 24 "@type": "BreadcrumbList", 25 "itemListElement": [{ 26 "@type": "ListItem", 27 "position": 1, 28 "name": "Home", 29 "item": "https://texaspecancakes.com" 30 }] 31 } 32</script>
32<style>/* Typography (heading) */ 33 34 35/* Typography (body) */ 36 37 38 39 40:root { 41 /** 42 * --------------------------------------------------------------------- 43 * SPACING VARIABLES 44 * 45 * We are using a spacing inspired from frameworks like Tailwind CSS. 46 * --------------------------------------------------------------------- 47 */ 48 --spacing-0-5: 0.125rem; /* 2px */ 49 --spacing-1: 0.25rem; /* 4px */ 50 --spacing-1-5: 0.375rem; /* 6px */ 51 --spacing-2: 0.5rem; /* 8px */ 52 --spacing-2-5: 0.625rem; /* 10px */ 53 --spacing-3: 0.75rem; /* 12px */ 54 --spacing-3-5: 0.875rem; /* 14px */ 55 --spacing-4: 1rem; /* 16px */ 56 --spacing-4-5: 1.125rem; /* 18px */ 57 --spacing-5: 1.25rem; /* 20px */ 58 --spacing-5-5: 1.375rem; /* 22px */ 59 --spacing-6: 1.5rem; /* 24px */ 60 --spacing-6-5: 1.625rem; /* 26px */ 61 --spacing-7: 1.75rem; /* 28px */ 62 --spacing-7-5: 1.875rem; /* 30px */ 63 --spacing-8: 2rem; /* 32px */ 64 --spacing-8-5: 2.125rem; /* 34px */ 65 --spacing-9: 2.25rem; /* 36px */ 66 --spacing-9-5: 2.375rem; /* 38px */ 67 --spacing-10: 2.5rem; /* 40px */ 68 --spacing-11: 2.75rem; /* 44px */ 69 --spacing-12: 3rem; /* 48px */ 70 --spacing-14: 3.5rem; /* 56px */ 71 --spacing-16: 4rem; /* 64px */ 72 --spacing-18: 4.5rem; /* 72px */ 73 --spacing-20: 5rem; /* 80px */ 74 --spacing-24: 6rem; /* 96px */ 75 --spacing-28: 7rem; /* 112px */ 76 --spacing-32: 8rem; /* 128px */ 77 --spacing-36: 9rem; /* 144px */ 78 --spacing-40: 10rem; /* 160px */ 79 --spacing-44: 11rem; /* 176px */ 80 --spacing-48: 12rem; /* 192px */ 81 --spacing-52: 13rem; /* 208px */ 82 --spacing-56: 14rem; /* 224px */ 83 --spacing-60: 15rem; /* 240px */ 84 --spacing-64: 16rem; /* 256px */ 85 --spacing-72: 18rem; /* 288px */ 86 --spacing-80: 20rem; /* 320px */ 87 --spacing-96: 24rem; /* 384px */ 88 89 /* Container */ 90 --container-max-width: 1440px; 91 --container-narrow-max-width: 1190px; 92 --container-gutter: var(--spacing-5); 93 --section-outer-spacing-block: var(--spacing-10); 94 --section-inner-max-spacing-block: var(--spacing-9); 95 --section-inner-spacing-inline: var(--container-gutter); 96 --section-stack-spacing-block: var(--spacing-8); 97 98 /* Grid gutter */ 99 --grid-gutter: var(--spacing-5); 100 101 /* Product list settings */ 102 --product-list-row-gap: var(--spacing-8); 103 --product-list-column-gap: var(--grid-gutter); 104 105 /* Form settings */ 106 --input-gap: var(--spacing-2); 107 --input-height: 2.625rem; 108 --input-padding-inline: var(--spacing-4); 109 110 /* Other sizes */ 111 --sticky-area-height: calc(var(--sticky-announcement-bar-enabled, 0) * var(--announcement-bar-height, 0px) + var(--sticky-header-enabled, 0) * var(--header-height, 0px)); 112 113 /* RTL support */ 114 --transform-logical-flip: 1; 115 --transform-origin-start: left; 116 --transform-origin-end: right; 117 118 /** 119 * --------------------------------------------------------------------- 120 * TYPOGRAPHY 121 * --------------------------------------------------------------------- 122 */ 123 124 /* Font properties */ 125 --heading-font-family: Helvetica, Arial, sans-serif; 126 --heading-font-weight: 400; 127 --heading-font-style: normal; 128 --heading-text-transform: normal; 129 --heading-letter-spacing: -0.01em; 130 --text-font-family: Helvetica, Arial, sans-serif; 131 --text-font-weight: 400; 132 --text-font-style: normal; 133 --text-letter-spacing: 0.0em; 134 135 /* Font sizes */ 136 --text-h0: 3rem; 137 --text-h1: 2.5rem; 138 --text-h2: 2rem; 139 --text-h3: 1.5rem; 140 --text-h4: 1.375rem; 141 --text-h5: 1.125rem; 142 --text-h6: 1rem; 143 --text-xs: 0.6875rem; 144 --text-sm: 0.75rem; 145 --text-base: 0.875rem; 146 --text-lg: 1.125rem; 147 148 /** 149 * --------------------------------------------------------------------- 150 * COLORS 151 * --------------------------------------------------------------------- 152 */ 153 154 /* Color settings */--accent: 191 10 48; 155 --text-primary: 0 40 104; 156 --background-primary: 253 248 240; 157 --dialog-background: 255 255 255; 158 --border-color: var(--text-color, var(--text-primary)) / 0.12; 159 160 /* Button colors */ 161 --button-background-primary: 191 10 48; 162 --button-text-primary: 255 255 255; 163 --button-background-secondary: 139 94 60; 164 --button-text-secondary: 255 255 255; 165 166 /* Status colors */ 167 --success-background: 238 241 235; 168 --success-text: 112 138 92; 169 --warning-background: 252 240 227;
170 --warning-text: 227 126 22; 171 --error-background: 245 229 229; 172 --error-text: 170 40 38; 173 174 /* Product colors */ 175 --on-sale-text: 191 10 48; 176 --on-sale-badge-background: 191 10 48; 177 --on-sale-badge-text: 255 255 255; 178 --sold-out-badge-background: 190 189 185; 179 --sold-out-badge-text: 0 0 0; 180 --primary-badge-background: 0 40 104; 181 --primary-badge-text: 255 255 255; 182 --star-color: 191 10 48; 183 --product-card-background: 255 255 255; 184 --product-card-text: 0 40 104; 185 186 /* Header colors */ 187 --header-background: 253 248 240; 188 --header-text: 0 40 104; 189 190 /* Footer colors */ 191 --footer-background: 0 40 104; 192 --footer-text: 255 255 255; 193 194 /* Rounded variables (used for border radius) */ 195 --rounded-xs: 0.25rem; 196 --rounded-sm: 0.3125rem; 197 --rounded: 0.625rem; 198 --rounded-lg: 1.25rem; 199 --rounded-full: 9999px; 200 201 --rounded-block: 1.25rem; 202 --rounded-button: 1.375rem; 203 --rounded-input: 0.5rem; 204 205 /* Box shadow */ 206 --shadow-sm: 0 2px 8px rgb(var(--text-primary) / 0.57); 207 --shadow: 0 5px 15px rgb(var(--text-primary) / 0.57); 208 --shadow-md: 0 5px 30px rgb(var(--text-primary) / 0.57); 209 --shadow-block: 0px 0px 60px rgb(var(--text-primary) / 0.57); 210 211 /** 212 * --------------------------------------------------------------------- 213 * OTHER 214 * --------------------------------------------------------------------- 215 */ 216 217 --stagger-products-reveal-opacity: 0; 218 --cursor-close-svg-url: url(//texaspecancakes.com/cdn/shop/t/65/assets/cursor-close.svg?v=67823394671329714291783368095); 219 --cursor-zoom-in-svg-url: url(//texaspecancakes.com/cdn/shop/t/65/assets/cursor-zoom-in.svg?v=2656660652962230021783368095); 220 --cursor-zoom-out-svg-url: url(//texaspecancakes.com/cdn/shop/t/65/assets/cursor-zoom-out.svg?v=88110990802737771841783368095); 221 --checkmark-svg-url: url(//texaspecancakes.com/cdn/shop/t/65/assets/checkmark.svg?v=5588600397216680941783368095); 222 } 223 224 [dir="rtl"]:root { 225 /* RTL support */ 226 --transform-logical-flip: -1; 227 --transform-origin-start: right; 228 --transform-origin-end: left; 229 } 230 231 @media screen and (min-width: 700px) { 232 :root { 233 /* Typography (font size) */ 234 --text-h0: 4rem; 235 --text-h1: 3rem; 236 --text-h2: 2.5rem; 237 --text-h3: 2rem; 238 --text-h4: 1.625rem; 239 --text-h5: 1.25rem; 240 --text-h6: 1.125rem; 241 242 --text-xs: 0.6875rem; 243 --text-sm: 0.8125rem; 244 --text-base: 0.9375rem; 245 --text-lg: 1.1875rem; 246 247 /* Spacing */ 248 --container-gutter: 2rem; 249 --section-outer-spacing-block: var(--spacing-14); 250 --section-inner-max-spacing-block: var(--spacing-10); 251 --section-inner-spacing-inline: var(--spacing-10); 252 --section-stack-spacing-block: var(--spacing-12); 253 254 /* Grid gutter */ 255 --grid-gutter: var(--spacing-6); 256 257 /* Product list settings */ 258 --product-list-row-gap: var(--spacing-12); 259 260 /* Form settings */ 261 --input-gap: 1rem; 262 --input-height: 3.125rem; 263 --input-padding-inline: var(--spacing-5); 264 } 265 } 266 267 @media screen and (min-width: 1000px) { 268 :root { 269 /* Spacing settings */ 270 --container-gutter: var(--spacing-12); 271 --section-outer-spacing-block: var(--spacing-16); 272 --section-inner-max-spacing-block: var(--spacing-14); 273 --section-inner-spacing-inline: var(--spacing-14); 274 --section-stack-spacing-block: var(--spacing-12); 275 } 276 } 277 278 @media screen and (min-width: 1150px) { 279 :root { 280 /* Spacing settings */ 281 --container-gutter: var(--spacing-12); 282 --section-outer-spacing-block: var(--spacing-16); 283 --section-inner-max-spacing-block: var(--spacing-14); 284 --section-inner-spacing-inline: var(--spacing-14); 285 --section-stack-spacing-block: var(--spacing-12); 286 } 287 } 288 289 @media screen and (min-width: 1400px) { 290 :root { 291 /* Typography (font size) */ 292 --text-h0: 5rem; 293 --text-h1: 3.75rem; 294 --text-h2: 3rem; 295 --text-h3: 2.25rem; 296 --text-h4: 2rem; 297 --text-h5: 1.5rem; 298 --text-h6: 1.25rem; 299 300 --section-outer-spacing-block: var(--spacing-20); 301 --section-inner-max-spacing-block: var(--spacing-16); 302 --section-inner-spacing-inline: var(--spacing-16); 303 } 304 } 305 306 @media screen and (min-width: 1600px) { 307 :root { 308 --section-outer-spacing-block: var(--spacing-20); 309 --section-inner-max-spacing-block: var(--spacing-18); 310 --section-inner-spacing-inline: var(--spacing-18); 311 } 312 } 313 314 /** 315 * --------------------------------------------------------------------- 316 * LIQUID DEPENDANT CSS 317 * 318 * Our main CSS is Liquid free, but some very specific features depend on 319 * theme settings, so we have them here 320 * --------------------------------------------------------------------- 321 */@media screen and (pointer: fine) { 322 /* The !important are for the Shopify Payment button to ensure we override the default from Shopify styles */ 323 .button:not([disabled]):not(.button--outline):hover, .btn:not
323([disabled]):hover, .shopify-payment-button__button--unbranded:not([disabled]):hover { 324 background-color: transparent !important; 325 color: rgb(var(--button-outline-color) / var(--button-background-opacity, 1)) !important; 326 box-shadow: inset 0 0 0 2px currentColor !important; 327 } 328 329 .button--outline:not([disabled]):hover { 330 background: rgb(var(--button-background)); 331 color: rgb(var(--button-text-color)); 332 box-shadow: inset 0 0 0 2px rgb(var(--button-background)); 333 } 334 }</style>
335<script> 336 // This allows to expose several variables to the global scope, to be used in scripts 337 window.themeVariables = { 338 settings: { 339 showPageTransition: false, 340 staggerProductsApparition: true, 341 reduceDrawerAnimation: true, 342 reduceMenuAnimation: true, 343 headingApparition: "split_rotation", 344 pageType: "cart", 345 moneyFormat: "${{amount}}", 346 moneyWithCurrencyFormat: "${{amount}} USD", 347 currencyCodeEnabled: true, 348 cartType: "page", 349 showDiscount: true, 350 discountMode: "percentage", 351 pageBackground: "#FDF8F0", 352 textColor: "#002868" 353 }, 354 355 strings: { 356 addedToCartWithTitle: "{{ product_title }} added to your cart", 357 accessibilityClose: "Close", 358 accessibilityNext: "Next", 359 accessibilityPrevious: "Previous", 360 closeGallery: "Close gallery", 361 zoomGallery: "Zoom", 362 errorGallery: "Image cannot be loaded", 363 searchNoResults: "No results could be found.", 364 addOrderNote: "Add order note", 365 editOrderNote: "Edit order note", 366 shippingEstimatorNoResults: "Sorry, we do not ship to your address.", 367 shippingEstimatorOneResult: "There is one shipping rate for your address:", 368 shippingEstimatorMultipleResults: "There are several shipping rates for your address:", 369 shippingEstimatorError: "One or more error occurred while retrieving shipping rates:" 370 }, 371 372 breakpoints: { 373 'sm': 'screen and (min-width: 700px)', 374 'md': 'screen and (min-width: 1000px)', 375 'lg': 'screen and (min-width: 1150px)', 376 'xl': 'screen and (min-width: 1400px)', 377 378 'sm-max': 'screen and (max-width: 699px)', 379 'md-max': 'screen and (max-width: 999px)', 380 'lg-max': 'screen and (max-width: 1149px)', 381 'xl-max': 'screen and (max-width: 1399px)' 382 } 383 }; 384 385 // For detecting native share 386 document.documentElement.classList.add(`native-share--${navigator.share ? 'enabled' : 'disabled'}`);</script>
vendor: 1 bytes, line 386
386
387<script async crossorigin fetchpriority="high" src="/cdn/shopifycloud/importmap-polyfill/es-modules-shim.2.4.0.js"></script>
vendor: 1 bytes, line 387
387
388<script type="importmap">{ 389 "imports": { 390 "vendor": "//texaspecancakes.com/cdn/shop/t/65/assets/vendor.min.js?v=176075354585445912951783368068", 391 "theme": "//texaspecancakes.com/cdn/shop/t/65/assets/theme.js?v=83770735619002042421783368068", 392 "photoswipe": "//texaspecancakes.com/cdn/shop/t/65/assets/photoswipe.min.js?v=13374349288281597431783368068" 393 } 394 } 395 </script>
395 396 397
397<script type="module" src="//texaspecancakes.com/cdn/shop/t/65/assets/vendor.min.js?v=176075354585445912951783368068"></script>
397 398
398<script type="module" src="//texaspecancakes.com/cdn/shop/t/65/assets/theme.js?v=83770735619002042421783368068"></script>
398 399 400
400<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
400<meta name="facebook-domain-verification" content="0fpbogy9ms9ox5poe5gwln8c63came"> 401<meta name="google-site-verification" content="_vuDN3y8wrIcs698-37DlEBE6t0g5-DcQ3qIdsmMRAQ"> 402<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/72949498133/digital_wallets/dialog"> 403<meta id="in-context-paypal-metadata" data-shop-id="72949498133" data-venmo-supported="false" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD"> 404<link rel="ucp" href="/.well-known/ucp" version="2026-08-25">
404<script async="async" src="/checkouts/internal/preloads.js?locale=en-US"></script>
404 405<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
406<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&shop_id=72949498133" crossorigin="anonymous"></script>
vendor: 1 bytes, line 406
406
407<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":72949498133,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/72949498133","merchantName":"Texas Pecan Cakes","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","discover","amex","elo","jcb"],"total":{"type":"pending","label":"Texas Pecan Cakes","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 407
407
408<script id="shopify-features" type="application/json">{"accessToken":"d7308b31abac75d0322ea7c518b93a8c","betas":["rich-media-storefront-analytics"],"domain":"texaspecancakes.com","predictiveSearch":true,"shopId":72949498133,"locale":"en"}</script>
vendor: 1 bytes, line 408
408
409<script>var Shopify = Shopify || {}; 410Shopify.shop = "texas-pecan-cakes.myshopify.com"; 411Shopify.locale = "en"; 412Shopify.currency = {"active":"USD","rate":"1.0"}; 413Shopify.country = "US"; 414Shopify.theme = {"name":"7.6.26","id":170709713173,"schema_name":"Impact","schema_version":"7.2.0","theme_store_id":1190,"role":"main"}; 415Shopify.theme.handle = "null"; 416Shopify.theme.style = {"id":null,"handle":null}; 417Shopify.cdnHost = "texaspecancakes.com/cdn"; 418Shopify.routes = Shopify.routes || {}; 419Shopify.routes.root = "/"; 420Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 421Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 422Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 423Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 423
423
424<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 424
424
425<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
vendor: 1 bytes, line 425
425
426<script> 427 window.ShopifyPay = window.ShopifyPay || {}; 428 window.ShopifyPay.apiHost = "shop.app\/pay"; 429 window.ShopifyPay.redirectState = null; 430</script>
vendor: 1 bytes, line 430
430
431<script> 432 window.Shopify = window.Shopify || {}; 433 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 434 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 435 window.Shopify.SignInWithShop.eligible = true; 436</script>
vendor: 1 bytes, line 436
436
437<script id="shop-js-analytics" type="application/json">{"pageType":"cart"}</script>
vendor: 1 bytes, line 437
437
438<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"></script>
vendor: 1 bytes, line 438
438
439<script type="module"> 440 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 441 442 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 443 444</script>
vendor: 1 bytes, line 444
444
445<script> 446 window.Shopify = window.Shopify || {}; 447 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 448 window.Shopify.featureAssets['shop-js'] = {"avatar":["modules/v2/loader.avatar.en.esm.js"],"checkout-modal":["modules/v2/loader.checkout-modal.en.esm.js"],"init-customer-accounts-sign-up":["modules/v2/loader.init-customer-accounts-sign-up.en.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.en.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.en.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.en.esm.js"],"init-shop-user-recognition":["modules/v2/loader.init-shop-user-recognition.en.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.en.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.en.esm.js"],"listener":["modules/v2/loader.listener.en.esm.js"],"pay-button":["modules/v2/loader.pay-button.en.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.en.esm.js"],"shop-button":["modules/v2/loader.shop-button.en.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.en.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.en.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.en.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.en.esm.js"],"shop-login":["modules/v2/loader.shop-login.en.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.en.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.en.esm.js"]}; 449</script>
vendor: 1 bytes, line 449
449
450<script>(function() { 451 var isLoaded = false; 452 function asyncLoad() { 453 if (isLoaded) return; 454 isLoaded = true; 455 var urls = ["https:\/\/cdn.shopify.com\/s\/files\/1\/0729\/4949\/8133\/t\/19\/assets\/affirmShopify.js?v=1730478186\u0026shop=texas-pecan-cakes.myshopify.com","https:\/\/ecommplugins-scripts.trustpilot.com\/v2.1\/js\/header.min.js?settings=eyJrZXkiOiJBUVlEVFpzQmU3Y3A1N2tSIn0=\u0026v=2.5\u0026shop=texas-pecan-cakes.myshopify.com","https:\/\/ecommplugins-scripts.trustpilot.com\/v2.1\/js\/success.min.js?settings=eyJrZXkiOiJBUVlEVFpzQmU3Y3A1N2tSIiwidCI6WyJvcmRlcnMvZnVsZmlsbGVkIl0sInYiOiIifQ==\u0026shop=texas-pecan-cakes.myshopify.com","https:\/\/ecommplugins-trustboxsettings.trustpilot.com\/texas-pecan-cakes.myshopify.com.js?settings=1741721897467\u0026shop=texas-pecan-cakes.myshopify.com"]; 456 for (var i = 0; i < urls.length; i++) { 457 var s = document.createElement('script'); 458 s.type = 'text/javascript'; 459 s.async = true; 460 s.src = urls[i]; 461 var x = document.getElementsByTagName('script')[0]; 462 x.parentNode.insertBefore(s, x); 463 } 464 }; 465 if(window.attachEvent) { 466 window.attachEvent('onload', asyncLoad); 467 } else { 468 window.addEventListener('load', asyncLoad, false); 469 } 470})();</script>
vendor: 1 bytes, line 470
470
471<script id="__st">var __st={"a":72949498133,"offset":-18000,"reqid":"755c9f0b-9a79-4bf1-8c61-95d34a94069d-1791389296","pageurl":"texaspecancakes.com\/cart","u":"64b91b156505","p":"cart"};</script>
vendor: 1 bytes, line 471
471
472<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 472
472
473<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.3.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!0)}();</script>
vendor: 1 bytes, line 473
473
474<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//texaspecancakes.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 474
474
475<script>(function () {var userAgent = navigator.userAgent;var platform = navigator.platform;var maxTouchPoints = navigator.maxTouchPoints || 0;var isIOS = /iPad|iPhone|iPod/.test(platform) || (platform === 'MacIntel' && maxTouchPoints > 1);var isMacSafari = platform.indexOf('Mac') === 0 && /Safari/.test(userAgent) && !/Chrome|Chromium|CriOS|FxiOS|Edg|OPR|Android/.test(userAgent);var isAppleSafari = isIOS || isMacSafari;if (isAppleSafari) {fetch('/sf_private_access_tokens' + location.search).catch(function () {});}function browserMajorVersion(pattern) {var match = userAgent.match(pattern);return match ? parseInt(match[1], 10) : null;}function shouldLoadAutosizesPolyfill() {if (!window.PerformanceObserver?.supportedEntryTypes?.includes('paint')) {return false;}var chromeVersion = browserMajorVersion(/Chrome\/(\d+)/);if (chromeVersion !== null) {return chromeVersion < 126;}var firefoxVersion = browserMajorVersion(/Firefox\/(\d+)/);if (firefoxVersion !== null) {return firefoxVersion < 150;}var safariVersion = isAppleSafari ? browserMajorVersion(/Version\/(\d+).*Safari\//) : null;if (safariVersion !== null) {return safariVersion < 27;}return true;}if (shouldLoadAutosizesPolyfill()) {var autosizesScript = document.createElement('script');autosizesScript.async = true;autosizesScript.crossOrigin = 'anonymous';autosizesScript.src = "//texaspecancakes.com/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script>
475<script crossorigin="anonymous" defer="defer" src="//texaspecancakes.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-f0e26bdf.js?v=20250812"></script>
vendor: 1 bytes, line 475
475
476<script id="shopify-origin-trials" async="async" integrity="sha256-qJbe/jEZBHtr5W/BlA2cKAz3vkXu6vJQyLjgvgCC86g=" src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-318ab40a.js" crossorigin="anonymous" onload="window.__shopifyOriginTrialsDone = true" onerror="window.__shopifyOriginTrialsDone = true"></script>
vendor: 1 bytes, line 476
476
477<script> 478 window.Shopify = window.Shopify || {}; 479 window.Shopify.MCP = window.Shopify.MCP || {}; 480 window.Shopify.MCP.enabled = true; 481 window.Shopify.MCP.shop = "texas-pecan-cakes.myshopify.com"; 482 window.Shopify.MCP.mcpEndpoint = "https:\/\/texaspecancakes.com\/api\/mcp"; 483 window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n - What is your return policy?\n - What is your shipping policy?\n - What is your phone number?\n - What are your hours of operation?\"\nSet policy_types to also get the store's written policies (full text and URL).\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."},"policy_types":{"type":"array","items":{"type":"string","enum":["refund","shipping","privacy","terms_of_service","terms_of_sale","subscription","legal_notice","contact"]},"description":"Policy kinds to fetch, chosen from the user's question â e.g. [\"refund\"] for returns\/exchanges\/damaged items, [\"contact\"] for phone\/hours\/address. Include every kind the question touches. Omit it to get only FAQ answers."}},"required":["query"]}}]; 484</script>
vendor: 1 bytes, line 484
484
485<script>(()=>{var d="shopify:webmcp_adapter_loaded",n=Symbol.for("shopify.webmcp_adapter_loading");function s(c,a,{win:r=window,doc:o=document}={}){function p(){try{return r.localStorage.getItem(d)==="true"}catch{return!1}}function l(){try{r.localStorage.setItem(d,"true")}catch{}}function u(){return typeof(o.modelContext||r.navigator?.modelContext)?.registerTool=="function"}function f(){if(r[n]||!u())return;let t=o.head||o.getElementsByTagName("head")[0];if(!t)return;let e=o.createElement("script");e.type="module",e.crossOrigin="anonymous",a&&(e.integrity=a),e.src=c,e.addEventListener("load",l,{once:!0}),e.addEventListener("error",()=>{r[n]=!1},{once:!0}),t.appendChild(e),r[n]=!0}function _(t){let e=o.getElementById("shopify-origin-trials");if(!e||r.__shopifyOriginTrialsDone){t();return}e.addEventListener("load",t,{once:!0}),e.addEventListener("error",t,{once:!0})}function i(){_(()=>r.setTimeout(f,0))}function m(){o.addEventListener("DOMContentLoaded",i,{once:!0})}p()?i():m()}s("\/\/texaspecancakes.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})(); 486</script>
vendor: 1 bytes, line 486
486
487<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://texaspecancakes.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 488</script>
vendor: 1 bytes, line 488
488
489<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 490 function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent); 491</script>
vendor: 1 bytes, line 491
491
492<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}})); 493</script>
493 494<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://texaspecancakes.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 495<style id="shopify-accelerated-checkout-cart"> 496 #shopify-buyer-consent { 497 margin-top: 1em; 498 display: inline-block; 499 width: 100%; 500} 501 502#shopify-buyer-consent.hidden { 503 display: none; 504} 505 506#shopify-subscription-policy-button { 507 background: none; 508 border: none; 509 padding: 0; 510 text-decoration: underline; 511 font-size: inherit; 512 cursor: pointer; 513} 514 515#shopify-subscription-policy-button::before { 516 box-shadow: none; 517} 518 519 </style> 520
521<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
521 522<link href="//texaspecancakes.com/cdn/shop/t/65/assets/theme.css?v=135466643764350407681783368068" rel="stylesheet" type="text/css" media="all" /><!-- BEGIN app block: shopify://apps/send-to-many/blocks/checkout_app_embed/d5a35104-aaae-4335-95ac-fd3de2e3ca03 --><link href="//cdn.shopify.com/extensions/01a0feca-55b3-736b-bd09-dc77e8385f91/send-to-many-173/assets/singleCheckoutWidgetStyles.min.css" rel="stylesheet" type="text/css" media="all" />
523<script src="https://cdn.shopify.com/extensions/01a0feca-55b3-736b-bd09-dc77e8385f91/send-to-many-173/assets/singleCheckoutWidgetBundle.min.js?v=1791389296" defer="defer"></script>
523 524
525<script> 526 (function() { 527 var S2M_EMBED_DEV = false; 528 var designMode = false; 529 530 if (S2M_EMBED_DEV || designMode) { 531 window.s2mEmbedDevLogging = true; 532 } 533 534 console.stmEmbed = function() { 535 if (!window.s2mEmbedDevLogging) return; 536 var args = Array.prototype.slice.call(arguments); 537 console.log.apply(console, ['%c[S2M Embed]', 'color: #059669; font-weight: bold;'].concat(args)); 538 }; 539 540 if (window.s2mEmbedDevLogging) { 541 console.stmEmbed('Dev mode active' + (designMode ? ' (design mode)' : '')); 542 } 543 544 var metafield = {"enabled":true,"placement":{"method":"auto","customSelector":null,"insertPosition":"beforebegin"},"datePicker":{"enabled":true,"required":false,"label":"\u003cstrong\u003eChoose your preferred delivery date, or if no date is selected, we will ship within 1â2 business days.\u003c\/strong\u003e We time your shipment using carrier estimated transit times. Ground\/Priority is estimated only and not guaranteed by the carriers; only Air and Express are carrier guaranteed. \u003ca href=\"https:\/\/texaspecancakes.com\/policies\/shipping-policy\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eSee Shipping Policy\u003c\/a\u003e","placeholder":"Choose a dateâ¦","displayFormat":"M j, Y","dateAvailability":{"dateStartOffset":0,"dateEndOffset":0,"dateAvailabilityRules":[]},"storage":{"type":"additionalDetail","key":"ship_date"}},"giftMessage":{"enabled":true,"label":"Gift message","placeholder":"Write a message for the recipientâ¦","maxLength":150,"storage":{"type":"notes"}},"giftCheckbox":{"enabled":false,"label":"Include a Gift Message","storage":{"type":"additionalDetail","key":"is_gift","checkedValue":"yes","uncheckedValue":"no"},"togglesGiftMessage":false},"hideRules":[{"type":"product_tag","value":"","action":"hide"}]}; 545 546 if (metafield) { 547 window.s2mCheckoutSettings = metafield; 548 }})(); 549</script>
549 550 551 552<!-- END app block --><!-- BEGIN app block: shopify://apps/judge-me-reviews/blocks/judgeme_core/61ccd3b1-a9f2-4160-9fe9-4fec8413e5d8 --><!-- Start of Judge.me Core --> 553 554 555 556 557 558 559 560<link rel="dns-prefetch" href="https://cdn.judge.me"> 561<link rel="dns-prefetch" href="https://cdn1.judge.me"> 562<link rel="dns-prefetch" href="https://api.judge.me"> 563
564<script data-cfasync='false' class='jdgm-settings-script'>window.jdgmSettings={"pagination":5,"disable_web_reviews":false,"coupon_receiving_condition":"","coupon_value_type":"percentage","coupon_value_percentage":10,"coupon_value_fixed_amount":0,"coupon_discount_type":"single","coupon_tier_text_enabled":false,"coupon_tier_text_percentage":10,"coupon_tier_text_fixed_amount":0,"coupon_tier_photo_enabled":false,"coupon_tier_photo_percentage":10,"coupon_tier_photo_fixed_amount":0,"coupon_tier_video_enabled":false,"coupon_tier_video_percentage":10,"coupon_tier_video_fixed_amount":0,"enable_coupons":true,"badge_no_review_text":"No reviews","badge_n_reviews_text":"{{ n }} review/reviews","hide_badge_preview_if_no_reviews":true,"badge_hide_text":false,"enforce_center_preview_badge":false,"widget_title":"Customer Reviews","widget_open_form_text":"Write a review","widget_close_form_text":"Cancel review","widget_refresh_page_text":"Refresh page","widget_summary_text":"Based on {{ number_of_reviews }} review/reviews","widget_no_review_text":"Be the first to write a review","widget_name_field_text":"Display name","widget_verified_name_field_text":"Verified Name (public)","widget_name_placeholder_text":"Display name","widget_required_field_error_text":"This field is required.","widget_email_field_text":"Email address","widget_verified_email_field_text":"Verified Email (private, can not be edited)","widget_email_placeholder_text":"Your email address","widget_email_field_error_text":"Please enter a valid email address.","widget_rating_field_text":"Rating","widget_review_title_field_text":"Review Title","widget_review_title_placeholder_text":"Give your review a title","widget_review_body_field_text":"Review content","widget_review_body_placeholder_text":"Start writing here...","widget_pictures_field_text":"Picture/Video (optional)","widget_submit_review_text":"Submit Review","widget_submit_verified_review_text":"Submit Verified Review","widget_submit_success_msg_with_auto_publish":"Thank y
564ou! Please refresh the page in a few moments to see your review. You can remove or edit your review by logging into \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_submit_success_msg_no_auto_publish":"Thank you! Your review will be published as soon as it is approved by the shop admin. You can remove or edit your review by logging into \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_show_default_reviews_out_of_total_text":"Showing {{ n_reviews_shown }} out of {{ n_reviews }} reviews.","widget_show_all_link_text":"Show all","widget_show_less_link_text":"Show less","widget_author_said_text":"{{ reviewer_name }} said:","widget_days_text":"{{ n }} days ago","widget_weeks_text":"{{ n }} week/weeks ago","widget_months_text":"{{ n }} month/months ago","widget_years_text":"{{ n }} year/years ago","widget_yesterday_text":"Yesterday","widget_today_text":"Today","widget_replied_text":"\u003e\u003e {{ shop_name }} replied:","widget_read_more_text":"Read more","widget_reviewer_name_as_initial":"last_initial","widget_rating_filter_color":"","widget_rating_filter_see_all_text":"See all reviews","widget_sorting_most_recent_text":"Most Recent","widget_sorting_highest_rating_text":"Highest Rating","widget_sorting_lowest_rating_text":"Lowest Rating","widget_sorting_with_pictures_text":"Only Pictures","widget_sorting_most_helpful_text":"Most Helpful","widget_open_question_form_text":"Ask a question","widget_reviews_subtab_text":"Reviews","widget_questions_subtab_text":"Questions","widget_question_label_text":"Question","widget_answer_label_text":"Answer","widget_question_placeholder_text":"Write your question here","widget_submit_question_text":"Submit Question","widget_question_submit_success_text":"Thank you for your question! We will notify you once it gets answered.","verified_badge_text":"Verified","verified_badge_bg_color":"","verified_badge_text_color":"","verified_badge_placement":"left-of-reviewer-name","widget_review_max_height":"","widget_hide_border":false,"widget_social_share":false,"widget_thumb":false,"widget_review_location_show":false,"widget_location_format":"","all_reviews_include_out_of_store_products":true,"all_reviews_out_of_store_text":"(out of store)","all_reviews_pagination":100,"all_reviews_product_name_prefix_text":"about","enable_review_pictures":true,"enable_question_anwser":false,"widget_theme":"","review_date_format":"mm/dd/yy","default_sort_method":"most-recent","enable_ai_review_visibility":true,"widget_product_reviews_subtab_text":"Product Reviews","widget_shop_reviews_subtab_text":"Shop Reviews","widget_other_products_reviews_text":"Reviews for other products","widget_store_reviews_subtab_text":"Store reviews","widget_product_variant_reference_text":"Review for","widget_no_store_reviews_text":"This store hasn't received any reviews yet","widget_web_restriction_product_reviews_text":"This product hasn't received any reviews yet","widget_no_items_text":"No items found","widget_show_more_text":"Show more","widget_write_a_store_review_text":"Write a Store Review","widget_product_and_store_reviews_text":"Product and store reviews","widget_reviews_in_collection_text":"Reviews in this collection","widget_other_languages_heading":"Reviews in Other Languages","widget_translate_review_text":"Translate review to {{ language }}","widget_translating_review_text":"Translating...","widget_show_original_translation_text":"Show original ({{ language }})","widget_translate_review_failed_text":"Review couldn't be translated.","widget_translate_review_retry_text":"Retry","widget_translate_review_try_again_later_text":"Try again later","show_product_url_for_grouped_product":false,"widget_sorting_pictures_first_text":"Pictures First","show_pictures_on_all_rev_page_mobile":false,"show_pictures_on_all_rev_page_desktop":false,"floating_tab_hide_mobile_install_preference":false,"floating_tab_button_name":"â
Reviews","floating_tab_title":"Let customers speak for us","floating_tab_button_color":"","floating_tab_button_background_color":"","floating_tab_url":"","floating_tab_url_enabled":false,"floating_tab_tab_style":"text","all_reviews_text_badge_text":"Customers rate us {{ shop.metafields.judgeme.all_reviews_rating | round: 1 }}/5 based on {{ shop.metafields.judgeme.all_reviews_count }} reviews.","all_reviews_text_badge_text_branded_style":"{{ shop.metafields.judgeme.all_reviews_rating | round: 1 }} out of 5 stars based on {{ shop.metafields.judgeme.all_reviews_count }} reviews","is_all_reviews_text_badge_a_link":false,"show_stars_for_all_reviews_text_badge":false,"all_reviews_text_badge_url":"","all_reviews_text_style":"branded","all_reviews_text_color_style":"judgeme_brand_color","all_reviews_text_color":"#108474","all_reviews_text_show_jm_brand":true,"featured_carousel_show_header":true,"featured_carousel_title":"Pecan Cake Fans Speak Out","testimonials_carousel_title":"Customers are saying","videos_carousel_title":"Real customer stories","cards_carousel_title":"Customers are saying","featured_carousel_count_text":"from {{ n }} reviews","featured_carousel_add_link_to_all_reviews_page":false,"featured_carousel_url":"","featured_carousel_show_images":true,"featured_carousel_autoslide_interval":5,"featured_carousel_arrows_on_the_sides":false,"featured_carousel_height":250,"featured_carousel_width":80,"featured_carousel_image_size":0,"featured_carousel_image_height":250,"featured_carousel_arrow_color":"#eeeeee","verified_count_badge_style":"vintage","verified_count_badge_orientation":"horizontal","verified_count_badge_color_style":"judgeme_brand_color","verified_count_badge_color":"#108474","is_verified_count_badge_a_link":false,"verified_count_badge_url":"","verified_count_badge_show_jm_brand":true,"widget_rating_preset_default":5,"widget_first_sub_tab":"product-reviews","widget_show_histogram":true,"widget_histogram_use_custom_color":false,"widget_pagination_use_custom_color":false,"widget_star_use_custom_color":false,"widget_verified_badge_use_custom_color":false,"widget_write_review_use_custom_color":false,"picture_reminder_submit_button":"Upload Pictures","enable_review_videos":false,"mute_video_by_default":false,"widget_sorting_videos_first_text":"Videos First","widget_review_pending_text":"Pending","featured_carousel_items_for_large_screen":3,"social_share_options_order":"Facebook,Twitter","remove_microdata_snippet":true,"disable_json_ld":false,"enable_json_ld_products":false,"preview_badge_show_question_text":false,"preview_badge_no_question_text":"No questions","preview_badge_n_question_text":"{{ number_of_questions }} question/questions","qa_badge_show_icon":false,"qa_badge_position":"same-row","remove_judgeme_branding":false,"widget_add_search_bar":false,"widget_search_bar_placeholder":"Search","widget_sorting_verified_only_text":"Verified only","widget_sorting_most_relevant_text":"Most Relevant","featured_carousel_theme":"card","featured_carousel_show_rating":true,"featured_carousel_show_title":true,"featured_carousel_show_body":true,"featured_carousel_show_date":false,"featured_carousel_show_reviewer":true,"featured_carousel_show_product":false,"featured_carousel_header_background_color":"#108474","featured_carousel_header_text_color":"#ffffff","featured_carousel_name_product_separator":"reviewed","featured_carousel_full_star_background":"#002868","featured_carousel_empty_star_background":"#dadada","featured_carousel_vertical_theme_background":"#f9fafb","featured_carousel_verified_badge_enable":true,"featured_carousel_verified_badge_color":"#108474","featured_carousel_border_style":"round","featured_carousel_review_line_length_limit":3,"featured_carousel_more_reviews_button_text":"Read more reviews","featured_carousel_view_product_button_text":"View product","all_reviews_page_load_reviews_on":"scroll","all_reviews_page_load_more_text":"Load More Reviews","disable_fb_tab_reviews":false,"enable_ajax_cdn_cache":false,"widget_public_name_text":"displayed publicly like","default_reviewer_name":"John Smith","default_reviewer_name_has_non_latin":true,"widget_reviewer_anonymous":"Anonymous","medals_widget_title":"Judge.me Review Medals","medals_widget_background_color":"#f9fafb","medals_widget_position":"footer_all_pages","medals_widget_border_color":"#f9fafb","medals_widget_verified_text_position":"left","medals_widget_use_monochromatic_version":true,"medals_widget_elements_color":"#0011A6","show_reviewer_avatar":true,"widget_invalid_yt_video_url_error_text":"Not a YouTube video URL","widget_max_length_field_error_text":"Please enter no more than {0} characters.","widget_show_country_flag":false,"widget_show_collected_via_shop_app":true,"widget_verified_by_shop_badge_style":"light","widget_verified_by_shop_text":"Verified by Shop","widget_show_photo_gallery":false,"widget_load_with_code_splitting":true,"widget_ugc_install_preference":false,"widget_ugc_title":"Made by us, Shared by you","widget_ugc_subt
564itle":"Tag us to see your picture featured in our page","widget_ugc_arrows_color":"#ffffff","widget_ugc_primary_button_text":"Buy Now","widget_ugc_primary_button_background_color":"#108474","widget_ugc_primary_button_text_color":"#ffffff","widget_ugc_primary_button_border_width":"0","widget_ugc_primary_button_border_style":"none","widget_ugc_primary_button_border_color":"#108474","widget_ugc_primary_button_border_radius":"25","widget_ugc_secondary_button_text":"Load More","widget_ugc_secondary_button_background_color":"#ffffff","widget_ugc_secondary_button_text_color":"#108474","widget_ugc_secondary_button_border_width":"2","widget_ugc_secondary_button_border_style":"solid","widget_ugc_secondary_button_border_color":"#108474","widget_ugc_secondary_button_border_radius":"25","widget_ugc_reviews_button_text":"View Reviews","widget_ugc_reviews_button_background_color":"#ffffff","widget_ugc_reviews_button_text_color":"#108474","widget_ugc_reviews_button_border_width":"2","widget_ugc_reviews_button_border_style":"solid","widget_ugc_reviews_button_border_color":"#108474","widget_ugc_reviews_button_border_radius":"25","widget_ugc_reviews_button_link_to":"judgeme-reviews-page","widget_ugc_show_post_date":true,"widget_ugc_max_width":"800","widget_rating_metafield_value_type":true,"widget_primary_color":"#01149F","widget_enable_secondary_color":false,"widget_secondary_color":"#edf5f5","widget_summary_average_rating_text":"{{ average_rating }} out of 5","widget_media_grid_title":"Customer photos \u0026 videos","widget_media_grid_see_more_text":"See more","widget_round_style":false,"widget_show_product_medals":true,"widget_verified_by_judgeme_text":"Verified by Judge.me","widget_show_store_medals":true,"widget_verified_by_judgeme_text_in_store_medals":"Verified by Judge.me","widget_media_field_exceed_quantity_message":"Sorry, we can only accept {{ max_media }} for one review.","widget_media_field_exceed_limit_message":"{{ file_name }} is too large, please select a {{ media_type }} less than {{ size_limit }}MB.","widget_review_submitted_text":"Review Submitted!","widget_question_submitted_text":"Question Submitted!","widget_close_form_text_question":"Cancel","widget_write_your_answer_here_text":"Write your answer here","widget_enabled_branded_link":true,"widget_show_collected_by_judgeme":true,"widget_reviewer_name_color":"","widget_write_review_text_color":"","widget_write_review_bg_color":"","widget_collected_by_judgeme_text":"collected by Judge.me","widget_pagination_type":"standard","widget_load_more_text":"Load More","widget_load_more_color":"#108474","widget_full_review_text":"Full Review","widget_read_more_reviews_text":"Read More Reviews","widget_read_questions_text":"Read Questions","widget_questions_and_answers_text":"Questions \u0026 Answers","widget_verified_by_text":"Verified by","widget_verified_text":"Verified","widget_number_of_reviews_text":"{{ number_of_reviews }} reviews","widget_back_button_text":"Back","widget_next_button_text":"Next","widget_custom_forms_filter_button":"Filters","custom_forms_style":"horizontal","widget_show_review_information":false,"how_reviews_are_collected":"How reviews are collected?","widget_show_review_keywords":false,"widget_gdpr_statement":"How we use your data: We'll only contact you about the review you left, and only if necessary. By submitting your review, you agree to Judge.me's \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms\u003c/a\u003e, \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy\u003c/a\u003e and \u003ca href='https://judge.me/content-policy' target='_blank' rel='nofollow noopener'\u003econtent\u003c/a\u003e policies.","widget_multilingual_sorting_enabled":false,"widget_translate_review_content_enabled":false,"widget_translate_review_content_method":"manual","popup_widget_review_selection":"automatically_with_pictures","popup_widget_round_border_style":true,"popup_widget_show_title":true,"popup_widget_show_body":true,"popup_widget_show_reviewer":false,"popup_widget_show_product":true,"popup_widget_show_pictures":true,"popup_widget_use_review_picture":true,"popup_widget_show_on_home_page":true,"popup_widget_show_on_product_page":true,"popup_widget_show_on_collection_page":true,"popup_widget_show_on_cart_page":true,"popup_widget_position":"bottom_left","popup_widget_first_review_delay":5,"popup_widget_duration":5,"popup_widget_interval":5,"popup_widget_review_count":5,"popup_widget_hide_on_mobile":true,"review_snippet_widget_round_border_style":true,"review_snippet_widget_card_color":"#FFFFFF","review_snippet_widget_text_color":"#000000","review_snippet_widget_lighter_text_color":"#7B7B7B","review_snippet_widget_slider_arrows_background_color":"#FFFFFF","review_snippet_widget_slider_arrows_color":"#000000","review_snippet_widget_star_color":"#01149F","show_product_variant":false,"all_reviews_product_variant_label_text":"Variant: ","widget_show_verified_branding":true,"widget_ai_summary_title":"Customers say","widget_ai_summary_disclaimer":"AI-powered review summary based on recent customer reviews","widget_show_ai_summary":false,"widget_show_ai_summary_bg":false,"write_review_button_visibility":"everyone","store_summary_widget_heading":"Customers rate this store","store_summary_widget_button_text":"View customer reviews","store_summary_widget_button_theme_text":"See AI reviews summary","widget_show_review_title_input":true,"widget_autofill_review_title":true,"redirect_reviewers_invited_via_email":"external_form","request_store_review_after_product_review":true,"request_review_other_products_in_order":true,"review_form_color_scheme":"default","review_form_corner_style":"square","review_form_star_color":"#01149F","review_form_text_color":"#333333","review_form_background_color":"#ffffff","review_form_field_background_color":"#fafafa","review_form_button_color":"#01149F","review_form_button_text_color":"#ffffff","review_form_modal_overlay_color":"#000000","review_form_theme":"multi_step","review_form_location":"in_store_popup","review_form_external_page_background_color":"#C5F7F0","review_content_screen_title_text":"How would you rate this product?","review_content_introduction_text":"We would love it if you would share a bit about your experience.","store_review_form_title_text":"How would you rate this store?","store_review_form_introduction_text":"We would love it if you would share a bit about your experience.","show_review_guidance_text":true,"one_star_review_guidance_text":"Poor","five_star_review_guidance_text":"Great","customer_information_screen_title_text":"About you","customer_information_introduction_text":"Please tell us more about you.","custom_questions_screen_title_text":"Your experience in more detail","custom_questions_introduction_text":"Here are a few questions to help us understand more about your experience.","review_submitted_screen_title_text":"Thanks for your review!","review_submitted_screen_thank_you_text":"We are processing it and it will appear on the store soon.","review_submitted_screen_email_verification_text":"Please confirm your email by clicking the link we just sent you. This helps us keep reviews authentic.","confirm_email_screen_title_text":"Confirm your email","confirm_email_screen_message_text":"To help keep reviews authentic, we'll send you a secure link to continue writing your review. It only takes a moment.","check_email_screen_title_text":"Check your email","check_email_screen_message_text":"We sent you an email to {{ email }}. Click the button on the email to continue.","check_email_screen_resend_message_text":"Email resent!","check_email_resend_hint_text":"Didn't get the email? Check your spam folder or [resend the email].","verification_email_rate_limit_error_text":"You've reached the limit for review attempts on this product. Please check your inbox or try again later.","review_submitted_request_store_review_text":"Would you like to share your experience of shopping with us?","review_submitted_review_other_products_text":"Would you like to review these products?","store_review_screen_title_text":"Would you like to share your experience of shopping with us?","store_review_introduction_text":"We value your feedback and use it to improve. Please share any thoughts or suggestions you have.","reviewer_media_screen_title_picture_text":"Share a picture","reviewer_media_introduction_picture_text":"Upload a photo to support your review.","reviewer_media_screen_title_video_text":"Share a video","reviewer_media_introduction_video_text":"Upload a video to support your review.","reviewer_media_screen_title_picture_or_video_text":"Share a picture or video","reviewer_media_introduction_picture_or_video_text":"Upload a photo or video to support your review.","reviewer_media_
564youtube_url_text":"Paste your Youtube URL here","advanced_settings_next_step_button_text":"Next","advanced_settings_close_review_button_text":"Close","modal_write_review_flow":true,"write_review_flow_required_text":"Required","write_review_flow_privacy_message_text":"We respect your privacy.","write_review_flow_anonymous_text":"Post review as anonymous","write_review_flow_visibility_text":"This won't be visible to other customers.","write_review_flow_multiple_selection_help_text":"Select as many as you like","write_review_flow_single_selection_help_text":"Select one option","write_review_flow_required_field_error_text":"This field is required","write_review_flow_invalid_email_error_text":"Please enter a valid email address","write_review_flow_max_length_error_text":"Max. {{ max_length }} characters.","write_review_flow_media_upload_text":"\u003cb\u003eClick to upload\u003c/b\u003e or drag and drop","write_review_flow_gdpr_statement":"We'll only contact you about your review if necessary. By submitting your review, you agree to our \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms and conditions\u003c/a\u003e and \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy policy\u003c/a\u003e.","rating_only_reviews_enabled":false,"show_negative_reviews_help_screen":false,"new_review_flow_help_screen_rating_threshold":3,"negative_review_resolution_screen_title_text":"Tell us more","negative_review_resolution_text":"Your experience matters to us. If there were issues with your purchase, we're here to help. Feel free to reach out to us, we'd love the opportunity to make things right.","negative_review_resolution_button_text":"Contact us","negative_review_resolution_proceed_with_review_text":"Leave a review","negative_review_resolution_subject":"Issue with purchase from {{ shop_name }}.{{ order_name }}","coupon_promo_intro_any_review_text":"Write a review and get a coupon for {{ amount }} off your next purchase","coupon_promo_intro_with_photo_text":"Write a review and add a photo or video to get a coupon for {{ amount }} off your next purchase","coupon_promo_intro_with_video_text":"Write a review and add a video to get a coupon for {{ amount }} off your next purchase","coupon_promo_intro_up_to_any_review_text":"Write a review and get a coupon for up to {{ amount }} off your next purchase","coupon_promo_intro_up_to_with_photo_text":"Write a review and add a photo or video to get a coupon for up to {{ amount }} off your next purchase","coupon_promo_intro_external_text":"Write a review and get a reward for your next purchase","coupon_promo_intro_external_with_photo_text":"Write a review and add a photo or video to get a reward for your next purchase","coupon_promo_intro_external_with_video_text":"Write a review and add a video to get a reward for your next purchase","coupon_promo_media_photo_text":"Add a photo or video and get a coupon for {{ amount }} off your next purchase","coupon_promo_media_photo_only_text":"Add a photo and get a coupon for {{ amount }} off your next purchase","coupon_promo_media_video_text":"Add a video and get a coupon for {{ amount }} off your next purchase","coupon_promo_media_external_photo_text":"Add a photo or video and get a reward for your next purchase","coupon_promo_media_external_photo_only_text":"Add a photo and get a reward for your next purchase","coupon_promo_media_external_video_text":"Add a video and get a reward for your next purchase","coupon_promo_success_text":"You've got a coupon for your next purchase at {{ shop_name }}!","coupon_promo_success_subtext":"You'll receive your coupon email within the hour.","preview_badge_collection_page_install_status":false,"widget_review_custom_css":"","preview_badge_custom_css":"","preview_badge_stars_count":"5-stars","featured_carousel_custom_css":"","floating_tab_custom_css":"","all_reviews_widget_custom_css":"","medals_widget_custom_css":"","verified_badge_custom_css":"","all_reviews_text_custom_css":"","transparency_badges_collected_via_store_invite":false,"transparency_badges_from_another_provider":false,"transparency_badges_collected_from_store_visitor":false,"transparency_badges_collected_by_verified_review_provider":true,"transparency_badges_earned_reward":false,"transparency_badges_collected_via_store_invite_text":"Review collected via store invitation","transparency_badges_from_another_provider_text":"Review collected from another provider","transparency_badges_collected_from_store_visitor_text":"Review collected from a store visitor","transparency_badges_written_in_google_text":"Review written in Google","transparency_badges_written_in_etsy_text":"Review written in Etsy","transparency_badges_written_in_shop_app_text":"Review written in Shop App","transparency_badges_earned_reward_text":"Review earned a reward for future purchase","product_review_widget_per_page":10,"widget_other_languages_reviews_per_page":3,"widget_store_review_label_text":"Review about the store","widget_cart_mode_aggregate_heading_text":"Customers rate this store","checkout_comment_extension_title_on_product_page":"Customer Comments","checkout_comment_extension_num_latest_comment_show":5,"checkout_comment_extension_format":"name_and_timestamp","checkout_comment_customer_name":"last_initial","checkout_comment_comment_notification":true,"preview_badge_collection_page_install_preference":false,"preview_badge_home_page_install_preference":false,"preview_badge_product_page_install_preference":false,"review_widget_install_preference":"","review_carousel_install_preference":false,"floating_reviews_tab_install_preference":"none","verified_reviews_count_badge_install_preference":false,"all_reviews_text_install_preference":false,"review_widget_best_location":false,"judgeme_medals_install_preference":false,"review_widget_revamp_enabled":false,"review_widget_qna_enabled":false,"review_widget_header_theme":"minimal","review_widget_widget_title_enabled":true,"review_widget_header_text_size":"medium","review_widget_header_text_weight":"regular","review_widget_average_rating_style":"compact","review_widget_bar_chart_enabled":true,"review_widget_bar_chart_type":"numbers","review_widget_bar_chart_style":"standard","review_widget_expanded_media_gallery_enabled":false,"review_widget_show_review_highlights":false,"review_widget_show_review_keywords_in_gray":false,"review_widget_reviews_section_theme":"standard","review_widget_image_style":"thumbnails","review_widget_review_image_ratio":"square","review_widget_stars_size":"medium","review_widget_verified_badge":"standard_text","review_widget_review_title_text_size":"medium","review_widget_review_text_size":"medium","review_widget_review_text_length":"medium","review_widget_number_of_columns_desktop":3,"review_widget_carousel_transition_speed":5,"review_widget_custom_questions_answers_display":"always","review_widget_card_section_size":"small","review_widget_button_text_color":"#FFFFFF","review_widget_text_color":"#000000","review_widget_lighter_text_color":"#7B7B7B","review_widget_corner_styling":"soft","review_widget_review_word_singular":"review","review_widget_review_word_plural"
564:"reviews","review_widget_voting_label":"Helpful?","review_widget_shop_reply_label":"Reply from {{ shop_name }}:","review_widget_filters_title":"Filters","review_widget_filter_rating_title":"Rating","review_widget_filter_keyword_title":"Keyword","review_widget_clear_filters_text":"Clear filters","review_widget_expand_more_text":"More","review_widget_review_highlights_title":"Review highlights","qna_widget_question_word_singular":"Question","qna_widget_question_word_plural":"Questions","qna_widget_answer_reply_label":"Answer from {{ answerer_name }}:","qna_content_screen_title_text":"Ask a question about this product","qna_widget_question_required_field_error_text":"Please enter your question.","qna_widget_flow_gdpr_statement":"We'll only contact you about your question if necessary. By submitting your question, you agree to our \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms and conditions\u003c/a\u003e and \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy policy\u003c/a\u003e.","qna_widget_question_submitted_text":"Thanks for your question!","qna_widget_close_form_text_question":"Close","qna_widget_question_submit_success_text":"Weâll notify you by email when your question is answered.","all_reviews_widget_v2025_enabled":false,"all_reviews_widget_v2025_header_theme":"default","all_reviews_widget_v2025_widget_title_enabled":true,"all_reviews_widget_v2025_header_text_size":"medium","all_reviews_widget_v2025_header_text_weight":"regular","all_reviews_widget_v2025_average_rating_style":"compact","all_reviews_widget_v2025_bar_chart_enabled":true,"all_reviews_widget_v2025_bar_chart_type":"numbers","all_reviews_widget_v2025_bar_chart_style":"standard","all_reviews_widget_v2025_expanded_media_gallery_enabled":false,"all_reviews_widget_v2025_show_store_medals":true,"all_reviews_widget_v2025_show_photo_gallery":true,"all_reviews_widget_v2025_show_review_keywords":false,"all_reviews_widget_v2025_show_ai_summary":false,"all_reviews_widget_v2025_show_ai_summary_bg":false,"all_reviews_widget_v2025_show_review_highlights":false,"all_reviews_widget_v2025_show_review_keywords_in_gray":false,"all_reviews_widget_v2025_add_search_bar":false,"all_reviews_widget_v2025_default_sort_method":"most-recent","all_reviews_widget_v2025_reviews_per_page":10,"all_reviews_widget_v2025_reviews_section_theme":"default","all_reviews_widget_v2025_image_style":"thumbnails","all_reviews_widget_v2025_review_image_ratio":"square","all_reviews_widget_v2025_stars_size":"medium","all_reviews_widget_v2025_verified_badge":"standard_text","all_reviews_widget_v2025_review_title_text_size":"medium","all_reviews_widget_v2025_review_text_size":"medium","all_reviews_widget_v2025_review_text_length":"medium","all_reviews_widget_v2025_number_of_columns_desktop":3,"all_reviews_widget_v2025_carousel_transition_speed":5,"all_reviews_widget_v2025_custom_questions_answers_display":"always","all_reviews_widget_v2025_review_dates":false,"all_reviews_widget_v2025_card_section_size":"small","all_reviews_widget_v2025_show_product_variant":false,"all_reviews_widget_v2025_show_reviewer_avatar":true,"all_reviews_widget_v2025_reviewer_name_as_initial":"","all_reviews_widget_v2025_review_location_show":false,"all_reviews_widget_v2025_location_format":"","all_reviews_widget_v2025_show_country_flag":false,"all_reviews_widget_v2025_widget_thumb":false,"all_reviews_widget_v2025_verified_by_shop_badge_style":"light","all_reviews_widget_v2025_social_share":false,"all_reviews_widget_v2025_social_share_options_order":"Facebook,Twitter,LinkedIn,Pinterest","all_reviews_widget_v2025_pagination_type":"standard","all_reviews_widget_v2025_button_text_color":"#FFFFFF","all_reviews_widget_v2025_text_color":"#000000","all_reviews_widget_v2025_lighter_text_color":"#7B7B7B","all_reviews_widget_v2025_corner_styling":"soft","all_reviews_widget_v2025_title":"Customer reviews","all_reviews_widget_v2025_ai_summary_title":"Customers say about this store","all_reviews_widget_v2025_no_review_text":"Be the first to write a review","all_reviews_widget_v2025_review_highlights_title":"Review highlights","reviews_grid_widget_show_sample_reviews":false,"reviews_grid_widget_review_selection":"all","reviews_grid_widget_select_products":[],"reviews_grid_widget_show_media_only":false,"reviews_grid_widget_display_order":"media_first","reviews_grid_widget_card_grouping":"per_media","reviews_grid_widget_columns_desktop":3,"reviews_grid_widget_rows_desktop":3,"reviews_grid_widget_columns_mobile":2,"reviews_grid_widget_rows_mobile":6,"reviews_grid_widget_show_stars":true,"reviews_grid_widget_show_reviewer_name":true,"reviews_grid_widget_show_review_title_on_hover_desktop":true,"reviews_grid_widget_corner_styling":"soft","reviews_grid_widget_card_spacing":"medium","reviews_grid_widget_header_text_color":"#000000","reviews_grid_widget_star_and_reviewer_name_color":"#F9F9F9","reviews_grid_widget_overlay_and_background_color":"#000000","reviews_grid_widget_content_color":"#F9F9F9","reviews_grid_widget_header_text":"From our customers","reviews_grid_widget_show_average_rating":true,"trust_badge_enabled":false,"trust_badge_structure":"outline","trust_badge_color":"black","trust_badge_star":"black","trust_badge_rating_display_default":"show_avg_text","platform":"shopify","branding_url":"https://app.judge.me/reviews/stores/texaspecancakes.com","branding_text":"Powered by Judge.me","locale":"en","reply_name":"Texas Pecan Cakes","shop_currency":"USD","widget_version":"3.0","footer":true,"autopublish":true,"review_dates":true,"enable_custom_form":false,"shop_use_review_site":true,"shop_locale":"en","enable_multi_locales_translations":true,"show_review_title_input":true,"autofill_review_title":true,"review_verification_email_status":"always","require_verification_before_submit":false,"sign_in_with_
564shop_enabled":false,"customer_account_validation_enabled":true,"most_relevant_sort_enabled":false,"coupon_promo_invited_eligible":true,"coupon_promo_web_eligible":false,"uses_coupon_integration":false,"uses_external_coupon":false,"can_be_branded":true,"rtl_stars_enabled_ar":true,"rtl_stars_enabled_he":true,"reply_name_text":"Texas Pecan Cakes"};</script>
564 <style class='jdgm-settings-style'>.jdgm-xx{left:0}:root{--jdgm-primary-color: #01149F;--jdgm-secondary-color: rgba(1,20,159,0.1);--jdgm-star-color: #01149F;--jdgm-write-review-text-color: white;--jdgm-write-review-bg-color: #01149F;--jdgm-paginate-color: #01149F;--jdgm-border-radius: 0;--jdgm-reviewer-name-color: #01149F}.jdgm-histogram__bar-content{background-color:#01149F}.jdgm-rev[data-verified-buyer=true] .jdgm-rev__icon.jdgm-rev__icon:after,.jdgm-rev__buyer-badge.jdgm-rev__buyer-badge{color:white;background-color:#01149F}.jdgm-review-widget--small .jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"See more"}@media only screen and (min-width: 768px){.jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"See more"}}.jdgm-prev-badge[data-average-rating='0.00']{display:none !important}.jdgm-author-fullname{display:none !important}.jdgm-author-all-initials{display:none !important}.jdgm-rev-widg__title{visibility:hidden}.jdgm-rev-widg__summary-text{visibility:hidden}.jdgm-prev-badge__text{visibility:hidden}.jdgm-rev__prod-link-prefix:before{content:'about'}.jdgm-rev__variant-label:before{content:'Variant: '}.jdgm-rev__out-of-store-text:before{content:'(out of store)'}@media only screen and (min-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}@media only screen and (max-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}.jdgm-preview-badge[data-template="product"]{display:none !important}.jdgm-preview-badge[data-template="collection"]{display:none !important}.jdgm-preview-badge[data-template="index"]{display:none !important}.jdgm-review-widget[data-from-snippet="true"]{display:none !important}.jdgm-verified-count-badget[data-from-snippet="true"]{display:none !important}.jdgm-carousel-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-all-reviews-text[data-from-snippet="true"]{display:none !important}.jdgm-medals-section[data-from-snippet="true"]{display:none !important}.jdgm-ugc-media-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_via_store_invitation"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_from_another_provider"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_from_store_visitor"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_earned_for_future_purchase"]{display:none !important}.jdgm-review-snippet-widget{--jdgm-snippet-card-color: #fff;--jdgm-snippet-text-color: #000;--jdgm-snippet-lighter-text-color: #7B7B7B;--jdgm-snippet-star-color: #01149F;--jdgm-snippet-border-radius: 8px;--jdgm-snippet-arrows-bg-color: #fff;--jdgm-snippet-arrows-color: #000}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__cards-container .jdgm-rev-snippet-card{border-radius:8px;background:#fff}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__cards-container .jdgm-rev-snippet-card__rev-rating .jdgm-star{color:#01149F}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__prev-btn,.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__next-btn{border-radius:50%;background:#fff}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__prev-btn>svg,.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__next-btn>svg{fill:#000}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jm-mfp-content,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__icon,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__pic-img,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__reply{border-radius:8px}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev[data-verified-buyer="true"] .jdgm-full-rev__icon::after{border-radius:8px}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-rev__buyer-badge{border-radius:calc( 8px / 2 )}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-full-rev__replier::before{content:'Texas Pecan Cakes'}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-full-rev__product-button{border-radius:calc( 8px * 6 )} 565</style> <style class='jdgm-settings-style'></style> 566 567 568 569 570 <style class='jdgm-miracle-styles'> 571 @-webkit-keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@font-face{font-family:'JudgemeStar';src:url("data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAScAA0AAAAABrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEgAAAABoAAAAcbyQ+3kdERUYAAARgAAAAHgAAACAAMwAGT1MvMgAAAZgAAABGAAAAVi+vS9xjbWFwAAAB8AAAAEAAAAFKwBMjvmdhc3AAAARYAAAACAAAAAj//wADZ2x5ZgAAAkAAAAEJAAABdH33LXtoZWFkAAABMAAAAC0AAAA2BroQKWhoZWEAAAFgAAAAHAAAACQD5QHQaG10eAAAAeAAAAAPAAAAFAYAAABsb2NhAAACMAAAAA4AAAAOAO4AeG1heHAAAAF8AAAAHAAAACAASgAvbmFtZQAAA0wAAADeAAABkorWfVZwb3N0AAAELAAAACkAAABEp3ubLXgBY2BkYADhPPP4OfH8Nl8ZuJkYQODS2fRrCPr/aSYGxq1ALgcDWBoAO60LkwAAAHgBY2BkYGDc+v80gx4TAwgASaAICmABAFB+Arl4AWNgZGBgYGPQYWBiAAIwyQgWc2AAAwAHVQB6eAFjYGRiYJzAwMrAwejDmMbAwOAOpb8ySDK0MDAwMbByMsCBAAMCBKS5pjA4PGB4wMR44P8BBj3GrQymQGFGkBwAjtgK
571/gAAeAFjYoAAEA1jAwAAZAAHAHgB3crBCcAwDEPRZydkih567CDdf4ZskmLwFBV8xBfCaC4BXkOUmx4sU0h2ngNb9V0vQCxaRKIAevT7fGWuBrEAAAAAAAAAAAA0AHgAugAAeAF9z79Kw1AUx/FzTm7un6QmJtwmQ5Bg1abgEGr/BAqlU6Gju+Cgg1MkQ/sA7Vj7BOnmO/gUvo2Lo14NqIO6/IazfD8HEODtmQCfoANwNsyp2/GJt3WKQrd1NLiYYWx2PBqOsmJMEOznPOTzfSCrhAtbbLdmeFLJV9eKd63WLrZcIcuaEVdssWCKM6pLCfTVOYbz/0pNSMSZKLIZpvh78sAUH6PlMrreTCabP9r+Z/puPZ2ur/RqpQHgh+MIegCnXeM4MRAPjYN//5tj4ZtTjkFqEdmeMShlEJ7tVAly2TAkx6R68Fl4E/aVvn8JqHFQ4JS1434gXKcuL31dDhzs3YbsEOAd/IU88gAAAHgBfY4xTgMxEEVfkk0AgRCioKFxQYd2ZRtpixxgRU2RfhU5q5VWseQ4JdfgAJyBlmNwAM7ABRhZQ0ORwp7nr+eZAa54YwYg9zm3ynPOeFRe8MCrciXOh/KSS76UV5L/iDmrLiS5AeU519wrL3jmSbkS5115yR2fyivJv9kx0ZMZ2RLZw27q87iNQi8EBo5FSPIMw3HqBboi5lKTGAGDp8FKXWP+t9TU01Lj5His1Ba6uM9dTEMwvrFmbf5GC/q2drW3ruXUhhsCiQOjznFlCzYhHUZp4xp76vsvQh89CQAAeAFjYGJABowM6IANLMrEyMTIzMjCXpyRWJBqZshWXJJYBKOMAFHFBucAAAAAAAAB//8AAngBY2BkYGDgA2IJBhBgAvKZGViBJAuYxwAABJsAOgAAeAFjYGBgZACCk535hiD60tn0azAaAEqpB6wAAA==") format("woff");font-weight:normal;font-style:normal}.jdgm-star{font-family:'JudgemeStar';display:inline !important;text-decoration:none !important;padding:0 4px 0 0 !important;margin:0 !important;font-weight:bold;opacity:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.jdgm-star:hover{opacity:1}.jdgm-star:last-of-type{padding:0 !important}.jdgm-star.jdgm--on:before{content:"\e000"}.jdgm-star.jdgm--off:before{content:"\e001"}.jdgm-star.jdgm--half:before{content:"\e002"}.jdgm-widget *{margin:0;line-height:1.4;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch}.jdgm-hidden{display:none !important;visibility:hidden !important}.jdgm-temp-hidden{display:none}.jdgm-spinner{width:40px;height:40px;margin:auto;border-radius:50%;border-top:2px solid #eee;border-right:2px solid #eee;border-bottom:2px solid #eee;border-left:2px solid #ccc;-webkit-animation:jdgm-spin 0.8s infinite linear;animation:jdgm-spin 0.8s infinite linear}.jdgm-spinner:empty{display:block}.jdgm-prev-badge{display:block !important} 572 573</style> 574<style class='jdgm-miracle-styles'> 575 @font-face{font-family:'JudgemeStar';src:url("data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAScAA0AAAAABrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEgAAAABoAAAAcbyQ+3kdERUYAAARgAAAAHgAAACAAMwAGT1MvMgAAAZgAAABGAAAAVi+vS9xjbWFwAAAB8AAAAEAAAAFKwBMjvmdhc3AAAARYAAAACAAAAAj//wADZ2x5ZgAAAkAAAAEJAAABdH33LXtoZWFkAAABMAAAAC0AAAA2BroQKWhoZWEAAAFgAAAAHAAAACQD5QHQaG10eAAAAeAAAAAPAAAAFAYAAABsb2NhAAACMAAAAA4AAAAOAO4AeG1heHAAAAF8AAAAHAAAACAASgAvbmFtZQAAA0wAAADeAAABkorWfVZwb3N0AAAELAAAACkAAABEp3ubLXgBY2BkYADhPPP4OfH8Nl8ZuJkYQODS2fRrCPr/aSYGxq1ALgcDWBoAO60LkwAAAHgBY2BkYGDc+v80gx4TAwgASaAICmABAFB+Arl4AWNgZGBgYGPQYWBiAAIwyQgWc2AAAwAHVQB6eAFjYGRiYJzAwMrAwejDmMbAwOAOpb8ySDK0MDAwMbByMsCBAAMCBKS5pjA4PGB4wMR44P8BBj3GrQymQGFGkBwAjtgK/gAAeAFjYoAAEA1jAwAAZAAHAHgB3crBCcAwDEPRZydkih567CDdf4ZskmLwFBV8xBfCaC4BXkOUmx4sU0h2ngNb9V0vQCxaRKIAevT7fGWuBrEAAAAAAAAAAAA0AHgAugAAeAF9z79Kw1AUx/FzTm7un6QmJtwmQ5Bg1abgEGr/BAqlU6Gju+Cgg1MkQ/sA7Vj7BOnmO/gUvo2Lo14NqIO6/I
575azfD8HEODtmQCfoANwNsyp2/GJt3WKQrd1NLiYYWx2PBqOsmJMEOznPOTzfSCrhAtbbLdmeFLJV9eKd63WLrZcIcuaEVdssWCKM6pLCfTVOYbz/0pNSMSZKLIZpvh78sAUH6PlMrreTCabP9r+Z/puPZ2ur/RqpQHgh+MIegCnXeM4MRAPjYN//5tj4ZtTjkFqEdmeMShlEJ7tVAly2TAkx6R68Fl4E/aVvn8JqHFQ4JS1434gXKcuL31dDhzs3YbsEOAd/IU88gAAAHgBfY4xTgMxEEVfkk0AgRCioKFxQYd2ZRtpixxgRU2RfhU5q5VWseQ4JdfgAJyBlmNwAM7ABRhZQ0ORwp7nr+eZAa54YwYg9zm3ynPOeFRe8MCrciXOh/KSS76UV5L/iDmrLiS5AeU519wrL3jmSbkS5115yR2fyivJv9kx0ZMZ2RLZw27q87iNQi8EBo5FSPIMw3HqBboi5lKTGAGDp8FKXWP+t9TU01Lj5His1Ba6uM9dTEMwvrFmbf5GC/q2drW3ruXUhhsCiQOjznFlCzYhHUZp4xp76vsvQh89CQAAeAFjYGJABowM6IANLMrEyMTIzMjCXpyRWJBqZshWXJJYBKOMAFHFBucAAAAAAAAB//8AAngBY2BkYGDgA2IJBhBgAvKZGViBJAuYxwAABJsAOgAAeAFjYGBgZACCk535hiD60tn0azAaAEqpB6wAAA==") format("woff");font-weight:normal;font-style:normal} 576 577</style> 578 579 580 581 582 583 584 585 586
587<script data-cfasync='false' class='jdgm-script'> 588!function(e){window.jdgm=window.jdgm||{}; 589/* INF-1976 */ 590var _jdgmBlocked=function(){var raw=(window.jdgmSettings||{}).hostname_allowlist;var list=(raw==null?"":""+raw).split(/[\s,]+/).map(function(h){return h.trim().toLowerCase().replace(/\.$/,"");}).filter(function(h){return h;});if(!list.length)return false;var host=(e.location.hostname||"").toLowerCase().replace(/\.$/,"");if(/(^|\.)shopifypreview\.com$/.test(host))return false;var bare=host.replace(/^www\./,"");for(var i=0;i<list.length;i++){var en=list[i];if(en.indexOf("*.")===0){var b=en.slice(2);if(host===b||host.slice(-(b.length+1))==="."+b)return false;}else if(bare===en.replace(/^www\./,""))return false;}return true;}(); 591if(_jdgmBlocked){jdgm._loaderExecuted=true;jdgm._blocked=true;var _jdgmS=e.createElement("style");_jdgmS.textContent='[class^="jdgm-"],[class*=" jdgm-"]{display:none !important}';(e.head||e.documentElement).appendChild(_jdgmS);return;} 592jdgm.CDN_HOST="https://cdnwidget.judge.me/",jdgm.CDN_HOST_ALT="https://cdn2.judge.me/cdn/widget_frontend/",jdgm.API_HOST="https://api.judge.me/",jdgm.CDN_BASE_URL="https://cdn.shopify.com/extensions/01a11176-2280-7862-971a-b99c4fd1084c/judgeme-773/assets/",jdgm.CDN_API_HOST="https://cdn.judge.me/", 593jdgm.docReady=function(d){(e.attachEvent?"complete"===e.readyState:"loading"!==e.readyState)? 594setTimeout(d,0):e.addEventListener("DOMContentLoaded",d)},jdgm.loadCSS=function(d,t,o,a){ 595!o&&jdgm.loadCSS.requestedUrls.indexOf(d)>=0||(jdgm.loadCSS.requestedUrls.push(d), 596(a=e.createElement("link")).rel="stylesheet",a.class="jdgm-stylesheet",a.media="nope!", 597a.href=d,a.onload=function(){this.media="all",t&&setTimeout(t)},e.body.appendChild(a))}, 598jdgm.loadCSS.requestedUrls=[],jdgm.loadJS=function(e,d){var t=new XMLHttpRequest; 599t.onreadystatechange=function(){4===t.readyState&&t.status>=200&&t.status<300&&(Function(t.response)(),d&&d(t.response))}, 600t.open("GET",e),t.onerror=function(){if(e.indexOf(jdgm.CDN_HOST)===0&&jdgm.CDN_HOST_ALT!==jdgm.CDN_HOST){var f=e.replace(jdgm.CDN_HOST,jdgm.CDN_HOST_ALT);jdgm.loadJS(f,d)}},t.send()},jdgm.docReady((function(){(window.jdgmLoadCSS||e.querySelectorAll( 601".jdgm-widget, .jdgm-all-reviews-page").length>0)&&(jdgmSettings.widget_load_with_code_splitting? 602parseFloat(jdgmSettings.widget_version)>=3?jdgm.loadCSS(jdgm.CDN_BASE_URL+"widget_v3_base.css"): 603jdgm.loadCSS(jdgm.CDN_BASE_URL+"widget_base.css"):jdgm.loadCSS(jdgm.CDN_BASE_URL+"shopify_v2.css") 604)}))}(document); 605</script>
605 606<noscript><link rel="stylesheet" type="text/css" media="all" href="https://cdn.shopify.com/extensions/01a11176-2280-7862-971a-b99c4fd1084c/judgeme-773/assets/shopify_v2.css"></noscript> 607 608<!-- BEGIN app snippet: theme_fix_tags -->
608<script> 609 (function() { 610 var jdgmThemeFixes = null; 611 if (!jdgmThemeFixes) return; 612 613 // "All themes" fix: CSS and JS applied on every theme. CSS is injected 614 // before the per-theme fix so the theme-specific CSS wins the cascade. 615 // HTML is never applied globally (too risky). 616 var allThemesFix = jdgmThemeFixes['all']; 617 if (allThemesFix && allThemesFix.css) { 618 var allStyleTag = document.createElement('style'); 619 allStyleTag.classList.add('jdgm-theme-fix-style-all'); 620 allStyleTag.innerHTML = allThemesFix.css; 621 document.head.append(allStyleTag); 622 }; 623 624 if (allThemesFix && allThemesFix.js) { 625 var allScriptTag = document.createElement('script'); 626 allScriptTag.classList.add('jdgm-theme-fix-script-all'); 627 allScriptTag.innerHTML = allThemesFix.js; 628 document.head.append(allScriptTag); 629 }; 630 631 var thisThemeFix = jdgmThemeFixes[Shopify.theme.id]; 632 if (!thisThemeFix) return; 633 634 if (thisThemeFix.html) { 635 document.addEventListener("DOMContentLoaded", function() { 636 var htmlDiv = document.createElement('div'); 637 htmlDiv.classList.add('jdgm-theme-fix-html'); 638 htmlDiv.innerHTML = thisThemeFix.html; 639 document.body.append(htmlDiv); 640 }); 641 }; 642 643 if (thisThemeFix.css) { 644 var styleTag = document.createElement('style'); 645 styleTag.classList.add('jdgm-theme-fix-style'); 646 styleTag.innerHTML = thisThemeFix.css; 647 document.head.append(styleTag); 648 }; 649 650 if (thisThemeFix.js) { 651 var scriptTag = document.createElement('script'); 652 scriptTag.classList.add('jdgm-theme-fix-script'); 653 scriptTag.innerHTML = thisThemeFix.js; 654 document.head.append(scriptTag); 655 }; 656 })(); 657</script>
657 658<!-- END app snippet --> 659<!-- End of Judge.me Core --> 660 661 662 663<!-- END app block --><!-- BEGIN app block: shopify://apps/inbox/blocks/chat/841fc607-4181-4ad1-842d-e24d7f8bad6b --><link rel='modulepreload' href='https://cdn.shopify.com/storefront/web-components/chat.js' crossorigin fetchpriority='low'> 664
665<script id='shopify-chat-app-embed-data' type='application/json'> 666 { 667 "settings": { 668 "invertActivatorColors": false, 669 "greetingMessage": "Check our instant answers below or leave us a message â weâll get back within 1 business day. You can also call (512) 222-7054 or email [email protected].", 670 "showFeaturedProducts": true, 671 "featuredProducts": [{ 672 "imageUrl": "\/\/texaspecancakes.com\/cdn\/shop\/files\/small-pecan-cake-6-pack-best-value-pecan-cakes-7007446.webp?v=1780935127\u0026width=600", 673 "altText": "Small Pecan Cake 6-Pack | Best Value - Pecan Cakes", 674 "title": "Small Pecan Cake 6-Pack | Best Value", 675 "productUrl": "\/products\/small-cake-6-pack" 676 } 677], 678 "horizontalPosition": "bottom_right", 679 "icon": "team", 680 "buttonLabel": "Help" 681 } 682 } 683</script>
683 684 685<style data-shopify> 686 687 688 /* Shadow DOM content does not prevent theme-wide :empty rules from matching the host. */ 689 shopify-chat:defined:empty { 690 display: grid; 691 } 692 693 :root { 694 --shopify-chat-bg-color: #fdf8f0; 695 --shopify-chat-text-color: #002868; 696 --shopify-chat-accent-bg-color: #002868; 697 --shopify-chat-accent-text-color: #fdf8f0; 698 --shopify-chat-activator-offset: 20px; 699 700 701 702 --shopify-chat-activator-font-size: 15px; 703 --shopify-chat-border-radius: 20px; 704 } 705 706 707</style> 708
709<script src='https://cdn.shopify.com/storefront/web-components/chat.js' type='module' crossorigin fetchpriority='low' async></script>
709 710 711 712<!-- END app block --><!-- BEGIN app block: shopify://apps/microsoft-clarity/blocks/clarity_js/31c3d126-8116-4b4a-8ba1-baeda7c4aeea -->
713<script type="text/javascript"> 714 (function (c, l, a, r, i, t, y) { 715 c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments); }; 716 t = l.createElement(r); t.async = 1; t.src = "https://www.clarity.ms/tag/" + i + "?ref=shopify"; 717 y = l.getElementsByTagName(r)[0]; y.parentNode.insertBefore(t, y); 718 719 c.Shopify.loadFeatures([{ name: "consent-tracking-api", version: "0.1" }], error => { 720 if (error) { 721 console.error("Error loading Shopify features:", error); 722 return; 723 } 724 725 c[a]('consentv2', { 726 ad_Storage: c.Shopify.customerPrivacy.marketingAllowed() ? "granted" : "denied", 727 analytics_Storage: c.Shopify.customerPrivacy.analyticsProcessingAllowed() ? "granted" : "denied", 728 source: 101, 729 }); 730 }); 731 732 l.addEventListener("visitorConsentCollected", function (e) { 733 c[a]('consentv2', { 734 ad_Storage: e.detail.marketingAllowed ? "granted" : "denied", 735 analytics_Storage: e.detail.analyticsAllowed ? "granted" : "denied", 736 source: 101, 737 }); 738 }); 739 })(window, document, "clarity", "script", "wo3b5eq6xe"); 740</script>
740 741 742 743 744<!-- END app block --><!-- BEGIN app block: shopify://apps/google-youtube/blocks/store_widget/14ec7bd0-ac77-49a9-9417-90752398bdff --> 745 746 747<!-- BEGIN MerchantWidget Code -->
748<script id='merchantWidgetScript' 749 src="https://www.gstatic.com/shopping/merchant/merchantwidget.js" 750 defer> 751</script>
vendor: 1 bytes, line 751
751
752<script type="text/javascript"> 753 merchantWidgetScript.addEventListener('load', function () { 754 var widgetPos = 'LEFT_BOTTOM'; 755 var sideMargin = '36'; 756 var bottomMargin = '36'; 757 var mobileSideMargin = '16'; 758 var mobileBottomMargin = '46'; 759 var merchantId = '5547979817'; 760 merchantwidget.start({ 761 position: widgetPos, 762 sideMargin: sideMargin, 763 bottomMargin: bottomMargin, 764 mobileSideMargin: mobileSideMargin, 765 mobileBottomMargin: mobileBottomMargin, 766 merchant_id: merchantId, 767 }); 768 }); 769</script>
769 770<!-- END MerchantWidget Code --><!-- END app block --><!-- BEGIN app block: shopify://apps/tinyseo-seo-speed/blocks/breadcrumbs-json-ld-embed/0605268f-f7c4-4e95-b560-e43df7d59ae4 -->
770<script type="application/ld+json" id="tinyimg-breadcrumbs-json-ld"> 771 { 772 "@context": "https://schema.org", 773 "@type": "BreadcrumbList", 774 "itemListElement": [ 775 { 776 "@type": "ListItem", 777 "position": 1, 778 "item": { 779 "@id": "https://texaspecancakes.com", 780 "name": "Home" 781 } 782 } 783 784 ] 785 } 786 </script>
786 787<!-- END app block -->
787<script src="https://cdn.shopify.com/extensions/01a11577-687d-7712-a789-32fcae0c2a02/multiship-213/assets/split-shipping.min.js" type="text/javascript" defer="defer"></script>
787 788<link href="https://cdn.shopify.com/extensions/01a11577-687d-7712-a789-32fcae0c2a02/multiship-213/assets/split-shipping.css" rel="stylesheet" type="text/css" media="all">
789<script src="https://cdn.shopify.com/extensions/01a11176-2280-7862-971a-b99c4fd1084c/judgeme-773/assets/loader.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 789
789
790<script src="https://cdn.shopify.com/extensions/01a0aa7a-f99f-7ab6-a36e-9673fd70d8d4/omnisend-57/assets/omnisend-in-shop.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 790
790
791<script src="https://cdn.shopify.com/extensions/01a116bf-7cba-70c7-a1bc-ec92fa06b6a4/forms-2613/assets/shopify-forms-loader.js" type="text/javascript" defer="defer"></script>
791 792<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
793<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 72949498133,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "cart"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 793
793
794<script> 795 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 796</script>
vendor: 1 bytes, line 796
796
797<script>(function(){var wpmLoader=function(){"use strict";var e=/Googlebot|Storebot-Google|bingbot|Baiduspider|YandexBot|DuckDuckBot|Slurp|facebookexternalhit|Twitterbot|LinkedInBot|Applebot|AdsBot-Google|Mediapartners-Google|APIs-Google|PetalBot|SemrushBot|AhrefsBot|MJ12bot|DotBot|Acunetix|PerplexityBot|Perplexity-User/i,t=/bytedance/i;function i(){try{var e=document.cookie;if(!e||"string"!=typeof e)return;for(var t=0,i=e.split(";");t<i.length;t++){var n=i[t],r=n.indexOf("=");if(-1!==r){var o=n.slice(0,r).trim();if(o){var a=void 0;try{a=decodeURIComponent(o)}catch(e){a=o}if("_shopify_s"===a){var d=n.slice(r+1).trim();try{return decodeURIComponent(d)}catch(e){return d}}}}}return}catch(e){return}}function n(e){try{"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(e)}catch(e){}}function r(e,t){return"string"==typeof e&&e.length>0&&e.length<=t?e:void 0}function o(e){var t;switch(null==(t=null==e?void 0:e.navigation)?void 0:t.type){case 0:return"navigate";case 1:return"reload";case 2:return"back_forward";default:return}}function a(){var e,t,i;try{var n=null==(i=null==(t=null==(e=self.ShopifyAnalytics)?void 0:e.lib)?void 0:t.trekkie)?void 0:i.state;return"awaiting-consent"===n||"initialized"===n?n:void 0}catch(e){return}}return function(d,s,u,l){var c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};try{var p=c.trekkieShim;!0!==p&&"true"!==p||null!=window.__TREKKIE_SHIM_QUEUE||(window.__TREKKIE_SHIM_QUEUE=[])}catch(e){}var f,v,h,y,g=(v=(f={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/}).modern,h=f.legacy,(y=navigator.userAgent).match(e)?"bot":y.match(v)?"modern":y.match(h)?"legacy":y.match(t)?"bot":"unknown"),m=function(e){var t,i,n=r(e,128);try{var a=window.performance,d=null==(t=null==a?void 0:a.getEntriesByType)?void 0:t.call(a,"navigation")[0];if(!d)return{requestId:n,navigationType:o(a)};var s="type"in d?r(d.type,64):void 0,u="serverTiming"in d&&Array.isArray(d.serverTiming)?d.serverTiming:[];return{requestId:null!=n?n:r(null==(i=u.find(function(e){return"requestID"===e.name}))?void 0:i.description,128),navigationType:s}}catch(e){return{requestId:n}}}(c.requestId),w=function(e){var t=e.version,r=e.browserTarget,o=e.surface,a=e.shopId,d=e.monorailEndpoint,s=window.location.href;return{emit:function(e){var u=e.status,l=e.errorMsg,c=e.failureReason,p=e.useKeepaliveFallback,f=void 0!==p&&p,v=e.navigationType,h=e.pagehidePersisted,y=e.requestId,g=e.trekkieState;if(d){var m,w;try{var b=(new Date).getTime();m=JSON.stringify({metadata:{event_sent_at_ms:b},events:[{schema_id:"web_pixels_manager_load/3.3",payload:{version:t,bundle_target:r,page_url:s,status:u,surface:o,error_msg:l,failure_reason:c,navigation_type:v,pagehide_persisted:h,request_id:y,trekkie_state:g,shop_id:a,visit_token:i()},metadata:{event_created_at_ms:b}}]})}catch(e){return}try{if("function"==typeof window.navigator.sendBeacon&&-1===(w=window.navigator.userAgent).indexOf("iPhone; CPU iPhone OS 12_")&&-1===w.indexOf("iPad; CPU OS 12_")&&-1===w.indexOf("iPod touch; CPU iPhone OS 12_")&&window.navigator.sendBeacon.bind(window.navigator)(d,m))return}catch(e){}if(f)try{"function"==typeof window.fetch&&window.fetch(d,{method:"POST",headers:{"Content-Type":"text/plain"},body:m,keepalive:!0}
797).catch(function(){})}catch(e){}else try{var _=new XMLHttpRequest;_.open("POST",d,!0),_.setRequestHeader("Content-Type","text/plain"),_.send(m)}catch(e){n("[Web Pixels Manager] Got an unhandled error while logging to Monorail.")}}else n("[Web Pixels Manager] No Monorail endpoint provided, skipping logging.")}}}({version:u,browserTarget:g,surface:d.surface,shopId:d.shopId,monorailEndpoint:d.monorailEndpoint});if(Boolean(null==(_=null==(b=window.Shopify)?void 0:b.analytics)?void 0:_.replayQueue))w.emit({status:"setup-skipped",errorMsg:"replay queue already initialized."});else{var b,_;w.emit({status:"setup-started"}),window.Shopify=window.Shopify||{};var S=window.Shopify;S.analytics=S.analytics||{};var P=S.analytics;P.replayQueue=[],P.publish=function(e,t,i){return P.replayQueue.push([e,t,i]),!0};try{self.performance.mark("wpm:start")}catch(e){}var k,C="modern"===g?"modern":"legacy",E=(null!=l?l:{modern:"",legacy:""})[C],I=[(k={baseUrl:s,hashVersion:u,buildTarget:C}).baseUrl,"/wpm","/b",k.hashVersion,"modern"===k.buildTarget?"m":"l",".js"].join(""),O=!1,T=!1;try{c.browserTarget=g,function(){O=!0;try{window.addEventListener("pagehide",M)}catch(e){O=!1}}(),R(function(){try{R(x)}catch(e){D(e)}}),w.emit({status:"loading",requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()})}catch(e){D(e)}}function U(){var e;if(q(),!function(){var e,t;return Boolean(null==(t=null==(e=window.Shopify)?void 0:e.analytics)?void 0:t.initialized)}()){var t,i,n;try{if("function"!=typeof(null==(e=window.webPixelsManager)?void 0:e.init))return void A();if(!(null!==(n=i=t=window.webPixelsManager.init(d))&&"function"!=typeof n&&Object(n)===n&&"publish"in i&&"function"==typeof i.publish&&"publishCustomEvent"in i&&"function"==typeof i.publishCustomEvent&&"visitor"in i&&"function"==typeof i.visitor))return void A()}catch(e){return void A(e)}var r=window.Shopify.analytics;r.replayQueue.forEach(function(e){var i=e[0],n=e[1],r=e[2];t.publishCustomEvent(i,n,r)}),r.replayQueue=[],r.publish=t.publishCustomEvent,r.visitor=t.visitor,r.initialized=!0}}function A(e){B("manager_api_unavailable",void 0===e?void 0:Q(e))}function x(){B("script_load_failed","".concat(I," has failed to load"))}function B(e,t){T||(T=!0,q(),w.emit({status:"failed",errorMsg:t,failureReason:e,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function M(e){O&&(q(),w.emit({status:"pagehide-while-loading",useKeepaliveFallback:!0,pagehidePersisted:e.persisted,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function q(){O=!1;try{window.removeEventListener("pagehide",M)}catch(e){}}function R(e){var t;!function(e){var t=e.src,i=e.async,n=void 0===i||i,r=e.onload,o=e.onerror,a=e.sri,d=e.scriptDataAttributes,s=void 0===d?{}:d,u=document.createElement("script"),l=document.querySelector("head"),c=document.querySelector("body");if(u.async=n,u.src=t,a&&(u.integrity=a,u.crossOrigin="anonymous"),s)for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))try{u.dataset[p]=String(s[p])}catch(e){}if(r&&u.addEventListener("load",r),o&&u.addEventListener("error",o),l)l.appendChild(u);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(u)}}({src:I,async:!0,onload:U,onerror:e,sri:(t=E,"string"==typeof t&&/^sha384-[A-Za-z0-9+/=]+$/.test(t)?E:""),scriptDataAttributes:c})}function D(e){B("script_append_failed",Q(e))}function Q(e){return e instanceof Error?e.message:"Unknown error"}}}();wpmLoader({shopId: 72949498133,storefrontBaseUrl: "https://texaspecancakes.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://texaspecancakes.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b"],webPixelsConfigList: [{"id":"1526792469","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"GT-K8D2BWZC\\\",\\\"GT-P3HVMN59\\\",\\\"G-PCBY7ESBYY\\\"],\\\"target_country\\\":\\\"ZZ\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"MC-XRLM8XY5SY\\\",\\\"G-PCBY7ESBYY\\\"]},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"MC-XRLM8XY5SY\\\",\\\"G-PCBY7ESBYY\\\"]},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"MC-DYLJ1TXRDB\\\",\\\"MC-XRLM8XY5SY\\\",\\\"G-PCBY7ESBYY\\\"]},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"MC-DYLJ1TXRDB\\\",\\\"MC-XRLM8XY5SY\\\",\\\"G-PCBY7ESBYY\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"MC-DYLJ1TXRDB\\\",\\\"MC-XRLM8XY5SY\\\",\\\"G-PCBY7ESBYY\\\"]},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"MC-XRLM8XY5SY\\\",\\\"G-PCBY7ESBYY\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"MC-XRLM8XY5SY\\\",\\\"G-PCBY7ESBYY\\\"]}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"a3321ca85cf5aaf6b57585fcd8d67b3a","type":"APP","apiClientId":1780363,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]}
797,{"id":"1497792789","configuration":"{\"apiURL\":\"https:\/\/api.omnisend.com\",\"appURL\":\"https:\/\/app.omnisend.com\",\"brandID\":\"6a30725b56835e9f83f6c462\",\"trackingURL\":\"https:\/\/wt.omnisendlink.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"1e2b45bbee5b360dff908f60423b89f8","type":"APP","apiClientId":186001,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"1487601941","configuration":"{\"shopId\":\"72949498133\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"83adcaf06c5deacff41ffdf8f92d9129","type":"APP","apiClientId":246667608065,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_phone","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1450737941","configuration":"{\"projectId\":\"wo3b5eq6xe\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"d8a2bb2ccbb513dc8e8b6937f4b8033e","type":"APP","apiClientId":240074326017,"privacyPurposes":[],"capabilities":["advanced_dom_events"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1433698581","configuration":"{\"debug\":\"false\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"a9a83cf44fb282052ff936f7ab101058","type":"APP","apiClientId":4539653,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1432158485","configuration":"{\"environment\":\"production\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"fe4f099d97fe9e8b9fd6dce28e77bbb6","type":"APP","apiClientId":189672226817,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1295417621","configuration":"{\"myshopifyDomain\":\"texas-pecan-cakes.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"23b97d18e2aa74363140dc29c9284e87","type":"APP","apiClientId":2775569,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_phone","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"946995477","configuration":"{\"webPixelName\":\"Judge.me\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"8acc938b1a30dc7624e304493ca567d7","type":"APP","apiClientId":683015,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"809730325","configuration":"{\"clickstreamId\":\"1707cfbd-3700-4865-90aa-4b293f21750d\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"dce0ba162d2ca66f441eebf2b9a98ca0","type":"APP","apiClientId":44186959873,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"786071829","configuration":"{\"pixel_id\":\"201567295871957\",\"pixel_type\":\"facebook_pixel\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"bd2f978c17a94bbb8a74d43de2165dc5","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"538575125","configuration":"{\"pixelCode\":\"CNJ8N03C77UCB9C5IFA0\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"22e92c2ad45662f435e4801458fb78cc","type":"APP","apiClientId":4383523,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Texas Pecan Cakes","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"texas-pecan-cakes.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/texaspecancakes.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[{"id":"8144583229717","handle":"small-cake-6-pack","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44464398074133","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]}],"purchasingCompany":null},},"https://texaspecancakes.com/cdn","87a86122w399bf3b8pd0403c97m2c07468c",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"170709713173","themeStoreId":"1190","themePublished":"true","eventMetadataId":"bcda99ed-b314-4bc4-9803-8fe5eb8a0e77","pageType":"cart","shopId":"72949498133","storefrontBaseUrl":"https:\/\/texaspecancakes.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\"]","isMerchantRequest":"false","hashVersion":"87a86122w399bf3b8pd0403c97m2c07468c","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
797<script> 798 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 799 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 800 window.ShopifyAnalytics.meta.currency = 'USD'; 801 var meta = {"page":{"pageType":"cart","requestId":"755c9f0b-9a79-4bf1-8c61-95d34a94069d-1791389296"}}; 802 for (var attr in meta) { 803 window.ShopifyAnalytics.meta[attr] = meta[attr]; 804 } 805</script>
vendor: 1 bytes, line 805
805
806<script class="analytics"> 807 (function () { 808 var customDocumentWrite = function(content) { 809 var jquery = null; 810 811 if (window.jQuery) { 812 jquery = window.jQuery; 813 } else if (window.Checkout && window.Checkout.$) { 814 jquery = window.Checkout.$; 815 } 816 817 if (jquery) { 818 jquery('body').append(content); 819 } 820 }; 821 822 var hasLoggedConversion = function(token) { 823 if (token) { 824 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 825 } 826 return false; 827 } 828 829 var setCookieIfConversion = function(token) { 830 if (token) { 831 var twoMonthsFromNow = new Date(Date.now()); 832 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 833 834 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 835 } 836 } 837 838 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 839 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 840 if (trekkie.integrations) { 841 return; 842 } 843 trekkie.methods = [ 844 'identify', 845 'page', 846 'ready', 847 'track', 848 'trackForm', 849 'trackLink' 850 ]; 851 trekkie.factory = function(method) { 852 return function() { 853 var args = Array.prototype.slice.call(arguments); 854 args.unshift(method); 855 trekkie.push(args); 856 if (method == 'track' || method == 'page') { 857 var pageUrl; 858 try { 859 pageUrl = window.location.href; 860 } catch (e) {} 861 var pageReferrer; 862 try { 863 pageReferrer = document.referrer; 864 } catch (e) {} 865 try { 866 if (window.__TREKKIE_SHIM_QUEUE == null) { 867 window.__TREKKIE_SHIM_QUEUE = []; 868 } 869 window.__TREKKIE_SHIM_QUEUE.push({ 870 from: 'trekkie-stub', 871 method: method, 872 args: args.slice(1), 873 pageContext: { 874 url: pageUrl, 875 referrer: pageReferrer 876 } 877 }); 878 } catch (e) { 879 // no-op 880 } 881 } 882 return trekkie; 883 }; 884 }; 885 for (var i = 0; i < trekkie.methods.length; i++) { 886 var key = trekkie.methods[i]; 887 trekkie[key] = trekkie.factory(key); 888 } 889 trekkie.load = function(config) { 890 trekkie.config = config || {}; 891 trekkie.config.initialDocumentCookie = document.cookie; 892 var first = document.getElementsByTagName('script')[0]; 893var script = document.createElement('script'); 894script.type = 'text/javascript'; 895script.onerror = function(e) { 896 var scriptFallback = document.createElement('script'); 897 scriptFallback.type = 'text/javascript'; 898 scriptFallback.onerror = function(error) { 899 var Monorail = { 900 produce: function produce(monorailDomain, schemaId, payload) { 901 var currentMs = new Date().getTime(); 902 var event = { 903 schema_id: schemaId, 904 payload: payload, 905 metadata: { 906 event_created_at_ms: currentMs, 907 event_sent_at_ms: currentMs 908 } 909 }; 910 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 911 }, 912 sendRequest: function sendRequest(endpointUrl, payload) { 913 // Try the sendBeacon API 914 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 915 var blobData = new window.Blob([payload], { 916 type: 'text/plain' 917 }); 918 919 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 920 return true; 921 } // sendBeacon was not successful 922 923 } // XHR beacon 924 925 var xhr = new XMLHttpRequest(); 926 927 try { 928 xhr.open('POST', endpointUrl); 929 xhr.setRequestHeader('Content-Type', 'text/plain'); 930 xhr.send(payload); 931 } catch (e) { 932 console.log(e); 933 } 934 935 return false; 936 }, 937 isIos12: function isIos12() { 938 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 939 } 940 }; 941 Monorail.produce('monorail-edge.shopifysvc.com', 942 'trekkie_storefront_load_errors/1.1', 943 {shop_id: 72949498133, 944 theme_id: 170709713173, 945 app_name: "storefront", 946 context_url: window.location.href, 947 source_url: "//texaspecancakes.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js"}); 948 949 }; 950 scriptFallback.async = true; 951 scriptFallback.src = '//texaspecancakes.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js'; 952 first.parentNode.insertBefore(scriptFallback, first); 953}; 954script.async = true; 955script.src = '//texaspecancakes.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js'; 956first.parentNode.insertBefore(script, first); 957 958 }; 959 trekkie.load( 960 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":72949498133,"isMerchantRequest":null,"themeId":170709713173,"themeCityHash":"3597457132344296049","contentLanguage":"en","currency":"USD","eventMetadataId":"bcda99ed-b314-4bc4-9803-8fe5eb8a0e77"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}} 961 ); 962 963 var loaded = false;
964 trekkie.ready(function() { 965 if (loaded) return; 966 loaded = true; 967 968 window.ShopifyAnalytics.lib = window.trekkie; 969 970 var originalDocumentWrite = document.write; 971 document.write = customDocumentWrite; 972 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 973 document.write = originalDocumentWrite; 974 975 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 976 var token = match? match[1]: undefined; 977 if (!hasLoggedConversion(token)) { 978 setCookieIfConversion(token); 979 980 } 981 }); 982 983 window.ShopifyAnalytics.lib.page(null,{"pageType":"cart","requestId":"755c9f0b-9a79-4bf1-8c61-95d34a94069d-1791389296","shopifyEmitted":true}); 984 985 var eventsListenerScript = document.createElement('script'); 986 eventsListenerScript.async = true; 987 eventsListenerScript.src = "//texaspecancakes.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 988 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 989})();</script>
vendor: 1 bytes, line 989
989
990<script 991 defer 992 src="https://texaspecancakes.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.6.min.js" 993 data-application="storefront-renderer" 994 data-shop-id="72949498133" 995 data-render-region="gcp-us-central1" 996 data-page-type="cart" 997 data-theme-instance-id="170709713173" 998 data-theme-name="Impact" 999 data-theme-version="7.2.0" 1000 data-monorail-region="shop_domain" 1001 data-resource-timing-sampling-rate="10" 1002 data-shs="true" 1003 data-shs-beacon="true" 1004 data-shs-export-with-fetch="true" 1005 data-shs-logs-sample-rate="1" 1006 data-shs-beacon-endpoint="https://texaspecancakes.com/api/collect" 1007></script>
vendor: 1 bytes, line 1007
1007
1008<script src="https://cdn.shopify.com/storefront/web-components/account.js" type="module" crossorigin fetchpriority="low" async></script>
1008<script id="shopify-customer-account-data" type="application/json">{"customer":null,"shop":{"id":"72949498133","customerAccountTranslations":[{"key":"account_menu.signed_out_state.sheet_title","value":"Sign in or create account"},{"key":"account_menu.signed_out_state.section_divider","value":"More ways to sign in"},{"key":"account_menu.signed_out_state.alternate_divider","value":"OR"},{"key":"account_menu.signed_out_state.email_field_label","value":"Email"},{"key":"account_menu.signed_out_state.orders_button","value":"Orders"},{"key":"account_menu.signed_out_state.profile_button","value":"Profile"},{"key":"account_menu.signed_out_state.shop_login_button","value":"Sign in with Shop"},{"key":"account_menu.signed_out_state.continue_with_google","value":"Continue with Google"},{"key":"account_menu.signed_out_state.continue_with_facebook","value":"Continue with Facebook"},{"key":"account_menu.signed_out_state.marketing_consent_label","value":"Email me with news and offers"},{"key":"account_menu.signed_in_state.greeting_with_name","value":"Hi, {{first_name}}"},{"key":"account_menu.signed_in_state.greeting_without_name","value":"Account"},{"key":"account_menu.signed_in_state.orders_button","value":"Orders"},{"key":"account_menu.signed_in_state.profile_button","value":"Profile"},{"key":"account_menu.location_picker.sheet_title","value":"Locations"},{"key":"account_menu.location_picker.search_field_placeholder","value":"Search"},{"key":"account_menu.aria_labels.close_menu","value":"Close menu"},{"key":"account_menu.aria_labels.back_to_main_menu","value":"Back to main menu from {{title}}"},{"key":"account_menu.aria_labels.open_submenu","value":"{{title}}, opens submenu"},{"key":"account_menu.aria_labels.loading_menu","value":"Loading menu"},{"key":"account_menu.aria_labels.loading","value":"Loading"},{"key":"account_menu.aria_labels.account","value":"Account"},{"key":"account_menu.aria_labels.sign_in_with_email","value":"Sign in with email"},{"key":"account_menu.aria_labels.sign_in","value":"Sign in"}],"socialLoginProviders":[{"handle":"Shop"}],"legacyCustomerAccounts":false,"signInLinksVisible":true,"b2bEnabled":true,"marketingConsentSigninEnabled":true,"marketingConsentPreselected":true},"visitor":{"country":"US","language":"en"}}</script>
vendor: 1 bytes, line 1008
1008
1009<script id="shopify-chat-page-data" type="application/json">{"greetingMessage":"Welcome to Texas Pecan Cakes. How can I help?","customerServiceEmail":"[email protected]","onlineStorePasswordProtected":false,"continueAsChip":true,"exportCommand":false,"shopName":"Texas Pecan Cakes","translations":[{"key":"agent_chat.panel.open_chat","value":"Open chat"},{"key":"agent_chat.panel.ask_anything","value":"Ask anything"},{"key":"agent_chat.panel.title","value":"Storekick"},{"key":"agent_chat.panel.unread_replies","value":"Unread replies"},{"key":"agent_chat.panel.back_to_chat","value":"Back to chat"},{"key":"agent_chat.panel.see_history","value":"See chat history"},{"key":"agent_chat.panel.new_chat","value":"Create a new chat"},{"key":"agent_chat.panel.close","value":"Close chat"},{"key":"agent_chat.panel.undock","value":"Undock chat"},{"key":"agent_chat.panel.dock","value":"Dock chat"},{"key":"agent_chat.panel.expand","value":"Expand chat"},{"key":"agent_chat.panel.contract","value":"Contract chat"},{"key":"agent_chat.panel.jump_to_latest","value":"Jump to latest"},{"key":"agent_chat.panel.loading_chat","value":"Loading chat"},{"key":"agent_chat.input.label","value":"Type your message"},{"key":"agent_chat.input.placeholder","value":"Ask anything..."},{"key":"agent_chat.input.send","value":"Send"},{"key":"agent_chat.input.stop","value":"Stop generating"},{"key":"agent_chat.thinking","value":"Thinking..."},{"key":"agent_chat.first_response_delayed","value":"Agent is taking longer to respondâ¦"},{"key":"agent_chat.searching","value":"Searching..."},{"key":"agent_chat.message.sent_timestamp","value":"Sent · {{time}}"},{"key":"agent_chat.message.automated_label","value":"Automated"},{"key":"agent_chat.message.automated_timestamp","value":"Automated · {{time}}"},{"key":"agent_chat.liveAgentHandoff","value":"Someone from our team will be with you shortly"},{"key":"agent_chat.human_handoff.action","value":"Chat with our team"},{"key":"agent_chat.human_handoff.request","value":"Iâd like to talk to someone from your team"},{"key":"agent_chat.human_handoff.ai_assistant","value":"AI assistant"},{"key":"agent_chat.greeting.default","value":"Hi there!"},{"key":"agent_chat.greeting.with_name","value":"Hi {{name}}!"},{"key":"agent_chat.greeting.welcome","value":"You can ask questions about shopping, sizing\/dimensions, shipping, returns, or order status."},{"key":"agent_chat.greeting.welcome_back","value":"Welcome back to %{shop_name}! How can I help?"},{"key":"agent_chat.greeting.welcome_back_no_shop","value":"Welcome back! How can I help?"},{"key":"agent_chat.greeting.welcome_to_shop","value":"Welcome to %{shop_name}. How can I help?"},{"key":"agent_chat.greeting.generic","value":"How can I help?"},{"key":"agent_chat.disclaimer.text","value":"This chat is powered by AI from Shopify and may make mistakes. Your messages are visible to {{shop_name}}. See"},{"key":"agent_chat.disclaimer.text_human","value":"Your messages are visible to {{shop_name}} and to Shopify for the provision and improvement of the services. See"},{"key":"agent_chat.disclaimer.link_text","value":"privacy policy"},{"key":"agent_chat.error.response_unavailable","value":"Response unavailable"},{"key":"agent_chat.error.generic","value":"Something went wrong."},{"key":"agent_chat.error.response_failed","value":"Couldnât load this message"},{"key":"agent_chat.error.message_send_failed","value":"Your message couldnât be sent"},{"key":"agent_chat.error.attachment_upload_failed","value":"Your attachment didnât upload"},{"key":"agent_chat.error.first_response_stalled","value":"Agent couldnât respond"},{"key":"agent_chat.error.try_again","value":"Try again"},{"key":"agent_chat.error.unavailable","value":"Chat isn't available right now - try again later"},{"key":"agent_chat.error.usage_limit","value":"Message limit reached â try again later or email us at {{email}}"},{"key":"agent_chat.error.usage_limit_no_email","value":"Message limit reached â try again later"},{"key":"agent_chat.error.cost_quota_unhandled","value":"Chat isnât available right nowâemail us at {{email}}"},{"key":"agent_chat.error.cost_quota_unhandled_no_email","value":"Chat isnât available right now"},{"key":"agent_chat.error.cost_quota_handover","value":"AI assistant isnât available right now â our team will reply shortly"},{"key":"agent_chat.unavailable.title","value":"Chat isnât available right now"},{"key":"agent_chat.unavailable.description","value":"Something went wrong while loading the chat."},{"key":"agent_chat.history.heading","value":"Chat history"},{"key":"agent_chat.history.loading","value":"Loading conversation history"},{"key":"agent_chat.history.aria_label","value":"Conversation history"},{"key":"agent_chat.history.no_conversations","value":"No conversations"},{"key":"agent_chat.history.conversation.one","value":"conversation"},{"key":"agent_chat.history.conversation.other","value":"conversations"},{"key":"agent_chat.history.error_message","value":"Something went wrong."},{"key":"agent_chat.history.try_again","value":"Try again"},{"key":"agent_chat.history.no_past","value":"No past conversations"},{"key":"agent_chat.history.start_new","value":"Start a new chat"},{"key":"agent_chat.history.untitled","value":"Untitled conversation"},{"key":"agent_chat.history.resume","value":"Resume: {{title}}"},{"key":"agent_chat.history.resume_with_time","value":"Resume: {{title}}, {{time}}"},{"key":"agent_chat.history.delete","value":"Delete conversation: {{title}}"},{"key":"agent_chat.history.delete_failed","value":"Could not delete conversation"},{"key":"agent_chat.feedback.group_label","value":"Message feedback"},{"key":"agent_chat.feedback.thumbs_up","value":"Thumbs up"},{"key":"agent_chat.feedback.thumbs_down","value":"Thumbs down"},{"key":"agent_chat.feedback.add_comment","value":"Add comment"},{"key":"agent_chat.feedback.thanks","value":"Thanks for your feedback"},{"key":"agent_chat.feedback.placeholder_up","value":"Tell us what went well"},{"key":"agent_chat.feedback.placeholder_down","value":"Tell us what could have been better"},{"key":"agent_chat.feedback.comment_label","value":"Feedback comment"},{"key":"agent_chat.feedback.cancel","value":"Cancel"},{"key":"agent_chat.feedback.submit","value":"Submit"},{"key":"agent_chat.feedback.character_count","value":"{{current}}\/{{max}}"},{"key":"agent_chat.feedback.character_limit_reached","value":"Maximum length reached. Feedback is limited to {{max}} characters."},{"key":"agent_chat.buyer_profile.button.open","value":"Buyer Profile"},{"key":"agent_chat.buyer_profile.title","value":"Buyer Profile"},{"key":"agent_chat.buyer_profile.empty","value":"No buyer profile available."},{"key":"agent_chat.buyer_profile.close","value":"Close"},{"key":"agent_chat.suggestions.empty_state_label","value":"Suggested questions"},{"key":"agent_chat.suggestions.quick_reply_label","value":"Suggested replies"},{"key":"agent_chat.auth.sign_in_to_continue","value":"Sign in to continue"},{"key":"agent_chat.auth.sign_in","value":"Sign in"},{"key":"agent_chat.auth.skip_and_chat","value":"Skip and start chatting"},{"key":"agent_chat.auth.pre_chat_title","value":"Sign in to personalize and save your chats"},{"key":"agent_chat.auth.pre_chat_subtitle","value":"Sign in or create an account"},{"key":"agent_chat.auth.staff_chat_required_title","value":"Don't miss a reply"},{"key":"agent_chat.auth.staff_chat_required_subtitle","value":"Sign in to chat with our team. We'll email you if you leave the chat."},{"key":"agent_chat.auth.share_disclaimer","value":"By continuing, Shop will share your name and email with this store. See their {{terms_link}} and {{privacy_link}}"},{"key":"agent_chat.auth.terms_link","value":"terms"},{"key":"agent_chat.auth.privacy_link","value":"privacy policy"},{"key":"agent_chat.auth.declined_pre_chat","value":"I canât connect you with the store unless you sign in."},{"key":"agent_chat.reply_by_email.continuation_prompt","value":"If you leave the chat, weâll email you when thereâs a reply."},{"key":"agent_chat.reply_by_email.sign_in_prompt","value":"Sign in to get emailed when thereâs a reply."},{"key":"agent_chat.order_lookup.track_order","value":"Track my order"},{"key":"agent_chat.order_lookup.track_another_order","value":"Track another order"},{"key":"agent_chat.order_lookup.new_conversation","value":"New conversation"},{"key":"agent_chat.order_lookup.follow_up_label","value":"Order lookup actions"},{"key":"agent_chat.order_lookup.enter_order_information","value":"Enter order information"},{"key":"agent_chat.order_lookup.prompt","value":"To see your order status, please provide your order details."},{"key":"agent_chat.order_lookup.form_title","value":"Track my order"},{"key":"agent_chat.order_lookup.form_subtitle","value":"Please provide your information."},{"key":"agent_chat.order_lookup.order_number_label","value":"Order number"},{"key":"agent_chat.order_lookup.email_label","value":"Email address"},{"key":"agent_chat.order_lookup.submit","value":"Track my order"},{"key":"agent_chat.order_lookup.cancel","value":"Cancel"},{"key":"agent_chat.order_lookup.invalid_order_number","value":"Please enter a valid order number with only numbers and letters, no spaces (e.g. 1006)."},{"key":"agent_chat.order_lookup.invalid_order_number_whitespace","value":"Please enter a valid order number with only numbers and letters, no spaces (e.g. 1006)."},{"key":"agent_chat.order_lookup.invalid_email","value":"Please enter a valid email address"},{"key":"agent_chat.order_lookup.generic_error","value":"There was a problem looking up your order. Please try again."},{"key":"agent_chat.order_lookup.rate_limited_error","value":"Too many attempts. Try again later."},{"key":"agent_chat.order_lookup.locked_composer_status","value":"Order lookup is in progress. Start a new conversation to ask something else."},{"key":"agent_chat.legacy_contact.form_title","value":"Before we get started"},{"key":"agent_chat.legacy_contact.form_subtitle","value":"Please provide your information so we can reply to you if you leave the chat."},{"key":"agent_chat.legacy_contact.first_name_label","value":"First name"},{"key":"agent_chat.legacy_contact.last_name_label","value":"Last name"},{"key":"agent_chat.legacy_contact.email_label","value":"Email"},{"key":"agent_chat.legacy_contact.marketing_opt_in","value":"Email me with news and offers"},{"key":"agent_chat.legacy_contact.submit","value":"Start chat"},{"key":"agent_chat.legacy_contact.cancel","value":"Cancel"}
1009,{"key":"agent_chat.legacy_contact.invalid_first_name","value":"Enter a valid first name."},{"key":"agent_chat.legacy_contact.invalid_last_name","value":"Enter a valid last name."},{"key":"agent_chat.legacy_contact.invalid_email","value":"Enter a valid email address."},{"key":"agent_chat.legacy_contact.invalid_email_length","value":"Email address is too long."},{"key":"agent_chat.legacy_contact.generic_error","value":"Something went wrong."},{"key":"agent_chat.legacy_contact.rate_limited_error","value":"Too many attempts. Try again later."},{"key":"agent_chat.discountCard.useDiscount","value":"Use discount"},{"key":"agent_chat.discountCard.discountApplicationContext","value":"Applies automatically at checkout"},{"key":"agent_chat.cart.checkout","value":"Checkout"},{"key":"agent_chat.product.add_to_cart","value":"Add to cart"},{"key":"agent_chat.product.view_details","value":"View details"},{"key":"agent_chat.product.out_of_stock","value":"Out of stock"},{"key":"agent_chat.product.compare_suggestions","value":"Compare suggestions"},{"key":"agent_chat.product.hide_suggestions","value":"Hide suggestions"},{"key":"agent_chat.product.sold_out","value":"Sold out"},{"key":"agent_chat.order.item.one","value":"item"},{"key":"agent_chat.order.item.other","value":"items"},{"key":"agent_chat.order.less_items.one","value":"- hide {{count}} item"},{"key":"agent_chat.order.less_items.other","value":"- hide {{count}} items"},{"key":"agent_chat.order.more_items.one","value":"+ {{count}} more item"},{"key":"agent_chat.order.more_items.other","value":"+ {{count}} more items"},{"key":"agent_chat.order.view_order","value":"View order {{orderId}}"},{"key":"agent_chat.order.track_shipment","value":"Track shipment"},{"key":"agent_chat.order.of_total","value":"{{index}} of {{total}}"},{"key":"agent_chat.order.label","value":"Order {{number}}"},{"key":"agent_chat.order.count.one","value":"{{count}} Order"},{"key":"agent_chat.order.count.other","value":"{{count}} Orders"},{"key":"agent_chat.order.ordered_on","value":"Ordered {{date}}"},{"key":"agent_chat.order.select","value":"Select order {{number}}"},{"key":"agent_chat.return.heading","value":"Select items to return"},{"key":"agent_chat.return.toggle_item","value":"Select {{name}}"},{"key":"agent_chat.return.select_item_non_returnable","value":"{{name}}, not returnable"},{"key":"agent_chat.return.quantity_label","value":"Return quantity"},{"key":"agent_chat.return.reason_label","value":"Reason for return"},{"key":"agent_chat.return.reason_placeholder","value":"Select a reason"},{"key":"agent_chat.return.confirm","value":"Request return"},{"key":"agent_chat.return.confirmed","value":"Return requested"},{"key":"agent_chat.return.reason.size_too_small","value":"Size too small"},{"key":"agent_chat.return.reason.size_too_large","value":"Size too large"},{"key":"agent_chat.return.reason.unwanted","value":"Unwanted"},{"key":"agent_chat.return.reason.not_as_described","value":"Not as described"},{"key":"agent_chat.return.reason.wrong_item","value":"Wrong item"},{"key":"agent_chat.return.reason.defective","value":"Defective"},{"key":"agent_chat.return.reason.style","value":"Style"},{"key":"agent_chat.return.reason.color","value":"Color"},{"key":"agent_chat.return.reason.other_reason","value":"Other"},{"key":"agent_chat.scroll.previous","value":"Previous"},{"key":"agent_chat.scroll.next","value":"Next"}]}</script>
1009 1010<meta name="shopify-y" content="86c2620e-b76f-45fa-862c-2a40de9c7d0e" data-expiration="1822946896000"><meta name="shopify-s" content="f63a87af-dfd2-4015-b9f9-3e07a991693a" data-expiration="1791391096000"><meta name="new-cookie-storage-activated" content="t"> 1011</head> 1012 1013 <body class="zoom-image--enabled"><!-- DRAWER --> 1014<template id="drawer-default-template"> 1015 <style> 1016 [hidden] { 1017 display: none !important; 1018 } 1019 </style> 1020 1021 <button part="outside-close-button" is="close-button" aria-label="Close"><svg 1022 role="presentation" 1023 stroke-width="2" 1024 focusable="false" 1025 width="24" 1026 height="24" 1027 class="icon icon-close" 1028 viewBox="0 0 24 24" 1029 > 1030 <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path> 1031 </svg></button> 1032 1033 <div part="overlay"></div> 1034 1035 <div part="content"> 1036 <header part="header"> 1037 <slot name="header"></slot> 1038 1039 <button part="close-button" is="close-button" aria-label="Close"><svg 1040 role="presentation" 1041 stroke-width="2" 1042 focusable="false" 1043 width="24" 1044 height="24" 1045 class="icon icon-close" 1046 viewBox="0 0 24 24" 1047 > 1048 <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path> 1049 </svg></button> 1050 </header> 1051 1052 <div part="body"> 1053 <slot></slot> 1054 </div> 1055 1056 <footer part="footer"> 1057 <slot name="footer"></slot> 1058 </footer> 1059 </div> 1060</template> 1061 1062<!-- POPOVER --> 1063<template id="popover-default-template"> 1064 <button part="outside-close-button" is="close-button" aria-label="Close"><svg 1065 role="presentation" 1066 stroke-width="2" 1067 focusable="false" 1068 width="24" 1069 height="24" 1070 class="icon icon-close" 1071 viewBox="0 0 24 24" 1072 > 1073 <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path> 1074 </svg></button> 1075 1076 <div part="overlay"></div> 1077 1078 <div part="content"> 1079 <header part="title"> 1080 <slot name="title"></slot> 1081 </header> 1082 1083 <div part="body"> 1084 <slot></slot> 1085 </div> 1086 </div> 1087</template> 1088<a href="#main" class="skip-to-content sr-only">Skip to content</a><div class="sr-only" role="status" aria-live="polite" aria-atomic="true"> 1089 <span id="status-announcement"></span> 1090 </div> 1091 1092 <div class="sr-only" role="alert" aria-live="assertive" aria-atomic="true"> 1093 <span id="error-announcement"></span> 1094 </div><!-- BEGIN sections: header-group --> 1095<aside id="shopify-section-sections--23474687967509__announcement-bar" class="shopify-section shopify-section-group-header-group shopify-section--announcement-bar"><style> 1096 :root { 1097 --sticky-announcement-bar-enabled:1; 1098 }#shopify-section-sections--23474687967509__announcement-bar { 1099 position: sticky; 1100 top: 0; 1101 z-index: 20; 1102 } 1103 1104 .shopify-section--header ~ #shopify-section-sections--23474687967509__announcement-bar { 1105 top: calc(var(--sticky-header-enabled, 0) * var(--header-height, 0px)); 1106 }</style><height-observer variable="announcement-bar"> 1107 <div 1108 class="announcement-bar bg-custom text-custom"style="--background: 0 40 104; --text-color: 255 255 255;" 1109 ><marquee-text scrolling-speed="11" class="announcement-bar__scrolling-list"><span 1110 class="announcement-bar__item" 1111 1112 ><p class="bold text-lg" ><a href="/collections/all">ð FREE Nationwide Shipping on cake orders over $50</a></p> 1113 1114 <span class="shape-circle shape--sm"></span><p class="bold text-lg" ><a href="/collections/all">SAVE 15% on Small 4 & 6-Packs!</a></p> 1115 1116 <span class="shape-circle shape--sm"></span></span><span 1117 class="announcement-bar__item" 1118 1119 aria-hidden="true" 1120 1121 ><p class="bold text-lg" ><a href="/collections/all">ð FREE Nationwide Shipping on cake orders over $50</a></p> 1122 1123 <span class="shape-circle shape--sm"></span><p class="bold text-lg" ><a href="/collections/all">SAVE 15% on Small 4 & 6-Packs!</a></p> 1124
1125 <span class="shape-circle shape--sm"></span></span><span 1126 class="announcement-bar__item" 1127 1128 aria-hidden="true" 1129 1130 ><p class="bold text-lg" ><a href="/collections/all">ð FREE Nationwide Shipping on cake orders over $50</a></p> 1131 1132 <span class="shape-circle shape--sm"></span><p class="bold text-lg" ><a href="/collections/all">SAVE 15% on Small 4 & 6-Packs!</a></p> 1133 1134 <span class="shape-circle shape--sm"></span></span><span 1135 class="announcement-bar__item" 1136 1137 aria-hidden="true" 1138 1139 ><p class="bold text-lg" ><a href="/collections/all">ð FREE Nationwide Shipping on cake orders over $50</a></p> 1140 1141 <span class="shape-circle shape--sm"></span><p class="bold text-lg" ><a href="/collections/all">SAVE 15% on Small 4 & 6-Packs!</a></p> 1142 1143 <span class="shape-circle shape--sm"></span></span><span 1144 class="announcement-bar__item" 1145 1146 aria-hidden="true" 1147 1148 ><p class="bold text-lg" ><a href="/collections/all">ð FREE Nationwide Shipping on cake orders over $50</a></p> 1149 1150 <span class="shape-circle shape--sm"></span><p class="bold text-lg" ><a href="/collections/all">SAVE 15% on Small 4 & 6-Packs!</a></p> 1151 1152 <span class="shape-circle shape--sm"></span></span><span 1153 class="announcement-bar__item" 1154 1155 aria-hidden="true" 1156 1157 ><p class="bold text-lg" ><a href="/collections/all">ð FREE Nationwide Shipping on cake orders over $50</a></p> 1158 1159 <span class="shape-circle shape--sm"></span><p class="bold text-lg" ><a href="/collections/all">SAVE 15% on Small 4 & 6-Packs!</a></p> 1160 1161 <span class="shape-circle shape--sm"></span></span><span 1162 class="announcement-bar__item" 1163 1164 aria-hidden="true" 1165 1166 ><p class="bold text-lg" ><a href="/collections/all">ð FREE Nationwide Shipping on cake orders over $50</a></p> 1167 1168 <span class="shape-circle shape--sm"></span><p class="bold text-lg" ><a href="/collections/all">SAVE 15% on Small 4 & 6-Packs!</a></p> 1169 1170 <span class="shape-circle shape--sm"></span></span><span 1171 class="announcement-bar__item" 1172 1173 aria-hidden="true" 1174 1175 ><p class="bold text-lg" ><a href="/collections/all">ð FREE Nationwide Shipping on cake orders over $50</a></p> 1176 1177 <span class="shape-circle shape--sm"></span><p class="bold text-lg" ><a href="/collections/all">SAVE 15% on Small 4 & 6-Packs!</a></p> 1178 1179 <span class="shape-circle shape--sm"></span></span><span 1180 class="announcement-bar__item" 1181 1182 aria-hidden="true" 1183 1184 ><p class="bold text-lg" ><a href="/collections/all">ð FREE Nationwide Shipping on cake orders over $50</a></p> 1185 1186 <span class="shape-circle shape--sm"></span><p class="bold text-lg" ><a href="/collections/all">SAVE 15% on Small 4 & 6-Packs!</a></p> 1187 1188 <span class="shape-circle shape--sm"></span></span><span 1189 class="announcement-bar__item" 1190 1191 aria-hidden="true" 1192 1193 ><p class="bold text-lg" ><a href="/collections/all">ð FREE Nationwide Shipping on cake orders over $50</a></p> 1194 1195 <span class="shape-circle shape--sm"></span><p class="bold text-lg" ><a href="/collections/all">SAVE 15% on Small 4 & 6-Packs!</a></p> 1196 1197 <span class="shape-circle shape--sm"></span></span></marquee-text></div> 1198 </height-observer> 1199 1200
1200<script> 1201 document.documentElement.style.setProperty('--announcement-bar-height', Math.round(document.getElementById('shopify-section-sections--23474687967509__announcement-bar').clientHeight) + 'px'); 1202 </script>
1202 1203</aside><header id="shopify-section-sections--23474687967509__header" class="shopify-section shopify-section-group-header-group shopify-section--header"><style> 1204 :root { 1205 --sticky-header-enabled:0; 1206 } 1207 1208 #shopify-section-sections--23474687967509__header { 1209 --header-grid-template: "main-nav logo secondary-nav" / minmax(0, 1fr) auto minmax(0, 1fr); 1210 --header-padding-block: var(--spacing-3); 1211 --header-background-opacity: 0.4; 1212 --header-background-blur-radius: 10px; 1213 --header-transparent-text-color: 0 40 104;--header-logo-width: 25px; 1214 --header-logo-height: 25px;position: relative; 1215 top: 0; 1216 z-index: 10; 1217 }@media screen and (min-width: 700px) { 1218 #shopify-section-sections--23474687967509__header {--header-logo-width: 110px; 1219 --header-logo-height: 110px;--header-padding-block: var(--spacing-6); 1220 } 1221 }@media screen and (min-width: 1150px) {#shopify-section-sections--23474687967509__header { 1222 --header-grid-template: "logo main-nav secondary-nav" / minmax(0, 1fr) fit-content(70%) minmax(0, 1fr); 1223 } 1224 }</style> 1225 1226<height-observer variable="header"> 1227 <store-header 1228 class="header" 1229 1230 hide-on-scroll="100" 1231 1232 1233 > 1234 <div class="header__wrapper"><div class="header__main-nav"> 1235 <div class="header__icon-list"> 1236 <button type="button" class="tap-area lg:hidden" aria-controls="header-sidebar-menu"> 1237 <span class="sr-only">Menu</span><svg 1238 role="presentation" 1239 stroke-width="1.5" 1240 focusable="false" 1241 width="22" 1242 height="22" 1243 class="icon icon-hamburger" 1244 viewBox="0 0 22 22" 1245 > 1246 <path d="M1 5h20M1 11h20M1 17h20" stroke="currentColor" stroke-linecap="round"></path> 1247 </svg></button> 1248 1249 <a href="/search" class="tap-area sm:hidden" aria-controls="search-drawer"> 1250 <span class="sr-only">Search</span><svg 1251 role="presentation" 1252 stroke-width="1.5" 1253 focusable="false" 1254 width="22" 1255 height="22" 1256 class="icon icon-search" 1257 viewBox="0 0 22 22" 1258 > 1259 <circle cx="11" cy="10" r="7" fill="none" stroke="currentColor"></circle> 1260 <path d="m16 15 3 3" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path> 1261 </svg></a><nav class="header__link-list justify-center wrap" role="navigation"> 1262 <ul class="contents" role="list"> 1263 1264 <li><a 1265 href="/" 1266 class="bold link-faded-reverse" 1267 1268 >HOME</a></li> 1269 1270 <li><a 1271 href="/collections" 1272 class="bold link-faded-reverse" 1273 1274 >CAKES & GIFTS</a></li> 1275 1276 <li><a 1277 href="/collections/bulk-orders" 1278 class="bold link-faded-reverse" 1279 1280 >BULK EVENT CASES</a></li> 1281 1282 <li><a 1283 href="https://texaspecancakes.faire.com?utm_source=embed" 1284 class="bold link-faded-reverse" 1285 1286 >WHOLESALE</a></li> 1287 1288 <li><a 1289 href="/pages/faq-about-pecan-cakes" 1290 class="bold link-faded-reverse" 1291 1292 >FAQ</a></li> 1293 1294 <li><a 1295 href="/pages/locations" 1296 class="bold link-faded-reverse" 1297 1298 >LOCATIONS</a></li></ul> 1299 </nav></div> 1300 </div> 1301 <a href="/" class="header__logo"><span class="sr-only">Texas Pecan Cakes</span><img src="//texaspecancakes.com/cdn/shop/files/Texas_Pecan_Cakes_Logo_Round_Trans_2025.png?v=1744857432&width=500" alt="Texas_Pecan_Cakes_Logo_Round_Trans_2025" srcset="//texaspecancakes.com/cdn/shop/files/Texas_Pecan_Cakes_Logo_Round_Trans_2025.png?v=1744857432&width=220 220w, //texaspecancakes.com/cdn/shop/files/Texas_Pecan_Cakes_Logo_Round_Trans_2025.png?v=1744857432&width=330 330w" width="500" height="500" sizes="110px" class="header__logo-image"><img src="//texaspecancakes.com/cdn/shop/files/Texas_Pecan_Cakes_Logo_Round_Trans_2025.png?v=1744857432&width=500" alt="Texas_Pecan_Cakes_Logo_Round_Trans_2025" srcset="//texaspecancakes.com/cdn/shop/files/Texas_Pecan_Cakes_Logo_Round_Trans_2025.png?v=1744857432&width=220 220w, //texaspecancakes.com/cdn/shop/files/Texas_Pecan_Cakes_Logo_Round_Trans_2025.png?v=1744857432&width=330 330w" width="500" height="500" sizes="110px" class="header__logo-image header__logo-image--transparent"></a> 1302 1303<div class="header__secondary-nav"><ul class="header__icon-list"><li> 1304 <a href="/search" class="hidden tap-area sm:block" aria-controls="search-drawer">
1305 <span class="sr-only">Search</span><svg 1306 role="presentation" 1307 stroke-width="1.5" 1308 focusable="false" 1309 width="22" 1310 height="22" 1311 class="icon icon-search" 1312 viewBox="0 0 22 22" 1313 > 1314 <circle cx="11" cy="10" r="7" fill="none" stroke="currentColor"></circle> 1315 <path d="m16 15 3 3" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path> 1316 </svg></a> 1317 </li><li> 1318 <shopify-store store-domain="https://texaspecancakes.com" country="US" language="en"></shopify-store> 1319<shopify-account class="hidden sm:block" menu="customer-account-main-menu"> 1320 <div slot="signed-out-avatar" class="tap-area"> 1321 <span class="sr-only">Login</span><svg 1322 role="presentation" 1323 stroke-width="1.5" 1324 focusable="false" 1325 width="22" 1326 height="22" 1327 class="icon icon-account" 1328 viewBox="0 0 22 22" 1329 > 1330 <circle cx="11" cy="7" r="4" fill="none" stroke="currentColor"></circle> 1331 <path d="M3.5 19c1.421-2.974 4.247-5 7.5-5s6.079 2.026 7.5 5" fill="none" stroke="currentColor" stroke-linecap="round"></path> 1332 </svg></div> 1333 </shopify-account> 1334 </li><li> 1335 <a 1336 href="/cart" 1337 data-no-instant 1338 class="relative block tap-area" 1339 1340 > 1341 <span class="sr-only">Cart</span><svg 1342 role="presentation" 1343 stroke-width="1.5" 1344 focusable="false" 1345 width="22" 1346 height="22" 1347 class="icon icon-cart"
1348 viewBox="0 0 22 22" 1349 > 1350 <path d="M9.182 18.454a.91.91 0 1 1-1.818 0 .91.91 0 0 1 1.818 0Zm7.272 0a.91.91 0 1 1-1.818 0 .91.91 0 0 1 1.819 0Z" fill="currentColor"></path> 1351 <path d="M5.336 6.636H21l-3.636 8.182H6.909L4.636 3H1m8.182 15.454a.91.91 0 1 1-1.818 0 .91.91 0 0 1 1.818 0Zm7.272 0a.91.91 0 1 1-1.818 0 .91.91 0 0 1 1.819 0Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path> 1352 </svg><div class="header__cart-count"> 1353 <cart-count class="count-bubble opacity-0"> 1354 <span class="sr-only">0 items</span> 1355 <span aria-hidden="true">0</span> 1356 </cart-count> 1357 </div> 1358 </a> 1359 </li> 1360 </ul> 1361 </div> 1362 </div> 1363 </store-header> 1364</height-observer><navigation-drawer 1365 mobile-opening="bottom" 1366 open-from="left" 1367 id="header-sidebar-menu" 1368 class="navigation-drawer drawer lg:hidden" 1369 1370 > 1371 <button 1372 is="close-button" 1373 aria-label="Close"class="sm-max:hidden"><svg 1374 role="presentation" 1375 stroke-width="2" 1376 focusable="false" 1377 width="19" 1378 height="19" 1379 class="icon icon-close" 1380 viewBox="0 0 24 24" 1381 > 1382 <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path> 1383 </svg></button><div class="panel-list__wrapper"> 1384 <div class="panel"> 1385 <div 1386 class="panel__wrapper" 1387 1388 > 1389 <div class="panel__scroller v-stack gap-8"><ul class="v-stack gap-4"> 1390<li class="h3 sm:h4"><a href="/" class="group block w-full"> 1391 <span 1392 ><span class="reversed-link">HOME</span></span 1393 > 1394 </a></li> 1395<li class="h3 sm:h4"><a href="/collections" class="group block w-full"> 1396 <span 1397 ><span class="reversed-link">CAKES & GIFTS</span></span 1398 > 1399 </a></li> 1400<li class="h3 sm:h4"><a href="/collections/bulk-orders" class="group block w-full"> 1401 <span 1402 ><span class="reversed-link">BULK EVENT CASES</span></span 1403 > 1404 </a></li> 1405<li class="h3 sm:h4"><a href="https://texaspecancakes.faire.com?utm_source=embed" class="group block w-full"> 1406 <span 1407 ><span class="reversed-link">WHOLESALE</span></span 1408 > 1409 </a></li> 1410<li class="h3 sm:h4"><a href="/pages/faq-about-pecan-cakes" class="group block w-full"> 1411 <span 1412 ><span class="reversed-link">FAQ</span></span 1413 > 1414 </a></li> 1415<li class="h3 sm:h4"><a href="/pages/locations" class="group block w-full"> 1416 <span 1417 ><span class="reversed-link">LOCATIONS</span></span 1418 > 1419 </a></li></ul></div><div class="panel-footer v-stack gap-5"><ul class="social-media " role="list"><li> 1420 <a href="https://www.facebook.com/TexasPecanCakes" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Facebook"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-facebook" viewBox="0 0 24 24"> 1421 <path fill-rule="evenodd" clip-rule="evenodd" d="M10.183 21.85v-8.868H7.2V9.526h2.983V6.982a4.17 4.17 0 0 1 4.44-4.572 22.33 22.33 0 0 1 2.667.144v3.084h-1.83a1.44 1.44 0 0 0-1.713 1.68v2.208h3.423l-.447 3.456h-2.97v8.868h-3.57Z" fill="currentColor"/> 1422 </svg></a> 1423 </li><li> 1424 <a href="https://twitter.com/texaspecancakes" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Twitter"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-twitter" viewBox="0 0 24 24"> 1425 <path d="M16.94 4h2.715l-5.93 6.777L20.7 20h-5.462l-4.278-5.593L6.065 20H3.35l6.342-7.25L3 4h5.6l3.868 5.113L16.94 4Zm-.952 14.375h1.504L7.784 5.54H6.17l9.818 12.836Z" fill="currentColor"/> 1426 </svg></a> 1427 </li><li> 1428 <a href="https://www.instagram.com/texaspecancakes/" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Instagram"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-instagram" viewBox="0 0 24 24"> 1429 <path fill-rule="evenodd" clip-rule="evenodd" d="M12 2.4c-2.607 0-2.934.011-3.958.058-1.022.046-1.72.209-2.33.446a4.705 4.705 0 0 0-1.7 1.107 4.706 4.706 0 0 0-1.108 1.7c-.237.611-.4 1.31-.446 2.331C2.41 9.066 2.4 9.392 2.4 12c0 2.607.011 2.934.058 3.958.046 1.022.209 1.72.446 2.33a4.706 4.706 0 0 0 1.107 1.7c.534.535 1.07.863 1.7 1.108.611.237 1.309.4 2.33.446 1.025.
1429047 1.352.058 3.959.058s2.934-.011 3.958-.058c1.022-.046 1.72-.209 2.33-.446a4.706 4.706 0 0 0 1.7-1.107 4.706 4.706 0 0 0 1.108-1.7c.237-.611.4-1.31.446-2.33.047-1.025.058-1.352.058-3.959s-.011-2.934-.058-3.958c-.047-1.022-.209-1.72-.446-2.33a4.706 4.706 0 0 0-1.107-1.7 4.705 4.705 0 0 0-1.7-1.108c-.611-.237-1.31-.4-2.331-.446C14.934 2.41 14.608 2.4 12 2.4Zm0 1.73c2.563 0 2.867.01 3.88.056.935.042 1.443.199 1.782.33.448.174.768.382 1.104.718.336.336.544.656.718 1.104.131.338.287.847.33 1.783.046 1.012.056 1.316.056 3.879 0 2.563-.01 2.867-.056 3.88-.043.935-.199 1.444-.33 1.782a2.974 2.974 0 0 1-.719 1.104 2.974 2.974 0 0 1-1.103.718c-.339.131-.847.288-1.783.33-1.012.046-1.316.056-3.88.056-2.563 0-2.866-.01-3.878-.056-.936-.042-1.445-.199-1.783-.33a2.974 2.974 0 0 1-1.104-.718 2.974 2.974 0 0 1-.718-1.104c-.131-.338-.288-.847-.33-1.783-.047-1.012-.056-1.316-.056-3.879 0-2.563.01-2.867.056-3.88.042-.935.199-1.443.33-1.782.174-.448.382-.768.718-1.104a2.974 2.974 0 0 1 1.104-.718c.338-.131.847-.288 1.783-.33C9.133 4.14 9.437 4.13 12 4.13Zm0 11.07a3.2 3.2 0 1 1 0-6.4 3.2 3.2 0 0 1 0 6.4Zm0-8.13a4.93 4.93 0 1 0 0 9.86 4.93 4.93 0 0 0 0-9.86Zm6.276-.194a1.152 1.152 0 1 1-2.304 0 1.152 1.152 0 0 1 2.304 0Z" fill="currentColor"/> 1430 </svg></a> 1431 </li><li> 1432 <a href="https://www.pinterest.com/texaspecancakes" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Pinterest"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-pinterest" viewBox="0 0 24 24"> 1433 <path fill-rule="evenodd" clip-rule="evenodd" d="M11.765 2.401c3.59-.054 5.837 1.4 6.895 3.95.349.842.722 2.39.442 3.675-.112.512-.144 1.048-.295 1.53-.308.983-.708 1.853-1.238 2.603-.72 1.02-1.81 1.706-3.182 2.052-1.212.305-2.328-.152-2.976-.643-.206-.156-.483-.36-.56-.643h-.029c-.046.515-.244 1.062-.383 1.531-.193.65-.23 1.321-.472 1.929a12.345 12.345 0 0 1-.942 1.868c-.184.302-.692 1.335-1.061 1.347-.04-.078-.057-.108-.06-.245-.118-.19-.035-.508-.087-.766-.082-.4-.145-1.123-.06-1.53v-.643c.096-.442.092-.894.207-1.317.25-.92.39-1.895.648-2.848.249-.915.477-1.916.678-2.847.045-.21-.21-.815-.265-1.041-.174-.713-.042-1.7.176-2.236.275-.674 1.08-1.703 2.122-1.439.838.212 1.371 1.118 1.09 2.266-.295 1.205-.677 2.284-.943 3.49-.068.311.05.641.118.827.248.672 1 1.324 2.004 1.072 1.52-.383 2.193-1.76 2.652-3.246.124-.402.109-.781.206-1.225.204-.935.118-2.331-.177-3.061-.472-1.17-1.353-1.92-2.563-2.328L12.707 4.3c-.56-.128-1.626.064-2.004.183-1.69.535-2.737 1.427-3.388 3.032-.222.546-.344 1.1-.383 1.868l-.03.276c.13.686.144 1.14.413 1.653.132.252.447.451.5.765.032.185-.104.464-.147.613-.065.224-.041.48-.147.673-.192.349-.714.087-.943-.061-1.192-.77-2.175-2.995-1.62-5.144.085-.332.09-.62.206-.919.723-1.844 1.802-2.978 3.359-3.95.583-.364 1.37-.544 2.092-.734l1.149-.154Z" fill="currentColor"/> 1434 </svg></a> 1435 </li><li> 1436 <a href="https://www.tiktok.com/@texaspecancakes" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on TikTok"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-tiktok" viewBox="0 0 24 24"> 1437 <path d="M20.027 10.168a5.125 5.125 0 0 1-4.76-2.294v7.893a5.833 5.833 0 1 1-5.834-5.834c.122 0 .241.011.361.019v2.874c-.12-.014-.237-.036-.36-.036a2.977 2.977 0 0 0 0 5.954c1.644 0 3.096-1.295 3.096-2.94L12.56 2.4h2.75a5.122 5.122 0 0 0 4.72 4.573v3.195" fill="currentColor"/> 1438 </svg></a> 1439 </li><li> 1440 <a href="https://www.linkedin.com/company/texas-pecan-cakes/?viewAsMember=true" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on LinkedIn"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-linkedin" viewBox="0 0 24 24"> 1441 <path fill-rule="evenodd" clip-rule="evenodd" d="M7.349 5.478a1.875 1.875 0 1 0-3.749 0 1.875 1.875 0 1 0 3.749 0ZM7.092 19.2H3.857V8.78h3.235V19.2ZM12.22 8.78H9.121V19.2h3.228v-5.154c0-1.36.257-2.676 1.94-2.676 1.658 0 1.68 1.554 1.68 2.763V19.2H19.2v-5.715c0-2.806-.605-4.963-3.877-4.963-1.573 0-2.629.863-3.06 1.683h-.044V8.78Z" fill="currentColor"/> 1442 </svg></a> 1443 </li></ul><div class="panel-footer__localization-wrapper h-stack gap-6 border-t md:hidden"><shopify-account menu="customer-account-main-menu"> 1444 <div slot="signed-out-avatar" class="tap-area">
1445 <span class="panel-footer__account-link bold text-sm">Account</span> 1446 </div> 1447 </shopify-account></div></div></div> 1448 </div></div> 1449</navigation-drawer>
1449<script> 1450 document.documentElement.style.setProperty('--header-height', Math.round(document.getElementById('shopify-section-sections--23474687967509__header').clientHeight) + 'px'); 1451</script>
1451 1452 1453 1454<style> #shopify-section-sections--23474687967509__header .header__main-nav .header__link-list a {font-size: 20px !important; padding: 0 2px !important; white-space: nowrap !important;} </style></header><section id="shopify-section-sections--23474687967509__blocks_8kqYft" class="shopify-section shopify-section-group-header-group shopify-section--blocks"> 1455</section> 1456<!-- END sections: header-group --><!-- BEGIN sections: overlay-group --> 1457<div id="shopify-section-sections--23474688000277__privacy-banner" class="shopify-section shopify-section-group-overlay-group shopify-section--privacy-banner"><privacy-bar class="privacy-bar" hidden> 1458 <div class="privacy-bar__inner"> 1459 <button type="button" class="privacy-bar__close" data-action="close"> 1460 <span class="sr-only">Close</span><svg 1461 role="presentation" 1462 stroke-width="2" 1463 focusable="false" 1464 width="10" 1465 height="10" 1466 class="icon icon-delete" 1467 viewBox="0 0 10 10" 1468 > 1469 <path d="m.757.757 8.486 8.486m-8.486 0L9.243.757" stroke="currentColor" ></path> 1470 </svg></button> 1471 1472 <div class="v-stack gap-4"> 1473 <div class="v-stack gap-2"><p class="bold">Privacy & Cookie Consent</p><div class="prose text-xs"><p>We use cookies to improve your experience on our site, to analyze traffic, and to personalize content. By clicking âAccept All,â you consent to our use of cookies. You can manage your preferences or learn more in our Cookie Policy.</p></div></div> 1474 1475 <div class="h-stack gap-2"> 1476 <button type="button" class="button button--sm" data-action="accept">Accept</button> 1477 <button type="button" class="button button--sm button--subdued" data-action="decline">Decline</button> 1478 </div> 1479 </div> 1480 </div> 1481</privacy-bar> 1482 1483 1484</div><div id="shopify-section-sections--23474688000277__search-drawer" class="shopify-section shopify-section-group-overlay-group"><search-drawer 1485 1486 class="search-drawer drawer drawer--lg" 1487 id="search-drawer" 1488> 1489 <form action="/search" method="get" class="v-stack gap-5 sm:gap-8" role="search"> 1490 <div class="search-input"> 1491 <input 1492 type="search" 1493 name="q" 1494 placeholder="Search for..." 1495 autocomplete="off" 1496 autocorrect="off" 1497 autocapitalize="off" 1498 spellcheck="false" 1499 aria-label="Search" 1500 > 1501 <button type="reset" class="text-subdued">Clear</button> 1502 <button type="button" is="close-button"> 1503 <span class="sr-only">Close</span><svg 1504 role="presentation" 1505 stroke-width="2" 1506 focusable="false" 1507 width="24" 1508 height="24" 1509 class="icon icon-close" 1510 viewBox="0 0 24 24" 1511 > 1512 <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path> 1513 </svg></button> 1514 </div> 1515 1516 <predictive-search class="predictive-search" section-id="sections--23474688000277__search-drawer"><div slot="results"></div> 1517 1518 <div slot="loading"> 1519 <div class="v-stack gap-5 sm:gap-6 "> 1520 <div class="h-stack gap-4 sm:gap-5"><span class="skeleton skeleton--tab"></span><span class="skeleton skeleton--tab"></span><span class="skeleton skeleton--tab"></span></div> 1521 1522 <div class="v-stack gap-4 sm:gap-6"><div class="h-stack align-center gap-5 sm:gap-6"> 1523 <span class="skeleton skeleton--thumbnail"></span> 1524 1525 <div class="v-stack gap-3 w-full"> 1526 <span class="skeleton skeleton--text" style="--skeleton-text-width: 20%"></span> 1527 <span class="skeleton skeleton--text" style="--skeleton-text-width: 80%"></span> 1528 <span class="skeleton skeleton--text" style="--skeleton-text-width: 40%"></span> 1529 </div> 1530 </div><div class="h-stack align-center gap-5 sm:gap-6"> 1531 <span class="skeleton skeleton--thumbnail"></span> 1532 1533 <div class="v-stack gap-3 w-full"> 1534 <span class="skeleton skeleton--text" style="--skeleton-text-width: 20%"></span> 1535 <span class="skeleton skeleton--text" style="--skeleton-text-width: 80%"></span>
1536 <span class="skeleton skeleton--text" style="--skeleton-text-width: 40%"></span> 1537 </div> 1538 </div><div class="h-stack align-center gap-5 sm:gap-6"> 1539 <span class="skeleton skeleton--thumbnail"></span> 1540 1541 <div class="v-stack gap-3 w-full"> 1542 <span class="skeleton skeleton--text" style="--skeleton-text-width: 20%"></span> 1543 <span class="skeleton skeleton--text" style="--skeleton-text-width: 80%"></span> 1544 <span class="skeleton skeleton--text" style="--skeleton-text-width: 40%"></span> 1545 </div> 1546 </div><div class="h-stack align-center gap-5 sm:gap-6"> 1547 <span class="skeleton skeleton--thumbnail"></span> 1548 1549 <div class="v-stack gap-3 w-full"> 1550 <span class="skeleton skeleton--text" style="--skeleton-text-width: 20%"></span> 1551 <span class="skeleton skeleton--text" style="--skeleton-text-width: 80%"></span> 1552 <span class="skeleton skeleton--text" style="--skeleton-text-width: 40%"></span> 1553 </div> 1554 </div></div> 1555 </div></div> 1556 </predictive-search> 1557 </form> 1558</search-drawer> 1559 1560 1561</div> 1562<!-- END sections: overlay-group --><main role="main" id="main" class="anchor"> 1563 <section id="shopify-section-template--23474687312149__main" class="shopify-section shopify-section--main-cart"><div class="container"><div class="empty-state"> 1564 <div class="empty-state__icon-wrapper"><svg 1565 role="presentation" 1566 stroke-width="1" 1567 focusable="false" 1568 width="32" 1569 height="32" 1570 class="icon icon-cart"
1571 viewBox="0 0 22 22" 1572 > 1573 <path d="M9.182 18.454a.91.91 0 1 1-1.818 0 .91.91 0 0 1 1.818 0Zm7.272 0a.91.91 0 1 1-1.818 0 .91.91 0 0 1 1.819 0Z" fill="currentColor"></path> 1574 <path d="M5.336 6.636H21l-3.636 8.182H6.909L4.636 3H1m8.182 15.454a.91.91 0 1 1-1.818 0 .91.91 0 0 1 1.818 0Zm7.272 0a.91.91 0 1 1-1.818 0 .91.91 0 0 1 1.819 0Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path> 1575 </svg><span class="count-bubble count-bubble--lg">0</span> 1576 </div> 1577 1578 <div class="prose"> 1579 <p class="h4">Your cart is empty</p> 1580<a class="button button--xl" 1581 1582 1583 1584 1585 1586 href="/collections/all" 1587 1588 1589 >Continue shopping</a></div> 1590 </div></div> 1591 1592 1593</section><section id="shopify-section-template--23474687312149__1780939232475393b6" class="shopify-section shopify-section--apps"> 1594</section> 1595<!-- BEGIN sections: footer-group --> 1596<section id="shopify-section-sections--23474687934741__text-with-icons" class="shopify-section shopify-section-group-footer-group shopify-section--text-with-icons"><style> 1597 #shopify-section-sections--23474687934741__text-with-icons { 1598 --section-background-hash: 092762003780500609696000570401054; 1599 } 1600 1601 #shopify-section-sections--23474687934741__text-with-icons + * { 1602 --previous-section-background-hash: 092762003780500609696000570401054; 1603 }</style> 1604<style> 1605 #shopify-section-sections--23474687934741__text-with-icons { 1606 --text-with-icons-template: minmax(0, 1fr); 1607 --text-with-icons-justify: center; 1608 --text-with-icons-text-align: center; 1609 --text-with-icons-gap: var(--spacing-5); 1610 }@media screen and (min-width: 699px) { 1611 #shopify-section-sections--23474687934741__text-with-icons { 1612 --text-with-icons-template: repeat(2, minmax(0, 1fr)); 1613 } 1614 }@media screen and (min-width: 1150px) { 1615 #shopify-section-sections--23474687934741__text-with-icons { 1616 --text-with-icons-gap: var(--spacing-5); 1617 } 1618 }@media screen and (min-width: 1000px) { 1619 #shopify-section-sections--23474687934741__text-with-icons { 1620 --text-with-icons-template: repeat(3, minmax(0, 630px)); 1621 --text-with-icons-justify: center; 1622 --text-with-icons-text-align: center; 1623 } 1624 }</style> 1625 1626 <div class="section 1627 1628 section-full bg-custom text-custom"style="--background: 253 248 240; --text-color: 0 40 104;"> 1629 <div class="section-stack"><div class="text-with-icons"> 1630 <scroll-carousel 1631 class="text-with-icons__list scroll-area full-bleed md:unbleed" 1632 id="carousel-sections--23474687934741__text-with-icons" 1633 role="region" 1634 ><div 1635 id="block-sections--23474687934741__text-with-icons-free-shipping" 1636 class="text-with-icons__item snap-center" 1637 role="group" 1638 aria-label="Item 1 of 3" 1639 1640 ><div ><svg 1641 role="presentation" 1642 fill="none" 1643 focusable="false" 1644 stroke-width="1.5" 1645 width="24" 1646 height="24" 1647 class="sm:hidden icon icon-picto-truck" 1648 viewBox="0 0 24 24" 1649 > 1650 <path d="M19 17.798h1.868a1.714 1.714 0 0 0 1.715-1.715V11.25a3.274 3.274 0 0 0-3.275-3.274H14.395l-.097 7.869" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/> 1651 <path d="M8.71 18.175c1.565 0 3.094-.16 4.572-.321m-9.94-.087a1.78 1.78 0 0 1-1.576-1.56c-.189-1.594-.407-3.256-.407-4.96 0-1.705.216-3.366.405-4.96a1.783 1.783 0 0 1 1.577-1.56c1.725-.186 3.523-.409 5.37-.409s3.644.223 5.368.408a1.783 1.783 0 0 1 1.578 1.56c.066.564.136 1.135.199 1.714" stroke="currentColor"/> 1652 <path d="M16.061 21.069a2.894 2.894 0 1 1 0-5.793 2.894 2.894 0 0 1 0 5.794v-.001ZM5.832 21.069a2.894 2.894 0 1 1 0-5.792 2.894 2.894 0 0 1 0 5.793v-.001Z" fill="currentColor" fill-opacity=".12" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/> 1653 </svg><svg 1654 role="presentation" 1655 fill="none" 1656 focusable="false" 1657 stroke-width="1.5" 1658 width="24" 1659 height="24" 1660 class="hidden sm:block icon icon-picto-truck"
1661 viewBox="0 0 24 24" 1662 > 1663 <path d="M19 17.798h1.868a1.714 1.714 0 0 0 1.715-1.715V11.25a3.274 3.274 0 0 0-3.275-3.274H14.395l-.097 7.869" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/> 1664 <path d="M8.71 18.175c1.565 0 3.094-.16 4.572-.321m-9.94-.087a1.78 1.78 0 0 1-1.576-1.56c-.189-1.594-.407-3.256-.407-4.96 0-1.705.216-3.366.405-4.96a1.783 1.783 0 0 1 1.577-1.56c1.725-.186 3.523-.409 5.37-.409s3.644.223 5.368.408a1.783 1.783 0 0 1 1.578 1.56c.066.564.136 1.135.199 1.714" stroke="currentColor"/> 1665 <path d="M16.061 21.069a2.894 2.894 0 1 1 0-5.793 2.894 2.894 0 0 1 0 5.794v-.001ZM5.832 21.069a2.894 2.894 0 1 1 0-5.792 2.894 2.894 0 0 1 0 5.793v-.001Z" fill="currentColor" fill-opacity=".12" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/> 1666 </svg></div><div class="text-with-icons__text-wrapper"> 1667 <div class="prose"><p class="h3">Fast Nationwide Shipping</p><p>Ground & Overnight available</p></div> 1668 </div> 1669 </div><div 1670 id="block-sections--23474687934741__text-with-icons-customer-support" 1671 class="text-with-icons__item snap-center" 1672 role="group" 1673 aria-label="Item 2 of 3" 1674 1675 ><div ><svg 1676 role="presentation" 1677 fill="none" 1678 focusable="false" 1679 stroke-width="1.5" 1680 width="24" 1681 height="24" 1682 class="sm:hidden icon icon-picto-question" 1683 viewBox="0 0 24 24" 1684 > 1685 <path d="M4.695 18.082c-1.532-.144-2.82-1.265-3.032-2.787A38.961 38.961 0 0 1 1.68 4.323c.206-1.422 1.368-2.497 2.798-2.646A72.209 72.209 0 0 1 12 1.286c2.573 0 5.054.145 7.47.394a3.178 3.178 0 0 1 2.845 2.695c.263 1.834.397 3.685.4 5.539 0 1.879-.16 3.704-.41 5.479a3.233 3.233 0 0 1-2.89 2.751c-2.525.264-5.06.397-7.598.398-1.799 2.067-3.177 3.09-5.586 4.172v-4.491l-1.165-.106-.37-.035v0Z" fill="currentColor" fill-opacity=".12" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/> 1686 <path d="M11.995 10.987c0-.619.504-1 1.392-1.594.823-.549 1.258-1.264 1.063-2.236a2.55 2.55 0 0 0-1.967-1.968A2.53 2.53 0 0 0 9.49 7.646" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/> 1687 <path d="M11.993 14.55a.214.214 0 0 1 0-.428M11.993 14.55a.214.214 0 0 0 0-.428" stroke="currentColor"/> 1688 </svg><svg 1689 role="presentation" 1690 fill="none" 1691 focusable="false" 1692 stroke-width="1.5" 1693 width="24" 1694 height="24" 1695 class="hidden sm:block icon icon-picto-question" 1696 viewBox="0 0 24 24" 1697 > 1698 <path d="M4.695 18.082c-1.532-.144-2.82-1.265-3.032-2.787A38.961 38.961 0 0 1 1.68 4.323c.206-1.422 1.368-2.497 2.798-2.646A72.209 72.209 0 0 1 12 1.286c2.573 0 5.054.145 7.47.394a3.178 3.178 0 0 1 2.845 2.695c.263 1.834.397 3.685.4 5.539 0 1.879-.16 3.704-.41 5.479a3.233 3.233 0 0 1-2.89 2.751c-2.525.264-5.06.397-7.598.398-1.799 2.067-3.177 3.09-5.586 4.172v-4.491l-1.165-.106-.37-.035v0Z" fill="currentColor" fill-opacity=".12" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/> 1699 <path d="M11.995 10.987c0-.619.504-1 1.392-1.594.823-.549 1.258-1.264 1.063-2.236a2.55 2.55 0 0 0-1.967-1.968A2.53 2.53 0 0 0 9.49 7.646" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/> 1700 <path d="M11.993 14.55a.214.214 0 0 1 0-.428M11.993 14.55a.214.214 0 0 0 0-.428" stroke="currentColor"/> 1701 </svg></div><div class="text-with-icons__text-wrapper"> 1702 <div class="prose"><p class="h3">Contact</p><p><a href="mailto:[email protected]" title="Email address">[email protected]</a></p><p><a href="tel:+15122227054" title="Phone Number">(512) 222-7054</a></p><p><a href="https://www.google.com/maps/place/3400+Comsouth+Dr,+Austin,+TX+78744/@30.2125846,-97.72267,17z/data=!3m1!4b1!4m6!3m5!1s0x8644b474caf8dc97:0xb12c53639ca03eab!8m2!3d30.21258!4d-97.7200951!16s%2Fg%2F11q4047mxc?entry=ttu&g_ep=EgoyMDI1MDgwMy4wIKXMDSoASAFQAw%3D%3D" target="_blank" title="Location Address">3400 Comsouth Dr. Austin, TX 78744</a></p></div> 1703 </div> 1704 </div><div
1705 id="block-sections--23474687934741__text-with-icons-payment" 1706 class="text-with-icons__item snap-center" 1707 role="group" 1708 aria-label="Item 3 of 3" 1709 1710 ><div ><svg 1711 role="presentation" 1712 fill="none" 1713 focusable="false" 1714 stroke-width="1.5" 1715 width="24" 1716 height="24" 1717 class="sm:hidden icon icon-picto-lock" 1718 viewBox="0 0 24 24" 1719 > 1720 <path d="M3.236 18.182a5.071 5.071 0 0 0 4.831 4.465 114.098 114.098 0 0 0 7.865-.001 5.07 5.07 0 0 0 4.831-4.464 23.03 23.03 0 0 0 .165-2.611c0-.881-.067-1.752-.165-2.61a5.07 5.07 0 0 0-4.83-4.465c-1.311-.046-2.622-.07-3.933-.069a109.9 109.9 0 0 0-3.933.069 5.07 5.07 0 0 0-4.83 4.466 23.158 23.158 0 0 0-.165 2.609c0 .883.067 1.754.164 2.61Z" fill="currentColor" fill-opacity=".12" stroke="currentColor"/> 1721 <path d="M17 8.43V6.285A5 5 0 0 0 7 6.286V8.43" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/> 1722 <path d="M12 17.714a2.143 2.143 0 1 0 0-4.286 2.143 2.143 0 0 0 0 4.286Z" stroke="currentColor"/> 1723 </svg><svg 1724 role="presentation" 1725 fill="none" 1726 focusable="false" 1727 stroke-width="1.5" 1728 width="24" 1729 height="24" 1730 class="hidden sm:block icon icon-picto-lock" 1731 viewBox="0 0 24 24" 1732 > 1733 <path d="M3.236 18.182a5.071 5.071 0 0 0 4.831 4.465 114.098 114.098 0 0 0 7.865-.001 5.07 5.07 0 0 0 4.831-4.464 23.03 23.03 0 0 0 .165-2.611c0-.881-.067-1.752-.165-2.61a5.07 5.07 0 0 0-4.83-4.465c-1.311-.046-2.622-.07-3.933-.069a109.9 109.9 0 0 0-3.933.069 5.07 5.07 0 0 0-4.83 4.466 23.158 23.158 0 0 0-.165 2.609c0 .883.067 1.754.164 2.61Z" fill="currentColor" fill-opacity=".12" stroke="currentColor"/> 1734 <path d="M17 8.43V6.285A5 5 0 0 0 7 6.286V8.43" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/> 1735 <path d="M12 17.714a2.143 2.143 0 1 0 0-4.286 2.143 2.143 0 0 0 0 4.286Z" stroke="currentColor"/> 1736 </svg></div><div class="text-with-icons__text-wrapper"> 1737 <div class="prose"><p class="h3">Secure Payment</p><p>We accept all credit cards, Google Pay, Apple Pay, PayPal, Amazon Pay, Meta & Shop Pay, via our secure checkout.</p></div> 1738 </div> 1739 </div></scroll-carousel><page-dots aria-controls="carousel-sections--23474687934741__text-with-icons" class="page-dots peer-not-scrollable:hidden"><button type="button" class="tap-area" aria-current="true"> 1740 <span class="sr-only">Go to item 1</span> 1741 </button><button type="button" class="tap-area" aria-current="false"> 1742 <span class="sr-only">Go to item 2</span> 1743 </button><button type="button" class="tap-area" aria-current="false"> 1744 <span class="sr-only">Go to item 3</span> 1745 </button></page-dots></div> 1746 </div> 1747 </div> 1748</section><footer id="shopify-section-sections--23474687934741__footer" class="shopify-section shopify-section-group-footer-group shopify-section--footer"><div class="footer"> 1749 <div class="container"> 1750 <div class="footer__wrapper"><div class="footer__block-list empty:hidden"><div class="footer__block footer__block--text" ><p class="bold">Texas Pecan Cakes</p><div class="prose text-subdued"><p>Baked in Austin, Texas â we handcraft every cake fresh to order using family recipes and the finest Texas pecans. Whether you're celebrating a birthday, gifting a holiday treat, or sharing a slice of Southern tradition, our cakes ship nationwide straight from our kitchen to your door.</p><p>ð¤ Proudly Texas Made · Family Owned · Ships Nationwide</p></div><div class="follow-on-shop">
1750<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.shop-follow-button.en.esm.js"></script>
vendor: 1 bytes, line 1750
1750
1751<script type="module"> 1752 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.shop-follow-button.en.esm.js"); 1753 1754 1755</script>
1755 1756 1757<shop-follow-button ux-mode="windoid" return-uri="https://texaspecancakes.com/account/redirect" proxy="true"></shop-follow-button> 1758</div></div><div class="footer__block footer__block--newsletter" ><div class="v-stack gap-6"><p class="h3">Join the Texas Pecan Cakes Family</p><div class="prose text-subdued"><p>Get exclusive recipes, seasonal flavors, and early access to sales â delivered straight to your inbox.</p></div><form method="post" action="/contact#footer-newsletter" id="footer-newsletter" accept-charset="UTF-8" class="footer__newsletter-form form"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="â" /><input type="hidden" name="contact[tags]" value="newsletter"><div class="form-control" ><input 1759 id="input-sections--23474687934741__footer--contactemail" 1760 class="input is-floating" 1761 type="email" 1762 1763 dir="ltr" 1764 1765 name="contact[email]" 1766 placeholder=" " 1767 1768 1769 1770 1771 1772 autocomplete="email" 1773 1774 enterkeyhint="send" 1775 required 1776 1777 1778 ><label for="input-sections--23474687934741__footer--contactemail" class="floating-label">E-mail</label><div class="self-submit-button"> 1779 <button type="submit" class="circle-chevron hover:colors"> 1780 <span class="sr-only">Subscribe</span><svg role="presentation" focusable="false" width="5" height="8" class="icon icon-chevron-right-small reverse-icon" viewBox="0 0 5 8"> 1781 <path d="m.75 7 3-3-3-3" fill="none" stroke="currentColor" stroke-width="1.5"></path> 1782 </svg></button> 1783 </div></div></form></div> 1784 </div><div class="footer__block footer__block--menu" ><ul class="v-stack gap-3" role="list"><li> 1785 <a href="/blogs/news" class="inline-block link-faded break-all">Blog Posts</a> 1786 </li><li> 1787 <a href="/policies/privacy-policy" class="inline-block link-faded break-all">Privacy Policy</a> 1788 </li><li> 1789 <a href="/policies/terms-of-service" class="inline-block link-faded break-all">Terms of Service</a> 1790 </li><li> 1791 <a href="/search" class="inline-block link-faded break-all">Search</a> 1792 </li><li> 1793 <a href="https://texaspecancakes.com/tools/seo/sitemap" class="inline-block link-faded break-all">Sitemap</a> 1794 </li><li> 1795 <a href="https://texaspecancakes.faire.com?utm_source=embed" class="inline-block link-faded break-all">Wholesale</a> 1796 </li></ul> 1797 </div></div><div class="footer__aside empty:hidden"><div class="footer__aside-top"><ul class="social-media " role="list"><li> 1798 <a href="https://www.facebook.com/TexasPecanCakes" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Facebook"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-facebook" viewBox="0 0 24 24"> 1799 <path fill-rule="evenodd" clip-rule="evenodd" d="M10.183 21.85v-8.868H7.2V9.526h2.983V6.982a4.17 4.17 0 0 1 4.44-4.572 22.33 22.33 0 0 1 2.667.144v3.084h-1.83a1.44 1.44 0 0 0-1.713 1.68v2.208h3.423l-.447 3.456h-2.97v8.868h-3.57Z" fill="currentColor"/> 1800 </svg></a> 1801 </li><li> 1802 <a href="https://twitter.com/texaspecancakes" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Twitter"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-twitter" viewBox="0 0 24 24"> 1803 <path d="M16.94 4h2.715l-5.93 6.777L20.7 20h-5.462l-4.278-5.593L6.065 20H3.35l6.342-7.25L3 4h5.6l3.868 5.113L16.94 4Zm-.952 14.375h1.504L7.784 5.54H6.17l9.818 12.836Z" fill="currentColor"/> 1804 </svg></a> 1805 </li><li> 1806 <a href="https://www.instagram.com/texaspecancakes/" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Instagram"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-instagram" viewBox="0 0 24 24"> 1807 <path fill-rule="evenodd" clip-rule="evenodd" d="M12 2.4c-2.607 0-2.934.011-3.958.058-1.022.046-1.72.209-2.33.446a4.705 4.705 0 0 0-1.7 1.107 4.706 4.706 0 0 0-1.108 1.7c-.237.611-.4 1.31-.446 2.331C2.41 9.066 2.4 9.392 2.4 12c0 2.607.011 2.934.058 3.958.046 1.022.209 1.72.446 2.33a4.706 4.706 0 0 0 1.107 1.7c.534.535 1.07.863 1.7 1.108.611.237 1.309.4 2.33.446 1.025.
1807047 1.352.058 3.959.058s2.934-.011 3.958-.058c1.022-.046 1.72-.209 2.33-.446a4.706 4.706 0 0 0 1.7-1.107 4.706 4.706 0 0 0 1.108-1.7c.237-.611.4-1.31.446-2.33.047-1.025.058-1.352.058-3.959s-.011-2.934-.058-3.958c-.047-1.022-.209-1.72-.446-2.33a4.706 4.706 0 0 0-1.107-1.7 4.705 4.705 0 0 0-1.7-1.108c-.611-.237-1.31-.4-2.331-.446C14.934 2.41 14.608 2.4 12 2.4Zm0 1.73c2.563 0 2.867.01 3.88.056.935.042 1.443.199 1.782.33.448.174.768.382 1.104.718.336.336.544.656.718 1.104.131.338.287.847.33 1.783.046 1.012.056 1.316.056 3.879 0 2.563-.01 2.867-.056 3.88-.043.935-.199 1.444-.33 1.782a2.974 2.974 0 0 1-.719 1.104 2.974 2.974 0 0 1-1.103.718c-.339.131-.847.288-1.783.33-1.012.046-1.316.056-3.88.056-2.563 0-2.866-.01-3.878-.056-.936-.042-1.445-.199-1.783-.33a2.974 2.974 0 0 1-1.104-.718 2.974 2.974 0 0 1-.718-1.104c-.131-.338-.288-.847-.33-1.783-.047-1.012-.056-1.316-.056-3.879 0-2.563.01-2.867.056-3.88.042-.935.199-1.443.33-1.782.174-.448.382-.768.718-1.104a2.974 2.974 0 0 1 1.104-.718c.338-.131.847-.288 1.783-.33C9.133 4.14 9.437 4.13 12 4.13Zm0 11.07a3.2 3.2 0 1 1 0-6.4 3.2 3.2 0 0 1 0 6.4Zm0-8.13a4.93 4.93 0 1 0 0 9.86 4.93 4.93 0 0 0 0-9.86Zm6.276-.194a1.152 1.152 0 1 1-2.304 0 1.152 1.152 0 0 1 2.304 0Z" fill="currentColor"/> 1808 </svg></a> 1809 </li><li> 1810 <a href="https://www.pinterest.com/texaspecancakes" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Pinterest"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-pinterest" viewBox="0 0 24 24"> 1811 <path fill-rule="evenodd" clip-rule="evenodd" d="M11.765 2.401c3.59-.054 5.837 1.4 6.895 3.95.349.842.722 2.39.442 3.675-.112.512-.144 1.048-.295 1.53-.308.983-.708 1.853-1.238 2.603-.72 1.02-1.81 1.706-3.182 2.052-1.212.305-2.328-.152-2.976-.643-.206-.156-.483-.36-.56-.643h-.029c-.046.515-.244 1.062-.383 1.531-.193.65-.23 1.321-.472 1.929a12.345 12.345 0 0 1-.942 1.868c-.184.302-.692 1.335-1.061 1.347-.04-.078-.057-.108-.06-.245-.118-.19-.035-.508-.087-.766-.082-.4-.145-1.123-.06-1.53v-.643c.096-.442.092-.894.207-1.317.25-.92.39-1.895.648-2.848.249-.915.477-1.916.678-2.847.045-.21-.21-.815-.265-1.041-.174-.713-.042-1.7.176-2.236.275-.674 1.08-1.703 2.122-1.439.838.212 1.371 1.118 1.09 2.266-.295 1.205-.677 2.284-.943 3.49-.068.311.05.641.118.827.248.672 1 1.324 2.004 1.072 1.52-.383 2.193-1.76 2.652-3.246.124-.402.109-.781.206-1.225.204-.935.118-2.331-.177-3.061-.472-1.17-1.353-1.92-2.563-2.328L12.707 4.3c-.56-.128-1.626.064-2.004.183-1.69.535-2.737 1.427-3.388 3.032-.222.546-.344 1.1-.383 1.868l-.03.276c.13.686.144 1.14.413 1.653.132.252.447.451.5.765.032.185-.104.464-.147.613-.065.224-.041.48-.147.673-.192.349-.714.087-.943-.061-1.192-.77-2.175-2.995-1.62-5.144.085-.332.09-.62.206-.919.723-1.844 1.802-2.978 3.359-3.95.583-.364 1.37-.544 2.092-.734l1.149-.154Z" fill="currentColor"/> 1812 </svg></a> 1813 </li><li> 1814 <a href="https://www.tiktok.com/@texaspecancakes" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on TikTok"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-tiktok" viewBox="0 0 24 24"> 1815 <path d="M20.027 10.168a5.125 5.125 0 0 1-4.76-2.294v7.893a5.833 5.833 0 1 1-5.834-5.834c.122 0 .241.011.361.019v2.874c-.12-.014-.237-.036-.36-.036a2.977 2.977 0 0 0 0 5.954c1.644 0 3.096-1.295 3.096-2.94L12.56 2.4h2.75a5.122 5.122 0 0 0 4.72 4.573v3.195" fill="currentColor"/> 1816 </svg></a> 1817 </li><li> 1818 <a href="https://www.linkedin.com/company/texas-pecan-cakes/?viewAsMember=true" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on LinkedIn"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-linkedin" viewBox="0 0 24 24"> 1819 <path fill-rule="evenodd" clip-rule="evenodd" d="M7.349 5.478a1.875 1.875 0 1 0-3.749 0 1.875 1.875 0 1 0 3.749 0ZM7.092 19.2H3.857V8.78h3.235V19.2ZM12.22 8.78H9.121V19.2h3.228v-5.154c0-1.36.257-2.676 1.94-2.676 1.658 0 1.68 1.554 1.68 2.763V19.2H19.2v-5.715c0-2.806-.605-4.963-3.877-4.963-1.573 0-2.629.863-3.06 1.683h-.044V8.78Z" fill="currentColor"/> 1820 </svg></a> 1821 </li></ul></div><div class="footer__aside-bottom"><ul class="footer__payment-icons h-stack wrap gap-2"><li class="contents"><svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-american_express"><title id="pi-american_express">American Express</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#0071CE" style="fill:#0071CE;fill:color(display-p3 0.0000 0.4431 0.8078);fill-opacity:1;"/>
1821<path d="M3 0.5H35C36.3348 0.5 37.5 1.58692 37.5 3V21C37.5 22.4239 36.4239 23.5 35 23.5H3C1.66524 23.5 0.5 22.4131 0.5 21V3C0.5 1.57614 1.57614 0.5 3 0.5Z" stroke="black" stroke-opacity="0.07" style="stroke:black;stroke-opacity:0.07;"/><path d="M25.8662 6.33203V3H31L31.8662 5.5332L32.7334 3H37V14.2002H36.7998L34.8672 16.2656L36.7998 18.3594H37V21.2666H33.5996L31.9336 19.3994L30.2002 21.2666H19.4668V12.666H16L20.2666 3H24.4004L25.8662 6.33203ZM20.5996 20.2656H27V18.5322H22.666V17.3994H26.8662V15.666H22.666V14.5322H27V12.7988H20.5996V20.2656ZM30.5332 16.5322L27 20.2656H29.5996L31.8662 17.8662L34.0664 20.2656H36.7324L33.1992 16.4658L36.7324 12.7988H34.1328L31.8662 15.1992L29.7324 12.7988H27L30.5332 16.5322ZM17.666 11.7324H19.9326L20.5332 10.1992H23.999L24.666 11.7324H26.999L23.666 4.19922H20.999L17.666 11.7324ZM33.5996 4.19922L31.9326 8.86621L30.1992 4.19922H27V11.666H29.0664V6.39941L31 11.666H32.7998L34.7324 6.39941V11.666H36.7324V4.13281L33.5996 4.19922ZM23.2656 8.46582H21.2656L22.2656 5.99902L23.2656 8.46582Z" fill="white" style="fill:white;fill-opacity:1;"/></svg> 1822</li><li class="contents"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" role="img" x="0" y="0" width="38" height="24" viewBox="0 0 165.521 105.965" xml:space="preserve" aria-labelledby="pi-apple_pay"><title id="pi-apple_pay">Apple Pay</title><path fill="#000" d="M150.698 0H14.823c-.566 0-1.133 0-1.698.003-.477.004-.953.009-1.43.022-1.039.028-2.087.09-3.113.274a10.51 10.51 0 0 0-2.958.975 9.932 9.932 0 0 0-4.35 4.35 10.463 10.463 0 0 0-.975 2.96C.113 9.611.052 10.658.024 11.696a70.22 70.22 0 0 0-.022 1.43C0 13.69 0 14.256 0 14.823v76.318c0 .567 0 1.132.002 1.699.003.476.009.953.022 1.43.028 1.036.09 2.084.275 3.11a10.46 10.46 0 0 0 .974 2.96 9.897 9.897 0 0 0 1.83 2.52 9.874 9.874 0 0 0 2.52 1.83c.947.483 1.917.79 2.96.977 1.025.183 2.073.245 3.112.273.477.011.953.017 1.43.02.565.004 1.132.004 1.698.004h135.875c.565 0 1.132 0 1.697-.004.476-.002.952-.009 1.431-.02 1.037-.028 2.085-.09 3.113-.273a10.478 10.478 0 0 0 2.958-.977 9.955 9.955 0 0 0 4.35-4.35c.483-.947.789-1.917.974-2.96.186-1.026.246-2.074.274-3.11.013-.477.02-.954.022-1.43.004-.567.004-1.132.004-1.699V14.824c0-.567 0-1.133-.004-1.699a63.067 63.067 0 0 0-.022-1.429c-.028-1.038-.088-2.085-.274-3.112a10.4 10.4 0 0 0-.974-2.96 9.94 9.94 0 0 0-4.35-4.35A10.52 10.52 0 0 0 156.939.3c-1.028-.185-2.076-.246-3.113-.274a71.417 71.417 0 0 0-1.431-.022C151.83 0 151.263 0 150.698 0z" /><path fill="#FFF" d="M150.698 3.532l1.672.003c.452.003.905.008 1.36.02.793.022 1.719.065 2.583.22.75.135 1.38.34 1.984.648a6.392 6.392 0 0 1 2.804 2.807c.306.6.51 1.226.645 1.983.154.854.197 1.783.218 2.58.013.45.019.9.02 1.36.005.557.005 1.113.005 1.671v76.318c0 .558 0 1.114-.004 1.682-.002.45-.008.9-.02 1.35-.022.796-.065 1.725-.221 2.589a6.855 6.855 0 0 1-.645 1.975 6.397 6.397 0 0 1-2.808 2.807c-.6.306-1.228.511-1.971.645-.881.157-1.847.2-2.574.22-.457.01-.912.017-1.379.019-.555.004-1.113.004-1.669.004H14.801c-.55 0-1.1 0-1.66-.004a74.993 74.993 0 0 1-1.35-.018c-.744-.02-1.71-.064-2.584-.22a6.938 6.938 0 0 1-1.986-.65 6.337 6.337 0 0 1-1.622-1.18 6.355 6.355 0 0 1-1.178-1.623 6.935 6.935 0 0 1-.646-1.985c-.156-.863-.2-1.788-.22-2.578a66.088 66.088 0 0 1-.02-1.355l-.003-1.327V14.474l.002-1.325a66.7 66.7 0 0 1 .02-1.357c.022-.792.065-1.717.222-2.587a6.924 6.924 0 0 1 .646-1.981c.304-.598.7-1.144 1.18-1.623a6.386 6.386 0 0 1 1.624-1.18 6.96 6.96 0 0 1 1.98-.646c.865-.155 1.792-.198 2.586-.22.452-.012.905-.017 1.354-.02l1.677-.003h135.875" /><g><g><path fill="#000" d="M43.508 35.77c1.404-1.755 2.356-4.112 2.105-6.52-2.054.102-4.56 1.355-6.012 3.112-1.303 1.504-2.456 3.959-2.156 6.266 2.306.2 4.61-1.152 6.063-2.858" /><path fill="#000" d="M45.587 39.079c-3.35-.2-6.196 1.9-7.795 1.9-1.6 0-4.049-1.8-6.698-1.751-3.447.05-6.645 2-8.395 5.1-3.598 6.2-.95 15.4 2.55 20.45 1.699 2.5 3.747 5.25 6.445 5.151 2.55-.1 3.549-1.65 6.647-1.65 3.097 0 3.997 1.65 6.696 1.6 2.798-.05 4.548-2.5 6.247-5 1.95-2.85 2.747-5.6 2.797-5.75-.05-.05-5.396-2.101-5.446-8.251-.05-5.15 4.198-7.6 4.398-7.751-2.399-3.548-6.147-3.948-7.447-4.048" /></g><g><path fill="#000" d="M78.973 32.11c7.278 0 12.347 5.017 12.347 12.321 0 7.33-5.173 12.373-12.529 12.373h-8.058V69.62h-5.822V32.11h14.062zm-8.24 19.807h6.68c5.07 0 7.954-2.729 7.954-7.46 0-4.73-2.885-7.434-7.928-7.434h-6.706v14.894z" />
1822<path fill="#000" d="M92.764 61.847c0-4.809 3.665-7.564 10.423-7.98l7.252-.442v-2.08c0-3.04-2.001-4.704-5.562-4.704-2.938 0-5.07 1.507-5.51 3.82h-5.252c.157-4.86 4.731-8.395 10.918-8.395 6.654 0 10.995 3.483 10.995 8.89v18.663h-5.38v-4.497h-.13c-1.534 2.937-4.914 4.782-8.579 4.782-5.406 0-9.175-3.222-9.175-8.057zm17.675-2.417v-2.106l-6.472.416c-3.64.234-5.536 1.585-5.536 3.95 0 2.288 1.975 3.77 5.068 3.77 3.95 0 6.94-2.522 6.94-6.03z" /><path fill="#000" d="M120.975 79.652v-4.496c.364.051 1.247.103 1.715.103 2.573 0 4.029-1.09 4.913-3.899l.52-1.663-9.852-27.293h6.082l6.863 22.146h.13l6.862-22.146h5.927l-10.216 28.67c-2.34 6.577-5.017 8.735-10.683 8.735-.442 0-1.872-.052-2.261-.157z" /></g></g></svg> 1823</li><li class="contents"><svg viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" role="img" width="38" height="24" aria-labelledby="pi-diners_club"><title id="pi-diners_club">Diners Club</title><path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"/><path d="M12 12v3.7c0 .3-.2.3-.5.2-1.9-.8-3-3.3-2.3-5.4.4-1.1 1.2-2 2.3-2.4.4-.2.5-.1.5.2V12zm2 0V8.3c0-.3 0-.3.3-.2 2.1.8 3.2 3.3 2.4 5.4-.4 1.1-1.2 2-2.3 2.4-.4.2-.4.1-.4-.2V12zm7.2-7H13c3.8 0 6.8 3.1 6.8 7s-3 7-6.8 7h8.2c3.8 0 6.8-3.1 6.8-7s-3-7-6.8-7z" fill="#3086C8"/></svg></li><li class="contents"><svg viewBox="0 0 38 24" width="38" height="24" role="img" aria-labelledby="pi-discover" fill="none" xmlns="http://www.w3.org/2000/svg"><title id="pi-discover">Discover</title><path fill="#000" opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32z" fill="#fff"/><path d="M3.57 7.16H2v5.5h1.57c.83 0 1.43-.2 1.96-.63.63-.52 1-1.3 1-2.11-.01-1.63-1.22-2.76-2.96-2.76zm1.26 4.14c-.34.3-.77.44-1.47.44h-.29V8.1h.29c.69 0 1.11.12 1.47.44.37.33.59.84.59 1.37 0 .53-.22 1.06-.59 1.39zm2.19-4.14h1.07v5.5H7.02v-5.5zm3.69 2.11c-.64-.24-.83-.4-.83-.69 0-.35.34-.61.8-.61.32 0 .59.13.86.45l.56-.73c-.46-.4-1.01-.61-1.62-.61-.97 0-1.72.68-1.72 1.58 0 .76.35 1.15 1.35 1.51.42.15.63.25.74.31.21.14.32.34.32.57 0 .45-.35.78-.83.78-.51 0-.92-.26-1.17-.73l-.69.67c.49.73 1.09 1.05 1.9 1.05 1.11 0 1.9-.74 1.9-1.81.02-.89-.35-1.29-1.57-1.74zm1.92.65c0 1.62 1.27 2.87 2.9 2.87.46 0 .86-.09 1.34-.32v-1.26c-.43.43-.81.6-1.29.6-1.08 0-1.85-.78-1.85-1.9 0-1.06.79-1.89 1.8-1.89.51 0 .9.18 1.34.62V7.38c-.47-.24-.86-.34-1.32-.34-1.61 0-2.92 1.28-2.92 2.88zm12.76.94l-1.47-3.7h-1.17l2.33 5.64h.58l2.37-5.64h-1.16l-1.48 3.7zm3.13 1.8h3.04v-.93h-1.97v-1.48h1.9v-.93h-1.9V8.1h1.97v-.94h-3.04v5.5zm7.29-3.87c0-1.03-.71-1.62-1.95-1.62h-1.59v5.5h1.07v-2.21h.14l1.48 2.21h1.32l-1.73-2.32c.81-.17 1.26-.72 1.26-1.56zm-2.16.91h-.31V8.03h.33c.67 0 1.03.28 1.03.82 0 .55-.36.85-1.05.85z" fill="#231F20"/><path d="M20.16 12.86a2.931 2.931 0 100-5.862 2.931 2.931 0 000 5.862z" fill="url(#pi-paint0_linear)"/><path opacity=".65" d="M20.16 12.86a2.931 2.931 0 100-5.862 2.931 2.931 0 000 5.862z" fill="url(#pi-paint1_linear)"/><path d="M36.57 7.506c0-.1-.07-.15-.18-.15h-.16v.48h.12v-.19l.14.19h.14l-.16-.2c.06-.01.1-.06.1-.13zm-.2.07h-.02v-.13h.02c.06 0 .09.02.09.06 0 .05-.03.07-.09.07z" fill="#231F20"/><path d="M36.41 7.176c-.23 0-.42.19-.42.42 0 .23.19.42.42.42.23 0 .42-.19.42-.42 0-.23-.19-.42-.42-.42zm0 .77c-.18 0-.34-.15-.34-.35 0-.19.15-.35.34-.35.18 0 .33.16.33.35 0 .19-.15.35-.33.35z" fill="#231F20"/><path d="M37 12.984S27.09 19.873 8.976 23h26.023a2 2 0 002-1.984l.024-3.02L37 12.985z" fill="#F48120"/><defs><linearGradient id="pi-paint0_linear" x1="21.657" y1="12.275" x2="19.632" y2="9.104" gradientUnits="userSpaceOnUse"><stop stop-color="#F89F20"/><stop offset=".25" stop-color="#F79A20"/><stop offset=".533" stop-color="#F68D20"/><stop offset=".62" stop-color="#F58720"/><stop offset=".723" stop-color="#F48120"/><stop offset="1" stop-color="#F37521"/></linearGradient><linearGradient id="pi-paint1_linear" x1="21.338" y1="12.232" x2="18.378" y2="6.446" gradientUnits="userSpaceOnUse"><stop stop-color="#F58720"/><stop offset=".359" stop-color="#E16F27"/><stop offset=".703" stop-color="#D4602C"/><stop offset=".982" stop-color="#D05B2E"/></linearGradient></defs></svg></li><li class="contents"><svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" aria-labelledby="pi-google_pay"><title id="pi-google_pay">Google Pay</title><path d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z" fill="#000" opacity=".07"/><path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32" fill="#FFF"/><path d="M18.093 11.976v3.2h-1.018v-7.9h2.691a2.447 2.447 0 0 1 1.747.692 2.28 2.28 0 0 1 .11 3.224l-.11.116c-.47.447-1.098.69-1.747.674l-1.673-.006zm0-3.732v2.788h1.698c.377.012.741-.135 1.005-.404a1.391 1.391 0 0 0-1.005-2.354l-1.698-.03zm6.484 1.348c.65-.03 1.286.188 1.778.613.445.43.682 1.03.65 1.649v3.334h-.969v-.766h-.049a1.93 1.93 0 0 1-1.673.931 2.17 2.17 0 0 1-1.496-.533 1.667 1.667 0 0 1-.613-1.324 1.606 1.606 0 0 1 .613-1.336 2.746 2.746 0 0 1 1.698-.515c.517-.02 1.03.093 1.49.331v-.208a1.134 1.134 0 0 0-.417-.901 1.416 1.416 0 0 0-.98-.368 1.545 1.545 0 0 0-1.319.717l-.895-.564a2.488 2.488 0 0 1 2.182-1.
182306zM23.29 13.52a.79.79 0 0 0 .337.662c.223.176.5.269.785.263.429-.001.84-.17 1.146-.472.305-.286.478-.685.478-1.103a2.047 2.047 0 0 0-1.324-.374 1.716 1.716 0 0 0-1.03.294.883.883 0 0 0-.392.73zm9.286-3.75l-3.39 7.79h-1.048l1.281-2.728-2.224-5.062h1.103l1.612 3.885 1.569-3.885h1.097z" fill="#5F6368"/><path d="M13.986 11.284c0-.308-.024-.616-.073-.92h-4.29v1.747h2.451a2.096 2.096 0 0 1-.9 1.373v1.134h1.464a4.433 4.433 0 0 0 1.348-3.334z" fill="#4285F4"/><path d="M9.629 15.721a4.352 4.352 0 0 0 3.01-1.097l-1.466-1.14a2.752 2.752 0 0 1-4.094-1.44H5.577v1.17a4.53 4.53 0 0 0 4.052 2.507z" fill="#34A853"/><path d="M7.079 12.05a2.709 2.709 0 0 1 0-1.735v-1.17H5.577a4.505 4.505 0 0 0 0 4.075l1.502-1.17z" fill="#FBBC04"/><path d="M9.629 8.44a2.452 2.452 0 0 1 1.74.68l1.3-1.293a4.37 4.37 0 0 0-3.065-1.183 4.53 4.53 0 0 0-4.027 2.5l1.502 1.171a2.715 2.715 0 0 1 2.55-1.875z" fill="#EA4335"/></svg> 1824</li><li class="contents"><svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-master"><title id="pi-master">Mastercard</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#1C1C1C" style="fill:#1C1C1C;fill:color(display-p3 0.1098 0.1098 0.1098);fill-opacity:1;"/><path d="M35 1C36.1 1 37 1.9 37 3V21C37 22.1 36.1 23 35 23H3C1.9 23 1 22.1 1 21V3C1 1.9 1.9 1 3 1H35Z" fill="#232323" style="fill:#232323;fill:color(display-p3 0.1373 0.1373 0.1373);fill-opacity:1;"/><path d="M14.6364 19.2727C18.8538 19.2727 22.2727 15.8538 22.2727 11.6364C22.2727 7.41892 18.8538 4 14.6364 4C10.4189 4 7 7.41892 7 11.6364C7 15.8538 10.4189 19.2727 14.6364 19.2727Z" fill="#EB001B" style="fill:#EB001B;fill:color(display-p3 0.9216 0.0000 0.1059);fill-opacity:1;"/><path d="M23.3637 19.2727C27.5811 19.2727 31 15.8538 31 11.6364C31 7.41892 27.5811 4 23.3637 4C19.1462 4 15.7273 7.41892 15.7273 11.6364C15.7273 15.8538 19.1462 19.2727 23.3637 19.2727Z" fill="#F79E1B" style="fill:#F79E1B;fill:color(display-p3 0.9686 0.6196 0.1059);fill-opacity:1;"/><path d="M22.2727 11.6362C22.2727 9.01797 20.9637 6.72706 19 5.41797C17.0364 6.83615 15.7273 9.12706 15.7273 11.6362C15.7273 14.1452 17.0364 16.5452 19 17.8543C20.9637 16.5452 22.2727 14.2543 22.2727 11.6362Z" fill="#FF5F00" style="fill:#FF5F00;fill:color(display-p3 1.0000 0.3725 0.0000);fill-opacity:1;"/></svg> 1825</li><li class="contents"><svg viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" width="38" height="24" role="img" aria-labelledby="pi-paypal"><title id="pi-paypal">PayPal</title><path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"/><path fill="#003087" d="M23.9 8.3c.2-1 0-1.7-.6-2.3-.6-.7-1.7-1-3.1-1h-4.1c-.3 0-.5.2-.6.5L14 15.6c0 .2.1.4.3.4H17l.4-3.4 1.8-2.2 4.7-2.1z"/><path fill="#3086C8" d="M23.9 8.3l-.2.2c-.5 2.8-2.2 3.8-4.6 3.8H18c-.3 0-.5.2-.6.5l-.6 3.9-.2 1c0 .2.1.4.3.4H19c.3 0 .5-.2.5-.4v-.1l.4-2.4v-.1c0-.2.3-.4.5-.4h.3c2.1 0 3.7-.8 4.1-3.2.2-1 .1-1.8-.4-2.4-.1-.5-.3-.7-.5-.8z"/><path fill="#012169" d="M23.3 8.1c-.1-.1-.2-.1-.3-.1-.1 0-.2 0-.3-.1-.3-.1-.7-.1-1.1-.1h-3c-.1 0-.2
18250-.2.1-.2.1-.3.2-.3.4l-.7 4.4v.1c0-.3.3-.5.6-.5h1.3c2.5 0 4.1-1 4.6-3.8v-.2c-.1-.1-.3-.2-.5-.2h-.1z"/></svg></li><li class="contents"><svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" aria-labelledby="pi-shopify_pay"><title id="pi-shopify_pay">Shop Pay</title><path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z" fill="#000"/><path d="M35.889 0C37.05 0 38 .982 38 2.182v19.636c0 1.2-.95 2.182-2.111 2.182H2.11C.95 24 0 23.018 0 21.818V2.182C0 .982.95 0 2.111 0H35.89z" fill="#5A31F4"/><path d="M9.35 11.368c-1.017-.223-1.47-.31-1.47-.705 0-.372.306-.558.92-.558.54 0 .934.238 1.225.704a.079.079 0 00.104.03l1.146-.584a.082.082 0 00.032-.114c-.475-.831-1.353-1.286-2.51-1.286-1.52 0-2.464.755-2.464 1.956 0 1.275 1.15 1.597 2.17 1.82 1.02.222 1.474.31 1.474.705 0 .396-.332.582-.993.582-.612 0-1.065-.282-1.34-.83a.08.08 0 00-.107-.035l-1.143.57a.083.083 0 00-.036.111c.454.92 1.384 1.437 2.627 1.437 1.583 0 2.539-.742 2.539-1.98s-1.155-1.598-2.173-1.82v-.003zM15.49 8.855c-.65 0-1.224.232-1.636.646a.04.04 0 01-.069-.03v-2.64a.08.08 0 00-.08-.081H12.27a.08.08 0 00-.08.082v8.194a.08.08 0 00.08.082h1.433a.08.08 0 00.081-.082v-3.594c0-.695.528-1.227 1.239-1.227.71 0 1.226.521 1.226 1.227v3.594a.08.08 0 00.081.082h1.433a.08.08 0 00.081-.082v-3.594c0-1.51-.981-2.577-2.355-2.577zM20.753 8.62c-.778 0-1.507.24-2.03.588a.082.082 0 00-.027.109l.632 1.088a.08.08 0 00.11.03 2.5 2.5 0 011.318-.366c1.25 0 2.17.891 2.17 2.068 0 1.003-.736 1.745-1.669 1.745-.76 0-1.288-.446-1.288-1.077 0-.361.152-.657.548-.866a.08.08 0 00.032-.113l-.596-1.018a.08.08 0 00-.098-.035c-.799.299-1.359 1.018-1.359 1.984 0 1.46 1.152 2.55 2.76 2.55 1.877 0 3.227-1.313 3.227-3.195 0-2.018-1.57-3.492-3.73-3.492zM28.675 8.843c-.724 0-1.373.27-1.845.746-.026.027-.069.007-.069-.029v-.572a.08.08 0 00-.08-.082h-1.397a.08.08 0 00-.08.082v8.182a.08.08 0 00.08.081h1.433a.08.08 0 00.081-.081v-2.683c0-.036.043-.054.069-.03a2.6 2.6 0 001.808.7c1.682 0 2.993-1.373 2.993-3.157s-1.313-3.157-2.993-3.157zm-.271 4.929c-.956 0-1.681-.768-1.681-1.783s.723-1.783 1.681-1.783c.958 0 1.68.755 1.68 1.783 0 1.027-.713 1.783-1.681 1.783h.001z" fill="#fff"/></svg> 1826</li><li class="contents"><svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-visa"><title id="pi-visa">Visa</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#142FBD" style="fill:#142FBD;fill:color(display-p3 0.0784 0.1843 0.7412);fill-opacity:1;"/><path d="M35 1C36.1 1 37 1.9 37 3V21C37 22.1 36.1 23 35 23H3C1.9 23 1 22.1 1 21V3C1 1.9 1.9 1 3 1H35Z" fill="#1532CB" style="fill:#1532CB;fill:color(display-p3 0.0824 0.1961 0.7961);fill-opacity:1;"/><path d="M29.5944 10.2167H29.2778C28.8556 11.2722 28.5389 11.8 28.2222 13.3833H30.2278C29.9111 11.8 29.9111 11.0611 29.5944 10.2167V10.2167ZM32.6556 16.4444H30.8611C30.7556 16.4444 30.7556 16.4444 30.65 16.3389L30.4389 15.3889L30.3333 15.1778H27.8C27.6944 15.1778 27.5889 15.1778 27.5889 15.3889L27.2722 16.3389C27.2722 16.4444 27.1667 16.4444 27.1667 16.4444H24.95L25.1611 15.9167L28.2222 8.73889C28.2222 8.21111 28.5389 8 29.0667 8H30.65C30.7556 8 30.8611 8 30.8611 8.21111L32.3389 15.0722C32.4444 15.4944 32.55 15.8111 32.55 16.2333C32.6556 16.3389 32.6556 16.3389 32.6556 16.4444V16.4444ZM18.5111 16.1278L18.9333 14.2278C19.0389 14.2278 19.1444 14.3333 19.1444 14.3333C19.8833 14.65 20.6222 14.8611 21.3611 14.7556C21.5722 14.7556 21.8889 14.65 22.1 14.5444C22.6278 14.3333 22.6278 13.8056 22.2056 13.3833C21.9944 13.1722 21.6778 13.0667 21.3611 12.8556C20.9389 12.6444 20.5167 12.4333 20.2 12.1167C18.9333 11.0611 19.3556 9.58333 20.0944 8.84444C20.7278 8.42222 21.0444 8 21.8889 8C23.1556 8 24.5278 8 25.1611 8.21111H25.2667C25.1611 8.84444 25.0556 9.37222 24.8444 10.0056C24.3167 9.79444 23.7889 9.58333 23.2611 9.58333C22.9444 9.58333 22.6278 9.58333 22.3111 9.68889C22.1 9.68889 21.9944 9.79444 21.8889 9.9C21.6778 10.1111 21.6778 10.4278 21.8889 10.6389L22.4167 11.0611C22.8389 11.2722 23.2611 11.4833 23.5778 11.6944C24.1056 12.0111 24.6333 12.5389 24.7389 13.1722C24.95 14.1222 24.6333 14.9667 23.7889 15.6C23.2611 16.0222 23.05 16.2333 22.3111 16.2333C20.8333 16.2333 19.6722 16.3389 18.7222 16.0222C18.6167 16.2333 18.6167 16.2333 18.5111 16.1278V16.1278ZM14.8167 16.4444C14.9222 15.7056 14.9222 15.7056 15.0278 15.3889C15.5556 13.0667 16.0833 10.6389 16.5056 8.31667C16.6111 8.10556 16.6111 8 16.8222 8H18.7222C18.5111 9.26667 18.3 10.2167 17.9833 11.3778C17.6667 12.9611 17.35 14.5444 16.9278 16.1278C16.9278 16.3389 16.8222 16.3389 16.6111 16.3389L14.8167 16.4444ZM5 8.21111C5 8.10556 5.21111 8 5.31667 8H8.90556C9.43333 8 9.85556 8.31667 9.96111 8.84444L10.9111 13.4889C10.9111 13.5944 10.9111 13.5944 11.0167 13.7C11.0167 13.5944 11.1222 13.5944 11.1222 13.5944L13.3389 8.21111C13.2333 8.10556 13.3389 8 13.4444 8H15.6611C15.6611 8.10556 15.6611 8.10556 15.5556 8.21111L12.2833 15.9167C12.1778 16.1278 12.1778
182616.2333 12.0722 16.3389C11.9667 16.4444 11.7556 16.3389 11.5444 16.3389H9.96111C9.85556 16.3389 9.75 16.3389 9.75 16.1278L8.06111 9.58333C7.85 9.37222 7.53333 9.05556 7.11111 8.95C6.47778 8.63333 5.31667 8.42222 5.10556 8.42222L5 8.21111Z" fill="white" style="fill:white;fill-opacity:1;"/></svg> 1827</li></ul><div class="footer__copyright v-stack gap-1"> 1828 <p class="text-sm text-subdued"> 1829 © 2026, Texas Pecan Cakes. 1830 </p><ul class="footer__policy-links unstyled-list"><li class="contents"> 1831 <a href="/policies/refund-policy" class="text-sm link-faded">Refund policy</a> 1832 </li><li class="contents"> 1833 <a href="/policies/privacy-policy" class="text-sm link-faded">Privacy policy</a> 1834 </li><li class="contents"> 1835 <a href="/policies/terms-of-service" class="text-sm link-faded">Terms of service</a> 1836 </li><li class="contents"> 1837 <a href="/policies/shipping-policy" class="text-sm link-faded">Shipping policy</a> 1838 </li><li class="contents"> 1839 <a href="/policies/contact-information" class="text-sm link-faded">Contact information</a> 1840 </li></ul></div> 1841 </div> 1842 </div> 1843 </div> 1844 </div> 1845</div> 1846 1847 1848</footer><section id="shopify-section-sections--23474687934741__1730335311a1a13637" class="shopify-section shopify-section-group-footer-group shopify-section--apps"> 1849</section> 1850<!-- END sections: footer-group --></main> 1851
1851<script type="text/javascript"> 1852_linkedin_partner_id = "10086204"; 1853window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || []; 1854window._linkedin_data_partner_ids.push(_linkedin_partner_id); 1855</script>
1855<script type="text/javascript"> 1856(function(l) { 1857if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])}; 1858window.lintrk.q=[]} 1859var s = document.getElementsByTagName("script")[0]; 1860var b = document.createElement("script"); 1861b.type = "text/javascript";b.async = true; 1862b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js"; 1863s.parentNode.insertBefore(b, s);})(window.lintrk); 1864</script>
1864 1865<noscript> 1866<img height="1" width="1" style="display:none;" alt="" src="https://px.ads.linkedin.com/collect/?pid=10086204&fmt=gif" /> 1867</noscript> 1868 <div id="shopify-block-AeUUvSmhDa3V1Q045T__355814267362977508" class="shopify-block shopify-app-block"> 1869 1870<style> 1871 /* Merchant-configured modal title bar (embed settings) */ 1872 .split-shipping-modal__titlebar { 1873 background: #f3f4f6; 1874 } 1875 .split-shipping-modal__titlebar-text { 1876 color: #1f2937; 1877 } 1878</style> 1879 1880<!-- Hidden container with data attributes for JavaScript --> 1881<div id="split-shipping-data" 1882 data-split-shipping-root 1883 data-accent-color="#000000" 1884 data-display-mode="button" 1885 data-locale="en" 1886 data-country="US" 1887 data-customer-email="" 1888 data-bundle-product-id="gid://shopify/Product/9538353692949" 1889 data-bundle-variant-id="gid://shopify/ProductVariant/49956988289301" 1890 data-shipping-settings="{"apply_free_shipping_to_cart_total":false,"skip_shipping_if_free":false,"enable_gift_checkbox":true,"enable_gift_notes":true,"enable_order_notes":true,"enable_delivery_date_picker":true,"date_picker_mode":"delivery","default_transit_days":3,"enable_delivery_time_slots":false,"delivery_time_slots":[],"date_price_rules":[],"date_pricing_free_over":null,"date_pricing_waive_on_free":false,"require_delivery_date":false,"collect_recipient_email":false,"notify_recipient_shipping":false,"max_addresses":1000,"show_single_item_notice":true,"checkout_display_mode":"bundle","per_shipment_fee_enabled":false,"per_shipment_fee_cents":50,"per_shipment_fee_waive_on_free":false}" 1891 style="display: none;"> 1892 1893 <!-- Cart Items Data --> 1894
1894<script type="application/json" data-cart-items> 1895 [] 1896 </script>
1896 1897 1898 <!-- Cart Discount Codes --> 1899
1899<script type="application/json" data-cart-discounts> 1900 [] 1901 </script>
1901 1902 1903 <!-- Customer Data --> 1904
1904<script type="application/json" data-customer-addresses>[]</script>
1904 1905 1906 <!-- Customer Status --> 1907 <div data-customer-logged-in="false"></div> 1908 1909 <!-- URLs --> 1910 <div data-login-url="https://texaspecancakes.com/customer_authentication/redirect?locale=en®ion_country=US"></div> 1911 <div data-register-url="/account/register"></div> 1912 1913 <!-- Available Countries for address form --> 1914
1914<script type="application/json" data-available-countries> 1915 [{ 1916 "name": "United States", 1917 "iso_code": "US", 1918 "provinces": [] 1919 }] 1920 </script>
1920 1921 1922 <!-- Provinces per country. The Liquid country object has no provinces; 1923 country_option_tags is the documented source (data-provinces on each 1924 option, one entry per country in the store's shipping zones). --> 1925 <select data-country-provinces hidden aria-hidden="true" tabindex="-1"><option value="United States" data-provinces="[["Alabama","Alabama"],["Alaska","Alaska"],["American Samoa","American Samoa"],["Arizona","Arizona"],["Arkansas","Arkansas"],["Armed Forces Americas","Armed Forces Americas"],["Armed Forces Europe","Armed Forces Europe"],["Armed Forces Pacific","Armed Forces Pacific"],["California","California"],["Colorado","Colorado"],["Connecticut","Connecticut"],["Delaware","Delaware"],["District of Columbia","Washington DC"],["Federated States of Micronesia","Micronesia"],["Florida","Florida"],["Georgia","Georgia"],["Guam","Guam"],["Hawaii","Hawaii"],["Idaho","Idaho"],["Illinois","Illinois"],["Indiana","Indiana"],["Iowa","Iowa"],["Kansas","Kansas"],["Kentucky","Kentucky"],["Louisiana","Louisiana"],["Maine","Maine"],["Marshall Islands","Marshall Islands"],["Maryland","Maryland"],["Massachusetts","Massachusetts"],["Michigan","Michigan"],["Minnesota","Minnesota"],["Mississippi","Mississippi"],["Missouri","Missouri"],["Montana","Montana"],["Nebraska","Nebraska"],["Nevada","Nevada"],["New Hampshire","New Hampshire"],["New Jersey","New Jersey"],["New Mexico","New Mexico"],["New York","New York"],["North Carolina","North Carolina"],["North Dakota","North Dakota"],["Northern Mariana Islands","Northern Mariana Islands"],["Ohio","Ohio"],["Oklahoma","Oklahoma"],["Oregon","Oregon"],["Palau","Palau"],["Pennsylvania","Pennsylvania"],["Puerto Rico","Puerto Rico"],["Rhode Island","Rhode Island"],["South Carolina","South Carolina"],["South Dakota","South Dakota"],["Tennessee","Tennessee"],["Texas","Texas"],["Utah","Utah"],["Vermont","Vermont"],["Virgin Islands","U.S. Virgin Islands"],["Virginia","Virginia"],["Washington","Washington"],["West Virginia","West Virginia"],["Wisconsin","Wisconsin"],["Wyoming","Wyoming"]]">United States</option> 1926<option value="---" data-provinces="[]">---</option> 1927<option value="Afghanistan" data-provinces="[]">Afghanistan</option> 1928<option value="Aland Islands" data-provinces="[]">à land Islands</option> 1929<option value="Albania" data-provinces="[]">Albania</option> 1930<option value="Algeria" data-provinces="[]">Algeria</option> 1931<option value="Andorra" data-provinces="[]">Andorra</option> 1932<option value="Angola" data-provinces="[]">Angola</option> 1933<option value="Anguilla" data-provinces="[]">Anguilla</option> 1934<option value="Antigua And Barbuda" data-provinces="[]">Antigua & Barbuda</option> 1935<option value="Argentina" data-provinces="[["Buenos Aires","Buenos Aires Province"],["Catamarca","Catamarca"],["Chaco","Chaco"],["Chubut","Chubut"],["Ciudad Autónoma de Buenos Aires","Buenos Aires (Autonomous City)"],["Corrientes","Corrientes"],["Córdoba","Córdoba"],["Entre RÃos","Entre RÃos"],["Formosa","Formosa"],["Jujuy","Jujuy"],["La Pampa","La Pampa"],["La Rioja","La Rioja"],["
1935Mendoza","Mendoza"],["Misiones","Misiones"],["Neuquén","Neuquén"],["RÃo Negro","RÃo Negro"],["Salta","Salta"],["San Juan","San Juan"],["San Luis","San Luis"],["Santa Cruz","Santa Cruz"],["Santa Fe","Santa Fe"],["Santiago Del Estero","Santiago del Estero"],["Tierra Del Fuego","Tierra del Fuego"],["Tucumán","Tucumán"]]">Argentina</option> 1936<option value="Armenia" data-provinces="[]">Armenia</option> 1937<option value="Aruba" data-provinces="[]">Aruba</option> 1938<option value="Ascension Island" data-provinces="[]">Ascension Island</option> 1939<option value="Australia" data-provinces="[["Australian Capital Territory","Australian Capital Territory"],["New South Wales","New South Wales"],["Northern Territory","Northern Territory"],["Queensland","Queensland"],["South Australia","South Australia"],["Tasmania","Tasmania"],["Victoria","Victoria"],["Western Australia","Western Australia"]]">Australia</option> 1940<option value="Austria" data-provinces="[]">Austria</option> 1941<option value="Azerbaijan" data-provinces="[]">Azerbaijan</option> 1942<option value="Bahamas" data-provinces="[]">Bahamas</option> 1943<option value="Bahrain" data-provinces="[]">Bahrain</option> 1944<option value="Bangladesh" data-provinces="[]">Bangladesh</option> 1945<option value="Barbados" data-provinces="[]">Barbados</option> 1946<option value="Belarus" data-provinces="[]">Belarus</option> 1947<option value="Belgium" data-provinces="[]">Belgium</option> 1948<option value="Belize" data-provinces="[]">Belize</option> 1949<option value="Benin" data-provinces="[]">Benin</option> 1950<option value="Bermuda" data-provinces="[]">Bermuda</option> 1951<option value="Bhutan" data-provinces="[]">Bhutan</option> 1952<option value="Bolivia" data-provinces="[]">Bolivia</option> 1953<option value="Bosnia And Herzegovina" data-provinces="[]">Bosnia & Herzegovina</option> 1954<option value="Botswana" data-provinces="[]">Botswana</option> 1955<option value="Brazil" data-provinces="[["Acre","Acre"],["Alagoas","Alagoas"],["Amapá","Amapá"],["Amazonas","Amazonas"],["Bahia","Bahia"],["Ceará","Ceará"],["Distrito Federal","Federal District"],["EspÃrito Santo","EspÃrito Santo"],["Goiás","Goiás"],["Maranhão","Maranhão"],["Mato Grosso","Mato Grosso"],["Mato Grosso do Sul","Mato Grosso do Sul"],["Minas Gerais","Minas Gerais"],["Paraná","Paraná"],["ParaÃba","ParaÃba"],["Pará","Pará"],["Pernambuco","Pernambuco"],["PiauÃ","PiauÃ"],["Rio Grande do Norte","Rio Grande do Norte"],["Rio Grande do Sul","Rio Grande do Sul"],["Rio de Janeiro","Rio de Janeiro"],["Rondônia","Rondônia"],["Roraima","Roraima"],["Santa Catarina","Santa Catarina"],["Sergipe","Sergipe"],["São Paulo","São Paulo"],["Tocantins","Tocantins"]]">Brazil</option> 1956<option value="British Indian Ocean Territory" data-provinces="[]">British Indian Ocean Territory</option> 1957<option value="Virgin Islands, British" data-provinces="[]">British Virgin Islands</option> 1958<option value="Brunei" data-provinces="[]">Brunei</option> 1959<option value="Bulgaria" data-provinces="[]">Bulgaria</option> 1960<option value="Burkina Faso" data-provinces="[]">Burkina Faso</option> 1961<option value="Burundi" data-provinces="[]">Burundi</option> 1962<option value="Cambodia" data-provinces="[]">Cambodia</option> 1963<option value="Republic of Cameroon" data-provinces="[]">Cameroon</option> 1964<option value="Canada" data-provinces="[["Alberta","Alberta"],["British Columbia","British Columbia"],["Manitoba","Manitoba"],["New Brunswick","New Brunswick"],["Newfoundland and Labrador","Newfoundland and Labrador"],["Northwest Territories","Northwest Territories"],["Nova Scotia","Nova Scotia"],["Nunavut","Nunavut"],["Ontario","Ontario"],["Prince Edward Island","Prince Edward Island"],["Quebec","Quebec"],["Saskatchewan","Saskatchewan"],["Yukon","Yukon"]]">Canada</option> 1965<option value="Cape Verde" data-provinces="[]">Cape Verde</option> 1966<option value="Caribbean Netherlands" data-provinces="[]">Caribbean Netherlands</option> 1967<option value="Cayman Islands" data-provinces="[]">Cayman Islands</option> 1968<option value="Central African Republic" data-provinces="[]">Central African Republic</option> 1969<option value="Chad" data-provinces="[]">Chad</option> 1970<option value="Chile" data-provinces="[["Antofagasta","Antofagasta"],["AraucanÃa","AraucanÃa"],["Arica and Parinacota","
1970Arica y Parinacota"],["Atacama","Atacama"],["Aysén","Aysén"],["BiobÃo","BÃo BÃo"],["Coquimbo","Coquimbo"],["Los Lagos","Los Lagos"],["Los RÃos","Los RÃos"],["Magallanes","Magallanes Region"],["Maule","Maule"],["O'Higgins","Libertador General Bernardo OâHiggins"],["Santiago","Santiago Metropolitan"],["Tarapacá","Tarapacá"],["ValparaÃso","ValparaÃso"],["Ãuble","Ãuble"]]">Chile</option> 1971<option value="China" data-provinces="[["Anhui","Anhui"],["Beijing","Beijing"],["Chongqing","Chongqing"],["Fujian","Fujian"],["Gansu","Gansu"],["Guangdong","Guangdong"],["Guangxi","Guangxi"],["Guizhou","Guizhou"],["Hainan","Hainan"],["Hebei","Hebei"],["Heilongjiang","Heilongjiang"],["Henan","Henan"],["Hubei","Hubei"],["Hunan","Hunan"],["Inner Mongolia","Inner Mongolia"],["Jiangsu","Jiangsu"],["Jiangxi","Jiangxi"],["Jilin","Jilin"],["Liaoning","Liaoning"],["Ningxia","Ningxia"],["Qinghai","Qinghai"],["Shaanxi","Shaanxi"],["Shandong","Shandong"],["Shanghai","Shanghai"],["Shanxi","Shanxi"],["Sichuan","Sichuan"],["Tianjin","Tianjin"],["Xinjiang","Xinjiang"],["Xizang","Tibet"],["Yunnan","Yunnan"],["Zhejiang","Zhejiang"]]">China</option> 1972<option value="Christmas Island" data-provinces="[]">Christmas Island</option> 1973<option value="Cocos (Keeling) Islands" data-provinces="[]">Cocos (Keeling) Islands</option> 1974<option value="Colombia" data-provinces="[["Amazonas","Amazonas"],["Antioquia","Antioquia"],["Arauca","Arauca"],["Atlántico","Atlántico"],["Bogotá, D.C.","Capital District"],["BolÃvar","BolÃvar"],["Boyacá","Boyacá"],["Caldas","Caldas"],["Caquetá","Caquetá"],["Casanare","Casanare"],["Cauca","Cauca"],["Cesar","Cesar"],["Chocó","Chocó"],["Cundinamarca","Cundinamarca"],["Córdoba","Córdoba"],["GuainÃa","GuainÃa"],["Guaviare","Guaviare"],["Huila","Huila"],["La Guajira","La Guajira"],["Magdalena","Magdalena"],["Meta","Meta"],["Nariño","Nariño"],["Norte de Santander","Norte de Santander"],["Putumayo","Putumayo"],["QuindÃo","QuindÃo"],["Risaralda","Risaralda"],["San Andrés, Providencia y Santa Catalina","San Andrés \u0026 Providencia"],["Santander","Santander"],["Sucre","Sucre"],["Tolima","Tolima"],["Valle del Cauca","Valle del Cauca"],["Vaupés","Vaupés"],["Vichada","Vichada"]]">Colombia</option> 1975<option value="Comoros" data-provinces="[]">Comoros</option> 1976<option value="Congo" data-provinces="[]">Congo - Brazzaville</option> 1977<option value="Congo, The Democratic Republic Of The" data-provinces="[]">Congo - Kinshasa</option> 1978<option value="Cook Islands" data-provinces="[]">Cook Islands</option> 1979<option value="Costa Rica" data-provinces="[["Alajuela","Alajuela"],["Cartago","Cartago"],["Guanacaste","Guanacaste"],["Heredia","Heredia"],["Limón","Limón"],["Puntarenas","Puntarenas"],["San José","San José"]]">Costa Rica</option> 1980<option value="Croatia" data-provinces="[]">Croatia</option> 1981<option value="Curaçao" data-provinces="[]">Curaçao</option> 1982<option value="Cyprus" data-provinces="[]">Cyprus</option> 1983<option value="Czech Republic" data-provinces="[]">Czechia</option> 1984<option value="Côte d'Ivoire" data-provinces="[]">Côte dâIvoire</option> 1985<option value="Denmark" data-provinces="[]">Denmark</option> 1986<option value="Djibouti" data-provinces="[]">Djibouti</option> 1987<option value="Dominica" data-provinces="[]">Dominica</option> 1988<option value="Dominican Republic" data-provinces="[]">Dominican Republic</option> 1989<option value="Ecuador" data-provinces="[]">Ecuador</option> 1990<option value="Egypt" data-provinces="[["6th of October","6th of October"],["Al Sharqia","Al Sharqia"],["Alexandria","Alexandria"],["Aswan","Aswan"],["Asyut","Asyut"],["Beheira","Beheira"],["Beni Suef","Beni Suef"],["Cairo","Cairo"],["Dakahlia","Dakahlia"],["Damietta","Damietta"],["Faiyum","Faiyum"],["Gharbia","Gharbia"],["Giza","Giza"],["Helwan","Helwan"],["Ismailia","Ismailia"],["Kafr el-Sheikh","Kafr el-Sheikh"],["Luxor","Luxor"],["Matrouh","Matrouh"],["Minya","Minya"],["Monufia","Monufia"],["New Valley","New Valley"],["North Sinai","North Sinai"],["Port Said","Port Said"],["Qalyubia","Qalyubia"],["Qena","Qena"],["Red Sea","Red Sea"],["Sohag","Sohag"],["South Sinai","South Sinai"],["Suez","Suez"]]">Egypt</option> 1991<option value="El Salvador" data-provinces="[["Ahuachapán","Ahuachapán"],["Cabañas","Cabañas"],["Chalatenango","Chalatenango"],["Cuscatlán","Cuscatlán"],["La Libertad","La Libertad"],["La Paz","La Paz"],["La Unión","La Unión"],["Morazán","Morazán"],["San Miguel","San Miguel"],["San Salvador","San Salvador"],["San Vicente","San Vicente"],["Santa Ana","Santa Ana"],["Sonsonate","Sonsonate"],["Usulután","Usulután"]]">El Salvador</option> 1992<option value="Equatorial Guinea" data-provinces="[]">Equatorial Guinea</option> 1993<option value="Eritrea" data-provinces="[]">Eritrea</option> 1994<option value="Estonia" data-provinces="[]">Estonia</option> 1995<option value="Eswatini" data-provinces="[]">Eswatini</option> 1996<option value="Ethiopia" data-provinces="[]">Ethiopia</option> 1997<option value="Falkland Islands (Malvinas)" data-provinces="[]">Falkland Islands</option> 1998<option value="Faroe Islands" data-provinces="[]">Faroe Islands</option> 1999<option value="Fiji" data-provinces="[]">Fiji</option> 2000<option value="Finland" data-provinces="[]">Finland</option> 2001<option value="France" data-provinces="[]">France</option> 2002<option value="French Guiana" data-provinces="[]">French Guiana</option> 2003<option value="French Polynesia" data-provinces="[]">French Polynesia</option> 2004<option value="French Southern Territories" data-provinces="[]">French Southern Territories</option> 2005<option value="Gabon" data-provinces="[]">Gabon</option> 2006<option value="Gambia" data-provinces="[]">Gambia</option> 2007<option value="Georgia" data-provinces="[]">Georgia</option> 2008<option value="Germany" data-provinces="[]">Germany</option> 2009<option value="Ghana" data-provinces="[]">Ghana</option> 2010<option value="Gibraltar" data-provinces="[]">Gibraltar</option> 2011<option value="Greece" data-provinces="[]">Greece</option> 2012<option value="Greenland" data-provinces="[]">Greenland</option> 2013<option value="Grenada" data-provinces="[]">Grenada</option> 2014<option value="Guadeloupe" data-provinces="[]">Guadeloupe</option> 2015<option value="Guatemala" data-provinces="[["Alta Verapaz","Alta Verapaz"],["Baja Verapaz","Baja Verapaz"],["Chimaltenango","Chimaltenango"],["Chiquimula","Chiquimula"],["El Progreso","El Progreso"],["Escuintla","Escuintla"],["Guatemala","Guatemala"],["Huehuetenango","Huehuetenango"],["Izabal","Izabal"],["Jalapa","Jalapa"],["Jutiapa","Jutiapa"],["Petén","Petén"],["Quetzaltenango","Quetzaltenango"],["Quiché","Quiché"],["Retalhuleu","Retalhuleu"],["Sacatepéquez","Sacatepéquez"],["San Marcos","San Marcos"],["Santa Rosa","Santa Rosa"],["Sololá","Sololá"],["Suchitepéquez","Suchitepéquez"],["Totonicapán","Totonicapán"],["Zacapa","Zacapa"]]">Guatemala</option> 2016<option value="Guernsey" data-provinces="[]">Guernsey</option> 2017<option value="Guinea" data-provinces="[]">Guinea</option> 2018<option value="Guinea Bissau" data-provinces="[]">Guinea-Bissau</option> 2019<option value="Guyana" data-provinces="[]">Guyana</option> 2020<option value="Haiti" data-provinces="[]">Haiti</option> 2021<option value="Honduras" data-provinces="[]">Honduras</option> 2022<option value="Hong Kong" data-provinces="[["Hong Kong Island","Hong Kong Island"],["Kowloon","Kowloon"],["New Territories","New Territories"]]">Hong Kong SAR</option> 2023<option value="Hungary" data-provinces="[]">Hungary</option> 2024<option value="Iceland" data-provinces="[]">Iceland</option> 2025<option value="India" data-provinces="[["Andaman and Nicobar Islands","Andaman and Nicobar Islands"],["Andhra Pradesh","Andhra Pradesh"],["Arunachal Pradesh","Arunachal Pradesh"],["Assam","Assam"],["Bihar","Bihar"],["Chandigarh","Chandigarh"],["Chhattisgarh","Chhattisgarh"],["Dadra and Nagar Haveli","Dadra and Nagar Haveli"],["Daman and Diu","Daman and Diu"],["Delhi","Delhi"],["Goa","Goa"],["Gujarat","Gujarat"],["Haryana","Haryana"],["Himachal Pradesh","Himachal Pradesh"],["Jammu and Kashmir","Jammu and Kashmir"],["Jharkhand","Jharkhand"],["Karnataka","Karnataka"],["Kerala","Kerala"],["Ladakh","Ladakh"],["Lakshadweep","Lakshadweep"],["Madhya Pradesh","Madhya Pradesh"],["Maharashtra","Maharashtra"],["Manipur","Manipur"],["Meghalaya","Meghalaya"],["Mizoram","Mizoram"],["Nagaland","Nagaland"],["Odisha","Odisha"],["Puducherry","Puducherry"],["Punjab","Punjab"],["Rajasthan","Rajasthan"],["Sikkim","Sikkim"],["Tamil Nadu","Tamil Nadu"],["Telangana","Telangana"],["Tripura","Tripura"],["Uttar Pradesh","Uttar Pradesh"],["Uttarakhand","Uttarakhand"],["West Bengal","West Bengal"]]">India</option> 2026<option value="Indonesia" data-provinces="[["Aceh","Aceh"],["Bali","Bali"],["Bangka Belitung","BangkaâBelitung Islands"],["Banten","Banten"],["Bengkulu","Bengkulu"],["Gorontalo","Gorontalo"],["Jakarta","Jakarta"],["Jambi","Jambi"],["Jawa Barat","West Java"],["Jawa Tengah","Central Java"],["Jawa Timur","East Java"],["Kalimantan Barat","West Kalimantan"],["Kalimantan Selatan","South Kalimantan"],["Kalimantan Tengah","Central Kalimantan"],["Kalimantan Timur","East Kalimantan"],["Kalimantan Utara","North Kalimantan"],["Kepulauan Riau","Riau Islands"],["
2026Lampung","Lampung"],["Maluku","Maluku"],["Maluku Utara","North Maluku"],["North Sumatra","North Sumatra"],["Nusa Tenggara Barat","West Nusa Tenggara"],["Nusa Tenggara Timur","East Nusa Tenggara"],["Papua","Papua"],["Papua Barat","West Papua"],["Riau","Riau"],["South Sumatra","South Sumatra"],["Sulawesi Barat","West Sulawesi"],["Sulawesi Selatan","South Sulawesi"],["Sulawesi Tengah","Central Sulawesi"],["Sulawesi Tenggara","Southeast Sulawesi"],["Sulawesi Utara","North Sulawesi"],["West Sumatra","West Sumatra"],["Yogyakarta","Yogyakarta"]]">Indonesia</option> 2027<option value="Iraq" data-provinces="[]">Iraq</option> 2028<option value="Ireland" data-provinces="[["Carlow","Carlow"],["Cavan","Cavan"],["Clare","Clare"],["Cork","Cork"],["Donegal","Donegal"],["Dublin","Dublin"],["Galway","Galway"],["Kerry","Kerry"],["Kildare","Kildare"],["Kilkenny","Kilkenny"],["Laois","Laois"],["Leitrim","Leitrim"],["Limerick","Limerick"],["Longford","Longford"],["Louth","Louth"],["Mayo","Mayo"],["Meath","Meath"],["Monaghan","Monaghan"],["Offaly","Offaly"],["Roscommon","Roscommon"],["Sligo","Sligo"],["Tipperary","Tipperary"],["Waterford","Waterford"],["Westmeath","Westmeath"],["Wexford","Wexford"],["Wicklow","Wicklow"]]">Ireland</option> 2029<option value="Isle Of Man" data-provinces="[]">Isle of Man</option> 2030<option value="Israel" data-provinces="[]">Israel</option> 2031<option value="Italy" data-provinces="[["Agrigento","Agrigento"],["Alessandria","Alessandria"],["Ancona","Ancona"],["Aosta","Aosta Valley"],["Arezzo","Arezzo"],["Ascoli Piceno","Ascoli Piceno"],["Asti","Asti"],["Avellino","Avellino"],["Bari","Bari"],["Barletta-Andria-Trani","Barletta-Andria-Trani"],["Belluno","Belluno"],["Benevento","Benevento"],["Bergamo","Bergamo"],["Biella","Biella"],["Bologna","Bologna"],["Bolzano","South Tyrol"],["Brescia","Brescia"],["Brindisi","Brindisi"],["Cagliari","Cagliari"],["Caltanissetta","Caltanissetta"],["Campobasso","Campobasso"],["Caserta","Caserta"],["Catania","Catania"],["Catanzaro","Catanzaro"],["Chieti","Chieti"],["Como","Como"],["Cosenza","Cosenza"],["Cremona","Cremona"],["Crotone","Crotone"],["Cuneo","Cuneo"],["Enna","Enna"],["Fermo","Fermo"],["Ferrara","Ferrara"],["Firenze","Florence"],["Foggia","Foggia"],["Forlì-Cesena","Forlì-Cesena"],["Frosinone","Frosinone"],["Gallura Nord-Est Sardegna","Gallura Nord-Est Sardegna"],["Genova","Genoa"],["Gorizia","Gorizia"],["Grosseto","Grosseto"],["Imperia","Imperia"],["Isernia","Isernia"],["L'Aquila","LâAquila"],["La Spezia","La Spezia"],["Latina","Latina"],["Lecce","Lecce"],["Lecco","Lecco"],["Livorno","Livorno"],["Lodi","Lodi"],["Lucca","Lucca"],["Macerata","Macerata"],["Mantova","Mantua"],["Massa-Carrara","Massa and Carrara"],["Matera","Matera"],["Medio Campidano","Medio Campidano"],["Messina","Messina"],["Milano","Milan"],["Modena","Modena"],["Monza e Brianza","Monza and Brianza"],["Napoli","Naples"],["Novara","Novara"],["Nuoro","Nuoro"],["Ogliastra","Ogliastra"],["Oristano","Oristano"],["Padova","Padua"],["Palermo","Palermo"],["Parma","Parma"],["Pavia","Pavia"],["Perugia","Perugia"],["Pesaro e Urbino","Pesaro and Urbino"],["Pescara","Pescara"],["Piacenza","Piacenza"],["Pisa","Pisa"],["Pistoia","Pistoia"],["Pordenone","Pordenone"],["Potenza","Potenza"],["Prato","Prato"],["Ragusa","Ragusa"],["Ravenna","Ravenna"],["Reggio Calabria","Reggio Calabria"],["Reggio Emilia","Reggio Emilia"],["Rieti","Rieti"],["Rimini","Rimini"],["Roma","Rome"],["Rovigo","Rovigo"],["Salerno","Salerno"],["Sassari","Sassari"],["Savona","Savona"],["Siena","Siena"],["Siracusa","Syracuse"],["Sondrio","Sondrio"],["Sulcis Iglesiente","Sulcis Iglesiente"],["Taranto","Taranto"],["Teramo","Teramo"],["Terni","Terni"],["Torino","Turin"],["Trapani","Trapani"],["Trento","Trentino"],["Treviso","Treviso"],["Trieste","Trieste"],["Udine","Udine"],["Varese","Varese"],["Venezia","Venice"],["Verbano-Cusio-Ossola","Verbano-Cusio-Ossola"],["Vercelli","Vercelli"],["Verona","Verona"],["Vibo Valentia","Vibo Valentia"],["Vicenza","Vicenza"],["Viterbo","Viterbo"]]">Italy</option> 2032<option value="Jamaica" data-provinces="[]">Jamaica</option> 2033<option value="Japan" data-provinces="[["Aichi","Aichi"],["Akita","Akita"],["Aomori","Aomori"],["Chiba","Chiba"],["Ehime","Ehime"],["Fukui","Fukui"],["Fukuoka","Fukuoka"],["Fukushima","Fukushima"],["Gifu","Gifu"],["Gunma","Gunma"],["Hiroshima","Hiroshima"],["HokkaidÅ","Hokkaido"],["HyÅgo","Hyogo"],["Ibaraki","Ibaraki"],["Ishikawa","Ishikawa"],["Iwate","Iwate"],["Kagawa","Kagawa"],["Kagoshima","Kagoshima"],["Kanagawa","Kanagawa"],["Kumamoto","Kumamoto"],["KyÅto","Kyoto"],["KÅchi","Kochi"],["Mie","Mie"],["Miyagi","Miyagi"],["Miyazaki","Miyazaki"],["Nagano","Nagano"],["Nagasaki","Nagasaki"],["Nara","Nara"],["Niigata","Niigata"],["Okayama","Okayama"],["Okinawa","Okinawa"],["Saga","Saga"],["Saitama","Saitama"],["Shiga","Shiga"],["Shimane","Shimane"],["Shizuoka","Shizuoka"],["Tochigi","Tochigi"],["Tokushima","Tokushima"],["Tottori","Tottori"],["Toyama","Toyama"],["TÅkyÅ","Tokyo"],["Wakayama","Wakayama"],["Yamagata","Yamagata"],["Yamaguchi","Yamaguchi"],["Yamanashi","Yamanashi"],["Åita","Oita"],["Åsaka","Osaka"]]">Japan</option> 2034<option value="Jersey" data-provinces="[]">Jersey</option> 2035<option value="Jordan" data-provinces="[]">Jordan</option> 2036<option value="Kazakhstan" data-provinces="[]">Kazakhstan</option> 2037<option value="Kenya" data-provinces="[]">Kenya</option> 2038<option value="Kiribati" data-provinces="[]">Kiribati</option> 2039<option value="Kosovo" data-provinces="[]">Kosovo</option> 2040<option value="Kuwait" data-provinces="[["Al Ahmadi","Al Ahmadi"],["Al Asimah","Al Asimah"],["Al Farwaniyah","Al Farwaniyah"],["Al Jahra","Al Jahra"],["Hawalli","Hawalli"],["Mubarak Al-Kabeer","Mubarak Al-Kabeer"]]">Kuwait</option> 2041<option value="Kyrgyzstan" data-provinces="[]">Kyrgyzstan</option> 2042<option value="Lao People's Democratic Republic" data-provinces="[]">Laos</option> 2043<option value="Latvia" data-provinces="[]">Latvia</option> 2044<option value="Lebanon" data-provinces="[]">Lebanon</option> 2045<option value="Lesotho" data-provinces="[]">Lesotho</option> 2046<option value="Liberia" data-provinces="[]">Liberia</option> 2047<option value="Libyan Arab Jamahiriya" data-provinces="[]">Libya</option> 2048<option value="Liechtenstein" data-provinces="[]">Liechtenstein</option> 2049<option value="Lithuania" data-provinces="[]">Lithuania</option> 2050<option value="Luxembourg" data-provinces="[]">Luxembourg</option> 2051<option value="Macao" data-provinces="[]">Macao SAR</option>
2052<option value="Madagascar" data-provinces="[]">Madagascar</option> 2053<option value="Malawi" data-provinces="[]">Malawi</option> 2054<option value="Malaysia" data-provinces="[["Johor","Johor"],["Kedah","Kedah"],["Kelantan","Kelantan"],["Kuala Lumpur","Kuala Lumpur"],["Labuan","Labuan"],["Melaka","Malacca"],["Negeri Sembilan","Negeri Sembilan"],["Pahang","Pahang"],["Penang","Penang"],["Perak","Perak"],["Perlis","Perlis"],["Putrajaya","Putrajaya"],["Sabah","Sabah"],["Sarawak","Sarawak"],["Selangor","Selangor"],["Terengganu","Terengganu"]]">Malaysia</option> 2055<option value="Maldives" data-provinces="[]">Maldives</option> 2056<option value="Mali" data-provinces="[]">Mali</option> 2057<option value="Malta" data-provinces="[]">Malta</option> 2058<option value="Martinique" data-provinces="[]">Martinique</option> 2059<option value="Mauritania" data-provinces="[]">Mauritania</option> 2060<option value="Mauritius" data-provinces="[]">Mauritius</option> 2061<option value="Mayotte" data-provinces="[]">Mayotte</option> 2062<option value="Mexico" data-provinces="[["Aguascalientes","Aguascalientes"],["Baja California","Baja California"],["Baja California Sur","Baja California Sur"],["Campeche","Campeche"],["Chiapas","Chiapas"],["Chihuahua","Chihuahua"],["Ciudad de México","Ciudad de Mexico"],["Coahuila","Coahuila"],["Colima","Colima"],["Durango","Durango"],["Guanajuato","Guanajuato"],["Guerrero","Guerrero"],["Hidalgo","Hidalgo"],["Jalisco","Jalisco"],["Michoacán","Michoacán"],["Morelos","Morelos"],["México","Mexico State"],["Nayarit","Nayarit"],["Nuevo León","Nuevo León"],["Oaxaca","Oaxaca"],["Puebla","Puebla"],["Querétaro","Querétaro"],["Quintana Roo","Quintana Roo"],["San Luis PotosÃ","San Luis PotosÃ"],["Sinaloa","Sinaloa"],["Sonora","Sonora"],["Tabasco","Tabasco"],["Tamaulipas","Tamaulipas"],["Tlaxcala","Tlaxcala"],["Veracruz","Veracruz"],["Yucatán","Yucatán"],["Zacatecas","Zacatecas"]]">Mexico</option> 2063<option value="Moldova, Republic of" data-provinces="[]">Moldova</option> 2064<option value="Monaco" data-provinces="[]">Monaco</option> 2065<option value="Mongolia" data-provinces="[]">Mongolia</option> 2066<option value="Montenegro" data-provinces="[]">Montenegro</option> 2067<option value="Montserrat" data-provinces="[]">Montserrat</option> 2068<option value="Morocco" data-provinces="[]">Morocco</option> 2069<option value="Mozambique" data-provinces="[]">Mozambique</option> 2070<option value="Myanmar" data-provinces="[]">Myanmar (Burma)</option> 2071<option value="Namibia" data-provinces="[]">Namibia</option> 2072<option value="Nauru" data-provinces="[]">Nauru</option> 2073<option value="Nepal" data-provinces="[]">Nepal</option> 2074<option value="Netherlands" data-provinces="[]">Netherlands</option> 2075<option value="New Caledonia" data-provinces="[]">New Caledonia</option> 2076<option value="New Zealand" data-provinces="[["Auckland","Auckland"],["Bay of Plenty","Bay of Plenty"],["Canterbury","Canterbury"],["Chatham Islands","Chatham Islands"],["Gisborne","Gisborne"],["Hawke's Bay","Hawkeâs Bay"],["Manawatu-Wanganui","ManawatÅ«-Whanganui"],["Marlborough","Marlborough"],["Nelson","Nelson"],["Northland","Northland"],["Otago","Otago"],["Southland","Southland"],["Taranaki","Taranaki"],["Tasman","Tasman"],["Waikato","Waikato"],["Wellington","Wellington"],["West Coast","West Coast"]]">New Zealand</option> 2077<option value="Nicaragua" data-provinces="[]">Nicaragua</option> 2078<option value="Niger" data-provinces="[]">Niger</option> 2079<option value="Nigeria" data-provinces="[["Abia","Abia"],["Abuja Federal Capital Territory","Federal Capital Territory"],["Adamawa","Adamawa"],["Akwa Ibom","Akwa Ibom"],["Anambra","Anambra"],["Bauchi","Bauchi"],["Bayelsa","Bayelsa"],["Benue","Benue"],["Borno","Borno"],["Cross River","Cross River"],["Delta","Delta"],["Ebonyi","Ebonyi"],["Edo","Edo"],["Ekiti","Ekiti"],["Enugu","Enugu"],["Gombe","Gombe"],["Imo","Imo"],["Jigawa","Jigawa"],["Kaduna","Kaduna"],["Kano","Kano"],["Katsina","Katsina"],["Kebbi","Kebbi"],["Kogi","Kogi"],["Kwara","Kwara"],["Lagos","Lagos"],["Nasarawa","Nasarawa"],["Niger","Niger"],["Ogun","Ogun"],["Ondo","Ondo"],["Osun","Osun"],["Oyo","Oyo"],["Plateau","Plateau"],["Rivers","Rivers"],["Sokoto","Sokoto"],["Taraba","Taraba"],["Yobe","Yobe"],["Zamfara","Zamfara"]]">Nigeria</option> 2080<option value="Niue" data-provinces="[]">Niue</option> 2081<option value="Norfolk Island" data-provinces="[]">Norfolk Island</option> 2082<option value="North Macedonia" data-provinces="[]">North Macedonia</option> 2083<option value="Norway" data-provinces="[]">Norway</option> 2084<option value="Oman" data-provinces="[]">Oman</option> 2085<option value="Pakistan" data-provinces="[]">Pakistan</option> 2086<option value="Palestinian Territory, Occupied" data-provinces="[]">Palestinian Territories</option> 2087<option value="Panama" data-provinces="[["Bocas del Toro","Bocas del Toro"],["ChiriquÃ","ChiriquÃ"],["Coclé","Coclé"],["Colón","Colón"],["Darién","Darién"],["Emberá","Emberá"],["Herrera","Herrera"],["Kuna Yala","Guna Yala"],["Los Santos","Los Santos"],["Ngöbe-Buglé","Ngöbe-Buglé"],["Panamá","Panamá"],["Panamá Oeste","West Panamá"],["Veraguas","Veraguas"]]">Panama</option> 2088<option value="Papua New Guinea" data-provinces="[]">Papua New Guinea</option> 2089<option value="Paraguay" data-provinces="[]">Paraguay</option> 2090<option value="Peru" data-provinces="[["Amazonas","Amazonas"],["ApurÃmac","ApurÃmac"],["Arequipa","Arequipa"],["Ayacucho","Ayacucho"],["Cajamarca","Cajamarca"],["Callao","El Callao"],["Cuzco","Cusco"],["Huancavelica","Huancavelica"],["Huánuco","Huánuco"],["Ica","Ica"],["JunÃn","JunÃn"],["La Libertad","La Libertad"],["Lambayeque","Lambayeque"],["Lima (departamento)","Lima (Department)"],["Lima (provincia)","Lima (Metropolitan)"],["Loreto","Loreto"],["Madre de Dios","Madre de Dios"],["Moquegua","Moquegua"],["Pasco","Pasco"],["Piura","Piura"],["Puno","Puno"],["San MartÃn","San MartÃn"],["Tacna","Tacna"],["Tumbes","Tumbes"],["Ucayali","Ucayali"],["Ãncash","Ancash"]]">
2090Peru</option> 2091<option value="Philippines" data-provinces="[["Abra","Abra"],["Agusan del Norte","Agusan del Norte"],["Agusan del Sur","Agusan del Sur"],["Aklan","Aklan"],["Albay","Albay"],["Antique","Antique"],["Apayao","Apayao"],["Aurora","Aurora"],["Basilan","Basilan"],["Bataan","Bataan"],["Batanes","Batanes"],["Batangas","Batangas"],["Benguet","Benguet"],["Biliran","Biliran"],["Bohol","Bohol"],["Bukidnon","Bukidnon"],["Bulacan","Bulacan"],["Cagayan","Cagayan"],["Camarines Norte","Camarines Norte"],["Camarines Sur","Camarines Sur"],["Camiguin","Camiguin"],["Capiz","Capiz"],["Catanduanes","Catanduanes"],["Cavite","Cavite"],["Cebu","Cebu"],["Cotabato","Cotabato"],["Davao Occidental","Davao Occidental"],["Davao Oriental","Davao Oriental"],["Davao de Oro","Compostela Valley"],["Davao del Norte","Davao del Norte"],["Davao del Sur","Davao del Sur"],["Dinagat Islands","Dinagat Islands"],["Eastern Samar","Eastern Samar"],["Guimaras","Guimaras"],["Ifugao","Ifugao"],["Ilocos Norte","Ilocos Norte"],["Ilocos Sur","Ilocos Sur"],["Iloilo","Iloilo"],["Isabela","Isabela"],["Kalinga","Kalinga"],["La Union","La Union"],["Laguna","Laguna"],["Lanao del Norte","Lanao del Norte"],["Lanao del Sur","Lanao del Sur"],["Leyte","Leyte"],["Maguindanao","Maguindanao"],["Marinduque","Marinduque"],["Masbate","Masbate"],["Metro Manila","Metro Manila"],["Misamis Occidental","Misamis Occidental"],["Misamis Oriental","Misamis Oriental"],["Mountain Province","Mountain"],["Negros Occidental","Negros Occidental"],["Negros Oriental","Negros Oriental"],["Northern Samar","Northern Samar"],["Nueva Ecija","Nueva Ecija"],["Nueva Vizcaya","Nueva Vizcaya"],["Occidental Mindoro","Occidental Mindoro"],["Oriental Mindoro","Oriental Mindoro"],["Palawan","Palawan"],["Pampanga","Pampanga"],["Pangasinan","Pangasinan"],["Quezon","Quezon"],["Quirino","Quirino"],["Rizal","Rizal"],["Romblon","Romblon"],["Samar","Samar"],["Sarangani","Sarangani"],["Siquijor","Siquijor"],["Sorsogon","Sorsogon"],["South Cotabato","South Cotabato"],["Southern Leyte","Southern Leyte"],["Sultan Kudarat","Sultan Kudarat"],["Sulu","Sulu"],["Surigao del Norte","Surigao del Norte"],["Surigao del Sur","Surigao del Sur"],["Tarlac","Tarlac"],["Tawi-Tawi","Tawi-Tawi"],["Zambales","Zambales"],["Zamboanga Sibugay","Zamboanga Sibugay"],["Zamboanga del Norte","Zamboanga del Norte"],["Zamboanga del Sur","Zamboanga del Sur"]]">Philippines</option> 2092<option value="Pitcairn" data-provinces="[]">Pitcairn Islands</option> 2093<option value="Poland" data-provinces="[]">Poland</option> 2094<option value="Portugal" data-provinces="[["Aveiro","Aveiro"],["Açores","Azores"],["Beja","Beja"],["Braga","Braga"],["Bragança","Bragança"],["Castelo Branco","Castelo Branco"],["Coimbra","Coimbra"],["Faro","Faro"],["Guarda","Guarda"],["Leiria","Leiria"],["Lisboa","Lisbon"],["Madeira","Madeira"],["Portalegre","Portalegre"],["Porto","Porto"],["Santarém","Santarém"],["Setúbal","Setúbal"],["Viana do Castelo","Viana do Castelo"],["Vila Real","Vila Real"],["Viseu","Viseu"],["Ãvora","Ãvora"]]">Portugal</option> 2095<option value="Qatar" data-provinces="[]">Qatar</option> 2096<option value="Reunion" data-provinces="[]">Réunion</option> 2097<option value="Romania" data-provinces="[["Alba","Alba"],["Arad","Arad"],["ArgeÈ","ArgeÈ"],["BacÄu","BacÄu"],["Bihor","Bihor"],["BistriÈa-NÄsÄud","BistriÅ£a-NÄsÄud"],["BotoÈani","BotoÅani"],["BraÈov","BraÅov"],["BrÄila","BrÄila"],["BucureÈti","Bucharest"],["BuzÄu","BuzÄu"],["CaraÈ-Severin","CaraÈ-Severin"],["Cluj","Cluj"],["ConstanÈa","ConstanÈa"],["Covasna","Covasna"],["CÄlÄraÈi","CÄlÄraÈi"],["Dolj","Dolj"],["DâmboviÈa","DâmboviÈa"],["GalaÈi","GalaÈi"],["Giurgiu","Giurgiu"],["Gorj","Gorj"],["Harghita","Harghita"],["Hunedoara","Hunedoara"],["IalomiÈa","IalomiÈa"],["IaÈi","IaÈi"],["Ilfov","Ilfov"],["MaramureÈ","MaramureÅ"],["MehedinÈi","MehedinÈi"],["MureÈ","MureÅ"],["NeamÈ","NeamÅ£"],["Olt","Olt"],["Prahova","Prahova"],["Satu Mare","Satu Mare"],["Sibiu","Sibiu"],["Suceava","Suceava"],["SÄlaj","SÄlaj"],["Teleorman","Teleorman"],["TimiÈ","TimiÈ"],["Tulcea","Tulcea"],["Vaslui","Vaslui"],["Vrancea","Vrancea"],["Vâlcea","Vâlcea"]]">Romania</option> 2098<option value="Russia" data-provinces="[["Altai Krai","Altai Krai"],["Altai Republic","Altai"],["Amur Oblast","Amur"],["Arkhangelsk Oblast","Arkhangelsk"],["Astrakhan Oblast","Astrakhan"],["Belgorod Oblast","Belgorod"],["Bryansk Oblast","Bryansk"],["Chechen Republic","Chechen"],["Chelyabinsk Oblast","Chelyabinsk"],["Chukotka Autonomous Okrug","Chukotka Okrug"],["Chuvash Republic","Chuvash"],["Irkutsk Oblast","Irkutsk"],["Ivanovo Oblast","Ivanovo"],["Jewish Autonomous Oblast","Jewish"],["Kabardino-Balkarian Republic","Kabardino-Balkar"],["Kaliningrad Oblast","Kaliningrad"],["Kaluga Oblast","Kaluga"],["Kamchatka Krai","Kamchatka Krai"],["KarachayâCherkess Republic","Karachay-Cherkess"],["Kemerovo Oblast","Kemerovo"],["Khabarovsk Krai","Khabarovsk Krai"],["Khanty-Mansi Autonomous Okrug","Khanty-Mansi"],["Kirov Oblast","Kirov"],["Komi Republic","Komi"],["Kostroma Oblast","Kostroma"],["Krasnodar Krai","Krasnodar Krai"],["Krasnoyarsk Krai","Krasnoyarsk Krai"],["Kurgan Oblast","Kurgan"],["Kursk Oblast","Kursk"],["Leningrad Oblast","Leningrad"],["Lipetsk Oblast","Lipetsk"],["Magadan Oblast","Magadan"],["Mari El Republic","Mari El"],["Moscow","Moscow"],["Moscow Oblast","Moscow Province"],["Murmansk Oblast","Murmansk"],["Nizhny Novgorod Oblast","Nizhny Novgorod"],["Novgorod Oblast","Novgorod"],["Novosibirsk Oblast","Novosibirsk"],["Omsk Oblast","Omsk"],["Orenburg Oblast","Orenburg"],["Oryol Oblast","Oryol"],["Penza Oblast","Penza"],["Perm Krai","Perm Krai"],["Primorsky Krai","Primorsky Krai"],["Pskov Oblast","Pskov"],["Republic of Adygeya","Adygea"],["Republic of Bashkortostan","Bashkortostan"],["Republic of Buryatia","Buryat"],["Republic of Dagestan","Dagestan"],["Republic of Ingushetia","Ingushetia"],["Republic of Kalmykia","Kalmykia"],["Republic of Karelia","Karelia"],["Republic of Khakassia","Khakassia"],["Republic of Mordovia","Mordovia"],["Republic of North OssetiaâAlania","North Ossetia-Alania"],["Republic of Tatarstan","Tatarstan"],["Rostov Oblast","Rostov"],["Ryazan Oblast","Ryazan"],["Saint Petersburg","Saint Petersburg"],["Sakha Republic (Yakutia)","Sakha"],["Sakhalin Oblast","Sakhalin"],["Samara Oblast","Samara"],["Saratov Oblast","Saratov"],["Smolensk Oblast","Smolensk"],["Stavropol Krai","Stavropol Krai"],["Sverdlovsk Oblast","Sverdlovsk"],["Tambov Oblast","Tambov"],["Tomsk Oblast","Tomsk"],["Tula Oblast","Tula"],["Tver Oblast","Tver"],["Tyumen Oblast","Tyumen"],["Tyva Republic","Tuva"],["Udmurtia","Udmurt"],["Ulyanovsk Oblast","Ulyanovsk"],["Vladimir Oblast","Vladimir"],["Volgograd Oblast","Volgograd"],["Vologda Oblast","Vologda"],["Voronezh Oblast","Voronezh"],["Yamalo-Nenets Autonomous Okrug","Yamalo-Nenets Okrug"],["Yaroslavl Oblast","Yaroslavl"],["Zabaykalsky Krai","Zabaykalsky Krai"]]">Russia</option> 2099<option value="Rwanda" data-provinces="[]">Rwanda</option> 2100<option value="Samoa" data-provinces="[]">Samoa</option> 2101<option value="San Marino" data-provinces="[]">San Marino</option> 2102<option value="Sao Tome And Principe" data-provinces="[]">São Tomé & PrÃncipe</option> 2103<option value="Saudi Arabia" data-provinces="[]">Saudi Arabia</option> 2104<option value="Senegal" data-provinces="[]">Senegal</option> 2105<option value="Serbia" data-provinces="[]">Serbia</option> 2106<option value="Seychelles" data-provinces="[]">Seychelles</option> 2107<option value="Sierra Leone" data-provinces="[]">Sierra Leone</option> 2108<option value="Singapore" data-provinces="[]">Singapore</option> 2109<option value="Sint Maarten" data-provinces="[]">Sint Maarten</option> 2110<option value="Slovakia" data-provinces="[]">Slovakia</option> 2111<option value="Slovenia" data-provinces="[]">Slovenia</option> 2112<option value="Solomon Islands" data-provinces="[]">Solomon Islands</option> 2113<option value="Somalia" data-provinces="[]">Somalia</option> 2114<option value="South Africa" data-provinces="[["Eastern Cape","Eastern Cape"],["Free State","Free State"],["Gauteng","Gauteng"],["KwaZulu-Natal","KwaZulu-Natal"],["Limpopo","Limpopo"],["Mpumalanga","Mpumalanga"],["North West","North West"],["Northern Cape","Northern Cape"],["Western Cape","Western Cape"]]">South Africa</option> 2115<option value="South Georgia And The South Sandwich Islands" data-provinces="[]">South Georgia & South Sandwich Islands</option> 2116<option value="South Korea" data-provinces="[["Busan","Busan"],["Chungbuk","North Chungcheong"],["Chungnam","South Chungcheong"],["Daegu","Daegu"],["Daejeon","Daejeon"],["Gangwon","Gangwon"],["Gwangju","Gwangju City"],["Gyeongbuk","North Gyeongsang"],["Gyeonggi","Gyeonggi"],["Gyeongnam","South Gyeongsang"],["Incheon","Incheon"],["Jeju","Jeju"],["Jeonbuk","North Jeolla"],["Jeonnam","South Jeolla"],["Sejong","Sejong"],["Seoul","Seoul"],["Ulsan","Ulsan"]]">South Korea</option> 2117<option value="South Sudan" data-provinces="[]">South Sudan</option> 2118<option value="Spain" data-provinces="[["A Coruña","A Coruña"],["Albacete","Albacete"],["Alicante","Alicante"],["AlmerÃa","AlmerÃa"],["Asturias","Asturias Province"],["Badajoz","Badajoz"],["Balears","Balears Province"],["Barcelona","Barcelona"],["Burgos","Burgos"],["Cantabria","Cantabria Province"],["Castellón","Castellón"],["Ceuta","Ceuta"],["Ciudad Real","Ciudad Real"],["Cuenca","Cuenca"],["Cáceres","Cáceres"],["Cádiz","Cádiz"],["Córdoba","Córdoba"],["Girona","Girona"],["Granada","Granada"],["Guadalajara","Guadalajara"],["
2118Guipúzcoa","Gipuzkoa"],["Huelva","Huelva"],["Huesca","Huesca"],["Jaén","Jaén"],["La Rioja","La Rioja Province"],["Las Palmas","Las Palmas"],["León","León"],["Lleida","Lleida"],["Lugo","Lugo"],["Madrid","Madrid Province"],["Melilla","Melilla"],["Murcia","Murcia"],["Málaga","Málaga"],["Navarra","Navarra"],["Ourense","Ourense"],["Palencia","Palencia"],["Pontevedra","Pontevedra"],["Salamanca","Salamanca"],["Santa Cruz de Tenerife","Santa Cruz de Tenerife"],["Segovia","Segovia"],["Sevilla","Seville"],["Soria","Soria"],["Tarragona","Tarragona"],["Teruel","Teruel"],["Toledo","Toledo"],["Valencia","Valencia"],["Valladolid","Valladolid"],["Vizcaya","Biscay"],["Zamora","Zamora"],["Zaragoza","Zaragoza"],["Ãlava","Ãlava"],["Ãvila","Ãvila"]]">Spain</option> 2119<option value="Sri Lanka" data-provinces="[]">Sri Lanka</option> 2120<option value="Saint Barthélemy" data-provinces="[]">St. Barthélemy</option> 2121<option value="Saint Helena" data-provinces="[]">St. Helena</option> 2122<option value="Saint Kitts And Nevis" data-provinces="[]">St. Kitts & Nevis</option> 2123<option value="Saint Lucia" data-provinces="[]">St. Lucia</option> 2124<option value="Saint Martin" data-provinces="[]">St. Martin</option> 2125<option value="Saint Pierre And Miquelon" data-provinces="[]">St. Pierre & Miquelon</option> 2126<option value="St. Vincent" data-provinces="[]">St. Vincent & Grenadines</option> 2127<option value="Sudan" data-provinces="[]">Sudan</option> 2128<option value="Suriname" data-provinces="[]">Suriname</option> 2129<option value="Svalbard And Jan Mayen" data-provinces="[]">Svalbard & Jan Mayen</option> 2130<option value="Sweden" data-provinces="[]">Sweden</option> 2131<option value="Switzerland" data-provinces="[]">Switzerland</option> 2132<option value="Taiwan" data-provinces="[]">Taiwan</option> 2133<option value="Tajikistan" data-provinces="[]">Tajikistan</option> 2134<option value="Tanzania, United Republic Of" data-provinces="[]">Tanzania</option> 2135<option value="Thailand" data-provinces="[["Amnat Charoen","Amnat Charoen"],["Ang Thong","Ang Thong"],["Bangkok","Bangkok"],["Bueng Kan","Bueng Kan"],["Buriram","Buri Ram"],["Chachoengsao","Chachoengsao"],["Chai Nat","Chai Nat"],["Chaiyaphum","Chaiyaphum"],["Chanthaburi","Chanthaburi"],["Chiang Mai","Chiang Mai"],["Chiang Rai","Chiang Rai"],["Chon Buri","Chon Buri"],["Chumphon","Chumphon"],["Kalasin","Kalasin"],["Kamphaeng Phet","Kamphaeng Phet"],["Kanchanaburi","Kanchanaburi"],["Khon Kaen","Khon Kaen"],["Krabi","Krabi"],["Lampang","Lampang"],["Lamphun","Lamphun"],["Loei","Loei"],["Lopburi","Lopburi"],["Mae Hong Son","Mae Hong Son"],["Maha Sarakham","Maha Sarakham"],["Mukdahan","Mukdahan"],["Nakhon Nayok","Nakhon Nayok"],["Nakhon Pathom","Nakhon Pathom"],["Nakhon Phanom","Nakhon Phanom"],["Nakhon Ratchasima","Nakhon Ratchasima"],["Nakhon Sawan","Nakhon Sawan"],["Nakhon Si Thammarat","Nakhon Si Thammarat"],["Nan","Nan"],["Narathiwat","Narathiwat"],["Nong Bua Lam Phu","Nong Bua Lam Phu"],["Nong Khai","Nong Khai"],["Nonthaburi","Nonthaburi"],["Pathum Thani","Pathum Thani"],["Pattani","Pattani"],["Pattaya","Pattaya"],["Phangnga","Phang Nga"],["Phatthalung","Phatthalung"],["Phayao","Phayao"],["Phetchabun","Phetchabun"],["Phetchaburi","Phetchaburi"],["Phichit","Phichit"],["Phitsanulok","Phitsanulok"],["
2135Phra Nakhon Si Ayutthaya","Phra Nakhon Si Ayutthaya"],["Phrae","Phrae"],["Phuket","Phuket"],["Prachin Buri","Prachin Buri"],["Prachuap Khiri Khan","Prachuap Khiri Khan"],["Ranong","Ranong"],["Ratchaburi","Ratchaburi"],["Rayong","Rayong"],["Roi Et","Roi Et"],["Sa Kaeo","Sa Kaeo"],["Sakon Nakhon","Sakon Nakhon"],["Samut Prakan","Samut Prakan"],["Samut Sakhon","Samut Sakhon"],["Samut Songkhram","Samut Songkhram"],["Saraburi","Saraburi"],["Satun","Satun"],["Sing Buri","Sing Buri"],["Sisaket","Si Sa Ket"],["Songkhla","Songkhla"],["Sukhothai","Sukhothai"],["Suphan Buri","Suphanburi"],["Surat Thani","Surat Thani"],["Surin","Surin"],["Tak","Tak"],["Trang","Trang"],["Trat","Trat"],["Ubon Ratchathani","Ubon Ratchathani"],["Udon Thani","Udon Thani"],["Uthai Thani","Uthai Thani"],["Uttaradit","Uttaradit"],["Yala","Yala"],["Yasothon","Yasothon"]]">Thailand</option> 2136<option value="Timor Leste" data-provinces="[]">Timor-Leste</option> 2137<option value="Togo" data-provinces="[]">Togo</option> 2138<option value="Tokelau" data-provinces="[]">Tokelau</option> 2139<option value="Tonga" data-provinces="[]">Tonga</option> 2140<option value="Trinidad and Tobago" data-provinces="[]">Trinidad & Tobago</option> 2141<option value="Tristan da Cunha" data-provinces="[]">Tristan da Cunha</option> 2142<option value="Tunisia" data-provinces="[]">Tunisia</option> 2143<option value="Turkey" data-provinces="[]">Türkiye</option> 2144<option value="Turkmenistan" data-provinces="[]">Turkmenistan</option> 2145<option value="Turks and Caicos Islands" data-provinces="[]">Turks & Caicos Islands</option> 2146<option value="Tuvalu" data-provinces="[]">Tuvalu</option> 2147<option value="United States Minor Outlying Islands" data-provinces="[]">U.S. Outlying Islands</option> 2148<option value="Uganda" data-provinces="[]">Uganda</option> 2149<option value="Ukraine" data-provinces="[]">Ukraine</option> 2150<option value="United Arab Emirates" data-provinces="[["Abu Dhabi","Abu Dhabi"],["Ajman","Ajman"],["Dubai","Dubai"],["Fujairah","Fujairah"],["Ras al-Khaimah","Ras al-Khaimah"],["Sharjah","Sharjah"],["Umm al-Quwain","Umm al-Quwain"]]">United Arab Emirates</option> 2151<option value="United Kingdom" data-provinces="[["British Forces","British Forces"],["England","England"],["Northern Ireland","Northern Ireland"],["Scotland","Scotland"],["Wales","Wales"]]">United Kingdom</option> 2152<option value="United States" data-provinces="[["Alabama","Alabama"],["Alaska","Alaska"],["American Samoa","American Samoa"],["Arizona","Arizona"],["Arkansas","Arkansas"],["Armed Forces Americas","Armed Forces Americas"],["Armed Forces Europe","Armed Forces Europe"],["Armed Forces Pacific","Armed Forces Pacific"],["California","California"],["Colorado","Colorado"],["Connecticut","Connecticut"],["Delaware","Delaware"],["District of Columbia","Washington DC"],["Federated States of Micronesia","Micronesia"],["Florida","Florida"],["Georgia","Georgia"],["Guam","Guam"],["Hawaii","Hawaii"],["Idaho","Idaho"],["Illinois","Illinois"],["Indiana","Indiana"],["Iowa","Iowa"],["Kansas","Kansas"],["Kentucky","Kentucky"],["Louisiana","Louisiana"],["Maine","Maine"],["Marshall Islands","Marshall Islands"],["Maryland","Maryland"],["Massachusetts","Massachusetts"],["Michigan","Michigan"],["Minnesota","Minnesota"],["Mississippi","Mississippi"],["Missouri","Missouri"],["Montana","Montana"],["Nebraska","Nebraska"],["Nevada","Nevada"],["New Hampshire","New Hampshire"],["New Jersey","New Jersey"],["New Mexico","New Mexico"],["New York","New York"],["North Carolina","North Carolina"],["North Dakota","North Dakota"],["Northern Mariana Islands","Northern Mariana Islands"],["Ohio","Ohio"],["Oklahoma","Oklahoma"],["Oregon","Oregon"],["Palau","Palau"],["Pennsylvania","Pennsylvania"],["Puerto Rico","Puerto Rico"],["Rhode Island","Rhode Island"],["South Carolina","South Carolina"],["South Dakota","South Dakota"],["Tennessee","Tennessee"],["Texas","Texas"],["Utah","Utah"],["Vermont","Vermont"],["Virgin Islands","U.S. Virgin Islands"],["Virginia","Virginia"],["Washington","Washington"],["West Virginia","West Virginia"],["Wisconsin","Wisconsin"],["Wyoming","Wyoming"]]">United States</option> 2153<option value="Uruguay" data-provinces="[["Artigas","Artigas"],["Canelones","Canelones"],["Cerro Largo","Cerro Largo"],["Colonia","Colonia"],["Durazno","Durazno"],["Flores","Flores"],["Florida","Florida"],["Lavalleja","Lavalleja"],["Maldonado","Maldonado"],["Montevideo","Montevideo"],["Paysandú","Paysandú"],["Rivera","Rivera"],["Rocha","Rocha"],["RÃo Negro","RÃo Negro"],["Salto","Salto"],["San José","San José"],["Soriano","Soriano"],["Tacuarembó","Tacuarembó"],["Treinta y Tres","Treinta y Tres"]]">Uruguay</option> 2154<option value="Uzbekistan" data-provinces="[]">Uzbekistan</option> 2155<option value="Vanuatu" data-provinces="[]">Vanuatu</option> 2156<option value="Holy See (Vatican City State)" data-provinces="[]">Vatican City</option> 2157<option value="Venezuela" data-provinces="[["Amazonas","Amazonas"],["Anzoátegui","Anzoátegui"],["Apure","Apure"],["Aragua","Aragua"],["Barinas","Barinas"],["BolÃvar","BolÃvar"],["Carabobo","Carabobo"],["Cojedes","Cojedes"],["Delta Amacuro","Delta Amacuro"],["Dependencias Federales","Federal Dependencies"],["Distrito Capital","Capital"],["Falcón","Falcón"],["Guárico","Guárico"],["La Guaira","Vargas"],["Lara","Lara"],["Miranda","Miranda"],["Monagas","Monagas"],["Mérida","Mérida"],["Nueva Esparta","Nueva Esparta"],["Portuguesa","Portuguesa"],["Sucre","Sucre"],["Trujillo","Trujillo"],["Táchira","Táchira"],["Yaracuy","Yaracuy"],["Zulia","Zulia"]]">Venezuela</option> 2158<option value="Vietnam" data-provinces="[]">Vietnam</option> 2159<option value="Wallis And Futuna" data-provinces="[]">Wallis & Futuna</option> 2160<option value="Western Sahara" data-provinces="[]">Western Sahara</option> 2161<option value="Yemen" data-provinces="[]">Yemen</option> 2162<option value="Zambia" data-provinces="[]">Zambia</option> 2163<option value="Zimbabwe" data-provinces="[]">Zimbabwe</option></select> 2164 2165 <!-- Translations --> 2166
2166<script type="application/json" data-translations>{"assign_each_unit":"Assign each unit:","btn_split_shipping":"Ship to Multiple Addresses","btn_cancel":"Cancel","btn_continue":"Continue","btn_back":"Back","btn_continue_review":"Continue to Review","btn_proceed_checkout":"Proceed to Checkout","btn_save_address":"Save Address","btn_update_address":"Update Address","btn_add_address":"Add New Address","btn_continue_checkout":"Continue to Checkout","btn_reset_edit":"Reset \u0026 Edit Shipments","modal_title":"Ship to Multiple Addresses","step_select_addresses":"Select Addresses","step_assign_items":"Set Quantities","step_review":"Review \u0026 Ship","address_saved":"Saved Addresses","address_new":"New Addresses","address_guest_notice":"Continue as guest or","address_guest_login":"log in","address_guest_suffix":"to view your saved addresses","address_select_prompt":"Select at least 2 addresses to split your shipment","address_selected_count":"addresses selected","form_title_add":"Add New Address","form_title_edit":"Edit Address","form_first_name":"First Name *","form_last_name":"Last Name *","form_company":"Company (optional)","form_country":"Country *","form_country_placeholder":"Select country...","form_street":"Street Address *","form_street_placeholder":"123 Main St","form_apartment":"Apartment, suite, etc. (optional)","form_apartment_placeholder":"Apt 4B","form_city":"City *","form_province":"State\/Province","form_province_placeholder":"State\/Province","form_province_select":"Select...","form_zip":"ZIP\/Postal Code *","form_phone":"Phone (optional)","form_phone_placeholder":"(555) 123-4567","error_select_country":"Please select a country","error_invalid_format":"Invalid format. Expected:","error_select_province":"Please select a state\/province","assign_select_address":"Select address...","assign_unit":"Unit","assign_how_many":"How many to each address?","assign_qty_per_address":"Quantity per address","assign_all_done":"All items assigned","assign_all_prefix":"All","assign_items_assigned":"items assigned","assign_warning_same_address":"All items are going to the same address â split them across addresses","assign_error_incomplete":"Please assign all items to addresses","assign_confirm_same_address":"All items are assigned to the same address. This defeats the purpose of split shipping.\n\nDo you want to continue anyway?","assign_currently_assigned":"Currently assigned:","assign_available_to_add":"Available to add:","assign_cannot_add":"Cannot add items:","review_shipment":"Shipment","review_shipping_method":"Shipping method","review_loading_rates":"Loading shipping rates...","review_delivery_date":"Preferred delivery date","review_gift":"This is a gift","review_gift_placeholder":"Add a gift message...","review_delivery_instructions":"Add delivery instructions","review_delivery_placeholder":"Special delivery instructions...","review_order_summary":"Order summary","review_subtotal":"Subtotal","review_shipping":"Shipping","review_discount":"Discount","review_tax":"Tax","review_estimated_tax":"Estimated tax","review_total":"Total","review_calculating":"Calculating...","review_free":"Free","review_free_shipping":"Free Shipping","review_free_shipping_available":"Free shipping available!","edit_title":"Split Shipping","edit_btn_label":"Edit Shipments","edit_shipments":"shipments","edit_prompt_prefix":"Your cart has","edit_prompt_suffix":"shipments ready for checkout. Would you like to continue or start over?","edit_resetting":"Resetting...","status_processing":"Processing...","status_saving_cart":"Saving cart...","status_success":"Success! Redirecting...","error_restore_items":"Unable to restore original items. Please clear your cart and add items again.","error_reset_failed":"Failed to reset shipments. Please try again.","error_checkout_failed":"Unable to process split shipping.","error_bundle_not_configured":"Bundle product not configured. Please contact support.","error_try_again":"Please try again or contact support.","note_ship_to":"Ship to:","note_items":"Items:","note_delivery_date":"Preferred Delivery Date:","note_gift":"Gift Note:","note_delivery_instructions":"Delivery Instructions:","cart_qty_reduced_warning":"Quantity reduced â please review your assignments.","cart_qty_increased_warning":"Quantity increased â please review your assignments.","invoice_note_multi_address":"This order ships to multiple addresses. Each line below shows its destination â you'll receive a separate shipment for each address.","form_email":"Recipient email (optional)","form_email_required":"Recipient email *","form_email_placeholder":"[email protected]","recipient_email_tracking_note":"We'll send tracking and shipping updates to this email address.","error_email_required":"Please enter a recipient email","error_email_invalid":"Please enter a valid email address","assign_error_same_address":"Please assign items to different addresses. Split shipping requires at least 2 different shipping destinations.","address_import_excel":"This looks like an Excel file. Please save it as CSV (File â Save As â CSV) and try again.","address_max_reached":"You can ship to up to %n addresses per order.","address_import_btn":"Import addresses from CSV","address_import_sample":"Download sample CSV","address_import_success":"%n addresses imported and selected","address_import_capped":"Only the first %m could be selected â you can ship to up to %m addresses per order.","address_import_error":"We couldn't read that file. Use the sample CSV format.","review_no_rates":"No shipping rates available for this address. Please check the address details.","review_tax_included":"Tax (included)","single_item_notice":"Multi-address delivery available with 2+ items","address_blocked_default":"We're unable to ship to this address. Please choose a different address.","review_blocked_gate":"Remove the address we
2166can't ship to","address_import_matched":"%m matched addresses you already had.","address_import_optional_columns":"Optional columns: gift_note, delivery_instructions","draft_notice":"This order ships to more than 30 addresses, so you will pay on a secure invoice page instead of the usual checkout.","draft_email_label":"Your email address","draft_email_required":"Enter your email address so we can send you the invoice.","draft_failed":"We couldn't start your order. Please try again.","draft_progress":"Preparing your order (%n of %m)...","draft_redirecting":"Taking you to payment...","review_ship_date":"Ship date","date_earliest":"Earliest: %d","date_cleared":"Your date was reset â the earliest for this shipping option is %d.","date_out_of_range":"That date isn't available. Choose a date between %d and %e.","date_select":"Select a date","date_clear":"Clear date","date_required":"Choose a date for this delivery.","date_unavailable":"That date isn't available any more. Please choose another.","review_delivery_time":"Preferred delivery time","time_slot_none":"No preference","draft_notice_invoice":"Because this order ships to several addresses, you will pay on a secure invoice page instead of the usual checkout.","draft_email_needed":"Enter your email address to continue.","draft_keep_open":"This can take a minute for large orders. Please keep this page open."} 2167</script>
2167 2168 2169 <!-- Money format for JS price display --> 2170
2170<script>window.splitShippingMoneyFormat = "${{amount}}";</script>
2170 2171</div> 2172 2173<!-- Modal will be dynamically created and injected by JavaScript --> 2174 2175 2176</div><div id="shopify-block-AQXVseTJmTnRYajVON__12741885996470144523" class="shopify-block shopify-app-block">
2176<script type="text/javascript" src="https://enormapps.com/gallery-v2/assets/frontend/js/embed.js" async="" defer="defer"></script>
vendor: 2 bytes, line 2176
2176
2177<script type="text/javascript" src="https://enormapps.com/gallery-v2/assets/frontend/js/enap-video.js" async defer></script>
2177 2178 2179</div><div id="shopify-block-AYkpjcWFINkF3RWlJV__1513253815146976218" class="shopify-block shopify-app-block"> 2180</div><div id="shopify-block-AV1c1MGppS3Bld2V0Z__1967102994182284862" class="shopify-block shopify-app-block"><!-- BEGIN app snippet: connected_sdk_script -->
2180<script src='https://www.paypalobjects.com/pa/js/min/pa.js'></script>
2180 2181
2182<script 2183 src='https://www.paypal.com/sdk/js?client-id=AbtXlp5R3xc83T9xW_ZXKTK8IVZ-14EMelDioU4VC285IqSuxUI4yotKxjV0sz_X6YsONYi10vSBPNKM&merchant-id=APVKALNVUBPT4&components=messages' 2184 data-namespace='PayPalSDK' 2185 data-partner-attribution-id='JADEDPIXEL_SHOPPINGCART_EC_CA' 2186></script>
2186 2187<!-- END app snippet --><!-- BEGIN app snippet: utils -->
2187<script> 2188 // ============================================ 2189 // Core Utilities 2190 // ============================================ 2191 2192 // Setup FPTI Analytics 2193 if (PAYPAL && PAYPAL.analytics) { 2194 PAYPAL.analytics.setup({ 2195 data: { 2196 pgrp: 'shopify:messaging:app-embed', 2197 comp: 'shopify-app-embed', 2198 }, 2199 }); 2200 } 2201 2202 const recordEvent = (event_name, additionalData) => { 2203 PAYPAL.analytics.instance.recordEvent(event_name, { 2204 theme: window?.Shopify?.theme?.name || 'unknown', 2205 shop: window?.Shopify?.shop || 'unknown', 2206 path: window.location.pathname, 2207 flow: 'Shopify - Pay Later', 2208 space_key: 'SKD8GM', 2209 ...additionalData, 2210 }); 2211 }; 2212 2213 // In Theme Editor when using Advanced Settings 2214 // User chooses copy as JS Path from their browser 2215 // The pasted value will be a string that contains "document.querySelector("...") 2216 // Remove document.querySelector(" and ") 2217 // Using JS Path we can ensure the path to the element is accurate 2218 const parseSelector = (selector) => { 2219 try { 2220 // Handle both single and double quotes 2221 return selector 2222 .replace(/document\.querySelector\(["']/g, '') 2223 .replace(/["']\)/g, ''); 2224 } catch (e) { 2225 recordEvent('appEmbed:parseSelector:error', { error: e.message }); 2226 } 2227 }; 2228 2229 // Waits for Element to be rendered 2230 // Uses mutation observer to watch for changes in the DOM 2231 // https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver 2232 // On changes, check for the selector again 2233 const waitForElement = (selector) => { 2234 try { 2235 return new Promise((resolve) => { 2236 const existing = document.querySelector(selector); 2237 if (existing) return resolve(existing); 2238 2239 const observer = new MutationObserver(() => { 2240 const el = document.querySelector(selector); 2241 if (el) { 2242 observer.disconnect(); 2243 resolve(el); 2244 } 2245 }); 2246 2247 observer.observe(document.body, { 2248 childList: true, 2249 subtree: true, 2250 }); 2251 }); 2252 } catch (e) { 2253 recordEvent('appEmbed:waitForElement:error', { error: e.message }); 2254 } 2255 }; 2256 2257 // Formats correct cart/drawer subtotal and adds or updates messaging 2258 const addOrUpdateMessagingPriceAttribute = async (price, locator, messaging) => { 2259 try { 2260 // Format price to 2 decimal places ex: 150000 => 1500.00 2261 // Messaging requires price to be in string format 2262 const formattedPrice = Number((price / 100).toFixed(2)).toString(); 2263 2264 const messagingId = messaging.id; 2265 const existingMessaging = document.getElementById(messagingId); 2266 2267 if (existingMessaging) { 2268 // Update the data-pp-amount attribute on the existing element 2269 existingMessaging.setAttribute('data-pp-amount', formattedPrice); 2270 } else { 2271 const element = await waitForElement(locator); 2272 2273 const updatedPriceMessaging = messaging.cloneNode(); 2274 updatedPriceMessaging.setAttribute('data-pp-amount', formattedPrice); 2275 2276 element.after(updatedPriceMessaging); 2277 } 2278 } catch (e) { 2279 recordEvent('appEmbed:addOrUpdateMessagingPriceAttribute:error', { error: e.message }); 2280 } 2281 }; 2282 2283 // Fetches cart details from Shopify cart endpoint 2284 const fetchCartDetails = async () => { 2285 try { 2286 const response = await fetch('/cart.js'); 2287 const cart = await response.json(); 2288 2289 return cart.total_price; 2290 } catch (e) { 2291 recordEvent('appEmbed:fetchCartDetails:error', { error: e.message }); 2292 } 2293 }; 2294 2295 // Fetches variant details Shopify product endpoint 2296 // https://shopify.dev/docs/api/ajax/reference/product 2297 const fetchVariant = async () => { 2298 try { 2299 // Ex: https://test-store.myshopify.com/products/the-multi-location-snowboard?variant=45268551368883 2300 const urlParams = new URLSearchParams(window.location.search); 2301 const urlVariantId = parseInt(urlParams.get('variant'), 10); 2302 const productHandle = window.location.pathname.split('/products/')[1]?.split('?')[0]; 2303 2304 const response = await fetch(`/products/${productHandle}.js`); 2305 const productData = await response.json(); 2306 const variants = productData.variants; 2307 const selectedVariant = variants.find(v => v.id === urlVariantId); 2308 2309 if (selectedVariant) { 2310 return selectedVariant; 2311 } 2312 2313 return variants.find(v => v.available) || variants[0]; 2314 } catch (e) { 2315 recordEvent('appEmbed:fetchVariant:error', { error: e.message }); 2316 } 2317 }; 2318 2319 // Get the selected variant ID from URL, form input, or select element
2320 const getSelectedVariantId = () => { 2321 try { 2322 const urlParams = new URLSearchParams(window.location.search); 2323 const urlVariant = urlParams.get('variant'); 2324 if (urlVariant) return parseInt(urlVariant, 10); 2325 2326 const formInput = document.querySelector('form[action*="/cart/add"] input[name="id"]'); 2327 if (formInput?.value) return parseInt(formInput.value, 10); 2328 2329 const selectInput = document.querySelector('form[action*="/cart/add"] select[name="id"]'); 2330 if (selectInput?.value) return parseInt(selectInput.value, 10); 2331 2332 return null; 2333 } catch (e) { 2334 recordEvent('appEmbed:getSelectedVariantId:error', { error: e.message }); 2335 return null; 2336 } 2337 }; 2338 2339 const getShopifyData = () => { 2340 try { 2341 const selectedVariantId = getSelectedVariantId(); 2342 2343 const findVariant = (variants) => { 2344 if (!variants?.length) return null; 2345 if (selectedVariantId) { 2346 const selected = variants.find(v => v.id === selectedVariantId); 2347 if (selected) return selected; 2348 } 2349 return variants.find(v => v.available) || variants[0]; 2350 }; 2351 2352 if (window.meta?.product) { 2353 const product = window.meta.product; 2354 const variant = findVariant(product.variants); 2355 return { 2356 product: { title: product.title, vendor: product.vendor, type: product.type, id: product.id }, 2357 price: variant ? { 2358 priceInCents: variant.price, 2359 compareAtPrice: variant.compare_at_price, 2360 currency: window.Shopify?.currency?.active || 'USD', 2361 variantId: variant.id, 2362 variantTitle: variant.title 2363 } : null 2364 }; 2365 } 2366 2367 if (window.ShopifyAnalytics?.meta?.product) { 2368 const product = window.ShopifyAnalytics.meta.product; 2369 const variant = findVariant(product.variants); 2370 return { 2371 product: { title: product.title, vendor: product.vendor, id: product.id }, 2372 price: variant ? { 2373 priceInCents: variant.price, 2374 currency: window.Shopify?.currency?.active || 'USD', 2375 variantId: variant.id 2376 } : null 2377 }; 2378 } 2379 2380 return null; 2381 } catch (e) { 2382 recordEvent('appEmbed:getShopifyData:error', { error: e.message }); 2383 return null; 2384 } 2385 }; 2386 2387 // Generic function to watch for changes in the DOM 2388 // and listen for specific API calls made by the Shopify store 2389 // Callback provides specific logic for handling the response 2390 const watchForChanges = (locator, messaging, callback) => { 2391 try { 2392 // Overrides the native `fetch` function to listen for specific API calls. 2393 // Wrapped in an Immediately Invoked Function Expression (IIFE) 2394 // To avoid polluting the global namespace. 2395 (function (window, windowFetch) { 2396 // Check if `fetch` is a function. If not, exit early. 2397 if (typeof fetch !== 'function') return; 2398 2399 window.fetch = function () { 2400 // Call the original `fetch` function with the provided arguments. 2401 const response = windowFetch.apply(this, arguments); 2402 2403 response.then(async (res) => { 2404 if (typeof callback === 'function') { 2405 callback(res, locator, messaging); 2406 } 2407 }); 2408 2409 // Return the original `fetch` response. 2410 return response; 2411 }; 2412 })(window, window.fetch); 2413 } catch (e) { 2414 recordEvent('appEmbed:watchForChanges:error', { error: e.message }); 2415 } 2416 }; 2417 2418 // Provides ability to watch for cart changes 2419 // such as increment, decrement, or remove items 2420 // Also handles adding new items which opens Cart Drawer 2421 // and updates the messaging with the new cart total 2422 // This function is used for both Cart Drawer and Cart Page 2423 const watchForCartChanges = (locator, messaging) => { 2424 const cartChangeCallback = async (res, locator, messaging) => { 2425 // Determine the id of messaging div either #paypal-upstream-messaging-cart-{page | drawer} 2426 const messagingId = messaging.id; 2427 2428 // Changes (e.g., increment, decrement, or remove items). 2429 if (res.url.includes('/cart/change')) { 2430 // Clone the response to read its JSON data without consuming the original response. 2431 res 2432 .clone() 2433 .json() 2434 .then((data) => { 2435 addOrUpdateMessagingPriceAttribute(data.total_price, locator, messaging); 2436 }); 2437 2438 // Called when adding a new item which opens Cart Drawer 2439 } else if (res.url.includes('/cart/add')) { 2440 // Adding items does not return the updated cart details, 2441 // Fetch the updated cart details (e.g., total_price). 2442 const updatedPrice = await fetchCartDetails(); 2443 2444 // Introduce a delay to handle potential race conditions where the cart drawer has not rendered yet. 2445 setTimeout(async () => { 2446 await addOrUpdateMessagingPriceAttribute(updatedPrice, locator, messaging); 2447 }, 500); 2448 } 2449 }; 2450 2451 watchForChanges(locator, messaging, cartChangeCallback); 2452 }; 2453
2454 // Provides ability to watch for product specific changes 2455 // such as variant selection on product pages 2456 const watchForProductChanges = (locator, messaging) => { 2457 let lastVariantId = new URLSearchParams(window.location.search).get('variant'); 2458 2459 const handleVariantChange = async () => { 2460 const currentVariantId = new URLSearchParams(window.location.search).get('variant'); 2461 if (currentVariantId && currentVariantId !== lastVariantId) { 2462 lastVariantId = currentVariantId; 2463 2464 const newVariantData = await fetchVariant(); 2465 const newPriceInCents = newVariantData?.price; 2466 2467 if (newPriceInCents) { 2468 await addOrUpdateMessagingPriceAttribute(newPriceInCents, locator, messaging); 2469 } else { 2470 recordEvent('appEmbed:watchForProductChanges:error:noNewVariantPrice'); 2471 } 2472 } 2473 }; 2474 2475 // Shopify themes can either handle variant changes on the client-side or server-side (via variant API calls) 2476 // We will "intercept" and handle variant changes by: 2477 // 1. Watching for URL changes 2478 const _pushState = history.pushState.bind(history); 2479 const _replaceState = history.replaceState.bind(history); 2480 2481 history.pushState = function (...args) { 2482 _pushState(...args); 2483 handleVariantChange(); 2484 }; 2485 2486 history.replaceState = function (...args) { 2487 _replaceState(...args); 2488 handleVariantChange(); 2489 }; 2490 2491 // 2. Watching for back/forward browser clicks 2492 window.addEventListener('popstate', handleVariantChange); 2493 2494 // 3. Fallback: Watching for variant API calls 2495 // Future optimization: This fallback could be removed if all Shopify themes can be handled with 1. and 2. 2496 const productChangeCallback = async (res, locator, messaging) => { 2497 if (res.url.includes('/variants')) { 2498 await handleVariantChange(); 2499 return; 2500 } 2501 }; 2502 2503 watchForChanges(locator, messaging, productChangeCallback); 2504 }; 2505</script>
2505 2506<!-- END app snippet --><!-- BEGIN app snippet: price-detection -->
2506<script> 2507 // ============================================ 2508 // Price Detection & Element Scoring 2509 // Depends on: utils.liquid (recordEvent, getShopifyData) 2510 // ============================================ 2511 2512 const extractPriceFromText = (text) => { 2513 const match = text.match(/[\d,]+\.?\d*/); 2514 if (!match) return null; 2515 return parseFloat(match[0].replace(/,/g, '')); 2516 }; 2517 2518 const textMatchesPrice = (text, knownPriceInCents) => { 2519 const extracted = extractPriceFromText(text); 2520 if (extracted === null) return false; 2521 const knownPrice = knownPriceInCents / 100; 2522 return Math.abs(extracted - knownPrice) < 0.01; 2523 }; 2524 2525 const hasStrikethrough = (element) => { 2526 let el = element; 2527 while (el && el !== document.body) { 2528 const style = getComputedStyle(el); 2529 if (style.textDecoration.includes('line-through') || 2530 style.textDecorationLine?.includes('line-through')) { 2531 return true; 2532 } 2533 if (['S', 'DEL', 'STRIKE'].includes(el.tagName)) { 2534 return true; 2535 } 2536 el = el.parentElement; 2537 } 2538 return false; 2539 }; 2540 2541 // Find the add-to-cart button. Result is cached since the button doesn't change per page load. 2542 let _cachedAddToCartButton; 2543 const findAddToCartButton = () => { 2544 if (_cachedAddToCartButton !== undefined) return _cachedAddToCartButton; 2545 try { 2546 const formButton = document.querySelector('form[action*="/cart/add"] button[type="submit"]'); 2547 if (formButton) return (_cachedAddToCartButton = formButton); 2548 2549 const buttons = document.querySelectorAll('button'); 2550 for (const btn of buttons) { 2551 const text = btn.textContent.toLowerCase(); 2552 if (text.includes('add to cart') || text.includes('add to bag') || 2553 text.includes('buy now') || text.includes('add to basket')) { 2554 return (_cachedAddToCartButton = btn); 2555 } 2556 } 2557 2558 return (_cachedAddToCartButton = null); 2559 } catch (e) { 2560 recordEvent('appEmbed:findAddToCartButton:error', { error: e.message }); 2561 return (_cachedAddToCartButton = null); 2562 } 2563 }; 2564 2565 // Find element containing specific text (used for product title proximity). 2566 // Result is cached per text string â title is static per page load and scoreElement 2567 // calls this once per candidate, so without caching it's O(candidates) full DOM walks. 2568 let _titleElementCache = {}; 2569 const findElementContainingText = (text) => { 2570 if (text in _titleElementCache) return _titleElementCache[text]; 2571 try { 2572 const normalizedText = text.toLowerCase().trim(); 2573 const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT); 2574 2575 let node; 2576 while (node = walker.nextNode()) { 2577 const nodeText = node.textContent.trim().toLowerCase(); 2578 if (nodeText.length > 5 && normalizedText.includes(nodeText.substring(0, 20))) { 2579 const el = node.parentElement; 2580 const rect = el.getBoundingClientRect(); 2581 if (rect.width > 0 && rect.height > 0) { 2582 const fontSize = parseFloat(getComputedStyle(el).fontSize); 2583 if (fontSize >= 16) return (_titleElementCache[text] = el); 2584 } 2585 } 2586 } 2587 return (_titleElementCache[text] = null); 2588 } catch (e) { 2589 return null; 2590 } 2591 }; 2592 2593 const getViewportThresholds = () => { 2594 const vh = window.innerHeight; 2595 const isMobile = window.innerWidth < 768; 2596 2597 return { 2598 position: [[vh * 0.6, 50], [vh * 1.2, 30], [vh * 2.0, 10]], 2599 fontSize: [ 2600 [isMobile ? 18 : 24, 40], 2601 [isMobile ? 14 : 18, 25], 2602 [isMobile ? 12 : 14, 10], 2603 ], 2604 proximity: { 2605 close: isMobile ? 60 : 100, 2606 medium: isMobile ? 120 : 200, 2607 far: isMobile ? 240 : 400, 2608 }, 2609 }; 2610 }; 2611 2612 const getTieredScore = (value, tiers, defaultScore = 0) => { 2613 for (const [threshold, points] of tiers) { 2614 if (value < threshold) return points; 2615 } 2616 return defaultScore; 2617 }; 2618 2619 // Scores a DOM element on how likely it is to be the product's main price. 2620 // Higher score = better candidate. Factors: 2621 // - Position on page (elements higher up score better) 2622 // - Font size (larger text = more likely a displayed price) 2623 // - Proximity to product title and add-to-cart button 2624 // - Structural exclusions (footer/header/nav/hidden = heavy penalty) 2625 // - Strikethrough detection (compare-at prices = heavy penalty) 2626 const scoreElement = (element, productMeta = null, debug = false) => { 2627 let score = 0; 2628 const breakdown = debug ? {} : null; 2629 const { position, fontSize, proximity } = getViewportThresholds(); 2630 const { close, medium, far } = proximity; 2631 const rect = element.getBoundingClientRect(); 2632 2633 // POSITION ON PAGE 2634 const absoluteTop = rect.top + window.scrollY; 2635 const posScore = getTieredScore(absoluteTop, position, -30); 2636 score += posScore; 2637 if (debug) breakdown.position = `${posScore >= 0 ? '+' : ''}${posScore} (top ${Math.round(absoluteTop)}px)`; 2638 2639 // FONT SIZE 2640 const fontPx = parseFloat(getComputedStyle(element).fontSize); 2641 const fontScore = fontSize.find(([t]) => fontPx >= t)?.[1] ?? -10; 2642 score += fontScore; 2643 if (debug) breakdown.fontSize = `${fontScore >= 0 ? '+' : ''}${fontScore} (${fontPx}px)`; 2644 2645 // PROXIMITY TO PRODUCT TITLE 2646 if (productMeta?.title) { 2647 const titleElement = findElementContainingText(productMeta.title); 2648 if (titleElement) { 2649 const distance = Math.abs(titleElement.getBoundingClientRect().bottom - rect.top); 2650 const titleScore = getTieredScore(distance, [[close, 40], [medium, 25], [far, 10]], 0); 2651 score += titleScore; 2652 if (debug) breakdown.titleProximity = `+${titleScore} (${Math.round(distance)}px)`; 2653 } else if (debug) { 2654 breakdown.titleProximity = 'title element not found'; 2655 } 2656 } else if (debug) { 2657 breakdown.titleProximity = 'no product title'; 2658 } 2659 2660 // PROXIMITY TO ADD-TO-CART BUTTON 2661 const addButton = findAddToCartButton(); 2662 if (addButton) { 2663 const distance = Math.abs(addButton.getBoundingClientRect().top - rect.top); 2664 const cartScore = getTieredScore(distance, [[close, 30], [medium, 20], [far, 10]], 0); 2665 score += cartScore; 2666 if (debug) breakdown.cartProximity = `+${cartScore} (${Math.round(distance)}px)`; 2667 } else if (debug) { 2668 breakdown.cartProximity = 'add-to-cart not found'; 2669 } 2670 2671 // STRUCTURAL EXCLUSIONS 2672 const exclusions = [ 2673 ['footer, header, nav', 'in footer/header/nav'], 2674 ['button, a[href*="/cart"], [type="submit"]', 'in button/link'], 2675 ['[aria-hidden="true"], [hidden], .hidden, .visually-hidden', 'hidden'], 2676 ]; 2677 for (const [selector, reason] of exclusions) { 2678 if (element.closest(selector)) { 2679 score -= 100; 2680 if (debug) breakdown.structural = `-100 (${reason})`; 2681 break; 2682 } 2683 } 2684 if (debug && !breakdown.structural) breakdown.structural = '+0'; 2685 2686 // STRIKETHROUGH 2687 if (hasStrikethrough(element)) { 2688 score -= 100; 2689 if (debug) breakdown.strikethrough = '-100 (compare-at price)'; 2690 } else if (debug) { 2691 breakdown.strikethrough = '+0'; 2692 } 2693 2694 if (debug) { 2695 breakdown.totalScore = score; 2696 breakdown.elementText = element.textContent.trim().substring(0, 30); 2697 breakdown.elementTag = element.tagName; 2698 } 2699 2700 return debug ? { score, breakdown } : score; 2701 }; 2702 2703 // Find all elements containing a specific price value 2704 const findElementsWithPrice = (knownPriceInCents, productMeta = null, debug = false, log = () => {}) => { 2705 const candidates = []; 2706 const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT); 2707 2708 let node; 2709 while (node = walker.nextNode()) { 2710 const text = node.textContent.trim(); 2711 if (text.length > 30 || !textMatchesPrice(text, knownPriceInCents)) continue; 2712 2713 const element = node.parentElement; 2714 const rect = element.getBoundingClientRect(); 2715 2716 if (rect.width === 0 || rect.height === 0 || hasStrikethrough(element)) continue; 2717 2718 const score = scoreElement(element, productMeta, false); 2719 candidates.push({ element, text, score }); 2720 } 2721 2722 if (debug && candidates.length > 0) { 2723 candidates.sort((a, b) => b.score - a.score); 2724 log(` Candidates: ${candidates.length}, top: score=${candidates[0].score}, text="${candidates[0].text}"`); 2725 } 2726 2727 return candidates; 2728 }; 2729 2730 // Find the /cart/add form by traversing from the price element 2731 // This is more reliable than name-based container detection since all Shopify themes have this form 2732 const findCartFormFromPrice = (priceElement, debug = false, log = () => {}) => { 2733 let el = priceElement; 2734 2735 while (el && el !== document.body) { 2736 if (el.tagName === 'FORM' && el.action?.includes('/cart/add')) { 2737 if (debug) log(` Found /cart/add form (element itself)`); 2738 return el; 2739 } 2740 2741 let sibling = el.nextElementSibling; 2742 while (sibling) { 2743 if (sibling.tagName === 'FORM' && sibling.action?.includes('/cart/add')) { 2744 if (debug) log(` Found /cart/add form as sibling`); 2745 return sibling; 2746 } 2747 // Check if sibling contains the form 2748 const formInSibling = sibling.querySelector('form[action*="/cart/add"]'); 2749 if (formInSibling) { 2750 if (debug) log(` Found /cart/add form inside sibling`); 2751 return formInSibling; 2752 } 2753 sibling = sibling.nextElementSibling; 2754 } 2755 2756 el = el.parentElement; 2757 } 2758 2759 if (debug) log(` No /cart/add form found`); 2760 return null; 2761 }; 2762 2763 // Fallback: walk up from the price text element to find a suitable wrapper. 2764 // Used when no /cart/add form exists near the price element. 2765 const findPriceContainer = (priceElement) => { 2766 let el = priceElement; 2767 let bestContainer = priceElement; 2768 2769 while (el && el !== document.body) { 2770 // Look for elements with price-related IDs (common Shopify pattern) 2771 if (el.id && /price/i.test(el.id)) { 2772 bestContainer = el; 2773 } 2774 // Look for elements with price-related classes that seem like containers 2775 if (el.className && typeof el.className === 'string') { 2776 const classes = el.className.toLowerCase(); 2777 if (/\bprice\b/.test(classes) && !/price-item|price__regular|price__sale/.test(classes)) { 2778 bestContainer = el; 2779 } 2780 } 2781 // Stop at major structural elements 2782 if (el.tagName === 'SECTION' || el.tagName === 'ARTICLE' || el.tagName === 'MAIN') { 2783 break; 2784 } 2785 el = el.parentElement; 2786 } 2787 2788 return bestContainer; 2789 }; 2790 2791 // Try common Shopify theme price selectors (Dawn and derivatives) 2792 const findPriceByTemplateSelector = (debug = false, log = () => {}) => { 2793 const selectors = [ 2794 '[id*="price-template"]', // Dawn theme pattern 2795 '.price-item--regular:not(s):not(del)',
2796 '[data-product-price]', 2797 ]; 2798 2799 for (const selector of selectors) { 2800 const el = document.querySelector(selector); 2801 if (el && !hasStrikethrough(el)) { 2802 if (debug) log(`Template selector found: ${selector}`); 2803 return el; 2804 } 2805 } 2806 return null; 2807 }; 2808 2809 // Check if we're in an isolated/sandboxed iframe (theme editor) 2810 const isIsolatedContext = () => { 2811 if (window === window.top) return false; // Not in iframe 2812 try { 2813 // Try to access parent - if cross-origin, we're isolated 2814 const test = window.parent.document; 2815 return false; // Can access parent, not isolated 2816 } catch (e) { 2817 return true; // Cross-origin, we're isolated 2818 } 2819 }; 2820 2821 // Try to find price element in sibling iframes (theme editor workaround) 2822 const findPriceInSiblingIframes = (knownPriceInCents) => { 2823 const iframes = document.querySelectorAll('iframe'); 2824 2825 for (const iframe of iframes) { 2826 try { 2827 const iframeDoc = iframe.contentDocument || iframe.contentWindow?.document; 2828 if (!iframeDoc) continue; 2829 2830 const priceElement = iframeDoc.querySelector('.price-item, .price, [data-product-price]'); 2831 if (priceElement) { 2832 return { element: priceElement, document: iframeDoc }; 2833 } 2834 } catch (e) { 2835 // Cross-origin iframe, skip 2836 } 2837 } 2838 2839 return null; 2840 }; 2841 2842 // Helper: Insert messaging near a price element (before cart form or after price container). 2843 // Returns the price container element used as the logical anchor. 2844 const insertMessagingNearPrice = (priceElement, messaging, debug = false, log = () => {}) => { 2845 const cartForm = findCartFormFromPrice(priceElement, debug, log); 2846 const container = findPriceContainer(priceElement); 2847 if (cartForm) { 2848 cartForm.before(messaging.cloneNode()); 2849 if (debug) log('Inserted messaging before /cart/add form'); 2850 } else { 2851 container.after(messaging.cloneNode()); 2852 if (debug) log('Inserted after price container (no form found)'); 2853 } 2854 return container; 2855 }; 2856 2857 // Insert messaging after price element 2858 const insertMessagingWithRetry = (shopifyData, messaging, debug = false, log = () => {}) => { 2859 // Skip visual preview iframe 2860 if (window.location.search.includes('source=visualPreviewInitialLoad')) return; 2861 if (document.querySelector('#paypal-upstream-messaging-product')) return; 2862 2863 const liquidPriceInCents = shopifyData?.price?.priceInCents; 2864 const isIsolated = isIsolatedContext(); 2865 2866 if (debug) { 2867 log('=== Price Detection ==='); 2868 log(`Context: ${isIsolated ? 'Theme Editor' : 'Live Storefront'}`); 2869 log(`Price: ${liquidPriceInCents} cents ($${(liquidPriceInCents / 100).toFixed(2)})`); 2870 } 2871 2872 // Priority 1: Template selectors (common theme patterns like Dawn) 2873 const templateElement = findPriceByTemplateSelector(debug, log); 2874 if (templateElement) { 2875 return insertMessagingNearPrice(templateElement, messaging, debug, log); 2876 } 2877 2878 // Priority 2: Scoring-based price detection 2879 const priceElement = findPriceElement(shopifyData, debug, log); 2880 if (priceElement) { 2881 return insertMessagingNearPrice(priceElement, messaging, debug, log); 2882 } 2883 2884 // Priority 3: Sibling iframes (theme editor only) 2885 if (isIsolated) { 2886 const siblingResult = findPriceInSiblingIframes(liquidPriceInCents); 2887 if (siblingResult) { 2888 return insertMessagingNearPrice(siblingResult.element, messaging, debug, log); 2889 } 2890 } 2891 2892 if (!isIsolated) { 2893 log('Could not find price element. Consider using Advanced Settings with a custom selector.'); 2894 } 2895 return null; 2896 }; 2897 2898 const findPriceElement = (shopifyData = null, debug = false, log = () => {}) => { 2899 try { 2900 const knownPriceInCents = shopifyData?.price?.priceInCents; 2901 const productMeta = shopifyData?.product; 2902 2903 if (debug) log(`findPriceElement: ${knownPriceInCents} cents`); 2904 2905 if (knownPriceInCents) { 2906 const candidates = findElementsWithPrice(knownPriceInCents, productMeta, debug, log); 2907 if (candidates.length > 0) { 2908 candidates.sort((a, b) => b.score - a.score); 2909 if (debug) log(` â FOUND (score=${candidates[0].score})`); 2910 return candidates[0].element; 2911 } 2912 } 2913 2914 if (debug) log(' â null (no candidates)'); 2915 return null; 2916 } catch (e) { 2917 if (debug) log(` â Error: ${e.message}`); 2918 recordEvent('appEmbed:findPriceElement:error', { error: e.message }); 2919 return null; 2920 } 2921 }; 2922</script>
2922 2923<!-- END app snippet --><!-- BEGIN app snippet: navigator-panel --><template id="pp-nav-template"> 2924 <style> 2925 /* --- Floating placement panel shell --- */ 2926 #pp-nav-panel { 2927 position: fixed; 2928 top: 50%; 2929 left: 20px; 2930 transform: translateY(-50%); 2931 background: #fff; 2932 border-radius: 12px; 2933 font-family: system-ui, -apple-system, sans-serif; 2934 font-size: 13px; 2935 z-index: 999999; 2936 width: 340px; 2937 box-shadow: 0 8px 32px rgba(0,0,0,0.18); 2938 overflow: hidden; 2939 transition: transform 0.3s ease, height 0.3s ease; 2940 } 2941 #pp-nav-panel.minimized { 2942 display: none; 2943 } 2944 2945 /* --- Minimized pill button --- */ 2946 #pp-nav-pill { 2947 position: fixed; 2948 bottom: 20px; 2949 left: 20px; 2950 background: #003087; 2951 color: #fff; 2952 border: none; 2953 border-radius: 24px; 2954 padding: 10px 18px; 2955 font-family: system-ui, -apple-system, sans-serif; 2956 font-size: 13px; 2957 font-weight: 600; 2958 cursor: pointer; 2959 z-index: 999999; 2960 box-shadow: 0 4px 16px rgba(0,48,135,0.3); 2961 display: none; 2962 align-items: center; 2963 gap: 8px; 2964 transition: box-shadow 0.2s; 2965 } 2966 #pp-nav-pill:hover { 2967 box-shadow: 0 6px 20px rgba(0,48,135,0.45); 2968 } 2969 2970 /* --- Header --- */ 2971 .pp-panel-header { 2972 background: #003087; 2973 color: #fff; 2974 padding: 14px 16px; 2975 display: flex; 2976 align-items: center; 2977 justify-content: space-between; 2978 } 2979 .pp-panel-title { 2980 font-size: 14px; 2981 font-weight: 700; 2982 margin: 0; 2983 letter-spacing: 0.01em; 2984 } 2985 .pp-minimize-btn { 2986 background: none; 2987 border: none; 2988 color: rgba(255,255,255,0.8); 2989 cursor: pointer; 2990 font-size: 18px; 2991 line-height: 1; 2992 padding: 2px; 2993 border-radius: 4px; 2994 transition: color 0.15s; 2995 } 2996 .pp-minimize-btn:hover { 2997 color: #fff; 2998 } 2999 3000 /* --- Panel body --- */ 3001 .pp-panel-content { 3002 padding: 16px; 3003 } 3004 3005 /* --- Step info boxes --- */ 3006 .pp-step-box { 3007 border-radius: 8px; 3008 padding: 10px 12px; 3009 font-size: 12px; 3010 line-height: 1.5; 3011 margin-bottom: 12px; 3012 display: flex; 3013 align-items: flex-start; 3014 gap: 8px; 3015 } 3016 .pp-step-box.blue { 3017 background: #e8f4fd; 3018 border: 1px solid #b8dff5; 3019 color: #0a5a96; 3020 } 3021 .pp-step-box.green { 3022 background: #e6f9ee; 3023 border: 1px solid #a3e4b8; 3024 color: #1a7a3a; 3025 } 3026 .pp-step-text { 3027 flex: 1; 3028 } 3029 .pp-step-text p { 3030 margin: 0 0 8px 0; 3031 } 3032 .pp-step-text p:last-child { 3033 margin-bottom: 0; 3034 } 3035 .pp-step-text strong { 3036 display: block; 3037 font-size: 12px; 3038 margin-bottom: 2px; 3039 } 3040 .pp-step-dismiss { 3041 background: none; 3042 border: none; 3043 color: inherit; 3044 opacity: 0.5; 3045 cursor: pointer; 3046 font-size: 16px; 3047 line-height: 1; 3048 padding: 0; 3049 flex-shrink: 0; 3050 } 3051 .pp-step-dismiss:hover { 3052 opacity: 1; 3053 } 3054 3055 /* --- Warning banners --- */ 3056 .pp-warning { 3057 background: #fff3cd; 3058 border: 1px solid #ffc107; 3059 border-radius: 8px; 3060 padding: 10px 12px; 3061 margin-bottom: 12px; 3062 font-size: 12px; 3063 color: #856404; 3064 line-height: 1.4; 3065 } 3066 .pp-warning-icon { 3067 margin-right: 4px; 3068 } 3069 3070 /* --- Pick placement + copy actions --- */ 3071 .pp-pick-btn { 3072 width: 100%; 3073 padding: 12px; 3074 border: 2px solid #0070ba; 3075 border-radius: 8px; 3076 background: #0070ba; 3077 color: #fff; 3078 cursor: pointer; 3079 font-size: 13px; 3080 font-weight: 600; 3081 transition: all 0.15s; 3082 display: flex; 3083 align-items: center; 3084 justify-content: center; 3085 gap: 8px; 3086 } 3087 .pp-pick-btn:hover { 3088 opacity: 0.9; 3089 } 3090 .pp-pick-btn.active { 3091 background: #f0f7ff; 3092 color: #0070ba; 3093 border-color: #b8dff5; 3094 } 3095 .pp-pick-btn.active:hover { 3096 background: #e0efff; 3097 } 3098 3099 /* --- Copy button --- */ 3100 #pp-apply-btn { 3101 width: 100%; 3102 background: #28a745; 3103 color: #fff; 3104 border: none; 3105 padding: 12px; 3106 border-radius: 8px; 3107 font-weight: 600; 3108 cursor: pointer; 3109 font-size: 13px; 3110 transition: all 0.2s; 3111 display: none; 3112 align-items: center; 3113 justify-content: center; 3114 gap: 8px; 3115 margin-top: 12px; 3116 } 3117 #pp-apply-btn:hover { 3118 opacity: 0.9; 3119 } 3120 #pp-apply-btn.applied { 3121 background: #28a745; 3122 } 3123 3124 /* --- Step 2 confirmation --- */ 3125 #pp-step2 { 3126 display: none; 3127 margin-top: 18px; 3128 } 3129 </style> 3130 <div class='pp-panel-header'> 3131 <div class='pp-panel-title'>PayPal Pay Later Messaging</div> 3132 <button class='pp-minimize-btn' id='pp-collapse-btn' title='Minimize panel'>▾</button> 3133 </div> 3134 <div class='pp-panel-content'> 3135 <div id='pp-warning' class='pp-warning' style='display: none;'></div> 3136 <div id='pp-inspector-warning' class='pp-warning' style='display: none;'></div> 3137 <div class='pp-step-box blue' id='pp-step1'>
3138 <span class='pp-step-text' 3139 ><strong>Step 1: Choose message placement</strong> 3140 Click the button below and then hover over your page to select a placement. 3141 </span> 3142 </div> 3143 <button id='pp-pick-btn' class='pp-pick-btn'>◎ Start Picking Placement</button 3144 ><button id='pp-apply-btn'>Copy Current Placement</button> 3145 <div id='pp-step2' style='display:none;'> 3146 <div class='pp-step-box green'> 3147 <span class='pp-step-text' 3148 ><strong>Step 2: Paste and save</strong> 3149 <p style='margin: 0 0 8px 0;'> 3150 You have copied the placement for the <b id='pp-context-name'>Product Page</b>. 3151 </p> 3152 <p style='margin: 0;'> 3153 Go back to the App Embeds section, and in the Paypal Advanced Settings, paste the copied value into the 3154 <b id='pp-selector-name'>Product Page</b> field and click the 'Save' button in the top right corner. 3155 </p></span 3156 ><button class='pp-step-dismiss' id='pp-step2-dismiss' title='Dismiss'>×</button> 3157 </div> 3158 </div> 3159 </div> 3160</template> 3161<!-- END app snippet --><!-- BEGIN app snippet: navigator -->
3161<script> 3162 // ============================================ 3163 // DOM Traversal Controls for Theme Editor 3164 // Depends on: price-detection.liquid (isIsolatedContext) 3165 // ============================================ 3166 3167 const OVERLAY_STYLE = 3168 'position:fixed;pointer-events:none;background:rgba(255,152,0,0.12);border:2px solid rgba(255,152,0,0.6);z-index:999998;display:none;'; 3169 const OVERLAY_LABEL_STYLE = 3170 'position:absolute;bottom:100%;left:-2px;background:#f57c00;color:#fff;font:10px system-ui;padding:2px 6px;border-radius:3px 3px 0 0;white-space:nowrap;'; 3171 const COPY_BUTTON_LABEL = 'Copy Current Placement'; 3172 const COPIED_BUTTON_LABEL = 'Placement Copied!'; 3173 3174 const isInOverlay = (el) => { 3175 while (el && el !== document.body) { 3176 if (getComputedStyle(el).position === 'fixed') return true; 3177 el = el.parentElement; 3178 } 3179 return false; 3180 }; 3181 3182 // Position a fixed overlay to cover a target element 3183 const positionOverlayOnElement = (overlay, el) => { 3184 const rect = el.getBoundingClientRect(); 3185 Object.assign(overlay.style, { 3186 top: rect.top + 'px', 3187 left: rect.left + 'px', 3188 width: rect.width + 'px', 3189 height: rect.height + 'px', 3190 display: 'block', 3191 }); 3192 }; 3193 3194 // Module-level refs for global listeners added by createNavigationPanel. 3195 // Stored here so they can be removed if the panel is re-initialized. 3196 let _panelInspectorActivate = null; 3197 let _panelInspectorDeactivate = null; 3198 let _highlightedElement = null; 3199 let _panelPickModeCleanup = null; 3200 3201 // Detect UID pattern in ID (Shopify's --suffix or long numeric/hex suffixes) 3202 const hasUid = (id) => { 3203 if (!id) return false; 3204 if (/--/.test(id)) return true; 3205 return /[-_](\d{5,}|[a-f0-9]{8,})$/i.test(id); 3206 }; 3207 const getIdPrefix = (id) => { 3208 if (id.includes('--')) return id.split('--')[0]; 3209 const match = id.match(/^(.+?)[-_](\d{5,}|[a-f0-9]{8,})$/i); 3210 return match ? match[1] : null; 3211 }; 3212 const getMeaningfulClasses = (el) => { 3213 if (!el.className || typeof el.className !== 'string') return []; 3214 return el.className.trim().split(/\s+/).filter(c => 3215 c && !c.startsWith('_') && !c.startsWith('js-') && 3216 c.length < 30 && !/^[a-f0-9]{6,}$/i.test(c) && !/^[A-Z]/.test(c) 3217 ); 3218 }; 3219 const isUnique = (selector) => document.querySelectorAll(selector).length === 1; 3220 3221 // Returns null if no unique selector can be generated 3222 const generateSelector = (element) => { 3223 if (!element || element === document.body || element === document.documentElement) { 3224 return null; 3225 } 3226 const classes = getMeaningfulClasses(element); 3227 3228 // Priority 1: Clean ID 3229 if (element.id && !hasUid(element.id)) return `#${element.id}`; 3230 3231 // Priority 2: ID with UID â attribute wildcard selector 3232 if (element.id && hasUid(element.id)) { 3233 const prefix = getIdPrefix(element.id); 3234 if (prefix) { 3235 const selector = `[id^="${prefix}-"]`; 3236 if (isUnique(selector)) return selector; 3237 } 3238 } 3239 3240 // Priority 3: Unique class 3241 for (const cls of classes) { 3242 if (isUnique('.' + cls)) return '.' + cls; 3243 } 3244 3245 // Priority 4: Ancestor + target class combinations (walk up to 5 levels) 3246 if (classes.length > 0) { 3247 let ancestor = element.parentElement; 3248 let depth = 0; 3249 while (ancestor && ancestor !== document.body && ancestor !== document.documentElement && depth < 5) { 3250 const ancClasses = getMeaningfulClasses(ancestor); 3251 if (ancClasses.length > 0) { 3252 const s1 = `.${ancClasses[0]} .${classes[0]}`; 3253 if (isUnique(s1)) return s1; 3254 const s2 = `.${ancClasses[0]} > .${classes[0]}`; 3255 if (isUnique(s2)) return s2; 3256 } 3257 if (ancestor.id && !hasUid(ancestor.id)) { 3258 const s3 = `#${ancestor.id} .${classes[0]}`; 3259 if (isUnique(s3)) return s3; 3260 } 3261 ancestor = ancestor.parentElement; 3262 depth++; 3263 } 3264 } 3265 3266 // NO FALLBACK - return null if no unique selector exists 3267 return null; 3268 }; 3269 const hasSpecificSelector = (el) => generateSelector(el) !== null; 3270 const shouldSkipElement = (el) => { 3271 if (!el || el.hidden) return true; 3272 if (['SCRIPT', 'STYLE', 'TEMPLATE'].includes(el.tagName)) return true; 3273 if ( 3274 el.closest('#pp-nav-panel') || 3275 el.closest('#pp-nav-pill') || 3276 el.closest('#pp-pick-overlay') 3277 ) 3278 return true; 3279 if (el.hasAttribute('data-pp-message')) return true; 3280 if (!hasSpecificSelector(el)) return true; 3281 return false;
3282 }; 3283 const resolveContextName = (providedContextName, messagingTemplate) => { 3284 if (providedContextName && providedContextName !== 'this area') return providedContextName; 3285 const id = messagingTemplate?.id || ''; 3286 if (id.includes('cart-drawer')) return 'Cart Drawer'; 3287 if (id.includes('cart')) return 'Cart Page'; 3288 if (id.includes('product')) return 'Product Page'; 3289 return 'this area'; 3290 }; 3291 3292 // Called when the cart drawer closes (via IntersectionObserver in cartDrawer.liquid) 3293 // and at the start of createNavigationPanel to tear down any existing instance. 3294 // Cleans up pick mode listeners, DOM elements, highlights, and preview clones. 3295 const destroyNavigationPanel = () => { 3296 if (_panelPickModeCleanup) { 3297 _panelPickModeCleanup(); 3298 _panelPickModeCleanup = null; 3299 } 3300 document.getElementById('pp-nav-panel')?.remove(); 3301 document.getElementById('pp-nav-pill')?.remove(); 3302 const preview = document.querySelector('[id$="-preview"][data-pp-message]'); 3303 if (preview) preview.remove(); 3304 if (_highlightedElement) { 3305 _highlightedElement.style.outline = ''; 3306 _highlightedElement.style.outlineOffset = ''; 3307 _highlightedElement = null; 3308 } 3309 if (_panelInspectorActivate) { 3310 document.removeEventListener('shopify:inspector:activate', _panelInspectorActivate); 3311 document.removeEventListener('shopify:inspector:deactivate', _panelInspectorDeactivate); 3312 _panelInspectorActivate = _panelInspectorDeactivate = null; 3313 } 3314 document.documentElement.style.cursor = ''; 3315 }; 3316 3317 const createNavigationPanel = ( 3318 initialElement, 3319 messagingTemplate, 3320 warningMessage = null, 3321 contextName = 'this area', 3322 ) => {
3323 let currentTarget = initialElement; 3324 let resolvedContextName = resolveContextName(contextName, messagingTemplate); 3325 destroyNavigationPanel(); 3326 3327 const panel = document.createElement('div'); 3328 panel.id = 'pp-nav-panel'; 3329 const tmpl = document.getElementById('pp-nav-template'); 3330 panel.appendChild(tmpl.content.cloneNode(true)); 3331 3332 // Create minimized pill button (separate from panel) 3333 const pill = document.createElement('button'); 3334 pill.id = 'pp-nav-pill'; 3335 pill.innerHTML = 'PayPal Pay Later Messaging'; 3336 const applyBtn = panel.querySelector('#pp-apply-btn'); 3337 const warningEl = panel.querySelector('#pp-warning'); 3338 const step2 = panel.querySelector('#pp-step2'); 3339 const step2Dismiss = panel.querySelector('#pp-step2-dismiss'); 3340 const contextEl = panel.querySelector('#pp-context-name'); 3341 const selectorEl = panel.querySelector('#pp-selector-name'); 3342 const updateContextUI = (newContext) => { 3343 resolvedContextName = newContext; 3344 if (contextEl) contextEl.textContent = resolvedContextName; 3345 if (selectorEl) { 3346 selectorEl.textContent = resolvedContextName; 3347 } 3348 }; 3349 updateContextUI(resolvedContextName); 3350 const detectContextFromElement = (el) => { 3351 if (el.closest('#CartDrawer, .drawer, .cart-drawer, [id*="cart-drawer"], [class*="cart-drawer"]')) 3352 return 'Cart Drawer'; 3353 if (window.location.pathname.endsWith('/cart') || el.closest('.cart, #cart, #main-cart-items, #main-cart-footer')) 3354 return 'Cart Page'; 3355 return 'Product Page'; 3356 }; 3357 3358 // Show warning message if provided 3359 if (warningMessage && warningEl) { 3360 warningEl.innerHTML = `<span class="pp-warning-icon">â ï¸</span>${warningMessage}`; 3361 warningEl.style.display = 'block'; 3362 } 3363 let isInitialRender = true; 3364 const updateUI = () => { 3365 // Highlight element 3366 highlightElement(currentTarget); 3367 // Update button states 3368 applyBtn.textContent = COPY_BUTTON_LABEL; 3369 applyBtn.classList.remove('applied'); 3370 // Reposition messaging â skip on initial render (already placed correctly by auto-detection) 3371 if (!isInitialRender) repositionMessaging(); 3372 isInitialRender = false;
3373 }; 3374 3375 const highlightElement = (el) => { 3376 if (_highlightedElement) { 3377 _highlightedElement.style.outline = ''; 3378 _highlightedElement.style.outlineOffset = ''; 3379 } 3380 _highlightedElement = el; 3381 if (el) { 3382 el.style.outline = '2px solid rgba(255,152,0,0.6)'; 3383 el.style.outlineOffset = '-1px'; 3384 } 3385 }; 3386 3387 const repositionMessaging = () => { 3388 if (!currentTarget) return; 3389 const existing = document.getElementById(messagingTemplate.id); 3390 const targetInOverlay = isInOverlay(currentTarget); 3391 const msgInOverlay = existing && isInOverlay(existing); 3392 if (targetInOverlay !== msgInOverlay) { 3393 // Cross-context: reposition messaging in the target's context without touching the original 3394 const allMessaging = document.querySelectorAll('[data-pp-message]'); 3395 let contextMsg = null; 3396 for (const el of allMessaging) { 3397 if (isInOverlay(el) === targetInOverlay) { contextMsg = el; break; } 3398 } 3399 if (!contextMsg) { 3400 contextMsg = messagingTemplate.cloneNode(true); 3401 contextMsg.id = messagingTemplate.id + '-preview'; 3402 } 3403 contextMsg.remove(); 3404 currentTarget.after(contextMsg); 3405 return; 3406 } 3407 if (existing) existing.remove(); 3408 const newMessaging = messagingTemplate.cloneNode(true); 3409 currentTarget.after(newMessaging); 3410 }; 3411 3412 const collapseBtn = panel.querySelector('#pp-collapse-btn'); 3413 const pickBtn = panel.querySelector('#pp-pick-btn'); 3414 let pickMode = false; 3415 let pickHoverTarget = null; 3416 let pickOverlay = null; 3417 let pickLabel = null; 3418 let applyBtnResetTimer = null; 3419 let _pickRafId = null; 3420 3421 const enterPickMode = () => { 3422 pickMode = true; 3423 document.documentElement.style.cursor = 'crosshair'; 3424 pickBtn.classList.add('active'); 3425 pickBtn.innerHTML = 'â Pick a spot on the page...'; 3426 applyBtn.textContent = COPY_BUTTON_LABEL; 3427 applyBtn.classList.remove('applied'); 3428 applyBtn.style.display = 'flex'; 3429 step2.style.display = 'none'; 3430 if (contextEl) contextEl.textContent = resolvedContextName; 3431 // Create overlay for highlighting (pointer-events:none prevents interference) 3432 pickOverlay = document.createElement('div'); 3433 pickOverlay.id = 'pp-pick-overlay'; 3434 pickOverlay.style.cssText = OVERLAY_STYLE; 3435 pickLabel = document.createElement('div'); 3436 pickLabel.style.cssText = OVERLAY_LABEL_STYLE; 3437 pickOverlay.appendChild(pickLabel); 3438 document.body.appendChild(pickOverlay); 3439 3440 document.addEventListener('mousemove', onPickHover, true); 3441 document.addEventListener('click', onPickClick, true); 3442 document.addEventListener('mousedown', onPickSuppressEvent, true); 3443 document.addEventListener('pointerdown', onPickSuppressEvent, true); 3444 }; 3445 3446 const exitPickMode = () => { 3447 pickMode = false; 3448 document.documentElement.style.cursor = ''; 3449 pickBtn.classList.remove('active'); 3450 pickBtn.innerHTML = 'â Start Picking Placement'; 3451 applyBtn.style.display = 'none'; 3452 // Remove overlay 3453 const overlay = document.getElementById('pp-pick-overlay'); 3454 if (overlay) overlay.remove(); 3455 pickOverlay = null; 3456 pickLabel = null; 3457 pickHoverTarget = null; 3458 3459 if (_pickRafId) { cancelAnimationFrame(_pickRafId); _pickRafId = null; } 3460 document.removeEventListener('mousemove', onPickHover, true); 3461 document.removeEventListener('click', onPickClick, true); 3462 document.removeEventListener('mousedown', onPickSuppressEvent, true); 3463 document.removeEventListener('pointerdown', onPickSuppressEvent, true); 3464 }; 3465 3466 // Find the nearest visible child element to cursor coordinates 3467 const snapToNearestChild = (parent, cx, cy) => { 3468 const children = parent.children; 3469 if (!children.length) return null; 3470 let best = null; 3471 let bestDist = 30; 3472 for (const child of children) { 3473 if (shouldSkipElement(child)) continue; 3474 const r = child.getBoundingClientRect(); 3475 if (r.width === 0 || r.height === 0) continue; 3476 const dx = cx < r.left ? r.left - cx : cx > r.right ? cx - r.right : 0; 3477 const dy = cy < r.top ? r.top - cy : cy > r.bottom ? cy - r.bottom : 0; 3478 const dist = Math.sqrt(dx * dx + dy * dy); 3479 if (dist < bestDist) { 3480 bestDist = dist; 3481 best = child; 3482 } 3483 } 3484 return best; 3485 }; 3486 3487 const onPickHover = (e) => { 3488 if (_pickRafId) return; 3489 _pickRafId = requestAnimationFrame(() => { 3490 _pickRafId = null; 3491 let el = document.elementFromPoint(e.clientX, e.clientY); 3492 if (!el || shouldSkipElement(el)) { 3493 document.documentElement.style.cursor = 'not-allowed'; 3494 if (pickOverlay) pickOverlay.style.display = 'none'; 3495 pickHoverTarget = null; 3496 return; 3497 } 3498 3499 if (el.children.length > 0) { 3500 const snapped = snapToNearestChild(el, e.clientX, e.clientY); 3501 if (snapped) el = snapped; 3502 } 3503 3504 // Skip elements without a unique selector 3505 if (shouldSkipElement(el)) { 3506 document.documentElement.style.cursor = 'not-allowed'; 3507 pickHoverTarget = null; 3508 if (pickOverlay) pickOverlay.style.display = 'none'; 3509 return; 3510 } 3511 document.documentElement.style.cursor = 'crosshair'; 3512 if (el === pickHoverTarget) return; 3513 pickHoverTarget = el; 3514 positionOverlayOnElement(pickOverlay, el);
3515 pickLabel.innerHTML = 'Select this placement'; 3516 }); 3517 }; 3518 3519 const onPickSuppressEvent = (e) => { 3520 if (e.target.closest('#pp-nav-panel')) return; 3521 e.preventDefault(); 3522 e.stopPropagation(); 3523 }; 3524 3525 const onPickClick = (e) => { 3526 if (e.target.closest('#pp-nav-panel')) return; 3527 e.preventDefault(); 3528 e.stopPropagation(); 3529 e.stopImmediatePropagation(); 3530 if (pickHoverTarget && !shouldSkipElement(pickHoverTarget)) { 3531 currentTarget = pickHoverTarget; 3532 updateContextUI(detectContextFromElement(currentTarget)); 3533 updateUI(); 3534 } 3535 }; 3536 3537 // --- Pick button --- 3538 pickBtn.addEventListener('click', () => { 3539 if (pickMode) exitPickMode(); 3540 else enterPickMode(); 3541 }); 3542 3543 _panelPickModeCleanup = () => { if (pickMode) exitPickMode(); }; 3544 3545 // --- Minimize / expand --- 3546 collapseBtn.addEventListener('click', () => { 3547 if (pickMode) exitPickMode(); 3548 panel.classList.add('minimized'); 3549 pill.style.display = 'flex'; 3550 highlightElement(null); 3551 }); 3552 pill.addEventListener('click', () => { 3553 panel.classList.remove('minimized'); 3554 pill.style.display = 'none'; 3555 highlightElement(currentTarget); 3556 }); 3557 3558 // --- Step 2 dismiss --- 3559 step2Dismiss.addEventListener('click', () => { 3560 step2.style.display = 'none'; 3561 }); 3562 3563 // Handle copy button click 3564 panel.addEventListener('click', async (e) => { 3565 const button = e.target.closest('#pp-apply-btn'); 3566 if (!button) return; 3567 // Skip buttons handled separately 3568 if (button.id === 'pp-collapse-btn' || button.id === 'pp-pick-btn' || button.id === 'pp-step2-dismiss') return; 3569 if (button.id === 'pp-apply-btn') { 3570 const selector = generateSelector(currentTarget); 3571 if (!selector) return; 3572 let copied = false; 3573 try { 3574 // Try multiple copy methods (iframe security blocks clipboard API) 3575 if (navigator.clipboard?.writeText) { 3576 await navigator.clipboard.writeText(selector); 3577 copied = true; 3578 } 3579 } catch {} 3580 if (!copied) { 3581 try { 3582 const ta = document.createElement('textarea'); 3583 ta.value = selector; 3584 ta.style.position = 'fixed'; 3585 ta.style.opacity = '0'; 3586 document.body.appendChild(ta); 3587 ta.select(); 3588 copied = document.execCommand('copy'); 3589 ta.remove(); 3590 } catch {} 3591 } 3592 if (copied) { 3593 applyBtn.textContent = COPIED_BUTTON_LABEL; 3594 applyBtn.classList.add('applied'); 3595 if (applyBtnResetTimer) clearTimeout(applyBtnResetTimer); 3596 applyBtnResetTimer = setTimeout(() => { 3597 applyBtn.textContent = COPY_BUTTON_LABEL; 3598 applyBtn.classList.remove('applied'); 3599 applyBtnResetTimer = null; 3600 }, 1200); 3601 // Show Step 2 confirmation 3602 step2.style.display = 'block'; 3603 } 3604 exitPickMode(); 3605 } 3606 }); 3607 3608 // --- Inspector mode detection --- 3609 const inspectorWarning = panel.querySelector('#pp-inspector-warning'); 3610 let inspectorActive = typeof Shopify !== 'undefined' && Shopify.inspectMode; 3611 const isMac = navigator.platform?.startsWith('Mac') || navigator.userAgentData?.platform === 'macOS'; 3612 const shortcut = isMac ? 'â â§ I' : 'Ctrl + Shift + I'; 3613 const enableInspectorMode = () => { 3614 inspectorActive = true; 3615 inspectorWarning.innerHTML = `<span class="pp-warning-icon">â ï¸</span> For a better experience, press <strong>${shortcut}</strong> to turn off inspector mode`; 3616 inspectorWarning.style.display = 'block'; 3617 }; 3618 const disableInspectorMode = () => { 3619 inspectorActive = false; 3620 inspectorWarning.style.display = 'none'; 3621 }; 3622 _panelInspectorActivate = enableInspectorMode; 3623 _panelInspectorDeactivate = disableInspectorMode; 3624 document.addEventListener('shopify:inspector:activate', enableInspectorMode); 3625 document.addEventListener('shopify:inspector:deactivate', disableInspectorMode); 3626 3627 // Prevent panel/pill clicks from closing cart drawer (themes close drawer on outside mousedown) 3628 const stopBubble = (e) => e.stopPropagation(); 3629 panel.addEventListener('mousedown', stopBubble); 3630 panel.addEventListener('pointerdown', stopBubble); 3631 pill.addEventListener('mousedown', stopBubble); 3632 pill.addEventListener('pointerdown', stopBubble); 3633 3634 document.body.appendChild(panel); 3635 document.body.appendChild(pill); 3636 if (inspectorActive) enableInspectorMode(); 3637 updateUI(); 3638 return panel; 3639 }; 3640</script>
3640 3641<!-- END app snippet --><!-- BEGIN app snippet: cart -->
3641<script> 3642 // Determine correct locator by theme name 3643 const cartPageThemeName = window.Shopify.theme.name; 3644 let cartPageLocator, cartPageNodeToObserve, cartPageMutationNode; 3645 3646 try { 3647 switch (cartPageThemeName) { 3648 // to support other themes add cases 3649 // default case supports Shopify Free themes 3650 default: 3651 cartPageLocator = '.cart__footer .totals'; 3652 cartPageNodeToObserve = '#main-cart-footer .js-contents'; 3653 cartPageMutationNode = 'js-contents'; 3654 break; 3655 } 3656 // Begin Upstream Messaging Implementation 3657 const cartPageMessaging = document.createElement('div'); 3658 const price = 0 / 100; 3659 3660 const cartPageAttributes = { 3661 'id': 'paypal-upstream-messaging-cart-page', 3662 'data-pp-message': '', 3663 'data-pp-placement': 'cart', 3664 'data-pp-style-layout': 'text', 3665 'data-pp-style-text-align': 'right', 3666 'data-pp-style-logo-type': "inline", 3667 'data-pp-style-text-color': "black", 3668 'data-pp-style-text-size': "12", 3669 'data-pp-style-logo-position': "", 3670 'data-pp-style-text-align': "", 3671 'data-pp-amount': price, 3672 'style': 'padding-top: 10px', 3673 }; 3674 3675 Object.keys(cartPageAttributes).forEach((key) => { 3676 cartPageMessaging.setAttribute(key, cartPageAttributes[key]); 3677 }); 3678 3679 const advancedSettingsEnabled = 'false' === 'true'; 3680 let selectorNotFoundWarning = null; 3681 3682 if (advancedSettingsEnabled && '.cart-form__totals .h-stack .text-subdued:last-of-type' !== '') { 3683 // utils.liquid 3684 cartPageLocator = parseSelector('.cart-form__totals .h-stack .text-subdued:last-of-type'); 3685 } 3686 3687 if ("enabled" === 'enabled') { 3688 const element = document.querySelector(cartPageLocator); 3689 3690 if (element) { 3691 element.after(cartPageMessaging.cloneNode()); 3692 3693 if (advancedSettingsEnabled && isIsolatedContext()) { 3694 setTimeout(() => { 3695 createNavigationPanel(element, cartPageMessaging, null, 'Cart Page'); 3696 }, 500); 3697 } 3698 3699 // utils.liquid 3700 watchForCartChanges(cartPageLocator, cartPageMessaging); 3701 } else if (advancedSettingsEnabled && isIsolatedContext()) { 3702 selectorNotFoundWarning = 'Selected placement not found on this page. Please choose an element that is present on all page templates.'; 3703 recordEvent('appEmbed:advanced-settings-selector-not-found', { locator: cartPageLocator }); 3704 setTimeout(() => { 3705 createNavigationPanel(document.body, cartPageMessaging, selectorNotFoundWarning, 'Cart Page'); 3706 }, 500); 3707 } 3708 } 3709 } catch (e) { 3710 // utils.liquid 3711 recordEvent('appEmbed:query-selector-not-found-cart-page', { locator: cartPageLocator, error: e.message }); 3712 } 3713 </script>
3713 3714<!-- END app snippet --><!-- BEGIN app snippet: cartDrawer -->
3714<script> 3715 // Determine correct locator by theme name 3716 const cartDrawerThemeName = window.Shopify.theme.name; 3717 let cartDrawerLocator, cartDrawerNodeToObserve, cartDrawerMutationNode; 3718 3719 switch (cartDrawerThemeName) { 3720 // to support other themes add cases 3721 // default case supports Shopify Free themes 3722 default: 3723 cartDrawerLocator = '.cart-drawer__footer .totals'; 3724 cartDrawerNodeToObserve = '#CartDrawer'; 3725 cartDrawerMutationNode = 'drawer__inner'; 3726 break; 3727 } 3728 // Begin Upstream Messaging Implementation 3729 try { 3730 const cartDrawerMessaging = document.createElement('div'); 3731 const price = 0 / 100; 3732 3733 const cartDrawerAttributes = { 3734 'id': 'paypal-upstream-messaging-cart-drawer', 3735 'data-pp-message': '', 3736 'data-pp-placement': 'cart', 3737 'data-pp-style-layout': 'text', 3738 'data-pp-style-text-align': 'right', 3739 'data-pp-style-logo-type': "inline", 3740 'data-pp-style-text-color': "black", 3741 'data-pp-style-text-size': "12", 3742 'data-pp-style-logo-position': "", 3743 'data-pp-amount': price, 3744 }; 3745 3746 Object.keys(cartDrawerAttributes).forEach((key) => { 3747 cartDrawerMessaging.setAttribute(key, cartDrawerAttributes[key]); 3748 }); 3749 3750 const advancedSettingsEnabled = 'false' === 'true'; 3751 const customCartDrawerSelector = ''.trim(); 3752 3753 if (advancedSettingsEnabled && customCartDrawerSelector !== '') { 3754 // utils.liquid 3755 cartDrawerLocator = parseSelector(customCartDrawerSelector); 3756 } 3757 3758 if ("enabled" === 'enabled') { 3759 waitForElement(cartDrawerLocator).then(elem => { 3760 elem.after(cartDrawerMessaging.cloneNode()); 3761 3762 if (advancedSettingsEnabled && isIsolatedContext() && !document.getElementById('pp-nav-panel')) { 3763 let drawerPanelActive = false; 3764 new IntersectionObserver((entries) => { 3765 if (entries[0].isIntersecting) { 3766 if (!document.getElementById('pp-nav-panel')) { 3767 setTimeout(() => { 3768 if (!document.getElementById('pp-nav-panel')) { 3769 createNavigationPanel(elem, cartDrawerMessaging, null, 'Cart Drawer'); 3770 drawerPanelActive = true; 3771 } 3772 }, 300); 3773 } 3774 } else if (drawerPanelActive) { 3775 destroyNavigationPanel(); 3776 drawerPanelActive = false; 3777 } 3778 }, { threshold: 0.1 }).observe(elem); 3779 } 3780 }); 3781 3782 // Custom selector not found â show navigator with warning when drawer opens 3783 if (advancedSettingsEnabled && customCartDrawerSelector && !document.querySelector(cartDrawerLocator) && isIsolatedContext() && !document.getElementById('pp-nav-panel')) { 3784 const drawerContainer = document.querySelector(cartDrawerNodeToObserve); 3785 if (drawerContainer) { 3786 let warningPanelActive = false; 3787 const warning = 'Selected placement not found on this page. Please choose an element that is present on all page templates.'; 3788 recordEvent('appEmbed:advanced-settings-selector-not-found', { locator: cartDrawerLocator }); 3789 new IntersectionObserver((entries) => { 3790 if (entries[0].isIntersecting) { 3791 if (!document.getElementById('pp-nav-panel')) { 3792 setTimeout(() => { 3793 if (!document.getElementById('pp-nav-panel')) { 3794 createNavigationPanel(drawerContainer, cartDrawerMessaging, warning, 'Cart Drawer'); 3795 warningPanelActive = true; 3796 } 3797 }, 300); 3798 } 3799 } else if (warningPanelActive) { 3800 destroyNavigationPanel(); 3801 warningPanelActive = false; 3802 } 3803 }, { threshold: 0.1 }).observe(drawerContainer); 3804 } 3805 } 3806 3807 // utils.liquid 3808 watchForCartChanges(cartDrawerLocator, cartDrawerMessaging); 3809 } 3810 } catch (e) { 3811 // utils.liquid 3812 recordEvent('appEmbed:query-selector-not-found-cart-drawer', { locator: cartDrawerLocator, error: e.message }); 3813 } 3814 </script>
3814 3815<!-- END app snippet --> 3816 3817 3818</div><div id="shopify-block-AZFd6aGFnS21FS1hVa__13768625480086291342" class="shopify-block shopify-app-block">
3818<script> 3819 window['ShopifyForms'] = { 3820 ...window['ShopifyForms'], 3821 currentPageType: "cart" 3822 }; 3823</script>
3823 3824 3825 3826</div>
3826<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
3826 3827<shopify-chat></shopify-chat> 3828</body> 3829</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.