Recipe Book Flavor Best Of Clean Simple Eats
` } digitalRecipeBookRef.append( `
Get a free digital recipe book! Sent directly to your inbox with every protein purchase. Delicious, protein-packed recipes coming your way!
${ digitalRecipeSection }
`) recipeSliderInit()} const renderMainIcons = (mainIconsRef, flavorMainProductIcons) => { mainIconsRef.empty() mainIconsRef.css("display", "flex") if(flavorMainProductIcons.length < 1) { mainIconsRef.css("display", "none") return } let htmlCode = ''; for (var i = 0; i < flavorMainProductIcons.length; i++) { htmlCode += '
'; htmlCode += ` `; htmlCode += ' '; } htmlCode += ''; mainIconsRef.append(htmlCode) } const updateTikTokSection = (tiktokSectionRef, hideTikTok, flavorPrimaryColor, flavorSecondaryColor, tiktokCommentBorderRef) => { // update borders $(".b").css('fill', flavorPrimaryColor); $(".c").css('fill', flavorSecondaryColor); $(".cls-1").css('fill', flavorPrimaryColor) $(".ae--heading-with-logo span").css('color', flavorPrimaryColor) tiktokCommentBorderRef.css("border", `2px ${flavorPrimaryColor} solid`) if (hideTikTok) { tiktokSectionRef.css("display", "none") } else { tiktokSectionRef.css("display", "block") } } const renderFaqSection = (faqRef, backgroundColor) => { faqRef.parent ().css("background-color", backgroundColor) } const updateWaveBackgroundColor = (waveRef, backgroundColor) => { let newWave = `
` let srcnew = "data:image/svg+xml;base64,"+btoa(newWave); waveRef.attr("src",srcnew) waveRef.attr("srcset",srcnew) } const updateWaveMobileBackgroundColor = (waveRefMobile, backgroundColor) => { let newWave = `
` let srcnew = "data:image/svg+xml;base64,"+btoa(newWave); waveRefMobile.attr("src",srcnew) waveRefMobile.attr("srcset",srcnew) } const updateTopWave = (color) => { let newTopWave = `
` $('.wave-container.top-wave').html(newTopWave) } const updatePageUrl = (selectedFlavor) => { window.history.pushState(selectedFlavor.title, selectedFlavor.title, `${selectedFlavor.handle}`); } const reloadStampedWidgets = (flavorId, reviewsMainWidgetRef, reviewsBadgeRef, backgroundColor) => { $(".stamped-main-badge").empty() $("#stamped-main-widget").empty() reviewsBadgeRef.attr("data-id", `${flavorId}`) reviewsMainWidgetRef.attr("data-product-id", `${flavorId}`) StampedFn.reloadUGC(); $("#stamped-main-widget").css("background-color", `${backgroundColor}50`) } const updateBreadcrumbs = (breadcrumbsLink, selectedFlavorTitle) => { breadcrumbsLink.text(selectedFlavorTitle) } const renderSuperFoodSection = (productVideoRef, flavorVideoUrl, flavorVideoHeading, backgroundColor, hideTikTok, flavorVideoPoster) => { if (flavorVideoUrl === "") { productVideoRef.parent().css("display", "none") return } else { productVideoRef.parent().css("display", "block") } if (hideTikTok) { $(".wave-wrapper.video").css("display", "block") updateBackground(backgroundColor, productVideoRef.parent().parent()) } else { $(".wave-wrapper.video").css("display", "none") updateBackground("#FFFFFF", productVideoRef.parent().parent()) } productVideoRef.empty() if(flavorVideoUrl === "" || flavorVideoHeading === "") return let source = flavorVideoUrl if (!flavorVideoPoster) { source = `${source}#t=0.001` } productVideoRef.append( $("
").text(flavorVideoHeading), $("").attr({ "playsinline": "playsinline", "controls": "", "poster": `${flavorVideoPoster}` }).append( $("").attr({ "src": `${source}` }) )); } const renderProductForm = (flavorSelectedOrfirstAvailableVariantvailable, formMin, formMax, formStep, flavorTags, productVariants, variantSelectorRef, flavorHandle, flavorId) => { $(".ae--form-action-elements").empty() variantSelectorRef.empty() let productFormData = ` `; const productAvailable = flavorSelectedOrfirstAvailableVariantvailable; setTimeout(function() { if(productAvailable) { $(".rc-container-wrapper").css('pointer-events', "fill") $(".rc-container-wrapper").css('opacity', "1") } else { $(".rc-container-wrapper").css('pointer-events', "none") $(".rc-container-wrapper").css('opacity', "0.5") } }, 1000); const showNotifyMe = flavorTags.includes('bis-hide') ? false : true; let product_form_id = `add-to-cart-${ flavorHandle } template--15105719173198__main`.replace( /\s/g, '') $(".add-to-cart-identifier").attr("id", product_form_id ) $(':input[name="product-id"]').attr("value", flavorId) $('.rc-container-wrapper').remove() window.ReChargeWidget.createWidget({ productId: flavorId }); productFormData += ` `; $(".ae--form-action-elements").append(productFormData) let selectorHtml = ``; productVariants.forEach(variant => { selectorHtml += ` ${variant.title} `; }); variantSelectorRef.append(selectorHtml) updateProductQuantityAction() } const updateProductQuantityAction = () => { if (window.matchMedia("(max-width: 768px)")) { document.querySelector(".ae--product-desc").removeAttribute("open"); } window.matchMedia("(max-width: 768px)").onchange = (event) => { if (event.matches) { document.querySelector(".ae--product-desc").removeAttribute("open"); } else { document.querySelector(".ae--product-desc").setAttribute("open", "open"); } } const qtyCtrls = document.querySelectorAll(".ae--form-quantity_ctrl"), qtyInput = document.querySelector(".ae--form-quantity input"), qtyStep = parseInt(qtyInput.getAttribute("step")), qtyMin = parseInt(qtyInput.dataset.min); qtyCtrls.forEach((qty) => { qty.addEventListener("click", (event) => { event.preventDefault(); event.stopImmediatePropagation(); const actionType = qty.dataset.quantityAction; let qtyCurrentValue = parseInt(qtyInput.value); if ( actionType === "dec" ) { qtyCurrentValue = qtyCurrentValue - qtyStep; } else { qtyCurrentValue = qtyCurrentValue + qtyStep; } if ( qtyCurrentValue < qtyMin ) { qtyInput.value = qtyMin; } else { qtyInput.value = qtyCurrentValue; } }) }) } //Reused from cnr-graphql-common const renderMixingSection = (mixingSectionRef, flavormixingImageSize, flavorMixingImages, flavorMixingTitles, flavorMixingInfos) => { let section = $(".cnr-mixing-info"); let wave = $(".ae--product-mixing__wave") section.empty() wave.remove() if (flavorMixingImages.length < 1) { mixingSectionRef.parent().css("display", "none") return } else { mixingSectionRef.parent().css("display", "block") } let images = flavorMixingImages.map((item,index)=>`
${flavorMixingTitles[index]} ${flavorMixingInfos[index]}
`).join(""); section.append(`MIXING 101: `) section.after(` `) try { new Splide( '#ae--product-mixings-slider',{ perPage: 1, perMove: 1, pagination: false, arrows: true, mediaQuery: "min", breakpoints: { 768: { destroy: true } } } ).mount(); } catch(e) {} } const renderBenefitsSection = (benefitsSectionRef, flavorBenefitsText, flavorBenefitsImage) => { benefitsSectionRef.empty() const benefitsSection = ` AMAZING BENEFITS ${flavorBenefitsText}
`; if (flavorBenefitsText != '' && flavorBenefitsImage != '') { benefitsSectionRef.append(benefitsSection) } } const renderProductIngredients = (productIngredientsRef, flavorIngredientsSize, flavorIngredientSectionImage, flavorIngredientIcons, backgroundColor, factsTable, flavorIngredientHighestInfo, flavorDescription, hasTopWave) => { console.log(productIngredientsRef) productIngredientsRef.parent().parent()?.css("background-color", backgroundColor) productIngredientsRef.parent().parent().parent()?.css("background-color", backgroundColor) productIngredientsRef.empty() let ingredientIconsLength = flavorIngredientIcons.length if (ingredientIconsLength > 0) { productIngredientsRef.parent().parent().parent().css("display", "block") const firstColumn = $(''); const iconList = $(''); for (var i = 0; i < ingredientIconsLength; i++) { var listItem = $(''); var iconImg = $(' '); listItem.append(iconImg); iconList.append(listItem); } firstColumn.append(iconList); if (flavorIngredientSectionImage !== '') { const sectionImage = $(' '); firstColumn.append(sectionImage); } var secondColumn = $(''); var infoDiv = $(''); var link = 'Learn more about our ingredient standards. ' var h2 = $('Highest Ingredient Standards '); var p = $(`${ flavorIngredientHighestInfo } ${link}
`); if (factsTable != null) { var button = $('').click(modalOpen); } infoDiv.append(h2); infoDiv.append(p); infoDiv.append(button); secondColumn.append(infoDiv); productIngredientsRef.append(firstColumn); productIngredientsRef.append(secondColumn); if(factsTable != null) { if (factsTable.length > 1) { document.querySelector(".ae--modal-content").innerHTML = ` ${factsTable.map(fact => renderNutritionFacts(fact, "desktop", true, backgroundColor)).join("")}
` new Splide( "#ingredients-slider-desktop", { perPage: 1, perMove: 1, pagination: true, arrows: true, rewind: true, speed: 800 }).mount(); updateMobileDescription(factsTable, flavorIngredientHighestInfo, flavorIngredientIcons, flavorDescription, backgroundColor) } else { document.querySelector(".ae--modal-content").innerHTML = renderNutritionFacts(factsTable[0], "desktop", false, backgroundColor); updateMobileDescription(factsTable[0], flavorIngredientHighestInfo, flavorIngredientIcons, flavorDescription, backgroundColor) } $(".supplemnt-facts-variety-title").css("background-color", backgroundColor) if($(window).width() < 768) { $(".supplement-facts--table").css("background-color", backgroundColor) } } else { productIngredientsRef.parent().parent().parent().css("display", "none") } }} const updateActiveFlavor = (flavoursListRef, targetTitle) => { flavoursListRef.removeClass('active') let activeItem = $('.ae--product-flavors ul li[data-title="' + targetTitle + '"]'); activeItem.addClass('active') } const updateDescription = (description, productDescriptionRef) => { productDescriptionRef.empty() productDescriptionRef.append(description) } const updateMainText = (title,productTitleRef, alternateTitle, flavorName) => { if(alternateTitle !== "") { productTitleRef.text(alternateTitle) } else { productTitleRef.text(title) } $("#selected-flavor").text(flavorName) } function updatePrices(priceRef, compareAtPriceRef, price, compareAtPrice) { priceRef.text(`$${(price / 100).toFixed(2)}`) if (price === compareAtPrice || compareAtPrice === 0 || compareAtPrice == null) { compareAtPriceRef.text("") $(".ae--product-card-price-pdp.breaks").css("display", "none") if (compareAtPriceRef.hasClass("sale")) { compareAtPriceRef.removeClass("sale") } } else { compareAtPriceRef.text(`$${(compareAtPrice / 100).toFixed(2)}`) $(".ae--product-card-price-pdp.breaks").css("display", "block") compareAtPriceRef.addClass("sale") } } const updateBackground = (backgroundColor, backgroundRef) => { setTimeout(function() { const newColorOverlay = $(""); newColorOverlay.css("background-color", `${backgroundColor}`); newColorOverlay.css("top", backgroundRef.offset().top); newColorOverlay.css("height", backgroundRef.outerHeight()); backgroundRef.append(newColorOverlay) newColorOverlay.animate({ left: 0 }, 1000, function() { newColorOverlay.remove(); backgroundRef.css("background-color", backgroundColor); }); }, 200); } const renderMainMediaImage = (mediaItems, mainImageRef) => { if (mediaItems.length < 1) return let mediaItem = mediaItems[0] mainImageRef.attr("src",mediaItem.src) mainImageRef.attr("srcset",mediaItem.src) mainImageRef.attr("alt", mediaItem.alt) } const renderMediaItems = (mediaItems, productMediaUlRef) => { productMediaUlRef.empty() for (var i = 1; i < mediaItems.length; i++) { let mediaItem = mediaItems[i]; let media; if (mediaItem.media_type == "image") { media = ` `; } else if (mediaItem.media_type == "video") { media = ` ` } let newMediaItem = $(" ").html(media ?? "<>>"); productMediaUlRef.append(newMediaItem); } } const renderVariantsSizesMeta = (productServingSizes, selectedFlavor, selectDefaultVariantOption) => { let variants = $("#product-variants-identifier") variants.empty() if (productServingSizes != null && productServingSizes.length > 0) { productServingSizes.sort((a, b) => { const optionA = parseInt(a.variants[0].option1); const optionB = parseInt(b.variants[0].option1); return optionB - optionA; }) var htmlString = '' + 'Size ' + selectDefaultVariantOption + ' SERVINGS ' + ''; productServingSizes.forEach(function(servingProduct, index) { htmlString += ''; htmlString += `` + servingProduct.variants[0].option1 + ' '; }); htmlString += '
'; } variants.append(htmlString) } const renderVariantSizes = (variantsAvailableArr, variantsOption1Arr, variantsOption2Arr, variantsOption3Arr, productVariantSize, hasOnlyDefaultVariant, productOptionsWithValues, flavorUrl, flavorSelectedValue) => { $("#product-secondary-variants").empty() let htmlCode = ''; const variantCount = productVariantSize; let selectedValue; if (!hasOnlyDefaultVariant && variantCount > 1) { for (const option of productOptionsWithValues) { if(option.name == "Servings") continue let optionsIndex = 0; // workaround, liquid json filter is missing selected_value if(Array.isArray(flavorSelectedValue)) { selectedValue = flavorSelectedValue[optionsIndex] } else { selectedValue = flavorSelectedValue } htmlCode += ` ${option.name} ${selectedValue} ${option.name} `; for (const value of option.values) { let optionsValuesIndex = 0 let optionDisabled = true; for (let i = 0; i < variantsOption1Arr.length; i++) { switch (option.position) { case 1: if (variantsOption1Arr[i] == value && variantsAvailableArr[i]) { optionDisabled = false; } break; case 2: if ( variantsOption1Arr[i] == product.selected_or_first_available_variant.option1 && variantsOption2Arr[i] == value && variantsAvailableArr[i] ) { optionDisabled = false; } break; case 3: if ( variantsOption1Arr[i] == product.selected_or_first_available_variant.option1 && variantsOption2Arr[i] == product.selected_or_first_available_variant.option2 && variantsOption3Arr[i] == value && variantsAvailableArr[i] ) { optionDisabled = false; } break; } } htmlCode += ` ${value} `; optionsValuesIndex += 1 } htmlCode += '
'; optionsIndex += 1 } } $("#product-secondary-variants").html(htmlCode); } //reused from cnr-grapql-common const renderNutritionFacts = (facts,mode, multi, backgroundColor) =>{ let showSS = () => (facts.serving_size) ? `Serving Size ${facts.serving_size}
` : '' let showSPC = () => (facts.serving_per_container) ? ` Serving Per Container ${facts.serving_per_container}
` : '' let showC = () => (facts.calories) ? ` Amount Per Serving % Daily Value* ` : '' let showDVNote = () => (!facts.daily_value_note) ? '' : `${facts.daily_value_note}
`; function showNote() { let otherIngredients = facts.other_ingredients ? `${facts.ingredients_label}: ${facts.other_ingredients}` : ''; let contains = facts.contains ? `${facts.contains}` : ''; return ` ${otherIngredients}
${ contains != '' ? `Contains: ${contains.split("Contains: ").pop()}
`: '' } ${facts.note}
Manufactured in Utah, USA. We are committed to continuously improving our ingredients. For most updated ingredients, please see the packaging label. Learn more about our ingredients here.
`; } let nutritionFactsNames = facts.nutrition_facts.map(fact => fact.name) let proteinExist = false if (nutritionFactsNames.includes("Protein")) { proteinExist = true } let nutrition_facts = facts.nutrition_facts.map(fact=>{ let sub_facts = (!fact.sub_facts)?'':' '+fact.sub_facts.map(subfact=> subfact.amount_per_serving !== "0g" ? ` ${subfact.name} ${subfact.amount_per_serving} ${subfact.daily_value ? subfact.daily_value : facts.daily_value_default } ` : ``).join("")+' '; let showContent = ()=>(fact.content)?`${ fact.content }
`:'' return ` ${fact.name} ${fact.amount_per_serving} ${fact.daily_value?fact.daily_value:facts.daily_value_default} ${showContent()} `; }).join(""); return ` ${ (multi) ? `
${ facts.subtitle } ` : '' }
Supplement Facts ${showSS()} ${showSPC()}
${showDVNote()}
${showNote()}
` } //reused from cnr-graphql-common.js const updateMobileDescription = (facts, highestIngredientInfo, ingredientIcons, flavorDescription, backgroundColor) => { document.querySelector(".ae--product-desc-content").innerHTML = flavorDescription; let ingredientIconslength = ingredientIcons.length let info = document.querySelector(".ae--product-information"); [".cnr-product-accordion-standards",".cnr-product-accordion-ingredients"].forEach(accordion=>{ let element = document.querySelector(accordion); if (element) { element.parentNode.removeChild(element); } }); if (highestIngredientInfo) { let standards = document.createElement("details"); standards.classList.add("ae--product-accordion","cnr-product-accordion-standards"); standards.innerHTML=` HIGHEST INGREDIENT STANDARDS ${ highestIngredientInfo } Learn more about our ingredient standards.
`; info.appendChild(standards); } if ((ingredientIcons && ingredientIconslength>0)) { let sfacts = document.createElement("details"); sfacts.classList.add("ae--product-accordion","cnr-product-accordion-ingredients"); let icons = ingredientIcons.map(icon=>` `).join(""); let nfacts = ''; if (facts && !Array.isArray(facts)) { nfacts = renderNutritionFacts(facts,"mobile", false); } else if (facts && Array.isArray(facts) && facts.length > 1) { nfacts = facts.map(fact => renderNutritionFacts(fact, "mobile", true)).join("") } sfacts.innerHTML = ` INGREDIENTS `; info.appendChild(sfacts); new Splide( '#ingredients-slider-mobile',{arrows:true} ).mount(); } } Shipping calculated at checkout.
PRODUCT DESCRIPTION The Best of Clean Simple Eats is A Macro-Based Cookbook! We surveyed our CSE Squad, our friends and our family to help us choose these can’t-live-without-favorites. From brekkie to dinner (and everything in between), each recipe is macro-balanced, family-friendly and guaranteed to leave you drooling. Oh, and we've even added prep times, cook times and pro tips ! All of this goodness is packed into a beautiful coffee table style book that is perfect for gifting.
Recipes: This book is stacked with over 150 mouth-watering recipes!
Breakfasts: Shakes & Smoothies, Oatmeals, Pancakes & Waffles, Savory Snacks: Crunchy, Savory Snacks, Parfaits & Fruit Dips, Muffins, Power Bites Entrees: Soups, Salads & Sandwiches, Tex-Mex, Pizza & Pasta, Comfort Food Desserts: Breads & Rolls, Brownies & Bars, Cakes & Crumbles, Cookies, Party Treats
PRODUCT DESCRIPTION
The Best of Clean Simple Eats is A Macro-Based Cookbook! We surveyed our CSE Squad, our friends and our family to help us choose these can’t-live-without-favorites. From brekkie to dinner (and everything in between), each recipe is macro-balanced, family-friendly and guaranteed to leave you drooling. Oh, and we've even added prep times, cook times and pro tips! All of this goodness is packed into a beautiful coffee table style book that is perfect for gifting.
Recipes: This book is stacked with over 150 mouth-watering recipes!
Breakfasts: Shakes & Smoothies, Oatmeals, Pancakes & Waffles, Savory Snacks: Crunchy, Savory Snacks, Parfaits & Fruit Dips, Muffins, Power Bites Entrees: Soups, Salads & Sandwiches, Tex-Mex, Pizza & Pasta, Comfort Food Desserts: Breads & Rolls, Brownies & Bars, Cakes & Crumbles, Cookies, Party Treats