"use client"; import { useRouter, useSearchParams } from "next/navigation"; import { useCallback } from "react"; export type SettingsTabId = | "profil" | "ernaehrung" | "ziele" | "sicherheit" | "anwendung"; const tabs: { id: SettingsTabId; label: string; description: string }[] = [ { id: "profil", label: "Profil", description: "Persönliche Daten und Kontakt" }, { id: "ernaehrung", label: "Ernährung", description: "Rezept- und Mahlzeiten-Präferenzen" }, { id: "ziele", label: "Ziele", description: "Kalorien, Makros, Gewicht, Fasten" }, { id: "sicherheit", label: "Sicherheit", description: "2FA, Passkeys, Passwort" }, { id: "anwendung", label: "Anwendung", description: "Erscheinungsbild und Erinnerungen" }, ]; export function useSettingsTab(): { active: SettingsTabId; setActive: (id: SettingsTabId) => void; } { const router = useRouter(); const search = useSearchParams(); const tabParam = search.get("tab"); const active: SettingsTabId = tabs.find((tab) => tab.id === tabParam)?.id ?? "profil"; const setActive = useCallback( (id: SettingsTabId) => { const params = new URLSearchParams(search.toString()); params.set("tab", id); router.replace(`/einstellungen?${params.toString()}`, { scroll: false }); }, [router, search], ); return { active, setActive }; } export function SettingsTabs({ active, onChange, }: { active: SettingsTabId; onChange: (id: SettingsTabId) => void; }) { const activeMeta = tabs.find((tab) => tab.id === active); return (
{activeMeta.description}
) : null}