Files
fn_registry/cpp/functions/core/toast.h
T
egutierrez da6a8b5e59 feat(cpp/core): primitivas UI estilo Mantine
Anade 9 primitivas reutilizables al registry C++ que replican el comportamiento
de los componentes correspondientes de @fn_library / Mantine v9, todas
estilizadas con tokens_cpp_core (colores Mantine dark + indigo):

- button_cpp_core         (component, pure)  variantes primary/secondary/subtle/danger + sm/md/lg
- icon_button_cpp_core    (component, pure)  cuadrado 28x28 con glyph centrado + tooltip
- toolbar_cpp_core        (component, pure)  grupo horizontal de acciones con separadores
- modal_dialog_cpp_core   (component, pure)  popup modal centrada + close con Escape
- text_input_cpp_core     (component, impure) InputText con label muted + placeholder
- select_cpp_core         (component, impure) dropdown con label + opcion '(none)' opcional
- toast_cpp_core          (component, impure) notificaciones efimeras + inbox con badge
- tree_view_cpp_core      (component, impure) jerarquia low-level con tree_node_clicked helper
- process_runner_cpp_core (component, impure) tarea en std::thread + spinner inline

Cada primitiva tiene su .md con frontmatter completo (params/output) y se
indexa via fn index. Son la base del primitives_gallery y de cualquier
app fn_ui futura.
2026-04-25 21:25:39 +02:00

42 lines
1.4 KiB
C++

#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