deepsite / public /deepsite-badge.js
enzostvs's picture
enzostvs HF Staff
remove /deepsite
8815af0
Raw
History Blame Contribute Delete
4.94 kB
(function () {
"use strict";
// Check if badge already exists
if (document.getElementById("deepsite-badge-wrapper")) {
return;
}
// Don't show badge on huggingface.co/deepsite
const hostname = window.location.hostname;
const pathname = window.location.pathname;
if (hostname === "deepsite.hf.co" && pathname.startsWith("/")) {
return;
}
// Inject keyframes for gradient rotation
const style = document.createElement("style");
style.textContent = `
@keyframes deepsite-spin {
0% {
transform: translate(-50%, -50%) rotate(0deg);
}
100% {
transform: translate(-50%, -50%) rotate(360deg);
}
}
#deepsite-badge-wrapper i {
pointer-events: none;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: -1;
padding: 1.5px;
transition-property: all;
transition-timing-function: cubic-bezier(.4, 0, .2, 1);
transition-duration: .2s;
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
-webkit-mask-composite: xor;
mask-composite: exclude;
border-radius: inherit;
}
#deepsite-badge-wrapper i::before {
content: "";
position: absolute;
left: 50%;
top: 50%;
display: block;
border-radius: 9999px;
opacity: 0;
background: conic-gradient(from 0deg at 50% 50%, #ec4899, #fbbf24, #3b82f6, #ec4899);
width: calc(100% * 2);
padding-bottom: calc(100% * 2);
transform: translate(-50%, -50%);
z-index: -1;
will-change: transform;
}
#deepsite-badge-wrapper:hover i::before {
opacity: 1;
animation: deepsite-spin 3s linear infinite;
}
`;
document.head.appendChild(style);
// Create badge wrapper (like the button element)
const badgeWrapper = document.createElement("div");
badgeWrapper.id = "deepsite-badge-wrapper";
// Create inner badge (like the span element)
const badgeInner = document.createElement("span");
badgeInner.id = "deepsite-badge-inner";
// Create mask element (the i element)
const borderMask = document.createElement("i");
// Create link
const link = document.createElement("a");
link.href = "https://deepsite.hf.co";
link.target = "_blank";
link.rel = "noopener noreferrer";
const icon = document.createElement("img");
icon.src = "https://deepsite.hf.co/logo.svg";
icon.alt = "DeepSite";
icon.style.marginRight = "6px";
icon.style.width = "16px";
icon.style.height = "16px";
icon.style.filter = "brightness(0) invert(1)";
const text = document.createTextNode("Made with DeepSite");
Object.assign(badgeWrapper.style, {
position: "fixed",
bottom: "20px",
left: "20px",
zIndex: "999999",
color: "#ffffff",
borderRadius: "9999px",
background: "rgba(0, 0, 0, 0.4)",
fontSize: "12px",
fontWeight: "500",
display: "inline-block",
cursor: "pointer",
padding: "1.5px",
overflow: "hidden",
backdropFilter: "blur(16px) saturate(180%)",
WebkitBackdropFilter: "blur(16px) saturate(180%)",
});
// Apply styles to inner badge (like span element)
Object.assign(badgeInner.style, {
background: "rgba(0, 0, 0, 0.6)",
padding: "8px 16px",
display: "flex",
alignItems: "center",
borderRadius: "9999px",
boxShadow: "0 8px 32px 0 rgba(0, 0, 0, 0.5)",
transition: "all 0.3s ease",
border: "1px solid rgba(255, 255, 255, 0.1)",
});
// Apply styles to link
Object.assign(link.style, {
color: "#ffffff",
textDecoration: "none",
fontWeight: "500",
display: "flex",
alignItems: "center",
fontFamily:
'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
textShadow: "0 2px 4px rgba(0, 0, 0, 0.3)",
});
// Add hover effect
badgeWrapper.addEventListener("mouseenter", function () {
badgeInner.style.background = "rgba(0, 0, 0, 0.75)";
badgeInner.style.boxShadow = "0 8px 32px 0 rgba(0, 0, 0, 0.7)";
});
badgeWrapper.addEventListener("mouseleave", function () {
badgeInner.style.background = "rgba(0, 0, 0, 0.6)";
badgeInner.style.boxShadow = "0 8px 32px 0 rgba(0, 0, 0, 0.5)";
});
// Append elements
link.appendChild(icon);
link.appendChild(text);
badgeInner.appendChild(link);
badgeWrapper.appendChild(badgeInner);
badgeWrapper.appendChild(borderMask);
// Wait for DOM to be ready
function init() {
if (document.body) {
document.body.appendChild(badgeWrapper);
} else {
document.addEventListener("DOMContentLoaded", function () {
document.body.appendChild(badgeWrapper);
});
}
}
// Initialize
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", init);
} else {
init();
}
})();