Introduce the four-tab hubs (Jetzt/Küche/Planen/Wissen), frosted ingredient flyouts with caution reasons, structured nutrition fields with protein sorting, and disabled coming-soon nav tiles. Co-authored-by: Cursor <cursoragent@cursor.com>
36 lines
1.0 KiB
TypeScript
36 lines
1.0 KiB
TypeScript
import type { MealTime, MealType } from "@/types/domain"
|
|
|
|
export interface TimeContext {
|
|
mealTime: MealTime
|
|
mealType: MealType
|
|
hour: number
|
|
minute: number
|
|
}
|
|
|
|
/**
|
|
* Local-time meal context for the suggestion engine.
|
|
* until 10:30 → breakfast · until 14:30 → lunch · until 17:30 → snack · else dinner
|
|
*/
|
|
export function getTimeContext(date = new Date()): TimeContext {
|
|
const hour = date.getHours()
|
|
const minute = date.getMinutes()
|
|
const minutes = hour * 60 + minute
|
|
|
|
let mealTime: MealTime
|
|
if (minutes < 10 * 60 + 30) mealTime = "breakfast"
|
|
else if (minutes < 14 * 60 + 30) mealTime = "lunch"
|
|
else if (minutes < 17 * 60 + 30) mealTime = "snack"
|
|
else mealTime = "dinner"
|
|
|
|
const mealType: MealType =
|
|
mealTime === "breakfast" || mealTime === "snack" ? "half" : "full"
|
|
|
|
return { mealTime, mealType, hour, minute }
|
|
}
|
|
|
|
export function formatClock(hour: number, minute: number): string {
|
|
const hh = String(hour).padStart(2, "0")
|
|
const mm = String(minute).padStart(2, "0")
|
|
return `${hh}:${mm}`
|
|
}
|