// Module manifest visible to fn_framework's About panel.
//
// Each app gets an auto-generated <app>_modules_generated.cpp (codegen via
// python/functions/infra/codegen_app_modules.py, invoked by add_imgui_app at
// CMake configure time) that defines the array + count below from the app's
// `uses_modules:` declaration in its app.md.
//
// Apps without uses_modules still get a stub array of length 0 — links cleanly.
//
// Framework reads via:
//
//   for (size_t i = 0; i < fn::app_modules_count; ++i) {
//       const auto& m = fn::app_modules_array[i];
//       ImGui::Text("%s v%s — %s", m.name, m.version, m.description);
//   }

#pragma once

#include <cstddef>

namespace fn {

struct ModuleInfo {
    const char* name;
    const char* version;
    const char* description;
};

extern const ModuleInfo app_modules_array[];
extern const unsigned long app_modules_count;

// App identity para el header badge en viewports secundarios (panels arrastrados
// fuera del main window). Auto-generados desde el bloque `icon:` del app.md
// por codegen_app_modules.py. Permiten que el framework dibuje el cuadrado
// accent con la identidad visual de la app sin que main.cpp deba pasar el hex
// manualmente.
//
//   app_header_accent_hex: "#RRGGBB" desde icon.accent (default "" si no se
//                          declara — framework cae a hash-derived).
//   app_header_glyph_name: nombre del glyph Phosphor desde icon.phosphor.
//                          Hoy informativo: el framework C++ no tiene fuente
//                          Phosphor cargada, asi que cae a primera letra de
//                          about.name. Reservado para futuro mapping Tabler.
extern const char* const app_header_accent_hex;
extern const char* const app_header_glyph_name;

} // namespace fn
