{"id":60,"date":"2022-02-01T05:00:00","date_gmt":"2022-02-01T10:00:00","guid":{"rendered":"https:\/\/66.147.244.91\/~thehebe2\/2013\/09\/12\/tuscan-white-bean-soup\/"},"modified":"2024-01-20T16:13:34","modified_gmt":"2024-01-20T21:13:34","slug":"tuscan-white-bean-soup","status":"publish","type":"post","link":"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/","title":{"rendered":"Tuscan White Bean Soup [White Bean Ribollita]"},"content":{"rendered":"\n<p><i><span style=\"font-weight: 400;\">This filling Tuscan White Bean Soup is packed with vegetables and flavor for a fun twist on a classic italian Ribolitta recipe. It\u2019s gluten-free and vegan and made in one-pot for easy prep and clean-up.<\/span><\/i><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-3.jpg\"><img decoding=\"async\" width=\"790\" height=\"1185\" src=\"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-3.jpg\" alt=\"Bowl of soup with veggies and broth. Towel, wooden spoon and soup ingredients in the background.\" class=\"wp-image-38789\" srcset=\"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-3.jpg 790w, https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-3-200x300.jpg 200w, https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-3-768x1152.jpg 768w, https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-3-400x600.jpg 400w, https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-3-600x900.jpg 600w, https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-3-150x225.jpg 150w\" sizes=\"(max-width: 790px) 100vw, 790px\" \/><\/a><\/figure>\n\n\n\n<p><span style=\"font-weight: 400;\">I love making a giant pot of soup in the fall and winter time. One pot of soup will last multiple days in our house! I\u2019m all about cooking once and enjoying leftovers and soup is the perfect way to do that. Plus the flavors only seem to get better the longer it sits.<\/span><\/p>\n\n\n\n<p>This is an oldie but a goodie recipe from THM that I have made more times than I can count. In fact I really don&#8217;t follow the recipe anymore. I just eyeball it because soups are always so forgiving. But as I was whipping it up a few days ago I remembered that the original blog post (published in 2013!) had some pretty sad pictures. It was time for an upgrade. So here we are. Same recipe&#8230;better pictures! Hope you enjoy.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-what-is-tuscan-white-bean-soup-aka-ribollita\"><strong>What is Tuscan White Bean Soup aka Ribollita?<\/strong><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">Tuscan white bean soup is a traditional Italian soup that is packed with vegetables. My version has all of these delicious ingredients:<\/span><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><span style=\"font-weight: 400;\"><strong>Vegetables<\/strong> \u2013 yellow onion, garlic cloves, kale and tomatoes. Feel free to get creative here and use what you have on hand<\/span> I.e. carrots + celery are also a great addition<\/li>\n\n\n\n<li><strong>Herbs &amp; Spices<\/strong> &#8211; fresh rosemary + basil, salt and pepper. The fresh herbs really take this soup to the next level.<\/li>\n\n\n\n<li><span style=\"font-weight: 400;\"><strong>White beans<\/strong> \u2013&nbsp;both cannellini beans and Northern white beans work great! You can use canned beans or cook your own before adding to the soup.<\/span><\/li>\n\n\n\n<li><span style=\"font-weight: 400;\"><strong>Vegetable stock<\/strong> \u2013 any stock will work. I recommend using low-sodium stock so you can control the saltiness on your own.&nbsp;<\/span><\/li>\n\n\n\n<li><span style=\"font-weight: 400;\"><strong>Red wine vinegar<\/strong> \u2013 adding a hint of acidity brightens all of the flavors of this dish!<\/span><\/li>\n\n\n\n<li><span style=\"font-weight: 400;\"><strong>Olive oil<\/strong> \u2013 to saut\u00e9 the onions before adding the rest of the ingredients. Avocado oil works as well.&nbsp;<\/span><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-1.jpg\"><img decoding=\"async\" width=\"790\" height=\"1185\" src=\"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-1.jpg\" alt=\"Tomatoes and fresh basil in focus. Garlic cloves and cans of cannellini beans are in the foreground and background.\" class=\"wp-image-38790\" srcset=\"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-1.jpg 790w, https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-1-400x600.jpg 400w, https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-1-683x1024.jpg 683w, https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-1-200x300.jpg 200w, https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-1-768x1152.jpg 768w, https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-1-600x900.jpg 600w\" sizes=\"(max-width: 790px) 100vw, 790px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-how-to-make-tuscan-white-bean-soup\"><strong>How to Make Tuscan White Bean Soup<\/strong><\/h2>\n\n\n\n<p class=\"has-background-background-color has-background\"><strong>STEP 1:<\/strong> Heat olive oil over medium heat in a large stock or soup pot. Add onions and garlic and saut\u00e9 for 5 mins or until onions are translucent. Add rosemary and cook for another 2 mins.<br><strong>STEP 2:<\/strong> Add in canned diced tomatoes, fresh tomatoes (if using), vegetable broth and salt and pepper and bring to a boil. Once boiling put heat on low and add beans. Let simmer for 30 mins. Stir in vinegar, kale and basil.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-2.jpg\"><img decoding=\"async\" width=\"790\" height=\"1185\" src=\"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-2.jpg\" alt=\"White pot with tuscan white bean soup cooking inside.\" class=\"wp-image-38791\" srcset=\"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-2.jpg 790w, https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-2-200x300.jpg 200w, https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-2-768x1152.jpg 768w, https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-2-400x600.jpg 400w, https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-2-600x900.jpg 600w, https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-2-150x225.jpg 150w\" sizes=\"(max-width: 790px) 100vw, 790px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-serving-suggestions-adjustments\"><strong>Serving Suggestions + Adjustments<\/strong><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">This soup is actually really hearty on its own but if you are serving it at a dinner party or want to add sides, there are a few options that I love to pair with it. Traditionally, it is served with Tuscan bread which is what I recommend! I love a piece of hearty bread with soup. <\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">For a lighter option, you can serve it with a side salad \u2013&nbsp;<a href=\"https:\/\/www.thehealthymaven.com\/summer-panzanella-salad\/\" target=\"_blank\" rel=\"noopener\">panzanella<\/a> would be delicious! If you want more protein, you could also serve it with <a href=\"https:\/\/www.thehealthymaven.com\/how-to-cook-the-perfect-stove-top-chicken-breast\/\" target=\"_blank\" rel=\"noopener\">grilled chicken<\/a>.&nbsp;<\/span><\/p>\n\n\n\n<p><strong>Some changes you can make to this recipe:<\/strong> Traditionally ribollita or tuscan soup has bread chunks in the recipe. While absolutely delicious I prefer my bread on the side for dipping. Feel free to add a handful of slightly stale bread cubes to the recipe right at the end for a more traditional recipe.<\/p>\n\n\n\n<p><strong>To up the protein:<\/strong> Add in slices of precooked Italian chicken sausage or even bacon or pancetta. Sometimes I do this since C is more of a meat eater than I am.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-can-you-freeze-tuscan-white-bean-soup\"><strong>Can you freeze tuscan white bean soup?<\/strong><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">Absolutely this recipe makes a big batch so if you&#8217;re eating for one or want to make your soup last longer you can definitely freeze it. Just allow the soup to cool before freezing and then place in airtight containers leaving an inch along the top for the soup to expand. <\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\"><strong>To defrost:<\/strong> remove from the freezer the night before or allow to warm-up slightly and then remove soup from container and heat up fully on the stove-top.<\/span><\/p>\n\n\n\n<div class=\"wp-block-group has-background is-layout-flow wp-block-group-is-layout-flow\" style=\"background-color:#dce5b9\">\n<h2 class=\"wp-block-heading\"><strong>More soup recipes you might enjoy:<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.thehealthymaven.com\/detox-vegetable-soup\/\" target=\"_blank\" rel=\"noopener noreferrer\">Detox Vegetable Soup<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.thehealthymaven.com\/roasted-acorn-squash-soup\/\" target=\"_blank\" rel=\"noopener noreferrer\">Roasted Acorn Squash Soup<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.thehealthymaven.com\/healthy-vegetarian-pho\/\" target=\"_blank\" rel=\"noopener noreferrer\">Vegetarian Pho Recipe<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.thehealthymaven.com\/root-vegetable-dal\/\" target=\"_blank\" rel=\"noopener noreferrer\">Root Vegetable Dal<\/a><\/li>\n<\/ul>\n<\/div>\n\n\n<a class=\"button tasty-recipes-print-button tasty-recipes-no-print tasty-recipes-print-above-card\" href=\"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/print\/38745\/\">Print<\/a><span class=\"tasty-recipes-jump-target\" id=\"tasty-recipes-38745-jump-target\" style=\"display:block;padding-top:2px;margin-top:-2px;\"><\/span><div id=\"tasty-recipes-38745\" data-tr-id=\"38745\" class=\"tasty-recipes tasty-recipes-38745 tasty-recipes-display tasty-recipes-has-image\" data-tasty-recipes-customization=\"primary-color.background-color primary-color.outline-color\">\n\n\n<h2 class=\"tasty-recipes-title\" data-tasty-recipes-customization=\"h2-color.color h2-transform.text-transform\">Tuscan White Bean Soup [Ribollita]<\/h2>\n<div class=\"tasty-recipes-image-button-container\">\n\t\t\t<div class=\"tasty-recipes-image\">\n\t\t\t<img decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-8-150x150.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" data-pin-nopin=\"true\" \/>\t\t<\/div>\n\t\t<div class=\"tasty-recipes-buttons\">\n\t\t\t\t<div class=\"tasty-recipes-button-wrap\">\n\t\t\t\n<a class=\"button tasty-recipes-print-button tasty-recipes-no-print\" href=\"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/print\/38745\/\" target=\"_blank\" data-tasty-recipes-customization=\"\">\n\t\t\t<svg viewBox=\"0 0 24 24\" class=\"svg-print\" aria-hidden=\"true\"><use xlink:href=\"#tasty-recipes-icon-print\"><\/use><\/svg>\n\t\tPrint Recipe<\/a>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n<\/div>\n\t<div class=\"tasty-recipes-rating\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t\t\t<p><span class=\"tasty-recipes-ratings-buttons tasty-recipes-no-ratings-buttons\"\tdata-tr-default-rating=\"5\"\t>\t\t<span class=\"tasty-recipes-rating\" data-tr-checked=\"1\">\t\t<i class=\"checked\" data-rating=\"5\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"100\">\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"9 9 46 42\" width=\"18\" height=\"17\">\t<defs>\t\t<linearGradient id=\"tasty-recipes-clip-10\">\t\t\t<stop offset=\"10%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-20\">\t\t\t<stop offset=\"20%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-30\">\t\t\t<stop offset=\"30%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-40\">\t\t\t<stop offset=\"40%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-50\">\t\t\t<stop offset=\"50%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-60\">\t\t\t<stop offset=\"60%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-70\">\t\t\t<stop offset=\"70%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-80\">\t\t\t<stop offset=\"80%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-90\">\t\t\t<stop offset=\"90%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t<\/defs>\t<path d=\"m46.3 52-14.4-9.5-14.4 9.4L22 35.3 8.7 24.5l17.1-.9 6.2-16 6 16 17.2 1-13.4 10.7z\"\/><\/svg>\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=\"100\">\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"9 9 46 42\" width=\"18\" height=\"17\">\t<defs>\t\t<linearGradient id=\"tasty-recipes-clip-10\">\t\t\t<stop offset=\"10%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-20\">\t\t\t<stop offset=\"20%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-30\">\t\t\t<stop offset=\"30%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-40\">\t\t\t<stop offset=\"40%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-50\">\t\t\t<stop offset=\"50%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-60\">\t\t\t<stop offset=\"60%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-70\">\t\t\t<stop offset=\"70%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-80\">\t\t\t<stop offset=\"80%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-90\">\t\t\t<stop offset=\"90%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t<\/defs>\t<path d=\"m46.3 52-14.4-9.5-14.4 9.4L22 35.3 8.7 24.5l17.1-.9 6.2-16 6 16 17.2 1-13.4 10.7z\"\/><\/svg>\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=\"100\">\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"9 9 46 42\" width=\"18\" height=\"17\">\t<defs>\t\t<linearGradient id=\"tasty-recipes-clip-10\">\t\t\t<stop offset=\"10%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-20\">\t\t\t<stop offset=\"20%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-30\">\t\t\t<stop offset=\"30%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-40\">\t\t\t<stop offset=\"40%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-50\">\t\t\t<stop offset=\"50%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-60\">\t\t\t<stop offset=\"60%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-70\">\t\t\t<stop offset=\"70%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-80\">\t\t\t<stop offset=\"80%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-90\">\t\t\t<stop offset=\"90%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t<\/defs>\t<path d=\"m46.3 52-14.4-9.5-14.4 9.4L22 35.3 8.7 24.5l17.1-.9 6.2-16 6 16 17.2 1-13.4 10.7z\"\/><\/svg>\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=\"100\">\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"9 9 46 42\" width=\"18\" height=\"17\">\t<defs>\t\t<linearGradient id=\"tasty-recipes-clip-10\">\t\t\t<stop offset=\"10%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-20\">\t\t\t<stop offset=\"20%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-30\">\t\t\t<stop offset=\"30%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-40\">\t\t\t<stop offset=\"40%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-50\">\t\t\t<stop offset=\"50%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-60\">\t\t\t<stop offset=\"60%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-70\">\t\t\t<stop offset=\"70%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-80\">\t\t\t<stop offset=\"80%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-90\">\t\t\t<stop offset=\"90%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t<\/defs>\t<path d=\"m46.3 52-14.4-9.5-14.4 9.4L22 35.3 8.7 24.5l17.1-.9 6.2-16 6 16 17.2 1-13.4 10.7z\"\/><\/svg>\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=\"100\">\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"9 9 46 42\" width=\"18\" height=\"17\">\t<defs>\t\t<linearGradient id=\"tasty-recipes-clip-10\">\t\t\t<stop offset=\"10%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-20\">\t\t\t<stop offset=\"20%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-30\">\t\t\t<stop offset=\"30%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-40\">\t\t\t<stop offset=\"40%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-50\">\t\t\t<stop offset=\"50%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-60\">\t\t\t<stop offset=\"60%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-70\">\t\t\t<stop offset=\"70%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-80\">\t\t\t<stop offset=\"80%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-90\">\t\t\t<stop offset=\"90%\" stop-color=\"currentColor\"\/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\"\/>\t\t<\/linearGradient>\t<\/defs>\t<path d=\"m46.3 52-14.4-9.5-14.4 9.4L22 35.3 8.7 24.5l17.1-.9 6.2-16 6 16 17.2 1-13.4 10.7z\"\/><\/svg>\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\t\t\t\t\t\t\t<p><span data-tasty-recipes-customization=\"detail-label-color.color\" class=\"rating-label\"><span class=\"average\">5<\/span> from <span class=\"count\">1<\/span> review<\/span><\/p>\n\t\t\t<\/div>\n\n\n\t<div class=\"tasty-recipes-description\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t<p><i><span style=\"font-weight: 400\">This filling Tuscan White Bean Soup is packed with vegetables and flavor for a fun twist on a classic italian Ribolitta recipe. It\u2019s gluten-free and vegan and made in one-pot for easy prep and clean-up.<\/span><\/i><\/p>\n\t<\/div>\n\n\t<div class=\"tasty-recipes-details\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t<ul>\n\t\t\t\t\t\t\t<li class=\"author\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Author:<\/strong> <a data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-author-name\" href=\"https:\/\/www.thehealthymaven.com\/author\/davida\/\">Davida Lederle<\/a><\/li>\n\t\t\t\t\t\t\t<li class=\"prep-time\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Prep Time:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-prep-time\">10 minutes<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"cook-time\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Cook Time:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-cook-time\">35 minutes<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"total-time\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Total Time:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-total-time\">45 minutes<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"yield\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Yield:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-yield\"><span data-amount=\"6\">6<\/span> bowls <span class=\"tasty-recipes-yield-scale\"><span data-amount=\"1\">1<\/span>x<\/span><\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"category\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Category:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-category\">Soup<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"method\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Method:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-method\">Cook<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"cuisine\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Cuisine:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-cuisine\">Italian<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"diet\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Diet:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-diet\">Vegan<\/span><\/li>\n\t\t\t\t\t<\/ul>\n\t<\/div>\n\n\t<div class=\"tasty-recipes-ingredients\">\n\t\t<div class=\"tasty-recipes-ingredients-header\">\n\t\t\t<div class=\"tasty-recipes-ingredients-clipboard-container\">\n\t\t\t\t<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Ingredients<\/h3>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t<div class=\"tasty-recipes-units-scale-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tasty-recipes-scale-container\">\n\t\t\t\t\t\t<span class=\"tasty-recipes-scale-label\">Scale<\/span>\n\t\t\t\t\t\t<button class=\"tasty-recipes-scale-button tasty-recipes-scale-button-active\" data-amount=\"1\" type=\"button\">1x<\/button><button class=\"tasty-recipes-scale-button\" data-amount=\"2\" type=\"button\">2x<\/button><button class=\"tasty-recipes-scale-button\" data-amount=\"3\" type=\"button\">3x<\/button>\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t<div class=\"tasty-recipes-ingredients-body\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t<ul>\n<li class=\"p1\"><span data-amount=\"1\">1<\/span>&#8211;<span data-amount=\"2\">2<\/span> tbsp olive oil<\/li>\n<li class=\"p1\"><span data-amount=\"1\">1<\/span> large yellow onion, <em>diced<\/em><\/li>\n<li class=\"p1\"><span data-amount=\"6\">6<\/span> garlic cloves, <em>minced<\/em><\/li>\n<li class=\"p1\"><span data-amount=\"4\" data-unit=\"tbsp\">4 tbsp<\/span> fresh rosemary, <em>chopped<\/em> (or <span data-amount=\"2\" data-unit=\"tbsp\">2 tbsp<\/span> dried)<\/li>\n<li class=\"p1\"><span data-amount=\"1\">1<\/span> 28 oz can of diced tomatoes<\/li>\n<li class=\"p1\">optional: 3 fresh tomatoes, <em>chopped<\/em>*<\/li>\n<li class=\"p1\"><span data-amount=\"2\">2<\/span> cans of cannellini (white) beans, <em>rinsed and drained<\/em><\/li>\n<li class=\"p1\"><span data-amount=\"4\" data-unit=\"cup\">4 cups<\/span> vegetable stock<\/li>\n<li class=\"p1\">salt and pepper, <em>to taste<\/em><\/li>\n<li class=\"p1\"><span data-amount=\"2\" data-unit=\"tbsp\">2 tbsp<\/span> red wine vinegar<\/li>\n<li class=\"p1\"><span data-amount=\"1\">1<\/span> bunch of basil, <em>chopped<\/em><\/li>\n<li class=\"p1\"><span data-amount=\"4\">4<\/span> stocks of lacinato (tuscan) kale, <em>stemmed and chopped<\/em><\/li>\n<\/ul>\n<!--INSIDE_INGREDIENTS-->\t\t<\/div>\n\t\t<div class=\"tasty-recipes-cook-mode\">\n\t<div class=\"tasty-recipes-cook-mode__container\">\n\t\t<label class=\"tasty-recipes-cook-mode__switch\">\n\t\t\t<input type=\"checkbox\" id=\"tasty_recipes_6744567f2cb67_cookmode\">\n\t\t\t<span class=\"tasty-recipes-cook-mode__switch-slider tasty-recipes-cook-mode__switch-round\"\n\t\t\t\tdata-tasty-recipes-customization=\"button-color.background button-text-color.color\"><\/span>\n\t\t<\/label>\n\t\t<label for=\"tasty_recipes_6744567f2cb67_cookmode\">\n\t\t\t<span class=\"tasty-recipes-cook-mode__label\">Cook Mode<\/span>\n\t\t\t<span class=\"tasty-recipes-cook-mode__helper\">\n\t\t\t\tPrevent your screen from going dark\t\t\t<\/span>\n\t\t<\/label>\n\t<\/div>\n<\/div>\n\t<\/div>\n\n\t<div class=\"tasty-recipe-instructions\">\n\t\t<div class=\"tasty-recipes-instructions-header\">\n\t\t\t<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Instructions<\/h3>\n\t\t\t\t\t<\/div>\n\t\t<div class=\"tasty-recipes-instructions-body\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t<ol>\n<li id=\"instruction-step-1\" class=\"instruction\">Heat olive oil over medium heat in a large stock or soup pot. Add onions and garlic and saut\u00e9 for 5 mins or until onions are translucent.<\/li>\n<li id=\"instruction-step-2\" class=\"instruction\">Add rosemary and cook for another 2 mins.<\/li>\n<li id=\"instruction-step-3\" class=\"instruction\">Add in canned diced tomatoes, fresh tomatoes (if using), vegetable stock and salt and pepper and bring to a boil.<\/li>\n<li id=\"instruction-step-4\" class=\"instruction\">Once boiling put heat on low and add beans. Let simmer for 30 mins.<\/li>\n<li id=\"instruction-step-5\" class=\"instruction\">Add in vinegar, kale and basil.<\/li>\n<li id=\"instruction-step-6\" class=\"instruction\">Serve immediately or store in fridge or freezer.<\/li>\n<\/ol>\n<p><em>*I like the added tomato flavor from fresh tomatoes but this is entirely optional. Just omit if canned tomatoes are all you have.<\/em><\/p>\n\t\t<\/div>\n\t<\/div>\n\n\n\n\n\n\n\n\n\n\n\n\n<script>\nwindow.trCommon={\"minRating\":6,\"ajaxurl\":\"https:\\\/\\\/www.thehealthymaven.com\\\/wp-admin\\\/admin-ajax.php\",\"ratingNonce\":\"\",\"postId\":60};\nwindow.TastyRecipes = window.TastyRecipes || {};\n\nwindow.TastyRecipes.smoothScroll = {\ninit() {\ndocument.addEventListener( 'click', ( e ) => {\nlet anchor = e.target;\nif ( anchor.tagName !== 'A' ) {\nanchor = anchor.closest( 'a.tasty-recipes-scrollto' );\n}\n\nif ( ! anchor || ! anchor.classList.contains( 'tasty-recipes-scrollto' ) ) {\nreturn;\n}\n\nconst elementHref = anchor.getAttribute( 'href' );\nif ( ! elementHref ) {\nreturn;\n}\n\ne.preventDefault();\nthis.goToSelector( elementHref );\n});\n},\ngoToSelector( selector ) {\nconst element = document.querySelector( selector );\nif ( ! element ) {\nreturn;\n}\nelement.scrollIntoView( { behavior: 'smooth' } );\n}\n};\n\ndocument.addEventListener(\n'DOMContentLoaded',\n() => window.TastyRecipes.smoothScroll.init()\n);\n\n(function(){\n\n\nvar bothEquals = function( d1, d2, D ) {\nvar ret = 0;\nif (d1<=D) {\nret++;\n}\nif (d2<=D) {\nret++;\n}\nreturn ret === 2;\n};\n\nvar frac =function frac(x,D,mixed){var n1=Math.floor(x),d1=1;var n2=n1+1,d2=1;if(x!==n1)while(bothEquals(d1,d2,D)){var m=(n1+n2)\/(d1+d2);if(x===m){if(d1+d2<=D){d1+=d2;n1+=n2;d2=D+1}else if(d1>d2)d2=D+1;else d1=D+1;break}else if(x<m){n2=n1+n2;d2=d1+d2}else{n1=n1+n2;d1=d1+d2}}if(d1>D){d1=d2;n1=n2}if(!mixed)return[0,n1,d1];var q=Math.floor(n1\/d1);return[q,n1-q*d1,d1]};frac.cont=function cont(x,D,mixed){var sgn=x<0?-1:1;var B=x*sgn;var P_2=0,P_1=1,P=0;var Q_2=1,Q_1=0,Q=0;var A=Math.floor(B);while(Q_1<D){A=Math.floor(B);P=A*P_1+P_2;Q=A*Q_1+Q_2;if(B-A<5e-8)break;B=1\/(B-A);P_2=P_1;P_1=P;Q_2=Q_1;Q_1=Q}if(Q>D){if(Q_1>D){Q=Q_2;P=P_2}else{Q=Q_1;P=P_1}}if(!mixed)return[0,sgn*P,Q];var q=Math.floor(sgn*P\/Q);return[q,sgn*P-q*Q,Q]};\n\n\nwindow.tastyRecipesVulgarFractions = JSON.parse(decodeURIComponent(\"%7B%22%C2%BC%22%3A%221%2F4%22%2C%22%C2%BD%22%3A%221%2F2%22%2C%22%C2%BE%22%3A%223%2F4%22%2C%22%E2%85%93%22%3A%221%2F3%22%2C%22%E2%85%94%22%3A%222%2F3%22%2C%22%E2%85%95%22%3A%221%2F5%22%2C%22%E2%85%96%22%3A%222%2F5%22%2C%22%E2%85%97%22%3A%223%2F5%22%2C%22%E2%85%98%22%3A%224%2F5%22%2C%22%E2%85%99%22%3A%221%2F6%22%2C%22%E2%85%9A%22%3A%225%2F6%22%2C%22%E2%85%9B%22%3A%221%2F8%22%2C%22%E2%85%9C%22%3A%223%2F8%22%2C%22%E2%85%9D%22%3A%225%2F8%22%2C%22%E2%85%9E%22%3A%227%2F8%22%7D\"));\n\nwindow.tastyRecipesFormatAmount = function(amount, el) {\nif ( parseFloat( amount ) === parseInt( amount ) ) {\nreturn amount;\n}\nvar roundType = 'frac';\nif (typeof el.dataset.amountShouldRound !== 'undefined') {\nif ('false' !== el.dataset.amountShouldRound) {\nif ( 'number' === el.dataset.amountShouldRound ) {\nroundType = 'number';\n} else if ('frac' === el.dataset.amountShouldRound) {\nroundType = 'frac';\n} else if ('vulgar' === el.dataset.amountShouldRound) {\nroundType = 'vulgar';\n} else {\nroundType = 'integer';\n}\n}\n}\nif ('number' === roundType) {\namount = Number.parseFloat(amount).toPrecision(2);\n} else if ('integer' === roundType) {\namount = Math.round(amount);\n} else if ('frac' === roundType || 'vulgar' === roundType) {\nvar denom = 8;\nif (typeof el.dataset.unit !== 'undefined') {\nvar unit = el.dataset.unit;\nif (['cups','cup','c'].includes(unit)) {\ndenom = 4;\nif (0.125 === amount) {\ndenom = 8;\n}\nif (\"0.1667\" === Number.parseFloat( amount ).toPrecision(4)) {\ndenom = 6;\n}\n}\nif (['tablespoons','tablespoon','tbsp'].includes(unit)) {\ndenom = 2;\n}\nif (['teaspoons','teaspoon','tsp'].includes(unit)) {\ndenom = 8;\n}\n}\nvar amountArray = frac.cont( amount, denom, true );\nvar newAmount = '';\nif ( amountArray[1] !== 0 ) {\nnewAmount = amountArray[1] + '\/' + amountArray[2];\nif ('vulgar' === roundType) {\nObject.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {\nif (newAmount === window.tastyRecipesVulgarFractions[vulgar]) {\nnewAmount = vulgar;\n}\n});\n}\n}\nif ( newAmount ) {\nnewAmount = ' ' + newAmount;\n}\nif ( amountArray[0] ) {\nnewAmount = amountArray[0] + newAmount;\n}\namount = newAmount;\n}\nreturn amount;\n};\n\n\nwindow.tastyRecipesUpdatePrintLink = () => {\n\nconst printButton = document.querySelector( '.tasty-recipes-print-button' );\n\n\nif ( ! printButton ) {\nreturn;\n}\n\nconst printURL = new URL( printButton.href );\nconst searchParams = new URLSearchParams( printURL.search );\n\nconst unitButton = document.querySelector( '.tasty-recipes-convert-button-active' );\nconst scaleButton = document.querySelector( '.tasty-recipes-scale-button-active' );\n\nlet unit = '';\nlet scale = '';\n\nif ( unitButton ) {\nunit = unitButton.dataset.unitType;\nsearchParams.delete('unit');\nsearchParams.set( 'unit', unit );\n}\n\nif ( scaleButton ) {\nscale = scaleButton.dataset.amount;\nsearchParams.set( 'scale', scale );\n}\n\nconst paramString = searchParams.toString();\nconst newURL = '' === paramString ? printURL.href : printURL.origin + printURL.pathname + '?' + paramString;\nconst printLinks = document.querySelectorAll( '.tasty-recipes-print-link' );\n\nprintLinks.forEach( ( el ) => {\nel.href = newURL;\n});\n\nconst printButtons = document.querySelectorAll( '.tasty-recipes-print-button' );\nprintButtons.forEach( ( el ) => {\nel.href = newURL;\n});\n};\n\n\ndocument.addEventListener( 'DOMContentLoaded', () => {\n\n\nif ( ! window.location.href.includes( '\/print\/' ) ) {\nreturn;\n}\n\nconst searchParams = new URLSearchParams( window.location.search );\n\nconst unit = searchParams.get( 'unit' );\nconst scale = searchParams.get( 'scale' );\n\nif ( unit && ( 'metric' === unit || 'usc' === unit ) ) {\ndocument.querySelector( '.tasty-recipes-convert-button[data-unit-type=\"' + unit + '\"]' ).click();\n}\n\nif ( scale && Number(scale) > 0 ) {\ndocument.querySelector( '.tasty-recipes-scale-button[data-amount=\"' + Number(scale) + '\"]' ).click();\n}\n});\n}());\n\n(function(){\nvar buttonClass = 'tasty-recipes-scale-button',\nbuttonActiveClass = 'tasty-recipes-scale-button-active',\nbuttons = document.querySelectorAll('.tasty-recipes-scale-button');\nif ( ! buttons ) {\nreturn;\n}\n\nbuttons.forEach(function(button){\nbutton.addEventListener('click', function(event){\nevent.preventDefault();\nvar recipe = event.target.closest('.tasty-recipes');\nif ( ! recipe ) {\nreturn;\n}\nvar otherButtons = recipe.querySelectorAll('.' + buttonClass);\notherButtons.forEach(function(bt){\nbt.classList.remove(buttonActiveClass);\n});\nbutton.classList.add(buttonActiveClass);\n\n\nvar scalables = recipe.querySelectorAll('span[data-amount]');\nvar buttonAmount = parseFloat( button.dataset.amount );\nscalables.forEach(function(scalable){\nif (typeof scalable.dataset.amountOriginalType === 'undefined'\n&& typeof scalable.dataset.nfOriginal === 'undefined') {\nif (-1 !== scalable.innerText.indexOf('\/')) {\nscalable.dataset.amountOriginalType = 'frac';\n}\nif (-1 !== scalable.innerText.indexOf('.')) {\nscalable.dataset.amountOriginalType = 'number';\n}\nObject.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {\nif (-1 !== scalable.innerText.indexOf(vulgar)) {\nscalable.dataset.amountOriginalType = 'vulgar';\n}\n});\nif (typeof scalable.dataset.amountOriginalType !== 'undefined') {\nscalable.dataset.amountShouldRound = scalable.dataset.amountOriginalType;\n}\n}\nvar amount = parseFloat( scalable.dataset.amount ) * buttonAmount;\namount = window.tastyRecipesFormatAmount(amount, scalable);\nif ( typeof scalable.dataset.unit !== 'undefined' ) {\nif ( ! scalable.classList.contains('nutrifox-quantity') ) {\nif ( ! scalable.classList.contains('nutrifox-second-quantity') ) {\namount += ' ' + scalable.dataset.unit;\n}\n}\n}\nscalable.innerText = amount;\n});\n\nvar nonNumerics = recipe.querySelectorAll('[data-has-non-numeric-amount]');\nnonNumerics.forEach(function(nonNumeric){\nvar indicator = nonNumeric.querySelector('span[data-non-numeric-label]');\nif ( indicator ) {\nnonNumeric.removeChild(indicator);\n}\nif ( 1 !== buttonAmount ) {\nindicator = document.createElement('span');\nindicator.setAttribute('data-non-numeric-label', true);\nvar text = document.createTextNode(' (x' + buttonAmount + ')');\nindicator.appendChild(text);\nnonNumeric.appendChild(indicator);\n}\n});\n\nwindow.tastyRecipesUpdatePrintLink();\n});\n});\n}());\n\nwindow.TastyRecipes = window.TastyRecipes || {};\nwindow.TastyRecipes.cookMode = {\nwakeLockApi: false,\nwakeLock: false,\ncookModeSelector: '.tasty-recipes-cook-mode',\ninit() {\nif (\"wakeLock\" in navigator && \"request\" in navigator.wakeLock) {\nthis.wakeLockApi = navigator.wakeLock;\n}\n\nconst cookModes = document.querySelectorAll(this.cookModeSelector);\n\nif (cookModes.length > 0) {\nfor (const cookMode of cookModes) {\nif (this.wakeLockApi) {\ncookMode.querySelector('input[type=\"checkbox\"]').addEventListener(\"change\", event => {\nthis.checkboxChange(event.target);\n}, false);\n} else {\ncookMode.style.display = \"none\";\n}\n}\n}\n},\ncheckboxChange(checkbox) {\nif (checkbox.checked) {\nthis.lock();\n} else {\nthis.unlock();\n}\n},\nsetCheckboxesState(state) {\nconst checkboxes = document.querySelectorAll(this.cookModeSelector + ' input[type=\"checkbox\"]');\nfor (const checkbox of checkboxes) {\ncheckbox.checked = state;\n}\n},\nasync lock() {\ntry {\nthis.wakeLock = await this.wakeLockApi.request(\"screen\");\nthis.wakeLock.addEventListener(\"release\", () => {\nthis.wakeLock = false;\nthis.setCheckboxesState(false);\n});\nthis.setCheckboxesState(true);\n} catch (error) {\nthis.setCheckboxesState(false);\n}\n},\nunlock() {\nif (this.wakeLock) {\nthis.wakeLock.release();\nthis.wakeLock = false;\n}\nthis.setCheckboxesState(false);\n}\n};\n\n(function(callback) {\nif (document.readyState !== \"loading\") {\ncallback();\n} else {\ndocument.addEventListener(\"DOMContentLoaded\", callback);\n}\n})(() => {\nwindow.TastyRecipes.cookMode.init();\n});\n\n\n\nwindow.TastyRecipes = window.TastyRecipes || {};\n\nwindow.TastyRecipes.staticTooltip = {\nelement: null,\ntooltipElement: null,\ndeleting: false,\ninit( element ) {\nif ( this.deleting ) {\nreturn;\n}\nthis.element = element;\nthis.buildElements();\n},\ndestroy() {\nif ( ! this.tooltipElement || this.deleting ) {\nreturn;\n}\n\nthis.deleting = true;\nthis.tooltipElement.classList.remove( 'opened' );\n\nsetTimeout( () => {\nthis.tooltipElement.remove();\nthis.deleting = false;\n}, 500 );\n},\nbuildElements() {\nconst tooltipElement = document.createElement( 'div' );\ntooltipElement.classList.add( 'tasty-recipes-static-tooltip');\ntooltipElement.setAttribute( 'id', 'tasty-recipes-tooltip' );\n\nconst currentTooltipElement = document.getElementById( 'tasty-recipes-tooltip' );\nif ( currentTooltipElement ) {\ndocument.body.replaceChild( tooltipElement, currentTooltipElement );\n} else {\ndocument.body.appendChild( tooltipElement );\n}\n\nthis.tooltipElement = document.getElementById( 'tasty-recipes-tooltip' );\n},\nshow() {\nif ( ! this.tooltipElement ) {\nreturn;\n}\n\nconst tooltipTop = this.element.getBoundingClientRect().top\n+ window.scrollY\n- 10 \/\/ 10px offset.\n- this.tooltipElement.getBoundingClientRect().height;\nconst tooltipLeft = this.element.getBoundingClientRect().left\n- ( this.tooltipElement.getBoundingClientRect().width \/ 2 )\n+ ( this.element.getBoundingClientRect().width \/ 2 ) - 1;\nconst posLeft = Math.max( 10, tooltipLeft );\nthis.maybeRemoveTail( posLeft !== tooltipLeft );\n\nthis.tooltipElement.setAttribute( 'style', 'top:' + tooltipTop + 'px;left:' + posLeft + 'px;' );\nthis.tooltipElement.classList.add( 'opened' );\n\n},\nmaybeRemoveTail( removeTail ) {\nif ( removeTail ) {\nthis.tooltipElement.classList.add( 'tr-hide-tail' );\n} else {\nthis.tooltipElement.classList.remove( 'tr-hide-tail' );\n}\n},\nchangeMessage( message ) {\nif ( ! this.tooltipElement ) {\nreturn;\n}\nthis.tooltipElement.innerHTML = message;\n}\n};\n\nwindow.TastyRecipes.ajax = {\nsendPostRequest( url, data, success, failure ) {\nconst xhr = new XMLHttpRequest();\nxhr.open( 'POST', url, true );\nxhr.send( this.preparePostData( data ) );\n\nxhr.onreadystatechange = () => {\nif ( 4 !== xhr.readyState ) {\nreturn;\n}\nif ( xhr.status === 200 ) {\nsuccess( JSON.parse( xhr.responseText ) );\nreturn;\n}\n\nfailure( xhr );\n};\n\nxhr.onerror = () => {\nfailure( xhr );\n};\n},\npreparePostData( data ) {\nconst formData = new FormData();\n\nfor ( const key in data ) {\nformData.append( key, data[key] );\n}\nreturn formData;\n},\n};\n\nwindow.TastyRecipes.ratings = {\ndefaultRating: 0,\ncurrentRatingPercentage: 100,\nsavingRating: false,\ninit( minRating ) {\nthis.minRating = minRating;\n\nthis.formWatchRating();\nthis.closeTooltipWhenClickOutside();\nthis.addBodyClassBasedOnSelectedRating();\nthis.backwardCompFormRatingPosition();\n},\nformWatchRating() {\nconst ratings = document.querySelectorAll('.tasty-recipes-no-ratings-buttons [data-rating]');\nif ( ratings.length <= 0 ) {\nreturn;\n}\nfor ( const rating of ratings ) {\nrating.addEventListener( 'click', event => {\nevent.preventDefault();\nthis.defaultRating = event.target.closest( '.checked' ).dataset.rating;\nthis.setCheckedStar( event.target );\nthis.maybeSendRating( this.defaultRating, event.target );\nthis.setRatingInForm( this.defaultRating );\n} );\n}\n},\ncloseTooltipWhenClickOutside() {\nwindow.addEventListener( 'click', e => {\n\/\/ Bailout (don't remove the tooltip) when the clicked element is a rating star, or it's the tooltip itself.\nif ( e.target.closest( '.tasty-recipes-rating' ) || e.target.classList.contains( 'tasty-recipes-static-tooltip' ) ) {\nreturn;\n}\n\nwindow.TastyRecipes.staticTooltip.destroy();\n} );\n},\n setRatingInForm( rating ) {\nconst ratingInput = document.querySelector( '#respond .tasty-recipes-rating[value=\"' + rating + '\"]' );\nif ( ! ratingInput ) {\nreturn;\n}\nratingInput.click();\n},\naddBodyClassBasedOnSelectedRating() {\nconst ratingInputs = document.querySelectorAll( 'input.tasty-recipes-rating' );\nif ( ! ratingInputs ) {\nreturn;\n}\nfor ( const ratingInput of ratingInputs ) {\nratingInput.addEventListener( 'click', currentEvent => {\nconst selectedRating = currentEvent.target.getAttribute( 'value' );\nthis.handleBodyClassByRating( selectedRating );\nthis.toggleCommentTextareaRequired( selectedRating );\n} );\n}\n},\nhandleBodyClassByRating( rating ) {\nif ( rating < this.minRating ) {\ndocument.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );\nreturn;\n}\ndocument.body.classList.add( 'tasty-recipes-selected-minimum-rating' );\n},\ntoggleCommentTextareaRequired( rating ) {\nconst commentTextarea = document.getElementById( 'comment' );\nif ( ! commentTextarea ) {\nreturn;\n}\n\nif ( rating < this.minRating ) {\ncommentTextarea.setAttribute( 'required', '' );\nreturn;\n}\n\ncommentTextarea.removeAttribute( 'required' );\n},\nmaybeSendRating( rating, element ) {\nif ( this.savingRating === rating ) {\nreturn;\n}\n\nthis.savingRating = rating;\nwindow.TastyRecipes.staticTooltip.init( element );\n\nconst recipeCardElement = element.closest( '.tasty-recipes' );\nif ( ! recipeCardElement ) {\nwindow.TastyRecipes.staticTooltip.destroy();\nreturn;\n}\n\nwindow.TastyRecipes.ajax.sendPostRequest(\nwindow.trCommon.ajaxurl,\n{\naction: 'tasty_recipes_save_rating',\nrating,\nnonce: window.trCommon.ratingNonce,\npost_id: window.trCommon.postId,\nrecipe_id: recipeCardElement.dataset.trId,\n},\n( response ) => {\nwindow.TastyRecipes.staticTooltip.changeMessage( response.data.message );\nwindow.TastyRecipes.staticTooltip.show();\nthis.updateAverageText( response.data, recipeCardElement );\nthis.maybeFillCommentForm( response.data );\n\n\/\/ Hide the tooltip after 5 seconds.\nsetTimeout( () => {\nthis.maybeResetTooltip( recipeCardElement, response.data, rating );\n}, 5000 );\n},\n() => {\nthis.resetTooltip( recipeCardElement );\n}\n);\n},\nupdateAverageText( data, recipeCardElement ) {\nif ( ! data.average ) {\nreturn;\n}\nthis.setRatingPercent( data );\n\nif ( ! data.count ) {\nreturn;\n}\n\nconst quickLink = document.querySelector( '.tasty-recipes-rating-link' );\nif ( quickLink ) {\nthis.setTextInContainer( quickLink, data );\nthis.setPartialStar( quickLink );\n}\n\nconst cardStars = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );\ncardStars.dataset.trDefaultRating = data.average;\nthis.setTextInContainer( recipeCardElement.querySelector( '.tasty-recipes-rating' ), data );\n},\nsetTextInContainer( container, data ) {\nif ( ! container ) {\nreturn;\n}\n\nif ( data.label ) {\nconst ratingLabelElement = container.querySelector( '.rating-label' );\nif ( ratingLabelElement ) {\nratingLabelElement.innerHTML = data.label;\n}\nreturn;\n}\n\nconst averageElement = container.querySelector( '.average' );\nif ( averageElement ) {\naverageElement.textContent = data.average;\n}\n\nconst countElement = container.querySelector( '.count' );\nif ( countElement ) {\ncountElement.textContent = data.count;\n}\n},\nsetPartialStar( container ) {\nconst highestStar = container.querySelector( '[data-rating=\"' + Math.ceil( this.defaultRating ) + '\"]' );\nif ( highestStar ) {\nhighestStar.dataset.trClip = this.currentRatingPercentage;\n}\n},\nsetRatingPercent( data ) {\nthis.defaultRating = data.average.toFixed( 1 );\nconst parts = data.average.toFixed( 2 ).toString().split( '.' );\nthis.currentRatingPercentage = parts[1] ? parts[1] : 100;\nif ( this.currentRatingPercentage === '00' ) {\nthis.currentRatingPercentage = 100;\n}\n},\nsetCheckedStar( target ) {\nconst cardRatingContainer = target.closest( '.tasty-recipes-ratings-buttons' );\nconst selectedRatingElement = cardRatingContainer.querySelector( '[data-tr-checked]' );\nif ( selectedRatingElement ) {\ndelete selectedRatingElement.dataset.trChecked;\n}\n\nconst thisStar = target.closest( '.tasty-recipes-rating' );\nthisStar.dataset.trChecked = 1;\nthisStar.querySelector( '[data-tr-clip]' ).dataset.trClip = 100;\n},\nmaybeFillCommentForm( data ) {\nif ( ! data.comment || ! data.comment.content ) {\nreturn;\n}\n\nconst commentForm = document.querySelector( '#commentform' );\nif ( ! commentForm ) {\nreturn;\n}\n\nconst commentBox = commentForm.querySelector( '[name=comment]' );\nif ( ! commentBox || commentBox.value ) {\nreturn;\n}\n\n\/\/ Add comment details for editing.\ncommentBox.innerHTML = data.comment.content;\nif ( data.comment.name ) {\ncommentForm.querySelector( '[name=author]' ).value = data.comment.name;\ncommentForm.querySelector( '[name=email]' ).value = data.comment.email;\n}\n},\nmaybeResetTooltip( recipeCardElement, data, rating ) {\nif ( this.savingRating === rating ) {\nthis.resetTooltip( recipeCardElement, data );\n}\n},\nresetTooltip( recipeCardElement, data ) {\nwindow.TastyRecipes.staticTooltip.destroy();\nthis.savingRating = false;\n\n\/\/ Reset the default rating.\nconst cardRatingContainer = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );\nif ( cardRatingContainer ) {\nthis.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;\ncardRatingContainer.dataset.trDefaultRating = this.defaultRating;\n\nthis.resetSelectedStar( cardRatingContainer, data );\n}\n},\nresetSelectedStar( cardRatingContainer ) {\nconst selectedRatingElement = cardRatingContainer.querySelector( '[data-rating=\"' + Math.ceil( this.defaultRating ) + '\"]' );\nif ( selectedRatingElement ) {\nselectedRatingElement.querySelector( '[data-tr-clip]' ).dataset.trClip = this.currentRatingPercentage;\nselectedRatingElement.parentNode.dataset.trChecked = 1;\n}\n\nconst previousSelectedElement= cardRatingContainer.querySelector( '[data-tr-checked]' );\nif ( previousSelectedElement ) {\nconst currentSelectedRating = previousSelectedElement.querySelector('[data-rating]');\nif ( currentSelectedRating !== selectedRatingElement ) {\ndelete previousSelectedElement.dataset.trChecked;\n}\n}\n},\nbackwardCompFormRatingPosition() {\nconst ratingsButtons = document.querySelector( '#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons' );\nif ( ! ratingsButtons ) {\nreturn;\n}\nconst ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);\nif ( ! ratingsButtonsStyles.display.includes( 'flex' ) ) {\nratingsButtons.style.direction = 'rtl';\n}\n\nif ( typeof tastyRecipesRating !== 'undefined' ) {\n\/\/ Select the rating that was previously selected in admin.\nratingsButtons.querySelector( '.tasty-recipes-rating[value=\"' + tastyRecipesRating + '\"]' ).checked = true;\n}\n\nconst ratingSpans = ratingsButtons.querySelectorAll( '.tasty-recipes-rating' );\nfor (const ratingSpan of ratingSpans) {\nratingSpan.addEventListener( 'click', event => {\nif ( ratingSpan === event.target ) {\nreturn;\n}\nratingSpan.previousElementSibling.click();\n} );\n}\n}\n};\n\n(function(callback) {\nif (document.readyState !== \"loading\") {\ncallback();\n} else {\nwindow.addEventListener( 'load', callback );\n}\n})(() => {\nwindow.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );\n});\n<\/script><\/div>","protected":false},"excerpt":{"rendered":"<p>This filling Tuscan White Bean Soup is packed with vegetables and flavor for a fun twist on a classic italian&hellip;<\/p>\n","protected":false},"author":2,"featured_media":38793,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_stopmodifiedupdate":false,"_modified_date":"","footnotes":""},"categories":[480,5596,37,20539,134,32,451],"tags":[6961,6958,6959,6960],"class_list":{"2":"type-post"},"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v23.9 (Yoast SEO v23.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tuscan White Bean Soup [Ribollita] - The Healthy Maven<\/title>\n<meta name=\"description\" content=\"A healthy vegetarian soup filled with vegetables and white beans with a tuscan twist. Fresh rosemary takes this soup to the next level.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tuscan White Bean Soup [White Bean Ribollita]\" \/>\n<meta property=\"og:description\" content=\"A healthy vegetarian soup filled with vegetables and white beans with a tuscan twist. Fresh rosemary takes this soup to the next level.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/\" \/>\n<meta property=\"og:site_name\" content=\"The Healthy Maven\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/thehealthymaven\" \/>\n<meta property=\"article:author\" content=\"www.facebook.com\/thehealthymaven\" \/>\n<meta property=\"article:published_time\" content=\"2022-02-01T10:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-20T21:13:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-3.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"790\" \/>\n\t<meta property=\"og:image:height\" content=\"1185\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Davida Lederle\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Davida Lederle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/\"},\"author\":{\"name\":\"Davida Lederle\",\"@id\":\"https:\/\/www.thehealthymaven.com\/#\/schema\/person\/acb6d9e44f9b367e4df8265d69a7dea1\"},\"headline\":\"Tuscan White Bean Soup [White Bean Ribollita]\",\"datePublished\":\"2022-02-01T10:00:00+00:00\",\"dateModified\":\"2024-01-20T21:13:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/\"},\"wordCount\":704,\"commentCount\":61,\"publisher\":{\"@id\":\"https:\/\/www.thehealthymaven.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-5-e1575911126299.jpg\",\"keywords\":[\"Dairy-free\",\"Gluten-free\",\"Vegan\",\"Vegetarian\"],\"articleSection\":[\"Fall Recipes\",\"Featured\",\"Gluten-Free Recipes\",\"One-Pot Meals\",\"Soups\",\"Vegan Recipes\",\"Vegetarian Recipes\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/\",\"url\":\"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/\",\"name\":\"Tuscan White Bean Soup [Ribollita] - The Healthy Maven\",\"isPartOf\":{\"@id\":\"https:\/\/www.thehealthymaven.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-5-e1575911126299.jpg\",\"datePublished\":\"2022-02-01T10:00:00+00:00\",\"dateModified\":\"2024-01-20T21:13:34+00:00\",\"description\":\"A healthy vegetarian soup filled with vegetables and white beans with a tuscan twist. Fresh rosemary takes this soup to the next level.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/#primaryimage\",\"url\":\"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-5-e1575911126299.jpg\",\"contentUrl\":\"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-5-e1575911126299.jpg\",\"width\":790,\"height\":790},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.thehealthymaven.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Soups\",\"item\":\"https:\/\/www.thehealthymaven.com\/category\/soup\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Tuscan White Bean Soup [White Bean Ribollita]\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.thehealthymaven.com\/#website\",\"url\":\"https:\/\/www.thehealthymaven.com\/\",\"name\":\"The Healthy Maven\",\"description\":\"-where healthy meets living-\",\"publisher\":{\"@id\":\"https:\/\/www.thehealthymaven.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.thehealthymaven.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.thehealthymaven.com\/#organization\",\"name\":\"The Healthy Maven LLC\",\"url\":\"https:\/\/www.thehealthymaven.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.thehealthymaven.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2024\/01\/the-healthy-maven-default-image.jpg\",\"contentUrl\":\"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2024\/01\/the-healthy-maven-default-image.jpg\",\"width\":696,\"height\":696,\"caption\":\"The Healthy Maven LLC\"},\"image\":{\"@id\":\"https:\/\/www.thehealthymaven.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/thehealthymaven\",\"https:\/\/x.com\/thehealthymaven\",\"https:\/\/www.instagram.com\/thehealthymaven\",\"https:\/\/www.pinterest.com\/thehealthymaven\",\"https:\/\/www.youtube.com\/channel\/UCyK5nQt0c37nilRzVBRXv6g\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.thehealthymaven.com\/#\/schema\/person\/acb6d9e44f9b367e4df8265d69a7dea1\",\"name\":\"Davida Lederle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.thehealthymaven.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a314a0671325f04234bcb26840672bc6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a314a0671325f04234bcb26840672bc6?s=96&d=mm&r=g\",\"caption\":\"Davida Lederle\"},\"description\":\"Welcome to The Healthy Maven! I'm Davida and I've been food blogging for over a decade. I'm also a certified herbalist, yoga instructor and major health junkie. My goal is to help you live healthFULLY rather than living for your health. I provide simple and nutritious recipes, clean beauty and lifestyle tips so you can live well.\",\"sameAs\":[\"https:\/\/www.thehealthymaven.com\/author\/davida\/\",\"www.facebook.com\/thehealthymaven\",\"www.instagram.com\/thehealthymaven\",\"https:\/\/x.com\/TheHealthyMaven\"],\"knowsAbout\":[\"cooking\",\"food blogging\",\"yoga\",\"clean beauty\"],\"url\":\"https:\/\/www.thehealthymaven.com\/author\/davida\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Tuscan White Bean Soup [Ribollita] - The Healthy Maven","description":"A healthy vegetarian soup filled with vegetables and white beans with a tuscan twist. Fresh rosemary takes this soup to the next level.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/","og_locale":"en_US","og_type":"article","og_title":"Tuscan White Bean Soup [White Bean Ribollita]","og_description":"A healthy vegetarian soup filled with vegetables and white beans with a tuscan twist. Fresh rosemary takes this soup to the next level.","og_url":"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/","og_site_name":"The Healthy Maven","article_publisher":"https:\/\/www.facebook.com\/thehealthymaven","article_author":"www.facebook.com\/thehealthymaven","article_published_time":"2022-02-01T10:00:00+00:00","article_modified_time":"2024-01-20T21:13:34+00:00","og_image":[{"width":790,"height":1185,"url":"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-3.jpg","type":"image\/jpeg"}],"author":"Davida Lederle","twitter_misc":{"Written by":"Davida Lederle","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/#article","isPartOf":{"@id":"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/"},"author":{"name":"Davida Lederle","@id":"https:\/\/www.thehealthymaven.com\/#\/schema\/person\/acb6d9e44f9b367e4df8265d69a7dea1"},"headline":"Tuscan White Bean Soup [White Bean Ribollita]","datePublished":"2022-02-01T10:00:00+00:00","dateModified":"2024-01-20T21:13:34+00:00","mainEntityOfPage":{"@id":"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/"},"wordCount":704,"commentCount":61,"publisher":{"@id":"https:\/\/www.thehealthymaven.com\/#organization"},"image":{"@id":"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/#primaryimage"},"thumbnailUrl":"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-5-e1575911126299.jpg","keywords":["Dairy-free","Gluten-free","Vegan","Vegetarian"],"articleSection":["Fall Recipes","Featured","Gluten-Free Recipes","One-Pot Meals","Soups","Vegan Recipes","Vegetarian Recipes"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/","url":"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/","name":"Tuscan White Bean Soup [Ribollita] - The Healthy Maven","isPartOf":{"@id":"https:\/\/www.thehealthymaven.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/#primaryimage"},"image":{"@id":"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/#primaryimage"},"thumbnailUrl":"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-5-e1575911126299.jpg","datePublished":"2022-02-01T10:00:00+00:00","dateModified":"2024-01-20T21:13:34+00:00","description":"A healthy vegetarian soup filled with vegetables and white beans with a tuscan twist. Fresh rosemary takes this soup to the next level.","breadcrumb":{"@id":"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/#primaryimage","url":"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-5-e1575911126299.jpg","contentUrl":"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2013\/09\/tuscan-soup-5-e1575911126299.jpg","width":790,"height":790},{"@type":"BreadcrumbList","@id":"https:\/\/www.thehealthymaven.com\/tuscan-white-bean-soup\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.thehealthymaven.com\/"},{"@type":"ListItem","position":2,"name":"Soups","item":"https:\/\/www.thehealthymaven.com\/category\/soup\/"},{"@type":"ListItem","position":3,"name":"Tuscan White Bean Soup [White Bean Ribollita]"}]},{"@type":"WebSite","@id":"https:\/\/www.thehealthymaven.com\/#website","url":"https:\/\/www.thehealthymaven.com\/","name":"The Healthy Maven","description":"-where healthy meets living-","publisher":{"@id":"https:\/\/www.thehealthymaven.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.thehealthymaven.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.thehealthymaven.com\/#organization","name":"The Healthy Maven LLC","url":"https:\/\/www.thehealthymaven.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.thehealthymaven.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2024\/01\/the-healthy-maven-default-image.jpg","contentUrl":"https:\/\/www.thehealthymaven.com\/wp-content\/uploads\/2024\/01\/the-healthy-maven-default-image.jpg","width":696,"height":696,"caption":"The Healthy Maven LLC"},"image":{"@id":"https:\/\/www.thehealthymaven.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/thehealthymaven","https:\/\/x.com\/thehealthymaven","https:\/\/www.instagram.com\/thehealthymaven","https:\/\/www.pinterest.com\/thehealthymaven","https:\/\/www.youtube.com\/channel\/UCyK5nQt0c37nilRzVBRXv6g\/"]},{"@type":"Person","@id":"https:\/\/www.thehealthymaven.com\/#\/schema\/person\/acb6d9e44f9b367e4df8265d69a7dea1","name":"Davida Lederle","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.thehealthymaven.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a314a0671325f04234bcb26840672bc6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a314a0671325f04234bcb26840672bc6?s=96&d=mm&r=g","caption":"Davida Lederle"},"description":"Welcome to The Healthy Maven! I'm Davida and I've been food blogging for over a decade. I'm also a certified herbalist, yoga instructor and major health junkie. My goal is to help you live healthFULLY rather than living for your health. I provide simple and nutritious recipes, clean beauty and lifestyle tips so you can live well.","sameAs":["https:\/\/www.thehealthymaven.com\/author\/davida\/","www.facebook.com\/thehealthymaven","www.instagram.com\/thehealthymaven","https:\/\/x.com\/TheHealthyMaven"],"knowsAbout":["cooking","food blogging","yoga","clean beauty"],"url":"https:\/\/www.thehealthymaven.com\/author\/davida\/"}]}},"_links":{"self":[{"href":"https:\/\/www.thehealthymaven.com\/wp-json\/wp\/v2\/posts\/60"}],"collection":[{"href":"https:\/\/www.thehealthymaven.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.thehealthymaven.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.thehealthymaven.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.thehealthymaven.com\/wp-json\/wp\/v2\/comments?post=60"}],"version-history":[{"count":0,"href":"https:\/\/www.thehealthymaven.com\/wp-json\/wp\/v2\/posts\/60\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.thehealthymaven.com\/wp-json\/wp\/v2\/media\/38793"}],"wp:attachment":[{"href":"https:\/\/www.thehealthymaven.com\/wp-json\/wp\/v2\/media?parent=60"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.thehealthymaven.com\/wp-json\/wp\/v2\/categories?post=60"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.thehealthymaven.com\/wp-json\/wp\/v2\/tags?post=60"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}