Merge branch 'main' into feat/ingredient-reproducible-flag
Resolves the conflict from PR #28 (Ciqual ingredient expansion) merging first: both branches touched reference-seed-data.ts's SAUCES group. Also flags the three newly-merged sauces (Aïoli, Sauce vinaigrette, Houmous) and Gressin as reproducible — these were in the original curation plan but skipped earlier since they didn't exist on this branch's base yet. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
commit
36fbe02299
3 changed files with 353 additions and 0 deletions
|
|
@ -97,6 +97,20 @@ const INGREDIENT_KEYS: Record<string, string> = {
|
||||||
Shiitake: "shiitake",
|
Shiitake: "shiitake",
|
||||||
Daikon: "daikon",
|
Daikon: "daikon",
|
||||||
"Piment vert frais": "fresh_green_chili",
|
"Piment vert frais": "fresh_green_chili",
|
||||||
|
Cardon: "cardoon",
|
||||||
|
"Chicorée rouge": "radicchio",
|
||||||
|
"Chou romanesco": "romanesco",
|
||||||
|
"Chou-rave": "kohlrabi",
|
||||||
|
"Chou chinois": "napa_cabbage",
|
||||||
|
"Céleri-rave": "celeriac",
|
||||||
|
Gombo: "okra",
|
||||||
|
"Oignon nouveau": "spring_onion",
|
||||||
|
Potimarron: "red_kuri_squash",
|
||||||
|
Rutabaga: "rutabaga",
|
||||||
|
Salicorne: "samphire",
|
||||||
|
Salsifis: "salsify",
|
||||||
|
Mâche: "lambs_lettuce",
|
||||||
|
Scarole: "escarole",
|
||||||
|
|
||||||
// --- Produits frais / Fruits -----------------------------------------
|
// --- Produits frais / Fruits -----------------------------------------
|
||||||
Citron: "lemon",
|
Citron: "lemon",
|
||||||
|
|
@ -127,6 +141,12 @@ const INGREDIENT_KEYS: Record<string, string> = {
|
||||||
Grenade: "pomegranate",
|
Grenade: "pomegranate",
|
||||||
Rhubarbe: "rhubarb",
|
Rhubarbe: "rhubarb",
|
||||||
Coing: "quince",
|
Coing: "quince",
|
||||||
|
Cassis: "blackcurrant",
|
||||||
|
Canneberge: "cranberry",
|
||||||
|
Groseille: "redcurrant",
|
||||||
|
Kaki: "persimmon",
|
||||||
|
Nectarine: "nectarine",
|
||||||
|
Tamarin: "tamarind",
|
||||||
|
|
||||||
// --- Produits frais / Herbes fraîches ---------------------------------
|
// --- Produits frais / Herbes fraîches ---------------------------------
|
||||||
Basilic: "basil",
|
Basilic: "basil",
|
||||||
|
|
@ -169,12 +189,43 @@ const INGREDIENT_KEYS: Record<string, string> = {
|
||||||
Pancetta: "pancetta",
|
Pancetta: "pancetta",
|
||||||
Mortadelle: "mortadella",
|
Mortadelle: "mortadella",
|
||||||
Salami: "salami",
|
Salami: "salami",
|
||||||
|
Andouille: "andouille",
|
||||||
|
Andouillette: "andouillette",
|
||||||
|
"Boudin blanc": "white_pudding",
|
||||||
|
"Boudin noir": "black_pudding",
|
||||||
|
Cervelas: "cervelat",
|
||||||
|
Rillettes: "rillettes",
|
||||||
|
"Saucisson sec": "dry_cured_sausage",
|
||||||
|
"Jambon de Bayonne": "bayonne_ham",
|
||||||
|
Coppa: "coppa",
|
||||||
|
"Rosette (saucisson)": "rosette_sausage",
|
||||||
|
"Foie de veau": "veal_liver",
|
||||||
|
"Rognons de veau": "veal_kidneys",
|
||||||
|
"Cervelle de veau": "veal_brain",
|
||||||
|
"Ris de veau": "veal_sweetbread",
|
||||||
|
"Langue de bœuf": "beef_tongue",
|
||||||
|
Tripes: "tripe",
|
||||||
|
Cerf: "venison",
|
||||||
|
Chevreuil: "roe_deer",
|
||||||
|
Sanglier: "wild_boar",
|
||||||
|
Cheval: "horse_meat",
|
||||||
|
"Cœur de bœuf": "beef_heart",
|
||||||
|
"Foie gras": "foie_gras",
|
||||||
|
"Museau de bœuf": "beef_muzzle",
|
||||||
|
"Viande des Grisons": "grisons_dried_beef",
|
||||||
|
|
||||||
// --- Boucherie & poissonnerie / Volailles -----------------------------
|
// --- Boucherie & poissonnerie / Volailles -----------------------------
|
||||||
Poulet: "chicken",
|
Poulet: "chicken",
|
||||||
Dinde: "turkey",
|
Dinde: "turkey",
|
||||||
Canard: "duck",
|
Canard: "duck",
|
||||||
"Magret de canard": "duck_breast",
|
"Magret de canard": "duck_breast",
|
||||||
|
Caille: "quail",
|
||||||
|
Pintade: "guinea_fowl",
|
||||||
|
Oie: "goose",
|
||||||
|
"Foie de volaille": "poultry_liver",
|
||||||
|
Chapon: "capon",
|
||||||
|
Pigeon: "pigeon",
|
||||||
|
Faisan: "pheasant",
|
||||||
|
|
||||||
// --- Boucherie & poissonnerie / Poissons -------------------------------
|
// --- Boucherie & poissonnerie / Poissons -------------------------------
|
||||||
Saumon: "salmon",
|
Saumon: "salmon",
|
||||||
|
|
@ -207,6 +258,11 @@ const INGREDIENT_KEYS: Record<string, string> = {
|
||||||
Panga: "pangasius",
|
Panga: "pangasius",
|
||||||
"Saumon fumé": "smoked_salmon",
|
"Saumon fumé": "smoked_salmon",
|
||||||
"Poisson séché": "dried_fish",
|
"Poisson séché": "dried_fish",
|
||||||
|
Anguille: "eel",
|
||||||
|
"Carrelet (ou plie)": "plaice",
|
||||||
|
Morue: "salt_cod",
|
||||||
|
Limande: "lemon_sole",
|
||||||
|
Rascasse: "scorpionfish",
|
||||||
|
|
||||||
// --- Boucherie & poissonnerie / Crustacés & fruits de mer -------------
|
// --- Boucherie & poissonnerie / Crustacés & fruits de mer -------------
|
||||||
Crevettes: "shrimp",
|
Crevettes: "shrimp",
|
||||||
|
|
@ -221,6 +277,13 @@ const INGREDIENT_KEYS: Record<string, string> = {
|
||||||
Poulpe: "octopus",
|
Poulpe: "octopus",
|
||||||
Palourdes: "clams",
|
Palourdes: "clams",
|
||||||
Bulots: "whelks",
|
Bulots: "whelks",
|
||||||
|
"Araignée de mer": "spider_crab",
|
||||||
|
Bigorneau: "periwinkle",
|
||||||
|
Écrevisse: "crayfish",
|
||||||
|
"Crevette grise": "grey_shrimp",
|
||||||
|
Coque: "cockle",
|
||||||
|
Escargot: "snail",
|
||||||
|
Seiche: "cuttlefish",
|
||||||
|
|
||||||
// --- Épicerie sèche / Féculents ----------------------------------------
|
// --- Épicerie sèche / Féculents ----------------------------------------
|
||||||
Semoule: "semolina",
|
Semoule: "semolina",
|
||||||
|
|
@ -261,6 +324,8 @@ const INGREDIENT_KEYS: Record<string, string> = {
|
||||||
Fèves: "fava_beans",
|
Fèves: "fava_beans",
|
||||||
Edamame: "edamame",
|
Edamame: "edamame",
|
||||||
"Haricots pinto": "pinto_beans",
|
"Haricots pinto": "pinto_beans",
|
||||||
|
"Haricots flageolets": "flageolet_beans",
|
||||||
|
"Lentilles blondes": "golden_lentils",
|
||||||
|
|
||||||
// --- Épicerie sèche / Graines & fruits secs ----------------------------
|
// --- Épicerie sèche / Graines & fruits secs ----------------------------
|
||||||
Cacahuètes: "peanuts_shelled",
|
Cacahuètes: "peanuts_shelled",
|
||||||
|
|
@ -313,6 +378,7 @@ const INGREDIENT_KEYS: Record<string, string> = {
|
||||||
Ciabatta: "ciabatta",
|
Ciabatta: "ciabatta",
|
||||||
"Tortilla de maïs": "corn_tortilla",
|
"Tortilla de maïs": "corn_tortilla",
|
||||||
"Tortilla de blé": "wheat_tortilla",
|
"Tortilla de blé": "wheat_tortilla",
|
||||||
|
Gressin: "breadstick",
|
||||||
|
|
||||||
// --- Boulangerie / Pâtes à cuire -----------------------------------------
|
// --- Boulangerie / Pâtes à cuire -----------------------------------------
|
||||||
"Pâte feuilletée": "puff_pastry",
|
"Pâte feuilletée": "puff_pastry",
|
||||||
|
|
@ -341,6 +407,39 @@ const INGREDIENT_KEYS: Record<string, string> = {
|
||||||
Pecorino: "pecorino",
|
Pecorino: "pecorino",
|
||||||
Gorgonzola: "gorgonzola",
|
Gorgonzola: "gorgonzola",
|
||||||
Cheddar: "cheddar",
|
Cheddar: "cheddar",
|
||||||
|
Brie: "brie",
|
||||||
|
Camembert: "camembert",
|
||||||
|
Roquefort: "roquefort",
|
||||||
|
Munster: "munster",
|
||||||
|
Reblochon: "reblochon",
|
||||||
|
Cantal: "cantal",
|
||||||
|
Beaufort: "beaufort",
|
||||||
|
"Saint-Nectaire": "saint_nectaire",
|
||||||
|
"Bleu (fromage)": "blue_cheese",
|
||||||
|
Cancoillotte: "cancoillotte",
|
||||||
|
Tomme: "tomme",
|
||||||
|
Époisses: "epoisses",
|
||||||
|
Chaource: "chaource",
|
||||||
|
Livarot: "livarot",
|
||||||
|
"Pont-l'Évêque": "pont_leveque",
|
||||||
|
Morbier: "morbier",
|
||||||
|
"Raclette (fromage)": "raclette_cheese",
|
||||||
|
"Fourme d'Ambert": "fourme_d_ambert",
|
||||||
|
Salers: "salers",
|
||||||
|
"Ossau-Iraty": "ossau_iraty",
|
||||||
|
Vacherin: "vacherin",
|
||||||
|
"Saint-Marcellin": "saint_marcellin",
|
||||||
|
Neufchâtel: "neufchatel",
|
||||||
|
"Crottin de Chavignol": "crottin_de_chavignol",
|
||||||
|
Abondance: "abondance_cheese",
|
||||||
|
"Carré de l'Est": "carre_de_l_est",
|
||||||
|
Edam: "edam",
|
||||||
|
Gouda: "gouda",
|
||||||
|
Mimolette: "mimolette",
|
||||||
|
Maroilles: "maroilles",
|
||||||
|
"Mont d'or": "mont_dor",
|
||||||
|
Kéfir: "kefir",
|
||||||
|
"Yaourt à la grecque": "greek_yogurt",
|
||||||
|
|
||||||
// --- Crémerie & fromage / Œufs -------------------------------------------
|
// --- Crémerie & fromage / Œufs -------------------------------------------
|
||||||
Œuf: "egg",
|
Œuf: "egg",
|
||||||
|
|
@ -432,6 +531,9 @@ const INGREDIENT_KEYS: Record<string, string> = {
|
||||||
"Pâte de curry rouge (thaï)": "red_curry_paste",
|
"Pâte de curry rouge (thaï)": "red_curry_paste",
|
||||||
"Pâte de curry vert (thaï)": "green_curry_paste",
|
"Pâte de curry vert (thaï)": "green_curry_paste",
|
||||||
Tahini: "tahini",
|
Tahini: "tahini",
|
||||||
|
Aïoli: "aioli",
|
||||||
|
"Sauce vinaigrette": "vinaigrette",
|
||||||
|
Houmous: "hummus",
|
||||||
|
|
||||||
// --- Condiments & épices / Assaisonnements -----------------------------------
|
// --- Condiments & épices / Assaisonnements -----------------------------------
|
||||||
"Huile d'olive": "olive_oil",
|
"Huile d'olive": "olive_oil",
|
||||||
|
|
@ -444,8 +546,11 @@ const INGREDIENT_KEYS: Record<string, string> = {
|
||||||
"Vinaigre balsamique": "balsamic_vinegar",
|
"Vinaigre balsamique": "balsamic_vinegar",
|
||||||
Câpres: "capers",
|
Câpres: "capers",
|
||||||
Olives: "olives",
|
Olives: "olives",
|
||||||
|
"Olives noires": "black_olives",
|
||||||
|
"Olives vertes": "green_olives",
|
||||||
"Vin blanc (cuisine)": "white_wine",
|
"Vin blanc (cuisine)": "white_wine",
|
||||||
"Vin rouge (cuisine)": "red_wine",
|
"Vin rouge (cuisine)": "red_wine",
|
||||||
|
"Vin rosé (cuisine)": "rose_wine",
|
||||||
"Vinaigre de vin rouge": "red_wine_vinegar",
|
"Vinaigre de vin rouge": "red_wine_vinegar",
|
||||||
"Vinaigre de vin blanc": "white_wine_vinegar",
|
"Vinaigre de vin blanc": "white_wine_vinegar",
|
||||||
"Vinaigre de xérès": "sherry_vinegar",
|
"Vinaigre de xérès": "sherry_vinegar",
|
||||||
|
|
@ -453,6 +558,10 @@ const INGREDIENT_KEYS: Record<string, string> = {
|
||||||
"Huile de noisette": "hazelnut_oil",
|
"Huile de noisette": "hazelnut_oil",
|
||||||
"Huile d'arachide": "peanut_oil",
|
"Huile d'arachide": "peanut_oil",
|
||||||
"Huile pimentée": "chili_oil",
|
"Huile pimentée": "chili_oil",
|
||||||
|
"Huile de maïs": "corn_oil",
|
||||||
|
"Huile de pépins de raisin": "grapeseed_oil",
|
||||||
|
"Huile de soja": "soybean_oil",
|
||||||
|
"Huile de palme": "palm_oil",
|
||||||
"Vinaigre de riz": "rice_vinegar",
|
"Vinaigre de riz": "rice_vinegar",
|
||||||
Mirin: "mirin",
|
Mirin: "mirin",
|
||||||
"Saké (cuisine)": "sake",
|
"Saké (cuisine)": "sake",
|
||||||
|
|
|
||||||
|
|
@ -170,6 +170,21 @@ export const INGREDIENT_GROUPS: Array<{
|
||||||
{ name: "Shiitake", allergenNames: [] },
|
{ name: "Shiitake", allergenNames: [] },
|
||||||
{ name: "Daikon", allergenNames: [] },
|
{ name: "Daikon", allergenNames: [] },
|
||||||
{ name: "Piment vert frais", allergenNames: [] },
|
{ name: "Piment vert frais", allergenNames: [] },
|
||||||
|
{ name: "Cardon", allergenNames: [] },
|
||||||
|
// Second Ciqual pass — see the PR description.
|
||||||
|
{ name: "Chicorée rouge", allergenNames: [] },
|
||||||
|
{ name: "Chou romanesco", allergenNames: [] },
|
||||||
|
{ name: "Chou-rave", allergenNames: [] },
|
||||||
|
{ name: "Chou chinois", allergenNames: [] },
|
||||||
|
{ name: "Céleri-rave", allergenNames: ["Céleri"] },
|
||||||
|
{ name: "Gombo", allergenNames: [] },
|
||||||
|
{ name: "Oignon nouveau", allergenNames: [] },
|
||||||
|
{ name: "Potimarron", allergenNames: [] },
|
||||||
|
{ name: "Rutabaga", allergenNames: [] },
|
||||||
|
{ name: "Salicorne", allergenNames: [] },
|
||||||
|
{ name: "Salsifis", allergenNames: [] },
|
||||||
|
{ name: "Mâche", allergenNames: [] },
|
||||||
|
{ name: "Scarole", allergenNames: [] },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -206,6 +221,13 @@ export const INGREDIENT_GROUPS: Array<{
|
||||||
{ name: "Grenade", allergenNames: [] },
|
{ name: "Grenade", allergenNames: [] },
|
||||||
{ name: "Rhubarbe", allergenNames: [] },
|
{ name: "Rhubarbe", allergenNames: [] },
|
||||||
{ name: "Coing", allergenNames: [] },
|
{ name: "Coing", allergenNames: [] },
|
||||||
|
{ name: "Cassis", allergenNames: [] },
|
||||||
|
{ name: "Canneberge", allergenNames: [] },
|
||||||
|
// Second Ciqual pass.
|
||||||
|
{ name: "Groseille", allergenNames: [] },
|
||||||
|
{ name: "Kaki", allergenNames: [] },
|
||||||
|
{ name: "Nectarine", allergenNames: [] },
|
||||||
|
{ name: "Tamarin", allergenNames: [] },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -263,6 +285,34 @@ export const INGREDIENT_GROUPS: Array<{
|
||||||
{ name: "Pancetta", allergenNames: [] },
|
{ name: "Pancetta", allergenNames: [] },
|
||||||
{ name: "Mortadelle", allergenNames: [] },
|
{ name: "Mortadelle", allergenNames: [] },
|
||||||
{ name: "Salami", allergenNames: [] },
|
{ name: "Salami", allergenNames: [] },
|
||||||
|
// Added from the Ciqual 2025 "aliments moyens" table — French
|
||||||
|
// charcuterie/offal/game staples the pantry list was missing (see
|
||||||
|
// the PR description for how this batch was sourced/curated).
|
||||||
|
{ name: "Andouille", allergenNames: [] },
|
||||||
|
{ name: "Andouillette", allergenNames: [] },
|
||||||
|
{ name: "Boudin blanc", allergenNames: [] },
|
||||||
|
{ name: "Boudin noir", allergenNames: [] },
|
||||||
|
{ name: "Cervelas", allergenNames: [] },
|
||||||
|
{ name: "Rillettes", allergenNames: [] },
|
||||||
|
{ name: "Saucisson sec", allergenNames: [] },
|
||||||
|
{ name: "Jambon de Bayonne", allergenNames: [] },
|
||||||
|
{ name: "Coppa", allergenNames: [] },
|
||||||
|
{ name: "Rosette (saucisson)", allergenNames: [] },
|
||||||
|
{ name: "Foie de veau", allergenNames: [] },
|
||||||
|
{ name: "Rognons de veau", allergenNames: [] },
|
||||||
|
{ name: "Cervelle de veau", allergenNames: [] },
|
||||||
|
{ name: "Ris de veau", allergenNames: [] },
|
||||||
|
{ name: "Langue de bœuf", allergenNames: [] },
|
||||||
|
{ name: "Tripes", allergenNames: [] },
|
||||||
|
{ name: "Cerf", allergenNames: [] },
|
||||||
|
{ name: "Chevreuil", allergenNames: [] },
|
||||||
|
{ name: "Sanglier", allergenNames: [] },
|
||||||
|
// Second Ciqual pass.
|
||||||
|
{ name: "Cheval", allergenNames: [] },
|
||||||
|
{ name: "Cœur de bœuf", allergenNames: [] },
|
||||||
|
{ name: "Foie gras", allergenNames: [] },
|
||||||
|
{ name: "Museau de bœuf", allergenNames: [] },
|
||||||
|
{ name: "Viande des Grisons", allergenNames: [] },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -275,6 +325,15 @@ export const INGREDIENT_GROUPS: Array<{
|
||||||
{ name: "Dinde", allergenNames: [] },
|
{ name: "Dinde", allergenNames: [] },
|
||||||
{ name: "Canard", allergenNames: [] },
|
{ name: "Canard", allergenNames: [] },
|
||||||
{ name: "Magret de canard", allergenNames: [] },
|
{ name: "Magret de canard", allergenNames: [] },
|
||||||
|
// Ciqual 2025 additions — see the VIANDES group above.
|
||||||
|
{ name: "Caille", allergenNames: [] },
|
||||||
|
{ name: "Pintade", allergenNames: [] },
|
||||||
|
{ name: "Oie", allergenNames: [] },
|
||||||
|
{ name: "Foie de volaille", allergenNames: [] },
|
||||||
|
// Second Ciqual pass.
|
||||||
|
{ name: "Chapon", allergenNames: [] },
|
||||||
|
{ name: "Pigeon", allergenNames: [] },
|
||||||
|
{ name: "Faisan", allergenNames: [] },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -313,6 +372,13 @@ export const INGREDIENT_GROUPS: Array<{
|
||||||
{ name: "Panga", allergenNames: ["Poissons"] },
|
{ name: "Panga", allergenNames: ["Poissons"] },
|
||||||
{ name: "Saumon fumé", allergenNames: ["Poissons"] },
|
{ name: "Saumon fumé", allergenNames: ["Poissons"] },
|
||||||
{ name: "Poisson séché", allergenNames: ["Poissons"] },
|
{ name: "Poisson séché", allergenNames: ["Poissons"] },
|
||||||
|
// Ciqual 2025 additions.
|
||||||
|
{ name: "Anguille", allergenNames: ["Poissons"] },
|
||||||
|
{ name: "Carrelet (ou plie)", allergenNames: ["Poissons"] },
|
||||||
|
// Second Ciqual pass.
|
||||||
|
{ name: "Morue", allergenNames: ["Poissons"] },
|
||||||
|
{ name: "Limande", allergenNames: ["Poissons"] },
|
||||||
|
{ name: "Rascasse", allergenNames: ["Poissons"] },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -333,6 +399,15 @@ export const INGREDIENT_GROUPS: Array<{
|
||||||
{ name: "Poulpe", allergenNames: ["Mollusques"] },
|
{ name: "Poulpe", allergenNames: ["Mollusques"] },
|
||||||
{ name: "Palourdes", allergenNames: ["Mollusques"] },
|
{ name: "Palourdes", allergenNames: ["Mollusques"] },
|
||||||
{ name: "Bulots", allergenNames: ["Mollusques"] },
|
{ name: "Bulots", allergenNames: ["Mollusques"] },
|
||||||
|
// Ciqual 2025 additions.
|
||||||
|
{ name: "Araignée de mer", allergenNames: ["Crustacés"] },
|
||||||
|
{ name: "Bigorneau", allergenNames: ["Mollusques"] },
|
||||||
|
// Second Ciqual pass.
|
||||||
|
{ name: "Écrevisse", allergenNames: ["Crustacés"] },
|
||||||
|
{ name: "Crevette grise", allergenNames: ["Crustacés"] },
|
||||||
|
{ name: "Coque", allergenNames: ["Mollusques"] },
|
||||||
|
{ name: "Escargot", allergenNames: ["Mollusques"] },
|
||||||
|
{ name: "Seiche", allergenNames: ["Mollusques"] },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
// =========================================================================
|
// =========================================================================
|
||||||
|
|
@ -388,6 +463,9 @@ export const INGREDIENT_GROUPS: Array<{
|
||||||
{ name: "Fèves", allergenNames: [] },
|
{ name: "Fèves", allergenNames: [] },
|
||||||
{ name: "Edamame", allergenNames: ["Soja"] },
|
{ name: "Edamame", allergenNames: ["Soja"] },
|
||||||
{ name: "Haricots pinto", allergenNames: [] },
|
{ name: "Haricots pinto", allergenNames: [] },
|
||||||
|
// Second Ciqual pass.
|
||||||
|
{ name: "Haricots flageolets", allergenNames: [] },
|
||||||
|
{ name: "Lentilles blondes", allergenNames: [] },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -475,6 +553,8 @@ export const INGREDIENT_GROUPS: Array<{
|
||||||
{ name: "Ciabatta", reproducible: true, allergenNames: ["Gluten"] },
|
{ name: "Ciabatta", reproducible: true, allergenNames: ["Gluten"] },
|
||||||
{ name: "Tortilla de maïs", allergenNames: [] },
|
{ name: "Tortilla de maïs", allergenNames: [] },
|
||||||
{ name: "Tortilla de blé", allergenNames: ["Gluten"] },
|
{ name: "Tortilla de blé", allergenNames: ["Gluten"] },
|
||||||
|
// Second Ciqual pass.
|
||||||
|
{ name: "Gressin", reproducible: true, allergenNames: ["Gluten"] },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -533,6 +613,44 @@ export const INGREDIENT_GROUPS: Array<{
|
||||||
{ name: "Pecorino", icon: "CHEESE", allergenNames: ["Lait"] },
|
{ name: "Pecorino", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
{ name: "Gorgonzola", icon: "CHEESE", allergenNames: ["Lait"] },
|
{ name: "Gorgonzola", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
{ name: "Cheddar", icon: "CHEESE", allergenNames: ["Lait"] },
|
{ name: "Cheddar", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
// Ciqual 2025 additions — classic French regional cheeses the
|
||||||
|
// catalog only had a handful of internationally-known ones for
|
||||||
|
// (Emmental, Parmesan, Mozzarella…), missing the actual French
|
||||||
|
// aisle staples Ciqual's "aliments moyens" table surfaced.
|
||||||
|
{ name: "Brie", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Camembert", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Roquefort", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Munster", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Reblochon", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Cantal", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Beaufort", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Saint-Nectaire", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Bleu (fromage)", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Cancoillotte", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Tomme", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Époisses", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Chaource", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Livarot", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Pont-l'Évêque", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Morbier", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Raclette (fromage)", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Fourme d'Ambert", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Salers", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Ossau-Iraty", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Vacherin", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Saint-Marcellin", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Neufchâtel", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Crottin de Chavignol", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Abondance", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Carré de l'Est", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
// Second Ciqual pass.
|
||||||
|
{ name: "Edam", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Gouda", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Mimolette", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Maroilles", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Mont d'or", icon: "CHEESE", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Kéfir", allergenNames: ["Lait"] },
|
||||||
|
{ name: "Yaourt à la grecque", allergenNames: ["Lait"] },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -704,6 +822,15 @@ export const INGREDIENT_GROUPS: Array<{
|
||||||
{ name: "Pâte de curry rouge (thaï)", allergenNames: [] },
|
{ name: "Pâte de curry rouge (thaï)", allergenNames: [] },
|
||||||
{ name: "Pâte de curry vert (thaï)", allergenNames: [] },
|
{ name: "Pâte de curry vert (thaï)", allergenNames: [] },
|
||||||
{ name: "Tahini", reproducible: true, allergenNames: ["Graines de sésame"] },
|
{ name: "Tahini", reproducible: true, allergenNames: ["Graines de sésame"] },
|
||||||
|
// Second Ciqual pass.
|
||||||
|
{
|
||||||
|
name: "Aïoli",
|
||||||
|
reproducible: true,
|
||||||
|
allergenNames: ["Œufs"],
|
||||||
|
dietNames: ["Végétarien", "Pescétarien"],
|
||||||
|
},
|
||||||
|
{ name: "Sauce vinaigrette", reproducible: true, allergenNames: [] },
|
||||||
|
{ name: "Houmous", reproducible: true, allergenNames: ["Graines de sésame"] },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -722,8 +849,11 @@ export const INGREDIENT_GROUPS: Array<{
|
||||||
{ name: "Vinaigre balsamique", allergenNames: ["Sulfites"] },
|
{ name: "Vinaigre balsamique", allergenNames: ["Sulfites"] },
|
||||||
{ name: "Câpres", icon: "JAR", allergenNames: [] },
|
{ name: "Câpres", icon: "JAR", allergenNames: [] },
|
||||||
{ name: "Olives", icon: "JAR", allergenNames: [] },
|
{ name: "Olives", icon: "JAR", allergenNames: [] },
|
||||||
|
{ name: "Olives noires", icon: "JAR", allergenNames: [] },
|
||||||
|
{ name: "Olives vertes", icon: "JAR", allergenNames: [] },
|
||||||
{ name: "Vin blanc (cuisine)", icon: "DRINK", allergenNames: ["Sulfites"] },
|
{ name: "Vin blanc (cuisine)", icon: "DRINK", allergenNames: ["Sulfites"] },
|
||||||
{ name: "Vin rouge (cuisine)", icon: "DRINK", allergenNames: ["Sulfites"] },
|
{ name: "Vin rouge (cuisine)", icon: "DRINK", allergenNames: ["Sulfites"] },
|
||||||
|
{ name: "Vin rosé (cuisine)", icon: "DRINK", allergenNames: ["Sulfites"] },
|
||||||
{ name: "Vinaigre de vin rouge", allergenNames: ["Sulfites"] },
|
{ name: "Vinaigre de vin rouge", allergenNames: ["Sulfites"] },
|
||||||
{ name: "Vinaigre de vin blanc", allergenNames: ["Sulfites"] },
|
{ name: "Vinaigre de vin blanc", allergenNames: ["Sulfites"] },
|
||||||
{ name: "Vinaigre de xérès", allergenNames: ["Sulfites"] },
|
{ name: "Vinaigre de xérès", allergenNames: ["Sulfites"] },
|
||||||
|
|
@ -732,6 +862,11 @@ export const INGREDIENT_GROUPS: Array<{
|
||||||
{ name: "Huile d'arachide", allergenNames: ["Arachides"] },
|
{ name: "Huile d'arachide", allergenNames: ["Arachides"] },
|
||||||
{ name: "Huile pimentée", allergenNames: [] },
|
{ name: "Huile pimentée", allergenNames: [] },
|
||||||
{ name: "Vinaigre de riz", allergenNames: [] },
|
{ name: "Vinaigre de riz", allergenNames: [] },
|
||||||
|
// Second Ciqual pass.
|
||||||
|
{ name: "Huile de maïs", allergenNames: [] },
|
||||||
|
{ name: "Huile de pépins de raisin", allergenNames: [] },
|
||||||
|
{ name: "Huile de soja", allergenNames: ["Soja"] },
|
||||||
|
{ name: "Huile de palme", allergenNames: [] },
|
||||||
{ name: "Mirin", icon: "DRINK", allergenNames: [] },
|
{ name: "Mirin", icon: "DRINK", allergenNames: [] },
|
||||||
{ name: "Saké (cuisine)", icon: "DRINK", allergenNames: [] },
|
{ name: "Saké (cuisine)", icon: "DRINK", allergenNames: [] },
|
||||||
{ name: "Jus de citron", icon: "DRINK", allergenNames: [] },
|
{ name: "Jus de citron", icon: "DRINK", allergenNames: [] },
|
||||||
|
|
|
||||||
|
|
@ -387,6 +387,20 @@
|
||||||
"shiitake": "Shiitake",
|
"shiitake": "Shiitake",
|
||||||
"daikon": "Daikon",
|
"daikon": "Daikon",
|
||||||
"fresh_green_chili": "Piment vert frais",
|
"fresh_green_chili": "Piment vert frais",
|
||||||
|
"cardoon": "Cardon",
|
||||||
|
"radicchio": "Chicorée rouge",
|
||||||
|
"romanesco": "Chou romanesco",
|
||||||
|
"kohlrabi": "Chou-rave",
|
||||||
|
"napa_cabbage": "Chou chinois",
|
||||||
|
"celeriac": "Céleri-rave",
|
||||||
|
"okra": "Gombo",
|
||||||
|
"spring_onion": "Oignon nouveau",
|
||||||
|
"red_kuri_squash": "Potimarron",
|
||||||
|
"rutabaga": "Rutabaga",
|
||||||
|
"samphire": "Salicorne",
|
||||||
|
"salsify": "Salsifis",
|
||||||
|
"lambs_lettuce": "Mâche",
|
||||||
|
"escarole": "Scarole",
|
||||||
"lemon": "Citron",
|
"lemon": "Citron",
|
||||||
"lime": "Citron vert",
|
"lime": "Citron vert",
|
||||||
"apple": "Pomme",
|
"apple": "Pomme",
|
||||||
|
|
@ -415,6 +429,12 @@
|
||||||
"pomegranate": "Grenade",
|
"pomegranate": "Grenade",
|
||||||
"rhubarb": "Rhubarbe",
|
"rhubarb": "Rhubarbe",
|
||||||
"quince": "Coing",
|
"quince": "Coing",
|
||||||
|
"blackcurrant": "Cassis",
|
||||||
|
"cranberry": "Canneberge",
|
||||||
|
"redcurrant": "Groseille",
|
||||||
|
"persimmon": "Kaki",
|
||||||
|
"nectarine": "Nectarine",
|
||||||
|
"tamarind": "Tamarin",
|
||||||
"basil": "Basilic",
|
"basil": "Basilic",
|
||||||
"parsley": "Persil",
|
"parsley": "Persil",
|
||||||
"thyme": "Thym",
|
"thyme": "Thym",
|
||||||
|
|
@ -453,10 +473,41 @@
|
||||||
"pancetta": "Pancetta",
|
"pancetta": "Pancetta",
|
||||||
"mortadella": "Mortadelle",
|
"mortadella": "Mortadelle",
|
||||||
"salami": "Salami",
|
"salami": "Salami",
|
||||||
|
"andouille": "Andouille",
|
||||||
|
"andouillette": "Andouillette",
|
||||||
|
"white_pudding": "Boudin blanc",
|
||||||
|
"black_pudding": "Boudin noir",
|
||||||
|
"cervelat": "Cervelas",
|
||||||
|
"rillettes": "Rillettes",
|
||||||
|
"dry_cured_sausage": "Saucisson sec",
|
||||||
|
"bayonne_ham": "Jambon de Bayonne",
|
||||||
|
"coppa": "Coppa",
|
||||||
|
"rosette_sausage": "Rosette (saucisson)",
|
||||||
|
"veal_liver": "Foie de veau",
|
||||||
|
"veal_kidneys": "Rognons de veau",
|
||||||
|
"veal_brain": "Cervelle de veau",
|
||||||
|
"veal_sweetbread": "Ris de veau",
|
||||||
|
"beef_tongue": "Langue de bœuf",
|
||||||
|
"tripe": "Tripes",
|
||||||
|
"venison": "Cerf",
|
||||||
|
"roe_deer": "Chevreuil",
|
||||||
|
"wild_boar": "Sanglier",
|
||||||
|
"horse_meat": "Cheval",
|
||||||
|
"beef_heart": "Cœur de bœuf",
|
||||||
|
"foie_gras": "Foie gras",
|
||||||
|
"beef_muzzle": "Museau de bœuf",
|
||||||
|
"grisons_dried_beef": "Viande des Grisons",
|
||||||
"chicken": "Poulet",
|
"chicken": "Poulet",
|
||||||
"turkey": "Dinde",
|
"turkey": "Dinde",
|
||||||
"duck": "Canard",
|
"duck": "Canard",
|
||||||
"duck_breast": "Magret de canard",
|
"duck_breast": "Magret de canard",
|
||||||
|
"quail": "Caille",
|
||||||
|
"guinea_fowl": "Pintade",
|
||||||
|
"goose": "Oie",
|
||||||
|
"poultry_liver": "Foie de volaille",
|
||||||
|
"capon": "Chapon",
|
||||||
|
"pigeon": "Pigeon",
|
||||||
|
"pheasant": "Faisan",
|
||||||
"salmon": "Saumon",
|
"salmon": "Saumon",
|
||||||
"tuna": "Thon",
|
"tuna": "Thon",
|
||||||
"cod": "Cabillaud",
|
"cod": "Cabillaud",
|
||||||
|
|
@ -487,6 +538,11 @@
|
||||||
"pangasius": "Panga",
|
"pangasius": "Panga",
|
||||||
"smoked_salmon": "Saumon fumé",
|
"smoked_salmon": "Saumon fumé",
|
||||||
"dried_fish": "Poisson séché",
|
"dried_fish": "Poisson séché",
|
||||||
|
"eel": "Anguille",
|
||||||
|
"plaice": "Carrelet (ou plie)",
|
||||||
|
"salt_cod": "Morue",
|
||||||
|
"lemon_sole": "Limande",
|
||||||
|
"scorpionfish": "Rascasse",
|
||||||
"shrimp": "Crevettes",
|
"shrimp": "Crevettes",
|
||||||
"langoustine": "Langoustines",
|
"langoustine": "Langoustines",
|
||||||
"lobster": "Homard",
|
"lobster": "Homard",
|
||||||
|
|
@ -499,6 +555,13 @@
|
||||||
"octopus": "Poulpe",
|
"octopus": "Poulpe",
|
||||||
"clams": "Palourdes",
|
"clams": "Palourdes",
|
||||||
"whelks": "Bulots",
|
"whelks": "Bulots",
|
||||||
|
"spider_crab": "Araignée de mer",
|
||||||
|
"periwinkle": "Bigorneau",
|
||||||
|
"crayfish": "Écrevisse",
|
||||||
|
"grey_shrimp": "Crevette grise",
|
||||||
|
"cockle": "Coque",
|
||||||
|
"snail": "Escargot",
|
||||||
|
"cuttlefish": "Seiche",
|
||||||
"semolina": "Semoule",
|
"semolina": "Semoule",
|
||||||
"couscous": "Couscous",
|
"couscous": "Couscous",
|
||||||
"bulgur": "Boulgour",
|
"bulgur": "Boulgour",
|
||||||
|
|
@ -535,6 +598,8 @@
|
||||||
"fava_beans": "Fèves",
|
"fava_beans": "Fèves",
|
||||||
"edamame": "Edamame",
|
"edamame": "Edamame",
|
||||||
"pinto_beans": "Haricots pinto",
|
"pinto_beans": "Haricots pinto",
|
||||||
|
"flageolet_beans": "Haricots flageolets",
|
||||||
|
"golden_lentils": "Lentilles blondes",
|
||||||
"peanuts_shelled": "Cacahuètes",
|
"peanuts_shelled": "Cacahuètes",
|
||||||
"almonds": "Amandes",
|
"almonds": "Amandes",
|
||||||
"walnuts": "Noix",
|
"walnuts": "Noix",
|
||||||
|
|
@ -582,6 +647,7 @@
|
||||||
"ciabatta": "Ciabatta",
|
"ciabatta": "Ciabatta",
|
||||||
"corn_tortilla": "Tortilla de maïs",
|
"corn_tortilla": "Tortilla de maïs",
|
||||||
"wheat_tortilla": "Tortilla de blé",
|
"wheat_tortilla": "Tortilla de blé",
|
||||||
|
"breadstick": "Gressin",
|
||||||
"puff_pastry": "Pâte feuilletée",
|
"puff_pastry": "Pâte feuilletée",
|
||||||
"shortcrust_pastry": "Pâte brisée",
|
"shortcrust_pastry": "Pâte brisée",
|
||||||
"pizza_dough": "Pâte à pizza",
|
"pizza_dough": "Pâte à pizza",
|
||||||
|
|
@ -606,6 +672,39 @@
|
||||||
"pecorino": "Pecorino",
|
"pecorino": "Pecorino",
|
||||||
"gorgonzola": "Gorgonzola",
|
"gorgonzola": "Gorgonzola",
|
||||||
"cheddar": "Cheddar",
|
"cheddar": "Cheddar",
|
||||||
|
"brie": "Brie",
|
||||||
|
"camembert": "Camembert",
|
||||||
|
"roquefort": "Roquefort",
|
||||||
|
"munster": "Munster",
|
||||||
|
"reblochon": "Reblochon",
|
||||||
|
"cantal": "Cantal",
|
||||||
|
"beaufort": "Beaufort",
|
||||||
|
"saint_nectaire": "Saint-Nectaire",
|
||||||
|
"blue_cheese": "Bleu (fromage)",
|
||||||
|
"cancoillotte": "Cancoillotte",
|
||||||
|
"tomme": "Tomme",
|
||||||
|
"epoisses": "Époisses",
|
||||||
|
"chaource": "Chaource",
|
||||||
|
"livarot": "Livarot",
|
||||||
|
"pont_leveque": "Pont-l'Évêque",
|
||||||
|
"morbier": "Morbier",
|
||||||
|
"raclette_cheese": "Raclette (fromage)",
|
||||||
|
"fourme_d_ambert": "Fourme d'Ambert",
|
||||||
|
"salers": "Salers",
|
||||||
|
"ossau_iraty": "Ossau-Iraty",
|
||||||
|
"vacherin": "Vacherin",
|
||||||
|
"saint_marcellin": "Saint-Marcellin",
|
||||||
|
"neufchatel": "Neufchâtel",
|
||||||
|
"crottin_de_chavignol": "Crottin de Chavignol",
|
||||||
|
"abondance_cheese": "Abondance",
|
||||||
|
"carre_de_l_est": "Carré de l'Est",
|
||||||
|
"edam": "Edam",
|
||||||
|
"gouda": "Gouda",
|
||||||
|
"mimolette": "Mimolette",
|
||||||
|
"maroilles": "Maroilles",
|
||||||
|
"mont_dor": "Mont d'or",
|
||||||
|
"kefir": "Kéfir",
|
||||||
|
"greek_yogurt": "Yaourt à la grecque",
|
||||||
"egg": "Œuf",
|
"egg": "Œuf",
|
||||||
"coconut_milk": "Lait de coco",
|
"coconut_milk": "Lait de coco",
|
||||||
"coconut_cream": "Crème de coco",
|
"coconut_cream": "Crème de coco",
|
||||||
|
|
@ -689,6 +788,9 @@
|
||||||
"red_curry_paste": "Pâte de curry rouge (thaï)",
|
"red_curry_paste": "Pâte de curry rouge (thaï)",
|
||||||
"green_curry_paste": "Pâte de curry vert (thaï)",
|
"green_curry_paste": "Pâte de curry vert (thaï)",
|
||||||
"tahini": "Tahini",
|
"tahini": "Tahini",
|
||||||
|
"aioli": "Aïoli",
|
||||||
|
"vinaigrette": "Sauce vinaigrette",
|
||||||
|
"hummus": "Houmous",
|
||||||
"olive_oil": "Huile d'olive",
|
"olive_oil": "Huile d'olive",
|
||||||
"sunflower_oil": "Huile de tournesol",
|
"sunflower_oil": "Huile de tournesol",
|
||||||
"rapeseed_oil": "Huile de colza",
|
"rapeseed_oil": "Huile de colza",
|
||||||
|
|
@ -699,8 +801,11 @@
|
||||||
"balsamic_vinegar": "Vinaigre balsamique",
|
"balsamic_vinegar": "Vinaigre balsamique",
|
||||||
"capers": "Câpres",
|
"capers": "Câpres",
|
||||||
"olives": "Olives",
|
"olives": "Olives",
|
||||||
|
"black_olives": "Olives noires",
|
||||||
|
"green_olives": "Olives vertes",
|
||||||
"white_wine": "Vin blanc (cuisine)",
|
"white_wine": "Vin blanc (cuisine)",
|
||||||
"red_wine": "Vin rouge (cuisine)",
|
"red_wine": "Vin rouge (cuisine)",
|
||||||
|
"rose_wine": "Vin rosé (cuisine)",
|
||||||
"red_wine_vinegar": "Vinaigre de vin rouge",
|
"red_wine_vinegar": "Vinaigre de vin rouge",
|
||||||
"white_wine_vinegar": "Vinaigre de vin blanc",
|
"white_wine_vinegar": "Vinaigre de vin blanc",
|
||||||
"sherry_vinegar": "Vinaigre de xérès",
|
"sherry_vinegar": "Vinaigre de xérès",
|
||||||
|
|
@ -709,6 +814,10 @@
|
||||||
"peanut_oil": "Huile d'arachide",
|
"peanut_oil": "Huile d'arachide",
|
||||||
"chili_oil": "Huile pimentée",
|
"chili_oil": "Huile pimentée",
|
||||||
"rice_vinegar": "Vinaigre de riz",
|
"rice_vinegar": "Vinaigre de riz",
|
||||||
|
"corn_oil": "Huile de maïs",
|
||||||
|
"grapeseed_oil": "Huile de pépins de raisin",
|
||||||
|
"soybean_oil": "Huile de soja",
|
||||||
|
"palm_oil": "Huile de palme",
|
||||||
"mirin": "Mirin",
|
"mirin": "Mirin",
|
||||||
"sake": "Saké (cuisine)",
|
"sake": "Saké (cuisine)",
|
||||||
"lemon_juice": "Jus de citron",
|
"lemon_juice": "Jus de citron",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue