<div class="mx-auto flex flex-col justify-center items-center space-y-4 max-w-3xl">
  <h1 class="title text-2xl title-primary-500">
    <%= gettext("Invites") %>
  </h1>

  <%= if @invites |> Enum.empty?() do %>
    <h1 class="title text-xl text-primary-600">
      <%= gettext("No invites") %>
      <%= display_emoji("😔") %>
    </h1>

    <.link patch={Routes.invite_index_path(Endpoint, :new)} class="btn btn-primary">
      <%= dgettext("actions", "Invite someone new!") %>
    </.link>
  <% else %>
    <.link patch={Routes.invite_index_path(Endpoint, :new)} class="btn btn-primary">
      <%= dgettext("actions", "Create Invite") %>
    </.link>
  <% end %>

  <div class="flex flex-col justify-center items-stretch space-y-4">
    <.invite_card
      :for={invite <- @invites}
      invite={invite}
      current_user={@current_user}
      use_count={Map.get(@use_counts, invite.id)}
    >
      <:code_actions>
        <form phx-submit="copy_to_clipboard">
          <button
            type="submit"
            class="mx-2 my-1 btn btn-primary"
            phx-click={JS.dispatch("cannery:clipcopy", to: "#code-#{invite.id}")}
            aria-label={
              dgettext("actions", "Copy invite link for %{invite_name}", invite_name: invite.name)
            }
          >
            <%= dgettext("actions", "Copy to clipboard") %>
          </button>
        </form>
      </:code_actions>
      <.link
        patch={Routes.invite_index_path(Endpoint, :edit, invite)}
        class="text-primary-600 link"
        aria-label={
          dgettext("actions", "Edit invite for %{invite_name}", invite_name: invite.name)
        }
      >
        <i class="fa-fw fa-lg fas fa-edit"></i>
      </.link>

      <.link
        href="#"
        class="text-primary-600 link"
        phx-click="delete_invite"
        phx-value-id={invite.id}
        data-confirm={
          dgettext("prompts", "Are you sure you want to delete the invite for %{invite_name}?",
            invite_name: invite.name
          )
        }
        aria-label={
          dgettext("actions", "Delete invite for %{invite_name}", invite_name: invite.name)
        }
      >
        <i class="fa-fw fa-lg fas fa-trash"></i>
      </.link>

      <.link
        href="#"
        class="btn btn-primary"
        phx-click={if invite.disabled_at, do: "enable_invite", else: "disable_invite"}
        phx-value-id={invite.id}
      >
        <%= if invite.disabled_at, do: gettext("Enable"), else: gettext("Disable") %>
      </.link>

      <.link
        :if={invite.disabled_at |> is_nil() and not (invite.uses_left |> is_nil())}
        href="#"
        class="btn btn-primary"
        phx-click="set_unlimited"
        phx-value-id={invite.id}
        data-confirm={
          dgettext("prompts", "Are you sure you want to make %{invite_name} unlimited?",
            invite_name: invite.name
          )
        }
      >
        <%= dgettext("actions", "Set Unlimited") %>
      </.link>
    </.invite_card>
  </div>

  <%= unless @admins |> Enum.empty?() do %>
    <hr class="hr" />

    <h1 class="title text-2xl text-primary-600">
      <%= gettext("Admins") %>
    </h1>

    <div class="flex flex-col justify-center items-stretch space-y-4">
      <.user_card :for={admin <- @admins} user={admin}>
        <.link
          href="#"
          class="text-primary-600 link"
          phx-click="delete_user"
          phx-value-id={admin.id}
          data-confirm={
            dgettext(
              "prompts",
              "Are you sure you want to delete %{email}? This action is permanent!",
              email: admin.email
            )
          }
        >
          <i class="fa-fw fa-lg fas fa-trash"></i>
        </.link>
      </.user_card>
    </div>
  <% end %>

  <%= unless @users |> Enum.empty?() do %>
    <hr class="hr" />

    <h1 class="title text-2xl text-primary-600">
      <%= gettext("Users") %>
    </h1>

    <div class="flex flex-col justify-center items-stretch space-y-4">
      <.user_card :for={user <- @users} user={user}>
        <.link
          href="#"
          class="text-primary-600 link"
          phx-click="delete_user"
          phx-value-id={user.id}
          data-confirm={
            dgettext(
              "prompts",
              "Are you sure you want to delete %{email}? This action is permanent!",
              email: user.email
            )
          }
        >
          <i class="fa-fw fa-lg fas fa-trash"></i>
        </.link>
      </.user_card>
    </div>
  <% end %>
</div>

<.modal :if={@live_action in [:new, :edit]} return_to={Routes.invite_index_path(Endpoint, :index)}>
  <.live_component
    module={CanneryWeb.InviteLive.FormComponent}
    id={@invite.id || :new}
    title={@page_title}
    action={@live_action}
    invite={@invite}
    return_to={Routes.invite_index_path(Endpoint, :index)}
    current_user={@current_user}
  />
</.modal>
