#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
