<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>pydata-hugo-theme</title><link>https://saltstack.github.io/pydata-hugo-theme/</link><description>Recent content on pydata-hugo-theme</description><generator>Hugo</generator><language>en-US</language><atom:link href="https://saltstack.github.io/pydata-hugo-theme/index.xml" rel="self" type="application/rss+xml"/><item><title>Accessibility</title><link>https://saltstack.github.io/pydata-hugo-theme/misc/accessibility/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/misc/accessibility/</guid><description>&lt;p&gt;General, framework-agnostic recommendations (adapted from upstream&amp;rsquo;s guidance, which applies just as well here):&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Color contrast&lt;/strong&gt; — if you override &lt;code&gt;--pst-*&lt;/code&gt; color variables (see &lt;a href="https://saltstack.github.io/pydata-hugo-theme/theming/styling/"&gt;Styling&lt;/a&gt;&#10;), check contrast ratios against WCAG AA, especially for both light and dark mode.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Keyboard navigation&lt;/strong&gt; — the search dialog, theme switcher, and sidebar toggle are all keyboard-operable out of the box; if you add custom partials into any slot, keep them keyboard-accessible too.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Logo alt text&lt;/strong&gt; — always set &lt;code&gt;logo.alt_text&lt;/code&gt; when using an image logo (see &lt;a href="https://saltstack.github.io/pydata-hugo-theme/theming/branding/"&gt;Branding&lt;/a&gt;&#10;) rather than relying on the fallback.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Sitemaps&lt;/strong&gt; — Hugo generates a &lt;code&gt;sitemap.xml&lt;/code&gt; automatically for every build; no theme configuration or extension (unlike Sphinx&amp;rsquo;s &lt;code&gt;sphinx_sitemap&lt;/code&gt;) is needed.&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Announcements</title><link>https://saltstack.github.io/pydata-hugo-theme/user-interface/announcements/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/user-interface/announcements/</guid><description>&lt;p&gt;&lt;code&gt;announcement&lt;/code&gt; shows a dismissible-looking banner above the navbar. Two modes, chosen automatically by the value:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#a6e22e"&gt;params&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Static: rendered as-is (raw HTML allowed)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;announcement&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#34;See what&amp;#39;s new in &amp;lt;a href=\&amp;#34;/blog/\&amp;#34;&amp;gt;the changelog&amp;lt;/a&amp;gt;.&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Remote: any value starting with &amp;#34;http&amp;#34; is treated as a URL to fetch&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# the banner&amp;#39;s HTML content from at runtime instead&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;announcement&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#39;https://example.com/announcement.html&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10; &lt;button class="copybtn" type="button" aria-label="Copy to clipboard"&gt;&#10; &lt;i class="fa-regular fa-copy copybtn-icon-default" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;i class="fa-solid fa-check copybtn-icon-copied" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;/button&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Leave it unset (the default) to disable the banner entirely.&lt;/p&gt;</description></item><item><title>Asset pipeline</title><link>https://saltstack.github.io/pydata-hugo-theme/hugo-only/asset-pipeline/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/hugo-only/asset-pipeline/</guid><description>&lt;p&gt;The FontAwesome and Bootstrap JS mounted via &lt;code&gt;[[module.mounts]]&lt;/code&gt; (see &lt;a href="https://saltstack.github.io/pydata-hugo-theme/hugo-only/hugo-modules/"&gt;Hugo Modules&lt;/a&gt;&#10;) are loaded through &lt;a href="https://gohugo.io/hugo-pipes/introduction/" target=&amp;#34;_blank&amp;#34; rel=&amp;#34;noopener noreferrer&amp;#34;&gt;Hugo Pipes&lt;/a&gt;&#10;, not referenced as plain static &lt;code&gt;&amp;lt;script src&amp;gt;&lt;/code&gt; tags:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-go-html-template" data-lang="go-html-template"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;{{-&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;with&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;resources&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;.Get&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;vendor/fontawesome/all.min.js&amp;#34;&lt;/span&gt; &lt;span style="color:#75715e"&gt;}}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;{{-&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;hugo&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;.IsDevelopment&lt;/span&gt; &lt;span style="color:#75715e"&gt;}}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;script&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;src&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#75715e"&gt;{{&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;.RelPermalink&lt;/span&gt; &lt;span style="color:#75715e"&gt;}}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;defer&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;script&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;{{-&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#75715e"&gt;}}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;{{-&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;with&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;.&lt;/span&gt; &lt;span style="color:#f92672"&gt;|&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;fingerprint&lt;/span&gt; &lt;span style="color:#75715e"&gt;}}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;script&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;src&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#75715e"&gt;{{&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;.RelPermalink&lt;/span&gt; &lt;span style="color:#75715e"&gt;}}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;integrity&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#75715e"&gt;{{&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;.Data.Integrity&lt;/span&gt; &lt;span style="color:#75715e"&gt;}}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;crossorigin&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;anonymous&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;defer&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;script&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;{{-&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;end&lt;/span&gt; &lt;span style="color:#75715e"&gt;}}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;{{-&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;end&lt;/span&gt; &lt;span style="color:#75715e"&gt;}}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;{{-&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;end&lt;/span&gt; &lt;span style="color:#75715e"&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10; &lt;button class="copybtn" type="button" aria-label="Copy to clipboard"&gt;&#10; &lt;i class="fa-regular fa-copy copybtn-icon-default" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;i class="fa-solid fa-check copybtn-icon-copied" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;/button&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;In development builds, the file is served as-is for fast rebuilds. In production builds (&lt;code&gt;hugo --minify&lt;/code&gt;, or whenever &lt;code&gt;hugo.IsDevelopment&lt;/code&gt; is false), it&amp;rsquo;s fingerprinted — Hugo computes a content hash, appends it to the URL for cache-busting, and adds a Subresource Integrity (&lt;code&gt;integrity&lt;/code&gt;) attribute the browser verifies before executing the script. Sphinx has no equivalent — static files there are referenced as-is, with no build-time hashing or integrity verification.&lt;/p&gt;</description></item><item><title>Back to top</title><link>https://saltstack.github.io/pydata-hugo-theme/user-interface/back-to-top/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/user-interface/back-to-top/</guid><description>&lt;div class="highlight-wrapper"&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#a6e22e"&gt;params&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;back_to_top_button&lt;/span&gt; = &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10; &lt;button class="copybtn" type="button" aria-label="Copy to clipboard"&gt;&#10; &lt;i class="fa-regular fa-copy copybtn-icon-default" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;i class="fa-solid fa-check copybtn-icon-copied" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;/button&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Shows a floating button that scrolls back to the top of the page once you&amp;rsquo;ve scrolled down. Set to &lt;code&gt;false&lt;/code&gt; to remove it.&lt;/p&gt;</description></item><item><title>Branding</title><link>https://saltstack.github.io/pydata-hugo-theme/theming/branding/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/theming/branding/</guid><description>&lt;h2 id="logo"&gt;Logo&lt;/h2&gt;&#10;&lt;div class="highlight-wrapper"&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#a6e22e"&gt;params&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;logo&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;text&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#39;My Site&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;link&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# image_light = &amp;#39;images/logo-light.png&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# image_dark = &amp;#39;images/logo-dark.png&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;alt_text&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#39;My Site — Home&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10; &lt;button class="copybtn" type="button" aria-label="Copy to clipboard"&gt;&#10; &lt;i class="fa-regular fa-copy copybtn-icon-default" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;i class="fa-solid fa-check copybtn-icon-copied" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;/button&gt;&#10;&lt;/div&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;With no &lt;code&gt;image_light&lt;/code&gt; set, &lt;code&gt;text&lt;/code&gt; renders as a plain text brand link (falls back to &lt;code&gt;site.Title&lt;/code&gt; if &lt;code&gt;text&lt;/code&gt; is unset).&lt;/li&gt;&#10;&lt;li&gt;With &lt;code&gt;image_light&lt;/code&gt; set, the image is used instead; &lt;code&gt;image_dark&lt;/code&gt; swaps in for dark mode (falls back to &lt;code&gt;image_light&lt;/code&gt; if &lt;code&gt;image_dark&lt;/code&gt; is unset). Text still renders alongside the image if &lt;code&gt;text&lt;/code&gt; is explicitly set.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;alt_text&lt;/code&gt; sets the image&amp;rsquo;s &lt;code&gt;alt&lt;/code&gt; attribute (falls back to &lt;code&gt;&amp;quot;&amp;lt;site title&amp;gt; - Home&amp;quot;&lt;/code&gt;).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;This documentation site intentionally only sets &lt;code&gt;logo.text&lt;/code&gt; and ships no sample logo image at all — this is an unofficial, unaffiliated port, so it deliberately avoids using (or even hotlinking) the original PyData Sphinx Theme&amp;rsquo;s branding.&lt;/p&gt;</description></item><item><title>Content-Security-Policy</title><link>https://saltstack.github.io/pydata-hugo-theme/hugo-only/security-csp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/hugo-only/security-csp/</guid><description>&lt;p&gt;&lt;code&gt;head.html&lt;/code&gt; emits a &lt;code&gt;&amp;lt;meta http-equiv=&amp;quot;Content-Security-Policy&amp;quot;&amp;gt;&lt;/code&gt; tag on every page, with &lt;code&gt;script-src&lt;/code&gt; already covering the CDNs the theme&amp;rsquo;s own search feature needs (cdnjs for FontAwesome, jsdelivr for Fuse.js). If your site embeds a third-party iframe (a calendar widget, a video embed, etc.), extend &lt;code&gt;frame-src&lt;/code&gt; via:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#a6e22e"&gt;params&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;csp_frame_src&lt;/span&gt; = [&lt;span style="color:#e6db74"&gt;&amp;#39;https://calendar.google.com&amp;#39;&lt;/span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10; &lt;button class="copybtn" type="button" aria-label="Copy to clipboard"&gt;&#10; &lt;i class="fa-regular fa-copy copybtn-icon-default" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;i class="fa-solid fa-check copybtn-icon-copied" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;/button&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;&lt;code&gt;'self'&lt;/code&gt; is always included automatically — you only need to list additional origins. Upstream Sphinx docs don&amp;rsquo;t ship a CSP meta tag at all; this is engineering specific to this port.&lt;/p&gt;</description></item><item><title>Feature parity with upstream</title><link>https://saltstack.github.io/pydata-hugo-theme/feature-parity/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/feature-parity/</guid><description>&lt;p&gt;Where this port diverges from the upstream &lt;a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/" target=&amp;#34;_blank&amp;#34; rel=&amp;#34;noopener noreferrer&amp;#34;&gt;PyData Sphinx Theme&lt;/a&gt;&#10; user guide — either because a feature has no meaningful Hugo equivalent, or because it&amp;rsquo;s declared but not yet implemented in this port&amp;rsquo;s templates.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Upstream feature&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Status here&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Why&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Version switcher dropdown (&lt;code&gt;switcher&lt;/code&gt;, &lt;code&gt;check_switcher&lt;/code&gt;)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Not implemented&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No &lt;code&gt;switcher&lt;/code&gt;/version-JSON mechanism exists in this port&amp;rsquo;s params or templates.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Version warning banner (&lt;code&gt;show_version_warning_banner&lt;/code&gt;)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Not implemented&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Depends on the version switcher above.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Google Analytics / Plausible injection (&lt;code&gt;analytics&lt;/code&gt;)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Not implemented&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No analytics param or script-injection partial exists; add your own via a site-level &lt;code&gt;content_footer_items&lt;/code&gt;/&lt;code&gt;footer_end&lt;/code&gt; partial if needed.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;i18n message catalogs (&lt;code&gt;gettext&lt;/code&gt;/&lt;code&gt;pybabel&lt;/code&gt;)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Not applicable&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Sphinx-specific tooling. Hugo has its own &lt;a href="https://gohugo.io/content-management/multilingual/" target=&amp;#34;_blank&amp;#34; rel=&amp;#34;noopener noreferrer&amp;#34;&gt;multilingual/i18n system&lt;/a&gt;&#10;, unrelated to this theme&amp;rsquo;s params.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;Edit this page&amp;rdquo; / &amp;ldquo;view source&amp;rdquo; buttons (&lt;code&gt;use_edit_page_button&lt;/code&gt;, &lt;code&gt;html_context&lt;/code&gt;)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Not implemented&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No equivalent partial exists yet in this port.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Sphinx indices (&lt;code&gt;genindex&lt;/code&gt;/&lt;code&gt;modindex&lt;/code&gt;/&lt;code&gt;py-modindex&lt;/code&gt;)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Not applicable&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;These are Sphinx/Python-doc-specific autogenerated indices with no Hugo concept to map to.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ABlog / sphinx-design / sphinx-togglebutton integration&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Not applicable&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;These are Sphinx extensions. Hugo handles equivalent needs (blogging, callouts) through its own content/shortcode mechanisms, outside this theme&amp;rsquo;s scope.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;sphinx-copybutton (copy-to-clipboard on code blocks)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Implemented&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Ported natively as a &lt;a href="https://saltstack.github.io/pydata-hugo-theme/hugo-only/render-hooks/#copy-to-clipboard-on-code-blocks"&gt;codeblock render hook&lt;/a&gt;&#10; — every fenced code block gets a copy button automatically, no shortcode needed.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;MathJax / math roles&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Not applicable&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No math rendering integration in this port.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Pygments light/dark syntax style (&lt;code&gt;pygments_light_style&lt;/code&gt;/&lt;code&gt;pygments_dark_style&lt;/code&gt;)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Not implemented&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Hugo&amp;rsquo;s Chroma highlighter is configured at the site level (&lt;code&gt;[markup.highlight]&lt;/code&gt;), not through a theme param — see &lt;a href="https://saltstack.github.io/pydata-hugo-theme/theming/styling/"&gt;Styling&lt;/a&gt;&#10;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;show_nav_level&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Declared, not implemented&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Present in &lt;code&gt;hugo.toml&lt;/code&gt; defaults (carried over from Sphinx&amp;rsquo;s &lt;code&gt;theme.conf&lt;/code&gt;), but no template logic reads it — the sidebar tree always renders fully expanded.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;navigation_depth&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Declared, not implemented&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Same as above.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;collapse_navigation&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Declared, not implemented&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Same as above.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;icon_links_label&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Declared, not implemented&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No template currently renders this label.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ReadTheDocs-specific integration (flyout menu, ethical ads sidebar)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Not applicable&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Specific to the ReadTheDocs hosting platform.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;sphinx-remove-toctrees&lt;/code&gt; / stub-page pruning&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Not applicable&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Toctree-driven sidebar generation is a Sphinx concept; this port&amp;rsquo;s sidebar is menu-driven (see &lt;a href="https://saltstack.github.io/pydata-hugo-theme/hugo-only/menus/"&gt;Menus&lt;/a&gt;&#10;).&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;If you need any of the &amp;ldquo;not implemented&amp;rdquo; rows above, contributions are welcome — see the module&amp;rsquo;s &lt;code&gt;README.md&lt;/code&gt; for how to work on this repo locally.&lt;/p&gt;</description></item><item><title>Fonts</title><link>https://saltstack.github.io/pydata-hugo-theme/theming/fonts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/theming/fonts/</guid><description>&lt;p&gt;FontAwesome and Bootstrap&amp;rsquo;s JS are pulled in as build-time npm dependencies and mounted into the asset pipeline via &lt;code&gt;[[module.mounts]]&lt;/code&gt; in this module&amp;rsquo;s own &lt;code&gt;hugo.toml&lt;/code&gt; — see &lt;a href="https://saltstack.github.io/pydata-hugo-theme/hugo-only/asset-pipeline/"&gt;Asset pipeline&lt;/a&gt;&#10; for how the mounting/fingerprinting works.&lt;/p&gt;&#10;&lt;h2 id="overriding-the-bundled-fontawesome-version"&gt;Overriding the bundled FontAwesome version&lt;/h2&gt;&#10;&lt;p&gt;The pinned version lives in this module&amp;rsquo;s own &lt;code&gt;package.json&lt;/code&gt;. A consuming site can override it without forking the theme by mounting its own copy at the same target path — Hugo resolves mounts from the site&amp;rsquo;s own &lt;code&gt;node_modules&lt;/code&gt; first:&lt;/p&gt;</description></item><item><title>Header links</title><link>https://saltstack.github.io/pydata-hugo-theme/navigation/header-links/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/navigation/header-links/</guid><description>&lt;h2 id="external-link-behavior"&gt;External link behavior&lt;/h2&gt;&#10;&lt;p&gt;Every content-authored Markdown link and most theme-rendered links pass through &lt;code&gt;link-target-attrs.html&lt;/code&gt;, which decides whether a link opens in a new tab based on &lt;code&gt;external_links&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#a6e22e"&gt;params&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;external_links&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;new_tab&lt;/span&gt; = &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;exceptions&lt;/span&gt; = [&lt;span style="color:#e6db74"&gt;&amp;#39;https://docs.example.com/&amp;#39;&lt;/span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10; &lt;button class="copybtn" type="button" aria-label="Copy to clipboard"&gt;&#10; &lt;i class="fa-regular fa-copy copybtn-icon-default" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;i class="fa-solid fa-check copybtn-icon-copied" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;/button&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;A URL is treated as internal (no new tab) if it&amp;rsquo;s not &lt;code&gt;http(s)&lt;/code&gt;, points back at &lt;code&gt;site.BaseURL&lt;/code&gt;, or matches a prefix in &lt;code&gt;exceptions&lt;/code&gt;. This is applied automatically to every Markdown-authored link via a &lt;a href="https://saltstack.github.io/pydata-hugo-theme/hugo-only/render-hooks/"&gt;render hook&lt;/a&gt;&#10; — you don&amp;rsquo;t need to add &lt;code&gt;target=&amp;quot;_blank&amp;quot;&lt;/code&gt; by hand anywhere in your content.&lt;/p&gt;</description></item><item><title>Hugo Modules</title><link>https://saltstack.github.io/pydata-hugo-theme/hugo-only/hugo-modules/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/hugo-only/hugo-modules/</guid><description>&lt;p&gt;This is the mechanism the theme itself is distributed through — Sphinx has no equivalent concept (a Sphinx theme is just a Python package with a &lt;code&gt;theme.conf&lt;/code&gt;, not a versioned, mountable dependency graph).&lt;/p&gt;&#10;&lt;h2 id="explicit-mounts"&gt;Explicit mounts&lt;/h2&gt;&#10;&lt;p&gt;Adding any &lt;code&gt;[[module.mounts]]&lt;/code&gt; entry disables Hugo&amp;rsquo;s implicit default mounts, so this module&amp;rsquo;s &lt;code&gt;hugo.toml&lt;/code&gt; re-declares every standard component directory explicitly (&lt;code&gt;content&lt;/code&gt;, &lt;code&gt;static&lt;/code&gt;, &lt;code&gt;layouts&lt;/code&gt;, &lt;code&gt;data&lt;/code&gt;, &lt;code&gt;assets&lt;/code&gt;, &lt;code&gt;i18n&lt;/code&gt;, &lt;code&gt;archetypes&lt;/code&gt;), plus two npm-sourced mounts that pull prebuilt JS straight out of &lt;code&gt;node_modules&lt;/code&gt; into the asset pipeline:&lt;/p&gt;</description></item><item><title>Install</title><link>https://saltstack.github.io/pydata-hugo-theme/get-started/install/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/get-started/install/</guid><description>&lt;p&gt;Add the module to your site&amp;rsquo;s &lt;code&gt;hugo.toml&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#a6e22e"&gt;module&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [[&lt;span style="color:#a6e22e"&gt;module&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;imports&lt;/span&gt;]]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;path&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#34;github.com/saltstack/pydata-hugo-theme&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10; &lt;button class="copybtn" type="button" aria-label="Copy to clipboard"&gt;&#10; &lt;i class="fa-regular fa-copy copybtn-icon-default" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;i class="fa-solid fa-check copybtn-icon-copied" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;/button&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Then fetch it and its build-time npm dependencies (FontAwesome&amp;rsquo;s JS+SVG icon kit, Bootstrap&amp;rsquo;s JS bundle, mounted via &lt;code&gt;[[module.mounts]]&lt;/code&gt;):&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hugo mod get github.com/saltstack/pydata-hugo-theme&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm install&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10; &lt;button class="copybtn" type="button" aria-label="Copy to clipboard"&gt;&#10; &lt;i class="fa-regular fa-copy copybtn-icon-default" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;i class="fa-solid fa-check copybtn-icon-copied" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;/button&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;That&amp;rsquo;s it — &lt;code&gt;hugo server&lt;/code&gt;/&lt;code&gt;hugo build&lt;/code&gt; will now resolve the theme.&lt;/p&gt;&#10;&lt;h2 id="offline--reproducible-builds"&gt;Offline / reproducible builds&lt;/h2&gt;&#10;&lt;p&gt;By default Hugo resolves the module (and its npm mounts) fresh at build time, which needs Go and network access. If you&amp;rsquo;d rather commit a fully offline, reproducible copy — no Go toolchain, no npm, no live fetch during CI — run:&lt;/p&gt;</description></item><item><title>Layout</title><link>https://saltstack.github.io/pydata-hugo-theme/get-started/layout/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/get-started/layout/</guid><description>&lt;p&gt;The theme renders a page as a set of named &amp;ldquo;slots&amp;rdquo; — each a list of partial names, resolved via &lt;code&gt;site.Params.*&lt;/code&gt; — rather than a single fixed template. Override just the slot lists you care about; everything else falls back to the theme&amp;rsquo;s defaults.&lt;/p&gt;&#10;&lt;h2 id="page-title"&gt;Page title&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Param&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Default&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Effect&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;show_title&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Auto-renders &lt;code&gt;&amp;lt;h1&amp;gt;{{ .Title }}&amp;lt;/h1&amp;gt;&lt;/code&gt; before the page content&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Resolved page frontmatter → &lt;code&gt;site.Params&lt;/code&gt; → hardcoded default, same as other overridable params. To omit the auto-rendered heading on a single page (e.g. because the Markdown body already starts with its own &lt;code&gt;#&lt;/code&gt; heading), set &lt;code&gt;show_title: false&lt;/code&gt; in that page&amp;rsquo;s frontmatter. To change the site-wide default, set &lt;code&gt;show_title = false&lt;/code&gt; under &lt;code&gt;[params]&lt;/code&gt; in &lt;code&gt;hugo.toml&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Light / dark mode</title><link>https://saltstack.github.io/pydata-hugo-theme/theming/light-dark/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/theming/light-dark/</guid><description>&lt;div class="highlight-wrapper"&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#a6e22e"&gt;params&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;default_mode&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#39;auto&amp;#39;&lt;/span&gt; &lt;span style="color:#75715e"&gt;# &amp;#39;light&amp;#39; | &amp;#39;dark&amp;#39; | &amp;#39;auto&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10; &lt;button class="copybtn" type="button" aria-label="Copy to clipboard"&gt;&#10; &lt;i class="fa-regular fa-copy copybtn-icon-default" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;i class="fa-solid fa-check copybtn-icon-copied" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;/button&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;&lt;code&gt;auto&lt;/code&gt; follows the visitor&amp;rsquo;s OS/browser color-scheme preference. The mode is read/written to &lt;code&gt;localStorage&lt;/code&gt; client-side, so a visitor&amp;rsquo;s explicit choice persists across pages and future visits.&lt;/p&gt;&#10;&lt;h2 id="the-theme-switcher"&gt;The theme switcher&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;theme-switcher.html&lt;/code&gt; renders a dropdown (light/dark/system) — it&amp;rsquo;s in &lt;code&gt;navbar_end&lt;/code&gt; by default. Remove it from your navbar slots to hide the control entirely (visitors then always get whatever &lt;code&gt;default_mode&lt;/code&gt; resolves to):&lt;/p&gt;</description></item><item><title>Markdown render hooks</title><link>https://saltstack.github.io/pydata-hugo-theme/hugo-only/render-hooks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/hugo-only/render-hooks/</guid><description>&lt;p&gt;&lt;code&gt;layouts/_default/_markup/render-link.html&lt;/code&gt; is a Hugo &lt;a href="https://gohugo.io/render-hooks/links/" target=&amp;#34;_blank&amp;#34; rel=&amp;#34;noopener noreferrer&amp;#34;&gt;render hook&lt;/a&gt;&#10; — it intercepts every &lt;code&gt;[text](url)&lt;/code&gt; link Hugo renders from your Markdown content, site-wide, and applies the same &lt;code&gt;external_links&lt;/code&gt; new-tab/exceptions rules (see &lt;a href="https://saltstack.github.io/pydata-hugo-theme/navigation/header-links/"&gt;Header links&lt;/a&gt;&#10;) that the theme&amp;rsquo;s own hand-written partials use.&lt;/p&gt;&#10;&lt;p&gt;The practical effect: you never need to write &lt;code&gt;target=&amp;quot;_blank&amp;quot; rel=&amp;quot;noopener&amp;quot;&lt;/code&gt; by hand in a blog post or page — every content-authored link gets consistent external-link behavior automatically, driven by one site-wide config block.&lt;/p&gt;</description></item><item><title>Menus</title><link>https://saltstack.github.io/pydata-hugo-theme/hugo-only/menus/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/hugo-only/menus/</guid><description>&lt;p&gt;Sphinx derives navigation from the doc tree (&lt;code&gt;toctree&lt;/code&gt; directives) — there&amp;rsquo;s no separately configured menu structure. This port instead uses two independent Hugo menus:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;site.Menus.main&lt;/code&gt;&lt;/strong&gt; — top navbar links (rendered by &lt;code&gt;navbar-nav.html&lt;/code&gt;), with automatic overflow into a &amp;ldquo;More&amp;rdquo; dropdown past &lt;code&gt;header_links_before_dropdown&lt;/code&gt; entries (see &lt;a href="https://saltstack.github.io/pydata-hugo-theme/navigation/header-links/"&gt;Header links&lt;/a&gt;&#10;).&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;site.Menus.sidebar&lt;/code&gt;&lt;/strong&gt; — the left sidebar nav tree (rendered by &lt;code&gt;sidebar-nav.html&lt;/code&gt;, see &lt;a href="https://saltstack.github.io/pydata-hugo-theme/navigation/navigation/"&gt;Sidebar navigation&lt;/a&gt;&#10;), falling back to &lt;code&gt;site.Menus.main&lt;/code&gt; if you don&amp;rsquo;t define one.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Because they&amp;rsquo;re independent, your top nav and sidebar nav don&amp;rsquo;t have to mirror each other — a common pattern (used by this docs site itself) is a short &lt;code&gt;main&lt;/code&gt; menu (just &amp;ldquo;Docs&amp;rdquo; + &amp;ldquo;GitHub&amp;rdquo;) alongside a much deeper &lt;code&gt;sidebar&lt;/code&gt; menu for in-page navigation.&lt;/p&gt;</description></item><item><title>Page table of contents</title><link>https://saltstack.github.io/pydata-hugo-theme/navigation/page-toc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/navigation/page-toc/</guid><description>&lt;p&gt;The right sidebar renders &lt;code&gt;secondary_sidebar_items&lt;/code&gt; (default &lt;code&gt;['page-toc']&lt;/code&gt;, which renders &lt;code&gt;.TableOfContents&lt;/code&gt; from your Markdown headings via &lt;code&gt;page-toc.html&lt;/code&gt;).&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#a6e22e"&gt;params&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;secondary_sidebar_items&lt;/span&gt; = [&lt;span style="color:#e6db74"&gt;&amp;#39;page-toc&amp;#39;&lt;/span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10; &lt;button class="copybtn" type="button" aria-label="Copy to clipboard"&gt;&#10; &lt;i class="fa-regular fa-copy copybtn-icon-default" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;i class="fa-solid fa-check copybtn-icon-copied" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;/button&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="hiding-it-on-a-single-page"&gt;Hiding it on a single page&lt;/h2&gt;&#10;&lt;p&gt;Set &lt;code&gt;show_toc: false&lt;/code&gt; in a page&amp;rsquo;s frontmatter to hide the entire right sidebar for that page (it isn&amp;rsquo;t just the TOC — the whole &lt;code&gt;secondary_sidebar_items&lt;/code&gt; slot is skipped):&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;title&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;A wide page with no right sidebar&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;show_toc&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10; &lt;button class="copybtn" type="button" aria-label="Copy to clipboard"&gt;&#10; &lt;i class="fa-regular fa-copy copybtn-icon-default" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;i class="fa-solid fa-check copybtn-icon-copied" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;/button&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;This is a Hugo-idiomatic per-page override — see &lt;a href="https://saltstack.github.io/pydata-hugo-theme/hugo-only/page-overrides/"&gt;Per-page overrides&lt;/a&gt;&#10; for how the fallback chain (page → site → hardcoded default) works generally.&lt;/p&gt;</description></item><item><title>Per-page overrides</title><link>https://saltstack.github.io/pydata-hugo-theme/hugo-only/page-overrides/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/hugo-only/page-overrides/</guid><description>&lt;p&gt;Several slot/behavior params can be overridden on a single page via frontmatter, resolved through a page → site → hardcoded-default fallback chain (&lt;code&gt;.Params.x | default (site.Params.x | default fallback)&lt;/code&gt;):&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;title&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;A page with no right sidebar&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;show_toc&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10; &lt;button class="copybtn" type="button" aria-label="Copy to clipboard"&gt;&#10; &lt;i class="fa-regular fa-copy copybtn-icon-default" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;i class="fa-solid fa-check copybtn-icon-copied" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;/button&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;&lt;code&gt;show_toc&lt;/code&gt; (see &lt;a href="https://saltstack.github.io/pydata-hugo-theme/navigation/page-toc/"&gt;Page table of contents&lt;/a&gt;&#10;) overrides &lt;code&gt;secondary_sidebar_items&lt;/code&gt; for just that page, without touching the site-wide default. &lt;code&gt;show_prev_next&lt;/code&gt; works the same way, overriding the site-wide &lt;code&gt;show_prev_next&lt;/code&gt; param (default &lt;code&gt;true&lt;/code&gt;) to hide (or show) the prev/next footer links on a single page — useful for standalone pages like an event calendar or an RSS feed list, where &amp;ldquo;previous/next page in section&amp;rdquo; links don&amp;rsquo;t make sense:&lt;/p&gt;</description></item><item><title>Search</title><link>https://saltstack.github.io/pydata-hugo-theme/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/search/</guid><description/></item><item><title>Search</title><link>https://saltstack.github.io/pydata-hugo-theme/user-interface/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/user-interface/search/</guid><description>&lt;p&gt;Search is powered by &lt;a href="https://www.fusejs.io/" target=&amp;#34;_blank&amp;#34; rel=&amp;#34;noopener noreferrer&amp;#34;&gt;Fuse.js&lt;/a&gt;&#10; against a build-time JSON index (&lt;code&gt;layouts/index.json&lt;/code&gt;), fetched client-side — not a Sphinx-style server-generated &lt;code&gt;searchindex.js&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Required consumer-site setup:&lt;/strong&gt; the index is only built when the home page&amp;rsquo;s &lt;code&gt;JSON&lt;/code&gt; output format is enabled. Add this to your site&amp;rsquo;s &lt;code&gt;hugo.toml&lt;/code&gt; (most starter configs don&amp;rsquo;t enable it by default):&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#a6e22e"&gt;outputs&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;home&lt;/span&gt; = [&lt;span style="color:#e6db74"&gt;&amp;#39;HTML&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;RSS&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;JSON&amp;#39;&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;section&lt;/span&gt; = [&lt;span style="color:#e6db74"&gt;&amp;#39;HTML&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;RSS&amp;#39;&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;page&lt;/span&gt; = [&lt;span style="color:#e6db74"&gt;&amp;#39;HTML&amp;#39;&lt;/span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10; &lt;button class="copybtn" type="button" aria-label="Copy to clipboard"&gt;&#10; &lt;i class="fa-regular fa-copy copybtn-icon-default" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;i class="fa-solid fa-check copybtn-icon-copied" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;/button&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Without this, &lt;code&gt;index.json&lt;/code&gt; is never generated and the search box silently returns nothing — there&amp;rsquo;s no visible error, just no results.&lt;/p&gt;</description></item><item><title>Sidebar navigation</title><link>https://saltstack.github.io/pydata-hugo-theme/navigation/navigation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/navigation/navigation/</guid><description>&lt;p&gt;The left sidebar nav tree is built from &lt;code&gt;site.Menus.sidebar&lt;/code&gt; — falling back to &lt;code&gt;site.Menus.main&lt;/code&gt; if no &lt;code&gt;sidebar&lt;/code&gt; menu is defined — rendered by &lt;code&gt;sidebar-nav.html&lt;/code&gt;. This site&amp;rsquo;s own sidebar (see the left of this page) is built exactly this way; its &lt;code&gt;hugo.toml&lt;/code&gt; defines &lt;code&gt;[[menus.sidebar]]&lt;/code&gt; entries with &lt;code&gt;identifier&lt;/code&gt;/&lt;code&gt;parent&lt;/code&gt;/&lt;code&gt;weight&lt;/code&gt; to create the grouped, collapsible tree you&amp;rsquo;re looking at.&lt;/p&gt;&#10;&lt;p&gt;A top-level entry with an empty &lt;code&gt;url = ''&lt;/code&gt; and an &lt;code&gt;identifier&lt;/code&gt; renders as an expandable group header; entries that set &lt;code&gt;parent = &amp;quot;&amp;lt;identifier&amp;gt;&amp;quot;&lt;/code&gt; nest underneath it.&lt;/p&gt;</description></item><item><title>Static assets</title><link>https://saltstack.github.io/pydata-hugo-theme/misc/static-assets/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/misc/static-assets/</guid><description>&lt;p&gt;If you&amp;rsquo;re coming from Sphinx: this theme&amp;rsquo;s &lt;code&gt;extra_css&lt;/code&gt; param (see &lt;a href="https://saltstack.github.io/pydata-hugo-theme/theming/styling/"&gt;Styling&lt;/a&gt;&#10;) is the direct equivalent of &lt;code&gt;html_css_files&lt;/code&gt;. There&amp;rsquo;s no direct equivalent of &lt;code&gt;html_js_files&lt;/code&gt;/&lt;code&gt;app.add_js_file&lt;/code&gt; as a theme param — for custom JS, use Hugo&amp;rsquo;s own asset pipeline (&lt;a href="https://gohugo.io/hugo-pipes/introduction/" target=&amp;#34;_blank&amp;#34; rel=&amp;#34;noopener noreferrer&amp;#34;&gt;Hugo Pipes&lt;/a&gt;&#10;) at the site level: drop a script in your site&amp;rsquo;s &lt;code&gt;assets/&lt;/code&gt;, process/fingerprint it with &lt;code&gt;resources.Get&lt;/code&gt;/&lt;code&gt;fingerprint&lt;/code&gt; in a site-level partial override, and add that partial to whichever slot you want it in (e.g. &lt;code&gt;content_footer_items&lt;/code&gt;, &lt;code&gt;footer_end&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>Styling</title><link>https://saltstack.github.io/pydata-hugo-theme/theming/styling/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://saltstack.github.io/pydata-hugo-theme/theming/styling/</guid><description>&lt;h2 id="css-custom-properties"&gt;CSS custom properties&lt;/h2&gt;&#10;&lt;p&gt;The vendored &lt;code&gt;static/styles/pydata-sphinx-theme.css&lt;/code&gt; exposes the same &lt;code&gt;--pst-*&lt;/code&gt; CSS custom properties as the upstream theme (colors, fonts, spacing, sidebar widths, etc.). Override them in your own stylesheet:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;:&lt;span style="color:#a6e22e"&gt;root&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --pst-color-primary: &lt;span style="color:#ae81ff"&gt;#123456&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10; &lt;button class="copybtn" type="button" aria-label="Copy to clipboard"&gt;&#10; &lt;i class="fa-regular fa-copy copybtn-icon-default" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;i class="fa-solid fa-check copybtn-icon-copied" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;/button&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="adding-your-own-stylesheet"&gt;Adding your own stylesheet&lt;/h2&gt;&#10;&lt;div class="highlight-wrapper"&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#a6e22e"&gt;params&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;extra_css&lt;/span&gt; = [&lt;span style="color:#e6db74"&gt;&amp;#39;/css/custom.css&amp;#39;&lt;/span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10; &lt;button class="copybtn" type="button" aria-label="Copy to clipboard"&gt;&#10; &lt;i class="fa-regular fa-copy copybtn-icon-default" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;i class="fa-solid fa-check copybtn-icon-copied" aria-hidden="true"&gt;&lt;/i&gt;&#10; &lt;/button&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;&lt;code&gt;extra_css&lt;/code&gt; is this theme&amp;rsquo;s equivalent of Sphinx&amp;rsquo;s &lt;code&gt;html_css_files&lt;/code&gt; — a list of stylesheet paths or full URLs, injected after the theme&amp;rsquo;s own CSS (so your rules can override theme defaults without &lt;code&gt;!important&lt;/code&gt;).&lt;/p&gt;</description></item></channel></rss>