diff --git a/app/views/settings/providers/_binance_panel.html.erb b/app/views/settings/providers/_binance_panel.html.erb
index 05378904a..2ad0158e2 100644
--- a/app/views/settings/providers/_binance_panel.html.erb
+++ b/app/views/settings/providers/_binance_panel.html.erb
@@ -94,13 +94,4 @@
<% end %>
<% end %>
-
- <% if items.any? %>
-
-
<%= t("settings.providers.binance_panel.status_connected") %>
- <% else %>
-
-
<%= t("settings.providers.binance_panel.status_not_connected") %>
- <% end %>
-
diff --git a/app/views/settings/providers/_coinbase_panel.html.erb b/app/views/settings/providers/_coinbase_panel.html.erb
index 3cd62ff5d..3d596b160 100644
--- a/app/views/settings/providers/_coinbase_panel.html.erb
+++ b/app/views/settings/providers/_coinbase_panel.html.erb
@@ -82,13 +82,4 @@
<% end %>
<% end %>
-
- <% if items.any? %>
-
-
<%= t("settings.providers.coinbase_panel.status_connected") %>
- <% else %>
-
-
<%= t("settings.providers.coinbase_panel.status_not_connected") %>
- <% end %>
-
diff --git a/app/views/settings/providers/_coinstats_panel.html.erb b/app/views/settings/providers/_coinstats_panel.html.erb
index c5359e104..46ccc9f22 100644
--- a/app/views/settings/providers/_coinstats_panel.html.erb
+++ b/app/views/settings/providers/_coinstats_panel.html.erb
@@ -41,14 +41,4 @@
<% end %>
- <% items = local_assigns[:coinstats_items] || @coinstats_items || Current.family.coinstats_items.where.not(api_key: [nil, ""]) %>
-
- <% if items&.any? %>
-
-
<%= t("coinstats_items.new.status_configured_html", accounts_url: accounts_path).html_safe %>
- <% else %>
-
-
<%= t("coinstats_items.new.status_not_configured") %>
- <% end %>
-
diff --git a/app/views/settings/providers/_drawer_header.html.erb b/app/views/settings/providers/_drawer_header.html.erb
new file mode 100644
index 000000000..2d3c12b43
--- /dev/null
+++ b/app/views/settings/providers/_drawer_header.html.erb
@@ -0,0 +1,25 @@
+<%# locals: (provider_key:, title:) %>
+<% meta = provider_key.present? ? Provider::Metadata.for(provider_key) : nil %>
+<% maturity_label_key = meta && Settings::ProviderCard::MATURITY_LABELS[meta[:maturity]] %>
+<% maturity_label = maturity_label_key ? t(maturity_label_key) : nil %>
+
+
+ <% if meta && meta[:logo_bg].present? %>
+
+ <%= meta[:logo_text] %>
+
+ <% end %>
+
<%= title %>
+ <% if maturity_label %>
+ <%= maturity_label %>
+ <% end %>
+
+ <%= render DS::Button.new(
+ variant: "icon",
+ class: "ml-auto hidden lg:flex",
+ icon: "x",
+ title: t("common.close"),
+ aria_label: t("common.close"),
+ data: { action: "DS--dialog#close" }
+ ) %>
+
diff --git a/app/views/settings/providers/_enable_banking_panel.html.erb b/app/views/settings/providers/_enable_banking_panel.html.erb
index d778d8759..0b6be02bc 100644
--- a/app/views/settings/providers/_enable_banking_panel.html.erb
+++ b/app/views/settings/providers/_enable_banking_panel.html.erb
@@ -98,7 +98,7 @@
disabled: has_authenticated_connections && !is_new_record %>
- <%= form.submit is_new_record ? "Save Configuration" : "Update Configuration",
+ <%= form.submit is_new_record ? "Save and connect" : "Update connection",
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 %>
@@ -169,7 +169,7 @@
<%= link_to select_bank_enable_banking_item_path(item),
class: "inline-flex items-center justify-center rounded-lg px-3 py-1.5 text-xs font-medium text-inverse button-bg-primary hover:button-bg-primary-hover transition-colors",
data: { turbo_frame: "modal" } do %>
- Connect Bank
+ Connect bank
<% end %>
<% end %>
diff --git a/app/views/settings/providers/_indexa_capital_panel.html.erb b/app/views/settings/providers/_indexa_capital_panel.html.erb
index c31ec5f1c..b6ab19cfb 100644
--- a/app/views/settings/providers/_indexa_capital_panel.html.erb
+++ b/app/views/settings/providers/_indexa_capital_panel.html.erb
@@ -64,14 +64,4 @@
<% end %>
- <% items = local_assigns[:indexa_capital_items] || @indexa_capital_items || Current.family.indexa_capital_items.where.not(username: [nil, ""], document: [nil, ""], password: [nil, ""]).or(Current.family.indexa_capital_items.where.not(api_token: [nil, ""])) %>
-
- <% if items&.any? %>
-
-
<%= t("indexa_capital_items.panel.status_configured_html", accounts_path: accounts_path).html_safe %>
- <% else %>
-
-
<%= t("indexa_capital_items.panel.status_not_configured") %>
- <% end %>
-
diff --git a/app/views/settings/providers/_lunchflow_panel.html.erb b/app/views/settings/providers/_lunchflow_panel.html.erb
index b54c49810..a41131a53 100644
--- a/app/views/settings/providers/_lunchflow_panel.html.erb
+++ b/app/views/settings/providers/_lunchflow_panel.html.erb
@@ -44,19 +44,9 @@
value: lunchflow_item.base_url %>
- <%= form.submit is_new_record ? "Save Configuration" : "Update Configuration",
+ <%= form.submit is_new_record ? "Save and connect" : "Update connection",
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 %>
- <% items = local_assigns[:lunchflow_items] || @lunchflow_items || Current.family.lunchflow_items.where.not(api_key: nil) %>
-
- <% if items&.any? %>
-
-
Configured and ready to use. Visit the Accounts tab to manage and set up accounts.
- <% else %>
-
-
Not configured
- <% end %>
-
diff --git a/app/views/settings/providers/_mercury_panel.html.erb b/app/views/settings/providers/_mercury_panel.html.erb
index 43173fa2b..c0885b4dd 100644
--- a/app/views/settings/providers/_mercury_panel.html.erb
+++ b/app/views/settings/providers/_mercury_panel.html.erb
@@ -130,13 +130,4 @@
<% end %>
-
- <% if credentialed_items.any? %>
-
-
<%= t("mercury_items.provider_panel.configured_html", accounts_link: link_to(t("mercury_items.provider_panel.accounts_link"), accounts_path, class: "link")) %>
- <% else %>
-
-
<%= t("mercury_items.provider_panel.not_configured") %>
- <% end %>
-
diff --git a/app/views/settings/providers/_provider_form.html.erb b/app/views/settings/providers/_provider_form.html.erb
index 5c86e3b3a..442c5325b 100644
--- a/app/views/settings/providers/_provider_form.html.erb
+++ b/app/views/settings/providers/_provider_form.html.erb
@@ -67,20 +67,10 @@
<% end %>
- <%= form.submit "Save Configuration",
+ <%= 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 %>
- <%# Show configuration status %>
-
- <% if configuration.configured? %>
-
-
Configured and ready to use
- <% else %>
-
-
Not configured
- <% end %>
-
diff --git a/app/views/settings/providers/_simplefin_panel.html.erb b/app/views/settings/providers/_simplefin_panel.html.erb
index d4b6b5251..02e28e7c9 100644
--- a/app/views/settings/providers/_simplefin_panel.html.erb
+++ b/app/views/settings/providers/_simplefin_panel.html.erb
@@ -31,18 +31,9 @@
type: :password %>
- <%= form.submit "Save Configuration",
+ <%= 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 %>
-
- <% if @simplefin_items&.any? %>
-
-
Configured and ready to use. Visit the Accounts tab to manage and set up accounts.
- <% else %>
-
-
Not configured
- <% end %>
-
diff --git a/app/views/settings/providers/_snaptrade_panel.html.erb b/app/views/settings/providers/_snaptrade_panel.html.erb
index 314213acc..e390121f3 100644
--- a/app/views/settings/providers/_snaptrade_panel.html.erb
+++ b/app/views/settings/providers/_snaptrade_panel.html.erb
@@ -51,56 +51,43 @@
<% items = local_assigns[:snaptrade_items] || @snaptrade_items || Current.family.snaptrade_items.where.not(client_id: [nil, ""]) %>
-
- <% if items&.any? %>
- <% item = items.first %>
- <% if item.user_registered? %>
-
-
-
-
-
- <%= t("providers.snaptrade.status_connected", count: item.snaptrade_accounts.count) %>
- <% if item.unlinked_accounts_count > 0 %>
- (<%= t("providers.snaptrade.needs_setup", count: item.unlinked_accounts_count) %>)
- <% end %>
-
-
-
- <%= t("providers.snaptrade.manage_connections") %>
- <%= icon "chevron-right", class: "w-3 h-3 transition-transform group-open:rotate-90" %>
-
-
-
-
-
- <%= t("providers.snaptrade.connection_limit_info") %>
+ <% if items&.any? && items.first.user_registered? %>
+ <% item = items.first %>
+
+
+
+
+
+ <%= t("providers.snaptrade.status_connected", count: item.snaptrade_accounts.count) %>
+ <% if item.unlinked_accounts_count > 0 %>
+ (<%= t("providers.snaptrade.needs_setup", count: item.unlinked_accounts_count) %>)
+ <% end %>
-
-
- <%= icon "loader-2", class: "w-4 h-4 animate-spin" %>
- <%= t("providers.snaptrade.loading_connections") %>
-
-
-
-
-
- <% else %>
-
-
-
<%= t("providers.snaptrade.status_needs_registration") %>
+
+ <%= t("providers.snaptrade.manage_connections") %>
+ <%= icon "chevron-right", class: "w-3 h-3 transition-transform group-open:rotate-90" %>
+
+
+
+
+
+ <%= t("providers.snaptrade.connection_limit_info") %>
+
+
+
+ <%= icon "loader-2", class: "w-4 h-4 animate-spin" %>
+ <%= t("providers.snaptrade.loading_connections") %>
+
+
+
+
- <% end %>
- <% else %>
-
-
-
<%= t("providers.snaptrade.status_not_configured") %>
-
- <% end %>
-
+
+
+ <% end %>
diff --git a/app/views/settings/providers/_sophtron_panel.html.erb b/app/views/settings/providers/_sophtron_panel.html.erb
index 878d4dd3f..b4551558f 100644
--- a/app/views/settings/providers/_sophtron_panel.html.erb
+++ b/app/views/settings/providers/_sophtron_panel.html.erb
@@ -56,13 +56,4 @@
<% end %>
-
- <% if Current.family.sophtron_items.any? %>
-
-
<%= t("sophtron_items.sophtron_panel.status.configured_html", accounts_path: accounts_path) %>
- <% else %>
-
-
<%= t("sophtron_items.sophtron_panel.status.not_configured") %>
- <% end %>
-
-
\ No newline at end of file
+
diff --git a/app/views/settings/providers/connect_form.html.erb b/app/views/settings/providers/connect_form.html.erb
index 340d584a7..c90949e5d 100644
--- a/app/views/settings/providers/connect_form.html.erb
+++ b/app/views/settings/providers/connect_form.html.erb
@@ -1,5 +1,8 @@
<%= render DS::Dialog.new(frame: "drawer", responsive: true, auto_open: true) do |dialog| %>
- <% dialog.with_header(title: @panel_title) %>
+ <% provider_key = @panel_key || @provider_configuration&.provider_key&.to_s %>
+ <% dialog.with_header(custom_header: true) do %>
+ <%= render "settings/providers/drawer_header", provider_key: provider_key, title: @panel_title %>
+ <% end %>
<% dialog.with_body do %>
<% if @panel_partial %>
@@ -10,5 +13,9 @@
<%= render "settings/providers/provider_form", configuration: @provider_configuration %>
<% end %>
+
+
+ <%= t("settings.providers.drawer_trust_statement") %>
+
<% end %>
<% end %>
diff --git a/config/locales/views/settings/en.yml b/config/locales/views/settings/en.yml
index aa619e307..a42631089 100644
--- a/config/locales/views/settings/en.yml
+++ b/config/locales/views/settings/en.yml
@@ -198,6 +198,7 @@ en:
maturity:
beta: Beta
alpha: Alpha
+ drawer_trust_statement: "Read-only — Sure can never move money. Stored encrypted."
connect: Connect
groups:
your_connections: Your connections