#pragma once // Sistema de toasts + inbox centralizado. // - toast_push: encola un toast efimero (~3.5s con fade-out). // - toast_render: renderiza los toasts activos; llamar una vez por frame. // - toast_inbox_button: icono campana con badge de no-leidos + popover con // historial completo. // // Uso minimo: // fn_ui::toast_push(fn_ui::ToastKind::Success, "Reindexed 881 functions"); // // // Una vez por frame (despues del contenido principal): // fn_ui::toast_render(); // // // En la toolbar, al lado de los botones de accion: // fn_ui::toast_inbox_button("##inbox"); namespace fn_ui { enum class ToastKind { Info, Success, Warning, Error }; // Encola un toast y lo guarda tambien en el historial del inbox. // Si `text` es null o vacio, se sustituye por "(no message)". void toast_push(ToastKind kind, const char* text); // Renderiza los toasts activos (fade-out automatico). Llamar una vez por // frame despues del contenido principal. void toast_render(); // Boton de inbox: campana + badge con numero de no-leidos. Al hacer click // abre un popover con el historial completo. Tambien marca todo como leido. // `id` debe ser unico en la ventana. void toast_inbox_button(const char* id); // Devuelve cuantos toasts nuevos hay desde la ultima vez que se abrio el inbox. int toast_unread_count(); // Borra el historial completo (el popover permite hacerlo tambien con un boton). void toast_history_clear(); } // namespace fn_ui