---
name: sidebar
kind: component
lang: cpp
domain: core
version: "1.0.0"
purity: pure
signature: "bool sidebar_begin(const char* title, bool* open, float width = 250.0f)"
description: "Panel lateral colapsable para filtros y controles de dashboard"
tags: [imgui, sidebar, panel, layout, dashboard, controls]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: [imgui]
tested: false
tests: []
test_file_path: ""
file_path: "cpp/functions/core/sidebar.cpp"
framework: imgui
params:
  - name: title
    desc: "Titulo del sidebar mostrado en la barra de titulo de la ventana"
  - name: open
    desc: "Puntero al estado abierto/cerrado; se pone a false si el usuario cierra la ventana"
  - name: width
    desc: "Ancho del sidebar en pixels (por defecto 250)"
output: "true si el sidebar esta abierto y se debe renderizar contenido entre sidebar_begin y sidebar_end"
---

# sidebar

Panel lateral colapsable. Cuando `*open == true` renderiza una ventana ImGui de ancho fijo con boton de cierre. Cuando `*open == false` muestra un boton compacto ">" para reabrir.

Siempre llamar `sidebar_end()` despues de `sidebar_begin()`, independientemente del valor de retorno.

## Ejemplo

```cpp
static bool filters_open = true;

void render_fn() {
    if (sidebar_begin("Filters", &filters_open)) {
        ImGui::SliderFloat("Min value", &min_val, 0.0f, 100.0f);
        ImGui::Checkbox("Show inactive", &show_inactive);
    }
    sidebar_end();

    // contenido principal
    ImGui::Begin("Main");
    // ...
    ImGui::End();
}
```

## Notas

El estado de `s_sidebar_was_open` es una variable estatica interna que coordina `sidebar_begin` y `sidebar_end`. Solo un sidebar activo a la vez por frame (patron begin/end clasico de ImGui). Para multiples sidebars simultaneos, instanciar logica propia con estado separado.
