Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions _data/announcement.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
enabled: true
type: "survey"
title: "Debezium 2026 Community Feedback Survey"
message: "Help shape the future of Debezium! Share your feedback in our 2026 survey. Only takes a few minutes."
link: "https://docs.google.com/forms/d/1GGB3Q2KHo77sE1m1XX-0Hlsl39F7Zdsh0IWFFDCv4mQ/edit"
link_text: "Take the Survey"
dismissible: true
style: "info"
position: "top" # Options: "top" (above navigation) or "below_nav" (below navigation)
21 changes: 21 additions & 0 deletions _includes/announcement-banner.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{% if site.data.announcement.enabled %}
<div class="announcement-banner announcement-{{ site.data.announcement.style }} announcement-position-{{ site.data.announcement.position }}" id="announcement-banner">
<div class="announcement-content">
<div class="announcement-icon">
📢
</div>
<div class="announcement-text">
<strong>{{ site.data.announcement.title }}</strong>
<span class="announcement-message">{{ site.data.announcement.message }}</span>
</div>
<div class="announcement-actions">
<a href="{{ site.data.announcement.link }}" class="btn btn-sm btn-announcement" target="_blank" rel="noopener">
{{ site.data.announcement.link_text }}
</a>
{% if site.data.announcement.dismissible %}
<button class="announcement-close" aria-label="Dismiss announcement">&times;</button>
{% endif %}
</div>
</div>
</div>
{% endif %}
31 changes: 30 additions & 1 deletion _layouts/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,16 @@
</head>

<body class="{% if page.url == '/' %}homepage{% else %}{{page.layout}}{% endif %}">
{% if site.data.announcement.position == "top" %}
{% include announcement-banner.html %}
{% endif %}
<div id>
<div class="container" id="content">
{% include header-navigation.html %}

{% if site.data.announcement.position == "below_nav" %}
{% include announcement-banner.html %}
{% endif %}

{{ content }}

</div>
Expand Down Expand Up @@ -90,6 +96,29 @@
addBackToTop({ scrollDuration: 400 })
hljs.initHighlightingOnLoad();
</script>
<script>
// Announcement banner dismissal
(function() {
const banner = document.getElementById('announcement-banner');
if (!banner) return;

const closeBtn = banner.querySelector('.announcement-close');
const storageKey = 'debezium-announcement-dismissed-2026';

// Check if previously dismissed
if (localStorage.getItem(storageKey) === 'true') {
banner.style.display = 'none';
}

// Handle close button
if (closeBtn) {
closeBtn.addEventListener('click', function() {
banner.style.display = 'none';
localStorage.setItem(storageKey, 'true');
});
}
})();
</script>
</body>

</html>
201 changes: 200 additions & 1 deletion assets/css/custom.css
Original file line number Diff line number Diff line change
Expand Up @@ -11170,4 +11170,203 @@ img.responsive-image:hover {
height: 35px;
font-size: 18px;
}
}
}
/* ==================== Announcement Banner ==================== */
.announcement-banner {
padding: 12px 0;
border-bottom: 1px solid rgba(0,0,0,0.1);
position: relative;
z-index: 1000;
}

.announcement-banner.announcement-info {
background: #91d443;
background: -webkit-linear-gradient(135deg, #91d443 0%, #48bfe0 100%);
background: -moz-linear-gradient(135deg, #91d443 0%, #48bfe0 100%);
background: -o-linear-gradient(135deg, #91d443 0%, #48bfe0 100%);
background: linear-gradient(135deg, #91d443 0%, #48bfe0 100%);
color: #2c3e50;
}

.announcement-banner.announcement-warning {
background: #ff9800;
color: white;
}

.announcement-banner.announcement-success {
background: #4caf50;
color: white;
}

.announcement-content {
display: flex;
align-items: center;
gap: 15px;
flex-wrap: wrap;
}

.announcement-icon {
font-size: 24px;
flex-shrink: 0;
color: #2c3e50;
}

.announcement-text {
flex: 1;
min-width: 250px;
}

.announcement-text strong {
display: block;
margin-bottom: 4px;
font-size: 16px;
color: #2c3e50;
}

.announcement-message {
font-size: 14px;
opacity: 0.85;
color: #2c3e50;
}

.announcement-actions {
display: flex;
gap: 10px;
align-items: center;
}

.btn-announcement {
background: rgba(44, 62, 80, 0.9);
color: white !important;
border: 2px solid #2c3e50;
padding: 8px 20px;
text-decoration: none;
border-radius: 4px;
transition: all 0.3s;
font-weight: 600;
}

.btn-announcement:hover {
background: #2c3e50;
border-color: #1a252f;
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0,0,0,0.2);
}

.announcement-close {
background: transparent;
border: none;
color: #2c3e50;
font-size: 28px;
cursor: pointer;
padding: 0 8px;
opacity: 0.7;
transition: opacity 0.2s;
line-height: 1;
}

.announcement-close:hover {
opacity: 1;
}

@media (max-width: 768px) {
.announcement-content {
flex-direction: column;
align-items: flex-start;
gap: 10px;
}

.announcement-actions {
width: 100%;
}

.btn-announcement {
flex: 1;
}
}


/* Announcement banner position-specific styles */

/* Top position: match page container width exactly */
.announcement-position-top {
margin-left: auto;
margin-right: auto;
padding-left: 30px;
padding-right: 30px;
}

.announcement-position-top .announcement-content {
padding-left: 0;
padding-right: 0;
}

/* Match container breakpoints exactly */
@media (min-width: 768px) {
.announcement-position-top {
width: 750px;
}
}

@media (min-width: 992px) {
.announcement-position-top {
width: 970px;
}
}

@media (min-width: 1200px) {
.announcement-position-top {
min-width: 1230px;
}
}

/* Below nav position: match jumbotron width (1170px) */
.announcement-position-below_nav {
margin: 0 -30px;
margin-top: 15px;
margin-bottom: 15px;
padding-left: 30px;
padding-right: 30px;
}

.announcement-position-below_nav .announcement-content {
padding-left: 0;
padding-right: 0;
}

/* Match jumbotron container breakpoints */
@media (min-width: 768px) {
.announcement-position-below_nav {
width: 750px;
margin-left: auto;
margin-right: auto;
}
}

@media (min-width: 992px) {
.announcement-position-below_nav {
width: 970px;
}
}

@media (min-width: 1200px) {
.announcement-position-below_nav {
width: 1170px;
}
}

/* Mobile: full width */
@media (max-width: 767px) {
.announcement-position-top {
width: auto;
padding-left: 15px;
padding-right: 15px;
}

.announcement-position-below_nav {
margin-left: 0;
margin-right: 0;
padding-left: 15px;
padding-right: 15px;
}
}