Files
Epicure/apps/web/app/(app)/settings/nutrition/page.tsx
T
Arnaud b2d592afe8 feat(settings): sidebar layout with profile, security, AI, notifications, nutrition
Sticky sidebar nav. Sections: Profile (name/language), Security (email/password change),
AI & Models (BYOK keys + per-use-case model prefs), Notifications (push subscribe),
Nutrition goals. Sub-pages: API keys, Webhooks.
2026-07-01 08:10:51 +02:00

42 lines
1.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { Metadata } from "next";
import { headers } from "next/headers";
import { auth } from "@/lib/auth/server";
import { db, userNutritionGoals, eq } from "@epicure/db";
import { NutritionGoalsForm } from "@/components/nutrition/nutrition-goals-form";
export const metadata: Metadata = { title: "Nutrition Settings" };
export default async function NutritionPage() {
const session = await auth.api.getSession({ headers: await headers() });
if (!session) return null;
const goals = await db.query.userNutritionGoals.findFirst({
where: eq(userNutritionGoals.userId, session.user.id),
});
return (
<div className="space-y-8">
<section className="rounded-xl border p-6 space-y-4">
<div>
<h2 className="font-semibold text-lg">Daily Nutrition Goals</h2>
<p className="text-sm text-muted-foreground mt-1">
Set your daily targets. These are shown as progress bars on your meal plan.
</p>
</div>
<NutritionGoalsForm
initialGoals={
goals
? {
caloriesKcal: goals.caloriesKcal,
proteinG: goals.proteinG,
carbsG: goals.carbsG,
fatG: goals.fatG,
}
: null
}
/>
</section>
</div>
);
}