users::page, users::created_at, nav gating, icons, misc

This commit is contained in:
2026-03-08 23:50:06 +01:00
parent 8d18c858b3
commit 4a4e97f7be
12 changed files with 129 additions and 18 deletions

View File

@@ -2,30 +2,33 @@ use maud::{Markup, PreEscaped, html};
use crate::{users::User, web::icons};
const LINKS: &[(&str, &str, &str)] = &[
("Dashboard", "/dashboard", icons::LAYOUT_DASHBOARD),
("Quotes", "#quotes", icons::SCROLL_TEXT),
("Photos", "#photos", icons::FILE_IMAGE),
("Persons", "#persons", icons::CONTACT),
("Tags", "#tags", icons::TAG),
("Users", "#users", icons::USERS),
("Logs", "#logs", icons::CLIPBOARD_CLOCK),
// (SHOWTEXT, LINK, ICON, REQUIRES_LOG_IN)
const LINKS: &[(&str, &str, &str, bool)] = &[
("Dashboard", "/dashboard", icons::LAYOUT_DASHBOARD, false),
("Quotes", "#quotes", icons::SCROLL_TEXT, false),
("Photos", "#photos", icons::FILE_IMAGE, false),
("Persons", "#persons", icons::CONTACT, false),
("Tags", "#tags", icons::TAG, false),
("Users", "/users", icons::USERS, true),
("Logs", "#logs", icons::CLIPBOARD_CLOCK, true),
];
pub fn nav(user: Option<User>, uri: &str) -> Markup {
pub fn nav(user: Option<&User>, uri: &str) -> Markup {
html!(
div class="flex items-center text-sm gap-4 border-b border-neutral-200/25 bg-neutral-200/5 px-4 py-2" {
a href="/dashboard" class="font-lora font-semibold hidden xs:block md:text-xl sm:mr-2" {"Mnemosyne"}
div class="w-px h-5 bg-neutral-200/15 hidden sm:block" {}
div class="flex flex-row" {
@for link in LINKS {
a href={(link.1)} class="flex flex-row px-2 py-1 rounded items-center gap-2 hover:bg-neutral-200/5 border border-transparent hover:border-neutral-200/25" {
@if uri.starts_with(link.1) {
div class="scale-[.75] text-neutral-300" {(PreEscaped(link.2))}
span class="text-neutral-200 font-light hidden lg:block" { (link.0) }
} @else {
div class="scale-[.75] text-neutral-500" {(PreEscaped(link.2))}
span class="text-neutral-400 font-light hidden lg:block" { (link.0) }
@if !link.3 || user.is_some() {
a href={(link.1)} class="flex flex-row px-2 py-1 rounded items-center gap-2 hover:bg-neutral-200/5 border border-transparent hover:border-neutral-200/25" {
@if uri.starts_with(link.1) {
div class="scale-[.75] text-neutral-300" {(PreEscaped(link.2))}
span class="text-neutral-200 font-light hidden lg:block" { (link.0) }
} @else {
div class="scale-[.75] text-neutral-500" {(PreEscaped(link.2))}
span class="text-neutral-400 font-light hidden lg:block" { (link.0) }
}
}
}
}