<% if @encryption_error %>
<%= render DS::Alert.new(
variant: :error,
title: t("settings.providers.encryption_error.title"),
message: t("settings.providers.encryption_error.message")
) %>
<% else %>
<%= t("settings.providers.bank_sync.lede") %>
<% if @connected.any? || @needs_attention.any? %>
<% sync_all_disabled = Current.family.last_sync_all_attempted_at.present? && Current.family.last_sync_all_attempted_at > 30.seconds.ago %>
<%= render DS::Link.new(
text: t("settings.providers.sync_all"),
icon: "refresh-cw",
variant: "outline",
href: sync_all_settings_providers_path,
method: :post,
title: sync_all_disabled ? t("settings.providers.sync_all_recently") : nil,
aria: { disabled: sync_all_disabled.to_s },
class: sync_all_disabled ? "opacity-50 pointer-events-none" : nil
) %>
<% end %>
<% all_connections = @needs_attention + @connected %>
<% if all_connections.any? %>
<% if @health %>
<%= render "settings/providers/health_strip",
connected: @health[:connected],
needs_attention: @health[:needs_attention],
accounts_syncing: @health[:accounts_syncing],
last_synced_at: @health[:last_synced_at] %>
<% end %>
<%= render "settings/providers/group_heading",
title: t("settings.providers.groups.your_connections"),
count: all_connections.size %>
<% all_connections.each do |entry| %>
<% auto_open = all_connections.size == 1 %>
<%= render "settings/providers/connection_row", entry: entry, open: auto_open %>
<% end %>
<% end %>
<% if @available.any? %>
<%= render "settings/providers/search_filters" %>
<%= t("settings.providers.groups.available") %>
ยท <%= @available.size %>
<%= t("settings.providers.empty_filter") %>
<% @available.each do |entry| %>
<% meta = Provider::Metadata.for(entry[:provider_key]) %>
<%= render Settings::ProviderCard.new(
provider_key: entry[:provider_key],
name: entry[:title],
tagline: t("settings.providers.taglines.#{entry[:provider_key]}", default: nil),
region: meta[:region],
kind: meta[:kind],
tier: meta[:tier],
maturity: meta[:maturity] || :stable,
logo_bg: meta[:logo_bg],
logo_text: meta[:logo_text]
) %>
<% end %>
<% else %>
<%= render "settings/providers/group_heading",
title: t("settings.providers.groups.available"),
count: 0,
anchor: "available" %>
<%= t("settings.providers.groups.empty_available") %>
<% end %>
<% end %>