]> danix's work - danix.xyz-2.git/commit
feat: Add reusable tag cloud partial with A11y and dark/light mode support
authorDanilo M. <redacted>
Tue, 21 Apr 2026 20:56:01 +0000 (22:56 +0200)
committerDanilo M. <redacted>
Tue, 21 Apr 2026 20:56:01 +0000 (22:56 +0200)
commit88d46796cb84e81e1c502ccdf02ea22890e511d5
tree251a9b99f9d0a8cd8361e1216566954981cb7b08
parent2236d07a5247cab38e0e6b524bdfb26c12c143a8
feat: Add reusable tag cloud partial with A11y and dark/light mode support

- Create tag-cloud.html partial with flexible dict interface:
  * showCount (bool): Toggle count badges
  * wrapInWidget (bool): Sidebar widget wrapper with .sidebar-widget class
  * maxTags (int): Limit shown tags (used for sidebar: 15 max)
  * headingLevel (h2|h3): Configurable heading element

- Implement visual tier scaling by frequency (3 tiers):
  * low: 0.75rem, 0.75 opacity — uncommon tags
  * medium: 0.875rem, 0.88 opacity — moderate frequency
  * high: 1rem, 1 opacity, accent border — popular tags

- Add .tag-cloud and .tag-tier-* CSS classes (main.css):
  * Uses CSS variables (--accent, --border, --text-dim) for dark/light compatibility
  * Focus ring matches site standard (outline-offset: 2px)
  * Hover state: accent border + subtle bg tint
  * prefers-reduced-motion: transitions disabled

- Integrate in 3 locations:
  * Homepage (layouts/index.html): Full cloud with counts
  * Article sidebar (layouts/partials/sidebar.html): Compact widget, 15 max, no counts
  * 404 pages (404.en.html, 404.it.html): Full cloud between recent articles and nav

- A11y implementation:
  * <section aria-labelledby> landmark (non-sidebar mode)
  * <nav aria-label="Browse by topic"> named navigation
  * Each link aria-label includes count text even when visual badge hidden
  * <span aria-hidden="true"> on count badge to avoid duplication
  * Proper heading hierarchy (h2 homepage, h3 on 404)

- Add i18n keys (en.yaml, it.yaml):
  * tagCloud: "Explore Topics" / "Esplora gli argomenti"
  * exploreTopics: "Browse by topic" / "Sfoglia per argomento"

- URL handling: Use .Page.RelPermalink from OrderedTaxonomyEntry — no manual /tags/ construction, language-aware paths work automatically

Co-Authored-By: Claude Haiku 4.5 <redacted>
i18n/en.yaml
i18n/it.yaml
themes/danix-xyz-hacker/assets/css/main.css
themes/danix-xyz-hacker/assets/css/main.min.css
themes/danix-xyz-hacker/layouts/404.en.html
themes/danix-xyz-hacker/layouts/404.it.html
themes/danix-xyz-hacker/layouts/index.html
themes/danix-xyz-hacker/layouts/partials/sidebar.html
themes/danix-xyz-hacker/layouts/partials/tag-cloud.html [new file with mode: 0644]