<style>
.announcement-banner {
--site-announcement-bar-stripe-color1: #e5e7eb;
--site-announcement-bar-stripe-color2: #d1d5db;
z-index: 150;
position: relative;
flex-direction: column;
justify-content: center;
align-items: center;
margin: 0;
padding: 1rem 3.5rem;
background: repeating-linear-gradient(
45deg,
var(--site-announcement-bar-stripe-color1),
var(--site-announcement-bar-stripe-color1) 20px,
var(--site-announcement-bar-stripe-color2) 10px,
var(--site-announcement-bar-stripe-color2) 40px
);
}
html:is(.navy, .coal, .ayu) .announcement-banner {
--site-announcement-bar-stripe-color1: #1f2937;
--site-announcement-bar-stripe-color2: #111827;
}
.announcement-banner p {
color: var(--fg);
width: 100%;
margin: 0;
padding: 0;
overflow: hidden;
text-align: center;
white-space: nowrap;
text-overflow: ellipsis;
text-wrap: balance;
}
.announcement-banner button[data-close] {
top: 50%;
right: 1rem;
position: absolute;
transform: translateY(-50%);
width: 3rem;
height: 3rem;
cursor: pointer !important;
border: none;
font-weight: 900;
border-radius: 50%;
background-color: transparent;
}
</style>
<div style="display: none" data-id="{% id %}" class="announcement-banner">
{% markdown(message) %}
<button type="button" data-close>X</button>
</div>
<script>
(() => {
const banner = document.querySelector(".announcement-banner");
const id = banner.getAttribute("data-id");
const message = banner.querySelector("p").textContent;
const localData = JSON.parse(localStorage.getItem("mdbook-announcement-banner"));
if (!localData || localData.id !== id || localData.hide !== true) {
banner.style.display = "flex";
const page = document.querySelector(".page");
page.parentNode.insertBefore(banner, page);
banner.querySelector("button").addEventListener("click", () => {
banner.remove();
localStorage.setItem("mdbook-announcement-banner", JSON.stringify({ id, hide: true, message }));
});
}
})();
</script>