diff --git a/app/controllers/settings/api_keys_controller.rb b/app/controllers/settings/api_keys_controller.rb index 4804cdf58..c7258a454 100644 --- a/app/controllers/settings/api_keys_controller.rb +++ b/app/controllers/settings/api_keys_controller.rb @@ -6,6 +6,10 @@ class Settings::ApiKeysController < ApplicationController before_action :set_api_key, only: [ :show, :destroy ] def show + @breadcrumbs = [ + [ "Home", root_path ], + [ "API Keys", nil ] + ] @current_api_key = @api_key end diff --git a/app/controllers/settings/bank_sync_controller.rb b/app/controllers/settings/bank_sync_controller.rb new file mode 100644 index 000000000..21f3cda31 --- /dev/null +++ b/app/controllers/settings/bank_sync_controller.rb @@ -0,0 +1,27 @@ +class Settings::BankSyncController < ApplicationController + layout "settings" + + def show + @providers = [ + { + name: "Lunch Flow", + description: "US, Canada, UK, EU, Brazil and Asia through multiple open banking providers.", + path: "https://lunchflow.app/features/sure-integration", + target: "_blank", + rel: "noopener noreferrer" + }, + { + name: "Plaid", + description: "US & Canada bank connections with transactions, investments, and liabilities.", + path: "https://github.com/we-promise/sure/blob/main/docs/hosting/plaid.md", + target: "_blank", + rel: "noopener noreferrer" + }, + { + name: "SimpleFin", + description: "US & Canada connections via SimpleFin protocol.", + path: simplefin_items_path + } + ] + end +end diff --git a/app/controllers/settings/hostings_controller.rb b/app/controllers/settings/hostings_controller.rb index 5fb2869b5..066e318ef 100644 --- a/app/controllers/settings/hostings_controller.rb +++ b/app/controllers/settings/hostings_controller.rb @@ -6,6 +6,10 @@ class Settings::HostingsController < ApplicationController before_action :ensure_admin, only: :clear_cache def show + @breadcrumbs = [ + [ "Home", root_path ], + [ "Self-Hosting", nil ] + ] twelve_data_provider = Provider::Registry.get_provider(:twelve_data) @twelve_data_usage = twelve_data_provider&.usage end diff --git a/app/controllers/settings/securities_controller.rb b/app/controllers/settings/securities_controller.rb index 9f8eac1c7..756accf79 100644 --- a/app/controllers/settings/securities_controller.rb +++ b/app/controllers/settings/securities_controller.rb @@ -2,5 +2,9 @@ class Settings::SecuritiesController < ApplicationController layout "settings" def show + @breadcrumbs = [ + [ "Home", root_path ], + [ "Security", nil ] + ] end end diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb index 0f8ab4710..af237bfc9 100644 --- a/app/helpers/settings_helper.rb +++ b/app/helpers/settings_helper.rb @@ -3,7 +3,7 @@ module SettingsHelper { name: "Account", path: :settings_profile_path }, { name: "Preferences", path: :settings_preferences_path }, { name: "Security", path: :settings_security_path }, - { name: "Self hosting", path: :settings_hosting_path, condition: :self_hosted? }, + { name: "Self-Hosting", path: :settings_hosting_path, condition: :self_hosted? }, { name: "API Key", path: :settings_api_key_path }, { name: "Billing", path: :settings_billing_path, condition: :not_self_hosted? }, { name: "Accounts", path: :accounts_path }, diff --git a/app/views/settings/_settings_nav.html.erb b/app/views/settings/_settings_nav.html.erb index 7fb1b18d8..9a6e0f15d 100644 --- a/app/views/settings/_settings_nav.html.erb +++ b/app/views/settings/_settings_nav.html.erb @@ -6,10 +6,11 @@ nav_sections = [ { label: t(".profile_label"), path: settings_profile_path, icon: "circle-user" }, { label: t(".preferences_label"), path: settings_preferences_path, icon: "bolt" }, { label: t(".security_label"), path: settings_security_path, icon: "shield-check" }, - { label: "API Key", path: settings_api_key_path, icon: "key" }, + { label: t(".api_keys_label"), path: settings_api_key_path, icon: "key" }, { label: t(".self_hosting_label"), path: settings_hosting_path, icon: "database", if: self_hosted? }, { label: t(".billing_label"), path: settings_billing_path, icon: "circle-dollar-sign", if: !self_hosted? }, { label: t(".accounts_label"), path: accounts_path, icon: "layers" }, + { label: t(".bank_sync_label"), path: settings_bank_sync_path, icon: "banknote" }, { label: "SimpleFin", path: simplefin_items_path, icon: "building-2" }, { label: t(".imports_label"), path: imports_path, icon: "download" } ] diff --git a/app/views/settings/bank_sync/_provider_link.html.erb b/app/views/settings/bank_sync/_provider_link.html.erb new file mode 100644 index 000000000..8a2d524cd --- /dev/null +++ b/app/views/settings/bank_sync/_provider_link.html.erb @@ -0,0 +1,32 @@ +<%# locals: (provider_link:) %> + +<%# Assign distinct colors to each provider %> +<% provider_colors = { + "Lunch Flow" => "#6471eb", + "Plaid" => "#4da568", + "SimpleFin" => "#e99537" +} %> +<% provider_color = provider_colors[provider_link[:name]] || "#6B7280" %> + +<%= link_to provider_link[:path], + target: provider_link[:target], + rel: provider_link[:rel], + class: "flex justify-between items-center p-4 bg-container hover:bg-container-hover transition-colors" do %> +
+ <%= provider_link[:name] %> +
++ <%= provider_link[:description] %> +
+PROVIDERS
+ · +<%= @providers.count %>
+No providers configured
+Configure providers to link your bank accounts.
+