feat(katalog): utoka ingredienskatalogen 145 -> 362 (bred tackning)
217 nya vanliga svenska livsmedel med standardiserade schablonvarden per 100 g (seed_estimate): mejeri/ostar, kott & fagel (styckdetaljer, farser, korv), chark, fisk & skaldjur, mycket gronsaker/frukt/bar, baljvaxter, spannmal/pasta, brod, bakning, notter/fron, oljor/vinager/saser, torkade kryddor samt dryck. Ratt enhet + densitet/styckvikt, korrekta allergener och kost-/religionsflaggor. Verifierat: seed gron (362), typecheck gron, Atwater-rimlighetskoll (avvikelser bara dar fiber/syror forklarar dem).
This commit is contained in:
@@ -0,0 +1,1866 @@
|
||||
import type { Allergen, NutritionDeclaration, NutritionProvenance } from "@app/shared-types";
|
||||
import type { SeedIngredient } from "./ingredients.js";
|
||||
|
||||
/**
|
||||
* Seed: BRED utökning av ingredienskatalogen (spec §21) – vanliga svenska
|
||||
* livsmedel så att "allt finns i appen". Samma schablon-princip som
|
||||
* ingredients.ts: värdena är standardiserade uppskattningar per 100 g
|
||||
* ("seed_estimate", confidence 0.7). Produktionsvägen byter provenance till
|
||||
* "livsmedelsverket" via connectorn. AI hittar ALDRIG på näringsvärden –
|
||||
* detta är etablerade referensvärden, inte gissningar.
|
||||
*
|
||||
* Egen (identisk) fabrik här för att undvika import-cykel med ingredients.ts;
|
||||
* bara TYPEN SeedIngredient importeras (raderas vid kompilering).
|
||||
*/
|
||||
|
||||
const PROVENANCE: NutritionProvenance = {
|
||||
source: "seed_estimate",
|
||||
confidence: 0.7,
|
||||
verifiedByUser: false,
|
||||
};
|
||||
|
||||
interface N {
|
||||
kcal: number;
|
||||
p: number;
|
||||
k: number;
|
||||
f: number;
|
||||
mf?: number;
|
||||
fib?: number;
|
||||
s?: number;
|
||||
salt?: number;
|
||||
}
|
||||
|
||||
function per100(n: N): NutritionDeclaration {
|
||||
return {
|
||||
basis: "per_100_g",
|
||||
values: {
|
||||
kcal: n.kcal,
|
||||
proteinG: n.p,
|
||||
carbsG: n.k,
|
||||
fatG: n.f,
|
||||
saturatedFatG: n.mf ?? 0,
|
||||
fiberG: n.fib ?? 0,
|
||||
sugarG: n.s ?? 0,
|
||||
saltG: n.salt ?? 0,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
type IngOpts = Partial<
|
||||
Omit<
|
||||
SeedIngredient,
|
||||
"id" | "nameSv" | "nameEn" | "category" | "nutritionPer100" | "nutritionProvenance"
|
||||
>
|
||||
> & {
|
||||
n: N;
|
||||
};
|
||||
|
||||
function ing(
|
||||
id: string,
|
||||
nameSv: string,
|
||||
nameEn: string,
|
||||
category: string,
|
||||
opts: IngOpts,
|
||||
): SeedIngredient {
|
||||
const { n, ...rest } = opts;
|
||||
return {
|
||||
id,
|
||||
nameSv,
|
||||
nameEn,
|
||||
aliases: rest.aliases ?? [],
|
||||
category,
|
||||
defaultUnit: rest.defaultUnit ?? "GRAM",
|
||||
allergens: rest.allergens ?? [],
|
||||
isVegan: rest.isVegan ?? false,
|
||||
isVegetarian: rest.isVegetarian ?? false,
|
||||
containsGluten: rest.containsGluten ?? false,
|
||||
containsLactose: rest.containsLactose ?? false,
|
||||
isPork: rest.isPork ?? false,
|
||||
isBeef: rest.isBeef ?? false,
|
||||
isAlcohol: rest.isAlcohol ?? false,
|
||||
nutritionPer100: per100(n),
|
||||
nutritionProvenance: PROVENANCE,
|
||||
peakSeasons: rest.peakSeasons ?? [],
|
||||
...(rest.densityGPerMl !== undefined ? { densityGPerMl: rest.densityGPerMl } : {}),
|
||||
...(rest.gramsPerPiece !== undefined ? { gramsPerPiece: rest.gramsPerPiece } : {}),
|
||||
...(rest.shelfLifeGuidance !== undefined ? { shelfLifeGuidance: rest.shelfLifeGuidance } : {}),
|
||||
...(rest.defaultPriceMinorPerKg !== undefined
|
||||
? { defaultPriceMinorPerKg: rest.defaultPriceMinorPerKg }
|
||||
: {}),
|
||||
};
|
||||
}
|
||||
|
||||
const veg = { isVegan: true, isVegetarian: true };
|
||||
const vgt = { isVegan: false, isVegetarian: true };
|
||||
/** Typad allergenlista så att literalerna checkas mot Allergen-unionen. */
|
||||
const A = (...xs: Allergen[]): Allergen[] => xs;
|
||||
|
||||
export const EXTRA_INGREDIENTS: SeedIngredient[] = [
|
||||
// ===================================================================
|
||||
// MEJERI & växtdryck
|
||||
// ===================================================================
|
||||
ing("sour_cream", "Gräddfil 12 %", "Sour cream", "mejeri", {
|
||||
...vgt,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1.01,
|
||||
allergens: A("milk"),
|
||||
containsLactose: true,
|
||||
n: { kcal: 123, p: 2.9, k: 3.8, f: 12, mf: 8, s: 3.8, salt: 0.1 },
|
||||
shelfLifeGuidance: { fridge: 14 },
|
||||
defaultPriceMinorPerKg: 3000,
|
||||
aliases: ["gräddfil", "graddfil", "gräddfil 12"],
|
||||
}),
|
||||
ing("filmjolk", "Filmjölk 3 %", "Fermented milk (filmjölk)", "mejeri", {
|
||||
...vgt,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1.03,
|
||||
allergens: A("milk"),
|
||||
containsLactose: true,
|
||||
n: { kcal: 56, p: 3.3, k: 4.3, f: 3, mf: 2, s: 4.3, salt: 0.1 },
|
||||
shelfLifeGuidance: { fridge: 10 },
|
||||
defaultPriceMinorPerKg: 1600,
|
||||
aliases: ["filmjölk", "filmjolk", "fil"],
|
||||
}),
|
||||
ing("skyr", "Skyr naturell", "Skyr", "mejeri", {
|
||||
...vgt,
|
||||
allergens: A("milk"),
|
||||
containsLactose: true,
|
||||
n: { kcal: 63, p: 11, k: 4, f: 0.2, mf: 0.1, s: 4, salt: 0.1 },
|
||||
shelfLifeGuidance: { fridge: 14 },
|
||||
defaultPriceMinorPerKg: 4200,
|
||||
aliases: ["skyr"],
|
||||
}),
|
||||
ing("mozzarella", "Mozzarella", "Mozzarella", "mejeri", {
|
||||
...vgt,
|
||||
allergens: A("milk"),
|
||||
containsLactose: true,
|
||||
n: { kcal: 250, p: 18, k: 3, f: 19, mf: 12, s: 1, salt: 0.6 },
|
||||
shelfLifeGuidance: { fridge: 14 },
|
||||
defaultPriceMinorPerKg: 8000,
|
||||
aliases: ["mozzarella", "mozarella", "buffelmozzarella"],
|
||||
}),
|
||||
ing("parmesan", "Parmesan", "Parmesan", "mejeri", {
|
||||
...vgt,
|
||||
allergens: A("milk"),
|
||||
containsLactose: true,
|
||||
n: { kcal: 402, p: 36, k: 0, f: 29, mf: 19, s: 0, salt: 1.6 },
|
||||
shelfLifeGuidance: { fridge: 60 },
|
||||
defaultPriceMinorPerKg: 18000,
|
||||
aliases: ["parmesan", "parmigiano", "parmigiano reggiano", "grana padano"],
|
||||
}),
|
||||
ing("cream_cheese", "Färskost naturell", "Cream cheese", "mejeri", {
|
||||
...vgt,
|
||||
allergens: A("milk"),
|
||||
containsLactose: true,
|
||||
n: { kcal: 253, p: 5.5, k: 4, f: 24, mf: 15, s: 3.5, salt: 0.9 },
|
||||
shelfLifeGuidance: { fridge: 21 },
|
||||
defaultPriceMinorPerKg: 8000,
|
||||
aliases: ["färskost", "farskost", "philadelphia", "cream cheese"],
|
||||
}),
|
||||
ing("cheddar", "Cheddarost", "Cheddar", "mejeri", {
|
||||
...vgt,
|
||||
allergens: A("milk"),
|
||||
containsLactose: true,
|
||||
n: { kcal: 410, p: 25, k: 1.3, f: 34, mf: 21, s: 0.5, salt: 1.8 },
|
||||
shelfLifeGuidance: { fridge: 45 },
|
||||
defaultPriceMinorPerKg: 11000,
|
||||
aliases: ["cheddar", "cheddarost"],
|
||||
}),
|
||||
ing("brie", "Brieost", "Brie", "mejeri", {
|
||||
...vgt,
|
||||
allergens: A("milk"),
|
||||
containsLactose: true,
|
||||
n: { kcal: 334, p: 20, k: 0.5, f: 28, mf: 18, s: 0.5, salt: 1.6 },
|
||||
shelfLifeGuidance: { fridge: 21 },
|
||||
defaultPriceMinorPerKg: 12000,
|
||||
aliases: ["brie", "brieost", "vitmögelost", "camembert"],
|
||||
}),
|
||||
ing("mascarpone", "Mascarpone", "Mascarpone", "mejeri", {
|
||||
...vgt,
|
||||
allergens: A("milk"),
|
||||
containsLactose: true,
|
||||
n: { kcal: 429, p: 4.6, k: 4.8, f: 44, mf: 30, s: 3, salt: 0.1 },
|
||||
shelfLifeGuidance: { fridge: 14 },
|
||||
defaultPriceMinorPerKg: 9000,
|
||||
aliases: ["mascarpone"],
|
||||
}),
|
||||
ing("ricotta", "Ricotta", "Ricotta", "mejeri", {
|
||||
...vgt,
|
||||
allergens: A("milk"),
|
||||
containsLactose: true,
|
||||
n: { kcal: 174, p: 11, k: 3, f: 13, mf: 8, s: 0.3, salt: 0.3 },
|
||||
shelfLifeGuidance: { fridge: 10 },
|
||||
defaultPriceMinorPerKg: 7000,
|
||||
aliases: ["ricotta"],
|
||||
}),
|
||||
ing("blue_cheese", "Ädelost", "Blue cheese", "mejeri", {
|
||||
...vgt,
|
||||
allergens: A("milk"),
|
||||
containsLactose: true,
|
||||
n: { kcal: 353, p: 21, k: 2.3, f: 29, mf: 19, s: 0.5, salt: 3.5 },
|
||||
shelfLifeGuidance: { fridge: 30 },
|
||||
defaultPriceMinorPerKg: 12000,
|
||||
aliases: ["ädelost", "adelost", "blåmögelost", "gorgonzola", "roquefort"],
|
||||
}),
|
||||
ing("gouda", "Gouda", "Gouda", "mejeri", {
|
||||
...vgt,
|
||||
allergens: A("milk"),
|
||||
containsLactose: true,
|
||||
n: { kcal: 356, p: 25, k: 2.2, f: 27, mf: 18, s: 0.5, salt: 2 },
|
||||
shelfLifeGuidance: { fridge: 45 },
|
||||
defaultPriceMinorPerKg: 9000,
|
||||
aliases: ["gouda", "goudaost", "grevé", "greve"],
|
||||
}),
|
||||
ing("margarine", "Margarin", "Margarine", "mejeri", {
|
||||
...veg,
|
||||
n: { kcal: 631, p: 0.2, k: 0.7, f: 70, mf: 18, s: 0.5, salt: 1.1 },
|
||||
shelfLifeGuidance: { fridge: 60 },
|
||||
defaultPriceMinorPerKg: 3500,
|
||||
aliases: ["margarin", "matfett"],
|
||||
}),
|
||||
ing("ghee", "Ghee (klarnat smör)", "Ghee", "mejeri", {
|
||||
...vgt,
|
||||
allergens: A("milk"),
|
||||
n: { kcal: 897, p: 0, k: 0, f: 100, mf: 62, s: 0, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 180 },
|
||||
defaultPriceMinorPerKg: 12000,
|
||||
aliases: ["ghee", "klarnat smör", "klarnat smor"],
|
||||
}),
|
||||
ing("buttermilk", "Kärnmjölk", "Buttermilk", "mejeri", {
|
||||
...vgt,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1.03,
|
||||
allergens: A("milk"),
|
||||
containsLactose: true,
|
||||
n: { kcal: 40, p: 3.3, k: 4.7, f: 0.9, mf: 0.6, s: 4.7, salt: 0.1 },
|
||||
shelfLifeGuidance: { fridge: 10 },
|
||||
aliases: ["kärnmjölk", "karnmjolk"],
|
||||
}),
|
||||
ing("vanilla_ice_cream", "Vaniljglass", "Vanilla ice cream", "mejeri", {
|
||||
...vgt,
|
||||
allergens: A("milk", "eggs"),
|
||||
containsLactose: true,
|
||||
n: { kcal: 207, p: 3.5, k: 24, f: 11, mf: 7, s: 21, salt: 0.1 },
|
||||
shelfLifeGuidance: { freezer: 365 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["glass", "vaniljglass", "gräddglass"],
|
||||
}),
|
||||
ing("soy_milk", "Sojadryck", "Soy drink", "mejeri", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1.03,
|
||||
allergens: A("soy"),
|
||||
n: { kcal: 42, p: 3.3, k: 2.5, f: 1.8, mf: 0.3, s: 2.5, salt: 0.1 },
|
||||
shelfLifeGuidance: { fridge: 7 },
|
||||
defaultPriceMinorPerKg: 2200,
|
||||
aliases: ["sojamjölk", "sojamjolk", "sojadryck", "soymilk"],
|
||||
}),
|
||||
ing("almond_milk", "Mandeldryck", "Almond drink", "mejeri", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1,
|
||||
allergens: A("tree_nuts"),
|
||||
n: { kcal: 22, p: 0.5, k: 3, f: 1.1, mf: 0.1, s: 2, salt: 0.1 },
|
||||
shelfLifeGuidance: { fridge: 7 },
|
||||
defaultPriceMinorPerKg: 2500,
|
||||
aliases: ["mandelmjölk", "mandelmjolk", "mandeldryck", "almond milk"],
|
||||
}),
|
||||
|
||||
// ===================================================================
|
||||
// KÖTT & FÅGEL
|
||||
// ===================================================================
|
||||
ing("whole_chicken", "Kyckling (hel)", "Whole chicken", "kott_fagel", {
|
||||
n: { kcal: 167, p: 20, k: 0, f: 9, mf: 2.6, salt: 0.2 },
|
||||
shelfLifeGuidance: { fridge: 3, freezer: 300 },
|
||||
defaultPriceMinorPerKg: 7000,
|
||||
aliases: ["hel kyckling", "kyckling", "grillkyckling"],
|
||||
}),
|
||||
ing("chicken_drumstick", "Kycklingklubba", "Chicken drumstick", "kott_fagel", {
|
||||
n: { kcal: 161, p: 18, k: 0, f: 9.5, mf: 2.6, salt: 0.2 },
|
||||
shelfLifeGuidance: { fridge: 3, freezer: 270 },
|
||||
defaultPriceMinorPerKg: 6000,
|
||||
aliases: ["kycklingklubba", "kycklingben", "klubba"],
|
||||
}),
|
||||
ing("chicken_wings", "Kycklingvingar", "Chicken wings", "kott_fagel", {
|
||||
n: { kcal: 203, p: 18, k: 0, f: 14, mf: 4, salt: 0.2 },
|
||||
shelfLifeGuidance: { fridge: 3, freezer: 270 },
|
||||
defaultPriceMinorPerKg: 6000,
|
||||
aliases: ["kycklingvingar", "vingar", "buffalo wings"],
|
||||
}),
|
||||
ing("chicken_mince", "Kycklingfärs", "Chicken mince", "kott_fagel", {
|
||||
n: { kcal: 143, p: 20, k: 0, f: 7, mf: 2, salt: 0.15 },
|
||||
shelfLifeGuidance: { fridge: 2, freezer: 180 },
|
||||
defaultPriceMinorPerKg: 9000,
|
||||
aliases: ["kycklingfärs", "kycklingfars"],
|
||||
}),
|
||||
ing("pork_chop", "Fläskkotlett", "Pork chop", "kott_fagel", {
|
||||
isPork: true,
|
||||
n: { kcal: 172, p: 21, k: 0, f: 9, mf: 3.2, salt: 0.1 },
|
||||
shelfLifeGuidance: { fridge: 4, freezer: 240 },
|
||||
defaultPriceMinorPerKg: 8000,
|
||||
aliases: ["fläskkotlett", "flaskkotlett", "kotlett"],
|
||||
}),
|
||||
ing("pork_tenderloin", "Fläskfilé", "Pork tenderloin", "kott_fagel", {
|
||||
isPork: true,
|
||||
n: { kcal: 120, p: 21, k: 0, f: 4, mf: 1.3, salt: 0.1 },
|
||||
shelfLifeGuidance: { fridge: 4, freezer: 240 },
|
||||
defaultPriceMinorPerKg: 12000,
|
||||
aliases: ["fläskfilé", "flaskfile", "fläskfile"],
|
||||
}),
|
||||
ing("pork_belly", "Sidfläsk", "Pork belly", "kott_fagel", {
|
||||
isPork: true,
|
||||
n: { kcal: 291, p: 15, k: 0, f: 26, mf: 9.5, salt: 0.3 },
|
||||
shelfLifeGuidance: { fridge: 4, freezer: 180 },
|
||||
defaultPriceMinorPerKg: 8000,
|
||||
aliases: ["sidfläsk", "sidflask", "fläsksida"],
|
||||
}),
|
||||
ing("minced_pork", "Fläskfärs", "Pork mince", "kott_fagel", {
|
||||
isPork: true,
|
||||
n: { kcal: 244, p: 17, k: 0, f: 20, mf: 7, salt: 0.1 },
|
||||
shelfLifeGuidance: { fridge: 2, freezer: 180 },
|
||||
defaultPriceMinorPerKg: 7000,
|
||||
aliases: ["fläskfärs", "flaskfars"],
|
||||
}),
|
||||
ing("minced_beef_20", "Nötfärs 20 %", "Minced beef (20%)", "kott_fagel", {
|
||||
isBeef: true,
|
||||
n: { kcal: 254, p: 17, k: 0, f: 20, mf: 8.5, salt: 0.1 },
|
||||
shelfLifeGuidance: { fridge: 2, freezer: 180 },
|
||||
defaultPriceMinorPerKg: 9000,
|
||||
aliases: ["nötfärs 20", "notfars 20", "fet nötfärs"],
|
||||
}),
|
||||
ing("entrecote", "Entrecôte (nöt)", "Ribeye steak", "kott_fagel", {
|
||||
isBeef: true,
|
||||
n: { kcal: 224, p: 20, k: 0, f: 16, mf: 6.5, salt: 0.1 },
|
||||
shelfLifeGuidance: { fridge: 4, freezer: 240 },
|
||||
defaultPriceMinorPerKg: 25000,
|
||||
aliases: ["entrecote", "entrecôte", "ribeye", "ryggbiff"],
|
||||
}),
|
||||
ing("beef_tenderloin", "Oxfilé", "Beef tenderloin", "kott_fagel", {
|
||||
isBeef: true,
|
||||
n: { kcal: 130, p: 22, k: 0, f: 4.5, mf: 1.8, salt: 0.1 },
|
||||
shelfLifeGuidance: { fridge: 4, freezer: 240 },
|
||||
defaultPriceMinorPerKg: 40000,
|
||||
aliases: ["oxfilé", "oxfile", "biff", "nötfilé"],
|
||||
}),
|
||||
ing("beef_stew_meat", "Grytbitar av nöt (högrev)", "Beef stew meat", "kott_fagel", {
|
||||
isBeef: true,
|
||||
n: { kcal: 182, p: 20, k: 0, f: 11, mf: 4.5, salt: 0.1 },
|
||||
shelfLifeGuidance: { fridge: 4, freezer: 240 },
|
||||
defaultPriceMinorPerKg: 11000,
|
||||
aliases: ["högrev", "hogrev", "grytbitar", "bog", "grytkött"],
|
||||
}),
|
||||
ing("roast_beef_cold", "Rostbiff (pålägg)", "Roast beef (deli)", "kott_fagel", {
|
||||
isBeef: true,
|
||||
n: { kcal: 140, p: 25, k: 0, f: 4.5, mf: 1.7, salt: 0.7 },
|
||||
shelfLifeGuidance: { fridge: 7 },
|
||||
defaultPriceMinorPerKg: 18000,
|
||||
aliases: ["rostbiff", "roast beef"],
|
||||
}),
|
||||
ing("lamb_mince", "Lammfärs", "Lamb mince", "kott_fagel", {
|
||||
n: { kcal: 282, p: 17, k: 0, f: 24, mf: 11, salt: 0.15 },
|
||||
shelfLifeGuidance: { fridge: 2, freezer: 180 },
|
||||
defaultPriceMinorPerKg: 13000,
|
||||
aliases: ["lammfärs", "lammfars"],
|
||||
}),
|
||||
ing("lamb_chop", "Lammkotlett", "Lamb chop", "kott_fagel", {
|
||||
n: { kcal: 240, p: 18, k: 0, f: 19, mf: 8, salt: 0.15 },
|
||||
shelfLifeGuidance: { fridge: 4, freezer: 240 },
|
||||
defaultPriceMinorPerKg: 20000,
|
||||
aliases: ["lammkotlett", "lammracks", "lammrack"],
|
||||
}),
|
||||
ing("lamb_fillet", "Lammstek/lammfilé", "Lamb fillet", "kott_fagel", {
|
||||
n: { kcal: 150, p: 20, k: 0, f: 8, mf: 3.5, salt: 0.15 },
|
||||
shelfLifeGuidance: { fridge: 4, freezer: 240 },
|
||||
defaultPriceMinorPerKg: 22000,
|
||||
aliases: ["lammstek", "lammfilé", "lammfile", "lammytterfilé"],
|
||||
}),
|
||||
ing("duck_breast", "Ankbröstfilé", "Duck breast", "kott_fagel", {
|
||||
n: { kcal: 200, p: 18, k: 0, f: 14, mf: 5, salt: 0.2 },
|
||||
shelfLifeGuidance: { fridge: 4, freezer: 240 },
|
||||
defaultPriceMinorPerKg: 20000,
|
||||
aliases: ["anka", "ankbröst", "ankbrost", "ankbröstfilé"],
|
||||
}),
|
||||
ing("turkey_mince", "Kalkonfärs", "Turkey mince", "kott_fagel", {
|
||||
n: { kcal: 149, p: 21, k: 0, f: 7, mf: 2, salt: 0.15 },
|
||||
shelfLifeGuidance: { fridge: 2, freezer: 180 },
|
||||
defaultPriceMinorPerKg: 10000,
|
||||
aliases: ["kalkonfärs", "kalkonfars"],
|
||||
}),
|
||||
ing("blood_pudding", "Blodpudding", "Blood pudding", "kott_fagel", {
|
||||
isPork: true,
|
||||
allergens: A("gluten", "milk"),
|
||||
containsGluten: true,
|
||||
containsLactose: true,
|
||||
n: { kcal: 165, p: 8, k: 20, f: 6, mf: 2.5, fib: 2, s: 3, salt: 1.1 },
|
||||
shelfLifeGuidance: { fridge: 10, freezer: 180 },
|
||||
defaultPriceMinorPerKg: 3500,
|
||||
aliases: ["blodpudding", "blodkorv"],
|
||||
}),
|
||||
ing("kassler", "Kassler", "Kassler (smoked pork loin)", "kott_fagel", {
|
||||
isPork: true,
|
||||
n: { kcal: 130, p: 21, k: 0.5, f: 5, mf: 1.8, salt: 2.2 },
|
||||
shelfLifeGuidance: { fridge: 10, freezer: 180 },
|
||||
defaultPriceMinorPerKg: 9000,
|
||||
aliases: ["kassler", "rökt fläskkarré"],
|
||||
}),
|
||||
ing("grill_sausage", "Grillkorv", "Grilling sausage", "kott_fagel", {
|
||||
isPork: true,
|
||||
n: { kcal: 250, p: 11, k: 5, f: 21, mf: 8, s: 1.5, salt: 1.8 },
|
||||
shelfLifeGuidance: { fridge: 12, freezer: 120 },
|
||||
defaultPriceMinorPerKg: 5000,
|
||||
aliases: ["grillkorv", "korv", "bratwurst", "salsiccia"],
|
||||
}),
|
||||
ing("hot_dog_sausage", "Varmkorv/wienerkorv", "Hot dog sausage", "kott_fagel", {
|
||||
isPork: true,
|
||||
n: { kcal: 240, p: 10, k: 4, f: 21, mf: 8, s: 1, salt: 1.9 },
|
||||
shelfLifeGuidance: { fridge: 14, freezer: 120 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["varmkorv", "wienerkorv", "korv", "frankfurter"],
|
||||
}),
|
||||
ing("chorizo_sausage", "Chorizo (färsk korv)", "Chorizo sausage", "kott_fagel", {
|
||||
isPork: true,
|
||||
n: { kcal: 348, p: 21, k: 2, f: 28, mf: 11, s: 1, salt: 2.5 },
|
||||
shelfLifeGuidance: { fridge: 14, freezer: 120 },
|
||||
defaultPriceMinorPerKg: 9000,
|
||||
aliases: ["chorizo"],
|
||||
}),
|
||||
|
||||
// ===================================================================
|
||||
// CHARK (pålägg)
|
||||
// ===================================================================
|
||||
ing("salami", "Salami", "Salami", "chark", {
|
||||
isPork: true,
|
||||
n: { kcal: 378, p: 21, k: 1.5, f: 32, mf: 12, s: 1, salt: 4 },
|
||||
shelfLifeGuidance: { fridge: 21 },
|
||||
defaultPriceMinorPerKg: 14000,
|
||||
aliases: ["salami", "medwurst", "medvurst"],
|
||||
}),
|
||||
ing("prosciutto", "Lufttorkad skinka", "Prosciutto", "chark", {
|
||||
isPork: true,
|
||||
n: { kcal: 250, p: 27, k: 0.3, f: 16, mf: 5.5, salt: 5 },
|
||||
shelfLifeGuidance: { fridge: 21 },
|
||||
defaultPriceMinorPerKg: 22000,
|
||||
aliases: ["parmaskinka", "prosciutto", "lufttorkad skinka", "serranoskinka"],
|
||||
}),
|
||||
ing("liver_pate", "Leverpastej", "Liver pâté", "chark", {
|
||||
isPork: true,
|
||||
allergens: A("gluten", "milk"),
|
||||
containsGluten: true,
|
||||
containsLactose: true,
|
||||
n: { kcal: 300, p: 12, k: 5, f: 26, mf: 9, s: 1, salt: 1.4 },
|
||||
shelfLifeGuidance: { fridge: 14 },
|
||||
defaultPriceMinorPerKg: 5000,
|
||||
aliases: ["leverpastej", "pastej"],
|
||||
}),
|
||||
ing("deli_ham", "Skinka (pålägg)", "Sliced ham", "chark", {
|
||||
isPork: true,
|
||||
n: { kcal: 110, p: 18, k: 1, f: 4, mf: 1.4, salt: 2.2 },
|
||||
shelfLifeGuidance: { fridge: 10 },
|
||||
defaultPriceMinorPerKg: 10000,
|
||||
aliases: ["skinka", "skinkpålägg", "rökt skinka", "kokt skinka pålägg"],
|
||||
}),
|
||||
|
||||
// ===================================================================
|
||||
// FISK
|
||||
// ===================================================================
|
||||
ing("pollock", "Sej", "Pollock", "fisk", {
|
||||
allergens: A("fish"),
|
||||
n: { kcal: 92, p: 19, k: 0, f: 1, mf: 0.2, salt: 0.2 },
|
||||
shelfLifeGuidance: { fridge: 2, freezer: 180 },
|
||||
defaultPriceMinorPerKg: 9000,
|
||||
aliases: ["sej", "gråsej"],
|
||||
}),
|
||||
ing("haddock", "Kolja", "Haddock", "fisk", {
|
||||
allergens: A("fish"),
|
||||
n: { kcal: 80, p: 18, k: 0, f: 0.6, mf: 0.1, salt: 0.2 },
|
||||
shelfLifeGuidance: { fridge: 2, freezer: 180 },
|
||||
defaultPriceMinorPerKg: 12000,
|
||||
aliases: ["kolja"],
|
||||
}),
|
||||
ing("plaice", "Rödspätta", "Plaice", "fisk", {
|
||||
allergens: A("fish"),
|
||||
n: { kcal: 86, p: 17, k: 0, f: 1.5, mf: 0.3, salt: 0.3 },
|
||||
shelfLifeGuidance: { fridge: 2, freezer: 180 },
|
||||
defaultPriceMinorPerKg: 13000,
|
||||
aliases: ["rödspätta", "rodspatta", "spätta", "flundra"],
|
||||
}),
|
||||
ing("pike_perch", "Gös", "Pike-perch", "fisk", {
|
||||
allergens: A("fish"),
|
||||
n: { kcal: 83, p: 19, k: 0, f: 0.7, mf: 0.1, salt: 0.1 },
|
||||
shelfLifeGuidance: { fridge: 2, freezer: 180 },
|
||||
defaultPriceMinorPerKg: 20000,
|
||||
aliases: ["gös", "gos"],
|
||||
}),
|
||||
ing("mackerel", "Makrill", "Mackerel", "fisk", {
|
||||
allergens: A("fish"),
|
||||
n: { kcal: 205, p: 19, k: 0, f: 14, mf: 3.3, salt: 0.3 },
|
||||
shelfLifeGuidance: { fridge: 2, freezer: 120 },
|
||||
defaultPriceMinorPerKg: 10000,
|
||||
aliases: ["makrill"],
|
||||
}),
|
||||
ing("herring_fresh", "Sill/strömming (färsk)", "Fresh herring", "fisk", {
|
||||
allergens: A("fish"),
|
||||
n: { kcal: 158, p: 18, k: 0, f: 9, mf: 2, salt: 0.2 },
|
||||
shelfLifeGuidance: { fridge: 2, freezer: 120 },
|
||||
defaultPriceMinorPerKg: 8000,
|
||||
aliases: ["sill", "strömming", "stromming", "färsk sill"],
|
||||
}),
|
||||
ing("rainbow_trout", "Regnbågslax/öring", "Rainbow trout", "fisk", {
|
||||
allergens: A("fish"),
|
||||
n: { kcal: 141, p: 20, k: 0, f: 6, mf: 1.5, salt: 0.1 },
|
||||
shelfLifeGuidance: { fridge: 2, freezer: 180 },
|
||||
defaultPriceMinorPerKg: 13000,
|
||||
aliases: ["regnbågslax", "öring", "oring", "regnbågsöring", "forell"],
|
||||
}),
|
||||
ing("smoked_salmon", "Rökt lax", "Smoked salmon", "fisk", {
|
||||
allergens: A("fish"),
|
||||
n: { kcal: 180, p: 22, k: 0, f: 10, mf: 2, salt: 3 },
|
||||
shelfLifeGuidance: { fridge: 14 },
|
||||
defaultPriceMinorPerKg: 24000,
|
||||
aliases: ["rökt lax", "rokt lax"],
|
||||
}),
|
||||
ing("cured_salmon", "Gravad lax", "Cured salmon", "fisk", {
|
||||
allergens: A("fish"),
|
||||
n: { kcal: 200, p: 20, k: 3, f: 12, mf: 2.5, s: 3, salt: 3.5 },
|
||||
shelfLifeGuidance: { fridge: 10 },
|
||||
defaultPriceMinorPerKg: 24000,
|
||||
aliases: ["gravad lax", "gravlax"],
|
||||
}),
|
||||
ing("fish_fingers", "Fiskpinnar", "Fish fingers", "fisk", {
|
||||
allergens: A("fish", "gluten"),
|
||||
containsGluten: true,
|
||||
n: { kcal: 200, p: 12, k: 18, f: 9, mf: 1.2, fib: 1, s: 1, salt: 0.9 },
|
||||
shelfLifeGuidance: { freezer: 300 },
|
||||
defaultPriceMinorPerKg: 8000,
|
||||
aliases: ["fiskpinnar", "fiskpinne"],
|
||||
}),
|
||||
ing("cod_roe_tube", "Kaviar (tub)", "Cod roe spread", "fisk", {
|
||||
allergens: A("fish"),
|
||||
n: { kcal: 240, p: 13, k: 8, f: 17, mf: 3, s: 4, salt: 4.5 },
|
||||
shelfLifeGuidance: { fridge: 30 },
|
||||
defaultPriceMinorPerKg: 12000,
|
||||
aliases: ["kaviar", "kalles kaviar", "smörgåskaviar"],
|
||||
}),
|
||||
ing("sardines_canned", "Sardiner (burk)", "Canned sardines", "fisk", {
|
||||
allergens: A("fish"),
|
||||
n: { kcal: 208, p: 25, k: 0, f: 11, mf: 2.5, salt: 1 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 9000,
|
||||
aliases: ["sardiner"],
|
||||
}),
|
||||
ing("mackerel_tomato", "Makrill i tomatsås", "Mackerel in tomato", "fisk", {
|
||||
allergens: A("fish"),
|
||||
n: { kcal: 185, p: 14, k: 5, f: 12, mf: 2.5, s: 4, salt: 1 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 7000,
|
||||
aliases: ["makrill i tomat", "makrill i tomatsås"],
|
||||
}),
|
||||
|
||||
// ===================================================================
|
||||
// SKALDJUR
|
||||
// ===================================================================
|
||||
ing("crab", "Krabba (kokt)", "Crab", "skaldjur", {
|
||||
allergens: A("crustaceans"),
|
||||
n: { kcal: 107, p: 18, k: 0, f: 3.6, mf: 0.5, salt: 1.2 },
|
||||
shelfLifeGuidance: { fridge: 2 },
|
||||
defaultPriceMinorPerKg: 18000,
|
||||
aliases: ["krabba", "krabbkött", "kungskrabba"],
|
||||
}),
|
||||
ing("mussels", "Blåmusslor", "Mussels", "skaldjur", {
|
||||
allergens: A("molluscs"),
|
||||
n: { kcal: 86, p: 12, k: 3.7, f: 2.2, mf: 0.4, salt: 0.5 },
|
||||
shelfLifeGuidance: { fridge: 2 },
|
||||
defaultPriceMinorPerKg: 6000,
|
||||
aliases: ["blåmusslor", "blamusslor", "musslor"],
|
||||
}),
|
||||
ing("langoustine", "Havskräfta", "Langoustine", "skaldjur", {
|
||||
allergens: A("crustaceans"),
|
||||
n: { kcal: 90, p: 19, k: 0, f: 1.5, mf: 0.2, salt: 0.5 },
|
||||
shelfLifeGuidance: { fridge: 2 },
|
||||
defaultPriceMinorPerKg: 30000,
|
||||
aliases: ["havskräfta", "havskrafta", "scampi", "kejsarhummer"],
|
||||
}),
|
||||
ing("scallops", "Pilgrimsmusslor", "Scallops", "skaldjur", {
|
||||
allergens: A("molluscs"),
|
||||
n: { kcal: 88, p: 17, k: 2.4, f: 0.8, mf: 0.1, salt: 0.6 },
|
||||
shelfLifeGuidance: { fridge: 2 },
|
||||
defaultPriceMinorPerKg: 32000,
|
||||
aliases: ["pilgrimsmusslor", "pilgrimsmussla", "kammusslor"],
|
||||
}),
|
||||
ing("squid", "Bläckfisk (calamari)", "Squid", "skaldjur", {
|
||||
allergens: A("molluscs"),
|
||||
n: { kcal: 92, p: 16, k: 3, f: 1.4, mf: 0.4, salt: 0.4 },
|
||||
shelfLifeGuidance: { fridge: 2, freezer: 120 },
|
||||
defaultPriceMinorPerKg: 14000,
|
||||
aliases: ["bläckfisk", "blackfisk", "calamari", "tioarmad bläckfisk"],
|
||||
}),
|
||||
|
||||
// ===================================================================
|
||||
// GRÖNSAKER
|
||||
// ===================================================================
|
||||
ing("aubergine", "Aubergine", "Aubergine", "gronsaker", {
|
||||
...veg,
|
||||
gramsPerPiece: 250,
|
||||
n: { kcal: 25, p: 1, k: 3, f: 0.2, fib: 3, s: 3.5, salt: 0 },
|
||||
peakSeasons: ["summer", "autumn"],
|
||||
shelfLifeGuidance: { fridge: 7 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["aubergine", "äggplanta", "eggplant"],
|
||||
}),
|
||||
ing("fennel", "Fänkål", "Fennel", "gronsaker", {
|
||||
...veg,
|
||||
gramsPerPiece: 230,
|
||||
n: { kcal: 31, p: 1.2, k: 4.2, f: 0.2, fib: 3.1, s: 4, salt: 0.1 },
|
||||
peakSeasons: ["autumn"],
|
||||
shelfLifeGuidance: { fridge: 10 },
|
||||
defaultPriceMinorPerKg: 4500,
|
||||
aliases: ["fänkål", "fankal"],
|
||||
}),
|
||||
ing("celery_stalk", "Stjälkselleri", "Celery", "gronsaker", {
|
||||
...veg,
|
||||
allergens: A("celery"),
|
||||
n: { kcal: 16, p: 0.7, k: 1.4, f: 0.2, fib: 1.6, s: 1.3, salt: 0.2 },
|
||||
shelfLifeGuidance: { fridge: 10 },
|
||||
defaultPriceMinorPerKg: 3500,
|
||||
aliases: ["stjälkselleri", "selleri", "blekselleri"],
|
||||
}),
|
||||
ing("celeriac", "Rotselleri", "Celeriac", "gronsaker", {
|
||||
...veg,
|
||||
allergens: A("celery"),
|
||||
n: { kcal: 42, p: 1.5, k: 6, f: 0.3, fib: 1.8, s: 1.6, salt: 0.1 },
|
||||
peakSeasons: ["autumn", "winter"],
|
||||
shelfLifeGuidance: { fridge: 21 },
|
||||
defaultPriceMinorPerKg: 3000,
|
||||
aliases: ["rotselleri", "sellerirot"],
|
||||
}),
|
||||
ing("parsnip", "Palsternacka", "Parsnip", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 75, p: 1.2, k: 13, f: 0.3, fib: 4.9, s: 4.8, salt: 0 },
|
||||
peakSeasons: ["autumn", "winter"],
|
||||
shelfLifeGuidance: { fridge: 21 },
|
||||
defaultPriceMinorPerKg: 3000,
|
||||
aliases: ["palsternacka"],
|
||||
}),
|
||||
ing("swede", "Kålrot", "Swede", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 37, p: 1.1, k: 6, f: 0.2, fib: 2.3, s: 4.5, salt: 0 },
|
||||
peakSeasons: ["autumn", "winter"],
|
||||
shelfLifeGuidance: { fridge: 30 },
|
||||
defaultPriceMinorPerKg: 2000,
|
||||
aliases: ["kålrot", "kalrot"],
|
||||
}),
|
||||
ing("butternut_squash", "Butternutpumpa", "Butternut squash", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 45, p: 1, k: 9, f: 0.1, fib: 2, s: 2.2, salt: 0 },
|
||||
peakSeasons: ["autumn"],
|
||||
shelfLifeGuidance: { pantry: 30 },
|
||||
defaultPriceMinorPerKg: 3000,
|
||||
aliases: ["butternut", "butternutpumpa", "pumpa"],
|
||||
}),
|
||||
ing("pumpkin", "Pumpa", "Pumpkin", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 26, p: 1, k: 5, f: 0.1, fib: 0.5, s: 2.8, salt: 0 },
|
||||
peakSeasons: ["autumn"],
|
||||
shelfLifeGuidance: { pantry: 30 },
|
||||
defaultPriceMinorPerKg: 2500,
|
||||
aliases: ["pumpa", "halloweenpumpa"],
|
||||
}),
|
||||
ing("brussels_sprouts", "Brysselkål", "Brussels sprouts", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 43, p: 3.4, k: 5, f: 0.3, fib: 3.8, s: 2.2, salt: 0.1 },
|
||||
peakSeasons: ["autumn", "winter"],
|
||||
shelfLifeGuidance: { fridge: 7 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["brysselkål", "brysselkal"],
|
||||
}),
|
||||
ing("asparagus", "Sparris", "Asparagus", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 20, p: 2.2, k: 2, f: 0.1, fib: 2.1, s: 1.9, salt: 0 },
|
||||
peakSeasons: ["spring"],
|
||||
shelfLifeGuidance: { fridge: 5 },
|
||||
defaultPriceMinorPerKg: 8000,
|
||||
aliases: ["sparris", "grön sparris", "vit sparris"],
|
||||
}),
|
||||
ing("sugar_snap_peas", "Sockerärtor", "Sugar snap peas", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 42, p: 2.8, k: 5, f: 0.2, fib: 2.6, s: 4, salt: 0 },
|
||||
peakSeasons: ["summer"],
|
||||
shelfLifeGuidance: { fridge: 5 },
|
||||
defaultPriceMinorPerKg: 6000,
|
||||
aliases: ["sockerärtor", "sockerartor", "sockerärter", "snap peas"],
|
||||
}),
|
||||
ing("spring_onion", "Salladslök", "Spring onion", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 32, p: 1.8, k: 5, f: 0.2, fib: 2.6, s: 2.3, salt: 0 },
|
||||
shelfLifeGuidance: { fridge: 7 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["salladslök", "salladslok", "vårlök", "varlok", "knippelök", "scallion"],
|
||||
}),
|
||||
ing("shallot", "Schalottenlök", "Shallot", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 72, p: 2.5, k: 15, f: 0.1, fib: 3.2, s: 7.9, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 30 },
|
||||
defaultPriceMinorPerKg: 5000,
|
||||
aliases: ["schalottenlök", "schalottenlok", "bananschalottenlök"],
|
||||
}),
|
||||
ing("red_chili", "Röd chili (färsk)", "Red chili", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 40, p: 1.9, k: 6, f: 0.4, fib: 1.5, s: 5, salt: 0 },
|
||||
shelfLifeGuidance: { fridge: 10 },
|
||||
defaultPriceMinorPerKg: 12000,
|
||||
aliases: ["röd chili", "rod chili", "chili", "chilifrukt", "spansk peppar"],
|
||||
}),
|
||||
ing("cherry_tomato", "Körsbärstomat", "Cherry tomato", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 20, p: 0.9, k: 3, f: 0.2, fib: 1.2, s: 2.8, salt: 0 },
|
||||
peakSeasons: ["summer"],
|
||||
shelfLifeGuidance: { fridge: 7 },
|
||||
defaultPriceMinorPerKg: 5000,
|
||||
aliases: ["körsbärstomat", "korsbarstomat", "körsbärstomater", "cocktailtomat"],
|
||||
}),
|
||||
ing("iceberg_lettuce", "Isbergssallad", "Iceberg lettuce", "gronsaker", {
|
||||
...veg,
|
||||
gramsPerPiece: 400,
|
||||
n: { kcal: 14, p: 0.9, k: 2, f: 0.1, fib: 1.2, s: 1.8, salt: 0 },
|
||||
shelfLifeGuidance: { fridge: 7 },
|
||||
defaultPriceMinorPerKg: 3000,
|
||||
aliases: ["isbergssallad", "isberg"],
|
||||
}),
|
||||
ing("arugula", "Ruccola", "Arugula", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 25, p: 2.6, k: 2, f: 0.7, fib: 1.6, s: 2, salt: 0.1 },
|
||||
shelfLifeGuidance: { fridge: 5 },
|
||||
defaultPriceMinorPerKg: 9000,
|
||||
aliases: ["ruccola", "rucola", "rocket", "senapskål"],
|
||||
}),
|
||||
ing("radish", "Rädisor", "Radish", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 16, p: 0.7, k: 2, f: 0.1, fib: 1.6, s: 1.9, salt: 0.1 },
|
||||
peakSeasons: ["spring", "summer"],
|
||||
shelfLifeGuidance: { fridge: 7 },
|
||||
defaultPriceMinorPerKg: 5000,
|
||||
aliases: ["rädisor", "radisor", "rädisa"],
|
||||
}),
|
||||
ing("corn_cob", "Majskolv (färsk)", "Corn on the cob", "gronsaker", {
|
||||
...veg,
|
||||
gramsPerPiece: 200,
|
||||
n: { kcal: 86, p: 3.2, k: 15, f: 1.2, fib: 2.7, s: 3.2, salt: 0 },
|
||||
peakSeasons: ["summer", "autumn"],
|
||||
shelfLifeGuidance: { fridge: 5 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["majskolv", "färsk majs", "majs på kolv"],
|
||||
}),
|
||||
ing("chanterelle", "Kantareller", "Chanterelle", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 38, p: 1.5, k: 3.8, f: 0.5, fib: 3.8, s: 1.2, salt: 0 },
|
||||
peakSeasons: ["summer", "autumn"],
|
||||
shelfLifeGuidance: { fridge: 4 },
|
||||
defaultPriceMinorPerKg: 20000,
|
||||
aliases: ["kantareller", "kantarell", "gul kantarell"],
|
||||
}),
|
||||
ing("porcini", "Karljohansvamp", "Porcini", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 34, p: 3, k: 3, f: 0.4, fib: 2.5, s: 1.5, salt: 0 },
|
||||
peakSeasons: ["autumn"],
|
||||
shelfLifeGuidance: { fridge: 4 },
|
||||
defaultPriceMinorPerKg: 22000,
|
||||
aliases: ["karljohansvamp", "karljohan", "stensopp", "porcini"],
|
||||
}),
|
||||
ing("coriander_fresh", "Koriander (färsk)", "Fresh coriander", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 23, p: 2.1, k: 0.9, f: 0.5, fib: 2.8, s: 0.9, salt: 0.05 },
|
||||
shelfLifeGuidance: { fridge: 5 },
|
||||
defaultPriceMinorPerKg: 12000,
|
||||
aliases: ["koriander", "färsk koriander", "cilantro"],
|
||||
}),
|
||||
ing("mint_fresh", "Mynta (färsk)", "Fresh mint", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 44, p: 3.3, k: 6, f: 0.7, fib: 8, s: 0, salt: 0 },
|
||||
shelfLifeGuidance: { fridge: 5 },
|
||||
defaultPriceMinorPerKg: 14000,
|
||||
aliases: ["mynta", "färsk mynta", "pepparmynta"],
|
||||
}),
|
||||
ing("chives", "Gräslök", "Chives", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 30, p: 3.3, k: 1.8, f: 0.7, fib: 2.5, s: 1.9, salt: 0 },
|
||||
shelfLifeGuidance: { fridge: 7 },
|
||||
defaultPriceMinorPerKg: 12000,
|
||||
aliases: ["gräslök", "graslok"],
|
||||
}),
|
||||
ing("rosemary_fresh", "Rosmarin (färsk)", "Fresh rosemary", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 131, p: 3.3, k: 21, f: 5.9, fib: 14, s: 0, salt: 0.1 },
|
||||
shelfLifeGuidance: { fridge: 10 },
|
||||
defaultPriceMinorPerKg: 16000,
|
||||
aliases: ["rosmarin", "färsk rosmarin"],
|
||||
}),
|
||||
ing("thyme_fresh", "Timjan (färsk)", "Fresh thyme", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 101, p: 5.6, k: 24, f: 1.7, fib: 14, s: 0, salt: 0.1 },
|
||||
shelfLifeGuidance: { fridge: 10 },
|
||||
defaultPriceMinorPerKg: 16000,
|
||||
aliases: ["timjan", "färsk timjan"],
|
||||
}),
|
||||
ing("horseradish", "Pepparrot (färsk)", "Horseradish", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 48, p: 1.2, k: 11, f: 0.7, fib: 3.3, s: 8, salt: 0.3 },
|
||||
shelfLifeGuidance: { fridge: 21 },
|
||||
defaultPriceMinorPerKg: 8000,
|
||||
aliases: ["pepparrot", "riven pepparrot"],
|
||||
}),
|
||||
ing("pak_choi", "Pak choi", "Pak choi", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 13, p: 1.5, k: 1.2, f: 0.2, fib: 1, s: 1.2, salt: 0.1 },
|
||||
shelfLifeGuidance: { fridge: 5 },
|
||||
defaultPriceMinorPerKg: 5000,
|
||||
aliases: ["pak choi", "bok choy", "kinesisk senapskål"],
|
||||
}),
|
||||
ing("bean_sprouts", "Böngroddar", "Bean sprouts", "gronsaker", {
|
||||
...veg,
|
||||
n: { kcal: 30, p: 3, k: 4, f: 0.2, fib: 1.8, s: 2.6, salt: 0 },
|
||||
shelfLifeGuidance: { fridge: 4 },
|
||||
defaultPriceMinorPerKg: 6000,
|
||||
aliases: ["böngroddar", "bongroddar", "groddar", "mungbönsgroddar"],
|
||||
}),
|
||||
|
||||
// ===================================================================
|
||||
// FRUKT & BÄR
|
||||
// ===================================================================
|
||||
ing("mango", "Mango", "Mango", "frukt", {
|
||||
...veg,
|
||||
gramsPerPiece: 200,
|
||||
n: { kcal: 60, p: 0.8, k: 14, f: 0.4, fib: 1.6, s: 14, salt: 0 },
|
||||
shelfLifeGuidance: { fridge: 7, pantry: 4 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["mango"],
|
||||
}),
|
||||
ing("pineapple", "Ananas", "Pineapple", "frukt", {
|
||||
...veg,
|
||||
n: { kcal: 50, p: 0.5, k: 12, f: 0.1, fib: 1.4, s: 10, salt: 0 },
|
||||
shelfLifeGuidance: { fridge: 5, pantry: 3 },
|
||||
defaultPriceMinorPerKg: 2500,
|
||||
aliases: ["ananas", "färsk ananas"],
|
||||
}),
|
||||
ing("kiwi", "Kiwi", "Kiwi", "frukt", {
|
||||
...veg,
|
||||
gramsPerPiece: 75,
|
||||
n: { kcal: 61, p: 1.1, k: 12, f: 0.5, fib: 3, s: 9, salt: 0 },
|
||||
shelfLifeGuidance: { fridge: 10 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["kiwi", "kiwifrukt"],
|
||||
}),
|
||||
ing("watermelon", "Vattenmelon", "Watermelon", "frukt", {
|
||||
...veg,
|
||||
n: { kcal: 30, p: 0.6, k: 7.6, f: 0.2, fib: 0.4, s: 6.2, salt: 0 },
|
||||
peakSeasons: ["summer"],
|
||||
shelfLifeGuidance: { fridge: 7 },
|
||||
defaultPriceMinorPerKg: 2000,
|
||||
aliases: ["vattenmelon"],
|
||||
}),
|
||||
ing("cantaloupe", "Melon (cantaloupe)", "Cantaloupe melon", "frukt", {
|
||||
...veg,
|
||||
n: { kcal: 34, p: 0.8, k: 8, f: 0.2, fib: 0.9, s: 8, salt: 0 },
|
||||
peakSeasons: ["summer"],
|
||||
shelfLifeGuidance: { fridge: 7 },
|
||||
defaultPriceMinorPerKg: 2500,
|
||||
aliases: ["melon", "cantaloupe", "galiamelon", "honungsmelon"],
|
||||
}),
|
||||
ing("peach", "Persika", "Peach", "frukt", {
|
||||
...veg,
|
||||
gramsPerPiece: 150,
|
||||
n: { kcal: 39, p: 0.9, k: 8, f: 0.3, fib: 1.5, s: 8, salt: 0 },
|
||||
peakSeasons: ["summer"],
|
||||
shelfLifeGuidance: { fridge: 5, pantry: 3 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["persika", "nektarin"],
|
||||
}),
|
||||
ing("plum", "Plommon", "Plum", "frukt", {
|
||||
...veg,
|
||||
gramsPerPiece: 65,
|
||||
n: { kcal: 46, p: 0.7, k: 10, f: 0.3, fib: 1.4, s: 10, salt: 0 },
|
||||
peakSeasons: ["autumn"],
|
||||
shelfLifeGuidance: { fridge: 7 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["plommon", "sviskon"],
|
||||
}),
|
||||
ing("apricot", "Aprikos", "Apricot", "frukt", {
|
||||
...veg,
|
||||
gramsPerPiece: 40,
|
||||
n: { kcal: 48, p: 1.4, k: 9, f: 0.4, fib: 2, s: 9, salt: 0 },
|
||||
peakSeasons: ["summer"],
|
||||
shelfLifeGuidance: { fridge: 5 },
|
||||
defaultPriceMinorPerKg: 5000,
|
||||
aliases: ["aprikos", "aprikoser"],
|
||||
}),
|
||||
ing("cherries", "Körsbär", "Cherries", "frukt", {
|
||||
...veg,
|
||||
n: { kcal: 63, p: 1.1, k: 13, f: 0.2, fib: 2.1, s: 13, salt: 0 },
|
||||
peakSeasons: ["summer"],
|
||||
shelfLifeGuidance: { fridge: 5 },
|
||||
defaultPriceMinorPerKg: 7000,
|
||||
aliases: ["körsbär", "korsbar", "bigarråer"],
|
||||
}),
|
||||
ing("blackberry", "Björnbär", "Blackberry", "frukt", {
|
||||
...veg,
|
||||
n: { kcal: 43, p: 1.4, k: 5, f: 0.5, fib: 5.3, s: 4.9, salt: 0 },
|
||||
peakSeasons: ["summer", "autumn"],
|
||||
shelfLifeGuidance: { fridge: 3 },
|
||||
defaultPriceMinorPerKg: 9000,
|
||||
aliases: ["björnbär", "bjornbar"],
|
||||
}),
|
||||
ing("blackcurrant", "Svarta vinbär", "Blackcurrant", "frukt", {
|
||||
...veg,
|
||||
n: { kcal: 63, p: 1.4, k: 12, f: 0.4, fib: 6, s: 10, salt: 0 },
|
||||
peakSeasons: ["summer"],
|
||||
shelfLifeGuidance: { fridge: 4 },
|
||||
defaultPriceMinorPerKg: 8000,
|
||||
aliases: ["svarta vinbär", "svarta vinbar", "solbär"],
|
||||
}),
|
||||
ing("redcurrant", "Röda vinbär", "Redcurrant", "frukt", {
|
||||
...veg,
|
||||
n: { kcal: 46, p: 1.1, k: 8, f: 0.2, fib: 4.3, s: 7, salt: 0 },
|
||||
peakSeasons: ["summer"],
|
||||
shelfLifeGuidance: { fridge: 4 },
|
||||
defaultPriceMinorPerKg: 8000,
|
||||
aliases: ["röda vinbär", "roda vinbar"],
|
||||
}),
|
||||
ing("gooseberry", "Krusbär", "Gooseberry", "frukt", {
|
||||
...veg,
|
||||
n: { kcal: 44, p: 0.9, k: 8, f: 0.6, fib: 4.3, s: 8, salt: 0 },
|
||||
peakSeasons: ["summer"],
|
||||
shelfLifeGuidance: { fridge: 5 },
|
||||
defaultPriceMinorPerKg: 7000,
|
||||
aliases: ["krusbär", "krusbar"],
|
||||
}),
|
||||
ing("lingonberry_fresh", "Lingon (färska)", "Lingonberry", "frukt", {
|
||||
...veg,
|
||||
n: { kcal: 54, p: 0.6, k: 9, f: 0.5, fib: 3, s: 6, salt: 0 },
|
||||
peakSeasons: ["autumn"],
|
||||
shelfLifeGuidance: { fridge: 10 },
|
||||
defaultPriceMinorPerKg: 6000,
|
||||
aliases: ["lingon", "färska lingon"],
|
||||
}),
|
||||
ing("cloudberry", "Hjortron", "Cloudberry", "frukt", {
|
||||
...veg,
|
||||
n: { kcal: 51, p: 2.4, k: 8, f: 0.8, fib: 6, s: 8, salt: 0 },
|
||||
peakSeasons: ["summer", "autumn"],
|
||||
shelfLifeGuidance: { fridge: 5 },
|
||||
defaultPriceMinorPerKg: 20000,
|
||||
aliases: ["hjortron"],
|
||||
}),
|
||||
ing("pomegranate", "Granatäpple", "Pomegranate", "frukt", {
|
||||
...veg,
|
||||
gramsPerPiece: 280,
|
||||
n: { kcal: 83, p: 1.7, k: 16, f: 1.2, fib: 4, s: 14, salt: 0 },
|
||||
peakSeasons: ["autumn", "winter"],
|
||||
shelfLifeGuidance: { fridge: 21, pantry: 7 },
|
||||
defaultPriceMinorPerKg: 5000,
|
||||
aliases: ["granatäpple", "granatapple", "granatäpplekärnor"],
|
||||
}),
|
||||
ing("grapefruit", "Grapefrukt", "Grapefruit", "frukt", {
|
||||
...veg,
|
||||
gramsPerPiece: 300,
|
||||
n: { kcal: 42, p: 0.8, k: 9, f: 0.1, fib: 1.6, s: 7, salt: 0 },
|
||||
peakSeasons: ["winter"],
|
||||
shelfLifeGuidance: { fridge: 21, pantry: 7 },
|
||||
defaultPriceMinorPerKg: 3000,
|
||||
aliases: ["grapefrukt", "grape"],
|
||||
}),
|
||||
ing("clementine", "Clementin", "Clementine", "frukt", {
|
||||
...veg,
|
||||
gramsPerPiece: 75,
|
||||
n: { kcal: 47, p: 0.9, k: 10, f: 0.2, fib: 1.7, s: 9, salt: 0 },
|
||||
peakSeasons: ["winter"],
|
||||
shelfLifeGuidance: { fridge: 14, pantry: 7 },
|
||||
defaultPriceMinorPerKg: 3000,
|
||||
aliases: ["clementin", "mandarin", "klementin"],
|
||||
}),
|
||||
ing("passion_fruit", "Passionsfrukt", "Passion fruit", "frukt", {
|
||||
...veg,
|
||||
gramsPerPiece: 40,
|
||||
n: { kcal: 97, p: 2.2, k: 13, f: 0.7, fib: 10, s: 11, salt: 0 },
|
||||
shelfLifeGuidance: { fridge: 10 },
|
||||
defaultPriceMinorPerKg: 12000,
|
||||
aliases: ["passionsfrukt", "maracuja"],
|
||||
}),
|
||||
ing("dates", "Dadlar", "Dates", "frukt", {
|
||||
...veg,
|
||||
n: { kcal: 282, p: 2.5, k: 68, f: 0.4, fib: 8, s: 63, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 180 },
|
||||
defaultPriceMinorPerKg: 6000,
|
||||
aliases: ["dadlar", "medjool", "dadel"],
|
||||
}),
|
||||
|
||||
// ===================================================================
|
||||
// BALJVÄXTER
|
||||
// ===================================================================
|
||||
ing("brown_beans", "Bruna bönor (kokta)", "Brown beans", "baljvaxter", {
|
||||
...veg,
|
||||
allergens: A(),
|
||||
n: { kcal: 91, p: 6, k: 12, f: 0.5, fib: 5, s: 0.5, salt: 0.2 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 2500,
|
||||
aliases: ["bruna bönor", "bruna bonor"],
|
||||
}),
|
||||
ing("white_beans", "Vita bönor (kokta)", "White beans", "baljvaxter", {
|
||||
...veg,
|
||||
n: { kcal: 114, p: 8, k: 15, f: 0.6, fib: 6, s: 0.5, salt: 0.2 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 2500,
|
||||
aliases: ["vita bönor", "vita bonor", "cannellinibönor", "stora vita bönor"],
|
||||
}),
|
||||
ing("green_lentils", "Gröna/bruna linser (torra)", "Green lentils", "baljvaxter", {
|
||||
...veg,
|
||||
n: { kcal: 340, p: 24, k: 47, f: 1.5, fib: 15, s: 2, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 3500,
|
||||
aliases: ["gröna linser", "bruna linser", "puylinser", "belugalinser"],
|
||||
}),
|
||||
ing("yellow_peas", "Gula ärtor (torra)", "Yellow split peas", "baljvaxter", {
|
||||
...veg,
|
||||
n: { kcal: 335, p: 23, k: 49, f: 1.5, fib: 15, s: 3, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 2500,
|
||||
aliases: ["gula ärtor", "gula artor", "gula ärter", "spisärter"],
|
||||
}),
|
||||
ing("edamame", "Edamame (sojabönor)", "Edamame", "baljvaxter", {
|
||||
...veg,
|
||||
allergens: A("soy"),
|
||||
n: { kcal: 121, p: 12, k: 5, f: 5, mf: 0.6, fib: 5, s: 2.2, salt: 0 },
|
||||
shelfLifeGuidance: { freezer: 300 },
|
||||
defaultPriceMinorPerKg: 5000,
|
||||
aliases: ["edamame", "sojabönor", "sojabonor"],
|
||||
}),
|
||||
ing("tempeh", "Tempeh", "Tempeh", "baljvaxter", {
|
||||
...veg,
|
||||
allergens: A("soy"),
|
||||
n: { kcal: 192, p: 20, k: 8, f: 11, mf: 2.2, fib: 5, s: 1, salt: 0 },
|
||||
shelfLifeGuidance: { fridge: 14 },
|
||||
defaultPriceMinorPerKg: 8000,
|
||||
aliases: ["tempeh"],
|
||||
}),
|
||||
ing("soy_mince_dry", "Sojafärs (torr)", "Textured soy protein", "baljvaxter", {
|
||||
...veg,
|
||||
allergens: A("soy"),
|
||||
n: { kcal: 340, p: 52, k: 20, f: 1.5, fib: 18, s: 4, salt: 1 },
|
||||
shelfLifeGuidance: { pantry: 365 },
|
||||
defaultPriceMinorPerKg: 6000,
|
||||
aliases: ["sojafärs", "sojafars", "sojaprotein", "tvp"],
|
||||
}),
|
||||
ing("quorn", "Quorn (mykoprotein)", "Quorn", "baljvaxter", {
|
||||
...vgt,
|
||||
allergens: A("eggs"),
|
||||
n: { kcal: 92, p: 15, k: 4.5, f: 2, mf: 0.5, fib: 6, s: 0.7, salt: 0.4 },
|
||||
shelfLifeGuidance: { fridge: 14, freezer: 300 },
|
||||
defaultPriceMinorPerKg: 9000,
|
||||
aliases: ["quorn", "mykoprotein"],
|
||||
}),
|
||||
ing("falafel", "Falafel (färdig)", "Falafel", "baljvaxter", {
|
||||
...veg,
|
||||
allergens: A("gluten", "sesame"),
|
||||
containsGluten: true,
|
||||
n: { kcal: 333, p: 13, k: 32, f: 18, mf: 2.4, fib: 8, s: 2, salt: 1 },
|
||||
shelfLifeGuidance: { fridge: 7, freezer: 180 },
|
||||
defaultPriceMinorPerKg: 6000,
|
||||
aliases: ["falafel", "falafelbollar"],
|
||||
}),
|
||||
|
||||
// ===================================================================
|
||||
// SPANNMÅL & pasta
|
||||
// ===================================================================
|
||||
ing("brown_rice", "Fullkornsris (torrt)", "Brown rice", "spannmal", {
|
||||
...veg,
|
||||
n: { kcal: 360, p: 7.5, k: 72, f: 2.8, fib: 3.5, s: 0.7, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 3000,
|
||||
aliases: ["fullkornsris", "råris", "raris", "brunt ris"],
|
||||
}),
|
||||
ing("risotto_rice", "Risottoris (arborio)", "Risotto rice", "spannmal", {
|
||||
...veg,
|
||||
n: { kcal: 358, p: 7, k: 78, f: 0.6, fib: 1.4, s: 0.2, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["risottoris", "arborio", "arborioris", "carnaroli"],
|
||||
}),
|
||||
ing("bulgur", "Bulgur (torr)", "Bulgur", "spannmal", {
|
||||
...veg,
|
||||
allergens: A("gluten"),
|
||||
containsGluten: true,
|
||||
n: { kcal: 342, p: 12, k: 63, f: 1.3, fib: 12, s: 0.4, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 3000,
|
||||
aliases: ["bulgur"],
|
||||
}),
|
||||
ing("quinoa", "Quinoa (torr)", "Quinoa", "spannmal", {
|
||||
...veg,
|
||||
n: { kcal: 368, p: 14, k: 57, f: 6, mf: 0.7, fib: 7, s: 0, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 5000,
|
||||
aliases: ["quinoa", "quinoagryn"],
|
||||
}),
|
||||
ing("pearl_barley", "Korngryn/matkorn (torrt)", "Pearl barley", "spannmal", {
|
||||
...veg,
|
||||
allergens: A("gluten"),
|
||||
containsGluten: true,
|
||||
n: { kcal: 352, p: 10, k: 73, f: 1.2, fib: 15, s: 0.8, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 2500,
|
||||
aliases: ["korngryn", "matkorn", "pärlkorn", "kornotto"],
|
||||
}),
|
||||
ing("wholegrain_pasta", "Fullkornspasta (torr)", "Wholegrain pasta", "spannmal", {
|
||||
...veg,
|
||||
allergens: A("gluten"),
|
||||
containsGluten: true,
|
||||
n: { kcal: 348, p: 14, k: 62, f: 2.5, fib: 8, s: 3, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 3000,
|
||||
aliases: ["fullkornspasta", "fullkornsspaghetti"],
|
||||
}),
|
||||
ing("lasagne_sheets", "Lasagneplattor (torra)", "Lasagne sheets", "spannmal", {
|
||||
...veg,
|
||||
allergens: A("gluten"),
|
||||
containsGluten: true,
|
||||
n: { kcal: 355, p: 12, k: 71, f: 1.5, fib: 3, s: 3, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 3500,
|
||||
aliases: ["lasagneplattor", "lasagne", "lasagneplatta"],
|
||||
}),
|
||||
ing("macaroni", "Makaroner (torra)", "Macaroni", "spannmal", {
|
||||
...veg,
|
||||
allergens: A("gluten"),
|
||||
containsGluten: true,
|
||||
n: { kcal: 356, p: 12, k: 71, f: 1.5, fib: 3, s: 3, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 2500,
|
||||
aliases: ["makaroner", "makaroni", "rörmakaroner"],
|
||||
}),
|
||||
ing("rice_noodles", "Risnudlar (torra)", "Rice noodles", "spannmal", {
|
||||
...veg,
|
||||
n: { kcal: 360, p: 6, k: 83, f: 0.6, fib: 1.6, s: 0, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["risnudlar", "risnudel", "glasnudlar"],
|
||||
}),
|
||||
ing("muesli", "Müsli", "Muesli", "spannmal", {
|
||||
...veg,
|
||||
allergens: A("gluten", "tree_nuts"),
|
||||
containsGluten: true,
|
||||
n: { kcal: 360, p: 10, k: 60, f: 6, mf: 1, fib: 8, s: 15, salt: 0.1 },
|
||||
shelfLifeGuidance: { pantry: 180 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["müsli", "musli", "granola"],
|
||||
}),
|
||||
ing("cornflakes", "Cornflakes", "Cornflakes", "spannmal", {
|
||||
...veg,
|
||||
allergens: A("gluten"),
|
||||
containsGluten: true,
|
||||
n: { kcal: 378, p: 7, k: 84, f: 0.9, fib: 3, s: 8, salt: 1.1 },
|
||||
shelfLifeGuidance: { pantry: 180 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["cornflakes", "majsflingor"],
|
||||
}),
|
||||
|
||||
// ===================================================================
|
||||
// BRÖD
|
||||
// ===================================================================
|
||||
ing("knackebrod", "Knäckebröd", "Crispbread", "brod", {
|
||||
...veg,
|
||||
allergens: A("gluten"),
|
||||
containsGluten: true,
|
||||
n: { kcal: 340, p: 10, k: 62, f: 2, fib: 16, s: 1, salt: 1.2 },
|
||||
shelfLifeGuidance: { pantry: 180 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["knäckebröd", "knackebrod", "knäcke"],
|
||||
}),
|
||||
ing("rye_bread", "Rågbröd", "Rye bread", "brod", {
|
||||
...veg,
|
||||
allergens: A("gluten"),
|
||||
containsGluten: true,
|
||||
n: { kcal: 230, p: 7, k: 44, f: 1.5, fib: 6, s: 3, salt: 1 },
|
||||
shelfLifeGuidance: { pantry: 5, freezer: 90 },
|
||||
defaultPriceMinorPerKg: 4500,
|
||||
aliases: ["rågbröd", "ragbrod", "kavring", "mörkt bröd"],
|
||||
}),
|
||||
ing("toast_bread", "Formbröd (vitt)", "White loaf", "brod", {
|
||||
...veg,
|
||||
allergens: A("gluten"),
|
||||
containsGluten: true,
|
||||
n: { kcal: 265, p: 8, k: 49, f: 3.5, fib: 3, s: 4, salt: 1 },
|
||||
shelfLifeGuidance: { pantry: 5, freezer: 90 },
|
||||
defaultPriceMinorPerKg: 3500,
|
||||
aliases: ["formbröd", "formbrod", "rostbröd", "toast", "vitt bröd"],
|
||||
}),
|
||||
ing("baguette", "Baguette", "Baguette", "brod", {
|
||||
...veg,
|
||||
allergens: A("gluten"),
|
||||
containsGluten: true,
|
||||
n: { kcal: 270, p: 9, k: 52, f: 2, fib: 3, s: 2.5, salt: 1.2 },
|
||||
shelfLifeGuidance: { pantry: 2 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["baguette", "franskbröd", "ciabatta"],
|
||||
}),
|
||||
ing("pita_bread", "Pitabröd", "Pita bread", "brod", {
|
||||
...veg,
|
||||
allergens: A("gluten"),
|
||||
containsGluten: true,
|
||||
n: { kcal: 275, p: 9, k: 55, f: 1.2, fib: 2.2, s: 2, salt: 1.1 },
|
||||
shelfLifeGuidance: { pantry: 5, freezer: 90 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["pitabröd", "pitabrod", "pita"],
|
||||
}),
|
||||
ing("naan_bread", "Naanbröd", "Naan bread", "brod", {
|
||||
...vgt,
|
||||
allergens: A("gluten", "milk"),
|
||||
containsGluten: true,
|
||||
containsLactose: true,
|
||||
n: { kcal: 310, p: 9, k: 50, f: 8, mf: 2, fib: 2, s: 4, salt: 1.1 },
|
||||
shelfLifeGuidance: { pantry: 5, freezer: 90 },
|
||||
defaultPriceMinorPerKg: 5000,
|
||||
aliases: ["naan", "naanbröd", "naanbrod"],
|
||||
}),
|
||||
ing("tunnbrod", "Tunnbröd", "Swedish flatbread", "brod", {
|
||||
...veg,
|
||||
allergens: A("gluten"),
|
||||
containsGluten: true,
|
||||
n: { kcal: 290, p: 9, k: 55, f: 3, fib: 5, s: 2, salt: 1 },
|
||||
shelfLifeGuidance: { pantry: 14, freezer: 120 },
|
||||
defaultPriceMinorPerKg: 5000,
|
||||
aliases: ["tunnbröd", "tunnbrod", "mjukt tunnbröd", "polarbröd"],
|
||||
}),
|
||||
|
||||
// ===================================================================
|
||||
// BAKNING
|
||||
// ===================================================================
|
||||
ing("white_chocolate", "Vit choklad", "White chocolate", "bakning", {
|
||||
...vgt,
|
||||
allergens: A("milk", "soy"),
|
||||
containsLactose: true,
|
||||
n: { kcal: 539, p: 6, k: 59, f: 30, mf: 18, s: 59, salt: 0.2 },
|
||||
shelfLifeGuidance: { pantry: 365 },
|
||||
defaultPriceMinorPerKg: 12000,
|
||||
aliases: ["vit choklad", "vitchoklad"],
|
||||
}),
|
||||
ing("milk_chocolate", "Mjölkchoklad", "Milk chocolate", "bakning", {
|
||||
...vgt,
|
||||
allergens: A("milk", "soy"),
|
||||
containsLactose: true,
|
||||
n: { kcal: 535, p: 7.7, k: 59, f: 30, mf: 18, s: 52, salt: 0.2 },
|
||||
shelfLifeGuidance: { pantry: 365 },
|
||||
defaultPriceMinorPerKg: 10000,
|
||||
aliases: ["mjölkchoklad", "mjolkchoklad", "choklad"],
|
||||
}),
|
||||
ing("marzipan", "Marsipan", "Marzipan", "bakning", {
|
||||
...veg,
|
||||
allergens: A("tree_nuts"),
|
||||
n: { kcal: 460, p: 9, k: 50, f: 25, mf: 2.3, fib: 5, s: 43, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 180 },
|
||||
defaultPriceMinorPerKg: 10000,
|
||||
aliases: ["marsipan"],
|
||||
}),
|
||||
ing("dry_yeast", "Torrjäst", "Dry yeast", "bakning", {
|
||||
...veg,
|
||||
n: { kcal: 325, p: 40, k: 5, f: 7.6, fib: 26, s: 0, salt: 0.1 },
|
||||
shelfLifeGuidance: { pantry: 365 },
|
||||
defaultPriceMinorPerKg: 12000,
|
||||
aliases: ["torrjäst", "torrjast", "snabbjäst"],
|
||||
}),
|
||||
ing("gelatin", "Gelatin (blad/pulver)", "Gelatin", "bakning", {
|
||||
n: { kcal: 335, p: 84, k: 0, f: 0.1, s: 0, salt: 0.3 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 15000,
|
||||
aliases: ["gelatin", "gelatinblad", "husbloss"],
|
||||
}),
|
||||
ing("light_syrup", "Ljus sirap", "Light syrup", "bakning", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1.4,
|
||||
n: { kcal: 315, p: 0.3, k: 78, f: 0, s: 50, salt: 0.1 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["ljus sirap", "sirap", "glykossirap"],
|
||||
}),
|
||||
ing("dark_syrup", "Mörk sirap", "Dark syrup", "bakning", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1.42,
|
||||
n: { kcal: 300, p: 1, k: 74, f: 0, s: 48, salt: 0.2 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["mörk sirap", "mork sirap", "melass"],
|
||||
}),
|
||||
ing("brown_sugar", "Farinsocker", "Brown sugar", "bakning", {
|
||||
...veg,
|
||||
n: { kcal: 384, p: 0.1, k: 96, f: 0, s: 95, salt: 0.1 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 2500,
|
||||
aliases: ["farinsocker", "brunt socker", "muscovado", "muscovadosocker"],
|
||||
}),
|
||||
ing("almond_flour", "Mandelmjöl", "Almond flour", "bakning", {
|
||||
...veg,
|
||||
allergens: A("tree_nuts"),
|
||||
n: { kcal: 620, p: 24, k: 6, f: 53, mf: 4, fib: 11, s: 4, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 180 },
|
||||
defaultPriceMinorPerKg: 12000,
|
||||
aliases: ["mandelmjöl", "mandelmjol", "malen mandel"],
|
||||
}),
|
||||
ing("coconut_flour", "Kokosmjöl", "Coconut flour", "bakning", {
|
||||
...veg,
|
||||
n: { kcal: 400, p: 18, k: 22, f: 16, mf: 14, fib: 39, s: 9, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 180 },
|
||||
defaultPriceMinorPerKg: 8000,
|
||||
aliases: ["kokosmjöl", "kokosmjol"],
|
||||
}),
|
||||
ing("potato_starch", "Potatismjöl", "Potato starch", "bakning", {
|
||||
...veg,
|
||||
n: { kcal: 333, p: 0.1, k: 83, f: 0.1, s: 0, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 3000,
|
||||
aliases: ["potatismjöl", "potatismjol", "potatisstärkelse"],
|
||||
}),
|
||||
ing("cornstarch", "Majsstärkelse (Maizena)", "Cornstarch", "bakning", {
|
||||
...veg,
|
||||
n: { kcal: 381, p: 0.3, k: 91, f: 0.1, s: 0, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 3500,
|
||||
aliases: ["majsstärkelse", "majsstarkelse", "maizena", "majsmjöl"],
|
||||
}),
|
||||
ing("chocolate_chips", "Chokladknappar (mörka)", "Dark chocolate chips", "bakning", {
|
||||
...veg,
|
||||
allergens: A("soy"),
|
||||
n: { kcal: 480, p: 4, k: 63, f: 25, mf: 15, s: 55, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 365 },
|
||||
defaultPriceMinorPerKg: 11000,
|
||||
aliases: ["chokladknappar", "chokladchips", "bakchoklad"],
|
||||
}),
|
||||
|
||||
// ===================================================================
|
||||
// SKAFFERI – oljor, vinäger, såser, nötter, frön, sylt, pasta/fond
|
||||
// ===================================================================
|
||||
ing("sunflower_oil", "Solrosolja", "Sunflower oil", "skafferi", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 0.92,
|
||||
n: { kcal: 884, p: 0, k: 0, f: 100, mf: 11, s: 0, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 365 },
|
||||
defaultPriceMinorPerKg: 3000,
|
||||
aliases: ["solrosolja"],
|
||||
}),
|
||||
ing("coconut_oil", "Kokosolja", "Coconut oil", "skafferi", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 0.92,
|
||||
n: { kcal: 892, p: 0, k: 0, f: 100, mf: 87, s: 0, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 365 },
|
||||
defaultPriceMinorPerKg: 6000,
|
||||
aliases: ["kokosolja", "kokosfett"],
|
||||
}),
|
||||
ing("sesame_oil", "Sesamolja", "Sesame oil", "skafferi", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 0.92,
|
||||
allergens: A("sesame"),
|
||||
n: { kcal: 884, p: 0, k: 0, f: 100, mf: 14, s: 0, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 365 },
|
||||
defaultPriceMinorPerKg: 8000,
|
||||
aliases: ["sesamolja", "rostad sesamolja"],
|
||||
}),
|
||||
ing("white_wine_vinegar", "Vitvinsvinäger", "White wine vinegar", "skafferi", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1,
|
||||
n: { kcal: 20, p: 0, k: 0.6, f: 0, s: 0.4, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 3000,
|
||||
aliases: ["vitvinsvinäger", "vitvinsvinager"],
|
||||
}),
|
||||
ing("red_wine_vinegar", "Rödvinsvinäger", "Red wine vinegar", "skafferi", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1,
|
||||
n: { kcal: 19, p: 0, k: 0.3, f: 0, s: 0.3, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 3000,
|
||||
aliases: ["rödvinsvinäger", "rodvinsvinager"],
|
||||
}),
|
||||
ing("apple_cider_vinegar", "Äppelcidervinäger", "Apple cider vinegar", "skafferi", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1.01,
|
||||
n: { kcal: 22, p: 0, k: 0.9, f: 0, s: 0.4, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 3500,
|
||||
aliases: ["äppelcidervinäger", "appelcidervinager", "äpplecidervinäger"],
|
||||
}),
|
||||
ing("vinegar_attika", "Ättika 12 %", "Vinegar (ättika)", "skafferi", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1.01,
|
||||
n: { kcal: 12, p: 0, k: 0, f: 0, s: 0, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 1095 },
|
||||
defaultPriceMinorPerKg: 2000,
|
||||
aliases: ["ättika", "attika", "ättiksprit"],
|
||||
}),
|
||||
ing("rice_vinegar", "Risvinäger", "Rice vinegar", "skafferi", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1,
|
||||
n: { kcal: 18, p: 0, k: 0.5, f: 0, s: 0.5, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["risvinäger", "risvinager"],
|
||||
}),
|
||||
ing("ketchup", "Ketchup", "Ketchup", "skafferi", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1.1,
|
||||
n: { kcal: 102, p: 1.2, k: 24, f: 0.1, fib: 0.3, s: 22, salt: 2.5 },
|
||||
shelfLifeGuidance: { fridge: 60, pantry: 180 },
|
||||
defaultPriceMinorPerKg: 3000,
|
||||
aliases: ["ketchup", "tomatketchup"],
|
||||
}),
|
||||
ing("bbq_sauce", "Grillsås (BBQ)", "BBQ sauce", "skafferi", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1.2,
|
||||
n: { kcal: 172, p: 0.8, k: 41, f: 0.2, s: 33, salt: 2 },
|
||||
shelfLifeGuidance: { fridge: 60, pantry: 180 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["grillsås", "grillsas", "bbq-sås", "barbecuesås"],
|
||||
}),
|
||||
ing("sweet_chili_sauce", "Sweet chilisås", "Sweet chili sauce", "skafferi", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1.2,
|
||||
n: { kcal: 230, p: 0.5, k: 56, f: 0.1, s: 52, salt: 1.5 },
|
||||
shelfLifeGuidance: { fridge: 60, pantry: 180 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["sweet chili", "sweet chilisås", "chilisås"],
|
||||
}),
|
||||
ing("sriracha", "Sriracha", "Sriracha", "skafferi", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1.1,
|
||||
n: { kcal: 93, p: 1.9, k: 19, f: 0.9, s: 15, salt: 6 },
|
||||
shelfLifeGuidance: { fridge: 90, pantry: 365 },
|
||||
defaultPriceMinorPerKg: 5000,
|
||||
aliases: ["sriracha", "srirachasås"],
|
||||
}),
|
||||
ing("hoisin_sauce", "Hoisinsås", "Hoisin sauce", "skafferi", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1.2,
|
||||
allergens: A("soy", "gluten", "sesame"),
|
||||
containsGluten: true,
|
||||
n: { kcal: 220, p: 3, k: 44, f: 3.4, fib: 2, s: 30, salt: 3.8 },
|
||||
shelfLifeGuidance: { fridge: 90, pantry: 365 },
|
||||
defaultPriceMinorPerKg: 6000,
|
||||
aliases: ["hoisin", "hoisinsås"],
|
||||
}),
|
||||
ing("oyster_sauce", "Ostronsås", "Oyster sauce", "skafferi", {
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1.2,
|
||||
allergens: A("molluscs", "soy", "gluten"),
|
||||
containsGluten: true,
|
||||
n: { kcal: 135, p: 2.4, k: 27, f: 0.3, s: 18, salt: 11 },
|
||||
shelfLifeGuidance: { fridge: 90, pantry: 365 },
|
||||
defaultPriceMinorPerKg: 6000,
|
||||
aliases: ["ostronsås", "ostronsas", "oyster sauce"],
|
||||
}),
|
||||
ing("worcestershire", "Worcestershiresås", "Worcestershire sauce", "skafferi", {
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1.1,
|
||||
allergens: A("fish"),
|
||||
n: { kcal: 78, p: 0, k: 19, f: 0, s: 15, salt: 8.5 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 6000,
|
||||
aliases: ["worcestershire", "worcestershiresås", "wostershiresås"],
|
||||
}),
|
||||
ing("pesto_green", "Pesto (grön)", "Green pesto", "skafferi", {
|
||||
...vgt,
|
||||
allergens: A("milk", "tree_nuts"),
|
||||
containsLactose: true,
|
||||
n: { kcal: 450, p: 5, k: 6, f: 45, mf: 7, fib: 2, s: 3, salt: 2.5 },
|
||||
shelfLifeGuidance: { fridge: 30, pantry: 180 },
|
||||
defaultPriceMinorPerKg: 9000,
|
||||
aliases: ["pesto", "grön pesto", "basilikapesto"],
|
||||
}),
|
||||
ing("sundried_tomatoes", "Soltorkade tomater", "Sun-dried tomatoes", "skafferi", {
|
||||
...veg,
|
||||
n: { kcal: 213, p: 5, k: 23, f: 12, mf: 1.7, fib: 6, s: 18, salt: 2 },
|
||||
shelfLifeGuidance: { fridge: 30, pantry: 180 },
|
||||
defaultPriceMinorPerKg: 9000,
|
||||
aliases: ["soltorkade tomater", "soltorkad tomat"],
|
||||
}),
|
||||
ing("capers", "Kapris", "Capers", "skafferi", {
|
||||
...veg,
|
||||
n: { kcal: 23, p: 2.4, k: 1.7, f: 0.9, fib: 3.2, s: 0.4, salt: 2.5 },
|
||||
shelfLifeGuidance: { fridge: 180, pantry: 365 },
|
||||
defaultPriceMinorPerKg: 8000,
|
||||
aliases: ["kapris"],
|
||||
}),
|
||||
ing("tahini", "Tahini (sesampasta)", "Tahini", "skafferi", {
|
||||
...veg,
|
||||
allergens: A("sesame"),
|
||||
n: { kcal: 595, p: 17, k: 21, f: 54, mf: 7.6, fib: 9, s: 0.5, salt: 0.1 },
|
||||
shelfLifeGuidance: { pantry: 365 },
|
||||
defaultPriceMinorPerKg: 9000,
|
||||
aliases: ["tahini", "sesampasta"],
|
||||
}),
|
||||
ing("almonds", "Mandel", "Almonds", "skafferi", {
|
||||
...veg,
|
||||
allergens: A("tree_nuts"),
|
||||
n: { kcal: 579, p: 21, k: 22, f: 50, mf: 3.8, fib: 12, s: 4.4, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 365 },
|
||||
defaultPriceMinorPerKg: 12000,
|
||||
aliases: ["mandel", "mandlar", "sötmandel"],
|
||||
}),
|
||||
ing("cashews", "Cashewnötter", "Cashews", "skafferi", {
|
||||
...veg,
|
||||
allergens: A("tree_nuts"),
|
||||
n: { kcal: 553, p: 18, k: 30, f: 44, mf: 8, fib: 3.3, s: 6, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 365 },
|
||||
defaultPriceMinorPerKg: 13000,
|
||||
aliases: ["cashewnötter", "cashew", "cashewnot"],
|
||||
}),
|
||||
ing("pistachios", "Pistagenötter", "Pistachios", "skafferi", {
|
||||
...veg,
|
||||
allergens: A("tree_nuts"),
|
||||
n: { kcal: 560, p: 20, k: 28, f: 45, mf: 5.5, fib: 10, s: 8, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 365 },
|
||||
defaultPriceMinorPerKg: 18000,
|
||||
aliases: ["pistagenötter", "pistage", "pistaschnötter"],
|
||||
}),
|
||||
ing("pecans", "Pecannötter", "Pecans", "skafferi", {
|
||||
...veg,
|
||||
allergens: A("tree_nuts"),
|
||||
n: { kcal: 691, p: 9, k: 14, f: 72, mf: 6, fib: 10, s: 4, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 365 },
|
||||
defaultPriceMinorPerKg: 16000,
|
||||
aliases: ["pecannötter", "pekannötter", "pecan"],
|
||||
}),
|
||||
ing("pine_nuts", "Pinjenötter", "Pine nuts", "skafferi", {
|
||||
...veg,
|
||||
allergens: A("tree_nuts"),
|
||||
n: { kcal: 673, p: 14, k: 13, f: 68, mf: 4.9, fib: 3.7, s: 3.6, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 180 },
|
||||
defaultPriceMinorPerKg: 30000,
|
||||
aliases: ["pinjenötter", "pinjenot", "pinjekärnor"],
|
||||
}),
|
||||
ing("peanuts", "Jordnötter", "Peanuts", "skafferi", {
|
||||
...veg,
|
||||
allergens: A("peanuts"),
|
||||
n: { kcal: 567, p: 26, k: 16, f: 49, mf: 6.8, fib: 8.5, s: 4, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 365 },
|
||||
defaultPriceMinorPerKg: 6000,
|
||||
aliases: ["jordnötter", "jordnot", "salta jordnötter"],
|
||||
}),
|
||||
ing("sunflower_seeds", "Solrosfrön", "Sunflower seeds", "skafferi", {
|
||||
...veg,
|
||||
n: { kcal: 584, p: 21, k: 20, f: 51, mf: 4.5, fib: 8.6, s: 2.6, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 365 },
|
||||
defaultPriceMinorPerKg: 5000,
|
||||
aliases: ["solrosfrön", "solrosfron", "solroskärnor"],
|
||||
}),
|
||||
ing("pumpkin_seeds", "Pumpafrön", "Pumpkin seeds", "skafferi", {
|
||||
...veg,
|
||||
n: { kcal: 559, p: 30, k: 11, f: 49, mf: 8.7, fib: 6, s: 1.4, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 365 },
|
||||
defaultPriceMinorPerKg: 7000,
|
||||
aliases: ["pumpafrön", "pumpafron", "pumpakärnor"],
|
||||
}),
|
||||
ing("flax_seeds", "Linfrön", "Flax seeds", "skafferi", {
|
||||
...veg,
|
||||
n: { kcal: 534, p: 18, k: 29, f: 42, mf: 3.7, fib: 27, s: 1.5, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 365 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["linfrön", "linfron", "linfrö"],
|
||||
}),
|
||||
ing("chia_seeds", "Chiafrön", "Chia seeds", "skafferi", {
|
||||
...veg,
|
||||
n: { kcal: 486, p: 17, k: 42, f: 31, mf: 3.3, fib: 34, s: 0, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 365 },
|
||||
defaultPriceMinorPerKg: 8000,
|
||||
aliases: ["chiafrön", "chiafron", "chiafrö"],
|
||||
}),
|
||||
ing("maple_syrup", "Lönnsirap", "Maple syrup", "skafferi", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1.32,
|
||||
n: { kcal: 260, p: 0, k: 67, f: 0.1, s: 60, salt: 0 },
|
||||
shelfLifeGuidance: { fridge: 365, pantry: 365 },
|
||||
defaultPriceMinorPerKg: 12000,
|
||||
aliases: ["lönnsirap", "lonnsirap", "maple syrup"],
|
||||
}),
|
||||
ing("agave_syrup", "Agavesirap", "Agave syrup", "skafferi", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1.35,
|
||||
n: { kcal: 310, p: 0, k: 76, f: 0, s: 68, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 365 },
|
||||
defaultPriceMinorPerKg: 8000,
|
||||
aliases: ["agavesirap", "agave"],
|
||||
}),
|
||||
ing("hazelnut_spread", "Hasselnötskräm (choklad)", "Hazelnut spread", "skafferi", {
|
||||
...vgt,
|
||||
allergens: A("tree_nuts", "milk", "soy"),
|
||||
containsLactose: true,
|
||||
n: { kcal: 539, p: 6, k: 57, f: 31, mf: 11, s: 57, salt: 0.1 },
|
||||
shelfLifeGuidance: { pantry: 365 },
|
||||
defaultPriceMinorPerKg: 8000,
|
||||
aliases: ["nutella", "hasselnötskräm", "chokladkräm"],
|
||||
}),
|
||||
ing("orange_marmalade", "Apelsinmarmelad", "Orange marmalade", "skafferi", {
|
||||
...veg,
|
||||
n: { kcal: 265, p: 0.3, k: 65, f: 0.1, s: 60, salt: 0 },
|
||||
shelfLifeGuidance: { fridge: 60, pantry: 365 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["apelsinmarmelad", "marmelad"],
|
||||
}),
|
||||
ing("blueberry_jam", "Blåbärssylt", "Blueberry jam", "skafferi", {
|
||||
...veg,
|
||||
n: { kcal: 200, p: 0.4, k: 49, f: 0.2, s: 45, salt: 0 },
|
||||
shelfLifeGuidance: { fridge: 60, pantry: 365 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["blåbärssylt", "blabarssylt"],
|
||||
}),
|
||||
ing("raspberry_jam", "Hallonsylt", "Raspberry jam", "skafferi", {
|
||||
...veg,
|
||||
n: { kcal: 210, p: 0.5, k: 51, f: 0.2, s: 47, salt: 0 },
|
||||
shelfLifeGuidance: { fridge: 60, pantry: 365 },
|
||||
defaultPriceMinorPerKg: 4000,
|
||||
aliases: ["hallonsylt"],
|
||||
}),
|
||||
ing("miso_paste", "Misopasta", "Miso paste", "skafferi", {
|
||||
...veg,
|
||||
allergens: A("soy", "gluten"),
|
||||
containsGluten: true,
|
||||
n: { kcal: 199, p: 12, k: 26, f: 6, fib: 5, s: 6, salt: 12 },
|
||||
shelfLifeGuidance: { fridge: 365 },
|
||||
defaultPriceMinorPerKg: 9000,
|
||||
aliases: ["miso", "misopasta"],
|
||||
}),
|
||||
ing("sambal_oelek", "Sambal oelek", "Sambal oelek", "skafferi", {
|
||||
...veg,
|
||||
n: { kcal: 40, p: 1.5, k: 7, f: 0.5, s: 4, salt: 8 },
|
||||
shelfLifeGuidance: { fridge: 180, pantry: 365 },
|
||||
defaultPriceMinorPerKg: 5000,
|
||||
aliases: ["sambal oelek", "sambal"],
|
||||
}),
|
||||
ing("green_curry_paste", "Grön currypasta", "Green curry paste", "skafferi", {
|
||||
allergens: A("crustaceans", "fish"),
|
||||
n: { kcal: 120, p: 3, k: 15, f: 5, fib: 3, s: 5, salt: 6 },
|
||||
shelfLifeGuidance: { fridge: 90, pantry: 365 },
|
||||
defaultPriceMinorPerKg: 8000,
|
||||
aliases: ["grön currypasta", "gron currypasta", "grön curry"],
|
||||
}),
|
||||
ing("panko", "Panko (ströbröd)", "Panko breadcrumbs", "skafferi", {
|
||||
...veg,
|
||||
allergens: A("gluten"),
|
||||
containsGluten: true,
|
||||
n: { kcal: 360, p: 12, k: 72, f: 2, fib: 4, s: 3, salt: 1.2 },
|
||||
shelfLifeGuidance: { pantry: 180 },
|
||||
defaultPriceMinorPerKg: 5000,
|
||||
aliases: ["panko", "japanskt ströbröd"],
|
||||
}),
|
||||
ing("beef_stock_cube", "Köttbuljongtärning", "Beef stock cube", "skafferi", {
|
||||
allergens: A("celery"),
|
||||
n: { kcal: 200, p: 12, k: 20, f: 8, s: 2, salt: 40 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 8000,
|
||||
aliases: ["köttbuljong", "kottbuljong", "oxbuljong", "buljongtärning"],
|
||||
}),
|
||||
|
||||
// ===================================================================
|
||||
// KRYDDOR (torkade)
|
||||
// ===================================================================
|
||||
ing("white_pepper", "Vitpeppar", "White pepper", "kryddor", {
|
||||
...veg,
|
||||
n: { kcal: 296, p: 10, k: 69, f: 2, fib: 26, s: 0, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 1095 },
|
||||
defaultPriceMinorPerKg: 20000,
|
||||
aliases: ["vitpeppar"],
|
||||
}),
|
||||
ing("cayenne_pepper", "Cayennepeppar", "Cayenne pepper", "kryddor", {
|
||||
...veg,
|
||||
n: { kcal: 318, p: 12, k: 57, f: 17, fib: 27, s: 10, salt: 0.3 },
|
||||
shelfLifeGuidance: { pantry: 1095 },
|
||||
defaultPriceMinorPerKg: 16000,
|
||||
aliases: ["cayennepeppar", "cayenne"],
|
||||
}),
|
||||
ing("chili_powder", "Chilipulver", "Chili powder", "kryddor", {
|
||||
...veg,
|
||||
n: { kcal: 282, p: 13, k: 50, f: 14, fib: 35, s: 8, salt: 1.6 },
|
||||
shelfLifeGuidance: { pantry: 1095 },
|
||||
defaultPriceMinorPerKg: 12000,
|
||||
aliases: ["chilipulver"],
|
||||
}),
|
||||
ing("nutmeg", "Muskotnöt", "Nutmeg", "kryddor", {
|
||||
...veg,
|
||||
n: { kcal: 525, p: 6, k: 49, f: 36, fib: 21, s: 3, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 1095 },
|
||||
defaultPriceMinorPerKg: 30000,
|
||||
aliases: ["muskot", "muskotnöt", "muskotnot"],
|
||||
}),
|
||||
ing("cloves", "Kryddnejlika", "Cloves", "kryddor", {
|
||||
...veg,
|
||||
n: { kcal: 274, p: 6, k: 66, f: 13, fib: 34, s: 2.4, salt: 0.3 },
|
||||
shelfLifeGuidance: { pantry: 1095 },
|
||||
defaultPriceMinorPerKg: 20000,
|
||||
aliases: ["kryddnejlika", "nejlika", "nejlikor"],
|
||||
}),
|
||||
ing("coriander_ground", "Koriander (mald)", "Ground coriander", "kryddor", {
|
||||
...veg,
|
||||
n: { kcal: 298, p: 12, k: 55, f: 18, fib: 42, s: 0, salt: 0.3 },
|
||||
shelfLifeGuidance: { pantry: 1095 },
|
||||
defaultPriceMinorPerKg: 14000,
|
||||
aliases: ["mald koriander", "korianderfrö", "korianderpulver"],
|
||||
}),
|
||||
ing("ground_ginger", "Ingefära (mald)", "Ground ginger", "kryddor", {
|
||||
...veg,
|
||||
n: { kcal: 335, p: 9, k: 72, f: 4, fib: 14, s: 3, salt: 0.1 },
|
||||
shelfLifeGuidance: { pantry: 1095 },
|
||||
defaultPriceMinorPerKg: 14000,
|
||||
aliases: ["mald ingefära", "torkad ingefära", "ingefärspulver"],
|
||||
}),
|
||||
ing("bay_leaf", "Lagerblad", "Bay leaf", "kryddor", {
|
||||
...veg,
|
||||
n: { kcal: 313, p: 8, k: 75, f: 8, fib: 26, s: 0, salt: 0.2 },
|
||||
shelfLifeGuidance: { pantry: 1095 },
|
||||
defaultPriceMinorPerKg: 16000,
|
||||
aliases: ["lagerblad", "lagerbladen"],
|
||||
}),
|
||||
ing("fennel_seeds", "Fänkålsfrön", "Fennel seeds", "kryddor", {
|
||||
...veg,
|
||||
n: { kcal: 345, p: 16, k: 52, f: 15, fib: 40, s: 0, salt: 0.2 },
|
||||
shelfLifeGuidance: { pantry: 1095 },
|
||||
defaultPriceMinorPerKg: 14000,
|
||||
aliases: ["fänkålsfrön", "fankalsfron", "fänkålsfrö"],
|
||||
}),
|
||||
ing("mustard_seeds", "Senapsfrön", "Mustard seeds", "kryddor", {
|
||||
...veg,
|
||||
allergens: A("mustard"),
|
||||
n: { kcal: 508, p: 26, k: 28, f: 36, fib: 12, s: 6.8, salt: 0.1 },
|
||||
shelfLifeGuidance: { pantry: 1095 },
|
||||
defaultPriceMinorPerKg: 10000,
|
||||
aliases: ["senapsfrön", "senapsfron", "senapsfrö"],
|
||||
}),
|
||||
ing("caraway_seeds", "Kummin", "Caraway seeds", "kryddor", {
|
||||
...veg,
|
||||
n: { kcal: 333, p: 20, k: 50, f: 15, fib: 38, s: 0.6, salt: 0.1 },
|
||||
shelfLifeGuidance: { pantry: 1095 },
|
||||
defaultPriceMinorPerKg: 12000,
|
||||
aliases: ["kummin", "kumminfrön"],
|
||||
}),
|
||||
ing("star_anise", "Stjärnanis", "Star anise", "kryddor", {
|
||||
...veg,
|
||||
n: { kcal: 337, p: 18, k: 50, f: 16, fib: 15, s: 0, salt: 0.2 },
|
||||
shelfLifeGuidance: { pantry: 1095 },
|
||||
defaultPriceMinorPerKg: 18000,
|
||||
aliases: ["stjärnanis", "stjarnanis", "anis"],
|
||||
}),
|
||||
ing("rosemary_dried", "Rosmarin (torkad)", "Dried rosemary", "kryddor", {
|
||||
...veg,
|
||||
n: { kcal: 331, p: 5, k: 64, f: 15, fib: 43, s: 0, salt: 0.1 },
|
||||
shelfLifeGuidance: { pantry: 1095 },
|
||||
defaultPriceMinorPerKg: 12000,
|
||||
aliases: ["torkad rosmarin", "rosmarinpulver"],
|
||||
}),
|
||||
ing("basil_dried", "Basilika (torkad)", "Dried basil", "kryddor", {
|
||||
...veg,
|
||||
n: { kcal: 233, p: 23, k: 48, f: 4, fib: 38, s: 1.7, salt: 0.1 },
|
||||
shelfLifeGuidance: { pantry: 1095 },
|
||||
defaultPriceMinorPerKg: 12000,
|
||||
aliases: ["torkad basilika"],
|
||||
}),
|
||||
ing("garlic_powder", "Vitlökspulver", "Garlic powder", "kryddor", {
|
||||
...veg,
|
||||
n: { kcal: 331, p: 17, k: 73, f: 0.7, fib: 9, s: 2.4, salt: 0.1 },
|
||||
shelfLifeGuidance: { pantry: 1095 },
|
||||
defaultPriceMinorPerKg: 12000,
|
||||
aliases: ["vitlökspulver", "vitlokspulver", "vitlöksgranulat"],
|
||||
}),
|
||||
ing("onion_powder", "Lökpulver", "Onion powder", "kryddor", {
|
||||
...veg,
|
||||
n: { kcal: 341, p: 10, k: 79, f: 1, fib: 15, s: 6, salt: 0.1 },
|
||||
shelfLifeGuidance: { pantry: 1095 },
|
||||
defaultPriceMinorPerKg: 11000,
|
||||
aliases: ["lökpulver", "lokpulver"],
|
||||
}),
|
||||
ing("smoked_paprika", "Rökt paprikapulver", "Smoked paprika", "kryddor", {
|
||||
...veg,
|
||||
n: { kcal: 282, p: 14, k: 54, f: 13, fib: 35, s: 10, salt: 0.3 },
|
||||
shelfLifeGuidance: { pantry: 1095 },
|
||||
defaultPriceMinorPerKg: 12000,
|
||||
aliases: ["rökt paprika", "rokt paprika", "pimentón"],
|
||||
}),
|
||||
ing("italian_herbs", "Italiensk krydda", "Italian herbs", "kryddor", {
|
||||
...veg,
|
||||
n: { kcal: 290, p: 10, k: 52, f: 7, fib: 38, s: 0, salt: 0.2 },
|
||||
shelfLifeGuidance: { pantry: 1095 },
|
||||
defaultPriceMinorPerKg: 10000,
|
||||
aliases: ["italiensk krydda", "örtkrydda", "herbes de provence", "pizzakrydda"],
|
||||
}),
|
||||
|
||||
// ===================================================================
|
||||
// KONSERVER & DRYCK
|
||||
// ===================================================================
|
||||
ing("passata", "Passata (silad tomat)", "Tomato passata", "konserver", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1.05,
|
||||
n: { kcal: 35, p: 1.6, k: 6, f: 0.2, fib: 1.4, s: 5, salt: 0.1 },
|
||||
shelfLifeGuidance: { fridge: 5, pantry: 540 },
|
||||
defaultPriceMinorPerKg: 2500,
|
||||
aliases: ["passata", "silad tomat", "tomatpassata"],
|
||||
}),
|
||||
ing("coconut_cream", "Kokosgrädde", "Coconut cream", "konserver", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1,
|
||||
n: { kcal: 330, p: 3.6, k: 6, f: 34, mf: 30, s: 3, salt: 0 },
|
||||
shelfLifeGuidance: { fridge: 4, pantry: 540 },
|
||||
defaultPriceMinorPerKg: 5000,
|
||||
aliases: ["kokosgrädde", "kokosgradde", "coconut cream"],
|
||||
}),
|
||||
ing("pineapple_canned", "Ananas (konserv)", "Canned pineapple", "konserver", {
|
||||
...veg,
|
||||
n: { kcal: 60, p: 0.4, k: 14, f: 0.1, fib: 0.8, s: 13, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 730 },
|
||||
defaultPriceMinorPerKg: 2500,
|
||||
aliases: ["ananas konserv", "ananasringar", "ananasbitar"],
|
||||
}),
|
||||
ing("artichoke_hearts", "Kronärtskockshjärtan", "Artichoke hearts", "konserver", {
|
||||
...veg,
|
||||
n: { kcal: 47, p: 3, k: 5, f: 0.2, fib: 5, s: 1, salt: 0.6 },
|
||||
shelfLifeGuidance: { fridge: 7, pantry: 540 },
|
||||
defaultPriceMinorPerKg: 6000,
|
||||
aliases: ["kronärtskocka", "kronartskocka", "kronärtskockshjärtan", "artischock"],
|
||||
}),
|
||||
ing("orange_juice", "Apelsinjuice", "Orange juice", "dryck", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1.04,
|
||||
n: { kcal: 45, p: 0.7, k: 10, f: 0.2, s: 9, salt: 0 },
|
||||
shelfLifeGuidance: { fridge: 7 },
|
||||
defaultPriceMinorPerKg: 2000,
|
||||
aliases: ["apelsinjuice", "juice", "apelsinjos"],
|
||||
}),
|
||||
ing("apple_juice", "Äppeljuice", "Apple juice", "dryck", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1.05,
|
||||
n: { kcal: 46, p: 0.1, k: 11, f: 0.1, s: 10, salt: 0 },
|
||||
shelfLifeGuidance: { fridge: 7 },
|
||||
defaultPriceMinorPerKg: 1800,
|
||||
aliases: ["äppeljuice", "appeljuice", "äppeljos"],
|
||||
}),
|
||||
ing("cola", "Läsk (cola)", "Cola", "dryck", {
|
||||
...veg,
|
||||
defaultUnit: "DECILITER",
|
||||
densityGPerMl: 1.04,
|
||||
n: { kcal: 42, p: 0, k: 10.6, f: 0, s: 10.6, salt: 0 },
|
||||
shelfLifeGuidance: { pantry: 180 },
|
||||
defaultPriceMinorPerKg: 1500,
|
||||
aliases: ["läsk", "lask", "cola", "coca-cola", "pepsi"],
|
||||
}),
|
||||
];
|
||||
@@ -6,6 +6,7 @@ import type {
|
||||
StorageLocationType,
|
||||
Unit,
|
||||
} from "@app/shared-types";
|
||||
import { EXTRA_INGREDIENTS } from "./ingredients-extra.js";
|
||||
|
||||
/**
|
||||
* Seed: kanoniska ingredienser med schablonvärden per 100 g.
|
||||
@@ -1277,6 +1278,8 @@ export const SEED_INGREDIENTS: SeedIngredient[] = [
|
||||
n: { kcal: 105, p: 24, k: 0, f: 1 },
|
||||
aliases: ["kalkon", "kalkonfilé", "kalkonfile", "kalkonbröst", "turkey", "turkey breast"],
|
||||
}),
|
||||
// Bred katalogutökning (vanliga svenska livsmedel) – se ingredients-extra.ts.
|
||||
...EXTRA_INGREDIENTS,
|
||||
];
|
||||
|
||||
export const SEED_INGREDIENT_IDS = new Set(SEED_INGREDIENTS.map((i) => i.id));
|
||||
|
||||
Reference in New Issue
Block a user