%
# Parameters:
# - configuration: Provider::Configurable::Configuration object
provider_key = configuration.provider_key.to_s
setup_steps_data =
if %w[plaid plaid_eu].include?(provider_key)
plaid_link = link_to("Plaid Dashboard", "https://dashboard.plaid.com/team/keys", target: "_blank", rel: "noopener noreferrer", class: "text-primary font-medium underline")
step_1_key = "settings.providers.#{provider_key}_panel.step_1_html"
[
t(step_1_key, link: plaid_link),
t("settings.providers.plaid_panel.step_2"),
t("settings.providers.plaid_panel.step_3")
]
end
%>
<% if setup_steps_data %>
<%= render "settings/providers/setup_steps", steps: setup_steps_data %>
<% elsif configuration.provider_description.present? %>
<%= markdown(configuration.provider_description).html_safe %>
<% end %>
<% env_configured = configuration.fields.any? { |f| f.env_key && ENV[f.env_key].present? } %>
<% if env_configured %>
Configuration can be set via environment variables or overridden below.
<% end %>
<%= styled_form_with model: Setting.new,
url: settings_providers_path,
method: :patch do |form| %>
<% configuration.fields.each do |field| %>
<%
env_value = ENV[field.env_key] if field.env_key
setting_value = Setting[field.setting_key]
current_value = setting_value.presence || env_value
display_value = if field.secret && current_value.present?
"********"
else
current_value
end
input_type = field.secret ? "password" : "text"
%>
<%= form.text_field field.setting_key,
label: field.label,
type: input_type,
placeholder: field.default || (field.required ? "" : "Optional"),
value: display_value %>
<% if field.description.present? %>
<%= field.description %>
<% end %>
<% end %>
<%= form.submit "Save and connect",
class: "inline-flex items-center justify-center rounded-lg px-4 py-2 text-sm font-medium text-inverse button-bg-primary hover:button-bg-primary-hover focus:outline-none focus:ring-2 focus:ring-gray-900 theme-dark:focus:ring-white focus:ring-offset-2 transition-colors" %>
<% end %>