- NutritionPanel: Display seed switch alert on day 15 per dashboard spec - MonthView: Add phase emojis to legend (🩸🌱🌸🌙🌑) per calendar spec - DayCell: Show period indicator (🩸) for days 1-3 per calendar spec - Auth middleware: Log client IP from x-forwarded-for/x-real-ip per observability spec - Updated NutritionGuidance type to include seedSwitchAlert field - /api/today now returns seedSwitchAlert in nutrition response Test coverage: 1005 tests (15 new tests added) - nutrition-panel.test.tsx: +4 tests - month-view.test.tsx: +1 test - day-cell.test.tsx: +5 tests - auth-middleware.test.ts: +3 tests - today/route.test.ts: +2 tests Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
26 lines
833 B
TypeScript
26 lines
833 B
TypeScript
// ABOUTME: Dashboard panel showing nutrition guidance.
|
||
// ABOUTME: Displays seed cycling and macro recommendations.
|
||
import type { NutritionGuidance } from "@/types";
|
||
|
||
interface NutritionPanelProps {
|
||
nutrition: NutritionGuidance;
|
||
}
|
||
|
||
export function NutritionPanel({ nutrition }: NutritionPanelProps) {
|
||
return (
|
||
<div className="rounded-lg border p-4">
|
||
<h3 className="font-semibold mb-4">NUTRITION TODAY</h3>
|
||
{nutrition.seedSwitchAlert && (
|
||
<div className="mb-3 p-2 rounded bg-amber-100 dark:bg-amber-900 text-sm font-medium">
|
||
{nutrition.seedSwitchAlert}
|
||
</div>
|
||
)}
|
||
<ul className="space-y-2 text-sm">
|
||
<li>🌱 {nutrition.seeds}</li>
|
||
<li>🍽️ Carbs: {nutrition.carbRange}</li>
|
||
<li>🥑 Keto: {nutrition.ketoGuidance}</li>
|
||
</ul>
|
||
</div>
|
||
);
|
||
}
|