<PhoenixKitWeb.Components.LayoutWrapper.app_layout
  flash={@flash}
  phoenix_kit_current_scope={assigns[:phoenix_kit_current_scope]}
  page_title="Storage Dimensions"
  current_path={@current_path}
  current_locale={@current_locale}
  project_title={@project_title}
>
  <div class="container mx-auto px-4 py-8 max-w-6xl">
    <.admin_page_header
      back={PhoenixKit.Utils.Routes.path("/admin/settings/media")}
      title={gettext("Instance Dimensions")}
      subtitle={gettext("Manage dimension presets for automatic file instance generation")}
    />

    <%!-- Info Alert --%>
    <div class="alert alert-info mb-6">
      <.icon name="hero-information-circle" class="w-5 h-5" />
      <div>
        <div class="flex justify-between items-start">
          <div>
            <h3 class="font-bold">{gettext("Dimension Presets")}</h3>
            <p class="text-sm">
              {gettext(
                "Dimensions define the target sizes for automatic variant generation. Images are resized and videos are transcoded to these preset sizes."
              )}
              {gettext(
                "The migration seeds 8 default dimensions: 4 image sizes (thumbnail, small, medium, large) and 4 video variants (360p, 720p, 1080p, video_thumbnail)."
              )}
            </p>
          </div>
          <button
            phx-click="reset_dimensions_to_defaults"
            data-confirm={
              gettext(
                "Are you sure? This will delete all current dimensions and restore the default 8 dimensions. This action cannot be undone."
              )
            }
            class="btn btn-error btn-sm"
          >
            <.icon name="hero-arrow-path" class="w-4 h-4 mr-1" /> {gettext("Reset to Defaults")}
          </button>
        </div>
      </div>
    </div>

    <%!-- Dimensions List --%>
    <div class="card bg-base-100 shadow-xl">
      <div class="card-body">
        <%= if length(@dimensions) == 0 do %>
          <div class="text-center py-12">
            <.icon name="hero-photo" class="w-16 h-16 mx-auto mb-4 text-base-content/30" />
            <p class="text-lg text-base-content/70 mb-2">{gettext("No dimensions configured")}</p>
            <p class="text-sm text-base-content/50 mb-4">
              {gettext("Create your first dimension preset to start generating file variants.")}
            </p>
            <div class="flex justify-center gap-4">
              <.link
                navigate={
                  PhoenixKit.Utils.Routes.path("/admin/settings/media/dimensions/new/image")
                }
                class="btn btn-info"
              >
                <.icon name="hero-plus" class="w-4 h-4 mr-1" /> {gettext("Add Image Dimension")}
              </.link>
              <.link
                navigate={
                  PhoenixKit.Utils.Routes.path("/admin/settings/media/dimensions/new/video")
                }
                class="btn btn-warning"
              >
                <.icon name="hero-plus" class="w-4 h-4 mr-1" /> {gettext("Add Video Dimension")}
              </.link>
            </div>
          </div>
        <% else %>
          <%!-- Image Dimensions --%>
          <div class="mb-8">
            <div class="flex justify-between items-center mb-4">
              <h3 class="text-2xl font-bold text-info">
                <.icon name="hero-photo" class="w-6 h-6 mr-2" /> {gettext("Image Dimensions")}
              </h3>
              <.link
                navigate={
                  PhoenixKit.Utils.Routes.path("/admin/settings/media/dimensions/new/image")
                }
                class="btn btn-info"
              >
                <.icon name="hero-plus" class="w-4 h-4 mr-1" /> {gettext("Add Image Dimension")}
              </.link>
            </div>
            <div class="overflow-x-auto">
              <table class="table table-zebra">
                <thead>
                  <tr>
                    <th>{gettext("Name")}</th>
                    <th>
                      <%= if Enum.any?(Enum.filter(@dimensions, & &1.applies_to in ["image", "both"]), & &1.maintain_aspect_ratio) do %>
                        {gettext("Target Width / Size")}
                      <% else %>
                        {gettext("Size")}
                      <% end %>
                    </th>
                    <th>{gettext("Mode")}</th>
                    <th>{gettext("Quality")}</th>
                    <th>{gettext("Format")}</th>
                    <th>{gettext("Status")}</th>
                    <th class="text-right">{gettext("Actions")}</th>
                  </tr>
                </thead>
                <tbody>
                  <%= for dimension <- Enum.filter(@dimensions, & &1.applies_to in ["image", "both"]) do %>
                    <tr>
                      <td>
                        <div class="font-bold">{dimension.name}</div>
                      </td>
                      <td>
                        <span class="font-mono text-sm">
                          <%= if dimension.maintain_aspect_ratio do %>
                            {dimension.width}px
                          <% else %>
                            {format_dimension_size(dimension.width, dimension.height)}
                          <% end %>
                        </span>
                      </td>
                      <td>
                        <%= if dimension.maintain_aspect_ratio do %>
                          <span class="badge badge-info badge-sm h-auto">
                            {gettext("Aspect Ratio")}
                          </span>
                        <% else %>
                          <span class="badge badge-secondary badge-sm h-auto">
                            {gettext("Fixed")}
                          </span>
                        <% end %>
                      </td>
                      <td>
                        <span class="text-sm">{dimension.quality}%</span>
                      </td>
                      <td>
                        <%= if dimension.format do %>
                          <span class="text-sm font-mono uppercase">{dimension.format}</span>
                        <% else %>
                          <span class="text-sm text-base-content/60">{gettext("Original")}</span>
                        <% end %>
                      </td>
                      <td>
                        <%= if dimension.enabled do %>
                          <span class="badge badge-success badge-sm h-auto">
                            {gettext("Enabled")}
                          </span>
                        <% else %>
                          <span class="badge badge-error badge-sm h-auto">
                            {gettext("Disabled")}
                          </span>
                        <% end %>
                      </td>
                      <td>
                        <div class="flex justify-end gap-1">
                          <.link
                            navigate={
                              PhoenixKit.Utils.Routes.path(
                                "/admin/settings/media/dimensions/#{dimension.uuid}/edit"
                              )
                            }
                            class="btn btn-xs btn-outline btn-info tooltip tooltip-bottom"
                            data-tip={gettext("Edit")}
                          >
                            <.icon name="hero-pencil" class="w-4 h-4 hidden sm:inline" />
                            <span class="sm:hidden whitespace-nowrap">{gettext("Edit")}</span>
                          </.link>
                          <button
                            phx-click="toggle_dimension"
                            phx-debounce="1000"
                            phx-value-id={dimension.uuid}
                            class="btn btn-xs btn-outline btn-info tooltip tooltip-bottom"
                            data-tip={
                              if dimension.enabled,
                                do: gettext("Disable"),
                                else: gettext("Enable")
                            }
                          >
                            <%= if dimension.enabled do %>
                              <.icon name="hero-eye-slash" class="w-4 h-4 hidden sm:inline" />
                            <% else %>
                              <.icon name="hero-eye" class="w-4 h-4 hidden sm:inline" />
                            <% end %>
                            <span class="sm:hidden whitespace-nowrap">
                              {if dimension.enabled,
                                do: gettext("Disable"),
                                else: gettext("Enable")}
                            </span>
                          </button>
                          <button
                            phx-click="delete_dimension"
                            phx-debounce="1000"
                            phx-value-id={dimension.uuid}
                            data-confirm={
                              gettext("Are you sure you want to delete this dimension?")
                            }
                            class="btn btn-xs btn-outline btn-error tooltip tooltip-bottom"
                            data-tip={gettext("Delete")}
                          >
                            <.icon name="hero-trash" class="w-4 h-4 hidden sm:inline" />
                            <span class="sm:hidden whitespace-nowrap">{gettext("Delete")}</span>
                          </button>
                        </div>
                      </td>
                    </tr>
                  <% end %>
                </tbody>
              </table>
            </div>
          </div>

          <%!-- Video Dimensions --%>
          <div>
            <div class="flex justify-between items-center mb-4">
              <h3 class="text-2xl font-bold text-warning">
                <.icon name="hero-video-camera" class="w-6 h-6 mr-2" /> {gettext(
                  "Video Dimensions"
                )}
              </h3>
              <.link
                navigate={
                  PhoenixKit.Utils.Routes.path("/admin/settings/media/dimensions/new/video")
                }
                class="btn btn-warning"
              >
                <.icon name="hero-plus" class="w-4 h-4 mr-1" /> {gettext("Add Video Dimension")}
              </.link>
            </div>
            <div class="overflow-x-auto">
              <table class="table table-zebra">
                <thead>
                  <tr>
                    <th>{gettext("Name")}</th>
                    <th>
                      <%= if Enum.any?(Enum.filter(@dimensions, & &1.applies_to in ["video", "both"]), & &1.maintain_aspect_ratio) do %>
                        {gettext("Target Width / Resolution")}
                      <% else %>
                        {gettext("Resolution")}
                      <% end %>
                    </th>
                    <th>{gettext("Mode")}</th>
                    <th>{gettext("Quality (CRF)")}</th>
                    <th>{gettext("Codec")}</th>
                    <th>{gettext("Status")}</th>
                    <th class="text-right">{gettext("Actions")}</th>
                  </tr>
                </thead>
                <tbody>
                  <%= for dimension <- Enum.filter(@dimensions, & &1.applies_to in ["video", "both"]) do %>
                    <tr>
                      <td>
                        <div class="font-bold">{dimension.name}</div>
                      </td>
                      <td>
                        <span class="font-mono text-sm">
                          <%= if dimension.maintain_aspect_ratio do %>
                            {dimension.width}px
                          <% else %>
                            {format_dimension_size(dimension.width, dimension.height)}
                          <% end %>
                        </span>
                      </td>
                      <td>
                        <%= if dimension.maintain_aspect_ratio do %>
                          <span class="badge badge-info badge-sm h-auto">
                            {gettext("Aspect Ratio")}
                          </span>
                        <% else %>
                          <span class="badge badge-secondary badge-sm h-auto">
                            {gettext("Fixed")}
                          </span>
                        <% end %>
                      </td>
                      <td>
                        <span class="text-sm">{dimension.quality}</span>
                      </td>
                      <td>
                        <%= if dimension.format do %>
                          <span class="text-sm font-mono uppercase">{dimension.format}</span>
                        <% else %>
                          <span class="text-sm text-base-content/60">{gettext("Original")}</span>
                        <% end %>
                      </td>
                      <td>
                        <%= if dimension.enabled do %>
                          <span class="badge badge-success badge-sm h-auto">
                            {gettext("Enabled")}
                          </span>
                        <% else %>
                          <span class="badge badge-error badge-sm h-auto">
                            {gettext("Disabled")}
                          </span>
                        <% end %>
                      </td>
                      <td>
                        <div class="flex justify-end gap-1">
                          <.link
                            navigate={
                              PhoenixKit.Utils.Routes.path(
                                "/admin/settings/media/dimensions/#{dimension.uuid}/edit"
                              )
                            }
                            class="btn btn-xs btn-outline btn-info tooltip tooltip-bottom"
                            data-tip={gettext("Edit")}
                          >
                            <.icon name="hero-pencil" class="w-4 h-4 hidden sm:inline" />
                            <span class="sm:hidden whitespace-nowrap">{gettext("Edit")}</span>
                          </.link>
                          <button
                            phx-click="toggle_dimension"
                            phx-debounce="1000"
                            phx-value-id={dimension.uuid}
                            class="btn btn-xs btn-outline btn-info tooltip tooltip-bottom"
                            data-tip={
                              if dimension.enabled,
                                do: gettext("Disable"),
                                else: gettext("Enable")
                            }
                          >
                            <%= if dimension.enabled do %>
                              <.icon name="hero-eye-slash" class="w-4 h-4 hidden sm:inline" />
                            <% else %>
                              <.icon name="hero-eye" class="w-4 h-4 hidden sm:inline" />
                            <% end %>
                            <span class="sm:hidden whitespace-nowrap">
                              {if dimension.enabled,
                                do: gettext("Disable"),
                                else: gettext("Enable")}
                            </span>
                          </button>
                          <button
                            phx-click="delete_dimension"
                            phx-debounce="1000"
                            phx-value-id={dimension.uuid}
                            data-confirm={
                              gettext("Are you sure you want to delete this dimension?")
                            }
                            class="btn btn-xs btn-outline btn-error tooltip tooltip-bottom"
                            data-tip={gettext("Delete")}
                          >
                            <.icon name="hero-trash" class="w-4 h-4 hidden sm:inline" />
                            <span class="sm:hidden whitespace-nowrap">{gettext("Delete")}</span>
                          </button>
                        </div>
                      </td>
                    </tr>
                  <% end %>
                </tbody>
              </table>
            </div>
          </div>
        <% end %>
      </div>
    </div>

    <%!-- Help Section --%>
    <div class="alert mt-6">
      <.icon name="hero-light-bulb" class="w-5 h-5" />
      <div>
        <h3 class="font-bold">{gettext("Variant Generation System")}</h3>
        <p class="text-sm">
          <strong>{gettext("Quality Settings:")}</strong>
          {gettext("Images use 1-100 scale (compression quality)")}<br />
          <strong>{gettext("Video Settings:")}</strong>
          {gettext("Videos use CRF 0-51 scale (lower = higher quality)")}<br />
          <strong>{gettext("Format Override:")}</strong>
          {gettext("Leave empty to preserve original format, or specify jpg/png/webp/mp4")}
        </p>
      </div>
    </div>
  </div>
</PhoenixKitWeb.Components.LayoutWrapper.app_layout>
