diff --git a/src/views/eat-clean/components/DayCard.vue b/src/views/eat-clean/components/DayCard.vue new file mode 100644 index 00000000..f06bc893 --- /dev/null +++ b/src/views/eat-clean/components/DayCard.vue @@ -0,0 +1,57 @@ + + + diff --git a/src/views/eat-clean/components/RecipeDetail.vue b/src/views/eat-clean/components/RecipeDetail.vue new file mode 100644 index 00000000..0758dd12 --- /dev/null +++ b/src/views/eat-clean/components/RecipeDetail.vue @@ -0,0 +1,124 @@ + + + + + diff --git a/src/views/eat-clean/data/meals.ts b/src/views/eat-clean/data/meals.ts new file mode 100644 index 00000000..ed44e8f8 --- /dev/null +++ b/src/views/eat-clean/data/meals.ts @@ -0,0 +1,68 @@ +export interface Meal { + id: string + name: string + calories: number +} + +export interface DayPlan { + day: string + breakfast: Meal + lunch: Meal + dinner: Meal +} + +export const breakfasts: Meal[] = [ + { id: 'b1', name: 'Yến mạch ngâm sữa hạt (Overnight Oats) 🥣', calories: 300 }, + { id: 'b2', name: 'Bánh mì đen & Trứng ốp la 🥚🍞', calories: 280 }, + { id: 'b3', name: 'Sinh tố xanh (Rau bina, bơ, chuối) 🥑', calories: 250 }, + { id: 'b4', name: 'Sữa chua không đường & Trái cây tươi 🍓', calories: 200 }, + { id: 'b5', name: 'Khoai lang luộc & Bơ đậu phộng 🍠', calories: 260 }, + { id: 'b6', name: 'Trứng luộc & Táo xanh 🍏', calories: 150 }, + { id: 'b7', name: 'Pancake yến mạch chuối 🥞', calories: 320 }, + { id: 'b8', name: 'Bún lứt trộn ức gà xé 🍜', calories: 350 }, + { id: 'b9', name: 'Smoothie bowl ngũ cốc trái cây 🥥', calories: 280 } +] + +export const lunches: Meal[] = [ + { id: 'l1', name: 'Cơm gạo lứt & Ức gà nướng tiêu 🍗', calories: 450 }, + { id: 'l2', name: 'Salad cá ngừ ngâm nước sốt chanh dây 🥗', calories: 380 }, + { id: 'l3', name: 'Bún lứt xào thịt bò nạc & cải thìa 🍜', calories: 420 }, + { id: 'l4', name: 'Cơm lứt & Cá hồi áp chảo măng tây 🍣', calories: 500 }, + { id: 'l5', name: 'Mì rau củ xốt cà chua thịt nạc băm 🍝', calories: 400 }, + { id: 'l6', name: 'Nui lứt lườn cá hồi xốt Pesto 🥣', calories: 460 }, + { id: 'l7', name: 'Salad ức gà áp chảo sốt mè rang 🍗', calories: 350 }, + { id: 'l8', name: 'Cơm quinoa & Đậu hũ xốt nấm 🍄', calories: 380 }, + { id: 'l9', name: 'Cuốn tôm thịt luộc & bánh tráng lứt 🍤', calories: 320 }, + { id: 'l10', name: 'Cơm lứt & Thịt heo nạc xào giá hẹ 🍛', calories: 430 } +] + +export const dinners: Meal[] = [ + { id: 'd1', name: 'Salad ức gà xé phay & bắp ngọt 🌽', calories: 280 }, + { id: 'd2', name: 'Bò né nạc áp chảo kèm salad giấm 🥩', calories: 350 }, + { id: 'd3', name: 'Tôm hấp & Canh bí đỏ thịt băm 🦐', calories: 300 }, + { id: 'd4', name: 'Ức gà cuộn rau củ hấp 🥕', calories: 250 }, + { id: 'd5', name: 'Súp lơ xanh luộc & Cá lóc hấp hành 🐟', calories: 280 }, + { id: 'd6', name: 'Salad dưa leo cà chua & Trứng luộc 🍅', calories: 200 }, + { id: 'd7', name: 'Đậu hũ non sốt cà chua & Nấm kim châm 🍲', calories: 220 }, + { id: 'd8', name: 'Canh rong biển đậu non & thịt băm nạc 🌿', calories: 150 }, + { id: 'd9', name: 'Bắp bắp luộc & Thịt băm xào nấm mộc nhĩ 🌽', calories: 300 } +] + +export const getRandomItem = (array: Meal[], excludeId: string | null = null): Meal => { + let filtered = excludeId ? array.filter(item => item.id !== excludeId) : array + if (filtered.length === 0) filtered = array + const randomIndex = Math.floor(Math.random() * filtered.length) + return filtered[randomIndex]! +} + +export const generateWeeklyMenu = (): DayPlan[] => { + const daysOfWeek = ['Thứ 2', 'Thứ 3', 'Thứ 4', 'Thứ 5', 'Thứ 6', 'Thứ 7', 'Chủ Nhật'] + return daysOfWeek.map((day) => { + return { + day, + breakfast: getRandomItem(breakfasts), + lunch: getRandomItem(lunches), + dinner: getRandomItem(dinners), + } + }) +} diff --git a/src/views/eat-clean/data/recipes.ts b/src/views/eat-clean/data/recipes.ts new file mode 100644 index 00000000..5b716e41 --- /dev/null +++ b/src/views/eat-clean/data/recipes.ts @@ -0,0 +1,56 @@ +export interface Recipe { + ingredients: string[] + steps: string[] +} + +export interface RecipeMap { + [key: string]: Recipe +} + +export const recipes: RecipeMap = { + 'b1': { + ingredients: [ + '40g yến mạch cán dẹt', + '100ml sữa tươi/sữa hạt không đường', + '1 muỗng hạt chia', + 'Trái cây tùy thích (chuối, dâu tây, việt quất)', + '1/2 muỗng mật ong (tùy chọn)' + ], + steps: [ + 'Cho yến mạch và hạt chia vào một chiếc hũ thủy tinh sạch.', + 'Đổ sữa tươi hoặc sữa hạt vào hũ sao cho ngập phần yến mạch.', + 'Thêm một chút mật ong nếu thích ăn ngọt, sau đó khuấy đều.', + 'Đậy nắp kín, cho vào ngăn mát tủ lạnh ngâm qua đêm (ít nhất 4 tiếng).', + 'Sáng hôm sau, lấy ra thêm trái cây cắt nhỏ lên trên và thưởng thức. Cực kỳ nhanh gọn!' + ] + }, + 'l1': { + ingredients: [ + '100g ức gà tươi', + '1 bát cơm gạo lứt (chín)', + '1/2 cây súp lơ xanh', + '1 muỗng cà phê dầu oliu', + 'Tiêu chanh, hạt nêm diet, xì dầu' + ], + steps: [ + 'Ức gà rửa sạch, khía mặt để thấm gia vị. Ướp với hạt nêm diet và tiêu chanh trong 15 phút.', + 'Súp lơ xanh cắt miếng vừa ăn, luộc chín tới.', + 'Làm nóng chảo, cho chút dầu oliu, áp chảo ức gà mỗi mặt 3-4 phút đến khi chín vàng.', + 'Thái ức gà thành lát. Bày ra đĩa cùng cơm gạo lứt và súp lơ. Ngon vô cùng!' + ] + }, + 'd1': { + ingredients: [ + '80g ức gà luộc xé phay', + '1/2 bắp ngô ngọt luộc tách hạt', + 'Xà lách, cà chua bi', + 'Dầu oliu, nước cốt chanh, một chút muối hồng' + ], + steps: [ + 'Rửa sạch xà lách và cà chua bi, cắt miếng vừa ăn.', + 'Pha nước xốt: 1 muỗng dầu oliu + 1 muỗng nước cốt chanh + xíu muối hồng.', + 'Cho rau củ, ngô ngọt và ức gà xé vào tô lớn.', + 'Rưới nước xốt lên trên trộn đều. Ăn tối nhẹ bụng nhưng vẫn đủ chất cho ngày dài năng động!' + ] + } +} diff --git a/src/views/eat-clean/index.vue b/src/views/eat-clean/index.vue new file mode 100644 index 00000000..3495add2 --- /dev/null +++ b/src/views/eat-clean/index.vue @@ -0,0 +1,208 @@ + + + + + diff --git a/src/views/eat-clean/meta.ts b/src/views/eat-clean/meta.ts new file mode 100644 index 00000000..60b4855e --- /dev/null +++ b/src/views/eat-clean/meta.ts @@ -0,0 +1,11 @@ +import type { PageMeta } from '@/types/page' + +const meta: PageMeta = { + name: 'Eat Clean', + description: 'Thực đơn Eat Clean giúp bạn giảm cân và duy trì vóc dáng.', + author: 'mtdes23', + facebook: 'https://www.facebook.com/mtdes233/', + category: 'tool', +} + +export default meta