/* This file is part of jellything (https://codeberg.org/metamuffin/jellything) which is licensed under the GNU Affero General Public License (version 3); see /COPYING. Copyright (C) 2025 metamuffin */ use crate::{locale::Language, node_page::aspect_class, props::Props}; use jellycommon::{ Node, routes::{u_node_slug, u_node_slug_player, u_node_slug_poster}, user::NodeUserData, }; markup::define! { NodeCard<'a>(node: &'a Node, udata: &'a NodeUserData, lang: &'a Language) { @let cls = format!("node card poster {}", aspect_class(node.kind)); div[class=cls] { .poster { a[href=u_node_slug(&node.slug)] { img[src=u_node_slug_poster(&node.slug, 1024), loading="lazy"]; } .cardhover.item { @if node.media.is_some() { a.play.icon[href=u_node_slug_player(&node.slug)] { "play_arrow" } } @Props { node, udata, full: false, lang } } } div.title { a[href=u_node_slug(&node.slug)] { @node.title } } div.subtitle { span { @node.subtitle } } } } NodeCardWide<'a>(node: &'a Node, udata: &'a NodeUserData, lang: &'a Language) { div[class="node card widecard poster"] { div[class=&format!("poster {}", aspect_class(node.kind))] { a[href=u_node_slug(&node.slug)] { img[src=u_node_slug_poster(&node.slug, 1024), loading="lazy"]; } .cardhover.item { @if node.media.is_some() { a.play.icon[href=u_node_slug_player(&node.slug)] { "play_arrow" } } } } div.details { a.title[href=u_node_slug(&node.slug)] { @node.title } @Props { node, udata, full: false, lang } span.overview { @node.description } } } } }