Skip to content
use maud::DOCTYPE;

pub mod admin;
pub mod auth;
pub mod dashboard;
pub mod session_auth;

const BRAND: &str = "#e3001a";

pub fn render_layout(
    main_content: &maud::Markup,
    username: Option<&str>,
    is_admin: bool,
) -> maud::Markup {
    maud::html! {
        (DOCTYPE)
        html class="h-100" {
            head {
                meta charset="utf-8";
                meta name="viewport" content="width=device-width, initial-scale=1";
                title { "Hodis - Preseason Challenge" }
                link rel="icon" type="image/svg+xml" href="/assets/hodis.svg";
                link rel="stylesheet" href="/assets/t.css";
                script src="/assets/h.js" {}
                script src="/assets/hx-response-targets.js" {}
                style {
                    ".btn-brand { background-color: " (BRAND) "; color: white; border: none; cursor: pointer; }"
                    ".btn-brand:hover { opacity: 0.9; }"
                    ".btn-outline { background-color: transparent; color: " (BRAND) "; border: 1px solid " (BRAND) "; cursor: pointer; }"
                    ".btn-outline:hover { background-color: " (BRAND) "; color: white; }"
                    ".bg-brand { background-color: " (BRAND) "; }"
                    ".b--brand { border-color: " (BRAND) "; }"
                    ".brand { color: " (BRAND) "; }"
                }
            }
            body hx-ext="response-targets" class="w-100 sans-serif ma0 bg-white black" style="min-height: 100vh;" {
                nav class="dt w-100 bg-brand bb" style="border-bottom: 2px solid #b30015;" {
                    div class="dtc v-mid pa3" {
                        a href="/" class="link white hover-white no-underline fw6 f4 flex items-center" {
                            img src="/assets/hodis.svg" alt="Hodis logo" style="width: 24px; height: 24px; margin-right: 0.5rem;";
                            "Hodis"
                        }
                    }
                    div class="dtc v-mid tr pa3" {
                        @match username {
                            Some(name) => {
                                @if is_admin {
                                    a href="/admin" class="link white-80 hover-white no-underline f6 mr3" { "Admin" }
                                }
                                span class="white-80 f6 mr3" { (name) }
                                form method="POST" action="/auth/logout" class="dib ma0" {
                                    button
                                        type="submit"
                                        class="link white-80 hover-white no-underline f6 bg-transparent bn pointer pa0"
                                    {
                                        "Logout"
                                    }
                                }
                            }
                            None => {
                                a href="/auth/login" class="link white hover-white no-underline f6 mr3" {
                                    "Login"
                                }
                                a href="/auth/signup" class="link white hover-white no-underline f6" {
                                    "Sign Up"
                                }
                            }
                        }
                    }
                }
                main id="feature" class="flex flex-column" style="padding-top: 1rem; padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" {
                    (main_content)
                }
                footer class="tc pa4 black-40 f6" {
                    "Hodis Preseason Challenge"
                }
            }
        }
    }
}

pub fn render_error(message: &str) -> maud::Markup {
    let bg = format!("background-color: #fee; border-color: {}", BRAND);
    let fg = format!("color: {}", BRAND);
    maud::html! {
        div class="ba br2 pa3 mt3" style=(bg) {
            p class="f6 ma0" style=(fg) { (message) }
        }
    }
}

pub fn render_success(message: &str) -> maud::Markup {
    maud::html! {
        div class="ba b--green br2 pa3 bg-washed-green mt3" {
            p class="f6 dark-green ma0" { (message) }
        }
    }
}