<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="p-6">
    <%!-- Header --%>
    <div class="flex justify-between items-center mb-6">
      <div>
        <h1 class="text-2xl font-bold">AI Prompts</h1>
        <p class="text-base-content/70 mt-1">
          Reusable prompt templates with variable substitution
        </p>
      </div>
      <.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>

    <%!-- Tabs (shared with Endpoints) --%>
    <div class="tabs tabs-boxed mb-6">
      <.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() <> "/usage"}
        class="tab"
      >
        <.icon name="hero-chart-bar" class="w-4 h-4 mr-2" /> Usage
      </.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>
    </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">
                    <span class="badge badge-ghost font-mono">#{prompt.id}</span>
                    <.link
                      navigate={PhoenixKit.Utils.Routes.ai_path() <> "/prompts/#{prompt.id}/edit"}
                      class="font-semibold text-lg hover:text-primary hover:underline"
                    >
                      {prompt.name}
                    </.link>
                    <span class={"badge #{if prompt.enabled, do: "badge-success", else: "badge-neutral"}"}>
                      {if prompt.enabled, do: "Active", else: "Disabled"}
                    </span>
                    <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.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>
    <% end %>
  </div>
</PhoenixKitWeb.Components.LayoutWrapper.app_layout>
