Prep StepsSteps follow USDA Cooks! & standard culinary practice
(function(){
// each step: [verb, description, tool, isSafety?]
var DATA=[
{id:'onion',nm:'Onion',cat:'Vegetable',em:'๐ง ',yield:'1 medium onion โ about 1 cup diced',tip:'Chill the onion 15 min first and breathe through your mouth โ colder onions release less of the gas that stings your eyes.',
steps:[['Peel','Slice off the top, leave the root end on, peel away the papery skin.','knife'],
['Halve','Cut from top to root through the middle so each half holds together at the root.','knife'],
['Slice','Lay flat-side down. Make thin vertical cuts toward โ but not through โ the root.','knife'],
['Dice','Now cut across your slices to make small cubes. The root holds it steady.','knife'],
['Mince','For finer pieces, rock the knife over the dice until very small.','knife'],
['Cook','Sweat in oil over medium-low until soft & sweet (caramelize for ~25 min for deep flavor).','pan']]},
{id:'garlic',nm:'Garlic',cat:'Vegetable',em:'๐ง',yield:'1 clove โ about ยฝ tsp minced',tip:'Smashing the clove with the flat of the knife pops the skin right off and starts releasing flavor.',
steps:[['Separate','Break a clove off the bulb.','hand'],
['Smash','Lay the flat of the knife on the clove and press firmly to crack the skin.','knife'],
['Peel','The skin slips off easily after smashing.','hand'],
['Mince','Rock the knife back and forth until very fine.','knife'],
['Rest','Let minced garlic sit 5โ10 min before cooking to develop its full flavor.','wait'],
['Cook','Add late and cook gently โ garlic burns fast and turns bitter.','pan']]},
{id:'carrot',nm:'Carrot',cat:'Vegetable',em:'๐ฅ',yield:'1 medium carrot โ about โ cup diced',tip:'Cut a thin slice off one long side first to make a flat, stable base โ no rolling.',
steps:[['Wash','Scrub under cool running water.','water',true],
['Peel','Peel away the outer skin (optional for young carrots).','peeler'],
['Trim','Cut off the top and tip.','knife'],
['Plank','Slice a flat side, then cut into long planks.','knife'],
['Baton','Stack planks and cut into sticks (batonnet).','knife'],
['Dice','Line up the sticks and cut across into cubes.','knife'],
['Cook','Roast, steam, or sautรฉ until fork-tender.','pan']]},
{id:'bellpepper',nm:'Bell Pepper',cat:'Vegetable',em:'๐ซ',yield:'1 pepper โ about 1 cup sliced',tip:'Cut around the stem, not through it โ you avoid spilling the seeds everywhere.',
steps:[['Wash','Rinse under cool water.','water',true],
['Top & tail','Slice off the top and bottom.','knife'],
['Core','Stand it up, cut down one side, and roll out the seed core.','knife'],
['Open','Lay the wall flat and scrape away any white ribs.','knife'],
['Slice','Cut into strips.','knife'],
['Dice','Cut strips across for diced pepper.','knife']]},
{id:'tomato',nm:'Tomato',cat:'Fruit',em:'๐ ',yield:'1 medium tomato โ about ยพ cup diced',tip:'Use your sharpest, thinnest knife โ a serrated blade glides through the skin without crushing.',
steps:[['Wash','Rinse under cool water.','water',true],
['Core','Cut out the tough stem core with the knife tip.','knife'],
['Slice','For slices, cut across into rounds.','knife'],
['Wedge','For wedges, halve then cut each half into wedges.','knife'],
['Dice','Slice, stack, cut into strips, then across into cubes.','knife']]},
{id:'potato',nm:'Potato',cat:'Vegetable',em:'๐ฅ',yield:'1 medium potato โ about 1 cup cubed',tip:'Drop cut potatoes into cold water to keep them from browning until you cook them.',
steps:[['Scrub','Scrub well under running water to remove dirt.','water',true],
['Eye','Cut out any sprouts or green spots.','knife',true],
['Peel','Peel if the recipe calls for it (skins are fine for many dishes).','peeler'],
['Plank','Cut a flat base, then slice into planks.','knife'],
['Cube','Cut planks into sticks, then across into cubes.','knife'],
['Soak','Rinse or soak in cold water to remove surface starch.','water'],
['Cook','Boil, roast, or fry until tender.','pan']]},
{id:'chicken',nm:'Chicken Breast',cat:'Meat',em:'๐',yield:'1 breast โ ~2 servings',tip:'Keep a separate cutting board for raw meat, and wash hands & tools right after. Cook to 165ยฐF.',
steps:[['Board','Use a dedicated raw-meat cutting board.','board',true],
['Trim','Trim off excess fat with the knife.','knife'],
['Even out','Pound or butterfly thick parts so it cooks evenly.','mallet'],
['Cut','Slice across the grain for tender pieces.','knife'],
['Wash up','Wash hands, board & knife in hot soapy water before touching anything else.','water',true],
['Cook','Cook to an internal 165ยฐF / 74ยฐC โ check with a thermometer.','thermometer',true]]},
{id:'lettuce',nm:'Leafy Greens',cat:'Vegetable',em:'๐ฅฌ',yield:'1 head โ about 6 cups',tip:'Wash AFTER cutting? No โ wash leaves, dry well, THEN cut. Wet greens wilt and won\u2019t hold dressing.',
steps:[['Separate','Pull leaves apart from the core.','hand'],
['Wash','Swish in a bowl of cold water; grit sinks to the bottom.','water',true],
['Dry','Spin or pat thoroughly dry.','towel'],
['Stack','Stack a few leaves and roll them up.','hand'],
['Chiffonade','Slice the roll thinly into ribbons.','knife'],
['Tear','Or simply tear into bite-size pieces for salad.','hand']]}
];
var cur=0, playing=false, timer=null;
// sidebar
var side=document.getElementById('side');
side.innerHTML='
Ingredients
'+DATA.map(function(d,i){
return '
'+d.em+''+d.nm+'
';
}).join('');
side.querySelectorAll('.ing').forEach(function(el){ el.onclick=function(){ select(+el.getAttribute('data-i')); }; });
function select(i){ cur=i; stopPlay();
side.querySelectorAll('.ing').forEach(function(e,k){ e.classList.toggle('on',k===i); });
var d=DATA[i];
document.getElementById('big').textContent=d.em;
document.getElementById('nm').textContent=d.nm;
document.getElementById('cat').textContent=d.cat;
document.getElementById('yield').innerHTML='Yield: '+d.yield+'';
document.getElementById('tip').innerHTML='๐ก Tip: '+d.tip;
document.getElementById('links').innerHTML='More about '+d.nm+' โ ยท Knife Skills โ';
document.getElementById('st').textContent=d.nm+' ยท '+d.steps.length+' steps';
if(window.KX) KX.render('kx',{name:d.nm,cat:d.cat,emoji:d.em,exclude:'prep-steps'});
renderSteps();
}
function renderSteps(){
var d=DATA[cur];
document.getElementById('timeline').innerHTML=d.steps.map(function(s,i){
return '
'+(i+1)+'
'+
'
'+s[0]+(s[2]?''+s[2]+'':'')+'
'+s[1]+'
';
}).join('');
document.getElementById('timeline').querySelectorAll('.stepc').forEach(function(el){ el.onclick=function(){ gotoStep(+el.getAttribute('data-s')); }; });
document.getElementById('prog').textContent='';
}
function gotoStep(n){ var steps=document.querySelectorAll('#timeline .stepc');
steps.forEach(function(el,k){ el.classList.toggle('active',k===n); el.classList.toggle('done',k=steps.length){ stopPlay(); steps.forEach(function(e){e.classList.add('done');e.classList.remove('active');}); document.getElementById('prog').textContent='Done โ'; return; } gotoStep(n); },1400);
}
function stopPlay(){ playing=false; clearInterval(timer); document.getElementById('play').textContent='โถ Walk me through it'; }
document.getElementById('play').onclick=play;
document.getElementById('reset').onclick=function(){ stopPlay(); document.querySelectorAll('#timeline .stepc').forEach(function(e){e.classList.remove('active','done');}); document.getElementById('prog').textContent=''; };
try{ if(document.referrer.indexOf('/index.html')>=0) document.querySelector('.winbtn--close').href='../index.html'; }catch(e){}
var inc=window.KX&&KX.incoming(); var si=0; if(inc){ var m=KX.match(DATA,inc,'nm'); if(m) si=DATA.indexOf(m); } select(si);
})();