1150 lines
30 KiB
TypeScript
1150 lines
30 KiB
TypeScript
/**
|
||
* Seed: datadriven Season & Events Engine (spec §28).
|
||
* Datumregler beräknas av recommendation-engine (midsommar, påsk, advent).
|
||
*/
|
||
|
||
export interface SeedSeasonEvent {
|
||
id: string;
|
||
slug: string;
|
||
nameSv: string;
|
||
nameLocalized: string;
|
||
market: string;
|
||
dateRule:
|
||
| { kind: "fixed"; monthDay: string }
|
||
| { kind: "range"; startMonthDay: string; endMonthDay: string }
|
||
| { kind: "computed"; algorithm: "midsummer" | "easter" | "advent" | "custom" }
|
||
| { kind: "easter-offset"; days: number }
|
||
| { kind: "nth-weekday"; month: number; weekday: number; n: number | "last" };
|
||
leadDays: number;
|
||
foodTags: string[];
|
||
recipeSlugs: string[];
|
||
priority: number;
|
||
}
|
||
|
||
export const SEED_SEASON_EVENTS: SeedSeasonEvent[] = [
|
||
{
|
||
id: "se-midsommar",
|
||
slug: "midsommar",
|
||
nameSv: "Midsommar",
|
||
nameLocalized: "",
|
||
market: "SE",
|
||
dateRule: { kind: "computed", algorithm: "midsummer" },
|
||
leadDays: 10,
|
||
foodTags: ["sill", "färskpotatis", "jordgubbar", "grillat", "västerbottensostpaj"],
|
||
recipeSlugs: ["sill-och-farskpotatis", "vasterbottensostpaj", "kottbullar-med-potatismos"],
|
||
priority: 100,
|
||
},
|
||
{
|
||
id: "se-jul",
|
||
slug: "jul",
|
||
nameSv: "Jul",
|
||
nameLocalized: "",
|
||
market: "SE",
|
||
dateRule: { kind: "range", startMonthDay: "12-20", endMonthDay: "12-26" },
|
||
leadDays: 21,
|
||
foodTags: ["julbord", "köttbullar", "janssons", "sill", "skinka"],
|
||
recipeSlugs: ["jansons-frestelse", "kottbullar-med-potatismos"],
|
||
priority: 100,
|
||
},
|
||
{
|
||
id: "se-pask",
|
||
slug: "påsk",
|
||
nameSv: "Påsk",
|
||
nameLocalized: "",
|
||
market: "SE",
|
||
dateRule: { kind: "computed", algorithm: "easter" },
|
||
leadDays: 10,
|
||
foodTags: ["ägg", "sill", "lamm", "lax"],
|
||
recipeSlugs: ["sill-och-farskpotatis", "ugnsbakad-lax-med-citron-och-dill"],
|
||
priority: 90,
|
||
},
|
||
{
|
||
id: "se-nyar",
|
||
slug: "nyår",
|
||
nameSv: "Nyårsafton",
|
||
nameLocalized: "",
|
||
market: "SE",
|
||
dateRule: { kind: "fixed", monthDay: "12-31" },
|
||
leadDays: 7,
|
||
foodTags: ["fest", "skaldjur", "lyx"],
|
||
recipeSlugs: [],
|
||
priority: 80,
|
||
},
|
||
{
|
||
id: "se-kraftskiva",
|
||
slug: "kraftskiva",
|
||
nameSv: "Kräftskivepremiär",
|
||
nameLocalized: "",
|
||
market: "SE",
|
||
dateRule: { kind: "range", startMonthDay: "08-01", endMonthDay: "08-31" },
|
||
leadDays: 7,
|
||
foodTags: ["kräftor", "västerbottensostpaj", "knäckebröd"],
|
||
recipeSlugs: ["vasterbottensostpaj"],
|
||
priority: 70,
|
||
},
|
||
{
|
||
id: "se-surstromming",
|
||
slug: "surstromming",
|
||
nameSv: "Surströmmingspremiär",
|
||
nameLocalized: "",
|
||
market: "SE",
|
||
dateRule: { kind: "fixed", monthDay: "08-15" },
|
||
leadDays: 5,
|
||
foodTags: ["surströmming", "tunnbröd", "mandelpotatis"],
|
||
recipeSlugs: [],
|
||
priority: 40,
|
||
},
|
||
{
|
||
id: "se-lucia",
|
||
slug: "lucia",
|
||
nameSv: "Lucia",
|
||
nameLocalized: "",
|
||
market: "SE",
|
||
dateRule: { kind: "fixed", monthDay: "12-13" },
|
||
leadDays: 7,
|
||
foodTags: ["lussekatter", "pepparkakor", "glögg"],
|
||
recipeSlugs: [],
|
||
priority: 60,
|
||
},
|
||
{
|
||
id: "se-valborg",
|
||
slug: "valborg",
|
||
nameSv: "Valborg",
|
||
nameLocalized: "",
|
||
market: "SE",
|
||
dateRule: { kind: "fixed", monthDay: "04-30" },
|
||
leadDays: 5,
|
||
foodTags: ["grillat", "vårmat"],
|
||
recipeSlugs: ["halloumiburgare"],
|
||
priority: 50,
|
||
},
|
||
{
|
||
id: "se-grillsasong",
|
||
slug: "grillsasong",
|
||
nameSv: "Grillsäsong",
|
||
nameLocalized: "",
|
||
market: "SE",
|
||
dateRule: { kind: "range", startMonthDay: "05-15", endMonthDay: "08-31" },
|
||
leadDays: 0,
|
||
foodTags: ["grillat", "sallad", "sommarmat"],
|
||
recipeSlugs: ["halloumiburgare", "grekisk-sallad"],
|
||
priority: 30,
|
||
},
|
||
{
|
||
id: "se-skolstart",
|
||
slug: "skolstart",
|
||
nameSv: "Skolstart",
|
||
nameLocalized: "",
|
||
market: "SE",
|
||
dateRule: { kind: "range", startMonthDay: "08-10", endMonthDay: "08-31" },
|
||
leadDays: 7,
|
||
foodTags: ["matlåda", "vardagsmat", "snabbt"],
|
||
recipeSlugs: ["spaghetti-med-kottfarssas", "chili-con-carne"],
|
||
priority: 40,
|
||
},
|
||
{
|
||
id: "se-alla-hjartans",
|
||
slug: "alla-hjartans-dag",
|
||
nameSv: "Alla hjärtans dag",
|
||
nameLocalized: "",
|
||
market: "SE",
|
||
dateRule: { kind: "fixed", monthDay: "02-14" },
|
||
leadDays: 5,
|
||
foodTags: ["middag för två", "lyx", "dessert"],
|
||
recipeSlugs: ["teriyakilax-med-ris"],
|
||
priority: 50,
|
||
},
|
||
{
|
||
id: "int-halloween",
|
||
slug: "halloween",
|
||
nameSv: "Halloween",
|
||
nameLocalized: "",
|
||
market: "SE",
|
||
dateRule: { kind: "fixed", monthDay: "10-31" },
|
||
leadDays: 7,
|
||
foodTags: ["pumpa", "barnkalas", "höstmat"],
|
||
recipeSlugs: ["tomatsoppa-med-basilika"],
|
||
priority: 40,
|
||
},
|
||
{
|
||
id: "int-oktoberfest",
|
||
slug: "oktoberfest",
|
||
nameSv: "Oktoberfest",
|
||
nameLocalized: "",
|
||
market: "SE",
|
||
dateRule: { kind: "range", startMonthDay: "09-20", endMonthDay: "10-05" },
|
||
leadDays: 5,
|
||
foodTags: ["korv", "surkål", "öl"],
|
||
recipeSlugs: [],
|
||
priority: 20,
|
||
},
|
||
{
|
||
id: "int-ramadan-eid",
|
||
slug: "eid",
|
||
nameSv: "Eid al-Fitr",
|
||
nameLocalized: "",
|
||
market: "SE",
|
||
// Rörligt datum (månkalender) – uppdateras årligen av admin tills kalenderconnector finns.
|
||
dateRule: { kind: "computed", algorithm: "custom" },
|
||
leadDays: 14,
|
||
foodTags: ["fest", "lamm", "dadlar", "sötsaker"],
|
||
recipeSlugs: [],
|
||
priority: 90,
|
||
},
|
||
// --- Norge (NO) ---
|
||
{
|
||
id: "no-julaften",
|
||
slug: "julaften",
|
||
nameSv: "Julaften",
|
||
nameLocalized: "Julaften",
|
||
market: "NO",
|
||
dateRule: { kind: "fixed", monthDay: "12-24" },
|
||
leadDays: 21,
|
||
foodTags: ["ribbe", "pinnekjott", "lutefisk", "surkal", "riskrem", "medisterkake"],
|
||
recipeSlugs: [],
|
||
priority: 100,
|
||
},
|
||
{
|
||
id: "no-paske",
|
||
slug: "paske",
|
||
nameSv: "Påske",
|
||
nameLocalized: "Påske",
|
||
market: "NO",
|
||
dateRule: { kind: "computed", algorithm: "easter" },
|
||
leadDays: 10,
|
||
foodTags: ["lam", "egg", "appelsin", "marsipan", "paskeol"],
|
||
recipeSlugs: [],
|
||
priority: 90,
|
||
},
|
||
{
|
||
id: "no-sankthans",
|
||
slug: "sankthans",
|
||
nameSv: "Sankthansaften",
|
||
nameLocalized: "Sankthansaften",
|
||
market: "NO",
|
||
dateRule: { kind: "fixed", monthDay: "06-23" },
|
||
leadDays: 7,
|
||
foodTags: ["grillmat", "rommegrot", "spekemat", "jordbaer", "reker"],
|
||
recipeSlugs: [],
|
||
priority: 80,
|
||
},
|
||
{
|
||
id: "no-nyttarsaften",
|
||
slug: "nyttarsaften",
|
||
nameSv: "Nyttårsaften",
|
||
nameLocalized: "Nyttårsaften",
|
||
market: "NO",
|
||
dateRule: { kind: "fixed", monthDay: "12-31" },
|
||
leadDays: 7,
|
||
foodTags: ["pinnekjott", "torsk", "reker", "kransekake"],
|
||
recipeSlugs: [],
|
||
priority: 90,
|
||
},
|
||
{
|
||
id: "no-farikal",
|
||
slug: "farikalens-festdag",
|
||
nameSv: "Fårikålens festdag",
|
||
nameLocalized: "Fårikålens festdag",
|
||
market: "NO",
|
||
dateRule: { kind: "nth-weekday", month: 9, weekday: 4, n: "last" },
|
||
leadDays: 5,
|
||
foodTags: ["far", "kal", "pepperkorn", "potet"],
|
||
recipeSlugs: [],
|
||
priority: 80,
|
||
},
|
||
// --- Danmark (DK) ---
|
||
{
|
||
id: "dk-juleaften",
|
||
slug: "juleaften",
|
||
nameSv: "Juleaften",
|
||
nameLocalized: "Juleaften",
|
||
market: "DK",
|
||
dateRule: { kind: "fixed", monthDay: "12-24" },
|
||
leadDays: 21,
|
||
foodTags: ["flaeskesteg", "and", "rodkal", "brunede-kartofler", "risalamande"],
|
||
recipeSlugs: [],
|
||
priority: 100,
|
||
},
|
||
{
|
||
id: "dk-paske",
|
||
slug: "paske",
|
||
nameSv: "Påske",
|
||
nameLocalized: "Påske",
|
||
market: "DK",
|
||
dateRule: { kind: "computed", algorithm: "easter" },
|
||
leadDays: 7,
|
||
foodTags: ["sild", "aeg", "lammesteg", "nye-kartofler", "snaps"],
|
||
recipeSlugs: [],
|
||
priority: 90,
|
||
},
|
||
{
|
||
id: "dk-nytarsaften",
|
||
slug: "nytarsaften",
|
||
nameSv: "Nytårsaften",
|
||
nameLocalized: "Nytårsaften",
|
||
market: "DK",
|
||
dateRule: { kind: "fixed", monthDay: "12-31" },
|
||
leadDays: 7,
|
||
foodTags: ["kogt-torsk", "kransekage", "marcipan"],
|
||
recipeSlugs: [],
|
||
priority: 90,
|
||
},
|
||
{
|
||
id: "dk-julefrokost",
|
||
slug: "julefrokost",
|
||
nameSv: "Julefrokost",
|
||
nameLocalized: "Julefrokost",
|
||
market: "DK",
|
||
dateRule: { kind: "range", startMonthDay: "12-01", endMonthDay: "12-30" },
|
||
leadDays: 7,
|
||
foodTags: ["sild", "frikadeller", "leverpostej", "ribbensteg", "snaps"],
|
||
recipeSlugs: [],
|
||
priority: 80,
|
||
},
|
||
{
|
||
id: "dk-mortensaften",
|
||
slug: "mortensaften",
|
||
nameSv: "Mortensaften",
|
||
nameLocalized: "Mortensaften",
|
||
market: "DK",
|
||
dateRule: { kind: "fixed", monthDay: "11-10" },
|
||
leadDays: 7,
|
||
foodTags: ["and", "gas", "rodkal", "brunede-kartofler", "brun-sovs"],
|
||
recipeSlugs: [],
|
||
priority: 75,
|
||
},
|
||
// --- Finland (FI) ---
|
||
{
|
||
id: "fi-joulu",
|
||
slug: "joulu",
|
||
nameSv: "Jouluaatto",
|
||
nameLocalized: "Jouluaatto",
|
||
market: "FI",
|
||
dateRule: { kind: "fixed", monthDay: "12-24" },
|
||
leadDays: 21,
|
||
foodTags: ["joulukinkku", "lanttulaatikko", "rosolli", "graavilohi", "joulutorttu"],
|
||
recipeSlugs: [],
|
||
priority: 100,
|
||
},
|
||
{
|
||
id: "fi-paasiainen",
|
||
slug: "paasiainen",
|
||
nameSv: "Pääsiäinen",
|
||
nameLocalized: "Pääsiäinen",
|
||
market: "FI",
|
||
dateRule: { kind: "computed", algorithm: "easter" },
|
||
leadDays: 7,
|
||
foodTags: ["mammi", "pasha", "lammas", "suklaamuna"],
|
||
recipeSlugs: [],
|
||
priority: 90,
|
||
},
|
||
{
|
||
id: "fi-juhannus",
|
||
slug: "juhannus",
|
||
nameSv: "Juhannus",
|
||
nameLocalized: "Juhannus",
|
||
market: "FI",
|
||
dateRule: { kind: "computed", algorithm: "midsummer" },
|
||
leadDays: 7,
|
||
foodTags: ["grillimakkara", "uudet-perunat", "silli", "graavilohi"],
|
||
recipeSlugs: [],
|
||
priority: 85,
|
||
},
|
||
{
|
||
id: "fi-rapujuhlat",
|
||
slug: "rapujuhlat",
|
||
nameSv: "Rapujuhlat",
|
||
nameLocalized: "Rapujuhlat",
|
||
market: "FI",
|
||
dateRule: { kind: "range", startMonthDay: "07-21", endMonthDay: "09-30" },
|
||
leadDays: 7,
|
||
foodTags: ["rapu", "tilli", "ruisleipa", "snapsi"],
|
||
recipeSlugs: [],
|
||
priority: 80,
|
||
},
|
||
{
|
||
id: "fi-vappu",
|
||
slug: "vappu",
|
||
nameSv: "Vappu",
|
||
nameLocalized: "Vappu",
|
||
market: "FI",
|
||
dateRule: { kind: "fixed", monthDay: "05-01" },
|
||
leadDays: 7,
|
||
foodTags: ["sima", "tippaleipa", "munkki"],
|
||
recipeSlugs: [],
|
||
priority: 75,
|
||
},
|
||
// --- Island (IS) ---
|
||
{
|
||
id: "is-adfangadagur",
|
||
slug: "adfangadagur",
|
||
nameSv: "Aðfangadagur",
|
||
nameLocalized: "Aðfangadagur",
|
||
market: "IS",
|
||
dateRule: { kind: "fixed", monthDay: "12-24" },
|
||
leadDays: 21,
|
||
foodTags: ["hamborgarhryggur", "hangikjot", "laufabraud", "rjupa"],
|
||
recipeSlugs: [],
|
||
priority: 100,
|
||
},
|
||
{
|
||
id: "is-paskar",
|
||
slug: "paskar",
|
||
nameSv: "Páskar",
|
||
nameLocalized: "Páskar",
|
||
market: "IS",
|
||
dateRule: { kind: "computed", algorithm: "easter" },
|
||
leadDays: 5,
|
||
foodTags: ["lambakjot", "lambalaeri", "paskaegg"],
|
||
recipeSlugs: [],
|
||
priority: 90,
|
||
},
|
||
{
|
||
id: "is-thorrablot",
|
||
slug: "thorrablot",
|
||
nameSv: "Þorrablót",
|
||
nameLocalized: "Þorrablót",
|
||
market: "IS",
|
||
dateRule: { kind: "range", startMonthDay: "01-23", endMonthDay: "02-22" },
|
||
leadDays: 7,
|
||
foodTags: ["hakarl", "svid", "hangikjot", "hardfiskur", "brennivin"],
|
||
recipeSlugs: [],
|
||
priority: 80,
|
||
},
|
||
{
|
||
id: "is-sprengidagur",
|
||
slug: "sprengidagur",
|
||
nameSv: "Sprengidagur",
|
||
nameLocalized: "Sprengidagur",
|
||
market: "IS",
|
||
dateRule: { kind: "easter-offset", days: -47 },
|
||
leadDays: 3,
|
||
foodTags: ["saltkjot", "baunir", "gulrofa"],
|
||
recipeSlugs: [],
|
||
priority: 70,
|
||
},
|
||
{
|
||
id: "is-thorlaksmessa",
|
||
slug: "thorlaksmessa",
|
||
nameSv: "Þorláksmessa",
|
||
nameLocalized: "Þorláksmessa",
|
||
market: "IS",
|
||
dateRule: { kind: "fixed", monthDay: "12-23" },
|
||
leadDays: 5,
|
||
foodTags: ["skata", "hangikjot", "rugbraud"],
|
||
recipeSlugs: [],
|
||
priority: 70,
|
||
},
|
||
// --- Tyskland (DE) ---
|
||
{
|
||
id: "de-weihnachten",
|
||
slug: "weihnachten",
|
||
nameSv: "Weihnachten",
|
||
nameLocalized: "Weihnachten",
|
||
market: "DE",
|
||
dateRule: { kind: "fixed", monthDay: "12-24" },
|
||
leadDays: 21,
|
||
foodTags: ["gans", "karpfen", "stollen", "lebkuchen", "wurstchen"],
|
||
recipeSlugs: [],
|
||
priority: 100,
|
||
},
|
||
{
|
||
id: "de-silvester",
|
||
slug: "silvester",
|
||
nameSv: "Silvester",
|
||
nameLocalized: "Silvester",
|
||
market: "DE",
|
||
dateRule: { kind: "fixed", monthDay: "12-31" },
|
||
leadDays: 6,
|
||
foodTags: ["berliner", "raclette", "fondue", "linsen", "heringssalat"],
|
||
recipeSlugs: [],
|
||
priority: 90,
|
||
},
|
||
{
|
||
id: "de-ostern",
|
||
slug: "ostern",
|
||
nameSv: "Ostern",
|
||
nameLocalized: "Ostern",
|
||
market: "DE",
|
||
dateRule: { kind: "computed", algorithm: "easter" },
|
||
leadDays: 10,
|
||
foodTags: ["lamm", "eier", "osterbrot", "schinken", "hefezopf"],
|
||
recipeSlugs: [],
|
||
priority: 90,
|
||
},
|
||
{
|
||
id: "de-oktoberfest",
|
||
slug: "oktoberfest",
|
||
nameSv: "Oktoberfest",
|
||
nameLocalized: "Oktoberfest",
|
||
market: "DE",
|
||
dateRule: { kind: "range", startMonthDay: "09-19", endMonthDay: "10-04" },
|
||
leadDays: 7,
|
||
foodTags: ["hendl", "schweinshaxe", "weisswurst", "brezn", "obatzda"],
|
||
recipeSlugs: [],
|
||
priority: 85,
|
||
},
|
||
{
|
||
id: "de-karneval",
|
||
slug: "karneval",
|
||
nameSv: "Karneval",
|
||
nameLocalized: "Karneval",
|
||
market: "DE",
|
||
dateRule: { kind: "easter-offset", days: -48 },
|
||
leadDays: 5,
|
||
foodTags: ["krapfen", "berliner", "mutzenmandeln"],
|
||
recipeSlugs: [],
|
||
priority: 70,
|
||
},
|
||
{
|
||
id: "de-spargelzeit",
|
||
slug: "spargelzeit",
|
||
nameSv: "Spargelzeit",
|
||
nameLocalized: "Spargelzeit",
|
||
market: "DE",
|
||
dateRule: { kind: "range", startMonthDay: "04-15", endMonthDay: "06-24" },
|
||
leadDays: 4,
|
||
foodTags: ["spargel", "sauce-hollandaise", "schinken", "kartoffeln"],
|
||
recipeSlugs: [],
|
||
priority: 75,
|
||
},
|
||
// --- Frankrike (FR) ---
|
||
{
|
||
id: "fr-reveillon-noel",
|
||
slug: "reveillon-de-noel",
|
||
nameSv: "Réveillon de Noël",
|
||
nameLocalized: "Réveillon de Noël",
|
||
market: "FR",
|
||
dateRule: { kind: "fixed", monthDay: "12-24" },
|
||
leadDays: 21,
|
||
foodTags: ["huitres", "foie-gras", "chapon", "marrons", "buche"],
|
||
recipeSlugs: [],
|
||
priority: 100,
|
||
},
|
||
{
|
||
id: "fr-saint-sylvestre",
|
||
slug: "saint-sylvestre",
|
||
nameSv: "Saint-Sylvestre",
|
||
nameLocalized: "Saint-Sylvestre",
|
||
market: "FR",
|
||
dateRule: { kind: "fixed", monthDay: "12-31" },
|
||
leadDays: 7,
|
||
foodTags: ["foie-gras", "huitres", "fruits-de-mer", "saumon-fume", "champagne"],
|
||
recipeSlugs: [],
|
||
priority: 90,
|
||
},
|
||
{
|
||
id: "fr-epiphanie",
|
||
slug: "epiphanie",
|
||
nameSv: "Épiphanie",
|
||
nameLocalized: "Épiphanie",
|
||
market: "FR",
|
||
dateRule: { kind: "fixed", monthDay: "01-06" },
|
||
leadDays: 5,
|
||
foodTags: ["galette-des-rois", "frangipane", "feve", "brioche"],
|
||
recipeSlugs: [],
|
||
priority: 80,
|
||
},
|
||
{
|
||
id: "fr-chandeleur",
|
||
slug: "chandeleur",
|
||
nameSv: "Chandeleur",
|
||
nameLocalized: "Chandeleur",
|
||
market: "FR",
|
||
dateRule: { kind: "fixed", monthDay: "02-02" },
|
||
leadDays: 3,
|
||
foodTags: ["crepes", "sucre", "citron", "confiture"],
|
||
recipeSlugs: [],
|
||
priority: 70,
|
||
},
|
||
{
|
||
id: "fr-paques",
|
||
slug: "paques",
|
||
nameSv: "Pâques",
|
||
nameLocalized: "Pâques",
|
||
market: "FR",
|
||
dateRule: { kind: "computed", algorithm: "easter" },
|
||
leadDays: 10,
|
||
foodTags: ["agneau", "gigot", "oeufs-chocolat", "chocolat"],
|
||
recipeSlugs: [],
|
||
priority: 90,
|
||
},
|
||
{
|
||
id: "fr-mardi-gras",
|
||
slug: "mardi-gras",
|
||
nameSv: "Mardi Gras",
|
||
nameLocalized: "Mardi Gras",
|
||
market: "FR",
|
||
dateRule: { kind: "easter-offset", days: -47 },
|
||
leadDays: 3,
|
||
foodTags: ["beignets", "bugnes", "merveilles", "gaufres"],
|
||
recipeSlugs: [],
|
||
priority: 70,
|
||
},
|
||
// --- Nederländerna (NL) ---
|
||
{
|
||
id: "nl-sinterklaas",
|
||
slug: "sinterklaas",
|
||
nameSv: "Sinterklaas",
|
||
nameLocalized: "Sinterklaas",
|
||
market: "NL",
|
||
dateRule: { kind: "fixed", monthDay: "12-05" },
|
||
leadDays: 14,
|
||
foodTags: ["kruidnoten", "pepernoten", "chocoladeletter", "speculaas", "banketstaaf"],
|
||
recipeSlugs: [],
|
||
priority: 95,
|
||
},
|
||
{
|
||
id: "nl-kerst",
|
||
slug: "kerst",
|
||
nameSv: "Kerst",
|
||
nameLocalized: "Kerst",
|
||
market: "NL",
|
||
dateRule: { kind: "fixed", monthDay: "12-25" },
|
||
leadDays: 14,
|
||
foodTags: ["gourmet", "rollade", "kerststol", "kerstkransjes"],
|
||
recipeSlugs: [],
|
||
priority: 100,
|
||
},
|
||
{
|
||
id: "nl-oud-en-nieuw",
|
||
slug: "oud-en-nieuw",
|
||
nameSv: "Oud en Nieuw",
|
||
nameLocalized: "Oud en Nieuw",
|
||
market: "NL",
|
||
dateRule: { kind: "fixed", monthDay: "12-31" },
|
||
leadDays: 5,
|
||
foodTags: ["oliebollen", "appelflappen", "appelbeignets"],
|
||
recipeSlugs: [],
|
||
priority: 90,
|
||
},
|
||
{
|
||
id: "nl-pasen",
|
||
slug: "pasen",
|
||
nameSv: "Pasen",
|
||
nameLocalized: "Pasen",
|
||
market: "NL",
|
||
dateRule: { kind: "computed", algorithm: "easter" },
|
||
leadDays: 10,
|
||
foodTags: ["eieren", "paasstol", "paasbrood", "lamsvlees"],
|
||
recipeSlugs: [],
|
||
priority: 85,
|
||
},
|
||
{
|
||
id: "nl-koningsdag",
|
||
slug: "koningsdag",
|
||
nameSv: "Koningsdag",
|
||
nameLocalized: "Koningsdag",
|
||
market: "NL",
|
||
dateRule: { kind: "fixed", monthDay: "04-27" },
|
||
leadDays: 5,
|
||
foodTags: ["tompouce", "oranje", "gebak"],
|
||
recipeSlugs: [],
|
||
priority: 65,
|
||
},
|
||
// --- Spanien (ES) ---
|
||
{
|
||
id: "es-navidad",
|
||
slug: "navidad",
|
||
nameSv: "Navidad",
|
||
nameLocalized: "Navidad",
|
||
market: "ES",
|
||
dateRule: { kind: "fixed", monthDay: "12-24" },
|
||
leadDays: 21,
|
||
foodTags: ["turron", "mazapan", "polvorones", "cordero", "langostinos", "besugo"],
|
||
recipeSlugs: [],
|
||
priority: 100,
|
||
},
|
||
{
|
||
id: "es-nochevieja",
|
||
slug: "nochevieja",
|
||
nameSv: "Nochevieja",
|
||
nameLocalized: "Nochevieja",
|
||
market: "ES",
|
||
dateRule: { kind: "fixed", monthDay: "12-31" },
|
||
leadDays: 7,
|
||
foodTags: ["uvas", "cava", "langostinos", "marisco", "jamon"],
|
||
recipeSlugs: [],
|
||
priority: 90,
|
||
},
|
||
{
|
||
id: "es-reyes",
|
||
slug: "reyes",
|
||
nameSv: "Día de Reyes",
|
||
nameLocalized: "Día de Reyes",
|
||
market: "ES",
|
||
dateRule: { kind: "fixed", monthDay: "01-06" },
|
||
leadDays: 5,
|
||
foodTags: ["roscon", "nata", "chocolate", "fruta-escarchada"],
|
||
recipeSlugs: [],
|
||
priority: 85,
|
||
},
|
||
{
|
||
id: "es-semana-santa",
|
||
slug: "semana-santa",
|
||
nameSv: "Semana Santa",
|
||
nameLocalized: "Semana Santa",
|
||
market: "ES",
|
||
dateRule: { kind: "computed", algorithm: "easter" },
|
||
leadDays: 10,
|
||
foodTags: ["torrijas", "bacalao", "garbanzos", "pestinos", "potaje"],
|
||
recipeSlugs: [],
|
||
priority: 90,
|
||
},
|
||
{
|
||
id: "es-san-juan",
|
||
slug: "san-juan",
|
||
nameSv: "Noche de San Juan",
|
||
nameLocalized: "Noche de San Juan",
|
||
market: "ES",
|
||
dateRule: { kind: "fixed", monthDay: "06-23" },
|
||
leadDays: 5,
|
||
foodTags: ["coca", "sardinas", "cava", "pinones"],
|
||
recipeSlugs: [],
|
||
priority: 75,
|
||
},
|
||
{
|
||
id: "es-la-castanada",
|
||
slug: "la-castanada",
|
||
nameSv: "La Castañada",
|
||
nameLocalized: "La Castañada",
|
||
market: "ES",
|
||
dateRule: { kind: "fixed", monthDay: "11-01" },
|
||
leadDays: 5,
|
||
foodTags: ["castanas", "panellets", "boniatos", "huesos-de-santo"],
|
||
recipeSlugs: [],
|
||
priority: 70,
|
||
},
|
||
// --- Italien (IT) ---
|
||
{
|
||
id: "it-natale",
|
||
slug: "natale",
|
||
nameSv: "Natale",
|
||
nameLocalized: "Natale",
|
||
market: "IT",
|
||
dateRule: { kind: "fixed", monthDay: "12-25" },
|
||
leadDays: 21,
|
||
foodTags: ["panettone", "pandoro", "tortellini", "baccala", "cotechino", "arista"],
|
||
recipeSlugs: [],
|
||
priority: 100,
|
||
},
|
||
{
|
||
id: "it-capodanno",
|
||
slug: "capodanno",
|
||
nameSv: "Capodanno",
|
||
nameLocalized: "Capodanno",
|
||
market: "IT",
|
||
dateRule: { kind: "fixed", monthDay: "12-31" },
|
||
leadDays: 7,
|
||
foodTags: ["cotechino", "zampone", "lenticchie", "spumante"],
|
||
recipeSlugs: [],
|
||
priority: 90,
|
||
},
|
||
{
|
||
id: "it-epifania",
|
||
slug: "epifania",
|
||
nameSv: "Epifania",
|
||
nameLocalized: "Epifania",
|
||
market: "IT",
|
||
dateRule: { kind: "fixed", monthDay: "01-06" },
|
||
leadDays: 5,
|
||
foodTags: ["befanini", "carbone-dolce", "panettone"],
|
||
recipeSlugs: [],
|
||
priority: 75,
|
||
},
|
||
{
|
||
id: "it-carnevale",
|
||
slug: "carnevale",
|
||
nameSv: "Carnevale",
|
||
nameLocalized: "Carnevale",
|
||
market: "IT",
|
||
dateRule: { kind: "easter-offset", days: -47 },
|
||
leadDays: 7,
|
||
foodTags: ["chiacchiere", "castagnole", "frittelle"],
|
||
recipeSlugs: [],
|
||
priority: 75,
|
||
},
|
||
{
|
||
id: "it-pasqua",
|
||
slug: "pasqua",
|
||
nameSv: "Pasqua",
|
||
nameLocalized: "Pasqua",
|
||
market: "IT",
|
||
dateRule: { kind: "computed", algorithm: "easter" },
|
||
leadDays: 14,
|
||
foodTags: ["agnello", "colomba", "torta-pasqualina", "casatiello", "pastiera"],
|
||
recipeSlugs: [],
|
||
priority: 90,
|
||
},
|
||
{
|
||
id: "it-ferragosto",
|
||
slug: "ferragosto",
|
||
nameSv: "Ferragosto",
|
||
nameLocalized: "Ferragosto",
|
||
market: "IT",
|
||
dateRule: { kind: "fixed", monthDay: "08-15" },
|
||
leadDays: 5,
|
||
foodTags: ["grigliata", "pollo-ai-peperoni", "anguria", "pasta-fredda"],
|
||
recipeSlugs: [],
|
||
priority: 80,
|
||
},
|
||
// --- Portugal (PT) ---
|
||
{
|
||
id: "pt-natal",
|
||
slug: "natal",
|
||
nameSv: "Natal",
|
||
nameLocalized: "Natal",
|
||
market: "PT",
|
||
dateRule: { kind: "fixed", monthDay: "12-24" },
|
||
leadDays: 21,
|
||
foodTags: ["bacalhau", "polvo", "rabanadas", "filhoses", "bolo-rei", "arroz-doce"],
|
||
recipeSlugs: [],
|
||
priority: 100,
|
||
},
|
||
{
|
||
id: "pt-ano-novo",
|
||
slug: "ano-novo",
|
||
nameSv: "Ano Novo",
|
||
nameLocalized: "Ano Novo",
|
||
market: "PT",
|
||
dateRule: { kind: "fixed", monthDay: "12-31" },
|
||
leadDays: 7,
|
||
foodTags: ["passas", "bacalhau", "peru", "roupa-velha", "espumante"],
|
||
recipeSlugs: [],
|
||
priority: 85,
|
||
},
|
||
{
|
||
id: "pt-dia-de-reis",
|
||
slug: "dia-de-reis",
|
||
nameSv: "Dia de Reis",
|
||
nameLocalized: "Dia de Reis",
|
||
market: "PT",
|
||
dateRule: { kind: "fixed", monthDay: "01-06" },
|
||
leadDays: 5,
|
||
foodTags: ["bolo-rei", "bolo-rainha", "fruta-cristalizada"],
|
||
recipeSlugs: [],
|
||
priority: 75,
|
||
},
|
||
{
|
||
id: "pt-pascoa",
|
||
slug: "pascoa",
|
||
nameSv: "Páscoa",
|
||
nameLocalized: "Páscoa",
|
||
market: "PT",
|
||
dateRule: { kind: "computed", algorithm: "easter" },
|
||
leadDays: 14,
|
||
foodTags: ["cordeiro", "cabrito", "folar", "amendoas", "pao-de-lo"],
|
||
recipeSlugs: [],
|
||
priority: 90,
|
||
},
|
||
{
|
||
id: "pt-santos-populares",
|
||
slug: "santos-populares",
|
||
nameSv: "Santos Populares",
|
||
nameLocalized: "Santos Populares",
|
||
market: "PT",
|
||
dateRule: { kind: "range", startMonthDay: "06-12", endMonthDay: "06-29" },
|
||
leadDays: 5,
|
||
foodTags: ["sardinhas", "caldo-verde", "bifana", "pao-com-chourico"],
|
||
recipeSlugs: [],
|
||
priority: 85,
|
||
},
|
||
{
|
||
id: "pt-sao-martinho",
|
||
slug: "sao-martinho",
|
||
nameSv: "São Martinho",
|
||
nameLocalized: "São Martinho",
|
||
market: "PT",
|
||
dateRule: { kind: "fixed", monthDay: "11-11" },
|
||
leadDays: 5,
|
||
foodTags: ["castanhas", "agua-pe", "jeropiga"],
|
||
recipeSlugs: [],
|
||
priority: 70,
|
||
},
|
||
// --- Polen (PL) ---
|
||
{
|
||
id: "pl-wigilia",
|
||
slug: "wigilia",
|
||
nameSv: "Wigilia",
|
||
nameLocalized: "Wigilia",
|
||
market: "PL",
|
||
dateRule: { kind: "fixed", monthDay: "12-24" },
|
||
leadDays: 21,
|
||
foodTags: ["barszcz", "pierogi", "karp", "kapusta-z-grzybami", "sledz", "kutia"],
|
||
recipeSlugs: [],
|
||
priority: 100,
|
||
},
|
||
{
|
||
id: "pl-boze-narodzenie",
|
||
slug: "boze-narodzenie",
|
||
nameSv: "Boże Narodzenie",
|
||
nameLocalized: "Boże Narodzenie",
|
||
market: "PL",
|
||
dateRule: { kind: "fixed", monthDay: "12-25" },
|
||
leadDays: 14,
|
||
foodTags: ["bigos", "kielbasa", "pieczen", "zurek", "schab"],
|
||
recipeSlugs: [],
|
||
priority: 90,
|
||
},
|
||
{
|
||
id: "pl-wielkanoc",
|
||
slug: "wielkanoc",
|
||
nameSv: "Wielkanoc",
|
||
nameLocalized: "Wielkanoc",
|
||
market: "PL",
|
||
dateRule: { kind: "computed", algorithm: "easter" },
|
||
leadDays: 14,
|
||
foodTags: ["zurek", "biala-kielbasa", "jajka", "cwikla", "mazurek", "babka"],
|
||
recipeSlugs: [],
|
||
priority: 90,
|
||
},
|
||
{
|
||
id: "pl-tlusty-czwartek",
|
||
slug: "tlusty-czwartek",
|
||
nameSv: "Tłusty Czwartek",
|
||
nameLocalized: "Tłusty Czwartek",
|
||
market: "PL",
|
||
dateRule: { kind: "easter-offset", days: -52 },
|
||
leadDays: 3,
|
||
foodTags: ["paczki", "faworki", "chrust"],
|
||
recipeSlugs: [],
|
||
priority: 75,
|
||
},
|
||
{
|
||
id: "pl-sylwester",
|
||
slug: "sylwester",
|
||
nameSv: "Sylwester",
|
||
nameLocalized: "Sylwester",
|
||
market: "PL",
|
||
dateRule: { kind: "fixed", monthDay: "12-31" },
|
||
leadDays: 5,
|
||
foodTags: ["sledz", "tatar", "barszcz", "kielbasa"],
|
||
recipeSlugs: [],
|
||
priority: 80,
|
||
},
|
||
// --- Storbritannien (GB) ---
|
||
{
|
||
id: "gb-christmas",
|
||
slug: "christmas",
|
||
nameSv: "Christmas",
|
||
nameLocalized: "Christmas",
|
||
market: "GB",
|
||
dateRule: { kind: "fixed", monthDay: "12-25" },
|
||
leadDays: 21,
|
||
foodTags: [
|
||
"turkey",
|
||
"roast-potatoes",
|
||
"pigs-in-blankets",
|
||
"brussels-sprouts",
|
||
"christmas-pudding",
|
||
"mince-pies",
|
||
],
|
||
recipeSlugs: [],
|
||
priority: 100,
|
||
},
|
||
{
|
||
id: "gb-easter",
|
||
slug: "easter",
|
||
nameSv: "Easter",
|
||
nameLocalized: "Easter",
|
||
market: "GB",
|
||
dateRule: { kind: "computed", algorithm: "easter" },
|
||
leadDays: 12,
|
||
foodTags: ["roast-lamb", "mint-sauce", "hot-cross-buns", "simnel-cake"],
|
||
recipeSlugs: [],
|
||
priority: 90,
|
||
},
|
||
{
|
||
id: "gb-pancake-day",
|
||
slug: "pancake-day",
|
||
nameSv: "Pancake Day",
|
||
nameLocalized: "Pancake Day",
|
||
market: "GB",
|
||
dateRule: { kind: "easter-offset", days: -47 },
|
||
leadDays: 5,
|
||
foodTags: ["pancakes", "lemon", "sugar", "golden-syrup"],
|
||
recipeSlugs: [],
|
||
priority: 75,
|
||
},
|
||
{
|
||
id: "gb-bonfire-night",
|
||
slug: "bonfire-night",
|
||
nameSv: "Bonfire Night",
|
||
nameLocalized: "Bonfire Night",
|
||
market: "GB",
|
||
dateRule: { kind: "fixed", monthDay: "11-05" },
|
||
leadDays: 5,
|
||
foodTags: ["bonfire-toffee", "parkin", "toffee-apples", "jacket-potatoes", "sausages"],
|
||
recipeSlugs: [],
|
||
priority: 75,
|
||
},
|
||
{
|
||
id: "gb-burns-night",
|
||
slug: "burns-night",
|
||
nameSv: "Burns Night",
|
||
nameLocalized: "Burns Night",
|
||
market: "GB",
|
||
dateRule: { kind: "fixed", monthDay: "01-25" },
|
||
leadDays: 7,
|
||
foodTags: ["haggis", "neeps", "tatties", "cranachan"],
|
||
recipeSlugs: [],
|
||
priority: 70,
|
||
},
|
||
{
|
||
id: "gb-boxing-day",
|
||
slug: "boxing-day",
|
||
nameSv: "Boxing Day",
|
||
nameLocalized: "Boxing Day",
|
||
market: "GB",
|
||
dateRule: { kind: "fixed", monthDay: "12-26" },
|
||
leadDays: 3,
|
||
foodTags: ["turkey-leftovers", "bubble-and-squeak", "cold-cuts", "pork-pie"],
|
||
recipeSlugs: [],
|
||
priority: 65,
|
||
},
|
||
// --- USA (US) ---
|
||
{
|
||
id: "us-thanksgiving",
|
||
slug: "thanksgiving",
|
||
nameSv: "Thanksgiving",
|
||
nameLocalized: "Thanksgiving",
|
||
market: "US",
|
||
dateRule: { kind: "nth-weekday", month: 11, weekday: 4, n: 4 },
|
||
leadDays: 21,
|
||
foodTags: [
|
||
"turkey",
|
||
"stuffing",
|
||
"mashed-potatoes",
|
||
"gravy",
|
||
"cranberry-sauce",
|
||
"green-bean-casserole",
|
||
"pumpkin-pie",
|
||
],
|
||
recipeSlugs: [],
|
||
priority: 100,
|
||
},
|
||
{
|
||
id: "us-christmas",
|
||
slug: "christmas",
|
||
nameSv: "Christmas",
|
||
nameLocalized: "Christmas",
|
||
market: "US",
|
||
dateRule: { kind: "fixed", monthDay: "12-25" },
|
||
leadDays: 21,
|
||
foodTags: ["ham", "prime-rib", "roast-turkey", "christmas-cookies", "eggnog"],
|
||
recipeSlugs: [],
|
||
priority: 100,
|
||
},
|
||
{
|
||
id: "us-fourth-of-july",
|
||
slug: "fourth-of-july",
|
||
nameSv: "Independence Day",
|
||
nameLocalized: "Independence Day",
|
||
market: "US",
|
||
dateRule: { kind: "fixed", monthDay: "07-04" },
|
||
leadDays: 7,
|
||
foodTags: [
|
||
"hamburgers",
|
||
"hot-dogs",
|
||
"bbq-ribs",
|
||
"corn-on-the-cob",
|
||
"potato-salad",
|
||
"apple-pie",
|
||
],
|
||
recipeSlugs: [],
|
||
priority: 85,
|
||
},
|
||
{
|
||
id: "us-super-bowl",
|
||
slug: "super-bowl",
|
||
nameSv: "Super Bowl",
|
||
nameLocalized: "Super Bowl",
|
||
market: "US",
|
||
dateRule: { kind: "nth-weekday", month: 2, weekday: 0, n: 2 },
|
||
leadDays: 5,
|
||
foodTags: ["chicken-wings", "nachos", "chili", "guacamole", "sliders"],
|
||
recipeSlugs: [],
|
||
priority: 80,
|
||
},
|
||
{
|
||
id: "us-easter",
|
||
slug: "easter",
|
||
nameSv: "Easter",
|
||
nameLocalized: "Easter",
|
||
market: "US",
|
||
dateRule: { kind: "computed", algorithm: "easter" },
|
||
leadDays: 10,
|
||
foodTags: ["ham", "deviled-eggs", "scalloped-potatoes", "carrot-cake"],
|
||
recipeSlugs: [],
|
||
priority: 85,
|
||
},
|
||
{
|
||
id: "us-memorial-day",
|
||
slug: "memorial-day",
|
||
nameSv: "Memorial Day",
|
||
nameLocalized: "Memorial Day",
|
||
market: "US",
|
||
dateRule: { kind: "nth-weekday", month: 5, weekday: 1, n: "last" },
|
||
leadDays: 5,
|
||
foodTags: ["hamburgers", "hot-dogs", "bbq", "baked-beans", "potato-salad"],
|
||
recipeSlugs: [],
|
||
priority: 75,
|
||
},
|
||
// --- Kanada (CA) ---
|
||
{
|
||
id: "ca-thanksgiving",
|
||
slug: "thanksgiving",
|
||
nameSv: "Thanksgiving",
|
||
nameLocalized: "Thanksgiving",
|
||
market: "CA",
|
||
dateRule: { kind: "nth-weekday", month: 10, weekday: 1, n: 2 },
|
||
leadDays: 14,
|
||
foodTags: [
|
||
"turkey",
|
||
"stuffing",
|
||
"gravy",
|
||
"cranberry-sauce",
|
||
"pumpkin-pie",
|
||
"butter-tarts",
|
||
],
|
||
recipeSlugs: [],
|
||
priority: 100,
|
||
},
|
||
{
|
||
id: "ca-christmas",
|
||
slug: "christmas",
|
||
nameSv: "Christmas",
|
||
nameLocalized: "Christmas",
|
||
market: "CA",
|
||
dateRule: { kind: "fixed", monthDay: "12-25" },
|
||
leadDays: 21,
|
||
foodTags: ["turkey", "ham", "tourtiere", "butter-tarts", "nanaimo-bars"],
|
||
recipeSlugs: [],
|
||
priority: 100,
|
||
},
|
||
{
|
||
id: "ca-canada-day",
|
||
slug: "canada-day",
|
||
nameSv: "Canada Day",
|
||
nameLocalized: "Canada Day",
|
||
market: "CA",
|
||
dateRule: { kind: "fixed", monthDay: "07-01" },
|
||
leadDays: 5,
|
||
foodTags: ["bbq", "hamburgers", "hot-dogs", "poutine", "maple"],
|
||
recipeSlugs: [],
|
||
priority: 80,
|
||
},
|
||
{
|
||
id: "ca-easter",
|
||
slug: "easter",
|
||
nameSv: "Easter",
|
||
nameLocalized: "Easter",
|
||
market: "CA",
|
||
dateRule: { kind: "computed", algorithm: "easter" },
|
||
leadDays: 10,
|
||
foodTags: ["ham", "roast-lamb", "scalloped-potatoes", "hot-cross-buns"],
|
||
recipeSlugs: [],
|
||
priority: 85,
|
||
},
|
||
];
|