<%= content_for :page_title, t(".page_title") %>
<%= settings_section title: t(".general_title"), subtitle: t(".general_subtitle") do %>
  <div>
    <%= styled_form_with model: @user, class: "space-y-4", data: { controller: "auto-submit-form" } do |form| %>
      <%= form.hidden_field :redirect_to, value: "preferences" %>
      <%= form.select :locale,
          language_options,
          { label: t(".language"), include_blank: t(".language_auto") },
          { data: { auto_submit_form_target: "auto" } } %>
      <%= form.fields_for :family do |family_form| %>
        <%= family_form.select :timezone,
            timezone_options,
            { label: t(".timezone") },
            { data: { auto_submit_form_target: "auto" } } %>
        <%= family_form.select :date_format,
            Family::DATE_FORMATS,
            { label: t(".date_format") },
            { data: { auto_submit_form_target: "auto" } } %>
        <%= form.select :default_period,
            Period.all.map { |period| [ period.label, period.key ] },
            { label: t(".default_period") },
            { data: { auto_submit_form_target: "auto" } } %>
        <%= form.select :default_account_order,
            AccountOrder.all.map { |order| [ order.label, order.key ] },
            { label: t(".default_account_order") },
            { data: { auto_submit_form_target: "auto" } } %>
        <%= family_form.select :country,
            country_options,
            { label: t(".country") },
            { data: { auto_submit_form_target: "auto" } } %>
        <%= family_form.select :month_start_day,
            (1..28).map { |day| [day.ordinalize, day] },
            { label: t(".month_start_day"), hint: t(".month_start_day_hint") },
            { data: { auto_submit_form_target: "auto" } } %>
        <% if @user.family.uses_custom_month_start? %>
          <div class="text-sm text-warning bg-warning/10 p-3 rounded-lg">
            <%= t(".month_start_day_warning") %>
          </div>
        <% end %>
        <p class="text-xs italic pl-2 text-secondary">Please note, we are still working on translations for various languages.</p>
      <% end %>
    <% end %>
  </div>
<% end %>
<% if Current.user.admin? %>
  <%= settings_section title: t(".currencies_title", moniker: family_moniker), subtitle: t(".currencies_subtitle", moniker: family_moniker_downcase) do %>
    <div class="space-y-4"
         data-controller="currency-preferences"
         data-currency-preferences-base-currency-value="<%= @user.family.primary_currency_code %>">
      <% preview_currencies = @user.family.enabled_currency_objects.first(6) %>
      <div class="rounded-xl border border-secondary p-4 bg-surface-inset/40 space-y-3">
        <div class="flex items-center justify-between gap-3">
          <div>
            <p class="text-sm font-medium text-primary"><%= @user.family.primary_currency_code %></p>
            <p class="text-sm text-secondary"><%= currency_label(@user.family.primary_currency_code) %></p>
          </div>
          <span class="inline-flex items-center rounded-full bg-surface-inset px-2.5 py-1 text-xs font-medium text-secondary">
            <%= t(".base_currency_badge") %>
          </span>
        </div>
        <div class="flex flex-wrap gap-2">
          <% preview_currencies.each do |currency| %>
            <span class="inline-flex items-center rounded-full bg-surface-inset px-2.5 py-1 text-xs font-medium text-primary">
              <%= currency.iso_code %>
            </span>
          <% end %>
          <% if @user.family.enabled_currency_codes.count > preview_currencies.count %>
            <span class="inline-flex items-center rounded-full bg-surface-inset px-2.5 py-1 text-xs font-medium text-secondary">
              <%= t(".currencies_more", count: @user.family.enabled_currency_codes.count - preview_currencies.count) %>
            </span>
          <% end %>
        </div>
      </div>
      <%= render DS::Button.new(
        text: t(".manage_currencies"),
        type: :button,
        class: "md:w-auto w-full justify-center",
        data: { action: "currency-preferences#open" }
      ) %>
      <%= render DS::Dialog.new(
        id: "currency-preferences-dialog",
        auto_open: false,
        disable_frame: true,
        width: "md",
        data: { currency_preferences_target: "dialog" }
      ) do |dialog| %>
        <% dialog.with_header(title: t(".manage_currencies"), subtitle: t(".manage_currencies_subtitle")) %>
        <% dialog.with_body do %>
          <%= styled_form_with model: @user, url: user_path(@user), class: "space-y-4", data: { action: "turbo:submit-end->currency-preferences#handleSubmitEnd" } do |form| %>
            <%= form.hidden_field :redirect_to, value: "preferences" %>
            <%= hidden_field_tag "user[family_attributes][id]", @user.family.id %>
            <%= hidden_field_tag "user[family_attributes][enabled_currencies][]", @user.family.primary_currency_code, id: nil %>
            <div class="flex flex-wrap gap-2">
              <%= render DS::Button.new(
                text: t(".select_all_currencies"),
                type: :button,
                variant: :ghost,
                data: { action: "currency-preferences#selectAll" }
              ) %>
              <%= render DS::Button.new(
                text: t(".select_base_only"),
                type: :button,
                variant: :ghost,
                data: { action: "currency-preferences#selectBaseOnly" }
              ) %>
            </div>
            <div data-controller="list-filter" class="space-y-3">
              <div class="relative">
                <input type="search"
               autocomplete="off"
               placeholder="<%= t(".currency_search_placeholder") %>"
               aria-label="<%= t(".currency_search_placeholder") %>"
               data-list-filter-target="input"
               data-action="input->list-filter#filter"
                class="block w-full border border-secondary rounded-md py-2 pl-10 pr-3 bg-container focus:ring-gray-500 sm:text-sm">
                <div class="absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none">
                  <%= icon("search", class: "text-secondary") %>
                </div>
              </div>
              <div data-list-filter-target="list" class="max-h-80 overflow-auto rounded-xl border border-secondary divide-y divide-secondary">
                <% Money::Currency.as_options.each do |currency| %>
                  <% checked = @user.family.enabled_currency_codes.include?(currency.iso_code) %>
                  <% base_currency = currency.iso_code == @user.family.primary_currency_code %>
                  <label class="filterable-item flex items-start gap-3 p-3 cursor-pointer"
                         data-filter-name="<%= "#{currency.iso_code} #{currency.name}" %>">
                    <%= check_box_tag "user[family_attributes][enabled_currencies][]",
                                      currency.iso_code,
                                      checked,
                                      disabled: base_currency,
                                      class: "checkbox checkbox--light mt-0.5",
                                      data: { currency_preferences_target: "checkbox" } %>
                    <div class="min-w-0">
                      <div class="flex items-center gap-2">
                        <span class="text-sm font-medium text-primary"><%= currency.iso_code %></span>
                        <% if base_currency %>
                          <span class="inline-flex items-center rounded-full bg-surface-inset px-2 py-0.5 text-[11px] font-medium text-secondary">
                            <%= t(".base_currency_badge") %>
                          </span>
                        <% end %>
                      </div>
                      <p class="text-sm text-secondary"><%= currency.name %></p>
                    </div>
                  </label>
                <% end %>
              </div>
            </div>
            <div class="flex justify-end gap-2">
              <%= render DS::Button.new(text: t("shared.cancel"), type: :button, variant: :ghost, data: { action: "DS--dialog#close" }) %>
              <%= render DS::Button.new(text: t(".save_currencies")) %>
            </div>
          <% end %>
        <% end %>
      <% end %>
    </div>
  <% end %>
  <%= settings_section title: t(".sharing_title", moniker: family_moniker), subtitle: t(".sharing_subtitle", moniker: family_moniker_downcase) do %>
    <div>
      <%= styled_form_with model: @user, class: "space-y-4", data: { controller: "auto-submit-form" } do |form| %>
        <%= form.hidden_field :redirect_to, value: "preferences" %>
        <%= form.fields_for :family do |family_form| %>
          <%= family_form.select :default_account_sharing,
              [
                [t(".sharing_shared"), "shared"],
                [t(".sharing_private"), "private"]
              ],
              { label: t(".sharing_default_label") },
              { data: { auto_submit_form_target: "auto" } } %>
        <% end %>
      <% end %>
    </div>
  <% end %>
<% end %>
