// A tiny module-level stack so only the topmost open dialog (Modal or Drawer) // reacts to Escape and owns the background `inert` toggle. This keeps stacked // dialogs (e.g. a confirm on top of a management modal) from all closing at once. const stack: symbol[] = []; /** Push a dialog onto the stack. Returns its token. */ export function pushDialog(): symbol { const token = Symbol("dialog"); stack.push(token); return token; } /** Remove a dialog from the stack by token. */ export function popDialog(token: symbol): void { const i = stack.lastIndexOf(token); if (i !== -1) stack.splice(i, 1); } /** True when `token` is the topmost open dialog. */ export function isTopDialog(token: symbol): boolean { return stack.length > 0 && stack[stack.length - 1] === token; } /** True when any dialog is open. */ export function hasOpenDialog(): boolean { return stack.length > 0; }