cooking-temperature 1.0.2 → 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 +296 -35
- package/dist/icons.d.mts +15 -0
- package/dist/icons.d.ts +15 -0
- package/dist/icons.js +137 -0
- package/dist/icons.js.map +1 -0
- package/dist/icons.mjs +104 -0
- package/dist/icons.mjs.map +1 -0
- package/dist/index.d.mts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +11 -11
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +11 -11
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -1
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:
|
|
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:
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
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
|
|
package/dist/icons.d.mts
ADDED
|
@@ -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.d.ts
ADDED
|
@@ -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":[]}
|