{% macro render_setting(setting, id_prefix="") %}
{% set setting_id = (id_prefix ~ "-" if id_prefix else "") ~ setting.key|replace(".", "-") %}
{% if setting.description %}
{% endif %}
{% if setting.ui_element == "textarea" %}
{# Check if this is JSON content that should be expanded into controls #}
{% if setting.value is mapping or (setting.value is string and (setting.value.startswith('{') and setting.value.endswith('}'))) %}
{% if setting.value is string %}
{% set json_value = setting.value|tojson %}
{% else %}
{% set json_value = setting.value %}
{% endif %}
{# Store the original JSON in a hidden field #}
{# Create individual form controls for each JSON property #}
{% for key, value in json_value.items() %}
{% if value is boolean %}
{{ key|replace("_", " ")|title }}
{% elif value is number %}
{% elif value is string and value in ["ITERATION", "NONE"] %}
{% else %}
{% endif %}
{% elif setting.ui_element == "slider" or setting.ui_element == "range" %}
{% set min_value = setting.min_value if setting.min_value is not none else 0 %}
{% set max_value = setting.max_value if setting.max_value is not none else 100 %}
{% set step = setting.step if setting.step is not none else 1 %}
{{ setting.value if setting.value is not none else min_value }}
{% elif setting.ui_element == "number" %}
{% set min_value = setting.min_value if setting.min_value is not none else "" %}
{% set max_value = setting.max_value if setting.max_value is not none else "" %}
{% set step = setting.step if setting.step is not none else 1 %}
{% elif setting.ui_element == "password" %}
{% elif setting.key == "llm.model" or setting.key == "search.tool" %}
{% from "components/custom_dropdown.html" import render_dropdown %}
{{ render_dropdown(
input_id=setting.key,
dropdown_id=setting_id + "-dropdown",
placeholder="Select or enter a value",
label=None,
help_text=setting.description if setting.description else None,
allow_custom=setting.key == "llm.model",
show_refresh=True,
refresh_aria_label="Refresh model list" if setting.key == "llm.model" else "Refresh search engine list",
data_setting_key=setting.key
) }}
{% else %}
{% if setting.value is mapping or (setting.value is string and (setting.value.startswith('{') and setting.value.endswith('}'))) %}
{% if setting.value is string %}
{% set json_value = setting.value|tojson %}
{% else %}
{% set json_value = setting.value %}
{% endif %}
{# Store the original JSON in a hidden field #}
{# Create individual form controls for each JSON property #}
{% for key, value in json_value.items() %}
{% if value is boolean %}
{{ key|replace("_", " ")|title }}
{% elif value is number %}
{% else %}
{% endif %}
{{ key|replace("_", " ")|title }}
{% endfor %}
{% else %}
{% endif %}
{% endif %}
{% if setting.description and setting.key != "llm.model" and setting.key != "search.tool" and setting.key != "llm.provider" %}