import React, { createContext, useContext } from 'react'; import type { SettingsTab, ViewState } from '../types'; /** * Kleiner Kontext, damit tief liegende Komponenten die Ansicht wechseln koennen - * etwa der Hinweis im Opportunity-Formular, der zu den Whisper-Einstellungen * fuehrt. Sonst muesste die Funktion durch vier Ebenen Props gereicht werden. * * `tab` waehlt beim Sprung in die Einstellungen gleich den richtigen Reiter aus; * Whisper ist genau so ein Ziel und hat deshalb keinen eigenen Menuepunkt mehr. * * `leadId` oeffnet in der Kontaktansicht direkt den passenden Kontakt - die * Mailansicht springt so von einer Zuordnung zum Kontakt, ohne dass der Benutzer * ihn in der Liste suchen muss. */ interface NavigationContextValue { currentView: ViewState; goTo: (view: ViewState, options?: { tab?: SettingsTab; leadId?: number }) => void; } const NavigationContext = createContext(null); export const NavigationProvider: React.FC<{ value: NavigationContextValue; children: React.ReactNode; }> = ({ value, children }) => ( {children} ); export function useNavigation(): NavigationContextValue { const ctx = useContext(NavigationContext); if (!ctx) throw new Error('useNavigation muss innerhalb von verwendet werden.'); return ctx; }