#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
