Mobile-first Web-App fuer persoenliches Health-, Ernaehrungs-, Aktivitaets- und Einkaufs-Tracking im Home-Lab-Betrieb. Stack: pnpm Monorepo - Next.js 16 + React 19 + Tailwind (apps/admin) - Hono + tRPC + Better Auth mit 2FA und Passkeys (packages/api) - PostgreSQL + Drizzle ORM (packages/db) - Docker fuer Postgres und pgAdmin. Module: - Auth mit Login, 2FA (TOTP + Backup-Codes), Passkeys und Admin-Recovery - Tagesansicht mit Essen, Trinken, Gewicht, Aktivitaeten und Coach-Hinweisen - Lebensmittelkatalog mit Naehrwerten, Portionen, OCR/Barcode/Open Food Facts - Rezepte mit Live-Naehrwertberechnung und Community-Vorschlaegen - Essensplanung und Wochenbudget mit Sportbonus - Einkaufslisten mit Maerkten und Laufweg-Sortierung - Hellfireclub mit Aktivitaetspunkten und gemeinsamer Aktivitaetsplanung - Wearables-Vorbereitung (Fitbit / Google Fit / Health Connect) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
25 lines
736 B
TypeScript
25 lines
736 B
TypeScript
import { HelpLink } from "./help-link";
|
|
|
|
interface PageHeaderProps {
|
|
title: string;
|
|
description?: string;
|
|
action?: React.ReactNode;
|
|
helpTopic?: string;
|
|
}
|
|
|
|
export function PageHeader({ title, description, action, helpTopic }: PageHeaderProps) {
|
|
return (
|
|
<div className="flex items-start justify-between">
|
|
<div>
|
|
<h1 className="text-2xl font-bold text-gray-900 dark:text-neutral-100">{title}</h1>
|
|
{description && (
|
|
<p className="text-sm text-gray-500 dark:text-neutral-400 mt-1">{description}</p>
|
|
)}
|
|
</div>
|
|
<div className="flex items-center gap-2">
|
|
{action ? <div>{action}</div> : null}
|
|
<HelpLink topicOverride={helpTopic} />
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|