<PhoenixKitWeb.Components.LayoutWrapper.app_layout
  flash={@flash}
  page_title={@page_title}
  current_path={@current_path}
  project_title={@project_title}
  phoenix_kit_current_scope={@phoenix_kit_current_scope}
  current_locale={assigns[:current_locale]}
>
  <div class="container flex-col mx-auto px-4 py-6">
    <%!-- Header Section --%>
    <header class="w-full relative mb-6">
      <%!-- Back Button (Left aligned) --%>
      <.link
        navigate={PhoenixKit.Utils.Routes.path("/admin")}
        class="btn btn-outline btn-primary btn-sm absolute left-0 top-0 -mb-12"
      >
        <.icon name="hero-arrow-left" class="w-4 h-4 mr-2" /> Back to Dashboard
      </.link>

      <%!-- Title Section --%>
      <div class="text-center">
        <h1 class="text-4xl font-bold text-base-content mb-3">AI Prompts</h1>
        <p class="text-lg text-base-content">
          Reusable prompt templates with variable substitution
        </p>
      </div>
    </header>

    <%!-- Controls --%>
    <div class="bg-base-200 rounded-lg p-6 mb-6">
      <div class="flex flex-col lg:flex-row gap-4 items-center justify-between">
        <%!-- Tabs --%>
        <div class="tabs tabs-boxed">
          <.link
            navigate={PhoenixKit.Utils.Routes.ai_path() <> "/endpoints"}
            class="tab"
          >
            <.icon name="hero-server-stack" class="w-4 h-4 mr-2" /> Endpoints
          </.link>
          <.link
            navigate={PhoenixKit.Utils.Routes.ai_path() <> "/prompts"}
            class="tab tab-active"
          >
            <.icon name="hero-document-text" class="w-4 h-4 mr-2" /> Prompts
          </.link>
          <.link
            navigate={PhoenixKit.Utils.Routes.ai_path() <> "/usage"}
            class="tab"
          >
            <.icon name="hero-chart-bar" class="w-4 h-4 mr-2" /> Usage
          </.link>
        </div>

        <%!-- Quick Actions --%>
        <.link
          navigate={PhoenixKit.Utils.Routes.ai_path() <> "/prompts/new"}
          class="btn btn-primary"
        >
          <.icon name="hero-plus" class="w-5 h-5 mr-2" /> New Prompt
        </.link>
      </div>
    </div>

    <%!-- Content --%>
    <%= if Enum.empty?(@prompts) do %>
      <%!-- Empty State --%>
      <div class="card bg-base-200 p-8 text-center">
        <div class="flex flex-col items-center gap-4">
          <.icon name="hero-document-text" class="w-16 h-16 text-base-content/30" />
          <h2 class="text-xl font-semibold">No Prompts Yet</h2>
          <p class="text-base-content/70 max-w-md">
            Create reusable prompt templates with variable substitution.
            Use <code class="bg-base-300 px-1 rounded">{"{{VariableName}}"}</code>
            syntax for dynamic content.
          </p>
          <.link
            navigate={PhoenixKit.Utils.Routes.ai_path() <> "/prompts/new"}
            class="btn btn-primary mt-4"
          >
            <.icon name="hero-plus" class="w-5 h-5 mr-2" /> Create First Prompt
          </.link>
        </div>
      </div>
    <% else %>
      <%!-- Sort Controls --%>
      <div class="flex items-center gap-2 mb-4 flex-wrap">
        <span class="text-sm text-base-content/70">Sort by:</span>
        <%= for {field, label} <- @sort_options do %>
          <button
            phx-click="sort"
            phx-value-by={field}
            class={"btn btn-xs #{if @sort_by == field, do: "btn-primary", else: "btn-ghost"}"}
          >
            {label}
            <%= if @sort_by == field do %>
              <.icon
                name={if @sort_dir == :asc, do: "hero-chevron-up", else: "hero-chevron-down"}
                class="w-3 h-3 ml-1"
              />
            <% end %>
          </button>
        <% end %>
      </div>

      <%!-- Prompts Grid --%>
      <div class="grid gap-4">
        <%= for prompt <- @prompts do %>
          <div class={"card bg-base-200 #{if !prompt.enabled, do: "opacity-60"}"}>
            <div class="card-body p-4">
              <div class="flex items-start justify-between">
                <div class="flex-1">
                  <div class="flex items-center gap-3 flex-wrap">
                    <.link
                      navigate={PhoenixKit.Utils.Routes.ai_path() <> "/prompts/#{prompt.id}/edit"}
                      class="badge badge-ghost font-mono hover:badge-primary cursor-pointer"
                    >
                      #{prompt.id}
                    </.link>
                    <.link
                      navigate={PhoenixKit.Utils.Routes.ai_path() <> "/prompts/#{prompt.id}/edit"}
                      class="font-semibold text-lg hover:text-primary hover:underline"
                    >
                      {prompt.name}
                    </.link>
                    <.enabled_badge enabled={prompt.enabled} />
                    <span class="badge badge-outline font-mono text-xs">{prompt.slug}</span>
                  </div>

                  <%!-- Variables --%>
                  <%= if prompt.variables && length(prompt.variables) > 0 do %>
                    <div class="mt-2 flex flex-wrap gap-2">
                      <span class="text-sm text-base-content/70">Variables:</span>
                      <%= for var <- prompt.variables do %>
                        <span class="badge badge-sm badge-primary badge-outline font-mono">
                          {"{{#{var}}}"}
                        </span>
                      <% end %>
                    </div>
                  <% end %>

                  <%!-- Content Preview --%>
                  <div class="mt-2 text-sm text-base-content/70 line-clamp-2">
                    {PhoenixKit.Modules.AI.Prompt.content_preview(prompt.content)}
                  </div>

                  <%!-- Usage Stats --%>
                  <div class="mt-2 flex flex-wrap gap-4 text-sm">
                    <div class="flex items-center gap-1 text-base-content/70" title="Usage count">
                      <.icon name="hero-arrow-path" class="w-4 h-4" />
                      <span>{prompt.usage_count} uses</span>
                    </div>
                    <div class="flex items-center gap-1 text-base-content/70" title="Last used">
                      <.icon name="hero-clock" class="w-4 h-4" />
                      <span>
                        <%= if prompt.last_used_at do %>
                          <.time_ago datetime={prompt.last_used_at} />
                        <% else %>
                          Never used
                        <% end %>
                      </span>
                    </div>
                    <div class="flex items-center gap-1 text-base-content/70" title="Created">
                      <.icon name="hero-calendar" class="w-4 h-4" />
                      <span>
                        <.time_ago datetime={prompt.inserted_at} />
                      </span>
                    </div>
                  </div>

                  <%= if prompt.description do %>
                    <p class="mt-2 text-sm text-base-content/60">{prompt.description}</p>
                  <% end %>
                </div>

                <%!-- Actions --%>
                <div class="dropdown dropdown-end">
                  <div tabindex="0" role="button" class="btn btn-ghost btn-sm btn-square">
                    <.icon name="hero-ellipsis-vertical" class="w-5 h-5" />
                  </div>
                  <ul
                    tabindex="0"
                    class="dropdown-content z-[1] menu p-2 shadow-lg bg-base-100 rounded-box w-48"
                  >
                    <li>
                      <.link navigate={PhoenixKit.Utils.Routes.ai_path() <> "/prompts/#{prompt.id}/edit"}>
                        <.icon name="hero-pencil" class="w-4 h-4" /> Edit
                      </.link>
                    </li>
                    <li>
                      <button phx-click="toggle_prompt" phx-value-id={prompt.id}>
                        <.icon
                          name={if prompt.enabled, do: "hero-pause", else: "hero-play"}
                          class="w-4 h-4"
                        />
                        {if prompt.enabled, do: "Disable", else: "Enable"}
                      </button>
                    </li>
                    <li class="divider"></li>
                    <li>
                      <button
                        phx-click="delete_prompt"
                        phx-value-id={prompt.id}
                        data-confirm="Are you sure you want to delete this prompt?"
                        class="text-error"
                      >
                        <.icon name="hero-trash" class="w-4 h-4" /> Delete
                      </button>
                    </li>
                  </ul>
                </div>
              </div>
            </div>
          </div>
        <% end %>
      </div>

      <%!-- Pagination --%>
      <% total_pages = ceil(@total_prompts / @page_size) %>
      <%= if total_pages > 1 do %>
        <div class="flex justify-center p-4 border-t border-base-300">
          <div class="join">
            <%= for page_num <- 1..total_pages do %>
              <button
                class={"join-item btn btn-sm #{if page_num == @page, do: "btn-active", else: ""}"}
                phx-click="goto_page"
                phx-value-page={page_num}
              >
                {page_num}
              </button>
            <% end %>
          </div>
        </div>
      <% end %>
    <% end %>
  </div>
</PhoenixKitWeb.Components.LayoutWrapper.app_layout>
