{"id":133564,"date":"2025-03-20T06:15:16","date_gmt":"2025-03-20T10:15:16","guid":{"rendered":"https:\/\/yorbestlife.com\/?p=133564"},"modified":"2025-03-25T12:47:44","modified_gmt":"2025-03-25T16:47:44","slug":"mediterranean-egg-bites-gluten-free-and-dairy-free","status":"publish","type":"post","link":"https:\/\/yorbestlife.com\/index.php\/2025\/03\/20\/mediterranean-egg-bites-gluten-free-and-dairy-free\/","title":{"rendered":"Mediterranean egg bites (gluten-free and dairy-free)"},"content":{"rendered":"<p><em>Today I\u2019m sharing a dairy-free and gluten-free recipe for Mediterranean egg bites. Try this as a high-protein meal prep option!<\/em><\/p>\n<p>Hey hey! How\u2019s the week going? I hope you\u2019re having a great one so far! It\u2019s been busy as usual \u2013 but I\u2019m looking forward to some weekend fun with the crew. \ud83d\ude42<\/p>\n<p><a href=\"https:\/\/fitnessista.com\/mediterranean-egg-bites-gluten-free-and-dairy-free\/medterranean-egg-bites\/\" rel=\"attachment wp-att-156820 follow noopener noreferrer\" data-wpel-link=\"internal\"><img decoding=\"async\" class=\"aligncenter wp-image-156820 size-large\" title=\"Mediterranean egg bites\" src=\"https:\/\/yorbestlife.com\/wp-content\/uploads\/2025\/01\/medterranean-egg-bites-1024x683-1.jpg\" alt=\"Mediterranean egg bites (gluten-free and dairy-free)\" width=\"1024\" height=\"683\" \/><\/a><\/p>\n<p>For today\u2019s post, I\u2019m so excited to share a recipe that we\u2019ve all been enjoying lately: Mediterranean egg bites. I made a batch as part of meal prep and they made amazing quick <a href=\"https:\/\/fitnessista.com\/category\/breakfast-recipes\/\" target=\"_blank\" rel=\"noopener follow noreferrer\" data-wpel-link=\"internal\">breakfast<\/a> and <a href=\"https:\/\/fitnessista.com\/category\/lunch-recipes\/\" target=\"_blank\" rel=\"noopener follow noreferrer\" data-wpel-link=\"internal\">lunchtime<\/a> staples. (I also love them in a Siete almond flour tortilla!) In addition, they freeze beautifully and the kids love them, too.<\/p>\n<p><a href=\"https:\/\/fitnessista.com\/mediterranean-egg-bites-gluten-free-and-dairy-free\/egg-bites-recipe-2\/\" rel=\"attachment wp-att-156818 follow noopener noreferrer\" data-wpel-link=\"internal\"><img decoding=\"async\" class=\"aligncenter wp-image-156818 size-large\" title=\"healthy breakfast recipe\" src=\"https:\/\/yorbestlife.com\/wp-content\/uploads\/2025\/03\/egg-bites-recipe-2-683x1024-1.jpg\" alt=\"healthy breakfast recipe\" width=\"683\" height=\"1024\" \/><\/a><\/p>\n<p>(I would be happy to say that Maisey didn\u2019t try any of these, but she might have stolen one or four from the countertop.)<\/p>\n<p>When I have a savory and protein-packed breakfast, I feel more satisfied throughout the morning and don\u2019t feel like I crave sweets or sugar as much throughout the day. In fact, this is a great meal idea for <a href=\"https:\/\/fitnessista.com\/how-to-improve-metabolic-flexibility\/\" target=\"_blank\" rel=\"noopener follow noreferrer\" data-wpel-link=\"internal\">metabolic flexibility.<\/a> And you could just enjoy the egg bites first before heading into fruit or oatmeal as a full breakfast.<\/p>\n<p><a href=\"https:\/\/fitnessista.com\/mediterranean-egg-bites-gluten-free-and-dairy-free\/mediterranean-egg-bites\/\" rel=\"attachment wp-att-156819 follow noopener noreferrer\" data-wpel-link=\"internal\"><img decoding=\"async\" class=\"aligncenter wp-image-156819 size-large\" title=\"egg bites gluten-free and dairy-free\" src=\"https:\/\/yorbestlife.com\/wp-content\/uploads\/2025\/03\/mediterranean-egg-bites-683x1024-1.jpg\" alt=\"Mediterranean egg bites (gluten-free and dairy-free)\" width=\"683\" height=\"1024\" data-pin-description=\"A delicious and healthy high-protein breakfast or meal prep option!\" data-pin-title=\"Mediterranean egg bites\" \/><\/a><\/p>\n<h2 style=\"text-align: center\">\u00a0Mediterranean Egg Bites -Gluten-Free and Dairy-Free<\/h2>\n<h3>Ingredients:<\/h3>\n<p>\u2013 3 cloves of minced garlic<\/p>\n<p>\u2013 1\/2 sweet onion, chopped<\/p>\n<p>\u2013 2 handfuls of fresh spinach<\/p>\n<p>\u2013 6 whole eggs<\/p>\n<p>\u2013 1\/4 cup almond milk<\/p>\n<p>\u2013 1\/4 cup gluten-free all-purpose baking flour<\/p>\n<p>\u2013 1\/2 teaspoon baking powder<\/p>\n<p>\u2013 1\/2 teaspoon garlic powder<\/p>\n<p>\u2013 1\/3 cup sun-dried tomatoes, chopped<\/p>\n<p>\u2013 1\/3 cup kalamata olives<\/p>\n<p>\u2013 1\/3 cup grated vegan parmesan (I LOVE Violife)<\/p>\n<p>\u2013 Avocado oil for greasing the muffin tins<\/p>\n<h3>Instructions:<\/h3>\n<h5>Step 1:<\/h5>\n<p>Preheat the oven to 350 and then grease a 12-standard muffin tin with avocado oil.<\/p>\n<h5>Step 2:<\/h5>\n<p>In a large bowl, whisk the eggs and then gently stir in the remaining ingredients.<\/p>\n<h5>Step 3:<\/h5>\n<p>Evenly distribute the mix into the 12 muffin spots in the pan. Bake for 20 minutes or until golden brown and set.<\/p>\n<h5>Step 4:<\/h5>\n<p>Cool completely before serving, otherwise they get stuck in the muffin tin.<\/p>\n<h3 style=\"text-align: center\">Tips for Freezing Egg Muffins<\/h3>\n<p>\u2013 Make sure to let them cool completely before freezing. Once they reach room temperature, gently remove them from the muffin tin and place into a resealable Ziploc bag before freezing.<\/p>\n<p>\u2013 To reheat, just pop them onto a glass plate and then microwave for about 20 seconds.<\/p>\n<h3 style=\"text-align: center\">How to Customize Egg Bites<\/h3>\n<p>\u2013 This recipe is super flexible and so easy to customize depending on your family\u2019s preferences.<\/p>\n<p>\u2013 Then feel free to add in basil, mushrooms, broccoli, bell peppers, or anything you like! Just make sure that you have 2\/3 cup add-in ingredients \u2013 otherwise, the egg-to-add-in ratio will be off.<\/p>\n<p>\u2013 If you don\u2019t have parmesan and want to use another cheese, try adding in 1\/3 cup feta. I didn\u2019t use the Violife feta in this recipe before it tends to get a little watery when it bakes.<\/p>\n<p><strong><span style=\"text-decoration: underline\">Another tip:<\/span><\/strong><\/p>\n<p>You CAN use muffin tin liners but I find that with egg bites, it tends to make them a little soggy. The best method I\u2019ve tried is to use a greased muffin tin and let them cool before serving.<\/p>\n<p>So here\u2019s the full recipe if you\u2019d like to give them a whirl!<\/p>\n<p><a class=\"button tasty-recipes-print-button tasty-recipes-no-print tasty-recipes-print-above-card\" href=\"https:\/\/fitnessista.com\/mediterranean-egg-bites-gluten-free-and-dairy-free\/print\/156822\/\" data-wpel-link=\"internal\" rel=\"follow noopener noreferrer\">Print<\/a><span class=\"tasty-recipes-jump-target\" id=\"tasty-recipes-156822-jump-target\" style=\"padding-top:2px;margin-top:-2px\"><\/span><\/p>\n<div id=\"tasty-recipes-156822\" data-tr-id=\"156822\" class=\"tasty-recipes tasty-recipes-156822 tasty-recipes-display tasty-recipes-has-image\" data-tasty-recipes-customization=\"primary-color.background-color secondary-color.border-color\">\n<h2 class=\"tasty-recipes-title\" data-tasty-recipes-customization=\"h2-color.color h2-transform.text-transform\">Mediterranean Egg Bites (gluten-free and dairy-free)<\/h2>\n<div class=\"tasty-recipes-image-button-container\">\n<div class=\"tasty-recipes-image\">\n\t\t\t<img decoding=\"async\" width=\"300\" height=\"300\" src=\"https:\/\/yorbestlife.com\/wp-content\/uploads\/2025\/03\/medterranean-egg-bites-300x300-1.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"Mediterranean egg bites (gluten-free and dairy-free)\" data-pin-nopin=\"true\" \/>\t\t<\/div>\n<div class=\"tasty-recipes-buttons\">\n<div class=\"tasty-recipes-button-wrap\">\n<p><a class=\"button tasty-recipes-print-button tasty-recipes-no-print\" href=\"https:\/\/fitnessista.com\/mediterranean-egg-bites-gluten-free-and-dairy-free\/print\/156822\/\" target=\"_blank\" data-tasty-recipes-customization=\"\" data-wpel-link=\"internal\" rel=\"follow noopener noreferrer\"><br \/>\n\t\t\t<img decoding=\"async\" class=\"svg-print\" data-pin-nopin=\"true\" src=\"https:\/\/fitnessista.com\/wp-content\/plugins\/tasty-recipes\/templates\/buttons\/images\/icon-print.png\" \/><br \/>\n\t\tPrint Recipe<\/a>\n\t\t<\/div><\/div>\n<\/div>\n<div class=\"tasty-recipes-rating\" data-tasty-recipes-customization=\"body-color.color\">\n<p><span class=\"tasty-recipes-ratings-buttons tasty-recipes-no-ratings-buttons\" data-tr-default-rating=\"0\">\t\t<span class=\"tasty-recipes-rating\">\t\t<i class=\"checked\" data-rating=\"5\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"0\">\t\t\t\t\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t5 Stars\t\t\t<\/span>\t\t<\/i>\t<\/span>\t\t<span class=\"tasty-recipes-rating\">\t\t<i class=\"checked\" data-rating=\"4\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"0\">\t\t\t\t\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t4 Stars\t\t\t<\/span>\t\t<\/i>\t<\/span>\t\t<span class=\"tasty-recipes-rating\">\t\t<i class=\"checked\" data-rating=\"3\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"0\">\t\t\t\t\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t3 Stars\t\t\t<\/span>\t\t<\/i>\t<\/span>\t\t<span class=\"tasty-recipes-rating\">\t\t<i class=\"checked\" data-rating=\"2\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"0\">\t\t\t\t\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t2 Stars\t\t\t<\/span>\t\t<\/i>\t<\/span>\t\t<span class=\"tasty-recipes-rating\">\t\t<i class=\"checked\" data-rating=\"1\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"0\">\t\t\t\t\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t1 Star\t\t\t<\/span>\t\t<\/i>\t<\/span><\/span><\/p>\n<p><span data-tasty-recipes-customization=\"detail-label-color.color\" class=\"rating-label\">No reviews<\/span><\/p>\n<\/p><\/div>\n<div class=\"tasty-recipes-description\" data-tasty-recipes-customization=\"body-color.color\">\n<p><em>Sharing a dairy-free and gluten-free recipe for Mediterranean egg bites. Try this as a high-protein meal prep option!<\/em><\/p>\n<\/p><\/div>\n<div class=\"tasty-recipes-details\" data-tasty-recipes-customization=\"body-color.color\">\n<ul>\n<li class=\"author\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Author:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-author-name\">Gina Harney \/\/ The Fitnessista<\/span><\/li>\n<\/ul><\/div>\n<div class=\"tasty-recipes-ingredients\">\n<div class=\"tasty-recipes-ingredients-header\">\n<div class=\"tasty-recipes-ingredients-clipboard-container\">\n<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Ingredients<\/h3>\n<\/p><\/div>\n<div class=\"tasty-recipes-units-scale-container\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n<div class=\"tasty-recipes-ingredients-body\" data-tasty-recipes-customization=\"body-color.color\">\n<p>\u2013 3 cloves of minced garlic<\/p>\n<p>\u2013 1\/2 sweet onion, chopped<\/p>\n<p>\u2013 2 handfuls of fresh spinach<\/p>\n<p>\u2013 6 whole eggs<\/p>\n<p>\u2013 1\/4 cup almond milk<\/p>\n<p>\u2013 1\/4 cup gluten-free all purpose baking flour<\/p>\n<p>\u2013 1\/2 teaspoon baking powder<\/p>\n<p>\u2013 1\/2 teaspoon garlic powder<\/p>\n<p>\u2013 1\/3 cup sun-dried tomatoes, chopped<\/p>\n<p>\u2013 1\/3 cup kalamata olives<\/p>\n<p>\u2013 1\/3 cup grated vegan parmesan (I LOVE Violife)<\/p>\n<p>\u2013 Avocado oil for greasing the muffin tins<\/p>\n<p><!--INSIDE_INGREDIENTS-->\t\t<\/div>\n<div class=\"tasty-recipes-cook-mode\">\n<div class=\"tasty-recipes-cook-mode__container\">\n\t\t<label class=\"tasty-recipes-cook-mode__switch\"><\/p>\n<p>\t\t\t<span class=\"tasty-recipes-cook-mode__switch-slider tasty-recipes-cook-mode__switch-round\" data-tasty-recipes-customization=\"button-color.background button-text-color.color\"><\/span><br \/>\n\t\t<\/label><br \/>\n\t\t<label for=\"tasty_recipes_67e2de2912bf0_cookmode\"><br \/>\n\t\t\t<span class=\"tasty-recipes-cook-mode__label\">Cook Mode<\/span><br \/>\n\t\t\t<span class=\"tasty-recipes-cook-mode__helper\"><br \/>\n\t\t\t\tPrevent your screen from going dark\t\t\t<\/span><br \/>\n\t\t<\/label>\n\t<\/div>\n<\/div><\/div>\n<div class=\"tasty-recipe-instructions\">\n<div class=\"tasty-recipes-instructions-header\">\n<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Instructions<\/h3>\n<\/p><\/div>\n<div class=\"tasty-recipes-instructions-body\" data-tasty-recipes-customization=\"body-color.color\">\n<h4>Step 1:<\/h4>\n<p id=\"instruction-step-1\">Preheat the oven to 350 and grease a 12 standard muffin tin with avocado oil.<\/p>\n<h4>Step 2:<\/h4>\n<p id=\"instruction-step-2\">In a large bowl, whisk the eggs and then gently stir in the remaining ingredients.<\/p>\n<h4>Step 3:<\/h4>\n<p id=\"instruction-step-3\">Evenly distribute the mix into the 12 muffin spots in the pan. Bake for 20 minutes or until golden brown and set.<\/p>\n<h4>Step 4:<\/h4>\n<p id=\"instruction-step-4\">Cool completely before serving, otherwise they get stuck in the muffin tin.<\/p>\n<\/p><\/div><\/div>\n<footer class=\"tasty-recipes-entry-footer\">\n<h3 data-tasty-recipes-customization=\"footer-heading-color.color h3-transform.text-transform footer-heading.innerText\">Did you make this recipe?<\/h3>\n<div data-tasty-recipes-customization=\"footer-description-color.color footer-description.innerHTML\">\n<p>Tag <a href=\"https:\/\/www.instagram.com\/fitnessista\" target=\"_blank\" rel=\"noreferrer noopener\" data-wpel-link=\"external\">@fitnessista<\/a> on Instagram<\/p>\n<\/div>\n<\/footer>\n<p>window.trCommon={&#8220;minRating&#8221;:6,&#8221;ajaxurl&#8221;:&#8221;https:\/\/fitnessista.com\/wp-admin\/admin-ajax.php&#8221;,&#8221;ratingNonce&#8221;:&#8221;&#8221;,&#8221;postId&#8221;:156816};<br \/>\nwindow.TastyRecipes = window.TastyRecipes || {};<\/p>\n<p>window.TastyRecipes.smoothScroll = {<br \/>\ninit() {<br \/>\ndocument.addEventListener( &#8216;click&#8217;, ( e ) =&gt; {<br \/>\nlet anchor = e.target;<br \/>\nif ( anchor.tagName !== &#8216;A&#8217; ) {<br \/>\nanchor = anchor.closest( &#8216;a.tasty-recipes-scrollto&#8217; );<br \/>\n}<\/p>\n<p>if ( ! anchor || ! anchor.classList.contains( &#8216;tasty-recipes-scrollto&#8217; ) ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>const elementHref = anchor.getAttribute( &#8216;href&#8217; );<br \/>\nif ( ! elementHref ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>e.preventDefault();<br \/>\nthis.goToSelector( elementHref );<br \/>\n});<br \/>\n},<br \/>\ngoToSelector( selector ) {<br \/>\nconst element = document.querySelector( selector );<br \/>\nif ( ! element ) {<br \/>\nreturn;<br \/>\n}<br \/>\nelement.scrollIntoView( { behavior: &#8216;smooth&#8217; } );<br \/>\n}<br \/>\n};<\/p>\n<p>document.addEventListener(<br \/>\n&#8216;DOMContentLoaded&#8217;,<br \/>\n() =&gt; window.TastyRecipes.smoothScroll.init()<br \/>\n);<\/p>\n<p>window.TastyRecipes = window.TastyRecipes || {};<br \/>\nwindow.TastyRecipes.cookMode = {<br \/>\nwakeLockApi: false,<br \/>\nwakeLock: false,<br \/>\ncookModeSelector: &#8216;.tasty-recipes-cook-mode&#8217;,<br \/>\ninit() {<br \/>\nif (&#8220;wakeLock&#8221; in navigator &amp;&amp; &#8220;request&#8221; in navigator.wakeLock) {<br \/>\nthis.wakeLockApi = navigator.wakeLock;<br \/>\n}<\/p>\n<p>const cookModes = document.querySelectorAll(this.cookModeSelector);<\/p>\n<p>if (cookModes.length &gt; 0) {<br \/>\nfor (const cookMode of cookModes) {<br \/>\nif (this.wakeLockApi) {<br \/>\ncookMode.querySelector(&#8216;input[type=&#8221;checkbox&#8221;]&#8217;).addEventListener(&#8220;change&#8221;, event =&gt; {<br \/>\nthis.checkboxChange(event.target);<br \/>\n}, false);<br \/>\n} else {<br \/>\ncookMode.style.display = &#8220;none&#8221;;<br \/>\n}<br \/>\n}<br \/>\n}<br \/>\n},<br \/>\ncheckboxChange(checkbox) {<br \/>\nif (checkbox.checked) {<br \/>\nthis.lock();<br \/>\n} else {<br \/>\nthis.unlock();<br \/>\n}<br \/>\n},<br \/>\nsetCheckboxesState(state) {<br \/>\nconst checkboxes = document.querySelectorAll(this.cookModeSelector + &#8216; input[type=&#8221;checkbox&#8221;]&#8217;);<br \/>\nfor (const checkbox of checkboxes) {<br \/>\ncheckbox.checked = state;<br \/>\n}<br \/>\n},<br \/>\nasync lock() {<br \/>\ntry {<br \/>\nthis.wakeLock = await this.wakeLockApi.request(&#8220;screen&#8221;);<br \/>\nthis.wakeLock.addEventListener(&#8220;release&#8221;, () =&gt; {<br \/>\nthis.wakeLock = false;<br \/>\nthis.setCheckboxesState(false);<br \/>\n});<br \/>\nthis.setCheckboxesState(true);<br \/>\n} catch (error) {<br \/>\nthis.setCheckboxesState(false);<br \/>\n}<br \/>\n},<br \/>\nunlock() {<br \/>\nif (this.wakeLock) {<br \/>\nthis.wakeLock.release();<br \/>\nthis.wakeLock = false;<br \/>\n}<br \/>\nthis.setCheckboxesState(false);<br \/>\n}<br \/>\n};<\/p>\n<p>(function(callback) {<br \/>\nif (document.readyState !== &#8220;loading&#8221;) {<br \/>\ncallback();<br \/>\n} else {<br \/>\ndocument.addEventListener(&#8220;DOMContentLoaded&#8221;, callback);<br \/>\n}<br \/>\n})(() =&gt; {<br \/>\nwindow.TastyRecipes.cookMode.init();<br \/>\n});<\/p>\n<p>window.TastyRecipes = window.TastyRecipes || {};<\/p>\n<p>window.TastyRecipes.staticTooltip = {<br \/>\nelement: null,<br \/>\ntooltipElement: null,<br \/>\ndeleting: false,<br \/>\ninit( element ) {<br \/>\nif ( this.deleting ) {<br \/>\nreturn;<br \/>\n}<br \/>\nthis.element = element;<br \/>\nthis.buildElements();<br \/>\n},<br \/>\ndestroy() {<br \/>\nif ( ! this.tooltipElement || this.deleting ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>this.deleting = true;<br \/>\nthis.tooltipElement.classList.remove( &#8216;opened&#8217; );<\/p>\n<p>setTimeout( () =&gt; {<br \/>\nthis.tooltipElement.remove();<br \/>\nthis.deleting = false;<br \/>\n}, 500 );<br \/>\n},<br \/>\nbuildElements() {<br \/>\nconst tooltipElement = document.createElement( &#8216;div&#8217; );<br \/>\ntooltipElement.classList.add( &#8216;tasty-recipes-static-tooltip&#8217;);<br \/>\ntooltipElement.setAttribute( &#8216;id&#8217;, &#8216;tasty-recipes-tooltip&#8217; );<\/p>\n<p>const currentTooltipElement = document.getElementById( &#8216;tasty-recipes-tooltip&#8217; );<br \/>\nif ( currentTooltipElement ) {<br \/>\ndocument.body.replaceChild( tooltipElement, currentTooltipElement );<br \/>\n} else {<br \/>\ndocument.body.appendChild( tooltipElement );<br \/>\n}<\/p>\n<p>this.tooltipElement = document.getElementById( &#8216;tasty-recipes-tooltip&#8217; );<br \/>\n},<br \/>\nshow() {<br \/>\nif ( ! this.tooltipElement ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>const tooltipTop = this.element.getBoundingClientRect().top<br \/>\n+ window.scrollY<br \/>\n&#8211; 10 \/\/ 10px offset.<br \/>\n&#8211; this.tooltipElement.getBoundingClientRect().height;<br \/>\nconst tooltipLeft = this.element.getBoundingClientRect().left<br \/>\n&#8211; ( this.tooltipElement.getBoundingClientRect().width \/ 2 )<br \/>\n+ ( this.element.getBoundingClientRect().width \/ 2 ) &#8211; 1;<br \/>\nconst posLeft = Math.max( 10, tooltipLeft );<br \/>\nthis.maybeRemoveTail( posLeft !== tooltipLeft );<\/p>\n<p>this.tooltipElement.setAttribute( &#8216;style&#8217;, &#8216;top:&#8217; + tooltipTop + &#8216;px;left:&#8217; + posLeft + &#8216;px;&#8217; );<br \/>\nthis.tooltipElement.classList.add( &#8216;opened&#8217; );<\/p>\n<p>},<br \/>\nmaybeRemoveTail( removeTail ) {<br \/>\nif ( removeTail ) {<br \/>\nthis.tooltipElement.classList.add( &#8216;tr-hide-tail&#8217; );<br \/>\n} else {<br \/>\nthis.tooltipElement.classList.remove( &#8216;tr-hide-tail&#8217; );<br \/>\n}<br \/>\n},<br \/>\nchangeMessage( message ) {<br \/>\nif ( ! this.tooltipElement ) {<br \/>\nreturn;<br \/>\n}<br \/>\nthis.tooltipElement.innerHTML = message;<br \/>\n}<br \/>\n};<\/p>\n<p>window.TastyRecipes.ajax = {<br \/>\nsendPostRequest( url, data, success, failure ) {<br \/>\nconst xhr = new XMLHttpRequest();<br \/>\nxhr.open( &#8216;POST&#8217;, url, true );<br \/>\nxhr.send( this.preparePostData( data ) );<\/p>\n<p>xhr.onreadystatechange = () =&gt; {<br \/>\nif ( 4 !== xhr.readyState ) {<br \/>\nreturn;<br \/>\n}<br \/>\nif ( xhr.status === 200 ) {<br \/>\nsuccess( JSON.parse( xhr.responseText ) );<br \/>\nreturn;<br \/>\n}<\/p>\n<p>failure( xhr );<br \/>\n};<\/p>\n<p>xhr.onerror = () =&gt; {<br \/>\nfailure( xhr );<br \/>\n};<br \/>\n},<br \/>\npreparePostData( data ) {<br \/>\nconst formData = new FormData();<\/p>\n<p>for ( const key in data ) {<br \/>\nformData.append( key, data[key] );<br \/>\n}<br \/>\nreturn formData;<br \/>\n},<br \/>\n};<\/p>\n<p>window.TastyRecipes.ratings = {<br \/>\ndefaultRating: 0,<br \/>\ncurrentRatingPercentage: 100,<br \/>\nsavingRating: false,<br \/>\ninit( minRating ) {<br \/>\nthis.minRating = minRating;<\/p>\n<p>this.formWatchRating();<br \/>\nthis.closeTooltipWhenClickOutside();<br \/>\nthis.addBodyClassBasedOnSelectedRating();<br \/>\nthis.backwardCompFormRatingPosition();<br \/>\n},<br \/>\nformWatchRating() {<br \/>\nconst ratings = document.querySelectorAll(&#8216;.tasty-recipes-no-ratings-buttons [data-rating]&#8217;);<br \/>\nif ( ratings.length  {<br \/>\nevent.preventDefault();<br \/>\nthis.defaultRating = event.target.closest( &#8216;.checked&#8217; ).dataset.rating;<br \/>\nthis.setCheckedStar( event.target );<br \/>\nthis.maybeSendRating( this.defaultRating, event.target );<br \/>\nthis.setRatingInForm( this.defaultRating );<br \/>\n} );<br \/>\n}<br \/>\n},<br \/>\ncloseTooltipWhenClickOutside() {<br \/>\nwindow.addEventListener( &#8216;click&#8217;, e =&gt; {<br \/>\n\/\/ Bailout (don&#8217;t remove the tooltip) when the clicked element is a rating star, or it&#8217;s the tooltip itself.<br \/>\nif ( e.target.closest( &#8216;.tasty-recipes-rating&#8217; ) || e.target.classList.contains( &#8216;tasty-recipes-static-tooltip&#8217; ) ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>window.TastyRecipes.staticTooltip.destroy();<br \/>\n} );<br \/>\n},<br \/>\n setRatingInForm( rating ) {<br \/>\nconst ratingInput = document.querySelector( &#8216;#respond .tasty-recipes-rating[value=&#8221;&#8216; + rating + &#8216;&#8221;]&#8217; );<br \/>\nif ( ! ratingInput ) {<br \/>\nreturn;<br \/>\n}<br \/>\nratingInput.click();<br \/>\n},<br \/>\naddBodyClassBasedOnSelectedRating() {<br \/>\nconst ratingInputs = document.querySelectorAll( &#8216;input.tasty-recipes-rating&#8217; );<br \/>\nif ( ! ratingInputs ) {<br \/>\nreturn;<br \/>\n}<br \/>\nfor ( const ratingInput of ratingInputs ) {<br \/>\nratingInput.addEventListener( &#8216;click&#8217;, currentEvent =&gt; {<br \/>\nconst selectedRating = currentEvent.target.getAttribute( &#8216;value&#8217; );<br \/>\nthis.handleBodyClassByRating( selectedRating );<br \/>\nthis.toggleCommentTextareaRequired( selectedRating );<br \/>\n} );<br \/>\n}<br \/>\n},<br \/>\nhandleBodyClassByRating( rating ) {<br \/>\nif ( rating &lt; this.minRating ) {<br \/>\ndocument.body.classList.remove( &#039;tasty-recipes-selected-minimum-rating&#039; );<br \/>\nreturn;<br \/>\n}<br \/>\ndocument.body.classList.add( &#039;tasty-recipes-selected-minimum-rating&#039; );<br \/>\n},<br \/>\ntoggleCommentTextareaRequired( rating ) {<br \/>\nconst commentTextarea = document.getElementById( &#039;comment&#039; );<br \/>\nif ( ! commentTextarea ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>if ( rating  {<br \/>\nwindow.TastyRecipes.staticTooltip.changeMessage( response.data.message );<br \/>\nwindow.TastyRecipes.staticTooltip.show();<br \/>\nthis.updateAverageText( response.data, recipeCardElement );<br \/>\nthis.maybeFillCommentForm( response.data );<\/p>\n<p>\/\/ Hide the tooltip after 5 seconds.<br \/>\nsetTimeout( () =&gt; {<br \/>\nthis.maybeResetTooltip( recipeCardElement, response.data, rating );<br \/>\n}, 5000 );<br \/>\n},<br \/>\n() =&gt; {<br \/>\nthis.resetTooltip( recipeCardElement );<br \/>\n}<br \/>\n);<br \/>\n},<br \/>\nupdateAverageText( data, recipeCardElement ) {<br \/>\nif ( ! data.average ) {<br \/>\nreturn;<br \/>\n}<br \/>\nthis.setRatingPercent( data );<\/p>\n<p>if ( ! data.count ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>const quickLink = document.querySelector( &#8216;.tasty-recipes-rating-link&#8217; );<br \/>\nif ( quickLink ) {<br \/>\nthis.setTextInContainer( quickLink, data );<br \/>\nthis.setPartialStar( quickLink );<br \/>\n}<\/p>\n<p>const cardStars = recipeCardElement.querySelector( &#8216;.tasty-recipes-ratings-buttons&#8217; );<br \/>\ncardStars.dataset.trDefaultRating = data.average;<br \/>\nthis.setTextInContainer( recipeCardElement.querySelector( &#8216;.tasty-recipes-rating&#8217; ), data );<br \/>\n},<br \/>\nsetTextInContainer( container, data ) {<br \/>\nif ( ! container ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>if ( data.label ) {<br \/>\nconst ratingLabelElement = container.querySelector( &#8216;.rating-label&#8217; );<br \/>\nif ( ratingLabelElement ) {<br \/>\nratingLabelElement.innerHTML = data.label;<br \/>\n}<br \/>\nreturn;<br \/>\n}<\/p>\n<p>const averageElement = container.querySelector( &#8216;.average&#8217; );<br \/>\nif ( averageElement ) {<br \/>\naverageElement.textContent = data.average;<br \/>\n}<\/p>\n<p>const countElement = container.querySelector( &#8216;.count&#8217; );<br \/>\nif ( countElement ) {<br \/>\ncountElement.textContent = data.count;<br \/>\n}<br \/>\n},<br \/>\nsetPartialStar( container ) {<br \/>\nconst highestStar = container.querySelector( &#8216;[data-rating=&#8221;&#8216; + Math.ceil( this.defaultRating ) + &#8216;&#8221;]&#8217; );<br \/>\nif ( highestStar ) {<br \/>\nhighestStar.dataset.trClip = this.currentRatingPercentage;<br \/>\n}<br \/>\n},<br \/>\nsetRatingPercent( data ) {<br \/>\nthis.defaultRating = data.average.toFixed( 1 );<br \/>\nconst parts = data.average.toFixed( 2 ).toString().split( &#8216;.&#8217; );<br \/>\nthis.currentRatingPercentage = parts[1] ? parts[1] : 100;<br \/>\nif ( this.currentRatingPercentage === &#8217;00&#8217; ) {<br \/>\nthis.currentRatingPercentage = 100;<br \/>\n}<br \/>\n},<br \/>\nsetCheckedStar( target ) {<br \/>\nconst cardRatingContainer = target.closest( &#8216;.tasty-recipes-ratings-buttons&#8217; );<br \/>\nconst selectedRatingElement = cardRatingContainer.querySelector( &#8216;[data-tr-checked]&#8217; );<br \/>\nif ( selectedRatingElement ) {<br \/>\ndelete selectedRatingElement.dataset.trChecked;<br \/>\n}<\/p>\n<p>const thisStar = target.closest( &#8216;.tasty-recipes-rating&#8217; );<br \/>\nthisStar.dataset.trChecked = 1;<br \/>\nthisStar.querySelector( &#8216;[data-tr-clip]&#8217; ).dataset.trClip = 100;<br \/>\n},<br \/>\nmaybeFillCommentForm( data ) {<br \/>\nif ( ! data.comment || ! data.comment.content ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>const commentForm = document.querySelector( &#8216;#commentform&#8217; );<br \/>\nif ( ! commentForm ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>const commentBox = commentForm.querySelector( &#8216;[name=comment]&#8217; );<br \/>\nif ( ! commentBox || commentBox.value ) {<br \/>\nreturn;<br \/>\n}<\/p>\n<p>\/\/ Add comment details for editing.<br \/>\ncommentBox.innerHTML = data.comment.content;<br \/>\nif ( data.comment.name ) {<br \/>\ncommentForm.querySelector( &#8216;[name=author]&#8217; ).value = data.comment.name;<br \/>\ncommentForm.querySelector( &#8216;[name=email]&#8217; ).value = data.comment.email;<br \/>\n}<br \/>\n},<br \/>\nmaybeResetTooltip( recipeCardElement, data, rating ) {<br \/>\nif ( this.savingRating === rating ) {<br \/>\nthis.resetTooltip( recipeCardElement, data );<br \/>\n}<br \/>\n},<br \/>\nresetTooltip( recipeCardElement, data ) {<br \/>\nwindow.TastyRecipes.staticTooltip.destroy();<br \/>\nthis.savingRating = false;<\/p>\n<p>\/\/ Reset the default rating.<br \/>\nconst cardRatingContainer = recipeCardElement.querySelector( &#8216;.tasty-recipes-ratings-buttons&#8217; );<br \/>\nif ( cardRatingContainer ) {<br \/>\nthis.defaultRating = ( data &amp;&amp; data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;<br \/>\ncardRatingContainer.dataset.trDefaultRating = this.defaultRating;<\/p>\n<p>this.resetSelectedStar( cardRatingContainer, data );<br \/>\n}<br \/>\n},<br \/>\nresetSelectedStar( cardRatingContainer ) {<br \/>\nconst selectedRatingElement = cardRatingContainer.querySelector( &#8216;[data-rating=&#8221;&#8216; + Math.ceil( this.defaultRating ) + &#8216;&#8221;]&#8217; );<br \/>\nif ( selectedRatingElement ) {<br \/>\nselectedRatingElement.querySelector( &#8216;[data-tr-clip]&#8217; ).dataset.trClip = this.currentRatingPercentage;<br \/>\nselectedRatingElement.parentNode.dataset.trChecked = 1;<br \/>\n}<\/p>\n<p>const previousSelectedElement= cardRatingContainer.querySelector( &#8216;[data-tr-checked]&#8217; );<br \/>\nif ( previousSelectedElement ) {<br \/>\nconst currentSelectedRating = previousSelectedElement.querySelector(&#8216;[data-rating]&#8217;);<br \/>\nif ( currentSelectedRating !== selectedRatingElement ) {<br \/>\ndelete previousSelectedElement.dataset.trChecked;<br \/>\n}<br \/>\n}<br \/>\n},<br \/>\nbackwardCompFormRatingPosition() {<br \/>\nconst ratingsButtons = document.querySelector( &#8216;#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons&#8217; );<br \/>\nif ( ! ratingsButtons ) {<br \/>\nreturn;<br \/>\n}<br \/>\nconst ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);<br \/>\nif ( ! ratingsButtonsStyles.display.includes( &#8216;flex&#8217; ) ) {<br \/>\nratingsButtons.style.direction = &#8216;rtl&#8217;;<br \/>\n}<\/p>\n<p>if ( typeof tastyRecipesRating !== &#8216;undefined&#8217; ) {<br \/>\n\/\/ Select the rating that was previously selected in admin.<br \/>\nratingsButtons.querySelector( &#8216;.tasty-recipes-rating[value=&#8221;&#8216; + tastyRecipesRating + &#8216;&#8221;]&#8217; ).checked = true;<br \/>\n}<\/p>\n<p>const ratingSpans = ratingsButtons.querySelectorAll( &#8216;.tasty-recipes-rating&#8217; );<br \/>\nfor (const ratingSpan of ratingSpans) {<br \/>\nratingSpan.addEventListener( &#8216;click&#8217;, event =&gt; {<br \/>\nif ( ratingSpan === event.target ) {<br \/>\nreturn;<br \/>\n}<br \/>\nratingSpan.previousElementSibling.click();<br \/>\n} );<br \/>\n}<br \/>\n}<br \/>\n};<\/p>\n<p>(function(callback) {<br \/>\nif (document.readyState !== &#8220;loading&#8221;) {<br \/>\ncallback();<br \/>\n} else {<br \/>\nwindow.addEventListener( &#8216;load&#8217;, callback );<br \/>\n}<br \/>\n})(() =&gt; {<br \/>\nwindow.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );<br \/>\n});\n<\/p><\/div>\n<p><a href=\"https:\/\/fitnessista.com\/mediterranean-egg-bites-gluten-free-and-dairy-free\/mediterranean-egg-bites-recipe\/\" rel=\"attachment wp-att-156821 follow noopener noreferrer\" data-wpel-link=\"internal\"><img decoding=\"async\" class=\"aligncenter wp-image-156821 size-large\" title=\"dairy-free and gluten-free egg bites\" src=\"https:\/\/yorbestlife.com\/wp-content\/uploads\/2025\/03\/mediterranean-egg-bites-recipe-683x1024-1.jpg\" alt=\"dairy-free and gluten-free egg bites\" width=\"683\" height=\"1024\" \/><\/a><\/p>\n<p>xoxo<\/p>\n<p>Gina<\/p>\n<p><strong><span style=\"text-decoration: underline\">More of my favorite prep-ahead breakfast options:<\/span><\/strong><\/p>\n<p><a href=\"https:\/\/fitnessista.com\/something-worth-waking-up-for\/\" target=\"_blank\" rel=\"noopener follow noreferrer\" data-wpel-link=\"internal\">\u00a0The original breakfast cookie!<\/a> The girls and I had these for weekday breakfasts last week and they were a huge hit. (I mean, anything is a hit when it has a chocolate chip smiley face.)<\/p>\n<ul>\n<li><a href=\"https:\/\/fitnessista.com\/protein-packed-make-ahead-breakfast-burritos\/\" target=\"_blank\" rel=\"noopener follow noreferrer\" data-wpel-link=\"internal\">Make-ahead breakfast burritos<\/a><\/li>\n<li><a href=\"https:\/\/fitnessista.com\/sweet-potato-goat-cheese-and-turkey-bacon-egg-bake\/\" target=\"_blank\" rel=\"noopener follow noreferrer\" data-wpel-link=\"internal\">Sweet potato, turkey bacon, and goat cheese casserole<\/a><\/li>\n<li><a href=\"https:\/\/fitnessista.com\/pumpkin-oatmeal-bake\/\" target=\"_blank\" rel=\"noopener follow noreferrer\" data-wpel-link=\"internal\">Pumpkin oatmeal bake<\/a><\/li>\n<li><a href=\"https:\/\/fitnessista.com\/20-healthy-on-the-go-breakfasts\/\" target=\"_blank\" rel=\"noopener follow noreferrer\" data-wpel-link=\"internal\">20 healthy on-the-go breakfasts<\/a><\/li>\n<\/ul>\n<p>The post <a href=\"https:\/\/fitnessista.com\/mediterranean-egg-bites-gluten-free-and-dairy-free\/\">Mediterranean egg bites (gluten-free and dairy-free)<\/a> appeared first on <a href=\"https:\/\/fitnessista.com\">The Fitnessista<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today I\u2019m sharing a dairy-free and gluten-free recipe for Mediterranean egg bites. Try this as a high-protein meal prep option! [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":133187,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[210,211,212,258,259,338,387,409],"tags":[218,219,220,263,264,341,388,410],"_links":{"self":[{"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/posts\/133564"}],"collection":[{"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/comments?post=133564"}],"version-history":[{"count":3,"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/posts\/133564\/revisions"}],"predecessor-version":[{"id":133571,"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/posts\/133564\/revisions\/133571"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/media\/133187"}],"wp:attachment":[{"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/media?parent=133564"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/categories?post=133564"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yorbestlife.com\/index.php\/wp-json\/wp\/v2\/tags?post=133564"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}