#pragma once

// Slider con label muted arriba + value display, estilo acorde con fn_tokens.
// Equivalente simple de <Slider> de Mantine / fn_library.
//
// Uso:
//   static float p = 0.2f;
//   fn_ui::slider_float("Probabilidad de pagar", &p, 0.0f, 1.0f);
//
//   static int n = 10;
//   fn_ui::slider_int("Spins por sesion", &n, 1, 100);

namespace fn_ui {

// Renderiza label arriba + slider abajo. fmt es el printf-format que
// ImGui usa para el value display (default "%.3f"). Devuelve true si el
// valor cambio este frame.
bool slider_float(const char* label, float* value,
                  float min_v, float max_v,
                  const char* fmt = "%.3f");

// Logaritmico: util para parametros que cubren ordenes de magnitud
// (sigma, learning rate, ...).
bool slider_float_log(const char* label, float* value,
                      float min_v, float max_v,
                      const char* fmt = "%.4f");

bool slider_int(const char* label, int* value,
                int min_v, int max_v,
                const char* fmt = "%d");

// Variante double: ImGui no tiene SliderDouble, asi que internamente
// down-cast a float — ojo si tu rango requiere precision fp64.
bool slider_double(const char* label, double* value,
                   double min_v, double max_v,
                   const char* fmt = "%.6f");

} // namespace fn_ui
