{# Blog Sidebar - Shown on individual post pages #} {# Data-driven when homepageConfig.blogPostSidebar is configured, otherwise falls back to default widgets #} {# Each widget is wrapped in a collapsible container with localStorage persistence #} {% from "components/icon.njk" import icon %} {% if homepageConfig and homepageConfig.blogPostSidebar and homepageConfig.blogPostSidebar.length %} {# === Data-driven mode: render configured widgets === #} {% for widget in homepageConfig.blogPostSidebar %} {# Resolve widget title #} {% if widget.type == "search" %}{% set widgetTitle = "Search" %} {% elif widget.type == "social-activity" %}{% set widgetTitle = "Social Activity" %} {% elif widget.type == "github-repos" %}{% set widgetTitle = "GitHub" %} {% elif widget.type == "funkwhale" %}{% set widgetTitle = "Listening" %} {% elif widget.type == "recent-posts" %}{% set widgetTitle = "Recent Posts" %} {% elif widget.type == "blogroll" %}{% set widgetTitle = "Blogroll" %} {% elif widget.type == "feedland" %}{% set widgetTitle = "FeedLand" %} {% elif widget.type == "categories" %}{% set widgetTitle = "Categories" %} {% elif widget.type == "webmentions" %}{% set widgetTitle = "Webmentions" %} {% elif widget.type == "recent-comments" %}{% set widgetTitle = "Recent Comments" %} {% elif widget.type == "fediverse-follow" %}{% set widgetTitle = "Fediverse" %} {% elif widget.type == "author-card" %}{% set widgetTitle = "Author" %} {% elif widget.type == "author-card-compact" %}{% set widgetTitle = "Author" %} {% elif widget.type == "subscribe" %}{% set widgetTitle = "Subscribe" %} {% elif widget.type == "toc" %}{% set widgetTitle = "Table of Contents" %} {% elif widget.type == "post-categories" %}{% set widgetTitle = "Categories" %} {% elif widget.type == "share" %}{% set widgetTitle = "Share" %} {% elif widget.type == "ai-usage" %}{% set widgetTitle = "AI Transparency" %} {% elif widget.type == "custom-html" %}{% set widgetTitle = (widget.config.title if widget.config and widget.config.title) or "Custom" %} {% else %}{% set widgetTitle = widget.type %} {% endif %} {# Resolve widget icon and accent border #} {% if widget.type == "social-activity" %} {% set widgetIcon = "globe" %}{% set widgetIconClass = "w-5 h-5 text-[#0085ff]" %}{% set widgetBorder = "border-l-[3px] border-l-[#0085ff]" %} {% elif widget.type == "github-repos" %} {% set widgetIcon = "github" %}{% set widgetIconClass = "w-5 h-5 text-surface-800 dark:text-surface-200" %}{% set widgetBorder = "border-l-[3px] border-l-surface-400 dark:border-l-surface-500" %} {% elif widget.type == "funkwhale" %} {% set widgetIcon = "headphones" %}{% set widgetIconClass = "w-5 h-5 text-purple-500" %}{% set widgetBorder = "border-l-[3px] border-l-purple-400 dark:border-l-purple-500" %} {% elif widget.type == "blogroll" %} {% set widgetIcon = "book-open" %}{% set widgetIconClass = "w-5 h-5 text-amber-500" %}{% set widgetBorder = "border-l-[3px] border-l-amber-400 dark:border-l-amber-500" %} {% elif widget.type == "feedland" %} {% set widgetIcon = "rss" %}{% set widgetIconClass = "w-5 h-5 text-amber-500" %}{% set widgetBorder = "border-l-[3px] border-l-amber-400 dark:border-l-amber-500" %} {% elif widget.type == "subscribe" %} {% set widgetIcon = "rss" %}{% set widgetIconClass = "w-5 h-5 text-orange-500" %}{% set widgetBorder = "border-l-[3px] border-l-orange-400 dark:border-l-orange-500" %} {% elif widget.type == "fediverse-follow" %} {% set widgetIcon = "user-plus" %}{% set widgetIconClass = "w-5 h-5 text-[#a730b8]" %}{% set widgetBorder = "border-l-[3px] border-l-[#a730b8]" %} {% elif widget.type == "author-card" or widget.type == "author-card-compact" %} {% set widgetIcon = "user" %}{% set widgetIconClass = "w-5 h-5 text-surface-600 dark:text-surface-400" %}{% set widgetBorder = "" %} {% elif widget.type == "recent-posts" %} {% set widgetIcon = "list" %}{% set widgetIconClass = "w-5 h-5 text-surface-600 dark:text-surface-400" %}{% set widgetBorder = "" %} {% elif widget.type == "categories" or widget.type == "post-categories" %} {% set widgetIcon = "tag" %}{% set widgetIconClass = "w-5 h-5 text-surface-600 dark:text-surface-400" %}{% set widgetBorder = "" %} {% elif widget.type == "recent-comments" %} {% set widgetIcon = "chat" %}{% set widgetIconClass = "w-5 h-5 text-surface-600 dark:text-surface-400" %}{% set widgetBorder = "" %} {% elif widget.type == "search" %} {% set widgetIcon = "search" %}{% set widgetIconClass = "w-5 h-5 text-surface-600 dark:text-surface-400" %}{% set widgetBorder = "" %} {% elif widget.type == "webmentions" %} {% set widgetIcon = "share" %}{% set widgetIconClass = "w-5 h-5 text-surface-600 dark:text-surface-400" %}{% set widgetBorder = "" %} {% elif widget.type == "ai-usage" %} {% set widgetIcon = "zap" %}{% set widgetIconClass = "w-5 h-5 text-amber-500" %}{% set widgetBorder = "border-l-[3px] border-l-amber-400 dark:border-l-amber-500" %} {% elif widget.type == "toc" %} {% set widgetIcon = "list" %}{% set widgetIconClass = "w-5 h-5 text-surface-600 dark:text-surface-400" %}{% set widgetBorder = "" %} {% elif widget.type == "share" %} {% set widgetIcon = "share" %}{% set widgetIconClass = "w-5 h-5 text-surface-600 dark:text-surface-400" %}{% set widgetBorder = "" %} {% else %} {% set widgetIcon = "" %}{% set widgetIconClass = "" %}{% set widgetBorder = "" %} {% endif %} {% set widgetKey = "post-widget-" + widget.type + "-" + loop.index0 %} {% set defaultOpen = "true" if loop.index0 < 3 else "false" %} {# Collapsible wrapper — Alpine.js handles toggle, localStorage persists state #}
{# Widget content — inner .widget provides padding, inner title hidden by CSS #} {% if widget.type == "author-card-compact" %} {% include "components/widgets/author-card-compact.njk" %} {% elif widget.type == "author-card" %} {% include "components/widgets/author-card.njk" %} {% elif widget.type == "toc" %} {% include "components/widgets/toc.njk" %} {% elif widget.type == "post-categories" %} {% include "components/widgets/post-categories.njk" %} {% elif widget.type == "recent-posts" %} {% include "components/widgets/recent-posts-blog.njk" %} {% elif widget.type == "webmentions" %} {% include "components/widgets/webmentions.njk" %} {% elif widget.type == "share" %} {% include "components/widgets/share.njk" %} {% elif widget.type == "subscribe" %} {% include "components/widgets/subscribe.njk" %} {% elif widget.type == "social-activity" %} {% include "components/widgets/social-activity.njk" %} {% elif widget.type == "github-repos" %} {% include "components/widgets/github-repos.njk" %} {% elif widget.type == "funkwhale" %} {% include "components/widgets/funkwhale.njk" %} {% elif widget.type == "blogroll" %} {% include "components/widgets/blogroll.njk" %} {% elif widget.type == "feedland" %} {% include "components/widgets/feedland.njk" %} {% elif widget.type == "categories" %} {% include "components/widgets/categories.njk" %} {% elif widget.type == "recent-comments" %} {% include "components/widgets/recent-comments.njk" %} {% elif widget.type == "search" %} {% include "components/widgets/search.njk" %} {% elif widget.type == "fediverse-follow" %} {% include "components/widgets/fediverse-follow.njk" %} {% elif widget.type == "ai-usage" %} {% include "components/widgets/ai-usage.njk" ignore missing %} {% elif widget.type == "custom-html" %} {% set wConfig = widget.config or {} %}
{% if wConfig.content %}
{{ wConfig.content | safe }}
{% endif %}
{% else %} {% endif %}
{% endfor %} {% else %} {# === Fallback: default blog post sidebar (backward compatibility) === #} {# Each widget wrapped in collapsible container #} {# Author Card Compact #} {% set widgetKey = "post-fb-author-card-compact" %}
{% include "components/widgets/author-card-compact.njk" %}
{# Table of Contents #} {% set widgetKey = "post-fb-toc" %}
{% include "components/widgets/toc.njk" %}
{# Post Categories #} {% set widgetKey = "post-fb-post-categories" %}
{% include "components/widgets/post-categories.njk" %}
{# Recent Posts #} {% set widgetKey = "post-fb-recent-posts" %}
{% include "components/widgets/recent-posts-blog.njk" %}
{# Webmentions #} {% set widgetKey = "post-fb-webmentions" %}
{% include "components/widgets/webmentions.njk" %}
{# Share #} {% set widgetKey = "post-fb-share" %}
{% include "components/widgets/share.njk" %}
{# Subscribe #} {% set widgetKey = "post-fb-subscribe" %}
{% include "components/widgets/subscribe.njk" %}
{# Recent Comments #} {% set widgetKey = "post-fb-recent-comments" %}
{% include "components/widgets/recent-comments.njk" %}
{% endif %}