<% content_for :title, t("snaptrade_items.setup_accounts.title", default: "Set Up SnapTrade Accounts") %> <%= render DS::Dialog.new(disable_click_outside: true) do |dialog| %> <% dialog.with_header(title: t("snaptrade_items.setup_accounts.header", default: "Set Up Your SnapTrade Accounts")) do %>
<%= icon "trending-up", class: "text-primary" %> <%= t("snaptrade_items.setup_accounts.subtitle", default: "Select which brokerage accounts to link") %>
<% end %> <% dialog.with_body do %>
<%# Always show the info box %>
<%= icon "info", size: "sm", class: "text-primary mt-0.5 flex-shrink-0" %>

<%= t("snaptrade_items.setup_accounts.info_title", default: "SnapTrade Investment Data") %>

  • <%= t("snaptrade_items.setup_accounts.info_holdings", default: "Holdings with current prices and quantities") %>
  • <%= t("snaptrade_items.setup_accounts.info_cost_basis", default: "Cost basis per position (when available)") %>
  • <%= t("snaptrade_items.setup_accounts.info_activities", default: "Trade history with activity labels (Buy, Sell, Dividend, etc.)") %>
  • <%= t("snaptrade_items.setup_accounts.info_history", default: "Up to 3 years of transaction history") %>

<%= icon "alert-triangle", size: "xs", class: "inline-block mr-1" %> <%= t("snaptrade_items.setup_accounts.free_tier_note", default: "SnapTrade free tier allows 5 brokerage connections. Check your SnapTrade dashboard for current usage.") %>

<% if @waiting_for_sync %> <%# Syncing state - show spinner with manual refresh option %>

<%= t("snaptrade_items.setup_accounts.loading", default: "Fetching accounts from SnapTrade...") %>

<%= t("snaptrade_items.setup_accounts.loading_hint", default: "Click Refresh to check for accounts.") %>

<%= render DS::Link.new( text: t("snaptrade_items.setup_accounts.refresh", default: "Refresh"), variant: "secondary", icon: "refresh-cw", href: setup_accounts_snaptrade_item_path(@snaptrade_item), frame: "_top" ) %> <%= render DS::Link.new( text: t("snaptrade_items.setup_accounts.cancel_button", default: "Cancel"), variant: "ghost", href: accounts_path, frame: "_top" ) %>
<% elsif @no_accounts_found %> <%# No accounts found after sync completed %>
<%= icon "alert-circle", size: "lg", class: "text-warning" %>

<%= t("snaptrade_items.setup_accounts.no_accounts_title", default: "No Accounts Found") %>

<%= t("snaptrade_items.setup_accounts.no_accounts_message", default: "No brokerage accounts were found. This can happen if you cancelled the connection or if your brokerage isn't supported.") %>

<%= render DS::Link.new( text: t("snaptrade_items.setup_accounts.try_again", default: "Connect Brokerage"), variant: "primary", href: connect_snaptrade_item_path(@snaptrade_item), frame: "_top" ) %> <%= render DS::Link.new( text: t("snaptrade_items.setup_accounts.back_to_settings", default: "Back to Settings"), variant: "secondary", href: settings_providers_path, frame: "_top" ) %>
<% else %> <%= form_with url: complete_account_setup_snaptrade_item_path(@snaptrade_item), method: :post, data: { controller: "loading-button", action: "submit->loading-button#showLoading", loading_button_loading_text_value: t("snaptrade_items.setup_accounts.creating", default: "Creating Accounts..."), turbo_frame: "_top" } do |form| %> <% if @unlinked_accounts.any? %>

<%= t("snaptrade_items.setup_accounts.available_accounts", default: "Available Accounts") %>

<% @unlinked_accounts.each do |snaptrade_account| %>

<%= t("snaptrade_items.setup_accounts.sync_start_date_help", default: "Leave blank for all available history") %>

<% end %>
<%= render DS::Button.new( text: t("snaptrade_items.setup_accounts.create_button", default: "Create Selected Accounts"), variant: "primary", icon: "plus", type: "submit", class: "flex-1", data: { loading_button_target: "button" } ) %> <%= render DS::Link.new( text: t("snaptrade_items.setup_accounts.cancel_button", default: "Cancel"), variant: "secondary", href: accounts_path, frame: "_top" ) %>
<% end %> <% end %> <%# Link-to-existing forms rendered OUTSIDE the create form to avoid nested
%> <% if @unlinked_accounts.any? && @linkable_accounts.any? %>

<%= t("snaptrade_items.setup_accounts.or_link_existing", default: "Or link to an existing account instead of creating a new one:") %>

<% @unlinked_accounts.each do |snaptrade_account| %> <%= form_with url: link_existing_account_snaptrade_items_path, method: :post, data: { turbo_frame: "_top" } do |link_form| %> <%= link_form.hidden_field :snaptrade_account_id, value: snaptrade_account.id %> <%= link_form.hidden_field :snaptrade_item_id, value: @snaptrade_item.id %>

<%= snaptrade_account.name %>

<%= link_form.select :account_id, options_for_select(@linkable_accounts.map { |a| ["#{a.name} (#{number_to_currency(a.balance, unit: Money::Currency.new(a.currency || "USD").symbol)})", a.id] }), { prompt: t("snaptrade_items.setup_accounts.select_account", default: "Select an account...") }, class: "bg-container border border-primary rounded px-2 py-1 text-sm text-primary flex-1 min-w-0" %> <%= render DS::Button.new( text: t("snaptrade_items.setup_accounts.link_button", default: "Link"), variant: "secondary", size: "sm", type: "submit" ) %>
<% end %> <% end %>
<% end %> <% if @linked_accounts.any? %>
">

<%= t("snaptrade_items.setup_accounts.linked_accounts", default: "Already Linked") %>

<% @linked_accounts.each do |snaptrade_account| %>
<%= icon "check-circle", class: "text-success" %>

<%= snaptrade_account.name %>

<%= t("snaptrade_items.setup_accounts.linked_to", default: "Linked to:") %> <%= link_to snaptrade_account.current_account.name, account_path(snaptrade_account.current_account), class: "link" %>

<% end %>
<%# Show Done button when all accounts are linked (no unlinked) %> <% if @unlinked_accounts.blank? %>
<%= render DS::Link.new( text: t("snaptrade_items.setup_accounts.done_button", default: "Done"), variant: "primary", href: accounts_path, frame: "_top" ) %>
<% end %> <% end %> <% end %>
<% end %> <% end %>