<.breadcrumb items={[ %{label: t("Dashboard"), navigate: ~p"/dashboard"}, %{label: t("Coverage"), navigate: ~p"/coverage"}, %{label: @coverage.name} ]} />

{@coverage.name}

<.icon name="hero-map-pin" class="h-4 w-4 inline" /> <.link navigate={~p"/sites/#{@coverage.site_id}"} class="hover:underline"> {@coverage.site && @coverage.site.name}

{@coverage.status} <.link navigate={~p"/coverage/#{@coverage.id}/edit"} class="btn btn-outline btn-sm gap-1.5"> <.icon name="hero-pencil-square" class="h-4 w-4" /> {t("Edit")} <.button phx-click="recompute" variant="primary"> <.icon name="hero-arrow-path" class="h-4 w-4" /> {t("Recompute")}
<%= if @coverage.status == "computing" do %>
<.icon name="hero-arrow-path" class="h-5 w-5 text-yellow-700 dark:text-yellow-400 animate-spin" />

{t("Computing coverage…")}

{@coverage.progress_pct}%
<% end %> <%= if @coverage.status == "failed" do %>
<.icon name="hero-exclamation-triangle" class="h-5 w-5 text-red-700 dark:text-red-400 flex-shrink-0 mt-0.5" />

{t("Compute failed")}

{@coverage.error_message}

<% end %> <%= if @coverage.status == "queued" do %>

<.icon name="hero-clock" class="h-4 w-4 inline" /> {t("Coverage is queued. Compute will start shortly.")}

<% end %>
<%!-- Map area --%>
<%= cond do %> <% @coverage.png_path && @coverage.status == "ready" -> %>
<%!-- Opacity slider + cnHeat-style legend --%>
70%
{t("Signal:")} ≥ -55 dBm -65 -75 -85 -95 {t("(weaker is darker)")}
<% true -> %>
<.icon name="hero-signal-slash" class="h-12 w-12 mx-auto text-gray-400 mb-2" />

{t("No heatmap available yet. Run compute to generate the coverage prediction.")}

<% end %>
<%!-- Parameters panel --%>

{t("Parameters")}

<.param_row label={t("Antenna")} value={(@antenna && @antenna.model) || @coverage.antenna_slug} /> <.param_row :if={ @coverage.device_id and Ecto.assoc_loaded?(@coverage.device) and @coverage.device } label={t("Device")} value={@coverage.device.name || @coverage.device.ip_address} /> <.param_row :if={@antenna} label={t("Manufacturer")} value={@antenna.manufacturer} /> <.param_row :if={@antenna} label={t("Antenna gain")} value={"#{@antenna.gain_dbi} dBi"} /> <.param_row label={t("Frequency")} value={format_ghz(@coverage.frequency_mhz)} /> <.param_row label={t("TX power")} value={"#{@coverage.tx_power_dbm} dBm"} /> <.param_row label={t("EIRP")} value={"#{Float.round(@eirp_dbm, 1)} dBm"} /> <.param_row label={t("Height above ground")} value={format_ft(@coverage.height_agl_m)} /> <.param_row label={t("Azimuth")} value={"#{@coverage.azimuth_deg}°"} /> <.param_row label={t("Tilt")} value={"#{@coverage.downtilt_deg}°"} /> <.param_row label={t("Range")} value={format_mi(@coverage.radius_m)} /> <.param_row :if={@coverage.foliage_tuning && @coverage.foliage_tuning > 0} label={t("Foliage tuning")} value={"#{@coverage.foliage_tuning}"} /> <.param_row :if={@coverage.computed_at} label={t("Computed at")} value={Calendar.strftime(@coverage.computed_at, "%Y-%m-%d %H:%M UTC")} />