{'heading': 'How to read the Recipe & Food Nutrition panel in the app', 'summary': 'When viewing a recipe or food item in `Ayurveda & Asana Yoga` (`RecipeNutritionPanelView`), use the segmented picker at the top to switch between `Per serving` (what lands on one plate) and `Per 100 g` (standardized weight comparison). Directly underneath, a color-coded status badge shows whether ingredient nutrition coverage is `Full ingredient coverage` (green), `Estimated` (amber, with an orange `Missing nutrition:` list), or `Unavailable`.', 'bullets': ['Segmented basis toggle: Switch between `Per serving` and `Per 100 g` alongside the serving summary (`"N servings · X g total"`).', 'Three coverage statuses: `Full ingredient coverage` (`status == "full"`), `Estimated` (`status == "estimated"`), and `Unavailable` (`status == "none"`).', 'Why some chips show `—`: The caption explicitly states *"Calculated from USDA-bound ingredients. Unavailable USDA nutrient observations are shown as —."* An em-dash means the nutrient was not assayed, not that the food contains 0 mg.', 'Three color-coded nutrient groups: `Energy & Macronutrients` (blue), `Vitamins` (gold), and `Minerals` (green).']}
When viewing a recipe or food item in `Ayurveda & Asana Yoga` (`RecipeNutritionPanelView`), use the segmented picker at the top to switch between `Per serving` (what lands on one plate) and `Per 100 g` (standardized weight comparison). Directly underneath, a color-coded status badge shows whether ingredient nutrition coverage is `Full ingredient coverage` (green), `Estimated` (amber, with an orange `Missing nutrition:` list), or `Unavailable`.
Segmented basis toggle: Switch between `Per serving` and `Per 100 g` alongside the serving summary (`"N servings · X g total"`).
Three coverage statuses: `Full ingredient coverage` (`status == "full"`), `Estimated` (`status == "estimated"`), and `Unavailable` (`status == "none"`).
Why some chips show `—`: The caption explicitly states *"Calculated from USDA-bound ingredients. Unavailable USDA nutrient observations are shown as —."* An em-dash means the nutrient was not assayed, not that the food contains 0 mg.
Three color-coded nutrient groups: `Energy & Macronutrients` (blue), `Vitamins` (gold), and `Minerals` (green).
Switching Between "Per Serving" and "Per 100 g" Views
Comparing two recipes or ingredients by serving size alone can be misleading when one recipe defines a serving as a 150-gram bowl of dal and another defines a serving as a 320-gram one-pot meal. In `RecipeNutritionPanelView`, the segmented `Nutrition basis` picker (`RecipeNutritionBasis`) lets you flip instantaneously between `Per serving` (`nutritionPerServingJSON`) and `Per 100 g` (`nutritionPer100gJSON`).
Next to the status pill, `servingSummary` prints the exact denominator used for the calculation—formatted as `"(servings) servings · (totalWeightG.clean) g total"`. Use `Per serving` when logging a meal onto your daily calendar ring, and switch to `Per 100 g` whenever you want to compare the energy density, protein density, or sodium concentration of two different dishes on an equal-weight basis.
- `Per serving` mode: Divides total USDA-bound recipe nutrients by `servingsCount` (`servings`).
- `Per 100 g` mode: Normalizes the entire batch to 100 grams of total recipe weight (`nutritionTotalWeightG`).
- Three structured chip grids: Displays `Energy & Macronutrients` (kcal, protein, fat, saturated fat, carbohydrate, fiber, sugars), `Vitamins`, and `Minerals`.
What "Full Ingredient Coverage" vs. "Estimated" Means
Traditional and regional recipes sometimes include a garnish or specialty spice—such as dried curry leaves, kokum rind, or a pinch of hing—that does not have a complete multi-vitamin analytical row in USDA FoodData Central. Rather than hiding the entire recipe panel or silently ignoring unmapped items, `RecipeNutritionPanelView` displays an explicit coverage summary (`coverageSummary`).
When every ingredient in the recipe maps to a resolved USDA food record, the badge reads `Full ingredient coverage` in green (`#34A853`). When one or more minor ingredients lack a USDA match, the badge changes to `Estimated` in amber (`#FCC934`) and prints an orange warning line listing the exact unmapped items: `"Missing nutrition: <ingredient names>"`. If no ingredients can be resolved (`status == "none"`), the badge shows `Unavailable` and hides the nutrient grids rather than showing fake zeros.
- Green `Full ingredient coverage`: 100% of recipe ingredients resolved to USDA nutrient records.
- Amber `Estimated` + orange `Missing nutrition:` list: Shows which specific spices or garnishes were excluded from the nutrient sum.
- Why minor spice gaps rarely change macros: A 2-gram pinch of unmapped spice contributes negligible calories or macronutrients to a 900-gram pot of dal.
Why Missing USDA Observations Display an Em-Dash (—) Instead of Zero
In laboratory food composition databases like USDA FoodData Central, not every food sample is tested for every single trace vitamin or mineral (for example, biotin, pantothenic acid, or selenium may not have been assayed in a specific regional legume entry). Many consumer nutrition apps convert `null` database fields into `0.0 mg`, which tricks users into thinking a whole food contains zero micronutrients.
`RecipeNutritionPanelView` preserves data honesty: whenever `display.values(for: basis)[definition.key]` is `nil`, the `RecipeNutrientValueChip` renders an em-dash (`—`) and states right above the grid: *"Calculated from USDA-bound ingredients. Unavailable USDA nutrient observations are shown as —."* Seeing `—` tells you the laboratory observation was absent—not that the nutrient is biologically zero.
- `0 g` / `0 mg`: The laboratory analysis measured or confirmed zero (or trace below rounding threshold) for that nutrient.
- `—` (Em-dash): The nutrient observation was not reported in the underlying USDA record.
- Unit precision: Each chip reads its exact unit (`kcal`, `g`, `mg`, `µg`) from `nutritionUnitsJSON` or the nutrient definition default.
Frequently Asked Questions
Why does a recipe show "Estimated" in yellow at the top of the Recipe Nutrition card?
It means most ingredients were calculated from USDA records, but at least one ingredient in the recipe lacked a USDA nutrition mapping. Check the orange `"Missing nutrition:"` line directly underneath to see which item was omitted.
What is the difference between "0 mg" and "—" on a Vitamin or Mineral chip?
`0 mg` means the food was analyzed and contains zero of that nutrient (such as Vitamin B12 in plain plant foods); `—` means the USDA record did not include an analytical measurement for that specific nutrient.
Does toggling between "Per serving" and "Per 100 g" change how my meal is logged?
No. The segmented picker in `RecipeNutritionPanelView` is a viewing toggle so you can inspect both per-serving intake and per-100g nutrient density.





