Skip to content
use actix_web::HttpRequest;
use actix_web::Result as AwResult;
use actix_web::get;

use crate::constants::CONTACT_EMAIL;
use crate::view::layout::{is_hx_request, render_layout};

pub(crate) fn contact_info() -> maud::Markup {
    maud::html! {
        div class="editorial-list contact-list" data-motion-group {
            div class="editorial-row contact-row" data-motion-item {
                span class="db f6 white-70 mb2" { "Email" }
                a href=(format!("mailto:{CONTACT_EMAIL}")) class="link white f5" {
                    (CONTACT_EMAIL)
                }
                span class="contact-arrow" aria-hidden="true" { "↗" }
                span class="editorial-rule" aria-hidden="true" {}
            }
            div class="editorial-row contact-row" data-motion-item {
                span class="db f6 white-70 mb2" { "Fig" }
                a href="https://fig.silenlocatelli.ch" class="link white f5" {
                    "Fig Git Server"
                }
                span class="contact-arrow" aria-hidden="true" { "↗" }
                span class="editorial-rule" aria-hidden="true" {}
            }
            div class="editorial-row contact-row" data-motion-item {
                span class="db f6 white-70 mb2" { "GitHub" }
                a href="https://github.com/silenloc" class="link white f5" {
                    "github.com/silenloc"
                }
                span class="contact-arrow" aria-hidden="true" { "↗" }
                span class="editorial-rule" aria-hidden="true" {}
            }
            div class="editorial-row contact-row" data-motion-item {
                span class="db f6 white-70 mb2" { "LinkedIn" }
                a href="https://linkedin.com/in/silen-locatelli" class="link white f5" {
                    "www.linkedin.com/in/silen-locatelli"
                }
                span class="contact-arrow" aria-hidden="true" { "↗" }
                span class="editorial-rule" aria-hidden="true" {}
            }
        }
    }
}

#[get("/contact")]
pub async fn contact(req: HttpRequest) -> AwResult<maud::Markup> {
    let content = maud::html! {
        section class="page-section w-100 pa4 pa5-ns" {
            div class="center mw7" {
                header class="page-intro mb5" data-motion-group {
                    p class="eyebrow ma0 mb3" data-motion-item { "Contact" }
                    h1 class="page-title fw6 white ma0 mb3" data-motion-item { "Get in touch" }
                    p class="page-lede f4 white-60 ma0" data-motion-item { "For work inquiries and collaboration." }
                }
                (contact_info())
            }
        }
    };

    if is_hx_request(&req) {
        Ok(content)
    } else {
        Ok(render_layout(&content, "/contact"))
    }
}