<.link
navigate={~p"/orgs/#{@organization.slug}/settings"}
class="inline-flex items-center gap-1 text-sm text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white"
>
<.icon name="hero-arrow-left" class="h-4 w-4" /> Back to Settings
{t("Integrations")}
{t("Connect third-party services to enhance your monitoring capabilities.")}
{category.name}
{category.description}
<%= if category.exclusive do %>
<%!-- Exclusive category (billing): show as picker + single config panel --%>
<% active_billing =
Enum.find(category.providers, fn p ->
@integrations[p.id] && @integrations[p.id].enabled
end) %>
<.icon name="hero-arrow-path" class="h-3.5 w-3.5" /> Choose one
— only one billing platform can be active at a time
<%= if active_billing do %>
<%!-- Active billing provider --%>
<% integration = @integrations[active_billing.id] %>
<%= if integration.last_synced_at do %>
{t("Last synced:")}
<.timestamp
datetime={integration.last_synced_at}
timezone={@timezone}
format="absolute"
/>
<% end %>
<%= if integration.last_sync_status && integration.last_sync_status != "never" do %>
"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400"
"partial" ->
"bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400"
"failed" ->
"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400"
_ ->
"bg-gray-100 text-gray-600 dark:bg-gray-800 dark:text-gray-400"
end
]}>
{String.capitalize(integration.last_sync_status)}
<% end %>
<%= if integration.last_synced_at do %>
· Next sync in ~{next_sync_minutes(
integration.last_synced_at,
integration.sync_interval_minutes
)}m
<% end %>
<%= if active_billing.id == "gaiia" do %>
<.link
navigate={
~p"/orgs/#{@organization.slug}/settings/integrations/gaiia/mapping"
}
class="text-sm text-blue-600 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300"
>
Entity Mapping →
<.link
navigate={
~p"/orgs/#{@organization.slug}/settings/integrations/gaiia/reconciliation"
}
class="text-sm text-blue-600 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300"
>
Reconciliation →
<% end %>
<%!-- Switch provider link --%>
Using {active_billing.name}. To switch providers, disable this integration first.
<% else %>
<%!-- No active billing — show provider picker --%>
{t("Which billing platform does your organization use?")}
<% end %>
<%!-- Config form for whichever billing provider is being configured --%>
<%= if @configuring && find_category_id(@configuring) == "billing" do %>
<% provider = Enum.find(category.providers, &(&1.id == @configuring)) %>
<%= if provider.id == "preseem" do %>
Syncs every {integration.sync_interval_minutes} minutes. Baselines and fleet profiles computed nightly.
<% end %>
<% end %>
<% end %>
<%= if integration = @integrations[provider.id] do %>
<% end %>