Home Blog Page 242

St. Patrick’s Day Punch Shamrock Shake

0
green punch
St. Patrick's Day green punch

Celebrate St. Patrick’s Day with Acacia’s St. Patrick’s Day Punch. This year, I decided to take my St. Patrick’s Day celebrations out of the drive-through and into the bar, thanks to Acacia</a>.

<h3>What is a Shamrock Shake? 

Shamrock Shakes, McDonald’s version of a mint milkshake, are a St. Patrick’s Day tradition in my household. An image of the almost sickeningly vibrant green shake makes an appearance on the family group chat at least once during the season. Trust me, one is all you need.

This year, I decided to take my St. Patrick’s Day celebrations out of the drive-through and into the bar, thanks to Acacia. Thecocktail bar provided TABLE with the recipe to their signature green punch, a much tastier alternative to the Shamrock Shake. Yes, the punch is still green, but the Irish whiskey packs a punch the shake just can’t replicate.

ST. PATRICK’S DAY PUNCH

INGREDIENTS

Irish Whiskey (This year, Acacia is featuring Slane Irish Whiskey.)
White Creme de Cacao
Green Creme de Menthe
Heavy cream

INSTRUCTIONS

ass=””>STORY BY MAGGIE WEAVER / PHOTOGRAPHY BY LAURA PETRILLA

Ritual House: A Love Letter To Pittsburgh

0

A brand-new, modern American eatery brings style and whimsy to a light-filled corner in downtown’s historic Union Trust Building. The much-anticipated restaurant was created by Pittsburgh natives Herky and Lisa Pollock. With globally-inspired design elements, and a menu that features reimagined takes on familiar favorites, a refreshing air of playfulness dominates the venue’s airy spaces — and memorable dishes, too.

Ritual House: A Love Letter To Pittsburgh

colorful fruity pebbles cover four slices of French toast on a white plate

Entering from William Penn Place, guests find a cluster of nest chairs dangling from the ceiling beneath faux wisteria. Here, they can sip a cocktail (with smile-inducing names like “Pittsburgh Shines Again”) before moving onto the main event. A middle section showcases dining tables and modern, geometric light fixtures. In the central bar, visitors cozy into sleek booths or belly up to the rail below 18 grand chandeliers. On the walls, cheeky monkeys tucking into bottles of booze set a festive tone. Expansive windows in this soaring space peer out onto the Omni William Penn Hotel, while the panes themselves reveal moon-cycle artwork that speak to the venue’s desire to become a part of residents’ everyday lives.

a sliced new york strip steak with green chimichurri on a black plate

Brunch delights include fluffy stacks of lemon meringue pancakes, pineapple upside-down pancakes and Fruity Pebbles French toast, plus savory options like fried chicken sliders with blueberry jalapeño jam. While lighter lunch and dinner offerings range from salads to seafood creations (don’t miss the crudo or triple-stacked salmon club), Pittsburgh natives will get a kick out of spins on regional classics. Take for example, the elevated version of chipped chopped ham barbecue, or the Turkey Devonshire featuring four pieces of candied pepper bacon hanging from clips above the hearty dish. And for the ultimate spectacle to bring instant joy? Order the seven-layer cake that comes with a poof of cotton candy and some sparkler flair.

colorful margarita cocktail made garnished with a purple flower

Story by Corinne Whiting
Photography by Adam Milliron

Subscribe to TABLE Magazine’s print edition.

Citrus Curd Cups

0
lemon lime and grapefruit curd dessert
A tasty citrus curd layered dessert lightens gloomy winter days.

Citrus Curd Cups are a refreshing way to incorporate bright flavors into your dessert. TABLE Magazine Contributing Editor Anna Franklin rounds up some of the tastiest winter citrus and creates a deliciously tart layered dessert to lighten the gloomy season.

Zest vs. Juice of a Citrus Fruit: Which is Better for a Citrus Dessert? 

In the winter months, not a lot ripens. For these citrus curd cups, you’re taking advantage of the fact that one thing does: citrus fruits. You can pick yourself which one you want to use in the recipe, but the image uses orange, lime, and cranberry. Whichever citrus you use, the recipe deploys a combination of zest and juice of a citrus, but what’s the difference? While both zest and juice come from citrus fruits, zest comes from out when you grate the colorful portion of the fruit’s rind. Richly flavored oils reside in the citrus zest. Juice is the liquid inside the fruit, and it provides both flavor and acidity, and a sizable percentage of water. For desserts, zest is more of a flavor driver than juice, as its strength and tang dances a beautiful dance with sugars and other typical dessert ingredients. Think of it this way: Lemon zest flavor dissolves in fat, and lemon juice dissolves in water. Lemon zest is aroma, lemon juice is flavor. 

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

lemon lime and grapefruit curd dessert

Citrus Curd Cups


5 Stars 4 Stars 3 Stars 2 Stars 1 Star


  • Author:
    Anna Franklin

Description

A balance of zesty and sweet.


Ingredients


Scale

  • ½ cup sugar
  • 1½ tbsp of cornstarch
  • 4 large egg yolks
  • 2 tsp of citrus zest (lemon, lime, grapefruit or another citrus of your choice)
  • 6 tbsp of freshly squeezed citrus juice (lemon, lime, grapefruit)
  • 3 tbsp of unsalted butter at room temperature
  • ½ tsp sea salt


Instructions

  1. In a small saucepan whisk together the sugar and cornstarch
  2. Place on medium heat and add your yolks, citrus zest, citrus juice, butter, and salt and whisk continuously until thickened. Do not be tempted to increase the heat. Keep it to medium and just keep whisking. Increasing the heat with scald or cook the yolks and your curd will tasty eggy, so just be patient!
  3. Press plastic wrap directly on the surface of the curd to prevent skin from forming and refrigerate until needed.
  4. Once cool, pipe into serving dishes and garnish with crumbled shortbread cookies.

window.trCommon={“minRating”:6,”ajaxurl”:”https://www.tablemagazine.com/wp-admin/admin-ajax.php”,”ratingNonce”:”9f56e5f014″,”postId”:2347};
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.

Gambas al Ajillo (Garlic Shrimp)

0
Gambas al Ajillo will anchor your tapas repertoire.

Small plates may be all the current sharable rage, but they have a long and rich history across the pond in bars, eateries, and otherwise causal digs, meant to compliment the peckish day drinker. This classic Spanish tapas dish is of the hot variety and ubiquitous as Patatas Bravas. Compliment with artisanal bread to soak up the goodness and a crispy Albariño to round the profiles into perfect bites.

Gambas Al Ajillo (Garlic Shrimp)

Ingredients

  • 2 pounds large fresh shrimp with tails in shells

  • 8 cloves of garlic, minced

  • 1/3 cup of Spanish sherry

  • 1 cup extra virgin olive oil

  • 1 dried chile guajillo, chopped

  • 1 large bunch of parsley, minced

  • I large lemon, juice and zest

  • Kosher salt

Directions

  • Peel and de-vain shrimp, set aside

  • Add shells to a pan with olive oil, half the garlic, sherry, chile guajillo, lemon juice, and zest.

  • Over low heat, cover and occasionally stir for 10 minutes

  • Add the remaining oil and garlic to a fresh pan on medium-low heat. After two minutes, strain the shrimp stock into the pan and stir

  • Add shrimp and cook until the shrimp turns light pink. Add parsley. Remove from heat. Do not overcook shrimp. Serve immediately.

Recipe by Gabe Gomez / Photography by Pim Myten

 

Small plates may be all the current sharable rage, but they have a long and rich history across the pond in bars, eateries, and otherwise causal digs, meant to compliment the peckish day drinker. This classic Spanish tapas dish is of the hot variety and ubiquitous as Patatas Bravas. Compliment with artisanal bread to soak up the goodness and a crispy Albariño to round the profiles into perfect bites.

 

Try some of TABLE’s other recipes:

Beef Wellington with Crosshatched Potatoes & Roasted Carrots

Braised Beef Short Ribs with Cheddar Cheese Grits

Salmon with Saffron Risotto & Asparagus

Colossal Blackened Shrimp with Alfredo Sauce

Ravioli with Sautéed Veggies & Scallops

Don’t miss a single delicious thing:

Subscribe to TABLE Magazine here!

Ravioli with Sautéed Veggies & Scallops

0
Ravioli, vegetables, and scallops make an exciting weeknight trio.

Chef Jackie Page, TABLE contributor, friend, and chef-owner of Jackie Kennedy Catering creates dishes full of heart and soul. It is no wonder she has become one of Pittsburgh’s sought-after culinary experts.

RAVIOLI WITH SAUTÉED VEGGIES & SCALLOPS RECIPE

INGREDIENTS

1/8 cup olive oil

6-8 scallops

16 oz package ravioli, your choice

1 package of fresh spinach

1 jar marinated artichoke hearts

1/4 cup sun-dried tomatoes

Salt and pepper to taste

INSTRUCTIONS

  1. Bring a skillet up to high heat and add a little bit of the olive oil.

  2. Sear scallops on both sides. Do not try to move the scallops until they release some liquid, since that’s how you’ll know that side is done, and you can move them without tearing them.

  3. Following directions on the package, boil the ravioli and drain.

  4. In a skillet with the remaining olive oil, add spinach, artichoke hearts, and sun-dried tomatoes. Sauté until spinach is wilted. Add ravioli and carefully toss.

RECIPE BY JACKIE PAGE / STYLING BY ANNA CALABRESE / PHOTOGRAPHY BY DAVE BRYCE

Try some of TABLE’s other recipes:

Beef Wellington with Crosshatched Potatoes & Roasted Carrots

Braised Beef Short Ribs with Cheddar Cheese Grits

Salmon with Saffron Risotto & Asparagus

Colossal Blackened Shrimp with Alfredo Sauce

Jumbo Lump Crab Cakes with Potatoes, Tomatoes & Peas

Don’t miss a single delicious thing:

Subscribe to TABLE Magazine here!

Salmon with Saffron Risotto & Asparagus

0
A filet of tender, flaky salmon over creamy saffron risotto.

Chef Jackie Page, TABLE contributor, friend, and chef-owner of Jackie Kennedy Catering creates dishes full of heart and soul. It is no wonder she has become one of Pittsburgh’s sought-after culinary experts.

SALMON WITH SAFFRON RISOTTO & ASPARAGUS RECIPE

INGREDIENTS

2 salmon filets

1 tbsp of salmon seasoning

Black pepper

3 tbsp olive oil

1 bunch asparagus

Salt and pepper

1 lemon peel, grated

Fresh squeezed lemon

1 cup arborio rice

1/4 cup white wine

A pinch of saffron

1 chopped shallot

32 oz hot chicken broth

2 oz butter

INSTRUCTIONS

  1. Season 2 salmon filets with salmon seasoning and black pepper, drizzle with olive oil, and bake at 375 degrees for 8 minutes.

  2. On a baking sheet, add asparagus, olive oil, salt and pepper, grated lemon peel and lemon juice, and bake in oven with the salmon for about 8 minutes.

  3. In a saucepan, add 3 tablespoons of olive oil and sauté the shallot until softened. Add the arborio rice and sauté until oil coats the rice.

  4. Add white wine, saffron and stir.

  5. Begin adding the hot chicken broth 1/2 cup at a time, stirring continuously. Continue adding more broth has it cooks into the rice. This procedure will take about 20 minutes. You should have a beautiful color.

  6. Add some salt, pepper, and butter after turning off the heat. Serve with the salmon.

RECIPE BY JACKIE PAGE / STYLING BY ANNA CALABRESE / PHOTOGRAPHY BY DAVE BRYCE

Try some of TABLE’s other recipes:

Beef Wellington with Crosshatched Potatoes & Roasted Carrots

Braised Beef Short Ribs with Cheddar Cheese Grits

Colossal Blackened Shrimp with Alfredo Sauce

Ravioli with Sautéed Veggies & Scallops

Jumbo Lump Crab Cakes with Potatoes, Tomatoes & Peas

Don’t miss a single delicious thing:

Subscribe to TABLE Magazine here!

Colossal Blackened Shrimp with Alfredo Sauce

0
Chef Jackie Page’s spicy take on classic shrimp in Alfredo sauce.

Chef Jackie Page, TABLE contributor, friend, and chef-owner of Jackie Kennedy Catering creates dishes full of heart and soul. It is no wonder she has become one of Pittsburgh’s sought-after culinary experts.

COLOSSAL BLACKENED SHRIMP WITH ALFREDO SAUCE RECIPE

INGREDIENTS

6 colossal shrimp peeled, deveined, tail on

1 tbsp blackened seasoning

2 tbsp olive oil

8 oz pasta of choice

1/2 cup milk

2 tbsp butter

1/2 cup Parmesan cheese

Fresh basil for garnish

INSTRUCTIONS

  1. Season shrimp with blackened seasoning and sauté in a pan until done. Do not overcook: they will probably take around 5 minutes total to cook.

  2. Boil pasta until al dente and drain. Place in a sauté pan.

  3. Add milk and butter and bring to a slight simmer. Add Parmesan cheese and stir until incorporated. Toss pasta with the sauce.

RECIPE BY JACKIE PAGE / STYLING BY ANNA CALABRESE / PHOTOGRAPHY BY DAVE BRYCE

Try some of TABLE’s other recipes:

Beef Wellington with Crosshatched Potatoes & Roasted Carrots

Braised Beef Short Ribs with Cheddar Cheese Grits

Salmon with Saffron Risotto & Asparagus

Ravioli with Sautéed Veggies & Scallops

Jumbo Lump Crab Cakes with Potatoes, Tomatoes & Peas

Don’t miss a single delicious thing:

Subscribe to TABLE Magazine here!

Arugula Salad with Confit Tomatoes & Peppers

0
A dish is so substantial, you will forget you’re eating salad for supper.

The richness of peppers and tomatoes roasted in olive oil is brightened beautifully with fresh greens and a big spoonful of lentils tossed in a tangy balsamic dressing. This arugula salad dish is so substantial that you will forget you’re eating salad for supper. Recipe by Selena Orkwis of Nurture Pittsburgh.

Health Benefits of Arugula Salad 

Arugula is low in calories but high in vitamins A, C, and K, as well as folate and calcium. The high vitamin K content is important for bone health, aiding in calcium absorption and bone mineralization. Combined with the lentils, this makes for a high-protein and nutrient-rich meal that will fill up your stomach and leave you feeling satisfied and happy.

Romaine Arugula Salad with Confit Tomatoes & Peppers, Balsamic Vinaigrette, & French Lentils Recipe

Ingredients

  • 1 pint of cherry tomatoes
  • ½ lb mini peppers
  • 1 sprig rosemary
  • Extra-virgin olive oil, to cover
  • ⅓ cup balsamic vinegar
  • 1 teaspoon Dijon mustard
  • 1 teaspoon honey or sugar
  • 1 teaspoon kosher salt
  • ⅓ cup avocado oil
  • ⅓ cup extra-virgin olive oil
  • 1 cup French (Puy) lentils
  • Romaine hearts
  • Arugula

Instructions

  1. To confit tomatoes and peppers: Place the tomatoes and peppers in a 12-inch cast-iron or other oven-safe pan. Tuck in the sprig of rosemary and pour in EVOO to cover. Roast at 300 degrees for about 25 minutes.
  2. For the vinaigrette: Combine balsamic vinegar, Dijon, honey, and salt in a bowl or blender. Add the oils, whisking briskly or blending.
  3. For the lentils: Place French lentils in a pot and add 2 cups of water. Bring to a boil and simmer for 20 minutes until tender. Drain and toss with ¼ cup of the vinaigrette.
  4. Slice the romaine hearts into 1-inch ribbons. Toss with arugula. Top with lentils, confit tomatoes and peppers, and a drizzle of the dressing.

More From Selena Orkwis

Recipe and Stylng by Selena Orkwis / Photography by Dave Bryce  

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

Subscribe to TABLE Magazine’s print edition

Roasted Sweet Potato Burrito Bowl

0
A healthy and delicious burrito bowl full of the flavors you love.

Selena Orkwis of Nurture Pittsburgh shares some meatless alternatives with TABLE readers. What is it about cumin and lime that piques the taste buds into bliss? These flavors, along with chili, onion, garlic, queso fresco, and cilantro elevate the simple sweetness of brown rice and roasted sweet potato into a delicious meal. And a healthy one, too!

ROASTED SWEET POTATO BURRITO BOWL RECIPE

Makes 4 servings

INGREDIENTS

1 large sweet potato, about 1 lb

¼ cup + 1 tbsp avocado oil

1 tsp chili powder

1 tsp ground cumin

½ tsp granulated garlic

1 ½ tsp kosher salt

1 medium Spanish onion

2 cups medium grain brown rice

1 can black beans, drained and rinsed

1 lime

Queso fresco or Greek yogurt

Cilantro

Toasted pumpkin seeds

INSTRUCTIONS

  1. Peel and cubed the sweet potato in ½-inch cubes.

  2. Toss with ¼ cup avocado oil, ½ tsp each chili powder, cumin, granulated garlic, and salt and roast 20 minutes at 350 degrees, until browned and tender.

  3. Slice the onion and combine with 1 tablespoon avocado oil and ½ teaspoon salt.

  4. Rinse the rice and add to an Instant Pot with 2 cups water, ½ tsp chili powder, ½ tsp cumin and ½ tsp salt. Cook at high pressure for 24 minutes, and let pressure release naturally for 5 minutes.

  5. To cook on the stovetop, rinse rice and bring 4 cups of water to a boil. Turn down to a low simmer and add rice, chili powder, cumin, and salt. Cook for 30 minutes covered, then turn off the heat and let rice sit for 10 minutes before fluffing and proceeding with the recipe.

  6. To assemble bowls, layer cooked rice, black beans, sweet potato and onion. Squeeze lime juice over top and serve with any combination of crumbled queso fresco, Greek yogurt, cilantro leaves, or toasted pumpkin seeds.

RECIPE AND STYLING BY SELENA ORKWIS / PHOTOGRAPHY BY DAVE BRYCE

Try some of Selena Orkwis’ other delicious recipes:

Crispy Cauliflower Tacos

Romaine Arugula Salad with Confit Tomato & Peppers, Balsamic Vinaigrette& French Lentils

Kedgeree

Butternut Coconut Soup with Roasted Chickpeas and Pepitas

Don’t miss a single delicious thing:

Subscribe to TABLE Magazine here!

Crispy Cauliflower Tacos

0
Meatless tacos for when you’re taking a break from your carnivorous habits with these Crispy Cauliflower Tacos.

These Crispy Cauliflower Tacos are one way of taking a Meatless Monday break from overly carnivorous habits. Taking that break is good for the body and good for the planet. Nurture Pittsburgh’s Selena Orkwis suggests this recipe for Mondays or any other day of the week where you’re looking to feel lighter and to lighten your eco footprint.

Crispy Cauliflower Tacos Recipe

INGREDIENTS

1 large cauliflower head
½ tsp chili powder
¼ tsp granulated garlic
¼ tsp cumin powder
½ tsp kosher salt
1 1/2 cups non-dairy milk
2 cups panko crumbs
1 can black beans, drained, rinsed, and combined with 1 tbsp fresh lime juice, ½ tsp chili powder, ¼ tsp kosher salt
Corn tortillas, lime wedges, and pineapple salsa to serve

FOR THE PINEAPPLE SALSA:

½ fresh pineapple, cored, peeled and chopped (can substitute 1 14-oz can pineapple rings in juice, chopped)
2 Fresno peppers, chopped
½ red onion
½ pt cherry tomatoes, cut in half
1 tbsp cilantro leaves, chopped
1 lime, juiced
¼ tsp salt

INSTRUCTIONS

  1. Cut the cauliflower into florets.

  2. Mix the spices into the plant milk in a shallow container.

  3. Pour the panko into another shallow container. Keeping one hand wet and the other dry, dredge the cauliflower in the plant milk and coat it with the panko.

  4. Put the coated cauliflower on a baking sheet. Bake at 375 degrees for 15-20 minutes, until florets are crispy and browned.

  5. For the pineapple salsa: core, peel, and chop half of the fresh pineapple, or chop up the canned pineapple

  6. Seed and cut the Fresno peppers, cutting finely. Finely dice the red onion. Halve the cherry tomatoes. Chop the cilantro. Combine all in a bowl with lime juice and salt.

  7. To serve, warm the tortillas over a burner or in a dry sauté pan. Top each tortilla with black beans, cauliflower florets, and pineapple salsa.

RECIPE AND STYLING BY SELENA ORKWIS / PHOTOGRAPHY BY DAVE BRYCE

Subscribe to TABLE Magazine’s print edition.