---
name: tab_container
kind: component
lang: cpp
domain: core
version: "1.0.0"
purity: pure
signature: "bool tab_container_begin(const char* id)"
description: "Contenedor de tabs para organizar vistas multiples en un dashboard"
tags: [imgui, tabs, container, layout, dashboard]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: [imgui]
tested: false
tests: []
test_file_path: ""
file_path: "cpp/functions/core/tab_container.cpp"
framework: imgui
params:
  - name: id
    desc: "Identificador unico del tab bar (ej: '##views'). Puede ser invisible con prefijo ##"
  - name: label
    desc: "Etiqueta visible de cada tab individual"
output: "tab_container_begin: true si el tab bar esta activo. tab_container_tab: true si el tab esta seleccionado y se debe renderizar su contenido"
---

# tab_container

Wrapper fino sobre `ImGui::BeginTabBar` / `EndTabBar` con flags de dashboard preconfigurados: `Reorderable` (arrastrar tabs) y `FittingPolicyResizeDown` (tabs se achican si no caben).

API de cuatro funciones siguiendo el patron begin/end de ImGui. Siempre llamar `tab_container_end()` si `tab_container_begin()` retorno true. Siempre llamar `tab_container_tab_end()` dentro del bloque `if (tab_container_tab(...))`.

## Ejemplo

```cpp
void render_fn() {
    ImGui::Begin("Dashboard");

    if (tab_container_begin("##main_tabs")) {
        if (tab_container_tab("Overview")) {
            render_overview();
            tab_container_tab_end();
        }
        if (tab_container_tab("Details")) {
            render_details();
            tab_container_tab_end();
        }
        if (tab_container_tab("Settings")) {
            render_settings();
            tab_container_tab_end();
        }
    }
    tab_container_end();

    ImGui::End();
}
```

## Notas

Los flags `ImGuiTabBarFlags_Reorderable | ImGuiTabBarFlags_FittingPolicyResizeDown` son fijos para estandarizar la experiencia de tabs en dashboards. Si se necesitan flags distintos usar `ImGui::BeginTabBar` directamente.
