You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
145 lines
4.6 KiB
145 lines
4.6 KiB
// Apply theme colors based on dark/light mode |
|
const applyTheme = (isDark) => { |
|
document.body.setAttribute( |
|
"data-md-color-scheme", |
|
isDark ? "slate" : "default", |
|
); |
|
document.body.setAttribute( |
|
"data-md-color-primary", |
|
isDark ? "black" : "indigo", |
|
); |
|
}; |
|
|
|
// Check and apply appropriate theme based on system/user preference |
|
const checkTheme = () => { |
|
const palette = JSON.parse(localStorage.getItem(".__palette") || "{}"); |
|
if (palette.index === 0) { |
|
// Auto mode is selected |
|
applyTheme(window.matchMedia("(prefers-color-scheme: dark)").matches); |
|
} |
|
}; |
|
|
|
// Watch for system theme changes |
|
window |
|
.matchMedia("(prefers-color-scheme: dark)") |
|
.addEventListener("change", checkTheme); |
|
|
|
// Initialize theme handling on page load |
|
document.addEventListener("DOMContentLoaded", () => { |
|
// Watch for theme toggle changes |
|
document |
|
.getElementById("__palette_1") |
|
?.addEventListener( |
|
"change", |
|
(e) => e.target.checked && setTimeout(checkTheme), |
|
); |
|
// Initial theme check |
|
checkTheme(); |
|
}); |
|
|
|
// Inkeep -------------------------------------------------------------------------------------------------------------- |
|
document.addEventListener("DOMContentLoaded", () => { |
|
const enableSearchBar = true; |
|
|
|
const inkeepScript = document.createElement("script"); |
|
inkeepScript.src = "https://unpkg.com/@inkeep/uikit-js@0.3.18/dist/embed.js"; |
|
inkeepScript.type = "module"; |
|
inkeepScript.defer = true; |
|
document.head.appendChild(inkeepScript); |
|
|
|
if (enableSearchBar) { |
|
const containerDiv = document.createElement("div"); |
|
containerDiv.style.transform = "scale(0.7)"; |
|
containerDiv.style.transformOrigin = "left center"; |
|
|
|
const inkeepDiv = document.createElement("div"); |
|
inkeepDiv.id = "inkeepSearchBar"; |
|
containerDiv.appendChild(inkeepDiv); |
|
|
|
const headerElement = document.querySelector(".md-header__inner"); |
|
const searchContainer = headerElement.querySelector(".md-header__source"); |
|
|
|
if (headerElement && searchContainer) { |
|
headerElement.insertBefore(containerDiv, searchContainer); |
|
} |
|
} |
|
|
|
// configure and initialize the widget |
|
const addInkeepWidget = (componentType, targetElementId) => { |
|
const inkeepWidget = Inkeep().embed({ |
|
componentType, |
|
...(componentType !== "ChatButton" |
|
? { targetElement: targetElementId } |
|
: {}), |
|
colorModeSync: { |
|
observedElement: document.documentElement, |
|
isDarkModeCallback: (el) => { |
|
const currentTheme = el.getAttribute("data-color-mode"); |
|
return currentTheme === "dark"; |
|
}, |
|
colorModeAttribute: "data-color-mode-scheme", |
|
}, |
|
properties: { |
|
chatButtonType: "PILL", |
|
fixedPositionXOffset: "1rem", |
|
fixedPositionYOffset: "3rem", |
|
chatButtonBgColor: "#E1FF25", |
|
baseSettings: { |
|
apiKey: "13dfec2e75982bc9bae3199a08e13b86b5fbacd64e9b2f89", |
|
integrationId: "cm1shscmm00y26sj83lgxzvkw", |
|
organizationId: "org_e3869az6hQZ0mXdF", |
|
primaryBrandColor: "#E1FF25", |
|
organizationDisplayName: "Ultralytics", |
|
theme: { |
|
stylesheetUrls: ["/stylesheets/style.css"], |
|
}, |
|
}, |
|
modalSettings: { |
|
// optional settings |
|
}, |
|
searchSettings: { |
|
placeholder: "Search", |
|
}, |
|
aiChatSettings: { |
|
chatSubjectName: "Ultralytics", |
|
botAvatarSrcUrl: |
|
"https://storage.googleapis.com/organization-image-assets/ultralytics-botAvatarSrcUrl-1729379860806.svg", |
|
quickQuestions: [ |
|
"What's new in Ultralytics YOLO11?", |
|
"How can I get started with Ultralytics HUB?", |
|
"How does Ultralytics Enterprise Licensing work?", |
|
], |
|
getHelpCallToActions: [ |
|
{ |
|
name: "Ask on Ultralytics GitHub", |
|
url: "https://github.com/ultralytics/ultralytics", |
|
icon: { |
|
builtIn: "FaGithub", |
|
}, |
|
}, |
|
{ |
|
name: "Ask on Ultralytics Discourse", |
|
url: "https://community.ultralytics.com/", |
|
icon: { |
|
builtIn: "FaDiscourse", |
|
}, |
|
}, |
|
{ |
|
name: "Ask on Ultralytics Discord", |
|
url: "https://discord.com/invite/ultralytics", |
|
icon: { |
|
builtIn: "FaDiscord", |
|
}, |
|
}, |
|
], |
|
}, |
|
}, |
|
}); |
|
}; |
|
inkeepScript.addEventListener("load", () => { |
|
const widgetContainer = document.getElementById("inkeepSearchBar"); |
|
|
|
addInkeepWidget("ChatButton"); |
|
widgetContainer && addInkeepWidget("SearchBar", "#inkeepSearchBar"); |
|
}); |
|
});
|
|
|