package ui import "fmt" type AnimeCardProps struct { ID int Title string ImageURL string Href string // Options to customize the card behavior Class string // override default wrapper class ImgClass string // override default image class TitleClass string // override default title class HideTitle bool // if true, do not render the default title block CurrentNode bool // if true, renders a div instead of an anchor tag (useful for graph nodes) } templ AnimeCard(props AnimeCardProps) { if props.CurrentNode {
@animeCardPoster(props.ImageURL, props.Title, props.ImgClass)
{ props.Title }
{ children... }
} else { @animeCardPoster(props.ImageURL, props.Title, props.ImgClass) if !props.HideTitle {
{ props.Title }
} { children... }
} } func cardHref(props AnimeCardProps) string { if props.Href != "" { return props.Href } return fmt.Sprintf("/anime/%d", props.ID) } templ animeCardPoster(imageURL, title, imgClass string) {
if imageURL != "" { { } else {
No image
}
} func defaultString(val, fallback string) string { if val == "" { return fallback } return val }