add_imgui_app(primitives_gallery
    main.cpp
    demo.cpp
    demos_core.cpp
    demos_viz.cpp
    demos_graph.cpp
    demos_gfx.cpp
    demos_text_editor.cpp
    # text_editor + file_watcher (issue 0025)
    ${CMAKE_SOURCE_DIR}/functions/core/text_editor.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/file_watcher.cpp
    ${CMAKE_SOURCE_DIR}/vendor/imgui_text_edit/TextEditor.cpp
    # Core primitives demoed (tokens vive en fn_framework)
    ${CMAKE_SOURCE_DIR}/functions/core/fullscreen_window.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/page_header.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/dashboard_panel.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/badge.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/empty_state.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/button.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/icon_button.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/toolbar.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/modal_dialog.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/text_input.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/select.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/toast.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/tree_view.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/process_runner.cpp
    # Viz primitives demoed
    ${CMAKE_SOURCE_DIR}/functions/viz/kpi_card.cpp
    ${CMAKE_SOURCE_DIR}/functions/viz/bar_chart.cpp
    ${CMAKE_SOURCE_DIR}/functions/viz/pie_chart.cpp
    ${CMAKE_SOURCE_DIR}/functions/viz/line_plot.cpp
    ${CMAKE_SOURCE_DIR}/functions/viz/scatter_plot.cpp
    ${CMAKE_SOURCE_DIR}/functions/viz/histogram.cpp
    ${CMAKE_SOURCE_DIR}/functions/viz/sparkline.cpp
    # Graph stack (instanced GPU + Barnes-Hut + spatial hash)
    ${CMAKE_SOURCE_DIR}/functions/viz/graph_types.cpp
    ${CMAKE_SOURCE_DIR}/functions/viz/graph_renderer.cpp
    ${CMAKE_SOURCE_DIR}/functions/viz/graph_force_layout.cpp
    ${CMAKE_SOURCE_DIR}/functions/viz/graph_viewport.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/graph_spatial_hash.cpp
    # GL loader (Linux no-op, Windows wglGetProcAddress)
    ${CMAKE_SOURCE_DIR}/functions/gfx/gl_loader.cpp
    # Shader stack (shader_canvas demo)
    ${CMAKE_SOURCE_DIR}/functions/gfx/gl_shader.cpp
    ${CMAKE_SOURCE_DIR}/functions/gfx/gl_framebuffer.cpp
    ${CMAKE_SOURCE_DIR}/functions/gfx/fullscreen_quad.cpp
    ${CMAKE_SOURCE_DIR}/functions/gfx/shader_canvas.cpp
)
target_include_directories(primitives_gallery PRIVATE
    ${CMAKE_SOURCE_DIR}/vendor/imgui_text_edit
)

if(WIN32)
    target_link_libraries(primitives_gallery PRIVATE opengl32)
endif()

if(WIN32)
    set_target_properties(primitives_gallery PROPERTIES WIN32_EXECUTABLE TRUE)
endif()
