feat: add meal planning feature with API integration

- Introduced MealPlanApiPaths for handling meal plan related API endpoints.
- Added MealPlanScreen for displaying and managing meal plans.
- Implemented MealPlanRepository for fetching and updating meal plan data.
- Created data models: MealPlanEntry, MealPlanRecipe, InventoryCompareItem, ShoppingItem, and MealPlanDashboard.
- Integrated meal plan functionality into the app router and UI.
- Updated localization files for meal plan related strings in English and Swedish.
- Added state management for meal plan using Riverpod.
This commit is contained in:
Nils-Johan Gynther
2026-04-22 19:51:33 +02:00
parent b8627d0b7f
commit e495a4b38e
14 changed files with 1098 additions and 0 deletions
+61
View File
@@ -2,6 +2,67 @@
"@@locale": "en",
"appTitle": "Recipe App",
"retryAction": "Retry",
"mealPlanTitle": "Meal plan",
"mealPlanLoading": "Loading meal plan...",
"mealPlanWeekPrevious": "Previous week",
"mealPlanWeekNext": "Next week",
"mealPlanWeekCurrent": "Current week",
"mealPlanDayNoRecipe": "Nothing planned",
"mealPlanSelectRecipe": "Choose recipe",
"mealPlanViewRecipe": "View recipe",
"mealPlanServingsLabel": "Servings",
"mealPlanResetServings": "Reset",
"mealPlanSaving": "Saving...",
"mealPlanPlannedRecipes": "{count, plural, one {# recipe planned} other {# recipes planned}}",
"@mealPlanPlannedRecipes": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"mealPlanShoppingTitle": "Shopping list",
"mealPlanPickRecipeHint": "Choose recipes above to see the combined ingredient list.",
"mealPlanNoShoppingItems": "No ingredients to show for this week.",
"mealPlanNoRecipesTitle": "There are no recipes to plan yet.",
"mealPlanNoRecipesDescription": "Create at least one recipe first, then add it to the meal plan.",
"mealPlanMissingCount": "{count, plural, one {# missing} other {# missing}}",
"@mealPlanMissingCount": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"mealPlanPartialCount": "{count, plural, one {# partially at home} other {# partially at home}}",
"@mealPlanPartialCount": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"mealPlanEnoughCount": "{count, plural, one {# at home} other {# at home}}",
"@mealPlanEnoughCount": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"mealPlanPantryCount": "{count, plural, one {# pantry staple} other {# pantry staples}}",
"@mealPlanPantryCount": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"mealPlanAllAtHome": "You already have everything at home.",
"mealPlanStatusMissing": "Missing",
"mealPlanStatusPartial": "Partially at home",
"mealPlanStatusEnough": "At home",
"mealPlanStatusPantry": "Pantry staple",
"loginTitle": "Sign in",
"usernameLabel": "Username",
"usernameRequired": "Enter your username.",