/** * Onglet actif transmis d'une page a l'autre via l'etat d'historique * (`history.state`), SANS le mettre dans l'URL. Sert a preserver l'onglet courant * au passage consultation <-> edition d'un client (dans les deux sens). * * On reste donc fidele a la regle « etat d'UI local, pas dans l'URL » : l'onglet * voyage dans l'entree d'historique de la navigation, l'URL ne change pas. */ /** * Lit la cle d'onglet posee par la page precedente (`history.state.tab`) si elle * fait partie des onglets valides pour l'utilisateur. Retourne `null` sinon : * navigation directe / deep link, rechargement de page, ou onglet inexistant * pour ce role (ex: Comptabilite sans la permission). */ export function readHistoryTab(validKeys: string[]): string | null { if (typeof window === 'undefined') { return null } const tab = (window.history.state as Record | null)?.tab return typeof tab === 'string' && validKeys.includes(tab) ? tab : null }