Home Blog Page 70

Campo Lamb Birria

0
The Lamb Birria at Los Poblanos’ restaurant Campo is a classic.

This recipe is very much measured by handfuls and feelings. The tortillas are the Sonoran wheat tortillas made at Albuquerque’s Los Poblanos with the rendered lamb fat from the braise. The lamb itself comes from the local Manzanares family’s Shepherd’s Lamb label, which raises the only certified-organic lamb in the state.

What is Birria? 

Birria is a traditional Mexican dish, originally from the state of Jalisco. It typically consists of tender, slow-cooked meat—often goat, but sometimes beef or lamb, like in this recipe —marinated in a flavorful blend of spices, including chili peppers, garlic, cumin, and oregano. The meat is cooked until it’s juicy and easily shreds apart for easy, enjoyable eating.

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
The Lamb Birria at Los Poblanos’ restaurant Campo is a classic.

Campo Lamb Birria


  • Author: Los Poblanos

Description

One of the best ways to enjoy lamb.


Ingredients

Scale
  • 300 g sifted Sonoran flour from Southwest Grain Collaborative
  • 300 g all-purpose flour
  • 15 g baking powder
  • 25 g salt
  • 50 g lamb fat (We use the heavily spiced and flavorful lamb fat that comes from the lamb braise for this dish. You can use any fat you choose.)
  • 40 g warm water


Instructions

  1. Mix the dry ingredients together, cut the fat in with fingertips, add warm water and gently combine using a spoon. The mix will be sticky so try not to get too much on your hands.
  2. Let rest for 30 minutes or so, then portion to desired weight. We use 75-gram portions at the restaurant. Let rest for anywhere from 15 minutes to overnight.
  3. They are best rolled out 12-36 hours after being portioned. We roll them out about 2 mm thick and grill them directly over the grill here at Campo.
  4. The hominy is processed here from NM blue corn out of Tamaya and Mexican June white corn from the Schneiders in Santa Fe (Southwest Grain Collaborative). We nixtamalize the corn the night before we need it. We rinse and cook in fresh water with garlic, bay leaf, and salt until tender.
  5. The vegetables are seasonal, but usually include turnips cooked in butter along with the hominy, and a grilled vegetable such as asparagus.

Try a Delicious Southwest Cocktail

Photography by Mary West

Subscribe to TABLE Magazine‘s print edition.

Grilled Zucchini with Tahini Yogurt & Corn Relish

0
a plate of grilled zucchini in a yogurt sauce adn with a corn relish sits on a green plate witha. fork full above it.

Zucchini has always proven to be one of the most plentiful harvests of the summer months. You know this to be true if you’ve ever planted it in your own garden. And while you often you hear people speak of the same few ways in which to use up the abundance of this summer vegetable, it really is much more versatile than the traditional stuffed zucchini, or zucchini bread.

Our friend and Contributing Editor Anna Franklin gives us a fine example of how to easily use this squash. Try it in a quick side dish, a starter, or an appetizer. Plus, you’ll want to serve it with a fresh baguette or a crusty loaf of bread.

What is Tahini?

Tahini is a tangy condiment that uses ground sesame seeds and is a staple in Middle Eastern and Mediterranean cuisines. It’s a paste with a rich, nutty flavor and a smooth, creamy texture. You’ll see it is used in a variety of cultural dishes, from hummus and baba ganoush to salad dressings, sauces, and marinades. It’s a great source of protein and healthy fats, making it a nutritious addition to any meal.

Recipe and Styling by Anna Franklin
Story by Star Laliberte
Photography by Dave Bryce 

Subscribe to TABLE Magazine’s print edition.

Grilled Asparagus with Hatch Green Chile Ricotta

0
Grilled asparagus with green chile ricotta sits on a black plate.

American author Thomas Wolfe suggests, wistfully, that you can never go home again. He says that the experiences that serve as brick and mortar to our memories are sometimes best to leave in the past.

Think then about the faces and lives in a restaurant kitchen. About a chef who came alive to the food world through endless prep work, marathon doubles, and an avalanche of brunch rushes. Consider that those repetitive acts led to jobs in esteemed restaurants across the country, appearances in national cooking shows, ownership of a restaurant empire across California, as well as accolades too numerous to count.

Dakota Weiss and Her Grilled Asaparagus with Hatch Green Chile Ricotta

Think about Dakota Weiss, executive chef at Coyote Café, the storied Santa Fe restaurant where she then staged after culinary school and now leads through its latest iteration of Southwestern cuisine. Just this once, Thomas Wolfe may have it wrong. She is home again––with fresh, imaginative and palate-tingling results.

Because Dakota’s signature voice brings worldly nuance to our local food scene, we asked her to choose local ingredients and present us with three recipes. On one recent early morning, we watched her in the calm and quiet of Coyote’s kitchen as she brought these ingredients to life in ways that are as grounded in memories as they are alive as well as relevant in the present. Hence, her recipe for Grilled Asparagus with Hatch Green Chile Ricotta.

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
Grilled asparagus with green chile ricotta sits on a black plate.

Grilled Asparagus with Hatch Green Chile Ricotta


  • Author: Dakota Weiss
  • Yield: Serves 4

Description

Vegetables don’t have to be served in a boring way!


Ingredients

Scale

For the grilled asparagus:

  • 1 bunch extra-large asparagus
  • Pinch sea salt
  • Pinch black pepper
  • 2 tbsp EVOO

For the hatch green chile ricotta cheese:

  • 1 gallon whole milk
  • 2 cups heavy cream
  • ½ cup lemon juice
  • 2 tbsp distilled vinegar
  • 2 cups hatch green chile, roasted, peeled, and diced½ tbsp kosher salt

For the truffled mustard vinaigrette:

  • 2 shallots
  • 2 garlic cloves
  • 2 tbsp whole grain mustard
  • ½ cup lemon juice
  • ½ cup rice vinegar
  • 1 cup EVOO
  • ½ cup white truffle oil
  • Kosher salt to taste

For the brioche croutons:

  • 1 cup brioche, cut into micro-small dices
  • ¼ cup EVOO
  • Kosher salt to taste

For the salad:

  • 2 red endives
  • 2 yellow endives
  • 2 tbsp chives, chopped
  • Kosher salt to taste
  • Black pepper to taste


Instructions

For the grilled asparagus:

  1. Cut the bottoms of the asparagus to get rid of the woody stems.
  2. Toss the asparagus with the salt, pepper, and olive oil
  3. Grill on high heat until lightly charred. The asparagus should still be crunchy.

For the hatch green chile ricotta cheese:

  1. Add the milk and cream into a heavy-bottomed pot. Bring to a boil.
  2. Turn off the heat and add the lemon juice and vinegar.
  3. Stir a few times until you see the milk start to curdle.
  4. Slowly pour the contents of the pot into a bowl that is lined with cheesecloth.
  5. Let the whey completely drain out of the curds.
  6. Gently scrape the curds off the cheesecloth and put into a bowl.
  7. Chop the green chile finely and stir into the curds. Season the cheese with salt to taste.

For the truffled mustard vinaigrette:

  1. Using a hand blender, add the shallots, garlic, mustard, lemon juice, and rice vinegar into a large jar and mix well.
  2. Slowly add the two oils to emulsify and then season with salt.

For the brioche croutons:

  1. Sauté the brioche in the oil until golden brown and season with salt.
  2. Pour onto a sheet tray lined with paper towels to soak up extra oil.

Building the plate:

  1. Toss the endives with the truffled vinaigrette, chives, salt, and pepper.
  2. Pipe the Hatch Green Chile Ricotta Cheese into a long rectangular shape.
  3. Carefully place the endive, alternating the red and yellow, into the ricotta at an angle.
  4. Place about 5 grilled asparagus lying next to the endive.
  5. Sprinkle the croutons all over.
  6. Drizzle a little of the truffled vinaigrette over the whole dish.

Recipe by Chef Dakota Weiss
Story by Gabe Gomez
Styling by Keith Recker
Photography Gabriella Marks

Subscribe to TABLE Magazine’s print edition.

Grilled Quail with Truffled‑Balsamic Reduction

0
An aerial view of a blue plate with grilled quail with balsamic reduction.
Coyote Café’s Chef Dakota Weiss's grilled quail with balsamic reduction sings New Mexico pecans and figs.

American author Thomas Wolfe suggested, wistfully, that you can never go home again––that the experiences that serve as brick and mortar to our memories are sometimes best left in the past.

Think then about the faces and lives in a restaurant kitchen. About a chef who came alive to the food world through endless prep work, marathon doubles, and an avalanche of brunch rushes. Consider that those repetitive acts led to jobs in esteemed restaurants across the country, appearances in national cooking shows, ownership of a restaurant empire across California, and accolades too numerous to count.

Think about Dakota Weiss, executive chef at Coyote Café, the storied Santa Fe restaurant where she staged after culinary school and now leads through its latest iteration of Southwestern cuisine? Just this once, Thomas Wolfe may have gotten it wrong. She’s come home again––with fresh, imaginative and palate-tingling results.

Because Dakota’s signature voice brings worldly nuance to our local food scene, we asked her to choose local ingredients and present us with three recipes. On one recent early morning, we watched her in the calm and quiet of Coyote’s kitchen as she brought these ingredients to life in ways that are as grounded in memories (does anyone remember the youthful thrill of 1970s Pop Rocks candy?) as they are alive and relevant in the present. coyotecafe.com

Grilled Quail with Truffled-Balsamic Reduction, Mesilla Pecan-Fig Crumble & Aji Amarillo

Serves 4

For the quail:

  • 4 quails

  • 2 rosemary sprigs

  • 2 thyme sprigs

  • Salt to taste

  • Black pepper to taste

  • 2 garlic cloves

  • ¼ cup blended oil

Instructions

1.     Clip the wings off the quail. Poke a tiny hole in one of the legs and pull the tip of the other leg through that so it looks like the legs are naturally crossed.

2.     Add the herbs, garlic, and oil in a blender and mix well.

3.     Rub the herb puree all over the quail and allow them to marinate for an hour or so.

For the Truffle-Balsamic Reduction:

  • 1 cup balsamic vinegar

  • ¼ cup white truffle oil

  • ¼ cup soy sauce

  • 1 ½ tbsp cornstarch

  • 1 tbsp cold water

Instructions

1.     Add the balsamic vinegar, truffle oil, and soy into a pot and bring it to a boil, reducing the mixture by a quarter.

2.     Whisk together the cornstarch and water.

3.     Slowly add that mixture to the reduction and cook out the starch. The sauce should thicken until it coats a spoon.

For the Mesilla Pecan-Fig Crumble:

  • 6 oz Mesilla pecans, toasted

  • 4 oz dried Mission figs

  • 1 tsp Urfa Biber chili flakes

  • 1 tsp cumin

  • 1 tsp hibiscus, dried

  • 1 tsp juniper berry

  • Kosher salt to taste

Instructions

Take all ingredients and add to a Robot-Coupe food processor. Mix until you have a crumble-like consistency.

Building the Plate:

1.     Grill the quail for about 2 ½ minutes on each side getting nice grill marks.

2.     Using a spoon, make a circle (1 ½ times larger than the quail) with the truffle balsamic. Place the grilled quail right on top of that.

3.     Put the pecan crumble on top of the quail breast.

4.     Add a dollop of Aji Amarillo paste to the plate.

5.     Garnish with any herbal microgreens.

 Story by Gabe Gomez/ Styling by Keith Recker / Photography Gabriella Marks

Try Chef Weiss’s other locavore recipes:

Grilled Asparagus

Buttermilk Vanilla Panna Cotta with Strawberry Pop Rocks

Don’t miss a single delicious thing:

Subscribe to TABLE Magazine New Mexico here!

Panna Cotta, Strawberries, Basil Sorbet & Strawberry Pop Rocks

0
Coyote Café’s Chef Dakota Weiss's recipe for buttermilk panna cotta is rich, subtle, and smooth as velvet with a literal “pop” at the end.

Sweet panna cotta with fresh strawberries, an herby basil sorbet, and… strawberry Pop Rocks? That’s right this tingling, popping candy is the star of this summery dessert.

About the Panna Cotta, Strawberries, Basil Sorbet & Strawberry Pop Rocks Recipe

American author Thomas Wolfe suggests, wistfully, that you can never go home again––that the experiences that serve as brick and mortar to our memories are sometimes best to leave in the past.

Think then about the faces and lives in a restaurant kitchen. About a chef who came alive to the food world through endless prep work, marathon doubles, and an avalanche of brunch rushes. Consider that those repetitive acts led to jobs in esteemed restaurants across the country, appearances in national cooking shows, ownership of a restaurant empire across California, as well as accolades too numerous to count.

Think about Dakota Weiss, executive chef at Coyote Café, the storied Santa Fe restaurant where she staged after culinary school and now also leads through its latest iteration of Southwestern cuisine. Just this once, Thomas Wolfe may be wrong. She’s come home again––with fresh, imaginative and also palate-tingling results.

Because Dakota’s signature voice brings worldly nuance to our local food scene, we asked her to choose local ingredients and present us with three recipes. On one recent early morning, we watched her in the calm and quiet of Coyote’s kitchen as she brought these ingredients to life in ways that are as grounded in memories (does anyone also remember the youthful thrill of 1970s Pop Rocks candy?) as they are alive and relevant in the present.

Recipe by Chef Dakota Weiss
Story by Gabe Gomez
Styling by Keith Recker
Photography Gabriella Marks

Subscribe to TABLE Magazine’s print edition.

Crispy Duck Leg Confit

0
Duck legs arranged in a line with various sauces

The timeless elegance of French cuisine dives into the realm of delectable indulgence with Crispy Duck Leg Confit with roasted potatoes, fragrant basil pesto, and a tantalizing blood orange beurre blanc. Imagine the tender and succulent duck leg, lovingly cooked in its luxurious fat, until the meat is imbued with a depth of flavor that only time and patience can create. The basil pesto adds an herbaceous burst of freshness and complexity to the dish, while the blood orange beurre blanc brings zesty, citrusy notes in a velvety, buttery, tangy embrace. Friends, prepare your palates for an exquisite dining experience that combines tradition, innovation, and a touch of theatrical flair.

Recipe by Chef Jackson Ault
Story by Kristin Kovacic
Photography by Tira Howard
Styling by Keith Recker

Subscribe to TABLE Magazine here!

Healthy Mocktail Shots

0
4 glasses of different sizes almost filled with green, red, and orange-colored healthy shots. Best Mocktail Recipes

Ah, mocktail shots, the alternative to their spirited counterparts without an ounce of regret or debaucherous proof on Instagram, all while keeping your well-being intact. These concoctions are a masterful blend of nature’s finest gifts — succulent fruits, fragrant herbs, and sweetness. With each sip, your senses are transported to a world where vibrant flavors linger harmoniously. So raise your glasses to these health-conscious mocktail shots, a toast to savoring life’s pleasures without compromise, all in the name of wellness and happiness. Chin-chin!

What’s In Our Round of Mocktail Shots

Make each one on their own, or serve as a round of shots together for a glass-clinking that won’t leave you felling less than your best. We’re serving up a Green Juice Mocktail shot, a Turmeric Ginger Health Shot, a Bloody Mary mix (to ration out into shots), and a Green Smoothie shot. They’re as multi-colored as they are delicious! If you find yourself hooked on wellness shots, there are also many options out there to try.

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

4 glasses of different sizes almost filled with green, red, and orange-colored healthy shots. Best Mocktail Recipes

Healthy Shots: Mocktail Recipes


5 Stars 4 Stars 3 Stars 2 Stars 1 Star


  • Author:
    Reid Putlitz

Description

A lineup of shots with more nutritional value than your average vodka shot.


Ingredients


Scale

For the Green Juice Mocktail Shot

  • 1 cup of fresh spinach
  • 8 kale leaves (stalks included)
  • 4 fresh basil leaves
  • 1 cucumber
  • 1 lime
  • 1-inch piece of fresh ginger
  • 2 pears
  • 4 oz fresh pineapple
  • 1 can of pineapple or grapefruit Spindrift
  • Mint for garnish

For the Bloody Mary Shot

  • 3 cups Muir Glen fire-roasted tomatoes, drained
  • 3 tbsp lemon juice
  • 1 tbsp grated horseradish
  • 2 tbsp vegan Worcestershire
  • 1 tbsp fresh grated garlic
  • 2 tbsp Tabasco sauce
  • 1 ½ tsp celery salt
  • 1 tbsp Old Bay seasoning
  • 1 tsp coarse ground black pepper
  • ½ cup pickle brine

For the Turmeric Ginger Health Shot

  • 6 oz fresh Ginger root
  • 6 oz fresh turmeric root
  • 3 oz fresh squeezed lemon juice
  • Pinch of Cayenne

For the Green Smoothie Shot

  • 1.5 oz kale
  • 1.5 oz spinach
  • 3.6 oz banana
  • 2 pitted dates
  • 10 oz coconut water
  • A handful of ice

 


Instructions

For the Green Juice Mocktail Shot

  1. Juice all veggies, fruit, and greens together using the cucumber to push through the basil, spinach, and kale.
  2. Freeze juice in a round ice cube mold.
  3. Place the ice cube in a low ball cocktail glass and fill the glass up half full of Spindrift.
    Garnish with fresh mint. Serves 1.

For the Bloody Mary Shot

  1. Drain the tomatoes and puree in a blender.
  2. Mix in all other ingredients.
  3. Use Old Bay seasoning on the rim.
  4. Garnish with reckless abandon. Serves 6.

For The Turmeric Ginger Shot 

  1. Juice the ginger and turmeric together.
  2. Add lemon juice and cayenne to the ginger and turmeric juice.
  3. Add one drop of oil of oregano oil. (Makes 10 oz; suggested serving size is 2 oz)

For the Green Smoothie Shot

  1. Freeze contents of smoothie kit (kale, spinach, banana, and dates).
  2. Combine contents with ice and coconut water into a blender and blend until smooth. Serves 1.

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

Recipes by Reid Putlitz
Photography by Josiah Hull
Styling by Laura Goble

Subscribe to TABLE Magazine’s print edition.

Manzanilla y Fresas

0
single cocktail glass with flowers sitting inside the glass and around the base.
Cocktails at Gruet Tasting Room in Santa Fe

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 traditionnelle sparkling wines, made with traditional French methods. Gruet produces several sparkling wines, primarily Pinot Noir- and Chardonnay-based, making them 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.

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. 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.

Manzanilla y Fresas

INGREDIENTS

¾ oz elderflower liqueur
6 sage leaves
2 oz chamomile tea
2 ¼ oz Gruet Sauvage Rose
Chamomile flowers for garnish

DIRECTIONS

In a cocktail shaker, add the elderflower liqueur and sage leaves. Muddle, then add chamomile tea, ice, and shake. Fine-strain into a Nick and Nora or coupe glass, top with Gruet Sauvage Rose, and garnish with fresh chamomile flowers.

Story by Gabe Gomez / Photography by Gabriella Marks / Styling by Alex Hanna/ Recipe by Daniel Gutierrez and Noemi Leon

Don’t miss a single delicious thing: Subscribe to TABLE Magazine here!

Buttered Mushroom Tartine

0
Buttered Mushroom Tartine on two separate plates with mushrooms in one plate and a dip sauce in another

The art of tartine making is something that every home cook should perfect. It can be a quick meal with endless flavor and ingredient combinations or a singular tried and true recipe perfected through repetition. TABLE recipe developer and stylist, Anna Franklin, shares her recipe for Buttered Mushroom Tartine, and we couldn’t be more in love; salty and savory, we love it with a little vinegary Escabeche for that extra crunch!

Recipe and Styling by Anna Franklin
Photography by Dave Bryce

Subscribe to TABLE Magazine’s print edition.

Spicy Pan-Fried Salmon

0
fried salmon on a stoneware dish

The International Folk Art Market is a platform for artists to share their crafts and stories, but it is also a place where people come together to celebrate the beauty and diversity of our world.

Like IFAM itself, sharing a meal is a reminder of the power of food and community to bring people together and create meaningful experiences that will be remembered for years to come. TABLE’s online editor, Gabe Gomez, took part in a dinner prepared by some of IFAM’s artists from India. This recipe is a recreation of some of the delicious fare cooked by by Abdulaziz Khatri of Sidr Crafts, one of IFAM’s veteran textile artists.

Spicy Pan-Fried Salmon

INGREDIENTS

4 boneless salmon filets, skin-on
Pinch of salt
Pinch of freshly ground pepper
2 tbsp ginger
1 tsp ginger, mashed in mortar and pestle
1 tsp garlic, mashed in mortar and pestle
2 tsp garam masala
1 tsp ground cumin
1 tsp coriander powder
1 ½ tsp turmeric powder
1-1 ½ tsp ground cayenne
2 tbsp lemon juice
1 tbsp water
2 tbsp EVOO

DIRECTIONS

  1. Clean and dry the salmon filets, removing any bones.
  2. Combine salt, black pepper, ginger and garlic paste, garam masala, cumin, coriander powder, turmeric powder, cayenne, lemon juice, and water. Mix well.
  3. Add the salmon to the mixture and coat the entire fillet. Fish can marinate for 2-24 hours. We recommend marinating overnight for the best results.
  4. Remove excess marinade from the fish. Heat the oil in a skillet over medium-high heat. Pan-fry fish for 4 minutes on each side. It’s always best to lower the heat to avoid burning the marinade, which can make the spices bitter.
  5. Transfer the fish to a clean platter or plate to rest. The fish will continue to cook when it’s off the skillet.
  6. Enjoy the fish with fresh cucumber wedges and rice with a little lemon squeeze.

Story and Recipes by Gabe Gomez / Photography by Tira Howard

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.