diff --git a/lib/custom_html.typ b/lib/custom_html.typ index 8d3e1e7..057c644 100644 --- a/lib/custom_html.typ +++ b/lib/custom_html.typ @@ -33,3 +33,4 @@ #let summary-card-details = html.elem.with("summary-card-details") #let summary-card-list = html.elem.with("summary-card-list") +#let tag-box = html.elem.with("tag-box") diff --git a/lib/html_head.typ b/lib/html_head.typ index 324221f..04fa55f 100644 --- a/lib/html_head.typ +++ b/lib/html_head.typ @@ -17,6 +17,8 @@ description: none, /// Author of the site for metadata, default to document.author author: none, + /// Tags describing the content of the page + tags: (), /// Additional stylesheet for the page: must be a list of url stylesheets: (), /// List of related sites for metadata @@ -38,6 +40,11 @@ // Only set the Referer header for out request to the same origin html.meta(name: "referrer", content: "same-origin") + // Tags + if tags.len() != 0 { + html.meta(name: "keywords", content: tags.join(", ")) + } + if icon != none { html.link(rel: "icon", type: "image/png", href: icon) } diff --git a/lib/main.typ b/lib/main.typ index 0a6db10..0f985f3 100644 --- a/lib/main.typ +++ b/lib/main.typ @@ -23,6 +23,8 @@ description: none, /// Author of the site for metadata, default to document.author author: none, + /// Tags describing the content of the page + tags: (), /// Additional stylesheet for the page: must be a list of url stylesheets: (), /// List of related sites for metadata @@ -53,6 +55,7 @@ site-name: site-name, description: description, author: author, + tags: tags, stylesheets: stylesheets, me-links: me-links ) diff --git a/lib/summary.typ b/lib/summary.typ index 84bb9f8..b149597 100644 --- a/lib/summary.typ +++ b/lib/summary.typ @@ -51,6 +51,30 @@ margin-top: auto; padding-top: 1em; } + + tag-box { + display: flex; + flex-wrap: wrap; + margin-top: 0.3em; + + .tag { + max-width: ; + overflow: hidden; + text-overflow: ellipsis; + display:inline-block; + white-space: nowrap; + + background-color: var(--color-bg-highlight); + margin: 0.1em; + padding-top: 0.1em; + padding-bottom: 0.1em; + padding-left: 0.4em; + padding-right: 0.4em; + border-radius: 1em; + + } + } + } } @@ -68,6 +92,7 @@ html.a(href: summ.template-args.url, summ.document-args.description) chtml.summary-card-details(summ.document-args.date.display()) + chtml.tag-box(for tag in summ.template-args.tags { html.span(class: ("tag",), "#" + tag) }) }) }) } @@ -92,6 +117,8 @@ description: none, /// The date of publication (or maybe update?) of the page. date: none, + /// Tags associated to the content of the page + tags: (), ) = { assert(type(url) == str, message: "summary() must have an url") assert(type(title) == str or type(title) == content, message: "summary() must have title") @@ -109,6 +136,7 @@ ), template-args: ( url: url, + tags: tags, ), preview-image: preview-image, img-copyright: img-copyright, diff --git a/lib/theme_colors.typ b/lib/theme_colors.typ index 3df786a..8f68ff2 100644 --- a/lib/theme_colors.typ +++ b/lib/theme_colors.typ @@ -14,7 +14,8 @@ --color-button-shadow: light-dark(#888, #000); --color-button-focus: light-dark(#000, #FFF); - --color-code-bg: light-dark(rgba(0, 0, 0, 0.05), rgba(255, 255, 255, 0.05)); + --color-bg-highlight: light-dark(rgba(0, 0, 0, 0.05), rgba(255, 255, 255, 0.05)); + --color-code-bg: var(--color-bg-highlight); --color-bg-overlay: light-dark(rgba(255, 255, 255, 0.9), rgba(0, 0, 0, 0.9)); diff --git a/test_template/main.typ b/test_template/main.typ index 4d66161..01354de 100644 --- a/test_template/main.typ +++ b/test_template/main.typ @@ -8,6 +8,7 @@ alt: "A drawing of a blue-ish round-ish platypus with big eyes, holding a laptop. This platypus is quite cute, but I might be biased.", ), author: "Me!", + tags: ("test", "html/css", "typst"), description: "Test of the TTT template", date: datetime(year: 1942, month: 4, day: 1), ) @@ -171,6 +172,11 @@ thead { summary( url: "http://test.example.com", title: "Card " + str(perm.at(i)), + tags: if perm.at(i) == 20 { + ("tag2", "tag5","loooooonnnnnnnnnnnnnng-tag","some-tag","some-other-tag") + } else { + (2, 3, 5, 7).filter(j => calc.rem(perm.at(i), j) == 0).map(j => "tag" + str(j)) + }, preview-image: summ.preview-image, img-copyright: if calc.rem(i, 3) == 0 { [Histausse ] } else { none }, author: "Me!",