cooking-temperature 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -13,31 +13,70 @@ npm install cooking-temperature
13
13
  ```typescript
14
14
  import {
15
15
  findByName,
16
+ findById,
17
+ findByCategory,
18
+ getAllEntries,
19
+ getAllCategories,
20
+ getCategoryName,
16
21
  getQuickReference,
17
22
  getSafeMinimumTemp,
18
23
  getDonenessTemp,
24
+ getCookingMethods,
19
25
  getCookingInstruction,
20
26
  convertTemperature,
21
27
  } from "cooking-temperature"
22
28
 
23
29
  // Quick reference lookup
24
30
  const chicken = getQuickReference("chicken breast", "oven_bake")
25
- // Returns: { name, safeMinimumTemp, tempUnit, restMinutes, suggestedMethod, visualIndicators }
31
+ // Returns:
32
+ // {
33
+ // name: "Chicken Breast",
34
+ // safeMinimumTemp: 165,
35
+ // tempUnit: "F",
36
+ // restMinutes: 0,
37
+ // suggestedMethod: {
38
+ // method: "oven_bake",
39
+ // applianceTemp: 400,
40
+ // timeMinutes: { min: 22, max: 28 },
41
+ // notes: "Let rest 5 minutes before slicing"
42
+ // },
43
+ // visualIndicators: ["No pink in center", "Juices run clear", "Firm to touch"]
44
+ // }
26
45
 
27
46
  // Find an ingredient by name or alias
28
47
  const beef = findByName("ribeye")
48
+ // Returns: CookingTemperatureEntry | undefined
49
+
50
+ // Get all available categories
51
+ const categories = getAllCategories()
52
+ // Returns: ["poultry", "beef", "pork", "seafood_fish", "seafood_shellfish", "egg", "vegetable", "grain"]
53
+
54
+ // Get human-readable category name
55
+ const name = getCategoryName("seafood_fish")
56
+ // Returns: "Fish"
29
57
 
30
58
  // Get safe minimum temperature
31
59
  const safeTemp = getSafeMinimumTemp("chicken-breast", "F")
32
60
  // Returns: { temp: 165, restMinutes: 0 }
33
61
 
34
62
  // Get doneness temperature for proteins
35
- const mediumRare = getDonenessTemp("beef-ribeye", "medium_rare", "F")
63
+ const mediumRare = getDonenessTemp("beef-steak-ribeye", "medium_rare", "F")
36
64
  // Returns: 135
37
65
 
66
+ // Get available cooking methods
67
+ const methods = getCookingMethods("salmon-fillet")
68
+ // Returns: ["oven_bake", "pan_sear", "grill", "poach", "sous_vide"]
69
+
38
70
  // Get cooking instructions
39
71
  const instructions = getCookingInstruction("salmon-fillet", "oven_bake")
40
- // Returns: { applianceTemp, applianceTempUnit, timeMinutes, notes, portionDescription }
72
+ // Returns:
73
+ // {
74
+ // applianceTemp: 400,
75
+ // applianceTempUnit: "F",
76
+ // timeMinutes: { min: 12, max: 15 },
77
+ // notes: "Skin-side down",
78
+ // portionDescription: "6 oz fillet, 1 inch thick"
79
+ // }
41
80
 
42
81
  // Convert between Fahrenheit and Celsius
43
82
  const celsius = convertTemperature(165, "F", "C")
@@ -46,57 +85,279 @@ const celsius = convertTemperature(165, "F", "C")
46
85
 
47
86
  ## API
48
87
 
88
+ ### Types
89
+
90
+ ```typescript
91
+ type TemperatureUnit = "F" | "C"
92
+
93
+ type IngredientCategory =
94
+ | "poultry" | "beef" | "pork" | "lamb"
95
+ | "seafood_fish" | "seafood_shellfish"
96
+ | "egg" | "vegetable" | "grain" | "legume"
97
+
98
+ type DonenessLevel =
99
+ | "rare" | "medium_rare" | "medium"
100
+ | "medium_well" | "well_done" | "safe_minimum"
101
+
102
+ type CookingMethod =
103
+ | "oven_roast" | "oven_bake" | "pan_sear" | "pan_fry"
104
+ | "grill" | "broil" | "poach" | "simmer" | "boil" | "steam"
105
+ | "sous_vide" | "air_fry" | "deep_fry" | "slow_cook"
106
+ ```
107
+
49
108
  ### Lookup Functions
50
109
 
51
- - `findByName(query)` - Find an ingredient by name or alias
52
- - `findById(id)` - Find an ingredient by its unique ID
53
- - `findByCategory(category)` - Get all ingredients in a category
54
- - `getAllEntries()` - Get all cooking temperature entries
55
- - `getAllCategories()` - Get all available categories
110
+ #### `findByName(query: string): CookingTemperatureEntry | undefined`
111
+
112
+ Find an ingredient by name or alias (case-insensitive partial match).
113
+
114
+ ```typescript
115
+ const entry = findByName("ribeye")
116
+ // Returns full CookingTemperatureEntry object or undefined
117
+ ```
118
+
119
+ #### `findById(id: string): CookingTemperatureEntry | undefined`
120
+
121
+ Find an ingredient by its exact unique ID.
122
+
123
+ ```typescript
124
+ const entry = findById("beef-steak-ribeye")
125
+ // Returns full CookingTemperatureEntry object or undefined
126
+ ```
127
+
128
+ #### `findByCategory(category: IngredientCategory): CookingTemperatureEntry[]`
129
+
130
+ Get all ingredients in a category.
131
+
132
+ ```typescript
133
+ const poultryItems = findByCategory("poultry")
134
+ // Returns: CookingTemperatureEntry[] (all poultry entries)
135
+ ```
136
+
137
+ #### `getAllEntries(): CookingTemperatureEntry[]`
138
+
139
+ Get all cooking temperature entries in the library.
140
+
141
+ ```typescript
142
+ const all = getAllEntries()
143
+ // Returns: CookingTemperatureEntry[] (all entries)
144
+ ```
145
+
146
+ #### `getAllCategories(): IngredientCategory[]`
147
+
148
+ Get all available categories.
149
+
150
+ ```typescript
151
+ const categories = getAllCategories()
152
+ // Returns: ["poultry", "beef", "pork", "seafood_fish", "seafood_shellfish", "egg", "vegetable", "grain"]
153
+ ```
154
+
155
+ #### `getCategoryName(category: IngredientCategory): string`
156
+
157
+ Get the human-readable display name for a category.
158
+
159
+ ```typescript
160
+ const name = getCategoryName("seafood_fish")
161
+ // Returns: "Fish"
162
+
163
+ const name2 = getCategoryName("seafood_shellfish")
164
+ // Returns: "Shellfish"
165
+ ```
56
166
 
57
167
  ### Temperature Functions
58
168
 
59
- - `convertTemperature(temp, from, to)` - Convert between Fahrenheit and Celsius
60
- - `getSafeMinimumTemp(ingredientId, unit?)` - Get USDA safe minimum temperature
61
- - `getDonenessTemp(ingredientId, doneness, unit?)` - Get temperature for a specific doneness level
169
+ #### `convertTemperature(temp: number, from_unit: TemperatureUnit, to_unit: TemperatureUnit): number`
170
+
171
+ Convert between Fahrenheit and Celsius.
172
+
173
+ ```typescript
174
+ const celsius = convertTemperature(165, "F", "C")
175
+ // Returns: 74
176
+
177
+ const fahrenheit = convertTemperature(74, "C", "F")
178
+ // Returns: 165
179
+ ```
180
+
181
+ #### `getSafeMinimumTemp(ingredientId: string, unit?: TemperatureUnit): { temp: number; restMinutes: number } | undefined`
182
+
183
+ Get USDA safe minimum internal temperature for an ingredient.
184
+
185
+ ```typescript
186
+ const safeTemp = getSafeMinimumTemp("chicken-breast", "F")
187
+ // Returns: { temp: 165, restMinutes: 0 }
188
+
189
+ const beefTemp = getSafeMinimumTemp("beef-steak-ribeye", "F")
190
+ // Returns: { temp: 145, restMinutes: 3 }
191
+
192
+ const inCelsius = getSafeMinimumTemp("chicken-breast", "C")
193
+ // Returns: { temp: 74, restMinutes: 0 }
194
+ ```
195
+
196
+ #### `getDonenessTemp(ingredientId: string, doneness_level: DonenessLevel, unit?: TemperatureUnit): number | undefined`
197
+
198
+ Get internal temperature for a specific doneness level.
199
+
200
+ ```typescript
201
+ const rare = getDonenessTemp("beef-steak-ribeye", "rare", "F")
202
+ // Returns: 125
203
+
204
+ const mediumRare = getDonenessTemp("beef-steak-ribeye", "medium_rare", "F")
205
+ // Returns: 135
206
+
207
+ const medium = getDonenessTemp("beef-steak-ribeye", "medium", "C")
208
+ // Returns: 60
209
+ ```
62
210
 
63
211
  ### Cooking Instructions
64
212
 
65
- - `getCookingMethods(ingredientId)` - Get available cooking methods for an ingredient
66
- - `getCookingInstruction(ingredientId, method, portionHint?)` - Get detailed cooking instructions
67
- - `getQuickReference(query, method?, unit?)` - Get a quick reference with all relevant info
213
+ #### `getCookingMethods(ingredientId: string): CookingMethod[]`
214
+
215
+ Get available cooking methods for an ingredient.
216
+
217
+ ```typescript
218
+ const methods = getCookingMethods("salmon-fillet")
219
+ // Returns: ["oven_bake", "pan_sear", "grill", "poach", "sous_vide"]
220
+
221
+ const chickenMethods = getCookingMethods("chicken-breast")
222
+ // Returns: ["oven_bake", "pan_sear", "grill", "poach", "sous_vide", "air_fry"]
223
+ ```
224
+
225
+ #### `getCookingInstruction(ingredientId: string, cooking_method: CookingMethod, portionHint?: string): object | undefined`
226
+
227
+ Get detailed cooking instructions for a specific method.
228
+
229
+ ```typescript
230
+ const instructions = getCookingInstruction("salmon-fillet", "oven_bake")
231
+ // Returns:
232
+ // {
233
+ // applianceTemp: 400,
234
+ // applianceTempUnit: "F",
235
+ // timeMinutes: { min: 12, max: 15 },
236
+ // notes: "Skin-side down",
237
+ // portionDescription: "6 oz fillet, 1 inch thick"
238
+ // }
239
+
240
+ // With portion hint for specific cuts
241
+ const thickCut = getCookingInstruction("beef-steak-ribeye", "grill", "1.5 inch")
242
+ // Returns instructions for 1.5 inch thick steak
243
+ ```
244
+
245
+ #### `getQuickReference(query: string, cooking_method?: CookingMethod, unit?: TemperatureUnit): object | undefined`
246
+
247
+ Get a quick reference with all relevant cooking info combined.
248
+
249
+ ```typescript
250
+ const ref = getQuickReference("chicken breast", "oven_bake", "F")
251
+ // Returns:
252
+ // {
253
+ // name: "Chicken Breast",
254
+ // safeMinimumTemp: 165,
255
+ // tempUnit: "F",
256
+ // restMinutes: 0,
257
+ // suggestedMethod: {
258
+ // method: "oven_bake",
259
+ // applianceTemp: 400,
260
+ // timeMinutes: { min: 22, max: 28 },
261
+ // notes: "Let rest 5 minutes before slicing"
262
+ // },
263
+ // visualIndicators: ["No pink in center", "Juices run clear", "Firm to touch"]
264
+ // }
265
+
266
+ // Without method - returns just temperature info
267
+ const tempOnly = getQuickReference("salmon", undefined, "C")
268
+ // Returns:
269
+ // {
270
+ // name: "Salmon Fillet",
271
+ // safeMinimumTemp: 63,
272
+ // tempUnit: "C",
273
+ // restMinutes: 0,
274
+ // suggestedMethod: undefined,
275
+ // visualIndicators: ["Flesh flakes easily", "Opaque throughout"]
276
+ // }
277
+ ```
68
278
 
69
279
  ## Categories
70
280
 
71
- - `poultry` - Chicken, turkey, duck
72
- - `beef` - Steaks, roasts, ground beef
73
- - `pork` - Chops, tenderloin, ribs
74
- - `seafood_fish` - Salmon, tuna, cod
75
- - `seafood_shellfish` - Shrimp, lobster, scallops
76
- - `egg` - Various egg preparations
77
- - `vegetable` - Common vegetables
78
- - `grain` - Rice, pasta, quinoa
281
+ | Category | Description | ID |
282
+ |----------|-------------|-----|
283
+ | Poultry | Chicken, turkey, duck | `poultry` |
284
+ | Beef | Steaks, roasts, ground beef | `beef` |
285
+ | Pork | Chops, tenderloin, ribs | `pork` |
286
+ | Lamb | Chops, leg, ground lamb | `lamb` |
287
+ | Fish | Salmon, tuna, cod | `seafood_fish` |
288
+ | Shellfish | Shrimp, lobster, scallops | `seafood_shellfish` |
289
+ | Eggs | Various egg preparations | `egg` |
290
+ | Vegetables | Common vegetables | `vegetable` |
291
+ | Grains | Rice, pasta, quinoa | `grain` |
292
+ | Legumes | Beans, lentils | `legume` |
79
293
 
80
294
  ## Doneness Levels
81
295
 
82
296
  For proteins that support doneness preferences:
83
297
 
84
- - `rare`
85
- - `medium_rare`
86
- - `medium`
87
- - `medium_well`
88
- - `well_done`
89
- - `safe_minimum` (USDA baseline)
298
+ | Level | Description |
299
+ |-------|-------------|
300
+ | `rare` | Cool red center |
301
+ | `medium_rare` | Warm red center |
302
+ | `medium` | Warm pink center |
303
+ | `medium_well` | Slightly pink center |
304
+ | `well_done` | No pink, fully cooked |
305
+ | `safe_minimum` | USDA recommended baseline |
90
306
 
91
307
  ## Cooking Methods
92
308
 
93
- - `oven_roast`, `oven_bake`
94
- - `pan_sear`, `pan_fry`
95
- - `grill`, `broil`
96
- - `poach`, `simmer`, `boil`, `steam`
97
- - `sous_vide`
98
- - `air_fry`, `deep_fry`
99
- - `slow_cook`
309
+ | Method | Description |
310
+ |--------|-------------|
311
+ | `oven_roast` | Dry heat, uncovered, typically for larger cuts |
312
+ | `oven_bake` | Dry heat, may be covered |
313
+ | `pan_sear` | High heat, quick cooking |
314
+ | `pan_fry` | Medium heat, more oil |
315
+ | `grill` | Direct heat from below |
316
+ | `broil` | Direct heat from above |
317
+ | `poach` | Gentle simmering liquid |
318
+ | `simmer` | Low bubbling liquid |
319
+ | `boil` | Rolling boil |
320
+ | `steam` | Suspended over boiling water |
321
+ | `sous_vide` | Vacuum-sealed, precise temperature water bath |
322
+ | `air_fry` | Circulating hot air |
323
+ | `deep_fry` | Submerged in hot oil |
324
+ | `slow_cook` | Low temperature, long duration |
325
+
326
+ ## Icons
327
+
328
+ The library includes SVG icons as base64-encoded data URLs for categories and common ingredients.
329
+
330
+ ```typescript
331
+ import {
332
+ CATEGORY_ICONS,
333
+ INGREDIENT_ICONS,
334
+ getIcon,
335
+ } from "cooking-temperature/icons"
336
+
337
+ // Get a category icon
338
+ const poultryIcon = CATEGORY_ICONS["poultry"]
339
+ // Returns: "data:image/svg+xml;base64,..."
340
+
341
+ // Get a specific ingredient icon
342
+ const salmonIcon = INGREDIENT_ICONS["salmon_fillet"]
343
+
344
+ // Use the helper function (falls back to category icon if no specific icon exists)
345
+ const icon = getIcon("salmon_fillet", "seafood_fish")
346
+ ```
347
+
348
+ ### Available Icon Exports
349
+
350
+ | Export | Description |
351
+ |--------|-------------|
352
+ | `CATEGORY_ICONS` | Icons for each food category (poultry, beef, pork, seafood_fish, seafood_shellfish, egg, vegetable, grain) |
353
+ | `POULTRY_ICONS` | Chicken breast, thigh, whole chicken, turkey breast |
354
+ | `BEEF_ICONS` | Ribeye steak, ground beef, beef roast |
355
+ | `SEAFOOD_ICONS` | Salmon fillet, shrimp, cod fillet, tuna steak |
356
+ | `EGG_ICONS` | Fried, boiled, scrambled, poached eggs |
357
+ | `VEGETABLE_ICONS` | Broccoli, asparagus, potato, carrot |
358
+ | `GRAIN_ICONS` | White rice, pasta, quinoa |
359
+ | `INGREDIENT_ICONS` | Combined export of all ingredient icons |
360
+ | `getIcon(id, category?)` | Helper function that returns an icon by ID, with optional category fallback |
100
361
 
101
362
  ## License
102
363
 
@@ -0,0 +1,15 @@
1
+ declare const CATEGORY_ICONS: Record<string, string>;
2
+ declare const POULTRY_ICONS: Record<string, string>;
3
+ declare const BEEF_ICONS: Record<string, string>;
4
+ declare const SEAFOOD_ICONS: Record<string, string>;
5
+ declare const EGG_ICONS: Record<string, string>;
6
+ declare const VEGETABLE_ICONS: Record<string, string>;
7
+ declare const GRAIN_ICONS: Record<string, string>;
8
+ declare const INGREDIENT_ICONS: Record<string, string>;
9
+ /**
10
+ * Get icon for a category or ingredient by ID
11
+ * Falls back to category icon if no specific ingredient icon exists
12
+ */
13
+ declare const getIcon: (id: string, category?: string) => string | undefined;
14
+
15
+ export { BEEF_ICONS, CATEGORY_ICONS, EGG_ICONS, GRAIN_ICONS, INGREDIENT_ICONS, POULTRY_ICONS, SEAFOOD_ICONS, VEGETABLE_ICONS, getIcon };
@@ -0,0 +1,15 @@
1
+ declare const CATEGORY_ICONS: Record<string, string>;
2
+ declare const POULTRY_ICONS: Record<string, string>;
3
+ declare const BEEF_ICONS: Record<string, string>;
4
+ declare const SEAFOOD_ICONS: Record<string, string>;
5
+ declare const EGG_ICONS: Record<string, string>;
6
+ declare const VEGETABLE_ICONS: Record<string, string>;
7
+ declare const GRAIN_ICONS: Record<string, string>;
8
+ declare const INGREDIENT_ICONS: Record<string, string>;
9
+ /**
10
+ * Get icon for a category or ingredient by ID
11
+ * Falls back to category icon if no specific ingredient icon exists
12
+ */
13
+ declare const getIcon: (id: string, category?: string) => string | undefined;
14
+
15
+ export { BEEF_ICONS, CATEGORY_ICONS, EGG_ICONS, GRAIN_ICONS, INGREDIENT_ICONS, POULTRY_ICONS, SEAFOOD_ICONS, VEGETABLE_ICONS, getIcon };
package/dist/icons.js ADDED
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // icons.ts
21
+ var icons_exports = {};
22
+ __export(icons_exports, {
23
+ BEEF_ICONS: () => BEEF_ICONS,
24
+ CATEGORY_ICONS: () => CATEGORY_ICONS,
25
+ EGG_ICONS: () => EGG_ICONS,
26
+ GRAIN_ICONS: () => GRAIN_ICONS,
27
+ INGREDIENT_ICONS: () => INGREDIENT_ICONS,
28
+ POULTRY_ICONS: () => POULTRY_ICONS,
29
+ SEAFOOD_ICONS: () => SEAFOOD_ICONS,
30
+ VEGETABLE_ICONS: () => VEGETABLE_ICONS,
31
+ getIcon: () => getIcon
32
+ });
33
+ module.exports = __toCommonJS(icons_exports);
34
+ var CATEGORY_ICONS = {
35
+ // Poultry - Chicken drumstick
36
+ poultry: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTE1LjUgM0MxMy4wMSAzIDExIDUuMDEgMTEgNy41QzExIDguMjcgMTEuMTkgOS4wMSAxMS41MyA5LjY1TDMuNSAxNy42OEMzLjE4IDE4IDMgMTguNDMgMyAxOC44OEMzIDE5LjgxIDMuNzQgMjAuNjQgNC42NyAyMC45MUM1LjA4IDIxLjAzIDUuNTMgMjEgNS45IDIwLjgyTDYuNSAyMC41TDcuNDQgMjEuMzFDNy43OCAyMS42IDguMjMgMjEuNzUgOC42OSAyMS43NUM5LjQgMjEuNzUgMTAuMDUgMjEuNDIgMTAuNDUgMjAuODhMMTEgMjAuMTNMMTEuNTUgMjAuODhDMTEuOTUgMjEuNDIgMTIuNiAyMS43NSAxMy4zMSAyMS43NUMxMy43NyAyMS43NSAxNC4yMiAyMS42IDE0LjU2IDIxLjMxTDE1LjUgMjAuNUwxNi4xIDIwLjgyQzE2LjQ3IDIxIDE2LjkyIDIxLjAzIDE3LjMzIDIwLjkxQzE4LjI2IDIwLjY0IDE5IDE5LjgxIDE5IDE4Ljg4QzE5IDE4LjQzIDE4LjgyIDE4IDE4LjUgMTcuNjhMMTQuMzUgMTMuNTNDMTQuOTkgMTMuMTkgMTUuNzMgMTMgMTYuNSAxM0MxOC45OSAxMyAyMSAxMC45OSAyMSA4LjVDMjEgNi4wMSAxOC45OSA0IDE2LjUgNEMxNi4xNyA0IDE1LjgzIDQuMDMgMTUuNSA0LjFWM1oiIGZpbGw9IiNGNTlFMEIiLz48cGF0aCBkPSJNMTYuNSA1QzE4LjQzIDUgMjAgNi41NyAyMCA4LjVDMjAgMTAuNDMgMTguNDMgMTIgMTYuNSAxMkMxNS4zNiAxMiAxNC4zMyAxMS40OCAxMy42MiAxMC42N0wxMy4yOCAxMC4yOEwxMi45MyA5Ljg0QzEyLjM0IDkuMDMgMTIgOC4wMyAxMiA3QzEyIDUuMDcgMTMuNTcgMy41IDE1LjUgMy41VjUuNUMxNC42OCA1LjUgMTQgNi4xOCAxNCA3QzE0IDcuNTYgMTQuMTkgOC4wOCAxNC41MSA4LjQ5TDE0Ljg2IDguOTNMMTUuMjEgOS4zMkMxNS42NSA5Ljc1IDE2LjA1IDEwIDE2LjUgMTBDMTcuMzMgMTAgMTggOS4zMyAxOCA4LjVDMTggNy42NyAxNy4zMyA3IDE2LjUgN1Y1WiIgZmlsbD0iI0Q5NzcwNiIvPjwvc3ZnPg==`,
37
+ // Beef - Steak cut
38
+ beef: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTIwLjUgNkMxOS4xIDMuOCAxNi4xIDIuNSAxMi41IDIuNUM3LjUgMi41IDMuNSA1LjUgMy41IDlDMy41IDEwLjggNC4zIDEyLjQgNS43IDE0TDQgMTguNUM0IDE5LjUgNS41IDIxIDcuNSAyMUM4LjIgMjEgOC44IDIwLjggOS41IDIwLjNMMTIgMThMMTQuNSAyMC4zQzE1LjIgMjAuOCAxNS44IDIxIDE2LjUgMjFDMTguNSAyMSAyMCAxOS41IDIwIDE4LjVMMTguMyAxNEMxOS43IDEyLjQgMjAuNSAxMC44IDIwLjUgOVY2WiIgZmlsbD0iI0VGNDQ0NCIvPjxwYXRoIGQ9Ik0xNy41IDlDMTcuNSAxMC45IDE1LjQgMTIuNSAxMi41IDEyLjVDOS42IDEyLjUgNy41IDEwLjkgNy41IDlDNy41IDcuMSA5LjYgNS41IDEyLjUgNS41QzE1LjQgNS41IDE3LjUgNy4xIDE3LjUgOVoiIGZpbGw9IiNGQ0EwQTAiLz48cGF0aCBkPSJNMTQgOEMxNCA4LjggMTMuMyA5LjUgMTIuNSA5LjVDMTEuNyA5LjUgMTEgOC44IDExIDhDMTEgNy4yIDExLjcgNi41IDEyLjUgNi41QzEzLjMgNi41IDE0IDcuMiAxNCA4WiIgZmlsbD0iI0ZFRTJFMiIvPjwvc3ZnPg==`,
39
+ // Pork - Pork chop/meat on bone
40
+ pork: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTBDNCAxNC40IDcuNiAxOCAxMiAxOEMxNi40IDE4IDIwIDE0LjQgMjAgMTBDMjAgNy45IDE5LjIgNiAxNy44IDQuNkMxNi44IDMuNiAxNS41IDMgMTQgM0gxMEM4LjUgMyA3LjIgMy42IDYuMiA0LjZDNC44IDYgNCAxLjkgNCAxMFoiIGZpbGw9IiNGQkI0QjQiLz48cGF0aCBkPSJNMTIgMThWMjFNMTIgMjFIOE0xMiAyMUgxNiIgc3Ryb2tlPSIjRkVFMkUyIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik04IDlDOCAxMC43IDkuMyAxMiAxMSAxMiIgc3Ryb2tlPSIjRkRFNjhBIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik03IDVDNi41IDYgNi41IDcgNyA4IiBzdHJva2U9IiNFRjQ0NDQiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNMTcgNUMxNy41IDYgMTcuNSA3IDE3IDgiIHN0cm9rZT0iI0VGNDQ0NCIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==`,
41
+ // Seafood Fish - Fish
42
+ seafood_fish: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTIyIDEyQzIyIDEyIDE5IDE3IDE0IDE3QzEyIDE3IDEwLjUgMTYuNSA5LjUgMTZMNiAyMFY0TDkuNSA4QzEwLjUgNy41IDEyIDcgMTQgN0MxOSA3IDIyIDEyIDIyIDEyWiIgZmlsbD0iIzYwQTVGQSIvPjxjaXJjbGUgY3g9IjE2IiBjeT0iMTEiIHI9IjEuNSIgZmlsbD0iIzFGMjkzNyIvPjxjaXJjbGUgY3g9IjE2LjMiIGN5PSIxMC43IiByPSIwLjUiIGZpbGw9IiNGRkZGRkYiLz48cGF0aCBkPSJNMTQgMTJDMTQgMTIgMTIgMTMgMTAuNSAxM0M5IDEzIDguNSAxMi41IDguNSAxMkM4LjUgMTEuNSA5IDExIDEwLjUgMTFDMTIgMTEgMTQgMTIgMTQgMTJaIiBmaWxsPSIjOTNDNUZEIi8+PHBhdGggZD0iTTYgNEwzIDFNNiAyMEwzIDIzIiBzdHJva2U9IiMzQjgyRjYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+`,
43
+ // Seafood Shellfish - Shrimp
44
+ seafood_shellfish: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTE5IDdDMTkgNyAxOCA0IDE0IDRDMTAgNCAxMCA3IDEwIDdDMTAgNyA4IDggNyAxMEM2IDEyIDYgMTQgNyAxNkM4IDE4IDEwIDE5IDEyIDE5QzE0IDE5IDE1IDE4IDE2IDE3TDE4IDE5TDIwIDE3TDE4IDE1QzE5IDE0IDIwIDEyIDIwIDEwQzIwIDggMTkgNyAxOSA3WiIgZmlsbD0iI0ZCQjRCNCIvPjxwYXRoIGQ9Ik0xMyA4QzE0LjEgOCAxNSA4LjkgMTUgMTBDMTUgMTEuMSAxNC4xIDEyIDEzIDEyQzExLjkgMTIgMTEgMTEuMSAxMSAxMEMxMSA4LjkgMTEuOSA4IDEzIDhaIiBmaWxsPSIjRkVFMkUyIi8+PHBhdGggZD0iTTE1IDRDMTUgNCAxNiAyIDE4IDJNMTMgNEMxMyA0IDEzIDIgMTEgMiIgc3Ryb2tlPSIjRjg3MTcxIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PGNpcmNsZSBjeD0iMTUiIGN5PSIxMCIgcj0iMSIgZmlsbD0iIzFGMjkzNyIvPjwvc3ZnPg==`,
45
+ // Egg
46
+ egg: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTEyIDNDOCAzIDUgOC41IDUgMTNDNSAxNy41IDguMSAyMSAxMiAyMUMxNS45IDIxIDE5IDE3LjUgMTkgMTNDMTkgOC41IDE2IDMgMTIgM1oiIGZpbGw9IiNGRUY5QzMiIHN0cm9rZT0iI0ZERTY4QSIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48ZWxsaXBzZSBjeD0iMTIiIGN5PSIxMyIgcng9IjUiIHJ5PSI0IiBmaWxsPSIjRkJCRjI0Ii8+PGVsbGlwc2UgY3g9IjEyIiBjeT0iMTMiIHJ4PSIzIiByeT0iMi41IiBmaWxsPSIjRjU5RTBCIi8+PHBhdGggZD0iTTEwIDEyQzEwLjUgMTEuNSAxMS41IDExLjUgMTIgMTIiIHN0cm9rZT0iI0ZFRjlDMyIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=`,
47
+ // Vegetable - Broccoli
48
+ vegetable: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTEyIDIxVjE0IiBzdHJva2U9IiM2NUExNDUiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTkgMjFWMTYiIHN0cm9rZT0iIzY1QTE0NSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNMTUgMjFWMTYiIHN0cm9rZT0iIzY1QTE0NSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48Y2lyY2xlIGN4PSI4IiBjeT0iOCIgcj0iNCIgZmlsbD0iIzIyQzU1RSIvPjxjaXJjbGUgY3g9IjE2IiBjeT0iOCIgcj0iNCIgZmlsbD0iIzIyQzU1RSIvPjxjaXJjbGUgY3g9IjEyIiBjeT0iNSIgcj0iNCIgZmlsbD0iIzIyQzU1RSIvPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTAiIHI9IjQiIGZpbGw9IiMyMkM1NUUiLz48Y2lyY2xlIGN4PSI2IiBjeT0iMTEiIHI9IjIuNSIgZmlsbD0iIzE2QTM0QSIvPjxjaXJjbGUgY3g9IjE4IiBjeT0iMTEiIHI9IjIuNSIgZmlsbD0iIzE2QTM0QSIvPjxjaXJjbGUgY3g9IjkiIGN5PSI2IiByPSIyIiBmaWxsPSIjNEFERTgwIi8+PGNpcmNsZSBjeD0iMTQiIGN5PSI4IiByPSIxLjUiIGZpbGw9IiM0QURFODAiLz48L3N2Zz4=`,
49
+ // Grain - Rice bowl
50
+ grain: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTFDNCAxMSA0IDE4IDEyIDE4QzIwIDE4IDIwIDExIDIwIDExSDRaIiBmaWxsPSIjRkZGRkZGIiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTTUgMThDNSAxOCA2IDIxIDEyIDIxQzE4IDIxIDE5IDE4IDE5IDE4IiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48ZWxsaXBzZSBjeD0iOCIgY3k9IjkiIHJ4PSIxLjUiIHJ5PSIxIiBmaWxsPSIjRkVGM0M3Ii8+PGVsbGlwc2UgY3g9IjEyIiBjeT0iOCIgcng9IjEuNSIgcnk9IjEiIGZpbGw9IiNGRUYzQzciLz48ZWxsaXBzZSBjeD0iMTYiIGN5PSI5IiByeD0iMS41IiByeT0iMSIgZmlsbD0iI0ZFRjNDNyIvPjxlbGxpcHNlIGN4PSIxMCIgY3k9IjExIiByeD0iMS41IiByeT0iMSIgZmlsbD0iI0ZFRjNDNyIvPjxlbGxpcHNlIGN4PSIxNCIgY3k9IjExIiByeD0iMS41IiByeT0iMSIgZmlsbD0iI0ZFRjNDNyIvPjxlbGxpcHNlIGN4PSI3IiBjeT0iMTIiIHJ4PSIxIiByeT0iMC43NSIgZmlsbD0iI0ZFRjNDNyIvPjxlbGxpcHNlIGN4PSIxNyIgY3k9IjEyIiByeD0iMSIgcnk9IjAuNzUiIGZpbGw9IiNGRUYzQzciLz48L3N2Zz4=`
51
+ };
52
+ var POULTRY_ICONS = {
53
+ // Chicken breast
54
+ chicken_breast: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTUgOEM1IDUgOCAzIDEyIDNDMTYgMyAxOSA1IDE5IDhDMTkgMTEgMTggMTUgMTcgMTdDMTYgMTkgMTQgMjAgMTIgMjBDMTAgMjAgOCAxOSA3IDE3QzYgMTUgNSAxMSA1IDhaIiBmaWxsPSIjRkRFNjhBIiBzdHJva2U9IiNGNTlFMEIiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTTggOEMxMCA3IDE0IDcgMTYgOCIgc3Ryb2tlPSIjRjU5RTBCIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik05IDEyQzEwIDExIDE0IDExIDE1IDEyIiBzdHJva2U9IiNGNTlFMEIiIHN0cm9rZS13aWR0aD0iMSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+`,
55
+ // Chicken thigh
56
+ chicken_thigh: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTE2IDRDMTQgMyAxMCAzIDggNEM2IDUgNCAxMCA1IDE0QzYgMTggOCAyMCAxMSAyMEwxMiAxOEwxNCAxNUMxNiAxMiAxOCA4IDE4IDZDMTggNSAxNyA0IDE2IDRaIiBmaWxsPSIjRkRFNjhBIiBzdHJva2U9IiNGNTlFMEIiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTTExIDIwTDEwIDIySDgiIHN0cm9rZT0iI0Q5NzcwNiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNNyA5QzkgOCAxMiA4IDE0IDkiIHN0cm9rZT0iI0Y1OUUwQiIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=`,
57
+ // Whole chicken
58
+ whole_chicken: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTEyIDJDOCAyIDQgNiA0IDExQzQgMTQgNSAxNyA3IDE5TDYgMjFIOEwxMCAxOUgxNEwxNiAyMUgxOEwxNyAxOUMxOSAxNyAyMCAxNCAyMCAxMUMyMCA2IDE2IDIgMTIgMloiIGZpbGw9IiNGREU2OEEiIHN0cm9rZT0iI0Y1OUUwQiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBkPSJNOCA5QzEwIDggMTQgOCAxNiA5IiBzdHJva2U9IiNGNTlFMEIiIHN0cm9rZS13aWR0aD0iMSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTkgMTNDMTEgMTIgMTMgMTIgMTUgMTMiIHN0cm9rZT0iI0Y1OUUwQiIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48Y2lyY2xlIGN4PSI5IiBjeT0iNyIgcj0iMSIgZmlsbD0iI0Q5NzcwNiIvPjxjaXJjbGUgY3g9IjE1IiBjeT0iNyIgcj0iMSIgZmlsbD0iI0Q5NzcwNiIvPjwvc3ZnPg==`,
59
+ // Turkey breast
60
+ turkey_breast: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgOUM0IDUgNyAyIDEyIDJDMTcgMiAyMCA1IDIwIDlDMjAgMTMgMTggMTggMTYgMjBMMTQgMjFIMTBMOCAyMEM2IDE4IDQgMTMgNCA5WiIgZmlsbD0iI0ZCQjRCNCIgc3Ryb2tlPSIjRjg3MTcxIiBzdHJva2Utd2lkdGg9IjEuNSIvPjxwYXRoIGQ9Ik03IDlDMTAgNyAxNCA3IDE3IDkiIHN0cm9rZT0iI0Y4NzE3MSIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNOCAxM0MxMCAxMiAxNCAxMiAxNiAxMyIgc3Ryb2tlPSIjRjg3MTcxIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==`
61
+ };
62
+ var BEEF_ICONS = {
63
+ // Ribeye steak
64
+ beef_steak_ribeye: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgOEM0IDUgNyAzIDEyIDNDMTcgMyAyMCA1IDIwIDhDMjAgMTEgMTkgMTUgMTcgMThDMTUgMjAgMTQgMjEgMTIgMjFDMTAgMjEgOSAyMCA3IDE4QzUgMTUgNCAxMSA0IDhaIiBmaWxsPSIjRUY0NDQ0IiBzdHJva2U9IiNCOTFDMUMiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTTcgOEMxMCA3IDE0IDcgMTcgOCIgc3Ryb2tlPSIjRkVFMkUyIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik04IDEyQzEwIDExIDE0IDExIDE2IDEyIiBzdHJva2U9IiNGQ0EwQTAiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48Y2lyY2xlIGN4PSIxMCIgY3k9IjE1IiByPSIxLjUiIGZpbGw9IiNGRUUyRTIiLz48L3N2Zz4=`,
65
+ // Ground beef
66
+ beef_ground: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTBDNCA3IDcgNSAxMiA1QzE3IDUgMjAgNyAyMCAxMEMyMCAxMyAxNyAxNSAxMiAxNUM3IDE1IDQgMTMgNCAxMFoiIGZpbGw9IiM5OTFFQjgiLz48cGF0aCBkPSJNNiAxMEMxMCA4IDE0IDggMTggMTAiIHN0cm9rZT0iI0M4NEM2OCIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNOCAxMkMxMCAxMSAxNCAxMSAxNiAxMiIgc3Ryb2tlPSIjQzg0QzY4IiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik01IDE1QzUgMTggOCAxOSAxMiAxOUMxNiAxOSAxOSAxOCAxOSAxNSIgc3Ryb2tlPSIjN0YxRDFEIiBzdHJva2Utd2lkdGg9IjEuNSIvPjxjaXJjbGUgY3g9IjgiIGN5PSI5IiByPSIwLjUiIGZpbGw9IiNGRUUyRTIiLz48Y2lyY2xlIGN4PSIxNCIgY3k9IjgiIHI9IjAuNSIgZmlsbD0iI0ZFRTJFMiIvPjxjaXJjbGUgY3g9IjExIiBjeT0iMTEiIHI9IjAuNSIgZmlsbD0iI0ZFRTJFMiIvPjwvc3ZnPg==`,
67
+ // Beef roast
68
+ beef_roast: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHJlY3QgeD0iNCIgeT0iNiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjEyIiByeD0iMiIgZmlsbD0iI0VGNDQ0NCIgc3Ryb2tlPSIjQjkxQzFDIiBzdHJva2Utd2lkdGg9IjEuNSIvPjxwYXRoIGQ9Ik00IDEwSDE4IiBzdHJva2U9IiNGQ0EwQTAiIHN0cm9rZS13aWR0aD0iMiIvPjxwYXRoIGQ9Ik00IDE0SDE4IiBzdHJva2U9IiNGQ0EwQTAiIHN0cm9rZS13aWR0aD0iMiIvPjxwYXRoIGQ9Ik0yMCAxMkgyMiIgc3Ryb2tlPSIjRDk3NzA2IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik0yIDEySDQiIHN0cm9rZT0iI0Q5NzcwNiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=`
69
+ };
70
+ var SEAFOOD_ICONS = {
71
+ // Salmon fillet
72
+ salmon_fillet: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTMgMTBDMyA4IDYgNiAxMiA2QzE4IDYgMjEgOCAyMSAxMEMyMSAxMiAxOSAxNyAxNiAxOEM2IDE4IDMgMTIgMyAxMFoiIGZpbGw9IiNGQjkyM0MiIHN0cm9rZT0iI0VBNTgwQyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBkPSJNNiAxMEMxMCA5IDE0IDkgMTggMTAiIHN0cm9rZT0iI0ZFRDdBQSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik03IDEzQzEwIDEyIDE0IDEyIDE3IDEzIiBzdHJva2U9IiNGRUQ3QUEiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNMTkgOEMyMCA3IDIxIDcgMjIgOCIgc3Ryb2tlPSIjOTk5IiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==`,
73
+ // Shrimp
74
+ shrimp: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTE4IDZDMTggNiAxNyAzIDEzIDNDOSAzIDkgNiA5IDZDOSA2IDcgNyA2IDlDNSAxMSA1IDEzIDYgMTVDNyAxNyA5IDE4IDExIDE4QzEzIDE4IDE0IDE3IDE1IDE2TDE3IDE4TDE5IDE2TDE3IDE0QzE4IDEzIDE5IDExIDE5IDlDMTkgNyAxOCA2IDE4IDZaIiBmaWxsPSIjRkJCNEI0IiBzdHJva2U9IiNGODcxNzEiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTTEyIDdDMTMuMSA3IDE0IDcuOSAxNCA5QzE0IDEwLjEgMTMuMSAxMSAxMiAxMUMxMC45IDExIDEwIDEwLjEgMTAgOUMxMCA3LjkgMTAuOSA3IDEyIDdaIiBmaWxsPSIjRkVFMkUyIi8+PHBhdGggZD0iTTE0IDNDMTQGNCAXNSIYTCE3IDJNMTIgM0MxMiAzIDEyIDEgMTAgMSIgc3Ryb2tlPSIjRjg3MTcxIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PGNpcmNsZSBjeD0iMTQiIGN5PSI5IiByPSIxIiBmaWxsPSIjMUYyOTM3Ii8+PC9zdmc+`,
75
+ // Cod fillet
76
+ cod_fillet: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTMgMTFDMyA5IDYgNyAxMiA3QzE4IDcgMjEgOSAyMSAxMUMyMSAxMyAxOSAxNyAxNiAxN0M2IDE3IDMgMTMgMyAxMVoiIGZpbGw9IiNGRUYzQzciIHN0cm9rZT0iI0ZERTY4QSIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBkPSJNNiAxMUMxMCAxMCAxNCAxMCAxOCAxMSIgc3Ryb2tlPSIjRkRFNjhBIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTggMTNDMTAgMTIgMTQgMTIgMTYgMTMiIHN0cm9rZT0iI0ZERTY4QSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==`,
77
+ // Tuna steak
78
+ tuna_steak: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgOEM0IDUgNyAzIDEyIDNDMTcgMyAyMCA1IDIwIDhDMjAgMTEgMTggMTYgMTYgMThDMTQgMjAgMTAgMjAgOCAxOEM2IDE2IDQgMTEgNCA4WiIgZmlsbD0iI0VGNDQ0NCIgc3Ryb2tlPSIjQjkxQzFDIiBzdHJva2Utd2lkdGg9IjEuNSIvPjxwYXRoIGQ9Ik03IDhDMTAgNyAxNCA3IDE3IDgiIHN0cm9rZT0iI0ZDQTBBMCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNOCAxMkMxMCAxMSAxNCAxMSAxNiAxMiIgc3Ryb2tlPSIjRkNBMEEwIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+`
79
+ };
80
+ var EGG_ICONS = {
81
+ // Fried egg
82
+ egg_fried: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTJDMyA4IDUgNSA4IDRDMTEgMyAxMyA0IDE1IDVDMTcgNiAxOSA1IDIwIDdDMjEgOSAyMSAxMiAyMCAxNEMxOSAxNiAxNyAxOCAxNCAxOUMxMSAyMCA3IDE5IDUgMTdDMyAxNSA0IDE0IDQgMTJaIiBmaWxsPSIjRkZGRkZGIiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMS41Ii8+PGVsbGlwc2UgY3g9IjEyIiBjeT0iMTEiIHJ4PSI1IiByeT0iNCIgZmlsbD0iI0ZCQkYyNCIvPjxlbGxpcHNlIGN4PSIxMiIgY3k9IjExIiByeD0iMyIgcnk9IjIuNSIgZmlsbD0iI0Y1OUUwQiIvPjxwYXRoIGQ9Ik0xMCAxMEMxMC41IDkuNSAxMS41IDkuNSAxMiAxMCIgc3Ryb2tlPSIjRkVGOUMzIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==`,
83
+ // Boiled egg
84
+ egg_boiled: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTEyIDNDOCAzIDUgOC41IDUgMTNDNSAxNy41IDguMSAyMSAxMiAyMUMxNS45IDIxIDE5IDE3LjUgMTkgMTNDMTkgOC41IDE2IDMgMTIgM1oiIGZpbGw9IiNGRUY5QzMiIHN0cm9rZT0iI0ZERTY4QSIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBkPSJNNSAxMkgxOSIgc3Ryb2tlPSIjRkRFNjhBIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWRhc2hhcnJheT0iMiAyIi8+PGVsbGlwc2UgY3g9IjEyIiBjeT0iMTUiIHJ4PSI0IiByeT0iMyIgZmlsbD0iI0ZCQkYyNCIvPjxlbGxpcHNlIGN4PSIxMiIgY3k9IjE1IiByeD0iMiIgcnk9IjEuNSIgZmlsbD0iI0Y1OUUwQiIvPjwvc3ZnPg==`,
85
+ // Scrambled eggs
86
+ egg_scrambled: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTBDNCAxMyA3IDE2IDEyIDE2QzE3IDE2IDIwIDEzIDIwIDEwQzIwIDcgMTcgNSAxMiA1QzcgNSA0IDcgNCAxMFoiIGZpbGw9IiNGQkJGMjQiIHN0cm9rZT0iI0Y1OUUwQiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBkPSJNNiAxMEM4IDkgMTAgOSAxMiAxMEMxNCAxMSAxNiAxMSAxOCAxMCIgc3Ryb2tlPSIjRkVGOUMzIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTggMTNDMTAgMTIgMTQgMTIgMTYgMTMiIHN0cm9rZT0iI0ZFRjlDMyIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik00IDE2QzQgMTggNyAxOSAxMiAxOUMxNyAxOSAyMCAxOCAyMCAxNiIgc3Ryb2tlPSIjRjU5RTBCIiBzdHJva2Utd2lkdGg9IjEuNSIvPjwvc3ZnPg==`,
87
+ // Poached egg
88
+ egg_poached: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTUgMTFDNCA4IDYgNSAxMiA1QzE4IDUgMjAgOCAxOSAxMUMxOCAxNCAxNiAxNyAxMiAxN0M4IDE3IDYgMTQgNSAxMVoiIGZpbGw9IiNGRkZGRkYiIHN0cm9rZT0iI0U1RTdFQiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48ZWxsaXBzZSBjeD0iMTIiIGN5PSIxMSIgcng9IjQiIHJ5PSIzIiBmaWxsPSIjRkJCRjI0Ii8+PGVsbGlwc2UgY3g9IjEyIiBjeT0iMTEiIHJ4PSIyIiByeT0iMS41IiBmaWxsPSIjRjU5RTBCIi8+PC9zdmc+`
89
+ };
90
+ var VEGETABLE_ICONS = {
91
+ // Broccoli
92
+ broccoli: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTEyIDIxVjE0IiBzdHJva2U9IiM2NUExNDUiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PGNpcmNsZSBjeD0iOCIgY3k9IjgiIHI9IjQiIGZpbGw9IiMyMkM1NUUiLz48Y2lyY2xlIGN4PSIxNiIgY3k9IjgiIHI9IjQiIGZpbGw9IiMyMkM1NUUiLz48Y2lyY2xlIGN4PSIxMiIgY3k9IjUiIHI9IjQiIGZpbGw9IiMyMkM1NUUiLz48Y2lyY2xlIGN4PSIxMiIgY3k9IjEwIiByPSI0IiBmaWxsPSIjMjJDNTVFIi8+PGNpcmNsZSBjeD0iOSIgY3k9IjYiIHI9IjIiIGZpbGw9IiM0QURFODAiLz48Y2lyY2xlIGN4PSIxNCIgY3k9IjgiIHI9IjEuNSIgZmlsbD0iIzRBREU4MCIvPjwvc3ZnPg==`,
93
+ // Asparagus
94
+ asparagus: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTggMjFWOEw5IDRMMTAgOFYyMSIgc3Ryb2tlPSIjNjVBMTQ1IiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9IiM2NUExNDUiLz48cGF0aCBkPSJNMTEgMjFWOUwxMiA1TDEzIDlWMjEiIHN0cm9rZT0iIzIyQzU1RSIgc3Ryb2tlLXdpZHRoPSIyIiBmaWxsPSIjMjJDNTVFIi8+PHBhdGggZD0iTTE0IDIxVjEwTDE1IDZMMTYgMTBWMjEiIHN0cm9rZT0iIzY1QTE0NSIgc3Ryb2tlLXdpZHRoPSIyIiBmaWxsPSIjNjVBMTQ1Ii8+PGNpcmNsZSBjeD0iOSIgY3k9IjQiIHI9IjEuNSIgZmlsbD0iIzE2QTM0QSIvPjxjaXJjbGUgY3g9IjEyIiBjeT0iNSIgcj0iMS41IiBmaWxsPSIjMTZBMzRBIi8+PGNpcmNsZSBjeD0iMTUiIGN5PSI2IiByPSIxLjUiIGZpbGw9IiMxNkEzNEEiLz48L3N2Zz4=`,
95
+ // Potato
96
+ potato: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTUgMTJDNSA4IDggNSAxMiA1QzE2IDUgMTkgOCAxOSAxMkMxOSAxNiAxNiAxOSAxMiAxOUM4IDE5IDUgMTYgNSAxMloiIGZpbGw9IiNEOTc3MDYiIHN0cm9rZT0iI0I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48Y2lyY2xlIGN4PSI5IiBjeT0iMTAiIHI9IjEiIGZpbGw9IiNCNDUzMDkiLz48Y2lyY2xlIGN4PSIxNCIgY3k9IjkiIHI9IjAuNzUiIGZpbGw9IiNCNDUzMDkiLz48Y2lyY2xlIGN4PSIxMSIgY3k9IjE0IiByPSIwLjc1IiBmaWxsPSIjQjQ1MzA5Ii8+PGNpcmNsZSBjeD0iMTYiIGN5PSIxMyIgcj0iMC41IiBmaWxsPSIjQjQ1MzA5Ii8+PHBhdGggZD0iTTggMTJDMTAgMTEgMTQgMTEgMTYgMTIiIHN0cm9rZT0iI0Y1OUUwQiIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=`,
97
+ // Carrot
98
+ carrot: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTEyIDZDMTAgNiA4IDggNyAxMUM2IDE0IDYgMTggOCAyMEwxMiAyMUwxNiAyMEMxOCAxOCAxOCAxNCAxNyAxMUMxNiA4IDE0IDYgMTIgNloiIGZpbGw9IiNGQjkyM0MiIHN0cm9rZT0iI0VBNTgwQyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBkPSJNMTAgM0MxMCAzIDkgNSAxMCA2TTEyIDJDMTIgMiAxMSA1IDEyIDZNMTQgM0MxNCAzIDE1IDUgMTQgNiIgc3Ryb2tlPSIjMjJDNTVFIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik05IDEyQzExIDExIDEzIDExIDE1IDEyIiBzdHJva2U9IiNGRUQ3QUEiIHN0cm9rZS13aWR0aD0iMSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTEwIDE2QzExIDE1IDEzIDE1IDE0IDE2IiBzdHJva2U9IiNGRUQ3QUEiIHN0cm9rZS13aWR0aD0iMSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+`
99
+ };
100
+ var GRAIN_ICONS = {
101
+ // White rice
102
+ rice_white: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTFDNCAxMSA0IDE4IDEyIDE4QzIwIDE4IDIwIDExIDIwIDExSDRaIiBmaWxsPSIjRkZGRkZGIiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTTUgMThDNSAxOCA2IDIxIDEyIDIxQzE4IDIxIDE5IDE4IDE5IDE4IiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48ZWxsaXBzZSBjeD0iOCIgY3k9IjkiIHJ4PSIxLjUiIHJ5PSIxIiBmaWxsPSIjRkVGM0M3Ii8+PGVsbGlwc2UgY3g9IjEyIiBjeT0iOCIgcng9IjEuNSIgcnk9IjEiIGZpbGw9IiNGRUYzQzciLz48ZWxsaXBzZSBjeD0iMTYiIGN5PSI5IiByeD0iMS41IiByeT0iMSIgZmlsbD0iI0ZFRjNDNyIvPjxlbGxpcHNlIGN4PSIxMCIgY3k9IjExIiByeD0iMS41IiByeT0iMSIgZmlsbD0iI0ZFRjNDNyIvPjxlbGxpcHNlIGN4PSIxNCIgY3k9IjExIiByeD0iMS41IiByeT0iMSIgZmlsbD0iI0ZFRjNDNyIvPjwvc3ZnPg==`,
103
+ // Pasta
104
+ pasta: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTRDNSAxMSA4IDkgMTIgOUMxNiA5IDE5IDExIDIwIDE0IiBzdHJva2U9IiNGREU2OEEiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTYgMTdDNyAxNCA5IDEyIDEyIDEyQzE1IDEyIDE3IDE0IDE4IDE3IiBzdHJva2U9IiNGREU2OEEiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTggMjBDOSAxOCAxMCAxNiAxMiAxNkMxNCAxNiAxNSAxOCAxNiAyMCIgc3Ryb2tlPSIjRkRFNjhBIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik0zIDhDNCAxMCA2IDEyIDggMTJNMjEgOEMyMCAxMCAxOCAxMiAxNiAxMk0xMiA0VjkiIHN0cm9rZT0iI0Y1OUUwQiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=`,
105
+ // Quinoa
106
+ quinoa: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTFDNCAxMSA0IDE4IDEyIDE4QzIwIDE4IDIwIDExIDIwIDExSDRaIiBmaWxsPSIjRkZGRkZGIiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTTUgMThDNSAxOCA2IDIxIDEyIDIxQzE4IDIxIDE5IDE4IDE5IDE4IiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48Y2lyY2xlIGN4PSI3IiBjeT0iMTAiIHI9IjEiIGZpbGw9IiNGREU2OEEiLz48Y2lyY2xlIGN4PSIxMCIgY3k9IjkiIHI9IjEiIGZpbGw9IiNGRUY5QzMiLz48Y2lyY2xlIGN4PSIxMyIgY3k9IjgiIHI9IjEiIGZpbGw9IiNGREU2OEEiLz48Y2lyY2xlIGN4PSIxNiIgY3k9IjkiIHI9IjEiIGZpbGw9IiNGRUY5QzMiLz48Y2lyY2xlIGN4PSI4IiBjeT0iMTMiIHI9IjEiIGZpbGw9IiNGRUY5QzMiLz48Y2lyY2xlIGN4PSIxMiIgY3k9IjExIiByPSIxIiBmaWxsPSIjRkRFNjhBIi8+PGNpcmNsZSBjeD0iMTUiIGN5PSIxMiIgcj0iMSIgZmlsbD0iI0ZFRjlDMyIvPjwvc3ZnPg==`
107
+ };
108
+ var INGREDIENT_ICONS = {
109
+ ...POULTRY_ICONS,
110
+ ...BEEF_ICONS,
111
+ ...SEAFOOD_ICONS,
112
+ ...EGG_ICONS,
113
+ ...VEGETABLE_ICONS,
114
+ ...GRAIN_ICONS
115
+ };
116
+ var getIcon = (id, category) => {
117
+ if (INGREDIENT_ICONS[id]) {
118
+ return INGREDIENT_ICONS[id];
119
+ }
120
+ if (category && CATEGORY_ICONS[category]) {
121
+ return CATEGORY_ICONS[category];
122
+ }
123
+ return void 0;
124
+ };
125
+ // Annotate the CommonJS export names for ESM import in node:
126
+ 0 && (module.exports = {
127
+ BEEF_ICONS,
128
+ CATEGORY_ICONS,
129
+ EGG_ICONS,
130
+ GRAIN_ICONS,
131
+ INGREDIENT_ICONS,
132
+ POULTRY_ICONS,
133
+ SEAFOOD_ICONS,
134
+ VEGETABLE_ICONS,
135
+ getIcon
136
+ });
137
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../icons.ts"],"sourcesContent":["// SVG icons as data URLs for the cooking-temperature library\n\n// =============================================================================\n// CATEGORY ICONS\n// =============================================================================\n\nexport const CATEGORY_ICONS: Record<string, string> = {\n // Poultry - Chicken drumstick\n poultry: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTE1LjUgM0MxMy4wMSAzIDExIDUuMDEgMTEgNy41QzExIDguMjcgMTEuMTkgOS4wMSAxMS41MyA5LjY1TDMuNSAxNy42OEMzLjE4IDE4IDMgMTguNDMgMyAxOC44OEMzIDE5LjgxIDMuNzQgMjAuNjQgNC42NyAyMC45MUM1LjA4IDIxLjAzIDUuNTMgMjEgNS45IDIwLjgyTDYuNSAyMC41TDcuNDQgMjEuMzFDNy43OCAyMS42IDguMjMgMjEuNzUgOC42OSAyMS43NUM5LjQgMjEuNzUgMTAuMDUgMjEuNDIgMTAuNDUgMjAuODhMMTEgMjAuMTNMMTEuNTUgMjAuODhDMTEuOTUgMjEuNDIgMTIuNiAyMS43NSAxMy4zMSAyMS43NUMxMy43NyAyMS43NSAxNC4yMiAyMS42IDE0LjU2IDIxLjMxTDE1LjUgMjAuNUwxNi4xIDIwLjgyQzE2LjQ3IDIxIDE2LjkyIDIxLjAzIDE3LjMzIDIwLjkxQzE4LjI2IDIwLjY0IDE5IDE5LjgxIDE5IDE4Ljg4QzE5IDE4LjQzIDE4LjgyIDE4IDE4LjUgMTcuNjhMMTQuMzUgMTMuNTNDMTQuOTkgMTMuMTkgMTUuNzMgMTMgMTYuNSAxM0MxOC45OSAxMyAyMSAxMC45OSAyMSA4LjVDMjEgNi4wMSAxOC45OSA0IDE2LjUgNEMxNi4xNyA0IDE1LjgzIDQuMDMgMTUuNSA0LjFWM1oiIGZpbGw9IiNGNTlFMEIiLz48cGF0aCBkPSJNMTYuNSA1QzE4LjQzIDUgMjAgNi41NyAyMCA4LjVDMjAgMTAuNDMgMTguNDMgMTIgMTYuNSAxMkMxNS4zNiAxMiAxNC4zMyAxMS40OCAxMy42MiAxMC42N0wxMy4yOCAxMC4yOEwxMi45MyA5Ljg0QzEyLjM0IDkuMDMgMTIgOC4wMyAxMiA3QzEyIDUuMDcgMTMuNTcgMy41IDE1LjUgMy41VjUuNUMxNC42OCA1LjUgMTQgNi4xOCAxNCA3QzE0IDcuNTYgMTQuMTkgOC4wOCAxNC41MSA4LjQ5TDE0Ljg2IDguOTNMMTUuMjEgOS4zMkMxNS42NSA5Ljc1IDE2LjA1IDEwIDE2LjUgMTBDMTcuMzMgMTAgMTggOS4zMyAxOCA4LjVDMTggNy42NyAxNy4zMyA3IDE2LjUgN1Y1WiIgZmlsbD0iI0Q5NzcwNiIvPjwvc3ZnPg==`,\n\n // Beef - Steak cut\n beef: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTIwLjUgNkMxOS4xIDMuOCAxNi4xIDIuNSAxMi41IDIuNUM3LjUgMi41IDMuNSA1LjUgMy41IDlDMy41IDEwLjggNC4zIDEyLjQgNS43IDE0TDQgMTguNUM0IDE5LjUgNS41IDIxIDcuNSAyMUM4LjIgMjEgOC44IDIwLjggOS41IDIwLjNMMTIgMThMMTQuNSAyMC4zQzE1LjIgMjAuOCAxNS44IDIxIDE2LjUgMjFDMTguNSAyMSAyMCAxOS41IDIwIDE4LjVMMTguMyAxNEMxOS43IDEyLjQgMjAuNSAxMC44IDIwLjUgOVY2WiIgZmlsbD0iI0VGNDQ0NCIvPjxwYXRoIGQ9Ik0xNy41IDlDMTcuNSAxMC45IDE1LjQgMTIuNSAxMi41IDEyLjVDOS42IDEyLjUgNy41IDEwLjkgNy41IDlDNy41IDcuMSA5LjYgNS41IDEyLjUgNS41QzE1LjQgNS41IDE3LjUgNy4xIDE3LjUgOVoiIGZpbGw9IiNGQ0EwQTAiLz48cGF0aCBkPSJNMTQgOEMxNCA4LjggMTMuMyA5LjUgMTIuNSA5LjVDMTEuNyA5LjUgMTEgOC44IDExIDhDMTEgNy4yIDExLjcgNi41IDEyLjUgNi41QzEzLjMgNi41IDE0IDcuMiAxNCA4WiIgZmlsbD0iI0ZFRTJFMiIvPjwvc3ZnPg==`,\n\n // Pork - Pork chop/meat on bone\n pork: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTBDNCAxNC40IDcuNiAxOCAxMiAxOEMxNi40IDE4IDIwIDE0LjQgMjAgMTBDMjAgNy45IDE5LjIgNiAxNy44IDQuNkMxNi44IDMuNiAxNS41IDMgMTQgM0gxMEM4LjUgMyA3LjIgMy42IDYuMiA0LjZDNC44IDYgNCAxLjkgNCAxMFoiIGZpbGw9IiNGQkI0QjQiLz48cGF0aCBkPSJNMTIgMThWMjFNMTIgMjFIOE0xMiAyMUgxNiIgc3Ryb2tlPSIjRkVFMkUyIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik04IDlDOCAxMC43IDkuMyAxMiAxMSAxMiIgc3Ryb2tlPSIjRkRFNjhBIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik03IDVDNi41IDYgNi41IDcgNyA4IiBzdHJva2U9IiNFRjQ0NDQiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNMTcgNUMxNy41IDYgMTcuNSA3IDE3IDgiIHN0cm9rZT0iI0VGNDQ0NCIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==`,\n\n // Seafood Fish - Fish\n seafood_fish: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTIyIDEyQzIyIDEyIDE5IDE3IDE0IDE3QzEyIDE3IDEwLjUgMTYuNSA5LjUgMTZMNiAyMFY0TDkuNSA4QzEwLjUgNy41IDEyIDcgMTQgN0MxOSA3IDIyIDEyIDIyIDEyWiIgZmlsbD0iIzYwQTVGQSIvPjxjaXJjbGUgY3g9IjE2IiBjeT0iMTEiIHI9IjEuNSIgZmlsbD0iIzFGMjkzNyIvPjxjaXJjbGUgY3g9IjE2LjMiIGN5PSIxMC43IiByPSIwLjUiIGZpbGw9IiNGRkZGRkYiLz48cGF0aCBkPSJNMTQgMTJDMTQgMTIgMTIgMTMgMTAuNSAxM0M5IDEzIDguNSAxMi41IDguNSAxMkM4LjUgMTEuNSA5IDExIDEwLjUgMTFDMTIgMTEgMTQgMTIgMTQgMTJaIiBmaWxsPSIjOTNDNUZEIi8+PHBhdGggZD0iTTYgNEwzIDFNNiAyMEwzIDIzIiBzdHJva2U9IiMzQjgyRjYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+`,\n\n // Seafood Shellfish - Shrimp\n seafood_shellfish: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTE5IDdDMTkgNyAxOCA0IDE0IDRDMTAgNCAxMCA3IDEwIDdDMTAgNyA4IDggNyAxMEM2IDEyIDYgMTQgNyAxNkM4IDE4IDEwIDE5IDEyIDE5QzE0IDE5IDE1IDE4IDE2IDE3TDE4IDE5TDIwIDE3TDE4IDE1QzE5IDE0IDIwIDEyIDIwIDEwQzIwIDggMTkgNyAxOSA3WiIgZmlsbD0iI0ZCQjRCNCIvPjxwYXRoIGQ9Ik0xMyA4QzE0LjEgOCAxNSA4LjkgMTUgMTBDMTUgMTEuMSAxNC4xIDEyIDEzIDEyQzExLjkgMTIgMTEgMTEuMSAxMSAxMEMxMSA4LjkgMTEuOSA4IDEzIDhaIiBmaWxsPSIjRkVFMkUyIi8+PHBhdGggZD0iTTE1IDRDMTUgNCAxNiAyIDE4IDJNMTMgNEMxMyA0IDEzIDIgMTEgMiIgc3Ryb2tlPSIjRjg3MTcxIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PGNpcmNsZSBjeD0iMTUiIGN5PSIxMCIgcj0iMSIgZmlsbD0iIzFGMjkzNyIvPjwvc3ZnPg==`,\n\n // Egg\n egg: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTEyIDNDOCAzIDUgOC41IDUgMTNDNSAxNy41IDguMSAyMSAxMiAyMUMxNS45IDIxIDE5IDE3LjUgMTkgMTNDMTkgOC41IDE2IDMgMTIgM1oiIGZpbGw9IiNGRUY5QzMiIHN0cm9rZT0iI0ZERTY4QSIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48ZWxsaXBzZSBjeD0iMTIiIGN5PSIxMyIgcng9IjUiIHJ5PSI0IiBmaWxsPSIjRkJCRjI0Ii8+PGVsbGlwc2UgY3g9IjEyIiBjeT0iMTMiIHJ4PSIzIiByeT0iMi41IiBmaWxsPSIjRjU5RTBCIi8+PHBhdGggZD0iTTEwIDEyQzEwLjUgMTEuNSAxMS41IDExLjUgMTIgMTIiIHN0cm9rZT0iI0ZFRjlDMyIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=`,\n\n // Vegetable - Broccoli\n vegetable: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTEyIDIxVjE0IiBzdHJva2U9IiM2NUExNDUiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTkgMjFWMTYiIHN0cm9rZT0iIzY1QTE0NSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNMTUgMjFWMTYiIHN0cm9rZT0iIzY1QTE0NSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48Y2lyY2xlIGN4PSI4IiBjeT0iOCIgcj0iNCIgZmlsbD0iIzIyQzU1RSIvPjxjaXJjbGUgY3g9IjE2IiBjeT0iOCIgcj0iNCIgZmlsbD0iIzIyQzU1RSIvPjxjaXJjbGUgY3g9IjEyIiBjeT0iNSIgcj0iNCIgZmlsbD0iIzIyQzU1RSIvPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTAiIHI9IjQiIGZpbGw9IiMyMkM1NUUiLz48Y2lyY2xlIGN4PSI2IiBjeT0iMTEiIHI9IjIuNSIgZmlsbD0iIzE2QTM0QSIvPjxjaXJjbGUgY3g9IjE4IiBjeT0iMTEiIHI9IjIuNSIgZmlsbD0iIzE2QTM0QSIvPjxjaXJjbGUgY3g9IjkiIGN5PSI2IiByPSIyIiBmaWxsPSIjNEFERTgwIi8+PGNpcmNsZSBjeD0iMTQiIGN5PSI4IiByPSIxLjUiIGZpbGw9IiM0QURFODAiLz48L3N2Zz4=`,\n\n // Grain - Rice bowl\n grain: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTFDNCAxMSA0IDE4IDEyIDE4QzIwIDE4IDIwIDExIDIwIDExSDRaIiBmaWxsPSIjRkZGRkZGIiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTTUgMThDNSAxOCA2IDIxIDEyIDIxQzE4IDIxIDE5IDE4IDE5IDE4IiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48ZWxsaXBzZSBjeD0iOCIgY3k9IjkiIHJ4PSIxLjUiIHJ5PSIxIiBmaWxsPSIjRkVGM0M3Ii8+PGVsbGlwc2UgY3g9IjEyIiBjeT0iOCIgcng9IjEuNSIgcnk9IjEiIGZpbGw9IiNGRUYzQzciLz48ZWxsaXBzZSBjeD0iMTYiIGN5PSI5IiByeD0iMS41IiByeT0iMSIgZmlsbD0iI0ZFRjNDNyIvPjxlbGxpcHNlIGN4PSIxMCIgY3k9IjExIiByeD0iMS41IiByeT0iMSIgZmlsbD0iI0ZFRjNDNyIvPjxlbGxpcHNlIGN4PSIxNCIgY3k9IjExIiByeD0iMS41IiByeT0iMSIgZmlsbD0iI0ZFRjNDNyIvPjxlbGxpcHNlIGN4PSI3IiBjeT0iMTIiIHJ4PSIxIiByeT0iMC43NSIgZmlsbD0iI0ZFRjNDNyIvPjxlbGxpcHNlIGN4PSIxNyIgY3k9IjEyIiByeD0iMSIgcnk9IjAuNzUiIGZpbGw9IiNGRUYzQzciLz48L3N2Zz4=`,\n};\n\n// =============================================================================\n// INGREDIENT ICONS - Poultry\n// =============================================================================\n\nexport const POULTRY_ICONS: Record<string, string> = {\n // Chicken breast\n chicken_breast: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTUgOEM1IDUgOCAzIDEyIDNDMTYgMyAxOSA1IDE5IDhDMTkgMTEgMTggMTUgMTcgMTdDMTYgMTkgMTQgMjAgMTIgMjBDMTAgMjAgOCAxOSA3IDE3QzYgMTUgNSAxMSA1IDhaIiBmaWxsPSIjRkRFNjhBIiBzdHJva2U9IiNGNTlFMEIiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTTggOEMxMCA3IDE0IDcgMTYgOCIgc3Ryb2tlPSIjRjU5RTBCIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik05IDEyQzEwIDExIDE0IDExIDE1IDEyIiBzdHJva2U9IiNGNTlFMEIiIHN0cm9rZS13aWR0aD0iMSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+`,\n\n // Chicken thigh\n chicken_thigh: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTE2IDRDMTQgMyAxMCAzIDggNEM2IDUgNCAxMCA1IDE0QzYgMTggOCAyMCAxMSAyMEwxMiAxOEwxNCAxNUMxNiAxMiAxOCA4IDE4IDZDMTggNSAxNyA0IDE2IDRaIiBmaWxsPSIjRkRFNjhBIiBzdHJva2U9IiNGNTlFMEIiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTTExIDIwTDEwIDIySDgiIHN0cm9rZT0iI0Q5NzcwNiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNNyA5QzkgOCAxMiA4IDE0IDkiIHN0cm9rZT0iI0Y1OUUwQiIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=`,\n\n // Whole chicken\n whole_chicken: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTEyIDJDOCAyIDQgNiA0IDExQzQgMTQgNSAxNyA3IDE5TDYgMjFIOEwxMCAxOUgxNEwxNiAyMUgxOEwxNyAxOUMxOSAxNyAyMCAxNCAyMCAxMUMyMCA2IDE2IDIgMTIgMloiIGZpbGw9IiNGREU2OEEiIHN0cm9rZT0iI0Y1OUUwQiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBkPSJNOCA5QzEwIDggMTQgOCAxNiA5IiBzdHJva2U9IiNGNTlFMEIiIHN0cm9rZS13aWR0aD0iMSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTkgMTNDMTEgMTIgMTMgMTIgMTUgMTMiIHN0cm9rZT0iI0Y1OUUwQiIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48Y2lyY2xlIGN4PSI5IiBjeT0iNyIgcj0iMSIgZmlsbD0iI0Q5NzcwNiIvPjxjaXJjbGUgY3g9IjE1IiBjeT0iNyIgcj0iMSIgZmlsbD0iI0Q5NzcwNiIvPjwvc3ZnPg==`,\n\n // Turkey breast\n turkey_breast: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgOUM0IDUgNyAyIDEyIDJDMTcgMiAyMCA1IDIwIDlDMjAgMTMgMTggMTggMTYgMjBMMTQgMjFIMTBMOCAyMEM2IDE4IDQgMTMgNCA5WiIgZmlsbD0iI0ZCQjRCNCIgc3Ryb2tlPSIjRjg3MTcxIiBzdHJva2Utd2lkdGg9IjEuNSIvPjxwYXRoIGQ9Ik03IDlDMTAgNyAxNCA3IDE3IDkiIHN0cm9rZT0iI0Y4NzE3MSIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNOCAxM0MxMCAxMiAxNCAxMiAxNiAxMyIgc3Ryb2tlPSIjRjg3MTcxIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==`,\n};\n\n// =============================================================================\n// INGREDIENT ICONS - Beef\n// =============================================================================\n\nexport const BEEF_ICONS: Record<string, string> = {\n // Ribeye steak\n beef_steak_ribeye: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgOEM0IDUgNyAzIDEyIDNDMTcgMyAyMCA1IDIwIDhDMjAgMTEgMTkgMTUgMTcgMThDMTUgMjAgMTQgMjEgMTIgMjFDMTAgMjEgOSAyMCA3IDE4QzUgMTUgNCAxMSA0IDhaIiBmaWxsPSIjRUY0NDQ0IiBzdHJva2U9IiNCOTFDMUMiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTTcgOEMxMCA3IDE0IDcgMTcgOCIgc3Ryb2tlPSIjRkVFMkUyIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik04IDEyQzEwIDExIDE0IDExIDE2IDEyIiBzdHJva2U9IiNGQ0EwQTAiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48Y2lyY2xlIGN4PSIxMCIgY3k9IjE1IiByPSIxLjUiIGZpbGw9IiNGRUUyRTIiLz48L3N2Zz4=`,\n\n // Ground beef\n beef_ground: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTBDNCA3IDcgNSAxMiA1QzE3IDUgMjAgNyAyMCAxMEMyMCAxMyAxNyAxNSAxMiAxNUM3IDE1IDQgMTMgNCAxMFoiIGZpbGw9IiM5OTFFQjgiLz48cGF0aCBkPSJNNiAxMEMxMCA4IDE0IDggMTggMTAiIHN0cm9rZT0iI0M4NEM2OCIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNOCAxMkMxMCAxMSAxNCAxMSAxNiAxMiIgc3Ryb2tlPSIjQzg0QzY4IiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik01IDE1QzUgMTggOCAxOSAxMiAxOUMxNiAxOSAxOSAxOCAxOSAxNSIgc3Ryb2tlPSIjN0YxRDFEIiBzdHJva2Utd2lkdGg9IjEuNSIvPjxjaXJjbGUgY3g9IjgiIGN5PSI5IiByPSIwLjUiIGZpbGw9IiNGRUUyRTIiLz48Y2lyY2xlIGN4PSIxNCIgY3k9IjgiIHI9IjAuNSIgZmlsbD0iI0ZFRTJFMiIvPjxjaXJjbGUgY3g9IjExIiBjeT0iMTEiIHI9IjAuNSIgZmlsbD0iI0ZFRTJFMiIvPjwvc3ZnPg==`,\n\n // Beef roast\n beef_roast: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHJlY3QgeD0iNCIgeT0iNiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjEyIiByeD0iMiIgZmlsbD0iI0VGNDQ0NCIgc3Ryb2tlPSIjQjkxQzFDIiBzdHJva2Utd2lkdGg9IjEuNSIvPjxwYXRoIGQ9Ik00IDEwSDE4IiBzdHJva2U9IiNGQ0EwQTAiIHN0cm9rZS13aWR0aD0iMiIvPjxwYXRoIGQ9Ik00IDE0SDE4IiBzdHJva2U9IiNGQ0EwQTAiIHN0cm9rZS13aWR0aD0iMiIvPjxwYXRoIGQ9Ik0yMCAxMkgyMiIgc3Ryb2tlPSIjRDk3NzA2IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik0yIDEySDQiIHN0cm9rZT0iI0Q5NzcwNiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=`,\n};\n\n// =============================================================================\n// INGREDIENT ICONS - Seafood\n// =============================================================================\n\nexport const SEAFOOD_ICONS: Record<string, string> = {\n // Salmon fillet\n salmon_fillet: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTMgMTBDMyA4IDYgNiAxMiA2QzE4IDYgMjEgOCAyMSAxMEMyMSAxMiAxOSAxNyAxNiAxOEM2IDE4IDMgMTIgMyAxMFoiIGZpbGw9IiNGQjkyM0MiIHN0cm9rZT0iI0VBNTgwQyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBkPSJNNiAxMEMxMCA5IDE0IDkgMTggMTAiIHN0cm9rZT0iI0ZFRDdBQSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik03IDEzQzEwIDEyIDE0IDEyIDE3IDEzIiBzdHJva2U9IiNGRUQ3QUEiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNMTkgOEMyMCA3IDIxIDcgMjIgOCIgc3Ryb2tlPSIjOTk5IiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==`,\n\n // Shrimp\n shrimp: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTE4IDZDMTggNiAxNyAzIDEzIDNDOSAzIDkgNiA5IDZDOSA2IDcgNyA2IDlDNSAxMSA1IDEzIDYgMTVDNyAxNyA5IDE4IDExIDE4QzEzIDE4IDE0IDE3IDE1IDE2TDE3IDE4TDE5IDE2TDE3IDE0QzE4IDEzIDE5IDExIDE5IDlDMTkgNyAxOCA2IDE4IDZaIiBmaWxsPSIjRkJCNEI0IiBzdHJva2U9IiNGODcxNzEiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTTEyIDdDMTMuMSA3IDE0IDcuOSAxNCA5QzE0IDEwLjEgMTMuMSAxMSAxMiAxMUMxMC45IDExIDEwIDEwLjEgMTAgOUMxMCA3LjkgMTAuOSA3IDEyIDdaIiBmaWxsPSIjRkVFMkUyIi8+PHBhdGggZD0iTTE0IDNDMTQGNCAXNSIYTCE3IDJNMTIgM0MxMiAzIDEyIDEgMTAgMSIgc3Ryb2tlPSIjRjg3MTcxIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PGNpcmNsZSBjeD0iMTQiIGN5PSI5IiByPSIxIiBmaWxsPSIjMUYyOTM3Ii8+PC9zdmc+`,\n\n // Cod fillet\n cod_fillet: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTMgMTFDMyA5IDYgNyAxMiA3QzE4IDcgMjEgOSAyMSAxMUMyMSAxMyAxOSAxNyAxNiAxN0M2IDE3IDMgMTMgMyAxMVoiIGZpbGw9IiNGRUYzQzciIHN0cm9rZT0iI0ZERTY4QSIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBkPSJNNiAxMUMxMCAxMCAxNCAxMCAxOCAxMSIgc3Ryb2tlPSIjRkRFNjhBIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTggMTNDMTAgMTIgMTQgMTIgMTYgMTMiIHN0cm9rZT0iI0ZERTY4QSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==`,\n\n // Tuna steak\n tuna_steak: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgOEM0IDUgNyAzIDEyIDNDMTcgMyAyMCA1IDIwIDhDMjAgMTEgMTggMTYgMTYgMThDMTQgMjAgMTAgMjAgOCAxOEM2IDE2IDQgMTEgNCA4WiIgZmlsbD0iI0VGNDQ0NCIgc3Ryb2tlPSIjQjkxQzFDIiBzdHJva2Utd2lkdGg9IjEuNSIvPjxwYXRoIGQ9Ik03IDhDMTAgNyAxNCA3IDE3IDgiIHN0cm9rZT0iI0ZDQTBBMCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNOCAxMkMxMCAxMSAxNCAxMSAxNiAxMiIgc3Ryb2tlPSIjRkNBMEEwIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+`,\n};\n\n// =============================================================================\n// INGREDIENT ICONS - Eggs\n// =============================================================================\n\nexport const EGG_ICONS: Record<string, string> = {\n // Fried egg\n egg_fried: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTJDMyA4IDUgNSA4IDRDMTEgMyAxMyA0IDE1IDVDMTcgNiAxOSA1IDIwIDdDMjEgOSAyMSAxMiAyMCAxNEMxOSAxNiAxNyAxOCAxNCAxOUMxMSAyMCA3IDE5IDUgMTdDMyAxNSA0IDE0IDQgMTJaIiBmaWxsPSIjRkZGRkZGIiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMS41Ii8+PGVsbGlwc2UgY3g9IjEyIiBjeT0iMTEiIHJ4PSI1IiByeT0iNCIgZmlsbD0iI0ZCQkYyNCIvPjxlbGxpcHNlIGN4PSIxMiIgY3k9IjExIiByeD0iMyIgcnk9IjIuNSIgZmlsbD0iI0Y1OUUwQiIvPjxwYXRoIGQ9Ik0xMCAxMEMxMC41IDkuNSAxMS41IDkuNSAxMiAxMCIgc3Ryb2tlPSIjRkVGOUMzIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==`,\n\n // Boiled egg\n egg_boiled: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTEyIDNDOCAzIDUgOC41IDUgMTNDNSAxNy41IDguMSAyMSAxMiAyMUMxNS45IDIxIDE5IDE3LjUgMTkgMTNDMTkgOC41IDE2IDMgMTIgM1oiIGZpbGw9IiNGRUY5QzMiIHN0cm9rZT0iI0ZERTY4QSIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBkPSJNNSAxMkgxOSIgc3Ryb2tlPSIjRkRFNjhBIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWRhc2hhcnJheT0iMiAyIi8+PGVsbGlwc2UgY3g9IjEyIiBjeT0iMTUiIHJ4PSI0IiByeT0iMyIgZmlsbD0iI0ZCQkYyNCIvPjxlbGxpcHNlIGN4PSIxMiIgY3k9IjE1IiByeD0iMiIgcnk9IjEuNSIgZmlsbD0iI0Y1OUUwQiIvPjwvc3ZnPg==`,\n\n // Scrambled eggs\n egg_scrambled: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTBDNCAxMyA3IDE2IDEyIDE2QzE3IDE2IDIwIDEzIDIwIDEwQzIwIDcgMTcgNSAxMiA1QzcgNSA0IDcgNCAxMFoiIGZpbGw9IiNGQkJGMjQiIHN0cm9rZT0iI0Y1OUUwQiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBkPSJNNiAxMEM4IDkgMTAgOSAxMiAxMEMxNCAxMSAxNiAxMSAxOCAxMCIgc3Ryb2tlPSIjRkVGOUMzIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTggMTNDMTAgMTIgMTQgMTIgMTYgMTMiIHN0cm9rZT0iI0ZFRjlDMyIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik00IDE2QzQgMTggNyAxOSAxMiAxOUMxNyAxOSAyMCAxOCAyMCAxNiIgc3Ryb2tlPSIjRjU5RTBCIiBzdHJva2Utd2lkdGg9IjEuNSIvPjwvc3ZnPg==`,\n\n // Poached egg\n egg_poached: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTUgMTFDNCA4IDYgNSAxMiA1QzE4IDUgMjAgOCAxOSAxMUMxOCAxNCAxNiAxNyAxMiAxN0M4IDE3IDYgMTQgNSAxMVoiIGZpbGw9IiNGRkZGRkYiIHN0cm9rZT0iI0U1RTdFQiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48ZWxsaXBzZSBjeD0iMTIiIGN5PSIxMSIgcng9IjQiIHJ5PSIzIiBmaWxsPSIjRkJCRjI0Ii8+PGVsbGlwc2UgY3g9IjEyIiBjeT0iMTEiIHJ4PSIyIiByeT0iMS41IiBmaWxsPSIjRjU5RTBCIi8+PC9zdmc+`,\n};\n\n// =============================================================================\n// INGREDIENT ICONS - Vegetables\n// =============================================================================\n\nexport const VEGETABLE_ICONS: Record<string, string> = {\n // Broccoli\n broccoli: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTEyIDIxVjE0IiBzdHJva2U9IiM2NUExNDUiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PGNpcmNsZSBjeD0iOCIgY3k9IjgiIHI9IjQiIGZpbGw9IiMyMkM1NUUiLz48Y2lyY2xlIGN4PSIxNiIgY3k9IjgiIHI9IjQiIGZpbGw9IiMyMkM1NUUiLz48Y2lyY2xlIGN4PSIxMiIgY3k9IjUiIHI9IjQiIGZpbGw9IiMyMkM1NUUiLz48Y2lyY2xlIGN4PSIxMiIgY3k9IjEwIiByPSI0IiBmaWxsPSIjMjJDNTVFIi8+PGNpcmNsZSBjeD0iOSIgY3k9IjYiIHI9IjIiIGZpbGw9IiM0QURFODAiLz48Y2lyY2xlIGN4PSIxNCIgY3k9IjgiIHI9IjEuNSIgZmlsbD0iIzRBREU4MCIvPjwvc3ZnPg==`,\n\n // Asparagus\n asparagus: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTggMjFWOEw5IDRMMTAgOFYyMSIgc3Ryb2tlPSIjNjVBMTQ1IiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9IiM2NUExNDUiLz48cGF0aCBkPSJNMTEgMjFWOUwxMiA1TDEzIDlWMjEiIHN0cm9rZT0iIzIyQzU1RSIgc3Ryb2tlLXdpZHRoPSIyIiBmaWxsPSIjMjJDNTVFIi8+PHBhdGggZD0iTTE0IDIxVjEwTDE1IDZMMTYgMTBWMjEiIHN0cm9rZT0iIzY1QTE0NSIgc3Ryb2tlLXdpZHRoPSIyIiBmaWxsPSIjNjVBMTQ1Ii8+PGNpcmNsZSBjeD0iOSIgY3k9IjQiIHI9IjEuNSIgZmlsbD0iIzE2QTM0QSIvPjxjaXJjbGUgY3g9IjEyIiBjeT0iNSIgcj0iMS41IiBmaWxsPSIjMTZBMzRBIi8+PGNpcmNsZSBjeD0iMTUiIGN5PSI2IiByPSIxLjUiIGZpbGw9IiMxNkEzNEEiLz48L3N2Zz4=`,\n\n // Potato\n potato: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTUgMTJDNSA4IDggNSAxMiA1QzE2IDUgMTkgOCAxOSAxMkMxOSAxNiAxNiAxOSAxMiAxOUM4IDE5IDUgMTYgNSAxMloiIGZpbGw9IiNEOTc3MDYiIHN0cm9rZT0iI0I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48Y2lyY2xlIGN4PSI5IiBjeT0iMTAiIHI9IjEiIGZpbGw9IiNCNDUzMDkiLz48Y2lyY2xlIGN4PSIxNCIgY3k9IjkiIHI9IjAuNzUiIGZpbGw9IiNCNDUzMDkiLz48Y2lyY2xlIGN4PSIxMSIgY3k9IjE0IiByPSIwLjc1IiBmaWxsPSIjQjQ1MzA5Ii8+PGNpcmNsZSBjeD0iMTYiIGN5PSIxMyIgcj0iMC41IiBmaWxsPSIjQjQ1MzA5Ii8+PHBhdGggZD0iTTggMTJDMTAgMTEgMTQgMTEgMTYgMTIiIHN0cm9rZT0iI0Y1OUUwQiIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=`,\n\n // Carrot\n carrot: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTEyIDZDMTAgNiA4IDggNyAxMUM2IDE0IDYgMTggOCAyMEwxMiAyMUwxNiAyMEMxOCAxOCAxOCAxNCAxNyAxMUMxNiA4IDE0IDYgMTIgNloiIGZpbGw9IiNGQjkyM0MiIHN0cm9rZT0iI0VBNTgwQyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBkPSJNMTAgM0MxMCAzIDkgNSAxMCA2TTEyIDJDMTIgMiAxMSA1IDEyIDZNMTQgM0MxNCAzIDE1IDUgMTQgNiIgc3Ryb2tlPSIjMjJDNTVFIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik05IDEyQzExIDExIDEzIDExIDE1IDEyIiBzdHJva2U9IiNGRUQ3QUEiIHN0cm9rZS13aWR0aD0iMSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTEwIDE2QzExIDE1IDEzIDE1IDE0IDE2IiBzdHJva2U9IiNGRUQ3QUEiIHN0cm9rZS13aWR0aD0iMSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+`,\n};\n\n// =============================================================================\n// INGREDIENT ICONS - Grains\n// =============================================================================\n\nexport const GRAIN_ICONS: Record<string, string> = {\n // White rice\n rice_white: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTFDNCAxMSA0IDE4IDEyIDE4QzIwIDE4IDIwIDExIDIwIDExSDRaIiBmaWxsPSIjRkZGRkZGIiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTTUgMThDNSAxOCA2IDIxIDEyIDIxQzE4IDIxIDE5IDE4IDE5IDE4IiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48ZWxsaXBzZSBjeD0iOCIgY3k9IjkiIHJ4PSIxLjUiIHJ5PSIxIiBmaWxsPSIjRkVGM0M3Ii8+PGVsbGlwc2UgY3g9IjEyIiBjeT0iOCIgcng9IjEuNSIgcnk9IjEiIGZpbGw9IiNGRUYzQzciLz48ZWxsaXBzZSBjeD0iMTYiIGN5PSI5IiByeD0iMS41IiByeT0iMSIgZmlsbD0iI0ZFRjNDNyIvPjxlbGxpcHNlIGN4PSIxMCIgY3k9IjExIiByeD0iMS41IiByeT0iMSIgZmlsbD0iI0ZFRjNDNyIvPjxlbGxpcHNlIGN4PSIxNCIgY3k9IjExIiByeD0iMS41IiByeT0iMSIgZmlsbD0iI0ZFRjNDNyIvPjwvc3ZnPg==`,\n\n // Pasta\n pasta: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTRDNSAxMSA4IDkgMTIgOUMxNiA5IDE5IDExIDIwIDE0IiBzdHJva2U9IiNGREU2OEEiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTYgMTdDNyAxNCA5IDEyIDEyIDEyQzE1IDEyIDE3IDE0IDE4IDE3IiBzdHJva2U9IiNGREU2OEEiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTggMjBDOSAxOCAxMCAxNiAxMiAxNkMxNCAxNiAxNSAxOCAxNiAyMCIgc3Ryb2tlPSIjRkRFNjhBIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik0zIDhDNCAxMCA2IDEyIDggMTJNMjEgOEMyMCAxMCAxOCAxMiAxNiAxMk0xMiA0VjkiIHN0cm9rZT0iI0Y1OUUwQiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=`,\n\n // Quinoa\n quinoa: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTFDNCAxMSA0IDE4IDEyIDE4QzIwIDE4IDIwIDExIDIwIDExSDRaIiBmaWxsPSIjRkZGRkZGIiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTTUgMThDNSAxOCA2IDIxIDEyIDIxQzE4IDIxIDE5IDE4IDE5IDE4IiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48Y2lyY2xlIGN4PSI3IiBjeT0iMTAiIHI9IjEiIGZpbGw9IiNGREU2OEEiLz48Y2lyY2xlIGN4PSIxMCIgY3k9IjkiIHI9IjEiIGZpbGw9IiNGRUY5QzMiLz48Y2lyY2xlIGN4PSIxMyIgY3k9IjgiIHI9IjEiIGZpbGw9IiNGREU2OEEiLz48Y2lyY2xlIGN4PSIxNiIgY3k9IjkiIHI9IjEiIGZpbGw9IiNGRUY5QzMiLz48Y2lyY2xlIGN4PSI4IiBjeT0iMTMiIHI9IjEiIGZpbGw9IiNGRUY5QzMiLz48Y2lyY2xlIGN4PSIxMiIgY3k9IjExIiByPSIxIiBmaWxsPSIjRkRFNjhBIi8+PGNpcmNsZSBjeD0iMTUiIGN5PSIxMiIgcj0iMSIgZmlsbD0iI0ZFRjlDMyIvPjwvc3ZnPg==`,\n};\n\n// =============================================================================\n// COMBINED INGREDIENT ICONS (for convenience)\n// =============================================================================\n\nexport const INGREDIENT_ICONS: Record<string, string> = {\n ...POULTRY_ICONS,\n ...BEEF_ICONS,\n ...SEAFOOD_ICONS,\n ...EGG_ICONS,\n ...VEGETABLE_ICONS,\n ...GRAIN_ICONS,\n};\n\n// =============================================================================\n// HELPER FUNCTION\n// =============================================================================\n\n/**\n * Get icon for a category or ingredient by ID\n * Falls back to category icon if no specific ingredient icon exists\n */\nexport const getIcon = (id: string, category?: string): string | undefined => {\n // Check for specific ingredient icon first\n if (INGREDIENT_ICONS[id]) {\n return INGREDIENT_ICONS[id];\n }\n\n // Fall back to category icon\n if (category && CATEGORY_ICONS[category]) {\n return CATEGORY_ICONS[category];\n }\n\n return undefined;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,IAAM,iBAAyC;AAAA;AAAA,EAEpD,SAAS;AAAA;AAAA,EAGT,MAAM;AAAA;AAAA,EAGN,MAAM;AAAA;AAAA,EAGN,cAAc;AAAA;AAAA,EAGd,mBAAmB;AAAA;AAAA,EAGnB,KAAK;AAAA;AAAA,EAGL,WAAW;AAAA;AAAA,EAGX,OAAO;AACT;AAMO,IAAM,gBAAwC;AAAA;AAAA,EAEnD,gBAAgB;AAAA;AAAA,EAGhB,eAAe;AAAA;AAAA,EAGf,eAAe;AAAA;AAAA,EAGf,eAAe;AACjB;AAMO,IAAM,aAAqC;AAAA;AAAA,EAEhD,mBAAmB;AAAA;AAAA,EAGnB,aAAa;AAAA;AAAA,EAGb,YAAY;AACd;AAMO,IAAM,gBAAwC;AAAA;AAAA,EAEnD,eAAe;AAAA;AAAA,EAGf,QAAQ;AAAA;AAAA,EAGR,YAAY;AAAA;AAAA,EAGZ,YAAY;AACd;AAMO,IAAM,YAAoC;AAAA;AAAA,EAE/C,WAAW;AAAA;AAAA,EAGX,YAAY;AAAA;AAAA,EAGZ,eAAe;AAAA;AAAA,EAGf,aAAa;AACf;AAMO,IAAM,kBAA0C;AAAA;AAAA,EAErD,UAAU;AAAA;AAAA,EAGV,WAAW;AAAA;AAAA,EAGX,QAAQ;AAAA;AAAA,EAGR,QAAQ;AACV;AAMO,IAAM,cAAsC;AAAA;AAAA,EAEjD,YAAY;AAAA;AAAA,EAGZ,OAAO;AAAA;AAAA,EAGP,QAAQ;AACV;AAMO,IAAM,mBAA2C;AAAA,EACtD,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AAUO,IAAM,UAAU,CAAC,IAAY,aAA0C;AAE5E,MAAI,iBAAiB,EAAE,GAAG;AACxB,WAAO,iBAAiB,EAAE;AAAA,EAC5B;AAGA,MAAI,YAAY,eAAe,QAAQ,GAAG;AACxC,WAAO,eAAe,QAAQ;AAAA,EAChC;AAEA,SAAO;AACT;","names":[]}