146 lines
4.6 KiB
JavaScript
146 lines
4.6 KiB
JavaScript
// 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");
|
|
});
|
|
});
|