<%= form.submit is_new_record ? t("settings.providers.enable_banking_panel.save_and_connect") : t("settings.providers.enable_banking_panel.update_connection") %>
<% end %>
<% items = local_assigns[:enable_banking_items] || @enable_banking_items || family.enable_banking_items.where.not(client_certificate: nil) %>
<% if items&.any? %>
<%
# Find the first item with valid session to use for "Add Connection" button
item_for_new_connection = items.find(&:session_valid?)
# Check if any item needs initial connection (configured but no session yet)
item_needing_connection = items.find { |i| !i.session_valid? && !i.session_expired? }
%>
<% items.each do |item| %>
<% if item.syncing? %>
<%= item.aspsp_name || t("settings.providers.enable_banking_panel.syncing", default: "Syncing") %>
<%= t("settings.providers.enable_banking_panel.syncing", default: "Syncing") %>
<% elsif item.sync_error.present? %>
<%= item.aspsp_name || t("settings.providers.enable_banking_panel.connection_error") %>
<%= item.sync_error.truncate(50) %>
<% elsif item.session_valid? %>
<%= item.aspsp_name || t("settings.providers.enable_banking_panel.connected_bank") %>
<%= t("settings.providers.enable_banking_panel.session_expires", date: item.session_expires_at&.strftime("%b %d, %Y") || t("settings.providers.enable_banking_panel.unknown")) %>
<% elsif item.session_expired? %>
<%= item.aspsp_name || t("settings.providers.enable_banking_panel.connection") %>
<%= t("settings.providers.enable_banking_panel.session_expired_reconnect") %>
<% else %>
<%= t("settings.providers.enable_banking_panel.configured") %>
<%= t("settings.providers.enable_banking_panel.ready_to_link") %>
<% end %>
<% if item.session_valid? %>
<%= button_to sync_enable_banking_item_path(item),
method: :post,
class: "inline-flex items-center justify-center rounded-lg px-3 py-1.5 text-xs font-medium text-primary bg-container border border-primary hover:bg-surface-inset transition-colors",
data: { turbo: false } do %>
<%= t("settings.providers.enable_banking_panel.sync") %>
<% end %>
<% elsif item.session_expired? %>
<%= button_to reauthorize_enable_banking_item_path(item),
method: :post,
class: "inline-flex items-center justify-center rounded-lg px-3 py-1.5 text-xs font-medium text-white bg-warning hover:opacity-90 transition-colors",
data: { turbo: false } do %>
<%= t("settings.providers.enable_banking_panel.reconnect") %>
<% end %>
<% else %>
<%= render DS::Link.new(
text: t("settings.providers.enable_banking_panel.connect_bank"),
href: select_bank_enable_banking_item_path(item),
variant: :primary,
size: :sm,
data: { turbo_frame: "modal" }
) %>
<% end %>
<%= button_to enable_banking_item_path(item),
method: :delete,
class: "inline-flex items-center justify-center rounded-lg px-3 py-1.5 text-xs font-medium text-destructive hover:bg-destructive/10 transition-colors",
data: { turbo_confirm: t("settings.providers.enable_banking_panel.remove_confirm") } do %>
<%= t("settings.providers.enable_banking_panel.remove") %>
<% end %>
<% end %>
<%# Add Connection button below the list - only show if we have a valid session to copy credentials from %>
<% if item_for_new_connection %>
<%= render DS::Button.new(
text: t("settings.providers.enable_banking_panel.add_connection"),
icon: "plus",
href: new_connection_enable_banking_item_path(item_for_new_connection),
variant: :primary,
data: { turbo_method: :post, turbo_frame: "modal" }
) %>
<% end %>
<% end %>