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.
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
#pragma once
|
||||
|
||||
// Button con variantes (primary/secondary/subtle/danger) y tamanos (sm/md/lg)
|
||||
// usando fn_tokens. Replica el <Button> de Mantine v9 / @fn_library.
|
||||
//
|
||||
// Uso:
|
||||
// if (fn_ui::button("Save", fn_ui::ButtonVariant::Primary)) { ... }
|
||||
// if (fn_ui::button("Cancel", fn_ui::ButtonVariant::Subtle)) { ... }
|
||||
|
||||
namespace fn_ui {
|
||||
|
||||
enum class ButtonVariant {
|
||||
Primary, // indigo bg, blanco text (Mantine filled)
|
||||
Secondary, // surface bg, border, text normal (default)
|
||||
Subtle, // transparente, text primary, hover surface
|
||||
Danger, // error bg, blanco text
|
||||
};
|
||||
|
||||
enum class ButtonSize {
|
||||
Sm, // altura ~24, padding 6x12, font default
|
||||
Md, // altura ~32, padding 8x16, font default (default)
|
||||
Lg, // altura ~40, padding 10x20, font x1.1
|
||||
};
|
||||
|
||||
// Renderiza el boton y devuelve true el frame en que se hace click.
|
||||
bool button(const char* label,
|
||||
ButtonVariant variant = ButtonVariant::Secondary,
|
||||
ButtonSize size = ButtonSize::Md);
|
||||
|
||||
} // namespace fn_ui
|
||||
Reference in New Issue
Block a user