@use crate::{db::{Contact, Instance}, templates::admin};
@use activitystreams::iri_string::types::IriString;

@(instance: &Instance, software: Option<&str>, contact: Option<&Contact>, base: &IriString)

<article class="instance">
    <h4 class="padded"><a href="@base">@instance.title</a></h4>
    <p class="padded">
        @if let Some(software) = software {
            Running @software, version @instance.version.
        }
        @if instance.reg {
            <br>Registration is open.
            @if instance.requires_approval {
                Accounts must be approved by an admin.
            }
        } else{
            Registration is closed
        }
    </p>
    @if !instance.description.trim().is_empty() || contact.is_some() {
        <div class="instance-info">
            @if !instance.description.trim().is_empty() {
                <h5 class="instance-description">@instance.title's description:</h5>
                <div class="description">
                    <div class="please-stay">
                        @Html(instance.description.trim())
                    </div>
                </div>
            }
            @if let Some(contact) = contact {
                <h5 class="instance-admin">@instance.title's admin:</h5>
                @:admin(contact, base)
            }
        </div>
    }
</article>