Home Blog Page 58

Pumpkin Spice and THC Nice Cookies

0
A tray of spiced cookies sits on a wooden table next to sprigs of cinnamon sticks.

It’s a sugar cookie meets pumpkin spice with a mellowing hit of Best Daze THC-infused sugar and salt. If that doesn’t bring a smile to your face, nothing will.  Consider stopping by a Best Daze location to learn about their salts and sugars, and ask all your questions.

Pumpkin Spice and THC Nice Cookies Recipe

Makes 36-40 cookies

INGREDIENTS

For the cookies
2 ½ cups all-purpose flour
1 tsp baking soda
1 cup (2 sticks) unsalted butter
½ tsp baking powder
1 cup Best Daze sugar
½ tsp Best Daze salt
1 egg
1 tsp vanilla

For the spice mixture
¼ cup Best Daze sugar
1 tsp Pumpkin spice mix (or more to taste)

INSTRUCTIONS

  1. Preheat oven to 350 degrees.
  2. In a bowl, sift together the flour, baking soda and baking powder. Add the Best Daze salt and whisk together.
  3. In a separate bowl or using a stand mixer, cream the butter, 1 cup of the Best Daze sugar. Add the egg and vanilla and beat to combine.
  4. Fold in the flour mixture.
  5. Form the dough into balls that weigh just under one ounce – about 36-40 in total. Mix together the ingredients for the spice mixture in a small bowl and roll the dough balls in the mixture.
  6. Line large baking pans with either silpat or parchment paper and place the dough balls on the pans, allowing space between for them to spread.
  7. Place in the pre-heated oven and bake for about 11 minutes. The cookies should still be soft.
  8. Remove from the oven. Allow to cool for two minutes on the pan then remove and allow to finish cooling on a wire rack. Store in an airtight container.

Recipe by Julia Platt Leonard / Styling by Anna Franklin / Photography by Dave Bryce

A footer photo with a white background, one TABLE Magazine and subscribe info and button

Subscribe to TABLE Magazine‘s print edition.

THC Double Chocolate Macadamia Nut Cookies

0
A plate holds a bunch of double chocolate chip macadamia nut cookies on a brown table.

Cocoa powder + dark chocolate = crave-able cookies. Best Daze sugar, infused with THC, makes THC Double Chocolate Macadamia Nut Cookies both crave-able and mellow. A sprinkle of Best Daze salt on top before baking adds a savory note and a touch more THC. Feel free to use chopped pecans or walnuts instead of macadamia nuts. Also feel free to stop by a Best Daze location (or your local dispensary) to ask about how many THC-infused cookies you might consider as the perfect snack. 

Print
clock clock iconcutlery cutlery iconflag flag iconfolder folder iconinstagram instagram iconpinterest pinterest iconfacebook facebook iconprint print iconsquares squares iconheart heart iconheart solid heart solid icon
A plate holds a bunch of double chocolate chip macadamia nut cookies on a brown table.

THC Double Chocolate Macadamia Nut Cookies


  • Author: Julia Platt Leonard
  • Yield: 4850 Cookies 1x

Description

Let these cookies whisk you away to paradise.


Ingredients

Scale
  • 2 ¼ cups all-purpose flour
  • 1 tsp baking soda
  • ¼ cup cocoa powder
  • 1 tsp Best Daze salt + additional to top the cookies (or THC-infused salt of your choice)
  • ½ lb (two sticks) unsalted butter
  • ¾ cup Best Daze sugar (or THC-infused sugar of your choice)
  • ¾ cup brown sugar
  • 2 eggs, lightly beaten
  • 4 oz 60% bittersweet chocolate
  • 1 cup coarsely chopped macadamia nuts


Instructions

  1. Preheat oven to 350 degrees.
  2. In a bowl, sift together the flour, baking soda and cocoa powder. Add the Best Daze salt and whisk together.
  3. In a separate large bowl or using a stand mixer, cream together the butter, Best Daze sugar, and brown sugar. Add the eggs and beat to combine.
  4. Fold in the flour mixture then stir in the chocolate and nuts.
  5. Form the dough into balls that weigh just under one ounce – about 48-50 in total.
  6. Line large baking pans with either silpat or parchment paper and place the dough balls, allowing space between for them to expand. Gently press the balls to flatten the tops and dust with a light sprinkle of Best Daze salt.
  7. Place in the pre-heated over and bake for about 10-11 minutes, turning the pan once halfway through baking.
  8. Remove from the oven – the cookies should still look slightly soft. Allow them to cool for two minutes on the pan then remove and allow to finish cooling on a wire rack. Store in an airtight container.

Recipe by Julia Platt Leonard
Styling by Anna Franklin
Photography by Dave Bryce

Subscribe to TABLE Magazine‘s print edition.

Get Toasted Nuts

0
A light greyish blue bowl of seasoned variety nuts and pumpkin seeds on a wooden table

Ina Garten is our go-to for easy, effortless entertaining and her Chipotle-Rosemary nuts are a party favorite. We’ve added our own TABLE touch with a mix of chile powders, cranberry juice instead of orange, and a different blend of sweeteners and seasonings which includes Best Daze signature THC sugar and salts. Make sure you use raw nuts, not roasted or seasoned. A visit to Best Daze will get you well-informed advice on how many Get Toasted Nuts you might want to munch on.

Get Toasted Nuts Recipe

INGREDIENTS

2 cups pecans
2 cups cashews
1 ½ cups pepitas (pumpkin seeds)
2 cups almonds
1/3 cup Best Daze sugar
4 tsp Best Daze salt
¼ cup pure maple syrup
2 tbsp olive oil
1 tsp chipotle chile powder
1 tsp ancho chile powder
3 tbsp finely chopped rosemary

INSTRUCTIONS

  1. Preheat oven to 350 degrees.
  2. In a large mixing bowl, combine the nuts and seeds with the sugar, half of the salt, (2 teaspoons), maple syrup, olive oil, chile powders and half of the rosemary (1 ½ tablespoons). 
  3. Line a large baking tray with silpat or baking parchment and spread the nut mixture evenly in the pan. 
  4. Bake for 25-30 minutes, stirring occasionally until the nuts are golden brown. 
  5. Remove from the oven and stir in the remaining rosemary (1 ½ tablespoons) and salt (2 teaspoons), allow to cool, stirring the mixture occasionally to stop the nuts from sticking together. Store in an airtight container.  

Recipe by Julia Platt Leonard / Styling by Anna Franklin / Photography by Dave Bryce

A footer photo with a white background, one TABLE Magazine and subscribe info and button

Subscribe to TABLE Magazine‘s print edition.

Simple Chimichurri Shrimp with Couscous

0
A large scalloped edge white dish with shrimp over couscous, and a glass of wine on a textured white surface

This fast and simple Chimichurri Shrimp with Couscous recipe incorporates premade, store-bought ingredients for time-saving preparation, making it a perfect weekday meal on those days when schedules are tight. Spend less time in the kitchen and more time with loved ones after trying this flavorful meal that will satisfy even the picker eaters of the house.

What is Chimichurri?

This herbaceous sauce adds a pop of flavor to any protein. Chimichurri originates in Argentina and comes from the grinding of herbs and oils.. This uncooked condiment bursts with the freshness of parsley, oregano, garlic, and a touch of chili. The addition of olive oil and vinegar provides the base, creating a tangy and slightly spicy sauce that elevates grilled meats, roasted vegetables, and even simple grilled seafood like in our Chimichurri Shrimp with Couscous to new heights.

Print

clock clock iconcutlery cutlery iconflag flag iconfolder folder iconinstagram instagram iconpinterest pinterest iconfacebook facebook iconprint print iconsquares squares iconheart heart iconheart solid heart solid icon

A large scalloped edge white dish with shrimp over couscous, and a glass of wine on a textured white surface

Simple Chimichurri Shrimp with Couscous


5 Stars 4 Stars 3 Stars 2 Stars 1 Star


  • Author:
    Chef Jackie Page

Description

Add a little bit of spice to your couscous and shrimp.


Ingredients


Scale

  • Colossal shrimp
  • Olive oil, for sautéing
  • Chimichurri sauce
  • 1 red pepper, sliced into strips
  • Fresh asparagus, cut into 1-inch pieces
  • Salt and pepper to taste
  • Couscous, your favorite brand
  • ¼ cup olive oil, for couscous
  • Fresh parsley


Instructions

  1. Sauté the shrimp in olive oil, and just before they’re done,add the chimichurri sauce. Toss and set aside.
  2. Sauté the peppers and asparagus in the same pan as the shrimp, adding a little bit more olive oil, salt, and pepper.
  3. Prepare your couscous by box instructions. Add a ¼ cup of olive oil to the couscous. Add peppers and asparagus and lightly toss.
  4. Plate couscous and garnish with shrimp and fresh parsley.

window.trCommon={“minRating”:6,”ajaxurl”:”https://www.tablemagazine.com/wp-admin/admin-ajax.php”,”ratingNonce”:”ea9827f2c8″,”postId”:4887};
window.TastyRecipes = window.TastyRecipes || {};

window.TastyRecipes.smoothScroll = {
init() {
document.addEventListener( ‘click’, ( e ) => {
let anchor = e.target;
if ( anchor.tagName !== ‘A’ ) {
anchor = anchor.closest( ‘a.tasty-recipes-scrollto’ );
}

if ( ! anchor || ! anchor.classList.contains( ‘tasty-recipes-scrollto’ ) ) {
return;
}

const elementHref = anchor.getAttribute( ‘href’ );
if ( ! elementHref ) {
return;
}

e.preventDefault();
this.goToSelector( elementHref );
});
},
goToSelector( selector ) {
const element = document.querySelector( selector );
if ( ! element ) {
return;
}
element.scrollIntoView( { behavior: ‘smooth’ } );
}
};

document.addEventListener(
‘DOMContentLoaded’,
() => window.TastyRecipes.smoothScroll.init()
);

(function(){

var bothEquals = function( d1, d2, D ) {
var ret = 0;
if (d1<=D) {
ret++;
}
if (d2<=D) {
ret++;
}
return ret === 2;
};

var 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+d2d2)d2=D+1;else d1=D+1;break}else if(xD){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-AD){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]};

window.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”));

window.tastyRecipesFormatAmount = function(amount, el) {
if ( parseFloat( amount ) === parseInt( amount ) ) {
return amount;
}
var roundType = ‘frac’;
if (typeof el.dataset.amountShouldRound !== ‘undefined’) {
if (‘false’ !== el.dataset.amountShouldRound) {
if ( ‘number’ === el.dataset.amountShouldRound ) {
roundType = ‘number’;
} else if (‘frac’ === el.dataset.amountShouldRound) {
roundType = ‘frac’;
} else if (‘vulgar’ === el.dataset.amountShouldRound) {
roundType = ‘vulgar’;
} else {
roundType = ‘integer’;
}
}
}
if (‘number’ === roundType) {
amount = Number.parseFloat(amount).toPrecision(2);
} else if (‘integer’ === roundType) {
amount = Math.round(amount);
} else if (‘frac’ === roundType || ‘vulgar’ === roundType) {
var denom = 8;
if (typeof el.dataset.unit !== ‘undefined’) {
var unit = el.dataset.unit;
if ([‘cups’,’cup’,’c’].includes(unit)) {
denom = 4;
if (0.125 === amount) {
denom = 8;
}
if (“0.1667″ === Number.parseFloat( amount ).toPrecision(4)) {
denom = 6;
}
}
if ([‘tablespoons’,’tablespoon’,’tbsp’].includes(unit)) {
denom = 2;
}
if ([‘teaspoons’,’teaspoon’,’tsp’].includes(unit)) {
denom = 8;
}
}
var amountArray = frac.cont( amount, denom, true );
var newAmount = ”;
if ( amountArray[1] !== 0 ) {
newAmount = amountArray[1] + ‘/’ + amountArray[2];
if (‘vulgar’ === roundType) {
Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {
if (newAmount === window.tastyRecipesVulgarFractions[vulgar]) {
newAmount = vulgar;
}
});
}
}
if ( newAmount ) {
newAmount = ‘ ‘ + newAmount;
}
if ( amountArray[0] ) {
newAmount = amountArray[0] + newAmount;
}
amount = newAmount;
}
return amount;
};

window.tastyRecipesUpdatePrintLink = () => {

const printButton = document.querySelector( ‘.tasty-recipes-print-button’ );

if ( ! printButton ) {
return;
}

const printURL = new URL( printButton.href );
const searchParams = new URLSearchParams( printURL.search );

const unitButton = document.querySelector( ‘.tasty-recipes-convert-button-active’ );
const scaleButton = document.querySelector( ‘.tasty-recipes-scale-button-active’ );

let unit = ”;
let scale = ”;

if ( unitButton ) {
unit = unitButton.dataset.unitType;
searchParams.delete(‘unit’);
searchParams.set( ‘unit’, unit );
}

if ( scaleButton ) {
scale = scaleButton.dataset.amount;
searchParams.set( ‘scale’, scale );
}

const paramString = searchParams.toString();
const newURL = ” === paramString ? printURL.href : printURL.origin + printURL.pathname + ‘?’ + paramString;
const printLinks = document.querySelectorAll( ‘.tasty-recipes-print-link’ );

printLinks.forEach( ( el ) => {
el.href = newURL;
});

const printButtons = document.querySelectorAll( ‘.tasty-recipes-print-button’ );
printButtons.forEach( ( el ) => {
el.href = newURL;
});
};

document.addEventListener( ‘DOMContentLoaded’, () => {

if ( ! window.location.href.includes( ‘/print/’ ) ) {
return;
}

const searchParams = new URLSearchParams( window.location.search );

const unit = searchParams.get( ‘unit’ );
const scale = searchParams.get( ‘scale’ );

if ( unit && ( ‘metric’ === unit || ‘usc’ === unit ) ) {
document.querySelector( ‘.tasty-recipes-convert-button[data-unit-type=”‘ + unit + ‘”]’ ).click();
}

if ( scale && Number(scale) > 0 ) {
document.querySelector( ‘.tasty-recipes-scale-button[data-amount=”‘ + Number(scale) + ‘”]’ ).click();
}
});
}());

(function(){
var buttonClass = ‘tasty-recipes-scale-button’,
buttonActiveClass = ‘tasty-recipes-scale-button-active’,
buttons = document.querySelectorAll(‘.tasty-recipes-scale-button’);
if ( ! buttons ) {
return;
}

buttons.forEach(function(button){
button.addEventListener(‘click’, function(event){
event.preventDefault();
var recipe = event.target.closest(‘.tasty-recipes’);
if ( ! recipe ) {
return;
}
var otherButtons = recipe.querySelectorAll(‘.’ + buttonClass);
otherButtons.forEach(function(bt){
bt.classList.remove(buttonActiveClass);
});
button.classList.add(buttonActiveClass);

var scalables = recipe.querySelectorAll(‘span[data-amount]’);
var buttonAmount = parseFloat( button.dataset.amount );
scalables.forEach(function(scalable){
if (typeof scalable.dataset.amountOriginalType === ‘undefined’
&& typeof scalable.dataset.nfOriginal === ‘undefined’) {
if (-1 !== scalable.innerText.indexOf(‘/’)) {
scalable.dataset.amountOriginalType = ‘frac’;
}
if (-1 !== scalable.innerText.indexOf(‘.’)) {
scalable.dataset.amountOriginalType = ‘number’;
}
Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {
if (-1 !== scalable.innerText.indexOf(vulgar)) {
scalable.dataset.amountOriginalType = ‘vulgar’;
}
});
if (typeof scalable.dataset.amountOriginalType !== ‘undefined’) {
scalable.dataset.amountShouldRound = scalable.dataset.amountOriginalType;
}
}
var amount = parseFloat( scalable.dataset.amount ) * buttonAmount;
amount = window.tastyRecipesFormatAmount(amount, scalable);
if ( typeof scalable.dataset.unit !== ‘undefined’ ) {
if ( ! scalable.classList.contains(‘nutrifox-quantity’) ) {
if ( ! scalable.classList.contains(‘nutrifox-second-quantity’) ) {
amount += ‘ ‘ + scalable.dataset.unit;
}
}
}
scalable.innerText = amount;
});

var nonNumerics = recipe.querySelectorAll(‘[data-has-non-numeric-amount]’);
nonNumerics.forEach(function(nonNumeric){
var indicator = nonNumeric.querySelector(‘span[data-non-numeric-label]’);
if ( indicator ) {
nonNumeric.removeChild(indicator);
}
if ( 1 !== buttonAmount ) {
indicator = document.createElement(‘span’);
indicator.setAttribute(‘data-non-numeric-label’, true);
var text = document.createTextNode(‘ (x’ + buttonAmount + ‘)’);
indicator.appendChild(text);
nonNumeric.appendChild(indicator);
}
});

window.tastyRecipesUpdatePrintLink();
});
});
}());

window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.cookMode = {
wakeLockApi: false,
wakeLock: false,
cookModeSelector: ‘.tasty-recipes-cook-mode’,
init() {
if (“wakeLock” in navigator && “request” in navigator.wakeLock) {
this.wakeLockApi = navigator.wakeLock;
}

const cookModes = document.querySelectorAll(this.cookModeSelector);

if (cookModes.length > 0) {
for (const cookMode of cookModes) {
if (this.wakeLockApi) {
cookMode.querySelector(‘input[type=”checkbox”]’).addEventListener(“change”, event => {
this.checkboxChange(event.target);
}, false);
} else {
cookMode.style.display = “none”;
}
}
}
},
checkboxChange(checkbox) {
if (checkbox.checked) {
this.lock();
} else {
this.unlock();
}
},
setCheckboxesState(state) {
const checkboxes = document.querySelectorAll(this.cookModeSelector + ‘ input[type=”checkbox”]’);
for (const checkbox of checkboxes) {
checkbox.checked = state;
}
},
async lock() {
try {
this.wakeLock = await this.wakeLockApi.request(“screen”);
this.wakeLock.addEventListener(“release”, () => {
this.wakeLock = false;
this.setCheckboxesState(false);
});
this.setCheckboxesState(true);
} catch (error) {
this.setCheckboxesState(false);
}
},
unlock() {
if (this.wakeLock) {
this.wakeLock.release();
this.wakeLock = false;
}
this.setCheckboxesState(false);
}
};

(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
document.addEventListener(“DOMContentLoaded”, callback);
}
})(() => {
window.TastyRecipes.cookMode.init();
});

window.TastyRecipes = window.TastyRecipes || {};

window.TastyRecipes.staticTooltip = {
element: null,
tooltipElement: null,
deleting: false,
init( element ) {
if ( this.deleting ) {
return;
}
this.element = element;
this.buildElements();
},
destroy() {
if ( ! this.tooltipElement || this.deleting ) {
return;
}

this.deleting = true;
this.tooltipElement.classList.remove( ‘opened’ );

setTimeout( () => {
this.tooltipElement.remove();
this.deleting = false;
}, 500 );
},
buildElements() {
const tooltipElement = document.createElement( ‘div’ );
tooltipElement.classList.add( ‘tasty-recipes-static-tooltip’);
tooltipElement.setAttribute( ‘id’, ‘tasty-recipes-tooltip’ );

const currentTooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
if ( currentTooltipElement ) {
document.body.replaceChild( tooltipElement, currentTooltipElement );
} else {
document.body.appendChild( tooltipElement );
}

this.tooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
},
show() {
if ( ! this.tooltipElement ) {
return;
}

const tooltipTop = this.element.getBoundingClientRect().top
+ window.scrollY
– 10 // 10px offset.
– this.tooltipElement.getBoundingClientRect().height;
const tooltipLeft = this.element.getBoundingClientRect().left
– ( this.tooltipElement.getBoundingClientRect().width / 2 )
+ ( this.element.getBoundingClientRect().width / 2 ) – 1;
const posLeft = Math.max( 10, tooltipLeft );
this.maybeRemoveTail( posLeft !== tooltipLeft );

this.tooltipElement.setAttribute( ‘style’, ‘top:’ + tooltipTop + ‘px;left:’ + posLeft + ‘px;’ );
this.tooltipElement.classList.add( ‘opened’ );

},
maybeRemoveTail( removeTail ) {
if ( removeTail ) {
this.tooltipElement.classList.add( ‘tr-hide-tail’ );
} else {
this.tooltipElement.classList.remove( ‘tr-hide-tail’ );
}
},
changeMessage( message ) {
if ( ! this.tooltipElement ) {
return;
}
this.tooltipElement.innerHTML = message;
}
};

window.TastyRecipes.ajax = {
sendPostRequest( url, data, success, failure ) {
const xhr = new XMLHttpRequest();
xhr.open( ‘POST’, url, true );
xhr.send( this.preparePostData( data ) );

xhr.onreadystatechange = () => {
if ( 4 !== xhr.readyState ) {
return;
}
if ( xhr.status === 200 ) {
success( JSON.parse( xhr.responseText ) );
return;
}

failure( xhr );
};

xhr.onerror = () => {
failure( xhr );
};
},
preparePostData( data ) {
const formData = new FormData();

for ( const key in data ) {
formData.append( key, data[key] );
}
return formData;
},
};

window.TastyRecipes.ratings = {
defaultRating: 0,
currentRatingPercentage: 100,
savingRating: false,
init( minRating ) {
this.minRating = minRating;

this.formWatchRating();
this.closeTooltipWhenClickOutside();
this.addBodyClassBasedOnSelectedRating();
this.backwardCompFormRatingPosition();
},
formWatchRating() {
const ratings = document.querySelectorAll(‘.tasty-recipes-no-ratings-buttons [data-rating]’);
if ( ratings.length {
event.preventDefault();
this.defaultRating = event.target.closest( ‘.checked’ ).dataset.rating;
this.setCheckedStar( event.target );
this.maybeSendRating( this.defaultRating, event.target );
this.setRatingInForm( this.defaultRating );
} );
}
},
closeTooltipWhenClickOutside() {
window.addEventListener( ‘click’, e => {
// Bailout (don’t remove the tooltip) when the clicked element is a rating star, or it’s the tooltip itself.
if ( e.target.closest( ‘.tasty-recipes-rating’ ) || e.target.classList.contains( ‘tasty-recipes-static-tooltip’ ) ) {
return;
}

window.TastyRecipes.staticTooltip.destroy();
} );
},
setRatingInForm( rating ) {
const ratingInput = document.querySelector( ‘#respond .tasty-recipes-rating[value=”‘ + rating + ‘”]’ );
if ( ! ratingInput ) {
return;
}
ratingInput.click();
},
addBodyClassBasedOnSelectedRating() {
const ratingInputs = document.querySelectorAll( ‘input.tasty-recipes-rating’ );
if ( ! ratingInputs ) {
return;
}
for ( const ratingInput of ratingInputs ) {
ratingInput.addEventListener( ‘click’, currentEvent => {
const selectedRating = currentEvent.target.getAttribute( ‘value’ );
this.handleBodyClassByRating( selectedRating );
this.toggleCommentTextareaRequired( selectedRating );
} );
}
},
handleBodyClassByRating( rating ) {
if ( rating < this.minRating ) {
document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );
return;
}
document.body.classList.add( 'tasty-recipes-selected-minimum-rating' );
},
toggleCommentTextareaRequired( rating ) {
const commentTextarea = document.getElementById( 'comment' );
if ( ! commentTextarea ) {
return;
}

if ( rating {
window.TastyRecipes.staticTooltip.changeMessage( response.data.message );
window.TastyRecipes.staticTooltip.show();
this.updateAverageText( response.data, recipeCardElement );
this.maybeFillCommentForm( response.data );

// Hide the tooltip after 5 seconds.
setTimeout( () => {
this.maybeResetTooltip( recipeCardElement, response.data, rating );
}, 5000 );
},
() => {
this.resetTooltip( recipeCardElement );
}
);
},
updateAverageText( data, recipeCardElement ) {
if ( ! data.average ) {
return;
}
this.setRatingPercent( data );

if ( ! data.count ) {
return;
}

const quickLink = document.querySelector( ‘.tasty-recipes-rating-link’ );
if ( quickLink ) {
this.setTextInContainer( quickLink, data );
this.setPartialStar( quickLink );
}

const cardStars = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
cardStars.dataset.trDefaultRating = data.average;
this.setTextInContainer( recipeCardElement.querySelector( ‘.tasty-recipes-rating’ ), data );
},
setTextInContainer( container, data ) {
if ( ! container ) {
return;
}

if ( data.label ) {
const ratingLabelElement = container.querySelector( ‘.rating-label’ );
if ( ratingLabelElement ) {
ratingLabelElement.innerHTML = data.label;
}
return;
}

const averageElement = container.querySelector( ‘.average’ );
if ( averageElement ) {
averageElement.textContent = data.average;
}

const countElement = container.querySelector( ‘.count’ );
if ( countElement ) {
countElement.textContent = data.count;
}
},
setPartialStar( container ) {
const highestStar = container.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( highestStar ) {
highestStar.dataset.trClip = this.currentRatingPercentage;
}
},
setRatingPercent( data ) {
this.defaultRating = data.average.toFixed( 1 );
const parts = data.average.toFixed( 2 ).toString().split( ‘.’ );
this.currentRatingPercentage = parts[1] ? parts[1] : 100;
if ( this.currentRatingPercentage === ’00’ ) {
this.currentRatingPercentage = 100;
}
},
setCheckedStar( target ) {
const cardRatingContainer = target.closest( ‘.tasty-recipes-ratings-buttons’ );
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( selectedRatingElement ) {
delete selectedRatingElement.dataset.trChecked;
}

const thisStar = target.closest( ‘.tasty-recipes-rating’ );
thisStar.dataset.trChecked = 1;
thisStar.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = 100;
},
maybeFillCommentForm( data ) {
if ( ! data.comment || ! data.comment.content ) {
return;
}

const commentForm = document.querySelector( ‘#commentform’ );
if ( ! commentForm ) {
return;
}

const commentBox = commentForm.querySelector( ‘[name=comment]’ );
if ( ! commentBox || commentBox.value ) {
return;
}

// Add comment details for editing.
commentBox.innerHTML = data.comment.content;
if ( data.comment.name ) {
commentForm.querySelector( ‘[name=author]’ ).value = data.comment.name;
commentForm.querySelector( ‘[name=email]’ ).value = data.comment.email;
}
},
maybeResetTooltip( recipeCardElement, data, rating ) {
if ( this.savingRating === rating ) {
this.resetTooltip( recipeCardElement, data );
}
},
resetTooltip( recipeCardElement, data ) {
window.TastyRecipes.staticTooltip.destroy();
this.savingRating = false;

// Reset the default rating.
const cardRatingContainer = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
if ( cardRatingContainer ) {
this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;
cardRatingContainer.dataset.trDefaultRating = this.defaultRating;

this.resetSelectedStar( cardRatingContainer, data );
}
},
resetSelectedStar( cardRatingContainer ) {
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( selectedRatingElement ) {
selectedRatingElement.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = this.currentRatingPercentage;
selectedRatingElement.parentNode.dataset.trChecked = 1;
}

const previousSelectedElement= cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( previousSelectedElement ) {
const currentSelectedRating = previousSelectedElement.querySelector(‘[data-rating]’);
if ( currentSelectedRating !== selectedRatingElement ) {
delete previousSelectedElement.dataset.trChecked;
}
}
},
backwardCompFormRatingPosition() {
const ratingsButtons = document.querySelector( ‘#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons’ );
if ( ! ratingsButtons ) {
return;
}
const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);
if ( ! ratingsButtonsStyles.display.includes( ‘flex’ ) ) {
ratingsButtons.style.direction = ‘rtl’;
}

if ( typeof tastyRecipesRating !== ‘undefined’ ) {
// Select the rating that was previously selected in admin.
ratingsButtons.querySelector( ‘.tasty-recipes-rating[value=”‘ + tastyRecipesRating + ‘”]’ ).checked = true;
}

const ratingSpans = ratingsButtons.querySelectorAll( ‘.tasty-recipes-rating’ );
for (const ratingSpan of ratingSpans) {
ratingSpan.addEventListener( ‘click’, event => {
if ( ratingSpan === event.target ) {
return;
}
ratingSpan.previousElementSibling.click();
} );
}
}
};

(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
window.addEventListener( ‘load’, callback );
}
})(() => {
window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );
});

Recipe by Chef Jackie Page
Styling by Anna Franklin
Photography by Dave Bryce

Subscribe to TABLE Magazine’s print edition.

Braised Cabbage and Beans

0
A blue bowl holdsbraised cabbage and beans topped with a lemon slice and accompanied by a fork, spoon, and glass of lemon water.

In our Braised Cabbage and Beans recipe you get a hearty dose of both of these superfoods along with tasty vegetable stock, spicy peppers, and a bit of lemon juice for that tangy zing. It’s a dish that’s simple to prepare and warms the soul during the cold days of winter. The specific type of canned peppers we use are quite spicy. If you’d like something more mild, you can replace them with canned roasted red peppers.

Light up the stove and get a-cookin’, folks. You’ll be glad you did.

What Makes This Cabbage and Beans Recipe so Nutritious? 

While the virtues of cabbage may be obvious (it’s good for you!), beans are another healthy choice to incorporate into your diet. Their antioxidants, fiber, and other nutrients, prevent cell damage, help promote a healthy digestive system, and fight off diseases.

Print

clock clock iconcutlery cutlery iconflag flag iconfolder folder iconinstagram instagram iconpinterest pinterest iconfacebook facebook iconprint print iconsquares squares iconheart heart iconheart solid heart solid icon

A blue bowl holdsbraised cabbage and beans topped with a lemon slice and accompanied by a fork, spoon, and glass of lemon water.

Braised Cabbage and Beans


5 Stars 4 Stars 3 Stars 2 Stars 1 Star


  • Author:
    Anna Franklin

Description

Cabbage and beans make for a warming and comforting winter meal.


Ingredients


Scale

  • 1 cup dried mixed beans
  • 1 head green cabbage
  • 2 tablespoons olive oil
  • 1 medium onion
  • 2 cloves of garlic, minced
  • 2 cups vegetable stock, homemade or store-bought
  • 1/2 jar of Shoe String Peppers
  • 1 lemon, juiced
  • Salt and pepper to taste
  • 1/4 cup freshly chopped parsley for garnish


Instructions

  1. In a bowl, rinse and soak beans for at least 2 hours but preferably overnight.
  2. Cut cabbage into 6 wedges and dice onion.
  3. In a hot dutch oven, add 2 tablespoons of olive oil and add cabbage wedges. Cook until the outsides are crispy and brown. Add onion, garlic, beans and vegetable stock. Simmer for 1-2 hours or until the beans are fully cooked and tender.
  4. Add in the shoe string peppers, the juice of one lemon, salt and pepper to taste. Garnish with fresh parsley and serve.

window.trCommon={“minRating”:6,”ajaxurl”:”https://www.tablemagazine.com/wp-admin/admin-ajax.php”,”ratingNonce”:”70e0d6828f”,”postId”:8272};
window.TastyRecipes = window.TastyRecipes || {};

window.TastyRecipes.smoothScroll = {
init() {
document.addEventListener( ‘click’, ( e ) => {
let anchor = e.target;
if ( anchor.tagName !== ‘A’ ) {
anchor = anchor.closest( ‘a.tasty-recipes-scrollto’ );
}

if ( ! anchor || ! anchor.classList.contains( ‘tasty-recipes-scrollto’ ) ) {
return;
}

const elementHref = anchor.getAttribute( ‘href’ );
if ( ! elementHref ) {
return;
}

e.preventDefault();
this.goToSelector( elementHref );
});
},
goToSelector( selector ) {
const element = document.querySelector( selector );
if ( ! element ) {
return;
}
element.scrollIntoView( { behavior: ‘smooth’ } );
}
};

document.addEventListener(
‘DOMContentLoaded’,
() => window.TastyRecipes.smoothScroll.init()
);

(function(){

var bothEquals = function( d1, d2, D ) {
var ret = 0;
if (d1<=D) {
ret++;
}
if (d2<=D) {
ret++;
}
return ret === 2;
};

var 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+d2d2)d2=D+1;else d1=D+1;break}else if(xD){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-AD){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]};

window.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”));

window.tastyRecipesFormatAmount = function(amount, el) {
if ( parseFloat( amount ) === parseInt( amount ) ) {
return amount;
}
var roundType = ‘frac’;
if (typeof el.dataset.amountShouldRound !== ‘undefined’) {
if (‘false’ !== el.dataset.amountShouldRound) {
if ( ‘number’ === el.dataset.amountShouldRound ) {
roundType = ‘number’;
} else if (‘frac’ === el.dataset.amountShouldRound) {
roundType = ‘frac’;
} else if (‘vulgar’ === el.dataset.amountShouldRound) {
roundType = ‘vulgar’;
} else {
roundType = ‘integer’;
}
}
}
if (‘number’ === roundType) {
amount = Number.parseFloat(amount).toPrecision(2);
} else if (‘integer’ === roundType) {
amount = Math.round(amount);
} else if (‘frac’ === roundType || ‘vulgar’ === roundType) {
var denom = 8;
if (typeof el.dataset.unit !== ‘undefined’) {
var unit = el.dataset.unit;
if ([‘cups’,’cup’,’c’].includes(unit)) {
denom = 4;
if (0.125 === amount) {
denom = 8;
}
if (“0.1667″ === Number.parseFloat( amount ).toPrecision(4)) {
denom = 6;
}
}
if ([‘tablespoons’,’tablespoon’,’tbsp’].includes(unit)) {
denom = 2;
}
if ([‘teaspoons’,’teaspoon’,’tsp’].includes(unit)) {
denom = 8;
}
}
var amountArray = frac.cont( amount, denom, true );
var newAmount = ”;
if ( amountArray[1] !== 0 ) {
newAmount = amountArray[1] + ‘/’ + amountArray[2];
if (‘vulgar’ === roundType) {
Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {
if (newAmount === window.tastyRecipesVulgarFractions[vulgar]) {
newAmount = vulgar;
}
});
}
}
if ( newAmount ) {
newAmount = ‘ ‘ + newAmount;
}
if ( amountArray[0] ) {
newAmount = amountArray[0] + newAmount;
}
amount = newAmount;
}
return amount;
};

window.tastyRecipesUpdatePrintLink = () => {

const printButton = document.querySelector( ‘.tasty-recipes-print-button’ );

if ( ! printButton ) {
return;
}

const printURL = new URL( printButton.href );
const searchParams = new URLSearchParams( printURL.search );

const unitButton = document.querySelector( ‘.tasty-recipes-convert-button-active’ );
const scaleButton = document.querySelector( ‘.tasty-recipes-scale-button-active’ );

let unit = ”;
let scale = ”;

if ( unitButton ) {
unit = unitButton.dataset.unitType;
searchParams.delete(‘unit’);
searchParams.set( ‘unit’, unit );
}

if ( scaleButton ) {
scale = scaleButton.dataset.amount;
searchParams.set( ‘scale’, scale );
}

const paramString = searchParams.toString();
const newURL = ” === paramString ? printURL.href : printURL.origin + printURL.pathname + ‘?’ + paramString;
const printLinks = document.querySelectorAll( ‘.tasty-recipes-print-link’ );

printLinks.forEach( ( el ) => {
el.href = newURL;
});

const printButtons = document.querySelectorAll( ‘.tasty-recipes-print-button’ );
printButtons.forEach( ( el ) => {
el.href = newURL;
});
};

document.addEventListener( ‘DOMContentLoaded’, () => {

if ( ! window.location.href.includes( ‘/print/’ ) ) {
return;
}

const searchParams = new URLSearchParams( window.location.search );

const unit = searchParams.get( ‘unit’ );
const scale = searchParams.get( ‘scale’ );

if ( unit && ( ‘metric’ === unit || ‘usc’ === unit ) ) {
document.querySelector( ‘.tasty-recipes-convert-button[data-unit-type=”‘ + unit + ‘”]’ ).click();
}

if ( scale && Number(scale) > 0 ) {
document.querySelector( ‘.tasty-recipes-scale-button[data-amount=”‘ + Number(scale) + ‘”]’ ).click();
}
});
}());

(function(){
var buttonClass = ‘tasty-recipes-scale-button’,
buttonActiveClass = ‘tasty-recipes-scale-button-active’,
buttons = document.querySelectorAll(‘.tasty-recipes-scale-button’);
if ( ! buttons ) {
return;
}

buttons.forEach(function(button){
button.addEventListener(‘click’, function(event){
event.preventDefault();
var recipe = event.target.closest(‘.tasty-recipes’);
if ( ! recipe ) {
return;
}
var otherButtons = recipe.querySelectorAll(‘.’ + buttonClass);
otherButtons.forEach(function(bt){
bt.classList.remove(buttonActiveClass);
});
button.classList.add(buttonActiveClass);

var scalables = recipe.querySelectorAll(‘span[data-amount]’);
var buttonAmount = parseFloat( button.dataset.amount );
scalables.forEach(function(scalable){
if (typeof scalable.dataset.amountOriginalType === ‘undefined’
&& typeof scalable.dataset.nfOriginal === ‘undefined’) {
if (-1 !== scalable.innerText.indexOf(‘/’)) {
scalable.dataset.amountOriginalType = ‘frac’;
}
if (-1 !== scalable.innerText.indexOf(‘.’)) {
scalable.dataset.amountOriginalType = ‘number’;
}
Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {
if (-1 !== scalable.innerText.indexOf(vulgar)) {
scalable.dataset.amountOriginalType = ‘vulgar’;
}
});
if (typeof scalable.dataset.amountOriginalType !== ‘undefined’) {
scalable.dataset.amountShouldRound = scalable.dataset.amountOriginalType;
}
}
var amount = parseFloat( scalable.dataset.amount ) * buttonAmount;
amount = window.tastyRecipesFormatAmount(amount, scalable);
if ( typeof scalable.dataset.unit !== ‘undefined’ ) {
if ( ! scalable.classList.contains(‘nutrifox-quantity’) ) {
if ( ! scalable.classList.contains(‘nutrifox-second-quantity’) ) {
amount += ‘ ‘ + scalable.dataset.unit;
}
}
}
scalable.innerText = amount;
});

var nonNumerics = recipe.querySelectorAll(‘[data-has-non-numeric-amount]’);
nonNumerics.forEach(function(nonNumeric){
var indicator = nonNumeric.querySelector(‘span[data-non-numeric-label]’);
if ( indicator ) {
nonNumeric.removeChild(indicator);
}
if ( 1 !== buttonAmount ) {
indicator = document.createElement(‘span’);
indicator.setAttribute(‘data-non-numeric-label’, true);
var text = document.createTextNode(‘ (x’ + buttonAmount + ‘)’);
indicator.appendChild(text);
nonNumeric.appendChild(indicator);
}
});

window.tastyRecipesUpdatePrintLink();
});
});
}());

window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.cookMode = {
wakeLockApi: false,
wakeLock: false,
cookModeSelector: ‘.tasty-recipes-cook-mode’,
init() {
if (“wakeLock” in navigator && “request” in navigator.wakeLock) {
this.wakeLockApi = navigator.wakeLock;
}

const cookModes = document.querySelectorAll(this.cookModeSelector);

if (cookModes.length > 0) {
for (const cookMode of cookModes) {
if (this.wakeLockApi) {
cookMode.querySelector(‘input[type=”checkbox”]’).addEventListener(“change”, event => {
this.checkboxChange(event.target);
}, false);
} else {
cookMode.style.display = “none”;
}
}
}
},
checkboxChange(checkbox) {
if (checkbox.checked) {
this.lock();
} else {
this.unlock();
}
},
setCheckboxesState(state) {
const checkboxes = document.querySelectorAll(this.cookModeSelector + ‘ input[type=”checkbox”]’);
for (const checkbox of checkboxes) {
checkbox.checked = state;
}
},
async lock() {
try {
this.wakeLock = await this.wakeLockApi.request(“screen”);
this.wakeLock.addEventListener(“release”, () => {
this.wakeLock = false;
this.setCheckboxesState(false);
});
this.setCheckboxesState(true);
} catch (error) {
this.setCheckboxesState(false);
}
},
unlock() {
if (this.wakeLock) {
this.wakeLock.release();
this.wakeLock = false;
}
this.setCheckboxesState(false);
}
};

(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
document.addEventListener(“DOMContentLoaded”, callback);
}
})(() => {
window.TastyRecipes.cookMode.init();
});

window.TastyRecipes = window.TastyRecipes || {};

window.TastyRecipes.staticTooltip = {
element: null,
tooltipElement: null,
deleting: false,
init( element ) {
if ( this.deleting ) {
return;
}
this.element = element;
this.buildElements();
},
destroy() {
if ( ! this.tooltipElement || this.deleting ) {
return;
}

this.deleting = true;
this.tooltipElement.classList.remove( ‘opened’ );

setTimeout( () => {
this.tooltipElement.remove();
this.deleting = false;
}, 500 );
},
buildElements() {
const tooltipElement = document.createElement( ‘div’ );
tooltipElement.classList.add( ‘tasty-recipes-static-tooltip’);
tooltipElement.setAttribute( ‘id’, ‘tasty-recipes-tooltip’ );

const currentTooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
if ( currentTooltipElement ) {
document.body.replaceChild( tooltipElement, currentTooltipElement );
} else {
document.body.appendChild( tooltipElement );
}

this.tooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
},
show() {
if ( ! this.tooltipElement ) {
return;
}

const tooltipTop = this.element.getBoundingClientRect().top
+ window.scrollY
– 10 // 10px offset.
– this.tooltipElement.getBoundingClientRect().height;
const tooltipLeft = this.element.getBoundingClientRect().left
– ( this.tooltipElement.getBoundingClientRect().width / 2 )
+ ( this.element.getBoundingClientRect().width / 2 ) – 1;
const posLeft = Math.max( 10, tooltipLeft );
this.maybeRemoveTail( posLeft !== tooltipLeft );

this.tooltipElement.setAttribute( ‘style’, ‘top:’ + tooltipTop + ‘px;left:’ + posLeft + ‘px;’ );
this.tooltipElement.classList.add( ‘opened’ );

},
maybeRemoveTail( removeTail ) {
if ( removeTail ) {
this.tooltipElement.classList.add( ‘tr-hide-tail’ );
} else {
this.tooltipElement.classList.remove( ‘tr-hide-tail’ );
}
},
changeMessage( message ) {
if ( ! this.tooltipElement ) {
return;
}
this.tooltipElement.innerHTML = message;
}
};

window.TastyRecipes.ajax = {
sendPostRequest( url, data, success, failure ) {
const xhr = new XMLHttpRequest();
xhr.open( ‘POST’, url, true );
xhr.send( this.preparePostData( data ) );

xhr.onreadystatechange = () => {
if ( 4 !== xhr.readyState ) {
return;
}
if ( xhr.status === 200 ) {
success( JSON.parse( xhr.responseText ) );
return;
}

failure( xhr );
};

xhr.onerror = () => {
failure( xhr );
};
},
preparePostData( data ) {
const formData = new FormData();

for ( const key in data ) {
formData.append( key, data[key] );
}
return formData;
},
};

window.TastyRecipes.ratings = {
defaultRating: 0,
currentRatingPercentage: 100,
savingRating: false,
init( minRating ) {
this.minRating = minRating;

this.formWatchRating();
this.closeTooltipWhenClickOutside();
this.addBodyClassBasedOnSelectedRating();
this.backwardCompFormRatingPosition();
},
formWatchRating() {
const ratings = document.querySelectorAll(‘.tasty-recipes-no-ratings-buttons [data-rating]’);
if ( ratings.length {
event.preventDefault();
this.defaultRating = event.target.closest( ‘.checked’ ).dataset.rating;
this.setCheckedStar( event.target );
this.maybeSendRating( this.defaultRating, event.target );
this.setRatingInForm( this.defaultRating );
} );
}
},
closeTooltipWhenClickOutside() {
window.addEventListener( ‘click’, e => {
// Bailout (don’t remove the tooltip) when the clicked element is a rating star, or it’s the tooltip itself.
if ( e.target.closest( ‘.tasty-recipes-rating’ ) || e.target.classList.contains( ‘tasty-recipes-static-tooltip’ ) ) {
return;
}

window.TastyRecipes.staticTooltip.destroy();
} );
},
setRatingInForm( rating ) {
const ratingInput = document.querySelector( ‘#respond .tasty-recipes-rating[value=”‘ + rating + ‘”]’ );
if ( ! ratingInput ) {
return;
}
ratingInput.click();
},
addBodyClassBasedOnSelectedRating() {
const ratingInputs = document.querySelectorAll( ‘input.tasty-recipes-rating’ );
if ( ! ratingInputs ) {
return;
}
for ( const ratingInput of ratingInputs ) {
ratingInput.addEventListener( ‘click’, currentEvent => {
const selectedRating = currentEvent.target.getAttribute( ‘value’ );
this.handleBodyClassByRating( selectedRating );
this.toggleCommentTextareaRequired( selectedRating );
} );
}
},
handleBodyClassByRating( rating ) {
if ( rating < this.minRating ) {
document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );
return;
}
document.body.classList.add( 'tasty-recipes-selected-minimum-rating' );
},
toggleCommentTextareaRequired( rating ) {
const commentTextarea = document.getElementById( 'comment' );
if ( ! commentTextarea ) {
return;
}

if ( rating {
window.TastyRecipes.staticTooltip.changeMessage( response.data.message );
window.TastyRecipes.staticTooltip.show();
this.updateAverageText( response.data, recipeCardElement );
this.maybeFillCommentForm( response.data );

// Hide the tooltip after 5 seconds.
setTimeout( () => {
this.maybeResetTooltip( recipeCardElement, response.data, rating );
}, 5000 );
},
() => {
this.resetTooltip( recipeCardElement );
}
);
},
updateAverageText( data, recipeCardElement ) {
if ( ! data.average ) {
return;
}
this.setRatingPercent( data );

if ( ! data.count ) {
return;
}

const quickLink = document.querySelector( ‘.tasty-recipes-rating-link’ );
if ( quickLink ) {
this.setTextInContainer( quickLink, data );
this.setPartialStar( quickLink );
}

const cardStars = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
cardStars.dataset.trDefaultRating = data.average;
this.setTextInContainer( recipeCardElement.querySelector( ‘.tasty-recipes-rating’ ), data );
},
setTextInContainer( container, data ) {
if ( ! container ) {
return;
}

if ( data.label ) {
const ratingLabelElement = container.querySelector( ‘.rating-label’ );
if ( ratingLabelElement ) {
ratingLabelElement.innerHTML = data.label;
}
return;
}

const averageElement = container.querySelector( ‘.average’ );
if ( averageElement ) {
averageElement.textContent = data.average;
}

const countElement = container.querySelector( ‘.count’ );
if ( countElement ) {
countElement.textContent = data.count;
}
},
setPartialStar( container ) {
const highestStar = container.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( highestStar ) {
highestStar.dataset.trClip = this.currentRatingPercentage;
}
},
setRatingPercent( data ) {
this.defaultRating = data.average.toFixed( 1 );
const parts = data.average.toFixed( 2 ).toString().split( ‘.’ );
this.currentRatingPercentage = parts[1] ? parts[1] : 100;
if ( this.currentRatingPercentage === ’00’ ) {
this.currentRatingPercentage = 100;
}
},
setCheckedStar( target ) {
const cardRatingContainer = target.closest( ‘.tasty-recipes-ratings-buttons’ );
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( selectedRatingElement ) {
delete selectedRatingElement.dataset.trChecked;
}

const thisStar = target.closest( ‘.tasty-recipes-rating’ );
thisStar.dataset.trChecked = 1;
thisStar.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = 100;
},
maybeFillCommentForm( data ) {
if ( ! data.comment || ! data.comment.content ) {
return;
}

const commentForm = document.querySelector( ‘#commentform’ );
if ( ! commentForm ) {
return;
}

const commentBox = commentForm.querySelector( ‘[name=comment]’ );
if ( ! commentBox || commentBox.value ) {
return;
}

// Add comment details for editing.
commentBox.innerHTML = data.comment.content;
if ( data.comment.name ) {
commentForm.querySelector( ‘[name=author]’ ).value = data.comment.name;
commentForm.querySelector( ‘[name=email]’ ).value = data.comment.email;
}
},
maybeResetTooltip( recipeCardElement, data, rating ) {
if ( this.savingRating === rating ) {
this.resetTooltip( recipeCardElement, data );
}
},
resetTooltip( recipeCardElement, data ) {
window.TastyRecipes.staticTooltip.destroy();
this.savingRating = false;

// Reset the default rating.
const cardRatingContainer = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
if ( cardRatingContainer ) {
this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;
cardRatingContainer.dataset.trDefaultRating = this.defaultRating;

this.resetSelectedStar( cardRatingContainer, data );
}
},
resetSelectedStar( cardRatingContainer ) {
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( selectedRatingElement ) {
selectedRatingElement.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = this.currentRatingPercentage;
selectedRatingElement.parentNode.dataset.trChecked = 1;
}

const previousSelectedElement= cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( previousSelectedElement ) {
const currentSelectedRating = previousSelectedElement.querySelector(‘[data-rating]’);
if ( currentSelectedRating !== selectedRatingElement ) {
delete previousSelectedElement.dataset.trChecked;
}
}
},
backwardCompFormRatingPosition() {
const ratingsButtons = document.querySelector( ‘#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons’ );
if ( ! ratingsButtons ) {
return;
}
const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);
if ( ! ratingsButtonsStyles.display.includes( ‘flex’ ) ) {
ratingsButtons.style.direction = ‘rtl’;
}

if ( typeof tastyRecipesRating !== ‘undefined’ ) {
// Select the rating that was previously selected in admin.
ratingsButtons.querySelector( ‘.tasty-recipes-rating[value=”‘ + tastyRecipesRating + ‘”]’ ).checked = true;
}

const ratingSpans = ratingsButtons.querySelectorAll( ‘.tasty-recipes-rating’ );
for (const ratingSpan of ratingSpans) {
ratingSpan.addEventListener( ‘click’, event => {
if ( ratingSpan === event.target ) {
return;
}
ratingSpan.previousElementSibling.click();
} );
}
}
};

(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
window.addEventListener( ‘load’, callback );
}
})(() => {
window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );
});

Recipe and Styling by Anna Franklin
Photography by Dave Bryce

Subscribe to TABLE Magazine‘s print edition.

Quinoa Nourish Bowl

0
A Quinoa Bowl filled with egg, avocado, kale, and more on a green plate beside a drink, chili oil, and a spoon and knife.

The whole-grain source of quinoa leaves it with a high fiber content, making it the perfect base for a nourishment bowl. It helps lower cholesterol, steady blood pressure, and even promotes a healthy digestive system. Contributor Anna Franklin magnifies these wellness elements with the addition of lacinato kale, greek yogurt, and avocado in her Quinoa Nourish Bowl. All these yummy ingredients come together mixed with savory red onion, protein-filled egg, and a bit of chili oil for maximum flavor and bodily happiness.

Quinoa Nourish Bowl Recipe

(Makes 1 bowl)

INGREDIENTS

3 leaves lacinato kale, chopped from Clarion River Organics
1/4 red onion, sliced from Who Cooks For You Farm
1/2 cup quinoa, cooked by package directions
1 egg
1/4 cup greek yogurt
1/2 avocado, sliced
Salt and pepper to taste
Drizzle of chili oil for garnish

INSTRUCTIONS

  1. In a skillet cook chopped kale and onion with a drizzle of olive oil and salt and pepper.
  2. Poach or fry egg, keeping the yolk runny.
  3. Place cooked veggies, egg, yogurt, sliced avocado and chili oil on top of cooked quinoa and enjoy!

Try our Winter Power Bowl for another wellness recipe!

 Recipe and Styling by Anna Franklin / Photography by Dave Bryce

A footer photo with a black background and subscribe info and button

Subscribe to TABLE Magazine‘s print edition.

Winter Farmer’s Market Must-Haves

0
A bunch of fresh vegetables like carrots and lettuce sit on a table alongside fresh mushrooms to show winter farmer's market must-haves.

Summer may steal the show but Winter has her fair share of must-haves at the Santa Fe Farmer’s Market. Post-holiday fatigue calls for something simple – anything green, simply steamed or sautéed, with a lick of olive oil, and a sprinkle of salt and pepper. The Market joyously delivers with a surprising abundance of fresh produce.

Bunches of rainbow chard that look like leafy poesies…bags of giant, dark green-leafed spinach that assure you that the indulgences of the holidays are but a distant memory…rainbow radishes with their hot pink interior. And orange and purple carrots – short and intensely sweet – that only want a gentle roast in the oven. 

Handfuls of lions mane, shitake, and blue oyster mushrooms from Santa Fe Mountain Mushrooms and the menu was complete. (They also do a killer mushroom soup to slurp in the comfort of your own home). 

Here are some winter recipe ideas for your farmer’s market must-haves:

Pan-Roasted Carrots with Tahini Sauce

Roasted Wild Mushrooms and Potatoes with Chimichurri

Roasted Salmon with Sautéed Spinach and Zucchini & Dill Relish

And we like the look of Donna Hay’s Swiss Chard Rolls, too!

Story and Photography by Julia Platt Leonard 

A footer photo with a grey and white marble background, three TABLE Magazines and subscribe info and button

Subscribe to TABLE Magazine’s print edition.

The Magic of the Bread Shop in Santa Fe

0
A loaf of sourdough bread sits next to a baguette and muffin on top of a towel as products from Bread Shop in Santa Fe.

We like a place that says what it is and does what it says. A perfect example? Bread Shop located on ultra-hip Lena Street in Santa Fe. Bread Shop makes – surprise, surprise – real-deal sourdough breads. Snap up a Boule – their whole wheat country loaf with the perfect crust and airy interior – a Seedy Rye, Cherry Poppy, or a Baguette made from spelt flour.

But bread is just the tip of the bakery. We’d sell our not-so-distant cousin for a slice of their Citrus Olive Oil Cake, Hazelnut Brownie made with Colombian dark chocolate and toasted hazelnuts, or Breakfast Cake with a magical mix of millet, pecans and golden raisins. Midday, grab a sandwich that starts off with their own focaccia then adds the likes of roasted cauliflower, a healthy dollop of hazelnut romesco, some manchego, and a handful of peppery arugula.

The space also doubles as a food shop selling gourmet provisions for the hungry of the eye and stomach, like pasta, sea salt, extra virgin olive oils, plus covetable wooden cutting boards and linen towels. 

While man may not live by bread alone, he just might live by Bread Shop.

Story and Photography by Julia Platt Leonard

A footer photo with a black background and subscribe info and button

Subscribe to TABLE Magazine‘s print edition.

4 Cocktail Recipes from New Mexico’s Gruet Winery

0
NM Mélangé: Four colorful and refreshing cocktails inspired by Gruet Winery's sparkling wines

New Mexico is a remarkable gathering of visionaries, and it’s our great fortune that Gruet Winery & Tasting Room has chosen to call it home. The winery was established in 1984 and is renowned for its méthode champenoise or méthode traditional sparkling wines, made with traditional French methods. Gruet produces several sparkling wines, primarily Pinot noir- and Chardonnay-based, making it ideal for blending into inventive cocktails. The Gruet Demi Sec for example is fresh and delicate on the palate with delightful peach notes. Its apple finish is earthy, crisp, and slightly sweet. Perfect for summer picnics in the garden, or for a Bleeding Heart cocktail (recipe found below).

Daniel Gutierrez, tasting room manager for Gruet Winery Santa Fe, and bartender Noemi Leon worked together previously at Hotel Chaco. During this time, they discovered that they shared similar flavor profiles and perspectives when it came to crafting cocktails and pairing them with food: a collaboration was born.

Daniel Gutierrez, tasting room manager for Gruet Winery Santa Fe, and bartender Noemi Leon

The two aimed to showcase for TABLE readers the rich flavors of Gruet’s wines, which can be enjoyed on their own or paired with other ingredients for increased versatility year-round. To enhance the brioche and fruit notes already present in Gruet’s sparkling wines, the team introduced herbs into the mix. Inspired by her Hispanic heritage, Noemi added tea to provide a comforting touch. Seasonality played a key role in the creation of the cocktails, with ginger or pear infused for cozy indoor days and lemon sorbet to refresh the palate on hot days. Finally, a delicious and herbaceous cocktail serves as the perfect finale to a meal during a monsoon rain.

Bleeding Heart cocktail with grapefruit twist and red Gerbera petals garnish

Bleeding Heart Recipe

INGREDIENTS

Edible shimmer glitter
¾ oz grapefruit juice
1 oz Campari
1 ½ oz blood orange soda
Splash of soda water
5 oz Gruet Demi Sec
Long grapefruit twist for garnish
Red gerbera petals for garnish

INSTRUCTIONS

  1. Quickly combine the shimmer, grapefruit juice, and Campari in a shaker. Fine-strain the liquid into a bar pitcher and pour in the sodas.
  2. Then pour the mixture into a glass and top with the Gruet Demi Sec.
  3. Stir lightly, add ice, garnish with a long grapefruit twist and red Gerbera petals and enjoy.

Rainy Day Bubbles cocktail with lemon twist and thyme bundle garnish

Rainy Day Bubbles Recipe

INGREDIENTS

½ oz honey simple syrup
3-4 fresh thyme sprigs
½ oz fresh lemon juice
¾ oz honey liqueur
1 ½ oz pear juice
4 oz Gruet Brut
Long spiral lemon twist for garnish

INSTRUCTIONS

  1. In a cocktail shaker, add honey simple syrup, and fresh thyme. Muddle, then add lemon, honey liqueur, pear juice, and shake.
  2. Fine-strain into a champagne flute and top with Gruet Brut — stir lightly.
  3. Garnish with a long spiral lemon twist and a clipped thyme bundle.

Secret in the Garden cocktail with lemon sorbet and lavender garnish

Secret in the Garden Recipe

INGREDIENTS

½ oz lavender simple syrup
1 ½ oz Earl Grey tea
1 large scoop of lemon sorbet
Ice
3 oz Gruet Blanc de Noir
Lavender sprigs and petal float for garnish

INSTRUCTIONS

  1. In a cocktail shaker, combine lavender simple syrup, Earl Grey tea, and a large scoop of lemon sorbet.
  2. Add ice, shake, then strain into serving pitcher.
  3. Add the Gruet Blanc de Noir, stir lightly, and pour into a coupe glass. Garnish with lavender springs and petal float.

Papillon Royale cocktail with butterfly pea blossom extract and mint garnish

Papillon Royale Recipe

INGREDIENTS

4 mint leaves
¾ oz fresh lemon juice
1 oz ginger liqueur
3-4 drops of butterfly pea blossom extract
Ice
5 oz Gruet Deux sparkling wine
Edible butterfly toppers sugared to the glass for garnish

INSTRUCTIONS

  1. In a cocktail shaker, add the mint and dry-muddle.
  2. Add lemon juice, ginger liqueur, butterfly pea blossom, and ice. Shake. Strain into a champagne flute.
  3. op with Gruet Deux, stir lightly, and garnish with edible butterfly toppers sugared to the glass.

Story by Gabe Gomez / Photography by Gabriella Marks / Styling by Alex Hanna

A footer photo with a grey and white marble background, three TABLE Magazines and subscribe info and button

Subscribe to TABLE Magazine‘s print edition.

Crispy Butter Beans with Whipped Chevre

0
Crispy Butter Beans with Whipped Chèvre - a delectable side dish featuring Goat Rodeo’s fresh chèvre cheese

If your holiday meal includes ham, look no further for a simple but delicious side dish to add to the sideboard. This recipe is also a great addition to game-day snacks to be enjoyed with a cold beer. Quickly toss drained and dried beans in a mixture of cornstarch and seasonings and bake till crisp. The whipped chèvre brings in the naturally lemony notes of Goat Rodeo’s fresh chèvre cheese, as well as its delectable creaminess. You will be making this more than once, we promise.

Crispy Butter Beans with Whipped Chèvre Recipe

INGREDIENTS

For the beans:

2 cans butter beans
2 tbsp cornstarch
1 tsp paprika
2 tbsp olive oil
2 tbsp herbs, chopped (try thyme and rosemary, but any herbs work)
1 tsp onion powder
1 tsp garlic powder
Salt and pepper to taste

For the whipped chèvre:

4 – 6 oz Fresh chèvre cheese
1/4 cup Greek yogurt
1 tbsp olive oil
Paprika and black pepper to taste

INSTRUCTIONS

For the beans:

  1. Rinse and drain both cans of beans. Pat them dry making sure there is no excess liquid.
  2. Toss the beans in a bowl with cornstarch, herbs, and seasonings. Place on a parchment-lined baking sheet in an even layer.
  3. Drizzle with olive oil and bake at 400 degrees until the outer layer of the beans are brown and crunchy. Garnish with more freshly chopped herbs and serve with whipped feta dip.

For the whipped chèvre:

  1. In a food processor whip the chèvre and Greek yogurt until you get a smooth consistency.
  2. Add extra chèvre if it needs thickening. Drizzle with olive oil and sprinkle with paprika and black pepper.

Story by Keith Recker / Recipe and Styling by Anna Franklin / Photography by Dave Bryce / With Support From Buy Fresh Buy Local Western PA

A footer photo with a black background and subscribe info and button

Subscribe to TABLE Magazine‘s print edition.

Related News

Create a free account, or log in.

Gain access to read this article, plus limited free content.

Yes! I would like to receive new content and updates.