% 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 %>
<%# 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| %>
<% 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
<% end %>
<% end %>