cooking-temperature 1.0.3 → 1.0.4

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/dist/icons.d.mts CHANGED
@@ -1,15 +1,5 @@
1
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
2
  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
3
  declare const getIcon: (id: string, category?: string) => string | undefined;
14
4
 
15
- export { BEEF_ICONS, CATEGORY_ICONS, EGG_ICONS, GRAIN_ICONS, INGREDIENT_ICONS, POULTRY_ICONS, SEAFOOD_ICONS, VEGETABLE_ICONS, getIcon };
5
+ export { CATEGORY_ICONS, INGREDIENT_ICONS, getIcon };
package/dist/icons.d.ts CHANGED
@@ -1,15 +1,5 @@
1
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
2
  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
3
  declare const getIcon: (id: string, category?: string) => string | undefined;
14
4
 
15
- export { BEEF_ICONS, CATEGORY_ICONS, EGG_ICONS, GRAIN_ICONS, INGREDIENT_ICONS, POULTRY_ICONS, SEAFOOD_ICONS, VEGETABLE_ICONS, getIcon };
5
+ export { CATEGORY_ICONS, INGREDIENT_ICONS, getIcon };
package/dist/icons.js CHANGED
@@ -20,98 +20,69 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // icons.ts
21
21
  var icons_exports = {};
22
22
  __export(icons_exports, {
23
- BEEF_ICONS: () => BEEF_ICONS,
24
23
  CATEGORY_ICONS: () => CATEGORY_ICONS,
25
- EGG_ICONS: () => EGG_ICONS,
26
- GRAIN_ICONS: () => GRAIN_ICONS,
27
24
  INGREDIENT_ICONS: () => INGREDIENT_ICONS,
28
- POULTRY_ICONS: () => POULTRY_ICONS,
29
- SEAFOOD_ICONS: () => SEAFOOD_ICONS,
30
- VEGETABLE_ICONS: () => VEGETABLE_ICONS,
31
25
  getIcon: () => getIcon
32
26
  });
33
27
  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+`
28
+ var toDataUrl = (svg) => {
29
+ const encoded = encodeURIComponent(svg).replace(/'/g, "%27").replace(/"/g, "%22");
30
+ return `data:image/svg+xml,${encoded}`;
79
31
  };
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==`
32
+ var SVG_POULTRY = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#C1694F" d="M30.326 14.24c-.279-4.063-4.016-7.592-8.396-7.931-4.38-.339-7.294 1.908-8.406 5.865-1.113 3.958 1.006 9.672 1.006 9.672l1.781 2.281 3.594 5.719 3 .281 2.219-1.562 3.344-4.281 1.5-1.75.358-8.294z"/><path fill="#E0A577" d="M26.639 12.178c-.224-3.25-3.213-6.074-6.717-6.345-3.504-.271-5.836 1.526-6.725 4.692-.889 3.166.805 7.738.805 7.738l1.425 1.825 2.875 4.575 2.4.225 1.775-1.25 2.675-3.425 1.2-1.4.287-6.635z"/><path fill="#C1694F" d="M11.069 18.063c-2.5-1.688-3.02-4.602-3.02-4.602s-.937-6.219-.479-8.732c.458-2.513 2.769-3.27 4.436-2.498 1.667.771 1.428 1.705 2.016 3.575.588 1.87.336 3.803 1.078 5.614.741 1.811 1.913 2.933 2.26 4.618.346 1.685-.33 3.327-2.372 3.806-2.041.478-3.919-1.781-3.919-1.781z"/><path fill="#E0A577" d="M12.298 16.537c-2-1.35-2.416-3.682-2.416-3.682s-.75-4.975-.383-6.986c.367-2.01 2.215-2.616 3.549-1.998 1.333.617 1.142 1.364 1.613 2.86.47 1.496.269 3.042.862 4.491.593 1.449 1.531 2.347 1.808 3.694.277 1.348-.264 2.662-1.898 3.045-1.633.383-3.135-1.424-3.135-1.424z"/><ellipse cx="17.952" cy="32.656" fill="#C1694F" rx="4.218" ry="1.594"/><path fill="#E0A577" d="M16.858 21.858s-.546 6.792-.179 8.75c.367 1.958 1 2.344 2.042 2.25 1.041-.094 1.291-1.125 1.375-2.417.083-1.292.125-8.333.125-8.333l-3.363-.25z"/></svg>`;
33
+ var SVG_BEEF = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#BE1931" d="M35.728 10.357c-2.267-5.266-6.9-8.628-12.102-9.472-1.249-.203-7.308-.937-13.081 2.279C5.058 6.641 1.353 11.785.16 20.074c-.591 4.108-.074 7.093 1.539 8.871 2.021 2.229 5.555 2.596 8.306 2.596.976 0 1.87-.052 2.58-.103 2.018-.149 8.741-1.043 14.396-4.636 5.575-3.543 9.989-10.38 8.747-16.445z"/><path fill="#DD2E44" d="M33.728 11.357c-1.983-4.608-6.037-7.549-10.59-8.29-1.093-.178-6.395-.82-11.446 1.994C6.801 7.936 3.558 12.437 2.513 19.69c-.518 3.595-.065 6.207 1.347 7.762 1.769 1.951 4.861 2.272 7.268 2.272.854 0 1.636-.046 2.257-.09 1.766-.131 7.649-.913 12.597-4.057 4.88-3.102 8.742-9.085 7.746-14.22z"/><path fill="#BE1931" d="M23.901 5.398c-1.093-.178-6.395-.82-11.446 1.994-.969.54-1.859 1.157-2.674 1.833 1.019-.397 2.149-.652 3.394-.652 5.237 0 9.891 3.618 10.909 8.707.324 1.62.283 3.219-.056 4.73 3.019-2.727 5.476-6.757 4.62-10.392-1.983-4.608-6.037-7.549-10.59-8.29.614.09 4.219.788 5.843 2.07z"/><ellipse cx="12.814" cy="15.785" fill="#F7DECE" rx="7.021" ry="5.404"/><ellipse cx="12.814" cy="15.785" fill="#BE1931" rx="3.298" ry="2.54"/></svg>`;
34
+ var SVG_PORK = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#C1694F" d="M31.29 13.214c-.483-4.839-5.274-8.944-10.761-9.221-5.487-.277-9.12 2.704-10.481 7.571-1.361 4.867.636 11.714 1.959 14.199 1.323 2.485 2.978 4.354 6.27 4.648 3.292.294 6.234-1.102 8.413-3.826 2.179-2.724 5.083-8.532 4.6-13.371z"/><path fill="#E0A577" d="M28.632 13.661c-.386-3.871-4.219-7.155-8.609-7.377-4.39-.222-7.296 2.163-8.385 6.057-1.089 3.894.509 9.371 1.567 11.359 1.058 1.988 2.382 3.483 5.016 3.718 2.634.235 4.987-.882 6.73-3.061 1.744-2.179 4.067-6.825 3.681-10.696z"/><path fill="#FFCC4D" d="M10.733 19.714c-1.128 1.332-4.012 4.523-5.345 5.618-1.333 1.095-3.857 2.857-3.857 4.762s1.524 3.619 3.619 3.619c2.095 0 3.583-1.179 4.917-2.333 1.333-1.155 4.379-4.446 5.065-5.422.686-.976 1.143-2.531.762-3.238-.381-.708-2.115-.746-3.219-.368-1.105.381-1.942-2.638-1.942-2.638z"/><path fill="#FFAC33" d="M5.482 31.003c-.073 0-.146-.022-.209-.067-.156-.111-.193-.328-.082-.484 1.04-1.459 3.113-4.063 3.134-4.09.117-.148.331-.177.483-.063.151.114.182.328.067.48-.021.027-2.089 2.625-3.125 4.078-.069.095-.176.146-.268.146zm1.729.814c-.073 0-.147-.022-.21-.068-.155-.111-.192-.328-.081-.484 1.373-1.928 3.076-4.138 3.093-4.161.115-.151.33-.181.482-.066.152.113.183.328.068.48-.017.023-1.716 2.228-3.084 4.148-.068.098-.175.151-.268.151zm1.787.664c-.073 0-.147-.022-.21-.068-.155-.111-.192-.328-.081-.484 1.398-1.961 2.869-3.931 2.884-3.951.114-.152.33-.184.482-.069.153.113.185.327.071.48-.015.02-1.482 1.984-2.877 3.941-.068.099-.175.151-.269.151z"/><ellipse cx="6.833" cy="32.524" fill="#FFCC4D" rx="2.667" ry="1.143"/></svg>`;
35
+ var SVG_FISH = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#55ACEE" d="M27 2s-5.958 3.75-8.031 5.469C14.865 11.057 8.503 18.839 5 23c-1.5 1-2.5 2.25-2.5 3.5 0 2.5 2.603 5.5 4.5 5.5 1.5 0 2.5-1 3.5-2.5 3.5-4.5 10.654-10.588 13.5-13.5C25.806 14.056 31 9 31 9l-4-7z"/><circle cx="9.5" cy="27.5" r="1.5" fill="#292F33"/><path fill="#3B88C3" d="M25 4s-4.958 3.75-7.031 5.469C13.865 13.057 8.503 19.839 5 24c-1.5 1-2.083 2.5-2.083 3.5 0 1.75 1.686 3.5 3.583 3.5 1.5 0 2.5-1 3.5-2.5 3.5-4.5 9.654-9.588 12.5-12.5C24.306 14.056 29 10 29 10l-4-6z"/><path fill="#55ACEE" d="M31 8s3 3.334 3 6c0 2.668-3 6-3 6l-2.667-5.333L31 8z"/><path fill="#3B88C3" d="M29 10s3 2.334 3 5c0 2.668-3 5-3 5l-2-4.5 2-5.5z"/></svg>`;
36
+ var SVG_SHRIMP = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F4900C" d="M26.688 9.812c-.271 2.917-1.167 8.146-4.792 11.771-2.917 2.917-8.771 3.125-12.708 3.125-1.549 0-2.912-.049-3.938-.106-1.958-.107-2.313-.707-2.188-1.914s1.538-.998 3.059-.871c.761.063 1.722.107 2.817.107 3.458 0 8.146-.438 10.146-2.438 2.833-2.833 3.563-6.563 3.813-8.938.188-1.792.854-1.917 1.604-1.646.75.272.395 1.91.187 2.91z"/><path fill="#FFCC4D" d="M10.376 15.098c-2.188.354-3.188.917-3.188 2.417 0 1.125.667 1.792 1.792 1.792 1.75 0 2.104-.771 2.104-1.917s-.708-2.292-.708-2.292z"/><path fill="#F4900C" d="M16.542 10.639c-4.25 0-5.917 2.042-6.875 4.5.084-.001.162-.014.25-.014 2.292 0 2.667 2.417 2.667 3.583 0 1.75-.854 3.167-3.292 3.167-1.708 0-3-1.104-3.145-2.958-.032.035-.065.065-.098.101-1.125 1.25-1.875 3.063-1.875 5.875 0 4.166 3.333 8.229 8.833 8.229s9.667-4.229 9.667-9.646c0-6.625-3.25-12.837-6.132-12.837z"/><circle cx="9.396" cy="27.441" r="1.25" fill="#662113"/><path fill="#FFCC4D" d="M15.5 25c-1.375 0-2.5 1.625-2.5 3.5 0 1.25.375 2.5 1.875 2.5 1.667 0 2.125-1.417 2.125-2.917 0-1.208-.125-3.083-1.5-3.083zm4-1c-1.125 0-2 1.542-2 3.25 0 1.083.333 2.25 1.625 2.25 1.375 0 1.875-1.208 1.875-2.583 0-1.084-.167-2.917-1.5-2.917z"/><path fill="#F4900C" d="M5.813 25.77c-.094-.178-.428-.188-.746-.022-.318.166-.479.452-.385.631l1.334 2.428c.081.155.327.187.599.095-.233-.497-1.026-1.995-.802-3.132z"/><path fill="#FFCC4D" d="M30.599 5.401c-.345.174-.525.513-.431.785.036.104.136.393-.212.938-.49.768-1.679 1.717-4.002 2.882-5.708 2.862-8.62.67-10.33-.776-.615-.52-1.084-1.059-1.462-1.55-.295-.384-.764-.389-1.047-.01-.283.378-.172.919.168 1.27l.022.023c.396.443.925.986 1.622 1.555 1.981 1.616 5.846 4.287 12.511.948 2.549-1.277 3.944-2.394 4.604-3.429.451-.708.554-1.378.343-1.988-.094-.272-.34-.361-.513-.361-.089 0-.175.021-.249.059-.355.179-.549.504-.479.784.054.217-.011.448-.234.668-.356.351-1.085.787-2.186 1.323-3.364 1.637-5.539 1.314-6.753.552-1.028-.646-1.424-1.558-1.425-1.56-.116-.266-.5-.361-.857-.212-.356.149-.54.484-.423.749l.001.002c.02.046.508 1.131 1.778 1.933 1.535.968 4.167 1.378 8.079-.527 1.212-.59 2.036-1.087 2.495-1.54.538-.531.659-1.102.529-1.574-.132-.476-.51-.818-.993-.818-.109 0-.221.019-.334.056z"/><ellipse cx="27.819" cy="2.692" fill="#FFCC4D" rx="2.413" ry="1.025" transform="rotate(-63.435 27.82 2.693)"/><ellipse cx="30.569" cy="4.067" fill="#FFCC4D" rx="2.413" ry="1.025" transform="rotate(-63.435 30.57 4.067)"/></svg>`;
37
+ var SVG_EGG = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#E1E8ED" d="M18 35c-7.732 0-14-4.701-14-10.5C4 14.603 11.268 1 18 1s14 13.603 14 23.5c0 5.799-6.268 10.5-14 10.5z"/><path fill="#CCD6DD" d="M18 33c-6.627 0-12-3.873-12-8.5C6 15.603 12.268 3 18 3s12 12.603 12 21.5c0 4.627-5.373 8.5-12 8.5z"/></svg>`;
38
+ var SVG_BROCCOLI = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#77B255" d="M22.453 35.564c-.315 0-.636-.08-.934-.251-5.281-3.029-5.792-10.958-5.813-11.294-.042-.679.474-1.263 1.152-1.305.683-.048 1.263.474 1.305 1.152.005.073.456 7.134 4.607 9.515.59.339.795 1.091.456 1.683-.227.396-.642.617-1.069.617-.001-.117-.296-.117-.704-.117z"/><path fill="#5C913B" d="M13.838 35.564c-.315 0-.636-.08-.934-.251-5.281-3.029-5.792-10.958-5.813-11.294-.042-.679.474-1.263 1.152-1.305.683-.048 1.263.474 1.305 1.152.005.073.456 7.134 4.607 9.515.59.339.795 1.091.456 1.683-.227.396-.642.617-1.069.617-.001-.117-.296-.117-.704-.117z"/><ellipse cx="20.285" cy="18.546" fill="#77B255" rx="5.701" ry="5.476"/><ellipse cx="8.073" cy="15.9" fill="#5C913B" rx="5.145" ry="4.943"/><circle cx="23.111" cy="9.561" r="5.588" fill="#77B255"/><ellipse cx="13.838" cy="7.589" fill="#5C913B" rx="4.866" ry="4.674"/><circle cx="17.236" cy="13.369" r="6.145" fill="#3E721D"/><circle cx="10.166" cy="9.561" r="4.588" fill="#77B255"/><circle cx="26.508" cy="14.571" r="4.588" fill="#5C913B"/><ellipse cx="20.285" cy="4.787" fill="#5C913B" rx="4.31" ry="4.141"/></svg>`;
39
+ var SVG_RICE = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#CCD6DD" d="M33 22H3c-1.657 0-3 1.343-3 3v6c0 1.657 1.343 3 3 3h30c1.657 0 3-1.343 3-3v-6c0-1.657-1.343-3-3-3z"/><path fill="#E1E8ED" d="M33 20H3c-1.657 0-3 1.343-3 3v6c0 1.657 1.343 3 3 3h30c1.657 0 3-1.343 3-3v-6c0-1.657-1.343-3-3-3z"/><path fill="#F5F8FA" d="M8 18c-.552 0-1-.447-1-1v-4c0-.553.448-1 1-1s1 .447 1 1v4c0 .553-.448 1-1 1zm4 0c-.552 0-1-.447-1-1v-5c0-.553.448-1 1-1s1 .447 1 1v5c0 .553-.448 1-1 1zm4-1c-.552 0-1-.447-1-1v-4c0-.553.448-1 1-1s1 .447 1 1v4c0 .553-.448 1-1 1zm4 0c-.552 0-1-.447-1-1v-5c0-.553.448-1 1-1s1 .447 1 1v5c0 .553-.448 1-1 1zm4 1c-.552 0-1-.447-1-1v-4c0-.553.448-1 1-1s1 .447 1 1v4c0 .553-.448 1-1 1zm4 0c-.552 0-1-.447-1-1v-5c0-.553.448-1 1-1s1 .447 1 1v5c0 .553-.448 1-1 1z"/></svg>`;
40
+ var SVG_FRIED_EGG = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#E1E8ED" d="M35 19.5c0 4.142-3.582 7.5-8 7.5-2.348 0-4.471-.939-6-2.452C19.471 26.061 17.348 27 15 27c-4.418 0-8-3.358-8-7.5 0-.646.087-1.271.248-1.865C4.414 17.047 2 14.552 2 11.5 2 8.186 4.833 5.5 8.333 5.5c.357 0 .707.027 1.05.078C10.66 3.398 12.928 2 15.5 2c2.572 0 4.84 1.398 6.117 3.578.343-.051.693-.078 1.05-.078C26.167 5.5 29 8.186 29 11.5c0 .985-.227 1.918-.631 2.757C32.159 14.676 35 16.799 35 19.5z"/><ellipse cx="15" cy="18" fill="#FFCC4D" rx="8" ry="7"/><ellipse cx="15" cy="17" fill="#FFE8B6" rx="4" ry="3.5"/></svg>`;
41
+ var CATEGORY_ICONS = {
42
+ poultry: toDataUrl(SVG_POULTRY),
43
+ beef: toDataUrl(SVG_BEEF),
44
+ pork: toDataUrl(SVG_PORK),
45
+ seafood_fish: toDataUrl(SVG_FISH),
46
+ seafood_shellfish: toDataUrl(SVG_SHRIMP),
47
+ egg: toDataUrl(SVG_EGG),
48
+ vegetable: toDataUrl(SVG_BROCCOLI),
49
+ grain: toDataUrl(SVG_RICE)
107
50
  };
108
51
  var INGREDIENT_ICONS = {
109
- ...POULTRY_ICONS,
110
- ...BEEF_ICONS,
111
- ...SEAFOOD_ICONS,
112
- ...EGG_ICONS,
113
- ...VEGETABLE_ICONS,
114
- ...GRAIN_ICONS
52
+ // Poultry
53
+ chicken_breast: toDataUrl(SVG_POULTRY),
54
+ chicken_breast_boneless: toDataUrl(SVG_POULTRY),
55
+ chicken_thigh_boneless: toDataUrl(SVG_POULTRY),
56
+ chicken_thigh: toDataUrl(SVG_POULTRY),
57
+ chicken_whole: toDataUrl(SVG_POULTRY),
58
+ turkey_breast: toDataUrl(SVG_POULTRY),
59
+ // Beef
60
+ beef_steak_ribeye: toDataUrl(SVG_BEEF),
61
+ beef_ground: toDataUrl(SVG_BEEF),
62
+ beef_roast: toDataUrl(SVG_BEEF),
63
+ // Pork
64
+ pork_chop: toDataUrl(SVG_PORK),
65
+ pork_tenderloin: toDataUrl(SVG_PORK),
66
+ pork_ribs: toDataUrl(SVG_PORK),
67
+ // Seafood
68
+ salmon_fillet: toDataUrl(SVG_FISH),
69
+ tuna_steak: toDataUrl(SVG_FISH),
70
+ cod_fillet: toDataUrl(SVG_FISH),
71
+ shrimp: toDataUrl(SVG_SHRIMP),
72
+ // Eggs
73
+ egg_fried: toDataUrl(SVG_FRIED_EGG),
74
+ egg_boiled: toDataUrl(SVG_EGG),
75
+ egg_scrambled: toDataUrl(SVG_FRIED_EGG),
76
+ egg_poached: toDataUrl(SVG_FRIED_EGG),
77
+ // Vegetables
78
+ broccoli: toDataUrl(SVG_BROCCOLI),
79
+ asparagus: toDataUrl(SVG_BROCCOLI),
80
+ potato: toDataUrl(SVG_BROCCOLI),
81
+ carrot: toDataUrl(SVG_BROCCOLI),
82
+ // Grains
83
+ rice_white: toDataUrl(SVG_RICE),
84
+ pasta: toDataUrl(SVG_RICE),
85
+ quinoa: toDataUrl(SVG_RICE)
115
86
  };
116
87
  var getIcon = (id, category) => {
117
88
  if (INGREDIENT_ICONS[id]) {
@@ -124,14 +95,8 @@ var getIcon = (id, category) => {
124
95
  };
125
96
  // Annotate the CommonJS export names for ESM import in node:
126
97
  0 && (module.exports = {
127
- BEEF_ICONS,
128
98
  CATEGORY_ICONS,
129
- EGG_ICONS,
130
- GRAIN_ICONS,
131
99
  INGREDIENT_ICONS,
132
- POULTRY_ICONS,
133
- SEAFOOD_ICONS,
134
- VEGETABLE_ICONS,
135
100
  getIcon
136
101
  });
137
102
  //# sourceMappingURL=icons.js.map
package/dist/icons.js.map CHANGED
@@ -1 +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":[]}
1
+ {"version":3,"sources":["../icons.ts"],"sourcesContent":["// High-quality flat-style food icons as data URLs\n// Consistent style, no external dependencies\n\n// Helper to encode SVG as data URL\nconst toDataUrl = (svg: string): string => {\n const encoded = encodeURIComponent(svg)\n .replace(/'/g, '%27')\n .replace(/\"/g, '%22');\n return `data:image/svg+xml,${encoded}`;\n};\n\n// =============================================================================\n// SVG DEFINITIONS\n// =============================================================================\n\nconst SVG_POULTRY = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 36 36\"><path fill=\"#C1694F\" d=\"M30.326 14.24c-.279-4.063-4.016-7.592-8.396-7.931-4.38-.339-7.294 1.908-8.406 5.865-1.113 3.958 1.006 9.672 1.006 9.672l1.781 2.281 3.594 5.719 3 .281 2.219-1.562 3.344-4.281 1.5-1.75.358-8.294z\"/><path fill=\"#E0A577\" d=\"M26.639 12.178c-.224-3.25-3.213-6.074-6.717-6.345-3.504-.271-5.836 1.526-6.725 4.692-.889 3.166.805 7.738.805 7.738l1.425 1.825 2.875 4.575 2.4.225 1.775-1.25 2.675-3.425 1.2-1.4.287-6.635z\"/><path fill=\"#C1694F\" d=\"M11.069 18.063c-2.5-1.688-3.02-4.602-3.02-4.602s-.937-6.219-.479-8.732c.458-2.513 2.769-3.27 4.436-2.498 1.667.771 1.428 1.705 2.016 3.575.588 1.87.336 3.803 1.078 5.614.741 1.811 1.913 2.933 2.26 4.618.346 1.685-.33 3.327-2.372 3.806-2.041.478-3.919-1.781-3.919-1.781z\"/><path fill=\"#E0A577\" d=\"M12.298 16.537c-2-1.35-2.416-3.682-2.416-3.682s-.75-4.975-.383-6.986c.367-2.01 2.215-2.616 3.549-1.998 1.333.617 1.142 1.364 1.613 2.86.47 1.496.269 3.042.862 4.491.593 1.449 1.531 2.347 1.808 3.694.277 1.348-.264 2.662-1.898 3.045-1.633.383-3.135-1.424-3.135-1.424z\"/><ellipse cx=\"17.952\" cy=\"32.656\" fill=\"#C1694F\" rx=\"4.218\" ry=\"1.594\"/><path fill=\"#E0A577\" d=\"M16.858 21.858s-.546 6.792-.179 8.75c.367 1.958 1 2.344 2.042 2.25 1.041-.094 1.291-1.125 1.375-2.417.083-1.292.125-8.333.125-8.333l-3.363-.25z\"/></svg>`;\n\nconst SVG_BEEF = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 36 36\"><path fill=\"#BE1931\" d=\"M35.728 10.357c-2.267-5.266-6.9-8.628-12.102-9.472-1.249-.203-7.308-.937-13.081 2.279C5.058 6.641 1.353 11.785.16 20.074c-.591 4.108-.074 7.093 1.539 8.871 2.021 2.229 5.555 2.596 8.306 2.596.976 0 1.87-.052 2.58-.103 2.018-.149 8.741-1.043 14.396-4.636 5.575-3.543 9.989-10.38 8.747-16.445z\"/><path fill=\"#DD2E44\" d=\"M33.728 11.357c-1.983-4.608-6.037-7.549-10.59-8.29-1.093-.178-6.395-.82-11.446 1.994C6.801 7.936 3.558 12.437 2.513 19.69c-.518 3.595-.065 6.207 1.347 7.762 1.769 1.951 4.861 2.272 7.268 2.272.854 0 1.636-.046 2.257-.09 1.766-.131 7.649-.913 12.597-4.057 4.88-3.102 8.742-9.085 7.746-14.22z\"/><path fill=\"#BE1931\" d=\"M23.901 5.398c-1.093-.178-6.395-.82-11.446 1.994-.969.54-1.859 1.157-2.674 1.833 1.019-.397 2.149-.652 3.394-.652 5.237 0 9.891 3.618 10.909 8.707.324 1.62.283 3.219-.056 4.73 3.019-2.727 5.476-6.757 4.62-10.392-1.983-4.608-6.037-7.549-10.59-8.29.614.09 4.219.788 5.843 2.07z\"/><ellipse cx=\"12.814\" cy=\"15.785\" fill=\"#F7DECE\" rx=\"7.021\" ry=\"5.404\"/><ellipse cx=\"12.814\" cy=\"15.785\" fill=\"#BE1931\" rx=\"3.298\" ry=\"2.54\"/></svg>`;\n\nconst SVG_PORK = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 36 36\"><path fill=\"#C1694F\" d=\"M31.29 13.214c-.483-4.839-5.274-8.944-10.761-9.221-5.487-.277-9.12 2.704-10.481 7.571-1.361 4.867.636 11.714 1.959 14.199 1.323 2.485 2.978 4.354 6.27 4.648 3.292.294 6.234-1.102 8.413-3.826 2.179-2.724 5.083-8.532 4.6-13.371z\"/><path fill=\"#E0A577\" d=\"M28.632 13.661c-.386-3.871-4.219-7.155-8.609-7.377-4.39-.222-7.296 2.163-8.385 6.057-1.089 3.894.509 9.371 1.567 11.359 1.058 1.988 2.382 3.483 5.016 3.718 2.634.235 4.987-.882 6.73-3.061 1.744-2.179 4.067-6.825 3.681-10.696z\"/><path fill=\"#FFCC4D\" d=\"M10.733 19.714c-1.128 1.332-4.012 4.523-5.345 5.618-1.333 1.095-3.857 2.857-3.857 4.762s1.524 3.619 3.619 3.619c2.095 0 3.583-1.179 4.917-2.333 1.333-1.155 4.379-4.446 5.065-5.422.686-.976 1.143-2.531.762-3.238-.381-.708-2.115-.746-3.219-.368-1.105.381-1.942-2.638-1.942-2.638z\"/><path fill=\"#FFAC33\" d=\"M5.482 31.003c-.073 0-.146-.022-.209-.067-.156-.111-.193-.328-.082-.484 1.04-1.459 3.113-4.063 3.134-4.09.117-.148.331-.177.483-.063.151.114.182.328.067.48-.021.027-2.089 2.625-3.125 4.078-.069.095-.176.146-.268.146zm1.729.814c-.073 0-.147-.022-.21-.068-.155-.111-.192-.328-.081-.484 1.373-1.928 3.076-4.138 3.093-4.161.115-.151.33-.181.482-.066.152.113.183.328.068.48-.017.023-1.716 2.228-3.084 4.148-.068.098-.175.151-.268.151zm1.787.664c-.073 0-.147-.022-.21-.068-.155-.111-.192-.328-.081-.484 1.398-1.961 2.869-3.931 2.884-3.951.114-.152.33-.184.482-.069.153.113.185.327.071.48-.015.02-1.482 1.984-2.877 3.941-.068.099-.175.151-.269.151z\"/><ellipse cx=\"6.833\" cy=\"32.524\" fill=\"#FFCC4D\" rx=\"2.667\" ry=\"1.143\"/></svg>`;\n\nconst SVG_FISH = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 36 36\"><path fill=\"#55ACEE\" d=\"M27 2s-5.958 3.75-8.031 5.469C14.865 11.057 8.503 18.839 5 23c-1.5 1-2.5 2.25-2.5 3.5 0 2.5 2.603 5.5 4.5 5.5 1.5 0 2.5-1 3.5-2.5 3.5-4.5 10.654-10.588 13.5-13.5C25.806 14.056 31 9 31 9l-4-7z\"/><circle cx=\"9.5\" cy=\"27.5\" r=\"1.5\" fill=\"#292F33\"/><path fill=\"#3B88C3\" d=\"M25 4s-4.958 3.75-7.031 5.469C13.865 13.057 8.503 19.839 5 24c-1.5 1-2.083 2.5-2.083 3.5 0 1.75 1.686 3.5 3.583 3.5 1.5 0 2.5-1 3.5-2.5 3.5-4.5 9.654-9.588 12.5-12.5C24.306 14.056 29 10 29 10l-4-6z\"/><path fill=\"#55ACEE\" d=\"M31 8s3 3.334 3 6c0 2.668-3 6-3 6l-2.667-5.333L31 8z\"/><path fill=\"#3B88C3\" d=\"M29 10s3 2.334 3 5c0 2.668-3 5-3 5l-2-4.5 2-5.5z\"/></svg>`;\n\nconst SVG_SHRIMP = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 36 36\"><path fill=\"#F4900C\" d=\"M26.688 9.812c-.271 2.917-1.167 8.146-4.792 11.771-2.917 2.917-8.771 3.125-12.708 3.125-1.549 0-2.912-.049-3.938-.106-1.958-.107-2.313-.707-2.188-1.914s1.538-.998 3.059-.871c.761.063 1.722.107 2.817.107 3.458 0 8.146-.438 10.146-2.438 2.833-2.833 3.563-6.563 3.813-8.938.188-1.792.854-1.917 1.604-1.646.75.272.395 1.91.187 2.91z\"/><path fill=\"#FFCC4D\" d=\"M10.376 15.098c-2.188.354-3.188.917-3.188 2.417 0 1.125.667 1.792 1.792 1.792 1.75 0 2.104-.771 2.104-1.917s-.708-2.292-.708-2.292z\"/><path fill=\"#F4900C\" d=\"M16.542 10.639c-4.25 0-5.917 2.042-6.875 4.5.084-.001.162-.014.25-.014 2.292 0 2.667 2.417 2.667 3.583 0 1.75-.854 3.167-3.292 3.167-1.708 0-3-1.104-3.145-2.958-.032.035-.065.065-.098.101-1.125 1.25-1.875 3.063-1.875 5.875 0 4.166 3.333 8.229 8.833 8.229s9.667-4.229 9.667-9.646c0-6.625-3.25-12.837-6.132-12.837z\"/><circle cx=\"9.396\" cy=\"27.441\" r=\"1.25\" fill=\"#662113\"/><path fill=\"#FFCC4D\" d=\"M15.5 25c-1.375 0-2.5 1.625-2.5 3.5 0 1.25.375 2.5 1.875 2.5 1.667 0 2.125-1.417 2.125-2.917 0-1.208-.125-3.083-1.5-3.083zm4-1c-1.125 0-2 1.542-2 3.25 0 1.083.333 2.25 1.625 2.25 1.375 0 1.875-1.208 1.875-2.583 0-1.084-.167-2.917-1.5-2.917z\"/><path fill=\"#F4900C\" d=\"M5.813 25.77c-.094-.178-.428-.188-.746-.022-.318.166-.479.452-.385.631l1.334 2.428c.081.155.327.187.599.095-.233-.497-1.026-1.995-.802-3.132z\"/><path fill=\"#FFCC4D\" d=\"M30.599 5.401c-.345.174-.525.513-.431.785.036.104.136.393-.212.938-.49.768-1.679 1.717-4.002 2.882-5.708 2.862-8.62.67-10.33-.776-.615-.52-1.084-1.059-1.462-1.55-.295-.384-.764-.389-1.047-.01-.283.378-.172.919.168 1.27l.022.023c.396.443.925.986 1.622 1.555 1.981 1.616 5.846 4.287 12.511.948 2.549-1.277 3.944-2.394 4.604-3.429.451-.708.554-1.378.343-1.988-.094-.272-.34-.361-.513-.361-.089 0-.175.021-.249.059-.355.179-.549.504-.479.784.054.217-.011.448-.234.668-.356.351-1.085.787-2.186 1.323-3.364 1.637-5.539 1.314-6.753.552-1.028-.646-1.424-1.558-1.425-1.56-.116-.266-.5-.361-.857-.212-.356.149-.54.484-.423.749l.001.002c.02.046.508 1.131 1.778 1.933 1.535.968 4.167 1.378 8.079-.527 1.212-.59 2.036-1.087 2.495-1.54.538-.531.659-1.102.529-1.574-.132-.476-.51-.818-.993-.818-.109 0-.221.019-.334.056z\"/><ellipse cx=\"27.819\" cy=\"2.692\" fill=\"#FFCC4D\" rx=\"2.413\" ry=\"1.025\" transform=\"rotate(-63.435 27.82 2.693)\"/><ellipse cx=\"30.569\" cy=\"4.067\" fill=\"#FFCC4D\" rx=\"2.413\" ry=\"1.025\" transform=\"rotate(-63.435 30.57 4.067)\"/></svg>`;\n\nconst SVG_EGG = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 36 36\"><path fill=\"#E1E8ED\" d=\"M18 35c-7.732 0-14-4.701-14-10.5C4 14.603 11.268 1 18 1s14 13.603 14 23.5c0 5.799-6.268 10.5-14 10.5z\"/><path fill=\"#CCD6DD\" d=\"M18 33c-6.627 0-12-3.873-12-8.5C6 15.603 12.268 3 18 3s12 12.603 12 21.5c0 4.627-5.373 8.5-12 8.5z\"/></svg>`;\n\nconst SVG_BROCCOLI = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 36 36\"><path fill=\"#77B255\" d=\"M22.453 35.564c-.315 0-.636-.08-.934-.251-5.281-3.029-5.792-10.958-5.813-11.294-.042-.679.474-1.263 1.152-1.305.683-.048 1.263.474 1.305 1.152.005.073.456 7.134 4.607 9.515.59.339.795 1.091.456 1.683-.227.396-.642.617-1.069.617-.001-.117-.296-.117-.704-.117z\"/><path fill=\"#5C913B\" d=\"M13.838 35.564c-.315 0-.636-.08-.934-.251-5.281-3.029-5.792-10.958-5.813-11.294-.042-.679.474-1.263 1.152-1.305.683-.048 1.263.474 1.305 1.152.005.073.456 7.134 4.607 9.515.59.339.795 1.091.456 1.683-.227.396-.642.617-1.069.617-.001-.117-.296-.117-.704-.117z\"/><ellipse cx=\"20.285\" cy=\"18.546\" fill=\"#77B255\" rx=\"5.701\" ry=\"5.476\"/><ellipse cx=\"8.073\" cy=\"15.9\" fill=\"#5C913B\" rx=\"5.145\" ry=\"4.943\"/><circle cx=\"23.111\" cy=\"9.561\" r=\"5.588\" fill=\"#77B255\"/><ellipse cx=\"13.838\" cy=\"7.589\" fill=\"#5C913B\" rx=\"4.866\" ry=\"4.674\"/><circle cx=\"17.236\" cy=\"13.369\" r=\"6.145\" fill=\"#3E721D\"/><circle cx=\"10.166\" cy=\"9.561\" r=\"4.588\" fill=\"#77B255\"/><circle cx=\"26.508\" cy=\"14.571\" r=\"4.588\" fill=\"#5C913B\"/><ellipse cx=\"20.285\" cy=\"4.787\" fill=\"#5C913B\" rx=\"4.31\" ry=\"4.141\"/></svg>`;\n\nconst SVG_RICE = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 36 36\"><path fill=\"#CCD6DD\" d=\"M33 22H3c-1.657 0-3 1.343-3 3v6c0 1.657 1.343 3 3 3h30c1.657 0 3-1.343 3-3v-6c0-1.657-1.343-3-3-3z\"/><path fill=\"#E1E8ED\" d=\"M33 20H3c-1.657 0-3 1.343-3 3v6c0 1.657 1.343 3 3 3h30c1.657 0 3-1.343 3-3v-6c0-1.657-1.343-3-3-3z\"/><path fill=\"#F5F8FA\" d=\"M8 18c-.552 0-1-.447-1-1v-4c0-.553.448-1 1-1s1 .447 1 1v4c0 .553-.448 1-1 1zm4 0c-.552 0-1-.447-1-1v-5c0-.553.448-1 1-1s1 .447 1 1v5c0 .553-.448 1-1 1zm4-1c-.552 0-1-.447-1-1v-4c0-.553.448-1 1-1s1 .447 1 1v4c0 .553-.448 1-1 1zm4 0c-.552 0-1-.447-1-1v-5c0-.553.448-1 1-1s1 .447 1 1v5c0 .553-.448 1-1 1zm4 1c-.552 0-1-.447-1-1v-4c0-.553.448-1 1-1s1 .447 1 1v4c0 .553-.448 1-1 1zm4 0c-.552 0-1-.447-1-1v-5c0-.553.448-1 1-1s1 .447 1 1v5c0 .553-.448 1-1 1z\"/></svg>`;\n\nconst SVG_FRIED_EGG = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 36 36\"><path fill=\"#E1E8ED\" d=\"M35 19.5c0 4.142-3.582 7.5-8 7.5-2.348 0-4.471-.939-6-2.452C19.471 26.061 17.348 27 15 27c-4.418 0-8-3.358-8-7.5 0-.646.087-1.271.248-1.865C4.414 17.047 2 14.552 2 11.5 2 8.186 4.833 5.5 8.333 5.5c.357 0 .707.027 1.05.078C10.66 3.398 12.928 2 15.5 2c2.572 0 4.84 1.398 6.117 3.578.343-.051.693-.078 1.05-.078C26.167 5.5 29 8.186 29 11.5c0 .985-.227 1.918-.631 2.757C32.159 14.676 35 16.799 35 19.5z\"/><ellipse cx=\"15\" cy=\"18\" fill=\"#FFCC4D\" rx=\"8\" ry=\"7\"/><ellipse cx=\"15\" cy=\"17\" fill=\"#FFE8B6\" rx=\"4\" ry=\"3.5\"/></svg>`;\n\n// =============================================================================\n// CATEGORY ICONS\n// =============================================================================\n\nexport const CATEGORY_ICONS: Record<string, string> = {\n poultry: toDataUrl(SVG_POULTRY),\n beef: toDataUrl(SVG_BEEF),\n pork: toDataUrl(SVG_PORK),\n seafood_fish: toDataUrl(SVG_FISH),\n seafood_shellfish: toDataUrl(SVG_SHRIMP),\n egg: toDataUrl(SVG_EGG),\n vegetable: toDataUrl(SVG_BROCCOLI),\n grain: toDataUrl(SVG_RICE),\n};\n\n// =============================================================================\n// INGREDIENT ICONS\n// =============================================================================\n\nexport const INGREDIENT_ICONS: Record<string, string> = {\n // Poultry\n chicken_breast: toDataUrl(SVG_POULTRY),\n chicken_breast_boneless: toDataUrl(SVG_POULTRY),\n chicken_thigh_boneless: toDataUrl(SVG_POULTRY),\n chicken_thigh: toDataUrl(SVG_POULTRY),\n chicken_whole: toDataUrl(SVG_POULTRY),\n turkey_breast: toDataUrl(SVG_POULTRY),\n\n // Beef\n beef_steak_ribeye: toDataUrl(SVG_BEEF),\n beef_ground: toDataUrl(SVG_BEEF),\n beef_roast: toDataUrl(SVG_BEEF),\n\n // Pork\n pork_chop: toDataUrl(SVG_PORK),\n pork_tenderloin: toDataUrl(SVG_PORK),\n pork_ribs: toDataUrl(SVG_PORK),\n\n // Seafood\n salmon_fillet: toDataUrl(SVG_FISH),\n tuna_steak: toDataUrl(SVG_FISH),\n cod_fillet: toDataUrl(SVG_FISH),\n shrimp: toDataUrl(SVG_SHRIMP),\n\n // Eggs\n egg_fried: toDataUrl(SVG_FRIED_EGG),\n egg_boiled: toDataUrl(SVG_EGG),\n egg_scrambled: toDataUrl(SVG_FRIED_EGG),\n egg_poached: toDataUrl(SVG_FRIED_EGG),\n\n // Vegetables\n broccoli: toDataUrl(SVG_BROCCOLI),\n asparagus: toDataUrl(SVG_BROCCOLI),\n potato: toDataUrl(SVG_BROCCOLI),\n carrot: toDataUrl(SVG_BROCCOLI),\n\n // Grains\n rice_white: toDataUrl(SVG_RICE),\n pasta: toDataUrl(SVG_RICE),\n quinoa: toDataUrl(SVG_RICE),\n};\n\n// =============================================================================\n// HELPER\n// =============================================================================\n\nexport const getIcon = (id: string, category?: string): string | undefined => {\n if (INGREDIENT_ICONS[id]) {\n return INGREDIENT_ICONS[id];\n }\n if (category && CATEGORY_ICONS[category]) {\n return CATEGORY_ICONS[category];\n }\n return undefined;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,IAAM,YAAY,CAAC,QAAwB;AACzC,QAAM,UAAU,mBAAmB,GAAG,EACnC,QAAQ,MAAM,KAAK,EACnB,QAAQ,MAAM,KAAK;AACtB,SAAO,sBAAsB,OAAO;AACtC;AAMA,IAAM,cAAc;AAEpB,IAAM,WAAW;AAEjB,IAAM,WAAW;AAEjB,IAAM,WAAW;AAEjB,IAAM,aAAa;AAEnB,IAAM,UAAU;AAEhB,IAAM,eAAe;AAErB,IAAM,WAAW;AAEjB,IAAM,gBAAgB;AAMf,IAAM,iBAAyC;AAAA,EACpD,SAAS,UAAU,WAAW;AAAA,EAC9B,MAAM,UAAU,QAAQ;AAAA,EACxB,MAAM,UAAU,QAAQ;AAAA,EACxB,cAAc,UAAU,QAAQ;AAAA,EAChC,mBAAmB,UAAU,UAAU;AAAA,EACvC,KAAK,UAAU,OAAO;AAAA,EACtB,WAAW,UAAU,YAAY;AAAA,EACjC,OAAO,UAAU,QAAQ;AAC3B;AAMO,IAAM,mBAA2C;AAAA;AAAA,EAEtD,gBAAgB,UAAU,WAAW;AAAA,EACrC,yBAAyB,UAAU,WAAW;AAAA,EAC9C,wBAAwB,UAAU,WAAW;AAAA,EAC7C,eAAe,UAAU,WAAW;AAAA,EACpC,eAAe,UAAU,WAAW;AAAA,EACpC,eAAe,UAAU,WAAW;AAAA;AAAA,EAGpC,mBAAmB,UAAU,QAAQ;AAAA,EACrC,aAAa,UAAU,QAAQ;AAAA,EAC/B,YAAY,UAAU,QAAQ;AAAA;AAAA,EAG9B,WAAW,UAAU,QAAQ;AAAA,EAC7B,iBAAiB,UAAU,QAAQ;AAAA,EACnC,WAAW,UAAU,QAAQ;AAAA;AAAA,EAG7B,eAAe,UAAU,QAAQ;AAAA,EACjC,YAAY,UAAU,QAAQ;AAAA,EAC9B,YAAY,UAAU,QAAQ;AAAA,EAC9B,QAAQ,UAAU,UAAU;AAAA;AAAA,EAG5B,WAAW,UAAU,aAAa;AAAA,EAClC,YAAY,UAAU,OAAO;AAAA,EAC7B,eAAe,UAAU,aAAa;AAAA,EACtC,aAAa,UAAU,aAAa;AAAA;AAAA,EAGpC,UAAU,UAAU,YAAY;AAAA,EAChC,WAAW,UAAU,YAAY;AAAA,EACjC,QAAQ,UAAU,YAAY;AAAA,EAC9B,QAAQ,UAAU,YAAY;AAAA;AAAA,EAG9B,YAAY,UAAU,QAAQ;AAAA,EAC9B,OAAO,UAAU,QAAQ;AAAA,EACzB,QAAQ,UAAU,QAAQ;AAC5B;AAMO,IAAM,UAAU,CAAC,IAAY,aAA0C;AAC5E,MAAI,iBAAiB,EAAE,GAAG;AACxB,WAAO,iBAAiB,EAAE;AAAA,EAC5B;AACA,MAAI,YAAY,eAAe,QAAQ,GAAG;AACxC,WAAO,eAAe,QAAQ;AAAA,EAChC;AACA,SAAO;AACT;","names":[]}
package/dist/icons.mjs CHANGED
@@ -1,85 +1,62 @@
1
1
  // icons.ts
2
- var CATEGORY_ICONS = {
3
- // Poultry - Chicken drumstick
4
- poultry: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTE1LjUgM0MxMy4wMSAzIDExIDUuMDEgMTEgNy41QzExIDguMjcgMTEuMTkgOS4wMSAxMS41MyA5LjY1TDMuNSAxNy42OEMzLjE4IDE4IDMgMTguNDMgMyAxOC44OEMzIDE5LjgxIDMuNzQgMjAuNjQgNC42NyAyMC45MUM1LjA4IDIxLjAzIDUuNTMgMjEgNS45IDIwLjgyTDYuNSAyMC41TDcuNDQgMjEuMzFDNy43OCAyMS42IDguMjMgMjEuNzUgOC42OSAyMS43NUM5LjQgMjEuNzUgMTAuMDUgMjEuNDIgMTAuNDUgMjAuODhMMTEgMjAuMTNMMTEuNTUgMjAuODhDMTEuOTUgMjEuNDIgMTIuNiAyMS43NSAxMy4zMSAyMS43NUMxMy43NyAyMS43NSAxNC4yMiAyMS42IDE0LjU2IDIxLjMxTDE1LjUgMjAuNUwxNi4xIDIwLjgyQzE2LjQ3IDIxIDE2LjkyIDIxLjAzIDE3LjMzIDIwLjkxQzE4LjI2IDIwLjY0IDE5IDE5LjgxIDE5IDE4Ljg4QzE5IDE4LjQzIDE4LjgyIDE4IDE4LjUgMTcuNjhMMTQuMzUgMTMuNTNDMTQuOTkgMTMuMTkgMTUuNzMgMTMgMTYuNSAxM0MxOC45OSAxMyAyMSAxMC45OSAyMSA4LjVDMjEgNi4wMSAxOC45OSA0IDE2LjUgNEMxNi4xNyA0IDE1LjgzIDQuMDMgMTUuNSA0LjFWM1oiIGZpbGw9IiNGNTlFMEIiLz48cGF0aCBkPSJNMTYuNSA1QzE4LjQzIDUgMjAgNi41NyAyMCA4LjVDMjAgMTAuNDMgMTguNDMgMTIgMTYuNSAxMkMxNS4zNiAxMiAxNC4zMyAxMS40OCAxMy42MiAxMC42N0wxMy4yOCAxMC4yOEwxMi45MyA5Ljg0QzEyLjM0IDkuMDMgMTIgOC4wMyAxMiA3QzEyIDUuMDcgMTMuNTcgMy41IDE1LjUgMy41VjUuNUMxNC42OCA1LjUgMTQgNi4xOCAxNCA3QzE0IDcuNTYgMTQuMTkgOC4wOCAxNC41MSA4LjQ5TDE0Ljg2IDguOTNMMTUuMjEgOS4zMkMxNS42NSA5Ljc1IDE2LjA1IDEwIDE2LjUgMTBDMTcuMzMgMTAgMTggOS4zMyAxOCA4LjVDMTggNy42NyAxNy4zMyA3IDE2LjUgN1Y1WiIgZmlsbD0iI0Q5NzcwNiIvPjwvc3ZnPg==`,
5
- // Beef - Steak cut
6
- beef: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTIwLjUgNkMxOS4xIDMuOCAxNi4xIDIuNSAxMi41IDIuNUM3LjUgMi41IDMuNSA1LjUgMy41IDlDMy41IDEwLjggNC4zIDEyLjQgNS43IDE0TDQgMTguNUM0IDE5LjUgNS41IDIxIDcuNSAyMUM4LjIgMjEgOC44IDIwLjggOS41IDIwLjNMMTIgMThMMTQuNSAyMC4zQzE1LjIgMjAuOCAxNS44IDIxIDE2LjUgMjFDMTguNSAyMSAyMCAxOS41IDIwIDE4LjVMMTguMyAxNEMxOS43IDEyLjQgMjAuNSAxMC44IDIwLjUgOVY2WiIgZmlsbD0iI0VGNDQ0NCIvPjxwYXRoIGQ9Ik0xNy41IDlDMTcuNSAxMC45IDE1LjQgMTIuNSAxMi41IDEyLjVDOS42IDEyLjUgNy41IDEwLjkgNy41IDlDNy41IDcuMSA5LjYgNS41IDEyLjUgNS41QzE1LjQgNS41IDE3LjUgNy4xIDE3LjUgOVoiIGZpbGw9IiNGQ0EwQTAiLz48cGF0aCBkPSJNMTQgOEMxNCA4LjggMTMuMyA5LjUgMTIuNSA5LjVDMTEuNyA5LjUgMTEgOC44IDExIDhDMTEgNy4yIDExLjcgNi41IDEyLjUgNi41QzEzLjMgNi41IDE0IDcuMiAxNCA4WiIgZmlsbD0iI0ZFRTJFMiIvPjwvc3ZnPg==`,
7
- // Pork - Pork chop/meat on bone
8
- pork: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTBDNCAxNC40IDcuNiAxOCAxMiAxOEMxNi40IDE4IDIwIDE0LjQgMjAgMTBDMjAgNy45IDE5LjIgNiAxNy44IDQuNkMxNi44IDMuNiAxNS41IDMgMTQgM0gxMEM4LjUgMyA3LjIgMy42IDYuMiA0LjZDNC44IDYgNCAxLjkgNCAxMFoiIGZpbGw9IiNGQkI0QjQiLz48cGF0aCBkPSJNMTIgMThWMjFNMTIgMjFIOE0xMiAyMUgxNiIgc3Ryb2tlPSIjRkVFMkUyIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik04IDlDOCAxMC43IDkuMyAxMiAxMSAxMiIgc3Ryb2tlPSIjRkRFNjhBIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik03IDVDNi41IDYgNi41IDcgNyA4IiBzdHJva2U9IiNFRjQ0NDQiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNMTcgNUMxNy41IDYgMTcuNSA3IDE3IDgiIHN0cm9rZT0iI0VGNDQ0NCIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==`,
9
- // Seafood Fish - Fish
10
- seafood_fish: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTIyIDEyQzIyIDEyIDE5IDE3IDE0IDE3QzEyIDE3IDEwLjUgMTYuNSA5LjUgMTZMNiAyMFY0TDkuNSA4QzEwLjUgNy41IDEyIDcgMTQgN0MxOSA3IDIyIDEyIDIyIDEyWiIgZmlsbD0iIzYwQTVGQSIvPjxjaXJjbGUgY3g9IjE2IiBjeT0iMTEiIHI9IjEuNSIgZmlsbD0iIzFGMjkzNyIvPjxjaXJjbGUgY3g9IjE2LjMiIGN5PSIxMC43IiByPSIwLjUiIGZpbGw9IiNGRkZGRkYiLz48cGF0aCBkPSJNMTQgMTJDMTQgMTIgMTIgMTMgMTAuNSAxM0M5IDEzIDguNSAxMi41IDguNSAxMkM4LjUgMTEuNSA5IDExIDEwLjUgMTFDMTIgMTEgMTQgMTIgMTQgMTJaIiBmaWxsPSIjOTNDNUZEIi8+PHBhdGggZD0iTTYgNEwzIDFNNiAyMEwzIDIzIiBzdHJva2U9IiMzQjgyRjYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+`,
11
- // Seafood Shellfish - Shrimp
12
- seafood_shellfish: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTE5IDdDMTkgNyAxOCA0IDE0IDRDMTAgNCAxMCA3IDEwIDdDMTAgNyA4IDggNyAxMEM2IDEyIDYgMTQgNyAxNkM4IDE4IDEwIDE5IDEyIDE5QzE0IDE5IDE1IDE4IDE2IDE3TDE4IDE5TDIwIDE3TDE4IDE1QzE5IDE0IDIwIDEyIDIwIDEwQzIwIDggMTkgNyAxOSA3WiIgZmlsbD0iI0ZCQjRCNCIvPjxwYXRoIGQ9Ik0xMyA4QzE0LjEgOCAxNSA4LjkgMTUgMTBDMTUgMTEuMSAxNC4xIDEyIDEzIDEyQzExLjkgMTIgMTEgMTEuMSAxMSAxMEMxMSA4LjkgMTEuOSA4IDEzIDhaIiBmaWxsPSIjRkVFMkUyIi8+PHBhdGggZD0iTTE1IDRDMTUgNCAxNiAyIDE4IDJNMTMgNEMxMyA0IDEzIDIgMTEgMiIgc3Ryb2tlPSIjRjg3MTcxIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PGNpcmNsZSBjeD0iMTUiIGN5PSIxMCIgcj0iMSIgZmlsbD0iIzFGMjkzNyIvPjwvc3ZnPg==`,
13
- // Egg
14
- egg: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTEyIDNDOCAzIDUgOC41IDUgMTNDNSAxNy41IDguMSAyMSAxMiAyMUMxNS45IDIxIDE5IDE3LjUgMTkgMTNDMTkgOC41IDE2IDMgMTIgM1oiIGZpbGw9IiNGRUY5QzMiIHN0cm9rZT0iI0ZERTY4QSIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48ZWxsaXBzZSBjeD0iMTIiIGN5PSIxMyIgcng9IjUiIHJ5PSI0IiBmaWxsPSIjRkJCRjI0Ii8+PGVsbGlwc2UgY3g9IjEyIiBjeT0iMTMiIHJ4PSIzIiByeT0iMi41IiBmaWxsPSIjRjU5RTBCIi8+PHBhdGggZD0iTTEwIDEyQzEwLjUgMTEuNSAxMS41IDExLjUgMTIgMTIiIHN0cm9rZT0iI0ZFRjlDMyIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=`,
15
- // Vegetable - Broccoli
16
- vegetable: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTEyIDIxVjE0IiBzdHJva2U9IiM2NUExNDUiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTkgMjFWMTYiIHN0cm9rZT0iIzY1QTE0NSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNMTUgMjFWMTYiIHN0cm9rZT0iIzY1QTE0NSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48Y2lyY2xlIGN4PSI4IiBjeT0iOCIgcj0iNCIgZmlsbD0iIzIyQzU1RSIvPjxjaXJjbGUgY3g9IjE2IiBjeT0iOCIgcj0iNCIgZmlsbD0iIzIyQzU1RSIvPjxjaXJjbGUgY3g9IjEyIiBjeT0iNSIgcj0iNCIgZmlsbD0iIzIyQzU1RSIvPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTAiIHI9IjQiIGZpbGw9IiMyMkM1NUUiLz48Y2lyY2xlIGN4PSI2IiBjeT0iMTEiIHI9IjIuNSIgZmlsbD0iIzE2QTM0QSIvPjxjaXJjbGUgY3g9IjE4IiBjeT0iMTEiIHI9IjIuNSIgZmlsbD0iIzE2QTM0QSIvPjxjaXJjbGUgY3g9IjkiIGN5PSI2IiByPSIyIiBmaWxsPSIjNEFERTgwIi8+PGNpcmNsZSBjeD0iMTQiIGN5PSI4IiByPSIxLjUiIGZpbGw9IiM0QURFODAiLz48L3N2Zz4=`,
17
- // Grain - Rice bowl
18
- grain: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTFDNCAxMSA0IDE4IDEyIDE4QzIwIDE4IDIwIDExIDIwIDExSDRaIiBmaWxsPSIjRkZGRkZGIiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTTUgMThDNSAxOCA2IDIxIDEyIDIxQzE4IDIxIDE5IDE4IDE5IDE4IiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48ZWxsaXBzZSBjeD0iOCIgY3k9IjkiIHJ4PSIxLjUiIHJ5PSIxIiBmaWxsPSIjRkVGM0M3Ii8+PGVsbGlwc2UgY3g9IjEyIiBjeT0iOCIgcng9IjEuNSIgcnk9IjEiIGZpbGw9IiNGRUYzQzciLz48ZWxsaXBzZSBjeD0iMTYiIGN5PSI5IiByeD0iMS41IiByeT0iMSIgZmlsbD0iI0ZFRjNDNyIvPjxlbGxpcHNlIGN4PSIxMCIgY3k9IjExIiByeD0iMS41IiByeT0iMSIgZmlsbD0iI0ZFRjNDNyIvPjxlbGxpcHNlIGN4PSIxNCIgY3k9IjExIiByeD0iMS41IiByeT0iMSIgZmlsbD0iI0ZFRjNDNyIvPjxlbGxpcHNlIGN4PSI3IiBjeT0iMTIiIHJ4PSIxIiByeT0iMC43NSIgZmlsbD0iI0ZFRjNDNyIvPjxlbGxpcHNlIGN4PSIxNyIgY3k9IjEyIiByeD0iMSIgcnk9IjAuNzUiIGZpbGw9IiNGRUYzQzciLz48L3N2Zz4=`
19
- };
20
- var POULTRY_ICONS = {
21
- // Chicken breast
22
- chicken_breast: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTUgOEM1IDUgOCAzIDEyIDNDMTYgMyAxOSA1IDE5IDhDMTkgMTEgMTggMTUgMTcgMTdDMTYgMTkgMTQgMjAgMTIgMjBDMTAgMjAgOCAxOSA3IDE3QzYgMTUgNSAxMSA1IDhaIiBmaWxsPSIjRkRFNjhBIiBzdHJva2U9IiNGNTlFMEIiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTTggOEMxMCA3IDE0IDcgMTYgOCIgc3Ryb2tlPSIjRjU5RTBCIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik05IDEyQzEwIDExIDE0IDExIDE1IDEyIiBzdHJva2U9IiNGNTlFMEIiIHN0cm9rZS13aWR0aD0iMSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+`,
23
- // Chicken thigh
24
- chicken_thigh: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTE2IDRDMTQgMyAxMCAzIDggNEM2IDUgNCAxMCA1IDE0QzYgMTggOCAyMCAxMSAyMEwxMiAxOEwxNCAxNUMxNiAxMiAxOCA4IDE4IDZDMTggNSAxNyA0IDE2IDRaIiBmaWxsPSIjRkRFNjhBIiBzdHJva2U9IiNGNTlFMEIiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTTExIDIwTDEwIDIySDgiIHN0cm9rZT0iI0Q5NzcwNiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNNyA5QzkgOCAxMiA4IDE0IDkiIHN0cm9rZT0iI0Y1OUUwQiIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=`,
25
- // Whole chicken
26
- whole_chicken: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTEyIDJDOCAyIDQgNiA0IDExQzQgMTQgNSAxNyA3IDE5TDYgMjFIOEwxMCAxOUgxNEwxNiAyMUgxOEwxNyAxOUMxOSAxNyAyMCAxNCAyMCAxMUMyMCA2IDE2IDIgMTIgMloiIGZpbGw9IiNGREU2OEEiIHN0cm9rZT0iI0Y1OUUwQiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBkPSJNOCA5QzEwIDggMTQgOCAxNiA5IiBzdHJva2U9IiNGNTlFMEIiIHN0cm9rZS13aWR0aD0iMSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTkgMTNDMTEgMTIgMTMgMTIgMTUgMTMiIHN0cm9rZT0iI0Y1OUUwQiIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48Y2lyY2xlIGN4PSI5IiBjeT0iNyIgcj0iMSIgZmlsbD0iI0Q5NzcwNiIvPjxjaXJjbGUgY3g9IjE1IiBjeT0iNyIgcj0iMSIgZmlsbD0iI0Q5NzcwNiIvPjwvc3ZnPg==`,
27
- // Turkey breast
28
- turkey_breast: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgOUM0IDUgNyAyIDEyIDJDMTcgMiAyMCA1IDIwIDlDMjAgMTMgMTggMTggMTYgMjBMMTQgMjFIMTBMOCAyMEM2IDE4IDQgMTMgNCA5WiIgZmlsbD0iI0ZCQjRCNCIgc3Ryb2tlPSIjRjg3MTcxIiBzdHJva2Utd2lkdGg9IjEuNSIvPjxwYXRoIGQ9Ik03IDlDMTAgNyAxNCA3IDE3IDkiIHN0cm9rZT0iI0Y4NzE3MSIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNOCAxM0MxMCAxMiAxNCAxMiAxNiAxMyIgc3Ryb2tlPSIjRjg3MTcxIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==`
29
- };
30
- var BEEF_ICONS = {
31
- // Ribeye steak
32
- beef_steak_ribeye: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgOEM0IDUgNyAzIDEyIDNDMTcgMyAyMCA1IDIwIDhDMjAgMTEgMTkgMTUgMTcgMThDMTUgMjAgMTQgMjEgMTIgMjFDMTAgMjEgOSAyMCA3IDE4QzUgMTUgNCAxMSA0IDhaIiBmaWxsPSIjRUY0NDQ0IiBzdHJva2U9IiNCOTFDMUMiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTTcgOEMxMCA3IDE0IDcgMTcgOCIgc3Ryb2tlPSIjRkVFMkUyIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik04IDEyQzEwIDExIDE0IDExIDE2IDEyIiBzdHJva2U9IiNGQ0EwQTAiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48Y2lyY2xlIGN4PSIxMCIgY3k9IjE1IiByPSIxLjUiIGZpbGw9IiNGRUUyRTIiLz48L3N2Zz4=`,
33
- // Ground beef
34
- beef_ground: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTBDNCA3IDcgNSAxMiA1QzE3IDUgMjAgNyAyMCAxMEMyMCAxMyAxNyAxNSAxMiAxNUM3IDE1IDQgMTMgNCAxMFoiIGZpbGw9IiM5OTFFQjgiLz48cGF0aCBkPSJNNiAxMEMxMCA4IDE0IDggMTggMTAiIHN0cm9rZT0iI0M4NEM2OCIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNOCAxMkMxMCAxMSAxNCAxMSAxNiAxMiIgc3Ryb2tlPSIjQzg0QzY4IiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik01IDE1QzUgMTggOCAxOSAxMiAxOUMxNiAxOSAxOSAxOCAxOSAxNSIgc3Ryb2tlPSIjN0YxRDFEIiBzdHJva2Utd2lkdGg9IjEuNSIvPjxjaXJjbGUgY3g9IjgiIGN5PSI5IiByPSIwLjUiIGZpbGw9IiNGRUUyRTIiLz48Y2lyY2xlIGN4PSIxNCIgY3k9IjgiIHI9IjAuNSIgZmlsbD0iI0ZFRTJFMiIvPjxjaXJjbGUgY3g9IjExIiBjeT0iMTEiIHI9IjAuNSIgZmlsbD0iI0ZFRTJFMiIvPjwvc3ZnPg==`,
35
- // Beef roast
36
- beef_roast: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHJlY3QgeD0iNCIgeT0iNiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjEyIiByeD0iMiIgZmlsbD0iI0VGNDQ0NCIgc3Ryb2tlPSIjQjkxQzFDIiBzdHJva2Utd2lkdGg9IjEuNSIvPjxwYXRoIGQ9Ik00IDEwSDE4IiBzdHJva2U9IiNGQ0EwQTAiIHN0cm9rZS13aWR0aD0iMiIvPjxwYXRoIGQ9Ik00IDE0SDE4IiBzdHJva2U9IiNGQ0EwQTAiIHN0cm9rZS13aWR0aD0iMiIvPjxwYXRoIGQ9Ik0yMCAxMkgyMiIgc3Ryb2tlPSIjRDk3NzA2IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik0yIDEySDQiIHN0cm9rZT0iI0Q5NzcwNiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=`
37
- };
38
- var SEAFOOD_ICONS = {
39
- // Salmon fillet
40
- salmon_fillet: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTMgMTBDMyA4IDYgNiAxMiA2QzE4IDYgMjEgOCAyMSAxMEMyMSAxMiAxOSAxNyAxNiAxOEM2IDE4IDMgMTIgMyAxMFoiIGZpbGw9IiNGQjkyM0MiIHN0cm9rZT0iI0VBNTgwQyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBkPSJNNiAxMEMxMCA5IDE0IDkgMTggMTAiIHN0cm9rZT0iI0ZFRDdBQSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik03IDEzQzEwIDEyIDE0IDEyIDE3IDEzIiBzdHJva2U9IiNGRUQ3QUEiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNMTkgOEMyMCA3IDIxIDcgMjIgOCIgc3Ryb2tlPSIjOTk5IiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==`,
41
- // Shrimp
42
- shrimp: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTE4IDZDMTggNiAxNyAzIDEzIDNDOSAzIDkgNiA5IDZDOSA2IDcgNyA2IDlDNSAxMSA1IDEzIDYgMTVDNyAxNyA5IDE4IDExIDE4QzEzIDE4IDE0IDE3IDE1IDE2TDE3IDE4TDE5IDE2TDE3IDE0QzE4IDEzIDE5IDExIDE5IDlDMTkgNyAxOCA2IDE4IDZaIiBmaWxsPSIjRkJCNEI0IiBzdHJva2U9IiNGODcxNzEiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTTEyIDdDMTMuMSA3IDE0IDcuOSAxNCA5QzE0IDEwLjEgMTMuMSAxMSAxMiAxMUMxMC45IDExIDEwIDEwLjEgMTAgOUMxMCA3LjkgMTAuOSA3IDEyIDdaIiBmaWxsPSIjRkVFMkUyIi8+PHBhdGggZD0iTTE0IDNDMTQGNCAXNSIYTCE3IDJNMTIgM0MxMiAzIDEyIDEgMTAgMSIgc3Ryb2tlPSIjRjg3MTcxIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PGNpcmNsZSBjeD0iMTQiIGN5PSI5IiByPSIxIiBmaWxsPSIjMUYyOTM3Ii8+PC9zdmc+`,
43
- // Cod fillet
44
- cod_fillet: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTMgMTFDMyA5IDYgNyAxMiA3QzE4IDcgMjEgOSAyMSAxMUMyMSAxMyAxOSAxNyAxNiAxN0M2IDE3IDMgMTMgMyAxMVoiIGZpbGw9IiNGRUYzQzciIHN0cm9rZT0iI0ZERTY4QSIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBkPSJNNiAxMUMxMCAxMCAxNCAxMCAxOCAxMSIgc3Ryb2tlPSIjRkRFNjhBIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTggMTNDMTAgMTIgMTQgMTIgMTYgMTMiIHN0cm9rZT0iI0ZERTY4QSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==`,
45
- // Tuna steak
46
- tuna_steak: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgOEM0IDUgNyAzIDEyIDNDMTcgMyAyMCA1IDIwIDhDMjAgMTEgMTggMTYgMTYgMThDMTQgMjAgMTAgMjAgOCAxOEM2IDE2IDQgMTEgNCA4WiIgZmlsbD0iI0VGNDQ0NCIgc3Ryb2tlPSIjQjkxQzFDIiBzdHJva2Utd2lkdGg9IjEuNSIvPjxwYXRoIGQ9Ik03IDhDMTAgNyAxNCA3IDE3IDgiIHN0cm9rZT0iI0ZDQTBBMCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNOCAxMkMxMCAxMSAxNCAxMSAxNiAxMiIgc3Ryb2tlPSIjRkNBMEEwIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+`
2
+ var toDataUrl = (svg) => {
3
+ const encoded = encodeURIComponent(svg).replace(/'/g, "%27").replace(/"/g, "%22");
4
+ return `data:image/svg+xml,${encoded}`;
47
5
  };
48
- var EGG_ICONS = {
49
- // Fried egg
50
- egg_fried: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTJDMyA4IDUgNSA4IDRDMTEgMyAxMyA0IDE1IDVDMTcgNiAxOSA1IDIwIDdDMjEgOSAyMSAxMiAyMCAxNEMxOSAxNiAxNyAxOCAxNCAxOUMxMSAyMCA3IDE5IDUgMTdDMyAxNSA0IDE0IDQgMTJaIiBmaWxsPSIjRkZGRkZGIiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMS41Ii8+PGVsbGlwc2UgY3g9IjEyIiBjeT0iMTEiIHJ4PSI1IiByeT0iNCIgZmlsbD0iI0ZCQkYyNCIvPjxlbGxpcHNlIGN4PSIxMiIgY3k9IjExIiByeD0iMyIgcnk9IjIuNSIgZmlsbD0iI0Y1OUUwQiIvPjxwYXRoIGQ9Ik0xMCAxMEMxMC41IDkuNSAxMS41IDkuNSAxMiAxMCIgc3Ryb2tlPSIjRkVGOUMzIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==`,
51
- // Boiled egg
52
- egg_boiled: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTEyIDNDOCAzIDUgOC41IDUgMTNDNSAxNy41IDguMSAyMSAxMiAyMUMxNS45IDIxIDE5IDE3LjUgMTkgMTNDMTkgOC41IDE2IDMgMTIgM1oiIGZpbGw9IiNGRUY5QzMiIHN0cm9rZT0iI0ZERTY4QSIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBkPSJNNSAxMkgxOSIgc3Ryb2tlPSIjRkRFNjhBIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWRhc2hhcnJheT0iMiAyIi8+PGVsbGlwc2UgY3g9IjEyIiBjeT0iMTUiIHJ4PSI0IiByeT0iMyIgZmlsbD0iI0ZCQkYyNCIvPjxlbGxpcHNlIGN4PSIxMiIgY3k9IjE1IiByeD0iMiIgcnk9IjEuNSIgZmlsbD0iI0Y1OUUwQiIvPjwvc3ZnPg==`,
53
- // Scrambled eggs
54
- egg_scrambled: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTBDNCAxMyA3IDE2IDEyIDE2QzE3IDE2IDIwIDEzIDIwIDEwQzIwIDcgMTcgNSAxMiA1QzcgNSA0IDcgNCAxMFoiIGZpbGw9IiNGQkJGMjQiIHN0cm9rZT0iI0Y1OUUwQiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBkPSJNNiAxMEM4IDkgMTAgOSAxMiAxMEMxNCAxMSAxNiAxMSAxOCAxMCIgc3Ryb2tlPSIjRkVGOUMzIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTggMTNDMTAgMTIgMTQgMTIgMTYgMTMiIHN0cm9rZT0iI0ZFRjlDMyIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik00IDE2QzQgMTggNyAxOSAxMiAxOUMxNyAxOSAyMCAxOCAyMCAxNiIgc3Ryb2tlPSIjRjU5RTBCIiBzdHJva2Utd2lkdGg9IjEuNSIvPjwvc3ZnPg==`,
55
- // Poached egg
56
- egg_poached: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTUgMTFDNCA4IDYgNSAxMiA1QzE4IDUgMjAgOCAxOSAxMUMxOCAxNCAxNiAxNyAxMiAxN0M4IDE3IDYgMTQgNSAxMVoiIGZpbGw9IiNGRkZGRkYiIHN0cm9rZT0iI0U1RTdFQiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48ZWxsaXBzZSBjeD0iMTIiIGN5PSIxMSIgcng9IjQiIHJ5PSIzIiBmaWxsPSIjRkJCRjI0Ii8+PGVsbGlwc2UgY3g9IjEyIiBjeT0iMTEiIHJ4PSIyIiByeT0iMS41IiBmaWxsPSIjRjU5RTBCIi8+PC9zdmc+`
57
- };
58
- var VEGETABLE_ICONS = {
59
- // Broccoli
60
- broccoli: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTEyIDIxVjE0IiBzdHJva2U9IiM2NUExNDUiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PGNpcmNsZSBjeD0iOCIgY3k9IjgiIHI9IjQiIGZpbGw9IiMyMkM1NUUiLz48Y2lyY2xlIGN4PSIxNiIgY3k9IjgiIHI9IjQiIGZpbGw9IiMyMkM1NUUiLz48Y2lyY2xlIGN4PSIxMiIgY3k9IjUiIHI9IjQiIGZpbGw9IiMyMkM1NUUiLz48Y2lyY2xlIGN4PSIxMiIgY3k9IjEwIiByPSI0IiBmaWxsPSIjMjJDNTVFIi8+PGNpcmNsZSBjeD0iOSIgY3k9IjYiIHI9IjIiIGZpbGw9IiM0QURFODAiLz48Y2lyY2xlIGN4PSIxNCIgY3k9IjgiIHI9IjEuNSIgZmlsbD0iIzRBREU4MCIvPjwvc3ZnPg==`,
61
- // Asparagus
62
- asparagus: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTggMjFWOEw5IDRMMTAgOFYyMSIgc3Ryb2tlPSIjNjVBMTQ1IiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9IiM2NUExNDUiLz48cGF0aCBkPSJNMTEgMjFWOUwxMiA1TDEzIDlWMjEiIHN0cm9rZT0iIzIyQzU1RSIgc3Ryb2tlLXdpZHRoPSIyIiBmaWxsPSIjMjJDNTVFIi8+PHBhdGggZD0iTTE0IDIxVjEwTDE1IDZMMTYgMTBWMjEiIHN0cm9rZT0iIzY1QTE0NSIgc3Ryb2tlLXdpZHRoPSIyIiBmaWxsPSIjNjVBMTQ1Ii8+PGNpcmNsZSBjeD0iOSIgY3k9IjQiIHI9IjEuNSIgZmlsbD0iIzE2QTM0QSIvPjxjaXJjbGUgY3g9IjEyIiBjeT0iNSIgcj0iMS41IiBmaWxsPSIjMTZBMzRBIi8+PGNpcmNsZSBjeD0iMTUiIGN5PSI2IiByPSIxLjUiIGZpbGw9IiMxNkEzNEEiLz48L3N2Zz4=`,
63
- // Potato
64
- potato: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTUgMTJDNSA4IDggNSAxMiA1QzE2IDUgMTkgOCAxOSAxMkMxOSAxNiAxNiAxOSAxMiAxOUM4IDE5IDUgMTYgNSAxMloiIGZpbGw9IiNEOTc3MDYiIHN0cm9rZT0iI0I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48Y2lyY2xlIGN4PSI5IiBjeT0iMTAiIHI9IjEiIGZpbGw9IiNCNDUzMDkiLz48Y2lyY2xlIGN4PSIxNCIgY3k9IjkiIHI9IjAuNzUiIGZpbGw9IiNCNDUzMDkiLz48Y2lyY2xlIGN4PSIxMSIgY3k9IjE0IiByPSIwLjc1IiBmaWxsPSIjQjQ1MzA5Ii8+PGNpcmNsZSBjeD0iMTYiIGN5PSIxMyIgcj0iMC41IiBmaWxsPSIjQjQ1MzA5Ii8+PHBhdGggZD0iTTggMTJDMTAgMTEgMTQgMTEgMTYgMTIiIHN0cm9rZT0iI0Y1OUUwQiIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=`,
65
- // Carrot
66
- carrot: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTEyIDZDMTAgNiA4IDggNyAxMUM2IDE0IDYgMTggOCAyMEwxMiAyMUwxNiAyMEMxOCAxOCAxOCAxNCAxNyAxMUMxNiA4IDE0IDYgMTIgNloiIGZpbGw9IiNGQjkyM0MiIHN0cm9rZT0iI0VBNTgwQyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBkPSJNMTAgM0MxMCAzIDkgNSAxMCA2TTEyIDJDMTIgMiAxMSA1IDEyIDZNMTQgM0MxNCAzIDE1IDUgMTQgNiIgc3Ryb2tlPSIjMjJDNTVFIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik05IDEyQzExIDExIDEzIDExIDE1IDEyIiBzdHJva2U9IiNGRUQ3QUEiIHN0cm9rZS13aWR0aD0iMSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTEwIDE2QzExIDE1IDEzIDE1IDE0IDE2IiBzdHJva2U9IiNGRUQ3QUEiIHN0cm9rZS13aWR0aD0iMSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+`
67
- };
68
- var GRAIN_ICONS = {
69
- // White rice
70
- rice_white: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTFDNCAxMSA0IDE4IDEyIDE4QzIwIDE4IDIwIDExIDIwIDExSDRaIiBmaWxsPSIjRkZGRkZGIiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTTUgMThDNSAxOCA2IDIxIDEyIDIxQzE4IDIxIDE5IDE4IDE5IDE4IiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48ZWxsaXBzZSBjeD0iOCIgY3k9IjkiIHJ4PSIxLjUiIHJ5PSIxIiBmaWxsPSIjRkVGM0M3Ii8+PGVsbGlwc2UgY3g9IjEyIiBjeT0iOCIgcng9IjEuNSIgcnk9IjEiIGZpbGw9IiNGRUYzQzciLz48ZWxsaXBzZSBjeD0iMTYiIGN5PSI5IiByeD0iMS41IiByeT0iMSIgZmlsbD0iI0ZFRjNDNyIvPjxlbGxpcHNlIGN4PSIxMCIgY3k9IjExIiByeD0iMS41IiByeT0iMSIgZmlsbD0iI0ZFRjNDNyIvPjxlbGxpcHNlIGN4PSIxNCIgY3k9IjExIiByeD0iMS41IiByeT0iMSIgZmlsbD0iI0ZFRjNDNyIvPjwvc3ZnPg==`,
71
- // Pasta
72
- pasta: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTRDNSAxMSA4IDkgMTIgOUMxNiA5IDE5IDExIDIwIDE0IiBzdHJva2U9IiNGREU2OEEiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTYgMTdDNyAxNCA5IDEyIDEyIDEyQzE1IDEyIDE3IDE0IDE4IDE3IiBzdHJva2U9IiNGREU2OEEiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTggMjBDOSAxOCAxMCAxNiAxMiAxNkMxNCAxNiAxNSAxOCAxNiAyMCIgc3Ryb2tlPSIjRkRFNjhBIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjxwYXRoIGQ9Ik0zIDhDNCAxMCA2IDEyIDggMTJNMjEgOEMyMCAxMCAxOCAxMiAxNiAxMk0xMiA0VjkiIHN0cm9rZT0iI0Y1OUUwQiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=`,
73
- // Quinoa
74
- quinoa: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSI+PHBhdGggZD0iTTQgMTFDNCAxMSA0IDE4IDEyIDE4QzIwIDE4IDIwIDExIDIwIDExSDRaIiBmaWxsPSIjRkZGRkZGIiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMS41Ii8+PHBhdGggZD0iTTUgMThDNSAxOCA2IDIxIDEyIDIxQzE4IDIxIDE5IDE4IDE5IDE4IiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48Y2lyY2xlIGN4PSI3IiBjeT0iMTAiIHI9IjEiIGZpbGw9IiNGREU2OEEiLz48Y2lyY2xlIGN4PSIxMCIgY3k9IjkiIHI9IjEiIGZpbGw9IiNGRUY5QzMiLz48Y2lyY2xlIGN4PSIxMyIgY3k9IjgiIHI9IjEiIGZpbGw9IiNGREU2OEEiLz48Y2lyY2xlIGN4PSIxNiIgY3k9IjkiIHI9IjEiIGZpbGw9IiNGRUY5QzMiLz48Y2lyY2xlIGN4PSI4IiBjeT0iMTMiIHI9IjEiIGZpbGw9IiNGRUY5QzMiLz48Y2lyY2xlIGN4PSIxMiIgY3k9IjExIiByPSIxIiBmaWxsPSIjRkRFNjhBIi8+PGNpcmNsZSBjeD0iMTUiIGN5PSIxMiIgcj0iMSIgZmlsbD0iI0ZFRjlDMyIvPjwvc3ZnPg==`
6
+ var SVG_POULTRY = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#C1694F" d="M30.326 14.24c-.279-4.063-4.016-7.592-8.396-7.931-4.38-.339-7.294 1.908-8.406 5.865-1.113 3.958 1.006 9.672 1.006 9.672l1.781 2.281 3.594 5.719 3 .281 2.219-1.562 3.344-4.281 1.5-1.75.358-8.294z"/><path fill="#E0A577" d="M26.639 12.178c-.224-3.25-3.213-6.074-6.717-6.345-3.504-.271-5.836 1.526-6.725 4.692-.889 3.166.805 7.738.805 7.738l1.425 1.825 2.875 4.575 2.4.225 1.775-1.25 2.675-3.425 1.2-1.4.287-6.635z"/><path fill="#C1694F" d="M11.069 18.063c-2.5-1.688-3.02-4.602-3.02-4.602s-.937-6.219-.479-8.732c.458-2.513 2.769-3.27 4.436-2.498 1.667.771 1.428 1.705 2.016 3.575.588 1.87.336 3.803 1.078 5.614.741 1.811 1.913 2.933 2.26 4.618.346 1.685-.33 3.327-2.372 3.806-2.041.478-3.919-1.781-3.919-1.781z"/><path fill="#E0A577" d="M12.298 16.537c-2-1.35-2.416-3.682-2.416-3.682s-.75-4.975-.383-6.986c.367-2.01 2.215-2.616 3.549-1.998 1.333.617 1.142 1.364 1.613 2.86.47 1.496.269 3.042.862 4.491.593 1.449 1.531 2.347 1.808 3.694.277 1.348-.264 2.662-1.898 3.045-1.633.383-3.135-1.424-3.135-1.424z"/><ellipse cx="17.952" cy="32.656" fill="#C1694F" rx="4.218" ry="1.594"/><path fill="#E0A577" d="M16.858 21.858s-.546 6.792-.179 8.75c.367 1.958 1 2.344 2.042 2.25 1.041-.094 1.291-1.125 1.375-2.417.083-1.292.125-8.333.125-8.333l-3.363-.25z"/></svg>`;
7
+ var SVG_BEEF = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#BE1931" d="M35.728 10.357c-2.267-5.266-6.9-8.628-12.102-9.472-1.249-.203-7.308-.937-13.081 2.279C5.058 6.641 1.353 11.785.16 20.074c-.591 4.108-.074 7.093 1.539 8.871 2.021 2.229 5.555 2.596 8.306 2.596.976 0 1.87-.052 2.58-.103 2.018-.149 8.741-1.043 14.396-4.636 5.575-3.543 9.989-10.38 8.747-16.445z"/><path fill="#DD2E44" d="M33.728 11.357c-1.983-4.608-6.037-7.549-10.59-8.29-1.093-.178-6.395-.82-11.446 1.994C6.801 7.936 3.558 12.437 2.513 19.69c-.518 3.595-.065 6.207 1.347 7.762 1.769 1.951 4.861 2.272 7.268 2.272.854 0 1.636-.046 2.257-.09 1.766-.131 7.649-.913 12.597-4.057 4.88-3.102 8.742-9.085 7.746-14.22z"/><path fill="#BE1931" d="M23.901 5.398c-1.093-.178-6.395-.82-11.446 1.994-.969.54-1.859 1.157-2.674 1.833 1.019-.397 2.149-.652 3.394-.652 5.237 0 9.891 3.618 10.909 8.707.324 1.62.283 3.219-.056 4.73 3.019-2.727 5.476-6.757 4.62-10.392-1.983-4.608-6.037-7.549-10.59-8.29.614.09 4.219.788 5.843 2.07z"/><ellipse cx="12.814" cy="15.785" fill="#F7DECE" rx="7.021" ry="5.404"/><ellipse cx="12.814" cy="15.785" fill="#BE1931" rx="3.298" ry="2.54"/></svg>`;
8
+ var SVG_PORK = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#C1694F" d="M31.29 13.214c-.483-4.839-5.274-8.944-10.761-9.221-5.487-.277-9.12 2.704-10.481 7.571-1.361 4.867.636 11.714 1.959 14.199 1.323 2.485 2.978 4.354 6.27 4.648 3.292.294 6.234-1.102 8.413-3.826 2.179-2.724 5.083-8.532 4.6-13.371z"/><path fill="#E0A577" d="M28.632 13.661c-.386-3.871-4.219-7.155-8.609-7.377-4.39-.222-7.296 2.163-8.385 6.057-1.089 3.894.509 9.371 1.567 11.359 1.058 1.988 2.382 3.483 5.016 3.718 2.634.235 4.987-.882 6.73-3.061 1.744-2.179 4.067-6.825 3.681-10.696z"/><path fill="#FFCC4D" d="M10.733 19.714c-1.128 1.332-4.012 4.523-5.345 5.618-1.333 1.095-3.857 2.857-3.857 4.762s1.524 3.619 3.619 3.619c2.095 0 3.583-1.179 4.917-2.333 1.333-1.155 4.379-4.446 5.065-5.422.686-.976 1.143-2.531.762-3.238-.381-.708-2.115-.746-3.219-.368-1.105.381-1.942-2.638-1.942-2.638z"/><path fill="#FFAC33" d="M5.482 31.003c-.073 0-.146-.022-.209-.067-.156-.111-.193-.328-.082-.484 1.04-1.459 3.113-4.063 3.134-4.09.117-.148.331-.177.483-.063.151.114.182.328.067.48-.021.027-2.089 2.625-3.125 4.078-.069.095-.176.146-.268.146zm1.729.814c-.073 0-.147-.022-.21-.068-.155-.111-.192-.328-.081-.484 1.373-1.928 3.076-4.138 3.093-4.161.115-.151.33-.181.482-.066.152.113.183.328.068.48-.017.023-1.716 2.228-3.084 4.148-.068.098-.175.151-.268.151zm1.787.664c-.073 0-.147-.022-.21-.068-.155-.111-.192-.328-.081-.484 1.398-1.961 2.869-3.931 2.884-3.951.114-.152.33-.184.482-.069.153.113.185.327.071.48-.015.02-1.482 1.984-2.877 3.941-.068.099-.175.151-.269.151z"/><ellipse cx="6.833" cy="32.524" fill="#FFCC4D" rx="2.667" ry="1.143"/></svg>`;
9
+ var SVG_FISH = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#55ACEE" d="M27 2s-5.958 3.75-8.031 5.469C14.865 11.057 8.503 18.839 5 23c-1.5 1-2.5 2.25-2.5 3.5 0 2.5 2.603 5.5 4.5 5.5 1.5 0 2.5-1 3.5-2.5 3.5-4.5 10.654-10.588 13.5-13.5C25.806 14.056 31 9 31 9l-4-7z"/><circle cx="9.5" cy="27.5" r="1.5" fill="#292F33"/><path fill="#3B88C3" d="M25 4s-4.958 3.75-7.031 5.469C13.865 13.057 8.503 19.839 5 24c-1.5 1-2.083 2.5-2.083 3.5 0 1.75 1.686 3.5 3.583 3.5 1.5 0 2.5-1 3.5-2.5 3.5-4.5 9.654-9.588 12.5-12.5C24.306 14.056 29 10 29 10l-4-6z"/><path fill="#55ACEE" d="M31 8s3 3.334 3 6c0 2.668-3 6-3 6l-2.667-5.333L31 8z"/><path fill="#3B88C3" d="M29 10s3 2.334 3 5c0 2.668-3 5-3 5l-2-4.5 2-5.5z"/></svg>`;
10
+ var SVG_SHRIMP = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F4900C" d="M26.688 9.812c-.271 2.917-1.167 8.146-4.792 11.771-2.917 2.917-8.771 3.125-12.708 3.125-1.549 0-2.912-.049-3.938-.106-1.958-.107-2.313-.707-2.188-1.914s1.538-.998 3.059-.871c.761.063 1.722.107 2.817.107 3.458 0 8.146-.438 10.146-2.438 2.833-2.833 3.563-6.563 3.813-8.938.188-1.792.854-1.917 1.604-1.646.75.272.395 1.91.187 2.91z"/><path fill="#FFCC4D" d="M10.376 15.098c-2.188.354-3.188.917-3.188 2.417 0 1.125.667 1.792 1.792 1.792 1.75 0 2.104-.771 2.104-1.917s-.708-2.292-.708-2.292z"/><path fill="#F4900C" d="M16.542 10.639c-4.25 0-5.917 2.042-6.875 4.5.084-.001.162-.014.25-.014 2.292 0 2.667 2.417 2.667 3.583 0 1.75-.854 3.167-3.292 3.167-1.708 0-3-1.104-3.145-2.958-.032.035-.065.065-.098.101-1.125 1.25-1.875 3.063-1.875 5.875 0 4.166 3.333 8.229 8.833 8.229s9.667-4.229 9.667-9.646c0-6.625-3.25-12.837-6.132-12.837z"/><circle cx="9.396" cy="27.441" r="1.25" fill="#662113"/><path fill="#FFCC4D" d="M15.5 25c-1.375 0-2.5 1.625-2.5 3.5 0 1.25.375 2.5 1.875 2.5 1.667 0 2.125-1.417 2.125-2.917 0-1.208-.125-3.083-1.5-3.083zm4-1c-1.125 0-2 1.542-2 3.25 0 1.083.333 2.25 1.625 2.25 1.375 0 1.875-1.208 1.875-2.583 0-1.084-.167-2.917-1.5-2.917z"/><path fill="#F4900C" d="M5.813 25.77c-.094-.178-.428-.188-.746-.022-.318.166-.479.452-.385.631l1.334 2.428c.081.155.327.187.599.095-.233-.497-1.026-1.995-.802-3.132z"/><path fill="#FFCC4D" d="M30.599 5.401c-.345.174-.525.513-.431.785.036.104.136.393-.212.938-.49.768-1.679 1.717-4.002 2.882-5.708 2.862-8.62.67-10.33-.776-.615-.52-1.084-1.059-1.462-1.55-.295-.384-.764-.389-1.047-.01-.283.378-.172.919.168 1.27l.022.023c.396.443.925.986 1.622 1.555 1.981 1.616 5.846 4.287 12.511.948 2.549-1.277 3.944-2.394 4.604-3.429.451-.708.554-1.378.343-1.988-.094-.272-.34-.361-.513-.361-.089 0-.175.021-.249.059-.355.179-.549.504-.479.784.054.217-.011.448-.234.668-.356.351-1.085.787-2.186 1.323-3.364 1.637-5.539 1.314-6.753.552-1.028-.646-1.424-1.558-1.425-1.56-.116-.266-.5-.361-.857-.212-.356.149-.54.484-.423.749l.001.002c.02.046.508 1.131 1.778 1.933 1.535.968 4.167 1.378 8.079-.527 1.212-.59 2.036-1.087 2.495-1.54.538-.531.659-1.102.529-1.574-.132-.476-.51-.818-.993-.818-.109 0-.221.019-.334.056z"/><ellipse cx="27.819" cy="2.692" fill="#FFCC4D" rx="2.413" ry="1.025" transform="rotate(-63.435 27.82 2.693)"/><ellipse cx="30.569" cy="4.067" fill="#FFCC4D" rx="2.413" ry="1.025" transform="rotate(-63.435 30.57 4.067)"/></svg>`;
11
+ var SVG_EGG = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#E1E8ED" d="M18 35c-7.732 0-14-4.701-14-10.5C4 14.603 11.268 1 18 1s14 13.603 14 23.5c0 5.799-6.268 10.5-14 10.5z"/><path fill="#CCD6DD" d="M18 33c-6.627 0-12-3.873-12-8.5C6 15.603 12.268 3 18 3s12 12.603 12 21.5c0 4.627-5.373 8.5-12 8.5z"/></svg>`;
12
+ var SVG_BROCCOLI = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#77B255" d="M22.453 35.564c-.315 0-.636-.08-.934-.251-5.281-3.029-5.792-10.958-5.813-11.294-.042-.679.474-1.263 1.152-1.305.683-.048 1.263.474 1.305 1.152.005.073.456 7.134 4.607 9.515.59.339.795 1.091.456 1.683-.227.396-.642.617-1.069.617-.001-.117-.296-.117-.704-.117z"/><path fill="#5C913B" d="M13.838 35.564c-.315 0-.636-.08-.934-.251-5.281-3.029-5.792-10.958-5.813-11.294-.042-.679.474-1.263 1.152-1.305.683-.048 1.263.474 1.305 1.152.005.073.456 7.134 4.607 9.515.59.339.795 1.091.456 1.683-.227.396-.642.617-1.069.617-.001-.117-.296-.117-.704-.117z"/><ellipse cx="20.285" cy="18.546" fill="#77B255" rx="5.701" ry="5.476"/><ellipse cx="8.073" cy="15.9" fill="#5C913B" rx="5.145" ry="4.943"/><circle cx="23.111" cy="9.561" r="5.588" fill="#77B255"/><ellipse cx="13.838" cy="7.589" fill="#5C913B" rx="4.866" ry="4.674"/><circle cx="17.236" cy="13.369" r="6.145" fill="#3E721D"/><circle cx="10.166" cy="9.561" r="4.588" fill="#77B255"/><circle cx="26.508" cy="14.571" r="4.588" fill="#5C913B"/><ellipse cx="20.285" cy="4.787" fill="#5C913B" rx="4.31" ry="4.141"/></svg>`;
13
+ var SVG_RICE = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#CCD6DD" d="M33 22H3c-1.657 0-3 1.343-3 3v6c0 1.657 1.343 3 3 3h30c1.657 0 3-1.343 3-3v-6c0-1.657-1.343-3-3-3z"/><path fill="#E1E8ED" d="M33 20H3c-1.657 0-3 1.343-3 3v6c0 1.657 1.343 3 3 3h30c1.657 0 3-1.343 3-3v-6c0-1.657-1.343-3-3-3z"/><path fill="#F5F8FA" d="M8 18c-.552 0-1-.447-1-1v-4c0-.553.448-1 1-1s1 .447 1 1v4c0 .553-.448 1-1 1zm4 0c-.552 0-1-.447-1-1v-5c0-.553.448-1 1-1s1 .447 1 1v5c0 .553-.448 1-1 1zm4-1c-.552 0-1-.447-1-1v-4c0-.553.448-1 1-1s1 .447 1 1v4c0 .553-.448 1-1 1zm4 0c-.552 0-1-.447-1-1v-5c0-.553.448-1 1-1s1 .447 1 1v5c0 .553-.448 1-1 1zm4 1c-.552 0-1-.447-1-1v-4c0-.553.448-1 1-1s1 .447 1 1v4c0 .553-.448 1-1 1zm4 0c-.552 0-1-.447-1-1v-5c0-.553.448-1 1-1s1 .447 1 1v5c0 .553-.448 1-1 1z"/></svg>`;
14
+ var SVG_FRIED_EGG = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#E1E8ED" d="M35 19.5c0 4.142-3.582 7.5-8 7.5-2.348 0-4.471-.939-6-2.452C19.471 26.061 17.348 27 15 27c-4.418 0-8-3.358-8-7.5 0-.646.087-1.271.248-1.865C4.414 17.047 2 14.552 2 11.5 2 8.186 4.833 5.5 8.333 5.5c.357 0 .707.027 1.05.078C10.66 3.398 12.928 2 15.5 2c2.572 0 4.84 1.398 6.117 3.578.343-.051.693-.078 1.05-.078C26.167 5.5 29 8.186 29 11.5c0 .985-.227 1.918-.631 2.757C32.159 14.676 35 16.799 35 19.5z"/><ellipse cx="15" cy="18" fill="#FFCC4D" rx="8" ry="7"/><ellipse cx="15" cy="17" fill="#FFE8B6" rx="4" ry="3.5"/></svg>`;
15
+ var CATEGORY_ICONS = {
16
+ poultry: toDataUrl(SVG_POULTRY),
17
+ beef: toDataUrl(SVG_BEEF),
18
+ pork: toDataUrl(SVG_PORK),
19
+ seafood_fish: toDataUrl(SVG_FISH),
20
+ seafood_shellfish: toDataUrl(SVG_SHRIMP),
21
+ egg: toDataUrl(SVG_EGG),
22
+ vegetable: toDataUrl(SVG_BROCCOLI),
23
+ grain: toDataUrl(SVG_RICE)
75
24
  };
76
25
  var INGREDIENT_ICONS = {
77
- ...POULTRY_ICONS,
78
- ...BEEF_ICONS,
79
- ...SEAFOOD_ICONS,
80
- ...EGG_ICONS,
81
- ...VEGETABLE_ICONS,
82
- ...GRAIN_ICONS
26
+ // Poultry
27
+ chicken_breast: toDataUrl(SVG_POULTRY),
28
+ chicken_breast_boneless: toDataUrl(SVG_POULTRY),
29
+ chicken_thigh_boneless: toDataUrl(SVG_POULTRY),
30
+ chicken_thigh: toDataUrl(SVG_POULTRY),
31
+ chicken_whole: toDataUrl(SVG_POULTRY),
32
+ turkey_breast: toDataUrl(SVG_POULTRY),
33
+ // Beef
34
+ beef_steak_ribeye: toDataUrl(SVG_BEEF),
35
+ beef_ground: toDataUrl(SVG_BEEF),
36
+ beef_roast: toDataUrl(SVG_BEEF),
37
+ // Pork
38
+ pork_chop: toDataUrl(SVG_PORK),
39
+ pork_tenderloin: toDataUrl(SVG_PORK),
40
+ pork_ribs: toDataUrl(SVG_PORK),
41
+ // Seafood
42
+ salmon_fillet: toDataUrl(SVG_FISH),
43
+ tuna_steak: toDataUrl(SVG_FISH),
44
+ cod_fillet: toDataUrl(SVG_FISH),
45
+ shrimp: toDataUrl(SVG_SHRIMP),
46
+ // Eggs
47
+ egg_fried: toDataUrl(SVG_FRIED_EGG),
48
+ egg_boiled: toDataUrl(SVG_EGG),
49
+ egg_scrambled: toDataUrl(SVG_FRIED_EGG),
50
+ egg_poached: toDataUrl(SVG_FRIED_EGG),
51
+ // Vegetables
52
+ broccoli: toDataUrl(SVG_BROCCOLI),
53
+ asparagus: toDataUrl(SVG_BROCCOLI),
54
+ potato: toDataUrl(SVG_BROCCOLI),
55
+ carrot: toDataUrl(SVG_BROCCOLI),
56
+ // Grains
57
+ rice_white: toDataUrl(SVG_RICE),
58
+ pasta: toDataUrl(SVG_RICE),
59
+ quinoa: toDataUrl(SVG_RICE)
83
60
  };
84
61
  var getIcon = (id, category) => {
85
62
  if (INGREDIENT_ICONS[id]) {
@@ -91,14 +68,8 @@ var getIcon = (id, category) => {
91
68
  return void 0;
92
69
  };
93
70
  export {
94
- BEEF_ICONS,
95
71
  CATEGORY_ICONS,
96
- EGG_ICONS,
97
- GRAIN_ICONS,
98
72
  INGREDIENT_ICONS,
99
- POULTRY_ICONS,
100
- SEAFOOD_ICONS,
101
- VEGETABLE_ICONS,
102
73
  getIcon
103
74
  };
104
75
  //# sourceMappingURL=icons.mjs.map
@@ -1 +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":";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":[]}
1
+ {"version":3,"sources":["../icons.ts"],"sourcesContent":["// High-quality flat-style food icons as data URLs\n// Consistent style, no external dependencies\n\n// Helper to encode SVG as data URL\nconst toDataUrl = (svg: string): string => {\n const encoded = encodeURIComponent(svg)\n .replace(/'/g, '%27')\n .replace(/\"/g, '%22');\n return `data:image/svg+xml,${encoded}`;\n};\n\n// =============================================================================\n// SVG DEFINITIONS\n// =============================================================================\n\nconst SVG_POULTRY = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 36 36\"><path fill=\"#C1694F\" d=\"M30.326 14.24c-.279-4.063-4.016-7.592-8.396-7.931-4.38-.339-7.294 1.908-8.406 5.865-1.113 3.958 1.006 9.672 1.006 9.672l1.781 2.281 3.594 5.719 3 .281 2.219-1.562 3.344-4.281 1.5-1.75.358-8.294z\"/><path fill=\"#E0A577\" d=\"M26.639 12.178c-.224-3.25-3.213-6.074-6.717-6.345-3.504-.271-5.836 1.526-6.725 4.692-.889 3.166.805 7.738.805 7.738l1.425 1.825 2.875 4.575 2.4.225 1.775-1.25 2.675-3.425 1.2-1.4.287-6.635z\"/><path fill=\"#C1694F\" d=\"M11.069 18.063c-2.5-1.688-3.02-4.602-3.02-4.602s-.937-6.219-.479-8.732c.458-2.513 2.769-3.27 4.436-2.498 1.667.771 1.428 1.705 2.016 3.575.588 1.87.336 3.803 1.078 5.614.741 1.811 1.913 2.933 2.26 4.618.346 1.685-.33 3.327-2.372 3.806-2.041.478-3.919-1.781-3.919-1.781z\"/><path fill=\"#E0A577\" d=\"M12.298 16.537c-2-1.35-2.416-3.682-2.416-3.682s-.75-4.975-.383-6.986c.367-2.01 2.215-2.616 3.549-1.998 1.333.617 1.142 1.364 1.613 2.86.47 1.496.269 3.042.862 4.491.593 1.449 1.531 2.347 1.808 3.694.277 1.348-.264 2.662-1.898 3.045-1.633.383-3.135-1.424-3.135-1.424z\"/><ellipse cx=\"17.952\" cy=\"32.656\" fill=\"#C1694F\" rx=\"4.218\" ry=\"1.594\"/><path fill=\"#E0A577\" d=\"M16.858 21.858s-.546 6.792-.179 8.75c.367 1.958 1 2.344 2.042 2.25 1.041-.094 1.291-1.125 1.375-2.417.083-1.292.125-8.333.125-8.333l-3.363-.25z\"/></svg>`;\n\nconst SVG_BEEF = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 36 36\"><path fill=\"#BE1931\" d=\"M35.728 10.357c-2.267-5.266-6.9-8.628-12.102-9.472-1.249-.203-7.308-.937-13.081 2.279C5.058 6.641 1.353 11.785.16 20.074c-.591 4.108-.074 7.093 1.539 8.871 2.021 2.229 5.555 2.596 8.306 2.596.976 0 1.87-.052 2.58-.103 2.018-.149 8.741-1.043 14.396-4.636 5.575-3.543 9.989-10.38 8.747-16.445z\"/><path fill=\"#DD2E44\" d=\"M33.728 11.357c-1.983-4.608-6.037-7.549-10.59-8.29-1.093-.178-6.395-.82-11.446 1.994C6.801 7.936 3.558 12.437 2.513 19.69c-.518 3.595-.065 6.207 1.347 7.762 1.769 1.951 4.861 2.272 7.268 2.272.854 0 1.636-.046 2.257-.09 1.766-.131 7.649-.913 12.597-4.057 4.88-3.102 8.742-9.085 7.746-14.22z\"/><path fill=\"#BE1931\" d=\"M23.901 5.398c-1.093-.178-6.395-.82-11.446 1.994-.969.54-1.859 1.157-2.674 1.833 1.019-.397 2.149-.652 3.394-.652 5.237 0 9.891 3.618 10.909 8.707.324 1.62.283 3.219-.056 4.73 3.019-2.727 5.476-6.757 4.62-10.392-1.983-4.608-6.037-7.549-10.59-8.29.614.09 4.219.788 5.843 2.07z\"/><ellipse cx=\"12.814\" cy=\"15.785\" fill=\"#F7DECE\" rx=\"7.021\" ry=\"5.404\"/><ellipse cx=\"12.814\" cy=\"15.785\" fill=\"#BE1931\" rx=\"3.298\" ry=\"2.54\"/></svg>`;\n\nconst SVG_PORK = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 36 36\"><path fill=\"#C1694F\" d=\"M31.29 13.214c-.483-4.839-5.274-8.944-10.761-9.221-5.487-.277-9.12 2.704-10.481 7.571-1.361 4.867.636 11.714 1.959 14.199 1.323 2.485 2.978 4.354 6.27 4.648 3.292.294 6.234-1.102 8.413-3.826 2.179-2.724 5.083-8.532 4.6-13.371z\"/><path fill=\"#E0A577\" d=\"M28.632 13.661c-.386-3.871-4.219-7.155-8.609-7.377-4.39-.222-7.296 2.163-8.385 6.057-1.089 3.894.509 9.371 1.567 11.359 1.058 1.988 2.382 3.483 5.016 3.718 2.634.235 4.987-.882 6.73-3.061 1.744-2.179 4.067-6.825 3.681-10.696z\"/><path fill=\"#FFCC4D\" d=\"M10.733 19.714c-1.128 1.332-4.012 4.523-5.345 5.618-1.333 1.095-3.857 2.857-3.857 4.762s1.524 3.619 3.619 3.619c2.095 0 3.583-1.179 4.917-2.333 1.333-1.155 4.379-4.446 5.065-5.422.686-.976 1.143-2.531.762-3.238-.381-.708-2.115-.746-3.219-.368-1.105.381-1.942-2.638-1.942-2.638z\"/><path fill=\"#FFAC33\" d=\"M5.482 31.003c-.073 0-.146-.022-.209-.067-.156-.111-.193-.328-.082-.484 1.04-1.459 3.113-4.063 3.134-4.09.117-.148.331-.177.483-.063.151.114.182.328.067.48-.021.027-2.089 2.625-3.125 4.078-.069.095-.176.146-.268.146zm1.729.814c-.073 0-.147-.022-.21-.068-.155-.111-.192-.328-.081-.484 1.373-1.928 3.076-4.138 3.093-4.161.115-.151.33-.181.482-.066.152.113.183.328.068.48-.017.023-1.716 2.228-3.084 4.148-.068.098-.175.151-.268.151zm1.787.664c-.073 0-.147-.022-.21-.068-.155-.111-.192-.328-.081-.484 1.398-1.961 2.869-3.931 2.884-3.951.114-.152.33-.184.482-.069.153.113.185.327.071.48-.015.02-1.482 1.984-2.877 3.941-.068.099-.175.151-.269.151z\"/><ellipse cx=\"6.833\" cy=\"32.524\" fill=\"#FFCC4D\" rx=\"2.667\" ry=\"1.143\"/></svg>`;\n\nconst SVG_FISH = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 36 36\"><path fill=\"#55ACEE\" d=\"M27 2s-5.958 3.75-8.031 5.469C14.865 11.057 8.503 18.839 5 23c-1.5 1-2.5 2.25-2.5 3.5 0 2.5 2.603 5.5 4.5 5.5 1.5 0 2.5-1 3.5-2.5 3.5-4.5 10.654-10.588 13.5-13.5C25.806 14.056 31 9 31 9l-4-7z\"/><circle cx=\"9.5\" cy=\"27.5\" r=\"1.5\" fill=\"#292F33\"/><path fill=\"#3B88C3\" d=\"M25 4s-4.958 3.75-7.031 5.469C13.865 13.057 8.503 19.839 5 24c-1.5 1-2.083 2.5-2.083 3.5 0 1.75 1.686 3.5 3.583 3.5 1.5 0 2.5-1 3.5-2.5 3.5-4.5 9.654-9.588 12.5-12.5C24.306 14.056 29 10 29 10l-4-6z\"/><path fill=\"#55ACEE\" d=\"M31 8s3 3.334 3 6c0 2.668-3 6-3 6l-2.667-5.333L31 8z\"/><path fill=\"#3B88C3\" d=\"M29 10s3 2.334 3 5c0 2.668-3 5-3 5l-2-4.5 2-5.5z\"/></svg>`;\n\nconst SVG_SHRIMP = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 36 36\"><path fill=\"#F4900C\" d=\"M26.688 9.812c-.271 2.917-1.167 8.146-4.792 11.771-2.917 2.917-8.771 3.125-12.708 3.125-1.549 0-2.912-.049-3.938-.106-1.958-.107-2.313-.707-2.188-1.914s1.538-.998 3.059-.871c.761.063 1.722.107 2.817.107 3.458 0 8.146-.438 10.146-2.438 2.833-2.833 3.563-6.563 3.813-8.938.188-1.792.854-1.917 1.604-1.646.75.272.395 1.91.187 2.91z\"/><path fill=\"#FFCC4D\" d=\"M10.376 15.098c-2.188.354-3.188.917-3.188 2.417 0 1.125.667 1.792 1.792 1.792 1.75 0 2.104-.771 2.104-1.917s-.708-2.292-.708-2.292z\"/><path fill=\"#F4900C\" d=\"M16.542 10.639c-4.25 0-5.917 2.042-6.875 4.5.084-.001.162-.014.25-.014 2.292 0 2.667 2.417 2.667 3.583 0 1.75-.854 3.167-3.292 3.167-1.708 0-3-1.104-3.145-2.958-.032.035-.065.065-.098.101-1.125 1.25-1.875 3.063-1.875 5.875 0 4.166 3.333 8.229 8.833 8.229s9.667-4.229 9.667-9.646c0-6.625-3.25-12.837-6.132-12.837z\"/><circle cx=\"9.396\" cy=\"27.441\" r=\"1.25\" fill=\"#662113\"/><path fill=\"#FFCC4D\" d=\"M15.5 25c-1.375 0-2.5 1.625-2.5 3.5 0 1.25.375 2.5 1.875 2.5 1.667 0 2.125-1.417 2.125-2.917 0-1.208-.125-3.083-1.5-3.083zm4-1c-1.125 0-2 1.542-2 3.25 0 1.083.333 2.25 1.625 2.25 1.375 0 1.875-1.208 1.875-2.583 0-1.084-.167-2.917-1.5-2.917z\"/><path fill=\"#F4900C\" d=\"M5.813 25.77c-.094-.178-.428-.188-.746-.022-.318.166-.479.452-.385.631l1.334 2.428c.081.155.327.187.599.095-.233-.497-1.026-1.995-.802-3.132z\"/><path fill=\"#FFCC4D\" d=\"M30.599 5.401c-.345.174-.525.513-.431.785.036.104.136.393-.212.938-.49.768-1.679 1.717-4.002 2.882-5.708 2.862-8.62.67-10.33-.776-.615-.52-1.084-1.059-1.462-1.55-.295-.384-.764-.389-1.047-.01-.283.378-.172.919.168 1.27l.022.023c.396.443.925.986 1.622 1.555 1.981 1.616 5.846 4.287 12.511.948 2.549-1.277 3.944-2.394 4.604-3.429.451-.708.554-1.378.343-1.988-.094-.272-.34-.361-.513-.361-.089 0-.175.021-.249.059-.355.179-.549.504-.479.784.054.217-.011.448-.234.668-.356.351-1.085.787-2.186 1.323-3.364 1.637-5.539 1.314-6.753.552-1.028-.646-1.424-1.558-1.425-1.56-.116-.266-.5-.361-.857-.212-.356.149-.54.484-.423.749l.001.002c.02.046.508 1.131 1.778 1.933 1.535.968 4.167 1.378 8.079-.527 1.212-.59 2.036-1.087 2.495-1.54.538-.531.659-1.102.529-1.574-.132-.476-.51-.818-.993-.818-.109 0-.221.019-.334.056z\"/><ellipse cx=\"27.819\" cy=\"2.692\" fill=\"#FFCC4D\" rx=\"2.413\" ry=\"1.025\" transform=\"rotate(-63.435 27.82 2.693)\"/><ellipse cx=\"30.569\" cy=\"4.067\" fill=\"#FFCC4D\" rx=\"2.413\" ry=\"1.025\" transform=\"rotate(-63.435 30.57 4.067)\"/></svg>`;\n\nconst SVG_EGG = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 36 36\"><path fill=\"#E1E8ED\" d=\"M18 35c-7.732 0-14-4.701-14-10.5C4 14.603 11.268 1 18 1s14 13.603 14 23.5c0 5.799-6.268 10.5-14 10.5z\"/><path fill=\"#CCD6DD\" d=\"M18 33c-6.627 0-12-3.873-12-8.5C6 15.603 12.268 3 18 3s12 12.603 12 21.5c0 4.627-5.373 8.5-12 8.5z\"/></svg>`;\n\nconst SVG_BROCCOLI = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 36 36\"><path fill=\"#77B255\" d=\"M22.453 35.564c-.315 0-.636-.08-.934-.251-5.281-3.029-5.792-10.958-5.813-11.294-.042-.679.474-1.263 1.152-1.305.683-.048 1.263.474 1.305 1.152.005.073.456 7.134 4.607 9.515.59.339.795 1.091.456 1.683-.227.396-.642.617-1.069.617-.001-.117-.296-.117-.704-.117z\"/><path fill=\"#5C913B\" d=\"M13.838 35.564c-.315 0-.636-.08-.934-.251-5.281-3.029-5.792-10.958-5.813-11.294-.042-.679.474-1.263 1.152-1.305.683-.048 1.263.474 1.305 1.152.005.073.456 7.134 4.607 9.515.59.339.795 1.091.456 1.683-.227.396-.642.617-1.069.617-.001-.117-.296-.117-.704-.117z\"/><ellipse cx=\"20.285\" cy=\"18.546\" fill=\"#77B255\" rx=\"5.701\" ry=\"5.476\"/><ellipse cx=\"8.073\" cy=\"15.9\" fill=\"#5C913B\" rx=\"5.145\" ry=\"4.943\"/><circle cx=\"23.111\" cy=\"9.561\" r=\"5.588\" fill=\"#77B255\"/><ellipse cx=\"13.838\" cy=\"7.589\" fill=\"#5C913B\" rx=\"4.866\" ry=\"4.674\"/><circle cx=\"17.236\" cy=\"13.369\" r=\"6.145\" fill=\"#3E721D\"/><circle cx=\"10.166\" cy=\"9.561\" r=\"4.588\" fill=\"#77B255\"/><circle cx=\"26.508\" cy=\"14.571\" r=\"4.588\" fill=\"#5C913B\"/><ellipse cx=\"20.285\" cy=\"4.787\" fill=\"#5C913B\" rx=\"4.31\" ry=\"4.141\"/></svg>`;\n\nconst SVG_RICE = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 36 36\"><path fill=\"#CCD6DD\" d=\"M33 22H3c-1.657 0-3 1.343-3 3v6c0 1.657 1.343 3 3 3h30c1.657 0 3-1.343 3-3v-6c0-1.657-1.343-3-3-3z\"/><path fill=\"#E1E8ED\" d=\"M33 20H3c-1.657 0-3 1.343-3 3v6c0 1.657 1.343 3 3 3h30c1.657 0 3-1.343 3-3v-6c0-1.657-1.343-3-3-3z\"/><path fill=\"#F5F8FA\" d=\"M8 18c-.552 0-1-.447-1-1v-4c0-.553.448-1 1-1s1 .447 1 1v4c0 .553-.448 1-1 1zm4 0c-.552 0-1-.447-1-1v-5c0-.553.448-1 1-1s1 .447 1 1v5c0 .553-.448 1-1 1zm4-1c-.552 0-1-.447-1-1v-4c0-.553.448-1 1-1s1 .447 1 1v4c0 .553-.448 1-1 1zm4 0c-.552 0-1-.447-1-1v-5c0-.553.448-1 1-1s1 .447 1 1v5c0 .553-.448 1-1 1zm4 1c-.552 0-1-.447-1-1v-4c0-.553.448-1 1-1s1 .447 1 1v4c0 .553-.448 1-1 1zm4 0c-.552 0-1-.447-1-1v-5c0-.553.448-1 1-1s1 .447 1 1v5c0 .553-.448 1-1 1z\"/></svg>`;\n\nconst SVG_FRIED_EGG = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 36 36\"><path fill=\"#E1E8ED\" d=\"M35 19.5c0 4.142-3.582 7.5-8 7.5-2.348 0-4.471-.939-6-2.452C19.471 26.061 17.348 27 15 27c-4.418 0-8-3.358-8-7.5 0-.646.087-1.271.248-1.865C4.414 17.047 2 14.552 2 11.5 2 8.186 4.833 5.5 8.333 5.5c.357 0 .707.027 1.05.078C10.66 3.398 12.928 2 15.5 2c2.572 0 4.84 1.398 6.117 3.578.343-.051.693-.078 1.05-.078C26.167 5.5 29 8.186 29 11.5c0 .985-.227 1.918-.631 2.757C32.159 14.676 35 16.799 35 19.5z\"/><ellipse cx=\"15\" cy=\"18\" fill=\"#FFCC4D\" rx=\"8\" ry=\"7\"/><ellipse cx=\"15\" cy=\"17\" fill=\"#FFE8B6\" rx=\"4\" ry=\"3.5\"/></svg>`;\n\n// =============================================================================\n// CATEGORY ICONS\n// =============================================================================\n\nexport const CATEGORY_ICONS: Record<string, string> = {\n poultry: toDataUrl(SVG_POULTRY),\n beef: toDataUrl(SVG_BEEF),\n pork: toDataUrl(SVG_PORK),\n seafood_fish: toDataUrl(SVG_FISH),\n seafood_shellfish: toDataUrl(SVG_SHRIMP),\n egg: toDataUrl(SVG_EGG),\n vegetable: toDataUrl(SVG_BROCCOLI),\n grain: toDataUrl(SVG_RICE),\n};\n\n// =============================================================================\n// INGREDIENT ICONS\n// =============================================================================\n\nexport const INGREDIENT_ICONS: Record<string, string> = {\n // Poultry\n chicken_breast: toDataUrl(SVG_POULTRY),\n chicken_breast_boneless: toDataUrl(SVG_POULTRY),\n chicken_thigh_boneless: toDataUrl(SVG_POULTRY),\n chicken_thigh: toDataUrl(SVG_POULTRY),\n chicken_whole: toDataUrl(SVG_POULTRY),\n turkey_breast: toDataUrl(SVG_POULTRY),\n\n // Beef\n beef_steak_ribeye: toDataUrl(SVG_BEEF),\n beef_ground: toDataUrl(SVG_BEEF),\n beef_roast: toDataUrl(SVG_BEEF),\n\n // Pork\n pork_chop: toDataUrl(SVG_PORK),\n pork_tenderloin: toDataUrl(SVG_PORK),\n pork_ribs: toDataUrl(SVG_PORK),\n\n // Seafood\n salmon_fillet: toDataUrl(SVG_FISH),\n tuna_steak: toDataUrl(SVG_FISH),\n cod_fillet: toDataUrl(SVG_FISH),\n shrimp: toDataUrl(SVG_SHRIMP),\n\n // Eggs\n egg_fried: toDataUrl(SVG_FRIED_EGG),\n egg_boiled: toDataUrl(SVG_EGG),\n egg_scrambled: toDataUrl(SVG_FRIED_EGG),\n egg_poached: toDataUrl(SVG_FRIED_EGG),\n\n // Vegetables\n broccoli: toDataUrl(SVG_BROCCOLI),\n asparagus: toDataUrl(SVG_BROCCOLI),\n potato: toDataUrl(SVG_BROCCOLI),\n carrot: toDataUrl(SVG_BROCCOLI),\n\n // Grains\n rice_white: toDataUrl(SVG_RICE),\n pasta: toDataUrl(SVG_RICE),\n quinoa: toDataUrl(SVG_RICE),\n};\n\n// =============================================================================\n// HELPER\n// =============================================================================\n\nexport const getIcon = (id: string, category?: string): string | undefined => {\n if (INGREDIENT_ICONS[id]) {\n return INGREDIENT_ICONS[id];\n }\n if (category && CATEGORY_ICONS[category]) {\n return CATEGORY_ICONS[category];\n }\n return undefined;\n};\n"],"mappings":";AAIA,IAAM,YAAY,CAAC,QAAwB;AACzC,QAAM,UAAU,mBAAmB,GAAG,EACnC,QAAQ,MAAM,KAAK,EACnB,QAAQ,MAAM,KAAK;AACtB,SAAO,sBAAsB,OAAO;AACtC;AAMA,IAAM,cAAc;AAEpB,IAAM,WAAW;AAEjB,IAAM,WAAW;AAEjB,IAAM,WAAW;AAEjB,IAAM,aAAa;AAEnB,IAAM,UAAU;AAEhB,IAAM,eAAe;AAErB,IAAM,WAAW;AAEjB,IAAM,gBAAgB;AAMf,IAAM,iBAAyC;AAAA,EACpD,SAAS,UAAU,WAAW;AAAA,EAC9B,MAAM,UAAU,QAAQ;AAAA,EACxB,MAAM,UAAU,QAAQ;AAAA,EACxB,cAAc,UAAU,QAAQ;AAAA,EAChC,mBAAmB,UAAU,UAAU;AAAA,EACvC,KAAK,UAAU,OAAO;AAAA,EACtB,WAAW,UAAU,YAAY;AAAA,EACjC,OAAO,UAAU,QAAQ;AAC3B;AAMO,IAAM,mBAA2C;AAAA;AAAA,EAEtD,gBAAgB,UAAU,WAAW;AAAA,EACrC,yBAAyB,UAAU,WAAW;AAAA,EAC9C,wBAAwB,UAAU,WAAW;AAAA,EAC7C,eAAe,UAAU,WAAW;AAAA,EACpC,eAAe,UAAU,WAAW;AAAA,EACpC,eAAe,UAAU,WAAW;AAAA;AAAA,EAGpC,mBAAmB,UAAU,QAAQ;AAAA,EACrC,aAAa,UAAU,QAAQ;AAAA,EAC/B,YAAY,UAAU,QAAQ;AAAA;AAAA,EAG9B,WAAW,UAAU,QAAQ;AAAA,EAC7B,iBAAiB,UAAU,QAAQ;AAAA,EACnC,WAAW,UAAU,QAAQ;AAAA;AAAA,EAG7B,eAAe,UAAU,QAAQ;AAAA,EACjC,YAAY,UAAU,QAAQ;AAAA,EAC9B,YAAY,UAAU,QAAQ;AAAA,EAC9B,QAAQ,UAAU,UAAU;AAAA;AAAA,EAG5B,WAAW,UAAU,aAAa;AAAA,EAClC,YAAY,UAAU,OAAO;AAAA,EAC7B,eAAe,UAAU,aAAa;AAAA,EACtC,aAAa,UAAU,aAAa;AAAA;AAAA,EAGpC,UAAU,UAAU,YAAY;AAAA,EAChC,WAAW,UAAU,YAAY;AAAA,EACjC,QAAQ,UAAU,YAAY;AAAA,EAC9B,QAAQ,UAAU,YAAY;AAAA;AAAA,EAG9B,YAAY,UAAU,QAAQ;AAAA,EAC9B,OAAO,UAAU,QAAQ;AAAA,EACzB,QAAQ,UAAU,QAAQ;AAC5B;AAMO,IAAM,UAAU,CAAC,IAAY,aAA0C;AAC5E,MAAI,iBAAiB,EAAE,GAAG;AACxB,WAAO,iBAAiB,EAAE;AAAA,EAC5B;AACA,MAAI,YAAY,eAAe,QAAQ,GAAG;AACxC,WAAO,eAAe,QAAQ;AAAA,EAChC;AACA,SAAO;AACT;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cooking-temperature",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "A comprehensive library for safe cooking temperatures, doneness levels, and cooking instructions for various ingredients",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",