da6a8b5e59
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.
42 lines
1.4 KiB
C++
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
|