<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>
