/** * Kleiner Zustand für seitenübergreifende Absichten. * * Ein Tastaturkürzel wird im Layout ausgelöst, wirkt aber auf einer anderen * Seite. Statt Rückrufe durch den Baum zu reichen, hinterlegt das Layout hier * eine Absicht, die die Zielseite nach dem Wechsel abholt. */ import { create } from "zustand"; export type PendingAction = "new-transaction" | "new-recurrence"; interface UiStore { pendingAction: PendingAction | null; /** Zähler; jede Erhöhung fordert die aktive Seite auf, ihr Suchfeld zu fokussieren. */ searchFocusRequest: number; requestAction: (action: PendingAction) => void; /** Holt die Absicht ab und löscht sie. True, wenn sie zur Seite passte. */ consumeAction: (action: PendingAction) => boolean; requestSearchFocus: () => void; } export const useUiStore = create((set, get) => ({ pendingAction: null, searchFocusRequest: 0, requestAction: (action) => set({ pendingAction: action }), consumeAction: (action) => { if (get().pendingAction !== action) return false; set({ pendingAction: null }); return true; }, requestSearchFocus: () => set((zustand) => ({ searchFocusRequest: zustand.searchFocusRequest + 1 })), }));