Files
docs/reference/python/overrides/main.html
T
2025-12-19 12:32:16 -06:00

320 lines
8.6 KiB
HTML

{% extends "base.html" %}
{% block analytics %}
<!-- Google Tag Manager -->
<script>(function (w, d, s, l, i) {
w[l] = w[l] || []; w[l].push({
'gtm.start':
new Date().getTime(), event: 'gtm.js'
}); var f = d.getElementsByTagName(s)[0],
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =
'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-MBBX68ST');</script>
<!-- End Google Tag Manager -->
<!-- CookieYes Banner -->
<!-- (Added functionality for instant nav support) -->
<script>
(function() {
// === DEBUG MODE ===
var CKY_DEBUG = false;
function log(msg, data) {
if (CKY_DEBUG) {
var prefix = '[CookieYes Debug]';
if (data !== undefined) {
console.log(prefix, msg, data);
} else {
console.log(prefix, msg);
}
}
}
var ckyStylesBackup = null;
// Load CookieYes script on initial page load
function loadCookieYes() {
if (!document.getElementById('cookieyes')) {
log('Loading CookieYes script...');
var script = document.createElement('script');
script.id = 'cookieyes';
script.type = 'text/javascript';
script.src = 'https://cdn-cookieyes.com/client_data/d2e859934c4309be824ea8bb/script.js';
document.head.appendChild(script);
} else {
log('CookieYes script already exists, skipping load');
}
}
// Watch for CookieYes styles to be added and back them up
var observer = new MutationObserver(function(mutations) {
var ckyStyle = document.getElementById('cky-style');
if (ckyStyle && !ckyStylesBackup) {
ckyStylesBackup = ckyStyle.innerHTML;
log('Captured CookieYes styles, length:', ckyStylesBackup.length + ' chars');
}
});
observer.observe(document.head, { childList: true });
// Restore CookieYes styles after instant navigation if missing
function restoreCkyStyles() {
var ckyStyle = document.getElementById('cky-style');
var bannerExists = document.querySelector('.cky-consent-container, .cky-btn-revisit-wrapper');
log('Navigation detected - checking styles...', {
stylesExist: !!ckyStyle,
bannerExists: !!bannerExists,
backupAvailable: !!ckyStylesBackup
});
if (!ckyStyle && ckyStylesBackup) {
var style = document.createElement('style');
style.id = 'cky-style';
style.innerHTML = ckyStylesBackup;
document.head.appendChild(style);
log('Restored CookieYes styles successfully');
} else if (ckyStyle) {
log('Styles already present, no restore needed');
} else if (!ckyStylesBackup) {
log('WARNING: No backup available to restore!');
}
}
// Initial load
document.addEventListener('DOMContentLoaded', function() {
log('DOMContentLoaded fired');
loadCookieYes();
});
// Subscribe to MkDocs Material's document$ observable for instant navigation
// document$ is available after the theme's JS loads
var checkCount = 0;
var checkInterval = setInterval(function() {
checkCount++;
if (typeof document$ !== 'undefined') {
clearInterval(checkInterval);
log('Found document$ observable after ' + checkCount + ' checks');
document$.subscribe(function() {
log('document$ emitted (page navigation/load)');
restoreCkyStyles();
});
}
}, 100);
// Fallback: stop checking after 10 seconds
setTimeout(function() {
if (checkInterval) {
clearInterval(checkInterval);
log('WARNING: document$ not found after 10 seconds - instant nav support disabled');
}
}, 10000);
// Expose debug helpers to window for console access
window.__ckyDebug = {
getBackup: function() { return ckyStylesBackup; },
getBackupLength: function() { return ckyStylesBackup ? ckyStylesBackup.length : 0; },
checkStyles: function() {
var ckyStyle = document.getElementById('cky-style');
var banner = document.querySelector('.cky-consent-container, .cky-btn-revisit-wrapper');
return {
stylesInDOM: !!ckyStyle,
stylesLength: ckyStyle ? ckyStyle.innerHTML.length : 0,
bannerInDOM: !!banner,
backupLength: ckyStylesBackup ? ckyStylesBackup.length : 0
};
},
forceRestore: function() {
restoreCkyStyles();
}
};
log('Debug helpers available at window.__ckyDebug');
})();
</script>
{% endblock %}
{# {% block announce %}
x
{% endblock %} #}
{% block extrahead %}
<style>
@import url("https://fonts.googleapis.com/css2?family=Public+Sans&display=swap");
:root {
--md-primary-fg-color: #333333;
--md-accent-fg-color: #1E88E5;
--md-default-bg-color: #FFFFFF;
--md-default-fg-color: #333333;
--md-text-font-family: "Public Sans", sans-serif;
}
body {
font-family: var(--md-text-font-family);
background-color: var(--md-default-bg-color);
color: var(--md-default-fg-color);
}
.md-main {
background-color: #FFFFFF;
}
.md-footer {
background-color: #F5F5F5;
color: #666666;
}
.md-footer-meta {
background-color: #4d4d4d;
}
.md-typeset a {
color: #1E88E5;
}
.md-typeset a:hover {
color: #1565C0;
}
.md-nav__link--active,
.md-nav__link:active {
color: #1E88E5;
}
.md-search__input {
background-color: #F5F5F5;
color: #333333;
}
.md-search__input:hover,
.md-search__input:focus {
background-color: #EEEEEE;
}
/* Table of contents styles */
.md-nav--secondary .md-nav__item--active > .md-nav__link {
font-weight: bold;
color: var(--md-primary-fg-color);
}
.md-nav--secondary .md-nav__item--nested > .md-nav__link {
font-weight: normal;
color: var(--md-default-fg-color);
}
.md-nav--secondary .md-nav__item--nested > .md-nav__link::before {
content: "";
display: inline-block;
width: 6px;
height: 6px;
background-color: var(--md-default-fg-color);
border-radius: 50%;
margin-right: 0.5rem;
}
[data-md-color-scheme="slate"] {
--md-default-bg-color: #1E1E1E;
--md-default-fg-color: #FFFFFF;
--md-accent-fg-color: #64B5F6;
}
[data-md-color-scheme="slate"] .md-main {
background-color: #1E1E1E;
}
[data-md-color-scheme="slate"] .navbar {
background-color: #1E1E1E;
color: #FFFFFF;
box-shadow: none;
}
[data-md-color-scheme="slate"] .md-footer {
background-color: #1E1E1E;
color: #BDBDBD;
}
[data-md-color-scheme="slate"] .md-header {
background-color: #1E1E1E;
color: #BDBDBD;
}
[data-md-color-scheme="slate"] .md-tabs {
background-color: #1E1E1E;
color: #BDBDBD;
}
[data-md-color-scheme="slate"] .md-search__input {
background-color: #F5F5F5;
color: #333333;
}
[data-md-color-scheme="slate"] .md-search__icon {
color: #333333;
}
[data-md-color-scheme="slate"] .md-search__input::placeholder {
color: #333333;
}
[data-md-color-scheme="slate"] .md-footer-meta {
background-color: #4d4d4d;
}
[data-md-color-scheme="slate"] .md-typeset a {
color: #64B5F6;
}
[data-md-color-scheme="slate"] .md-typeset a:hover {
color: #90CAF9;
}
[data-md-color-scheme=default] .logo-dark {
display: none !important;
}
[data-md-color-scheme=slate] .logo-light {
display: none !important;
}
.md-banner {
background-color: #FFAE42;
color: #000000;
}
.md-banner a {
color: #000000;
text-decoration: underline;
}
.md-banner a:hover {
color: #000000;
}
.md-header__title {
visibility: hidden;
}
/* Dark mode banner styling */
[data-md-color-scheme="slate"] .md-banner {
background-color: #CFC9FA; /* Same light purple for both modes */
color: #000000;
}
[data-md-color-scheme="slate"] .md-banner a {
color: #000000;
}
[data-md-color-scheme="slate"] .md-banner a:hover {
color: #000000;
}
</style>
{% endblock %}
{% block htmltitle %}
{% if page.meta and page.meta.title %}
<title>{{ page.meta.title }} | {{ config.site_name }}</title>
{% elif page.title and not page.is_homepage %}
<title>{{ page.title | striptags }} | {{ config.site_name }}</title>
{% else %}
<title>{{ config.site_name }}</title>
{% endif %}
{% endblock %}