aboutsummaryrefslogtreecommitdiff
path: root/ui/src/components/node_page.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ui/src/components/node_page.rs')
-rw-r--r--ui/src/components/node_page.rs41
1 files changed, 30 insertions, 11 deletions
diff --git a/ui/src/components/node_page.rs b/ui/src/components/node_page.rs
index 2a5848b..265e2d4 100644
--- a/ui/src/components/node_page.rs
+++ b/ui/src/components/node_page.rs
@@ -4,7 +4,11 @@
Copyright (C) 2026 metamuffin <metamuffin.org>
*/
-use crate::{RenderInfo, components::props::Props, page};
+use crate::{
+ RenderInfo,
+ components::{node_card::NodeCard, props::Props},
+ page,
+};
use jellycommon::{
jellyobject::{EMPTY, Object, Tag, TypedTag},
routes::{u_image, u_node_slug_player},
@@ -29,7 +33,13 @@ page!(Player<'_>, |x| x
.into());
markup::define! {
- NodePage<'a>(ri: &'a RenderInfo<'a>, nku: Nku<'a>) {
+ NodePage<'a>(
+ ri: &'a RenderInfo<'a>,
+ nku: Nku<'a>,
+ children: &'a [Nku<'a>],
+ credits: &'a [(Tag, Vec<Nku<'a>>)],
+ credited: &'a [Nku<'a>]
+ ) {
@let node = &nku.node;
@let slug = node.get(NO_SLUG).unwrap_or_default();
@let pics = node.get(NO_PICTURES).unwrap_or(EMPTY);
@@ -145,15 +155,24 @@ markup::define! {
}
}
}
- // @if matches!(node.kind, NodeKind::Collection | NodeKind::Channel) {
- // @NodeFilterSortForm { f: filter, lang }
- // }
- // @if !similar.is_empty() {
- // h2 { @trs(lang, "node.similar") }
- // ul.children.hlist {@for (node, udata) in similar.iter() {
- // li { @NodeCard { node, udata, lang } }
- // }}
- // }
+
+ @for (cat, items) in *credits {
+ h2 { @tr(ri.lang, &format!("tag.cred.kind.{cat}")) }
+ ul.nl.inline { @for nku in items {
+ li { @NodeCard { ri, nku } }
+ }}
+ }
+ @if !credited.is_empty() {
+ h2 { @tr(ri.lang, &format!("node.credited")) }
+ ul.nl.grid { @for nku in *credited {
+ li { @NodeCard { ri, nku } }
+ }}
+ }
+ @if !children.is_empty() {
+ ul.nl.grid { @for nku in *children {
+ li { @NodeCard { ri, nku } }
+ }}
+ }
}
Player<'a>(ri: &'a RenderInfo<'a>, nku: Nku<'a>) {