fix(hogtider): alla svenska hogtider visar relevanta recept
Ratta slug-bugg: recept-taggen "grillsäsong" matchade aldrig event-sluggen "grillsasong" (ASCII) sa grillsäsong-knappen visade inget. Nu ratt. 15 nya hogtidsrecept taggade med exakt SE-event-slug: rodbetssallad, rodkal, senapssill, stekt prinskorv, kokta kraftor med krondill, aioli, ostbricka, farskpotatis med dill, agghalvor med rakror, rakcocktail, grillspett med halloumi, grillad kycklingfile, pastasallad i matladan, tillbehor till surstromming, kryddig kyckling med ris. Omtaggar befintliga recept till ratt hogtid: vasterbottensostpaj +kraftskiva, grekisk-sallad +grillsasong, chili/spaghetti +skolstart, chokladtarta +alla-hjartans-dag, tomatsoppa +halloween, korvgratang +oktoberfest, halloumiburgare +valborg. Alla 14 SE-hogtider har nu minst ett korrekt taggat recept. Naring och enheter ar berakningsbara for alla 74 extrarecept (invarianttest gront, repo-typecheck gront).
This commit is contained in:
@@ -2148,7 +2148,7 @@ export const EXTRA_RECIPES: SeedRecipe[] = [
|
||||
mealPrepFriendly: false,
|
||||
freezerFriendly: true,
|
||||
peakSeasons: [],
|
||||
holidayTags: ["fika"],
|
||||
holidayTags: ["fika", "alla-hjartans-dag"],
|
||||
variantType: "standard",
|
||||
dnaCarb: "flour_wheat",
|
||||
dnaVegetables: [],
|
||||
@@ -2429,7 +2429,7 @@ export const EXTRA_RECIPES: SeedRecipe[] = [
|
||||
mealPrepFriendly: true,
|
||||
freezerFriendly: false,
|
||||
peakSeasons: [],
|
||||
holidayTags: [],
|
||||
holidayTags: ["oktoberfest"],
|
||||
variantType: "standard",
|
||||
dnaProtein: "falukorv",
|
||||
dnaVegetables: ["potato"],
|
||||
@@ -2459,4 +2459,619 @@ export const EXTRA_RECIPES: SeedRecipe[] = [
|
||||
},
|
||||
],
|
||||
},
|
||||
// ---------------------------------------------------------------------------
|
||||
// HÖGTIDER (spec §28) – recept taggade med exakt högtids-slug (SE-marknad) så
|
||||
// "Vad ska vi äta?"-högtidsknapparna alltid visar relevant mat. Slugs måste
|
||||
// matcha seasonEvents.ts exakt: jul, midsommar, påsk, nyår, kraftskiva,
|
||||
// grillsasong, skolstart, surstromming (ASCII – inte "grillsäsong"!).
|
||||
// ---------------------------------------------------------------------------
|
||||
{
|
||||
slug: "rodbetssallad",
|
||||
titleSv: "Klassisk rödbetssallad",
|
||||
descriptionSv:
|
||||
"Krämig rödbetssallad med äpple – det självklara röda inslaget på jul- och påskbordet, gott till skinka och sill.",
|
||||
cuisine: "swedish",
|
||||
mealTypes: ["buffet", "starter"],
|
||||
tags: ["vegetarian", "gluten_free"],
|
||||
methods: ["no_cook"],
|
||||
equipment: [],
|
||||
difficulty: "beginner",
|
||||
prepMin: 15,
|
||||
cookMin: 0,
|
||||
portions: 8,
|
||||
spiceLevel: 0,
|
||||
mealPrepFriendly: true,
|
||||
freezerFriendly: false,
|
||||
peakSeasons: ["winter"],
|
||||
holidayTags: ["jul", "påsk", "nyår"],
|
||||
variantType: "standard",
|
||||
dnaVegetables: ["beetroot", "apple"],
|
||||
dnaFlavor: ["sweet", "sour", "creamy"],
|
||||
verificationStatus: "editorial",
|
||||
ingredients: [
|
||||
{ ing: "beetroot", nameSv: "Inlagda rödbetor", qty: 300, unit: "GRAM", optional: false },
|
||||
{ ing: "apple", nameSv: "Äpple", qty: 1, unit: "COUNT", optional: false },
|
||||
{ ing: "creme_fraiche", nameSv: "Crème fraiche", qty: 2, unit: "DECILITER", optional: false },
|
||||
{ ing: "mayonnaise", nameSv: "Majonnäs", qty: 100, unit: "GRAM", optional: false },
|
||||
{ ing: "salt", nameSv: "Salt", qty: 1, unit: "TEASPOON", optional: false },
|
||||
{ ing: "black_pepper", nameSv: "Svartpeppar", qty: 1, unit: "MILLILITER", optional: true },
|
||||
],
|
||||
steps: [
|
||||
{ text: "Låt rödbetorna rinna av ordentligt i ett durkslag och tärna dem smått." },
|
||||
{ text: "Kärna ur och tärna äpplet lika smått som rödbetorna." },
|
||||
{ text: "Rör ihop crème fraiche och majonnäs och vänd försiktigt ner rödbetor och äpple." },
|
||||
{
|
||||
text: "Smaka av med salt och peppar. Låt gärna stå kallt en timme så smakerna sätter sig.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "rodkal",
|
||||
titleSv: "Långkokt rödkål",
|
||||
descriptionSv:
|
||||
"Mjuk, sötsyrlig rödkål som får puttra med äpple och lite balsamvinäger – ett givet tillbehör på julbordet.",
|
||||
cuisine: "swedish",
|
||||
mealTypes: ["buffet"],
|
||||
tags: ["vegetarian", "gluten_free", "budget"],
|
||||
methods: ["stovetop"],
|
||||
equipment: ["stove"],
|
||||
difficulty: "easy",
|
||||
prepMin: 15,
|
||||
cookMin: 45,
|
||||
portions: 8,
|
||||
spiceLevel: 0,
|
||||
mealPrepFriendly: true,
|
||||
freezerFriendly: true,
|
||||
peakSeasons: ["winter"],
|
||||
holidayTags: ["jul", "nyår"],
|
||||
variantType: "standard",
|
||||
dnaVegetables: ["red_cabbage", "apple"],
|
||||
dnaFlavor: ["sweet", "sour", "buttery"],
|
||||
verificationStatus: "editorial",
|
||||
ingredients: [
|
||||
{ ing: "red_cabbage", nameSv: "Rödkål", qty: 600, unit: "GRAM", optional: false },
|
||||
{ ing: "apple", nameSv: "Äpple", qty: 1, unit: "COUNT", optional: false },
|
||||
{ ing: "butter", nameSv: "Smör", qty: 25, unit: "GRAM", optional: false },
|
||||
{ ing: "sugar", nameSv: "Socker", qty: 30, unit: "GRAM", optional: false },
|
||||
{ ing: "balsamic_vinegar", nameSv: "Balsamvinäger", qty: 40, unit: "GRAM", optional: false },
|
||||
{ ing: "salt", nameSv: "Salt", qty: 1, unit: "TEASPOON", optional: false },
|
||||
],
|
||||
steps: [
|
||||
{ text: "Strimla rödkålen fint och riv eller tärna äpplet." },
|
||||
{ text: "Smält smöret i en vid gryta och lägg i rödkål och äpple. Låt fräsa några minuter." },
|
||||
{ text: "Tillsätt socker, balsamvinäger och salt samt ett par matskedar vatten." },
|
||||
{
|
||||
text: "Lägg på lock och låt sjuda på svag värme tills kålen är mjuk och blank, cirka 40 minuter. Rör om då och då.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "senapssill",
|
||||
titleSv: "Senapssill",
|
||||
descriptionSv:
|
||||
"Inlagd sill i len senapssås med dill – en av de självklara sillsorterna till jul, påsk och midsommar.",
|
||||
cuisine: "swedish",
|
||||
mealTypes: ["buffet", "starter"],
|
||||
tags: ["gluten_free", "high_protein"],
|
||||
methods: ["no_cook"],
|
||||
equipment: [],
|
||||
difficulty: "beginner",
|
||||
prepMin: 10,
|
||||
cookMin: 0,
|
||||
portions: 6,
|
||||
spiceLevel: 0,
|
||||
mealPrepFriendly: true,
|
||||
freezerFriendly: false,
|
||||
peakSeasons: ["winter", "summer"],
|
||||
holidayTags: ["jul", "påsk", "midsommar", "nyår"],
|
||||
variantType: "standard",
|
||||
dnaProtein: "pickled_herring",
|
||||
dnaVegetables: [],
|
||||
dnaFlavor: ["tangy", "mustard", "dill"],
|
||||
verificationStatus: "editorial",
|
||||
ingredients: [
|
||||
{ ing: "pickled_herring", nameSv: "Inlagd sill", qty: 300, unit: "GRAM", optional: false },
|
||||
{ ing: "mustard", nameSv: "Sötstark senap", qty: 60, unit: "GRAM", optional: false },
|
||||
{ ing: "sugar", nameSv: "Socker", qty: 25, unit: "GRAM", optional: false },
|
||||
{ ing: "cream", nameSv: "Grädde", qty: 1, unit: "DECILITER", optional: false },
|
||||
{ ing: "olive_oil", nameSv: "Rapsolja", qty: 2, unit: "TABLESPOON", optional: false },
|
||||
{ ing: "dill", nameSv: "Dill", qty: 20, unit: "GRAM", optional: false },
|
||||
],
|
||||
steps: [
|
||||
{ text: "Låt sillbitarna rinna av och skär dem i lagom munsbitar." },
|
||||
{
|
||||
text: "Vispa ihop senap, socker och olja till en slät röra. Vispa ner grädden så såsen blir krämig.",
|
||||
},
|
||||
{ text: "Hacka dillen och rör ner det mesta i såsen." },
|
||||
{
|
||||
text: "Vänd ner sillen, toppa med resten av dillen och låt stå kallt minst en timme före servering.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "stekt-prinskorv",
|
||||
titleSv: "Stekta prinskorvar",
|
||||
descriptionSv:
|
||||
"Gyllene, knapriga prinskorvar stekta i smör – julbordets favorit bland både barn och vuxna.",
|
||||
cuisine: "swedish",
|
||||
mealTypes: ["buffet"],
|
||||
tags: ["kid_friendly", "quick", "gluten_free"],
|
||||
methods: ["stovetop"],
|
||||
equipment: ["stove"],
|
||||
difficulty: "beginner",
|
||||
prepMin: 5,
|
||||
cookMin: 10,
|
||||
portions: 6,
|
||||
spiceLevel: 0,
|
||||
mealPrepFriendly: false,
|
||||
freezerFriendly: false,
|
||||
peakSeasons: ["winter"],
|
||||
holidayTags: ["jul", "nyår"],
|
||||
variantType: "standard",
|
||||
dnaProtein: "prinskorv",
|
||||
dnaVegetables: [],
|
||||
dnaFlavor: ["savory", "buttery"],
|
||||
verificationStatus: "editorial",
|
||||
ingredients: [
|
||||
{ ing: "prinskorv", nameSv: "Prinskorv", qty: 400, unit: "GRAM", optional: false },
|
||||
{ ing: "butter", nameSv: "Smör", qty: 25, unit: "GRAM", optional: false },
|
||||
],
|
||||
steps: [
|
||||
{ text: "Klipp eventuellt av korvarna från varandra och snitta dem lätt om du vill." },
|
||||
{ text: "Smält smöret i en stekpanna på medelvärme." },
|
||||
{
|
||||
text: "Stek prinskorvarna under omrörning tills de är gyllene och genomvarma, cirka 8 minuter. Servera direkt.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "kokta-kraftor-med-dill",
|
||||
titleSv: "Kokta kräftor med krondill",
|
||||
descriptionSv:
|
||||
"Kräftor kokta i klassisk dillag med socker och salt – själva mittpunkten på kräftskivan i augusti.",
|
||||
cuisine: "swedish",
|
||||
mealTypes: ["buffet", "dinner"],
|
||||
tags: ["high_protein", "gluten_free", "luxury"],
|
||||
methods: ["stovetop"],
|
||||
equipment: ["stove"],
|
||||
difficulty: "medium",
|
||||
prepMin: 15,
|
||||
cookMin: 15,
|
||||
portions: 6,
|
||||
spiceLevel: 0,
|
||||
mealPrepFriendly: true,
|
||||
freezerFriendly: true,
|
||||
peakSeasons: ["summer", "autumn"],
|
||||
holidayTags: ["kraftskiva"],
|
||||
variantType: "standard",
|
||||
dnaProtein: "crayfish",
|
||||
dnaVegetables: [],
|
||||
dnaFlavor: ["dill", "briny", "sweet"],
|
||||
verificationStatus: "editorial",
|
||||
ingredients: [
|
||||
{ ing: "crayfish", nameSv: "Kräftor", qty: 1000, unit: "GRAM", optional: false },
|
||||
{ ing: "dill", nameSv: "Krondill", qty: 50, unit: "GRAM", optional: false },
|
||||
{ ing: "salt", nameSv: "Salt", qty: 100, unit: "GRAM", optional: false },
|
||||
{ ing: "sugar", nameSv: "Socker", qty: 20, unit: "GRAM", optional: false },
|
||||
],
|
||||
steps: [
|
||||
{
|
||||
text: "Koka upp cirka 2 liter vatten med salt, socker och hälften av krondillen. Låt lagen sjuda 10 minuter så smaken sätter sig.",
|
||||
},
|
||||
{ text: "Lägg i kräftorna, koka upp igen och låt sjuda cirka 6–8 minuter." },
|
||||
{ text: "Ta grytan från värmen och lägg i resten av krondillen." },
|
||||
{
|
||||
text: "Låt kräftorna kallna i lagen, gärna över natten i kylen, så de får full dillsmak. Servera väl kylda.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "aioli-till-skaldjur",
|
||||
titleSv: "Vitlöksaioli",
|
||||
descriptionSv:
|
||||
"Slät, vitlöksstark aioli som passar perfekt till kräftor, räkor och västerbottenpaj på skaldjursbordet.",
|
||||
cuisine: "swedish",
|
||||
mealTypes: ["buffet", "starter"],
|
||||
tags: ["vegetarian", "gluten_free"],
|
||||
methods: ["no_cook"],
|
||||
equipment: [],
|
||||
difficulty: "beginner",
|
||||
prepMin: 10,
|
||||
cookMin: 0,
|
||||
portions: 8,
|
||||
spiceLevel: 0,
|
||||
mealPrepFriendly: true,
|
||||
freezerFriendly: false,
|
||||
peakSeasons: ["summer"],
|
||||
holidayTags: ["kraftskiva", "nyår", "grillsasong"],
|
||||
variantType: "standard",
|
||||
dnaVegetables: [],
|
||||
dnaFlavor: ["garlic", "creamy", "tangy"],
|
||||
verificationStatus: "editorial",
|
||||
ingredients: [
|
||||
{ ing: "mayonnaise", nameSv: "Majonnäs", qty: 200, unit: "GRAM", optional: false },
|
||||
{ ing: "garlic", nameSv: "Vitlöksklyfta", qty: 2, unit: "COUNT", optional: false },
|
||||
{ ing: "olive_oil", nameSv: "Olivolja", qty: 2, unit: "TABLESPOON", optional: false },
|
||||
{ ing: "lemon", nameSv: "Citron", qty: 1, unit: "COUNT", optional: false },
|
||||
{ ing: "salt", nameSv: "Salt", qty: 1, unit: "TEASPOON", optional: true },
|
||||
],
|
||||
steps: [
|
||||
{ text: "Pressa eller riv vitlöken fint." },
|
||||
{ text: "Rör ihop majonnäs, vitlök och olivolja till en slät kräm." },
|
||||
{
|
||||
text: "Smaka av med pressad citron och salt. Låt stå kallt minst 30 minuter innan servering.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "ostbricka-till-kraftskivan",
|
||||
titleSv: "Ostbricka med västerbottensost",
|
||||
descriptionSv:
|
||||
"En enkel ostbricka med kraftig västerbottensost, lagrad hårdost, druvor och valnötter – det goda avslutet på kräftskivan.",
|
||||
cuisine: "swedish",
|
||||
mealTypes: ["buffet", "snack"],
|
||||
tags: ["vegetarian"],
|
||||
methods: ["no_cook"],
|
||||
equipment: [],
|
||||
difficulty: "beginner",
|
||||
prepMin: 10,
|
||||
cookMin: 0,
|
||||
portions: 8,
|
||||
spiceLevel: 0,
|
||||
mealPrepFriendly: false,
|
||||
freezerFriendly: false,
|
||||
peakSeasons: ["summer", "autumn"],
|
||||
holidayTags: ["kraftskiva", "nyår"],
|
||||
variantType: "standard",
|
||||
dnaVegetables: [],
|
||||
dnaFlavor: ["savory", "nutty", "sweet"],
|
||||
verificationStatus: "editorial",
|
||||
ingredients: [
|
||||
{
|
||||
ing: "vasterbotten_cheese",
|
||||
nameSv: "Västerbottensost",
|
||||
qty: 200,
|
||||
unit: "GRAM",
|
||||
optional: false,
|
||||
},
|
||||
{ ing: "cheese_hard", nameSv: "Lagrad hårdost", qty: 200, unit: "GRAM", optional: false },
|
||||
{ ing: "grape", nameSv: "Vindruvor", qty: 200, unit: "GRAM", optional: false },
|
||||
{ ing: "walnut", nameSv: "Valnötter", qty: 50, unit: "GRAM", optional: false },
|
||||
],
|
||||
steps: [
|
||||
{ text: "Ta fram ostarna en stund före servering så de får rumstemperatur och full smak." },
|
||||
{ text: "Skär ostarna i bitar eller klyftor och lägg upp på en bricka." },
|
||||
{
|
||||
text: "Skölj druvorna och dela dem i mindre klasar. Fördela dem och valnötterna på brickan.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "farskpotatis-med-dill",
|
||||
titleSv: "Färskpotatis med smör och dill",
|
||||
descriptionSv:
|
||||
"Nykokt färskpotatis vänd i smör och färsk dill – midsommarbordets doftande självklarhet.",
|
||||
cuisine: "swedish",
|
||||
mealTypes: ["buffet", "lunch", "dinner"],
|
||||
tags: ["vegetarian", "gluten_free", "budget"],
|
||||
methods: ["stovetop"],
|
||||
equipment: ["stove"],
|
||||
difficulty: "beginner",
|
||||
prepMin: 10,
|
||||
cookMin: 20,
|
||||
portions: 6,
|
||||
spiceLevel: 0,
|
||||
mealPrepFriendly: false,
|
||||
freezerFriendly: false,
|
||||
peakSeasons: ["summer"],
|
||||
holidayTags: ["midsommar"],
|
||||
variantType: "standard",
|
||||
dnaCarb: "new_potato",
|
||||
dnaVegetables: [],
|
||||
dnaFlavor: ["dill", "buttery"],
|
||||
verificationStatus: "editorial",
|
||||
ingredients: [
|
||||
{ ing: "new_potato", nameSv: "Färskpotatis", qty: 800, unit: "GRAM", optional: false },
|
||||
{ ing: "butter", nameSv: "Smör", qty: 40, unit: "GRAM", optional: false },
|
||||
{ ing: "dill", nameSv: "Dill", qty: 30, unit: "GRAM", optional: false },
|
||||
{ ing: "salt", nameSv: "Salt", qty: 2, unit: "TEASPOON", optional: false },
|
||||
],
|
||||
steps: [
|
||||
{
|
||||
text: "Borsta färskpotatisen ren och koka den i lättsaltat vatten tills den är mjuk, cirka 18 minuter.",
|
||||
},
|
||||
{ text: "Häll av vattnet och låt potatisen ånga av." },
|
||||
{
|
||||
text: "Vänd ner smöret så det smälter runt potatisen och strö över rikligt med hackad dill. Salta efter smak.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "agghalvor-med-rakror",
|
||||
titleSv: "Ägghalvor med räkröra",
|
||||
descriptionSv:
|
||||
"Kokta ägg toppade med krämig räkröra och dill – en klassiker på påskbordet och det kalla buffébordet.",
|
||||
cuisine: "swedish",
|
||||
mealTypes: ["buffet", "starter"],
|
||||
tags: ["high_protein", "gluten_free"],
|
||||
methods: ["stovetop"],
|
||||
equipment: ["stove"],
|
||||
difficulty: "easy",
|
||||
prepMin: 15,
|
||||
cookMin: 10,
|
||||
portions: 6,
|
||||
spiceLevel: 0,
|
||||
mealPrepFriendly: false,
|
||||
freezerFriendly: false,
|
||||
peakSeasons: ["spring"],
|
||||
holidayTags: ["påsk", "nyår"],
|
||||
variantType: "standard",
|
||||
dnaProtein: "egg",
|
||||
dnaVegetables: [],
|
||||
dnaFlavor: ["creamy", "dill", "briny"],
|
||||
verificationStatus: "editorial",
|
||||
ingredients: [
|
||||
{ ing: "egg", nameSv: "Ägg", qty: 6, unit: "COUNT", optional: false },
|
||||
{ ing: "shrimp", nameSv: "Räkor", qty: 200, unit: "GRAM", optional: false },
|
||||
{ ing: "mayonnaise", nameSv: "Majonnäs", qty: 80, unit: "GRAM", optional: false },
|
||||
{ ing: "creme_fraiche", nameSv: "Crème fraiche", qty: 1, unit: "DECILITER", optional: false },
|
||||
{ ing: "dill", nameSv: "Dill", qty: 15, unit: "GRAM", optional: false },
|
||||
],
|
||||
steps: [
|
||||
{ text: "Hårdkoka äggen cirka 8 minuter, spola kalla och skala dem. Dela dem på längden." },
|
||||
{ text: "Blanda majonnäs och crème fraiche och vänd ner de flesta räkorna och hackad dill." },
|
||||
{ text: "Klicka räkröran på ägghalvorna och toppa med resten av räkorna och lite dill." },
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "rakcocktail",
|
||||
titleSv: "Räkcocktail",
|
||||
descriptionSv:
|
||||
"Handskalade räkor på frisk sallad med len röd cocktailsås – en elegant förrätt till nyår och fest.",
|
||||
cuisine: "swedish",
|
||||
mealTypes: ["starter", "buffet"],
|
||||
tags: ["high_protein", "luxury", "gluten_free"],
|
||||
methods: ["no_cook"],
|
||||
equipment: [],
|
||||
difficulty: "easy",
|
||||
prepMin: 15,
|
||||
cookMin: 0,
|
||||
portions: 4,
|
||||
spiceLevel: 0,
|
||||
mealPrepFriendly: false,
|
||||
freezerFriendly: false,
|
||||
peakSeasons: ["winter"],
|
||||
holidayTags: ["nyår", "påsk"],
|
||||
variantType: "standard",
|
||||
dnaProtein: "shrimp",
|
||||
dnaVegetables: [],
|
||||
dnaFlavor: ["creamy", "tangy", "briny"],
|
||||
verificationStatus: "editorial",
|
||||
ingredients: [
|
||||
{ ing: "shrimp", nameSv: "Handskalade räkor", qty: 300, unit: "GRAM", optional: false },
|
||||
{ ing: "lettuce", nameSv: "Isbergssallad", qty: 1, unit: "COUNT", optional: false },
|
||||
{ ing: "mayonnaise", nameSv: "Majonnäs", qty: 100, unit: "GRAM", optional: false },
|
||||
{ ing: "tomato_paste", nameSv: "Tomatpuré", qty: 30, unit: "GRAM", optional: false },
|
||||
{ ing: "lemon", nameSv: "Citron", qty: 1, unit: "COUNT", optional: false },
|
||||
],
|
||||
steps: [
|
||||
{ text: "Strimla salladen fint och fördela i portionsglas." },
|
||||
{
|
||||
text: "Rör ihop majonnäs och tomatpuré till en slät rosa sås och smaka av med pressad citron.",
|
||||
},
|
||||
{ text: "Lägg räkorna på salladen, klicka på såsen och toppa med en citronklyfta." },
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "grillspett-med-halloumi",
|
||||
titleSv: "Grillspett med halloumi och grönsaker",
|
||||
descriptionSv:
|
||||
"Färgglada grillspett med halloumi, paprika och zucchini – enkelt och vegetariskt på grillkvällen.",
|
||||
cuisine: "swedish",
|
||||
mealTypes: ["dinner", "lunch"],
|
||||
tags: ["vegetarian", "gluten_free", "quick"],
|
||||
methods: ["grill"],
|
||||
equipment: ["grill"],
|
||||
difficulty: "easy",
|
||||
prepMin: 15,
|
||||
cookMin: 10,
|
||||
portions: 4,
|
||||
spiceLevel: 0,
|
||||
mealPrepFriendly: false,
|
||||
freezerFriendly: false,
|
||||
peakSeasons: ["summer"],
|
||||
holidayTags: ["grillsasong", "valborg"],
|
||||
variantType: "standard",
|
||||
dnaProtein: "halloumi",
|
||||
dnaVegetables: ["bell_pepper", "zucchini"],
|
||||
dnaFlavor: ["savory", "smoky", "salty"],
|
||||
verificationStatus: "editorial",
|
||||
ingredients: [
|
||||
{ ing: "halloumi", nameSv: "Halloumi", qty: 250, unit: "GRAM", optional: false },
|
||||
{ ing: "bell_pepper", nameSv: "Paprika", qty: 1, unit: "COUNT", optional: false },
|
||||
{ ing: "zucchini", nameSv: "Zucchini", qty: 1, unit: "COUNT", optional: false },
|
||||
{ ing: "olive_oil", nameSv: "Olivolja", qty: 2, unit: "TABLESPOON", optional: false },
|
||||
],
|
||||
steps: [
|
||||
{ text: "Skär halloumi, paprika och zucchini i jämnstora bitar." },
|
||||
{ text: "Trä omväxlande halloumi och grönsaker på spett och pensla med olivolja." },
|
||||
{
|
||||
text: "Grilla spetten på medelvärme och vänd dem tills halloumin fått fin färg och grönsakerna mjuknat, cirka 8 minuter.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "grillad-kycklingfile",
|
||||
titleSv: "Grillad kycklingfilé med paprika",
|
||||
descriptionSv:
|
||||
"Saftig kycklingfilé marinerad i olivolja, vitlök och paprikapulver – en trygg favorit hela grillsäsongen.",
|
||||
cuisine: "swedish",
|
||||
mealTypes: ["dinner", "lunch"],
|
||||
tags: ["high_protein", "gluten_free"],
|
||||
methods: ["grill"],
|
||||
equipment: ["grill"],
|
||||
difficulty: "easy",
|
||||
prepMin: 15,
|
||||
cookMin: 15,
|
||||
portions: 4,
|
||||
spiceLevel: 1,
|
||||
mealPrepFriendly: true,
|
||||
freezerFriendly: false,
|
||||
peakSeasons: ["summer"],
|
||||
holidayTags: ["grillsasong"],
|
||||
variantType: "standard",
|
||||
dnaProtein: "chicken_breast",
|
||||
dnaVegetables: [],
|
||||
dnaFlavor: ["garlic", "paprika", "smoky"],
|
||||
verificationStatus: "editorial",
|
||||
ingredients: [
|
||||
{ ing: "chicken_breast", nameSv: "Kycklingfilé", qty: 600, unit: "GRAM", optional: false },
|
||||
{ ing: "olive_oil", nameSv: "Olivolja", qty: 2, unit: "TABLESPOON", optional: false },
|
||||
{ ing: "garlic", nameSv: "Vitlöksklyfta", qty: 2, unit: "COUNT", optional: false },
|
||||
{ ing: "paprika_powder", nameSv: "Paprikapulver", qty: 2, unit: "TEASPOON", optional: false },
|
||||
{ ing: "salt", nameSv: "Salt", qty: 1, unit: "TEASPOON", optional: false },
|
||||
],
|
||||
steps: [
|
||||
{ text: "Rör ihop olivolja, pressad vitlök, paprikapulver och salt till en marinad." },
|
||||
{ text: "Vänd kycklingfiléerna i marinaden och låt dem gärna stå kallt 30 minuter." },
|
||||
{
|
||||
text: "Grilla filéerna på medelvärme tills de är genomstekta, cirka 6–7 minuter per sida. Låt vila några minuter före servering.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "pastasallad-i-matlada",
|
||||
titleSv: "Pastasallad i matlådan",
|
||||
descriptionSv:
|
||||
"Enkel, matig pastasallad med fetaost och paprika – perfekt att förbereda för skolstartens matlådor och luncher.",
|
||||
cuisine: "swedish",
|
||||
mealTypes: ["lunch"],
|
||||
tags: ["vegetarian", "meal_prep", "budget", "batch_cooking"],
|
||||
methods: ["stovetop"],
|
||||
equipment: ["stove"],
|
||||
difficulty: "beginner",
|
||||
prepMin: 15,
|
||||
cookMin: 10,
|
||||
portions: 4,
|
||||
spiceLevel: 0,
|
||||
mealPrepFriendly: true,
|
||||
freezerFriendly: false,
|
||||
peakSeasons: ["autumn"],
|
||||
holidayTags: ["skolstart"],
|
||||
variantType: "standard",
|
||||
dnaCarb: "pasta_dry",
|
||||
dnaVegetables: ["bell_pepper", "tomato"],
|
||||
dnaFlavor: ["savory", "salty", "fresh"],
|
||||
verificationStatus: "editorial",
|
||||
ingredients: [
|
||||
{ ing: "pasta_dry", nameSv: "Pasta", qty: 300, unit: "GRAM", optional: false },
|
||||
{ ing: "bell_pepper", nameSv: "Paprika", qty: 1, unit: "COUNT", optional: false },
|
||||
{ ing: "tomato", nameSv: "Tomat", qty: 200, unit: "GRAM", optional: false },
|
||||
{ ing: "feta", nameSv: "Fetaost", qty: 150, unit: "GRAM", optional: false },
|
||||
{ ing: "olive_oil", nameSv: "Olivolja", qty: 2, unit: "TABLESPOON", optional: false },
|
||||
],
|
||||
steps: [
|
||||
{ text: "Koka pastan enligt anvisning på paketet, spola kall och låt rinna av." },
|
||||
{ text: "Tärna paprika och tomat och smula fetaosten." },
|
||||
{
|
||||
text: "Blanda pasta, grönsaker och fetaost med olivolja. Salta efter smak och fördela i matlådor.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "tillbehor-till-surstromming",
|
||||
titleSv: "Tillbehör till surströmming",
|
||||
descriptionSv:
|
||||
"Klassiska tillbehör till surströmmingsskivan: nykokt mandelpotatis, hackad rödlök, gräddig färskost och västerbottensost.",
|
||||
cuisine: "swedish",
|
||||
mealTypes: ["buffet", "dinner"],
|
||||
tags: ["gluten_free"],
|
||||
methods: ["stovetop"],
|
||||
equipment: ["stove"],
|
||||
difficulty: "beginner",
|
||||
prepMin: 15,
|
||||
cookMin: 20,
|
||||
portions: 6,
|
||||
spiceLevel: 0,
|
||||
mealPrepFriendly: false,
|
||||
freezerFriendly: false,
|
||||
peakSeasons: ["summer", "autumn"],
|
||||
holidayTags: ["surstromming"],
|
||||
variantType: "standard",
|
||||
dnaCarb: "new_potato",
|
||||
dnaVegetables: [],
|
||||
dnaFlavor: ["savory", "sharp", "creamy"],
|
||||
verificationStatus: "editorial",
|
||||
ingredients: [
|
||||
{ ing: "new_potato", nameSv: "Mandelpotatis", qty: 600, unit: "GRAM", optional: false },
|
||||
{ ing: "red_onion", nameSv: "Rödlök", qty: 100, unit: "GRAM", optional: false },
|
||||
{
|
||||
ing: "creme_fraiche",
|
||||
nameSv: "Gräddfil eller crème fraiche",
|
||||
qty: 2,
|
||||
unit: "DECILITER",
|
||||
optional: false,
|
||||
},
|
||||
{
|
||||
ing: "vasterbotten_cheese",
|
||||
nameSv: "Västerbottensost",
|
||||
qty: 150,
|
||||
unit: "GRAM",
|
||||
optional: false,
|
||||
},
|
||||
],
|
||||
steps: [
|
||||
{
|
||||
text: "Koka mandelpotatisen mjuk i lättsaltat vatten, cirka 18 minuter, och låt den svalna något.",
|
||||
},
|
||||
{ text: "Hacka rödlöken fint och riv västerbottensosten." },
|
||||
{
|
||||
text: "Ställ fram potatis, rödlök, gräddfil och riven ost i skålar så var och en kan bygga sin egen klämma.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: "kryddig-kyckling-med-ris",
|
||||
titleSv: "Kryddig kyckling med ris",
|
||||
descriptionSv:
|
||||
"Mör kyckling långsamt fräst med lök, vitlök och varma kryddor, serverad på fluffigt ris \u2013 en festmåltid som passar fint till Eid och andra högtidsmiddagar.",
|
||||
cuisine: "middle_eastern",
|
||||
mealTypes: ["dinner", "buffet"],
|
||||
tags: ["high_protein", "gluten_free"],
|
||||
methods: ["stovetop"],
|
||||
equipment: ["stove"],
|
||||
difficulty: "easy",
|
||||
prepMin: 15,
|
||||
cookMin: 35,
|
||||
portions: 4,
|
||||
spiceLevel: 1,
|
||||
mealPrepFriendly: true,
|
||||
freezerFriendly: true,
|
||||
peakSeasons: [],
|
||||
holidayTags: ["eid"],
|
||||
variantType: "standard",
|
||||
dnaProtein: "chicken_thigh",
|
||||
dnaCarb: "rice_white",
|
||||
dnaVegetables: [],
|
||||
dnaFlavor: ["warm_spice", "garlic", "savory"],
|
||||
verificationStatus: "editorial",
|
||||
ingredients: [
|
||||
{ ing: "chicken_thigh", nameSv: "Kycklinglårfilé", qty: 600, unit: "GRAM", optional: false },
|
||||
{ ing: "rice_white", nameSv: "Ris", qty: 300, unit: "GRAM", optional: false },
|
||||
{ ing: "onion", nameSv: "Gul lök", qty: 1, unit: "COUNT", optional: false },
|
||||
{ ing: "garlic", nameSv: "Vitlöksklyfta", qty: 2, unit: "COUNT", optional: false },
|
||||
{ ing: "garam_masala", nameSv: "Garam masala", qty: 6, unit: "GRAM", optional: false },
|
||||
{ ing: "turmeric", nameSv: "Gurkmeja", qty: 3, unit: "GRAM", optional: false },
|
||||
{ ing: "olive_oil", nameSv: "Olja", qty: 2, unit: "TABLESPOON", optional: false },
|
||||
{ ing: "salt", nameSv: "Salt", qty: 1, unit: "TEASPOON", optional: false },
|
||||
],
|
||||
steps: [
|
||||
{ text: "Koka riset enligt anvisningen på paketet och håll det varmt." },
|
||||
{ text: "Skär kycklingen i bitar. Hetta upp oljan och fräs hackad lök och vitlök mjuk." },
|
||||
{ text: "Lägg i kycklingen och krydda med garam masala, gurkmeja och salt. Bryn runt om." },
|
||||
{
|
||||
text: "Häll i en skvätt vatten, lägg på lock och låt sjuda tills kycklingen är genomstekt och mör, cirka 20 minuter. Servera på riset.",
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
@@ -801,7 +801,7 @@ export const VERIFIED_RECIPES: SeedRecipe[] = [
|
||||
mealPrepFriendly: true,
|
||||
freezerFriendly: true,
|
||||
peakSeasons: ["autumn", "winter"],
|
||||
holidayTags: [],
|
||||
holidayTags: ["halloween"],
|
||||
variantType: "standard",
|
||||
dnaVegetables: ["canned_tomatoes", "onion", "basil"],
|
||||
dnaFlavor: ["tomato", "herby", "comforting"],
|
||||
@@ -898,7 +898,7 @@ export const VERIFIED_RECIPES: SeedRecipe[] = [
|
||||
mealPrepFriendly: true,
|
||||
freezerFriendly: true,
|
||||
peakSeasons: ["autumn", "winter"],
|
||||
holidayTags: [],
|
||||
holidayTags: ["skolstart"],
|
||||
storageGuidanceSv: "Håller 4 dagar i kyl, fryser utmärkt i portionslådor.",
|
||||
variantType: "standard",
|
||||
dnaProtein: "minced_beef",
|
||||
@@ -1147,7 +1147,7 @@ export const VERIFIED_RECIPES: SeedRecipe[] = [
|
||||
mealPrepFriendly: true,
|
||||
freezerFriendly: true,
|
||||
peakSeasons: [],
|
||||
holidayTags: [],
|
||||
holidayTags: ["skolstart"],
|
||||
storageGuidanceSv: "Såsen håller 3 dagar i kyl och fryser utmärkt.",
|
||||
variantType: "standard",
|
||||
dnaProtein: "minced_beef",
|
||||
@@ -1260,7 +1260,7 @@ export const VERIFIED_RECIPES: SeedRecipe[] = [
|
||||
mealPrepFriendly: false,
|
||||
freezerFriendly: false,
|
||||
peakSeasons: ["summer"],
|
||||
holidayTags: [],
|
||||
holidayTags: ["grillsasong"],
|
||||
variantType: "standard",
|
||||
dnaProtein: "feta",
|
||||
dnaVegetables: ["tomato", "cucumber", "red_onion", "olives"],
|
||||
@@ -1358,7 +1358,7 @@ export const VERIFIED_RECIPES: SeedRecipe[] = [
|
||||
mealPrepFriendly: true,
|
||||
freezerFriendly: true,
|
||||
peakSeasons: ["summer"],
|
||||
holidayTags: ["midsommar", "jul"],
|
||||
holidayTags: ["midsommar", "jul", "kraftskiva"],
|
||||
storageGuidanceSv: "Håller 3 dagar i kyl. Kan bakas dagen innan och värmas.",
|
||||
variantType: "standard",
|
||||
dnaProtein: "vasterbotten_cheese",
|
||||
@@ -1822,7 +1822,7 @@ export const VERIFIED_RECIPES: SeedRecipe[] = [
|
||||
mealPrepFriendly: false,
|
||||
freezerFriendly: false,
|
||||
peakSeasons: ["summer"],
|
||||
holidayTags: ["grillsäsong"],
|
||||
holidayTags: ["grillsasong", "valborg"],
|
||||
variantType: "standard",
|
||||
dnaProtein: "halloumi",
|
||||
dnaCarb: "hamburger_bun",
|
||||
|
||||
@@ -32,8 +32,8 @@ function sourcesFor(
|
||||
}
|
||||
|
||||
describe("extrarecept – seed-invarianter", () => {
|
||||
it("har minst 59 recept", () => {
|
||||
expect(EXTRA_RECIPES.length).toBeGreaterThanOrEqual(59);
|
||||
it("har minst 74 recept", () => {
|
||||
expect(EXTRA_RECIPES.length).toBeGreaterThanOrEqual(74);
|
||||
});
|
||||
|
||||
it("alla ingrediens-id:n finns i katalogen (run.ts rad 675)", () => {
|
||||
|
||||
Reference in New Issue
Block a user